神经网络学习(2):FFNN,P,RNN,LSTM,GRU……

THE NEURAL NETWORK ZOO


其中大多数是神经网络,但也有些完全不同。此列表并不全面,仍需不断更新。

将它们绘制为节点映射的一个问题是:它并没有真正显示它们是如何被使用的。 例如,变分自动编码机(VAE)可能看起来就像自动编码机(AE),但训练过程实际上是完全不同的。受过训练的网络的用例差别更大,因为VAE是生成器,可以在其中插入噪声以获取新样本。AEs,只需将它们获得的所有内容作为输入映射到它们“记住”的最接近的训练样本。每个不同节点类型如何在内部工作参考:神经网络学习(1):cells +layers。

尽管大多数简写都已被普遍接受,但也出现一些冲突。RNNs有时表示递归神经网络(recursive neural networks),但大多时候指的是循环神经网络(recurrent neural networks),在许多地方还会泛指各种循环架构。类似的还有LSTMs、GRU甚至是双向变体(the bidirectional variants)。AEs也会面临同样的问题,VAEs、DAEs及其相似结构有时都被简称为AEs。很多缩写后面的“N”也会变化,因为同一个架构既可称为卷积神经网络(convolutional neural network),也可简称为卷积网络(convolutional network),这样就出现了CNN和CN两种形式。

1、前馈神经网络(Feed forward neural networks,FF or FFNN)和感知机(perceptrons,P)

前馈神经网络(FF或FFNN)和感知机(P)非常直接,它们将信息从前面反馈到后面(分别是输入和输出)。神经网络通常被描述为具有多个层,其中每个层由并行的输入、隐藏或输出神经元组成。单独的一层不会有连接,通常相邻的两层是全连接的(一层的每个神经元连接到另一层的每个神经元)。最简单实用的网络有两个输入神经元和一个输出神经元,可用来建模逻辑门。

人们通常通过 反向传播算法(back propagation) 来训练FFNNs,给网络一对数据集(输入数据集+期望的输出数据集),这叫做监督学习,而不是只给它输入,让网络来填补空白的非监督学习。反向传播的错误通常是输入和输出之间的差异的一些变体(如MSE或只是线性差值)。假设网络有足够多的隐藏神经元,理论上它总是可以模拟输入和输出之间的关系。实际上,它们的使用非常有限,但是它们通常与其他网络结合在一起形成新的网络。

Rosenblatt, Frank. “The perceptron: a probabilistic model for information storage and organization in the brain.” Psychological review 65.6 (1958): 386.

https://www.ling.upenn.edu/courses/cogs501/Rosenblatt1958.pdf
https://github.com/danijar/layered
https://github.com/civisanalytics/muffnn

2、径向基神经网络(Radial basis function,RBF)

径向基函数(RBF)网络是具有径向基函数作为激活函数的FFNN,没有更多描述,并不意味着它们没有应用。大多数具有其他激活函数的FFNN都没有自己的名字,或许与发明年代有关。

Broomhead, David S., and David Lowe. Radial basis functions, multi-variable functional interpolation and adaptive networks. No. RSRE-MEMO-4148. ROYAL SIGNALS AND RADAR ESTABLISHMENT MALVERN (UNITED KINGDOM), 1988.

http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA196234
https://github.com/eugeniashurko/rbfnnpy

3、循环 / 递归神经网络(Recurrent neural networks,RNN)

递归神经网络(RNN)是具有时间联结的FFNNs:它们具有状态,在通道之间有联系,时间上有联系。

神经元的输入包含前一层输出的信息,和自身在先前通道的信息。这意味着给定输入和训练网络的顺序很重要:先给它“牛奶”再给它“饼干”,与先给它“饼干”再给它“牛奶”相比,可能会产生不同的结果。

RNNs的一个大问题是梯度消失或梯度爆炸(取决于使用的激活函数),随着时间的推移,信息迅速丢失,就像深层的FFNNs在深度上丢失信息一样。直觉上这不会是大问题,因为这些只是权重而不是神经元的状态,但是时间的权重实际上是储存来自过去的信息的地方,如果权重达到0或1,000 000,则先前的状态就不会提供太多信息。

RNNs原则上可以在许多领域中使用,因为大多数没有时间轴的数据形式(不像语音和视频)都可以表示为序列。一张图片或一串文本可以一次输入一个像素或字符,时间相关的权重用于表示在序列中先前发生的内容,而不是x秒之前发生的内容。一般来说,推测或补全信息时,递归网络是一个很好的选择,如自动补全。

Elman, Jeffrey L. “Finding structure in time.” Cognitive science 14.2 (1990): 179-211.

