赞
踩
之前看的Transformer源码,当时为了理解Transformer的框架,就从模型结构和模型源码两个层面做了思维导图。最近在复盘,从两个层面上又梳理了一遍,针对重要部分的内容,将个人的理解记录下来。
由上图可知,Transformer 的整体结构主要包括编码器(Encoder)和解码器(Decoder)。其中:
编码器的任务是将输入序列进行编码,提取输入序列中的特征表示。编码器由多个相同的层堆叠而成。每个层都由两个子层组成:多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)
1)多头自注意力机制(Multi-Head Self-Attention):
这是 Transformer 的核心部分之一。它通过对输入序列进行多头注意力计算来获取每个位置的上下文相关性。具体而言,对于输入序列中的每个位置,多头自注意力机制会计算该位置与其他所有位置之间的关联度,然后根据关联度对所有位置的特征进行加权求和。这个操作使得每个位置都能够利用序列中所有其他位置的信息,从而更好地理解上下文。
2)前馈神经网络(Feed-Forward Neural Network):
这是编码器层中的另一个子层。它由两个全连接层组成,通过应用激活函数(通常是 ReLU)对输入进行非线性变换。前馈神经网络在每个位置独立地作用,可以帮助模型学习特定位置的局部特征。
解码器的任务是根据编码器提取的特征表示来生成目标序列。与编码器类似,解码器也由多个相同的层堆叠而成,每个层也包含多头自注意力机制和前馈神经网络。
1)多头自注意力机制(Multi-Head Self-Attention):
在解码器中使用多头自注意力机制的作用和编码器中的相同,用于获取每个位置的上下文相关性。
2)编码-解码注意力机制(Encoder-Decoder Attention):
解码器还引入了另一种注意力机制,称为编码-解码注意力机制。这种注意力机制允许解码器直接访问编码器中的信息,并在生成序列时对其进行关注。具体而言,对于解码器中的每个位置,编码-解码注意力机制计算该位置与编码器中所有位置的关联度,然后根据关联度对编码器输出的特征进行加权求和。
3)前馈神经网络(Feed-Forward Neural Network):
解码器中的前馈神经网络与编码器中的相同,用于在解码器每个位置独立地处理信息。
Transformer的主体结构由编码器和解码器组成,在编码器和解码器中又都包含Layer Normalization 和 Dropout 这两个子层。其中:
整体而言,Transformer 利用自注意力机制在不同位置上学习特征之间的关系,并通过堆叠多个编码器和解码器层来提供更复杂的建模能力。通过 Layer Normalization 和 Dropout 这两个子层,Transformer 可以提高模型的稳定性、泛化能力和抗过拟合能力。这种结构的优势是可以并行计算,减少了序列长度对计算效率的影响,并且克服了传统循环神经网络中的长依赖问题。
上图中,黄色的是本人当时阅读源码时候写的备注,现在经过再次梳理之后,对其中的六个部分进行二次记录,分为为:
本文从Transformer的模型结构和模型源码两个层面对Transformer进行解读。在模型结构层面上,分析了Transformer主要结构的功能;在模型源码层面,记录了本人对于源码的理解。以上就是全部内容了,本文内容都是基于个人的理解进行的记录,如果错误欢迎批评指正。
参考文章:
Transformer源码:http://nlp.seas.harvard.edu/2018/04/03/attention.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。