【深度学习】一文带你了解主流神经网络

概述

这段时间偶然看到一个名为THE ASIMOV INSTITUTE组织中的一位名叫FJODOR VAN VEEN研究员写的两篇文章,介绍不同 神经元 按不同连接方式组成不同 神经网络 结构的文章,感觉对入门机器学习的筒子应该有所帮助,这里特来搬运一下。

由于原文是英文,所以这里按笔者的理解将其进行了翻译,并且某些地方加入了自己的见解,希望对大家有所帮助。如果某些地方翻译或者理解有误,还请大家指正。

翻译时对于不太准确的名词,参考了文章超级干货 | 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了,特别感谢。

神经元和层

原文:FJODOR VAN VEEN. NEURAL NETWORK ZOO PREQUEL: CELLS AND LAYERS [EB/OL]. http://www.asimovinstitute.org/neural-network-zoo-prequel-cells-layers/

神经元

Neural Network Cells

基本神经元

在这里插入图片描述
基本神经元(basic neural network cells),也可以称之为前馈神经元(feed forward cells),在前馈神经网络结构中出现。神经元之间通过权重相连接,比如全连接层的神经元就和其之前一层的所有神经元相连接。连接的权重一开始是随机的,权重可正可负、可大可小,甚至有时候为0(权重0实质上表示这两个神经元之间无连接)。前馈神经元的输入等于前一层所有与它连接的神经元的输出乘以对应的权重再求和,然后再加上一个偏差值(bias),这个输入经过激活函数(activation function)之后就形成了这个神经元的输出。

卷积和解卷积神经元

卷积神经元(convolutional cells)和基本的前馈神经元类似,只不过它们通常只和其前一层中的部分神经元连接。卷积神经元通常是和特定(邻近)距离的神经元连接,而不是随机连接,所以它们常用于保存空间信息,对带有大量局部信息的数据特别适用,比如图像和声波(但大部分时候是图像)。解卷积神经元刚好相反,它们和下一层局部连接(locally connected),常用于解码空间信息。

池化和插值神经元

池化神经元和插值神经元(pooling and interpolating cells)常和卷积神经元结合使用,它们更像是一种运算操作,而不是真正的神经元。池化神经元接收所有连接的输入并且决定哪些输入可以通过,哪些不可以。在图像中,这就可以理解为对图像进行缩放,即保留某些像素而忽略另一些。插值神经元则和池化神经元相反,它们接收输入信息并将其映射到更大的信息空间,即增添了新的信息。当然,新的信息是通过特定的方式获得的。

均值和标准差神经元

作为概率神经元,均值和标准差神经元(mean and standard cells)经常成对出现,被用于表示概率分布。比如,一个用于表示图像的概率神经元可以包含某个特定像素中有多少红色信息,假设均值为0.5,标准差为0.2。当从这些概率神经元中采样时,将这些值输入一个高斯分布随机数生成器(Gaussian random number generator),这样很有可能就会生成04~0.6之间的数值,离0.5越远生成的概率越小。概率神经元通常和前一层或者下一层之间全连接,且没有偏差(bias)。

循环神经元

recurrent cell
循环神经元(recurrent cells)不仅是层与层之间的连接,而且也会在时间轴上进行连接。如何理解呢?即每个循环神经元都会存储它之前的值。循环神经元和普通神经元的更新方式类似,但是它们拥有更多的连接权重:与之前值的连接以及和同一层中其它神经元的连接(大多数时候)。

当前值和先前值之间权重的工作方式有点类似于易失性存储(如RAM),拥有一个“状态(state)”,如果不更新这个“状态”就会消失。

由于先前的值是通过激活函数得到的,而在每一次的更新时,都会把这个值和其它权重一起输入到激活函数,因此,信息会不断地流失。实际上,信息的保存率非常的低,以至于仅仅四次或者五次迭代更新过后,几乎之前所有的信息都会流失掉。

长短时记忆神经元

在这里插入图片描述
长短时记忆神经元(long and short term memory cells)用于克服循环神经元中的信息流失问题,它是基于计算机中内存单元的工作方式设计的。与循环神经元不同的是,长短时记忆神经元存储四个状态:输出的当前值和先前值、“记忆单元(memeory cell)”的当前和先前状态。

