网站开发 面试 适当吹牛,买房,潍坊正规网站建设公司,学网站论坛Transformer 结构浅析 文章目录 Transformer 结构浅析Transformer 网络结构编码器位置编码多头注意力层AddNormFeed Forward 解码器带掩码的多头注意力层多头注意力层 预测 Transformer 网络结构 Transformer模型的网络结构如图#xff0c;且transformer结构主要分为两部…Transformer 结构浅析 文章目录 Transformer 结构浅析Transformer 网络结构编码器位置编码多头注意力层AddNormFeed Forward 解码器带掩码的多头注意力层多头注意力层 预测 Transformer 网络结构 Transformer模型的网络结构如图且transformer结构主要分为两部分其中一部分为encode编码器一部分为decode解码器。且Encoder 和 Decoder 都包含 6 个 block。 编码器
位置编码
第一步将sentence输入网络并进行词编码并与位置编码相加得到输入编码器的block。
其中transformer中的位置编码采用如下公式进行计算 P E ( p o s , 2 i ) sin ( p o s / 1000 0 2 i / d ) P E ( p o s , 2 i 1 ) cos ( p o s / 1000 0 2 i / d ) \begin{aligned} PE_{(pos,2i)}\sin{(pos/10000^{2i/d})}\\ PE_{(pos,2i1)}\cos{(pos/10000^{2i/d})} \end{aligned} PE(pos,2i)PE(pos,2i1)sin(pos/100002i/d)cos(pos/100002i/d) 其中 p o s pos pos 表示单词在句子中的位置 d d d 表示 PE的维度 (与词 Embedding 一样) 2 i 2i 2i 表示偶数的维度 2 i 1 2i1 2i1 表示奇数维度 (即 2 i ≤ d , 2 i 1 ≤ d 2i≤d, 2i1≤d 2i≤d,2i1≤d)。使用这种公式计算 PE 有以下的好处 使 PE 能够适应比训练集里面所有句子更长的句子假设训练集里面最长的句子是有 20 个单词突然来了一个长度为 21 的句子则使用公式计算的方法可以计算出第 21 位的 Embedding。 可以让模型容易地计算出相对位置对于固定长度的间距 k k kPE(posk) 可以用 PE(pos)计算得到。 因为 : sin ( A B ) sin ( A ) cos ( B ) cos ( A ) sin ( B ) cos ( A B ) cos ( A ) cos ( B ) − sin ( A ) sin ( B ) \sin(AB) \sin(A)\cos(B) \cos(A)\sin(B) \\ \cos(AB) \cos(A)\cos(B) - \sin(A)\sin(B) sin(AB)sin(A)cos(B)cos(A)sin(B)cos(AB)cos(A)cos(B)−sin(A)sin(B)
设 X X X为输入的sentence词编码与位置编码相加的结果
多头注意力层
然后将 X X X输入多头注意力中其中自注意力机制如下图所示 首先将 X X X映射到 Q , K Q,K Q,K空间中然后根据缩放点积进行打分最后使用softmax的到概率最后与value相乘的到输出结果
其中多头注意力的结构如图所示 其本质是采用多个 V , K , Q V,K,Q V,K,Q矩阵计算自注意力并进行拼接。
AddNorm
然后将多头注意力的结果输入到AddNorm层中其中这部分采用残差连接的方式构成。 LayerNorm ( X MultiHeadAttention ( X ) ) LayerNorm ( X FeedForward ( X ) ) \begin{aligned} \operatorname{LayerNorm}\left(X\operatorname{MultiHeadAttention}(X)\right)\\ \operatorname{LayerNorm}( X \operatorname{FeedForward}( X) ) \end{aligned} LayerNorm(XMultiHeadAttention(X))LayerNorm(XFeedForward(X)) 并将输出结果输入Feed Forward中
Feed Forward
其中Feed Forward的结构如图所示 其数学表达为 max ( 0 , X W 1 b 1 ) W 2 b 2 \max(0,XW_1b_1)W_2b_2 max(0,XW1b1)W2b2 然后在将输出结果经过AddNorm层输入到解码器中
解码器
带掩码的多头注意力层
因为在序列任务中往往是从前往后开始进行的为了防止提前知道以后的信息所以使用了带掩码的多头注意力机制 根据下图可知 计算完缩放点积后与掩码矩阵相乘在计算softmax并与v相乘。然后将结果输入到AddNorm层中。
多头注意力层
接受来自上一层AddNorm的输入并计算Q矩阵然后根据 Encoder 的输出计算得到 K, V后续的计算与之前的一致。
预测
将解码器的输出输入到线性层并使用softmax输出得到概率