当前位置: 代码迷 >> 综合 >> transformer--编码部分
  详细解决方案

transformer--编码部分

热度:72   发布时间:2023-10-25 11:51:43.0

transformer–编码部分

  • Positional Encoding

    • 位置嵌入:就是在输入中加入包含句子中特定位置信息的维向量
    • 位置嵌入的维度与输入时间序列的维度相同,为 [序列长度, 所处位置]。
    • 一般输入的为多时次的时间序列,维度为[ time_num, feature_num ]
    • 在论文中使用了sin和cos的线性变换来提供模型的位置信息:
      • PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos, 2i)=sin(pos/10000^{2i/d_{model}})PE(pos,2i)=sin(pos/100002i/dmodel?)
      • PE(pos,2i+1)=cos(pos/100002i/dmodel)PE(pos, 2i+1)=cos(pos/10000^{2i/d_{model}})PE(pos,2i+1)=cos(pos/100002i/dmodel?)
    • 上式中,pos质的是一剧中某个字的位置,取值范围为[ 0, 序列长度 ],i每一个时次的特征序号,取值范围为[0, feature_num/2],dmodeld_{model}dmodel?是时间序列的特征数。
    • 将位置矩阵与输入矩阵相加
    • 在这里插入图片描述
  • self-attention

    • 对于输入的时间序列矩阵X,通过与Positional Encoding将其相加,该矩阵的完整输入。第t个时次的向量记做xtx_txt?
    • 在transformer中有三个权重矩阵,分别为查询矩阵(WQW_QWQ?)、键矩阵(WKW_KWK?)、值矩阵(WVW_VWV?)
      • q:i=WQXiq_{: i}=W_QX_iq:i?=WQ?Xi?
      • k:i=WKXik_{: i}=W_KX_ik:i?=WK?Xi?
      • v:i=WVXiv_{: i}=W_VX_iv:i?=WV?Xi?
      • 上述多个 q、k、v的列的聚集会变成一个完整的矩阵
    • self-attention layer
      • weights: α;j=Softmax(KTq:,j)∈Rm\alpha_{ ;_j}=Softmax(K^Tq_{:,j})\in R^mα;j??=Softmax(KTq:,j?)Rm
      • 其中α\alphaα的维度为m,为一次所输入时次的总和
    • V矩阵与α\alphaα矩阵相乘得到上下文矩阵,得到Context vector
      • c:,j=α1,jv:,1+…+am,jv:,m=Vα:,jc_{:,j}=\alpha_{1,j}v_{:,1}+…+a_{m,j}v_{:,m}=V\alpha_{:,j}c:,j?=α1,j?v:,1?++am,j?v:,m?=Vα:,j?
      • 注意力矩阵α\alphaα和上下文矩阵CCC的维度与X矩阵的形状一致
    • attention head的计算如下:
      • Z=softmax(Q?KTdk)?VZ=softmax(\frac{Q*K^T}{\sqrt{d_k}})*VZ=softmax(dk? ?Q?KT?)?V在这里插入图片描述
  • 多头注意力机制

    • 就是定义多个Q,K,V矩阵,得到多组(W0QW0K,W0V)(W_0^{Q}W_0^{K},W_0^{V})(W0Q?W0K?,W0V?), (W1QW1K,W1V)(W_1^{Q}W_1^{K},W_1^{V})(W1Q?W1K?,W1V?),……
    • 每一个头可以得到一个矩阵Z,因此多头注意理解机制可以得到:{ Z0,Z1,…,Zn{Z_0,Z_1,…,Z_n}Z0?,Z1?,,Zn?}
  • 残差连接

  • 残差连接

  • 将输入与self attention的输出相加起来进行下一步的计算:

  • X+SelfAttention(Q,K,V)X+Self Attention(Q, K, V)X+SelfAttention(Q,K,V)

  • Layer Normalization

    • 在神经网络的隐藏成中设置标准化层,可以加快训练速度,加速收敛:
    • 公式如下:
      • layerNorms(x)=xi,j?μσj2+?layerNorms(x)=\frac{x_{i,j}-\mu}{\sqrt{\sigma_j^2+\epsilon}}layerNorms(x)=σj2?+? ?xi,j??μ?
  • transform层的编码部分的整体结构:

    1. 位置编码
      • Xpos=X+positionEncodingX_{pos}=X+position EncodingXpos?=X+positionEncoding
    1. 自注意力机制
      • Q=linear(X)=XWQQ=linear(X)=XW_QQ=linear(X)=XWQ?
      • K=linear(X)=XWKK=linear(X)=XW_KK=linear(X)=XWK?
      • V=linear(X)=XWVV=linear(X)=XW_VV=linear(X)=XWV?
      • Xattention=SelfAttention(Q,K,V)X_{attention}=SelfAttention(Q,K,V)Xattention?=SelfAttention(Q,K,V)
    1. self-attention残差连接与Layer Normation
      • Xattention=X+XattentionX_{attention}=X+X_{attention}Xattention?=X+Xattention?
      • Xattention=LayerNorm(Xattention)X_{attention}=LayerNorm(X_{attention})Xattention?=LayerNorm(Xattention?)
    1. 进行前向传递:
      • Xhidden=Linear(ReLU(linear(Xattention)))X_{hidden}=Linear(ReLU(linear(X_{attention})))Xhidden?=Linear(ReLU(linear(Xattention?)))
  相关解决方案