NLP中的变形金刚

2019 年 11 月 26 日 AINLP
1.前言


上回讲了当前DNN中较为较为广泛应用的一种算法机制——Attention Mechanisms,此机制在模型可解释性和模型优化方面均取得了不错的效果。那么今天,我们来进一步了解attention算法在自然语言中的更深层次的应用。本次我们介绍下自然语言处理的“变形金刚”——Transformer模型,该算法是近一年都比较热门的bert系列算法的基础。


2.Transformer模型


上回提到的attention机制可以认为是对RNN模型的一种进阶优化,其基础仍为RNN算法,针对RNN模型,存在一些不足的地方:

  1. 有一定的长期依赖问题:虽然利用门限等方法得到了有效的缓解,但是此问题依旧存在,并且句子越长,此问题越严重;

  2. RNN有很大的性能问题:主要表现在训练阶段,如在RNN的前向计算中,每个隐藏状态Ht的计算,需要依赖Ht-1,Ht-2,...,无法做到像CNN那样的并行计算,尤其当数据量很大的情况下,此问题更为严重。


所以,如何更好的抽取文本的上下文信息,以及如何更好的提高计算性能,google的大神们在2017年提出了transformer算法,其利用self-attention的方法,完全摒弃掉RNN的结构,仅依赖attention的方式,构建了一种seq2seq的模型,可用于机器翻译等领域,取得了不错的效果,模型基本框架如图1所示:

图1 transformer模型架构图


我们来具体看下transformer是如何计算的:

  1. 输入层:transformer输入包括两部分:每个词的embedding+位置encoding向量,使用时,将其整合在一起输入到模型中;

  2. encoder和decoder层:encoder和decoder层的核心是利用attention的方式对输入进行编码和解码,此外两者中均加入残差网络的结构。

  3. 输出层:输出时,从左到右,先把右侧位置的元素遮挡掉,利用mask的attention方式进行训练预测。


为了更好的了解该算法,我们分为以下几个部分重点介绍:


第一部 分: multi-head Attention

Transformer中的attention部分,使用的为Multi-head Attention的方式。
Multi-head Attention是基于一种Scaled Dot-Product Attention计算方法,每次计算时,将后者重复计算多次,叠加在一起,从而保证每个输入能够提取足够的上下文信息。
那么Scaled Dot-Product Attention又是如何计算呢?下面即为该算法的示意图,具体计算步骤如下:
  1. 对于每个输入单词X1,X2,给定Wq,Wk,Wv三个矩阵,将x1和x2与这三个矩阵进行相乘,得到六个向量:q1、q2、k1、k2、v1、v2。其中这三个矩阵先随机初始给定,后面随模型训练不断迭代优化。

  2. 针对每一个单词,如第一个单词thinking,拿其q1与其他输入单词的k向量进行点乘得到各个score,s1=q1 * k1 ,s2=q1 * k2;
  3. 对每个score进行归一化,保证梯度的稳定,同时除以sqrt(dk),其中dk为向量q,k,v的长度;
  4. 利用softmax激活函数将score转化为权重w1,w2
  5. 加权求和得到各x的输出z,如z1=w1 * v1 + w2 * v2 


然后将上述计算步骤重复h次,将得到的h个小矩阵拼接在一起,利用一个简单的线性变换,得到每个输入的最终表达,这就是Multi-head attention的整体计算逻辑。
图2 Multi-Head Attention框架图

此处我们可以利用每次计算的权值w1,w2...来可视化查看输入的每个词之间的相关性,权重越大,说明相关性越强。
由于attention计算多次,每个attention层提取的词语之间的意义会有所不同,图3中可以看到第5个attention层中it与the、animal相关系较强,由此可以对模型优化提供指导意见。
图3 transformer模型input词语相关性图

第二部 分:Add & Norm

