自然语言处理笔记总目录


论文地址:BERT

Transformer介绍


何为BERT

BERT,全称Bidirectional Encoder Representation from Transformers,是2018年10月由Google AI研究院提出的一种预训练模型。

BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且在11种不同NLP测试中创出SOTA表现。包括将GLUE基准推高至80.4% (绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进5.6%)。成为NLP发展史上的里程碑式的模型成就。


BERT的架构

如下图最左所示,BERT采用了Transformer Encoder block进行连接,是一个双向编码模型


从BERT架构图中可以看到,宏观上BERT分三个主要模块:

  • 最底层黄色标记的Embedding模块
  • 中间层蓝色标记的Transformer模块
  • 最上层绿色标记的预微调模块

Embedding模块:BERT中的该模块是由三种Embedding共同组成而成,如下图


  • Token Embeddings 是词嵌入张量,第一个单词是CLS标志,可以用于之后的分类任务
  • Segment Embeddings 是句子分段嵌入张量,是为了服务后续的两个句子为输入的预训练任务
  • Position Embeddings 是位置编码张量,此处注意和传统的Transformer不同,不是三角函数计算的固定位置编码,而是通过学习得出来的.
  • 整个Embedding模块的输出张量就是这3个张量的直接加和结果

  • 双向Transformer模块:BERT中只使用了经典Transformer架构中的Encoder部分,完全舍弃了Decoder部分。而两大预训练任务也集中体现在训练Transformer模块中

预微调模块:

  • 经过中间层Transformer的处理后,BERT的最后一层根据任务的不同需求而做不同的调整即可
  • 比如对于sequence-level的分类任务,BERT直接取第一个 [CLS] token 的final hidden state,再加一层全连接层后进行softmax来预测最终的标签

对于不同的任务,微调都集中在预微调模块,BERT论文中几种重要的NLP微调任务架构图展示如下


从上图中可以发现,在面对特定任务时,只需要对预微调层进行微调,就可以利用Transformer强大的注意力机制来模拟很多下游任务,并得到SOTA的结果。

(句子对关系判断,单文本主题分类,问答任务(QA),单句贴标签(NER))


若干可选的超参数建议如下:

Batch size: 16, 32
Learning rate (Adam): 5e-5, 3e-5, 2e-5
Epochs: 3, 4

BERT的预训练任务

BERT包含两个预训练任务:

  • 任务一:Masked LM (带mask的语言模型训练)
  • 任务二:Next Sentence Prediction (下一句话预测任务)

任务一:Masked LM (带mask的语言模型训练)

  • 关于传统的语言模型训练,都是采用left-to-right,或者left-to-right + right-to-left结合的方式,但这种单向方式或者拼接的方式提取特征的能力有限。为此BERT提出一个深度双向表达模型(deep bidirectional representation)。即采用MASK任务来训练模型
  • 1:在原始训练文本中,随机的抽取15%的token作为参与MASK任务的对象
  • 2:在这些被选中的token中,数据生成器并不是把它们全部变成[MASK],而是有下列3种情况
    • 2.1:在80%的概率下,用[MASK]标记替换该token,比如 my dog is hairy → \rightarrow my dog is [MASK]
    • 2.2:在10%的概率下,用一个随机的单词替换token,比如 my dog is hairy → \rightarrow my dog is apple
    • 2.3:在10%的概率下,保持该token不变,比如 my dog is hairy → \rightarrow my dog is hairy
  • 3:模型在训练的过程中,并不知道它将要预测哪些单词?哪些单词是原始的样子?哪些单词被遮掩成了[MASK]?哪些单词被替换成了其他单词?正是在这样一种高度不确定的情况下,反倒逼着模型快速学习该token的分布式上下文的语义,尽最大努力学习原始语言说话的样子。同时因为原始文本中只有15%的token参与了MASK操作,并不会破坏原语言的表达能力和语言规则。

任务二:Next Sentence Prediction (下一句话预测任务)

  • 在NLP中有一类重要的问题比如QA(Quention-Answer),NLI(Natural Language Inference),需要模型能够很好的理解两个句子之间的关系,从而需要在模型的训练中引入对应的任务。在BERT中引入的就是Next Sentence Prediction任务。采用的方式是输入句子对(A, B),模型来预测句子B是不是句子A的真实的下一句话
  • 1:所有参与任务训练的语句都被选中作为句子A
    • 1.1:其中50%的B是原始文本中真实跟随A的下一句话。(标记为IsNext, 代表正样本)
    • 1.2:其中50%的B是原始文本中随机抽取的一句话。(标记为NotNext, 代表负样本)
  • 2:在任务二中,BERT模型可以在测试集上取得97%-98%的准确率

