自然言语处理(NLP)是一项极具挑战性的使命,现在没有哪个人工智能范畴比 NLP 更有目共睹了。在许多场景中,咱们需求让核算机了解人类的自然言语,并进行相应的操作。近年来能够执行相似人类言语使命的言语模型(LM)已经开展到比任何人预期的都要好。虽然 BERT 模型在今天很少以原始方法运用,但这种模型架构仍有很多值得借鉴的地方。本文介绍其间具有代表性的 BERT 模型,讨论 BERT 的工作原理及在 NLP 中的运用。
介绍
2018 年末,Google AI Language 的研究人员开源了一种名为 BERT 的自然言语处理(NLP) 新技能,这在其时是一项重大突破,凭仗令人难以置信的功能席卷了深度学习社区。在Jacob Devlin 等人宣布的论文 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 中,有关于 BERT 设计的具体阐明。
BERT(Bidirectional Encoder Representations from Transformers)模型的方针是为了在自然言语了解和生成方面获得突破。传统的NLP办法主要根据规矩和核算办法,而BERT则经过深度学习办法,运用预先练习的神经网络来学习言语知识。BERT的中心创新点在于,它采用了来自 Transformer(学习文本中单词之间上下文关系的注意力机制)的双向编码器结构,经过预先练习来学习言语形式,然后提高了模型的功能。
除了经过对语义的深刻了解来改善谷歌的搜索结果外,BERT的主要功能是作为特定“下流”使命的基础,如问答或情感剖析。因为它能够在接近人类的水平上处理书面言语,所以帮助了BERT言语模型处理其他根据言语的使命。
中心思想
BERT 言语模型企图处理根据上下文的“完形填空”问题,例如:
在 床前明月光,_____。_____,垂头思故乡。
场景下,大概率会用 疑是地上霜。举头望明月,
填补空白来完结这句话。
在 BERT 之前的世界里,言语模型会在练习过程中从左到右或从左到右和从右到左的组合来检查这个文本序列。这种单向办法十分合适生成语句——咱们能够猜测下一个单词,将其附加到序列中,然后猜测下一个单词,直到咱们有一个完好的语句。BERT 模型呈现后,意味着与单向言语模型比较,咱们现在能够更深化地了解言语上下文和流程。
BERT不是猜测序列中的下一个单词,而是运用一种称为 Masked LM (MLM) 的技能:随机躲藏语句中的单词,然后测验猜测它们。躲藏意味着模型在两个方向上检查,并运用语句的完好上下文(包含左右环境)来猜测躲藏的单词。与以前的言语模型不同,它一起考虑了上一个和下一个符号 (token) 。
运作原理
Pre-training + Fine-Tuning Paradigm(预练习+微调)
Transformer 由一个用于读取文本输入的编码器和一个用于生成使命猜测的解码器组成,BERT 依赖于 Transformer。因为 BERT 的方针是生成言语表示模型,因而它只需求编码器部分。BERT 编码器的输入是一系列符号,这些符号首要被转换为向量,然后在神经网络中处理。但在开始处理之前,BERT 需求对输入进行处理,并用一些额定的元数据进行润饰:
- 符号嵌入:在榜首个语句的开头将
[CLS]
符号添加到输入单词符号中,并在每个语句的结尾插入[SEP]
符号; - 语段嵌入:将指示语句 A 或语句 B 的符号添加到每个符号中。这允许编码器区分语句;
- 方位嵌入:将方位嵌入添加到每个符号中,以指示其在语句中的方位。
从本质上讲,Transformer 堆叠了一个将序列映射到序列的层,因而输出也是一个向量序列,在同一索引处的输入和输出符号之间具有 1:1 的对应关系。BERT 运用了 2 种练习战略:
1. Masked LM (MLM)
在将单词序列输入 BERT 之前,每个序列中 15% 的单词被替换为 [MASK]
符号。然后,该模型会根据序列中其他未屏蔽的单词供给的上下文来猜测被屏蔽单词的原始值。从技能上讲,输出词的猜测需求:
- 在编码器输出的顶部添加分类层;
- 将输出向量乘以嵌入矩阵,将它们转换为词汇维度;
- 运用 softmax 核算词汇表中每个单词的概率。
其间:
- 80% 的时刻,更换为[MASK]
went to the store —> went to the [MASK]
- 10% 的时刻,替换随机单词
went to the store —> went to the running
- 10% 的时刻,保持不变
went to the store —> went to the store
在练习时,BERT 丢失函数仅考虑屏蔽符号的猜测,而忽略未屏蔽符号的猜测。这导致模型的收敛速度比从左到右或从右到左的模型慢得多。
2. 下一句猜测 (NSP)
在 BERT 练习过程中,模型接纳成对的语句作为输入,并学习猜测该对中的第二个语句是否是原始文档中的后续语句。在练习过程中,50% 的输入是一对,其间第二句话是原始文档中的后续语句,而另外 50% 的输入从语料库中随机挑选一个语句作为第二句话。假设随机语句将与榜首个语句断开衔接。
为了猜测第二句话是否衔接到榜首句话,基本上完好的输入序列经过根据 Transformer 的模型,运用简单的分类层将 [CLS]
符号的输出转换为 21 形状的向量,并运用 softmax 分配 IsNext-Label。
微调
BERT 可用于各种言语使命:
- 分类使命(如情感剖析)的完结方法与“下一句”分类相似,办法是在
[CLS]
符号的 Transformer 输出顶部添加一个分类层。 - 在问答使命 (例如 SQuAD v1.1) 中,软件接纳有关文本序列的问题,并需求在序列中符号答案。运用BERT,能够经过学习两个额定的向量来练习问答模型,这些向量标志着答案的开始和完毕。
- 在命名实体辨认 (NER) 中,软件接纳文本序列,并需求符号文本中呈现的各种类型的实体(人员、安排、日期等)。运用 BERT,能够经过将每个符号的输出向量输入猜测 NER 标签的分类层来练习 NER 模型。
BERT 其时提出的独特价值(2019年)
- 全方位上下文了解: 与以前的模型(例如GPT) 比较,BERT 能够双向了解上下文,即一起考虑一个词的左边和右边的上下文。这种全方位的上下文了解使得 BERT 能够更好地了解言语,特别是在了解词义、消歧等复杂使命上有明显优势。
- 预练习+微调 (Pre-training+Fine-tuning) 的战略: BERT 模型先在大规模无标签文本数据上进行预练习,学习言语的一般性形式,然后在具体使命的标签数据上进行微调。这种战略让BET能够在少量标签数据上获得很好的作用,大大提高了在各种 NLP 使命上的体现。
- 跨使命泛化才能: BERT 经过微调能够运用到多种 NLP 使命中,包含但不限于文本分类、命名实体辨认、问答体系、情感剖析等。它的呈现极大地简化了复杂的 NLP 使命,使得只需一种模型就能处理多种使命。
- 多言语支撑: BERT 供给了多言语版别 (Multilingual BERT) ,能够支撑多种言语,包含但不限于英语、中文、德语、法语等,使得 NLP 使命能够覆盖更广的言语和区域。
- 功能优异: 自 BERT 模型提出以来,它在多项 NLP 基准测验中获得了优异的成绩,甚至超过了人类的体现。它的呈现标志着 NLP 范畴进入了预练习模型的新时代。
- 开源和可接入性: BERT 模型和预练习权重由 Google 揭露发布,让更多的研究者和开发者能够运用 BERT 模型进行相关研究和运用开发,推动了整个 NLP 范畴的开展。
BERT 与 GPT 异同
BERT vs GPT 差异
特性 | BERT | GPT |
---|---|---|
练习方法 | 自编码(Autoencoding) | 自回归(Autoregressive) |
猜测方针 | 给定上下文,猜测其间的一个或多个缺失单词 | 在给定前面的单词时,猜测下一个单词 |
输入处理 | 双向,能够一起考虑一个词的左右上下文 | 单向(从左到右或许从右到左) |
适用场景 | 合适了解上下文,有助于信息提取、问答体系、情感剖析等 | 合适生成式使命,如文章生成、诗歌创作等 |
架构 | 根据Transformer的编码器 | 根据Transformer的解码器 |
言语模型 | 判别式(Discriminative) | 生成式(Generative) |
优点 | 对上下文了解才能较强 | 猜测的连贯性较强 |
缺点 | 生成的文本连贯性较弱 | 对上下文了解才能相对较弱 |
BERT vs GPT 一致
类别 | 内容 |
---|---|
模型架构 | Transformer |
数据预处理 | 都需求对数据进行 Tokenization,一般运用词片办法(Subword Tokenization) |
模型练习 | 均运用了很多的无标签数据进行预练习 |
使命迁移 | 都能够经过 Fine-tuning 方法进行使命迁移 |
练习方针 | 企图经过预练习了解言语的一般形式,如语法、 语义、上下文关系等 |
多言语支撑 | 均支撑多言语模型练习 |
总结
BERT无疑是运用机器学习进行自然言语处理的突破,在 GPT-3 论文宣布之前,我们普遍的结论是,BERT 作为预练习的模型作用也是优于GPT 的。未来,随着预练习技能和 NLP 使命的不断开展和变化,BERT模型在 NLP 范畴的运用可能更加广泛。