长短时记忆神经元有三个门:输入门、输出门和遗忘门,以及一个普通的输入。这就意味着前一层和长短时记忆神经元的连接必须设置四个权重。通过将输入信息和门中存储的一个0~1之间的数相乘,可以决定让输入信息全部通过、部分通过、或者均不通过。

  • 输入门决定来自前一层的输入有多少可以被长短时记忆神经元接收;
  • 输出门决定有多少输出值能进入网络的剩余部分;
  • 遗忘门并不和输出单元的先前值连接,而是和先前记忆的值相连接,决定了保留多少记忆单元最新的状态信息。

因为没有和输出相连接,以及在这个连接循环中没有激活函数,因此流失的信息很少。

门控循环单元

gated recurrent cells
门控循环单元(gated recurrent units or cells)是LSTM神经元的一种变体,同样使用“门(gate)”来防止信息的流失。但只有两种门:更新门和重置门,虽然表达能力稍弱,但是运算速度却加快了。门控循环单元将输入门和遗忘门整合形成更新门,其思想在于如果想要获得大量新信息,那么或许可以遗忘一些旧信息。

层(layers)可以定义为:层是一组神经元的集合,这个集合中的神经元不和批次连接,而之和另外一个集合中的神经元相连接。

全连接层

要形成神经网络的最简单连接方式就是将全连接(fully or completely connected),即一个神经元和它上一层、下一层的所有神经元相连接。当神经元数量增加时,连接的数量也呈指数级增长。比如下文的霍普菲尔网络(Hopfield networks)和玻尔兹曼机(Boltzmann machines)。

卷积层

卷积层(convolutional connected layers)相比于全连接层有更多的约束 :卷积层的每个神经元只和相邻的神经元层相连接。卷积连接有利于保留空间信息,而且对于数据降维非常有用。

随机连接

主要包含两个内容:

  • 允许部分神经元进行全连接;
  • 神经元层之间只有部分连接。

这种方式有助于降低全连接层遇到的性能问题,拥有更多神经元且更加稀疏的神经元层在某些情况下运行效果更好。

时延连接

时延连接(time delayed connections)是指相连的神经元(通常是在同一个神经元层,甚至于一个神经元自己跟自己连接),它们不从前面的神经元层获取信息,而是从神经元层先前的状态获取信息。这使得暂时(时间上或者序列上)联系在一起的信息可以被存储起来。这些形式的连接经常被手工重新进行设置,从而可以清除神经网络的状态。和常规连接的主要区别是,这种连接会持续不断地改变,即便这个神经网络当前没有处于训练状态。

示例

下图给出了上述部分连接方式的示例网络:
在这里插入图片描述

神经网络

原文:FJODOR VAN VEEN. NEURAL NETWORK ZOO PREQUEL: CELLS AND LAYERS [EB/OL]. http://www.asimovinstitute.org/neural-network-zoo/

一览

在这里插入图片描述

前馈神经网络

在这里插入图片描述
前馈神经网络或者称之为感知机(feed forward neural networks and perceptrons, FFNN and P)1非常直观,信息从前到后传播,对应输入和输出。

径向基函数网络

在这里插入图片描述
径向基函数网络(radial basis function networks, RBF)2 本质上就是FFNN,结构没有任何改变,只不过使用“径向基函数(radial basis functions)”作为激活函数。

马尔科夫链

在这里插入图片描述
离散时间马尔科夫链(discrete time Markov chain, DTMC)可以这样理解:当我处于一个状态,去往相邻状态的可能性有多大。马尔科夫链是没有记忆性的,结束时的状态仅依赖于前一个状态,奠定了玻尔兹曼机和霍普菲尔网络的基础。马尔科夫链并不总是被当做神经网络。3

霍普菲尔网络

在这里插入图片描述
霍普菲尔网络(a hopfield network, HN)4中,神经元之间全连接:

  • 训练前所有节点都是输入层节点
  • 训练时所有节点都是隐藏层节点
  • 训练后所有节点都是输出节层点

网络的训练时通过对神经元设置值到期望模式(pattern),然后计算相应的权重。之后,权重就不再改变。网络的更新可以一个节点一个节点进行,也可以所以节点同步更新。

玻尔兹曼机

在这里插入图片描述
玻尔兹曼机(boltzmann machines, BM)5和HNs很相似,不同的地方在于BMs中区分输入节点和隐藏节点。当全网更新完成后,输入节点转换为输出节点。刚开始权重是随机的,通过反向传播(back-propagation)进行学习,或者常用对比散度算法(contrastive divergence)(马尔科夫链可用于计算两个信息增益之间的梯度)。

受限玻尔兹曼机

