参考文章:
深度分析常识增强语义表明模型——ERNIE_财神Childe的博客-CSDN博客_ernie模型
ERNIE_ERNIE开源开发套件_飞桨
github.com/PaddlePaddl…
1.背景介绍
近年来,语义表明(language representation)技能的发展,使得 “预练习-微调” 作为处理NLP使命的一种新的范式开始出现。一个通用的表明才能强的模型被选择为语义表明模型,在预练习阶段,用很多的语料和特定的使命练习该模型,使其编码海量的语义常识;在微调阶段,该模型会被加上不同的简略输出层用以处理下流的 NLP 使命。早期较为闻名的语义表明模型包含ELMo 和 GPT ,别离根据双层双向LSTM和Transformer Decoder结构,而实在让语义表明技能大放异彩的是BERT (Bidirectional Encoder Representations from Transformers) 的提出。BERT以Transformer Encoder为骨架,以屏蔽言语模型 (Masked LM) 和下一句猜测(Next Sentence Prediction)这两个无监督猜测使命作为预练习使命,用英文Wikipedia和Book Corpus的混合语料进行练习得到预练习模型。结合简略的输出层,BERT提出伊始就在11个下流NLP使命上获得了 SOTA(State of the Art)成果,即作用最佳,其间包含了自然言语了解使命GLUE和阅读了解SQuAD。
能够看到,用语义表明模型处理特定的NLP使命是个相对简略的进程。因而,语义表明模型的预练习阶段就变得十分重要,具体来说,模型结构的选取、练习数据以及练习方法等要素都会直接影响下流使命的作用。当时的很多学术作业便是围绕预练习阶段而打开的,在BERT之后各种语义表明模型不断地被提了出来。
ERNIE(Enhanced Representation through kNowledge IntEgration)是百度提出的语义表明模型,相同根据Transformer Encoder,相较于BERT,其预练习进程运用了更丰富的语义常识和更多的语义使命,在多个NLP使命上获得了比BERT等模型更好的作用。
项目开源地址: github.com/PaddlePaddl…
该项目包含了对预练习,以及常见下流 NLP 使命的支撑,如分类、匹配、序列标注和阅读了解等。
2.原理介绍
2.1 Transformer Encoder
ERNIE 采用了 Transformer Encoder 作为其语义表明的骨架。Transformer 是由论文Attention is All You Need 首先提出的机器翻译模型,在作用上比传统的 RNN 机器翻译模型更加优秀。Transformer 的扼要结构如图1所示,根据 Encoder-Decoder 结构, 其首要结构由 Attention(注意力) 机制构成:
- Encoder 由全同的多层堆叠而成,每一层又包含了两个子层:一个Self-Attention层和一个前馈神经网络。Self-Attention 层首要用来输入语料之间各个词之间的联系(例如调配联系),其外在体现为词汇间的权重,此外还能够协助模型学到句法、语法之类的依靠联系的才能。
- Decoder 也由全同的多层堆叠而成,每一层相同包含了两个子层。在 Encoder 和 Decoder 之间还有一个Encoder-Decoder Attention层。Encoder-Decoder Attention层的输入来自于两部分,一部分是Encoder的输出,它能够协助解码器重视输入序列哪些位置值得重视。另一部分是 Decoder 已经解码出来的成果再次通过Decoder的Self-Attention层处理后的输出,它能够协助解码器在解码时把已翻译的内容中值得重视的部分考虑进来。例如将“read a book”翻译成中文,我们把“book”之所以翻译成了“书”而没有翻译成“预订”便是由于前面Read这个读的动作。
在解码进程中 Decoder 每一个时刻步都会输出一个实数向量,通过一个简略的全衔接层后会映射到一个词典巨细、被称作对数几率(logits)的向量,再通过 softmax 归一化之后得到当时时刻步各个词出现的概率分布。
图 1 Transformer 的扼要结构图
Transformer 在机器翻译使命上面证明了其超过 LSTM/GRU 的杰出表明才能。从 RNN 到 Transformer,模型的表明才能在不断的增强,语义表明模型的骨架也阅历了这样的一个演变进程。如图2所示,该图为BERT、GPT 与 ELMo的结构示意图,能够看到 ELMo 运用的便是 LSTM 结构,接着 GPT 运用了 Transformer Decoder。进一步 BERT 采用了双向 Transformer Encoder,从理论上讲其相对于 Decoder 有着更强的语义表明才能,由于Encoder承受双向输入,可一起编码一个词的上下文信息。最后在NLP使命的实践应用中也证明了Encoder的有效性,因而ERNIE也采用了Transformer Encoder架构。
图2 BERT、GPT 与 ELMo
2.2 ERNIE
介绍了 ERNIE 的骨架结构后,下面再来介绍了 ERNIE 的原理。
ERNIE 分为 1.0 版和 2.0 版,其间ERNIE 1.0是通过建模海量数据中的词、实体及实体联系,学习实在世界的语义常识。相较于BERT学习原始言语信号,ERNIE 1.0 能够直接对先验语义常识单元进行建模,增强了模型语义表明才能。例如对于下面的例句:“哈尔滨是黑龙江的省会,国际冰雪文化名城”
图3 ERNIE 1.0 与 BERT 词屏蔽方法的比较
BERT在预练习进程中运用的数据仅是对单个字符进行屏蔽,例如图3所示,练习Bert通过“哈”与“滨”的部分共现判别出“尔”字,可是模型其实并没有学习到与“哈尔滨”相关的常识,即仅仅学习到“哈尔滨”这个词,可是并不知道“哈尔滨”所代表的含义;而ERNIE在预练习时运用的数据是对整个词进行屏蔽,然后学习词与实体的表达,例如屏蔽“哈尔滨”与“冰雪”这样的词,使模型能够建模出“哈尔滨”与“黑龙江”的联系,学到“哈尔滨”是“黑龙江”的省会以及“哈尔滨”是个冰雪城市这样的含义。
练习数据方面,除百科类、资讯类中文语料外,ERNIE 1.0 还引入了论坛对话类数据,运用对话言语形式(DLM, Dialogue Language Model)建模Query-Response对话结构,将对话Pair对作为输入,引入Dialogue Embedding标识对话的角色,运用对话呼应丢掉(DRS, Dialogue Response Loss)学习对话的隐式联系,进一步提高模型的语义表明才能。
由于 ERNIE 1.0 对实体级常识的学习,使得它在言语揣度使命上的作用更胜一筹。ERNIE 1.0 在中文使命上全面超过了 BERT 中文模型,包含分类、语义相似度、命名实体辨认、问答匹配等使命,平均带来 1~2 个百分点的提高。
我们能够发现 ERNIE 1.0 与 BERT 相比仅仅学习使命 MLM 作了一些改善就能够获得不错的作用,那么假如运用更多较好的学习使命来练习模型,那是不是会获得更好的作用呢?因而 ERNIE 2.0 应运而生。ERNIE 2.0 是根据持续学习的语义了解预练习结构,运用多使命学习增量式构建预练习使命。如图4所示,在ERNIE 2.0中,很多的自然言语处理的语料能够被规划成各种类型的自然言语处理使命(Task),这些新构建的预练习类型使命(Pre-training Task)能够无缝的参加图中右侧的练习结构,然后持续让ERNIE 2.0模型进行语义了解学习,不断的提高模型作用。
图4 ERNIE 2.0结构
ERNIE 2.0 的预练习包含了三大类学习使命,别离是:
- 词法层使命:学会对语句中的词汇进行猜测。
- 语法层使命:学会将多个语句结构重建,重新排序。
- 语义层使命:学会判别语句之间的逻辑联系,例如因果联系、转折联系、并排联系等。
通过这些新增的语义使命,ERNIE 2.0语义了解预练习模型从练习数据中获取了词法、句法、语义等多个维度的自然言语信息,极大地增强了通用语义表明才能。ERNIE 2.0模型在英语使命上简直全面优于BERT和XLNet,在7个GLUE使命上获得了最好的成果;中文使命上,ERNIE 2.0模型在所有9个中文NLP使命上全面优于BERT。
完结预练习后,怎么用 ERNIE 来处理具体的 NLP 问题呢?下面以单句分类使命(如情感分析)为例,介绍下流 NLP 使命的处理进程:
- 根据tokenization.py脚本中的Tokenizer对输入的语句进行token化,即按字粒度对语句进行切分;
- 分类标志符号[CLS]与token化后的语句拼接在一起作为ERNIE模型的输入,通过 ERNIE 前向核算后得到每个token对应的embedding向量表明;
- 在单句分类使命中,[CLS]位置对应的嵌入式向量会用来作为分类特征。只需将[CLS]对应的embedding抽取出来,再通过一个全衔接层得到分类的 logits 值,最后通过softmax归一化后与练习数据中的label一起核算交叉熵,就得到了优化的丢失函数;
- 通过几轮的fine-tuning,就能够练习出处理具体使命的ERNIE模型。
关于ERNIE更具体的介绍,能够参考这两篇学术论文:
- ERNIE: Enhanced Representation through Knowledge Integration
- ERNIE 2.0: A Continual Pre-training Framework for Language Understanding
本教程不对预练习进程作过多打开,首要重视怎么运用ERNIE处理下流的NLP使命。