美文网首页
李宏毅机器学习:self-attention(自注意力机制)

李宏毅机器学习:self-attention(自注意力机制)

作者: jenye_ | 来源:发表于2021-07-29 10:31 被阅读0次

    面临的问题

    解决一组向量的输入问题



    Eg.

    文字处理:



    Word Embedding:一个句子就是长度不一的一排向量

    音频处理:


    社交网络:

    分子结构:


    那么多向量的情况下输出是什么呢?

    - 每一个向量都有一个输出(Seqsuence Labeling)


    Eg.


    • 只输出一个label



      eg.


    不知道多少个输出(seq2swq)


    Seqsuence Labeling

    • 最初始的想法



      直接把每个vector扔到FC里面就可以了,但这种情况两个saw对于神经网络是一样的,这显然是有问题的。

    • 如何考虑上下文?



      我们按window进行输入,这样就可以让FC考虑的前后的关系。

    那如果我们有一个目标是要将整个句子都考虑在内呢?那这样的window就会有长有短。这样可能就要考虑到最长的window,这样做的话,不仅会导致FC的参数过多,还可能导致over-fitting的问题。


    Self-attention


    绿框中的向量是考虑到一整个句子而产生的向量。
    同样的Self-attention也可以多次叠加。


    self-attention输入不一定是初始输入,有可能是某个hidden-layer


    self-attention的工作机制

    关联性/alpha

    a^1 输出b^1首先要计算a^1 和其他输入的关联性。

    那么如何计算这个关联性?


    实际操作中a^1也会和自己计算关联性:


    计算关联性之后,会把所有的关联性做一个softmax



    这个soft-max其实是没有道理的,用其他激活函数也是可行的。


    最后得到的这个关联性,也叫做attention score,接下来我们需要做的就是根据attention score去提取信息。


    提取信息



    用矩阵乘法的方式来观察self-attention的计算过程:




    总结一下整个self-attention的过程:



    多头注意力机制

    目的:找不同的相关性



    self-attention的问题:没有位置的信息,所以我们可以加上Positional Encoding。

    Positional Encoding

    那么e^i是什么形式的呢?
    最早的e^i是这种形式的:


    之后也有各种形式,但是还没有定论哪一种更好。

    Truncated Self-attention

    其实在长序列的数据当中,还是会考虑太多的向量。
    Truncated Self-attention就使用了类似window的思想:


    Self-attention for Image

    eg.


    Self-attention v.s. CNN


    Self-attention vs RNN


    Self-attention for Graph

    Graph和上面讲到的场景的区别就是自带关联关系(edge)



    To Learn More

    相关文章

      网友评论

          本文标题:李宏毅机器学习:self-attention(自注意力机制)

          本文链接:https://www.haomeiwen.com/subject/kblgmltx.html