新智元报道
来源:Medium
编辑:元子
目前最好的自然语言预训练方法无疑是BERT。它的工作流程分为两步:
首先,使用大量未标记的数据,以预训练、也就是无人监督的方式学习语言表达。
然后,使用少量经过标记的训练数据对模型进行fine-tune,以监督学习的方式,执行多种监督任务。
预训练机器学习模型已经在包括视觉、自然语言处理在内的各个领域取得了成功。
详解BERT及其原理
BERT是Bidirectional Encoder Representations from Transformers的缩写,是一种新型的语言模型,通过联合调节所有层中的双向Transformer来训练预训练深度双向表示。
它基于谷歌2017年发布的Transformer架构,通常的Transformer使用一组编码器和解码器网络,而BERT只需要一个额外的输出层,对预训练进行fine-tune,就可以满足各种任务,根本没有必要针对特定任务对模型进行修改。
BERT将多个Transformer编码器堆叠在一起。Transformer基于著名的多头注意力(Multi-head Attention)模块,该模块在视觉和语言任务方面都取得了巨大成功。
BERT的先进性基于两点:首先,使用Masked Langauge Model(MLM)和Next Sentense Prediction(NSP)的新预训练任务;其次,大量数据和计算能力满足BERT的训练强度。
相比之下,像Word2Vec、ELMO、OpenAI GPT等传统SOTA生成预训练方法,使用从左到右的单向训练,或者浅双向,均无法做到BERT的双向性。
MLM
MLM可以从文本执行双向学习,即允许模型从单词前后相邻的单词,学习每个单词的上下文,这是传统方法做不到的。
MLM预训练任务将文本转换为符号,并使用符号表示作为训练的输入和输出。15%的符号随机子集在训练期间被屏蔽(类似被隐藏起来),目标函数则用来预测符号识别的正确率。
这与使用单向预测作为目标、或使用从左到右和从右到左训练,来近似双向性的传统训练方法形成了对比。
但是MLM中的BERT屏蔽策略,将模型偏向于实际的单词,还没有数据显示这种偏见对训练所产生的影响。
NSP
NSP使得BERT可以通过预测上下句之间是否连贯来得出句子之间的关系。
给出50%正确上下句配对,并补充50%的随机上下句配对,然后对模型进行训练。
MLM和NSP是同时进行的。
数据和TPU/GPU runtime
BERT的训练总共使用了33亿单词。其中25亿来自维基百科,剩下8亿来自BooksCorpus。
训练使用TPU完成,GPU估算如下所示。
使用2500-392000标记的样品进行fine-tune。重要的是,100K以上训练样本的数据集在各种超参数上表现出强大的性能。
每个fine-tune实验在单个云TPU上运行1小时,在GPU上需要运行几个小时不等。
结果显示,BERT优于11项NLP任务。在SQUAD和SWAG两个任务中,BERT成为第一个超越人类的NLP模型!
BERT能够解决的实际任务类型
BERT预训练了104种语言,已在TensorFlow和Pytorch中实现并开源。Clone地址:
https://github.com/google-research/Bert
BERT可以针对几种类型的任务进行fine-tune。例如文本分类、文本相似性、问答、文本标签、如词性、命名实体识别等。
但是,预训练BERT是很贵的,除非使用类似于Nvidia V100这样的TPU或GPU。
BERT人员还发布了一个单独的多语种模型,该模型使用整个维基百科的100种语言进行训练,性能比单语种的低几个百分点。
推荐阅读