在这里插入图片描述
受限玻尔兹曼机(restricted boltzmann machines, RBM)6与BMs极为相似,故而与HNs也相似。它们之间最大的区别在于:RBMs更具有实用价值,因为受到更多的限制。RBMs只在不同的神经元群之间建立连接,因此任何神经元都不会和其他输入神经元相连,任何隐藏神经元也不会和其他隐藏神经元相连。

自编码机

在这里插入图片描述
自编码机(autoencoders, AE)7在某种程度上和FFNNs相似,因为AEs更像是FFNNs的另一种用法,而不是一种本质上不用的网络架构。AEs背后的想法是自动编码信息(压缩而不是编码成密文)。它的整个网络结构类似一个沙漏,如上图所示,隐藏层神经元的个数少于输入层和输出层。

自编码机总是对称的,以中间层(一层还是两层取决于神经网络层数的奇偶)为轴。最小的层(一层或者多层)总是在中间,在这里信息压缩程度最大(整个网络的关隘口)。在中间层之前为编码部分,中间层之后为解码部分,中间层则是编码部分。

自编码机可用反向传播算法进行训练,给定输入,将误差设为输入和输出之差。自编码机的权重也是对称的,因此编码部分权重与解码部分权重完全一样。

稀疏自编码机

在这里插入图片描述
稀疏自编码机(sparse autoencoders, SAE)8某种程度上和自编码机相反。稀疏自编码机不是用更小的空间表征大量信息,而是把原本的信息编码到更大的空间内。因此,中间层不是收敛,而是扩张,然后再还原到输入大小。它可以用于提取数据集内的小特征。

如果用训练自编码机的方式来训练稀疏自编码机,几乎所有的情况,都是得到毫无用处的恒等网络(输入=输出,没有任何形式的变换或分解)。为避免这种情况,需要在反馈输入中加上稀疏驱动数据。稀疏驱动的形式可以是阈值过滤,这样就只有特定的误差才会反向传播用于训练,而其它的误差则被忽略为0,不会用于反向传播。

变分自编码机

在这里插入图片描述
变分自编码机(variational autoencoders, VAE)9和AEs结构类似,不同的是,VAEs学习输入的样本的近似概率分布。它们依赖于贝叶斯理论来进行概率推理和概率独立判断,有时候可能很直观,但都依赖于复杂的数学理论。

其基本思想是:将影响纳入考虑。如果一件事情在一个地方发生,与此同时另一件事情在另一个地方发生,它们之间并不一定相互关联。如果并不相关,则误差反向传播的时候应该考虑进去。这是一个有用的方法,因为神经网络是一个非常大的图表,如果你能在某些节点排除一些来自于其它节点的影响,随着网络深度地增加,这将会非常有用。

去噪自编码机

在这里插入图片描述
去噪自编码机(denoising autoencoders, DAE)10的不仅仅接收输入数据,而是接收带有噪声的输入数据(比如为一张图片添加噪声)。DAEs误差的计算和自动编码机一样,降噪自动编码机的输出也是和原始的输入数据进行对比。这种形式的训练旨在鼓励降噪自编码机不要去学习细节,而是一些更加宏观的特征,因为细微特征受到噪音的影响,学习细微特征得到的模型最终表现出来的性能总是很差。

深度信念网络

在这里插入图片描述
深度信念网络(deep belief networks, DBN)11之所以取这个名字,是由于它本身几乎是由多个受限玻尔兹曼机或者变分自编码机堆砌而成。

实践表明一层一层地对这种类型的神经网络进行训练非常有效,这样每一个自编码机或者受限玻尔兹曼机只需要学习如何编码前一神经元层的输出。这种训练技术也被称为贪婪训练,这里贪婪的意思是通过不断地获取局部最优解,最终得到一个相当不错解(但可能不是全局最优的)。可以通过对比散度算法或者反向传播算法进行训练,它会慢慢学着以一种概率模型来表征数据,就好像常规的自编码机或者受限玻尔兹曼机。一旦经过非监督式学习方式,训练或者收敛到了一个稳定的状态,那么这个模型就可以用来产生新的数据。如果以对比散度算法进行训练,那么它甚至可以用于区分现有的数据,因为那些神经元已经被引导来获取数据的不同特定。

卷积神经网络

在这里插入图片描述
卷积神经网络(Convolutional neural networks, CNN)或者深度卷积神经网络(deep convolutional neural networks, DCNN)12跟其它类型的神经网络大有不同。它们主要用于处理图像数据,但可用于其它形式数据的处理,如语音数据。对于卷积神经网络来说,一个典型的应用就是给它输入一个图像,而后它会给出一个分类结果。也就是说,如果你给它一张猫的图像,它就输出“猫”;如果你给一张狗的图像,它就输出“狗”。