https://crl.ucsd.edu/~elman/Papers/fsit.pdf
https://github.com/farizrahman4u/recurrentshop

4、长 / 短期记忆网络(Long / short term memory (LSTM) networks)

长/短期记忆(LSTM)网络,试图通过引入门结构和显式定义的记忆神经元来解决梯度消失、梯度爆炸的问题。

灵感主要来自电路,而不是生物学。每个神经元都有一个记忆单元和三个门:输入、输出和遗忘。这些门的功能是通过阻止或允许信息流动来保护信息。

输入门决定从前一层接受多少信息存储在记忆单元中。输出门在另一端确定当前神经元输出多少信息给下一层。遗忘门乍看很奇怪,但有时候遗忘一些信息是有好处的:例如,在学习一本书时,翻开了新的一章,那么网络可能有必要忘记前一章中的一些字符。

LSTMs已经被证明能够学习复杂的序列,比如像莎士比亚那样的写作,或者创作原始音乐。注意,每一个门对应于前一个神经元中的记忆单元都有一个权重,因此通常需要更多的计算资源。

Hochreiter, Sepp, and Jürgen Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.

https://www.bioinf.jku.at/publications/older/2604.pdf
https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_LSTM.py

5、门循环单元(Gated recurrent units,GRU)

门循环单元(GRU)是LSTMs的一个轻量级变体。 它们少了一个门,连接方式略有不同:只有更新门和重置门。

更新门决定了从最后的状态中保留多少信息,以及从前一层接受多少信息。重置门的功能很像LSTM的遗忘门,但是它的位置略有不同,总是输出完整状态,没有输出门。在大多数情况下,它们的功能与LSTMs非常相似,最大的区别是GRUs运行起来稍微快一些,也更容易一些(但是函数表达能力也稍微差一些)。

在实践中,优势和劣势往往相互抵消,当需要一个更大的网络来重新获得一些函数表达力时,反过来又抵消了性能优势。在某些不需要额外函数表达力的情况下,GRUs的综合性能胜过LSTMs。

Chung, Junyoung, et al. “Empirical evaluation of gated recurrent neural networks on sequence modeling.” arXiv preprint arXiv:1412.3555 (2014).

https://arxiv.org/pdf/1412.3555v1.pdf
https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_GRU.py

6、双向循环神经网络(Bidirectional recurrent neural networks,BiRNN)
7、双向长/短期记忆网络(bidirectional long / short term memory networks,BiLSTM)
8、双向门控循环单元(bidirectional gated recurrent units,BiGRU)

图中没有显示双向循环神经网络、双向长/短期记忆网络和双向门控循环单元(BiRNN、BiLSTM和BiGRU),因为它们看起来与单向神经网络结构完全相同。

不同之处在于,这些网络不仅与过去的状态相连,还与未来的状态相连。例如,单向LSTMs可以通过逐个输入字母来训练预测单词“fish”,其中通过时间上循环连接记住最后的值。BiLSTM则是在向后传递时还输入了序列中的下一个字母,使得它可以访问未来的信息。这就训练了网络来填补信息之间的空白,而不是预测信息。因此它可以填补图像中间的缺失,而不是在边缘扩展图像。

Schuster, Mike, and Kuldip K. Paliwal. “Bidirectional recurrent neural networks.” IEEE Transactions on Signal Processing 45.11 (1997): 2673-2681.

http://www.di.ufpe.br/~fnj/RNA/bibliografia/BRNN.pdf
BiRNN:https://github.com/cstghitpku/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/tree/master/models
BiLSTM:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiLSTM.py
BiGRU:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiGRU.py

9、自动编码机(Autoencoders ,AE )

自动编码机(AE)有点类似于FFNNs,因为AEs更像是FFNNs的另一种用法,而不是一种根本不同的体系结构。自动编码器的基本思想是自动编码信息(如压缩,而不是加密),因此得名。

整个网络总是像一个沙漏形状,隐藏层比输入层和输出层更小。AEs也总是围绕中间层对称(一层或两层取决于神经网络层数的奇偶)。最小的层总是在中间,这是信息压缩程度最大的地方(网络的阻塞点/关隘口)。中间层之前的是编码部分,中间层之后的是解码部分,中间层是编码。

使用反向传播算法训练,给定输入,误差设置为输入和输出之间的差。AEs的权值是对称的,因此编码权值与解码权值相同。

Bourlard, Hervé, and Yves Kamp. “Auto-association by multilayer perceptrons and singular value decomposition.” Biological cybernetics 59.4-5 (1988): 291-294.

