人工神经网络

1. 人工神经网络
1.1 人类的大脑
1.3 神经细胞
1.5 大脑特点
1.7 人工神经网络
1.9 人工神经元
1.11 激活函数
1.13 M-P模型
1.15 网络拓扑
1.17 常见网络结构
1.21 神经网络用途举例

2. 神经网络几种模型
2.1 感知器 Perceptron 或 M-P模型
2.2 NN 神经网络
2.3 FNN 前馈神经网络
2.5 BPNN BP神经网络
2.7 DNN 深度神经网络
2.9 CNN 卷积神经网络 – 图像分类
2.11 RNN 循环神经网络 – 语言处理
2.13 LSTM 长短期记忆网络

1. 人工神经网络

人工神经网络 ANN ( Artificial neural network)也简称神经网络(NN) ,来源于人类大脑。

1.1 人类的大脑
人类大脑是一块灰色的像奶冻一样的物质。
而皮层(Cortex),是大脑的外层象大核桃一样起皱的物质,由于皮层象核桃一样起皱,就可以把很大的表面区域塞进到较小的空间里,比光滑皮层能容纳更多的神经。
这个大脑皮层分两层:灰色的外层和白色的内层。
灰色外层只有几毫米厚,其中紧密地压缩着几十亿个被称作神经元(neuron)的小细胞。
白色层位于灰质皮层的下面,没有神经细胞,由神经细胞相互之间的无数连接线组成。
灰质如电路板的元件,白质如电路板的走线。

1.3 神经细胞
神经细胞体是一颗星状球形物,里面有一个细胞核(nucleus)。
神经细胞结构,由一个细胞体(soma)、一些树突(dendrite) 、一根很长的轴突组成。如图:树突接收信号、轴突和突触发送信号。

树突由细胞体向各个方向长出,本身可有分支,是用来接收信号。这是接收的。
神经细胞都长着一根像电线一样的称为轴突(axon)的东西,用来将信号传递给其他的神经细胞。
轴突有许多分支,轴突通过分支的末梢(terminal)和其他神经细胞的树突接触,就形成所谓的突触(Synapse), 图里没画出,这个是发送的。神经细胞通过轴突和突触把产生的信号送到其他的神经细胞的树突,每个神经细胞通过它的树突能和大约10,000个其他的神经细胞相连。

神经细胞利用电化学过程交换信号。输入信号来自另一些神经细胞。这些另外的神经细胞的轴突末梢(也就是终端)和本神经细胞的树突相遇形成突触(synapse)(图中未画),信号就从树突上的突触进入本细胞。
发射信号的强度不变,变化的仅仅是频率。每一个神经细胞仅仅工作于大约100Hz的频率。神经细胞的状态,只有兴奋(fire)和不兴奋(即抑制)两种。神经细胞利用一种方法,把所有从树突突触上进来的信号进行相加,如果全部信号的总和超过某个阀值,就会激发神经细胞进入兴奋(fire)状态,这时就会有一个电信号通过轴突发送出去给其他神经细胞。如果信号总和没有达到阀值,神经细胞就不会兴奋起来。

1.5 大脑特点
大脑特点主要是无监督的学习和损伤的冗余性。
* 大脑能够自己进行学习,而不需要导师的监督教导。如果一个神经细胞在一段时间内受到高频率的刺激,则它和输入信号的神经细胞之间的连接强度就会按某种过程改变,使得该神经细胞下一次受到激励时更容易兴奋。“当神经细胞A的一个轴突重复或持久的激励另一个神经细胞B后,则其中的一个或同时两个神经细胞就会发生一种生长过程或新陈代谢式的变化,使得激励B细胞之一的A细胞的效能增加”。与此相反,如果一个神经细胞在一段时间内不受到激励,那么它的连接的有效性就会慢慢地衰减。这一现象称为可塑性(plasticity)。
*大脑即使有很大一部分受到了损伤,它仍然能够执行复杂的工作。在大脑中,知识并不是保存在一个局部地方。这是冗余性。

