Q1: 深度学习主流神经网络都有哪些?
感知器(Perceptrons)
前馈神经网络
(Feed Forward Neural Networks)
单层感知器是最简单的神经网络。它仅包含输入层和输出层,而输入层和输出层是直接相连的。
相对于单层感知器,前馈神经网络包含输入层、隐藏层和输出层。这一类网络通常使用反向传播算法(Backpropagation)进行训练,由于网络具有隐藏神经元,理论上可以对输入和输出之间的关系进行建模。但实际上该网络的应用是很有限的,通常要将它们与其他网络结合形成新的网络。
径向基函数网络
(Radial Basis Function,RBF)
径向基函数(RBF)网络是以径向基函数作为**函数的前馈神经网络。径向基函数网络通常只有三层,输入层、中间层和输出层。中间层计算输入矢量与样本矢量欧式距离的径向基函数值,输出层计算它们的线性组合。
径向基函数网络的基本思想是:用径向基函数作为隐单元的“基”构成隐含层空间,将低维空间的输入通过非线性函数映射到一个高维空间,而低维空间不可分的数据到了高维空间更有可能变得可分。
Hopfield 神经网络
(Hopfield Network,HN)
1982 年,J.Hopfield 提出了可用作联想存储器的互连网络,这个网络被称为 Hopfield 网络模型。Hopfield 神经网络是一种循环神经网络,从输出到输入有反馈连接。反馈神经网络由于其输出端又反馈到其输入端,所以 Hopfield 网络在输入的激励下,会产生不断的状态变化。
网络的每个节点在训练前接受输入,然后在训练期间隐藏并输出。可以通过将神经元的值设置为期望的模式来训练网络,此后权重不变。一旦训练了一个或多个模式,网络将收敛到一个学习模式,因为网络在这个状态中是稳定的。
波尔兹曼机
(Boltzmann Machines,BM)
波尔兹曼机是一种随机神经网络。在这种网络中神经元只有两种输出状态,即二进制的0或1。状态的取值根据概率统计法则决定,由于这种概率统计法则的表达形式与著名统计力学家 L.Boltzmann 提出的玻尔兹曼分布类似,故将这种网络取名玻尔兹曼机。
波尔兹曼机(BM)很像 Hopfield 神经网络,区别在于,它只有一些神经元被标记为输入神经元,而其他神经元保持“隐藏”。输入神经元在完整的网络更新结束时成为输出神经元。它从随机权重开始,通过反向传播(Backpropagation)学习或通过对比散度(Contrastive Divergence)算法训练模型。
受限玻尔兹曼机
(Restricted Boltzmann Machines,RBM)
受限玻尔兹曼机是一种可通过输入数据集学习概率分布的随机生成神经网络。受限玻尔兹曼机由一个可见神经元层和一个隐神经元层组成。由于隐层神经元之间没有相互连接,并且隐层神经元独立于给定的训练样本,这让直接计算依赖数据的期望值变得更容易。可见层神经元之间也没有相互连接。
网络通过在训练样本得到的隐层神经元状态上执行马尔可夫链抽样过程来估计独立于数据的期望值,并行交替更新所有可见层神经元和隐层神经元的值。
马尔可夫链(Markov Chains,MC)
离散时间马尔可夫链
(Discrete Time Markov Chain,DTMC)
马尔可夫链是指数学中具有马尔可夫性质的离散事件随机过程。该过程中,在给定当前知识或信息的情况下,过去(历史状态)对于预测将来(未来状态)来说是没有关联的。马尔科夫链虽然不是真正的神经网络,但类似于神经网络,并且构成了波尔兹曼机和 Hopfield 神经网络的理论基础。
自编码器(Autoencoders,AE)
自编码器的基本思想是自动编码信息。自编码器网络结构像一个漏斗:它的隐藏层单元比输入层和输出层少,并且关于*层对称。最小的隐藏层总是处在*层,这也是信息压缩程度最高的地方。从输入层到*层叫做编码部分,从*层到输出层叫做解码部分,*层叫做编码(code)。
可以使用反向传播算法来训练自编码器,将数据输入网络,将误差设置为输入数据与网络输出数据之间的差异。自编码器的权重也是对称的,即编码权重和解码权重是一样的。
稀疏自编码器
(Sparse Autoencoders,SAE)
稀疏自编码器在某种程度上与自编码器相反。不同于以往训练一个网络在更低维的空间和结点上去表征信息,它尝试在更高维的空间上编码信息。所以在中间层,网络不是收敛的,而是扩张的。
稀疏自编码器可以自动从无标注数据中学习特征,可以给出比原始数据更好的特征描述。在实际运用时可以用稀疏编码器提取的特征代替原始数据,这样往往能带来更好的结果。
变分自编码器
(Variational Autoencoders, VAE)
变分自编码器和自编码器有相同的网络结构。不同点在于其隐藏代码来自于训练期间学习到的概率分布。
在 90 年代,一些研究人员提出一种概率解释的神经网络模型。概率解释通过假设每个参数的概率分布来降低网络中每个参数的刚性约束,将输入、隐藏表示以及神经网络的输出转换为概率随机变量。网络学习的目标是找到上述分布的参数。在变分自动编码器中,仅在隐藏节点上假设这些分布。因此,编码器变成一个变分推理网络,而译码器则变成一个将隐藏代码映射回数据分布的生成网络。
通过参数化隐藏分布,可以反向传播梯度得到编码器的参数,并用随机梯度下降训练整个网络。
去噪自编码器
(Denoising Autoencoders,DAE)
去噪自编码器的训练方法和其他自编码器一样,但是输入不是原始数据,而是带噪声的数据。这样的网络不仅能够学习到细节,而且能学习到更泛化的特征。原因有两点:一是通过与非破损数据训练的对比,破损数据训练出来的权重噪声比较小,二是破损数据在一定程度上减轻了训练数据与测试数据之间的代沟。
论文作者也从生物神经网络的角度进行了解释:人类具有认知被阻挡的破损图像能力,此源于我们的高等联想记忆感受机能。我们能以多种形式进行记忆(比如图像、声音,甚至如上图的词根记忆法),所以即便是数据破损丢失,我们也能回想起来。
深度信念网络
(Deep Belief Networks,DBN)
深度信念网络是受限玻尔兹曼机(RBM)或者变分自编码器(VAE)的堆叠结构。深度信念网络是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成数据。深度信念网络由多层神经元构成,这些神经元又分为显性神经元和隐性神经元。显元用于接受输入,隐元用于提取特征。
深度信念网络能够通过对比散度(contrastive divergence)或者反向传播来训练,并像常规的受限玻尔兹曼机或变分自编码器那样,学习将数据表示成概率模型。一旦模型通过无监督学习被训练或收敛到一个稳定的状态,它可以被用于生成新数据。
卷积神经网络
(Convolutional Neural Networks,CNN)
深度卷积神经网络
(Deep Convolutional Neural Networks,DCNN)
卷积神经网络由三部分构成。第一部分是输入层。第二部分由 n 个卷积层和池化层的组合而组成的。第三部分由一个全连结的多层感知机分类器构成。
卷积神经网络主要用于图像处理,但也可用于其他类型的输入,如音频。它是一种特殊的深层神经网络模型,它的特殊性体现在两个方面:一方面神经元间的连接是非全连接的,另一方面同一层中某些神经元之间的连接的权重是共享的。它的非全连接和权值共享的网络结构使之更接近于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。
卷积神经网络的卷积运算过程如下:输入图像通过可训练的滤波器组进行非线性卷积,卷积后在每一层产生特征映射图,然后特征映射图中每组的四个像素再进行求和、加权值、加偏置,在此过程中这些像素在池化层被池化,最终得到输出值。
反卷积神经网络
(Deconvolutional Networks,DN)
反卷积神经网络是和卷积神经网络对应的。在 CNN 中,是由输入图像与特征滤波器进行卷积,得到特征图,而在反卷积神经网络中,是由特征图与特征滤波器卷积,得到输入图像。反卷积神经网络主要用于图像重构和卷积网络可视化。
从结构中可以看出,网络首先进行前向计算,在前向计算中收集一些数据,然后将这些数据放入反向网络中进行反向计算,从而得到最终的反卷积结果。
深度卷积逆向图网络
(Deep Convolutional Inverse Graphics Networks,DCIGN)
深度卷积逆向图网络实质上是变分自编码器(VAE),只是在编码器和解码器中分别采用卷积神经网络(CNN)和反卷积神经网络(DNN)结构。这些网络尝试在编码的过程中对“特征”进行概率建模。该网络大部分用于图像处理。网络可以处理未训练的图像,也可以从图像中移除物体、置换目标,或者进行图像风格转换。
生成式对抗网络
(Generative Adversarial Networks,GAN)
生成式对抗网络由判别网络和生成网络组成。生成网络负责生成内容,判别网络负责对内容进行判别。判别网络同时接收训练数据和生成网络生成的数据。判别网络能够正确地预测数据源,然后被用作生成网络的误差部分。这形成了一种对抗:判别器努力分辨真实数据与生成数据,而生成器努力生成判别器难以辨识的数据。
生成式对抗网络很难训练,因为不仅仅要训练两个网络,而且还要考虑两个网络的动态平衡。如果判别或者生成网络变得比另一个好,那么网络最终不会收敛。
循环神经网络
(Recurrent Neural Networks,RNN)
循环神经网络是基于时间的前馈神经网络,循环神经网络的目的是用来处理序列数据。在传统的神经网络模型中,从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
在循环神经网路中,一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆,并应用于当前输出的计算中,即隐藏层之间的节点不再是无连接的,而是有连接的。并且隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
循环神经网络最大的问题是梯度消失 (或者梯度爆炸),这取决于使用的**函数。在这种情况下,随着时间增加,梯度会快速消失,正如随着前馈神经网络的深度增加,信息也会丢失。
长短时记忆网络
(Long Short Term Memory,LSTM)
长短时记忆网络是一种特殊的循环神经网络,能够学习长期依赖关系。网络通过引入门结构 (gate) 和一个明确定义的记忆单元 (memory cell) 来尝试克服梯度消失或者梯度爆炸的问题。长短时记忆网络有能力向单元状态中移除或添加信息,通过门限结构对信息进行管理。门限有选择地让信息通过。它们由一个 sigmoid 神经网络层和逐点乘法运算组成。
每个神经元有一个记忆单元和三个门结构:输入、输出和忘记。这些门结构的功能是通过禁止或允许信息的流动来保护信息。输入门结构决定了有多少来自上一层的信息存储于当前记忆单元。输出门结构承担了另一端的工作:决定下一层可以了解到多少这一层的信息。忘记门结构初看很奇怪,但是有时候忘记是必要的:如果网络正在学习一本书,并开始了新的章节,那么忘记前一章的一些人物角色是有必要的。
门控循环单元
(Gated Recurrent Units,GRU)
门控循环单元是长短时记忆网络的一种变体。不同之处在于,没有输入门、输出门、忘记门,它只有一个更新门。该更新门确定了从上一个状态保留多少信息,以及有多少来自上一层的信息得以保留。在大多数情况下,它们与 LSTM 的功能非常相似,最大的区别在于 GRU 稍快,运行容易,但表达能力更差。
在实践中,这些往往会相互抵消,因为当我们需要一个更大的网络来获得更强的表现力时,表现力往往会抵消性能优势。在不需要额外表现力的情况下,GRU 可能优于 LSTM。
神经图灵机
(Neural Turing Machines,NTM)
神经图灵机包含两个基本组成部分:神经网络控制器和记忆库。传统的神经网络是一个黑箱模型,而神经图灵机尝试解决这一问题。
像大多数神经网络一样,控制器通过输入输出向量与外界交互,但不同于标准网络的是,它还与一个带有选择性读写操作的内存矩阵进行交互。它试图将常规数字存储的效率和永久性以及神经网络的效率和表达力结合起来。这种想法的实现基于一个有内容寻址的记忆库,神经网络可以从中进行读写。
深度残差网络
(Deep Residual Networks,DRN)
深度网络容易造成梯度在反向传播的过程中消失,导致训练效果很差,而深度残差网络将基本的单元改成了这样:
它在神经网络的结构层面解决了这一问题,就算网络很深,梯度也不会消失。
回声状态网络
(Echo State Networks,ESN)
回声状态网络是另外一种不同类型的循环网络。传统的多层神经网络的中间层是一层一层的全连接神经元,回声状态网络把中间的全连接部分变成了一个随机连接的存储池,学习过程就是学习存储池中的连接。它们的训练方式也不一样。
与循环神经网路的不同之处是网络将输入到隐藏层,隐藏层到隐藏层的连接权值随机初始化,然后固定不变,只训练输出连接权值。由于只训练输出层,不需要反向传播误差,训练过程就变成求线性回归,速度非常快。
极限学习机
(Extreme Learning Machines,ELM)
极限学习机是一种新型的快速学习算法,它们随机初始化权重,并通过最小二乘拟合一步训练权重。这使得模型表现力稍弱,但是在速度上比反向传播快很多。
液体状态机
(Liquid State Machines,LSM)
液体状态机是一种脉冲神经网络:sigmoid **函数被阈值函数所取代,每个神经元是一个累积记忆单元(memory cell)。所以当更新神经元的时候,其值并不是邻近神经元的累加,而是它自身的累加。一旦达到阈值,它会将它的能量传递到其他神经元。这就产生了一种类似脉冲的模式,即在突然达到阈值之前什么也不会发生。
支持向量机
(Support Vector Machines,SVM)
支持向量机是分类问题的最佳解决方式。支持向量机通过核函数,将低维空间不可分的数据映射到高维空间,使数据变得线性可分。支持向量机能够学习出一个分类超平面,对数据进行分类,但一般不认为支持向量机是神经网络。
Kohonen 网络(Kohonen Networks,KN)
自组织映射
(Self-Organizing Map,SOM)
Kohonen 网络是自组织竞争型神经网络的一种,该网络为无监督学习网络,能够识别环境特征并自动聚类。Kohonen 网络神经元通过无监督竞争学习,令不同的神经元对不同的输入模式敏感,从而特定的神经元在模式识别中可以充当某一输入模式的检测器。
Kohonen 神经网络算法工作机理为:网络学习过程中,当样本输入网络时,竞争层上的神经元计算输入样本与竞争层神经元权值之间的欧几里德距离,距离最小的神经元为获胜神经元。调整获胜神经元和相邻神经元权值,使获得神经元及周边权值靠近该输入样本。