https://pdfs.semanticscholar.org/f582/1548720901c89b3b7481f7500d7cd64e99bd.pdf
https://github.com/caglar/autoencoders/blob/master/ae.py

10、变分自编码机(Variational autoencoders ,VAE)

变分自编码器(VAE)具有与AEs相同的体系结构,但是“被教授”了其他一些东西:输入样本的近似概率分布。使得它与BMs和RBMs更相近。 它们依赖贝叶斯数学的概率推理和独立性,以及重新参数化的技巧来实现这种不同的表示。推理和独立部分是直观的,有意义的,但是依赖于一些复杂的数学运算。

基本原理是:考虑影响力。如果一件事发生在一个地方,另一件事发生在另一个地方,它们不一定相关。如果它们不相关,那么误差传播应该考虑这一点。这是一种有用的方法,因为神经网络是大型图(在某种程度上),当深入到更深的层次时,如果能够排除某些节点对其他节点的影响,将会很有帮助。

Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013).

https://arxiv.org/pdf/1312.6114v10.pdf
https://github.com/mattjj/svae

11、去噪自编码机(Denoising autoencoders,DAE)

去噪自编码机(DAE)是一种AEs,不仅要输入数据,还要添加噪声(比如使图像更加模糊)。误差的计算方法相同,因此网络的输出和没有噪声的原始输入进行对比。

这种方法鼓励网络不要去学习细节,而是学习更广泛的特征。因为细微特征在随着噪声不断变化,学习结果通常很差。

Vincent, Pascal, et al. “Extracting and composing robust features with denoising autoencoders.” Proceedings of the 25th international conference on Machine learning. ACM, 2008.

http://machinelearning.org/archive/icml2008/papers/592.pdf
https://github.com/caglar/autoencoders/blob/master/da.py

12、稀疏自编码机(Sparse autoencoders ,SAE)

稀疏自编码器(SAE)在某种程度上与AEs相反。它不是教网络在更小的空间或节点中表示大量信息,而是尝试在更大的空间中编码信息。相比于把网络在中间收敛再扩展到输入大小,SAE则是在中间进行放大。这些类型的网络可用于从数据集中提取许多细微特征。

如果用与AE相同的方法训练SAE,那么几乎在所有情况下都只能得到一个无用的恒等网络(输入=输出,没有任何转换或分解)。为了避免这种情况,在返回输入时需要加上一个稀疏驱动数据,稀疏驱动可以采用阈值过滤器的形式:只有一种特定的错误可以被反向传播进行训练,其他错误不传递并置为0。它在某种程度上,类似于脉冲神经网络,并不是所有神经元都一直处于兴奋状态(根据生物合理性打分)。

Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra, and Yann LeCun. “Efficient learning of sparse representations with an energy-based model.” Proceedings of NIPS. 2007.

https://papers.nips.cc/paper/3112-efficient-learning-of-sparse-representations-with-an-energy-based-model.pdf
https://github.com/caglar/autoencoders/blob/master/sa.py

13、马尔可夫链(Markov chains,MC)

马尔可夫链(MC)或离散时间马尔可夫链(DTMC)是BMs和HNs的前身。 可以这样理解:从当前所在节点,到任意相邻节点的概率是多少?它们是无记忆的(即马尔可夫性质),也就是说,得到的每一种状态都完全依赖于前一种状态。虽然不是真正的神经网络,但它们确实类似于神经网络,构成了BMs和HNs的理论基础。

像BMs、RBMs和HNs那样,MC并不总是被认为是神经网络,马尔可夫链也不总是完全连接的。

Hayes, Brian. “First links in the Markov chain.” American Scientist 101.2 (2013): 252.

https://www.americanscientist.org/sites/americanscientist.org/files/201321152149545-2013-03Hayes.pdf
Markov chains:https://github.com/jsvine/markovify
DTMC:https://github.com/AndrewWalker/dtmc

14、霍普菲尔网络(Hopfield network,HN)

霍普菲尔网络(HN)中,每个神经元都与其他神经元相连。 它像一盘完全搅在一起的意大利面,每个节点都充当所有功能。每个节点都在训练前输入,训练中隐藏,训练后输出。将所有神经元的值设为期望值来训练网络,然后计算权重,在此之后,权值不会改变。

网络一旦被训练一种或多种模式,最终将总是收敛到其中一种学习的模式,因为网络只在这些状态下是稳定的。注意,它并不总是符合所期望的状态,它之所以稳定,部分原因是在训练过程中,网络的总“能量”或“温度”逐渐降低。每个神经元都有一个激活阈值衡量这个温度,一旦输入的总和超过阈值,神经元就要在两种状态中进行选择(通常是-1或1,有时是0或1)。

