文章目录
本文主要讲解Bert模型的核心:transformer。transformer利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。通过先讲解Attention机制,再讲解Transformer模型,理解它的工作原理。
Attention机制基本思想
Attention机制源自于人类视觉注意力机制:将有限的注意力集中在重点信息上,「从关注全部到关注重点」,从而节省资源,快速获得最有效的信息。Attention就是一种权重参数的分配机制,目标是帮助模型捕捉重要信息,本质是一种带权求和。
下图是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示。
Encoder是对输入句子Source x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4进行编码,将输入句子通过非线性变换转化为中间语义表示C:
C = F ( x 1 , x 2 , x 3 , … x n ) C = \mathcal F(x_1,x_2,x_3,\ldots x_n) C=F(x1,x2,x3,…xn)
对于解码器Decoder来说,其任务是根据句子Source的中间语义表示C和之前已经生成的历史信息来生成i时刻要生成的单词,即:
y i = G ( C , y 1 , 2 , … y i − 1 ) y_i = \mathcal G(C,y_1,_2,\ldots y_{i-1}) yi=G(C,y1,2,…yi−1)
注: G 、 F \mathcal G、\mathcal F G、F均是非线性变换函数
如果Source是中文句子,Target是英文句子,那么这就是解决机器翻译问题的Encoder-Decoder框架,在这个翻译的过程中,每个target的生成过程如下:
y 1 = G ( C ) y 2 = G ( C , y 1 ) y 3 = G ( C , y 1 , y 2 ) y_1 = \mathcal G(C) \\ y_2 = \mathcal G(C,y_1) \\ y_3 = \mathcal G(C,y_1,y_2) y1=G(C)y