通俗易懂理解Attention机制

阅读大概需要5分钟

跟随小博主,每天进步一丢丢

作者:何之源
链接:https://zhuanlan.zhihu.com/p/28054589
来源:知乎

Attention机制理论

在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。如机器翻译问题,当要翻译的句子较长时,一个c可能存不下那么多信息,就会造成翻译精度的下降。Attention机制通过在每个时间输入不同的c来解决这个问题,下图是带有Attention机制的Decoder:

每一个c会自动去选取与当前所要输出的y最合适的上下文信息。具体来说,我们用衡量Encoder中第j阶段的hj和解码时第i阶段的相关性,最终Decoder中第i阶段的输入的上下文信息就来自于所有的加权和

举个栗子

以机器翻译为例(将中文翻译成英文):

输入的序列是“我爱中国”,因此,Encoder中的h1、h2、h3、h4就可以分别看做是“我”、“爱”、“中”、“国”所代表的信息。在翻译成英语时,第一个上下文c1应该和“我”这个字最相关,因此对应的就比较大,而相应的 就比较小。c2应该和“爱”最相关,因此对应的就比较大。最后的c3和h3、h4最相关,因此的值就比较大。

至此,关于Attention模型,我们就只剩最后一个问题了,那就是:这些权重是怎么来的?

事实上,同样是从模型中学出的,它实际和Decoder的第i-1阶段的隐状态、Encoder第j个阶段的隐状态有关。

同样还是拿上面的机器翻译举例,的计算(此时箭头就表示对h'和同时做变换):

的计算:

的计算:

以上就是带有Attention的Encoder-Decoder模型计算的全过程。

实例代码

之前我写的一篇实现机器翻译的代码和Attention机制公式详解的文章:

基于attention的seq2seq机器翻译实践详解

IELTS a bit

under way 进行中;航行中;在行进

dislodge vt. 驱逐;使...移动;用力移动

              vi. 驱逐;离开原位

setting n. 环境;安装;沉落

           v. 放置;沉没;使...处于某位置

replenish vt. 补充,再装满;把...装满;给...添加燃料

flourishing adj. 繁华的;繁茂的;盛行的

                 v. 茂盛

优质公众号推荐

主攻内容:Python基础巩固,进阶以及有趣应用

公号特色:全面发展,包括但不限于PythonLinux等。

功能简介:领域包括了「面向 Python 基础,进阶和有趣应用」的一站式技术分享,挖掘学习者在学习当中遇到的各类问题并分享经验,关注实用技能有趣新闻,感兴趣的推荐关注。

笔者自述:号主是一个爱读书的码农,致力于打造一个有用良心走心的公众号。

【这个公众号博主是在我300粉丝的时候认识的,一句话总结:被技术耽误的大文豪O.O】

推荐阅读:

精彩知识回顾

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值