自然语言处理(二十八):BERT介绍相关推荐

  1. SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  2. 优秀的 Verilog/FPGA开源项目介绍(二十八)- DSP(Digital Signal Processing)

    优秀的 Verilog/FPGA开源项目介绍(二十八)- DSP(Digital Signal Processing) 介绍 FPGA在数字信号处理领域一直有着比通用CPU得天独厚的优势,所以一直都受 ...

  3. 2008R2Win7管理二十八Mail之基本使用

    2008R2Win7管理二十八Mail之基本使用 上篇我们已经安装好了exchange2010,呵呵本片简单介绍和看下ex2010的基本界面和使用 安装完成打开exchange控制台如图所示 汗,有试 ...

  4. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  5. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21 我要评论 这篇文章主要介绍了Android项 ...

  6. FreeSql (二十八)事务

    FreeSql实现了四种数据库事务的使用方法,脏读等事务相关方法暂时未提供.主要原因系这些方法各大数据库.甚至引擎的事务级别五花八门较难统一. 事务用于处理数据的一致性,处于同一个事务中的操作是一个U ...

  7. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过Ser ...

  8. RecyclerView完全解析,让你从此爱上它(二十八)

    RecyclerView完全解析,让你从此爱上它(二十八) 2015-11-20      0 个评论   来源: 专注移动开发,项目管理.jiangqqlmj   收藏   我要投稿 (一).前言: ...

  9. 无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现

    无人驾驶汽车系统入门(二十八)--基于VoxelNet的激光雷达点云车辆检测及ROS实现 前文我们提到使用SqueezeSeg进行了三维点云的分割,由于采用的是SqueezeNet作为特征提取网络,该 ...

  10. 微信小程序把玩(二十八)image组件

    原文:微信小程序把玩(二十八)image组件 image组件也是一个程序不可缺少的,可以这样说一个app中image组件随处可以看到,一般 image有两种加载方式第一种是网络图片第二种是本地图片资源 ...

最新文章

  1. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.11节创建与应用图案...
  2. node.js浅入深出---之fs模块
  3. 【GDKOI2003】分球
  4. elasticsearch 5.1 问题 ubuntu
  5. _Linux结束进程到底有多少种方法?
  6. 百度SEO Typecho仿Win95怀旧主题
  7. Java的四种引用方式
  8. [Linux]Linux系统调用列表
  9. SQL Server中的窗口函数
  10. js多个定时器 id按顺序么_定时器和时间轮系列(一): 初识
  11. java学习笔记④MySql数据库--01/02 database table 数据的增删改
  12. .NET发送邮件代码--測試通過
  13. 计算机408学什么区别,考研计算机408考什么
  14. WTL 自绘控件库 (CQsCheckBox)
  15. 再介绍一篇最新的Contrastive Self-supervised Learning综述论文
  16. 各类好文与摘抄的经典
  17. RMA Line stuck in AWAITING_RETURN or AWAITING_RETURN_DISPOSITION (文档 ID 378221.1)
  18. 驱动开发思路以及应用程序与驱动程序的区别
  19. 原生JS写仿淘宝搜索框(代码+效果),可实现3级搜索哦!
  20. 他写代码如入定,人称阿里“扫地僧”

热门文章

  1. GoldenGate—日常管理
  2. 图文并茂,一文读懂信号源
  3. 软件项目管理案例:假设50万的资金准备开设一间咖啡馆,请按照WBS原理将开设咖啡馆过程中所可能涉及的工作进行分解。
  4. ubuntu安装一些有用的小插件
  5. 宝塔面板网站一打开cpu百分百_解决宝塔面板CPU占满100%,负载100%网站缓慢等问题(完全篇)...
  6. 计算共形几何-代数拓扑
  7. GIS地图坐标系转换方法,快快收藏
  8. 系统集成特一级资质标准
  9. 9+11个无版权、高清、免费图片素材网站给你!免费无版权可商用图标、图片素材,需要图片的时候可以上去看看
  10. Hive入门详解操作