稀土掘金 稀土掘金

浅谈Attention与Self-Attention,一起感受注意力之美

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


浅谈Attention与Self-Attention的前世今生

前言

   2017年的某一天,Google 机器翻译团队发表了《Attention is All You Need》这篇论文,犹如一道惊雷,Attention横空出世了!(有一说一,这标题也太他喵嚣张了,不过人家有这个资本(o゚▽゚)o )

image.png

   很快Attention就被推上了神坛,搭载着犹如核弹的Transformer,Bert出现了,在NLP的各个任务上屠榜,后来预训练模型遍地开花,在NLP的各个领域大放异彩。让人一度觉得NLP只需要一个Transformer就够了。让他们火的一塌糊涂的正是Attention,今天就来浅谈一下Attention。

Attention是什么?

   Attention机制翻译过来叫作注意力机制,Self-Attention叫作自注意力机制。它的思想很简单,起初灵感就来源于人眼和人脑。我们人用眼睛观察东西的时候,大脑会有意识或无意识地观察某些地方,这就是人的注意力。更形象点描述注意力,可以找找下图的感觉。

image.png

   根据万物皆可AI的原理,我们也想让计算机get到这种能力。那些个天才研究员就去捣鼓,最后捣鼓出了计算机版的注意力机制,就叫Attention机制。

Attention和Self-Attention的计算过程?

   对于计算机来说,想要表达一个东西的重要程度,最直观的方式就是用数字来表示。如果一个数越大,可以认为它越重要,Attention就是这样的。在一些任务中,我们会通过矩阵的数学运算得到某两个东西之间的值,它反映了这两个东西之间的相关程度,或者说“注意程度”,这个值就是注意力权重。再把这个注意力权重乘上对应的值就得到了某个东西关注另一个东西的程度,这就是注意力分数。计算机就是通过这个分数实现注意力机制的。

   下面举个例子上说明一下注意力和自注意力,可能不够严谨,但足以说明注意力和自注意力是什么了。

   首先我们不去考虑得到注意力分数的细节,而是把这个操作认为是一个封装好的函数。比如定义为attention_score(a,b),表示词a和b的注意力分数。现在有两个句子A=“you are beautiful”B=“你很漂亮”,我们想让B句子中的词“你”更加关注A句子中的词“you”,该怎么做呢?答案是对于每一个A句子中的词,计算一下它与“you”的注意力分数。也就是把

attention_score(“you”,“你”)

attention_score(“are”,“你”)

attention_score(“beautiful”,“你”)

都计算一遍,在实现attention_score这个函数的时候,底层的运算会让相似度比较大的两个词分数更高,因此attention_score(“you”,“你”)的分数最高,也相当于告诉了计算机,在对B句子中“你”进行某些操作的时候,你应该更加关注A句子中的“you”,而不是“are”或者“beautiful”。

   以上这种方式就是注意力机制,两个不同的句子去进行注意力的计算。而当句子只有一个的时候,智能去计算自己与自己的注意力,这种方式就是自注意力机制。比如只看A句子,去计算

attention_score(“you”,“you”)

attention_score(“are”,“you”)

attention_score(“beautiful”,“you”)

这种方式可以把注意力放在句子内部各个单词之间的联系,非常适合寻找一个句子内部的语义关系。

   关于严格的数学公式推导,推荐看源论文 《Attention is All You Need》,对注意力分数计算的可视化展示感兴趣的童鞋推荐 Jay Alammar的图解Transformer系列: jalammar.github.io/illustrated…

   下图就浓缩了Attention的计算过程 image.png

