深度信念网络
- 深度信念网络是一种概率生成模型,能够建立输入数据和输出类别的联合概率分布。网络中包含多个隐藏层,隐藏层中的隐藏变量通常是二进制数,用来对输入信号进行特征提取。输入信号从深度信念网络的最底层输入,并自下而上有向地传递给隐藏层。而在网络最上面的两层中,神经元之间的连接是没有方向并且对称的,这两个层次共同构成了联想记忆。
-
从功能上看,深度信念网络的每一个隐藏层都代表着对输入数据的一种中间表示,而隐藏层中的每个神经元都代表着输入数据不同层次上的特征,不同层神经元之间的连接则代表着不同层次特征之间的联系,所有特征和特征之间的所有关系共同形成了对输入数据的抽象描述。
-
从结构上看,复杂的深度信念网络可以看成由若干简单的学习单元构成的整体,而构成它的基本单元就是受限玻尔兹曼机(restricted boltzmann machine)。
受限玻尔兹曼机的模型非常简单,就是一个两层的神经网络,包括一个可见层和一个隐藏层。可见层用来接收数据,隐藏层则用来处理数据。可见层和隐藏层以全连接的方式相连,也就是任意两个不同层次中的神经元都会两两相连。但同一层中的神经元则不会互相连接,因而每个层内也就没有信息流动,这正是其名称中“受限”的来源。
- 受限玻尔兹曼机是构成深度信念网络的基本单元,是由可见层和隐藏层构成的神经网络;
- 受限玻尔兹曼机的训练方法是对比散度法,通过可见层和隐藏层的多轮交互实现;
- 深度神经网络的通用训练方式是无监督逐层预训练和有监督微调的结合。
卷积神经网络
卷积神经网络(convolutional neural network)指的是至少在某一层中用卷积运算(convolution)来代替矩阵乘法的神经网络。
- 卷积是对两个函数进行的一种数学运算,在不同的学科中有不同的解释方式。在卷积网络中,两个参与运算的函数分别叫做输入和核函数(kernel function)。本质上讲,卷积就是以核函数作为权重系数,对输入进行加权求和的过程。
卷积神经网络的稀疏感知性、参数共享性和平移不变性都有助于将它应用在图像处理之中。
- 稀疏感知性(sparse interaction)指的是卷积层核函数的大小通常远远小于图像的大小。输入图像可能在两个维度上都有几千个像素,但核函数最大也不会超过几十个像素。选择较小的核函数一方面有助于发现图像中细微的局部特征,另一方面也可以提升算法的存储效率和运行效率。核函数选取背后的原理在于对图像的全局感知可以通过将多个局部感知综合得到,这其实也符合人类的认知方式。
- 参数共享性(parameter sharing)指的则是在一个模型中使用相同的参数,说白了就是在每一轮训练中用单个的核函数去和图像的所有分块来做卷积,这无疑能够显著降低核函数参数的数目。在卷积神经网络中,参数共享的基础是对图像特征的提取与图像的位置无关。如果在图像的一个区域上,某些像素的组合构成一条直线,那么在图像的其他区域,具有相同灰度的像素组合仍然是直线,而不会变成一个圆。这说明图像的统计特性并不取决于空间位置,因而对于整个图像都可以使用同样的学习特征。
- 平移不变性(translational equivalence)指的是当卷积的输入产生平移时,其输出等于原始输出做出相同数量的平移,这说明平移操作和核函数的作用是可以交换的。从卷积的线性特性出发很容易推导出平移不变性。平移不变性其实可以看成是离散时间域上的线性移不变系统在二维空间上的扩展,它在只关心某些特征是否出现,而不考虑出现的位置时具有重要的作用。
卷积神经网络的结构并非卷积运算的简单组合,而是包含几个功能不同的层次。当输入图像被送入卷积神经网络后,先后要循环通过卷积层、激活层和池化层,最后从全连接层输出分类结果。每个层次各司其职,各负其责,都发挥着不可替代的作用。
卷积层
- 卷积层无疑是卷积神经网络的核心部分,其参数是一个或者多个随机初始化的核函数。核函数就像探照灯一样,逐行逐列地扫描输入图像,对像素矩阵进行从左到右,从上到下的滑动覆盖。每一个被核函数的光圈覆盖的区域都是和核函数维度相同的像素组合,并且作为输入和核函数进行卷积。当核函数将输入图像全部扫描完毕后,计算出的所有卷积结果又可以构成一个矩阵,这个新矩阵就是特征映射(feature map)。
激活层
- 卷积层得到的特征映射一般会送到激活层处理,给系统添加非线性元素。激活层首选的传递函数是整流线性单元,它可以激活特征映射中的负值。
池化层
- 卷积神经网络的卷积层之间通常周期性地会插入池化层(pooling layer)。池化层更恰当的名字是下采样层(downsampling layer),它的作用是对得到的特征映射矩阵进行筛选。卷积层给出了核函数和原始图像每个局部之间的近似关系,但这里面真正对图像分析有帮助的只是取值较大,也就是和核函数相似程度较高的部分。因而常见的**最大池化(max pooling)**的做法就是将特征映射划分为若干个矩形区域,挑选每个区域中的最大值,也就是最明显的特征作为下采样的结果。这样做在显著降低数据量的同时也能减少过拟合的风险。
- 池化机制的应用也可以看成是参数共享的体现:在一个图像区域有用的特征极有可能在另一个区域同样适用。因而对不同位置的特征进行聚合统计就是提取图像主要特征的有效方法。此外,池化操作还给图像带来了旋转不变性,因为无论图像如何旋转,每个区域的最大值都不会改变,因而池化并不会给图像结构造成影响。
全连接层
- 卷积层和池化层的循环使用能够实现对图像特征的逐层提取,而根据提取出的特征得到图像的分类与标记则要交给全连接层完成。由于全连接层中的神经元与前一层中的所有激活神经元都有连接,因此它们的激活与否可以通过矩阵乘法计算,这和常规的神经网络别无二致。全连接层可以使用 softmax 分类器得到原始图像属于不同类别的概率,对应的损失函数通常选择交叉熵。
卷积神经网络结构的工作流程
- 输入层将待处理的图像转化为一个或者多个像素矩阵,卷积层利用一个或多个卷积核从像素矩阵中提取特征,得到的特征映射经过非线性函数处理后被送入池化层,由池化层执行降维操作。卷积层和池化层的交替使用可以使卷积神经网络提取出不同层次上的图像特征。最后得到的特征作为全连接层的输入,由全连接层的分类器输出分类结果。
在卷积神经网络的训练里,待训练的参数是卷积核,也就是卷积层中的权重系数矩阵。训练采用的也是反向传播的方法,参数的不断更新能够提升图像特征提取的精度。
循环神经网络
- 循环神经网络和其他神经网络都不一样,它的独特之处在于引入了**“时间”的维度**,因而适用于处理时间序列类型的数据。
- 关于循环神经网络的记忆特性,可以做出进一步的解释:其实前馈网络在某种程度上同样具有记忆,只要神经网络的参数经过最优化,优化的参数中就会包含着过往数据的踪迹。但最优化的记忆只局限于训练数据集上。当训练出的模型应用到新的测试数据集上时,其参数并不会根据测试数据的表现做出进一步的调整,因而前馈神经网络的记忆其实是“冻结”的记忆。
- 在普通的循环神经网络中,记忆只会涉及到过去的状态。如果想让循环神经网络利用来自未来的信息,就要让当前的状态和以后时刻的状态同样建立起联系,得到的就是双向循环神经网络(bidirectional recurrent neural network)。
- 循环神经网络是具有记忆的神经网络,适用于处理序列化数据;
- 循环神经网络引入反馈结构,能够在时间上共享参数,从而具有记忆;
- 循环神经网络的扩展包括双向循环网络和深度循环网络;
- 递归神经网络能够处理具有层次化结构的数据,可以看成循环神经网络的推广。
生成式对抗网络
- 生成式对抗网络里的两个玩家一个叫生成器(generator),一个叫判别器(discriminator),均可以采用深度神经网络实现,这两者之间的对抗就是网络训练的主旋律。
- 生成器的目的是精确模拟真实数据的分布,判别器的目的是精确区分真实数据和生成数据;
- 生成式对抗网络的主要优点是超越了传统神经网络分类和特征提取的功能,能够按照真实数据的特点生成新的数据;
- 生成式对抗网络的主要问题是理论基础的缺失。
长短期记忆网络
- 长短期记忆网络可以实现任意长度的记忆,对信息进行长期而精确的跟踪;
- 长短期记忆单元的组成包括记忆模块、输入门、遗忘门和输出门;
- 长短期记忆网络根据当前的输入、当前的记忆和前一时刻的输出确定当前的输出;
- 长短期记忆网络能够解决梯度弥散的问题。