递归神经网络RNN原理与模型详解
循环神经网络(RNN)堪称当前最强大的深度学习模型之一,它催生了诸多有趣的应用:文本分类、序列数据标注、文本序列生成(例如SwiftKey键盘根据上文预测下一个词),甚至能实现序列到序列的转换——比如将法语自动翻译成英语。大多数传统模型架构,如前馈神经网络,天生不适合处理序列数据。它们要求将所有特征
循环神经网络(RNN)堪称当前最强大的深度学习模型之一,它催生了诸多有趣的应用:文本分类、序列数据标注、文本序列生成(例如SwiftKey键盘根据上文预测下一个词),甚至能实现序列到序列的转换——比如将法语自动翻译成英语。大多数传统模型架构,如前馈神经网络,天生不适合处理序列数据。它们要求将所有特征压缩成一个固定长度的向量,比如把一句话、一个段落甚至整篇文档的所有token强行打包。前馈网络的设计逻辑是“一次性看完所有特征,然后直接映射到输出”。但这种方法真的可靠吗?来看两个英文句子:I had cleaned my car 和 I had my car cleaned。单词完全相同,意思却截然相反——只有当你考虑单词的先后顺序时,才能捕捉到这种细微差别。
人类理解文本时,习惯从左到右逐词阅读,逐步构建完整语义。RNN的思路与此相似:每次只处理一个词。本质上,RNN也是一种神经网络,但内部含有一层特殊结构,并非一次性处理全部数据,而是通过“循环”机制逐步运算。正因如此,RNN能按顺序处理数据,其输入和输出的长度均可灵活变化——想多长就多长。图6.3展示了RNN的几种典型结构形态。

图6.3
图6.3源自Andrej Karpathy关于RNN的知名博文,其中详细讲解了如何用Python从零实现一个RNN,并将其用作序列生成器。
6.4.1 通过示例了解RNN如何使用
假设我们已经训练好了一个RNN模型,先别急着深究内部原理,而是看看它到底能做什么。等摸清它的能力边界,再探讨内部工作机制也不迟。
以这句话为例:the action scenes were top notch in this movie...。将第一个词“the”输入模型,它会输出两个结果:状态向量(隐藏状态)和输出向量。状态向量会随下一个词“action”一起再次送入模型,模型又生成新的状态向量。以此类推,直到最后一个词处理完毕,我们只需关注模型最终输出的结果。图6.4概括了这一过程。

图6.4
图6.4演示了两个关键要点:
- RNN如何通过“展开”方式工作;
- 状态(隐藏向量)如何递归地传递给同一个模型。
到目前为止,我们只了解了RNN能做什么,但内部实现细节还不清楚。别急,先看一段代码,这会让理解更加具体。暂时把RNN当作黑盒:
hidden = None
for word in sentence:
output, hidden = rnn(word, hidden)
这里的 hidden 就是状态向量,也常被称为隐藏状态。现在你应该知道如何使用RNN了。接下来我们看看实现RNN的代码,揭开内部的神秘面纱:
class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()
self.hidden_size = hidden_size
self.i2h = nn.Linear(input_size + hidden_size, hidden_size)
self.i2o = nn.Linear(input_size + hidden_size, output_size)
self.softmax = nn.LogSoftmax(dim=1)
def forward(self, input, hidden):
combined = torch.cat((input, hidden), 1)
hidden = self.i2h(combined)
output = self.i2o(combined)
output = self.softmax(output)
return output, hidden
def initHidden(self):
return torch.zeros(1, self.hidden_size)
除了类名是“RNN”之外,其他部分与前面章节用到的层没什么本质区别——因为PyTorch已经帮我们把反向传播的复杂细节封装好了。下面我们逐一解析 __init__ 和 forward 函数,看看内部到底发生了什么。
__init__ 初始化了两个线性层:一个用于计算输出,另一个用于计算隐藏状态(即状态向量)。
forward 函数将输入的向量与隐藏向量拼接起来,然后同时送入这两个线性层,分别得到输出和新的隐藏状态。对于输出层,还应用了 log_softmax 函数。
initHidden 函数负责生成初始隐藏向量——这样第一次调用RNN时,我们就能从一个干净的零状态开始。图6.5直观展示了RNN内部的计算流程。

图6.5
图6.5清晰地呈现了RNN的计算过程:输入和隐藏状态合并后,经过两个线性变换,分别得到输出和新的隐藏状态,而这个新的隐藏状态又会参与下一时间步的计算。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:递归神经网络RNN原理与模型详解要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点高温天气下,冷链运输最怕路上耽搁时间冷链物流如何应对高温“烤”验?从“一骑红尘妃子笑,无人知是荔枝来”的运输困难,到如今冷链物流网络四通八达、高效便捷,科技已彻底重塑了这一行业。回想几年前,生鲜配送途中若延误数小时,整批货物就可能变质报废;而今天,从南到北的时令水果、疫苗药品,都能在精准温控下安全送
惯性测量装置集成有限状态机与机器学习核心,可自主处理运动数据并生成中断,大幅降低主机处理器功耗。以LSM6DSO为例,其边缘处理架构支持动作检测与活动分类,实现高效低功耗的嵌入式运动传感方案。
OpenAI发布GPT-4 1系列模型,面向B端市场推出旗舰、中端和轻量级三个版本,强化多模态处理与100万token上下文,编码与指令遵循能力显著提升,API定价降低26%。该系列旨在以更强性能、更低成本逐步取代GPT-4o,抢占商业应用市场。
你知道中国第一批飞行员考试,除了听力和视力外,唯一的测试题是下象棋吗? 象棋的魅力,远不止“车马炮”这么简单。作为一项承载千年历史的传统文化体育运动,它既是“中国文化”的重要符号,更是“中国智慧”的典型智力运动。“以棋启智、以棋育人”——这句老话绝非虚言。下棋对智力开发、思维训练、挫折教育都大有裨益
- 日榜
- 周榜
- 月榜
热点快看
