美文网首页
深入理解NLP中的self-attention机制

深入理解NLP中的self-attention机制

作者: youyuge | 来源:发表于2021-07-17 17:07 被阅读0次

    https://zhuanlan.zhihu.com/p/96680586
    https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a
    https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247486960&idx=1&sn=1b4b9d7ec7a9f40fa8a9df6b6f53bbfb&chksm=96e9d270a19e5b668875392da1d1aaa28ffd0af17d44f7ee81c2754c78cc35edf2e35be2c6a1&scene=21#wechat_redirect
    https://blog.csdn.net/weixin_42060232/article/details/107475662

    对应于seq2seq + attention 模型:

    • decoder hidden state : (query)
    • encoder hidden states: (values) + keys

    其实seq2seq中的 attention是self-attention的 特殊版。即v和K都是同一值。Q和K做点乘,softmax后得到权重,再和V相乘获得最终合并后的context vector。而self-attention中,QKV都是不同的,且是根据input做一个线性变换得到的,参数可训练。即每个单词的Q是自己,算他的新向量的时候需要把他自己作为Q,和自己的K和其他单词的K做点乘算score,之后 和V相乘相加,获得新的embedding。


    image.png image.png

    https://zhuanlan.zhihu.com/p/47282410
    seq2seq + attention 模型已经考虑到了 encoder和decoder之间的词的关系,但是没考虑到 输入句子,词和词之间本身就是有关联性的。

    self-attention中encoder读入输入数据,利用层层叠加的Self-Attention机制对每一个词得到新的考虑了上下文信息的表征。Decoder也利用类似的Self-Attention机制,但它不仅仅看之前产生的输出的文字,而且还要attend encoder的输出。同时,每个词可以并行计算,不需要之前那样有时间步的概念,因此大大提速了。

    https://vdn1.vzuu.com/SD/feb4e6b8-2397-11eb-9748-0eb20c5883f6.mp4?disable_local_cache=1&auth_key=1626514649-0-0-bd220acb0821e8796b3ae79ab420bf9f&f=mp4&bu=pico&expiration=1626514649&v=hw

    https://zhuanlan.zhihu.com/p/137578323

    这种命名的方式来源于搜索领域,假设我们有一个key-value形式的数据集,就比如说是我们知乎的文章,key就是文章的标题,value就是我们文章的内容,那这个搜索系统就是希望,能够在我们输入一个query的时候,能够唯一返回一篇最我们最想要的文章。那在self-attention中其实是对这个task做了一些退化的处理,我们优化并不是返回一篇文章,而是返回所有的文章value,并且使用key和query计算出来的相关权重,来找到一篇得分最高的文章。


      因此,self -Attention比传统的Attention mechanism效果要好,主要原因之一是,传统的Attention机制忽略了源端或目标端句子中词与词之间的依赖关系,相对比,self Attention可以不仅可以得到源端与目标端词与词之间的依赖关系,同时还可以有效获取源端或目标端自身词与词之间的依赖关系。

    相关文章

      网友评论

          本文标题:深入理解NLP中的self-attention机制

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