更新网络可以同步进行,也可以逐个进行。如果逐个更新,将创建一个完全随机序列,来组织哪些神经元以哪种顺序进行更新(完全随机:每n个神经元中,全部n个选项都只发生一次)。这样就可以知道网络何时稳定(完成收敛):每个神经元都更新了,并且不在改变。

这些网络通常被称为联想记忆,因为它们收敛到与输入最相似的状态。如果人类看到半张桌子,就能想象另一半,如果这个网络输入一半桌子+一半噪音,就会收敛到一张桌子。

Hopfield, John J. “Neural networks and physical systems with emergent collective computational abilities.” Proceedings of the national academy of sciences 79.8 (1982): 2554-2558.

https://bi.snu.ac.kr/Courses/g-ai09-2/hopfield82.pdf
https://github.com/yosukekatada/Hopfield_network

15、玻尔兹曼机(Boltzmann machines,BM)

玻尔兹曼机(BM)很像HNs,区别:一些神经元被标记为输入神经元,其他的仍然是隐藏神经元。 在整个网络更新结束时,输入神经元变成输出神经元。开始时,神经元的权重是随机的,通过反向传播(back-propagation)算法,或是最近常用的对比散度(contrastive divergence)算法(使用马尔可夫链来确定两个信息增益之间的梯度)进行学习。

与HN相比,BM的神经元大多具有二元激活模式。由MCs训练可知,BMs是随机网络。BM的训练和运行过程与HN非常相似:将输入神经元设置为特定的固定值,之后让网络自行学习。自由学习时,神经元可能是任意值,不断地在输入和隐藏的神经元之间来回计算。激活函数由一个全局温度值控制,温度下降时神经元的能量降低,从而使激活模式趋于稳定。在适当的温度下,网络达到平衡。

Hinton, Geoffrey E., and Terrence J. Sejnowski. “Learning and releaming in Boltzmann machines.” Parallel distributed processing: Explorations in the microstructure of cognition 1 (1986): 282-317.

https://www.researchgate.net/profile/Terrence_Sejnowski/publication/242509302_Learning_and_relearning_in_Boltzmann_machines/links/54a4b00f0cf256bf8bb327cc.pdf
https://github.com/yell/boltzmann-machines

16、受限玻尔兹曼机(Restricted Boltzmann machines,RBM)

受限玻尔兹曼机(RBM)与BMs非常相似,因此也与HNs相似。BMs和RBMs之间最大的区别是,RBMs的可用性更好,因为它们受到了更多的限制。它们不会把每个神经元都连接到其他所有神经元上,而是把不同组的所有神经元进行连接,所以没有输入神经元直接连接到其他输入神经元上,也没有隐藏神经元到隐藏神经元的连接。

RBMs的训练像修改过的FFNNs:不需要先前向传递数据,然后反向传播误差,而是前向传递数据之后再将这些数据反向传回(回到第一层)。在此之后,再使用前向和反向传播进行训练。

Smolensky, Paul. Information processing in dynamical systems: Foundations of harmony theory. No. CU-CS-321-86. COLORADO UNIV AT BOULDER DEPT OF COMPUTER SCIENCE, 1986.

http://www.dtic.mil/cgi-bin/GetTRDoc?Location=U2&doc=GetTRDoc.pdf&AD=ADA620727
https://github.com/echen/restricted-boltzmann-machines

17、深度信念网络(Deep belief networks,DBN)

深度信念网络(DBN)是指以RBMs或VAEs为主的栈结构。 这些网络已被证明是有效的可训练堆栈(一层一层的进行有效训练),其中每个AE或RBM只需要学习编码前一层的网络输出。

这种技术也被称为贪婪训练,贪婪的意思是不断获得局部最优解,来取得一个不错的但可能不是全局最优的结果。

DBNs可以通过对比发散或反向传播进行训练,并学习将数据表示为概率模型,就像常规的RBMs或VAEs一样。一旦通过无监督学习训练或收敛到(更)稳定的状态,该模型就可以用来生成新的数据。如果使用对比发散训练,它甚至可以对已有的数据进行分类,因为神经元已经学会寻找不同的特征。

Bengio, Yoshua, et al. “Greedy layer-wise training of deep networks.” Advances in neural information processing systems 19 (2007): 153.

https://papers.nips.cc/paper/3048-greedy-layer-wise-training-of-deep-networks.pdf
https://github.com/albertbup/deep-belief-network

18、卷积神经网络(Convolutional neural networks ,CNN)或深度卷积神经网络(deep convolutional neural networks,DCNN)

