Tansformer模型原理与算法流程

1. 自注意力机制

Transformer的核心是自注意力机制,它可以让模型在处理序列数据时关注序列中不同位置信息。对于一个输入序列,自注意力机制的思想是,对于每个位置的输出都由输入序列中所有位置的信息加权求和得到,而权重就是输入特征不同位置之间的相关性。而由于Transformer不像RNN本身先后循环输入机制暗含位置信息,因此输入特征需要先经过位置编码,即Position Embeding,常用的有基于 s i n sin sin c o s cos cos函数的位置编码。

自注意力机制的公式为:

a t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V attention(Q,K,V)=softmax(dk QKT)V
其中 Q , K , V Q,K,V Q,K,V分别表示查询(query)、键(key)和值(Value)矩阵,其均由输入序列经线性变换得到。 d k d_k dk表示键向量的维度。 s o f t m a x softmax softmax是对每一行进行归一化,使得每一行的元素之和为1。其中 s o f t m a x ( x ) = e x ∑ i e x x softmax(x)= \frac{e^x}{\sum_i e^x}x softmax(x)=iexexx

公式的含义是对每一个查询向量 q i q_i qi计算它与所有键向量 k j k_j kj的点积,然后除以 d k \sqrt{d_k} dk 进行缩放,再通过 s o f t m a x softmax softmax函数得到一个概率分布,表示 q i q_i qi对不同位置信息的关注程度。然后基于得到的概率分布对所有值向量 v j v_j vj进行加权求和,得到一个输出向量 o i o_i oi,最后将所有输出向量拼接起来,得到最终的输出矩阵。

2. Transformer模型

Transformer模型即基于注意力机制的深度学习架构,不使用循环或卷积来处理序列数据,而是使用注意力来捕捉序列中的依赖。

Transformer模型采用编码器-解码器结构,编码器将输入序列映射为一系列连续的表示,解码器接收编码器的输出和自身的输出生成目标序列。

每个编码器由N个相同的层组成,每个层包含两个子层,分别是:多头自注意力机制计算层,全连接前馈网络层。其中每个子层都有一个残差连接层和归一化层。

解码器层也由多个相同的层组成,每个层包含三个子层,分别是:多头注意力机制计算层,用于融合编码器的输出和和解码器的输出;全连接前馈网络,用于将提取输入的非线性特征组合,并将输入映射到输出。

在输入词嵌入(或其他张量)之后,编码器和解码器都会添加位置编码,用于表示序列中词语的位置信息,位置编码通过sin,cos函数实现,可以处理任意长度的序列。

在训练过程中,为了防止编码器提前看到目标序列中的后续词语,需要用掩码来遮挡未来的信息,掩码是一个二维矩阵,其中未来信息对应的位置为0,其他位置为1.
下图即模型结构图,左侧为编码器,右侧为解码器。编码器有一个自注意力计算层,解码器有两个自注意力计算层,途中Add为残差计算,Norm为归一化层,Feed Forward为MLP,Linear即Linear层。
Tansformer模型原理与算法流程_第1张图片

你可能感兴趣的:(MachineLearning,算法,transformer)