3分钟看懂史上最强NLP模型BERT



  新智元报道   

来源:Medium

编辑:元子

本文对BERT的原理、技术细节以及如何应用于实际场景中,做了简明扼要的介绍。看完本文相信您会对BERT为什么被认为是当前最好的NLP模型、实现原理以及适用场景有所了解。

目前最好的自然语言预训练方法无疑是BERT。它的工作流程分为两步:


首先,使用大量未标记的数据,以预训练、也就是无人监督的方式学习语言表达。


然后,使用少量经过标记的训练数据对模型进行fine-tune,以监督学习的方式,执行多种监督任务。 


预训练机器学习模型已经在包括视觉、自然语言处理在内的各个领域取得了成功。


640?wx_fmt=jpeg


详解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估算如下所示。


640?wx_fmt=png


使用2500-392000标记的样品进行fine-tune。重要的是,100K以上训练样本的数据集在各种超参数上表现出强大的性能。 


每个fine-tune实验在单个云TPU上运行1小时,在GPU上需要运行几个小时不等。


结果显示,BERT优于11项NLP任务。在SQUAD和SWAG两个任务中,BERT成为第一个超越人类的NLP模型!


640?wx_fmt=png


BERT能够解决的实际任务类型


BERT预训练了104种语言,已在TensorFlow和Pytorch中实现并开源。Clone地址:

https://github.com/google-research/Bert


BERT可以针对几种类型的任务进行fine-tune。例如文本分类、文本相似性、问答、文本标签、如词性、命名实体识别等。


但是,预训练BERT是很贵的,除非使用类似于Nvidia V100这样的TPU或GPU。


BERT人员还发布了一个单独的多语种模型,该模型使用整个维基百科的100种语言进行训练,性能比单语种的低几个百分点。


推荐阅读

5个常常被大家忽略的Python小技巧

开发工作3、5年,怎样才能做到不在寒冬“被裁员”?

清华90后博士后万蕊雪:科研这场马拉松,我会一直跑下去

实践秘籍:Boosting 与 AdaBoost

逆天了,谷歌无人车识别交警手势,没信号灯也能从容通过

关于深度学习中的卷积,这些是你该懂得!

让老婆能学会的Python教程

中科大 - 计算机学院 - 课程资源

开工福利 | 送10本好书,另有超值购书福利

640?wx_fmt=png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BERT模型是目前自然语言处理领域中最为了解的深度学习模型之一,其具备先进的预训练技术和模型结构,可以有效地处理各类自然语言处理任务。基于BERT模型的自然语言处理实战源码包涵盖了众多自然语言处理任务,包括文本分类、命名实体识别、文本推荐、问答系统等。下面就基于其中的几个任务进行简要介绍。 首先是文本分类任务。该部分代码主要基于BERT模型的fine-tuning技术实现,使用了PyTorch框架。实现方式是,在预训练的BERT模型基础上,通过fine-tuning将其应用于文本分类任务中。在具体实现过程中,要进行预处理数据、定义模型结构和超参数、训练和测试模型等步骤。 其次是命名实体识别任务。该部分代码主要使用了PyTorch和AllenNLP库,实现了一个命名实体识别的模型。在具体实现过程中,首先要针对NER任务重新定义BERT模型,然后进行数据的预处理、训练和测试模型等步骤。 再者是文本推荐任务。该部分代码主要使用了PyTorch、transformers库和nltk库,实现了BERT模型在文本推荐任务中的应用。在实现过程中,主要要进行数据的预处理、定义推荐模型以及训练和测试模型等步骤。 最后是问答系统任务。该部分代码主要使用了PyTorch和transformers库,以阅读理解任务为基础,实现了一个简单的问答系统。在实现过程中,要进行数据的处理、定义模型结构、模型的训练和测试等步骤。 总体而言,基于BERT模型的自然语言处理实战源码涵盖了多种自然语言处理任务,其代码不仅提供了实现思路,也为实现自然语言处理任务提供了参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值