近日,谷歌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层:
lBERT BASE :L=12,H=768,A=12,Total Parameters=110M
lBERT LARGE :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 learningis representation learning)将会越来越多的应用到NLP相关任务中,它们可以充分的利用目前海量的数据,然后结合各种任务场景,去训练出更为先进的模型,从而促进AI项目的落地。
未来已来,引领AI,这是我们的使命,也是广大AI科技工作者的使命。
深思考人工智能(iDeepWise Artificial Intelligence)是一家专注于类脑人工智能与深度学习核心科技的AI公司。核心团队由中科院自动化所、软件所、计算所、微电子所等中科院院所、清华大学一线青年AI科学家(博士10名)与领域顶级专家、营销专家组成。公司最为突出的技术是“多模态深度语义理解技术”,可同时理解文本、视觉图像背后的语义,主要面向场景为智慧医疗大健康和智能汽车。
理论 BERT AI
相关数据
Artificial Intelligence
在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)
来源: Russell, S., & Norvig, P. (2003). Artificial Intelligence: A Modern Approach.
Affective computing
情感计算(也被称为人工情感智能或情感AI)是基于系统和设备的研究和开发来识别、理解、处理和模拟人的情感。它是一个跨学科领域,涉及计算机科学、心理学和认知科学(cognitive science)。在计算机领域,1995年Rosalind Picard 首次提出affective computing。研究的目的是使得情感能够模拟和计算。这个技术也可以让机器人能够理解人类的情绪状态,并且适应它们的行为,对这些情绪做出适当的反应。这是一个日渐兴起的兴欣领域
来源: Wikipedia
Information extraction
信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。
来源:机器之心
Long-distance dependencies
也作“长距离调序”问题,在机器翻译中,比如中英文翻译,其语言结构差异比较大,词语顺序存在全局变化,不容易被捕捉
来源:机器之心
Language models
语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。
来源: 维基百科
Named entity recognition
命名实体识别(NER)是信息提取(Information Extraction)的一个子任务,主要涉及如何从文本中提取命名实体并将其分类至事先划定好的类别,如在招聘信息中提取具体招聘公司、岗位和工作地点的信息,并将其分别归纳至公司、岗位和地点的类别下。命名实体识别往往先将整句拆解为词语并对每个词语进行此行标注,根据习得的规则对词语进行判别。这项任务的关键在于对未知实体的识别。基于此,命名实体识别的主要思想在于根据现有实例的特征总结识别和分类规则。这些方法可以被分为有监督(supervised)、半监督(semi-supervised)和无监督(unsupervised)三类。有监督学习包括隐形马科夫模型(HMM)、决策树、最大熵模型(ME)、支持向量机(SVM)和条件随机场(CRF)。这些方法主要是读取注释语料库,记忆实例并进行学习,根据这些例子的特征生成针对某一种实例的识别规则。
来源: David, N. & Satoshi, S. (2007). A survey of named entity recognition and classification
Natural language processing
自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。
来源: 维基百科
prior knowledge
先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”
来源: 维基百科
word2vec
Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。
来源: 维基百科
Deep learning
深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Long Short-Term Memory
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。