[Reference]
Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015, 521(7553):436.
深度学习是由多处理层组成的计算层模型,通过多层抽象学习数据表示,这种方法在语言识别(Speech Recognition)、视觉物体识别、物体检测和其他诸如药理发现和基因组学等领域显著提升了state-of-the-art,深度学习通过使用反向传播算法,从大量数据中学习发现物体的复杂结构,而这种反向传播机制向系统指示了如何通过从前层网络中的特征表示来计算后面每一层的特征表示以达到改变网络中的参数的目的。深度卷积神经网络已经将反向传播机制引入到图像、视频、音频、报告的研究分析之中,而循环网络结构使得像文本、语音等序列型数据的前景光明。
深度学习方法是带有多层表示的表示学习方法,由简单但是非线性的模块所构成,每一个模块将一层上的表示转化成更高层,更抽象层的表示。在足够的表示参与构成的情况下,复杂的功能结构就此形成,对于分类任务而言,高层特征表示可以强化输入数据,而这种强化对鉴别检测和抑制不相关变形是非常重要的。
深度学习擅长在高维数据中发现复杂结构
为了正常地调整权重向量,对于每一个向量,学习算法需要计算梯度向量,它表示如果权重增加或减少一个很小的量,误差将增加或减少的量。然后权重就会沿着梯度反方向进行调整。
目标函数,是在所有训练样本上的平均,在高维的权值向量空间中,可以被视作是具有波浪形状的函数,在这种结构中,梯度反方向被视为是权重下降最快的方向,使其接近最小值,输出误差平均值较低。
在实践过程中,实践者经常使用的处理方法叫做“随机梯度下降”(SGD),这包括显示几个样本的输入向量,计算输出和误差,计算这些示例的平均梯度,以及相应地调整权重。这一过程需要对在训练样本中的许多小的样本上进行不断重复,直到目标函数停止下降为止,其之所以被称之为“随机”,主要是由于每一个小规模的数据样本都对所有样本的平均梯度提供了一个噪声估计,与更精细的优化技术相比,这种简单的程序通常能够以惊人的速度快速找到一组良好的权重值。
图像和语音识别等问题要求输入输出函数对输入的无关变化(如位置的变化,物体的方向或照明,或者语音的音调或重音的变化)不敏感,而对特定的微小变化非常敏感。
用于计算目标函数相对于多层模块堆栈的权重的梯度的反向传播过程仅仅是衍生物链规则的实际应用。关键点在于,可以通过利用负反馈算法来计算该模块的输出(或后续模块的输入)相对于模块输入的导数(或梯度)。反向传播算法可以重复应用于传播所有模块的梯度,从顶部的输出(网络产生其预测)一直到底部(外部输入被馈送)。一旦这些梯度被计算完毕,前向网络就会计算与每一个模块有关的梯度。
许多深度学习的应用利用了前向传播网络,学习将固定大小的输入(例如,图像)映射到固定大小的输出(例如,几个类别中的每个类别的概率),从一层到下一层中,前一层的输入的加权和,并通过非线性函数传递结果形成一个小的计算单元。目前,最经常使用的非线性函数是经由线性函数(Relu)转变而来,而Relu函数是一个半波(half-wave)矫正器:
在过去的十几年间,神经网络使用平滑的非线性激活函数,像tanh函数或者sigmoid函数,但是典型的Relu函数通常在具有多层的网络中学得更快,允许在没有无人监督的预训练的情况下训练深度监督网络,那些既不属于输入层也不属于输出层的层级被称为隐藏单元,隐藏层被认为是以一种非线性的方式对输入进行适当扰动,使得在最终的输出层,类别变得线性可分。
人们普遍认为一般梯度下降很可能会陷入局部最小值,重量配置,不小的变化会降低平均误差。
实际上,对于大型网络而言,局部极小值是很难成为一个问题,忽略初始条件,该系统几乎总能达到质量非常相似的解决方案。最新的理论和实验结果表明,一般而言,局部极小值并不是一个非常严肃的问题,在目标函数中充满了大量的梯度为零鞍点,表现为在大多数维度上向上弯曲,在剩余部分向下弯曲的形式,分析似乎表明,只有少数向下弯曲方向的鞍点存在非常大的数量,但几乎所有鞍点都具有非常相似的目标函数值。因此,算法陷入困境中的哪些鞍点并不重要。
应研究表明,无监督学习过程可以产生不需要标签化数据的特征检测器层,学习每层特征检测器的目的是能够重建或模拟下面层中特征检测器(或原始输入)的活动。通过使用该重建目标“预训练”几层逐渐更复杂的特征检测器,可以将深度网络的权重初始化为合理的值。然后可以将最后一层输出单元添加到网络顶部,并且可以使用标准反向传输对整个深度系统进行微调。这非常适用于识别手写数字或检测行人,特别是当标记数据量非常有限时。
对于小型数据集:无监督预训练过程可以帮助防止过拟合。或者当标记的样本数较少时能够做到很好的泛化效果。事实证明,只有小型数据集才需要预训练过程。
【Question】针对较大型数据,模型的预训练有没有用?
前馈网络比训练相邻层之间具有完全连通性的网络要容易的多。
卷积网络旨在处理以多个数组形式形式出现的的数据,多数组形式的数据有如下几种:
1D:信号或序列
2D:图像、声道频谱
3D:视频、体积图像(volumetric images)
ConvNet之所以有效的优势在于下面四个方法的使用:
局部连接
权值共享
池化
多层的使用
典型的ConvNet的结构是由一系列阶段组成:
卷积池化:卷积层中的单元被用来形成特征图,其中每个单元通过称为滤波器组的一组权重连接到前一层的特征图的局部野中。局部权值和的结果会通过一个非线性的像ReLU的函数。特征图中的所有单元共享一组相同的滤波单元,在同一层的不同特征图会使用不同的滤波器。
之所以这样设计的原因:
在像图像这种数组型数据中,局部值是高度相关的,可以形成独一无二的可以被很容易检测出来的motifs。
图像和其他信号的局部统计数据的位置不变性
[Result]
在同特征图的不同的位置单元共享权值,在不同的特征图之间检测相同的模式
特征图执行的过滤操作是离散卷积
卷积作用:用于检测来自于前一层的局部连接特征
池化作用:将语义相似模型聚合为一个
邻接池化单元可以从多个行或列移位的patch中获取输入,因此可以减小特征表达的维度,并对小的变化和扭曲产生了不变性。
深度神经网络利用了许多自然的信号是具有组合层次结构的这一特性,可以通过组合低层次的特征来获取高层次的特征,当前一层的元素在位置或者外观特征上变化很小时,池化层允许特征表示变化范围就非常小。
被称为时滞神经网络的原始一维卷积网络被用作音素识别或简单词识别领域
深度学习理论表明深度网络有着与基于离散特征的传统的学习算法不同的两种指数特性,而这两种特性源自于组合的力量,并且依赖于底层的数据分布有着适当的组成结构。
学习离散特征表示可以泛化习得的特征的新的价值组合,而这些新特征是不在训练过程中的。
在深层网络中组合表示层带来了另一个潜在的指数级优势
在NLP领域中,对于输入的语义特征不是非常明确地出现在输入向量中的,通过学习过程发现语义特征的好方法是将输入和输出符号之间的结构化关系分解为多个“微观规则”。当单词序列来自大量真实文本文集并且单个微观规则不可靠时,学习单词向量也能很好地工作。
像Tuesday和Wednesday这样的词的学习郭恒是类似的,这种特征表示称为分布式表示,因为它们的元素(特征)不是相互排斥的,并且它们的许多结构对应于观察数据中看到的变化。
这些单词向量由学习的特征组成,这些特征不是由专家提前确定的,而是由神经网络自动发现的。
表示性问题是逻辑启发和神经网络启发的认知范式之间争论的核心:
在逻辑启发的范例中,符号的实例是唯一的属性,即它与其他符号实例相同或不同。它没有与其使用相关的内部结构; 并且用符号推理它们必须在明智选择的推理规则中与变量绑定。
相反,神经网络只是用大型的激活向量,大型权重矩阵和非线性尺度来执行快速“直观”推理的类型,这种推理支持毫不费力的常识推理。
在未引入神经语言模型之前,统计建模的标准方法没有利用分布式表示:它基于计算长度达N的短符号序列出现频率(N-gram),可能的N-gram的数量是V^n,其中V是词汇量大小,因此考虑到超过少数几个词的上下文将需要非常大的训练语料库,因此,传统模型不能生成与词序列相关的语义特征,而神经语言模型可以,因为它将每个单词与实值特征向量相关联,并且语义相关的单词在该向量空间中最终彼此接近.
RNN模型是由反向传播算法引入之后兴起的,其在诸如语音识别和语言识别领域有着序列输入特征的输入领域发挥着重要的作用。
RNN一次处理一个元素的输入序列,在其隐藏单元中保存着“状态向量”,该状态向量隐式地包含关于序列的所有已经经过计算的元素序列的历史的信息。当我们在不同的时间步中考虑隐藏单元的输出时,就好像它们是深层多层网络中不同神经元的输出一样(如下图)。
RNNs是一个非常具有非常良好效果的动态系统,但是训练RNNs网络被证明是有一些问题的,因为反向传播过程中,梯度在每个时间步中都会或增加或减少,以至于经过很多步之后,梯度会显著地扩大或消失。
理论和实践表明,RNNs网络的一大弊端在于,不能够将信息保存时间太久久。为了规避这一缺点,修正的模型是增加一个拥有较大内存的网络,由此产生了拥有特殊隐藏层的LSTM(长短时记忆网络),自然的行为被长时间保存,其中的一个特别单元是内存细胞(memory cells),其行为特别像一个累加器或者称做门控泄露的神经元,它在下一个权重为1时与自身连接,因此它复制自己的实值状态并累积外部信号,但这个自连接是由另一个学习决定何时到达的单元的乘法门控清除记忆的内容。【不太懂】
LSTM网络比卷积RNNs网络的性能要好,尤其是当他们在每一时间步上都有几个卷积层的时候,能够使整个语音识别系统从声学一直到转录中的字符序列。
向RNNs网络中加入存储模块的方式:
Neural Turing Machine:网络通过“类似磁带”的存储器来增强性能,RNN可以选择从中读取或写入,对于存储网络,通过独立存储进行一般网络的强化,比如在问答系统中,存储网络被用来记录日志,标记被用来回答问题的最后面的网络。NTM经常被用于需要推理和符号操作的网络中,而Memory Nets可以训练记忆网络以在类似于文本冒险游戏和阅读故事之后的设置中跟踪世界状态
通过将特征表示学习与复杂推理相结合的系统,人工智能将取得重大进展。 尽管深度学习和简单推理已经被用于语音和手写识别很长一段时间,但是需要新的范例来通过大型矢量上的操作来替换基于规则的符号表达式操作