【动手学深度学习-pytorch】 9.4 双向循环神经网络

在序列学习中,我们以往假设的目标是: 在给定观测的情况下 (例如,在时间序列的上下文中或在语言模型的上下文中), 对下一个输出进行建模。 虽然这是一个典型情景,但不是唯一的。 还可能发生什么其它的情况呢? 我们考虑以下三个在文本序列中填空的任务。

我___。

我___饿了。

我___饿了,我可以吃半头猪。

根据可获得的信息量,我们可以用不同的词填空, 如"很高兴"("happy")、"不"("not")和"非常"("very")。 很明显,每个短语的"下文"传达了重要信息(如果有的话), 而这些信息关乎到选择哪个词来填空, 所以无法利用这一点的序列模型将在相关任务上表现不佳。 例如,如果要做好命名实体识别 (例如,识别"Green"指的是"格林先生"还是绿色), 不同长度的上下文范围重要性是相同的。 为了获得一些解决问题的灵感,让我们先迂回到概率图模型。

双向模型

如果我们希望在循环神经网络中拥有一种机制, 使之能够提供与隐马尔可夫模型类似的前瞻能力, 我们就需要修改循环神经网络的设计。 幸运的是,这在概念上很容易, 只需要增加一个"从最后一个词元开始从后向前运行"的循环神经网络, 而不是只有一个在前向模式下"从第一个词元开始运行"的循环神经网络。 双向循环神经网络(bidirectional RNNs) 添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。 图9.4.2描述了具有单个隐藏层的双向循环神经网络的架构。

定义

将前向隐状态 和反向隐状态连接起来, 获得需要送入输出层的隐状态H

模型的计算代价及其应用

双向层的使用在实践中非常少,并且仅仅应用于部分场合。 例如,填充缺失的单词、词元注释(例如,用于命名实体识别) 以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)

总结

  • 在双向循环神经网络中,每个时间步的隐状态由当前时间步的前后数据同时决定。

  • 双向循环神经网络与概率图模型中的"前向-后向"算法具有相似性。

  • 双向循环神经网络主要用于序列编码和给定双向上下文的观测估计。

  • 由于梯度链更长,因此双向循环神经网络的训练代价非常高。

  • 双向层的使用在实践中非常少,并且仅仅应用于部分场合。 例如,填充缺失的单词、词元注释(例如,用于命名实体识别) 以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)

相关推荐
xier_ran1 小时前
深度学习:为什么不能将多层神经网络参数全部初始化为零以及如何进行随机初始化
人工智能·深度学习
夫唯不争,故无尤也1 小时前
PyTorch中张量和模型的核心属性解析
人工智能·pytorch·深度学习
哥布林学者2 小时前
吴恩达深度学习课程二: 改善深层神经网络 第二周:优化算法(三)Momentum梯度下降法
深度学习·ai
AI街潜水的八角3 小时前
深度学习十种食物分类系统1:数据集说明(含下载链接)
人工智能·深度学习·分类
B站_计算机毕业设计之家3 小时前
深度学习:python人脸表情识别系统 情绪识别系统 深度学习 神经网络CNN算法 ✅
python·深度学习·神经网络·算法·yolo·机器学习·cnn
CV视觉3 小时前
AI 实战篇:用 LangGraph 串联 RAG+MCP Server,打造能直接操控 Jira 的智能体
人工智能·深度学习·机器学习·自然语言处理·langchain·prompt·jira
渡我白衣4 小时前
链接的迷雾:odr、弱符号与静态库的三国杀
android·java·开发语言·c++·人工智能·深度学习·神经网络
Mr_Oak5 小时前
【multi-model】moco系列&SimCLR&BEiT
人工智能·深度学习·神经网络·算法·计算机视觉·transformer·对比学习
一条数据库6 小时前
猫狗识别数据集:34,441张高质量标注图像,深度学习二分类任务训练数据集,计算机视觉算法研发,CNN模型训练,图像识别分类,机器学习实践项目完整数据资
深度学习·算法·机器学习
CoovallyAIHub7 小时前
1.2MB超轻量模型实现草莓苗精准分级检测与定位,准确率超96%
深度学习·算法·计算机视觉