卷积神经网络(CNN或深度卷积神经网络,DCNN)与大多数其他网络有很大的不同。它们主要用于图像处理,但也可以用于其他类型的输入,如音频。CNNs的一个典型用例是给网络输入图像,网络会对数据进行分类,例如,给它一张猫的图片,它就输出“cat”,给它一张狗的图片,它就输出“dog”。

CNNs通常从一个输入“扫描器”开始,并不会一次性解析所有的训练数据。例如,要输入一个200 x 200像素的图像,并不会创建一个有40000个节点的层,而是创建一个例如20 x 20大小的扫描层,然后将原始图像的前20 x 20像素(通常从左上角开始)输入扫描层。当这部分输入数据处理完(可能用于训练),输入下一个20X20像素图像:将扫描仪向右移动一个像素(移动的步长可以设置)。

不能一次性移动输入的20个像素(或任意扫描层的宽度),也不是将图像分割成20 x 20的块,而是用扫描层在原始图像上滑行。然后,这些输入数据会输入到卷积层而不是普通层,在卷积层中,并非所有节点都互相连接,每个节点只连接与自己紧密相邻的神经元(紧密程度取决于具体情况,但通常不会超过几个)。这些卷积层会随着深度的增加变小,主要是由于输入的易分解因子(所以20个神经元可能在下一层会变成10个,再下一层5个),2的次幂在这里很常用,因为它们可以根据定义:32、16、8、4、2、1,进行干净彻底的划分。

除了这些卷积层,还有池化层。池化是一种过滤掉细节的方法:一种常见的池化技术是最大池化(max pooling),例如,取2 x 2个像素,然后传递其中红色最多的那个像素。

要将CNNs应用于音频,基本上要将音频剪辑成一段一段,进行输入。实际应用时,常常在CNNs的后面添加一个FFNN,以进一步处理数据,使数据能够高度非线性抽象。这些网络被称为DCNNs,但是这两个网络之间的名称和缩写通常可以互换使用。

LeCun, Yann, et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE 86.11 (1998): 2278-2324.

http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf
CNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_CNN.py
DCNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_DeepCNN.py

19、反卷积网络(Deconvolutional networks,DN)

反卷积网络(DN)又称逆图形网络( inverse graphics networks,IGNs ),是一种反向卷积神经网络。例如,给网络输入“猫”这个词,并通过将生成的图像与猫的真实图像进行比较,训练它生成类似猫的图像。

就像普通的CNNs一样,DNNs也可以和FFNNs组合在一起,但这是关于如何使用新的缩写的问题。它们可能被称为深度反卷积神经网络,但是把FFNNs放在DNNs的后面和前面时,得到的是不同的架构,需要不同的命名。

在大多数应用程序中,实际上不会向网络提供类似文本的输入,更可能是二进制分类输入向量。比如< 0,1 >是猫,< 1,0 >是狗,< 1,1 >是猫和狗。

CNNs中的池化层通常也被类似的反向操作替换,主要是使用有偏差的假设进行插值和外推(如果池化层使用最大池化,可以在反向操作时生成比最大值小的新数据)。

Zeiler, Matthew D., et al. “Deconvolutional networks.” Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on. IEEE, 2010.

https://www.matthewzeiler.com/mattzeiler/deconvolutionalnetworks.pdf
https://github.com/ifp-uiuc/anna

20、深度卷积逆图形网络(Deep convolutional inverse graphics networks,DCIGN)

深度卷积逆图形网络(DCIGN)有一个有点误导人的名字,因为它们实际上是VAEs,但是分别是CNNs用于编码,DNNs用于解码。这个网络试图将编码中的“特征”进行概率建模,这样它就能学会在只有一只猫的图片和一只狗的图片的情况下,生成一张既有猫又有狗的图片(用猫和狗的独照,生成一张猫和狗的合照)。同样,也可以输入一张猫和狗的合照,让它把狗移除,而不需要人工操作。

演示表明,这些网络还可以学习对图像进行复杂的转换建模,比如改变光源、旋转3D物体。一般使用反向传播训练。

Kulkarni, Tejas D., et al. “Deep convolutional inverse graphics network.” Advances in Neural Information Processing Systems. 2015.

https://arxiv.org/pdf/1503.03167v4.pdf
https://github.com/yselivonchyk/TensorFlow_DCIGN

21、生成对抗网络(Generative adversarial networks,GAN)

生成对抗网络(GAN)是一类不同的网络,它们有一对双胞胎:两个网络一起工作。GANs由任意两个网络组成(尽管通常是FFs和CNNs的组合),一个负责生成内容,另一个负责判断内容