大脑擅长的事情之一就是模式识别,并能根据已熟悉信息进行归纳推广(generlize)。

1.7 人工神经网络
计算机可以模拟大脑的神经网络。由许多叫做人工神经细胞的细小结构模块组成,就像真实神经细胞的一个简化版,但采用了电子方式来模拟实现而已。
至于一个人工神经网络中需要使用多少个数的人工神经细胞,差别可以非常大。有的神经网络只需要使用10个以内的人工神经细胞,而有的神经网络可能需要使用几千个人工神经细胞。

一个人工神经细胞如图。

左边几个灰底圆中所标字母w代表浮点数,称为权重(weight),每一个input(输入)都与一个权重w相联系,这些权重将决定神经网络的整体活跃性。权重可正可负,故能对与它关联的输入施加不同的影响,如果权重为正,就会有激发(excitory)作用,权重为负,则会有抑制(inhibitory)作用。
大圆的核是一个函数,叫激励函数(activation function),它把所有这些新的、经过权重调整后的输入全部加起来,形成单个的激励值(activation value)。
神经细胞的输出即函数的输出,也即激励值,是一浮点数,且同样可正可负。激励函数的一种最简单的类型:如果激励值超过某个阀值,就会产生一个值为1的信号输出;如果激励值小于阀值,则输出一个0。
数学方式表达:一个人工神经细胞可以有任意n个输入, x1, x2, x3, x4, x5, …, xn,以及n 个权重 w1, w2, w3, w4, w5 …, wn, 激励值就是所有输入与它们对应权重的之乘积之总和a = w1x1 + w2x2 + w3x3 + w4x4 + w5x5 +…+ wnxn。 或者把神经网络的各个输入以及为各个神经细胞的权重设置都可以看作一个n维的向量。

1.9 人工神经元
例如前述加权和模型。 net=XW。
每个神经元都是一个多输入单输出的信息处理单元;

1.11 激活函数
激活函数 ( Activation Function )或转移函数 ( Transfer Function )的
典型的激活函数有线性函数、非线性函数、阶跃函数、罗杰斯特s函数等。o=f(net)
s函数不仅是非线性处处可导,而且对信号具有良好的增益控制,防止网络饱和。

