zoukankan      html  css  js  c++  java
  • transformer

    用decoder的输入做Query(y_i),用encoder的输出去做key和value(X)

    1. 引入




    抛弃RNN,只用attention

    2. Transformer :Attention is All You Need

    你不需要RNN,你只需要attention就可以参数化语言模型
    还是有encoder+decoder(基于self-Attention)

    3. Self-Attention

    Softmax、加权平均(见上图)

    Self-attention得到什么,能有什么好处:不用额外引入变量
    在nlp中的缺点:x的位置改变的时候,会带来顺序问题(后续在引入self-attention的到transformer的时候,会引入位置编码)(可以尝试拼接加上自己x的向量,但是输出的y会变长,在cuda中计算也会更加困难)

    3.1 尝试区分Query Key Value

    在不同的模型中query、key、value可能相同可能不同

    先做线性变换,再做self-attention

    3.2 transformer 中的trick:Scaling the Dot Attention

    求q、k、v的w_{ij}的时候用的softmax,softmax很大就会很敏感(梯度消失),解决办法:

    4. Multi-Head Attention

    把输入的向量分为多个头(等长的几份)

    5. Position Embedding(后面也会有改进)

    为什么要做position Embedding呢?
    因为在做self-attention的时候,顺序是无关的,因此加多一个position

    6. Transformer


    Self-attention == multi-head Self-attention
    Norm = 正则化
    MLP:单层神经网络(relu激活)
    蓝色:残差连接(训练更快+更稳定<--阻止梯度消失)

    7. Application


    Mark:加权平均的时候不带入后面的数据x进行计算attention(防止偷窥)

    https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html

  • 相关阅读:
    Storm
    Linux 网络配置
    .NET Remoting
    jwt
    new操作符
    元数据
    C# lock
    三十而立
    面试
    灯火
  • 原文地址:https://www.cnblogs.com/Towerb/p/14196668.html
Copyright © 2011-2022 走看看