• 了解Transformer


    本文系简要笔记,作者李宏毅,原地址:https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61

    1 背景

    RNN


    ↑在seq2seq任务中,多使用RNN结构。
    RNN可以是单向的,也可以是双向的。
    它可以实现时间序列的记忆功能,但是缺点是难以并行计算,导致计算成本很高。
    原因是t时刻的输出,依赖于t-1时刻的输出。

    CNN


    ↑因此,有人提出了用CNN代替RNN,达到增强并行计算的目的。
    CNN采用过滤器机制,可以缩小依赖的范围。同样,缺点是看得范围太窄,导致全局信息丢失。


    ↑也可以通过叠加的方式,使得网络能够感知到全局信息。但是模型会变得很深,算起来很慢。

    2 Self Attention 主要思路

    Self Attention


    ↑Self Attention是替换了seq2seq中的RNN部分。


    ↑它引入了3个向量:q、k、v。不需要RNN,也不需要CNN。



    ↑简单来讲:
    第一步:q和k相乘,得到α
    第二步:α经过softmax,得到
    第三步,和v相乘,得到b

    综上,

    q、k、v,都用到了;
    可全局、可局部;
    可远、可近

    同理,得到b2,b3,……

    整体来讲,

    矩阵推理


    ↑(1)权重矩阵W共3个



    ↑(2)通过矩阵计算得到α。这个步骤可并行


    ↑(3)α经过softmax,得到


    ↑(4)和v相乘,得到b


    ↑整体过程。本质是矩阵相乘,GPU可以并行加速

    3 多头注意力


    多个q,多个k,多个v。最终也会得到多个b


    多个b先连接,再经过矩阵相乘,通过降维,得到一个b,即为网络输出。

    多头的好处:不同head,关注的点不同;各司其职

    4 位置编码


    位置信息直接编码,然后累加。


    ↑追加和累加,本质是一样的。黄色的W可通过矩阵分割,分为(W^{I})(W^{P})

    5 Seq2Seq with Attention

    把Attention用到seq2seq任务中


    在encoder和decoder中,分别替换原来的rnn部分。

    5 transformer

    左边encoder,右边decoder。
    注意橙色部分为Attention,即上文所述。

    6 用处



    同seq2seq。在摘要任务中,可处理更长的原文档。

  • 相关阅读:
    cefsharp设置默认语言
    C#创建委托实例
    C++/C#互调步骤
    mybatis别名
    redis
    数据库优化方面的事情:
    Properties类使用详解
    七层协议以及如何很好得记忆
    Http 请求到后端过程
    【转】那些年用过的Redis集群架构(含面试解析)
  • 原文地址:https://www.cnblogs.com/xuehuiping/p/15183770.html
Copyright © 2020-2023  润新知