美文网首页
李宏毅机器学习: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