最强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模型—自然语言处理中的预训练技术发展史 张 ...
随机推荐
- Lua库-string库
string.len(s) string.rep(s,n) string.lower(s) string.upper(s) string.sub(s,i);//截取s第i个开始的后缀 string.s ...
- Java SSM 客户管理 商户 管理系统 库存管理 销售报表 项目源码
系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3 SSM ...
- JS の 套路 I ~~
小扇在到新公司以后,发现.我的js都忘记了!! 下面总结一下在装配数据时候用到的一些小小的公式,希望像我这样的前端小菜B起到帮助叭叭叭叭叭~~~ I.查找想找到的 HTML 元素 * i.查找元素 v ...
- 二进制mysql安装相关知识
建议安装5.x版本 高版本没安装经验的慎用 1.1 关闭防火墙systemctl stop firewalld.service #停止firewall#慎用 systemctl disable fir ...
- java Clob类型 转String
1.我的数据库是oracle11g 遇到取出来的字段是clob类型,但是所需要的是string类型,写一个转换函数就可以解决问题了. // Clob类型 转String public String C ...
- jQuery增减类操作代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- jquery实现复选框的全选、全不选、反选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Docker Toolbox下配置国内镜像源-阿里云加速器
Docker machine安装 Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox. Digital ...
- 初识HDFS原理及框架
目录 HDFS是什么 HDFS的优缺点 HDFS的框架 HDFS的读写流程 HDFS命令 HDFS参数 1. HDFS是什么 HDFS(Hadoop Distributed File System)是 ...
- GCC编译器基础入门
导语 GCC(GNU Compiler Collection,GNU 编译器套件) 是由 GNU 开发的编程语言编译器,支持C.C++.Objective-C.Fortran.Java.Ada和Go语 ...