近日,谷歌AI团队发布的BERT模型已经刷屏各大技术平台与博客,燃爆AI的同时,也激起了“迪瓦”的好奇心。BERT模型的全称是Bidirectional Encoder Representations from Transformers,它是一种新型的语言模型。之所以说是一种新型的语言模型,是因为它与其他语言模型相比,有独到之处,这个独到之处在于BERT通过联合调节所有层中的双向Transformer来训练预训练深度双向表示。所以,它只需要一个额外的输出层来对预训练BERT进行微调就可以满足各种任务,没有必要针对特定任务对模型进行修改,这也是为什么BERT模型能做11项NLP任务上取得突破进展的原因。
想深入了解BERT模型,首先应该理解语言模型。预训练的语言模型对于众多自然语言处理问题起到了重要作用,比如SQuAD问答任务、命名实体识别以及情感识别。目前将预训练的语言模型应用到NLP任务主要有两种策略,一种是基于特征的语言模型,如ELMo模型;另一种是基于微调的语言模型,如OpenAI GPT。这两类语言模型各有其优缺点,而BERT的出现,似乎融合了它们所有的优点,因此才可以在诸多后续特定任务上取得最优的效果。
图1 预训练模型结构对比图
下面将从BERT模型的结构、输入以及训练三块进行介绍。
BERT模型总体结构
BERT是一种基于微调的多层双向Transformer编码器,其中的Transformer与原始的Transformer是相同的,并且实现了两个版本的BERT模型,在两个版本中前馈大小都设置为4层:
lBERTBASE:L=12,H=768,A=12,Total Parameters=110M
lBERTLARGE:L=24,H=1024,A=16,Total Parameters=340M
其中层数(即Transformer blocks块)表示为L,隐藏大小表示为H,自注意力的数量为A。
BERT模型输入表示
输入表示可以在一个词序列中表示单个文本句或一对文本(例如,[问题,答案])。对于给定的词,其输入表示是可以通过三部分Embedding求和组成。Embedding的可视化表示如图1-2所示。
图2 BERT模型的输入表示
其中:
Token Embeddings表示的是词向量,第一个单词是CLS标志,可以用于之后的分类任务,对于非分类任务,可以忽略词向量;
Segment Embeddings用来区别两种句子,因为预训练不只做语言模型还要做以两个句子为输入的分类任务;
Position Embeddings是通过模型学习得到的。
BERT模型预训练任务
BERT模型使用两个新的无监督预测任务对BERT进行预训练,分别是Masked LM和Next Sentence Prediction:
Masked LM
为了训练深度双向Transformer表示,采用了一种简单的方法:随机掩盖部分输入词,然后对那些被掩盖的词进行预测,此方法被称为“Masked LM”(MLM)。预训练的目标是构建语言模型,BERT模型采用的是bidirectional Transformer。那么为什么采用“bidirectional”的方式呢?因为在预训练语言模型来处理下游任务时,我们需要的不仅仅是某个词左侧的语言信息,还需要右侧的语言信息。
在训练的过程中,随机地掩盖每个序列中15%的token,并不是像word2vec中的cbow那样去对每一个词都进行预测。MLM从输入中随机地掩盖一些词,其目标是基于其上下文来预测被掩盖单词的原始词汇。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右两侧的上下文,这使得可以预训练深度双向Transformer。Transformer编码器不知道它将被要求预测哪些单词,或者哪些已经被随机单词替换,因此它必须对每个输入词保持分布式的上下文表示。此外,由于随机替换在所有词中只发生1.5%,所以并不会影响模型对于语言的理解。
Next Sentence Prediction
很多句子级别的任务如自动问答(QA)和自然语言推理(NLI)都需要理解两个句子之间的关系,譬如上述Masked LM任务中,经过第一步的处理,15%的词汇被遮盖。那么在这一任务中我们需要随机将数据划分为等大小的两部分,一部分数据中的两个语句对是上下文连续的,另一部分数据中的两个语句对是上下文不连续的。然后让Transformer模型来识别这些语句对中,哪些语句对是连续的,哪些对子不连续。
主流语言模型对比
Word2vec作为里程碑式的进步,对NLP的发展产生了巨大的影响,但Word2vec本身是一种浅层结构,而且其训练的词向量所“学习”到的语义信息受制于窗口大小,因此后续有学者提出利用可以获取长距离依赖的LSTM语言模型预训练词向量,而此种语言模型也有自身的缺陷,因为此种模型是根据句子的上文信息来预测下文的,或者根据下文来预测上文,直观上来说,我们理解语言都要考虑到左右两侧的上下文信息,但传统的LSTM模型只学习到了单向的信息。在今年年初,ELMO的出现在一定程度上解决了这个问题,ELMO是一种双层双向的LSTM结构,其训练的语言模型可以学习到句子左右两边的上下文信息。但此处所谓的上下文信息并不是真正意义上的上下文。除此之外,OpenAI 的GPT是利用了transform的编码器作为语言模型进行预训练的,之后特定的自然语言处理任务在其基础上进行微调即可。和LSTM相比,此种语言模型的优点是可以获得句子上下文更远距离的语言信息,但也是单向的。BERT的出现,似乎融合了它们所有的优点,并摒弃了它们的缺点,因此才可以在诸多后续特定任务上取得最优的效果。
模型 | 获得长距离语义信息程度 | 左右上下文语义 | 是否可以并行 |
Word2vec | 1 | True | True |
单向LSTM | 2 | False | False |
ELMo | 2 | True | False |
OpenAI GPT | 3 | False | True |
BERT | 3 | True | True |
注*并非真正意义上的双向
BERT模型场景应用
深思考人工智能(iDeepWise Artificial Intelligence)最为突出的技术是“多模态深度语义理解技术”,可同时理解文本、视觉图像背后的语义,结合公司在具体业务场景,在此我们简要分析BERT在机器阅读理解、命名实体识别以及情感计算等应用场景下的前景。
命名实体识别
命名实体是文本中信息的主要载体,是构建信息抽取系统的重要组成部分。BERT模型在CoNLL-2003 NER数据集的试验结果F1值相对于基线模型(CVT+Multi)只提高0.2个百分点,似乎指标上没有什么惊艳的表现——模型在实验上获得的指标提升远低于增加的计算成本。但是这种方式可以有效利用已有数据进行预训练,充分利用先验知识,在领域迁移性,模型通用型方面有巨大优势。在命名实体识别,尤其是在开放域实体方面,BERT模型给了我们很大的想象空间,相信以后在开放域实体识别方面会不断刷新基线模型的指标。
机器阅读理解
在机器阅读理解领域,经过谷歌、微软、百度、科大讯飞、腾讯、斯坦福大学等在内的众多研究机构的不懈努力,目前已形成了“向量化-语义编码-语义交互-答案预测”这样一套四层机器阅读理解模型体系。从英文领域的代表SQuAD技术评测到中文领域的代表2018机器阅读理解技术竞赛,Top团队无一例外的在“向量化”层做足了文章,“向量化”层主要负责将问题及篇章公离散字符转变为隐含语义的表征向量,从One-Hot到Word2vec/Glove再到Elmo,这一系列技术的变革都是在最大化的利用无监督的预训练方式将更多的隐含语义信息嵌入模型,从而在不用应用场景中提高模型的评测指标。BERT模型则是利用Deep Bidirectional Transformers预训练一个通用语言模型,从而更好的正确理解语句和文章的语义信息。通过在SQuAD1.1竞赛评测中惊人表现也证实了该模型至少在目前已经开始引领NLP发展的潮流,但能不能最终摘取AI领域最后的皇冠,只能时间去验证。
情感计算
在情感计算领域,希望可以借助其强大的语言建模能力来获得更多的领域知识,进而减少后续特定自然语言任务的人工标注成本。比如:可以先在维基百科或者某些商业售后评论上预训练语言模型,对相关领域进行“知识学习”,然后结合现有的有监督学习进行情绪识别和情感计算。
.....
总结
语言模型的每一次进步都推动着NLP的发展,从Word2vec到ELMo,从OpenAI GPT到BERT,我们有幸见证着一个又一个记录被打破,见证着一个又一个AI项目成功落地。在多个应用场景,我们基于“多模态深度语义理解技术”研发的多个AI产品的问世正是众多NLP核心技术的结晶,它们集成了先进的机器阅读理解、场景理解、多轮交互、意图识别、情感计算等能力,为用户带来专业、温馨、体贴的多轮交互体验。
通过这些发展我们也可以洞悉到,未来表征学习(Deep learning is representation learning)将会越来越多的应用到NLP相关任务中,它们可以充分的利用目前海量的数据,然后结合各种任务场景,去训练出更为先进的模型,从而促进AI项目的落地。
未来已来,引领AI,这是我们的使命,也是广大AI科技工作者的使命。