卷积神经网络是从一个数据扫描层开始,这种形式的处理并没有尝试在一开始就解析整个训练数据。比如:对于一个大小为200X200像素的图像,你不会想构建一个40000个节点的神经元层。而是,构建一个20X20像素的输入扫描层,然后,把原始图像第一部分的20X20像素图像(通常是从图像的左上方开始)输入到这个扫描层。当这部分图像(可能是用于进行卷积神经网络的训练)处理完,你会接着处理下一部分的20X20像素图像:逐渐(通常情况下是移动一个像素,但是,移动的步长是可以设置的)移动扫描层,来处理原始数据。

你不是一次性移动扫描层20个像素(或其它任何扫描层大小的尺度),也不是把原始图像切分成20X20像素的图像块,而是用扫描层在原始图像上滑过。这个输入数据(20X20像素的图像块)紧接着被输入到卷积层,而非常规的神经细胞层——卷积层的节点不是全连接。每一个输入节点只会和最近的那个神经元节点连接(至于多近要取决于具体的实现,但通常不会超过几个)。

这些卷积层会随着深度的增加而逐渐变小:大多数情况下,会按照输入层数量的某个因子缩小(比如:20个神经元的卷积层,后面是10个神经元的卷积层,再后面就是5个神经元的卷积层)。2的n次方(32, 16, 8, 4, 2, 1)也是一个非常常用的因子,因为它们在定义上可以简洁且完整地除尽。除了卷积层,池化层(pooling layers)也非常重要。

池化是一种过滤掉细节的方式:一种常用的池化方式是最大池化,比如用2X2的像素,然后取四个像素中值最大的那个传递。为了让卷积神经网络处理语音数据,需要把语音数据切分,一段一段输入。在实际应用中,通常会在卷积神经网络后面加一个前馈神经网络,以进一步处理数据,从而对数据进行更高水平的非线性抽象。

解卷积网络

在这里插入图片描述
解卷积网络(Deconvolutional networks, DN)13,也称之为逆图形网络(inverse graphics networks, IGN),是一个逆向的卷积神经网络。

想象一下,给一个神经网络输入一个“猫”的词,就可以生成一个像猫一样的图像,通过比对它和真实的猫的图片来进行训练。跟常规CNN一样,DN也可以结合FFNN使用,但没必要为这个新的缩写重新做图解释。它们可被称为深度解卷积网络,但把FFNN放到DNN前面和后面是不同的,那是两种架构(也就需要两个名字),对于是否需要两个不同的名字你们可能会有争论。需要注意的是,绝大多数应用都不会把文本数据直接输入到神经网络,而是用二元输入向量。比如<0,1>代表猫,<1,0>代表狗,<1,1>代表猫和狗。

CNN的池化层往往也是被对应的逆向操作替换了,主要是插值和外推(基于一个基本的假设:如果一个池化层使用了最大池化,你可以在逆操作的时候生成一些相对于最大值更小的数据)。

深度卷积逆向图网络

在这里插入图片描述
深度卷积逆向图网络(Deep convolutional inverse graphics networks,DCIGN)14,实际上是VAE,但分别用CNN、DNN来作编码和解码的部分。

这些网络尝试在编码过程中对“特征“进行概率建模,这样一来,你只要用猫和狗的独照,就能让它们生成一张猫和狗的合照。同理,你可以输入一张猫的照片,如果猫旁边有一只恼人的邻家狗,你可以让它们把狗去掉。很多演示表明,这种类型的网络能学会基于图像的复杂变换,比如灯光强弱的变化、3D物体的旋转。一般也是用反向传播算法来训练此类网络。

生成对抗网络

在这里插入图片描述
生成对抗网络(generative adversarial networks, GAN)15是一种不同的网络结构,由两个网络共同工作。GAN可由任意两种网络组成(但通常是FF和CNN),其中一个用于生成内容,另一个则用于鉴别生成的内容。

鉴别网络(discriminating network)同时接收训练数据和生成网络(generative network)生成的数据。鉴别网络的准确率,被用作生成网络误差的一部分。这就形成了一种竞争:鉴别网络越来越擅长于区分真实的数据和生成数据,而生成网络也越来越善于生成难以预测的数据。这种方式非常有效,部分是因为:即便相当复杂的类噪音模式最终都是可预测的,但跟输入数据有着极为相似特征的生成数据,则很难区分。

