引言
一直觉得深度学习很神秘,所以想了解一下,在网上看资料的时候刷到知乎的一篇回答觉得很不错分享给大家。
因为近期要做一个关于深度学习入门的技术分享,不想堆砌公式,让大家听得一头雾水不知不觉摸裤兜掏手机刷知乎。所以花了大量时间查资料看论文,有的博客或者论文写得非常赞,比如三巨头LeCun,Bengio和Hinton 2015年在Nature上发表综述论文的“Deep Learning”,言简意赅地引用了上百篇论文,但适合阅读,不适合presentation式的分享;再如Michael Nielsen写的电子书《神经网络与深度学习》(中文版,英文版)通俗易懂,用大量的例子解释了深度学习中的相关概念和基本原理,但适合于抽两三天的功夫来细品慢嚼,方能体会到作者的良苦用心;还有Colah写的博客,每一篇详细阐明了一个主题,如果已经入门,这些博客将带你进阶,非常有趣。还翻了很多知乎问答,非常赞。但发现很多”千赞侯”走的是汇总论文视频教程以及罗列代码路线,本来想两小时入门却一脚踏进了汪洋大海;私以为,这种适合于有一定实践积累后按需查阅。还有很多”百赞户”会拿鸡蛋啊猫啊狗啊的例子来解释深度学习的相关概念,生动形象,但我又觉得有避重就轻之嫌。我想,既然要入门深度学习,得有微积分的基础,会求导数偏导数,知道链式法则,最好还学过线性代数;否则,真的,不建议入门深度学习。
最后,实在没找到我想要的表达方式。我想以图的方式概要而又系统性的呈现深度学习所涉及到的基本模型和相关概念。论文“A Critical Review of Recurrent Neural Networks for Sequence Learning”中的示意图画得简单而又形象,足以说明问题,但这篇文章仅就RNN而展开论述,并未涉及CNN,RBM等其它经典模型;Deeplearning4j上的教程貌似缺少关于编码器相关内容的介绍,而UFLDL教程只是详细介绍了编码器的方方面面。但是如果照抄以上三篇的图例,又涉及到图例中的模块和符号不统一的问题。所以,索性自己画了部分模型图;至于直接引用的图,文中已经给了链接或出处。如有不妥之处,望指正。以下,以飨来访。
从经典的二分类开始说起,为此构建二分类的神经网络单元,并以Sigmoid函数和平方差损失(比较常用的还有交叉熵损失函数)函数来举例说明梯度下降法以及基于链式法则的反向传播(BP),所有涉及到的公式都在这里:
神经元中的非线性变换激活函数(深度学习中的激活函数导引)及其作用(参考颜沁睿的回答),激活函数是神经网络强大的基础,好的激活函数(根据任务来选择)还可以加速训练:
前馈性神经网络和自动编码器的区别在于输出层,从而引出无监督学习的概念;而降噪编码器和自动编
码器的区别又在输入层,即对输入进行部分遮挡或加入噪声;稀疏编码器(引出正则项的概念)和自动编
码器的区别在隐藏层,即隐藏层的节点数大于输入层节点数;而编码器都属于无监督学习的范畴。浅层网
络的不断栈式叠加构成相应的深度网络。
值得一提的是,三层前馈型神经网络(只包含一个隐藏层)的word2vec(数学原理详解)是迈向NLP的大
门,包括CBOW和skip-gram两种模型,另外在输出层还分别做了基于Huffman树的Hierarchical Softmax以及negative sampling(就是选择性地更新连接负样本的权重参数)的加速。受限波兹曼机RBM属于无监督学习中的生成学习,输入层和隐藏层的传播是双向的,分正向过程和反向
过程,学习的是数据分布,因此又引出马尔可夫过程和Gibbs采样的概念,以及KL散度的度量概念:
与生成学习对应的是判别学习也就是大多数的分类器,生成对抗网络GAN融合两者;对抗是指生成模型与
判别模型的零和博弈,近两年最激动人心的应用是从文本生成图像(Evolving AI Lab - University of
Wyoming)(参考代码:text-to-image):
再推荐一个讲DCGAN的超赞教程Image Completion with Deep Learning in TensorFlow (参考代码:dcgan-completion.tensorflow):
5.深度网络的实现基于逐层贪心训练算法,而随着模型的深度逐渐增加,会产生梯度消失或梯度爆炸的问题,梯度爆炸一般采用阈值截断的方法解决,而梯度消失不易解决;网络越深,这些问题越严重,这也是深度学习的核心问题,出现一系列技术及衍生模型。
深度制胜,网络越深越好,因此有了深度残差网络将深度扩展到152层,并在ImageNe多项竞赛任务中独孤求败。
6.卷积神经网络在层与层之间采取局部链接的方式,即卷积层和采样层,在计算机视觉的相关任务上有突
出表现,关于卷积神经网络的更多介绍请参考我的另一篇文章(戳戳戳):
而在NIPS 2016上来自康奈尔大学计算机系的副教授 Killan Weinberger 探讨了深度极深的卷积网络,在数据集CIFAR-10 上训练一个 1202 层深的网络。CNN的历史进程,一图总结:
近年来,CNN的研究更加深入,应用范围也更广泛。包括卷积核大小的研究,进一步降低模型参数,2012年在Network In Network中提出了1*1卷积核,而Google2014年提出的Inception模型则发扬了它的作用;还有卷积相邻点步长的研究,2014提出了dilated CNN模型,可以增加感受野,利用更长的上下文信息,适合于图像语义分割(Semantic Image Segmentation with Deep …)任务,并将CNN拓展到了语音领域,2016年Google提出用于语音合成的Wavenet(wavenet-generative-model-raw-audio)模型,尽管在paper中只是略加提及,但Wavenet也可以用于语音识别(英文语音识别,参考代码:
speech-to-text-wavenet;中文语音识别:用Wavenet做中文语音识别 - 知乎专栏):
而原始的Wavenet模型存在大量重复计算,当层数叠加的时候,效率降低十分明显:
7.循环神经网络在隐藏层之间建立了链接,以利用时间维度上的历史信息和未来信息,与此同时在时间轴上也会产生梯度消失和梯度爆炸现象,而LSTM和GRU则在一定程度上解决了这个问题,两者与经典RNN的区别在隐藏层的神经元内部结构,在语音识别,NLP(比如RNNLM)和机器翻译上有突出表现(推荐阅读):除了RNNLM采用最简单最经典的RNN模型,其他任务隐层神经元往往采用LSTM或者GRU形式,关于LSTM的进化历史,一图胜千言,更多内容可以参阅LSTM: A Search Space Odyssey:
RNN模型在一定程度上也算是分类器,在图像描述(Deep Visual-Semantic Alignments forGenerating Image Descriptions)的任务中已经取得了不起的成果(第四节GAN用文本生成图像是逆过程,注意区别):
另外,关于RNN的最新研究是基于attention机制来建立模型(推荐阅读文章),即能够在时间轴上选择有效信息加以利用,比如百度App中的”为你写诗”的功能核心模型就是attention-based RNN encoderdecoder:
再推荐一篇关于音乐合成的博客:Composing Music With Recurrent Neural Networks。
8.总结了深度学习中的基本模型并再次解释部分相关的技术概念:
最后,现在深度学习在工业中的应用往往是整合多个模型到产品中去,比如在语音识别的端到端系统中,利用无监督模型或者CNN作为前期处理提取特征,然后用RNN模型进行逻辑推理和判断,从而达到可媲美人类交流的水平,如百度的DeepSpeech2。
转自:
深度学习如何入门? - 知乎
https://www.zhihu.com/question/26006703