0
点赞
收藏
分享

微信扫一扫

读论文——A Primer in BERTology What We Know About How BERT Works

yellowone 2022-03-30 阅读 37
NLPBERT

第一遍

标题以及作者

在这里插入图片描述

摘要

本文回顾了关于BERT如何工作、它学习了什么样的信息以及它是如何表示的对其训练目标和架构的修改过度参数化问题以及压缩的方法。然后本文概述了未来研究的方向。

结论

在一年多一点的时间里,BERT 已经成为 NLP 实验中无处不在的基线,并激发了许多分析该模型并提出各种改进的研究。论文流似乎正在加速而不是放缓,我们希望这项调查有助于社区关注最大的未解决问题

1 介绍

BERT的基础是Transformer块,transformer块具备良好并行化以及更好的长时程依赖。

我们首先考虑它的语言方面,即有关 BERT 学习的语言和世界知识类型的当前证据,以及这些知识可以存储在模型中的位置和方式。然后转向模型的技术方面,概述当前改进BERT架构、预训练和微调的建议。最后,本文讨论了过度参数化的问题、压缩BERT的方法以及作为模型分析技术的模型修剪技术。

2 BERT架构概述

从根本上说,BERT 是一堆 Transformer 编码器层,由多个自注意力“头”组成。对于序列中的每个输入标记,每个头计算键、值和查询向量,用于创建加权表示。同一层中所有头的输出被组合并通过一个全连接层。每层都用跳过连接包裹,然后进行层规范化。

BERT 的传统工作流程包括两个阶段:预训练和微调。预训练使用两个自监督任务:掩蔽语言建模(MLM,预测随机掩蔽的输入标记)和下一句预测(NSP,预测两个输入句子是否彼此相邻)。在下游应用程序的微调中,通常在最终编码器层的顶部添加一个或多个全连接层。

输入表示的计算如下:输入中的每个单词首先被标记为单词片段,然后将三个嵌入层(标记、位置和句子段)组合起来以获得固定长度的向量。特殊标记[CLS]用于分类预测,[SEP]分隔输入段。

3 BERT具有哪些知识

研究编码在 BERT 权重中的知识的方法:1. fill-in-the-gap probes of MLM, 2. 分析自注意力权重,3. 使用不同BERT表示作为输入的探测分类器

3.1 句法知识

BERT 表示是分层的而不是线性的,也就是说,除了词序信息之外,还有类似于句法树结构的东西。

BERT 嵌入对有关词性、句法块和角色的信息进行编码,似乎在token嵌入本身中捕获了足够的句法信息以恢复句法树,尽管探测分类器无法恢复句法树中远距离父节点的标签。

至于句法是如何表示的,句法结构似乎没有直接编码在自注意力权重中,但是,可以从 BERT token表示中恢复句法信息

BERT“自然地”学习一些句法信息,尽管它与语言注释资源不太相似。

BERT 在执行完形填空任务时会考虑主谓一致,即使在主谓之间具有某些无意义或者具有干扰的句子。

即使改变词序、缩减句子、去除主体和客体,BERT的预测仍不会发生变化;这可能意味着 BERT 的句法知识不完整,或者它不需要依赖它来解决其任务。后者似乎更有可能,有监督解析的中间微调步骤对下游任务性能没有太大影响。

3.2 语义知识

BERT对语义角色有一定的了解,BERT 甚至可以判断哪些语义角色更适合一些词组搭配。(例如:to tip a waiter > to tip a chef > to tip a robin)

BERT 对有关实体类型、关系、语义角色和原型角色的信息进行编码,因为可以使用探测分类器检测到这些信息。

开箱即用的 BERT 对于命名实体替换来说非常脆弱:例如,在共指任务中替换名称会改变 85% 的预测。这表明该模型实际上并未形成命名实体的通用概念,尽管其在 NER 探测任务上的 F1 分数很高。

3.3 世界常识

BERT 无法根据其世界知识进行推理

3.4 限制

  1. 探测工具的受限:我们的探索分类器没有观察到语言模式这一事实并不能保证它不存在,并且对模式的观察并不能告诉我们它是如何使用的;此外,不同的探测方法可能会导致互补甚至相互矛盾的结论
  2. 替代方法是专注于识别 BERT 在推理时实际依赖的内容,专门从模型中删除某些信息并查看它如何改变性能;另一个方向是信息论探索,这强调了重点不应该放在表示中包含的信息量上,而应该放在从表示中提取它的难易程度上。

4 本地化语言知识

4.1 BERT嵌入

传统的词嵌入和BERT词嵌入都可以视作最大化互信息,只不过BERT更多运用到了上下文信息。几项研究报告说,提炼的上下文嵌入可以更好地编码词汇语义信息(即,它们更擅长于传统的词级任务,例如词相似度)。

BERT 嵌入在向量空间中占据了一个狭窄的锥体,并且这种效果从较早到较晚的层。也就是说,如果嵌入方向一致(各向同性),则两个随机词的余弦相似度平均会比预期高得多。

