作者:邓侃
【新智元导读】 近日,谷歌AI团队新发布的BERT模型,在NLP业内引起巨大反响。BERT在机器阅读理解测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不同NLP任务中创出最佳成绩。这项工作被认为是NLP领域里程碑式的进步。新智元专栏作者邓侃博士对这篇论文进行了详细解读。
一个完整的深度学习系统,通常包括以下四个部分,1. 应用场景、2. 模型、3. 训练数据、4. 算力。
从2018年年初以来,深度学习在语言处理方面,一直没有特别靓丽的突破性进展。三天前,2018年10月11日,谷歌人工智能语言研究组发表了一篇论文,立刻引起业界巨大反响。
论文译介见:
如何评价 BERT 模型? - 新智元的回答 - 知乎 https://www.zhihu.com/question/298203515/answer/509703208
这篇论文的题目是,《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。这个题目很直白,一眼望去就能猜得到,这篇文章至少会讲到四大问题中的三个,应用场景、模型、训练数据。
论文地址:
多种应用场景,与通用语言模型
自然语言处理(NLP)的应用场景,从大的方面讲,是对于语言文字的智能处理,包括阅读理解、问答对话、写作、翻译等等。这些应用场景,又可以细分成若干任务,包括从一连串字中识别词,从一连串词中识别词组、从语句中识别主谓宾定语状语、从语句中识别语气情绪、从整篇文章中提炼摘要、根据提问从整篇文章中寻找答案,等等。
这篇论文介绍了一种模型,BERT,它至少能解决 NLP 诸多任务中的 11 种,包括:
-
淘宝上有很多用户评论,能否把每一条用户转换成评分?-2、-1、0、1、2,其中 -2 是极差,+2 是极好。假如有这样一条用户评语,“买了一件鹿晗同款衬衫,没想到,穿在自己身上,不像小鲜肉,倒像是厨师”,请问这条评语,等同于 -2,还是其它?
-
当用户提问,“两岁的男孩为什么食欲不振”,深度学习是否可以从大量书籍中,自动摘录相关内容,并组织成流畅的语言,回答用户提问?
用同一种模型,解决多种不同任务。这涉及到一个十分激进的猜想:在以往的实践中,我们通常为每种具体任务,单独定制模型。是否存在一种“通用”的语言模型,能够用它来完成多种不同的任务?
BERT 的研究者们,试图证明 Deep Bidirectional Transformers 就是这样一种通用的语言模型,它不仅能解决 11 种不同的 NLP 任务,而且在所有任务上的精度,大幅度领先以往其它模型,甚至超越人类。
为什么 Deep Bidirectional Transformers 能够担当通用的语言模型?论文没有提供严格的数学证明,只是用 11 种不同的具体任务,来经验地验证这个模型的通用性。
Deep Bidirectional Transformers,这三个词分别是什么意思?
假如在一个句子 “中国的首都是北京”中 ,先遮盖某一个词,譬如 “首都”。然后,把遮盖后的残缺的句子,“中国的[mask]是北京” ,输入进电脑,让电脑猜一猜 [mask] 应该是什么词。
电脑可以从前往后猜,也就是根据前文 “中国/的” ,猜测 [mask] 会是什么词。电脑也可以从后往前猜,也就是根据后文 “北京/是”,猜测 [mask] 会是什么词。这两种方式都是单向预测 unidirectional。
很显然,单向预测不能完整地理解整个语句的语义。于是研究者们尝试双向预测。把从前往后,与从后往前的两个预测,拼接在一起 [mask1/mask2],这就是双向预测 bi-directional。细节参阅《Neural Machine Translation by Jointly Learning to Align and Translate》。
BERT 的作者认为,bi-directional 仍然不能完整地理解整个语句的语义,更好的办法是用上下文全向来预测[mask],也就是用 “中国/的/ .. /是/北京”,来预测 [mask]。BERT 的作者把上下文全向的预测方法,称之为 deep bi-directional。
如何来实现上下文全向预测呢?BERT 的作者建议使用 Transformer 模型。这个模型在《Attention Is All You Need》一文中,被首次提出。论文发表后,立刻引起业界轰动,成为深度学习 NLP 的里程碑式的进展。
Transformer 模型的核心是聚焦机制,对于一个语句,可以同时启用多个聚焦点,而不必局限于从前往后的或者从后往前的,序列的串行处理。所以,几乎不用修改 Transformer 的代码,就可以完成上下文全向的预测任务。
训练数据与 Pre-training
模型不仅需要功能强劲的结构,而且还必须具备正确的参数,这样才能担当通用语言模型,准确理解文章语句的语义。
BERT 这篇论文,尝试了两种规模的 transformer 模型。第一个模型的规模较小,总共有 12 层模块(L=12)、在每个模块中语义数值向量的维度为 786(H=768)、聚焦探头 12 个(A=12)。整个小模型,需要训练的模型参数的总数是 12 * 768 * 12 = 110M。大模型 L=24,H=1024,A=16, 大模型参数的总数是 24 * 1024 * 16 = 393M。
几亿个参数需要训练,自然需要海量的训练数据。如果全部用人力标注的办法,来制作训练数据,人力成本太大。从哪里收集这些海量的训练数据?
2003年发表的《A Neural Probabilistic Language Model》论文,提出一个收集训练数据的办法:每一篇文章,从新闻到小说到论文,天生都是训练数据,不需要额外做人工标注。
受这篇论文的启发,BERT 研究者们尝试用以下方法,训练模型参数。方法分两步,
- 把一篇文章中 15% 的词汇遮盖,让模型根据上下文全向地预测被遮盖的词。通过预测任务,来初步训练 Transformer 模型的参数。
假如有 1 万篇文章,每篇文章平均由 1 千个词汇构成,随机遮盖 15% 的词汇,那么模型需要预测 150 万个词汇。
- 用一个新任务,识别两个句子是否连续,来进一步训练模型参数。
譬如从上述 1 万篇文章中,挑选 20 万对语句,总共 40 万句语句。在这些语句中,经过第一步的处理,15% 的词汇被遮盖(某些细节,不必絮述)。
挑选 20 万对语句的时候,让其中一半是上下文中连续的两个语句,剩余的一半,由不是连续的两个语句构成。然后让 Transformer 模型来识别这 20 万对语句中,哪些对子是连续的,哪些对子不连续。
这两步训练合在一起,称为预训练 pre-training。训练结束后的 Transformer 模型,就是通用的语言模型,BERT。
Pre-training 与 Fine-tuning
预训练 pre-training 出来的通用模型,能够正确理解语句和文章的语义。通用模型不能直接用于解决不同的 NLP 具体问题,需要给通用模型穿一件外套。
BERT 论文中的 Figure 3,描述了针对四类不同问题的四种不同外套。
Figure 3
不仅模型需要穿外套,而且外套也有参数,找到这些参数的最优值,是精加工 fine-tuning 的目标。另外,在精加工的过程中,有时也自动地顺带微调 BERT 通用模型的一些参数。
对模型外套进行精加工时,不同具体问题,需要不同的训练数据。这篇论文,尝试了 11 种不同问题的多种公开的,经过人工标注的训练数据集。
模型的参数高达几亿个,用海量的文章作为 pre-training 的训练数据,再用多种人工标注的训练数据,来训练模型,找到模型参数的最优值。不难想象,计算成本非常非常高。
BERT 论文中说,他们动用了谷歌 Cloud AI 资源,用了 64 颗 TPU,算了 4 天,模型参数寻优的训练过程才收敛。
如果不是用 TPU,而是用普通 GPU,不知道会需要多长时间。
按谷歌 Cloud AI 的正常价格,每训练一次,需要 9.6 万人民币。即便这些天 Google Cloud AI 打七折,也需要 1.4 万。如果程序有 bugs,需要返工,计算成本相当高。
深度学习 NLP 四大里程碑
前文说到,“一个完整的深度学习系统,通常包括以下四个部分,1. 应用场景、2. 模型、3. 训练数据、4. 算力”。BERT 这篇论文,一口气把四个问题,全部说到了。
有业界老师认为,深度学习 NLP 到目前为止,有四大里程碑,分别是:
-
2003年2月,深度学习大神 Yoshua Bengio,与他的学生共同发表论文《A Neural Probabilistic Language Model》,把深度学习引入自然处理领域,把自然语言的词汇,转换成数值向量。从此,自然语言处理的基本研究方法,发生质的飞跃。这是深度学习 NLP 的第一个里程碑。
-
2016年5月,Sequence to Sequence 技术日臻成熟,尤其是引入聚焦机制,如虎添翼。这是深度学习 NLP 的第二个里程碑,代表作是 Yoshua Bengio 大神与他的学生们,共同执笔的论文《Neural Machine Translation by Jointly Learning Align and Translate》。
-
2017年6月,谷歌的 Ashish Vaswani 等人,发表论文《Attention Is All You Need》,对 NLP 使用的深度学习模型,做了革命性的改进。这是深度学习 NLP 的第三个里程碑。
-
2018年10月,谷歌的 Jacob Devlin 等人,发表的这篇 BERT 论文,很可能是第四个里程碑。不仅提议了一个通用的语言模型,而且用非监督的办法做预训练,用有监督的办法做精加工,取得了惊艳的效果。
2018年以后,会发生什么?很可能会出现若干深度学习 NLP 产品,获得巨大的商业成功。
更多阅读: