1、预训练模型
      BERT是一个预训练的模型,那么什么是预训练呢?举例子进行简单的介绍
      假设已有A训练集,先用A对网络进行预训练,在A任务上学会网络参数,然后保存以备后用,当来一个新的任务B,采取相同的网络结构,网络参数初始化的时候可以加载A学习好的参数,其他的高层参数随机初始化,之后用B任务的训练数据来训练网络,当加载的参数保持不变时,称为"frozen",当加载的参数随着B任务的训练进行不断的改变,称为“fine-tuning”,即更好地把参数进行调整使得更适合当前的B任务

优点:当任务B的训练数据较少时,很难很好的训练网络,但是获得了A训练的参数,会比仅仅使用B训练的参数更优

Task #1: Masked LM
     为了训练双向特征,这里采用了Masked Language Model的预训练方法,随机mask句子中的部分token,然后训练模型来预测被去掉的token。

具体操作是:

随机mask语料中15%的token,然后将masked token 位置输出的final hidden vectors送入softmax,来预测masked token。

这里也有一个小trick,如果都用标记[MASK]代替token会影响模型,所以在随机mask的时候采用以下策略:

1)80%的单词用[MASK]token来代替

my dog is hairy → my dog is [MASK]
2)10%单词用任意的词来进行代替

my dog is hairy → my dog is apple

3)10%单词不变

my dog is hairy → my dog is hairy

Task 2#: Next Sentence Prediction
       为了让模型捕捉两个句子的联系,这里增加了Next Sentence Prediction的预训练方法,即给出两个句子A和B,B有一半的可能性是A的下一句话,训练模型来预测B是不是A的下一句话
Input = [CLS] the man went to [MASK] store [SEP]
             penguin [MASK] are flight ## less birds [SEP]
Label = NotNext
             he bought a gallon [MASK] milk [SEP]
Label = IsNext
Input = [CLS] the man [MASK] to the store [SEP]
训练模型,使模型具备理解长序列上下文的联系的能力

2、BERT模型
BERT:全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,BERT的模型架构基于多层双向转换解码,因为decoder是不能获要预测的信息的,模型的主要创新点都在pre-traing方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation

其中“双向”表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息,这种“双向”的来源在于BERT与传统语言模型不同,它不是在给你大牛股所有前面词的条件下预测最可能的当前词,而是随机遮掩一些词,并利用所有没被遮掩的词进行预测

下图展示了三种预训练模型,其中 BERT 和 ELMo 都使用双向信息,OpenAI GPT 使用单向信息

3、BERT的输入部分

bert的输入部分是个线性序列,两个句子通过分隔符分割,最前面和最后增加两个标识符号。每个单词有三个embedding:位置信息embedding,这是因为NLP中单词顺序是很重要的特征,需要在这里对位置信息进行编码;单词embedding,这个就是我们之前一直提到的单词embedding;第三个是句子embedding,因为前面提到训练数据都是由两个句子构成的,那么每个句子有个句子整体的embedding项对应给每个单词。把单词对应的三个embedding叠加,就形成了Bert的输入。

如上图所示,输入有A句[my dog is cute]和B句[he likes playing]这两个自然句,我们首先需要将每个单词及特殊符号都转化为词嵌入向量,因为神经网络只能进行数值计算。其中特殊符[SEP]是用于分割两个句子的符号,前面半句会加上分割码A,后半句会加上分割码B
      因为要建模句子之间的关系,BERT 有一个任务是预测 B 句是不是 A 句后面的一句话,而这个分类任务会借助 A/B 句最前面的特殊符 [CLS] 实现,该特殊符可以视为汇集了整个输入序列的表征。
最后的位置编码是 Transformer 架构本身决定的,因为基于完全注意力的方法并不能像 CNN 或 RNN 那样编码词与词之间的位置关系,但是正因为这种属性才能无视距离长短建模两个词之间的关系。因此为了令 Transformer 感知词与词之间的位置关系,我们需要使用位置编码给每个词加上位置信息。

总结一下:
(1)token embeddings表示的是词向量,第一个单词是CLS,可以用于之后的分类任务
(2)segment embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
(3)position embeddings表示位置信息

4、NLP的四大类任务
(1)序列标注:分词、实体识别、语义标注……
(2)分类任务:文本分类、情感计算……
(3)句子关系判断:entailment、QA、自然语言推理
(4)生成式任务:机器翻译、文本摘

上图给出示例,对于句子关系类任务,很简单,和GPT类似,加上一个起始和终结符号,句子之间加个分隔符即可。对于输出来说,把第一个起始符号对应的Transformer最后一层位置上面串接一个softmax分类层即可。对于分类问题,与GPT一样,只需要增加起始和终结符号,输出部分和句子关系判断任务类似改造;对于序列标注问题,输入部分和单句分类是一样的,只需要输出部分Transformer最后一层每个单词对应位置都进行分类即可。从这里可以看出,上面列出的NLP四大任务里面,除了生成类任务外,Bert其它都覆盖到了,而且改造起来很简单直观。(https://zhuanlan.zhihu.com/p/49271699)

5、模型的评价
(1)优点

BERT是截止至2018年10月的最新的的state of the art模型,通过预训练和精调可以解决11项NLP的任务。使用的是Transformer,相对于rnn而言更加高效、能捕捉更长距离的依赖。与之前的预训练模型相比,它捕捉到的是真正意义上的bidirectional context信息

(2)缺点

作者在文中主要提到的就是MLM预训练时的mask问题:

1)[MASK]标记在实际预测中不会出现,训练时用过多[MASK]影响模型表现;

