• transformer


    Transformer 是一类使用注意力机制(self-attention)加速运算的模型. 由 attention is all you need一文提出(google,NIPS,2017) 

    transformer实现

    1、基于encoder-decoder的架构。encoder和decoder均为6层结构。

    encoder有两个子层(sublayer), multi-head attention 和 point wise fc.

    decoder有三个子层,masked multi-head attention、multi-head attention(用来处理encoder输出) 和 point wise fc.

    2、特点:

    • 仅使用attention结构,没有使用循环神经网络or卷积
    • 能够大幅缩短模型训练时间

    3、结构

    transformer子结构:

    multi-head attention

    1)scale dot-product attention

    attention输入:query, key, value

    计算方法:query和key计算weight,weight和value做matmul获取attention的输出;

     作者认为,当d_k较大时,会把点积结果推向softmax的梯度平缓区,影响了模型训练的稳定性。

     因此,在做softmax之前加一个尺度因子,网络为scaled dot production attention.

    2)multi-head attention 

    计算方法:

    1.query, key, value经过线性投影,获取不同子空间的表示;

    2.每个子空间的Q, K, V做attention

    3.把attention的结果拼接(concat),然后做线性变换(linear)即可获取multi-head attention的结果

     

    position wise feedforward network

    计算方法:FFN ---> ReLu ---> FFN

    1.position wise是因为处理的是第i个位置的attention输出,FFN分别作用在每个position

    2.同一层内,FFN的网络参数是相同的。在不同层,FFN的参数不同。 

    FFN(x) = max(0, xW1+b1)W2 + b2

    3.attention输出维度d_model=512,经过position wise fc, W1的维度为d_model*d_ff,  W2的维度为d_ff*d_model,  d_ff={1024, 2048, 4096}

    相当于:每个位置attention的结果映射到更大维度的特征空间,然后通过ReLu整流筛选,最后经过fc还原至原来的维度

    Layer Normalization

     transformer中每一个子结构均使用了残差连接(res Add)和归一化(Layer Normalization ,2016),每个子层输出: LayerNorm(x + Sublayer(x)).

     

     layer norm好处:

    ① 分布平移后,让激活值落在 f() 梯度敏感的区间,梯度值大,增加训练速度

    ② 将数据"白化",消除极端值,提升训练稳定性

    ③ 梯度敏感区间内隐层输出接近线性,模型表达能力下降。 使用增益g_i和b_i增加模型表达能力。

    ④ Norm 通常放在非线性函数之前。transformer的非线性在self-attention的softmax和FFN的ReLu把LN设置在每个子层的输出,不是为了让激活值落在梯度敏感的区间,更重要的目的是为了"白化",让每个词的向量化数值更加均衡,以消除极端情况对模型的影响,获得更稳定的深层网络结构。在和之前的 TWWT 实验一样的配置中,删除了全部的 LN 层后模型不再收敛。LN 正如 LSTM 中的tanh,它为模型提供非线性以增强表达能力,同时将输出限制在一定范围内。 因此,对于 Transformer 来说,LN 的效果已经不是“有多好“的范畴了,而是“不能没有”。

    batch norm 和 layer norm 区别

    BN是在一个batch内,统计某个特定神经元节点的输出分布(跨样本);

    LN是在一次迭代中,统计同一层所有神经元节点的输出分布(同一样本);

    embedding and softmax

    1.encoder和decoder的输入均接入embedding层,且embedding的参数相同

    2.embedding层把encoder的input和decoder的input计算为高维特征空间的向量表示,d_model=512

    3.对于decoder的输出,使用线性变换和softmax归一化,获取预测token的概率 

    ⭐️position encoding

    1.加入position encoding是为了增加token在序列中的位置信息,维度和d_model相同,可直接相加。

    (1)facebook 版本(postional embedding, Convolutional Sequence to Sequence Learning ):learned and fixed, 只能表征有限长度内的位置,无法对任意位置进行建模.

    (2)google版本(encode) : 使用公式建模,无长度限制,具体公式如下:

    self-attention

    考虑3方面的因素:

    1.每一层的计算复杂度

    2.可以并行计算的总量,用sequential operations衡量。 需要的sequential operations越少,说明并行计算程度越高。

    3.网络中的long range dependencies, 使用max path length衡量。max path length越小,说明长时依赖越小。

    整体结构:

     

    内部结构(6个encoder + 6个decoder):

    encoder内部结构:

    self-attention对单词进行编码时,会关注输入句子中的其他单词;

    decoder内部结构:

    self-attention在解码时,会关注输入句子的其他单词;

    encoder-decoder attention在解码时,关注输入句子中相关的部分;

    attention

    自注意力机制

    前处理符号过滤 >> 分词 >> embedding把词转为向量(发生在最底层的encoder) >> 向量流经self-attention和feed forward处理

    self-attention (自注意力)

    【def】找出一个句子中各单词之间的关系,为其赋予正确的注意力

    【计算分为4步】

    1.使用embedding vector计算获取query vector(查询向量), key vector(键向量), value vector(值向量)

    2.计算出 当前单词查询向量(query vector)和其它单词键向量(key vector)相乘的得分,该得分表名对当前向量进行编码时,对其它单词应该实施多少关注。

     

    3.把score除以8(使用的键向量的维度(64)的平方根,以得到更稳定的梯度),然后计算softmax。处理后的得分决定了每个单词在这个位置上被「表达」的程度。

     

    4.将每个值向量(value vector)与softmax得分相乘。目的是把[关注]的单词值向量维持在较高水平,把无关单词的值向量维持在较低水平(通过将值向量与softmax得分 0.001 这样极小的数字相乘)。然后对加权后的值向量进行求和,获取当前编码位置的self-attention输出。

     

     

    【参考】

    https://www.jiqizhixin.com/articles/2019-04-07-3

    https://towardsdatascience.com/transformers-141e32e69591

    https://zhuanlan.zhihu.com/p/60821628

    个人学习笔记,网络内容搬运工,喜欢的点个赞,如有侵权请联系删除。
  • 相关阅读:
    可恶的Desktop_1.ini 规格严格
    BoundChecker 规格严格
    MySQL NetFlow Analysiser 忘记密码(转载) 规格严格
    Oracle 基本查询 规格严格
    NAN 规格严格
    面试题:为什么java不允许 super.super.xxx 这样的语句?
    国人眼中的Scrum
    NetBeans 时事通讯(刊号 # 1 Apr 02, 2008)
    面试题:为什么java不允许 super.super.xxx 这样的语句?
    快来测试你的脑年龄
  • 原文地址:https://www.cnblogs.com/qing2105/p/14041320.html
Copyright © 2020-2023  润新知