识别网络(discriminating network)从生成网络(generative network)接收训练数据或生成内容,然后将识别网络对数据源的正确预测程度(准确率)作为生成网络误差的一部分。这就形成了一种竞争形式:识别网络越来越善于区分真实数据和生成的数据,而生成网络则在学习如何生成让识别网络更难预测的数据。这在一定程度上很有效,因为即使是非常复杂的类噪音模式,最终也是可以预测的,但生成的内容在特性上与输入数据相似,更难区分。

GANs可能很难训练,因为不仅需要训练两个网络(其中任何一个都可能带来它自己的问题),而且还需要使它们动态平衡。如果预测或生成变得比另一个好,GAN将不会收敛,会内部发散。

Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in Neural Information Processing Systems (2014).

https://arxiv.org/pdf/1406.2661v1.pdf
https://github.com/devnag/pytorch-generative-adversarial-networks

22、液态机(Liquid state machines,LSM)

液态机(LSM)换汤不换药,看起来很像ESNs。

真正的不同之处在于,LSMs是一种脉冲神经网络:sigmoid激活函数被阈值函数取代,每个神经元也是一个累积记忆神经元。因此,当更新一个神经元时,其值不是相邻神经元的和,而是自身累加的值。一旦达到阈值,它就会向其他神经元释放能量,创建了一种类似于脉冲的模式,在此模式中,一段时间内神经元不进行任何操作,直到突然达到一个阈值。

Maass, Wolfgang, Thomas Natschläger, and Henry Markram. “Real-time computing without stable states: A new framework for neural computation based on perturbations.” Neural computation 14.11 (2002): 2531-2560.

https://web.archive.org/web/20120222154641/http://ramsesii.upf.es/seminar/Maass_et_al_2002.pdf
https://github.com/kghose/Liquid

23、极限学习机(Extreme learning machines,ELM)

极限学习机(ELM)本质上是具有随机连接的FFNNs

它们看起来非常类似于LSMs和ESNs,但它们既没有循环特性,也没有脉冲特性。它们也不使用反向传播,而是在开始时使用随机权重,并根据最小二乘拟合(所有函数的最小误差)单步训练权重。这样会使网络的表现能力降低,但是运行速度比反向传播快得多。

Huang, Guang-Bin, et al. “Extreme learning machine: Theory and applications.” Neurocomputing 70.1-3 (2006): 489-501.

https://www.sciencedirect.com/science/article/pii/S0925231206000385?via%3Dihub
https://github.com/dclambert/Python-ELM

24、回声状态网络(Echo state networks,ESN)

回声状态网络(ESN)是另一种不同类型的(循环)网络。不同之处在于:神经元之间的连接是随机的(即没有组织成整齐的层组),它们的训练方式也不同

不同于输入数据然后反向传播误差,而是输入数据、前馈然后更新神经元,并随时间观察输出。输入层和输出层扮演一个稍微非常规的角色,因为输入层用于主导网络,而输出层作为随时间展开的激活模式的观察器。在训练中,只有观察和隐藏单元之间的连接被改变。

Jaeger, Herbert, and Harald Haas. “Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication.” science 304.5667 (2004): 78-80.

https://science.sciencemag.org/content/304/5667/78/tab-pdf
https://github.com/m-colombo/Tensorflow-EchoStateNetwork

25、深度残差网络(Deep residual networks,DRN)

深度残差网络(DRN)是深层的FFNNs,具有额外的连接将输入从当前层像传递到下一层一样,传递到更后面的层(通常第2~第5层)。不同于试图寻找一种方法将某些输入跨5层映射到某些输出,这一网络强制学会将某些输入映射到某些输出+这些输入。本质上,它在结果中增加了一个恒等函数,将前面的输入一起传递到更后面的层。

研究表明,这些网络在学习模式高达150层时非常有效,远远超过预期训练的常规的2~5层。但是这些网络被证实本质上只是没有时间结构的RNNs,它们经常与没有门结构的LSTMs进行对比。

He, Kaiming, et al. “Deep residual learning for image recognition.” arXiv preprint arXiv:1512.03385 (2015).

https://arxiv.org/pdf/1512.03385v1.pdf
https://github.com/KaimingHe/deep-residual-networks

26、神经图灵机(Neural Turing machines,NTM)

神经图灵机(NTM)可以被理解为LSTMs的抽象,是一种试图消除神经网络黑盒(让我们对其中发生的事情有一些了解)的尝试。

不是直接将记忆单元编码在神经元中,而是将记忆单元分离出来。它试图将常规数字信息存储的高效性、永久性,与神经网络的高效性和函数表达能力结合起来。这个想法需要有一个内容可寻址的存储库和一个可以从中读写的神经网络。

