写点什么

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:502461

评论 1 条评论

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

如何消灭飞机的“黑色十分钟”,AI来帮忙

华为云开发者联盟

华为 AI 智能时代 模型 华为云

Spring Boot + Vue前后端分离项目,Maven自动打包整合

xcbeyond

maven 前后端分离 springboot 部署

7个获取访问者真实IP的方法,速学!!!

华为云开发者联盟

nginx 大前端 网站 IP 服务器

实战案例丨ModelArts在数据标注、数据过滤上的应用技巧:自动分组

华为云开发者联盟

人工智能 数据 图像识别 图片 分类

正则表达式基础详解

懒猫

Java 正则表达式 大前端 正则

week8 作业

Shawn

一文了解JDK12 13 14 GC调优秘籍-附PDF下载

程序那些事

GC JDK14 秘籍 JDK12 JDK13

一个好用的工作生活平衡方式

霍太稳@极客邦科技

安全系列之——RSA的前世今生

诸葛小猿

安全 加密解密 非对称加密 rsa

IO系列——UNIX五种IO模型

Java联盟

io 多路复用 异步IO

Nginx 限流配置

Bruce Duan

nginx

架构师那些不能碰的禁忌

曲水流觞TechRill

架构师

API接口限流

Bruce Duan

分布式限流 单体限流 限流算法

职场求生攻略答疑篇之 1 —— 加班沉思录

臧萌

程序员 加班

干货分享丨玩转物联网IoTDA服务系列四-智能网关

华为云开发者联盟

物联网 智能设备 应用场景 华为云 mqtt

国产开源流媒体SRS4.0对视频监控GB28181的支持

潇湘落木

音视频 云直播 短视频 流媒体

Kafka两个高性价比的参数调优

我是个bug

Java 大数据 kafka

[POJ 1002] 487-3279 C++解题报告

一直AC一直爽

POJ ACM

Linux服务器存在某进程CPU过高如何追溯其问题根源?

Nick

Java Linux centos

节约60%成本!虎牙直播云端大数据是怎么做到的?

腾讯云大数据

Go: 通过代码学习 Map 的设计 — Part II

陈思敏捷

map Go 语言

架构师训练营第八周作业

张明森

Redis系列(七):缓存只是读写回种这么简单吗?如果是,那么请你一定看看这篇文章!

z小赵

redis 分布式 高并发系统设计

华为云FusionInsight MRS融合大数据平台进阶之路

数据湖洞见

大数据 新特性 FusionInsight 华为云 智能数据湖

LeetCode 1052. Grumpy Bookstore Owner

liu_liu

算法 LeetCode

一文带你了解Zookeeper所有核心概念

小隐乐乐

zookeeper 分布式 分布式架构

ARTS 第 5 周

乌拉里

上海首批金融科技“监管沙盒”应用名单出炉 区块链技术备受青睐

CECBC

金融科技 金融监管 创新与安全 智能多元化

HTTPS详解

Bruce Duan

https 对称加密 非对称加密

Java架构-Java代码规范那些事

我是苞谷

Java

推荐一款技术人必备的接口测试神器:Apifox

狂师

测试 测试驱动开发实战营 接口测试 测试框架

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