2)每个batch只有15%的token被预测,所以BERT收敛得比left-to-right模型要慢(它们会预测每个token)

6、GLUE语料集的介绍
实验数据以及对应的NLP任务
MNLI:蕴含关系推断
QQP:问题对是否等价
QNLI:句子是都回答问句
SST-2:情感分析
CoLA:句子语言性判断
STS-B:语义相似
MRPC:句子对是都语义等价
RTE:蕴含关系推断
WNLI:蕴含关系推断

7、git网址https://github.com/google-research/bert
关于bert知识干货的汇总https://zhuanlan.zhihu.com/p/50717786

本文转自https://blog.csdn.net/yangfengling1023/article/details/84025313
---------------------
作者:小白的进阶
来源:CSDN
原文:https://blog.csdn.net/laobai1015/article/details/87937528
版权声明:本文为博主原创文章,转载请附上博文链接!

BERT的通俗理解 预训练模型 微调相关推荐

  1. 在线部分:werobot服务、主要逻辑服务、句子相关模型服务、BERT中文预训练模型+微调模型(目的:比较两句话text1和text2之间是否有关联)、模型在Flask部署

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...

  2. 【NLP】万字梳理!BERT之后,NLP预训练模型发展史

    作者 | 周俊贤 整理 | NewBeeNLP 本文讲解下BERT推出后,预训练模型的演变,包括BERT.RoBERTa.ALBERT.ERNIE系列.ELECTRA.下面脑图是本系列第一篇内容,欢迎 ...

  3. 万字梳理!BERT之后,NLP预训练模型发展史

    作者 | 周俊贤 整理 | NewBeeNLP 本文讲解下BERT推出后,预训练模型的演变,包括BERT.RoBERTa.ALBERT.ERNIE系列.ELECTRA.下面脑图是本系列第一篇内容,欢迎 ...

  4. 赋能RPA时代,微软发布通用文档理解预训练模型LayoutLM

    来源:微软研究院AI头条 本文约3900字,建议阅读10+分钟 有效利用文档结构信息和视觉结构信息,显著提高模型准确率. 标签:自然语言处理 [ 导读 ]近年大热的机器人流程自动化(Robotic P ...

  5. 怎么理解预训练模型?

    预训练模型的理解 什么是预训练 预训练的思想 CV领域的预训练 什么是预训练 "预训练"的做法一般是将大量低成本收集的训练数据放在一起,经过某种预训方法去学习其中的共性,然后将其中 ...

  6. 【ChatGPT】预训练模型微调及其应用(ChatGLM-6B、duckduckgo_search、GPT在科研的应用等)

    note instructGPT(基于提示学习的系列模型)-->GPT3.5(大规模预训练语言模型)-->ChatGPT模型(高质量数据标注+反馈学习).chatGPT三大技术:情景学习. ...

  7. 20项任务全面碾压BERT,全新XLNet预训练模型

    这是继BERT发布以来又一个令广大NLPer兴奋的消息, CMU 与谷歌大脑提出的 XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果. 而真正令人激动的是 ...

  8. 预训练模型微调 | 一文带你了解Adapter Tuning

    来源: AINLPer微信公众号(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2022-10-23 引言  前几天的一篇文章,给大家介绍了预训练模型的微调方法Promp ...

  9. Pytorch-使用Bert预训练模型微调中文文本分类

    语料链接:https://pan.baidu.com/s/1YxGGYmeByuAlRdAVov_ZLg 提取码:tzao neg.txt和pos.txt各5000条酒店评论,每条评论一行. 安装tr ...

最新文章

  1. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  2. Hibernate缓存原理与策略 Hibernate缓存原理:
  3. linux c 常用函数
  4. html js php 混编,Razor标记语言和HTML,js混编
  5. [No0000142]Outlook通过添加签名 自动添加邮件模板
  6. 好班微校云信聊天解读记录
  7. P3914-染色计数【树形dp】
  8. 华为服务器驱动_不可错过的华为核心概念股
  9. 大数据分析平台的功能有哪些
  10. python程序初学者计算器界面_Python初学者,一个简单的计算器程序的数学函数
  11. android plot,androidplot行不显示
  12. TestStand-调试VI
  13. videojs-flash.min.js 报错 this.el_.vjs_getProperty is not a function
  14. mysql instead of触发_mysql 触发器
  15. SSM框架流浪动物管理系统宠物寄样收养领养宠物收容所管理(idea开发javaweb-javaee-j2ee-springboot)
  16. 使用Git Bash的scp复制文件到Linux
  17. ffmpeg添加mpeg ps流的pcm的解码支持
  18. 2023团队程序设计天梯赛选拔赛
  19. 转:Tumblr:150亿月浏览量背后的架构挑战
  20. python程序获取最新的行政区划名称代码

热门文章

  1. 2022-2028年中国锂电材料产业投资分析及前景预测报告
  2. 2022-2028年中国手术室设备行业市场研究及前瞻分析报告
  3. 3 用python进行OpenCV实战之画图(直线,矩形,圆形)
  4. 外包工作经历暨2021年终总结
  5. 【Sql Server】DateBase-结构化查询基础
  6. 详细通俗重点CRF层讲解
  7. SSAN 关系抽取 论文笔记
  8. listary 指定目录搜索_everything
  9. Attention is all your need 谷歌的超强特征提取网络——Transformer
  10. LeetCode简单题之数组中的字符串匹配