神经图灵机中的“图灵”来自于它的图灵完备性:具有根据它所读取的内容读、写和改变状态的能力,意味着它可以表示任何通用图灵机器能够表示的东西。

Graves, Alex, Greg Wayne, and Ivo Danihelka. “Neural turing machines.” arXiv preprint arXiv:1410.5401 (2014).

https://arxiv.org/pdf/1410.5401v2.pdf
https://github.com/MarkPKCollier/NeuralTuringMachine

27、可微神经计算机(Differentiable Neural Computers,DNC)

可微神经计算机(DNC)是一种增强的神经图灵机,具有可扩展的内存,其灵感来自于人类海马体存储记忆的方式。

其想法是采用经典的冯•诺依曼计算机架构,用RNN替换CPU,RNN可以学习什么时候从RAM中读取什么内容。除了拥有大量的数字作为内存(可以在不重新训练RNN的情况下调整大小)之外,DNC还有三个注意机制:

a. 允许RNN查询少量输入与内存条目的相似性
b. 允许RNN查询内存中任意两个条目之间的时间关系
c. 允许RNN查询最近是否更新了内存条目——使得在没有可用的空内存时不太可能覆盖该条目

Graves, Alex, et al. “Hybrid computing using a neural network with dynamic external memory.” Nature 538 (2016): 471-476.

https://www.nature.com/articles/nature20101

28、胶囊网络(Capsule Networks,CapsNet)

胶囊网络(CapsNet)是受生物学启发的池化的替代品,其中每个神经元连接多个权重(向量),而不是一个权重(标量)。这使得神经元能够传递更多的信息,而不仅仅是检测到的特征,比如还能传递某个特征在图片中的位置,或是它的颜色和方向。

学习过程包括一种局部形式的Hebbian学习,计算下一层输出的预测准确率。

Sabour, Sara, Frosst, Nicholas, and Hinton, G. E. “Dynamic Routing Between Capsules.” In Advances in neural information processing systems (2017): 3856-3866.

https://arxiv.org/abs/1710.09829

29、自组织神经网络 / Kohonen网络(Kohonen networks,KN)

Kohonen网络 (KN),也称作自组织(特征)映射(self organising (feature) map, SOM, SOFM),利用竞争性学习对数据进行分类,无需监督。先将输入提供给网络,接着网络评估哪个神经元与输入最匹配,然后调整这些神经元以更好地匹配输入。

在调整神经元的过程中,拖拽相邻的神经元,相邻的神经元的移动量取决于它到最佳匹配单元的距离。

Kohonen, Teuvo. “Self-organized formation of topologically correct feature maps.” Biological cybernetics 43.1 (1982): 59-69.

https://cioslab.vcu.edu/alg/Visualize/kohonen-82.pdf
https://github.com/mljs/som

30、注意网络(Attention networks,AN)

注意网络(AN)可以看作是一类包含变压器结构的网络。它们使用一种注意机制,通过分离存储先前的网络状态和在状态之间切换注意来对抗信息衰减。编码层中每次迭代的隐藏状态存储在记忆神经元中。解码层连接到编码层,但它也接收由注意内容(注意环境,attention context)过滤后的记忆神经元的数据。

此过滤步骤为解码层添加了环境信息,从而加强了独有特征的重要性。利用解码层输出的误差信号,对产生该环境的注意网络进行训练。此外,注意环境可以被可视化,从而了解哪些输入特征对应于哪些输出特征。

Jaderberg, Max, et al. “Spatial Transformer Networks.” In Advances in neural information processing systems (2015): 2017-2025.

https://arxiv.org/pdf/1506.02025.pdf

31、支持向量机(Support vector machines,SVM)—原文已删除

支持向量机(SVM)为分类问题寻找最优解。传统上,它们只能对线性可分的数据进行分类:比如说,找出哪些是加菲猫的照片,哪些是史努比的照片,而其他结果都是不可能的。

在训练过程中,SVMs可以被认为是:在一个图(2D)上绘制所有数据(Garfields和Snoopys),计算出如何在数据点之间绘制一条线,这条线将数据分离,以使所有的Snoopys在一边,Garfields在另一边。移动这条线得到一条最优线,这时两边的数据点和这条线之间的边距都达到最大化。对新数据进行分类的方法是在这个图上画一个点,然后看一下点在这条线的哪一边(Snoopys的那一边或Garfields的那一边)。

使用核函数,它们可以对n维数据进行分类。在3D图中绘制点时,它能够区分Snoopy、Garfield和Simon’s cat,也可以用更高的维度来区分更多的卡通人物。支持向量机并不总是被认为是神经网络。

Cortes, Corinna, and Vladimir Vapnik. “Support-vector networks.” Machine learning 20.3 (1995): 273-297.

