从Attention到BERT

引言

众所周知,注意力机制(Attention Mechanism)是今年来被广泛应用于各个机器学习领域,特别是NLP和CV的一个重要的组件。目前风头正劲的Transformer和Google的BERT模型都是源自于attention的思想。本文将尽力从整体理解的角度去对attention机制、Transformer模型、BERT模型做一次简单的介绍与总结。

Attention Mechanism

Attention的思想是相当直观的:顾名思义,attention mechanism就是想要模仿人类的注意力机制。人类在观察一个场景、一张图片,或是听到一句话,看到一个句子的时候,通常不是对视野里的每一个像素,句子里的每一个词语都报之以同等的注意力的,而往往是对自己更感兴趣的局部有着更多的关注。
Attention的思想最先是被用在NMT(neural machine translation)上的。在论文Neural Machine Translation by Jointly Learning to Align and Translate中,作者提出了一个双向RNN的encoder-decoder结构,并在decoder中引入了attention机制,使得decoder在产生翻译的句子中的每一个词语的时候,可以决定是否更多地注意到原句子中的一些部分。这种方法使得模型对于长句子的翻译效果提升明显。
Luong等人在ICLR2015的Effective Approaches to Attention-based Neural Machine Translation讨论总结了不同的attention结构以及它们的实验结果。文章提到的attention有两种形式:
1.Global attentional model
从Attention到BERT
所谓将attention机制加入到RNN中就是指在产生隐藏状态ht的时候,首先计算一个context vector ct,再根据ct和ht通过一个简单的fc层计算出新的ht:
从Attention到BERT
而context vector,则是对之前所有隐藏状态hs的加权和,每一个hs的权值at(s)便是其与ht计算得到的一个分数经过softmax的结果:
从Attention到BERT
其中这个socre的计算方法可以有多种,计算的值类似于hs与ht的相似度?
从Attention到BERT
2.Local attention model
从Attention到BERT
因为global attention需要计算每一个之前的hidden state和当前的hidden state之间的score,计算开销比较大。为了减少计算,local attention就是在一个窗口[pt−D, pt+D]内进行attention操作。其中pt代表用于attention操作的中间position,D为窗口的大小(一般是一个经验值)。pt的选择,如果假设hs与ht的联系是随着距离增加而单调递减的话,那么可以直接令pt = t。或者可以对pt也进行预测:
从Attention到BERT
再对at(s)加上一个高斯分布:
从Attention到BERT
其中,s是句子的长度,vp和wp都是在网络中需要学习的参数。
在最后的实验中,local attention的效果甚至要高于global attention。