多层循环神经网络|Multi-layer RNNs

张开发
2026/4/6 18:10:56 15 分钟阅读

分享文章

多层循环神经网络|Multi-layer RNNs
-----------------------------------------------------------------------------------------------这是我在我的网站中截取的文章有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn这里还有很多有关计算机的知识欢迎进行留言或者来我的网站进行留言作者正在学习斯坦福大学的CS224N课程。此文章的图片均来自该课程视频之后会继续更新斯坦福大学CS224N课程以及加上补充的知识让我们一起探讨 NLP 的世界----------------------------------------------------------------------------------------------第一节重新定义“深度”——从一维到二维的跨越在谈论深度学习时我们经常听到“深层网络”这个词。但在循环神经网络RNN的语境下“深度”其实有两个截然不同的维度。RNN 的第一种深度时间轴上的展开即便是一个最简单的单层 RNN它本身也已经是“深”的。 当我们处理一个长序列比如一句话或一段音频时RNN 会随着时间的推移不断“展开”Unroll。每一个时间步的隐藏状态都依赖于前一个时间步这意味着信息在时间轴上穿梭了数十次甚至上百次。这种深度解决了时序依赖的问题让模型能够“记住”过去发生的事情。RNN 的第二种深度空间轴上的堆叠然而仅仅在时间上延伸是不够的。为了让网络能够捕捉到更复杂的特征我们需要在另一个维度上加深它——这就是多层 RNNMulti-layer RNNs也被形象地称为堆叠 RNNStacked RNNs。单层 RNN就像是一个通才试图在一个维度内同时处理原始输入、语法结构和高层语义。多层 RNN通过将多个 RNN 层垂直叠加我们让模型拥有了“分工”的能力。这种结构允许网络构建分层表示Hierarchical Representations底层 RNNLower RNNs负责提取低级特征例如词与词之间的基本连接。高层 RNNHigher RNNs在底层特征的基础上进一步提取高级特征例如整个句子的情感倾向或逻辑意图。第二节解剖多层 RNN在第一节中我们建立了“堆叠”的概念。现在让我们对准这个堆叠结构看看当一个序列比如一个句子输入时其内部到底发生了什么。1. 核心流动从 hi 到 xi1理解多层 RNN 的关键在于四个字层间传递。在一个标准的单层 RNN 中每个时间步的输入是 xt输出是隐藏状态 ht这个 ht 也会传递给下一个时间步。在多层 RNN 中这个逻辑发生了一个优雅的垂直延伸第 1 层它的输入是原始的外部输入序列 X例如一个句子的所有词。这一层计算出自己的隐藏状态序列 H1。第 2 层它的输入不再是原始序列 X而是第 1 层的隐藏状态序列H1。第二层对这些已经经过处理的信息再次进行循环处理计算出自己的隐藏状态序列 H2。第i1层以此类推任何一个中间层第 i1 层的输入都是它直接下层第 i 层在同一时间步产生的隐藏状态。水平箭头代表同一层内的信息跨时间传递记住过去。垂直箭头代表信息从低层传向高层深化理解。2. 特征分层的技术实现通过这种垂直传递多层 RNN 实现了一个非常强大的功能特征的分层计算。正如我们在引言中提到的底层RNN layer 1它最接近原始数据其计算更偏向于低级特征。比如在 NLP 中layer 1 可能更多地捕捉词法信息词的类型、词形变化。高层如 RNN layer 3它的输入已经是经过底层初步抽象处理的信息。它能够站在更高的视角整合更长距离的信息从而计算出高级特征例如复杂的句法结构、语义倾向、上下文意图。这种设计不仅更符合人类认知世界的逻辑从具体到抽象也在数学上被证明具有更强的表达能力能够解决单层网络无法胜任的复杂问题。第三节实战中的多层 RNN在理解了多层 RNN 的架构后一个自然而然的问题是既然多层更好那是不是层数越多越好在实际应用中答案往往是需要“适度”。1. 性能的权衡为什么不追求“无限深”虽然增加层数能让网络计算出更复杂的表示效果通常优于单纯增加单层隐藏层的维度但 RNN 的深度受到两个主要因素的制约计算成本RNN 的序列依赖特性使得它难以并行化。增加层数会成倍增加计算开销和推理延迟。训练难度随着层数加深梯度在跨层传递时也会面临消失或爆炸的问题导致模型难以收敛。2. 实战中的经验值以神经机器翻译 NMT 为例根据Britz et al. (2017)的研究在处理复杂的翻译任务时研究者们总结出了一些黄金法则Encoder编码器通常2 到 4 层是最佳平衡点。Decoder解码器通常4 层的效果最好。边际递减效应通常从 1 层增加到 2 层会有显著的性能提升从 2 层增加到 3 层可能有小幅改善但再往后增加提升往往微乎其微甚至可能因为过拟合而导致性能下降。3. 跳跃连接Skip-connections如果你确实需要训练更深层的 RNN例如 8 层甚至更多简单的堆叠往往会失效。这时我们需要引入跳跃连接Skip-connections或稠密连接Dense-connections。这种技术允许信息绕过某些中间层直接从低层传递到高层。这不仅能有效缓解梯度消失问题还能让高层模型直接观察到原始输入特征从而保持信息的完整性。4. 从 RNN 到 Transformer尽管多层 RNN 在很多任务中表现卓越但它的深度通常止步于 4-8 层。相比之下如今主流的Transformer模型如 BERT通常拥有12 层甚至 24 层。为什么 Transformer 能做得这么深这主要归功于它抛弃了时序递归转而采用全注意力机制并配合了极其强大的残差连接Residual Connections。在接下来的学习中我们会发现 Transformer 实际上是将这种“多层堆叠”的思想推向了极致。-----------------------------------------------------------------------------------------------这是我在我的网站中截取的文章有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn这里还有很多有关计算机的知识欢迎进行留言或者来我的网站进行留言作者正在学习斯坦福大学的CS224N课程。此文章的图片均来自该课程视频之后会继续更新斯坦福大学CS224N课程以及加上补充的知识让我们一起探讨 NLP 的世界----------------------------------------------------------------------------------------------

更多文章