http://image.diku.dk/imagecanon/material/cortes_vapnik95.pdf
https://github.com/ajtulloch/svmpy

神经网络学习(2):FFNN,P,RNN,LSTM,GRU……相关推荐

  1. 神经网络与深度学习作业10:(LSTM | GRU)

    神经网络与深度学习作业10:(LSTM | GRU) 习题6-3当使用公式(6.50)作为循环神经网络的状态更新公式时,分析其可能存在梯度爆炸的原因并给出解决方法. 习题6-4推导LSTM 网络中参数 ...

  2. RNN, LSTM, GRU, SRU, Multi-Dimensional LSTM, Grid LSTM, Graph LSTM系列解读

    RNN/Stacked RNN rnn一般根据输入和输出的数目分为5种 一对一 最简单的rnn 一对多 Image Captioning(image -> sequence of words) ...

  3. RNN LSTM GRU 代码实战 ---- 简单的文本生成任务

    RNN LSTM GRU 代码实战 ---- 简单的文本生成任务 import torch if torch.cuda.is_available():# Tell PyTorch to use the ...

  4. 神经网络学习小记录37——Keras实现GRU与GRU参数量详解

    神经网络学习小记录37--Keras实现GRU与GRU参数量详解 学习前言 什么是GRU 1.GRU单元的输入与输出 2.GRU的门结构 3.GRU的参数量计算 a.更新门 b.重置门 c.全部参数量 ...

  5. ​​​​​​​DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比、TF代码定义之详细攻略

    DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比.TF代码定义之详细攻略 目录 RNN.LSTM.GRU算法对比 1.RNN/LSTM/GRU对比 2.RNN/LSTM/GRU动图 ...

  6. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略

    DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...

  7. RNN,LSTM,GRU计算方式及优缺点

    本文主要参考李宏毅老师的视频介绍RNN相关知识,主要包括两个部分: 分别介绍Navie RNN,LSTM,GRU的结构 对比这三者的优缺点 1.RNN,LSTM,GRU结构及计算方式 1.1 Navi ...

  8. 图解 RNN, LSTM, GRU

    参考: Illustrated Guide to Recurrent Neural Networks Illustrated Guide to LSTM's and GRU's: A step by ...

  9. Rnn Lstm Gru Sru学习小结

    1.Rnn Rnn的详细介绍可以参考 深度学习之RNN(循环神经网络) 零基础入门深度学习(5) - 循环神经网络 详解循环神经网络(Recurrent Neural Network) 基本原理和算法 ...

  10. 深度学习(四)——RNN, LSTM, 神经元激活函数进阶

    https://antkillerfarm.github.io/ 词向量 word2vec/doc2vec的缺点(续) 2.虽然我们一般使用word2vec/doc2vec来比较文本相似度,但是从原理 ...

最新文章

  1. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
  2. Co-occurrence网络图在R中的实现
  3. 以 Kubernetes 为代表的容器技术,已成为云计算的新界面
  4. Zookeeper 终端命令
  5. 广州市城市智能交通大数据体系研究与实践
  6. 懒人看执行计划神器 for Oracle
  7. pc网站支付html,jsp 支付宝pc网页支付
  8. Java编程:排序算法——希尔排序
  9. PyTorch1.4安装-进入官网安装时最靠谱的
  10. 最大流最小割经典例题_hiho 第116周,最大流最小割定理,求最小割集S,T
  11. 最新服务器处理器天梯,2019 最新 至强 Xeon E5 服务器系列 CPU天梯图
  12. 市场调研-全球与中国汽车零部件涂层市场现状及未来发展趋势
  13. 第 7 章 —— 代理模式
  14. win10变win7bios如何设置?
  15. 错宗复杂的进程标识PID
  16. Word2016 显示批注
  17. CPM、CPC、CPA、CPS、CPL、CPR 是什么意思 -解析互联网广告术语
  18. QMdiSubWindow
  19. [MRCTF2020]keyboard
  20. 如何处理文字中的emoji?

热门文章

  1. Android常用反编译工具
  2. jsoup+蚂蚁代理/阿布云代理
  3. 计算机思维导论在线测试题库,MOOC计算机思维导论题库
  4. uni-app 做微信一键授权登录
  5. Pdf转成一张png或jpg图片
  6. 《Java并发编程实战》读书笔记
  7. 共享住宿如何做到“无人值守”?前ofo联合创始人续梦麦极智能!
  8. 使用缓存时对于加锁的思考(* * * * *)
  9. DMIPS DMIPS/MHZ
  10. MISCONF Redis is configured to save RDB snapshots~