摘要
本文是于2015年发表在nature上,文章对表示学习、监督式学习、反向传播训练结构、卷积神经网络(CNN)、循环神经网络(RNN)以及深度学习的主流应用图像处理和自然语言处理(NLP)其原理进行了简要的说明。
一、表示学习
传统的机器学习技术在处理原始形式的自然数据方面的能力有限,而表示学习则可以使机器接收原始数据,并自动发现需要检测和分类的表示。而深度学习就是具有多个层次的表示学习方法。每一层次将其输入的数据转换为更高、更加抽象的层次表示,通过足够多层次的变换,可以训练出非常复杂功能。例如对于一张图像的处理,图像的原始数据一般是以像素组的形式出现。第一级表示层学习到的特征通常表示图像中特定方向和位置的边缘是否存在;第二级表示层则通常是检测边缘的特定排列来检测图案,而不考虑边缘位置的细微变化。第三级表示层则可能是将图案组合成更大的组合(可能是获得更多的特征图谱)。且这些特征层不需要人为的去设计,而是通过学习程序从数据中学习所得。
二、监督式学习
机器学习最常见的形式(深度或非深度)是监督学习。以图像分类为例,在建立的一个系统下,我们将收集到的进行分类,然后输入系统,得到输入图像对于每一类别的不同得分。我们期望其得分最高的类别就是其正确的类别,但是这个在训练前不太可能发生。于是我们设计一个目标函数,计算其输出分数于预期分数的误差(距离),其也称为损失函数,然后再根据其损失对模型进行微调,以达到预期,这就是监督学习。
为正确根据其损失去调整权重向量,需计算每一层的梯度向量,该向量表示,如果权重稍微增加,误差将会增加或减少多少。权重向量向梯度向量相反的方向调整。负梯度方向表示其损失下降最陡的方向,使其接近平均最小值,平均输出误差较低。
早期常见的优化算法叫做随机梯度下降(SGD),其主要是计算几个示例的输入向量、输出和误差,计算这些示例的平均向量,并相应的调节权重,直到损失停止下降。之所以说它是随机的,是因为每个小样本集都给出了所有样本的平均梯度的噪声估计。SGD算是一个较为简单的优化技术,还有其他跟为复杂的优化技术,如Adam等。
三、多层神经网络和反向传播
如图a所示,表示的是多层神经网络可以扭曲输入空间,使得输入类别变为线性可分(红色和蓝色),但是同时,其网格也会被隐藏单元变换。
如图b所示,表示得是计算梯度使所采用得链式求导法则(逐次求导),在反向传播时计算梯度就是采用得它。且当x、y、z是向量时也可以使用。
如图c所示,为一个具有两个隐藏层和一个输出层的神经网络,其主要是用于计算前向传播。在每一层我们需要做的是,计算每个单元的总输入,然后再使用一个非线性函数,通常采用的是Relu函数,即max(x,0),通常之后还会存在一个偏置项,为简单起见这里省略。
如图d所示,是用于该网络的反向传播,根据图b所示的链式求导法则,一次对每一层进行求导计算其梯度,将输出的误差导数转换为输入的误差导数,进而调整权重。
四、卷积神经网络
卷积神经网络设计用于处理多个数组形式出现的数据。如图为一张萨摩耶的彩色照片,对于输入一张彩色照片,要想完整的记录其色彩,我们一般采用的是RGB或者HSV对其颜色进行表示。如图,采用的是RGB 的表示方式,因此这样一场彩色的二维图片就是以多个数组形式出现的数据。而在处理这些图片时,就需要采用CNN来进行处理。除了图像以外,其他需要采用CNN的还有:1D 用于信号和序列;2D 用于图像和音频频谱图;3D 用于视频和体积图像。其关键思想是:局部连接、共享权重、池化和多层的使用。
典型的卷积网络框架是由一系列层级构成的,在前几个层级中一般是卷积层和池化层,卷积层的作用是用来检测来自前一层的局部连接,然后局部加权和的结果通过一个如Relu这样的函数进行非线性传递。在同一层的同一特征图中所有单元共享权重。共享权重的原因是:首先,在像图像这样的数组数据中,局部值组往往具有高度的相关性,形成独特的,易检测的局部图案。其次,图像和其他信号的局部统计特性和位置无关。意思是,如果需要检测的图像,不论其出现在图片中的位置、方向都应享受相同的权重。池化层的作用是减少特征个数,在经过卷积层后,可能会出现大量的特征,其中的一些特征是不太重要的特征,但大量的特征会极大增肌计算量,因此经过池化层可以有效的保留有效的特征,去掉无用的特征。一般常见的就是最大池化。即在特征图中的局部单元中选取最大值。
五、递归神经网络
对于涉及顺序输入的任务,如语言和语言,通常最好使用递归神经网络(RNN),当RNN一次处理一个输入序列的一个元素时,在其隐藏单元中会保存一个“状态向量”,该向量会包含有关序列中所有过去元素的历史信息。RNN是非常强大的动态系统,但由于其使用的激活函数的原因,RNN特别容易产生梯度爆炸和梯度消失。
RNN非常擅长预测文本中的下一个字符或序列中的下一个单词。例如,在一次一个单词地阅读一个英语句子的后,可以训练一个网络,使其隐藏单元的最终状态向量很好的表示句子所表达的思想。然后,这个向量可以用作联合训练网络的初始初始隐藏状态(或作为额外的输入),我们会从该网络得到各单词的一个概率分布。当我们选择一个单词作为一个句子的开头时,我们可以根据该网络依次预测下一个单词,直到形成一个完整的句子。
长短期记忆神经网络(LSTM)在一定程度上缓解了梯度消失,同时LSTM使用特殊隐藏单元,可以长时间记录输入,是对RNN的一种优化。