QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

NLP 中的 attention 机制

  • 2019-09-26
  • 本文字数:2155 字

    阅读完需:约 7 分钟

NLP中的attention机制


本篇介绍在 NLP 中各项任务及模型中引入相当广泛的 Attention 机制。在 Transformer 中,最重要的特点也是 Attention。首先详细介绍其由来,然后具体介绍了其编解码结构的引入和原理,最后总结了 Attention 机制的本质。

1 注意力机制的由来

在深度学习领域,注意力机制模仿的是人类认知的过程。当人看到如下“美女伤心流泪”图时,细细想一下,人在做出图片中美女是在伤心流泪的过程,应该是先整体扫描该图片;然后将视觉注意力集中到美女的脸部;集中到脸部之后,再进一步将视觉注意力集中到眼睛部位。最后发现了眼泪,得出美女是在伤心流泪的结论。



人类在对信息进行处理的过程中,注意力不是平均分散的,而是有重点的分布。受此启发,做计算机视觉的朋友,开始在视觉处理过程中加入注意力机制(Attention)。随后,做自然语言处理的朋友们,也开始引入这个机制。在 NLP 的很多任务中,加入注意力机制后,都取得了非常好的效果。


那么,在 NLP 中,Attention 机制是什么呢?从直觉上来说,与人类的注意力分配过程类似,就是在信息处理过程中,对不同的内容分配不同的注意力权重。下面我们详细看看,在自然语言处理中,注意力机制是怎么实现的。

2 seq2seq 结构及其中的 Attention


如上图所示,是标准的编解码(seq2seq)机制的结构图,在机器翻译、生成式聊天机器人、文本摘要等任务中均有应用。其处理流程是通过编码器对输入序列进行编码,生成一个中间的语义编码向量 C,然后在解码器中,对语义编码向量 C 进行解码,得到想要的输出。例如,在中英文翻译的任务中,编码器的输入是中文序列,解码器的输出就是翻译出来的英文序列。


可以看出,这个结构很"干净",对于解码器来说,在解码出 y1,y2,y3 时,语义编码向量均是固定的。我们来分析下这样是否合理。


假设输入的是"小明/喜欢/小红",则翻译结果应该是"XiaoMing likes XiaoHong"。根据上述架构,在解码得到"XiaoMing",“likes”," XiaoHong"时,引入的语义编码向量是相同的,也就是"小明",“喜欢”,“小红"在翻译时对得到"XiaoMing”,“likes”," XiaoHong"的作用是相同的。这显然不合理,在解码得到"XiaoMing"时,"小明"的作用应该最大才对。


鉴于此,机智的 NLP 研究者们,认为应该在编解码器之间加入一种对齐机制,也就是在解码"XiaoMing"时应该对齐到"小明"。在《Neural Machine Translation By Jointly Learning To Align And Translate》中首次将这种对齐机制引入到机器翻译中。我们来看看,这是怎样的一种对齐机制。


我们先回顾一下刚才的编解码结构,其语义编码向量和解码器状态,通过如下的公式得到:



通常在解码时语义编码向量是固定的。若要实现对齐机制,在解码时语义编码向量应该随着输入动态的变化。鉴于此,《Neural Machine Translation By Jointly Learning To Align And Translate》提出来一种对齐机制,也就是 Attention 机制。



如上图示,论文中采用双向 RNN 来进行语义的编码,这不是重点,我们先不关注。其对齐机制整体思想是:编码时,记下来每一个时刻的 RNN 编码输出(h1,h2,h3,…hn);解码时,根据前一时刻的解码状态,即 yi-1,计算出来一组权重(a1,a2,…an),这组权重决定了在当前的解码时刻,(h1,h2,h3,…hn)分别对解码的贡献。这样就实现了,编解码的对齐。


下面我们用数学语言描述一下上面的过程。


首先,进行编码计算(h1,h2,…hn),i 时刻的编码状态计算公式如下:



然后,开始解码,加入此时在解码的 i 时刻,则需要计算 i 时刻的编码向量 Ci,通过如下的公式计算:



aij 是对不同时刻的编码状态取的权重值。由此可见,i 时刻的语义编码向量由不同时刻的编码状态加权求和得到。


下面看看,如何取得权重向量 a:



权重向量 ai 通过加入解码器前一个时刻的状态进行计算得到。eij 表示,在计算 Ci 时,hj 的绝对权重。通过对其使用 softmax 函数,得到 aij。aij 就是在计算 Ci 时,hj 编码状态的权重值。


得到权重向量 ai 及语义编码向量 Ci 后,就可以计算当前时刻的解码状态了:



