Transformer模型

主要用于翻译,有两部份组成:encoding和decoding,如下图所示:
在这里插入图片描述

1 encoding

encoding如下图所示:
在这里插入图片描述

1.1 self-attention

输入:input embedding。
输出:带相关性编码的input embedding。
包含3个向量矩阵:Query ( M , d q k ) (M, d_{qk}) (M,dqk)、Key ( d q k , N ) (d_{qk}, N) (dqk,N)、Value ( N , d v ) (N, d_v) (N,dv),其中:

  1. Q为待查询的vector,Key为需要和Q计算相似度的vector,所以Q和K的维度必须相同。
  2. K和V是同一个vector在不同空间的表示。维度可以不同。
    计算相关性权重矩阵的方法(scaled dot-product attention):
    Query=embeddingWq
    Value=embedding
    Wv
    Key=embeddingWk
    relevance=Softmax(Query
    Key)

    输出为relevance*Value
    除以根号d是为了梯度更加稳定。
    在这里插入图片描述
    在这里插入图片描述

1.2 multi-attention head

计算输入词之间的关系。求self-attention的三个向量分别用了一个矩阵,论文中使用了8组Q、K、V矩阵,最后生成8组相关性权重矩阵,然后使用矩阵Wo转化为最终的结果,为了增加Q、K、V的多样性,计算前先经过Linear层。

1.3 positional encoding

之前的谈论并没有考虑单词顺序的关系。假设使用jpe向量表示,有许多方法求该向量,论文中用到的公式是:
PE(pos,2i)=sin(pos/100002i/dmodel)
PE(pos,2i+1)=cos(pos/100002i/dmodel​)
pe+embedding作为最终的输入向量。
其中pos是指当前词在句子中的位置,i是指向量中每个值的index

1.4 layer normalization

在每一个子模块后添加一个残差块,残差块包括layer normalization。
在这里插入图片描述

1.5 Forward Feedback Network(FFN)

作用:增加非线性(Relu激活函数)
构成:两层全连阶层+中间的激活层。

2 decoding

2.1 mask multi-head attention

计算目标词之间的关系,包括两种掩码:padding mask和sequence mask。
在这里插入图片描述

2.1.1 padding mask

输入序列需要对齐, 如果输入序列不足则用一个很小的负数填充,经过softmax后值接近0,如果输入序列长则去掉多的部分。

2.1.1 sequence mask

屏蔽目标值当前以后的信息。使用一个上三角矩阵如下图所示,对角线用0填充,乘以输入embedding。
在这里插入图片描述

2.2 multi-head attention(encoder-decoder attention)

计算输入和目标值之间的关系。输入为decoder上一层的输出(i-1位置decoder的输出)作为Q,encoder的输出作为K、V。

优点:

  1. 速度快:并行计算充分利用gpu资源。
  2. 精度高。
  3. 可以直接计算每个词间的相关性而不需要通过隐藏值传递。

缺点:

  1. 顶层梯度消失问题:残差经过了LN层,导致梯度减少。(系数<1)
    在这里插入图片描述
  2. 位置信息编码简单的与embedding加和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值