训练GAN极具挑战性,因为你不仅要训练两个神经网络(其中的任何一个都会出现它自己的问题),同时还要平衡两者的运行机制。如果预测或生成相比对方表现得过好,这个GAN就不会收敛,因为它会内部发散。

循环神经网络

在这里插入图片描述
循环神经网络(Recurrent neural networks, RNN)16是具有时间联结的前馈神经网络:它们有了状态,通道与通道之间有了时间上的联系。神经元的输入信息,不仅包括前一神经细胞层的输出,还包括它自身在先前通道的状态。

这就意味着:你的输入顺序将会影响神经网络的训练结果:相比先输入“曲奇饼”再输入“牛奶”,先输入“牛奶”再输入“曲奇饼”后,或许会产生不同的结果。RNN存在一大问题:梯度消失(或梯度爆炸,这取决于所用的激活函数),信息会随时间迅速消失,正如FFNN会随着深度的增加而失去信息一样。

原则上,RNN可以在很多领域使用,因为大部分数据在形式上不存在时间线的变化,(不像语音或视频),它们能以某种序列的形式呈现出来。一张图片或一段文字可以一个像素或者一个文字地进行输入,因此,与时间相关的权重描述了该序列前一步发生了什么,而不是多少秒之前发生了什么。一般来说,循环神经网络是推测或补全信息很好的选择,比如自动补全。

长短时记忆网络

在这里插入图片描述
长短时记忆网络(Long / short term memory, LSTM)17试图通过引入门结构与明确定义的记忆单元来解决梯度消失/爆炸的问题。每个神经元都有一个记忆单元和三个门:输入门、输出门、遗忘门。

输入门决定了有多少前一神经细胞层的信息可留在当前记忆单元,输出层在另一端决定下一神经细胞层能从当前神经元获取多少信息。遗忘门乍看很奇怪,但有时候遗忘部分信息是很有用的:比如说它在学习一本书,并开始学一个新的章节,那遗忘前面章节的部分角色就很有必要了。

实践证明,LSTM可用来学习复杂的序列,比如像莎士比亚一样写作,或创作全新的音乐。值得注意的是,每一个门都对前一神经元的记忆单元赋有一个权重,因此会需要更多的计算资源。

门控循环单元

在这里插入图片描述
门控循环单元(Gated recurrent units, GRU)18是LSTM的一种轻量级变体。它们少了一个门,同时连接方式也稍有不同:它们采用了一个更新门(update gate),而非LSTM所用的输入门、输出门、遗忘门。

更新门决定了保留多少上一个状态的信息,还决定了收取多少来自前一神经细胞层的信息。重置门(reset gate)跟LSTM遗忘门的功能很相似,但它存在的位置却稍有不同。它们总是输出完整的状态,没有输出门。多数情况下,它们跟LSTM类似,但最大的不同是:GRU速度更快、运行更容易(但函数表达力稍弱)。

在实践中,这里的优势和劣势会相互抵消:当你你需要更大的网络来获取函数表达力时,这样反过来,性能优势就被抵消了。在不需要额外的函数表达力时,GRU的综合性能要好于LSTM。

神经图灵机

在这里插入图片描述
神经图灵机(Neural Turing machines, NTM)19可以看做对LSTM的抽象,其试图将神经网络去黑箱化,以窥探内部发生的细节。神经图灵机将记忆单元分离出来,试图结合常规数字信息存储的高效性、永久性与神经网络的效率及函数表达能力。它的想法是设计一个可作内容寻址的记忆库,并让神经网络对其进行读写操作。NTM名字中的“图灵(Turing)”是表明,它是图灵完备(Turing complete)的,即具备基于它所读取的内容来读取、写入、修改状态的能力,也就是能表达一个通用图灵机所能表达的一切。

双向网络

双向循环神经网络(BiRNN:Bidirectional recurrent neural networks)20、双向长短期记忆网络(BiLSTM:bidirectional long / short term memory networks )和双向门控循环单元(BiGRU:bidirectional gated recurrent units)在通过图呈现出来,因为它们看起来与其对应的单向神经网络结构一样。

所不同的是,这些网络不仅与过去的状态有连接,而且与未来的状态也有连接。比如,通过一个一个地输入字母,训练单向的LSTM预测“鱼(fish)”(在时间轴上的循环连接记住了过去的状态值)。在BiLSTM的反馈通路输入序列中的下一个字母,这使得它可以了解未来的信息是什么。这种形式的训练使得该网络可以填充信息之间的空白,而不是预测信息。因此,它在处理图像时不是扩展图像的边界,而是填补一张图片中的缺失。

