Bert系列(1):从语言模型和Transformer开始

最近在工作中用bert做了不少NLP的算法任务,但是对bert的前世今生总感觉了解不够深入,通过开源社区的知识分享和原始论文的研读,做了以下学习笔记,结合工作中遇到场景,争取做到温故知新:

博客来源:【1】http://jalammar.github.io/illustrated-transformer/

                  【2】https://zhuanlan.zhihu.com/p/48508221

                  【3】https://zhuanlan.zhihu.com/p/46833276

1. Language Model

语言模型来辅助NLP任务已经得到了学术界较为广泛的探讨,通常有两种方式:

1.1 Feature-based方法

Feature-based指利用语言模型的中间结果也就是LM embedding, 将其作为额外的特征,引入到原任务的模型中,例如在下图中,采用了两个单向RNN构成的语言模型,将语言模型的中间结果

引入到序列标注模型中,如下图所示,其中左边部分为序列标注模型,也就是task-specific model,每个任务可能不同,右边是前向LM(Left-to-right)和后向LM(Right-To-Left), 两个LM的结果进行了合并,并将LM embedding与词向量、第一层RNN输出、第二层RNN输出进行了concat操作。

Feature-based

1.2 Fine-tuning方法

Fine-tuning方式是指在已经训练好的语言模型的基础上,加入少量的task-specific parameters, 例如对于分类问题在语言模型基础上加一层softmax网络,然后在新的语料上重新训练来进行fine-tune。

又比如,针对实体识别,fine-tuning的方式就是在语言模型的基础上加一层CRF层,并在实体标注的训练语料重新训练模型。

首先语言模型采用了Transformer Decoder的方法来进行训练,采用文本预测作为语言模型训练任务,训练完毕之后,加一层Linear Project来完成分类/相似度计算等NLP任务。因此总结来说,LM + Fine-Tuning的方法工作包括两步:(1)构造语言模型,采用大的语料A来训练语言模型(2)在语言模型基础上增加少量神经网络层来完成specific task例如序列标注、分类等,然后采用有标记的语料B来有监督地训练模型,这个过程中语言模型的参数并不固定,依然是trainable variables.


2. Transformer

2.1 什么是Transformer

个人理解:一个解决长期依赖的,不依赖顺序的,并行的特征抽取器。

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer由且仅由self-Attention和Feed Forward Neural Network组成。

采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:(1)时间片 t的计算依赖 t-1时刻的计算结果,这样限制了模型的并行能力;(2)顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。

首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。

Transformer的本质上是一个Encoder-Decoder的结构,可以按下图结构进行理解:


Encoder-Decoder结构

如论文中所设置的,编码器由6个编码block组成,同样解码器是6个解码block组成。与所有的生成模型相同的是,编码器的输出会作为解码器的输入,如下图所示:


encoder-decoder交互

在Transformer的encoder中,数据首先会经过一个叫做‘self-attention’的模块得到一个加权之后的特征向量 Z ,这个 Z 便是论文公式1中的 [公式1] :


特征向量z

得到 [公式1]之后,它会被送到encoder的下一个模块,即Feed Forward Neural Network。这个全连接有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数,可以表示为:

Feed Forward Neural Network

在最底层的block中,x将直接作为Transformer的输入,而在其他层中,输入则是上一个block的输出。

x在第一层encoder直接作为输入

Decoder的结构如下图所示,它和encoder的不同之处在于Decoder多了一个Encoder-Decoder Attention,两个Attention分别用于计算输入和输出的权值:Self-Attention:当前翻译和已经翻译的前文之间的关系;Encoder-Decoder Attention:当前翻译和编码的特征向量之间的关系。

2.2 Self-Attention

Self-Attention是Transformer最核心的内容,其核心内容是为输入向量的每个单词学习一个权重

权重学习示意图

在self-attention中,每个单词有3个不同的向量,它们分别是Query向量( Q),Key向量( K )和Value向量(V),长度均是64。它们是通过3个不同的权值矩阵由嵌入向量 [公式] 乘以三个不同的权值矩阵 W(q),W(k),W(v)得到,其中三个矩阵的尺寸也是相同的。均是 512*64。


具体步骤


self-attention单个Query计算流程


self-attention整体结构

Multi-Head Attention:Multi-Head Attention相当于h个不同的self-attention的集成(ensemble),在这里我们以h=8举例说明。Multi-Head Attention的输出分成3步:

将数据X分别输入到图13所示的8个self-attention中,得到8个加权后的特征矩阵:

特征矩阵

将8个Z(i)按列拼成一个大的特征矩阵;特征矩阵经过一层全连接后得到输出Z 。


Multi-Head Attention

2.3 Position Embedding

截止到已经介绍的模块,Transformer模型并还没有具备捕捉顺序序列的能力,也就是说无论句子的结构怎么打乱,Transformer都会得到类似的结果。Transformer目前只是一个功能更强大的词袋模型而已。

为了解决这个问题,论文中在编码词向量时引入了位置编码(Position Embedding)的特征。具体地说,位置编码会在词向量中加入了单词的位置信息,这样Transformer就能区分不同位置的单词了。通过下图编码公式进行位置编码。

编码公式

根据一下两个正余弦公式原理  ,这为模型捕捉单词之间的相对位置关系提供了保障。

正余弦公式原理

2.4 Summary


Transformer整体网络结构

decoder解码之后,解码的特征向量经过一层激活函数为softmax的全连接层之后得到反映每个单词概率的输出向量。此时便可以通过CTC等损失函数训练模型了。

而一个完整可训练的网络结构便是encoder和decoder的堆叠,如左图完整的Transformer的结构。

Transformer本质上也只是一个全连接(或者是一维卷积)加Attention的结合体。

Transformer的设计最大的带来性能提升的关键是将任意两个单词的距离是1,这对解决NLP中棘手的长期依赖问题是非常有效的。

Transformer失去的位置信息其实在NLP中非常重要,且捕捉局部特征的能力比较缺失,而论文中在特征向量中加入Position Embedding也只是一个权宜之计。

Transformer是第一个用纯attention搭建的模型(特征抽取器),不仅计算速度更快,在翻译任务上获得了更好的结果,也为后续的BERT模型做了铺垫。

论文参考

Reference:

[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need [C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.

[2] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

[3] Devlin J, Chang M W, Lee K, et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

[4] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

[5]Peters, Matthew, et al. "Semi-supervised sequence tagging with bidirectional language models."Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Vol. 1. 2017.

[6]Peters M, Neumann M, Iyyer M, et al. Deep Contextualized Word Representations[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018, 1: 2227-2237.

[7]Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/language-unsupervised/language_ understanding_paper. pdf, 2018.

[8]Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.

[9]Pre-training of Deep Bidirectional Transformers for Language Understanding

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容