了解BERT原理、技术、实践,只需3分钟 本文对BERT的原理、技术细节以及如何应用于实际场景中,做了简明扼要的介绍。看完本文相信您会对BERT为什幺被认为是当前最好的NLP模型、实现原理以及适用场景有所了解。 目前最好的自然语言预训练方法无疑是BERT。它的工作流程分为两步: 首先,使用大量未标记的数据,以预训练、也就是无人监督的方式学习语言表达。 然后,使用少量经过标记的训练数据对模型进行fine-tune,以监督学习的方式,执行多种监督任务。 预训练机器学习模型已经在包括视觉、自然语言处理在内的各个领域取得了成功。 详解BERT及其原理 BERT是BidirectionalEncoderRepresentationsfromTransformers的缩写,是一种新型的语言模型,通过联合调节所有层中的双向Transformer来训练预训练深度双向表示。 它基于谷歌2017年发布的Transformer架构,通常的Transformer使用一组编码器和解码器网络,而BERT只需要一个额外的输出层,对预训练进行fine-tune,就可以满足各种任务,根本没有必要针对特定任务对模型进行修改。 BERT将多个Transformer编码器堆叠在一起。Transformer基于着名的多头注意力(Multi-headAttention)模块,该模块在视觉和语言任务方面都取得了巨大成功。 BERT的先进性基于两点:首先,使用MaskedLangaugeModel(MLM)和NextSentensePrediction(NSP)的新预训练任务;其次,大量数据和计算能力满足BERT的训练强度。 相比之下,像Word2Vec、ELMO、OpenAIGPT等传统SOTA生成预训练方法,使用从左到右的单向训练,或者浅双向,均无法做到BERT的双向性。 MLM MLM可以从文本执行双向学习,即允许模型从单词前后相邻的单词,学习每个单词的上下文,这是传统方法做不到的。 MLM预训练任务将文本转换为符号,并使用符号表示作为训练的输入和输出。15%的符号随机子集在训练期间被屏蔽(类似被隐藏起来),目标函数则用来预测符号识别的正确率。 这与使用单向预测作为目标、或使用从左到右和从右到左训练,来近似双向性的传统训练方法形成了对比。 但是MLM中的BERT屏蔽策略,将模型偏向于实际的单词,还没有数据显示这种偏见对训练所产生的影响。 NSP NSP使得BERT可以通过预测上下句之间是否连贯来得出句子之间的关系。 给出50%正确上下句配对,并补充50%的随机上下句配对,然后对模型进行训练。 MLM和NSP是同时进行的。 数据和TPU/GPUruntime 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/google-research/Bert BERT可以针对几种类型的任务进行fine-tune。例如文本分类、文本相似性、问答、文本标签、如词性、命名实体识别等。 但是,预训练BERT是很贵的,除非使用类似于NvidiaV100这样的TPU或GPU。 BERT人员还发布了一个单独的多语种模型,该模型使用整个维基百科的100种语言进行训练,性能比单语种的低几个百分点。