BERT基础(二):Transformer 详解

Transformer模型摒弃了RNN的序列处理,采用自注意力机制并行处理序列,提高了效率。模型由Encoder和Decoder组成,每个部分包含多层相同结构的模块,如自注意力、位置编码、层归一化和前馈网络。自注意力允许每个词关注句子中的其他词,解决顺序信息丢失问题。位置编码引入以保留位置信息。Decoder则额外包含一个Attention层,用于关注输入序列中的对应词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transformer 中 self - attention 的详解参考:
BERT基础(一):self_attention自注意力详解

在 Transformer 之前,多数基于神经网络的机器翻译方法依赖于循环神经网络(RNN),后者利用循环(即每一步的输出馈入下一步)进行顺序操作(例如,逐词地翻译句子)。尽管 RNN 在建模序列方面非常强大,但其序列性意味着该网络在训练时非常缓慢,因为长句需要的训练步骤更多,其循环结构也加大了训练难度。与基于 RNN 的方法相比,Transformer 不需要循环,而是并行处理序列中的所有单词或符号,同时利用自注意力机制将上下文与较远的单词结合起来。通过并行处理所有单词,并让每个单词在多个处理步骤中注意到句子中的其他单词。
下面就细致理解一下Transformer的模型结构,理解每一步在做什么。

0. 总体结构

img

  • 先把Transformer想象成一个黑匣子,在机器翻译的领域中,这个黑匣子的功能就是输入一种语言然后将它翻译成其他语言。如下图:

img

  • 这个黑匣子由2个部分组成,一个Encoders和一个Decoders。

img

  • 对这个黑匣子进一步的剖析,发现每个Encoders中分别由6个Encoder组成(论文中是这样配置的)。而每个Decoders中同样也是由6个Decoder组成。

img

  • 对于Encoders中的每一个Encoder,他们结构都是相同的,但是并不会共享权值。每层Encoder有2个部分组成,如下图:

img

Self-attention的输出会被传入一个全连接的前馈神经网络,每个encoder的前馈神经网络参数个数都是相同的,但是他们的作用是独立的。

  • 每个Decoder也同样具有这样的层级结构,但是在这之间有一个Attention层,帮助Decoder专注于与输入句子中对应的那个单词。

img

1. Positional Encoding

使用Self-Attention方式进行编码时无法处理以下的顺序问题:
我从北京上海
我从上海北京
上述两个语句进行编码时,第一句的北京与上海两个词的编码与第二句的北京与上海两个词的编码会完全相同,但这两个语句中的两个地点代表着不同的含义:起始位置、终点位置。为了解决此问题,进行自编码时在输入层引入了一个位置编码,如下所示:

P E ( p o s , 2 i ) = s i n ( p o s 1000 0 2 i / d m o d e l ) {PE}_{(pos,2i)}=sin(\frac {pos}{10000^{2i/d_{model}}}) PE(pos,2i)=sin(100002i/dmodelpos)

P E ( p o s , 2 i + 1 ) = c o s ( p o s 1000 0 2 i / d m o d e l ) {PE}_{(pos,2i+1)}=cos(\frac {pos}{10000^{2i/d_{model}}}) PE(pos,2i+1)=cos(100002i/dmodelpos)

与输入的计算过程:拼接
X = E m b e d d i n g L o o k u p ( X ) + P o s i t i o n a l E n c o d i n g ( t )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值