从Transformer到BERT模型-葛瀚骋

一词多义问题,前两个bank代表银行,后两个bank代表河床:


Elmo全程为Embeddings from Language MOdels,是一个基于LSTM的语言模型,主要是根据上下文预测下一个词。他对一词多义提供了一个思路。Elmo对于每一个词都会给出3个Embedding。

如果Elmo把LSTM换成Transformer就和Bert的结构基本一样了


LSTM与Transformer的区别是什么?LSTM是迭代的,一个接着一个字来的。Transformer是并行的,所有的字可以同时训练。Transformer使用了位置嵌入,帮助模型理解语言的顺序。

最重要的是使用了Multi-Head Attention。给你一个Quary,你有一个Keys,你需要对每一个Key计算和Quary的相关度,最后用value表示这个Quary(?)。


  • 最新的榜单被ALBert霸榜了,ALBert可以看做是瘦版的Bert。
  • Bert全称为使用Transformer的双向编码表象(BERT是编码器)。
  • Bert有两个方面:一个是Pre-traning,一个是fine-tuning。Pre-traning是从一个很大的wiki来Pre-train。
  • Bert站在巨人的肩膀上,集大家之所长。基本思想和Word2Vec和Cbow很相近,使用context来预测单词。结构和ELMO相似,都是双向结构。
  • 它不是第一次使用Transformer,第一次是GPT。ELMO把LSTM换成Transformer的话就是BERT
  • GPT只考虑了从左向右的信息。GPT-2效果太好没有开源。


BERT是序列到序列的结构,中间是Transformer的Encoder


BERT的输入有3个部分Token Embeddings、Segment Embeddings(表示word属于那一段)、Position Embeddings(表示单词的位置)。
CLS是做分类任务的一个标志,因为本身是并行结构,放在哪个位置都可以。SEP是用来区分两个句子的,因为通常train Bert的时候会把两个句子放到一起。


BERT有两个TASK,如图
因为预训练的时候是这两个任务同事训练的,所以LOSS就把这两个任务的LOSS加起来。
BERT官方有两个版本:
基础版是有12个Transformer,hiden Embeddings是768,Head是12(?Head是什么),参数总数是110M
Large版有24个Transformer Layer,hiden Embeddings是1024,Head是16(?),参数总数是340M

Masked Language Model 灵感来源于完形填空。在BERT中mask了15%的token。这15%的token中 分3中情况:
80%的情况会用[mask]这种特殊字符来取代,10%的情况会用另外一个词取代,还有10%的可能性保持不动(?那不应爱是总共mask了15%*90%吗)。

最后在计算loss的时候,只关注被mask掉的token,其他的token无论是好是坏都不管。(?为啥)

另外一个task:Nest Sentence Prediction,更关注与两个句子之间的关系。如下所示, 最下面input的两句话是有上下文关系的,就被label成isNext。实际训练中在isNext的sentence和NotNext的sentence各选一半来训练。相对于mask language model, Nest Sentence Prediction相对来说是比较简单的。 对于Nest Sentence Prediction这个task,只需要用到CLS这个token产生的hidden vector来计算他们是不是有next的relationship。

训练技巧:

  1. 表示从一个文档中生成多少data,如果你的data不够多可以把这个参数适当调高一点。比如说我有一句话,我会增加这句话里面不同token做mask的机会。这样我们就可以生成更多的training data。
  2. 用来定义一个sample里面最大、最多可能被mask token的数量
  3. BERT中,traning的时候不是用一个word和一个word ,而是用一个word pieces,他会把一个完整的词分成sub-word,例如new york会分成五份。这个参数是用来,在做mask的时候,有时候我们想针对某个词而不是只是针对subword,如果把这个参数生成为真的话,会对new york中5个subwords,(后面因为英文单词没听懂)
  4. 如果你的文档里的长度超过了限制,从开头或者结尾随机删除来达到长度。

深入理解BERT的机制是怎么样的
第一个head我们可以看到连线非常的密集,所以他的attends相对来说意义不大。第二个到第三个head他表示的是next word,found对应in,in对应taiwan。head8-7来说更多的是attends句子的停止符。head 6-11刚好是attends到句号.所以对于每一个heads来说,每一个代表的意义不一样。所以这就是bert很powerful,因为BERT本身的这个 mutil-head这个结构能抓住不一样的feature,无论是局部的feature还是全局的feature。

我们看完了head,对于BERT来说还有12个layer。每一个颜色代表一个layer,从第一个layer到第十二个layer,同样颜色的layer会比较接近,会在同一个颜色的区域。这就说在同一层的layer他们之间是比较相近的。对于12层+12个head的bert模型,对于每一层来说,他们head的功能都差不太多。对于每一个head里面来说,不同head表现的功能室完全不一样的。