1.13 M-P模型
基本神经元加上激活函数构成这个神经元,即MP模型,作为最简单的神经网络也被称作感知器((Perceptron),其实是按照生物神经元的结构和工作原理构造出来的一个抽象和简化了的模型。

1.15 网络拓扑
节点代表神经元ANi,加权有向边代表有向连接,权重为连接强度而箭头为信号方向,例如ANi神经元到ANj神经元的权重为Wij的连接:
ANi –Wij–> ANj

1.17 常见网络结构
* 前馈网络
* 单级网
* 多级网
* 循环网

1.21 神经网络用途举例-字符的模式识别-结束本段

模式识别: 把一种输入状态(它所企图识别的模式),映射到,一种输出状态(它曾被训练用来识别的模式)。
例如有一个8×8个格子组成的一板,每一个格子里放了一个小灯,每个小灯都可独立地被打开(格子变亮)或关闭(格子变黑),这样面板就可以用来显示0~9十个数字符号。目前是4。
为此设计一个神经网络,它接收面板的状态作为输入,然后输出一个1或0;输出1代表ANN确认已显示了数字“4”,而输出0表示没有显示“4”。
因此,神经网络需要有64个输入(每一个输入代表面板的一个具体格点) 和由许多神经细胞组成的一个隐藏层,还有仅有一个神经细胞的输出层,隐藏层的所有输出都馈送到它。

执行训练,来认出数字“4”。为此可用这样一种方法来完成:先把神经网的所有权重初始化为任意值。然后给它一系列的输入,在本例中,就是代表面板不同配置的输入。对每一种输入配置,我们检查它的输出是什么,并调整相应的权重。如果我们送给网络的输入模式不是“4”, 则我们知道网络应该输出一个0。因此每个非“4”字符时的网络权重应进行调节,使得它的输出趋向于0。当代表“4”的模式输送给网络时,则应把权重调整到使输出趋向于1。
当然,还可以进一步增加输出,使网络能识别字母表中的全部字符。这本质上就是手写体识别的工作原理。对每个字符,网络都需要接受许多训练,使它认识此文字的各种不同的版本。到最后,网络不但能认识已经训练的笔迹,还显示了它有显著的归纳和推广能力。也就是说,如果所写文字换了一种笔迹,它和训练集中所有字迹都略有不同,网络仍然有很大几率来认出它。

这种类型的训练称作有监督的学习(supervised learnig),用来训练的数据称为训练集(training set)。

2. 几种神经网络模型

广义上来说NN或更美的DNN包含了FNN、CNN、RNN、LSTM这些具体的变种形式,在实际应用中所谓的深度神经网络DNN往往融合了多种已知的结构,包括CNN或者RNN或是LSTM。

2.1 感知器 Perceptron 或 M-P模型
在ANN 神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。 感知器采用有教师信号进行学习,而认知器则采用无教师信号学习的。
1958年,美国心理学家Frank Rosenblatt提出一种具有单层计算单元的神经网络,这种最简单的圣经网络,称为感知器(Perceptron),也就是神经元的M-P模型,其实也就是一个简单的神经元。当时把这种神经网络技术叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。
感知器是第一个用算法来精确定义神经网络,第一个具有自组织自学习能力的数学模型,是日后许多新的神经网络模型的始祖,它的拓扑结构图:

单层感知虽然器简单而且优雅,但它显然不够聪明。它仅仅对线性问题具有分类能力,就是用一条直线可分的图形,线性不可分障碍是其突出的缺陷,约束了这种单层感知器的应用。

多亏多层感知器的凸优化解决了这个问题,多层感知机(multilayer perceptron)出现于上世纪八十年代,多层感知机,顾名思义就是有多个隐含层的感知机,多层感知器的拓扑结构如下图:

随着隐层层数的增多,凸域将可以形成任意的形状,因此就解决了任何复杂的分类问题。Kolmogorov从理论上指出,双隐层感知器就足以解决任何复杂的分类问题。
但问题也来了,隐层的权值怎么训练呢?对于各隐层的节点来说,它们并不存在期望输出,所以也无法通过感知器的学习规则来训练多层感知器。因此,多层感知器心有余而力不足,虽然武功高强,但却无力可施。

幸亏后来出现了B-P算法,用BP算法实现的多层感知器,成为BP神经网络。

2.2 NN 神经网络
神经网络 NN,听起来比感知机Perceptron 高端的多了,其实就是一回事情, 但从此开始就以神经网络的名字流行了。

2.3 FNN 前馈神经网络
在机器学习领域,传统的前馈神经网络(feed-forward neural net,简称FNN)具有出色的表现,取得了许多成功,曾在许多不同的任务上——包括手写数字识别和目标分类上创造了记录。甚至到了今天,FNN在解决分类任务上始终都比其他方法要略胜一筹。
不过,FNN可以实现的功能仍然相当有限。究其原因,人类的大脑有着惊人的计算功能,而分类任务仅仅是其中很小的一个组成部分。我们不仅能够识别个体案例,更能分析输入信息之间的整体逻辑序列。这些信息序列富含有大量的内容,信息彼此间有着复杂的时间关联性,并且信息长度各种各样。例如视觉、开车、演讲还有理解能力,这些都需要我们同时处理高维度的多种输入信息,因为它们时时都在变化,而这是FNN在建模时就极为匮乏的。
前馈网络FNN的结构:

网络的每一层神经细胞的输出都向前馈送(feed)到了它们的下一层(上面的那一层),直到获得整个网络的输出。
图里面网络共有三层,但神经细胞只有两层,输入层这个不是神经细胞。
输入层中的每个输入都馈送到了隐藏层,作为该层每一个神经细胞的输入。
隐藏层的每个神经细胞的输出都连到了它下一层,即输出层的每一个神经细胞。
上图仅仅画了一个隐藏层。作为前馈网络,一般地可以有任意多个隐藏层。事实上,有一些问题甚至根本不需要任何隐藏单元,只要把那些输入直接连结到输出神经细胞就行。

2.5 BPNN 神经网络

M-P模型的感知器实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能。由这些人工神经元构建出来的网络,才能够具有学习、联想、记忆和模式识别的能力。1986年Rumelhart和McCelland提出的误差反向传播法 BP(error BackPropagation)就是一种简单的人工神经网络。
这种BP神经网络是一种按误差逆传播算法训练的多层前馈网络,影响广泛, 仍然是最重要、应用最多的有效算法,可解决非循环多层网的误差训练,虽然缺点也明显训练速度慢、局部解、收敛性,但目前应用的多层前馈网络,学习算法主要是BP法。 BP网络和Hopfield网络是需要教师信号才能进行学习的;而ART网络和 Kohonen网络则无需教师信号就可以学习。所谓教师信号,就是在神经网络学习中由外部提供的模式样本信号。

BP的基本思想是,多层感知器在如何获取隐层的权值的问题上遇到了瓶颈,那么既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?BP算法就是采用这样的思想设计出来的算法,它的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。
* 正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
* 反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
BP算法的信号流向图如下图:

分析一个ANN时,通常都是从它的三要素入手,即拓扑结构、传递函数、学习算法。

2.5.1 拓扑结构
BP网络实际上就是多层感知器,因此它的拓扑结构和多层感知器的拓扑结构相同。由于单隐层(三层)感知器已经能够解决简单的非线性问题,因此应用最为普遍。最简单的三层感知器的拓扑结构如下图:

2.5.2 传递函数
BP网络采用的传递函数是非线性变换函数——Sigmoid函数(又称S函数)。其特点是函数本身及其导数都是连续的,因而在处理上十分方便。
s即f(x)=1/(1+eExp(-x))
2.5.3 学习算法
BP网络的学习算法就是BP算法,又叫 δ 算法。
以三层感知器为例,当网络输出与期望输出不等时,存在输出误差 E ,定义如下:
E=
将以上误差定义式展开至隐层:
E=
进一步展开至输入层:
E=
可以看出,网络输入误差是各层权值ω——jκ 、υ——ij 的函数,因此调整权值可改变误差 E 。
显然,调整权值的原则是使误差不断减小,因此应使权值与误差的梯度下降成正比:
Δω——jκ=

更一般的,对于一般多层感知器,设共有 h 个隐层,按前向顺序各隐层节点数分别记为 m 1 ,m 2 ,…,m h ,各隐层输出分别记为 y 1 ,y 2 ,…,y h ,各层权值矩阵分别记为 W 1 ,W 2 ,…,W h ,W h+1 ,则各层权值调整公式为
可以看出BP学习算法中,各层权值调整公式形式上都是一样的,均由3个因素决定:学习率 η、本层输出的误差信号δ、本层输出的误差信号δ。
BP算法属于δ学习规则类,这类算法常被称为误差的梯度下降算法。δ学习规则可以看成是Widrow-Hoff(LMS)学习规则的一般化(generalize)情况

BP学习训练的具体过程:
训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,训练过程分两部分:
* 训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两部分:
* 训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两部分:

2.5.5 前向传输(Feed-Forward前向反馈)
在训练网络之前,需要随机初始化权重和偏置,对每一个权重取[−1,1] 的一个随机实数,每一个偏置取[0,1] 的一个随机实数,之后就开始进行前向传输。
首先设置输入层的输出值,假设属性的个数为100,那我们就设置输入层的神经单元个数为100,输入层的结点N i 为记录第i 维上的属性值x i 。对输入层的操作就这么简单,之后的每层就要复杂一些了,除输入层外,其他各层的输入值是上一层输入值按权重累加的结果值加上偏置,每个结点的输出值等该结点的输入值作变换
2.5.6 逆向反馈(Backpropagation)
逆向反馈从最后一层即输出层开始,训练神经网络作分类的目的往往是希望最后一层的输出能够描述数据记录的类别,比如对于一个二分类的问题,常常用两个神经单元作为输出层,如果输出层的第一个神经单元的输出值比第二个神经单元大,认为这个数据记录属于第一类,否则属于第二类。

BP网络的设计原则,一般应从网络的层数、每层中的神经元个数和激活函数、初始值以及学习速率等几个方面来进行考虑
BP网络的应用原则,一般用于分类或者逼近问题。如果用于分类,则激活函数要注意。

2.7 DNN 深度神经网络

虽然多层感知机的更多层数让网络更能够刻画现实世界中的复杂情形,但随着神经网络层数的加深优化函数越来越容易陷入局部最优解,利用有限数据训练的深层网络其性能还不如较浅层网络。
2006年Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层,神经网络真正意义上有了深度,由此揭开了深度学习的热潮。
深度并没有固定的定义,在语音识别中4层网络就能够被认为是较深,而在图像识别中20层以上的网络屡见不鲜。现在都出现了前所未有的一百多层。

广义上来说,NN或是更美的DNN确实可以认为包含了CNN、RNN这些具体的变种形式。很多人认为,它们并没有可比性,或是根本没必要放在一起比较。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构。

2.9 CNN 卷积神经网络 – 图像分类

BP网络每一层节点是一个线性的一维排列状态,层与层的网络节点之间是全连接的。CNN卷积神经网络则是一种特殊的深层的神经网络模型。
它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的, 另一方面,同一层中某些神经元之间的连接的权重是共享的(即相同的)。它的非全连接和权值共享的网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。

图左:全连接网络。如果输入的是一幅像素为1K*1K的图像,我们有1000×1000像素的图像,有1百万个隐层神经元,每个隐层神经元都连接图像的每一个像素点,就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。这不仅容易过拟合,而且极容易陷入局部最优。另外,图像中有固有的局部模式(比如轮廓、边界,人的眼睛、鼻子、嘴等)可以利用,显然应该将图像处理中的概念和神经网络技术相结合。由此引入CNN 卷积神经网络。
图右:局部连接网络,每一个节点与上层节点同位置附件10×10的窗口相连接,则1百万个隐层神经元就只有100w乘以100,即10^8个参数。其权值连接个数比原来减少了四个数量级。
根据BP网络信号前向传递过程,可以很容易计算网络节点的输出。例如,对于上图中被标注为红色节点的净输入,就等于所有与红线相连接的上一层神经元节点值与红色线表示的权值之积的累加。这样的计算过程,很多书上称其为卷积。称其为卷积运算,显然是有失偏颇的。但这并不重要,仅仅是一个名词称谓而已。对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。

卷积网络,是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。
这些良好的性能是网络在有监督方式下学会的,网络的结构主要有稀疏连接和权值共享这样两个特点。
例如我们需要识别一幅彩色图像,这幅图像具有四个通道 ARGB(透明度和红绿蓝,对应了四幅相同大小的图像),假设卷积核大小为 3∗3 共使用100个卷积核w1到w100(从直觉来看,每个卷积核应该学习到不同的结构特征)。用w1在ARGB图像上进行卷积操作,可以得到隐含层的第一幅图像;这幅隐含层图像左上角第一个像素是四幅输入图像左上角 3∗3区域内像素的加权求和,以此类推。同理,算上其他卷积核,隐含层对应100幅“图像”。每幅图像对是对原始图像中不同特征的响应。注意到,对于图像,如果没有卷积操作,学习的参数量是灾难级的。

REF: http://www.cnblogs.com/nsnow/p/4562363.html

2.11 RNN 循环神经网络 – 语言处理
全连接的DNN还存在着另一个问题: 无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,就出现了另一种神经网络结构——循环神经网络RNN。

前馈网络FNN是建立在层面之上,其中信息从输入单元向输出单元单向流动,在这些连通模式中并不存在不定向的循环。尽管大脑的神经元确实在层面之间的连接上包含有不定向循环。
在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i−1)层神经元在该时刻的输出外,还包括其自身在(m−1)时刻的输出。RNN无需在层面之间构建,同时定向循环也会出现。事实上,神经元在实际中是允许彼此相连的。