深度残差网络

在这里插入图片描述
深度残差网络(Deep residual networks, DRN)21是非常深的FFNN网络,它有一种特殊的连接,可以把信息从某一神经细胞层传至后面几层(通常是2到5层)。
DRN网络不同于其他网络学习输入数据与输出数据之间的映射关系,而是致力于学习输入数据与输出数据+输入数据之间的映射函数。本质上,它在结果中增加一个恒等函数,并跟前面的输入一起作为后一层的新输入。结果表明,当层数超过150后,这一网络将非常擅于学习模式,这比常规的2到5层要多得多。然而,有证据表明这些网络本质上只是没有时间结构的RNN,它们总是与没有门结构的LSTM相对比。

回声状态网络

在这里插入图片描述
回声状态网络(Echo state networks, ESN)22是一种不同类型的循环网络,其不同之处在于:神经元之间的连接是随机的(没有整齐划一的神经细胞层),其训练过程也有所不同。不同于输入数据后反向传播误差,ESN先输入数据、前馈、而后更新神经元状态,最后来观察结果。它的输入层和输出层在这里扮演的角色不太常规,输入层用来主导网络,输出层作为激活模式的观测器随时间展开。在训练过程中,只有观测和隐藏单元之间连接会被改变。

极限学习机

在这里插入图片描述极限学习机(Extreme learning machines, ELM)23实质上就是拥有随机连接的FFNN。它们与LSM(液态机,见下文)、ESN极为相似,除了循环特征和脉冲性质,它们还不使用反向传播。相反,它们先给权重设定随机值,然后根据最小二乘法拟合来一次性训练权重(在所有函数中误差最小)。这使ELM的函数拟合能力较弱,但其运行速度比反向传播快多了。

液态机

在这里插入图片描述
液态机(Liquid state machines, LSM)24跟ESN相近,区别在于,LSM是一种脉冲神经网络(spiking neural networks),用阈值激活函数(threshold functions)取代了sigmoid激活函数,每个神经元同时也是具有累加性质的记忆单元。因此,当神经元状态更新时,其值不是相邻神经元的累加值,而是它自身状态值的累加。一旦累加到阈值,它就释放能量至其它神经元。这就形成了一种类似于脉冲的模式:神经元不会进行任何操作,直至到达阈值的那一刻。

支持向量机

在这里插入图片描述
支持向量机(Support vector machines, SVM)25可为分类问题找到最优分案。传统意义来说上,它们只能处理线性可分的数据;比如找出哪张图片是加菲猫、哪张是史努比,此外就无法做其它输出了。

训练过程中,SVM可以理解为:先在平面图表上标绘所有数据(加菲猫、史努比),然后找出到那条能够最好区分这两类数据点的线。这条线能把数据分为两部分,线的这边全是史努比,线的那边全是加菲猫。而后移动并优化该直线,令两边数据点到直线的距离最大化。分类新的数据,则将该数据点画在这个图表上,然后察看这个数据点在分隔线的哪一边(史努比一侧,还是加菲猫一侧)。

通过使用核方法(kernel),SVM便可用来分类n维空间的数据。这就引出了在3维空间中标绘数据点,从而让SVM可以区分史努比、加菲猫与西蒙,甚至在更高的维度对更多卡通人物进行分类。SVM并不总被视为神经网络。

自组织映射

在这里插入图片描述
自组织映射(self organising (feature) map, SOM, SOFM)或者称之为Kohonen 网络(Kohonen networks),KN利用竞争学习来对数据进行分类,不需要监督。先给神经网络一个输入,而后它会评估哪个神经元最匹配该输入。然后这个神经元会继续调整以更好地匹配输入数据,同时带动相邻的神经元。相邻神经元移动的距离,取决于它们与最佳匹配单元之间的距离。KN有时也不被认为是神经网络。26

参考文献

点击这里下载整理好的参考文献集合。


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

  2. 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. ↩︎

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

  4. 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. ↩︎

  5. 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. ↩︎

  6. 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. ↩︎

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

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

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

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

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

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

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

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

  15. Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in Neural Information Processing Systems. 2014. ↩︎

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

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

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

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

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

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

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

  23. Cambria, Erik, et al. “Extreme learning machines [trends & controversies].” IEEE Intelligent Systems 28.6 (2013): 30-59. ↩︎

  24. 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. ↩︎

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

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

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值