标签:
即使不是 NLPer,现实中依然会面对很多序列问题。
全文内容来自 Ian Goodfellow, Yoshua Bengio 和 Aaron Courville 3位大老爷的作品“Deep Learning”的其中1章“Sequence Modeling: Recurrent and Recursive Nets” 1。
1986年 Rumelhart 等人提出循环神经网络。循环网络与多层网络相比,会共享每层的权重,从而能够扩展和应用网络于不同长度的序列案例,以及泛化这些案例。当1片特定的信息可以在序列中多处出现时,这样的共享尤为重要。比如,有两句话:“I went to Nepal in 2009”和“In 2009, I went to Nepal.”如果要求模型提取叙述者哪一年去的 Nepal,不管是输入句子的第2处还是第6处,2009 都是应识别的信息片。传统全连接前向网络对每处输入的特征都有单独的参数,所以要单独学习输入句子每一处的所有语法。相比之下,循环网络在不同时间步间共享权重。
现在很多“神经网络”的字眼已被“网络”替换。且后面不会涉及神经元的内容,所以一概用“网络”。
相关的想法是1维时间序列间用卷积。卷积方法是延时神经网络的基础 (1988~1990)。卷积操作允许网络在时间轴上共享参数,但为浅层网络 (输出序列的每个节点输出为很多相邻节点输入的函数)。每个时间步上用相同的卷积核。
循环网络以不同的方式共享参数。节点输出为前面节点输出的函数,节点的输出由前面节点输出用相同的更新规则产生。通过很深的计算图来共享权重,从而形成循环。
为简化描述,RNN 看作对1个包含时间步索引
循环代表某变量的过去值对未来值的影响。用循环的计算图定义循环网络。
计算图是形成一系列计算结构 (如涉及映射输入和参数到输出和损失) 的1种方式。把1个循环/递归计算展开为1个有重复结构 (对应1连串事件) 的图,从而实现深度网络结构间的参数共享。
例如,考虑动态系统的经典形式:
上述系统是循环的,因为时刻
对于有限时间步
再举1例,外部输入
循环网络可用很多不同方式搭建。几乎任何函数都可看作1个前向网络,本质上任何涉及循环的函数都能当作1个循环网络 (RNN)。
为表明状态即为网络的隐藏单元,上述方程重写为:
典型的 RNN 增加从状态
当训练循环网络来用过去预测未来时,网络通常学习去用状态
画 RNN 有2种方式。
用函数
函数
以上好处使得单个模型
循环图和展开图各有用途。循环图简明;展开图清晰地描述计算过程,并有助于说明随时间前向 (计算输出和损失) 和反向 (计算梯度) 的信息流。
循环网络的重要设计模式包括:
上图左对应的 RNN 是通用的。理论上的 RNN 被证用 RNN 的激活函数和权重 (无限精度的有理数) 可模拟1个无限长的堆栈。
假定隐含单元选用双曲正切激活函数,输出为离散值,如预测单词或字符。离散变量的每个可能值的未归一化对数概率表示离散变量的输出
其中,
某1时间步的输出仅循环连接到下1时间步的隐含单元的网络是严格弱的,因为它缺少隐含单元到隐含单元的循环连接。比如,它不能模拟1个通用的图灵机。因为它缺少隐含层到隐含层间的循环,所以网络用于预测未来时,输出单元要求捕捉过去所有的信息。显式训练输出单元来匹配训练集合的目标不太可能捕获关于输入过去历史的必要信息,除非用户了解系统的全部状态且把它作为训练目标的一部分。
对时间步
从输出到状态的循环连接模型可能用“老师强迫”训练。训练时,模型接受真实输出
本例中,时间步
隐含单元间缺少连接的模型上用老师强迫可避免穿过时间的反向传播。老师强迫也能用于输出与状态循环连接的模型。然而,一旦隐含单元变成1个前面时间步的函数,BPTT算法是必要的。一些模型同时用老师强迫与 BPTT。
如果网络用于开环模式 (网络输出反馈给输入),严格老师强迫会出问题。训练时网络输入与测试时输入可以有很大差异。
训练时,同时用老师强迫的输入与未来几个时间步后预测的正确目标作输入。另外1种缓和训练与测试输入间的差异,随机选择泛化输出或实际数据作输入。该方式用课程学习策略,逐渐用更多的泛化值作输入。
“老师强迫”原意可这样理解:假设状态为学生的学习态度,输入为学生的作业,输出为尽可能好的期末考试成绩。老师没办法让学渣突然爱上学习,所以,一般会通过强迫学生写作业这样的外在手段来提高学生的成绩。
循环网络的梯度计算比较直接。展开的计算图上用泛化的反向传播算法即可。展开图上的反向传播应用被称为穿过时间的反向传播 (BPTT) 算法。反向传播得到的梯度接着可用作任何通用的基于梯度的技术来训练 RNN。
BPTT 为 RNN 方程 (上述 RNN 的正向传播) 计算梯度。以重要设计模式中的左图为例 (隐含层单元间循环连接),计算图的节点包括
a. 沿时间步的正向梯度
递归地计算每个节点
并不是
L=L(t) ,L 为所有时间步的L(t) 的和。
假定 softmax 回归输入
b. 沿时间步的反向梯度
从序列末端开始,时间步
其中,
h(t+1)=tanh(b+Wh(t)+Ux(t+1))
c. 单个时间步内的参数梯度
获得计算图的内部节点的梯度后,可获得参数节点上的梯度。因参数在许多时间步间共享,所以当微积分操作涉及这些参数时必须小心处理。用反向传播方法得到计算图中单个边 (edge) 的梯度。然而,
{c,V}:o(t)=c+Vh(t)
{b,W,U}:h(t)=tanh(b+Wh(t?1)+Ux(t))
这样,内部参数的梯度为:
a. 图模型参数化
上例的循环网络的损失
训练 RNN 时,给定过去输入,最大对数似然来估计下1个序列元素
当过去的
考虑 RNN 为1个随机标量序列
图模型的边表明变量与其它变量直接的依赖关系。删除节点间相互作用弱的边可使许多图模型的统计与计算更高效。如 Markov 假设 (图模型应仅包含
b. 图模型解释 RNN
视 RNN 为1个具有完整的图结构,可表示任意
视隐含单元
有效参数化后的图模型难以预测序列中间的丢失值。减少参数数目后循环网络却难以优化参数。
循环网络的权重共享的前提是假设相同的参数可用于不同的时间步。给定时间步
c. 序列长度
在对模型采样前,先确定序列长度:
当输出
添加二值输出,决定每个时间步继续或终止产生序列。该方法更通用,不会局限于字符序列,还可用于实数序列等。新的输出单元为交叉熵损失训练出的 Sigmoid 单元,来最大化每个时间步上继续还是终止序列正确预测时的对数似然概率。
添加序列长度
任何变量为
I. 向量输入
前面讨论过
引入权重矩阵
前面讨论的输入为
{x(1),...,x(τ)} ,现在讨论的输入为{xTR,...,xTR} 。该 RNN 适用于给图像加标题 (输入为单幅图像,输出为描述图像的语句)。观测序列的元素
y(t) 既为当前时间步的输入,也为训练时前面时间步的目标。
II. 向量序列输入
RNN 输入为向量序列
假设不条件独立,时间步
大标题 (“1., 2., 3. …”) 为原作者给的,以 RNN 类型来区分;小标题 (“I., II., III. …”) 是我给的,以 实际问题的输入类型区分。所以,唯独这里的小标题的索引会不连贯。
III. 完整向量序列输入
许多应用的预测输出
1997 年 Schuster 和 Paliwal 发明双向 RNN。2005~2013 年间在手写体识别,语音识别和生物信息等方面的应用取得巨大成功。
双向 RNN 结合正向 RNN 和 反向 RNN。正向 RNN 从序列起点随时间移动至终点,反向 RNN 从序列终点随时间移动至起点。正反向 RNN 的状态分别为
用4个 RNN 可扩展至2维输入 (如图像)。每个 RNN 沿1个方向 (上,下,左和右) 移动。输入 2D 网格上的每个点
前面讨论过从输入序列到定长向量,从定长向量到输出序列,从输入序列到与输入序列长度相同的输出序列。
“向量序列输入”部分提及的 RNN 是长度为
τ 的 RNN,即定长 RNN。这里排除输入和输出变为相同长度的子序列,因为若子序列可完整描述模型输入,可重新定义τsub(<τ) ,此时新的 RNN 依然是定长序列的输入输出。
IV. 可变向量序列输入
应用于语音识别,机器翻译或问答等的 RNN 输入序列长度不必等于输出序列长度。输入语句长度和输出语句长度通常不相同,尽管两者可能相关。
RNN 的输入经常称为“上下文”。上下文
2014 年 Cho 等人首次提出输入和输出为可变长序列的最简 RNN 结构,同年 Sutskever 等人对该结构扩展,首次用该方法取得领先的翻译效果。前者 (编码到解码结构) 排序另1个机器翻译产生的建议,后者 (序列到序列结构) 用1个单独的 RNN 完成翻译。
编码 (encoder/reader/input) RNN 处理输入序列,输出上下文
解码 (decoder/writer/output) RNN 输入单个定长的向量 (见”向量输入”部分的
该结构的创新处为
编码 RNN 的最后的状态
编码器的隐含单元数目与解码器的隐含单元数目可以不相等。
2015 年 Bahdanau 等人在机器翻译的上下文中观察到,编码 RNN 的上下文输出
联合训练两个 RNN 来最大化训练集中所有
大多数 RNN 计算分解为参数与相关变换的3步:
每部分关联1个权重矩阵。换句话说,展开网络时,每部分的矩阵对应1个浅变换。深 MLP 中的单层变换称为浅变换。典型的浅变换用1个学得的仿射变换 (紧随1个固定的非线性) 表示。
实验证据强烈建议对浅变换引入深度,一致认为需要足够的深度来满足映射要求。
2013 年 Graves 等人首次显示分解 RNN 状态进多层的巨大收益。下图 (a) 中分层的底层可视为转换原输入成隐含状态更高层的更合适的表示。
2014 年 Pascanu 等人让上述每部分有1个 MLP,如下图 (b)。根据对每部分分配足够容量来考虑整体的表示容量,但该方法添加深度后会因优化困难而可能影响训练。
总的来说,浅层结构优化更容易,添加额外的深度延长了变量从时间步
然而,跳过隐含单元到隐含单元路径上的连接可缓解路径延长问题,见下图 (c)。
与图 (b) 相比,图 (c) 的隐含单元到隐含单元的路径上,多出了1个连接与 MLP 的单隐含层并联。
递归网络是循环网络的另1种泛化,但计算图的结构为1个深层树,而不是 RNN 的链式结构。
1990 年 Pollack 提出递归网络。在 NLP 和计算机视觉方面,递归网络成功用于处理送入神经网络的数据结构。
对序列长度为
递归网络的变种很多。1997 和 1998 年 Frasconi 等人用数据关联树结构,且用输入和输出关联树的节点。每个节点的计算不必是传统的人工神经计算 (所有输入的仿射变换,紧随1个单调的非线性)。比如,2013 年 Socher 发现建模概念 (连续向量表示) 间的关系时张量操作和双线性形式有用。
循环网络中,学习长期依赖的基本问题为许多层上传播的梯度往往会消失 (常见) 或爆炸 (少见,优化伤害大)。即使参数稳定 (可保存记忆,且梯度不爆炸),与短期作用相比,长期作用的权重指数衰减,依然难以解决问题。其它方法用更深的处理 (Hochreiter, 1991; Bengio 等, 1994; Pascanu 等, 2013)。
循环网络的多个时间步相同函数组合产生了极强的非线性。
循环网络的组成函数类似矩阵乘法。循环关系可表示为1个去掉非线性激活函数和输入
循环网络中该问题尤为明显。假设权重
有人希望通过保留梯度在不消失和不爆炸的参数空间区域内,不幸的是,为保存对小扰动鲁棒的区域,RNN 一定会进入梯度消失的参数空间区域。具体地,长期作用的梯度指数级地小于短期作用的梯度。这并不意味着梯度不可学,只是要花很长的时间去学长期作用,因为短期作用出现的波动常会隐藏长期作用的信号。1994 年 Bengio 等人实验表明扩大捕获的依赖范围会使基于梯度的优化难度加大,对长度为10或20的序列,用 SGD 的 传统 RNN 训练权重的成功率快速减为0。
从
储备池计算循环网络与核机器相似:映射1个任意长度的序列 (截止至时间步
因此,如何设置输入和循环权重使循环网络的状态能够表示1套丰富的输入历史。存储池计算给出的答案为视循环网络为1个动态系统,且设置输入和循环权重使动态系统接近稳定。
使状态至状态的转换函数的 Jacobian 特征值接近1。(?) 1个循环网络的重要特征是 Jacobians
为理解谱半径的影响,考虑
当
该例假定每步的 Jacobian 相同,对应1个线性的循环网络。引入非线性时,非线性的导数经过许多时间步后将接近0,避免大的谱半径引起的爆炸。
用重复的矩阵乘法的反传的一切,同样适用于1个线性网络的正向传播,状态
当线性映射
Jacobian 矩阵告诉我们
带非线性的 Jacobian 在每个时间步都可无约束地变化,因此具有更复杂的动态特性。然而,1个起始的小差异,若干时间步后仍然会变为大差异。 与纯线性相比,非线性网络用诸如tanh
回响状态网络只是修正权重的谱半径,但因如
最近,设置ESN中权重的技术可用于在1个可学习的循环网络 (随时间步反传的隐含层间的循环的权重) 中初始化权重,以便学习长期依赖。其中,结合稀疏初始化模式,谱半径为1.2时效果不错。
处理长期依赖的1种方式为设计多时间尺度上操作的模型。细粒度时间尺度上操作可处理更多细节,粗粒度时间尺度上操作可更有效将遥远的历史信息转换为当前信息。所以针对既细又粗的时间尺度来设计策略:其中包含跨时间步跳过连接,“泄露单元”累积不同时间常数的信号,删除某些连接来建立细粒度时间尺度。
为获取粗粒度,将遥远过去的变量与当前变量直接相连。受 1988 年 Lang 与 Hinton 在前向神经网络中插入延时的启发,1996 年 Lin 等人采用直连的方法。
梯度随时间步数的增加可能会指数地消失或爆炸。为缓解该问题, Lin 等人引入
对1个指数规律衰减的量,幅值变为其
1e 倍所需的时间τ 称为时间常数。2 如果为τd ,梯度会消失得更快。所以,应该改为τd 吧~
因延时和单步连接,梯度依然会按
为使路径上的导数乘积接近1,线性自连接单元和连接权重接近1。
累积某值
跳过
用泄漏单元设置时间常数有两种基本策略。一种为手动固定值,比如,初始时刻从某分布中采样1次值。另一种为将时间常数设置为自由参数,然后学习它。不同时间尺度上的泄露单元有助于长期依赖。
解决长期依赖的另1种方式为多时间尺度上组织 RNN 的状态,让信息更容易在缓慢时间尺度上长距离地流动。
与前面跳过时间步的连接不同,删除连接涉及删除时间步长度为1的连接,且替换成更长的连接。 修改后的单元只能在更长时间尺度上操作,但也可选择聚焦到短项连接上。
使循环单元在不同的时间尺度上操作的方法很多。1种为令循环单元泄漏,但不同组的单元关联不同的固定时间尺度 (1992 年 Mozer 提出,2013 年 Pascanu 等人成功应用)。另1种为对不同组的单元用不同的更新频率,在不同的时间步上显式离散地更新。 这是 1996 年 Bengio 和 2014 年 Koutnik 的方法,在许多 Benchmark 数据集上效果不错。
实际应用中本文最有效的序列模型为门控 RNN,包括长短时记忆和基于门控循环单元的网络。
类似泄漏单元,门控 RNN 基于使随时间的路径上的导数不消失或爆炸。泄漏单元用手动选择的常数或参数作为连接权重。门控 RNNs 将连接权重泛化成每个时间步都可能改变。
泄漏单元使网络能够在很长的时间内累积信息 (如特定的特征或类型)。然而,用到累积的信息后,网络会遗忘过去的状态。比如,当子序列组成序列,且需要通过设置过去的状态为0来遗忘它。除了手动决定何时清除状态,希望网络能学习到何时去决定清除。
1997 年 Hochreiter 和 Schmidhuber 最早提出的长短时记忆的主要贡献是引入自循环来创建使信息长期流动的路径。
使自循环取决于上下文,而非固定不变。通过使自循环的权重可门控,累积的时间尺度能动态变化。此时,即使 LSTM 固定参数,累积的时间尺度可随着输入序列而改变,因为时间常数为模型的输出。LSTM 在很多应用中极为成功,如无约束手写体识别,语音识别,手写体生成,机器翻译,图像加标题和解析。
LSTM 的框图见上图。LSTM 循环网络单元间彼此循环连接,来替换普通循环网络的隐含单元。用1个常规人工神经单元计算输入特征。如果 Sigmoid 门允许,输入的特征值会累加给状态。状态单元有1个由遗忘门控制的线性自循环。输出门可关闭LSTM 循环网络的输出。所有的门单元都用 Sigmoid 非线性,而输入单元可用压扁的非线性 (如 tanh)。状态单元可用作门单元的额外输入。黑色方块为1个时间步的延时。
压扁的非线性的原文为“squashing nonlinearity”。通常指各种非线性的激活函数 3,这里用 tanh 为例。
对应的前向传播方程用浅层循环网络结构给出。更深的结构也有成功的应用。每个循环单元不再是仅对输入到循环单元的仿射变换按元素应用非线性,除了 RNN 外部循环,LSTM 循环网络有“LSTM 单元”,每个单元有1个内部自循环。每个“LSTM 单元”有与普通 RNN 相同的输入和输出,但有更多的参数且有1个控制信息流的门控单元。
最重要的部分是状态单元
用条件自循环权重
有上标
f 的参数属于遗忘门,有上标g 的参数属于外部输入门,有上标o 的参数属于输出门。
与简单的循环结构相比,LSTM 网络在测试长期依赖能力的合成数据集和挑战性任务处理任务上可学习到更长期的依赖。
LSTM 哪一部分是必要的?还能设计出其它成功的结构,使网络能动态控制时间尺度和遗忘不同单元的行为?
近期门控 RNN 上的工作,网络单元为门控循环单元或 GRUs。与 LSTM 不同之处为仅有1个门单元同时控制遗忘因子和决定是否更新状态单元。更新方程如下:
该情形下可设计更多的变体。比如,多隐含单元间共享复位门 (或遗忘门) 输出。此外,1个全局门 (覆盖整组单元,如1整个层) 和 1个局部门 (每个单元) 可用于结合全局控制和局部控制。然而,LSTM 和 GRU 的结构变体据调查并未在各项任务中完败原结构。2015 年 Greff 等人 发现关键部分为遗忘门,而同年 Jozefowicz 等人发现对 LSTM 的遗忘门添加偏置1,使 LSTM 成为目前最好的结构变体。
优化 RNN 时,许多时间步后梯度会消失或爆炸。
2011 年 Martens 和 Sutskever 提出1阶导数消失的同时,2阶导数可能也会消失。若2阶导数以与1阶导数相似的比率缩小,那么1阶和2阶导数的比率可能保持为常数。不幸的是,2阶方法缺点很多,包括计算损失高,需要1个大的小块 (minibatch) 及 易受鞍点吸引。他们用2阶方法效果很好。2013 年 Sutskever 等人发现简单的方法 (谨慎初始化的 Nesterov 动量) 可获得类似的效果。两种方法被应用于 LSTM 的 SGD (甚至没有动量) 取代。机器学习领域中,通常设计1个易优化的模型会比设计1个更强大的优化算法更容易。
1个循环网络的强非线性函数经过许多时间步后的梯度幅值会太大或太小,见下图。目标函数 (参数的函数) 有“悬崖”地形:宽阔平坦的区域被目标函数快速变化的小区域分开,形成1种悬崖。
困难在于当参数梯度非常大时,梯度下降的参数更新会把参数甩出到很远的区域,该区域的目标函数更大且与逼近当前解没什么关系。梯度告诉我们当前参数周围的无穷小区域内最陡的下降方向。无穷小区域之外的代价函数可能开始曲率上升。更新步必须足够小以避免穿越过多的上升曲率。典型的学习率缓慢衰减,缓慢到连续步间的学习率近似相同。适用地形相对线性部分的步长通常不合适,且当下一时间步进入地形曲率更大的部分时,会使目标函数值上升运动。
上图的循环网络包含两个参数
多年来1个简单的解决方法常用:裁剪梯度。2012 年 Mikolov 在参数更新前,对1个小块按元素裁剪参数梯度。2013 年 Pascanu 等人在参数更新前,裁剪梯度
裁剪梯度帮助解决梯度爆炸问题,但未解决梯度消失问题。为弄清梯度消失且更好地捕捉长期依赖,讨论在展开的循环结构的计算图中创建路径,路径上用弧接近1的梯度相乘。实现的1种方式为用 LSTM 和 其它自循环或门控机制。另1种是正则化或约束参数来促进“信息流”。我们希望梯度向量
对目标函数,2013 年 Pascanu 等人提出如下正则项:
该方法关键的弱点是当数据充足时,它不如 LSTM 那么有效,如语言建模。
智能需要知识,通过学习获取知识促进了大规模深度结构的发展。然而,知识包含不同的类型。有些知识是隐式的,潜意识的且很难描述的——如如何行走,或狗如何看起来与猫不同。其它知识是显式的,声明性的且相对直接组成语句——常识,如“猫是1种动物”,或你需要知道去完成的当前目标这样具体的事实,如“下午3点141室销售团队开会”。
神经网络擅长保存隐式知识。然而,它们记忆事实困难。随机梯度下降在输入的表示保存进网络参数前,之后输入甚至不会特别精确地保存表示,要求相同输入的很多表示。2014 年 Graves 等人假设因神经网络缺少工作记忆系统,该系统使人类可显式地保持和操作与实现目标相关的信息片段。这样的显式记忆允许我们的系统快速有意地保存和恢复具体的事实,且用它们按序推理。可处理1个序列信息的神经网络的需求,改变了每步放入网络的输入方式,长期以来使推理能力比输入的自动直接响应显得更为重要 (Hinton, 1990)。
为解决该困难,2014 年 Weston 引入通过寻址访问1堆记忆单元的记忆网络。记忆网络刚开始要求监督信号来指导网络使用记忆单元。2014 年 Graves 等人引入神经图灵机,在没有动作指示的显式监督时,能学习在记忆单元上读写任意内容;用基于内容的软注意机制,允许无监督地端到端训练 (Bahdanau, 2015)。该软寻址机制成为其它模仿算法机制 (仍允许梯度优化) 的相关结构的标准。
每个记忆单元可视为 LSTMs 和 GRUs 的记忆单元的扩展。不同之处在于网络输出读写记忆单元的内在状态,正如在数字计算机上读取或写入某个具体地址的记忆访问。
优化函数难以产生准确的整型地址。为缓和该问题,NTMs 同时从许多记忆单元中读写。它们对许多单元加权平均来读取,修改不同数目的单元来写入。用非0导数的权重通过梯度下降来控制函数访问要优化的记忆。这些系数的梯度暗示它们是增加还是减少,但梯度仅当接收到很大系数的记忆地址时会很大。
这些记忆单元被增广成包含1个向量,而非 LSTM 或 GRU 记忆单元保存的单个标量。此时,会增加访问记忆单元的成本,为产生许多单元的1个系数付出了计算成本,但我们希望这些系数可聚类一小部分单元。通过读取1个向量值而非标量值,也抵消了一些成本。用向量值的记忆单元允许基于内容的寻址,用来读写单元的权重为单元的函数。若能产生匹配部分而非全部元素的模式,向量值单元可恢复出完整的向量值记忆。类似人们基于一些语句来回忆歌词。1个基于内容的读指令就像“已有’黄色潜水艇’副歌,恢复这首歌的歌词”。当对象恢复量很大时 (如果歌词的每个字母分散保存在记忆单元中),基于内容的寻址更有用。与基于地址的寻址相比,1个基于地址的读指令就像“恢复位置 347 处的歌词”。当记忆单元很小时,基于位置的寻址通常是完全合理的机制。
如果1个记忆单元的内容在大多数时间步被复制 (未被遗忘),那么前向和反向传递的信息不会消失或爆炸。
显式记忆方法见上图,1个“任务神经网络”附带1个记忆。尽管任务神经网络是前向或循环的,但整个系统是循环网络。任务网络可选择读写具体的记忆地址。显式记忆可使模型学习到常规 RNN 或 LSTM 学不到的任务,可能因为信息和梯度能长期传播。
为通过记忆单元加权平均反传,解释记忆寻址系数为概率,且每次随机读取1个单元 (Zaremba 和 Sutskever, 2015)。离散决策的模型优化要求特定的优化方法。到目前为止,训练随机结构来做离散决定依然难于训练确定结构来做软决定。
不管是软的 (允许反传) 或随机的或硬的,寻址机制和注意力机制形式上相同。手写体产生中的注意力机制被约束仅在时间序列上前向传播。机器翻译中的注意力在与前面步比较后,可移动到另1个完全不同的位置。
硬的应该是指前向网络。
循环网络将深度学习扩展到序列数据。它们是我们深度学习工具箱中最后1个主要工具。剩下的问题转向选择和使用这些工具,应用它们解决现实任务。
小白随心译,遗漏部分内容 (感觉不太重要或有些重复~)。最近一些事情弄得各种前途堪忧状,心情很烦乱,中间进度断了不少次。所以理解必然可能存在有误之处,欢迎新老司机带路~ ︿( ̄︶ ̄)︽( ̄︶ ̄)︿
循环和递归神经网络 (RNN) 与 长短时记忆 (LSTM)
标签:
原文地址:http://blog.csdn.net/shadow_guo/article/details/51814801