RNN包含输入单元(input units)群标记为u1,u2直到uK。输出单元(output units)群被标记为y1,y2直到yL。RNN还包含隐藏单元(hidden units),标记为x1,x2直到xN。这些隐藏单元有意思,这些隐藏单元完成了最为有意思的工作。在例图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNN会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“backprojections。

RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度。

REF : https://www.pdx.edu/sites/www.pdx.edu.sysc/files/Jaeger_TrainingRNNsTutorial.2005.pdf

递归神经网络具有循环结构: 人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。递归神经网络能够解决这一问题。这些网络中具有循环结构,能够使信息持续保存。
下图中,一组神经网络A,接收参数,输出,循环A可以使信息从网络的某个步骤中传递到下一个步骤。

可以发现,它们与常规神经网络并非完全不同。可以将递归神经网络想象成是有多层相同网络的神经网络,每一层将信息传递给下一层。如果展开循环,就是这样:

这种链状的性质表明,递归神经网络与序列和列表密切相关。这是处理这种数据所使用的神经网络的自然结构。在过去的几年里,在许多问题上使用RNNs已经取得了难以置信的成功,比如语音识别,语言建模,翻译,图像字幕,这样的例子不胜枚举。

RNN主要是图这种结构的,即是Hidden Layer会有连向下一时间Hidden Layer的边,还有一种结构是Bidirectional Networks,也就是说会有来自下一时间的Hidden Layer传回来的边。