这就是编解码机制中注意力机制的基本内容了,本质上就是为了实现编解码之间的对齐,在解码时根据前一时刻的解码状态,获取不同时刻编码状态的权重值并加权求和,进而获得该时刻语义编码向量。


那么,抽离编解码机制,Attention 机制的本质是什么呢?我们下面来看看。

3 Attention 机制的本质

我们回想一下,引入 Attention 机制的本意,是为了在信息处理的时候,恰当的分配好”注意力“资源。那么,要分配好注意力资源,就需要给每个资源以不同的权重,Attention 机制就是计算权重的过程。


如下图所示,



如上图所示,我们由资源 Value,需要根据当前系统的其他状态 Key 和 Querry 来计算权重用以分配资源 Value。


也就是,可以用如下的数学公式来描述 Attention 机制:



F 函数可以有很多,在 transformer 中用的是点积。

总结

Transformer 中最重要的特点就是引入了 Attention,其对于 Transformer 性能的重要性我们下一篇介绍。总的来说,Adttention 机制是一种对齐机制,它通过对系统当前的某些状态进行评估,来对系统资源进行权重分配,实现对齐,具体可以看机器翻译的例子。


作者介绍


小 Dream 哥,公众号“有三 AI”作者。该公号聚焦于让大家能够系统性地完成 AI 各个领域所需的专业知识的学习。


原文链接


https://mp.weixin.qq.com/s/kn4zYDCCkzBfnL1AP6g8RA


2019-09-26 18:502331

评论 1 条评论

发布
用户头像
Attention应该全文统译为注意力,第一次出现的地方用括号标注attention就好了,多处不统一,不好哦。
2019-09-28 02:46
回复
没有更多了
发现更多内容

实时云渲染赋能2023湾区文采会元宇宙虚拟展厅

3DCAT实时渲染

云VR 元宇宙虚拟展厅 线上展厅

软件测试/测试开发/全日制/测试管理丨Vue 页面布局组件-Semantic

测试人

软件测试

TDengine 签约积成电子

TDengine

tdengine 时序数据库

化作乾坤万里春:openGauss跨越生态拐点之后,改变了什么?

脑极体

数据库 自主化

市场动态:在比特币 ETF 投机和摄氏度网络向挖矿转型的背景下,2024 年将保持稳定开局

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

软件测试/测试开发/全日制/测试管理丨Vue 页面布局组件-Vuetify

测试人

软件测试

软件测试/测试开发全日制|Pytest结合CSV实现测试的数据驱动

霍格沃兹测试开发学社

倒计时6天|PolarDB开发者大会,我们讲什么?看什么?玩什么?

阿里云瑶池数据库

数据库 阿里云 云原生 开发者大会

1 月 21 日,三件事儿,线上不见不散丨社区活动

声网

AWS EC2 必知必会小技巧 | 机型特点解析和选型技巧分享

Greptime 格睿科技

数据库 AWS 时序数据库

Dubbo 3.3.0-beta 版本正式发布

阿里巴巴云原生

阿里云 云原生 dubbo

2023 IoTDB Summit:天谋科技产品负责人赵馨逸《利其器:如何用 IoTDB 可视化控制台实现高效管理与运维》

Apache IoTDB

软件测试/测试开发全日制|Pyest结合json实现数据驱动测试

霍格沃兹测试开发学社

智能导向的用户钱包画像分析:揭秘 NFT 市场的秘密

Footprint Analytics

NFT 加密钱包

数据库与低代码:加速开发,提升效率的完美结合

不在线第一只蜗牛

MySQL 数据库 sql 低代码

文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题

福大大架构师每日一题

福大大架构师每日一题

货拉拉智能监控实践:如何解决多云架构下的故障应急问题?

TakinTalks稳定性社区

涛思数据获评北京市“专精特新”中小企业

TDengine

涛思数据 tdengine 时序数据库

pdd商品详情数据接口

tbapi

拼多多API接口 拼多多商品详情数据接口 pdd详情数据接口 拼多多商品数据采集

数据库内核那些事|一文Get PolarDB IMCI如何对半结构化数据进行高效分析

阿里云瑶池数据库

数据库 阿里云 数据结构 云原生

tb商品详情数据抓取

tbapi

淘宝商品详情数据接口 淘宝API接口 天猫商品详情数据接口 天猫API接口 tb商品详情数据接口

期待!《数字化运维路线图》震撼发布(第一部分)

博睿数据

软件测试/测试开发全日制|Pytest测试框架fixture作为参数使用

霍格沃兹测试开发学社

NLP中的attention机制_AI&大模型_小Dream哥_InfoQ精选文章