最强NLP模型-BERT
简介:
BERT,全称Bidirectional Encoder Representations from Transformers,是一个预训练的语言模型,可以通过它得到文本表示,然后用于下游任务,比如文本分类,问答系统,情感分析等任务.BERT像是word2vec的加强版,同样是预训练得到词级别或者句子级别的向量表示,word2vec是上下文无关的(Context-Free),而BERT是上下问有关的(Contextual).意思就是,word2vec只是具有词本身的语义信息,而没有包含文本(不是特指某个文本,而是所有跟该词相关的文本信息)上下文信息,BERT却是相反的.目前为止,BERT已经取得了所有NLP任务的最好结果,所以才称之为最强NLP模型.
以下是BERT的详细介绍:
1.Mask-LM
传统的一般形式语言模型,都是从前向后(从左到右)的得到文本的语义表示.

这样得到的文本表示句子结尾处的词可以包含前面词的语义信息,但是前面的词并有包含后面词的语义信息.为了解决这一问题,从而引出了双向RNN结构的模型(Bi-RNN/Bi-LSTM).但是如果模型加深,那么最后可能会形成一个"cycle"(作者原话),这是因为一层Bi-RNN会使前面的词包含后面词的语义,后面的词包含前面词的语义,那么一层一层的加深,每个词都会包含整个句子的语义信息,最后加深就变成了自己包含自己的"cycle".
所以作者在这里并没有使用循环神经网络架构,而是使用一种叫做Mask-LM的方法,使用Transformer进行训练:
We mask out 15% of the words in the input, run the entire sequence through a deep bidirectional Transformer encoder, and then predict only the masked words. For example:

根据文中的意思很好理解Mask-LM的意思,就是随机的去掉部分输入句子的单词,让其作为要预测的label(相当于完形填空),然后用双向深度Transformer模型进行训练.
2.Next Sentence Prediction
此外,为了学习句子之间的关系,作者还训练一个简单任务:给出两个句子A和B,B是A之后的实际下一个句子,或者只是语料库中的随机句子?也就是判断句子B是不是句子A的下一个句子,是或者不是,这是一个二分类问题,称之为Next Sentence Prediction,它是BERT论文新提出的一项NLP任务,所以目前应该没有专门针对NSP的语料库.

3.模型结构
BERT包括两个步骤:预训练Pre-training和微调fine-tuning.预训练是要花费很长的时间,而且硬件要求也很高,作用使用了4到16个云TPU训练了4天,所以家里没有矿的伙伴就直接使用预训练好的模型参数进行微调吧.文章开头也说了,BERT可以作为预训练模型,用于其他下游NLP任务,所以只需要使用预训练好的模型参数,加上微调就可以在常见的NLP任务上取得较好的效果.
作者给出了两个主要模型:Basic-model,Large-model.分别有12层/768个神经单元/12-heads/110M参数和24层/1024个神经单元/16heads/340M参数.以下是一些模型的其他release版本,其中uncased是指文本已经分词和小写处理.

作者强调,BERT模型的硬件要求高,参数量较小的Basic-model也需要在12g-16g的GPU上才可以运行(所以我也就只能看看文章--.).
模型更详细的其他信息,可参考BERT代码github:BERT
最强NLP模型-BERT的更多相关文章
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 【转载】最强NLP预训练模型!谷歌BERT横扫11项NLP任务记录
本文介绍了一种新的语言表征模型 BERT--来自 Transformer 的双向编码器表征.与最近的语言表征模型不同,BERT 旨在基于所有层的左.右语境来预训练深度双向表征.BERT 是首个在大批句 ...
- NLP新秀 - Bert
目录 什么是Bert Bert能干什么? Bert和TensorFlow的关系 BERT的原理 Bert相关工具和服务 Bert的局限性和对应的解决方案 沉舟侧畔千帆过, 病树前头万木春. 今天介绍的 ...
- Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题
Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题 阅读本文可以理解什么是“强”整数规划模型. 单源固定费用网络流问题见文献[1]第13.4.1节(p229-231),是"强整 ...
- 最强 NLP 预训练模型库 PyTorch-Transformers 正式开源:支持 6 个预训练框架,27 个预训练模型
先上开源地址: https://github.com/huggingface/pytorch-transformers#quick-tour 官网: https://huggingface.co/py ...
- NLP采用Bert进行简单文本情感分类
参照当Bert遇上Kerashttps://spaces.ac.cn/archives/6736此示例准确率达到95.5%+ https://github.com/CyberZHG/keras-ber ...
- 知识图谱辅助金融领域NLP任务
从人工智能学科诞生之初起,自然语言处理(NLP)就是人工智能核心的研究问题之一.NLP的重要性是毋庸置疑的,它能够实现以自然语言交流为特征的高级人机交互,使机器能“阅读”所有以文字形式记录的人类知识, ...
- NLP学习(3)---Bert模型
一.BERT模型: 前提:Seq2Seq模型 前提:transformer模型 bert实战教程1 使用BERT生成句向量,BERT做文本分类.文本相似度计算 bert中文分类实践 用bert做中文命 ...
- 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史(转载)
转载 https://zhuanlan.zhihu.com/p/49271699 首发于深度学习前沿笔记 写文章 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 张 ...
随机推荐
- mysql将日期字符串转换
举个例子: 给定字符串为07/31/2018,想要把格式转换成20180731 需要用到以下两个函数: date_format(date,’%Y-%m-%d’) ————–>oracle中的to ...
- 处理HTML表单(11)
PHP和Web表单 <?php if(isset($_POST["name"])){//isset()函数设置变量是否设置,并且不能为空 $name = $_POST[&qu ...
- GitHub学生认证示范
打开网址:https://education.github.com/ 点击Get Your Pack 点击I am a Student 填写资料上传学生证照片,等待通过,如果没有GitHub账号就注 ...
- C/S模式,发布/订阅模式和PUSH/PULL模式(上)
CS模式(客户端/服务器模式) 最场景的信息传递模式,也称为Request/Response模式,或者调用模式.http/https协议即此模式.因为最常用所以大家一般都比较熟悉,这里不重点讲了,大家 ...
- [iOS]AVSpeechSynthesizer语音合成
#import <AVFoundation/AVFoundation.h> // 初始化方法 AVSpeechSynthesizer *speech = [[AVSpeechSynthes ...
- LR--用栈实现移进--归约分析(demo)
1.考虑文法 \(E->E+E\) \(E->E*E\) \(E->id\) 2.最右推导 不难看出,这个文法是而二义的,所以有多个最右推导 3.移进归约 用一个栈存文法符号,用输入 ...
- WebGl 二维纹理贴图(矩形)
效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- windows下开启 PHP扩展Redis
Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- PhpStorm 全局查找的快捷键
本页面查找 : ctrl + f 全局查找 : ctrl + shift + f 自己定义 :文件 -> 设置 -> 快捷键 -> 修改
- 帝国CMS给会员注册加入问答验证
修改文件有e/enews/index.php //注册 elseif($enews=="register") { if($_POST['ask']=='帝国软件') { $user ...