RNN和传统的多层感知机不同的就是跟时间沾上边了,下一时间(理解为step)会受本时间的影响,可以将网络按照时间进行展开:

将RNN展开之后,似乎一切都很明了了,前向传播(Forward Propagation)就是依次按照时间的顺序计算一次就好了,反向传播(Back Propagation)就是从最后一个时间将累积的残差传递回来即可,跟普通的神经网络训练并没有本质上的不同。

REF :http://karpathy.github.io/2015/05/21/rnn-effectiveness/

2.13 LSTM 长短期记忆网络
LSTMs是一种特殊的递归神经网络 RNN,能够学习长期依赖关系,在许多任务中它表现的要比标准递归神经网络RNN出色许多。几乎所有基于递归神经网络令人振奋的结果都是由它们实现的。

原生的RNN会遇到一个很大的问题,叫做 The vanishing gradient problem for RNNs,也就是后面时间的节点对于前面时间的节点感知力下降,也就是忘事儿.RNN解决这个问题用到的就叫LSTM,简单来说就是你不是忘事儿吗?我给你拿个小本子把事记上,好记性不如烂笔头嘛,所以LSTM引入一个核心元素就是Cell。
与其说LSTM是一种RNN结构,倒不如说LSTM是RNN的一个魔改组件,把上面看到的网络中的小圆圈换成LSTM的block,就是所谓的LSTM了。

RNNs呼吁的一点就是,它们可能将前期信息与当前任务连接,比如使用前面的视频帧可能得出对当前帧的理解。如果RNNs能够做到这点,它们会非常有用。但是它们能做到吗?这得看情况。
有些时候,在执行当前任务时,只需要查看最近的信息。比如,考虑一个语言模型,试图根据之前单词预测下一个。如果想要预测“the clouds are in the sky”中最后一个单词,我们不需要更多的上下文——很明显下一个单词会是“sky”。在这种情况下,如果相关信息与预测位置的间隔比较小,RNNs可以学会使用之前的信息。
但也有需要更多上下文的情况。考虑试图预测“I grew up in France… I speak fluent French.”中最后一个词。最近信息显示下一个词可能是一门语言的名字,但是如果想要缩小选择范围,需要包含“法国”的那段上下文,从前面的信息推断后面的单词。相关信息与预测位置的间隔很大是完全有可能的。

REF : https://deeplearning4j.org/lstm
http://colah.github.io/posts/2015-08-Understanding-LSTMs/

0 回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论