那我们就问BERT学到了什么东西才使他这么强大,或者说对于不同的任务来说BERT到底学到了些什么东西。这个图是用BERT-LARGE model做的实验,针对了9种NLP常见的不一样的任务。这图横坐标代表Transformer有24层,纵坐标代表发挥作用的大小,指标高代表发挥作用大,就是蓝色所表示的那些。蓝色越长表示在这个任务中,这些layer发挥的作用越大。

BERT在fine-tune之后,就是说。大家熟悉ELMO就发现,BERT同样就像ELMO一样。ELMO给每一个word提供3个embedding,针对不同的task把这些embedding加起来。BERT同样,BERT有24层,那对于同一个词就有24个embedding。我们可以把这24个embedding做average。做average怎么给每一层增加权重,是通过不同任务训练出来的。权重就是蓝色代表,蓝色越长权重越大,在这一层中扮演的角色就越重。

BERT现在还提供了multilinggual BERT 版本,被训练了104个语言,我在工作中也是用了multilinggualBERT,效果是非常好的。工作中有一个指代关系,比如上一句提到了,谁是川普,下一句说他的老婆是谁,你要把上一句的川普给指代过来。如果我们有一个model,现在想转换成multilinggual model,直接把之前的embedding直接换成BERT。例如我先用word embedding,再用lstm去encode,然后我们把这部分直接换成BERT去encode。tranin的时候会把多种语言合起来,最后反而会比单独tranin英语、法语要好。

接下来我们有了pre-tranin,我们能干什么:


论文中提到了4种fine-tune之后的应用。第一种是classification,只用CLS这一种token。比如我现在有两个sentence,我可以预测哪一个sentence是下一句话,或者这两句话是不是一个意思有没有相关性。对于single sentence,也可以做成sentence的classification,比如这句话代表的事某一种类型或者某一个topic,或者说这句话的意图是哪一类。所以BERT model都不变,要想用BERT model做分类问题的时候,就直接用cls第一个token出来的hidden vector就可以了。

第二个应用比较广的就是QA中的应用。结构还是一样的结构。QA问题可以把sentence1换成question,sentence2换成paragraph。目的是给一个问题,要在paragraph中找到正确答案,对于QA问题需要设立两个额外的vector(start/end)。我们可以用start的vector与每一个paragraph对应的hidden vector做点乘,然后用softmax输出最大对应的token。end也同理,start与end之间就是对应的answer。如果start大于end,对于这个question,这个paragraph中没有答案。start和end向量也是初始化后自己学习的,因为整个training过程中是supervise learning,他有他的groundthruth。


上面更多讲的是BERT对于QA在任务级别上的使用,那从系统级别上来看,我们怎么在QA系统中应用BERT的呢?对于问答系统通常分为两部分,一部分是Retriever,一部分是QA,就是说有两个阶段,一个阶段是检索一个阶段是问答判断。

首先我们往往会把比较长的文档切割成段落或者句子。利用搜索的倒排序简历搜索查询的机制。如图中显示的第一部分是检索,和常规的检索过程是一样的例如使用BM25、RM3等基本的技术,我们是想尽可能找出和question有关的文章。第二个阶段是和之前介绍的问答判断的环节,BERT(?用BERT)在训练QA系统的时候会用到类似于SQuAD这样比较大的问答数据集合。一般有了Pre-treain的BERT,有了SQuAD数据集,在fine-tune BERT model。fine-tune之后被后来执行线上的推理。这是一个比较通用的系统构架,结合一些资料来看,吧BERT用到QA上来看表现可以提升30%。

接下来算是一个比较简单的任务,NER就是命名实体识别,识别一句话或者文档中有特定意义的实体(人名、地名、专有名词、时间、数量),BERT能完成这样的任务,本质上来说BERT是一个Squence2Squence的model。所以你把一个sentence输入到一个BERTmodel ,BERT对于每一个相对应的hidden vector属于哪一个类别,例如属于人名还是属于时间或者属于钱。所以对于NER来说只需要比较短的上下文。所以浅层的一些非语义特征貌似能很好的解决这一类的问题,BERT能发挥的余地就没有QA那样显著。BERT做摘要的提升是非常显著的,因为摘要往往会很长,很大一段或者好几个document,所以他的context就很长。对于NER和classification来说BERT往往不能很好的发挥它的作用,就像杀鸡用牛刀,有力使不出来。

下面再简单看一下BERT在chat bot里面,这里的例子举的是单轮对话的应用。比如说需要做intent classification和Slot filling(槽填充)。聊天机器人和对话系统最近几年都非常的活跃亚马逊和谷歌都花了很多资金人力物力在push这个方面,以我的观念还是在很初期,要达到用户满意的体验还有相当的距离。

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