生成用于分类的句子或文本表示的标准方法是使用 [CLS] 令牌,但也正在讨论替代方案,包括token表示的串联归一化均值层激活

4.2 自注意力头

4.2.1 带有语言功能的头

一些BERT的头似乎专注于某些类型的句法关系,没有一个头具有完整的句法树信息,这与3.1节的结论一致,但是用单一头却能执行共指解析(这个过程却需要相当多的句法知识);注意力权重是主谓一致回指(例如:代词的指代)的弱指标

4.2.2 对特殊词元的注意力

使用基础 BERT 对维基百科段落进行编码,以特别考虑对特殊标记的关注,并指出早期层的头部更多地关注 [CLS],中间层关注 [SEP],最后一些层关注句点和逗号。如果它的模式不适用于当前情况,则忽略头部的信号。在对 [SEP] 和 [CLS] 进行微调后,会受到很多关注,具体取决于任务。有趣的是,BERT 也非常关注标点符号,这就是说句号和逗号几乎与特殊标记一样频繁,因此该模型可能会出于相同的原因学会依赖它们。

4.3 BERT层

较低层具有关于线性词序的最多信息,伴随着分层句子结构的知识(包括:预测单词索引、主要助动词、句子主语)增加,线性词序知识减少。

句法信息在BERT中间层更加多

在这里插入图片描述

总的来说,BERT的早期层主要是线性词序信息,中层是一些句法信息,最后层是基于任务的信息,语义信息遍布于所有层。中间层具有更好地迁移性也意味着可以学习到更多的信息。

5 训练BERT

5.1 模型架构选择

  1. 模型的层数比头数更加重要,较大的隐藏表示大小更好
  2. 模型的层数越深就有更多的能力编码不是特定于任务的信息
  3. vanilla的BERT的许多自注意力头似乎自然而然地学习了相同的模式

5.2 训练方法的改进

  1. 大批量的预训练可以改善模型的困惑度以及下游任务性能
  2. [CLS]词元的规范化可以稳定训练并略微提高文本分类任务的性能
  3. 由于较高层和较低层的自注意力模式相似,因此可以以递归方式进行模型训练,首先训练较浅的版本,然后将训练的参数复制到较深的层,这种“热启动”可以在不牺牲性能的情况下使训练速度提高 25%。

5.3 预训练BERT

预训练任务的改进:

  1. 关于MASK
  2. 替换NSP,使用其他预训练任务

增加预训练数据,改进数据质量

预训练的作用

在这里插入图片描述

5.4 微调BERT

在微调的3个epoch中,变化最大的是最后两层,但是这些变化引起了自注意力关注到[SEP]而不是语言上可解释的模式。如果说[SEP]是无用指标,微调是为了告诉模型需要忽略什么

微调方法:

  1. 使用所有层的加权组合而不是某一层
  2. 两阶段的微调,在与训练和微调之间引入一个中间监督训练阶段
  3. 对抗性词云扰动
  4. 对抗性正则化
  5. Mixout正则化

6 BERT应该多大

6.1 过度参数化

模型参数变得越来越多,可能由于自然语言比较复杂需要更多的参数,但是模型可能没有很好地使用每个参数,因为在模型中发现有很多相似的头,这就意味着信息冗余,因此对模型进行修剪,不仅不会显著降低模型性能,而且能够极大提升模型运行速度。

6.2 压缩技术

压缩技术主要包括知识蒸馏、量化和修剪。

  1. 知识蒸馏主要是通过一个更小的学生网路经过训练以模仿更大的教师网络的行为。

  2. 量化主要通过降低权重的精度来减少BERT的内存占用。

  3. 修剪,基于BERT中某些头重复了这一现实,通过将大模型的某些部分归零来减少计算量。结构化修剪中,架构块被丢弃;非结构化中,对整个模型的权重进行修剪,例如幅度修剪,运动修剪。

6.3 修剪和模型分析

修剪技术基本思想是先验压缩模型由对预测有用的元素组成;因此通过找出它们在做什么,可能发现整个网络在做什么。例如,BERT 的头部似乎对帧语义关系进行编码,但禁用它们可能不会损害下游任务的性能,这表明该知识并未实际使用。对于基础 Transformer,识别 self-attention head 的功能,然后检查其中哪些在修剪后幸存下来,发现句法和位置 head 是最后一个去的。

7 未来研究方向

  1. 需要口头推理的基准
    1. 模型仍依赖于浅层启发式
  2. 需要全方位语言能力的基准
  3. 开发“教授”推理的方法
    1. 如何利用模型学到的知识
  4. 研究推理阶段使用到哪些知识

小结:

  1. 本文提出了三个问题,1. BERT如何工作以及如何学习表示 2. BERT的架构以及训练如何改进 3. 如何让模型更加轻量化
  2. 本文针对以上三点分别进行回答,介绍BERT的模型结构,然后分析模型学到的句法、语义、常识等,并对BERT中不同结构学到哪些知识进行分析;价绍BERT的结构,以及如何改进,如何更好地进行预训练和微调;最后BERT类的模型中具有一些冗余信息,如何去消除哪些无用的信息。
举报

相关推荐

0 条评论