由于新的神经网络架构无时无刻不在涌现,想要记录所有的神经网络是很困难的事情。要把所有这些缩略语指代的网络(DCIGN,IiLSTM,DCGAN等)都弄清,一开始估计还无从下手。
下表包含了大部分常用的模型(大部分是神经网络还有一些其他的模型)。虽然这些架构都是新奇独特的,但当我开始把它们的结果画下来的时候,每种架构的底层关系就会清晰。
显然这些节点图并不能显示各个模型的内部工作过程。例如变分自动编码器(VAE)和自动编码器(AE)节点图看起来一样,但是二者的训练过程实际上是完全不同的,训练后模型的使用场景更加不同。VAE是生成器,用于在样本中插入噪声。而 AE 则仅仅是将它们得到的输入映射到它们“记忆”中最近的训练样本!本文不详细介绍每个不同构架内部如何工作。
虽然大多数缩写已经被普遍接受,但也会出现一些冲突。例如RNN通常指复发神经网络,有时也指递归神经网络,甚至在许多地方只是泛指各种复发架构(包括LSTM,GRU甚至双向变体)。AE也一样,VAE和DAE等都被简单的称为AE。此外,同一个模型的缩写也会出现后缀N的个数不同的问题。同一个模型可以将其称为卷积神经网络也可称作卷积网络,对应的缩写就成了CNN或CN
将本文作为完整的神经网络列表几乎是不可能的,因为新的架构一直被发明,即使新架构发布了,想要找到他们也是困难的。因此本文可能会为您提供一些对AI世界的见解,但绝对不是所有; 特别是您在这篇文章发表很久之后才看到。
对于上图中描绘的每个架构,本文做了非常简短的描述。如果您对某些架构非常熟悉,您可能会发现其中一些有用。
感知器(P左图)和前馈神经网络(FF或FFNN右图)非常直观,它们将信息从前端输入,再从后端输出。神经网络通常被描述为具有层(输入,隐藏或输出层),其中每层由并行的单元组成。通常同一层不具有连接、两个相邻层完全连接(每一层的每一个神经元到另一层的每个神经元)。最简单的实用网络有两个输入单元和一个输出单元,可用于建立逻辑模型( 用做判断是否)。通常通过反向传播方法来训练FFNN,数据集由配对的输入和输出结果组成(这被称为监督学习)。我们只给它输入,让网络填充输出。反向传播的误差通常是填充输出和实际输出之间差异的一些变化(如MSE或仅仅线性差异)。鉴于网络具有足够的隐藏神经元,理论上可以总是对输入和输出之间的关系建模。实际上它们的应用是很有限的,通常将它们与其他网络结合形成新的网络。
径向基函数(RBF)网络就是以径向基函数作为激活函数的FFNN网络。但是RBFNN有其区别于FFNN的使用场景(由于发明时间问题大多数具有其他激活功能的FFNN都没有自己的名字)。
Hopfield网络(HN)的每个神经元被连接到其他神经元; 它的结构像一盘完全纠缠的意大利面板。每个节点在训练前输入,然后在训练期间隐藏并输出。通过将神经元的值设置为期望的模式来训练网络,此后权重不变。一旦训练了一个或多个模式,网络将总是会收敛到其中一个学习模式,因为网络在这个状态中是稳定的。需要注意的是,HN 不会总是与理想的状态保持一致。网络稳定的部分原因在于总的“能量”或“温度”在训练过程中逐渐缩小。每个神经元都有一个被激活的阈值,随温度发生变化,一旦超过输入的总合,就会导致神经元变成两个状态中的一个(通常是 -1 或 1,有时候是 0 或 1)。更新网络可以同步进行,也可以依次轮流进行,后者更为常见。当轮流更新网络时,一个公平的随机序列会被生成,每个单元会按照规定的次序进行更新。因此,当每个单元都经过更新而且不再发生变化时,你就能判断出网络是稳定的(不再收敛)。这些网络也被称为联存储器,因为它们会收敛到与输入最相似的状态;当人类看到半张桌子的时候,我们会想象出桌子的另一半,如果输入一半噪音、一半桌子,HN 将收敛成一张桌子。
马可夫链(MC或离散时间马尔可夫链,DTMC)是BM和HN的前身。它可以这样理解:从我现在的这个节点,我去任何一个邻居节点的几率是无记,这意味着你最终选择的节点完全取决于当前的所处的节点,l与过去所处的节点无关。这虽然不是真正的神经网络,但类似于神经网络,并且构成了BM和HNs的理论基础。就像BM、RBM和HN一样,MC并不总是被认为是神经网络。此外,马尔科夫链也并不总是完全连接。
波尔兹曼机(BM)很像HN,区别在于只有一些神经元被标记为输入神经元,而其他神经元保持“隐藏”。输入神经元在完整的网络更新结束时成为输出神经元。它以随机权重开始,并通过反向传播学习或通过对比分歧(一种马尔科夫链用于确定两个信息增益之间的梯度)训练模型。与HN相比,BM的神经元大多具有二元激活模式。由于被MC训练,BM是随机网络。BM的训练和运行过程与HN非常相似:将输入神经元设置为某些钳位值,从而释放网络。虽然释放节点可以获得任何值,但这样导致在输入和隐藏层之间多次反复。激活由全局阈值控制。这种全局误差逐渐降的过程导致网络最终达到平衡。
限制玻尔兹曼机(RBM)与BM非常相似,也与HN类似。BM和RBM之间的最大区别是,RBM有更好的可用性,因为它受到更多的限制。RBM不会将每个神经元连接到每个其他神经元,但只将每个神经元组连接到每个其他组,因此没有输入神经元直接连接到其他输入神经元,也不会有隐藏层直接连接到隐藏层。RBM可以像FFNN一样进行训练,而不是将数据向前传播然后反向传播。
自编码器(Autoencoders, AE)与前馈神经网络(FFNN)有点相似。与其说它是一个完全不同的网络结构,不如说它是前馈神经网络的不同应用。自编码器的基本思想是:自动编码信息(如压缩,而非加密)。由此,而得名。整个网络在形状上像一个漏斗:它的隐藏层单元总是比输入层和输出层少。自编码器总是关于中央层对称(中央层是一个还是两个取决于网络的层数:如果是奇数,关于最中间一层对称;如果是偶数,关于最中间的两层对称)。最小的隐藏层总是处在中央层,这也是信息最压缩的地方(被称为网络的阻塞点)。从输入层到中央层叫做编码部分,从中央层到输出层叫做解码部分,中央层叫做编码(code)。可以使用反向传播算法来训练自编码器,将数据输入网络,将误差设置为输入数据与网络输出数据之间的差异。自编码器的权重也是对称的,即编码权重和解码权重是一样的。
稀疏自编码器(Sparse autoencoders, SAE)在某种程度上与自编码器相反。不同于我们训练一个网络在更低维的空间和结点上去表征一堆信息,在这里我们尝试着在更高维的空间上编码信息。所以在中央层,网络不是收敛的,而是扩张的。这种类型的网络可以用于提取数据集的特征。如果我们用训练自编码器的方法来训练稀疏自编码,几乎在所有的情况下,会得到一个完全无用的恒等网络(即,输入什么,网络就会输出什么,没有任何转换或者分解)。为了避免这种情况,在反馈输入的过程中会加上一个稀疏驱动。这个稀疏驱动可以采用阈值过滤的形式,即只有特定的误差可以逆传播并被训练,其他误差被视为训练无关的并被设置为零。某种程度上,这和脉冲神经网络相似:并非所有的神经元在每个时刻都会被激活(这在生物学上有一定的合理性)
变分自编码器(Variational autoencoders, VAE)和自编码器有相同的网络结构,但是模型学到的一些其他的东西:输入样本的近似概率分布。这一点和玻尔兹曼机(BM)、受限玻尔兹曼机(RBM)更相似。然而,他们依赖于贝叶斯数学,这涉及到概率推断和独立性,以及再参数化(reparametrisation)技巧以获得不同的表征。概率推断和独立性部分有直观的意义,但是他们依赖于复杂的数学知识。基本原理如下:将影响考虑进去。如果一件事在一个地方发生,而另一件事在其他地方发生,那么它们未必是相关的。如果它们不相关,那么误差逆传播的过程中应该考虑这个。这种方法是有用的,因为神经网络是大型图(在某种程度上),所以当进入更深的网络层时,你可以排除一些结点对于其他结点的影响。
去噪自编码器(Denoising autoencoders, DAE)是一种自编码器。在去噪自编码器中,我们不是输入原始数据,而是输入带噪声的数据(好比让图像更加的颗粒化)。但是我们用和之前一样的方法计算误差。所以网络的输出是和没有噪音的原始输入数据相比较的。这鼓励网络不仅仅学习细节,而且学习到更广的特征。因为特征可能随着噪音而不断变化,所以一般网络学习到的特征通常地错误的。
深度信念网络(Deep belief networks, DBN)是受限玻尔兹曼机或者变分自编码器的堆叠结构。这些网络已经被证明是可有效训练的。其中,每个自编码器或者玻尔兹曼机只需要学习对之前的网络进行编码。这种技术也被称为贪婪训练。贪婪是指在下降的过程中只求解局部最优解,这个局部最优解可能并非全局最优解。深度信念网络能够通过对比散度(contrastive divergence)或者反向传播来训练,并像常规的受限玻尔兹曼机或变分自编码器那样,学习将数据表示成概率模型。一旦模型通过无监督学习被训练或收敛到一个(更)稳定的状态,它可以被用作生成新数据。如果使用对比散度训练,它甚至可以对现有数据进行分类,因为神经元被教导寻找不同的特征。
卷积神经网络(Convolutional neural networks, CNN, or Deep convolutional neural networks, DCNN)和大多数其他网络完全不同。它们主要用于图像处理,但也可用于其他类型的输入,如音频。卷积神经网络的一个典型应用是:将图片输入网络,网络将对图片进行分类。例如,如果你输入一张猫的图片,它将输出“猫”;如果你输入一张狗的图片,它将输出“狗”。卷积神经网络倾向于使用一个输入“扫描仪”,而不是一次性解析所有的训练数据。举个例子,为了输入一张200 x 200像素的图片,你不需要使用一个有40000个结点的输入层。相反,你只要创建一个扫描层,这个输入层只有20 x 20个结点,你可以输入图片最开始的20 x 20像素(通常从图片的左上角开始)。一旦你传递了这20 x 20像素数据(可能使用它进行了训练),你又可以输入下一个20 x 20像素:将“扫描仪”向右移动一个像素。注意,不要移动超过20个像素(或者其他“扫描仪”宽度)。你不是将图像解剖为20 x 20的块,而是在一点点移动“扫描仪“。然后,这些输入数据前馈到卷积层而非普通层。卷积层的结点并不是全连接的。每个结点只和它邻近的节点(cell)相关联(多靠近取决于应用实现,但是通常不会超过几个)。这些卷积层随着网络的加深会逐渐收缩,通常卷积层数是输入的因子。(所以,如果输入是20,可能接下来的卷积层是10,再接下来是5)。2的幂是经常被使用的,因为它们能够被整除:32,16,8,4,2,1。除了卷积层,还有特征池化层。池化是一种过滤细节的方法:最常用的池化技术是最大池化(max pooling)。比如,使用2 x 2像素,取这四个像素中数值最大的那个。为了将卷积神经网络应用到音频,逐段输入剪辑长度的输入音频波。卷积神经网络在真实世界的应用通常会在最后加入一个前馈神经网络(FFNN)以进一步处理数据,这允许了高度非线性特征映射。这些网络被称为DCNN,但是这些名字和缩写通常是可以交换使用的。
反卷积神经网络(Deconvolutional networks, DN),也叫做逆向图网络(inverse graphics networks, IGN)。它是反向卷积神经网络。想象一下,将一个单词”猫“输入神经网络,并通过比较网络输出和真实猫的图片之间的差异来训练网络模型,最终产生一个看上去像猫的图片。反卷积神经网络可以像常规的卷积神经网络一样结合前馈神经网络使用,但是这可能涉及到新的名字缩写。它们可能是深度反卷积神经网络,但是你可能倾向于:当你在反卷积神经网络前面或者后面加上前馈神经网络,它们可能是新的网络结构而应该取新的名字。值得注意的事,在真实的应用中,你不可能直接把文本输入网络,而应该输入一个二分类向量。如,<0,1>是猫,<1,0>是狗,而<1,1>是猫和狗。在卷积神经网络中有池化层,在这里通常被相似的反向操作替代,通常是有偏的插补或者外推(比如,如果池化层使用最大池化,当反向操作时,可以产生其他更低的新数据来填充)
深度卷积逆向图网络(Deep convolutional inverse graphics networks , DCIGN),这个名字具有一定的误导性,因为事实上它们是变分自编码器(VAE),只是在编码器和解码器中分别有卷积神经网络(CNN)和反卷积神经网络(DNN)。这些网络尝试在编码的过程中对“特征“进行概率建模,这样一来,你只要用猫和狗的独照,就能让网络学会生成一张猫和狗的合照。同样的,你可以输入一张猫的照片,如果猫的旁边有一只恼人的邻居家的狗,你可以让网络将狗去掉。实验显示,这些网络也可以用来学习对图像进行复杂转换,比如,改变3D物体的光源或者对物体进行旋转操作。这些网络通常用反向传播进行训练。
生成式对抗网络(Generative adversarial networks , GAN)是一种新的网络。网络是成对出现的:两个网络一起工作。生成式对抗网络可以由任何两个网络构成(尽管通常情况下是前馈神经网络和卷积神经网络配对),其中一个网络负责生成内容,另外一个负责对内容进行判别。判别网络同时接收训练数据和生成网络生成的数据。判别网络能够正确地预测数据源,然后被用作生成网络的误差部分。这形成了一种对抗:判别器在辨识真实数据和生成数据方面做得越来越好,而生成器努力地生成判别器难以辨识的数据。这种网络取得了比较好的效果,部分原因是:即使是很复杂的噪音模式最终也是可以预测的,但生成与输入数据相似的特征的内容更难辨别。生成式对抗网络很难训练,因为你不仅仅要训练两个网络(它们中的任意一个都有自己的问题),而且还要考虑两个网络的动态平衡。如果预测或者生成部分变得比另一个好,那么网络最终不会收敛。
循环神经网络(Recurrent neural networks , RNN)是考虑时间的前馈神经网络:它们并不是无状态的;通道与通道之间通过时间存在这一定联系。神经元不仅接收来上一层神经网络的信息,还接收上一通道的信息。这就意味着你输入神经网络以及用来训练网络的数据的顺序很重要:输入”牛奶“、”饼干“和输入”饼干“、”牛奶“会产生不一样的结果。循环神经网络最大的问题是梯度消失(或者梯度爆炸),这取决于使用的激活函数。在这种情况下,随着时间信息会快速消失,正如随着前馈神经网络的深度增加,信息会丢失。直观上,这并不是一个大问题,因为它们只是权重而非神经元状态。但是随着时间,权重已经存储了过去的信息。如果权重达到了0或者1000000,先前的状态就变得没有信息价值了。卷积神经网络可以应用到很多领域,大部分形式的数据并没有真正的时间轴(不像声音、视频),但是可以表示为序列形式。对于一张图片或者是一段文本的字符串,可以在每个时间点一次输入一个像素或者一个字符。所以,依赖于时间的权重能够用于表示序列前一秒的信息,而不是几秒前的信息。通常,对于预测未来信息或者补全信息,循环神经网络是一个好的选择,比如自动补全功能。
长短时记忆网络(Long / short term memory , LSTM)通过引入门结构(gate)和一个明确定义的记忆单元(memory cell)来尝试克服梯度消失或者梯度爆炸的问题。这一思想大部分是从电路学中获得的启发,而不是从生物学。每个神经元有一个记忆单元和是三个门结构:输入、输出和忘记。这些门结构的功能是通过禁止或允许信息的流动来保护信息。输入门结构决定了有多少来自上一层的信息被存储当前记忆单元。输出门结构承担了另一端的工作,决定下一层可以了解到多少这一层的信息。忘记门结构初看很奇怪,但是有时候忘记是必要的:
如果网络正在学习一本书,并开始了新的章节,那么忘记前一章的一些人物角色是有必要的。
长短时记忆网络被证明能够学习复杂的序列,比如:像莎士比亚一样写作,或者合成简单的音乐。值得注意的是,这些门结构中的每一个都对前一个神经元中的记忆单元赋有权重,所以一般需要更多的资源来运行。
门控循环单元(Gated recurrent units , GRU)是长短时记忆网络的一种变体。不同之处在于,没有输入门、输出门、忘记门,它只有一个更新门。该更新门确定了从上一个状态保留多少信息以及有多少来自上一层的信息得以保留。 这个复位门的功能很像LSTM的忘记门,但它的位置略有不同。 它总是发出全部状态,但是没有输出门。 在大多数情况下,它们与LSTM的功能非常相似,最大的区别在于GRU稍快,运行容易(但表达能力更差)。 在实践中,这些往往会相互抵消,因为当你需要一个更大的网络来获得更强的表现力时,往往会抵消性能优势。在不需要额外表现力的情况下,GRU可能优于LSTM。
神经图灵机(Neural Turing machines , NTM)可以被理解为LSTM的抽象,它试图去黑箱化(使我们能够洞察到发生了什么)。神经图灵机并非直接编码记忆单元到神经元中,它的记忆单元是分离的。它试图将常规数字存储的效率和永久性以及神经网络的效率和表达力结合起来。这种想法基于有一个内容寻址的记忆库,神经网络可以从中读写。神经图灵机中的”图灵“(Turing)来自于图灵完备(Turing complete):基于它所读取的内容读、写和改变状态的能力,这意味着它能表达一个通用图灵机可表达的一切事情。
双向循环神经网络、双向长短时记忆网络、双向门控循环单元(Bidirectional recurrent neural networks, BiRNN; bidirectional long / short term memory networks, BiLSTM; bidirectional gated recurrent units, BiGRU)在表中没有展示出来,因为它们看起来和相应的单向网络是一样的。不同之处在于这些网络不仅联系过去,还与未来相关联。比如,单向长短时记忆网络被用来预测单词”fish“的训练过程是这样的:逐个字母地输入单词“fish”, 在这里循环连接随时间记住最后的值。而双向长短时记忆网络为了提供未来的信息,会在反向通道中会输入下一个字母。这种方法训练网络以填补空白而非预测未来信息,比如,在图像处理中,它并非扩展图像的边界,而是可以填补一张图片中的缺失。
深度残差网络(Deep residual networks , DRN)是具有非常深度的前馈神经网络,除了邻近层之间有连接,它可以将输入从一层传到后面几层(通常是2到5层)。深度残差网络并非将一些输入(比如通过一个5层网络)映射到输出,而是学习将一些输入映射到一些输出+输入上。基本上,它增加了一个恒等函数,将旧的输入作为后面层的新输入。结果显示,当达到150 层,这些网络对于模式学习是非常有效的,这要比常规的2到5层多得多。然而,有结果证明这些网络本质上是没有基于具体时间建造的循环神经网络(RNN),它们总是与没有门结构的长短时记忆网络(LSTM)作比较。
回声状态网络(Echo state networks , ESN)是另外一种不同类型的(循环)网络。它的不同之处在于:神经元之间随机地连接(即,层与层之间没有统一的连接形式),而它们的训练方式也不一样。不同于输入数据,然后反向传播误差,回声状态网络先输入数据,前馈,然后暂时更新神经元。它的输入层和输出层在这里扮演了稍微不同于常规的角色:输入层用来主导网络,输出层作为随时间展开的激活模式的观测。在训练过程中,只有观测和隐藏单元之间连接会被改变。
极限学习机(Extreme learning machines , ELM)本质上是有随机连接的前馈神经网络。他看上去和液体状态机(LSM)和回声状态网络(ESN)很相似,但是它即没有脉冲,也没有循环。它们并不使用反向传播。相反,它们随机初始化权重,并通过最小二乘拟合一步训练权重(所有函数中的最小误差)。这使得模型具有稍弱的表现力,但是在速度上比反向传播快很多。
液体状态机(Liquid state machines ,LSM)看上去和回声状态网络(ESN)很像。真正的不同之处在于,液体状态机是一种脉冲神经网络:sigmoid激活函数被阈值函数所取代,每个神经元是一个累积记忆单元(memory cell)。所以当更新神经元的时候,其值不是邻近神经元的累加,而是它自身的累加。一旦达到阈值,它会将其能量传递到其他神经元。这就产生一种类似脉冲的模式:在突然达到阈值之前什么也不会发生。
支持向量机(Support vector machines , SVM)发现了分类问题的最佳解决方式。传统的SVM一般是处理线性可分数据。比如,发现哪张图片是加菲猫,哪张图片是史努比,而不可能是其他结果。在训练过程中,支持向量机可以想象成在(二维)图上画出所有的数据点(加菲猫和史努比),然后找出如何画一条直线将这些数据点区分开来。这条直线将数据分成两部分,所有加菲猫在直线的一边,而史努比在另一边。最佳的分割直线是,两边的点和直线之间的间隔最大化。当需要将新的数据分类时,我们将在图上画出这个新数据点,然后简单地看它属于直线的那一边。使用核技巧,它们可以被训练用来分类n维数据。这需要在3D图上画出点,然后可以区分史努比、加菲猫和西蒙猫,甚至更多的卡通形象。支持向量机并不总是被视为神经网络。
Kohonen网络(Kohonen networks , KN; 也被称为自组织(特征)映射, SOM, SOFM))利用竞争性学习对数据进行分类,无需监督。 将数据输入网络,之后网络评估其中哪个神经元最匹配那个输入。 然后调整这些神经元以使更好地匹配输入。在该过程中移动相邻神经元。 相邻神经元被移动多少取决于它们到最佳匹配单位的距离。 有时候,Kohonen网络也不被认为是神经网络。
网友评论