Datawhale AI 夏令营 基于Transformer解决机器翻译任务

前言:这是本期夏令营的task3,前面已经学习了Seq2Seq 这种编码器、解码器架构,中间层使用的GRU网络,并且网络中加入了注意力机制(Attention Mechanism)。

这篇文章则主要聊聊基于Transformer解决机器翻译任务的知识。

一、Transformer 介绍

基于循环或卷积神经网络的序列到序列建模方法是现存机器翻译任务中的经典方法。然而,它们在建模文本长程依赖方面都存在一定的局限性。
  卷积神经网络**:受限的上下文窗口在建模长文本方面存在不足。如果要对长距离依赖进行描述,需要多层卷积操作,而且不同层之间的信息传递也可能有损失,限制了模型的能力。
   循环神经网络:上下文的语义依赖通过维护循环单元中的隐状态实现。随着序列长度的增加,早期的上下文信息逐渐被遗忘。尽管注意力机制缓解了这个问题,但循环网络在编码效率方面仍有不足,因为每个时间步的隐藏状态都依赖于前一时间步的计算结果,导致训练和推断阶段低效。

  为了更好地描述文字序列,谷歌的研究人员在 2017 年提出了一种新的模型 Transformer。Transformer 完全通过注意力机制完成对源语言序列和目标语言序列全局依赖的建模。它摒弃了循环结构,利用自注意力机制衡量上下文中每个单词对当前单词的重要程度,使得模型的运行变得十分高效。

二、Transformer 的关键模块

1. 位置编码(Positional Encoding):为了保留序列中单词的位置信息,Transformer 使用正余弦函数为每个位置生成一个向量,与词嵌入相加。位置编码的计算公式为:
 text{PE}_{(pos, 2i)} = \sin \left(\frac{pos}{10000^{2i/d}}\right)
   text{PE}_{(pos, 2i+1)} = \cos \left(\frac{pos}{10000^{2i/d}}\right)

   其中,( pos ) 表示单词的位置,( 2i ) 和 ( 2i+1 \) 表示位置编码向量中的维度,( d ) 是位置编码的总维度。

2. 多头注意力机制(Multi-Head Self-Attention):通过多个自注意力机制并行处理输入信息,使模型能关注不同的上下文部分。多头注意力的公式为:
   text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
   其中,( Q) 是查询矩阵,( K ) 是键矩阵,( V ) 是值矩阵,( d_k ) 是键的维度。多头注意力机制将输入的查询、键和值矩阵分别映射到多个子空间,并行计算注意力后,再将结果连接起来。

3. 前馈网络(Feed-Forward Network, FFN):每个编码器和解码器层都包含一个前馈神经网络,处理每个位置的表示。公式为:
   text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2
   其中,( W_1 )、( W_2 )、( b_1 ) 和 ( b_2 ) 是可训练参数。

4. 残差网络(Residual Network)和 **层标准化(Layer Normalization):每个子层都有一个残差连接,并进行层标准化。残差连接公式为:
text{LayerNorm}(x + \text{Sublayer}(x))

   其中,( text{Sublayer}(x) ) 是自注意力或前馈网络。

 三、Transformer 模型架构

Transformer 模型由编码器和解码器组成。编码器由多个相同的层叠加而成,每个层包括多头自注意力和前馈网络。解码器结构类似,但多了一个跨注意力层(用于关注编码器的输出)。
 


这张图展示了 Transformer 模型的架构,用于实现机器翻译任务。模型由编码器(Encoder)和解码器(Decoder)两部分组成,每部分都由多个层(Layer)叠加而成。

编码器(Encoder)

编码器的输入是源语言句子,例如图中的 "我 很 好"。编码器包含以下几个关键组件:
1. 嵌入层(Embedding Layer):将输入句子的每个单词转换为向量表示。
2. 位置编码(Positional Encoding):将位置信息加入到每个单词的嵌入表示中,帮助模型捕捉单词的顺序信息。
3. 多头自注意力机制(Multi-Head Self-Attention):计算每个单词对其他单词的注意力权重,以捕捉上下文依赖关系。
4. 前馈神经网络(Feed Forward Network, FFN):对每个单词的表示进行进一步处理。
5. 残差连接(Residual Connection)和层标准化(Layer Normalization)**:在每个子层后添加残差连接,并进行层标准化,以稳定训练过程。

这些组件组成一个编码层(Encoder Layer),整个编码器由多个这样的编码层堆叠而成,图中表示为6层。

 解码器(Decoder)

解码器的输入是目标语言句子的前一部分,例如图中的 "<sos>"。解码器包含以下几个关键组件:
1. 嵌入层(Embedding Layer):将输入句子的每个单词转换为向量表示。
2. 位置编码(Positional Encoding):将位置信息加入到每个单词的嵌入表示中。
3. Masked 多头自注意力机制(Masked Multi-Head Self-Attention):计算每个单词对前面单词的注意力权重,防止模型看到未来的信息。
4. 编码器-解码器注意力机制(Encoder-Decoder Attention):计算每个解码单词对编码器输出单词的注意力权重,实现对源句子信息的关注。
5. 前馈神经网络(Feed Forward Network, FFN):对每个单词的表示进行进一步处理。
6. 残差连接(Residual Connection)和层标准化(Layer Normalization):在每个子层后添加残差连接,并进行层标准化。

这些组件组成一个解码层(Decoder Layer),整个解码器由多个这样的解码层堆叠而成,图中表示为6层。

 输出层(Output Layer)

解码器的输出通过线性层和 softmax 层转换为词汇表上的概率分布,用于预测下一个单词。

 总结

图中描述的 Transformer 模型流程如下:
1. 编码器将源语言句子 "我 很 好" 转换为一系列上下文相关的表示。
2. 解码器通过多层结构和注意力机制,逐步生成目标语言句子的每个单词,例如 "I am fine"。
3. 最终输出层将解码器的输出转换为目标语言单词的概率分布,生成完整的翻译句子。

这种架构通过自注意力机制有效捕捉长距离依赖,并且由于高度并行化,显著提升了训练和推断效率。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值