除去基础的attention单元外,transformer还有众多的add &norm层,该层计算逻辑如图4所示,主要分为两部分:

  1. Add层:此处采用残差网络的设置,将原输入X与经attention计算得到的Z进行叠加,从而保证梯度不会消失,避免模型退化的发生;
  2. LayerNorm层:将数据标准化为均值为0,方差为1的数据,这样可以减小数据的偏差,规避训练过程中梯度消失或爆炸的情况。

图4 transformer模型add&norm层框架图

第三部 分:Feed Forward层

模型中的前向反馈层,采用一种Position-wise feed-forward方法, 具体公式如下:
此处计算方式比较容易理解,先对输入加一个全连接网络,之后拼接一个relu激活函数,之后再加一个全连接网络即可。


第三部分:Positional encoding


在我们之前使用CNN或者RNN模型进行文本建模时,模型内部已经考虑到序列的序列位置了,而上述的self-attention,仅可以认为是一个词袋模型,未考虑到词的位置信息。为了解决这个问题,此处在input中,除词语的embedding外,再额外添加位置编码信息,具体计算依据以下方式,主要依据sin和cos的方式锁定单词位置:


那么上述就是transformer模型的主要核心内容了,模型整体就是依据上述的几个部分进行重复、叠加与拼接。


3.展望


本文是对上次attention的后续,主要介绍了self-attention的基础理论部分,主要内容来源于google的《Attention Is All You Need》,此论文对于后续bert、gpt-2的理解具有极其重要的作用。


后期将介绍如何利用BERT预训练模型,进行文本建模实践。




本文转载自公众号:数据天团,作者丁永兵


推荐阅读


通俗易懂的让你了解深度学习中的注意力机制


AI界最危险武器 GPT-2 使用指南:从Finetune到部署


SemBERT: BERT 的语义知识增强


BERT fintune 的艺术


子词技巧:The Tricks of Subword


T5 模型:NLP Text-to-Text 预训练模型超大规模探索

BERT 瘦身之路:Distillation,Quantization,Pruning

Transformer (变形金刚,大雾) 三部曲:RNN 的继承者


关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
0

相关内容

Attention机制最早是在视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。
【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
54+阅读 · 2020年6月24日
注意力图神经网络的多标签文本分类
专知会员服务
111+阅读 · 2020年3月28日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
66+阅读 · 2020年1月2日
深度学习视频中多目标跟踪:论文综述
专知会员服务
90+阅读 · 2019年10月13日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
绝对干货!NLP预训练模型:从transformer到albert
新智元
13+阅读 · 2019年11月10日
请收下这份 NLP 热门词汇解读
人工智能头条
6+阅读 · 2019年4月4日
3分钟看懂史上最强NLP模型BERT
新智元
22+阅读 · 2019年2月27日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
论文共读 | Attention is All You Need
黑龙江大学自然语言处理实验室
14+阅读 · 2017年9月7日
Arxiv
6+阅读 · 2019年7月11日
Arxiv
6+阅读 · 2019年3月19日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
26+阅读 · 2017年12月6日
VIP会员
相关VIP内容
【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
54+阅读 · 2020年6月24日
注意力图神经网络的多标签文本分类
专知会员服务
111+阅读 · 2020年3月28日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
66+阅读 · 2020年1月2日
深度学习视频中多目标跟踪:论文综述
专知会员服务
90+阅读 · 2019年10月13日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
相关资讯
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
绝对干货!NLP预训练模型:从transformer到albert
新智元
13+阅读 · 2019年11月10日
请收下这份 NLP 热门词汇解读
人工智能头条
6+阅读 · 2019年4月4日
3分钟看懂史上最强NLP模型BERT
新智元
22+阅读 · 2019年2月27日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
论文共读 | Attention is All You Need
黑龙江大学自然语言处理实验室
14+阅读 · 2017年9月7日
相关论文
Arxiv
6+阅读 · 2019年7月11日
Arxiv
6+阅读 · 2019年3月19日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
26+阅读 · 2017年12月6日
Top
微信扫码咨询专知VIP会员