Neural Machine Translation by Jointly Learning to Align and Translate:输入输出注意力机制

注意力机制是当下深度学习中的后起之秀,最初的想法源于 Dzmitry Bahdanau 等人的论文 Neural Machine Translation by Jointly Learning to Align and Translate。了解强大的注意力技术的起源有助于我们掌握许多基于其延伸出的发展,本文将介绍这个注意力机制背后的逻辑。

语言到语言的翻译模式

Neural Machine Translation by Jointly Learning to Align and Translate 介绍了一种将原始语言中的语句翻译成目标语言中语句的模型。该模型具有"编码器-解码器"结构,使用递归神经网络(RNN)同时实现编码器和解码器。

翻译模型体系结构模型架构如下:

输入

在上述图片中,编码器的输入是原始语言中的单词序列:X₁, ... , Xᵢ, ... , X_Tₓ

  • Tₓ 是输入句子的长度,例如,在"My name is YBCarry."这句话中,Tₓ 的值是 4。
  • 每个 xᵢ 是原始语言中单词的一个离散表示(one-hot representation),其中包含一个 Kₓ 字典。也就是说,每个 Xᵢ 是一个长度为 Kₓ 的向量,通常在 5 万到 10 万字的范围内。Xᵢ 向量中只有一个条目是1,表示原始语言中的某个特定单词,所有其他条目都是 0。

编码器(Encoder)

在上述图片中,编码器是绿色的连续块。

  • 编码器是一个递归神经网络,编码器块只有一个,所有输入的语句都由这个块处理,一个词接着一个词。
  • 编码器块获取隐藏状态和输入词,并发出下一个隐藏状态,隐状态向量不是模型参数,它们是递归神经网络块的输出。h₀, h₁, ... , h_Tₓ是长度为 n 的隐藏状态向量,h₀ 是一个零向量。
  • 最后一个编码器隐藏状态 h_Tₓ 将是解码器的初始状态,即 s₀ = h_Tₓ。在上述图片中虚线箭头建立了这个连接。

解码器(Decoder)

在上述图片中,解码器是橙色的连续块。

  • 解码器结构和编码器类似,也是只有一个解码器块。
  • 解码器块输出两个信息: 目标语言中的下一个翻译单词、下一个解码器隐藏状态。所以它需要三个输入:前一个解码器的隐藏状态(蓝色箭头表示)、前一个输出的单词(黄色箭头表示)和上下文(紫色箭头表示)。上下文是注意机制作用的结果。
  • 解码器块会持续输出已翻译的单词,一直到一个特殊的句尾单词。
  • 虽然图片中编码器块和解码器块的数量相同,但在实际翻译过程中,输入和输出的句子很可能具有不同的长度。

输出

在上述图片中,解码器的输出是目标语言中的一系列单词概率向量:Y₁, ... , Yᵢ, ... , Y_Tₓ

  • Tᵧ 是目标语句的长度,在模型完成翻译之前是未知的,只有当解码器输出特殊的句尾单词时,目标语句长度才被确定。
  • 每个输出的概率向量 Yᵢ 的长度为 Kᵧ, Kᵧ 是目标语言的字典大小。向量 Y 中的条目 i 是 0 和 1 之间的实数,表示特定单词(即第 i 个单词)在目标语言中的概率,其中 i 是条目索引。Y 中的所有条目 i 总和为 1。一般是使用最高概率的单词作为解码器的第 i 个输出的单词。

相关公式

编码隐藏状态

  • 每个编码器隐藏状态 hᵢ 是一个长度为 n 的向量,其中 n 是编码器隐藏状态的维度。 n 是模型的超参数,通常在数百到几千之间。
  • 编码器的初始隐藏状态为零向量。所有连续的编码器隐藏状态 hᵢ 通过引用前面的编码器隐藏状态 hᵢ-₁ 递归定义,这就是递归神经网络的本质。

注意力机制

  • 注意力机制为每个输出单词计算一个上下文向量。对于第 t-th 个输出单词,上下文 cₜ 是所有编码器隐藏状态 h₁ 至 h_Tₓ 的加权平均值。
  • 在标准"编码器-解码器"架构中,来自输入语句的信息只能通过最终编码器隐藏状态向量 h_Tₓ 或者等效的初始解码器隐藏状态向量 s_₀ 获得。

解码器隐藏状态

  • 第一个解码隐藏状态 s_₀ 被设置为最后一个编码器隐藏状态 h_Tₓ,这就是为什么 s_₀ 具有与h_Tₓ 相同的形状。
  • 所有连续解码器隐藏状态 sₜ 通过引用前面的解码器隐藏状态 sₜ₋₁ 递归定义, 其中包括:前一个输出单词 yₜ₋₁,前一个解码器状态 sₜ₋₁ 和上下文 cₜ 来自注意力机制。

总结

本文介绍了首次引入注意力机制的基于递归神经网络的语言到语言翻译模型,并解释了投入产出机制是如何运作的,以及其背后数学的逻辑。

相关推荐
阿里云大数据AI技术几秒前
大语言模型数据增强与模型蒸馏解决方案
人工智能·语言模型·自然语言处理·通义千问
程序猿追6 分钟前
优化学习管理:Moodle和ONLYOFFICE文档编辑器的完美结合
人工智能·python·深度学习·学习·机器学习·onlyoffice
猫头虎11 分钟前
猫头虎 分享:Python库 XGBoost 的简介、安装、用法详解入门教程
开发语言·人工智能·python·aigc·powerpoint·ai编程·ai写作
cuisidong199731 分钟前
5G SSB(Synchronization Signal/PBCH, 同步广播块
人工智能·算法·5g
2401_8581205344 分钟前
探索视觉的边界:PyTorch与TorchVision的深度融合
人工智能·pytorch·python
麦文豪(victor)1 小时前
AI学习记录 - 线性代数(3Blue1Brown)
人工智能·学习·线性代数
Roun31 小时前
智能化Web3:如何利用人工智能优化区块链技术
人工智能·web3·区块链
AI_小站1 小时前
什么情况用Bert模型,什么情况用LLaMA、ChatGLM类大模型,咋选?
人工智能·深度学习·自然语言处理·bert·embedding·llama·ai大模型
格林威1 小时前
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(Python)
开发语言·人工智能·python·数码相机·计算机视觉
域智盾系统1 小时前
隐水印是什么?如何通过隐水印追溯泄密者?5步让数据安全无忧
人工智能