Attention和Self-Attention的区别?

   说完了Attention的计算方式,下面我想谈谈我自己对Attention与Self—Attention的理解。

   在我看来,他们都是针对Encoder-Decoder结构的。在经典的seq2seq机器翻译任务中,根据源句子与目标句子是否相同,分成了Attention和Self-Attention。

   其中,Attention是应用在源句子与目标句子不同时,是为了解决rnn的一些问题的。使用rnn的缺点在于,通常的rnn结构由于是单向传导,时序性太强,会导致从Encoder出来的信息太过拥挤,全都集中在Encoder最后一个词这里了。而Decoder翻译的时候其实更需要当前 要翻译的这个词的(中英)信息 ,我们实际上不希望从Encoder的最后一个位置拿到信息。并且当要翻译的句子越长,解码的效果越差。

   举个例子,中英翻译 “我爱你” -> “I love you”。

   我们期望Decoder在翻译“I”的英文的时候,把注意力放在中文的“我”身上,而不希望从“你”身上拿到信息。实际上,这个操作叫作单词对齐。

   使用传统rnn不能实现这一点,而用注意力机制就可以很好的实现这一点,因为注意力的计算不依赖于上一个单词。除此之外,Attention的相比rnn还大大增加了计算效率,不同距离的单词也可以很快的完成计算,不管被计算的这两个单词距离多远,计算注意力花的时间是一样的,这样就可以实现并行计算了。

   注意力机制发生在Target的元素Query和Source中的所有元素之间。

   而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。其具体计算过程是一样的,只是计算对象发生了变化而已。

   怎么理解自注意力呢?比如这句话“这只蝴蝶真漂亮,停在花朵上,我很喜欢它”,我们怎么知道这个“它”指的是“蝴蝶”还是“花朵”呢?答案是用自注意力机制计算出这个“它”和其他所有输入词的“分数”,这个“分数”一定程度上决定了其他单词与这个联系。可以理解成越相似的,分就越高。通过计算,发现对于“它”这个字,“蝴蝶”比“花朵”打的分高。所以对于“它”来说,“蝴蝶”更重要,我们可以认为这个“它”指的就是蝴蝶。

   通过上面的例子,你会发现整个过程没有涉及翻译的过程,也就没有从“源句子”转化成“目标句子”这一个过程,或者说此时“源句子”=“目标句子”。这种情况就是对输入(也就是”源句子“)自身去计算注意力,称为自注意力。

总结一下,区别与联系主要在以下几点:

  • 在翻译任务中,如果源句子 \neq目标句子,那么你用目标句子中的词去query源句子中的所有词的key,再做相应运算,这种方式就是Attention;如果你的需求不是翻译,而是对当前这句话中某几个词之间的关系更感兴趣,期望对他们进行计算,这种方式就是Self-Attention。
  • 从范围上来讲,注意力机制是包含自注意力机制的。注意力机制给定K、Q、V,其中Q和V可以是任意的,而K往往等于V(不相等也可以);而自注意力机制要求K=Q=V。

以上就是本文的全部内容了,科研期间更博不易,如果您觉得写的还不错,欢迎点赞关注,让我们一起变得更强~

玻璃钢生产厂家上海玻璃钢彩绘骆驼雕塑毕节商场美陈雕塑玻璃钢滑雪雕塑玻璃钢雕塑设计哪里有天门户外玻璃钢雕塑定制南阳玻璃钢雕塑小品公司门头玻璃钢雕塑哪家好彭州玻璃钢门头雕塑双阳区玻璃钢雕塑工程电话多少大连市加工玻璃钢雕塑肖像玻璃钢雕塑公司江苏水果玻璃钢雕塑哪家便宜商场美陈田园张掖广场玻璃钢雕塑厂家玻璃钢卡通雕塑价格宣威市玻璃钢雕塑定做深圳室内商场美陈多少钱玻璃钢红色文化雕塑厂家北京玻璃钢雕塑制造厂徐汇区天桥梁玻璃钢花盆美陈商场什么意思株洲形象玻璃钢雕塑莆田玻璃钢海豚雕塑厂家西宁户外玻璃钢雕塑定做四平人物玻璃钢雕塑制作广州树脂玻璃钢雕塑工艺迪士尼玻璃钢雕塑厦门手糊法玻璃钢雕塑生产兰州玻璃钢雕塑加工公司南阳发光玻璃钢雕塑加工定制香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化