zoukankan      html  css  js  c++  java
  • 了解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。在摘要任务中,可处理更长的原文档。

  • 相关阅读:
    将textarea滚动至底部:
    Web应用程序项目OxiteSite已配置为使用IIS.在本地计算机上找不到服务器
    使用Entity Framework时要注意的一些性能问题
    Python 输入输出
    Python 语言简介
    瞧一瞧,看一看,微信应用号(小程序)
    路遥眼里的河南人<平凡的世界>
    HTML5 本地存储实现购物车功能
    HTML5 本地存储的用法
    网站/域名如何备案?
  • 原文地址:https://www.cnblogs.com/xuehuiping/p/15183770.html
Copyright © 2011-2022 走看看