现在,深度学习入门相较于几年前,已经门槛非常低了,既有大量的中文资料,又有现成的训练平台(tensorflow和pytorch),但是我们仍然需要一些技巧。
首先,第一步,也是必须的一步,就是补习一下微积分的知识。
可能有同学一听到微积分就头痛,不过没关系,深度学习用的微积分知识不多,主要是导数,梯度,链式法则。基本上也就是书上一两章的内容,这些弄懂基本足够了。
如果想深入一些,可以再补一补函数极值,牛顿法,矩阵分解,这些知识点大都是传统机器学习的必需品,深度学习已经没有那么讲究了。
接下来,需要选择你的打怪路线,我们主要分两类人,第一类是学理科出身的,比如数学物理;第二类是学计算机出身的。
第一类人,优势是公式推导和理论,所以我们需要从理论入手,深度学习的重点理论有:神经网络的前向传播,神经网络的反向传播,梯度下降法,随机梯度下降法,批梯度下降法,动量梯度下降法,adam梯度下降法,神经网络的梯度消失与爆炸问题,神经网络的正则化,dropout,batchnorm,softmax公式,交叉熵损失等等。
还有一个重点,就是最新的理论(面试重点),必须要熟悉一个,比如说几年前,你得把adam梯度下降法弄熟了,这两年是batchnorm,transformer,未来几年可能是模型的剪枝和压缩或者图神经网络,那么这些知识点从哪获得呢?
如果你的英语水平还可以,那么我推荐你直接看论文。有的同学可能会喜欢看书,那么为什么书没有论文好呢?首先,看书无法得到最新进展,因为我也写过书,我知道从写书到最后发表,至少要经过一年的时间,而深度学习领域更新换代非常快,一年前的知识很可能已经用不上了。其次,书往往是什么内容都讲,而你可能需要的是某一个问题的深入理解。
如何查找论文?很简单,对于以前的内容,直接搜索知识点名字即可,论文基本都是全网免费的,对于最新的知识点,需要关注一下AI顶会:CVPR、NIPS、ICML,其他会议排名可查看:https://www.aminer.cn/ranks/conf。
当然,喜欢看书的同学或是英文不太熟练的同学,也有很多好书,比如我们常说的花书:Ian Goodfellow、Yoshua Bengio 和Aaron Courville写的深度学习、Deep Learning with Python、Machine Learning Yearning、Neural Networks and Deep Learning等。
最后,大家也可以找到很多深度学习的课程,但是不推荐大家直接看课程,因为在课程中,每个老师都或多或少把自己的理解放入,很容易影响初学者。
比如我一开始就看的李宏毅的课程,到现在还是“深受其害”。比较推荐的课程有:李宏毅的机器学习,斯坦福的深度学习公开课,深度学习的应用。当然,你也可以关注我,哈哈。
接下来说第二类人,计算机科班出身,那么你要做的就是直接先撸代码,这个现在也很简单,无论是keras,tensorflow,还是pytorch,都是基于python的,并且有详细的教程(中文),你需要会学哪些代码呢?
首先,肯定是实现各种神经网络,一般第一个项目是手写数字识别,然后是cifar10,cifar100,imagenet,电影评论数据,wiki爬虫文本这些通用的数据集。
不管三七二十一,将平台的教程全部码一遍代码,把几种常用的网络(DNN、CNN、RNN、LSTM),损失函数,激活函数,优化器,正则化方法都搞熟练了。
然后,弄懂平台如何提高深度学习的效率,包括分布式计算,GPU的使用,多GPU的使用,数据流式处理,计算图的区别。
其次,积累一些调参的经验,一般来说,教程里给的参数都不是效果最好的,你需要花时间去做调参,当然也可以用自动化的调参工具(Ray tune),最后,需要积累一些项目,比如车牌识别,人脸识别,AI换脸,AI医疗,项目越新越好,不用做的很好,将流程跑通即可。
接下来,两类人身份转换,分别去学对方的第一步即可。总之,对于初学者,我们要做的就是扬长避短,先做自己最熟悉的,帮助自己快速入门。还有一个小技巧分享给大家,就是多面试,面试官问了啥,回去就学啥,很快你就会发现你基本都会了。
最后,当你入门了之后,就面临一个选择了,现在深度学习有这么几大方向:计算机视觉、自然语言处理、语音识别、推荐系统、强化学习,你需要选择一个适合自己的。当然,你觉得自己能力够强,完全可以把他们融会贯通。
计算机视觉(卷积神经网络)上手难度最低,模型效果已经全面赶超人类水平,但是领域已经趋近于饱和,近年来也没有划时代的变化,岗位需求一般,不容易有进一步发展,最经典的论文有Alexnet,ResNet,EfficientNet,书籍有Computer Vision: Algorithms and Applications、Computer Vision: Models, Learning, and Inference,课程有斯坦福大学李飞飞教授的课程。
自然语言处理(循环神经网络),上手难度中等,模型效果略微落后人类水平,最近在bert和transformer网络的兴起下,发展势头迅猛,未来几年岗位需求巨大,上升空间明显,但是落地项目较少。最经典的论文有Bert:Bidirectional Encoder Representations from Transformers、Improving Language Understanding by Generative Pre-Training,书籍有Speech and Language Processing、Neural Network Methods in Natural Language Processing,课程有微软自然语言处理、斯坦福CS224n、Coursera免费课程。
语音识别(时间序列模型),上手难度非常高,模型效果远远不及人类,主要难点在噪声环境下的语音识别,岗位需求一般,未来前景不明朗。
最经典的论文有Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups、Deep speech 2: End-to-end speech recognition in english and mandarin、Achieving Human Parity in Conversational Speech Recognition,书籍有语音识别基本原理、Speech and Language Processing,工具有kaldi开源工具箱。
推荐系统(FM模型),上手难度中等,移动互联网的中坚力量,岗位需求多,代码能力要求高,上升空间明显,推荐系统对数据依赖性强,特征工程要高,一般来说只有大公司能做。
最经典的论文有Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model、Item-Based Collaborative Filtering Recommendation Algorithms、Towards the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions,书籍有推荐系统实践、推荐系统 : 技术、评估及高效算法、Recommender Systems: The Textbook,课程有coursea上的Recommender Systems Specialization。
强化学习(actor-agent交互模型),上手难度高,暂时主要用于游戏AI,棋类软件,预期应用广泛,媒体宣传的很卖力(alphago),但是雷声大雨点小,岗位需求一般,未来前景暂不明朗。经典论文有:Playing Atari with Deep Reinforcement Learning、Deep Reinforcement Learning with Double Q-learning、Prioritized Experience Replay,书籍有Reinforcement Learning : An introduction,课程有UCB的CS294。