十八、SpanBERT [2019]

  1. BERT 这样的预训练方法已经显示出强大的性能收益,其中 BERT 使用自监督训练来掩码单个单词或单个子单词单元 subword unit 。然而,许多 NLP 任务涉及对两个或多个文本区间 text span 之间的关系进行推理。例如,在抽取式问答 extractive question answering 任务中,确定 "Denver Broncos""NFL team" 的一种类型,对于回答 "Which NFL team won Super Bowl 50?" 的问题至关重要。这样的 span 为自监督任务提供了更具挑战性的目标,例如,预测 "Denver Broncos" 相比已知下一个词是 "Broncos" 从而预测 "Denver" 要难得多。在论文 《SpanBERT: Improving Pre-training by Representing and Predicting Spans》中,作者介绍了一种 span-level 的预训练方法,其性能一致地优于 BERT ,在span selection 任务(如问答question answering 任务、以及共指消解coreference resolution 任务)中的收益最大。

    论文提出了一种预训练方法,即 SpanBERT ,旨在更好地表示和预测文本的 span 。论文的方法在掩码方案和训练目标上都与BERT 不同。

    • 首先,SpanBERT 掩码随机的 contiguous span ,而不是随机的单个token
    • 其次,SpanBERT 引入了一个新颖的区间边界目标 span-boundary objective: SBO ,使模型学会从 span 边界上观察到的 token 来预测整个 masked span

    span-based masking 迫使模型只使用该 span 的上下文来预测整个 span 。此外,SBO 鼓励模型将这种 span-level 的信息存储在 boundary token 处。下图说明了 SpanBERT 的方法。

    SpanBERT 的实现建立在 BERT 的一个精心调优的副本 replica 上,这个精心调优的 BERT 本身就大大超过了 original BERT 。在论文 baseline 的基础上,作者发现对单个 segment 进行预训练,而不是对 two half-length segment 进行 next sentence prediction: NSP 的目标,大大地提高了大多数下游任务的性能。因此,作者在调优后的 single-sequence BERT baseline 之上添加所提出的修改。

    总之,论文提出的预训练程序产生的模型在各种任务上的表现超过了所有的 BERT baseline ,特别是在 span selection 任务上的性能得到了大幅提高。具体而言, SpanBERTSQuAD 1.1SQuAD 2.0 上分别达到了 94.6% F188.7% F1 ,与论文精心调优的BERT 副本相比,误差减少了 27% 。作者还在另外五个抽取式问答 benchmarkNewsQA, TriviaQA, SearchQA, HotpotQA, Natural Questions)上观察到类似的收益。

    对于 document-level 共指消解,SpanBERT 还在具有挑战性的 CoNLL-2012 ("OntoNotes") 共享任务上达到了新的 SOTA ,其中 SpanBERT 达到了 79.6% F1 ,比之前的 top model 高出 6.6% (绝对提升,而不是相对提升)。最后,论文证明 SpanBERT 对没有显式涉及 span selection 的任务也有帮助,并表明 SpanBERT 甚至提高了 TACREDGLUE 的性能。

    虽然其它工作展示了添加更多数据(《XLNet: Generalized autoregressive pretraining for language understanding》)和增加模型规模(《Cross-lingual language model pretraining》)的好处,但这项工作表明了设计良好的预训练任务和目标的重要性,其中预训练任务和目标也会产生显著的影响。

  2. 相关工作:无标签文本中训练的 pre-trained contextualized word representation 最近对 NLP 产生了巨大的影响,特别是作为一种方法,用于针对特定任务在微调大模型之前先初始化该大模型。除了模型超参数和语料库的差异外,这些方法主要在其预训练任务和损失函数方面有所不同,相当多的当前文献提出了对 BERTMLM 目标进行增强。

    • 虽然以前的、以及同时进行的工作已经研究了 maskingERNIE )或 droppingMASSKERMIT)输入中的多个单词,尤其是作为语言生成任务的预训练。但 SpanBERT 预训练 span representation《Learning recurrent span representations for extractive question answering》),这被广泛用于问答、共指消解、以及各种其他任务。

      • ERNIE 显示了使用 phrase maskingnamed entity masking 对中文 NLP 任务的改进。
      • MASS 专注于语言生成任务,并采用 encoder-decoder framework ,在给定句子剩余部分的情况下重建一个 sentence fragment

      我们试图使用 SBO 目标更显式地建模 span ,并表明(几何分布的)random span masking 的效果与 masking linguistically coherent span 一样好,有时甚至比后者更好。我们在英语 benchmark 上评估了问答、关系抽取、以及共指消解,此外还有 GLUE

    • 此外:

      • 一个不同的 ERNIE《ERNIE: Enhanced language representation with informative entities》)专注于将结构化的知识库与 contextualized representation 相结合,着眼于 entity typingrelation classification 等知识驱动的任务。
      • UNILM 使用多个语言建模目标:单向(包括 left-to-rightright-to-left )、双向、以及 sequence-to-sequence 的预测,从而帮助摘要任务以及问题生成等生成任务。
      • XLM 为翻译和跨语言分类等多语言任务探索了跨语言预训练。
      • Kermit 是一种基于 insertion 的方法,在预训练期间填补 missing token (而不是预测 masked token ),他们显示了在机器翻译和 zero-shot 问答上的改进。
    • 与我们的工作同时:

      • RoBERTa 提出了一个 BERT 预训练的副本研究replication study ,衡量了许多关键超参数和训练数据大小的影响。

      • 同时,XLNet 结合了自回归损失和 Transformer-XL 架构,数据增加了8 倍多,在多个 benchmark 上取得了目前的 SOTA 成果。

        XLNet 在预训练期间也掩码了 span1-5token ),但对它们进行了自回归式的预测。我们的模型侧重于纳入 span-based pretraining ,作为一个副作用,我们提出了一个更强大的 BERT baseline ,在此同时控制了语料库、架构和参数规模。

    • 有些工作与我们的 SBO 目标相关。

      • pair2vec《pair2vec: Compositional word-pair embeddingsfor cross-sentence inference》)在预训练期间使用基于负采样的多变量目标 multivariate objective 来编码 word-pair relation 。然后,word-pair representation 被注入下游任务的注意力层,从而编码了有限的下游上下文。

        pair2vec 不同,我们的 SBO 目标产生 "pair"spanstart tokenend tokenrepresentation,在预训练和微调期间更充分地编码上下文,因此更合适被视为span representation

      • 《Blockwise parallel decoding for deep autoregressive models》 专注于使用 block-wise parallel decoding scheme 提高语言生成速度。他们并行地对多个时间步进行预测,然后退到由一个 scoring model 验证的最长前缀。

      • 与此相关的还有 sentence representation 方法,这些方法侧重于从 sentence embedding 中预测周围上下文。

18.1 模型

18.1.1 BERT 简介

  1. BERT 是一种自监督的方法,用于预训练一个深层的 transformer encoder ,然后再针对特定的下游任务来进行微调。BERT 优化了两个训练目标:掩码语言模型 masked language model: MLM 和下一句预测next sentence prediction: NSP 。这两个训练目标只需要大量的无标记的文本集合。

  2. 给定单词或子词 subword 的一个序列 X=(x1,x2,,xn)BERT 训练一个编码器,该编码器为每个 token 产生一个 contextualized vector representation

    (1)enc(x1,x2,,xn)=x1,x2,,xn
  3. MLMMLM 也被称为 cloze test ,它的任务是预测序列中的占位符 placeholder 所对应的 missing token 。具体而言, token 的一个子集 YX 被采样,并被不同的 token 集合所取代。在 BERT 的实现中,YXtoken 的比例为的 15% 。在 Y 中,80%token 被替换为[MASK]10%token 被替换为 random token (根据 unigram 分布)、10%token 保持不变。任务是根据 modified input 来预测 Y 中的 original token

    BERT 通过随机选择一个子集来独立地选择 Y 中的每个 token 。在 SpanBERT 中,我们通过随机选择 contiguous span 来定义 Y

  4. NSPNSP 任务将两个序列 (XA,XB) 作为输入,并预测 XB 是否是 XA 的直接延续。在 BERT 中是这样实现的:首先从语料库中读取序列 XA ,然后从序列 XA 结束的地方继续读取序列 XB (正样本)、或者从语料库中的一个随机的起点从而随机抽取序列 XB (负样本)。

    这两个序列由一个特殊的 [SEP] token 分开。此外,一个特殊的 [CLS] token 被添加到拼接序列(XAXB 拼接)的开头从而形成 input ,其中 [CLS]target 是:XB 在语料库中是否确实紧跟在 XA 之后。

  5. 总之,BERT 通过在双序列 bi-sequence 采样程序产生的数据中均匀地随机掩码 word piece ,同时优化了 MLMNSP 目标。接下来,我们将介绍我们对 data pipeline、掩码、以及预训练目标的修改。

18.1.2 SpanBERT

  1. 我们提出了 SpanBERT,这是一种自监督的预训练方法,旨在更好地表达和预测文本的span 。我们的方法受到 BERT 的启发,但在三个方面偏离了BERTbi-text classification framework

    • 首先,我们使用不同的随机程序来掩码 span of tokens ,而不是掩码单个 token
    • 其次,我们还引入了一个新颖的辅助目标(即,span-boundary objective: SBO),该目标试图仅使用 span’s boundarytokenrepresentation 来预测整个 masked span
    • 最后,SpanBERT 对每个训练实例采样单个 contiguous segment (而不是两个),因此没有使用 BERTnext sentence prediction 目标。
  2. Span Masking:给定一个 token 序列 X=(x1,x2,,xn),我们通过迭代地采样文本的span 从而选择 token 的一个子集 YX,直到 masking budget (例如,X15% )耗尽。在每轮迭代中:

    • 首先,我们从一个几何分布 lGeo(p) 中采样一个 span lengthtoken 数量),该分布偏向于较短的 span
    • 然后,我们随机地(均匀地)选择 masked span 的起点。我们总是采样完整单词(而不是 subword token )的序列,而且起点必须是一个完整单词的开头。

    根据初步试验,我们设定 p=0.2 ,并且在 lmax=10 的地方截断 l 。这产生了一个平均 span lengthmean(l)=3.8。下图显示了 span mask length 的分布。

    几何分布 Geo(p) 定义为:在 n 次伯努利试验中,单次成功的概率为 p ,那么前 k1 次都失败、第 k 次成功的概率为几何分布:f(k)=(1p)k1p

    这里的 3.8 的计算过程为:l=110l×f(l)l=110f(l)

    BERT 一样,我们也掩码了总共 15%token ,其中:80%masked token[MASK] 替换、10%masked tokenrandom token 替换、10%masked token 保持 original token 不变。然而,我们是在 span-level 进行这种替换,而不是对每个 token 独立地进行替换。也就是说,一个 span 中的所有 token 都被替换成 [MASK]random token、或者保持不变。

    平均序列长度为 3.8/0.15=25.3

  3. Span Boundary Objectivespan selection model 通常使用span boundary tokens (开始和结束)创建一个固定长度的 representation 。为了支持这样的模型,我们希望 end of spanrepresentation 能够尽可能多地总结 internal span content 。我们通过引入一个 span boundary objective 来做到这一点,该目标涉及仅仅使用span 边界上所观察到的 tokenrepresentation 来预测 masked span 的每个 token

    正式地,我们用 x1,x2,,xn 表示序列中每个 tokentransformer encoder 的输出。给定一个由 token (xs,,xe)Y组成的 masked span ,其中 (s,e) 表示masked span 的开始位置和结束位置(即,两个端点),我们使用外部的 boundary token xs1xe+1 、以及 target tokenposition embedding pis+1 ,来表达 span 中的每个 token xi

    (2)yi=f(xs1,xe+1,pis+1)

    注意,在 BERTMLM 目标中,隐式地用到了 target tokenposition 信息(通过在 [MASK] tokentoken embedding 上添加 positional embedding)。

    其中:

    • position embedding p1,p2, 标志着 masked token 相对于 left boundary token xs1 的相对位置。

      注意,BERT 采用了 absolute positional embedding,而这里是 relative positional embedding ,因此 SpanBERT 需要两套 positional embedding

    • 我们将 representation function f() 实现为一个具有 GeLU 激活函数 和 layer normalization 的两层前馈神经网络:

      (3)h0=[xs1;xe+1;pis+1]h1=LayerNorm(GeLU(W1h0))yi=LayerNorm(GeLU(W2h1))

      其中: [;] 表示向量拼接,W1,W2 为待学习的参数。

    然后我们使用 vector representation yi 来预测 token xi ,并计算交叉熵损失,这完全与 MLM 目标一样。

    SpanBERTmasked span (xs,,xe) 中的每个 token xiSBO 损失函数和常规的 MLM 损失函数进行求和,同时对 MLMSBOtarget token 复用 input embedding

    (4)L(xi)=LMLM(xi)+LSBO(xi)=logP(xixi)logP(xiyi)

    MLM 目标利用了所有 unmasked token 作为上下文,而 SBO 仅使用 boundary token 作为上下文,因此理论上 MLM 的信息更丰富。SBO 迫使模型更关注 boundary token ,是 MLM 的一种特殊的 case ,所以是否可以泛化 MLM 从而支持 SBO

  4. Single-Sequence Training:如前所述,BERT 的样本包含两个文本序列 (XA,XB),以及一个 next sentence prediciton: NSP 目标。我们发现,这种 setting 几乎总是比简单地使用没有 NSP 目标的单一序列要差。我们猜想,单序列训练 single-sequence training 优于带有NSP 的双序列训练 bi-sequence training ,有两个原因:

    • 在单序列训练中,模型从较长的 full-length 上下文中获益。
    • 在双序列上下文中,以另一个文档中的、通常不相关的上下文为条件,会给 MLM 增加噪音。

    因此,在我们的方法中,我们取消了 NSP 目标和 two-segment 采样程序,而只是简单地采样单个 contiguous segment 直到 n=512token ,而不是两个 half-segment 加起来 ntoken

  5. 总之,SpanBERT 通过以下方式预训练 span representation

    • 使用基于几何分布的掩码方案来掩蔽 full wordspan
    • 除了使用单序列 data pipelineMLM 之外,还优化了一个辅助的 span-boundary objective: SBO

    预训练程序如下:

    • 将语料库划分为单个的、长度为 512 tokencontiguous block

    • 在预训练的每个 step

      • 均匀随机地采样 block 的一个 batch
      • 基于 span masking 方案对每个 block 掩码 15%word piece
      • 对每个 masked token xi ,优化 L(xi)=LMLM(xi)+LSBO(xi)

18.2 实验

18.2.1 任务

  1. 我们对一组任务进行了评估,包括问答任务(七个)、共指消解任务、 GLUE benchmark 中的任务(九个)、以及关系抽取任务。我们预期,span selection 任务、问答、以及共指消解,将特别受益于我们的 span-based 预训练。

  2. 抽取式问答 Extractive Question Answering:给定一个短的文本段落和一个问题作为输入,抽取式问答任务是选择文本段落中连续的一个 text span 作为答案。

    我们首先在 SQuAD 1.1SQuQD 2.0 上进行评估,它们一直是主要的问答任务 benchmark ,尤其是对于预训练模型。

    我们另外还在 MRQA 共享任务的五个数据集上进行评估:NewsQASearchQATriviaQAHotpotQANatural Questions。由于 MRQA 共享任务没有公开的测试集,我们将验证集一分为二,构建为新的验证集和测试集。这些数据集在领域 domain 和收集方法上都有所不同,这使得这些数据集成为一个很好的测试平台,用于评估我们的预训练模型是否能在不同的数据分布中很好地进行泛化。

    遵从 BERT ,我们对所有的数据集使用相同的 QA 模型架构:

    • 首先,我们将段落 P=(p1,p2,,plp) 和问题 Q=(q1,q2,,qlq) 转换为单个序列 X=[CLS]p1p2plp[SEP]q1q2qlq[SEP]

    • 然后,我们将序列 X 馈入 pre-trained transformer encoder ,并在其之上独立训练两个线性分类器,用于预测 answer span boundary(开始点和结束点)。

      对于 SQuAD 2.0 中的不可回答的问题,我们只需将 answer span 设置为 [CLS] 这个 special token (即,开始点和结束点都是 0 )。

  3. 共指消解 Coreference Resolution:共指消解是对文本中的 mention 进行聚类的任务,这些 mention 引用相同的现世界实体。我们对 CoNLL-2012 共享任务进行了评估,用于 document-level 的共指消解。我们使用 《BERT for coreference resolution: Baselines and analysis》的高阶共指模型 higher-order coreference model《Higher-order coreference resolution with coarse-to-fine inference》)的独立版本实现。文档被划分为预定义长度的 non-overlapping segment 。每个 segment 由预训练的 transformer encoder 独立编码,它取代了原来的 LSTM-based encoder 。对于每个 mention span x ,该模型在可能的 antecedent span 集合 Y 上学习一个分布 P()

    (5)P(y)=exp(s(x,y))yYexp(s(x,y))

    span pair 评分函数 s(x,y) 是一个前馈神经网络,它作用在固定长度的 span representation 、以及 x,y 的人工设计的特征之上:

    (6)s(x,y)=sm(x)+sm(y)+sc(x,y)Rsm(x)=FFNNm(gx)Rsc(x,y)=FFNNc(gx,gy,ϕ(x,y))R

    其中:

    • x 为一个 span,它包含多个连续的 tokeny 也为一个 span,它也包含多个连续的 token
    • gx,gy 分别表示 span representation。一个 span representationspan 两个端点所对应的两个 transformer output state 、以及一个 attention vector (它在当前 span 种所有 tokenoutput representation 上计算而来)的拼接。
    • FFNNm()FFNNc 分别代表两个具有单隐层的前馈神经网络。
    • ϕ(x,y) 代表人工设计的特征(如,speaker 和题材的信息)。

    sc(,) 可以理解为两个 span 的交互,sm() 可以理解为 spanbias

  4. 关系抽取 Relation ExtractionTACRED 是一个具有挑战性的关系抽取数据集。给定一个句子和其中的两个 span (主语和宾语),任务是从 42 种预定义的关系类型中预测 span 之间的关系,包括 no relation

    我们遵循 《Position-aware attention and supervised data improve slot filling》entity masking 方案,用他们的NER tag 替换主语实体和宾语实体,如 "[CLS] [SUBJ-PER] was born in [OBJ-LOC] , Michigan, . . . ",最后在 [CLS] token 之上添加一个线性分类器来预测关系类型。

  5. GLUEGeneral Language Understanding Evaluation: GLUE 基准包括九个 sentence-level 分类任务:

    • 两个 sentence-level 分类任务,包括:

      • CoLA:用于评估语言可接受性 linguistic acceptability
      • SST-2:用于情感分类 sentiment classification
    • 三个 sentence-pair similarity 任务,包括:

      • MRPC,一个二元转述任务 binary paraphrasing task,其中 sentence pair 来自于新闻。
      • STS-B ,一个分级的相似性 graded similarity task 任务,其中 sentence pair 来自于新闻标题。
      • QQP ,一个二元转述任务 binary paraphrasing task,其中 sentence pair 来自于 Quora question pair
    • 四个自然语言推理任务,包括 MNLI, QNLI, RTE, WNLI

    与问答、共指消解和关系抽取不同,这些 sentence-level 任务不需要显式建模 span-level 语义。然而,它们仍然可能受益于隐式的 span-based 推理(例如,首相 Prime Minister 是政府首脑)。遵从之前的工作,我们将 WNLI 排除在结果之外,以便进行公平比较。虽然最近的工作 《Multi-task deep neural networks for natural language understanding》应用了几个 task-specific 策略来提高单个 GLUE 任务的性能,但我们遵循 BERT 的单任务设置,仅仅这些分类任务的 [CLS] token 之上添加了一个线性分类器。

18.2.2 实现

  1. 我们在 fairseq 中重新实现了 BERT 的模型和预训练方法。我们使用了 BERT_large的模型配置,也在相同的语料库上(即,BooksCorpusEnglish Wikipedia,使用带大小写的 Wordpiece token )预训练了我们所有的模型。

    与原始的 BERT 实现相比,我们的实现的主要区别包括:

    • 我们在每个 epoch 中使用不同的掩码(即,动态掩码),而 BERT 在数据处理期间为每个序列采样 10 个不同的掩码。

    • 我们删除了之前使用的所有短序列策略,这些短序列策略包括(被 BERT 所采用):

      • 0.1 的小概率采样较短的序列。
      • 首先在前 90% 的训练步中以 128 的较短序列进行预训练,然后在剩下的 10% 的训练步中以正常序列长度进行预训练。

      取而代之的是,我们总是采用高达 512 token 的序列,直到序列到达一个文档边界。

    关于这些修改及其影响,我们请读者参考 RoBERTa 原始论文的进一步讨论。

  2. BERT 一样,学习率在前 10K 步中被预热到 1e-4 的峰值,然后线性衰减。我们采用了 β 超参数(β1=0.9,β2=0.999)和 0.1decoupled weight decay《Decoupled weight decay regularization》)。我们还在所有层和注意力权重上采用 0.1dropout ,以及 GeLU 激活函数。我们采用 AdamW 优化器,其中 epsilon = 1e-8 ,迭代 2.4M 步。我们的实现使用 batch size = 256,序列最大长度为 512 token

    传统的 weight decay

    (7)θt+1=(1λ)θtηL(θt)

    λweight decay 系数。在常规 SGD 的情况下,weight decay 等价于 L2 正则化。

    但是,在 Adam 等方法中,L2 正则化与 weight decay 并不等价。因此人们提出 decoupled weight decay 从而用于 Adam 等方法。

    预训练是在 32Volta V100 GPU 上进行的,花了 15天时间完成。微调是基于 HuggingFace 的代码库实现的,更多的微调细节如下:

    • 抽取式问答:对于所有的问答任务,我们使用 max_seq_length = 512,以及一个大小为 128 的滑动窗口(如果序列长度大于 512 )。

      对于所有的数据集,我们调优的学习率范围是:{5e-6, 1e-5, 2e-5, 3e-5, 5e-5};调优的 batch size 范围是:{16, 32} ;微调四个 epoch

    • 共指消解:我们将文档划分为多个块 chunk,每个块的长度为 max_seq_length 并且独立地编码每个块。

      对于所有的数据集,我们调优的 max_seq_length 范围是:{128, 256, 384, 512};调优的 BERT 学习率范围是:{1e-5, 2e-5} ;调优的 task-specific 学习率范围是:{1e-4, 2e-4, 3e-4} ;微调 20epoch

      我们使用 batch size = 1 (每次一篇文档)。

    • TACRED/GLUE:对于所有数据集,我们使用 max_seq_length = 128,调优的学习率范围是:{5e-6, 1e-5, 2e-5, 3e-5, 5e-5} ;调优的 batch size 范围是:{16, 32} ;微调 10epoch

      唯一的例外是 CoLA 数据集,我们为它微调 4epoch,因为 10epoch 会导致严重的过拟合。

18.2.3 Baseline

  1. 我们将 SpanBERT 和如下三个 baseline 进行比较:

    • Google BERT:由 《BERT: Pre-training of deep bidirectional transformers for language understanding》 发布的预训练模型。
    • Our BERT:我们重新实现的 BERT,其中改进了数据预处理和优化过程(如,动态掩码,废除短序列策略)。
    • OurBERT-1seq:我们重新实现的另一个版本的 BERT,其中在单个 full-length 序列上训练而没有NSP 任务。

18.2.4 实验结果

  1. Extractive Question Answering:下表展示了在 SQuAD 1.1SQuAD 2.0 上的实验结果。SpanBERT 分别比 Our BERT 高出 2.0% F12.8% F1 ,比 Google BERT 高出 3.3% F15.4% F1 。在 SQuAD 1.1 中,SpanBERT 超出人类性能 3.4% F1

    此外,OurBERT-1seq > Our BERT > Google BERT

    下表表明,这一趋势不仅在 SQuAD 上成立,在每个 MRQA 数据集上也成立。可以看到:

    • 平均而言,我们看到 SpanBERT 超越了 Our BERT 高达 2.9%,尽管其中的一些改进来自于 single-sequence training+1.1%),但大部分改进来自于 span maskingspan boundary objective+1.8%)。
    • 此外,SpanBERTTriviaQAHotpotQA 上相对于 Our Bert-1seq 有特别大的改进,分别高达 +3.2%+2.7% 。这意味着 span maskingspan boundary objective 起到了重要作用。

  2. Coreference Resolution: 下表显示了 OntoNotes 共指消解 benchmark 上的实验结果。可以看到:

    • 平均而言, Our BERT 相比 Google BERT 提高了 1.2% F1,而 single-sequence training (即,Our BERT-1seq)相比于 Our BERT 又带来了 0.5% 的收益。
    • SpanBERTOur BERT-1seq 的基础上又有了很大的提高,达到了一个新的 SOTA 结果 79.6% F1 (之前的 SOTA 结果是 73.0% )。

  3. Relation Extraction:下表显示了 TACRED 上的实验结果。可以看到:

    • SpanBERTOur BERT 高出 3.3% F1 ,并接近目前的 SOTASpanBERT 比他们的 BERT_EM 表现更好,但比 BERT_EM + MTB0.7 分,后者使用 entity-linked text 进行额外的预训练。

    • SpanBERT 超出 Our BERT 的增益的大部分(+2.6% F1 )来自于 single-sequence training ,尽管 span maskingspan boundary objective 的贡献也是可观的 (0.7% F1)。而 span maskingspan boundary objective 的贡献主要来自于更高的召回率(即 R 列)。

      single-sequence training 的贡献主要来自于更高的 precision

  4. GLUE:下表展示了 GLUE 上的实验结果。可以看到:

    • 对于大多数任务,不同的模型似乎表现相似。
    • 没有 NSP 目标的 single-sequence training 大大改善了 CoLA ,并在 MRPCMNLI 上产生了较小(但是仍然可观)的改善。
    • SpanBERT 的主要收益是在 QNLI 数据集( +1.3% ,它基于 SQuAD )、以及 RTE 数据集(+6.9%),后者是 SpanBERTGLUE 平均分上升的主要原因。

  5. 总体趋势:我们在 17benchmark 上将我们的方法与三个 BERT 版本进行了比较,发现 SpanBERT 在几乎每个任务上都优于BERT

    • 14 项任务中,SpanBERT 的表现优于所有 baseline
    • 在两项任务(MRPCQQP )中,SpanBERT 的准确率与 single-sequence 训练的 BERT 相当,但仍优于其他 baseline
    • 在一项任务(SST-2 )中, Google BERTSpanBERT 的准确率高 0.4%

    当考虑到增益的大小时,似乎 SpanBERT 在抽取式问答方面特别好。例如:

    • SQuAD 1.1 中,我们观察到 2.0% F1 的增益,尽管 baseline 已经远远高于人类的表现。
    • MRQA 中,SpanBERTOur BERT 的基础上提高了从 2.0% F1Natural Questions )到 4.6% F1TriviaQA)。

    最后,我们观察到,在各种任务中,single-sequence training 比带有 NSPbi-sequence training ,在效果上要好得多。这是令人惊讶的,因为 BERT 的消融研究显示了来自 NSP 目标的收益。然而,消融研究仍然涉及 bi-sequence 的数据处理(即,预训练阶段只控制 NSP 目标,同时仍然采样两个 half-length 的序列)。我们猜测:bi-sequence training,正如它在BERT 中实现的那样,阻碍了模型学习较长距离的特征,并因此损害了许多下游任务的性能。

18.2.5 消融研究

  1. 我们将我们的 random span masking 方案与 linguistically-informed masking 方案进行比较,发现 masking random span 是一种有竞争力的、并且通常是更好的方法。然后,我们研究了SBO 的影响,并将其与 BERTNSP 目标进行对比。

  2. 掩码方案:以前的工作 ERNIE 表明,在中文数据的预训练中,通过掩码 linguistically informed span ,改善了下游任务的表现。我们将我们的 random span masking 方案与linguistically informed span 掩码进行比较。具体而言,我们训练了以下五种 baseline 模型,它们的区别仅仅在于 token 的掩码方式:

    • Subword Tokens:我们采样随机的 Wordpiece token ,就像在 original BERT 中一样。

    • Whole Words:我们采样随机的单词,然后掩码这些单词中的所有 subword tokenmasked subword token 总共占所有 token15%

    • Named Entities:在 50% 的时间里,我们从文本中采样命名实体,而在剩下 50% 的时间里随机采样全词 whole wordmasked subword token 总共占所有 token15%

      具体而言,我们在语料库上运行 spaCynamed entity recognizer ,并选择所有非数值型的命名实体作为候选。

    • Noun Phrases:与 Named Entities 类似,我们在 50% 的时间内采样名词短语。名词短语是通过 spaCy’s constituency parser 抽取的。

    • Geometric Spans:我们从几何分布中随机采样 span ,如我们的 SpanBERT 所示。

    Whole Words, Named Entities, Noun Phrases, Geometric Spans 都是 span-based 掩码策略。

    下表显示了不同的预训练掩码方案在不同任务验证集上的效果。所有的模型都是在验证集上评估的,并且是基于默认的 BERT 设置(即带 NSPbi-sequence training ),其结果不能直接与 main evaluation 相比较。可以看到:

    • 除了共指消解之外,masking random span 比其他策略更好。

      尽管 linguistic masking 方案(命名实体和名词短语)通常与 random span 的竞争力相当,但它们的性能并不是一致 consistent 的。例如,在 NewsQA 上,masking noun phrase 实现了与 random span 相同的效果,但在 TriviaQA 上表现不佳(-1.1% F1 )。

    • 在共指消解方面,masking random subword token 比任何形式的 span masking 都要好。然而,我们将在下面的实验中看到,将 random span maskingspan boundary objective 相结合可以大大改善这一结果。

    总体而言,这些掩码方案的差距不大。

  3. 辅助目标:如前所述,与 single-sequence training 相比,带 NSP 目标的 bi-sequence training 会损害下游任务的性能。 我们测试了这一点对于用 span masking 预训练的模型是否成立,同时也评估了用 SBO 目标替代 NSP 目标的效果。

    下表证实了 single-sequence training 通常会提高性能。加入 SBO 可以进一步提高性能,与 span masking alone 相比,共指消解有很大的提高( +2.7% F1 )。不像 NSP 目标,SBO 似乎没有任何不利影响。

    SBO 对模型性能提升的幅度不大,同时 Geometric Spans 对模型性能提升的幅度也不大,但是 SpanBERT 整体相对于 Google BERT 的性能提升较大。这意味着数据预处理和优化过程(如,动态掩码,废除短序列策略)的影响也较大。

十九、ALBERT [2019]

  1. 全网络预训练 full network pre-training 已经导致了 language representation learning 的一系列突破。许多困难的 NLP 任务,包括那些训练数据有限的任务,都大大受益于这些预训练的模型。这些突破之中最引人注目的标志之一是机器在 RACE test 上(为中国初中和高中英语考试设计的阅读理解任务)的性能演进:

    • 最初描述该任务并提出 modeling challenge 的论文报告了当时 SOTA 的机器准确率为 44.1%
    • 最新发表的结果(即 RoBERTa )报告了他们的模型性能为 83.2%
    • 论文 《A Lite BERT for Self-supervised Learning of Language Representations》 提出的 ALBERT 将其推高到 89.4% ,达到一个惊人的 45.3% 的改进,这主要归功于我们目前建立高性能预训练的 language representation 的能力。

    这些改进的证据显示,大型网络对于实现 SOTA 的性能至关重要。预训练大型模型并将其蒸馏成较小的模型,这种做法已成为实际应用的普遍做法。鉴于模型规模的重要性,我们问:拥有更好的 NLP 模型和拥有更大的模型一样容易吗?

    回答这个问题的一个障碍是现有硬件的内存限制。鉴于目前 SOTA 的模型往往有数亿甚至数十亿的参数,当我们试图扩大我们的模型规模时,很容易就会遇到这些限制。在分布式训练中,训练速度也会受到很大影响,因为通信开销与模型中的参数规模成正比。

    上述问题的现有解决方案包括模型并行 model parallelization 、以及巧妙的内存管理。这些解决方案解决了内存限制问题,但没有解决通信开销问题。在论文 《A Lite BERT for Self-supervised Learning of Language Representations》 中,作者通过设计 A Lite BERT: ALBERT 架构来解决上述所有问题,该架构的参数明显少于传统的 BERT 架构。

    ALBERT 采用了两种参数缩减 parameter reduction 技术,解除了 scale 预训练模型的主要障碍:

    • 第一个技术是因子分解的 embedding parameterization 。通过将大型词表的 embedding matrix 分解成两个小矩阵,论文将隐层的维度与 vocabulary embedding 的维度分离。这种分离使得在不显著增加 vocabulary embedding 的参数规模的情况下,更容易增长隐层的维度。
    • 第二种技术是跨层参数共享 cross-layer parameter sharing 。这种技术可以防止参数随着网络的深度而增长。

    这两种技术都大大减少了 BERT 的参数数量而不严重损害性能,从而提高了参数效率。配置类似于 BERT-largeALBERT 的参数数量减少了 18 倍,训练速度可以提高约 1.7 倍。参数缩减技术也作为一种正则化的形式,稳定了训练并有助于泛化。

    为了进一步提高 ALBERT 的性能,作者引入了一个自监督的损失用于 sentence-order prediction: SOPSOP 主要关注句子间的连贯性,旨在解决 original BERT 中提出的 next sentence prediction: NSP 损失的无效性。

    由于这些设计决策,论文能够扩展到更大的 ALBERT 配置,这些配置的参数仍然比 BERT-large 更少,但是性能更好。论文在著名的 GLUESQuADRACE 等自然语言理解 benchmark 上建立了新的 SOTA 结果。具体而言, ALBERTRACE 的准确率提高到89.4%、将 GLUE benchmark 提高到 89.4%、将 SQuAD 2.0F1 得分提高到 92.2

    虽然准确率更高,但是训练时间要长三倍。

  2. 相关工作:

    • 为自然语言 scale up representation learning:学习自然语言的 representation 已被证明对广泛的 NLP 任务有用,并被广泛采纳。过去两年中最重要的变化之一是,从预训练 word embedding (无论是标准的、还是上下文 contextualized 的),都转变为全网络预训练 full-network pre-training ,然后再紧跟着进行 task-specific 的微调。在这个工作方向,通常显示较大的模型规模可以提高性能。例如,BERT 原始论文表明:在三个自然语言理解任务中,使用更大的隐层维度、更多的隐层和更多的注意力头总是能带来更好的性能。然而,他们止步于 1024 的隐层维度,可能是因为模型规模和计算成本的问题。

      即,BERT_LARGE 的性能比 BERT_BASE 的性能更好。

      由于计算上的限制,特别是 GPU/TPU 内存的限制,很难对大型模型进行实验。鉴于目前 SOTA 的模型往往有数亿甚至数十亿的参数,我们很容易遇到内存限制。为了解决这个问题:

      • 《Training deep nets with sublinear memory cost》 提出了一种叫做 gradient checkpointing 的方法,以额外的前向传播为代价,将内存需求降低到亚线性 sublinear
      • 《The reversible residual network: Backpropagation without storing activations》提出了一种从 next layer 重构每一层的 activation 的方法,这样就不需要存储 intermediate activation
      • 这两种方法都以速度为代价降低了内存消耗。 《Exploring the limits of transfer learning with a unified text-to-text transformer》提出使用模型并行来训练一个巨型模型。

      相比之下,我们的参数缩减技术减少了内存消耗,提高了训练速度。

    • 跨层参数共享:跨层共享参数的思想之前已经用 Transformer 架构进行了探索,但这之前的工作主要是针对标准的 encoder-decoder 任务的训练,而不是 pretraining/finetuning setting

      • 与我们的观察不同,《Universal transformers》 表明,具有跨层参数共享的网络(Universal Transformer: UT )在语言建模任务和主谓一致 subject-verb agreement 任务上得到了比标准 transformer 更好的性能。

        ALBERT 的论文实验表明:跨层参数共享会损害模型性能。

        此外,UTencoder-decoder 架构,它分别在 encoderdecoder 上进行参数共享。而 ALBERT 只有 encoder,因此只有 encoder 的参数共享。

      • 最近,《Deep equilibrium models》 针对 transformer 网络提出了 Deep Equilibrium Model: DQE ,并表明 DQE 可以达到一个平衡点,即某一层的 input embeddingoutput embedding 保持一致(即,到达不动点)。

        我们的观察表明,我们的 embedding 是振荡的,而不是收敛的。

      • 《Modeling recurrence for transformer》将参数共享的 transformer 与标准的 transformer 相结合,这进一步增加了标准 transformer 的参数数量。

    • Sentence Ordering ObjectivesALBERT 使用了一个预训练损失,该损失基于预测两个连续的文本片段 text segment 的顺序。一些研究者已经尝试了与篇章连贯性 discourse coherence 类似的预训练目标。篇章中的连贯性 coherence 和凝聚力 cohesion 已被广泛研究,许多现象已被确定为连接相邻的文本片段。在实践中发现的大多数有效目标都很简单。

      • SkipthoughtFastSentsentence embedding 是通过使用一个句子的编码来预测相邻句子中的单词来学习的。

      • sentence embedding learning 的其他目标包括:预测未来的句子(而不是仅仅预测邻居),以及预测显式的篇章标记 discourse marker

        我们的损失与 《Discourse-based objectives for fast unsupervised sentence representation learning》sentence ordering objective 最为相似。该方法学习 sentence embedding 从而确定两个连续句子的顺序。然而,与上述大多数工作不同的是,我们的损失是在文本片段上而不是句子上定义的。

      • BERT 使用的损失是基于 next sentence prediction 。我们在实验中与这种损失进行了比较,发现 sentence ordering 是一项更具挑战性的预训练任务,对某些下游任务更有用。

      • 与我们的工作同时,《StructBERT: Incorporating language structures into pre-training for deep language understanding》 也试图预测两个连续的文本片段的顺序,但他们把它与原来的 next sentence prediction 结合起来从而得到一个三分类任务,而不是二分类任务(比较两个连续的文本片段的顺序)。

19.1 模型

19.1.1 模型架构选择

  1. ALBERT 架构的 backboneBERT 类似,它使用了一个具有 GELU 非线性激活函数的 transformer encoder 。我们遵从 BERT 的惯例,将 vocabulary embedding size 记做 E,将 encoder layer 数量记做 L ,将 hidden size 记做 H,将 feed-forward/filter size 设定为 4H ,将注意力头的数量设定为 H/64

    BERT 的设计选择相比,ALBERT 有三个主要贡献:因子分解的 embedding 参数化 factorized embedding parameterization、跨层参数共享cross-layer parameter sharing 、句子间的一致性损失 Inter-sentence coherence loss

  2. Factorized embedding parameterization:在 BERT ,以及 XLNetRoBERTa 等后续建模改进中,WordPiece embedding size E 与隐层维度 H 绑定,即 E=H 。这个决定无论从建模的角度还是从实践的角度来看,都是不理想的,原因如下:

    • 从建模的角度来看,WordPiece embedding 是为了学习 context-independent representation ,而 hidden-layer embedding 则是为了学习 context-dependent representation 。正如关于上下文长度的实验所示(见 RoBERTa 原始论文),BERT-like representation 的力量来自于上下文的使用,从而提供用于学习这种 context-dependent representation 的信号。因此,将 WordPiece embedding size Ehidden layer size H 解绑,使我们能够更有效地利用总的模型参数,即 HE
    • 从实践的角度来看,自然语言处理通常需要很大的词表大小 V 。如果 E=H ,那么增加 H 就会增加 embedding matrix 的大小,其中 embedding matrix 的大小为 V×E 。这很容易导致一个具有数十亿个参数的模型,其中大部分在训练期间只被非常少地地更新。

    因此,对于 ALBERT ,我们使用 embedding 参数的因子分解,将它们分解成两个较小的矩阵。我们不是直接将 one-hot 向量投影到维度为 H 的隐空间,而是先将它们投影到维度为 E 的低维 embedding 空间,然后再投影到隐空间。通过使用这种分解,我们将 embedding 参数的规模从 O(V×H) 降低到 O(V×E+E×H)。当 HE 时,这种参数的减少是显著的。

    我们选择对所有的 word piece 使用相同的 E ,因为与 whole-word 相比, word piece 在文档中的分布更加均匀。在 whole-word embedding 中,对不同的词有不同的 embedding size 是很重要的。

  3. Cross-layer parameter sharing:跨层参数共享是提高参数效率的另一种方式。有多种共享参数的方式,例如,仅共享跨层的 feed-forward network: FFN 参数、或者仅共享注意力参数。ALBERT 的默认决定是跨层共享所有参数。除非另有说明,我们所有的实验都使用这个默认决定。我们在实验中把这个设计决定与其他共享参数策略进行了比较。

    虽然参数共享降低了参数规模,但是并没有降低计算量。

    Universal Transformer: UTDeep Equilibrium Models: DQETransformer 网络也进行了类似的探索。

    • 与我们的观察不同,《Universal Transformer》 表明:UT 优于普通的 Transformer
    • 《Deep equilibrium models》 表明,他们的 DQE 达到了一个平衡点,对于这个平衡点,某一层的 input embeddingoutput embedding 保持不变。我们对 L2 距离和余弦相似度的测量表明,我们的 embedding 是振荡的而不是收敛的。

    下图显示了每一层的 input embeddingoutput embeddingL2 距离和余弦相似度,使用 BERT-largeALBERT-large 配置(如下表所示)。我们观察到:ALBERT 的层与层之间的转移 transitionBERT 的平滑得多。这些结果表明,权重共享对稳定网络参数有一定的影响。

    尽管与 BERT 相比,两个指标(即, L2 距离和余弦相似度)都有下降,但即使在 24 层之后,它们也没有收敛到 0 。这表明:ALBERT 参数的解空间与 DQE 所发现的解空间非常不同。

  4. Inter-sentence coherence loss:除了 masked language modeling: MLM 损失,BERT 还使用了一个额外的损失,称为 next-sentence prediction: NSPNSP 是一种二元分类损失,用于预测两个 segment 是否在原始文本中连续出现,具体如下:通过从训练语料库中抽取连续的 segment 来创建正样本,通过将不同文档中的 segment 配对来创建负样本,正样本和负样本是以相同的概率进行采样。NSP 的目的是为了提高下游任务(如自然语言推理)的性能,这些任务需要推理 sentence pair 之间的关系。然而,随后的研究(XLNetRoBERTa)发现 NSP 的影响不可靠,并决定取消 NSP

    我们猜想,NSP 的无效性背后的主要原因是:与 MLM 相比,NSP 任务缺乏难度。正如该任务的表述,NSP 将话题预测 topic prediction 和连贯性预测 coherence prediction 混合在一个任务中。 然而,与连贯性预测相比,话题预测更容易学习,而且也与MLM 损失所学到的内容有很多重叠。

    SpanBERT 认为 NSP 的无效性背后的主要原因是:

    • 在双序列上下文中,模型无法从较长的 full-length 上下文中获益。
    • 在双序列上下文中,以另一个文档中的、通常不相关的上下文为条件,会给 MLM 增加噪音。

    我们坚持认为句子间建模 inter-sentence modeling 是语言理解的一个重要方面,但我们提出了一个主要基于连贯性的损失。也就是说,对于 ALBERT ,我们使用了一个 sentence-order prediction: SOP 损失,它避免了主题预测,而是专注于建模句子间的连贯性。SOP 损失使用与 BERT 相同的技术(来自同一文件的两个连续 segment )作为样本,并使用相同的两个连续 segment 但是调换顺序之后作为负样本。这就迫使模型学习关于篇章级 discourse-level 连贯性的更精细的区分。

    正如我们在实验部分所显示的,事实证明:

    • NSP 根本不能解决 SOP 的任务(也就是说,它最终学习了更容易的话题预测信号,并在SOP 任务中表现为随机水平)。
    • SOP 可以在一定程度上解决 NSP 的任务,大概是基于分析 misaligned coherence cue

    因此,ALBERT 模型为 multi-sentence encoding 任务一致性地改善了的下游任务表现。

19.1.2 模型配置

  1. 我们在下表中列出了 BERT 模型和 ALBERT 模型在可比的超参数设置下的差异。由于上面讨论的设计选择,ALBERT 模型与相应的BERT 模型相比,其参数规模要小得多。

    例如:

    • BERT-large 相比,ALBERT-large 的参数少了大约 18 倍,即 18M334M

      参数少了 18 倍,但是模型的效果也有所降低。

    • H=2048ALBERT-xlarge 只有60M 的参数,H=4096ALBERT-xxlarge 只有 235M 的参数(约为 BERT-large 参数规模的 70% )。

    请注意,对于 ALBERT-xxlarge ,我们主要报告 12 层网络的结果,因为 24 层网络(具有相同的配置)获得了类似的结果,但计算成本更高。

    这种参数效率的提高是 ALBERT 的设计选择的最重要的优势。

19.2 实验

  1. 为了使对比尽可能的有意义,我们遵从 BERT 的设置,使用 BOOKCORPUSEnglish Wikipedia 用于预训练 baseline 模型。这两个语料库包括大约 16GB 的未压缩文本。

    我们将输入格式化为 [CLS]X1[SEP]X2[SEP] ,其中 X1=x1,1,x1,2, 以及 X2=x2,1,x2,2, 是两个 segment 。我们总是将最大输入长度(即,拼接之后的序列的最大长度)限制为 512token ,并以 10% 的概率随机生成短于 512 的输入序列。

    BERT 一样,我们使用大小为 30K 的词表 vocabulary ,使用 SentencePiece 进行 tokenization (如同 XLNet )。

    我们使用 n-gram maskingMLM 目标生成 masked input (如同 SpanBERT),每个 n-gram masking 的长度 n 是随机选择的,由如下的概率给出(Nn-gram masking 的最大长度):

    (8)p(n)=1/nk=1N1/k

    这个概率倾向于更短的 n-gram masking 。例如,当 N=10 时,n=1,2,,10 的概率分别为:0.341, 0.171, 0.114, 0.085, 0.068, 0.057, 0.049, 0.043, 0.038, 0.034

    我们设定 n-gram masking 的最大长度为 3 ,即 MLM 目标可以由最多 3 个完整的单词组成,如 "White House correspondents"

    所有的模型更新都使用了 batch size = 4096 、以及学习率为 0.00176LAMB 优化器。除非另有说明,我们对所有模型进行了125Kstep 的训练。训练是在 Cloud TPU V3 上进行的。用于训练的 TPU 数量从 64512 不等,取决于模型大小。

    LAMB 优化器是针对大 batch size 的训练。首先我们看下 Adam 优化器:

    (9)mt=β1×mt1+(1β1)×gtvt=β2×vt1+(1β2)×gt2m^t=11β1tmt,v^t=11β2tvtθt=θt1η×m^tv^t+ϵ

    其中:mt 为动量,vt 为速度,gt 为梯度,gt2 为梯度的逐元素平方,η 为学习率,ϵ 为一个很小的正数用于防止除零的错误,β1,β2 为超参数,θt 为待优化的参数。

    AdamW 是为了适配 weight decay(权重衰减相当于参数的 L2 正则化),在 Adam 的基础上进行修改:

    (10)θt=θt1η×(m^tv^t+ϵ+λ×θt1)

    其中:λ 为权重衰减系数,通常设置为 0.005/0.01

    LAMBAdamW 的基础上继续修改:

    (11)rt=m^tv^t+ϵθt=θt1η×ϕ(||θt1||)×rt+λθt1rt+λθt1

    其中:ϕ() 为一个映射函数,可以选择为 ϕ(z)=z 、或者 ϕ(z)=min(max(z,γl),γu)γl,γu 为预定义的超参数分别代表 z 的下界和上界。

    除非另有说明,本节中描述的实验设置用于我们自己的所有版本的 BERT 以及 ALBERT 模型。

  2. 评估 benchmark

    • 固有评估 Intrinsic Evaluation:为了监控训练进度,我们使用前面相同的程序和配置,在 SQuADRACE 的验证集基础上创建了一个验证集。我们同时报告了 MLM 和句子分类任务的准确率。

      注意,我们只用这个创建的验证集来检查模型是如何收敛的,它的使用方式不会影响任何下游评估的性能(例如,该验证集不是用于模型选择)。

    • 下游评估 Downstream Evaluation:遵从 XLNetRoBERTa ,我们在三个流行的 benchmark 上评估我们的模型:General Language Understanding Evaluation: GLUE 基准、两个版本的 Stanford Question Answering Dataset: SQuAD、以及 ReAding Comprehension from Examinations: RACE 数据集。与 RoBERTa 一样,我们对验证集进行了早停 early stopping ,在此基础上我们报告了所有的比较,除了基于任务排行榜的最终比较(在最终比较,我们也报告了测试集的结果)。对于在验证集上有较大方差的 GLUE 数据集,我们报告了 5 次运行的中位数。

      • GLUEGLUE9 个任务组成,即 :

        GLUE 聚焦于评估模型的自然语言理解能力。当报告 MNLI 结果时,我们只报告 "match" 条件(即,MNLI-m )。我们遵循先前工作中的微调程序( BERTRoBERTaXLNet),并报告 GLUE sbumissionheld-out test set 性能。对于测试集的 submission,我们遵从 RoBERTaXLNet 的描述,对 WNLIQLNLI 进行了 task-specific 修改。

      • SQuADSQuAD 是一个从 Wikipedia 建立的提取式问答数据集 extractive question answering dataset 。答案是来自上下文段落的 segment ,任务是预测 answer span 。我们在两个版本的 SQuAD 上评估我们的模型:v1.1v2.0SQuAD v1.1100K个人类标注的 question/answer pairSQuAD v2.0 还额外引入 了 50K 个无法回答的问题。

        对于 SQuAD v1.1 ,我们使用与 BERT 相同的训练程序;而对于 SQuAD v2.0 ,模型是用 span extraction loss 和额外的 predicting answerability 分类器联合训练的(RoBERTaXLNet)。我们同时报告了验证集和测试集的性能。

      • RACERACE 是一个大规模的多选阅读理解数据集,收集自中国的英语考试,有近 100K 个问题。RACE 中的每个实例有 4 个候选答案。遵从之前的工作(RoBERTaXLNet),我们使用段落、问题、以及每个候选答案的拼接作为模型的输入。然后,我们使用来自 "[CLS]" tokenrepresentation 来预测每个答案的概率。

        该数据集包括两个 domain:初中和高中。我们同时在这两个 domain 上训练我们的模型,并同时报告验证集和测试集的准确率。

  3. 下游任务的超参数配置如下表所示。

19.2.1 BERT 和 ALBERT 的整体比较

  1. 我们现在准备量化 ALBERT 模型架构设计选择的影响,特别是围绕参数效率 parameter efficiency 的选择。如下表所示,参数效率的提高展示了 ALBERT 设计选择的最重要的优势:ALBERT-xxlarge 只用了 BERT-large70% 左右的参数,就比 BERT-large 取得了显著的改进,这可以通过几个有代表性的下游任务的验证集分数的差异来衡量:SQuAD v1.1+1.9%)、SQuAD v2.0+3.1%)、MNLI+1.4%)、SST-2+2.2%)、以及 RACE+8.4%) 。

    另一个有趣的观察是在相同的训练配置(相同数量的 TPU )下,训练期间的数据吞吐速度。由于较少的通信和较少的计算,ALBERT 模型与它们相应的 BERT 模型相比,具有更高的数据吞吐量。如果我们使用 BERT-large 作为 baseline ,我们观察到 ALBERT-large 在训练期间大约快 1.7 倍,而 ALBERT-xxlarge 由于结构较大,大约慢 3 倍。

    这种比较的意义不大:

    • 虽然 ALBERT-xxlarge 的平均准确率更高(+3.5%),但是它要慢 3 倍。
    • 虽然 ALBERT-large 更快(快 1.7 倍),但是它的平均准确率更低(-2.8%)。
    • ALBERT-xlarge 的效果与 BERT 几乎差不多(略高 +0.3%),但是要慢 1.5 倍。

    这表明 ALBERT 虽然降低了参数数量,但是没有降低总的计算量。但是,接下来作者比较了在相同训练时间情况下,ALBERT-xxlarge 仍然要超过 BERT-large,这才证明了 ALBERT 的价值。

    接下来,我们进行消融实验,从而量化 ALBERT 的每个设计选择的单独贡献。

19.2.2 因子分解的 Embedding Parameterization

  1. 下表显示了使用 ALBERT-base 配置(见 Table 1)时改变 vocabulary embedding 维度 E 的效果,其中使用相同的一组代表性的下游任务。可以看到:

    • not-shared 条件下( BERT-style ),较大的 embedding 维度会带来更好的性能,但幅度不大。
    • all-shared 条件下( ALBERT-style ,即 ALBERT base 对应的结果),128 维的 embedding 似乎是最好的。

    这样看起来,embedding size 超过了 64 之后,似乎模型性能差距不大?这是否说明此时模型容量已经足够强大,而瓶颈在于训练数据?可以通过在 embedding size 小于 64 上进行验证,如 embedding size{1, 4, 8, 16, 32}

    基于这些结果,我们在未来的所有设置中使用 embedding 维度 E=128 ,作为进一步 scaling 的必要步骤。

    下表还说明:相同 embedding size 下,ALBERTBERT 的效果更差。

19.2.3 跨层参数共享

  1. 下表 列出了各种跨层参数共享策略的实验,其中使用 ALBERT-base 配置(见 Table 1)和两种 embedding 维度( E=768E=128 )。我们比较了 all-shared 策略(ALBERT-style )、not-shared 策略(BERT-style )、以及中间策略(只有注意力参数被共享、或只有 FFN 参数被共享)。可以看到:

    • 相比较于 not-sharedall-shared 在两种 embedding 维度下都会损害性能,但与 E=768 (平均准确率 -2.5% )相比,E=128 (平均准确率 -1.5% )的情况稍微好一点。

      这和 《Universal Transformer》 的实验结论相反。

    • 此外,相比较于 not-shared,大部分的性能下降似乎来自于共享 FFN 参数,而共享注意力参数在 E=128 时没有下降(平均准确率 +0.1% )、在E=768 时有轻微下降(平均准确率 -0.7%)。

    • 还有其他跨层共享参数的策略。例如,我们可以把 L 层分成 N 个大小为 M 层的组,每个组(包含 M 层)共享参数。总的来说,我们的实验结果表明,组的大小 M 越小,我们得到的性能就越好。然而,减少组的大小 M 也会极大地增加整体参数的数量。我们选择 all-shared 作为我们的默认选择。

19.2.4 Sentence Order Prediction

  1. 我们使用 ALBERT-base 配置,对额外的句间损失 inter-sentence loss 进行了三个实验:noneXLNet-styleRoBERTa-style )、NSPBERT-style )、以及 SOPALBERT-style )。结果如下表所示,包括固有任务(MLMNSP 、以及 SOP 任务的准确率)和下游任务。可以看到:

    • 固有任务的结果显示:

      • NSP loss 没有给 SOP 任务带来判别能力(52.0% 的准确率,类似于 None 条件下的随机猜测性能)。这使我们可以得出结论:NSP 最终仅建模话题漂移 topic shift
      • 相比之下,SOP loss 确实能比较好地解决 NSP 任务(准确率 78.9% ),解决 SOP 任务甚至更好(准确率 86.5% )。

      这三种方式对 MLM 任务都没有帮助。

    • 更重要的是,相比 NoneSOP loss似乎一致地改善下游 multi-sentence encoding 任务的表现(SQuAD1.1 约提升 +1%SQuAD 2.0 约提升 +2%RACE 约提升 +1.7% ),平均得分提高了约 +1%

19.2.5 相同训练时间

  1. Table 2 中的加速结果表明,与 ALBERT-xxlarge 相比,BERT-large 的数据吞吐量高出约 3.17 倍。由于更长的训练时间通常会导致更好的性能,我们进行了一个比较,其中,我们不控制数据吞吐量(即,训练步数),而是控制实际训练时间(即,让不同的模型训练相同的小时数)。在下表中,我们比较了一个 BERT-large 模型在 400K 个训练 step (经过 34 小时的训练)后的性能,大致相当于训练一个 ALBERT-xxlarge 模型所需的125K 个训练 step32 小时的训练)的时间。

    在训练了大致相同的时间后,ALBERT-xxlarge 显著优于 BERT-large :平均值提高了 +1.5% ,在 RACE 上的性能提升高达+5.2%

19.2.6 额外的训练数据和 Dropout 效果

  1. 到目前为止所做的实验只使用了 WikipediaBOOKCORPUS 数据集,就如 BERT 所使用的。在本节中,我们报告了 XLNetRoBERTa 所使用的额外数据的影响。下图 (a) 显示了在没有额外数据、以及有额外数据两种条件下的验证集 MLM 准确率,可以看到有额外数据条件下有显著的提升。从下表中我们还观察到,除了 SQuAD benchmarkWikipedia-based ,因此受到 out-of-domain 训练数据的负面影响)之外,下游任务的性能也有所提高。

    BERT-large 模型训练了 400K 步,因此 ALBERT-base 也用 Wikipedia + BOOKCORPUS 训练了 400K 步。然后在此之后使用了额外的数据。因此下图 (a) 中,前面 400K 步,二者的曲线是重合的。

    我们还注意到,即使在训练了 1M 步之后,我们最大的模型仍然没有过拟合训练数据。因此,我们决定移除 dropout 从而进一步提高我们的模型容量。如下图 (b) 所示,移除 dropout 显著提高了 MLM 的准确率。对 ALBERT-xxlarge 在大约 1M 步训练的中间评估(如下表所示)也证实:移除 dropout 有助于下游任务。有经验(《Inception-v4, inception-resnet and the impact of residual connections on learning》)和理论(《Understanding the disharmony between dropout and batch normalization by variance shift》)证据表明:卷积神经网络中的 batch normalizationdropout 组合可能会产生有害的结果。据我们所知,我们是第一个表明 dropout 会损害大型 Transformer-based 模型的性能。然而,ALBERT 的底层网络结构是 transformer 的一个特例,需要进一步的实验来观察这种现象是否出现在其他 transformer-based 的架构中。

    注意,下图 (b) 是从 1M 步之后再移除 dropout 的,而不是一开始就移除 dropout 。所以前面 1M 步,二者的曲线是重合的。

    另外,论文的结论有点问题。这里仅仅说明,前 2/3 的时间使用 dropout 然后剩余时间移除 dropout,要比全部时间使用 dropout 的效果更好。而无法说明移除 dropout 比带 dropout 更好。

    另外,论文的 Table 8 仅仅说是在大约 1M 步时的评估结果,但是没有说具体在什么时候。是 110 万步?还是 120 万步?

19.2.7 NLU 任务上的当前 SOTA

  1. 我们在本节报告的结果利用了 BERT 使用的训练数据,以及 RoBERTaXLNet 使用的额外数据。我们报告了两种 setting 下的微调的 SOTA 结果:单模型single-model 和集成 ensemble 。在这两种 setting 中,我们只做单任务微调。遵从 RoBERTa 的做法,在验证集上,我们报告了五次运行的中位数。

    • 单模型的 ALBERT 配置包含了所讨论的最佳性能的settingALBERT-xxlarge 配置(参考 Table 1 ),组合 MLM lossSOP loss,以及 no dropout

    • ensembleALBERT 是从多个 checkpoint 来获取的,这些 checkpoint 根据验证集的性能来选择,被选中的 checkpoint 的数量从 619 不等。

      对于GLUETable 9 )和 RACETable 10 ),我们对集成模型 ensemble models 的预测值取平均,其中候选模型是微调了不同的预训练模型(这些预训练模型使用 12 架构层和 24 层架构,并预训练了不同的步数)。

      对于 SQuADTable 10 ),我们对那些有多个概率的 span 的预测分数进行了平均。我们还对 "unanswerable" 的决定的分数进行了平均。

    单模型结果和集成模型结果都表明:

    • ALBERT 在所有三个 benchmark 上都大大改善了 SOTA 的水平,实现了89.4GLUE 得分、92.2SQuAD 2.0 测试F1 得分、以及 89.4RACE 测试准确率。

      这些都是集成模型的效果。

    • RACE 上似乎是一个特别强大的改进:

      • 我们的集成模型比 BERT 的绝对分值跃升 +17.4%、比 XLNet 提升 +7.6% 、比 RoBERTa 提升 +6.2% 、比 DCMI+ 提升 5.3%

        这里只有 DCMI+ 是集成模型的效果,其它的 BERT/XLNET/RoBERTa 都是单模型的效果(不公平的比较)。

      • 我们的单模型达到了 86.5% 的测试准确率,比 SOTA 的集成模型仍好 2.4%

19.2.8 附录:网络的深度和宽度

  1. 在本节中,我们检查了网络深度(层数)和宽度(隐层维度)对 ALBERT 的性能的影响。

    • 下表显示了使用不同层数的 ALBERT-large 配置(见 Table 1 )的性能。具有 3 层或更多层的网络是通过使用之前深度的网络参数进行微调来训练的(例如,12 层的网络参数是从 6 层网络参数的 checkpoint 进行微调的)。《Efficient training of bert by progressively stacking》也使用了类似的技术。

      >=3 层的网络都不是从头开始训练的,而是利用更浅网络的参数来微调的。

      对于 ALBERT-large,可以看到:

      • 对比 3 网络与 1 层网络,虽然它们的参数数量相同,但性能显著提高。

        所有不同层的网络,它们的参数数量都相同,因为是参数共享。

      • 然而,当继续增加层数时,会出现收益递减:12 层网络的结果与24 层网络的结果相对接近,而48 层网络的性能似乎有所下降。

    • 网络宽度也出现了类似的现象,如下表所示(针对不同宽度的 ALBERT-large 配置)。可以看到:

      • 当增加隐层维度时,模型性能增加,但会出现收益递减。
      • 在隐层维度为 6144 时,模型性能似乎明显下降。

      我们注意到,这些模型似乎都没有过拟合训练数据,而且与表现最好的 ALBERT 配置相比,它们的训练损失和验证损失都比较高。

  2. 是否更宽的模型需要更深?在前面我们表明:对于隐层维度 H=1024ALBERT-large12 层和 24 层模型 之间的差异很小。对于更宽的 ALBERT ,如 ALBERT-xxlargeH=4096),这一结果是否仍然成立?

    答案如下表所示。12 层和 24 层的 ALBERT-xxlarge 配置在下游任务准确率方面的差异可以忽略不计,Avg 得分相同。我们的结论是:当共享所有跨层参数(ALBERT-style )时,没有必要建立比 12 层更深的模型。

二十、UniLM [2019]

  1. 语言模型的预训练在各种自然语言处理任务中大大推进了 SOTA。预训练的语言模型通过使用大量的文本数据根据单词的上下文来预测该单词来学习 contextualized text representation ,并且可以进行微调从而适应下游的任务。

    不同的预测任务和训练目标已经被用于预训练不同类型的语言模型,如下表所示:

    • ELMo 学习两个单向的语言模型:一个正向语言模型从左到右编码文本,一个反向的语言模型从右到左编码文本。
    • GPT 使用一个从左到右的 transformerword-by-word 地预测文本序列。
    • 相比之下,BERT 采用了一个双向 Transformer encoder 来融合左右两侧的上下文从而预测 masked word 。虽然 BERT 极大地提高了各种自然语言理解 natural language understanding: NLU 任务的性能,但其双向性 bidirectionality 的特点使其难以应用于自然语言生成 natural language generation: NLG 任务。

    在论文 《Unified Language Model Pre-training for Natural Language Understanding and Generation》 中,作者提出了一个新的 UNIfied pre-trained Language Model: UNILM ,可以应用于自然语言理解任务和自然语言生成任务。UNILM 是一个多层的 Transformer 网络,在大量的文本上联合预训练,为三种类型的无监督语言建模目标进行了优化,如下表所示。具体而言,论文设计了一组完形填空任务 cloze task ,其中根据上下文预测一个 masked word 。这些完形填空任务的不同之处在于如何定义上下文:

    • 对于 left-to-right 的单向语言模型,要预测的masked word 的上下文包括其左边的所有单词。
    • 对于 right-to-left 的单向语言模型,要预测的masked word 的上下文包括其右边的所有单词。
    • 对于双向语言模型,要预测的masked word 的上下文由左右两侧的所有单词组成。
    • 对于序列到序列的语言模型,第二个序列(即,target 序列)中要预测的单词的上下文由第一个序列(即,source 序列)中的所有单词、以及 target 序列中被预测单词左边的所有单词组成。

    这些不同的语言模型是通过 self-attention mask 来实现的。

    BERT 类似,预训练的 UNILM 可以进行微调(必要时增加 task-specific layer )以适配各种下游任务。但与主要用于自然语言理解任务的 BERT 不同,UNILM 可以通过使用不同的自注意力掩码 self-attention mask 进行配置,为不同类型的语言模型聚合上下文,因此可以同时用于自然语言理解任务和自然语言生成任务。

    UNILM 有三个主要优势:

    • 首先,统一的预训练程序导致了一个单一的 Transformer 语言模型,它对不同类型语言模型采用共享的参数和架构,缓解了单独训练和 host 多个语言模型的需要。
    • 第二,参数共享使学到的 text representation 更加通用,因为它们是针对不同的语言建模目标共同优化的,其中上下文的利用方式不同从而缓解了对任何单个语言模型任务的过拟合。
    • 第三,除了应用于自然语言理解任务外,UNILM 可以作为 sequence-to-sequence 的语言模型来使用,使其成为自然语言生成任务的自然选择,如抽象式摘要 abstractive summarization 和问题生成 question generation

    实验结果表明,UNILM 作为一个双向编码器来使用,在 GLUE benchmark 和两个抽取式问答 extractive question answering 任务(即 SQuAD 2.0CoQA )上与 BERT 相比更有优势。此外,论文还证明了 UNILM 在五个自然语言生成数据集上的有效性,其中UNILM 作为一个 sequence-to-sequence 的语言模型来使用, 在 CNN/DailyMailGigaword 的抽象式摘要、SQuAD 问题生成、CoQA 生成式问答 enerative question answering 、以及 DSTC7 对话式响应生成dialog response generation 上创造了新的 SOTA

20.1 模型

  1. 给定一个输入序列 X=x1,x|X|UNILM 为每个 token 获得了一个 contextualized vector representation 。如下图所示, 预训练通过几个无监督的语言建模目标来优化共享的 Transformer 网络,即单向语言模型、双向语言模型、以及 sequence-to-sequence 语言模型。为了控制对将要预测的 word token 的上下文的访问,我们采用了不同的自注意力掩码。换句话说,我们使用掩码来控制 token 在计算其 contextualized representation 时应该注意多少上下文。一旦 UNILM 得到预训练,我们就可以利用下游任务的 task-specific 数据对其进行微调。

  2. Input Representation:输入 X 是一个单词序列:

    • 对于单向语言模型而言, X 是一个 text segment
    • 对于双向语言模型和 sequence-to-sequence 语言模型而言, X 是打包在一起 segment pair

    我们总是在输入的开头添加一个特殊的 start-of-sequence token[SOS]),并在每个segment 的结尾添加一个特殊的end-of-sequence token[EOS])。[EOS] 不仅标志着自然语言理解任务中的句子边界,而且在自然语言生成任务中还用于模型学习何时终止解码过程。

    注意,这里的 [SOS] 类似于 BERT 中的 [CLS]

    input representation 遵从 BERT

    • 通过 WordPiece 将文本 tokenize 为子词单元 subword unit
    • 对于每个 input token ,它的 vector representation 是由相应的 token embeddingposition embedding 、以及 segment embedding 相加而计算出来的。

    由于 UNILM 是使用多个语言模型任务进行训练的,segment embedding 也起到了语言模型 id 的作用,因为我们为不同的语言模型目标使用不同的 segment embedding

    对于单向语言模型,只有一个 segment,因此 segment id 都是 1;对于双向语言模型和 sequence-to-sequence 语言模型,有两个 segment,因此 segment id12 。因此,根据 segment id 是几个,可以粗略地(而无法精确地)区分不同的语言模型。

  3. Backbone Network: Multi-Layer Transformerinput 向量 {xi}i=1|X| 被打包为 H(0)=[x1,,x|X|]Rd×|X| ,其中 dtoken embedding 维度(也是 position embeddingsegment embedding 的维度)。然后 H(0) 通过一个 L 层的 Transformer 被编码到不同 levelcontextual representation

    (12)H(l)=[h1(l),,h|X|(l)]=Transformerl(H(l1)),l{1,2,,L}

    其中 H(l) 为第 l 个层 Transformer 的输出。

    在每个 Transformer Block 中,多个 self-attention head 被用于聚合前一层的输出向量。对于第 lTransformer 层,单个 self-attention head A(l) 是通过如下的公式来计算的:

    (13)Q=WQ(l)H(l1)Rdh×|X|K=WK(l)H(l1)Rdh×|X|V=WV(l)H(l1)Rdh×|X|A(l)=softmax(QKd+M)V(l)

    其中:

    • WQ(l),WK(l),WV(l)Rdh×d 为三个投影函数,分别将 H(l1)Rdh×|X| 投影到 query 空间、key 空间、value 空间。dhself-attention head 的维度。
    • MR|X|×|X|mask matrix (也叫做 self-attention mask matrix),用于决定一对 token 之间是否可以相互关注 attend

    我们使用不同的 mask matrix M 来控制一个 token 可以关注的上下文从而计算该 tokencontextualized representation ,如 Figure 1 所示。以双向的语言模型为例: mask matrix的元素都是 0 ,表明所有的token 都可以相互访问。

  4. 预训练目标:我们使用四个完形填空任务来预训练 UNILM,这些完形填空任务为了不同语言建模目标而设计的。在完形填空任务中,我们在输入中随机选择一些 WordPiece token ,并用 special token (即,[MASK])替换它们。然后,我们将 Transformer 网络计算出的、这些 special token 对应的输出向量馈入一个 softmax 分类器,以预测 masked tokenUNILM 的参数被学习为:使 predicted tokenoriginal token 计算的交叉熵损失最小。值得注意的是,使用完形填空任务使得所有的语言模型都可以使用相同的训练程序,单向和双向的都一样。

    • 单向语言模型:我们同时使用 left-to-right 语言模型目标、以及 right-to-left 语言模型目标。

      left-to-right 语言模型为例。每个 tokenrepresentation 只编码左侧的 context token 和它自身。例如,为了预测 " x1x2[MASK]x4 " 的 masked token ,只能使用token x1,x2 及其自身(即 [MASK])。这是通过使用三角矩阵的 self-attention mask M 来实现的,其中self-attention mask 的上三角部分被设置为 ,其他不分被设置为 0 ,如图 Figure 1 所示。

      类似地, right-to-left 语言模型以 token 的右侧上下文为条件来预测该 token

    • 双向语言模型:遵从 BERT,双向语言模型允许所有 token 在预测中相互关注。双向语言模型对来自两个方向的上下文信息进行编码,并能产生比单向语言模型更好的 contextual representation 。在双向语言模型中,self-attention mask M 是一个全零矩阵,因此在输入序列的所有位置上可以关注每个 token

    • Sequence-to-Sequence 语言模型: 如图 Figure 1 所示,对于预测来说:

      • 第一个 segment (即,source segment)的 token 可以从 source segment 内的两个方向相互关注。
      • 而第二个 segment (即,target segment )的 token 只能关注 target segment 内的左侧上下文及其自身,以及 source segment 内的所有 token

      例如,给定 source segment t1t2 及其 target segment t3t4t5 ,我们将 input "[SOS]t1t2[EOS]t3t4t5[EOS]" 馈入模型。t1t2 都可以访问前面四个 token (即,"[SOS]t1t2[EOS]"),但 t4 只能访问前面六个 token (即,"[SOS]t1t2[EOS]t3t4 ")。

      Figure 1 显示了用于Sequence-to-Sequence 语言模型目标的self-attention mask M

      • M 的左边部分被设置为全 0 ,这样所有的 token 都能访问到第一个 segment
      • M 的右上部分被设置为 ,从而阻止 source segment 关注到 target segment
      • 此外,对于M 的右下部分,我们把它的上三角部分设置为 、其他位置设置为 0 ,这样可以防止target segment 中的 token 关注到它们未来的位置(即,右侧)。

      在训练过程中,我们同时在两个 segment 中随机选择 token ,并用 special token (即,[MASK] )来替换它们。该模型被学习从而恢复 masked token 。由于 source texttarget textpair 对在训练中被打包成一个连续的输入文本序列,我们隐式地鼓励模型学习这两个 segment 之间的关系。为了更好地预测 target segment 中的 tokenUNILM 学习有效地编码 source segment 。因此,针对Sequence-to-Sequence 语言模型设计的完形填空任务(也被称为 encoder-decoder 模型),同时预训练了一个双向编码器和一个单向解码器。预训练的模型作为encoder-decoder 模型,可以很容易地适用于广泛的条件文本生成 conditional text generation 任务,如抽象式摘要 abstractive summarization

      这里的 “ Sequence-to-Sequence 语言模型”其实同时混合了双向语言模型(当 [MASK] 位于 source segment)和 Sequence-to-Sequence 模型(当 [MASK] 位于 target segment)。

      此外,这里的 decoder 仅解码 [MASK] 对应的 token,因此是一个 incomplete 的解码过程。

      此外,这里的 encoder-decoder 架构与传统的架构不同,这里 decoder 可以直接访问 encoder 的所有位置。而传统的架构中,decoder 仅能访问单个 encoder representation ,这个 encoder representation 聚合了所有 encoder input 信息。

    • Next Sentence Prediction:遵从 BERT,对于双向语言模型,在预训练中我们也包括 next sentence prediction 任务。

  5. 预训练配置:整体预训练目标是上述不同类型的语言模型的目标之和。具体而言,在一个 training batch 中,包含: 1/3 的双向语言模型目标、1/3Sequence-to-Sequence 语言模型目标、1/6left-to-right 语言模型目标、1/6right-to-left 语言模型目标。

    UNILM 的模型结构遵循 BERT_LARGE 的结构,以便进行公平的比较。遵从 GPTUNILM 采用 gelu 激活函数。具体而言,我们使用一个 24 层的 Transformer ,隐层维度 1024、注意力头 16 个,共包含大约 340M 的参数。softmax 分类器的权重矩阵与 token embedding 绑定(即,二者共享相同的参数矩阵)。

    UNILMBERT_LARGE 初始化,然后使用 English WikipediaBookCorpus 进行预训练,这两个数据集的处理方式与 BERT 相同。词表vocabulary 规模为 28996 。输入序列的最大长度为 512token masking 的概率为 15% 。在 masked position 中,80% 的时间我们用 [MASK] 来替代被选中的 token10% 的时间用 random token 来替代,其余的 10% 时间保持 original token 。此外,80% 的时间我们每次随机掩码一个 token20% 的时间我们随机掩码一个 bigram 或一个 trigram

    我们使用 β1=0.9,β2=0.999Adam 优化器。学习率为 3e-5 ,其中在最初的 40K 步中进行线性预热然后进行线性衰减。 dropout-rate = 0.1weight-decay = 0.01batch-size = 330 。预训练程序运行了大约 770K 步。使用 8Nvidia Telsa V100 32GB GPU card 进行混合精度训练,每 10K 步需要约 7 小时。

    BERT_LARGE 初始化之后还预训练了 770K 步,那初始化的意义和影响是什么?通常,用预训练好的模型作为初始化之后,只需要训练少量的 step 就能达到比较好的效果。

    从工程落地上来讲,用 BERT_LARGE 来初始化有利于更快地收敛从而降低训练成本;从实验上来讲,最好是从头开始训练从而进行公平地比较。

  6. 下游自然语言理解任务和自然语言生成任务的微调:

    • 对于自然语言理解任务,我们将 UNILM 作为一个双向 Transformer encoder 来微调,就像 BERT

      以文本分类任务为例。我们使用 [SOS]encoding vector 作为 input representation ,记做 h1(L) ,并将其馈入随机初始化的 softmax 分类器(即 task-specific 输出层),其中类别概率计算为:softmax(h1(L)WC),其中 WCRd×C 是一个参数矩阵,C 是类别数量。我们通过更新预训练的语言模型以及被添加的 softmax 分类器的参数,从而最大化 labeled training data 的似然 likelihood

    • 对于自然语言生成任务,我们以 sequence-to-sequence 任务为例。微调过程类似于使用 self-attention mask 的预训练。令 S1S2 分别表示 source sequencetarget sequence 。我们通过 special token 将它们打包在一起,形成输入 "[SOS] S1 [EOS] S2 [EOS]" 。该模型通过随机掩码 target 序列中一定比例的 token 来进行微调,并学习恢复 masked word 。训练目标是在给定上下文的情况下,最大化 masked token 的似然 likelihood

      值得注意的是,标识着 target序列结束的 [EOS] token 在微调过程中也可能被掩码,因此当这种情况发生时,模型会学习何时发出 [EOS] token 从而终止 target 序列的生成过程。

      UNILM 在自然语言生成任务上的微调与常规的 sequence-to-sequence 模型不同。常规的 sequence-to-sequence 模型会依次生成 target sequence(包括 [EOS] token )。而这里的 UNILM 采用它预训练时的方式,仅掩码 target sequence 并且仅仅预测 masked token (而不是序列生成)。

      常规的 sequence-to-sequence 更符合实际,因为在实际应用中,我们通常只有 source sequence 而没有 target sequence 。而 UNILM 不仅需要知道 source sequence、还需要知道部分的 target sequence 信息(从而预测被 masked 的部分)。

20.2 实验

  1. 我们对自然语言理解任务(即 GLUE benchmark ,以及抽取式问答 extractive question answering )和自然语言生成任务(即抽象式摘要 abstractive summarization 、问题生成、生成式问答、以及对话响应生成 dialog response generation )都进行了实验。

20.2.1 抽象式摘要

  1. 自动文本摘要 automatic text summarization 能产生一个简明流畅的 summary ,传达 input(如,一篇新闻文章)的关键信息。我们聚焦于抽象式摘要,这是一项生成任务,其中 summary 不必使用输入文本中的短语或句子。我们使用 CNN/DailyMail 数据集的非匿名版本、以及 Gigaword 来用于模型微调和评估。我们按照前面描述的程序将 UNILM 作为一个 sequence-to-sequence 模型进行微调,将文档(第一个 segment )和 summary (第二个 segment )拼接起来作为输入,并根据预定义的最大序列长度进行截断。

    我们在训练集上对我们的模型微调了 30epoch 。我们复用预训练中的大多数超参数。掩码概率为 0.7 。我们还使用平滑率为 0.1 的标签平滑 label smoothing

    • 对于 CNN/DailyMail ,我们设置 batch size = 32 ,最大序列长度为 768
    • 对于 Gigaword ,我们设置 batch size = 64 ,最大序列长度为 256

    在解码过程中,我们使用 beam size = 5beam search 。对于 CNN/DailyMailGigaword 来说,input document 被截断为前 640token 和后 192token 。我们在 beam search 中删除了重复的 trigram ,并在验证集上调整了 maximum summary length

  2. 我们使用 F1 版本的 ROUGE 作为两个数据集的评估指标。在下表中,在 CNN/DailyMail 数据集上,我们将 UNILMbaseline 以及几个 SOTA 模型进行比较:

    • LEAD-3 是一个 baseline 模型,它抽取文档中的前三句话作为其摘要。
    • PGNet 是一个基于 pointer-generator networksequence-to-sequence 模型。
    • S2S-ELMo 使用一个 sequence-to-sequence 模型,用预训练好的 ELMo representation 进行增强,被称为 SRC-ELMO+SHDEMB
    • Bottom-Up 是一个 sequence-to-sequence 模型,用一个 bottom-up content selector 来选择突出的短语。

    我们还在下表中列出了数据集上最好的抽取式摘要结果。如下表所示,我们的模型优于以前所有的抽象式系统 abstractive system ,在数据集上创造了一个新的SOTA 的抽象式结果。在 ROUGE-L 中,我们的模型也比最好的抽取式模型高出 0.88 分。

  3. 在下表中,我们对模型在不同规模(10K3.8M )的 Gigaword 上进行了评估。

    • TransformeOpenNMT 都实现了标准的 attentional sequence-to-sequence 模型。
    • Re3Sum 检索摘要作为候选模板,然后使用一个扩展的 sequence-to-sequence 模型来生成摘要。
    • MASS 是一个基于 Transformer 网络的预训练的 sequence-to-sequence 模型。

    实验结果表明:UNILM 取得了比以往工作更好的性能。此外,在低资源环境下(即只使用 10K 个样本作为训练数据),我们的模型在 ROUGE-L 中比 MASS 高出 7.08 分。

20.2.2 问答

  1. Question Answering: QA 任务是在给定一个段落的条件下回答一个问题。有两种 setting

    • 第一种被称为抽取式问答 extractive QA ,答案被假定为段落中的一个 text span
    • 另一种被称为生成式问答 generative QA ,答案需要即时生成。
  2. 抽取式问答:这项任务可以被表述为自然语言理解任务,我们需要预测答案在段落中的开始位置和结束位置。我们对预训练的 UNILM 进行微调,将UNILM 作为双向编码器从而用于抽取式问答。我们在 Stanford Question Answering Dataset: SQuAD2.0 版本、以及 Conversational Question Answering: CoQA 数据集上进行了实验。

    • SQuAD 2.0 上的结果如下表所示,我们比较了两个模型的精确匹配 Exact Match: EM 分和 F1 分。

      • RMR+ELMo 是一个基于 LSTM 的问答模型,用预训练好的 language representation 来增强。
      • BERT_LARGE 是一个 cased 模型(即,字母保持大小写),在 SQuAD 训练数据上微调了 3epochbatch size = 24 ,最大序列长度为 384
      • UNILM 以与 BERT_LARGE 相同的方式进行微调。

      我们看到 UNILM 的表现优于 BERT_LARGE

    • CoQA 是一个对话式问答 conversational question answering 数据集。与 SQuAD 相比,CoQA 有几个独有的特点:

      • 首先,CoQA 中的样本是对话式的,所以我们需要根据对话历史来回答 input question
      • 其次,CoQA 中的答案可以是自由格式的文本,包括很大一部分是 "yes/no" 的答案。

      我们对用于 SQuAD 的模型做了如下修改:

      • 首先,除了被问的问题,我们将 question-answer 的历史拼接到第一个 segment ,这样模型就可以捕获到对话信息。

      • 其次,对于"yes/no" 问题,我们使用 [SOS] tokenfinal hidden vector 来预测 input question 是否是一个"yes/no" 问题,以及答案为 "yes/no"

        对于非"yes/no" 问题 ,我们选择一个 F1 分数最高的 passage subspan 用于训练。

      CoQA 的实验结果如下表所示。我们比较了两个模型的 F1 分:

      • DrQA+ELMo 是一个基于 LSTM 的问答模型,用预训练好的 ELMo representation 来增强。
      • BERT_LARGE 是一个 cased 模型(即,字母保持大小写),在 CoQA 训练数据上微调了 2epochbatch size = 16 ,最大序列长度为 512
      • UNILM 以与 BERT_LARGE 相同的方式进行微调。

      我们看到 UNILM 的表现优于 BERT_LARGE

  3. 生成式问答:生成式问答为 input question 和段落生成自由形式的答案,这是一个自然语言生成任务。相比之下,抽取式问答只能预测 input passagesubspan 作为答案。在 CoQA 数据集上(如前所述),《CoQA: A conversational question answering challenge》表明:普通的 sequence-to-sequence 模型的性能仍然远远低于抽取式方法。

    我们为生成式问答来适配 UNILM ,从而将 UNILM 作为一个 sequence-to-sequence 模型。第一个 segment (即 input sequence )是对话历史、input question 、以及段落的拼接。第二个 segment (即,output sequence )是答案。我们在 CoQA 训练集上对预训练的 UNILM 微调了 10epoch 。我们设置 batch size = 32 ,掩码率为 0.5 ,最大序列长度为 512 。我们还使用平滑率为 0.1 的标签平滑。其他超参数与预训练保持一致。

    在解码过程中,我们使用 beam size = 3beam searchinput question 和段落的最大长度为 470 。对于超过最大长度的段落,我们用滑动窗口的方法将段落分成若干块,并选择一个与question 具有最高 word overlap 的块。

    我们将我们的方法与生成式问答模型 Seq2SeqPGNet 进行了比较:

    • Seq2Seq baseline 是一个带有注意力机制的 sequence-to-sequence 模型。
    • PGNet 模型用一个 copy 机制增强了 Seq2Seq

    如下表所示,我们的生成式问答模型在大大超过了以前的生成式方法,这极大地缩小了生成式方法和抽取式方法之间的差距。

20.2.3 问题生成

  1. 我们对 answer-aware 的问题生成 question generation 任务进行了实验。给定一个 input passage 和一个 answer span ,我们的目标是生成一个针对答案的问题。SQuAD 1.1 数据集被用于评估。遵从 《Learning to ask: Neural question generation for reading comprehension》,我们将原始训练集拆分为训练集和测试集,并保留原始验证集。我们还遵从 《Paragraph-level neural question generation with maxout pointer and gated self-attention networks》中的数据拆分方式进行实验,即,使用反向的 dev-test 拆分。

    问题生成任务被表述为一个 sequence-to-sequence 问题。第一个 segmentinput passage 和答案的拼接,而第二个segment 是被生成的问题。

    我们在训练集上对 UNILM 微调了 10epoch 。我们设置 batch size = 32,掩码率为 0.7 ,学习率为 2e-5 。我们采用平滑率为 0.1 的标签平滑。其他超参数与预训练相同。

    在解码过程中,我们将输入截断为 464token 并选择包含答案的 passage 块。评估指标 BLEU-4, METEOR, ROUGE-L 的计算方法与 《Learning to ask: Neural question generation for reading comprehension》 中的脚本相同。

    结果如下表所示。

    • CorefNQG是基于一个带有注意力的 sequence-to-sequence 模型、以及一个特征丰富的编码器。
    • MP-GSN 使用了一个带门控自注意力编码器的 attention-based sequence-to-sequence model
    • SemQG 使用两个语义增强的奖励 semantics-enhanced reward 来正则化 generation

    UNILM 的性能优于以前的模型,并针对问题生成任务达到了新的 SOTA

  2. 生成的问题来改善 QA:问题生成模型可以从文本语料库中自动收集大量的 question-passage-answer 的样本。我们表明,由问题生成模型产生的 augmented data 可以改善问答模型。

    我们生成了 5M 个可回答的样本,并通过修改可回答的样本生成了 4M 万个不可回答的样本。我们在生成的数据上对我们的问题回答模型微调一个 epoch 。然后在 SQuAD 2.0 的数据上再微调两个 epoch

    生成的 augmented data 并不是和下游任务的数据混合,而是进行 stack-style 的微调。因此,augmented data 微调的模型仅用于初始化。下游任务的目标数据才是作为最终的微调,使得与测试集的数据分布保持一致。

    如下表所示,由 UNILM 生成的 augmented data 改善了问答模型。

    请注意,在微调过程中,我们对生成的数据集和 SQuAD 2.0 数据集都使用了双向 masked language modeling: MLM 作为辅助任务(MLM 原本用于预训练阶段)。与直接使用自动生成的样本相比,双向 MLM 带来了 2.3 个点的绝对改进。一个可能的原因是,当在 augmented data 上进行微调时,辅助任务缓解了灾难遗忘catastrophic forgetting

    这个 2.3 的绝对改进并没有在下表中展示。

20.2.4 响应生成

  1. 我们在以文档为基础的 dialog response generation 任务上评估 UNILM 。给定一个多轮对话历史、以及一个网络文档 web document 作为知识源,系统需要生成一个既适合对话、又反映网络文档内容的自然语言响应。我们微调 UNILM 来完成这个任务,其中 UNILM 作为一个 sequence-to-sequence 模型。第一个 segmentinput sequence )是 web document 和对话历史的拼接。第二个 segmentoutput sequence )是响应。

    我们在 DSTC7 的训练数据上对 UNILM 微调了 20epochbatch size = 64 。掩码率为 0.5 。最大序列长度为 512 。在解码过程中,我们使用 beam size = 10beam search 。产生的响应的最大序列长度被设置为 40

    如下表所示,在 DSTC7 共享任务中,UNILM 在所有评估指标上都超过了最好的系统。

20.2.5 GLUE Benchmark

  1. 我们在 GLUE benchmark 上评估 UNILMGLUE 是九个语言理解任务的集合,包括问答、语言可接受性linguistic acceptability 、情感分析、文本相似性、转述检测paraphrase detection 、以及自然语言推理natural language inference : NLI

    我们的模型作为一个双向语言模型被微调。我们使用 Adamax 优化器,学习率为 5e-5batch size = 32 。最大 epoch 数被设为 5 。使用一个带预热(预热比例 0.1 )的线性学习率衰减的学习率调度。每个任务的 last linear projectiondropout-rate = 0.1,除了 MNLI0.3CoLA/SST-20.05 。为了避免梯度爆炸问题,梯度范数被剪裁在 1.0 以内。我们截断 token 使得输入序列长度不超过 512

    下表列出了从 benchmark evaluation server 获得的 GLUE 测试结果。结果显示,在 GLUE 任务中,UNILMBERT_LARGE 相比获得了相差无几的性能。

20.2.6 未来工作

  1. UNILM 可以从以下几个方面继续改善:

    • 我们将通过在 web-scale的文本语料库上训练更多的 epoch 和更大的模型来推动当前方法的极限。同时,我们还将在下游应用上进行更多的实验以及消融实验,从而研究模型能力以及采用相同网络来预训练多种语言建模任务的好处。
    • 在我们目前的实验中,我们聚焦于单语 NLP 任务。我们还对扩展 UNILM 从而支持跨语言的任务感兴趣。
    • 我们将对自然语言理解和自然语言生成任务进行多任务微调,这是 Multi-Task Deep Neural Network: MT-DNN 的自然延伸。

二十一、MASS [2019]

  1. 预训练和微调被广泛使用,当目标任务的训练数据资源较少或为零而预训练有大量的数据时。例如,在计算机视觉中,模型通常在大规模的 ImageNet 数据集上进行预训练,然后在下游任务(如目标检测任务、图像分割任务)上进行微调。最近,ELMoOpenAI GPT、以及 BERT 等预训练方法在自然语言处理中引起了很多关注,并在多种语言理解任务中取得了 SOTA 的准确性,如情感分类、自然语言推理、命名实体识别、以及 SQuAD 问答,这些任务通常只有有限的监督数据。在上述预训练方法中,BERT 是最卓越的一种,它通过 masked language modelingnext sentence prediction ,在大型单语语料库上预训练 bidirectional encoder representation

    与语言理解不同,语言生成的目的是在某些输入的条件下生成自然语言句子,包括神经机器翻译 neural machine translation : NMT、文本摘要text summarization 、以及对话式响应生成 conversational response generation 等任务。语言生成任务通常对数据要求很高,许多任务在训练数据方面是低资源 low-resource 甚至是零资源 zero-source 的。在这些自然语言生成任务上直接应用 BERT-like 的预训练方法是不可行的,因为 BERT 是为语言理解设计的,其中这些任务通常只由一个 encoderdecoder 处理。因此,如何为语言生成任务(通常采用基于 encoder-decoder 的序列学习框架)设计预训练方法,具有很大的潜力和重要性。

    在论文 《MASS: Masked Sequence to Sequence Pre-training for Language Generation》 中,受 BERT 的启发,作者提出了一个新颖的预训练目标:MAsked Sequence to Sequence learning : MASS 用于语言生成。MASS 是基于 sequence to sequence 的学习框架:它的encoder将带有一个 masked fragment (几个连续的token )的一个句子作为输入,而它的decoder则根据 encoder representation 来预测这个 masked fragment 。与 BERT 或仅对 encoder/decoder 进行预训练的语言模型不同,MASS 经过精心设计,分两步对encoderdecoder进行联合预训练:

    • 通过预测 encoder sidemasked fragmentMASS 可以迫使encoder理解 unmasked token 的含义,从而在 decoder side 预测 masked token
    • 通过掩码 decoderinput tokens ,其中这些 masked input tokensencoder side 没有被掩码,MASS 可以迫使decoder 更多地依赖于 source representation (即,encoder representation)而不是 decoder sideprevious tokens ,从而用于 next token prediction 。这可以更好地促进encoderdecoder的联合训练。

    MASS 只需要预训练一个模型,然后在各种下游任务中进行微调。论文使用 transformer 作为基础的 sequence to sequence 模型,并且在 WMT 单语语料库上进行预训练,然后在三种不同的语言生成任务上进行微调,包括神经机器翻译、文本摘要、以及对话式响应生成。考虑到下游任务涵盖了像神经机器翻译这样的跨语言任务,论文在多种语言上预训练一个模型。论文为所有三个任务探索了 low-resource setting ,也考虑了无监督的神经机器翻译(这是一个纯粹的 zero-resource setting)。

    • 对于神经机器翻译,论文在 WMT14 English-FrenchWMT16 English-German 、以及 WMT16 English-Romanian 数据集上进行了实验。
    • 对于无监督的神经机器翻译,论文直接在单语数据上用 back-translation loss 微调预训练的模型,而不是像 《Phrase-based & neural unsupervised machine translation》 那样使用额外的降噪自编码器损失。
    • 对于低资源的神经机器翻译,论文在有限的双语数据上微调预训练的模型。
    • 对于其他两项任务,论文的实验如下:Gigaword 语料库用于抽象式文本摘要,Cornell Movie Dialog 语料库用于对话式响应生成。

    论文的方法在所有这些任务以及 zero-resource settinglow-resource setting 中都取得了改进,表明论文的方法是有效的,适用于广泛的序列生成任务。

    论文的贡献如下:

    • 论文提出了 MASS ,一种用于语言生成的 masked sequence to sequence 预训练方法。

      MASS 主要用于自然语言生成任务,而无法用于自然语言理解任务。

    • 论文将 MASS 应用于各种语言生成任务,包括神经机器翻译、文本摘要、以及对话式响应生成,并取得了显著的改进,证明了 MASS 的有效性。

      具体而言, MASS 在两种 language pair (即,English-French, English-German )的无监督神经机器翻译上取得了 SOTABLEU 分,并且在 English-FrenchFrench-English 上分别超过了之前的无监督神经机器翻译方法 4 分以上和 1 分以上,甚至超过了早期的 attention-based 的监督模型。

  2. 相关工作:在自然语言处理领域,在 sequence to sequence learning 和预训练方面有很多工作。

    • Sequence to Sequence Learningsequence to sequence learning 是人工智能领域的一项挑战性任务,涵盖了各种语言生成应用,如神经机器翻译、文本摘要、问答、以及对话式响应生成。

      近年来,由于深度学习的进步,sequence to sequence learning 引起了很多关注。然而,许多语言生成任务,如神经机器翻译,缺乏 paired data (即,监督数据),但有大量的unpaired data (即,无监督数据)。因此,在 unpaired data 上进行预训练,并用小规模的 paired data 进行微调,将有助于这些任务,这正是本工作的重点。

    • Pre-training for NLP task:预训练已被广泛用于 NLP 任务中,从而学习更好的 language representation 。以前的工作大多集中在自然语言理解任务上,可以分为 feature-based 方法和 fine-tuning 方法。

      • feature-based 方法主要是利用预训练为下游任务提供 language representationfeature ,其中包括 word-level representationsentence-level representation 、以及来自神经机器翻译模型和 ELMocontext sensitive feature
      • fine-tuning 方法主要是在语言建模目标上预训练模型,然后在具有监督数据的下游任务上微调模型。具体来说, 《Bert: Pre-training of deep bidirectional transformers for language understanding》 提出了基于 masked language modelingnext sentence predictionBERT ,并在 GLUE benchmarkSQuAD 中的多个语言理解任务中取得了 SOTA 准确性。

      也有一些工作采用针对语言生成的 encoder-decoder 模型进行预训练。

      • 《Semi-supervised sequence learning》《Unsupervised pretraining for sequence to sequence learning》利用语言模型或自编码器来预训练编码器和解码器。他们的方法虽然获得了 improvement ,但很有限,不像语言理解的预训练方法(如 BERT )那样通用和显著。
      • 《Exploiting source-side monolingual data in neural machine translation》 设计了一个用于预训练的句子重排任务 sentence reordering task ,但只针对 encoder-decoder 模型的编码器部分。
      • 《Transfer learning for low-resource neural machine translation》《Zero-resource translation with multi-lingualneural machine translation》similar rich-resource language pair 上预训练模型,在 target language pair 上对预训练模型进行微调,这依赖于 other language pair 的监督数据。
      • 最近,XLM 对编码器和解码器都预训练了 BERT-like 模型,并在无监督机器翻译上取得了 previous SOTA 的结果。然而,XLM 中的编码器和解码器是单独预训练的,而且 encoder-decoder 的注意力机制无法被预训练,这对于基于 sequence to sequence 的语言生成任务来说是次优的。

      与以往的工作不同,我们提出的 MASS 是经过精心设计的,只使用未标记的数据并同时对编码器和解码器进行联合预训练,可以应用于大多数语言生成任务。

21.1 模型

  1. 这里,我们首先介绍了 sequence to sequence learning 的基本框架,然后提出 MASSMAsked Sequence to Sequence 预训练)。然后,我们讨论了 MASS 与以前的预训练方法的区别,包括 masked language modeling (参考BERT)、以及 standard language modeling

21.1.1 Sequence to Sequence Learning

  1. 定义 (X,Y)(X,Y) 为一个 sentence pair,其中:

    • X=(x1,x2,,xm) 为包含 mtokensource sentence
    • Y=(y1,y2,,yn) 为包含 ntokentarget sentence
    • Xsource domainYtarget domain

    一个 sequence to sequence 模型学习参数 θ 从而估计条件概率 P(YX;θ) ,并且通常使用对数似然 log likelihood 作为目标函数:

    (14)L(θ;(X,Y))=(X,Y)(X,Y)logP(YX;θ)

    这个条件概率 P(YX;θ) 可以根据链式法则进一步进行分解:

    (15)P(YX;θ)=t=1nP(ytY<t,X;θ)

    其中 Y<t=(y1,y2,,yt1)target sentence Y 的前面 t1 的前缀。

  2. sequence to sequence learning 的一个主要方法是 encoder-decoder 框架。编码器读取 source sequence 并生成一组 representation ;解码器在给定一组 source representation 和前面已经处理的 target tokens 的条件下,估计每个 target token 的条件概率。注意力机制被进一步引入编码器和解码器之间,从而在预测当前 token 时寻找应该聚焦于哪个 source representation

21.1.2 Masked Sequence to Sequence Pre-training

  1. 我们在本节中介绍了一个新的无监督预测任务。给定一个 unpaired source sentence XX

    • 我们记 X¬u:vX 的一个修改版,其中从位置 uv 之间的 fragment 都被掩码。 0<u<v<mm 是句子 Xtoken 数量。每个 masked token 替换为一个 special symbol [M] ,并且 masked sentence 的长度保持不变。

      我们记 k=vu+1 为从位置 uv 之间被掩码的 token 的数量。

    • 我们记 Xu:v 为从位置 uv 之间的原始 fragment

    MASS 通过预测 sentence fragment Xu:v 来预训练一个 sequence to sequence 模型,其中模型将 masked sentence X¬u:v 作为输入。

    我们也使用对数似然作为目标函数:

    (16)L(θ;X)=1|X|XXlogP(Xu:vX¬u:v;θ)=1|X|XXlogt=uvP(xtu:vX<tu:v,X¬u:v;θ)

    其中:

    • xtu:v 为位置 ttoken ,它在 sentence fragment Xu:v 中。
    • X<tu:vsentence fragment Xu:v 中的位置 t 之前的 token 子序列(不包括位置 t)。
  2. 我们在下图中展示了一个例子,其中输入序列有 8tokenfragment x3x4x5x6 被掩码。请注意,模型只预测了被掩码的 fragment x3x4x5x6 ,其中 decoder input 为:位置 0 ~ 2 和位置 6 ~ 7 的输入都是 special token [M] ,位置 3 ~ 5 的输入为 x3x4x5 ,位置编号从 0 开始 。

    虽然我们的方法适用于任何基于神经网络的 encoder-decoder 框架,但我们在实验中选择了 Transformer ,因为它在多个 sequence to sequence learning 任务中取得了 SOTA 的性能。

    在论文的实现中,作者将 decoder input 中的 masked token 移除,但是对所有的 token 保留它们的原始位置信息。即,下图中保留 _X3X4X5 ,它们的位置分别为 {2, 3, 4, 5} (位置编号从零开始计算)。

  3. 实际上,BERT 中的掩码语言建模 masked language modeling 、以及 GPT 中的标准语言建模 standard language modeling 可以被视为 MASS 的特殊情况。我们有一个重要的超参数 k,它表示句子中 masked fragment 的长度。具有不同 k 值的 MASS 可以覆盖一些特殊的 case,这些特殊的 case 与先前的预训练方法相关,如下表所示。

    • k=1 时,source sentence 中的 masked fragment 只包含一个 token ,解码器预测这个 token 时没有任何其它 token 作为输入,而是以 unmasked source token 为条件,如下图 (a) 所示。这就成了 BERT 中使用的 masked language modeling

      有人可能会说,该模型结构与masked language modeling 有一点不同。然而,由于解码器的所有输入 token 都被掩码了,解码器本身就像一个非线性分类器,类似于 BERT 中使用的 softmax 矩阵。在这种情况下,条件概率是 P(xuX¬u;θ),其中 umasked token 的位置,这正是 BERT 中使用的 masked language modeling 的公式。

    • k=m 时,其中 m 是句子 X 中的 token 数量,encoder side的所有token 都被掩码,解码器需要在给定 previous tokens 的条件下预测所有 token ,如下图 (b) 所示。条件概率为 P(X1:mX¬1:m;θ),它成为 GPT 中的standard language modeling ,以来自编码器的 null 信息为条件,因为encoder side的所有token 都被掩码了。

21.1.3 讨论

  1. MASS 是一种用于 language generation 的预训练方法。虽然它的特殊 case 与先前的方法有关,包括 GPT 中的 standard language modelingBERT 中的 masked language modeling ,但它与这些方法总体上是不同的:

    • standard language modeling 长期以来一直被用于预训练,最突出的是最近提出的 ELMoOpenAI GPTBERT 为自然语言理解引入了两个预训练任务(masked language modelingnext sentence prediction ),并使用一个编码器来为单句single sentence 和句子对 sentence pair 抽取 representation

      standard language modelingBERT 都可以只对编码器或解码器分别进行预训练。虽然在语言理解任务上取得了可喜的成果,但它们并不适合语言生成任务,其中语言生成任务通常利用 encoder-decoder 框架从而用于条件序列生成 conditional sequence generation

    • MASS 被设计为联合预训练编码器和解码器从而用于语言生成任务。

      • 首先,通过 sequence to sequence 框架来仅仅预测 masked tokenMASS 迫使编码器理解 unmasked token 的含义,同时也鼓励解码器从encoder side抽取有用的信息。
      • 第二,通过预测decoder side的连续 token ,解码器可以建立更好的语言建模能力,而不仅仅是预测离散的 token
      • 第三,通过进一步掩码解码器的 input token (这些 tokenencoder side没有被掩码),鼓励解码器从encoder side抽取更多有用的信息,而不是利用 decoder sideprevious token 的丰富信息。

21.2 实验

21.2.1 MASS 预训练

  1. 模型配置:我们选择 Transformer 作为基本模型结构,它由 6 层编码器和 6 层解码器组成,emebdding/hidden 维度为 1024feed-forward filter 维度为 4096

    对于神经机器翻译任务,我们在 source languagetarget language 的单语数据上对我们的模型进行预训练。我们分别对三种language pair 进行了实验: English-French, English-German, English-Romanian

    对于其他语言生成任务,包括文本摘要和对话式响应生成,我们分别只用英语单语数据对模型进行预训练。

    为了区分神经机器翻译任务中的 source languagetarget language ,我们为编码器和解码器的 input sentence 的每个 token 添加了一个 language embedding ,其中 language embedding 也是端到端学习的。

    mBART 是在 input sentence 的开头添加一个 <LID>special token ,如 <EN> 用于英语 。

    我们基于 XLM 的代码库来实现我们的方法。

  2. 数据集:我们使用了 WMT News Crawl 数据集的所有单语数据,其中涵盖了 2007 年至 2017 年的 190M 英语句子、62M 法语句子、270M 德语句子。

    我们还在预训练阶段加入了一种 low-resource language ,即罗马尼亚语 Romanian,以验证用低资源单语数据预训练的 MASS 的有效性。我们使用 News Crawl 数据集中所有可用的罗马尼亚语句子,并使用 WMT16 数据对其进行增强,从而得到 2.9M 罗马尼亚语句子。

    我们删除了长度超过 175 的句子。对于每个任务,我们在 source languagetarget language 之间用 BPE 联合学习了 60K 个子词单元 sub-word unit

    这里是跨语言的 BPE,而不是针对每个语言单独学习一个 BPE

  3. 预训练细节:我们通过 special symbol [M] 替换连续的token 来掩码 segment ,其中随机选择 masked segment 的起始位置 u 。遵从 BERT ,编码器中的 masked token 为:80% 的概率是 [M] token10% 的概率是 random token10% 的概率是 original token 。我们将 fragment length k 设为句子中 token 总数的大约 50% ,同时研究不同的 k 对模型效果的影响。

    为了减少内存和计算成本,我们删除了解码器中的 padding (即,masked token ),但保持 unmasked tokenpositional embedding 不变(例如,如果前两个 token 被掩码和删除,第三个 token 的位置仍然是 2 而不是 0 )。通过这种方式,我们可以获得类似的准确性,并减少解码器中 50% 的计算量。

    我们使用 Adam 优化器进行预训练,学习率为 104 。该模型在 8NVIDIA V100 GPU card 上进行训练,每个 mini-batch 包含 3000token 从而用于预训练。

    为了验证 MASS 的有效性,我们在三个语言生成任务上对预训练的模型进行了微调:神经机器翻译、文本摘要、对话式响应生成。我们在这些任务中探索了 low-resource setting ,其中我们只是利用少数训练数据用于微调从而模拟 low-resource 的场景。对于神经机器翻译,我们主要研究 zero-resource setting(无监督),因为近年来无监督的神经机器翻译已经成为一项具有挑战性的任务。

21.2.2 Fine-Tuning on NMT

  1. 这里,我们首先描述无监督神经机器翻译的实验,然后介绍低资源神经机器翻译的实验。

  2. 实验配置:对于无监督神经机器翻译,没有双语数据 bilingual data 来微调预训练的模型。因此,我们利用了预训练阶段的单语数据。与 《Unsupervised neural machine translation》《Unsupervised machine translation using monolingual corpora only》《Phrase-based & neural unsupervised machine translation》《Unsupervised pivot translation for distant languages》 不同的是,我们只是利用 back-translation 来生成 pseudo bilingual data 从而用于训练,而不使用降噪自编码器。在微调过程中,我们使用 Adam 优化器,初始学习率为 104 ,每个 GPUbatch size 被设置为 2000token 。在评估过程中,我们用 multi-bleu.pl (来自 https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/multi-bleu.perl)在 newstest2014 上评估 English-FrenchBLEU 分、在 newstest2016 上评估 English-GermanEnglish-RomanianBLEU 分。

  3. 无监督神经机器翻译的结果:我们的结果如下表所示。可以看到:

    • 在所有 6 个翻译方向上,我们的方法优于之前的所有结果,包括没有预训练的方法(Lample et al., 2018)和有预训练的方法(XLM)。

      XLM 是之前的 SOTA 方法,它在编码器和解码器中利用了 BERT-like 的预训练,该预训练涵盖了几种预训练方法:masked language model: MLMcausal language model: CLM 。我们的方法在 en-fr 上仍然比 XLM 高出 4.1 BLEU point

  4. 与其他预训练方法相比:我们还将 MASS 与之前的语言生成任务的预训练方法进行比较。

    • 第一个 baselineBERT+LM ,在BERT 中使用 masked language modeling 对编码器进行预训练,并使用 standard language modeling 对解码器进行预训练。
    • 第二个 baselineDAE ,它简单地使用去降噪自编码器 denoising auto-encoder 来预训练编码器和解码器。

    我们用 BERT+LMDAE 来预训练模型,并用 XLM 相同的微调策略对无监督翻译 pair 对进行微调(即 DAE loss + back-translation )。这些方法也采用 6 层的 Transformer

    如下表所示:

    • BERT+LM 取得了比 DAE 更高的 BLEU 分,而 MASS 在所有无监督翻译 pair 对的表现都超过了 BERT+LMDAE

    • 虽然 DAE 通常利用一些降噪方法,如随机 masking token 或互换相邻token ,但解码器仍然可以通过 encoder-decoder attention 轻松地学会拷贝 unmasked token

      另一方面,DAE 中的解码器将完整的句子作为输入,这足以像语言模型一样预测下 next token ,而不会被迫从编码器中提取额外的 useful representation

  5. Low-Resource NMT 实验:在低资源神经机器翻译的 setting 中,我们分别 WMT14 English-French, WMT16 English-German, WMT16 English-Romanian 的双语训练数据中抽取 10K, 100K, 1Mpaired sentence ,从而探索我们的方法在不同 low-resource 场景中的表现。

    我们使用在预训练阶段学到的相同的 BPE 代码来 tokenize 这些 training sentence pair 。我们用 Adam 优化器在 paired data 上对预训练模型进行了 20K 步的微调,学习率为 104。我们根据验证集的准确性选择最佳模型。我们报告在无监督 setting 中使用的相同测试集上的 BLEU 分。

    如下图所示,MASS 优于 baseline 模型,其中 baseline 模型仅在双语数据上训练而没有在所有六个翻译方向进行任何预训练。这表明我们的方法在低资源场景下的有效性。

    即,baseline 模型是传统的监督学习,而 MASSpretraining + finetuning

    此外还可以看到:双语训练数据越少(即,资源越少),那么 MASS 相比 baseline 的提升就越大。

21.2.3 Fine-Tuning on Text Summarization

  1. 实验配置:文本摘要是对长篇文本文档创建简短而流畅的 summary ,这是一项典型的序列生成任务。我们用来自 Gigaword 语料库的不同规模(10K100K1M 、以及 3.8M )的训练数据在文本摘要任务上对预训练模型进行微调,其中 Gigaword 语料库由总共3.8M 篇英文的 article-title pair 组成。我们把 article 作为编码器的输入、把 title 作为解码器的输入从而用于微调。在评估过程中,我们报告了在 Gigaword 测试集上的 ROUGE-1ROUGE-2 、以及 ROUGE-LF1 得分。我们使用 beam size = 5beam search 从而用于推理。

  2. 结果:我们的结果如下图所示。我们将 MASS 与仅在 paired data 上训练而没有任何预训练的模型(即,baseline )进行比较。在不同规模的微调数据上,MASS 始终优于 baseline (在 10K 数据上获得超过 10 ROUGE point 的增益,在 100K 数据上获得超过 5 ROUGE point 的增益),这表明 MASS 在这个任务上在具有不同规模训练数据的低资源场景中是有效的。

  3. 与其他预训练方法相比较:我们进一步将 MASS 与前面描述的 BERT+LMDAE 的预训练方法进行比较,其中在文本摘要任务上使用了 3.8M 的数据。如下表所示,MASS 在三个 ROUGE 分数上一致地优于这两种预训练方法。

21.2.4 Fine-Tuning on Conversational Response Generation

  1. 实验配置:对话式响应生成为对话生成一个灵活的响应。我们在 Cornell Movie Dialog 语料库上进行了实验,该语料库包含 140Kconversation pair 。我们随机抽取 10K/20Kpair 作为验证集/测试集,剩余的数据用于训练。我们采用预训练阶段的相同优化超参数进行微调。我们遵从 《A neural conversational model》 的方法,报告困惑度 perplexity: PPL 的结果。

  2. 结果:我们将 MASSbaseline 进行比较,其中 baseline 在现有可用的 data pair 上训练得到。我们对两组训练数据规模进行实验:随机选择 10K 个训练 data pair 、所有的 110K 个训练 data pair ,并在下表中展示实验结果。在 10K110K 的训练数据上,MASSPPL 都比 baseline 更低。

  3. 与其他预训练方法相比较:我们还将 MASSBERT+LMDAE 的预训练方法在对话式响应生成任务上进行了比较。如 Table 5 所示,在 10K110K 的训练数据上,MASSPPL 都比这两种预训练方法更低。

21.2.5 MASS 的分析

  1. 不同 k 值的研究:masked fragment 的长度 kMASS 的一个重要的超参数。如前所述,通过改变 k 值,可以覆盖 masked language modeling (参考 BERT )、以及standard language modeling 的特殊 case 。在这一节中,我们研究了不同 k 值的MASS 的性能,我们选择 k 占句子长度 m10% ~ 90%,步长为 10% ,再加上 k=1k=m

    我们观察了 MASS 在预训练的表现,以及在几个语言生成任务中微调的表现,包括无监督的English-French 翻译、文本摘要、以及对话式响应生成。

    • 我们首先展示了在不同的 k 值,预训练模型在英语和法语上的 perplexity: PPL。我们选择 WMT En-Frnewstest2013 中的英语句子和法语句子作为验证集,并绘制 PPL 如下图所示(图 (a) 为英语、图 (b) 为法语)。

      可以看到:当 k 在句子长度 m50%70% 之间时,预训练的模型达到了最佳的 validation PPL

    • 然后我们观察微调任务的表现。我们在 (c) 中显示了无监督 En-Fr 翻译的 validation BLEU 分数的曲线,在图 (d) 中显示了文本摘要的 validation ROUGE 分数,在图 (e) 中显示了对话式响应生成的 validation PPL

      可以看到,当 k 接近句子长度 m50% 时,MASS 在这些下游任务上取得了最佳性能。

    因此,我们在实验中为 MASS 设定了 km50%

    实际上, k 等于 m50% 是编码器和解码器之间的一个良好平衡。encoder sidedecoder side的有效 token 太少,会使模型偏向于更多地关注另一侧,这不适合语言生成任务。因为语言生成任务通常利用 encoder-decoder 框架在编码器中抽取 sentence representation ,以及在解码器中建模和生成句子。极端情况是 k=1BERT 中的 masked language modeling)和 k=mstandard language modeling )。如下图所示,k=1k=m 都不能在下游的语言生成任务中取得良好的性能。

  2. MASS 的消融研究:在我们的 masked sequence to sequence 预训练中,我们有两个精心的设计:

    • 我们在 encoder side 掩码连续的 token ,从而在 decoder side 预测连续的 token ,这比仅仅预测离散的 token 可以建立更好的语言建模能力。
    • 我们掩码解码器的input token ,其中这些 tokenencoder side 没有被掩码,从而鼓励解码器从encoder side 抽取更多有用的信息,而不是利用 decoder sideprevious tokens 的丰富信息。

    在本节中,我们进行了两项消融研究,以验证 MASS 中两种设计的有效性:

    • 第一项研究是在 MASS 中随机掩码离散的 token 而不是连续的 token ,记做 Discrete
    • 第二项研究是将所有的 token 馈入解码器,而不是掩码解码器的 input token (其中这些 tokenencoder side 没有被掩码)记做 Feed

    我们将 MASS 与这两种消融方法在无监督的 English-French 上进行比较,如下表所示。可以看到,DiscreteFeed 的表现都比MASS 更差,证明了 MASS 的这两种设计的有效性。

    这里就一个例子,是不是说服力不强?可以在更多的数据集上进行评估。

二十二、MacBERT [2019]

  1. BERT 受到广泛的欢迎,并在最近的自然语言处理研究中被证明是有效的。BERT 利用大规模的无标记训练数据并生成丰富的 contextual representation 。在几个流行的机器阅读理解 benchmark 上,如 SQuAD,CoQA,QuAC,NaturalQuestions,RACE,我们可以看到大多数表现最好的模型是基于 BERT 及其变体,表明预训练的语言模型已经成为自然语言处理领域的新的基础部分。

    BERT 开始,社区成员在优化预训练语言模型 pre-trained language model 方面取得了巨大而迅速的进展,如 ERNIE, XLNet, RoBERTa, SpanBERT, ALBERT, ELECTRA 等等。然而,针对 learning representation ,训练 Transformer-based 的预训练语言模型并不像我们用来训练 word-embedding 或其他传统神经网络那样容易:

    • 通常情况下,训练一个强大的 BERT-large 模型(具有 24Transformer3.3 亿个参数)到收敛,需要高内存的计算设备(如 TPUTPU Pod),这些设备非常昂贵。
    • 另一方面,虽然已经发布了各种预训练的语言模型,但大多数都是基于英语的,在其他语言中建立强大的预训练语言模型的努力很少。

    为了尽量减少重复性工作,并为未来的研究建立 baseline ,在论文 《Pre-Training with Whole Word Masking for Chinese BERT》中,作者旨在建立中文预训练语言模型系列 model series ,并向公众发布,以促进科研社区,因为中文和英文是世界上最常用的语言之一。论文重新审视了现有的流行的预训练语言模型,并将其调整为中文,从而了解这些模型是否能在英语以外的语言中得到推广并表现良好。此外,论文还提出了一个新的预训练语言模型,称为MacBERT ,它将原来的 MLM 任务替换为 MLM as correction: Mac 任务。MacBERT 主要是为了缓解原始 BERT 中预训练阶段和微调阶段的差异。论文在十个流行的中文 NLP 数据集上进行了广泛的实验,范围从 sentence-level 任务到 document-level 任务,如机器阅读理解、文本分类等。实验结果表明,与其他预训练的语言模型相比,所提出的 MacBERT 可以在大多数任务中获得显著的收益。论文还给出了详细的消融实验,以更好地检查哪些因素带来改进。论文的贡献如下:

    • 为了进一步加快中文 NLP 的未来研究,论文创建了中文预训练语言模型系列并向社区发布。作者进行了广泛的实证研究,通过仔细分析来重新审视这些预训练语言模型在各种任务上的表现。
    • 论文提出了一个新的预训练语言模型,叫做 MacBERT ,通过用相似的单词来掩码一个单词,从而缓解了预训练阶段和微调阶段的 gap ,这在各种下游任务中被证明是有效的。
    • 论文还创建了一系列小型模型,称为 RBT ,从而展示小型模型与常规预训练语言模型相比的表现,这有助于在现实世界中利用这些小模型。

    本文创新力不足,更像是一篇工程实现的报告。

  2. 相关工作:这里我们重新审视了最近自然语言处理领域中具有代表性的预训练语言模型的技术。这些模型以及所提出的 MacBERT 的整体比较在下表中描述。

    • BERTBidirectional Encoder Representations from Transformers: BERT 已经在广泛的自然语言处理任务中证明了其有效性。BERT 通过在所有 Transformer 层中,同时以左侧上下文和右侧上下文为条件来预训练深度双向 representationBERT 主要由两个预训练任务组成:Masked Language Model: MLMNext Sentence Prediction: NSP

      • MLM:随机掩码输入中的一些 token ,目标是仅根据其上下文来预测原始 token
      • NSP:预测 sentence B 是否是 sentence A 的下一句。

      后来,他们进一步提出了一种叫做全词掩码(whole word masking: wwm)的技术,用于优化 MLM 任务中的原始掩码。在这个 setting 中,我们不是随机选择 WordPiece token 来掩码,而是总是一次性掩码对应于整个单词的所有 token 。这明确地迫使模型在 MLM 预训练任务中恢复整个单词,而不是仅仅恢复 WordPiece token ,而恢复整个单词的挑战性更大。由于全词掩码只影响预训练过程的掩码策略,因此它不会给下游任务带来额外的负担。

      此外,由于训练预训练语言模型的计算成本很高,他们还公布了所有的预训练模型以及源代码,这大大刺激了社区对预训练语言模型进行研究的极大兴趣。

    • ERNIEEnhanced Representation through kNowledge IntEgration: ERNIE 旨在优化 BERT 的掩码过程,其中包括 entity-level maskingphrase-level masking 。与选择输入中的随机单词不同:

      • entity-level masking 是对命名实体的掩蔽,这些实体通常由几个单词组成。
      • phrase-level masking 是掩码连续的词,这与N-gram 掩码策略相似。
    • XLNet《Xlnet: Generalized autoregressive pretraining for language understanding》 认为,现有的基于自编码的预训练语言模型(如 BERT)存在预训练阶段和微调阶段的 gap ,因为masking token (即 [MASK])从未在微调阶段出现。为了缓解这个问题,他们提出了基于 Transformer-XLXLNetXLNet 主要有两处修改:

      • 首先是在输入的分解顺序的所有排列上最大化期望的似然 expected likelihood ,在这里他们称之为排列语言模型 Permutation Language Model 。为了实现这一目标,他们提出了一种新颖的双流自注意力机制 two-stream self-attention mechanism
      • 其次是将自编码语言模型改为自回归语言模型,这与传统的统计语言模型类似。
    • RoBERTaRobustly Optimized BERT Pretraining Approach: RoBERTa 旨在采用原始的 BERT 架构,但做了更精细的修改,以充分释放 BERT 的力量。他们对 BERT 中的各种组件进行了仔细的比较,包括掩码策略、输入格式、训练步数等。经过全面的评估,他们得出了几个有用的结论从而使得 BERT 更加强大,主要包括:

      • 用更大的 batch size 和更长的序列在更多的数据上进行更长时间的训练。
      • 取消 next sentence prediction 任务,以及在 MLM 任务中使用动态掩码 dynamic masking
    • ALBERTA Lite BERT: ALBERT 主要解决了 BERT 的内存消耗较大和训练速度慢的问题。ALBERT 介绍了两种减少参数的技术。

      • 第一个是 factorized embedding parameterization ,它将 embedding 矩阵分解为两个小矩阵。
      • 第二个是跨层参数共享,即在 ALBERT 的每一层共享 Transformer 权重,这大大减少了整体参数。

      此外,他们还提出了 sentence order prediction: SOP 任务,取代传统的 NSP 预训练任务,从而产生更好的性能。

    • ELECTRAEfficiently Learning an Encoder that Classifiers Token Replacements Accurately: ELECTRA 采用了一个新的 generator-discriminator framework ,类似于生成对抗网 generative adversarial net: GAN

      • 生成器通常是一个小型的 MLM ,学习预测 masked token 的原始 token
      • 判别器被训练来判别 input token 是否被生成器所替换,这被称作 Replaced Token Detection: RTD

      注意,为了实现有效的训练,判别器只需要预测一个二元标签来表示 "replacement",而不像 MLM 预测准确的 masked word 。在预训练阶段之后,我们抛弃了生成器,只用判别器来微调下游的任务。

22.1 模型

22.1.1 中文预训练模型

  1. 虽然BERT 及其变体在各种英语任务中取得了显著的改进,但我们想知道这些模型和技术是否能在其他语言中得到很好的泛化。在本节中,我们将说明现有的预训练语言模型是如何适用于中文的。我们采用 BERTRoBERTaELECTRA 以及它们的变体来创建中文预训练模型系列model series ,其有效性在实验部分展示。需要注意的是,由于这些模型都是源于 BERTELECTRA ,没有改变输入的性质,在微调阶段无需修改从而适配这些模型,相互替换非常灵活。

  2. BERT-wwm & RoBERTa-wwm:原始的 BERT 使用 WordPiece tokenizer 将文本拆分成 WordPiece tokens ,其中一些单词被拆分成几个小的片段 small fragment 。全词掩码 whole word masking: wwm 缓解了仅掩码整个单词的一部分的缺点,因为仅掩码整个单词的一部分对模型来说更容易预测。

    根据单词的一部分 token 来预测另一部分 token 相对比较容易,如 player 被拆分为 play##er 两个 token 。如果被掩码的token##er,那么已知 play 来预测 ##er 要相对容易。

    在中文条件下,WordPiece tokenizer 不再将单词分割成小的片段,因为汉字不是由类似字母的符号组成。我们使用中文分词 Chinese Word Segmentation: CWS 工具,将文本分割成若干个词语。通过这种方式,我们可以采用中文的全词掩码,而不是单个汉字的掩码。在实施过程中,我们严格遵循原有的全词掩码代码,不改变其他的组成部分,如 word masking 的百分比等。我们使用 LTP 进行中文分词来识别单词的边界。需要注意的是,全词掩码只影响到预训练阶段的 masking token 的选择。我们仍然使用 WordPiece tokenizer 来拆分文本,这与原始的 BERT 是相同的。

    同样地,全词掩码也可以应用于 RoBERTa ,其中没有采用 NSP 任务。然而,我们仍然使用 paired input 进行预训练,这可能有利于sentence pair 的分类任务和阅读理解任务。

    SpanBERT 表明,single-sequence training 的效果要好于 bi-sequence training,因为单个句子的训练可以获得更长的上下文。

    下表中描述了一个全词掩码的例子。

  3. ELECTRA:除了 BERTRoBERTa 系列,我们还探索了 ELECTRA 模型,它采用了一个新的预训练框架,由生成器和判别器组成。我们严格遵循 ELECTRA 原始论文中的原始实现。

  4. RBT Series:尽管上述的预训练语言模型很强大,但它们不是计算高效的,而且很难在实际应用中采用。为了使社区研究人员更容易获得预训练的模型,除了常规的预训练语言模型,我们还预训练了几个小模型,我们称之为 RBT

    具体而言,我们使用与训练 RoBERTa 完全相同的训练策略,但我们使用较少的 Transformer 层。我们训练 3 层、4 层、6 层的RoBERTa-base ,分别表示为 RBT3RBT4RBT6 。我们还训练了一个 3 层的 RoBERTa-large ,表示为 RBTL3 ,它的参数规模与 RBT6 相似。这样做的目的是在参数规模相当的情况下,比较一个更宽更浅的模型(RBTL3)和一个更窄更深的模型(RBT6),这有助于未来预训练语言模型的设计。

22.1.2 MACBERT

  1. 在上一节中,我们提出了一系列的中文预训练语言模型。在这一节中,我们充分利用这些模型,并提出了一个叫做 MLM as correction BERT: MacBERT 的新型模型。MacBERTBERT 共享相似的预训练任务类型,并做了一些修改。MacBERT 由两个预训练任务组成:MLM as correctionsentence order prediction

    下图描述了 MacBERT 的整体架构。

  2. MLM as correctionMLMBERT 及其变体中最重要的预训练任务,它建模了双向上下文推断 bidirectional contextual inference 的能力。然而,如前所述,MLM 存在预训练阶段和微调阶段的不一致性,即预训练阶段的人工标记(如 [MASK])从未出现在真正的下游微调任务中。

    为了解决这个问题,我们提出了一个新的预训练任务,称为 MLM as correction: Mac 。在这个预训练任务中,我们不采用任何预定义的 token 来进行掩码。相反,我们将原始的 MLM 转化为一个文本纠正 text correction 任务:模型应该将错误的单词纠正为正确的单词,这比 MLM 更自然。具体而言,在 Mac 任务中,我们对原始 MLM 进行了以下修改:

    文本纠正任务要比 MLM 任务更简单。文本纠正任务是:给定 original wordsimilar word,因此需要预测的 original word 一定跟 similar word 非常相似。这大大缩小了候选单词的范围。

    例如:原始句子为 I like play football. ,我们用 basketball 代替了 football,变成 I like play basketball.。我们需要根据这个句子来预测最后一个单词为 football 。事实上,我们知道这个目标单词和 basketball 非常相似,这大大缩小了候选单词的范围。

    • 我们使用全词掩码策略以及 N-gram 掩码策略来选择候选 token 进行掩码,对于 word-levelunigram, 2-gram, 3-gram, 4-gram,其掩码比例分别为 40%, 30%, 20%, 10% 。我们还注意到,最近的一项工作提出了 PMI-masking《{PMI}-masking: Principled maskingof correlated spans》),它优化了掩码策略。在本文中,我们采用的是普通的 N-gram 掩码,并将在未来尝试 PMI 掩码。

    • 在微调阶段,[MASK] token 从未出现过,我们建议使用 similar word 来进行掩码,而不是用 [MASK] token 进行掩码。 similar word 是通过使用同义词工具包 Synonyms toolkithttps://github.com/huyingxi/Synonyms)来获得的,它是基于 word2vec 的相似性来计算。如果选择了一个 N-gram 进行掩码,我们会对每个被掩码的单词寻找 similar word

      在极少数情况下,当没有 similar word 时,我们会退化到使用 random word 来替换。这种random word 替换被限制在不超过所有待掩码的 token10%

      similar wordtoken 数量与原始单词的 token 数量不一致,怎么解决?例如,原始单词为 player,它的 token[play, #er]similar wordparticipant,它的 token['participant']

      这种纠错的方式可以视为对输入加噪音的一种,可以用于 BART 的预训练任务。

    • 遵从以前的工作,我们使用 15% 的输入词进行掩码,其中 80%token 被替换成 similar word10%token 被替换成random word,其余 10%token 保持原词。

      此外,所有这 15% 的输入词中,对于 word-levelunigram, 2-gram, 3-gram, 4-gram 的掩码比例分别为 40%, 30%, 20%, 10%

  3. Sentence Order PredictionBERT 中最初的 next sentence prediction: NSP 任务被认为对模型来说太容易了,人们已经证明它不是那么有效(Roberta 原始论文、ALBERT 原始论文)。在本文中,我们采用了由 ALBERT 引入的 sentence order prediction: SOP 任务,该任务被证明比 NSP 更有效。正样本是通过使用两个连续的文本创建的,而负样本是通过交换它们的原始顺序创建的。我们在实验部分中消融这些修改,以更好地展示每个组成部分的贡献。

  4. 神经架构 Neural Architecture:正式地,给定两个序列 A={A1,,An}B={B1,,Bn}

    • 我们首先通过拼接两个序列来构建输入序列 X

    • 然后,MacBERT 通过一个 embedding layer(由 word embedding, positional embedding, token type embedding 组成)和 L 层的 transformerX 转换为 contextualized representation H(L)RN×d ,其中 N 为最大序列长度、d 是隐层维度:

      (17)X=[CLS] A1An [SEP] B1Bm [SEP] H(0)=Embedding(X)H(i)=Transformer(H(i1)),i{1,,L}

      token type embedding 就是 segment embedding

    • 我们只需要预测被 Mac 任务替代的 position ,在得到 contextual representation H(L) 之后,我们收集一个与 replaced position 有关的子集,形成 replaced representation H~Rk×d,其中 kreplaced token 的数量。根据 Mac 任务的定义,k=N×15%

    • 然后我们将 H~ 投影到 vocabulary space 中,从而预测在整个词表 V 上的概率分布 p 。遵从原始的 BERT 实现,我们也使用 word embedding 矩阵 WeR|V|×d 来进行投影,其中 embedding 维度和隐层维度是相同的:

      (18)pi=softmax(h~i(We)+b)R|V|

      其中: h~iRdH~ 中的第 ireplaced representationpi 为归一化的概率分布;We,b 为待学习的参数。

    • 然后我们使用标准的交叉熵损失来优化预训练任务:

      (19)Lmac=1ki=1kj=1|V|I(yi=j)logpi,j

      其中:

      • I(yi=j) 当且仅当 yi=j 时为 1,否则为 0
      • yi 为第 ireplaced tokenground truth
      • pi,j 为模型预估第 ireplaced tokenj 的概率。
    • 对于 SOP 任务,我们直接使用[CLS] tokencontextual representation ,也就是 H(L) 的第一行,并将其投影到 label prediction layer

      (20)p=softmax(h0(L)(Ws)+bs)R2

      其中:h0(L)H(L) 的第一行;WsRd×2,bsR2 为待学习的参数;p 为归一化的概率分布。

      我们也使用交叉熵损失来优化 SOP 预训练任务。

    • 最后,整体训练损失是 Mac 损失和 SOP 损失的组合:

      (21)L=Lmac+Lsop

      这里是否需要用超参数 α 来平衡这两个损失的重要性?

22.2 实验

22.2.1 实验配置

  1. 数据处理:我们使用 Wikipedia dump (截至 2019325 日),并按照 BERT 原始论文的建议用 WikiExtractor.py 进行预处理,结果有 1307extracted files 。我们在这个 dump 中同时使用了简体中文和繁体中文,并没有将繁体中文部分转换成简体中文。我们在实验部分展示了在繁体中文任务中的有效性。在清理原始文本(例如去除 html tag )以及分离文件之后,我们得到了大约 0.4B 单词。

    由于 Chinese Wikipedia 的数据相对较少,除了 Chinese Wikipedia ,我们还使用扩展的训练数据来训练这些预训练语言模型(模型名称中标有 ext )。内部收集的扩展数据包含百科全书 encyclopedia 、新闻、以及问答网络 question answering web,有 5.4B 单词,比 Chinese Wikipedia 大十倍以上。请注意,对于 MacBERT 我们总是使用扩展数据,并省略 ext 标记。

    为了识别全词掩码的中文单词的边界,我们使用 LTP 进行中文分词。我们使用 BERT 原始论文提供的 create_pretraining_data.py 将原始输入文本转换为预训练样本。

  2. 预训练语言模型的配置:为了更好地从现有的预训练好的语言模型中获取知识,我们没有从头开始训练我们的 base-level model ,而是从官方的 Chinese BERT-base 开始,继承其词表 vocabulary 和模型权重。然而,对于 large-level model ,我们必须从头开始训练,但仍然使用 base-level model 提供的相同词表。

    • base-level model 是一个 12 层的 transformer ,隐层维度为768
    • large-level model 是一个 24 层的 transformer ,隐层维度为 1024

    对于训练 BERT series ,我们采用了 BERT 所建议的方案:预训练开始时选择最大序列长度为 128token,然后选择最大序列长度为 512token。然而,我们根据实验发现,这导致对长序列任务(如阅读理解任务)的适应性 adaptation 不足。在这种情况下,对于 BERT 以外的模型,我们直接在整个预训练过程中使用 512 的最大长度,这在 Roberta 中被采用。

    对于较小的 batch size ,我们采用 BERT 中原始的、带权重衰减的 ADAM 优化器进行优化。对于较大的 batch size ,我们采用 LAMB 优化器以获得更好的 scalability 。预训练是在单个 Google Cloud TPU v3-8 (相当于单个TPU )或 TPU Pod v3-32 (相当于 4TPU)上进行的,这取决于模型的规模。具体而言,对于 MacBERT-large ,我们训练了 2M 步,batch size = 512 ,初始学习率为 1e-4

    训练细节如下表所示。为了简洁,我们没有列出 'ext' 模型,其中 'ext' 模型的超参数与没有在扩展数据上训练的模型相同。

  3. 微调任务的配置:为了彻底测试这些预训练语言模型,我们对各种自然语言处理任务进行了广泛的实验,涵盖了广泛的文本长度,即从 sentence-leveldocument-level 。任务细节如下表所示。具体而言,我们选择了如下十个流行的中文数据集:

    • 机器阅读理解 Machine Reading Comprehension: MRCCMRC 2018, DRCD, CJRC
    • 单句分类 Single Sentence Classification: SSCChnSentiCorp, THUCNews, TNEWS
    • 句子对分类 Sentence Pair Classification: SPCXNLI, LCQMC, BQ Corpus, OCNLI

    为了进行公平的比较,对于每个数据集,我们保持相同的超参数(如最大序列长度、warm-up 步数等),只对每个任务的初始学习率调优 (从 1e-55e-5 )。请注意,初始学习率是在原始的 Chinese BERT上调优的,通过对每个任务独立地调优学习率,有可能实现另一种增益。我们将相同的实验运行十次,以确保结果的可靠性。最佳的初始学习率是通过选择最佳的平均验证集性能来确定的。我们报告最高分和平均分,从而同时评估峰值性能和平均性能。除了 TNEWSOCNLI 的测试集没有公开,我们同时报告验证集和测试集的结果。

    注意,这里是用于微调任务的超参数,与预训练任务的超参数有所差异。

    对于除 ELECTRA 以外的所有模型,我们对每个任务使用相同的初始学习率设置,如下表所示。对于 ELECTRA 模型,我们按照 ELECTRA 原始论文的建议,对 base-level model 使用 1e-4 的通用初始学习率,对 large-level model 使用 5e-5 的通用初始学习率。

    由于现有的各种中文预训练语言模型,如ERNIE, ERNIE 2.0, NEZHA 的预训练数据有很大的不同,我们只对 BERT, BERT-wwm, BERT-wwm-ext, RoBERTa-wwm-ext, RoBERTa-wwm-ext-large, ELECTRA 以及我们的 MacBERT 进行比较,从而保证不同模型之间相对公平的比较。其中,除了原始的 Chinese BERT ,所有模型都由我们自己训练。我们在 TensorFlow 框架下进行了实验,并对 BERT 原始论文提供的微调脚本进行了轻微改动,以更好地适配中文任务。

22.2.2 实验结果

  1. 机器阅读理解:机器阅读理解是一项有代表性的 document-level 建模任务,要求根据给定的段落回答问题。我们主要在三个数据集上测试这些模型:CMRC 2018, DRCD, CJRC

    • CMRC 2018:一个 span-extraction 的机器阅读理解数据集,与 SQuAD 类似,为给定的问题抽取一个 passage span
    • DRCD:这也是一个 span-extraction 的机器阅读理解数据集,但是是繁体中文。
    • CJRC:类似于CoQA,它有yes/no question、没有答案的问题、以及 span-extraction question 。该数据收集自中国的法律判决文件。注意,我们只使用 small-train-data.json 进行训练。

    结果如下表所示。可以看到:

    • 使用额外的预训练数据会带来进一步的改进,如 BERT-wwmBERT-wwm-ext 之间的比较所示。这就是为什么我们对RoBERTaELECTRAMacBERT 使用扩展数据。

      注意,MacBERT 默认就使用了扩展数据。

    • 此外,所提出的 MacBERT 在所有阅读理解数据集上都产生了显著的改进。值得一提的是,我们的 MacBERT-large 可以在 CMRC 2018Challenge 集合上实现 SOTAF1 ,即60% ,这需要更深入的文本理解。

    • 此外,应该注意的是,虽然 DRCD 是一个繁体中文数据集,但用额外的大规模简体中文进行训练也会有很大的积极作用。由于简体中文和繁体中文有许多相同的字符,使用带有少量繁体中文数据的一个强大的预训练语言模型也可以带来改进,而不需要将繁体中文字符转换为简体字符。

    • 关于 CJRC ,其中文本是以关于中国法律的专业方式写成的,BERT-wwmBERT 显示出适度的改进,但不是那么突出,表明在非通用领域的微调任务中需要进一步的领域适应 domain adaptation 。然而,增加通用的预训练数据会导致改善,这表明当没有足够的领域数据 domain data 时,我们也可以使用大规模的通用数据作为补救措施。

    这里没有 BERT-large 的数据,因为 BERT 官方未提供。根据论文的说明,MacBERT-base 是用预训练好的 BERT-base 来初始化的,这相当于 MacBERT-baseBERT-base 训练更长的时间,因此它的效果更好,也就不足为奇。

  2. 单句分类:对于单句分类任务,我们选择 ChnSentiCorp, THUCNews, TNEWS数据集:

    • ChnSentiCorp 用于评估情感分类,其中文本应该被划分为正面或负面的 label
    • THUCNews 是一个包含不同类型的新闻的数据集,其中的文本通常很长。在本文中,我们使用了一个包含 10 个领域(均匀分布)的 50K 个新闻的版本,包括体育、金融、技术等等领域。
    • TNEWS 是一个由新闻标题和关键词组成的短文本分类任务,要求分类到 15 个类别中的一个。

    结果如下表所示。可以看到:

    • MacBERT 可以在 ChnSentiCorpTHUCNews 中比 baseline 有适度的改进,即使这些数据集已经达到了很高的准确率。
    • TNEWS 中,MacBERTbase-levellarge-level 预训练语言模型中产生了一致的改进。

  3. 句子对分类:对于句对分类任务,我们使用了 XNLI 数据(中文部分)、Large-scale Chinese Question Matching Corpus : LCQMCBQ Corpus 、以及 OCNLI,这些数据需要输入两个序列并预测它们之间的关系。结果如下表所示。可以看到:

    • XNLIOCNLI 中,MacBERTbaseline 产生了相对稳定和显著的改进。然而,MacBERTLCQMCBQ Corpus 上仅仅显示了适度的改进,平均得分略有提高,但峰值性能不如 RoBERTa-wwm-ext-large

      我们怀疑这些任务对输入的细微差别的敏感性不如阅读理解任务。由于 sentence pair classification 只需要生成整个输入的 unified representation ,因此导致了适度的改进。

    • 机器阅读理解任务的改进比分类任务更大,这可能归因于掩码策略。在机器阅读理解任务中,模型应该识别段落中的 exact answer span 。在 MacBERT 中, 每个 N-gram单词都被其同义词或一个随机词所取代,因此每个词都可以很容易地被识别,这迫使模型学习 word boundary

      这里的解释比较苍白,原因没有讲清楚。

    • MacBERT-base 通常比 MacBERT-large 产生更大的改进。这可能是由两个原因造成的。

      • 首先,MacBERT-base 是由 BERT-base 初始化的,它可以从 BERT-base 的知识中受益,并避免冷启动的问题。
      • 其次,large-level 预训练语言模型的结果通常高于 base-level 预训练语言模型的结果,因此获得更高的分数要比 base-level 预训练语言模型困难得多。

  4. 小模型的结果:我们还建立了一系列的小模型,即 RBT ,建立在 RoBERTa-baseRoBERTa-large 模型上。实验结果如下表所示。可以看到:

    • 小模型的表现比一般模型(base-level, large-level)更差,因为它们使用的参数较少。
    • 分类任务的性能下降比阅读理解任务要小,说明可以牺牲微小的性能来获得更快、更小的模型,这对现实生活中的应用是有益的。
    • 通过比较参数大小相似的 RBTL3RBT6 ,我们可以看到 RBT6 的性能大大优于 RBTL3 ,这表明窄而深的模型通常优于宽而浅的模型。

    这些观察结果对未来实际应用中的模型设计是有帮助的。

22.3 讨论

  1. 根据实验结果,我们可以看到:这些预训练的语言模型在中文任务中也比传统的 BERT 有明显的改进,这表明它们的有效性和通用性。虽然我们的模型在各种中文任务中取得了显著的改进,但我们想知道这些改进的基本组件 essential component 来自哪里。为此,我们在 MacBERT 上进行了详细的消融研究从而证明其有效性。此外,我们还比较了现有的预训练语言模型在英语中的声明 claim ,看看它们的修改在另一种语言中是否仍然成立。

22.3.1 MacBERT 的有效性

  1. 我们进行了详细的消融研究,以检查 MacBERT 中每个组件的贡献。结果如下表所示。总的平均分数是通过平均每个任务的测试分数得到的。 w/o 表示 without 。可以看到:

    • 总体而言,删除 MacBERT 中的任何组件都会导致平均性能的下降,这表明所有的修改都有助于整体改进。

    • 具体而言,最有效的修改是 N-gram maskingsimilar word 替换,这是对 masked language model: MLM 任务的修改。当我们比较 N-gram maskingsimilar word 替换时,我们可以看到明显的优点和缺点,其中:N-gram masking 似乎在文本分类任务中更有效(以 ACC 为指标的任务),而阅读理解任务的表现似乎更受益于similar word 替换任务。将这两个任务结合起来可以相互弥补,在两种任务上都有更好的表现。

      数据不支持这里的结论。N-gram masking: NMsimilar word 替换、以及 SOP 的贡献都相差无几(缺少它们,导致平均准确性都在 86.89 附近)。此外,不同组件对于不同任务,也没有看出特别突出的贡献。

    • next sentence prediction: NSP 任务没有显示出像 MLM 任务那样的重要性,这表明设计一个更好的 MLM 任务来充分释放文本建模的能力更为重要。

    • 此外,我们还比较了 next sentence prediction 任务和 sentence order prediction 任务,以更好地判断哪一个任务更强大。结果显示,sentence order prediction 任务确实比原来的 next sentence prediction 任务表现得更好,尽管它不是那么突出。

    • sentence order prediction 任务要求识别两个句子的正确顺序,而不是使用一个随机的句子,这对机器来说更容易识别。与文本分类任务相比,在阅读理解任务中去掉 sentence order prediction 任务会导致性能明显下降,这表明有必要设计一个类似 next sentence prediction 的任务来学习两个 segment 之间的关系(例如,阅读理解任务中的段落和问题)。

    点评:本文创新力不足,感觉更像是一个工程实现的报告而已。

22.3.2 MLM 任务上的调研

  1. 如上一节所示,最主要的预训练任务是 masked language model 及其变体。masked language model 任务依赖于两个方面:选择要被掩码的 token 、替换被选中的 token

    在上一节中,我们已经证明了选择 masking token 的有效性,如全词掩码或 N-gram masking等。现在我们要研究的是:所选中 token 的替换对预训练语言模型的性能有何影响。

    为了研究这个问题,我们绘制了不同预训练步数下 CMRC 2018DRCD 的性能。具体而言,我们遵从对输入序列的 15% 的原始掩码比例,其中 10% masked token 保持不变。对于剩下的 90% masked token ,我们将其分为四类:

    • MacBERT80% masked token 被替换为它们的 similar word10% masked token 被替换为随机的单词。
    • Random Replace90% masked token 被替换为随机的单词。
    • Partial Mask:原始的 BERT 实现,80% masked token 被替换为 [MASK]10% masked token 被替换为随机的单词。
    • All Mask90% masked token 被替换为 [MASK]

    我们仅绘制了从 1M 步到 2M 步的结果,如下表所示。可以看到:

    • 主要依靠使用 [MASK] 进行掩码的预训练模型(即 partial maskall mask)导致了更差的性能,表明预训练和微调的差异是一个实际问题,该问题影响整体性能。

      partial maskall mask 中,我们还注意到,如果不保留 10%original token (即恒等映射),也会出现一致的下降。这表明完全使用 [MASK] token 的掩码的鲁棒性更差。

    • 令我们惊讶的是,完全放弃 [MASK] token ,而是将所有 90% masked token 替换成随机的单词,产生了比[MASK]-dependent 的掩码策略更一致的改进。这也强化了这样的说法:依靠 [MASK] token 的原始掩码方法导致了更差的性能,因为 [MASK] token 在微调任务中从未出现过。

      另外,使用随机单词而不是人工的 [MASK] token 可以提高预训练模型的降噪能力,这可能也是一个原因。

    • 为了使这个问题更加精细,在本文中,我们提出使用 similar word 来进行掩码,而不是一个随机的单词。因为随机的单词不符合上下文,可能会破坏语言模型学习的自然性naturalness ,因为传统的 N-gram 语言模型是基于自然的句子,而不是一个被操纵的句子。然而,如果我们使用 similar word 来进行掩码,句子的流畅性就比使用随机单词要好得多,整个任务就转化为一个语法纠正任务 grammar correction task ,这就更自然了,而且没有预训练阶段和微调阶段的差异。

      从下图中中我们可以看出,MacBERT 在四个变体中产生了最好的性能,这验证了我们的假设。

      如果要追求自然性,那么自回归语言模型要比带噪音的双向语言模型更有利。

22.3.3 中文拼写检查上的分析

  1. MacBERT 引入了 'MLM as correction' 任务,这与实际的语法或拼写错误校正任务相似。我们对中文拼写检查 Chinese Spell Check 任务进行了额外的实验。我们使用 SIGHAN-15 数据集来探索使用不同比例的训练数据时不同预训练语言模型的效果。

    SIGHAN-15 包括一个训练集( 3.1K 实例)和一个测试集 (1.1K 实例)。我们在这个实验中比较了 BERT-wwm-ext, RoBERTa-wwm-ext, ELECTRA-base, MacBERT-base ,因为它们共享相同的预训练数据。我们对每个模型进行了五次微调,并绘制了平均 F1sentence-level)。我们使用 5e-5 的通用学习率,训练 5epochbatch size = 64 。结果如下图所示,其中包括 detection-level 分、correction-level 分。可以看到:

    • 当使用不同比例的训练数据时,MacBERT 比其他模型产生了一致的改进,这表明 MacBERT 是有效的和 scalable 的。

    • 我们注意到 ELECTRA 在这项任务上表现不佳。具体而言,ELECTRA 和其他模型的结果,在 correction-level 的差距相对于detection-level 的差距更大。

      ELECTRA 使用 replaced token detection: RTD 任务来训练判别器(判别器将用于微调)。然而,RTD 任务只需要识别输入 token 是否被改变,而不需要预测 original token ,我们认为这很简单。相反,MLM 任务和 Mac 任务的目标需要同时 identify-and-correction

    • 通过比较 MLMMac ,我们的 MacBERT 缓解了预训练和微调之间差异的问题,这产生了另一个重要的收益。

    • 虽然 Mac 任务与拼写检查任务相似,但我们只使用同义词进行替换,这在真正的拼写检查任务中仅占很小的比例。这可以解释为什么当可用的训练数据较少时,我们的模型没有产生比其他模型更大的改进。

二十三、Fine-Tuning Language Models from Human Preferences [2019]

  1. 我们希望将强化学习应用于仅由 human judgment 所定义的复杂的任务,对于该任务我们只能通过询问人类来判断一个结果是好还是坏。要做到这一点,我们可以首先使用 human labels 来训练一个奖励模型 reward model ,然后优化这个模型。虽然通过互动从人类那里学习这种模型的工作由来已久,但这项工作最近才被应用于现代深度学习,即使如此,也只被应用于相对简单的模拟环境 simulated environments 。相比之下,真实世界的 setting (其中人类需要向 AI agents 指定复杂目标)很可能涉及并需要自然语言,其中自然语言是一种丰富的媒介来表达 value-laden 的概念。当 agent 必须与人类沟通从而帮助提供更准确的监督信号时,自然语言尤其重要。

    自然语言处理最近取得了实质性的进展。一种成功的方法是在无监督数据的语料库上预训练大型生成式语言模型,然后针对有监督的NLP 任务对模型进行微调。这种方法往往大大优于在监督数据集上从头开始的训练,并且在许多不同的监督数据集上,一个预训练的语言模型往往可以微调从而得到 SOTA 的性能。在某些情况下,不需要进行微调:GPT-2 发现,生成式预训练的模型在没有额外训练的情况下(即,zero-shot) ),在NLP 任务上显示出合理的性能。

    有大量文献将强化学习应用于自然语言任务。这些工作大多使用算法定义的奖励函数 reward functions ,如用于翻译的 BLEU 、用于摘要的 ROUGEmusic theory-based的奖励、或者用于故事生成的 event detectors

    • 《Reinforcement learning for bandit neural machine translation with simulated human feedback》BLEU 上使用强化学习,但应用了几个 error models 来近似 human behavior
    • 《Learning to extract coherent summary via deep reinforcement learning》 以及 《Towards coherent and cohesive long-formtext generation》 从现有文本中学习了 coherence model ,并将其作为强化学习奖励分别用于摘要和长篇小说的生成。
    • 《Preference-based interactive multi-document summarisation》 通过一次对一篇文章应用 reward learning ,建立了一个交互式的摘要工具。
    • 使用人类评价作为奖励的实验包括 《Reliability and learnability of human bandit feedback for sequence-to-sequence reinforcement learning》off-policyreward learning 用于翻译、以及 《Way off-policy batch deep reinforcement learning of implicit human preferences indialog》《Sequence tutor: Conservative fine-tuning of sequence generation models with kl-control》 修改后的 Q-learning 方法应用于对话中的隐式的 human preferences
    • 《Towards coherent and engaging spoken dialog response generation using automatic conversation evaluators》 从人类那里学习奖励来微调对话模型,但对奖励进行了平滑处理从而允许监督学习。
    • 我们参考 《A survey of reinforcement learning informed by natural language》 对涉及语言作为一个组成部分的强化学习任务的综述,以及使用从语言迁移学习的强化学习结果。
    • 强化学习并不是纳入持续的 human feedback 的唯一方式。 《Learning from dialogue after deployment: Feed yourself, chatbot!》 询问人类关于对话系统应该说些什么,然后继续监督训练。

    在论文 《Fine-Tuning Language Models from Human Preferences》中,作者将自然语言处理的预训练进展与 human preference learning 相结合。作者用 reinforcement learning 而不是 supervised learning 来微调预训练的语言模型,使用来自在 text continuations 上的 human preferences 训练的一个奖励模型 reward model。遵从 《Sequence tutor: Conservative fine-tuning of sequence generation models with kl-control》《Way off-policy batch deep reinforcement learning of implicit human preferences indialog》 之后,作者使用 KL constraint 来防止微调模型与预训练模型相差太远。

    作者将该方法应用于两类任务:以符合目标风格的方式续写文本 continuing text (无论是积极的情感还是生动的描述)、以及 CNN/Daily MailTL;DR 数据集的文本摘要。论文的动机是 NLP 任务,其中监督数据集不可用或数量不够,而且程序化的奖励函数(如 BLUE )对任务的真正目标来说是很差的代理 proxy

    对于风格延续 stylistic continuation5Khuman comparisons (每次选择 4continuation 中最好的一个)的结果是:

    • reinforcement learning 微调模型与 zero-shot 相比,人类在86% 的情况下优先选择reinforcement learning 微调模型的结果。
    • reinforcement learning 微调模型与被监督微调到情感分类网络相比,人类在 77% 的情况下选择reinforcement learning 微调模型的结果。

    注意,这里有两种微调:reinforcement learning 微调、supervised learning 微调。

    对于摘要,论文使用 60K 个人类标注的样本来训练模型,这些模型可以大致描述为 "smart copiers":它们通常从输入中复制整个句子,但改变它们复制的内容以跳过不相关的初始文本。这种复制行为是在数据收集和训练过程中自然出现的。作者没有像 《Get to the point: Summarization with pointer-generator networks》《Bottom-up abstractive summarization》 那样使用任何显式的架构机制进行复制。一种解释是,鉴于作者没有指示 labelers 惩罚 copying ,而是指示 labelers 惩罚 inaccuracy ,所以复制是一种容易的方式来实现 accurate 。这也可能反映了这样一个事实:即一些 labelers 将检查 copying 作为一种快速的启发式方法来确保摘要的准确性。事实上,相比于有监督的 fine-tuning baselines 甚至是human-writtenreference 摘要, human labelers 明显倾向于论文的模型,但是论文的模型反而比不过 lead-3 baseline (简单地拷贝文本的前三句话)。

    对于摘要,作者继续收集额外的数据,并随着策略的改善重新训练奖励模型(online data collection)。作者还测试了offline data collection,其中论文只使用原始语言模型的数据来训练奖励模型(而没有重新训练奖励模型)。离线数据收集大大降低了训练过程的复杂性。

    • 对于 TL;DR 数据集,human labelers71% 的情况下更喜欢用 online data collection 训练的策略。在定性评估中,offline model 经常提供不准确的摘要。
    • 相比之下,对于风格延续,作者发现 offline data collection 的效果同样很好。这可能与风格延续任务需要很少的数据有关。 《Learning to generate reviews and discovering sentiment》 表明:生成式训练的模型可以从很少的标记样本中学习情感分类。

    在同时进行的工作中, 《Better rewards yield better summaries: Learning to summarise without references》 也使用human evaluations 来学习摘要的奖励函数,并通过强化学习来优化该奖励函数。他们的工作对 CNN/Daily Mail 数据集上的学习策略函数和奖励函数进行了更详细的调查。

    而论文 《Fine-Tuning Language Models from Human Preferences》 对更通用地探索从 human feedback 中学习、以及更大的计算规模感兴趣。因此,作者考虑了几个额外的任务,探索了 on-policy reward model training 和更多数据的效果,并同时为 reward modeling 和强化学习来微调大型语言模型。

23.1 模型

  1. 我们以一个词表 V 和一个语言模型 ρ() 来开始,其中 ρ() 在一个长度为 ntoken 序列 x=(x0,,xn1) 上定义了分布概率:

    (22)ρ(x0,,xn1)=0k<nρ(xkx0,,xk1)

    我们将 ρ() 应用到一个任务,该任务的输入空间 X 为所有长度小于等于 mtoken 序列、输出空间 Y 为长度等于 ntoken 序列。定义 D 为该任务在输入空间 X 上的数据分布。例如:xX 可以是一篇最大长度为 1000 个单词的文章,yY 可能是一篇长度为 100 个单词的摘要。

    ρ() 通过 ρ(yx)=ρ(x,y)ρ(x) 为该任务定义了一个概率性的策略 policy :将样本的开头固定为 x,然后使用 ρ() 生成后续的 token

    这是一个强化学习策略,其中每个 action 可以视为生成一个 token,总的奖励等于 yhuman preference (即,人工标注是好、还是坏)。

  2. 我们初始化一个策略 πθ=ρ ,然后使用强化学习微调 πθ 从而顺利执行该任务。如果我们通过一个奖励函数来定义该任务,其中奖励函数为 r:X×YR,那么我们可以使用强化学习来直接优化期望的奖励 expected reward

    (23)Eπθ[r]=ExD,yπθ(x)[r(x,y)]

    然而,我们希望执行由 human judgments 定义的任务,在这种情况下,我们只能通过询问人类来了解奖励的情况。为了做到这一点,我们将首先使用 human labels 来训练奖励模型,然后优化该奖励模型。

    遵从 《Deep reinforcement learning from human preferences》 的做法,我们要求 human labelers 针对给定的输入 x 从若干个输出 {y0,y1,} 中挑选出最佳的 response 。我们要求人类在四个选项 {y0,y1,y2,y3} 中做出选择。考虑更多的选项可以使人类摊薄阅读和理解 prompt x 的成本。令 b{0,1,2,3}human labelers 的选择结果。在收集了一个由 (x,y0,y1,y2,y3,b) 的元组成的数据集 S 后,我们使用如下的损失函数来训练一个奖励模型 r:X×YR

    (24)loss(r)=E(x,y0,y1,y2,y3,b)S[logexp(r(x,yb))i=03exp(r(x,yi))]

    由于奖励模型需要理解语言,我们遵从 GPT-1 的做法,将奖励模型初始化为语言模型策略 ρfinal embedding output 的随机线性函数(对于为什么从 ρ 而不是 πθ 来初始化,参考后面的内容)。为了使奖励模型的 scale 在整个训练中保持一致,我们将其归一化为:针对 xD,yρ(x) ,奖励模型的输出的均值为零、方差为 1

    为什么从 ρ 而不是 πθ 来初始化?因为训练过程中会周期性重新训练奖励模型,每次重新训练奖励模型都需要对它进行初始化。如果选择 πθ 来初始化奖励模型 r(x,y) ,那么由于 πθ 在训练过程中不断更新、且 πθ 的更新过程依赖于 r(x,y) 的结果,因此造成一个 feedback loop,这不利于训练。

    注:读者猜测模型结构为 GPT-1 中的 Multiple Choice 。每个输入都添加了 start token <s>extract token <e> (也叫做 end token )。

  3. 现在我们强化学习微调 πθ 从而优化奖励模型 r 。为了防止 πθr 太远,我们增加了一个惩罚项 βKL(πθ,ρ),其中 KLKL 散度。可以参考 Table 10 来了解没有这个惩罚项的后果。即,我们在修改后的奖励上执行强化学习:

    (25)R(x,y)=r(x,y)βlogπθ(yx)ρ(yx)

    我们要么选择一个常数 β,要么动态地改变 β 以达到一个特定的 KL 值。

    这个惩罚项有几个目的:

    • 它起到了熵的作用。

    • 它可以防止策略 πθr 有效的范围太远。

      因为奖励模型是通过 ρ() 来初始化的,因此如果策略 πθ(yx) 距离 ρ() 太远,则奖励模型的评估结果可能失效。

    • 在我们的风格延续任务中,它也是任务定义的一个重要部分:我们要求人类评估风格,但依靠 KL 项来鼓励一致性 coherence 和主题性topicality

    奖励模型用于判定文本生成的好坏。有两种优化奖励模型的方式:

    • 监督微调:利用大量的带标记的文本来进行监督微调,此时每个被生成的文本需要评估一次(在整体上进行评估)。
    • 强化学习微调:利用一个预训练好的(或者微调好的)奖励模型来进行强化学习微调,此时每个被生成的文本需要被评估多次(每生成一个 token 就在已经生成的序列上进行评估,即使生成过程尚未完成)。
  4. 我们的整体训练过程是:

    • 通过 xD,yρ(x) 来收集样本 (x,y0,y1,y2,y3) ,并要求人类从每个样本中挑选出最好的 yi

      注意,前提是必须有一个预训练好的语言模型 ρ(x) 。这里的 D 不是预训练数据集,而是下游的目标任务数据集。

      注意,这里应该是 yπθ(x) ,因为奖励模型要对策略进行打分,而不是对预训练模型进行打分。但是,初始的策略 πθ 就是语言模型 ρ(x)

    • 初始化奖励模型 r(x,y)ρ(yx) ,对 rfinal linear layer 使用随机初始化,使用损失 loss(r)human samples 上训练 r(x,y)

      注意,这里的 label 来自于人工标注,即 human labelers 的选择结果 b{0,1,2,3}

    • xD 上采用奖励 R(x,y)=r(x,y)βlogπθ(yx)ρ(yx) 通过 Proximal Policy Optimization: PPO 来训练 πθ

      根据 InstructGPTPPO 的损失函数为:

      (26)objective(θ)=E(x,y)D[r(x,y)βlogπθ(yx)ρ(yx)]

      其中:

      • πθ 为学到的 RL 策略,θ 为策略的参数;ρ 为预训练好的语言模型。
      • D 为强化学习的数据分布,βKL 系数。
    • online data collection 的情况下,继续收集更多的样本(样本来自于更新后的策略 πθ),并周期性重新训练奖励模型 r(x,y)

    整体框架如下图所示。

    注意,根据下图所示,奖励模型的样本由 policy 函数 πθ 生成,而不是预训练模型 ρ(x) 生成。这是讲得通的,因为奖励模型要对策略进行打分,而不是对预训练模型进行打分。

23.1.1 预训练细节

  1. 我们使用 774M 参数版本的 GPT-2 语言模型,在GPT-2WebText 数据集、以及 50257tokeninvertible BPE (保留大写和标点符号)上进行训练。该模型是一个具有 36 层、20个头、 embedding size = 1280Transformer

    对于风格延续任务,我们在强化学习微调之前对 BookCorpus 数据集进行监督微调(语言模型):首先在 WebText 上从头开始训练,然后在 BookCorpus 上进行监督微调,最后对我们的最终任务进行强化学习微调。

    为了提高样本质量,我们在所有的实验中都使用了 T<1 的温度。我们通过将 logits 除以 T 来修改初始语言模型,这样,未来的 sampling 和强化学习在 T=1 的情况下对应于针对 unmodified pretrained model 的较低温度。

    这个 unmodified pretrained model 的较低温度是什么意思?论文未解释。

23.1.2 微调细节

  1. 监督微调:以预训练好的语言模型作为开始,我们使用 Adam 优化器来训练奖励模型,损失为 loss(r) 。风格任务的 batch size = 8、摘要任务的 batch size = 32,两者的学习率均为 1.77×105。我们使用单个 epoch 从而过拟合于 small amount of human data, ,并禁用 dropout

  2. 强化学习微调:对于策略 π 的训练,我们使用来自 《Openai baselines》Proximal Policy OptimizationPPO2 版本。我们使用 2Mepisodes(x,y0,y1,y2,y3,b)γ=1,每个 batch 有四个 PPO epoch ,每个 batch 有一个 minibatch ,其它超参数为默认值。我们对风格任务使用 batch size = 1024、对摘要任务使用 batch size = 512。我们在策略训练中禁用 dropout 。风格任务的学习率为 1.41×105、摘要任务的学习率为 7.07×106

    外层的 batch 对应于 (x,y)pair,内层的 minibatch 对应于 trajectory segment 长度 T 。我们对每个样本收集长度为 T 的轨迹,然后在这些轨迹上训练 4epoch

  3. 用不同的种子和相同的 KL 惩罚系数 β 训练出来的模型有时会有相当不同的 KL(π,ρ) 的值,使它们难以比较。为了解决这个问题,在一些实验中,我们使用对数空间比例控制器 log-space proportional controller 动态地改变 β 从而实现 KL(π,ρ) 的特定目标值:

    (27)et=clip(KL(πt,ρ)KLtargetKLtarget,0.2,+0,2),βt+1=βt×(1+Kβ×et)

    其中:

    • KLtarget 为指定的 KL 值,根据具体任务来指定。
    • Kβ 为反馈系数,我们使用 Kβ=0.1

    通过这种方式的调节,使得 KL(πt,ρ) 尽可能接近于 KLtarget

  4. 监督微调 baselines:我们在 CNN/Daily MailTL;DR 训练集上微调了 1epoch (对于 TL;DR,我们从训练集中删除了 30K 的样本作为验证集)。我们用cosine schedule 将学习率衰减到 0 。对于学习率的初始值,我们在 1043×104 之间在对数线性空间扫描了 8 个值 。我们还试验了不同的 dropout rate ,发现 dropout rate = 0.1 的效果最好。然后我们选择了具有最佳验证损失的模型。

23.1.3 Online data collection

  1. 如果训练后的策略 πzero-shot 策略 ρ 有很大的不同,那么奖励模型将遭受到一个大的分布漂移 distributional shift:在来自 ρ 的样本上训练、但是在来自 π 的样本上评估。为了防止这种情况,我们可以在整个强化学习微调过程中收集human data,通过从 π 中采样来不断收集新的数据,并重新训练奖励模型。如实验部分所示,online data collection 对摘要任务很重要,但对较简单的风格任务不重要。

    Online data collection 影响的是奖励模型(即,状态价值函数)。

  2. online 的情况下,我们将选择一个函数 l(n) ,该函数描述在开始第 nPPO episode 之前我们想要多少个标签。令 Ne=2×106PPO episodes 的总数,Nh0=l(0)human labels 的初始数量,Nhhuman labels 的总数。我们选择:

    (28)l(n)=Nh0+(NhNh0)(1(1nNe)2)
    • 如果我们的标签少于 l(n) 个,我们在第 nPPO episode 之前暂停。
    • 如果到目前为止的总请求数少于 l(n)+1000 ,我们就向labelers 发送另一个 batch 的请求,以确保他们在任何时候都有至少 1000 个未完成的 query

    我们在第一个 PPO episode 之前训练奖励模型,然后在均匀间隔的 l(n) 值下重新训练 19 次。每次重新训练时,我们将奖励模型 r 重新初始化为 ρ 顶部的一个随机线性层,并通过迄今为止收集的标签训练单个 epochoffline 情况是一种极端情况:Nh=Nh0

    l(n) 是经过 (0,Nh0)(Ne,Nh) 这两个点的二次函数,重新训练奖励模型 r 的点位于:human labels 总数分别为:Nh0+120×(NhNh0),Nh0+220×(NhNh0),

    注意:奖励模型 r 的样本不仅来自于最新的策略、还来自于历史策略、以及来自于初始的预训练模型 ρ ,因为每次重新训练奖励模型,我们都用历史所有的 human labels 来训练。

  3. 为了估计总体进度,我们以恒定的速度收集由 xD;y0,y1ρ(x);y2,y3π(x) 组成的验证样本。这些样本上的 human labels 给出了 π 胜过 ρ 的频率。由于验证样本只用于评估当前的 π ,我们可以把它们加入到奖励模型 r 的训练集中。

    为了估计 labeler-labeler 之间的一致性,5%query 由不同的labeler 回答 5次。实验部分的 label 计数包括验证样本和重复标签。

23.1.4 人类标注

  1. 我们使用 Scale AI 来收集标签。Scale API 接受形式为 (x,y0,y1,y2,y3) 的请求,并返回选择 b{0,1,2,3}。我们通过指令(如下图所示,来自论文附录 A )、以及本文作者提供的大约 100 个样本的 comparison 数据集的组合向 Scale AI 描述任务。

  2. 与机器学习中的许多任务不同,我们的 query 没有明确的 ground-truth ,特别是对于 similar outputspair (这在我们的训练过程中起了很大的作用,因为我们在从单个策略 πθ 中抽样的 label pair 上训练奖励模型 r )。这意味着,即使是对任务有类似理解并试图进行一致评级的 labelers 之间也存在着重大分歧。

    • 在情感分类和 TL;DR 摘要的 4-way comparisons 中,本文作者之间有 60% 的时间达成一致(与随机猜测的 25% 相比)。这种低的一致率使 Scale AI 的质量控制过程变得复杂。
    • 在情感分类方面,本文作者与 Scale labelers 的一致率为 38%
    • TL;DR 摘要方面,作者本文与 Scale labelers 的一致率为 46%

    针对 comparision 的标注带有很大的主观性,因为每个人对于什么是好的、什么是生动的、什么是客观的等等这些评价标准的理解都不同。

  3. 人类数据收集和质量评估的细节(来自论文附录 B):我们的质量保证过程是由 Scale AI 处理的。由于我们最初认为 online data collection 将是至关重要的,即使是离线实验也是在这种快速周转的要求下收集的。在未来,我们计划使用一个更宽松的延时要求。

    数据收集的第一步是把任务教给少数受信任的 Scale labelers ,给他们一个任务的描述(如前文所述)。Scale AI 使用这些 labelers 收集大量的 benchmark 数据点(从 ρ 的一大批 unlabeled 的数据点中),在这些数据点上,几个受信任的labelers 达成了一致。在完整的数据收集过程中,Scale AI 将这些 benchmark 数据点与真实的未标记数据一起提供给 freelance workers 进行训练(当 π=ρ 时,这两类数据是无法区分的,尽管它们在训练过程中确实变得可以区分),为每个 labelerbenchmark 分布上的表现维持一个confidence model 。判断数据点是来自 benchmark 还是来自真实的未标记数据,这个概率在各种因素上动态变化,如对 labeler 正确标记某个类别的信心。在 benchmark 任务上表现不佳的 freelance workers 会被过滤掉。此外,Scale AI 随着时间的推移对质量控制进行临时改进,有时通过与本文作者的少量 gold-standard labels 进行比较来验证质量。

    我们在事后评估了其中两个任务的数据质量。在所有的数据收集过程中,有 5%query 是由 5 个不同的 labelers 回答的。我们从这些 query 中采样 100 个(仅限于从 ρ 产生的 query ),让两名作者给每个 query 进行标注。基于这些数据,我们估计了本文作者和 Scale labelerslabeler-labeler 、以及 author-author 之间的一致率,如下表所示。

    早期的版本要求 labelers 进行 1-10 的评分。在最好的情况下,每个 labeler 提供了更多的信息,但很难衡量 labeler 的表现:

    • 归一化是必要的,因为两个好的 labelers 往往会有一个(噪音的)monotonic transform

      例如,labeler A 的评分比较保守,评分集中在 1~8 分;labeler B 的评分比较激进,评分集中在 5 ~ 10 分。那么同样是 7 分,对于这两个 labeler 是不同的含义 。

    • 如果许多分数集中在几个数值上(例如 78 ),简单的策略 π 就能骗过过滤过程。

      此时策略 π 只需要维持不变就可以获得较高的得分,因为强化学习微调没有见过更高的得分、也没有见过更低的得分,它不知道什么是更好的行为、也不知道什么是更差的行为。

    • 绝对分数也倾向于在训练过程中漂移,因为 labelers 会根据变化的策略 π 中新的样本分布进行调整。

      因为策略 π 会在迭代过程中越来越好,所以它生成的样本的质量也越来越高。

    寻找高质量的workers 涉及到 human answering 质量控制问题,质量控制在我们的实验中没有使用,并移除了低质量 workers 的数据。因此,实验的总人力成本要比我们实际使用的标签数量(也就是我们报告的内容)高一些。对于一个短期的 training run 来说,这很容易支配实际的标签要求,尽管它可以通过识别持续的good workers 在几个任务中摊销。对于我们较长的training run ,额外的标签数量并不高。

  4. 对于两个模型 AB 的最终评估,我们产生了 pair (aA,bB) 之间的 2-way comparisons 、或者 pair (a0,a1A,b0,b1B) 之间的 4-way comparisons 。我们随机调整样本的呈现顺序,并将这些comparisons呈现给 Scale AI

    Scale AI 的同一组人类来评估 由 Scale AI 训练的模型的质量是很危险的:它表明奖励 r 和策略 π 已经成功地适应了 human reward,但并不表明这些 human evaluations 捕获到了我们真正关心的东西,并且我们的模型被激励去利用标注过程的特质。我们包括我们的模型的样本,以便读者可以自己判断。

    也就是说:最终评估的人、训练过程中标注的人,他们是同一波人。这类似于在训练集上进行评估。

    理论上,应该使用训练过程中的标注人员之外的人来进行评估,但是这样做的成本比较高。

23.2 实验

  1. 首先,我们通过使用 mock labeler (在评论分类问题上训练的情感模型)作为 human labels 的替身来测试我们对语言模型进行强化学习微调的方法。我们表明强化学习微调可以有效地优化这个复杂的、但一定程度上人造的奖励。

    然后,我们表明我们可以用很少的数据从人类对风格延续任务(情感和物理描述性)的偏好中优化语言模型,在情感的情况下,结果优于优化 review sentiment model

    接着,我们将强化学习微调应用于 CNN/Daily MailTL;DR 数据集的摘要任务,表明所得到的模型本质上是 "smart copiers",并在其他摘要工作的背景下讨论这些结果。

    我们发布了offline data 情况下的奖励建模和微调的代码。我们的公开版本的代码只适用于一个较小的 124M 参数模型,有12层,12 个头, embedding size = 768。我们包括这个较小模型的强化学习微调版本,以及我们为主要实验收集的一些 human labels(注意,这些标签是从使用较大模型的运行中收集的)。

23.2.1 风格延续任务

  1. 我们首先将我们的方法应用于风格化的文本延续任务,在这个任务中,策略需要对来自 Book-Corpus 数据集的节选来生成文本的continuation。奖励函数会自动或根据 human judgments 来评估continuation文本的风格。我们采样长度为 3264token 的节选,该策略生成 24 个额外的token 。如前所述,我们将预训练模型的温度设置为 T=0.7
a. Mock 情感分析任务
  1. 为了在受控环境下研究我们的方法,我们首先应用它来优化一个已知的奖励模型 rs,该任务被设计来反映 human judgments 的一些复杂性。我们通过在 Amazon review 数据集的一个二元平衡子集上训练一个分类器从而构建奖励模型 rs 。该分类器预测评论是正面的还是负面的,并且我们将 rs(x,y) 定义为评论是正面的对数几率 log odds (即,final sigmoid layer 的输入)。

    在没有约束的情况下优化 rs 会导致策略产生 incoherent continuations ,但如前所述,我们包括一个 KL 约束,迫使它靠近基于 BookCorpus 上预训练的语言模型 ρ

    我们的方法的目标是只使用少量的 human queries (即,人类标注数据)来监督微调 rs(x,y)。此外,我们询问需要多少次 query 来优化 rs

    注意,mock 情感分析任务的目标是获得良好的情感分类模型(即,奖励模型 rs ,它在 Amazon review 上已经微调过)。有两种方式可以获得:

    • 利用强化学习直接优化奖励模型 rs

      此时通过策略 π 来生成text continuation,然后通过奖励模型 rs 来打分从而选择正面情感的 continuation

    • 利用监督微调来通过人类标注数据来优化 rs

    在使用强化学习直接优化奖励模型 rs 、或有限数量的 query 来训练一个奖励模型的情况下,下图显示了 rs 在训练过程中的演变情况。20k60kquery 允许我们优化 rs ,其效果几乎和使用强化学习直接优化 rs 一样好。

    监督微调的奖励模型也有 reward,虽然它不是强化学习,但是根据定义,reward 是:文本是正面的对数几率 log odds

  2. 因为我们知道奖励函数,我们也可以分析计算出最优策略,并将其与我们学到的策略进行比较。在对所学到的策略 π 和语言模型 ρ 之间的 KL 散度 KL(π,ρ) 的约束下,最优策略的形式是:

    (29)πopt(yx)ρ(yx)×exp(rs(x,y)β)

    对于给定的 xβ,我们通过从 ρ(yx) 中采样大量的 continuations ,并通过 exp(rs(x,y)β) 对它们进行重新加权,从而近似计算这个策略的奖励。

    下图比较了我们的策略获得的奖励、以及在一个范围的 KL 值之间估计的最优奖励。在对 2Mcontinuations (我们的主要实验中使用的数字)之上训练策略之后,我们的策略获得的奖励与最佳奖励之间有很大的差距,但随着更多的训练(64M episodes )这种差距基本上被消除。

    我们的策略在较大的KL 散度中继续获得更高的奖励,在这种情况下我们不能通过采样来近似选择 πopt

    因为此时 πρ 的分布差异较大,从 ρ 中采样的样本无法代表策略 π 的分布。

b. 人类对 continuation 的评估
  1. 我们将我们的方法应用于由 human judgments 定义的两个 continuation 任务:

    • 情感:人类被要求奖励 "positive and happy"continuation
    • 描述性:人类被要求奖励 "vividly descriptive"continuation

    human labelers 会收到 BookCorpus 数据集的一份节选、以及四个可能的 continuations 。他们被要求选择最佳 continuations 。论文附录 A 提供了针对 labelers 的完整指令(因为 labelers 也从论文作者标注的大约 50comparisons 中学习,所以任务并不完全由指令来定义)。

  2. 为了标注任务更加自然,我们选择以句号开始和结束的节选。当采样 continuations (这些采样的结果交给人类来判断),我们使用 rejection sampling 来确保有一个句号在 token 长度为 16 ~ 24 之间,然后在这个句号截断。在强化学习微调期间,我们通过采用固定的奖励 -1 ,从而对没有这样一个句号的 continuations 施加惩罚。

    我们通过动态调整 β 从而为 descriptiveness 任务获得 6 natKL 散度、为sentiment 任务获得 10 natKL 散度。

    我们使用不同数量的 feedback 训练了一系列的模型,同时测试了 offline data collection (其中人类只对初始语言模型的 continuation 进行评分)、以及online data collection(其中人类不断对当前策略的 continuations 进行评分)。然后,我们将这些不同的策略相互比较,并与原始语言模型的 zero-shot 性能进行比较。

    offline data collection 的情况下,奖励模型仅训练一次;online data collection的情况下,奖励模型会周期性地重新训练(在截至到当前时刻的所有 human judgments 数据上)。

  3. 结果显示在下图和下表中。每一对 model 之间的评估都是基于 10244-way continuation comparisons ,每个模型都包含两个样本,然后不同模型之间的 comparision 进行两两比较,每个评分都由 3 个人进行。

    对于两个模型 AB 的评估,我们产生了 pair (a0,a1A,b0,b1B) 之间的 4-way comparisons

    对于这些 continuation 任务,我们发现:

    • offline data collectiononline data collection 给出了相似的性能(在情感指标上相等,在描述性指标上在线方式要略好)。

      human feedback 的数据量是关键,而 offline 还是 online 收集方式倒不是特别关键。

    • 强化学习微调所需的 human data 很少:5k, 10k, 20k 奖励模型的训练样本的性能相似,只在少于 5k 的样本中出现性能退化。

    • 使用评论情感分类器训练的模型(如前文所述,即下图中的 mock )相对于使用 human preference 优化的模型表现较差:在 77% 的情况下,labelers 更喜欢使用 real human feedback 训练的模型的输出。

23.2.2 摘要

  1. 我们还将我们的方法应用于两项摘要任务:CNN/Daily Mail 数据集、TL;DR 数据集。

  2. 我们采样文章或 Reddit 帖子,截断为 500token ,添加 "\n\nTL;DR:" 后缀(对于 CNN/Daily Mail 则添加 "Article:\n\n" 前缀),并让策略响应最多 75token

    我们将 CNN/Daily Mail 的预训练模型的温度设置为 T=0.5TL;DR 的预训练模型的温度设置为 T=0.7

    为了使任务对人类来说更自然,我们通过截断最后一个换行符来确保文章由整句组成。当采样summary 时(这些摘要需要展示给人类),我们使用rejection sampling 来确保有一个换行符在长度为 5575token 之间,并在换行符处截断。在强化学习微调过程中,我们对没有换行符的摘要进行惩罚,给它们一个固定的 -1 的奖励分。

    对于 CNN/Daily Mail ,我们使用固定的 KL 系数 β=0.1;对于 TL;DR ,我们我们使用固定的 KL 系数 β=0.03

  3. 我们的方法以及 baseline

    • 强化学习微调:我们用 15k, 30k, 60khuman labels 训练了 online data collection 的模型,并用 60k 标签训练了 offline data collection 的模型。
    • 预训练模型的 zero-shot
    • 监督微调:使用相同的预训练模型作为初始化的监督微调模型。
    • 复制上下文的前三句话的 lead-3 baseline 。我们相同的方式将 lead-3 截断在句号(参考前面关于截断所生成的摘要的描述),所以 lead-3 结果偶尔是两句话。
    • 最后,我们把监督微调和强化学习微调结合起来:从监督微调模型开始进行人类强化学习微调,即 supervised+RL

    纯粹的强化学习微调模型在训练过程中使用数据集的上下文,但忽略了reference 摘要;监督微调和supervised+RL 模型同时使用上下文和 reference 摘要。

    我们报告了两组数字结果:CNN/Daily Mail (测试集) TL;DR (验证集)上,model pair 之间human evaluations 结果(Table 5)、以及 ROUGE 结果(Table 4)。

  4. 根据 Table 4ROUGE 指标的结果表明:

    • 与我们的风格延续任务相比,online data collection 对最佳性能很重要。在固定的标签数量下,online data collection 往往比offline data collection 更好,其中在 60k 个标签时,CNN/DMR-AVG 增益为 3 个点。

    • 在这两个数据集上,我们看到数据量在 60khuman labels 之前的显著回报(尽管 human evaluation 的趋势不太明显)。

      CNN/Daily Mail 数据集上,数据量的效果为 15k > 60k > 30k ,有点奇怪?

    • 在这两个数据集上,supervised+RL 微调是最好的,事实上,根据 ROUGE ,纯强化学习微调在所有情况下都比 supervised baseline 更差(尽管 supervised baseline 使用完整的监督训练数据集,这比 60k 样本大得多)。

    • Lead-3 很难被打败:它是 CNN/Daily MailR-1R-2 指标的最佳模型,只有 supervised + RL 微调在 R-LR-AVG 指标上打败它。

    60k/30k/15k fine-tune60k offline fine-tune 指的是强化学习微调模型。

  5. 但我们的目标是优化人类定义的奖励而不是 ROUGETable 5 显示了根据 human labelersmodel pairspairwise comparisons ,使用1024 个样本,每个样本有 3labelers 进行多数投票。这里的结果与 ROUGE 是不同的,尽管也有明显的噪音:

    • 我们的online data collection 训练,60k 个标签的强化学习微调模型可靠地击败了zero-shotsupervised baseline ,甚至击败了supervised + RL 微调模型。

    • online data collection 训练仍然很重要,但在数据量方面的情况不太清楚,而且可能受到噪音的影响:例如,60kTL;DR 模型只有 40% 的时间能击败 30k 的模型,但是在 79% 的时间上击败了 15k 的模型。

      更令人担忧的是:

      • TL;DR 数据集上,60konline data collection 模型在 96% 的时间内击败了 human ground truth(即 reference )。
      • CNN/Daily Mail 数据集上,60konline data collection 模型在 84% 的时间内击败了 human ground truth

    这到底是怎么回事?正如我们在下一节中所展示的,我们的60k 的强化学习微调模型几乎完全是extractive 的(尽管我们的模型缺乏任何显式的 extractive 的架构组件 ):它主要是从上下文中拷贝整个句子,但是对于哪个句子被拷贝,则有所变化。

23.2.3 我们的模型拷贝什么

  1. 以前在摘要方面的许多工作都集中在显式的拷贝机制上,包括 《Get to the point: Summarization with pointer-generator networks》pointer network-based 的架构、以及 《Bottom-up abstractive summarization》 的两阶段 maskparaphrase 方法。我们的目标是利用拷贝的优势(这对摘要任务具有根本的重要性),而不仅仅是拷贝:任务是 abstractive 的而不是 extractive 的。Figure 5Figure 6显示了我们的模型所分别产生的新颖的和重复的 n-grams/sentences 的比例。

    • 从新颖性方面,我们看到我们的强化学习微调一直导致模型更多的拷贝(即,从 input 文本中拷贝内容作为摘要)。

      具体而言,我们的 60k 的强化学习微调模型几乎完全是 extractive 的:在 TL;DR 中,它们有 71% 的时间拷贝整个句子;在CNN/Daily Mail 中,它们有 98% 的时间拷贝整个句子。

      从监督的微调模型开始应用强化学习微调(即,supervised + 60k fine-tuned ),其拷贝率要低得多:TL;DRCNN/Daily Mail 分别为 6%30%

    • 在重复性方面(即,摘要中的句子出现多次),虽然我们没有像 《Get to the point: Summarization with pointer-generator networks》《Bottom-up abstractive summarization》 那样使用明确的覆盖率 coverage 指标,但监督微调模型和强化学习微调模型在摘要中的重复率都很低。

  2. 虽然纯粹的强化学习微调模型大多是拷贝文本,但它们拷贝的地方不同。下图通过上下文和摘要之间最长公共子序列的位置说明了这一点。

    为了了解模型何时从 exact beginning 拷贝,我们确定了文章中常见的前导句 preamble (如,以 'hi', 'hello','hey', 'ok', 'okay', 'so' 这样开头的句子),这样我们就可以预期拷贝是一个糟糕的策略。下表显示,这些前导句被拷贝的频率远远低于其他文章的立即开始 immediate beginning ,这证明我们的模型在何时拷贝方面很聪明。然而,我们不能确定我们的奖励模型除了奖励拷贝之外还很聪明,因为 zero-shot 模型也跳过了前导句。

    几乎所有的 baseline 都跳过了前导句。

  3. 既然结合监督微调和强化学习微调(即,supervised + 60k fine-tuned)可以得到最好的 ROUGE 分数,而且也更 abstractive ,为什么不使用它呢?不幸的是,下表中显示纯拷贝有一个好处:它使模型很容易 tell the truth

    注意,摘要的准确性是由人工判断的。

    • 拷贝最多的模型,60k 的监督学习微调模型,在 TL;DRCNN/Daily Mail 上的准确率是 90%95% 。从文章中抽取整个句子通常会让它们是 true 的。

    • 监督微调模型和 supervised+RL fine-tuned 的组合模型最多只有 70% 的准确率:它们转述但转述得很糟糕,经常从上下文中交换名称、或以无效的方式将多个句子混合在一起。

      即,这些模型编造事实的可能性更大。

    • zero-shot 是最新颖的,但只有 20% 的时间是准确的。同样,《Neural text summarization: A critical evaluation》 发现,他们测试的监督的摘要模型中有 30% 的样本包含不一致 inconsistency 。而 《Sample efficient text summarization using a single pre-trained transformer》发现,他们预训练的 encoder-decoder 模型 "hallucinates facts...which are topical but never appear in the source"

    根据这里的结论:拷贝的方式来生成摘要,在准确性方面要更可靠一些。

  4. 对这些结果至少有两种解释方式:

    • 第一种解释是,拷贝是最容易做到准确的方法。labelers 被告知要惩罚不准确和冗余,但没有被告知要惩罚拷贝。 zero-shot 模型在某些时候会拷贝,而当它拷贝的时候是准确的,所以这种行为被强化了(因为被 labelers 所标注的第一批样本就是来自于 zero-shot 模型)。结果是一个 "degenerated to copying" 的模型,但至少不会撒谎。

    • 然而,这并不能解释为什么相比于 reference 摘要,我们的模型和lead-3都被 labelers 所强烈偏好(Table 5)。这揭示了我们希望我们的模型学习的质量概念、和 humans labelers 实际评估的质量概念之间的不匹配。

      由于 online data collectionsetting 使得质量控制更加困难,我们未能发现和惩罚拷贝这种行为。

23.3 挑战

  1. 最后,我们总结了一些经验和方向,计划在未来的reward learning 工作中考虑。

  2. online data collection 是困难的:为了在摘要任务上取得最佳效果,online data collection 是必要的。然而,完全的online data collection (其中每个标签都来自最新版本的策略,而该策略已经从 previous 的几乎所有标签中学习而来)有很大的缺点:

    • 软件的复杂性:我们的online system 将数据收集、奖励模型训练、和强化学习微调交错进行。由此产生的分布式系统比每项任务单独进行要复杂得多,减缓了软件开发的进程。此外,任何一个任务中的 bug 都会破坏整个训练过程。
    • 机器学习的复杂性:在线实验很难调试,因为它很难一次在机器学习系统的一个部分上迭代。 我们往往只能通过短暂地切换到离线来调试一个在线工作,例如启动一个独立的奖励模型的 training run ,但一旦调试完成,就会切换回在线(直到下一个周期)。
    • 质量控制问题:在labelers 部分需要做大量的工作,使他们的数据质量机制在低延迟的在线环境中发挥作用。然而,即使在这项工作完成后,也很难在很长一段时间内保持高的数据质量,而且往往在训练完成后(或很久以后)才发现退化。由于对 labeler 性能的评估是在线的,当一个工人被检测出有问题时,他们的一些数据可能已经被上报回来并用于奖励模型的训练。

    我们相信,在offline data collectiononline data collection 之间的正确中间地带是 batched data collection ,并计划在未来的工作中使用这种设置:

    • 从预训练的策略 ρ 中收集一个 batch 的数据,在这批数据上训练奖励模型 r ,然后在 r 冻结的情况下微调策略 π
    • 一旦这些都完成了,收集另一个 batch 的从 π 采样的数据,并进行迭代。

    每个 batch 数据的延迟可能远远长于 online data collection ,但是简化了质量控制。如同在完全 online data collection 的情况下,我们总是可以在迄今为止收集的所有数据上从头开始重新训练奖励模型。human data 很昂贵,所以总量会很低。移除 rπ 的交错训练,简化了软件架构和机器学习问题的诊断,如果出现问题,可以只对一个组件(比如说独立的 r )进行迭代。《Dialogue learning with human-in-the-loop》 在仿真中验证了 oneline data collectionbatched data collection 训练的性能相似后,在一个受限的对话的 setting 中得出了类似的结论。

    batch data collection 的情况下,也是数据收集、奖励模型训练、和强化学习微调交错进行,和 online data collection 有什么区别?

    感觉唯一的区别是这里是 batch 粒度的数据收集,因此如果人工标注的数据有问题,可能就影响这单个 batch 而已,而且更快地被发现。

    在下一篇论文 《Fine-Tuning Language Models from Human Preferences 》 中,OpenAI 转向了 batch data collection

    batched data collection 也是 active learning 技术的一个被充分研究的 setting 。虽然我们使用强化学习来微调策略 π,但 human data 只用于奖励模型 r 的监督训练。因此,任何用于 batch mode active learning 的监督模型的方法都适用,使用 π 作为 runlabeled data distribution 。这类技术的例子包括:

    • selecting batches based on entropy considerations《Discriminative batch mode active learning》)。
    • 基于梯度的指标(《Active learning for speech recognition: the power of gradients》《Deep batch active learning by diverse, uncertain gradient lower bounds》)。
    • 通过尝试区分标记的和未标记的样本(《Discriminative active learning》)。
  3. 奖励模型和策略之间共享参数导致过拟合:虽然奖励模型和策略都被初始化为 ρ ,但我们将它们作为独立的网络进行训练,而不是一个具有多个头的单个共享网络。我们可能期望联合训练是有帮助的,有效地将强化学习作为一个辅助任务来提高奖励模型的性能。联合训练特别有吸引力,因为它可以帮助奖励模型保持足够强大。共享也可以提高计算效率,因为它允许模型共享激活,而不是要求两个单独的前向传播。

    尽管做了几次尝试,我们还是没能使这个想法成功。问题来自于数据的巨大不平衡:我们的奖励模型最多只有 60k 个样本,但策略却有 2Mepisodes 。这使得在不对奖励模型进行许多 epochs 和过拟合的情况下保持这两项任务的性能成为挑战。我们希望未来的工作能够克服这一挑战。

  4. 含糊不清的任务使标注工作变得困难:我们的一个代码重构引入了一个 bug ,该 bug 翻转了奖励的符号。翻转奖励通常会产生不连贯的文本,但同一个 bug 也翻转了 KL惩罚项的符号。结果是一个对负面情绪进行优化的模型,同时仍然对自然语言进行规范化。

    由于我们的指令告诉 labeler 要给显式带有性 sex 的文字的continuations 以很低的评价,模型很快就学会了只输出这种形式的内容。这个 bug 很了不起,因为其结果不是胡言乱语,而是最大限度的毒性输出。本文作者在训练过程中睡着了,所以这个问题在训练结束后才被发现。像丰田的 Andon cord 这样的机制可以防止这种情况的发生,因为它允许任何 labeler 停止有问题的训练过程。

    丰田的安灯拉绳 Andon cord 机制:在发现质量和其他问题时,一线员工被授权通过执行 AndonCord (即,拉动手边的叫做安灯拉绳的绳子)来停止生产从而及时止损。

二十四 Learning to summarize from human feedback[2020]

  1. 为了在各种自然语言处理任务上实现高性能,大型语言模型预训练已经变得越来越流行。当把这些模型应用于一个特定的任务时,人们通常使用监督学习对它们进行微调,通常是最大化针对 human demonstrations 数据(即,人工标注的标签)的对数似然 log likelihood

    虽然这种策略导致了性能的明显提高,但在这种微调目标(即,最大化 human-written 文本的似然)与我们所关心的目标(即,生成人类判定的高质量的输出)之间仍然存在着 misalignment 。这种 misalignment 有几个原因:

    • 最大似然maximum likelihood 目标没有区分重要的错误(如编造事实)和不重要的错误(如从一组同义词中选择最精确的词)。
    • 模型被激励 incentivized 从而将概率质量放在所有 human demonstrations 上,包括那些低质量的 human demonstrations
    • 采样期间的分布漂移 distributional shift 会降低性能。

    通过非均匀采样策略(如,beam search)通常可以大大改善质量,但这些策略会导致 repetition 和其他不受欢迎的人造品 artifacts 。对质量进行优化可能是克服这些问题的原则性方法。

    论文 《Learning to summarize from human feedback》 的目标是:推进某些目标上训练语言模型的方法,其中这些目标能够更紧密地抓住我们所关心的行为。为了在短期内实现这一目标,论文专注于抽象式 abstractive 的英文文本摘要,因为它在NLP 界有着悠久的历史,而且是一项主观的任务(作者认为很难量化摘要的质量,因为没有human judgments )。事实上,现有的评估摘要质量的自动化指标 automatic metrics (如, ROUGE)由于与 human judgments 的相关性差而受到批评。

    论文遵从 《Better rewards yield better summaries: Learning to summarise without references》《Fine-tuning language models from human preferences》 的工作,他们利用奖励学习 reward learning《Tuning recurrent neural networks with reinforcement learning》)从human feedback 中微调语言模型:

    • 首先收集 summary pairhuman preferences 数据集。
    • 然后在这个 human preferences 数据集上通过监督微调学习训练一个奖励模型reward model : RM 来预测 human-preferred 的摘要。
    • 最后,通过强化学习reinforcement learning: RL 训练一个策略从而最大化奖励模型的评分。该策略在每个 "time step" 生成一个文本 token ,并根据奖励模型给整个 generated summary 的 "奖励"从而使用 PPO 算法(《Proximal policy optimization algorithms》)来更新策略。
    • 然后可以使用 resulting policy 的样本来收集更多的 human data ,并重复这个过程。

    论文遵从 GPT-3 的工作,使用大型预训练的 GPT-3 模型,参数多达 6.7B

    论文的主要贡献有四个方面:

    • 作者表明,在英语摘要方面,有human feedback 的训练明显优于非常强大的 baseline 。当在 Reddit TL;DR 数据集的一个版本上应用论文的方法时(如下图所示):

      • 通过human feedback 训练的策略比通过监督微调学习训练的更大的模型(下图中的supervised learning)产生更好的摘要。
      • 相比较于数据集中的原始human demonstrations (下图中的 reference summaries ),labelers 更喜欢来自 human feedback models (即,human feedback 训练的策略)的摘要。

    • 论文表明:human feedback models (即,human feedback 训练的策略)对新领域的泛化性比监督微调模型好得多。作者在 Reddit 训练的 human feedback models 也在 CNN/DailyMail: CNN/DM数据集上生成了高质量的新闻文章摘要而无需任何针对新闻的微调,几乎与该数据集的reference summary 的质量相匹配。作者进行了若干检查,从而确保这些 human preferences 反映了真正的质量差异:作者持续监测 labelersresearchers 之间的一致率 agreement rate ,发现 researcher-labeler 的一致率几乎和 researcher-researcher 的一致率一样高(见论文附录 C.2),并且作者验证了模型不仅仅是在针对长度或 amount of copying 等简单指标进行优化(见论文附录 FG.7)。

    • 论文对所提出的策略模型和奖励模型进行了广泛的经验分析。作者检查了模型大小和数据大小的影响,研究了继续优化一个给定奖励模型时的性能,并使用合成 synthetic 的和 human-written 的扰动摘要来分析奖励模型性能。作者确认,所提出的奖励模型在预测human preferences 方面优于其他指标(如 ROUGE),而且优化奖励模型直接导致了比优化 ROUGE 更好的摘要。

    • 论文公开发布了 human feedback 数据集,以供进一步研究。该数据集包含 64832 个关于 TL;DR 数据集的 summary comparisons ,以及论文对 TL;DRcomparisonsLikert score )和 CNN/DMLikert score )的评估数据。

    作者在论文中提出的方法,部分是出于对人工智能系统与人类希望它们做的事情之间的 misalignment 的长期关注。当 misaligned summarization model 编造事实时,它们的错误是相当低风险的,而且容易被发现。然而,随着人工智能系统变得更加强大,并被赋予越来越重要的任务,它们所犯的错误可能会变得更加微妙和 safety-critical ,这使得这是一个需要进一步研究的重要领域。

  2. 相关工作:

    • 与我们的工作最直接相关的是以前使用 human feedback 来训练带强化学习的 summarization models 的工作《Better rewards yield better summaries: Learning to summarise without references》《Fine-tuning language models from human preferences》

      • 《Better rewards yieldbetter summaries: Learning to summarise without references》2.5khuman ratingsCNN/DM 摘要数据集中学习奖励函数,并训练一个比优化 ROUGE 指标更好的、用于摘要的策略。

      • 我们的工作与《Fine-tuning language models from human preferences》 最为相似,他们也训练 Transformer 模型来跨一系列任务来优化 human feedback ,包括在 Reddit TL;DRCNN/DM 数据集上的摘要。

        与我们不同的是,他们以online 的方式进行训练,并发现该模型具有高度的 extractive 。他们指出,他们的 labelers 更喜欢抽取式摘要 extractive summaries ,与 researchers 的一致率很低。与他们相比,我们使用了大得多的模型、转向针对 collecting human feedbackbatch setting 、确保 labeler-researcher 的高度一致、并做了一些算法上的修改(如分离策略网络 policy network 和价值网络 value network )。

    • human feedback 也被用作奖励来训练其他领域的模型,如对话、翻译、语义解析、故事生成、评论生成、以及证据抽取 evidence extraction

      我们的 reward modeling 方法是在先前关于 learning to rank 的工作中发展起来的,其中 learning to rank 已被应用于使用显性反馈或隐性反馈(以点击数据的形式)对搜索结果进行排名。

      在一个相关的研究方向中,human feedback 被用来在模拟环境中训练 agents 。还有大量关于使用强化学习来优化 NLP 任务的 automatic metrics 的文献,例如用于摘要的 ROUGE 指标、用于翻译的BLEU 指标,以及其他领域的一些指标。

    • 最后,关于修改架构和预训练程序以提高摘要性能的研究也很广泛。

24.1 模型

24.1.1 Higl-level 方法论

  1. 我们的方法类似于《Fine-tuning language models from human preferences》中概述的方法,适配于 batch setting 。我们从一个初始策略开始(注意,一个策略意味着一个模型),该策略在目标数据集(在我们的例子中为Reddit TL;DR 摘要数据集)上进行监督学习的微调。然后,这个过程包括三个步骤,可以反复进行,如下图所示。

    • step 1:从现有策略中收集样本,并将 comparisons 发送给人类。对于每个 Reddit 帖子,我们从几个来源来采样摘要,包括当前策略、初始策略、原始的 reference summary 、以及各种 baseline。我们将一个 batchsummary pair 发送给我们的human labelers ,他们的任务是选择给定 Reddit 帖子的最佳摘要。

      注意,这里的摘要不仅来自于当前策略,还来自于初始策略、 reference、以及 baseline 。无论它们来自哪里,都是为奖励模型提供样本,而奖励模型仅仅关注:一个给定的摘要是好还是坏。

    • step 2:从 human comparisons 中学习奖励模型。给定一个帖子和一个候选摘要,我们训练一个奖励模型来预测这个摘要是更好的摘要的 log oddsground-truth 由我们的 labelers 来提供,log odds 是分类器 softmax layer 的输入)。

      奖励模型作为价值网络。

    • step 3:针对奖励模型来优化策略。我们将奖励模型的 logit output 视为奖励,我们使用强化学习(具体而言是 PPO 算法)来优化这个奖励。

    我们在下面的章节中对我们的程序进行了更详细的描述,包括奖励模型训练和策略训练的细节、以及我们的质量控制过程。在实践中,我们没有精确地迭代这一连串的三个步骤,而是在项目过程中更新了我们的数据收集程序和训练程序,同时积累了标签(详见论文附录 C.6)。

    整体架构类似于 GAN

    • 策略函数作为生成器,用于生成摘要,使得摘要的质量尽可能高(而不是摘要的最大似然尽可能大)。
    • 奖励函数作为判别器,用于判断摘要质量,从而促使策略函数不断演进。

    此外,奖励函数根据收集的 human feedbacks 来独立地监督训练,而不是像 GAN 中的一样进行对抗训练。

24.1.2 数据集和任务

  1. 数据集:我们使用 TL;DR 摘要数据集,其中包含了来自 reddit.com 的约 3M 个帖子,涉及各种主题(subreddits ),以及原发帖人写的帖子摘要。我们还对这个数据集进行了过滤(见论文的附录 A),从而确保质数据量,包括使用subreddits 的一个白名单(过滤之后,白名单的帖子数量分布如下表所示)。过滤规则:

    • 内容去重:通过检查帖子主体内容来去重。

    • 白名单过滤:过滤掉不在我们 subreddit whitelist 中的 subreddit 帖子。

    • Edit/Update 内容过滤:过滤掉任何标题以 "Edit""Update" 开头的帖子。

    • 毒性内容过滤:过滤掉包含某些主题(如性图片、或自杀,这些主题是启发式方法得到)的帖子。

    • 帖子长度过滤:过滤掉任何正文超过 512token 的帖子(为了适配模型的上下文长度)。

    • 此外还对解析后的 reference 摘要进行额外的过滤(我们使用 reference 摘要来训练 supervised baselines):

      • 删除以 "Edit", "Update", "P.S." 等变体开头的摘要。
      • 启发式地删除了带有一定程度脏话的摘要。
      • 删除了少于24token 或超过48token 的摘要,从而尽量减少摘要长度对质量的潜在影响。此外我们发现:短于 16token 的摘要通常是低质量的。

    我们最终过滤的数据集包含 123169 个帖子,我们保留了 ~ 5% 作为验证集。在本文的其余部分,我们把这个数据集简称为 TL;DR

    如下表所示,TL;DR dataset 中大约 2/3 的帖子是由 relationshipsrelationship advice 组成,这是一个相当特定的领域。这引起了对于我们模型泛化性的潜在担忧,尽管模型在 CNN/DM 新闻文章上的强大迁移性能表明它们并没有无脑地特定于 relationship advice

    我们选择 TL;DR 数据集而不是更常用的 CNN/DM 数据集,主要是因为在 CNN/DM 上可以通过简单的 extractive baseline 获得非常强大的性能。我们在实验中发现:

    • CNN/DM 数据集,我们的 labelers 相比 reference summary 反而更喜欢 lead-3 summary
    • 而且带有 low-temperature sampling 监督微调 T5 模型已经超过了 reference summary 的质量,同时还大量复制了文章内容。

    另一方面,在我们的 human evaluations 中,简单的 extractive baselineTL;DR 上表现很差(如Figure 12 中的 TitleLead-2 )。我们没有在 CNN/DM 上进行训练,而是研究了我们的 human feedback models (即,human feedback 训练的策略)在被训练为 summarize Reddit posts 之后,向 CNN/DM 数据集的迁移性能。

  2. 任务:我们把我们的 ground-truth task 定义为:根据 human judgments 来产生一个模型,该模型生成长度小于 48token 的摘要并且尽可能的好。

    我们判断摘要质量的标准是:摘要在多大程度上向只能阅读摘要而不能阅读帖子的读者传达了原始帖子的内容(关于标准的进一步讨论,见论文附录 C.5)。由于我们做 comparisons 的能力有限,所以我们雇用 labelers 为我们做 comparisons 。我们依靠详细的程序来确保 comparisons 和我们在任务上的高度一致,我们将在下一节介绍。

  3. 判断摘要质量标准的进一步讨论:我们为评价 Reddit 帖子的摘要、以及评价 CNN/DM 的新闻文章的摘要制作了单独的说明。

    • 对于 Reddit 的指令,我们首先描述了 Reddit 的一般情况,并提供了一个表格,将Reddit的特定行话翻译成普通术语。

      • 用于 comparing summaries 的指令:我们在Table 6 展示了给 labelers 指令从而用于执行 comparisons。除了这些指令之外,我们还提供了 Reddit 摘要之间的一个 labeled comparison 例子,以及对摘要的朴素解释的一个例子。
      • 用于沿着质量轴评估摘要的指令:我们为 labelers 提供了一套单独的详细指令,用于 7-point Likert 评估。我们首先介绍了我们所考虑的 4 个质量轴中的每一个,概述了连贯性coherence、准确性accuracy、覆盖率 coverage 和总分(见Table 7 )。我们还为 1 分、4 分、以及 7 分及其对应的摘要提供了一个简短的评分标准,其中注释了我们自己对这些轴的质量判断(带有解释)。
      • 最后,我们提供了一个 FAQ 部分,回答了这项任务的 labelers 所提出的常见问题。
    • 对于CNN/DM ,我们提供了同样的指令,只是我们对如何判断新闻文章增加了一些额外的说明。我们特别要求 labelers 不那么强调句子的连贯性(因为 reference摘要最初是以要点的形式 bullet-point form 写成的,我们不希望 labelers 对此进行惩罚),也不那么强调摘要与文章的意图相匹配(这对 Reddit 的摘要很重要)。

    在质量控制方面,我们进行了论文附录 C.1 中描述的 smaller 版本的质量控制过程:

    • 首先沿着每个轴,我们(指的是论文的作者)亲自给一小部分摘要人工标注,以了解混淆点 points of confusion (指的是作者亲自下场,理解标注的难点)。
    • 然后,我们写了指令文档 instructions document 提供给 labelers
    • 然后,我们让一小部分 labelers 进行任务试验,以捕捉任何 bugs 或混淆点。
    • 最后,我们让一大批 labelers 加入到任务中,同时我们保持回答任何问题。

24.1.3 收集 human feedback

  1. 先前的、关于从 human feedback 中微调语言模型的工作(《Fine-tuning language models from human preferences》)报告了 "我们希望我们的模型学习的质量概念和human labelers 实际评估的质量概念之间的不匹配" ("a mismatch between the notion of quality we wanted our model to learn, and what the humans labelers actually evaluated"),导致模型生成的摘要按照 labelers 的说法是高质量的、但按照 researchers 的说法是相当低的质量。

    《Fine-tuning language models from human preferences》 相比,我们实施了两个变化以提高 human data 质量:

    • 首先,我们完全转移到 offline setting ,其中我们交替执行:发送大批量的 comparison data 给我们的 human labelers 、并在累积的 collected data 上重新训练我们的模型。
    • 其次,我们与 labelers 保持亲身接触的关系:我们为他们提供详细的指导,在共享的聊天室里回答他们的问题,并对他们的表现提供定期反馈。我们对所有 labelers 进行培训,以确保他们与我们的判断高度一致,并在项目过程中不断监测 labeler-researcher agreement 。详情见论文的附录 C.1C.5

    作为我们程序的结果,我们获得了高度的 labeler-researcher 一致性:在comparison tasks 的一个子集上,labelersresearchers 的一致性为 77±2% ,而 researchers-researchers 之间的一致性为 73±4% 。我们在论文附录 C.2 中提供了更多关于 human data 质量的分析。

24.1.4 模型

  1. 我们所有的模型都是 GPT-3 风格的 Transformer decoder 。我们对具有 1.3B6.7B 参数的模型进行 human feedback 实验。

  2. 预训练模型:我们从预训练的模型开始,在一个大型文本语料库中自回归地预测 next token 。我们通过数据集中的高质量摘要的样本来填充上下文从而将这些模型作为 zero-shot baseline 。我们在论文附录 B 中提供了关于预训练的细节,并在论文附录 B.2 中提供了关于我们的 zero-shot 程序。

  3. 监督微调 baseline:接下来,我们通过监督学习对这些模型进行微调,以预测我们过滤后的 TL;DR 数据集的摘要(详见论文附录 B )。

    此外,我们使用这些监督微调模型对初始摘要进行采样从而收集comparisons ,进而初始化我们的策略模型和奖励模型,并作为评估的 baseline 。在我们最终的 human evaluations 中,我们使用 T=0 从所有模型中进行采样,因为我们发现它比更高的温度或 nucleus sampling 表现更好。

    为了验证我们的监督微调模型确实是强有力的、针对 comparisonbaseline ,我们在 CNN/DM 数据集上用 6.7B 模型运行我们的监督微调程序,发现我们取得的 ROUGE 分数比来自 mid-2019SOTA 模型略好(如下图所示)。

    此外,我们发现:温度对 ROUGE得分有(通常是显著的)影响,我们做了一次彻底的扫描,以验证最佳温度配置是 T=0

    • TL;DR 上,在 T=0 时,我们发现我们的 human feedback models获得的 ROUGE 分数比监督微调模型略低,这进一步表明ROUGEhuman preferences 的相关性很差。对于监督微调模型来说,降低温度比增加模型大小有更大的影响。有趣的是,在更高的温度下,我们的 human feedback models实际上超过了监督微调的同类模型。
    • CNN/DM 上,ROUGEhuman evaluations 相一致,即human feedback models 比我们的监督微调模型的迁移性能更好。
  4. 奖励模型:为了训练我们的奖励模型 rθ(x,y),我们从一个监督微调 baseline 开始,如上所述,然后添加一个随机初始化的 linear head,该 linear head 输出一个标量值。我们训练这个模型来预测在给定一个帖子 x 的情况下,哪个摘要 y{y0,y1} 由人类来判断是更好的。 如果人类喜欢的摘要是 yi,则我们可以把奖励模型的损失写成:

    (30)loss(rθ)=E(x,y0,y1,i)D[logσ(rθ(x,yi)rθ(x,y1i))]

    其中:

    • rθ(x,y) 的输出为标量,i{0,1}
    • Dhuman judgments 的数据集。

    在训练结束时,我们将奖励模型的输出归一化,使我们的数据集中的 reference summaries 的平均分为零。

    注意,监督微调模型与奖励模型是不同的模型,虽然它们使用相同的数据集,但是它们使用不同的监督信息:

    • 监督微调模型使用 reference 摘要作为监督信息。
    • 奖励模型使用 human comparisons 作为监督信息。
  5. human feedback 策略:我们想用上面训练的奖励模型来训练一个策略,该策略生成更高质量的输出(基于人类的判断)。我们主要使用强化学习来做这件事,把奖励模型的输出当作整个摘要的奖励,我们用 PPO 算法(《Proximal policy optimization algorithms》)来最大化这个奖励,其中每个 time step 是一个 BPE token

    我们以 Reddit TL;DR 上微调的模型来初始化我们的策略。重要的是,我们在奖励中加入了一个惩罚项,该惩罚项惩学到的强化学习策略 πϕRL (参数为 ϕ)和初始的监督模型 πSFT 之间的 KL 散度。完整的奖励 R 为:

    (31)R(x,y)=rθ(x,y)βlog[πϕRL(yx)πSFT(yx)]

    KL 项有两个目的:

    • 首先,它起到了熵的作用,鼓励策略的探索从而阻止它塌陷到单一的模式。
    • 其次,它确保学到的策略不会生成这种的输出:该输出与奖励模型在训练期间所见的输出有太大的不同。

    根据 InstructGPTPPO 的损失函数为:

    (32)objective(ϕ)=E(x,y)DπϕRL[rθ(x,y)βlog[πϕRL(yx)πSFT(yx)]]

    其中:

    • πϕRL 为学到的 RL 策略,πSFT 为监督微调的模型,ϕ 为策略的参数。
    • DπϕRL 为强化学习的数据分布,βKL 系数。

    对于PPO 的价值函数 value function ,我们使用一个与策略完全分离参数的 Transformer。这可以防止价值函数的更新在训练的早期部分破坏预训练的策略(消融实验的结果如下图所示)。我们将价值函数初始化为奖励模型的参数。在我们的实验中,奖励模型、策略函数、以及价值函数的规模是一样的。

    注意,理论上奖励模型和价值函数可以合二为一,但是论文为什么要将它们分离开来?个人猜测是因为离线数据收集的缘故:如果奖励模型和价值函数合二为一,那么当奖励模型被重新训练时,价值函数不可用(正在训练过程中)。

    将二者分离分开,使得奖励模型的训练与价值函数的使用之间相互独立。一旦奖励模型训练完毕,就用它的最新权重去初始化价值函数,使得价值函数始终成为奖励模型的最新版本的 copy

  6. 所有的模型都遵循标准的 Transformer 架构,positional embedding 维度为 2048。所有模型都是用 fp16 activationsAdam 优化器训练的。几乎所有的 supervised baselines、奖励模型、以及强化学习模型都是用 fp32 权重训练的,唯一例外的是我们的TL;DR supervised baselines 是用fp16 权重训练的。所有的模型都是用与 GPT-3 中相同的 BPE 编码进行训练。

    • 在预训练期间,模型被训练为预测由 Commoncrawl, Webtext, book, Wikipedia 组成的大型文本语料库的 next token

      • 每个模型的训练时间在 1 ~ 3epochs 之间,总共有 200 ~ 300 Btoken
      • 学习率遵循带有一个 short warmupcosine schedule ,最终学习率衰减到最大值的 10%
      • batch size 在整个训练过程中逐步上升到某个最大值,其中每个输入有 2048token

      每个模型的超参数如下表所示。

    • 对于supervised baselines ,我们从预训练的模型中初始化模型。

      • 我们用cosine schedule 来衰减学习率,初始学习率从 7 个值中选择(这七个值来自于 log linear sweep) 。这导致我们在 TL;DR 数据集上 1.3B, 3B, 6.7B, 13B 大小的模型的学习率分别为 6.35e-5, 5.66e-5, 2.83e-5, 2.83e-5 ,而在 CNN/DM 数据集上 6.7B 模型的学习率为 2.38e-5
      • 我们使用 batch size = 128 并微调一个 epoch
    • 对于奖励模型,我们初始化为supervised baseline ,但在奖励模型的顶部有一个reward head ,其权重根据 N(0,1/(dmodel+1)) 来初始化。

      • 我们训练一个 epoch ,用 cosine schedule 衰减学习率,初始学习率从 7 个值中选择(这七个值来自于 log linear sweep)。

        我们还在 3 ~ 10 个种子之间进行 sweep ,并选择在验证集表现最好的奖励模型,因为我们发现数据迭代顺序和奖励头初始化都会影响结果。对于我们的main结果,1.3B6.7B 奖励模型的学习率分别为 1.5e-55e-6

      • 我们使用 batch size = 64 ,并训练一个 epoch

    • 对于PPO,我们用分离的策略网络和价值网络,将我们的策略网络初始化为 supervised baseline, ,将我们的价值网络初始化为奖励模型。

      • 我们为 advantage estimation 设置了 γ=1λ=0.95 ,并为每个 batchrollouts 优化了 4epoch

        即,外层的 batch 对应于 (x,y)pair ,内层的 minibatch 对应于 trajectory segment 长度 T 。我们对每个样本收集长度为 T 的轨迹,然后在这些轨迹上训练 4epoch 。这里的 rollouts 指的就是轨迹。

      • 我们使用了一个线性学习率衰减 schedule,根据少量的实验和粗略的模型大小推断,设置 1.3B 模型的初始学习率为1.5e-56.7B 模型的初始学习率为 7e-6

      • 在我们报告结果的两个 main 运行中,我们使用了 0.05KL系数。

      • 我们对 1.3B 模型使用 batch size = 512 、对 6.7B 模型使用 batch size = 256 ,并运行 1Mepisodes

24.2 实验

24.2.1 从 human feedback 来总结 Reddit 帖子

  1. human feedback 训练出来的策略比更大的监督模型更受欢迎。

    我们在 TL;DR 上评估 human feedback 策略的主要结果显示在下图中。我们评估策略质量为:在数据集中,在策略生成的摘要和 reference 摘要之间,人类更喜欢策略生成的摘要的占比。在这个指标上:

    • 我们用 human feedback 训练出来的策略明显优于我们的监督微调 baseline :我们的 1.3Bhuman feedback model 显著优于 10 倍规模的监督微调模型( 61% vs 43% )。
    • 我们的 6.7B 模型反过来又明显优于我们的 1.3B 模型,这表明使用 human feedback 的训练也得益于规模。
    • 此外,我们的两个human feedback model 都被人类判定为优于数据集中使用的 human demonstrations (即 reference 摘要)。

  2. 控制摘要的长度:在判断摘要质量时,摘要长度是一个混杂因素 confounding factor 。摘要的目标长度是摘要任务的隐式部分:根据所需的简洁性 conciseness (较短的摘要)和覆盖度 coverage (较长的摘要)之间的权衡,较短或较长的摘要可能更好。

    由于我们的模型学会了生成较长的摘要,长度可能是我们质量改进的主要原因。我们策略产生的摘要要比 reference 摘要更长,因为我们对策略限制了生成 24 ~ 48token 的摘要。

    我们发现,在控制了摘要长度之后(见论文附录 F ),我们的 human feedback model 相对于 reference 摘要的偏好下降了大约 5% 。即便如此,我们的 6.7B 模型的摘要仍然比 reference 摘要在大约 65% 的时间更受欢迎(如下图 (b) 所示)。

    注意:下图 (b) 是通过一个逻辑回归模型来拟合曲线的。

  3. 我们的策略是如何相对于 baseline 得到改进的?

    为了更好地了解我们的模型摘要与 reference 摘要、 supervised baseline 的摘要相比的质量,我们进行了一项额外的分析,即human labelers 使用七个等级的 Likert 从四个方面(或 "轴")评估摘要质量。Labelers 对摘要的覆盖度(原帖中的重要信息被覆盖的程度)、准确性(摘要中的 statements 在多大程度上被原始帖子所述)、连贯性(摘要本身有多容易阅读)、以及整体质量进行评分。

    结果(如下图所示)表明:我们的 human feedback model 在质量的每个维度上都优于 supervised baseline ,特别是覆盖度。

    尽管我们的human labelers 对给出完美的 overall 质量分有很高的要求,但来自我们 6.7B PPO 模型的摘要在 45% 的时间里达到了 7/7 的整体质量分。相比之下,6.7Bsupervised baselinereference 摘要的整体质量分达到 7/7 的时间分别为 20%23%

    注:45%20%23% 这些数据,在原始论文中并没有相应的表格给出详细说明。

24.2.2 迁移到总结新闻文章

  1. 我们的 human feedback models (即,强化学习得到的模型)也可以在没有任何进一步训练的情况下生成优秀的 CNN/DM 新闻文章的摘要(如下图所示):

    • 我们的 human feedback models 的表现显著优于在 TL;DR 上通过监督学习所微调的模型、以及仅在预训练语料上训练的模型。
    • 事实上,我们的 6.7Bhuman feedback model 的表现几乎与在 CNN/DMreference 摘要上微调的 6.7B 模型一样好,尽管我们的模型所生成的摘要短得多。

    由于我们迁移到 CNN/DMhuman feedback models 与在 CNN/DM 上训练的模型在摘要长度分布上几乎没有重叠,前者的平均 token 长度大约是后者的一半,所以它们很难直接比较。在下图 (b) 中,我们显示了不同摘要长度下的平均 overall score ,这表明如果我们的 human feedback models 生成更长的摘要,其表现会更好。从质量上看,来自human feedback modelsCNN/DM 摘要一致地是文章的流畅和合理的表达。我们在论文的附录 H 中展示了一些例子。

    注意:下图 (b) 是通过一个逻辑回归模型来拟合曲线的。

24.2.3 理解奖励模型

  1. 当我们优化奖励模型时发生了什么?

    奖励模型并不能完美地代表我们的labeler preferences ,因为它只有有限的容量,而且只能看到来自相对狭窄分布(关于摘要的分布)的少量 comparison data 。虽然我们可以希望我们的奖励模型能够泛化到训练期间未见过的摘要,但不清楚人们可以针对奖励模型进行多大程度的优化。

    为了回答这个问题,我们创建了一系列策略,这些策略采用我们奖励模型的早期版本 earlier version (这些早期版本的奖励模型具有不同的优化强度 optimization strength ),并要求 labelers 将策略生成的摘要与 reference 摘要进行比较。下图显示了 PPO 在在一系列 KL 惩罚系数(即,β)下的结果:

    根据 R(x,y)=rθ(x,y)βlog[πϕRL(yx)πSFT(yx)] ,通常采用动态的 β 从而满足固定的 KL 值。因此当 β 值不同时,KL(πϕRL,πSFT) 也发生变化。

    • 在轻度优化下(即,πϕRL 距离 πSFT 较近时),模型得到了改善(根据 labelers 的评估)。
    • 然而,随着我们进一步优化,最终奖励模型变得与 labelers 反相关(因为策略产生了的样本是奖励模型没有见过的,导致奖励模型误判)。尽管这显然是不可取的,但我们注意到这种过度优化 over-optimization 也发生在 ROUGE 中。类似的行为在机器人领域的学到的奖励函数中也被观察到。

    随着 πϕRL 距离 πSFT 越来越远,奖励模型对策略 πϕRL 生成的样本的误判越来越严重:奖励模型认为是好的样本,而 labelers 标注的结果是坏的样本。

  2. reward modeling 是如何随着模型规模和数据规模的增加而 scale 的?

    我们进行了一次消融实验,以确定数据规模和模型大小如何影响奖励模型的性能。我们训练了 7 个奖励模型,模型规模从 160M13B 参数,在来自我们数据集的 8k64khuman comparisons 上训练。我们发现:

    • 训练数据量增加一倍会导致奖励模型验证准确性增加约 1.1%
    • 而模型大小增加一倍则会导致奖励模型验证准确性增加约 1.8%

  3. 奖励模型学到了什么?

    我们通过在几个验证集上评估我们的奖励模型来探索它。我们在论文附录 G.6 中展示了完整的结果,并在此强调了这些结果:

    • 我们发现:我们的奖励模型泛化到评估CNN/DM 摘要(论文附录 G.7 ),在 62.4%66.5% 的时间内与 labeler preferences 相一致(分别对应于我们的 1.3B6.7B 模型)。我们的 6.7B 奖励模型几乎与 labeler-labeler 之间的 66.9% 的一致率相匹配。

    • 我们还发现,我们的奖励模型对摘要中微小的、但是语义上重要的细节很敏感。

      我们构建了一个额外的验证集,让 labelers 对摘要进行最小的编辑来改进它们。我们的奖励模型倾向于经过编辑的摘要的频率(1.3B 模型为 79.4%6.7B 模型为 82.8% ),这几乎与单独的 human evaluators 偏好经过编辑的摘要的频率(84.1%)一样。

      此外,当比较 reference 摘要、以及参与者角色颠倒的干扰摘要时,我们的模型可靠地选择了 reference 摘要(1.3B 模型为 92.9% 的时间,6.7B 模型为 97.2% 的时间)。

      然而,我们的模型偏向于较长的摘要:我们的6.7B 模型仅在 62.6% 的时间里更喜欢使摘要变短的改进编辑(与人类的 76.4% 相比)。

24.2.4 分析针对摘要的自动指标

  1. 评估:我们研究了各种自动化指标作为 human preferences 的预测器的效果,并将它们与我们的奖励模型进行比较。

    具体而言,我们研究了 ROUGE 、摘要长度、从帖子中拷贝的数量、以及我们的基线监督模型下的log probability 。我们在论文附录 G.7 中列出了这些指标之间的一致率的完整矩阵(如下图所示)。

    我们发现:

    • 我们学到的奖励模型始终优于其他指标,甚至在从未训练过的 CNN/DM 数据集上也是如此。

    • ROUGE 未能跟踪 track 样本质量,而我们的模型可以改进跟踪。

      • 在比较我们的 supervised baseline models 的样本时,ROUGElabelers 的一致率为 57%
      • 而比较我们的 human feedback model 的样本,ROUGElabelers 的一致率下降到 50%
      • 同样地,在比较我们的 human feedback models 的样本时,ROUGEsupervised log probability 的一致率降至 50% ;而我们的奖励模型与 supervised log probability 的一致率仍高于随机表现(62%)。
    • 扩大监督模型的规模并不能可靠地改善奖励模型与 labelerssupervised log probability 上的一致性。

  2. 优化:在下图中,我们展示了使用简单的优化方案对 ROUGE 进行优化并不能持续提高质量,这一点在 《A deep reinforced model for abstractive summarization》中已经被指出。与针对我们的奖励模型的优化相比,针对 ROUGE 的优化达到峰值的时间更早,质量也大大降低。

    n 代表迭代轮次,RM 代表奖励函数 reward model

24.3 讨论

  1. 局限性:我们工作的一个局限性是生成最终模型所需的时间和成本。

    • 值得注意的是,用强化学习对我们的 6.7B 模型进行微调需要大约 320 GPU-days

    • 与之前的工作相比,我们的数据收集程序也很昂贵:训练集花费了数千 labeler hours ,并且需要大量的 researcher time 来确保质量。由于这个原因,我们无法收集 baseline ,如同等数量的高质量 human demonstrationssupervised baselines。更多讨论见附录 D 。我们把这种消融留给未来的工作。

      尽管如此,我们相信奖励模型更有可能扩展到那些提供良好 demonstrations 的技能密集型 skill-intensive 的或耗时的任务。

  2. 未来的方向:

    • 本文的方法可以应用于任何人类可以比较样本的任务,包括对话、机器翻译、问答、语音合成、以及音乐生成。我们预期这种方法对生成较长的样本特别重要,因为在这种情况下,maximum likelihood samplesdistributional shift 和退化会产生问题。通过训练跨许多任务来预测human feedback ,也许可以提高样本效率。

      这些生成任务都是优化样本的最大似然。

    • 我们对将 human feedback 扩展到人类不容易评估模型输出质量的任务中特别感兴趣。在这种情况下,识别一个机器学习系统是否 align to 人类设计者的意图,这是特别具有挑战性的。一种方法是训练机器学习系统来帮助人类快速而准确地完成评估任务。

    • 除了二元比较之外,还有丰富的human feedback 方法,可以针对训练模型来探索这些方法。例如,我们可以从labelers 那里获得高质量的demonstrations 、让labelers 编辑模型输出以使其更好、或者让labelers 提供解释从而说明他们为什么喜欢一个模型输出而不是另一个。所有这些human feedback都可以作为一个信号来训练更有能力的奖励模型和策略。

  3. 更广泛的影响:我们在本文中探讨的技术是通用技术,可以用于各种机器学习应用,用于任何人类可以评估模型输出质量的任务。因此,其潜在的影响是相当广泛的。

    • 我们的研究主要是出于如下的潜在的积极效果:使机器学习算法 align to 设计者的偏好。许多机器学习应用优化了简单的指标,这些指标只是设计者意图的粗略代理。这可能会导致一些问题,比如 Youtube 的推荐会促进点击诱饵 click-bait 。在短期内,改进直接从human preferences 中学习和优化的技术,可能会使这些应用更符合人类的福祉。

      然而从长远来看,随着机器学习系统的能力越来越强,要确保它们的行为安全可能会越来越困难:它们所犯的错误可能更难发现,后果也会更严重。例如,写一篇不准确的新闻摘要既容易被发现(人们只需阅读原文),后果也相当低。另一方面,模仿人类驾驶可能比优化 human preferences 更不安全(因为模仿驾驶出问题的后果相当严重)。我们相信,我们在本文中探讨的技术是一种有希望的步骤从而缓解这种强有力系统的风险,并使它们更好地 align to 人类关心的东西。

    • 不幸的是,我们的技术也使恶意行为者能够更容易地训练造成社会伤害的模型。例如,人们可以利用 human feedback 来微调语言模型,使其更具说服力并操纵人类的信念、或者诱导人类对技术的依赖、或者产生大量的有毒或有害的内容从而伤害特定的个人。避免这些结果是一个重大的挑战,没有什么明显的解决方案。

    • human feedback 训练的大型模型可能对许多群体产生重大影响。因此,对于我们如何定义 labelers 会强化的 "好的" 模型行为,必须要谨慎。决定什么是好的摘要是相当直截了当的,但是对于具有更复杂目标的任务,不同的人可能对正确的模型行为有不同的意见,因此决定什么是好的行为将需要非常小心。

      在这些情况下,使用 researcher labels 作为 "黄金标准" 可能是不合适的。相反,来自受技术影响的群体的个人应该被纳入到定义 "好" 的行为的过程中,并被聘为 labelers 从而加强模型中的这种行为。

    • 我们选择在 Reddit TL;DR 数据集上进行训练,因为该数据集上的摘要任务比 CNN/DM 上明显更具挑战性。然而,由于该数据集由用户提交的帖子组成,且审核度极低,它们往往包含冒犯性或反映有害社会偏见的内容。这意味着我们的模型可能会产生有偏见的或令人反感的摘要,因为它们已经被训练为总结此类内容。出于这个原因,我们建议在将我们的模型部署到面向用户的应用中之前,要彻底研究其潜在的危害。

    • 最后,对于以前只能由人类完成的任务,通过提高机器学习算法执行这类任务的能力,我们正在增加许多工作被自动化的可能性,可能会导致大量的工作流失。如果没有合适的政策来缓解大规模失业的影响,这也可能导致重大的社会危害。

二十五、InstructGPT [2022]

  1. 给定一些任务的样本作为输入,large language model: LLM 可以被 "提示prompted " 从而执行一系列的自然语言处理任务。然而,这些模型经常表现出一些非预期的行为,如:编造事实、生成有偏见或有毒的文本、或者干脆不遵循用户的指令。这是因为最近许多大型语言模型所使用的语言建模目标(即,预测来自互联网的网页上的 next token )与 "follow the user’s instructions helpfully and safely" 的目标不同。因此,论文《Training language models to follow instructions with human feedback》 (即,InstructGPT)说:语言建模的目标是 misaligned 的。避免这些非预期的行为,对于在成百上千个应用中部署和使用的语言模型来说,尤其重要。

    论文《Training language models to follow instructions with human feedback》align 语言模型方面取得进展,其中通过训练语言模型使其按照用户的意图行事。这既包括显式的意图(如,遵循指令),也包括隐式的意图(如,保持真实,没有偏见、没有毒性、或其它伤害性)。使用 《A general language assistant as a laboratory for alignment》 的语言,InstructGPT 的作者希望语言模型是 helpful 的(它们应该帮助用户解决他们的任务)、honest 的(它们不应该捏造信息或误导用户)、以及 harmless 的(它们不应该对人或环境造成生理、心理或社会伤害)。论文在后面内容中详细阐述了对这些标准的评估。

    作者专注于微调方法从而 aligning 语言模型。具体而言,作者使用来自人类反馈的强化学习 reinforcement learning from human feedback: RLHF 来微调 GPT-3 从而遵循广泛的书面指令(如下图所示)。这项技术使用 human preferences 作为奖励信号来微调 GPT-3

    • 首先,作者根据候选合同工 contractors 在筛选测试中的表现,雇用了一个由 40contractors(他们是labelers)组成的团队来标注数据。筛选测试见后面的内容。

    • 然后,作者收集了一个数据集,该数据集包含关于一些 prompts 的理想输出行为desired output behavior (由labelers撰写的 demonstration)。这些 prompts 包括被提交给 OpenAI API 的、以及一些labelers提供的。论文用这个数据集来训练 supervised learning baseline

      因为很多用户在调用 OpenAI API,因此OpenAI 可以从日志记录中获取很多 prompts

      这一步是通过比较小的数据集,利用监督学习微调,从而得到一个良好的初始模型(作为初始策略)。

      这里的 prompt 就是代表了用户意图的指令,而 labeler 撰写的 demonstration 就是 ground-truth 用于生成模型的监督信号。

    • 然后,作者收集了一个人工标注的 comparison 数据集,这个 comparison 数据集比较了在更大的 API prompt 集合上的输出(labelers对同一个 prompt 的多个模型输出进行人工排序)。

      对于相同的 prompt,这里有来自相同模型的不同输出(因为随机采样的原因)、也有不同模型的输出(因为我们有各种各样的模型)。

      作者在这个数据集上训练一个奖励模型reward model: RM ,从而预测 labelers 会更喜欢哪个 model output

      奖励模型的目的是考察哪个被生成的文本更能匹配 prompt,而不关心这些文本是如何生成的。当然,最新的策略函数作为模型之一,使得奖励模型见过策略函数的输出,使得奖励模型能够对策略函数的输出结果打分。

    • 最后,作者使用这个奖励模型作为奖励函数,并通过 PPO 算法(《Proximal policy optimization algorithms》)来强化学习微调 supervised learning baseline 从而最大化这个奖励。

      注意,微调有两种:一种是监督微调,一种是强化学习微调。

    这个过程如下图所示。这个过程使 GPT-3 的行为与特定人群(主要是论文的labelersresearchers)的声明偏好 stated preference 相一致,而不是任何更广泛的 "人类价值human value" 概念。作者把得到的模型称为 InstructGPT

    论文主要通过让labelers在论文的测试集上对模型输出的质量进行评估,测试集由来自 held-out customer (在训练数据中没有出现)的 prompt 组成。论文还在一系列公共的自然语言处理数据集上进行了自动化评估 automatic evaluation 。论文训练三种规模的模型(1.3B6B175B 参数),所有的模型都使用 GPT-3 架构。论文的主要发现如下:

    • GPT-3 的输出相比,labelers明显更喜欢 InstructGPT 的输出。

      在测试集上,尽管参数少了 100 多倍,但 1.3B 参数的 InstructGPT 模型的输出却比 175B 参数的 GPT-3 的输出更受欢迎。这些模型具有相同的架构,不同之处仅在于:InstructGPThuman feedback data 上进行了微调。即使作者在 GPT-3 中加入了 few-shot prompt 从而使其更好地遵循指令,这一结果也是成立的。

      175B InstructGPT 的输出在 85±3% 的时间里比 175B GPT-3 的输出更受欢迎,而在 71±4% 的时间里比 few-shot 175B GPT-3 更受欢迎。InstructGPT 模型还根据labelers生成了更合适的输出,并更可靠地遵循指令中的显式约束 explicit constraint

    • InstructGPT模型在真实性方面比 GPT-3 有所提高。

      TruthfulQA benchmark 中,InstructGPT 产生真实的和有信息的答案的频率是 GPT-3 的两倍。在没有针对 GPT-3 进行对抗性选择 adversarially selected 的问题子集上,InstructGPT 的结果同样强大。在 API prompt distribution"closed-domain" 任务中,其中输出不应该包含输入中不存在的信息(如摘要和 closed-domain QA ),InstructGPT 模型编造输入中不存在的信息的频率约为GPT-3 的一半(分别为 21%41% 的幻觉率 hallucination rate)。

    • InstructGPT 在毒性方面比 GPT-3 有小的改进,但没有偏见 bias

      为了测量毒性,论文使用 RealToxicityPrompts 数据集,并同时进行自动化评估和人工评估。在遵从 prompt 的情况下,InstructGPT 模型产生的毒性输出比 GPT-325% 左右。在 WinogenderCrowSPairs 数据集上,InstructGPTGPT-3 没有明显改善。

    • 可以通过修改 RLHF 微调程序,将公共自然语言处理数据集上 InstructGPT 的性能退化降到最低。

      RLHF 微调过程中,作者观察到在某些公共自然语言处理数据集上InstructGPTGPT-3 相比有性能退化,特别是 SQuAD, DROP, HellaSwag, WMT 2015 French-to-English translation 。这是一个 "对齐税alignment tax "的例子,因为论文的 alignment procedure 是以降低我们可能关心的某些任务的性能为代价的。可以通过将 PPO update 与增加pretraining distributionlog likelihoodupdate 混合在一起(PPO-ptx),从而大大减少这些数据集上的性能退化,而且不影响labelers的偏好得分。

    • InstructGPT 可以推广到没有产生任何训练数据的 "held-out labelers"的偏好。

      为了测试InstructGPT 的泛化性,论文对 held-out labelers进行了初步实验,发现他们对 InstructGPT 的输出与 GPT-3 的输出的偏好率与 training labelers大致相同。然而,我们还需要做更多的工作来研究这些模型在更广泛的用户群体中的表现,以及它们在人类预期行为有分歧的输入中的表现。

    • 公共自然语言处理数据集并不能反映出语言模型的使用情况。

      作者将 GPT-3 在两类数据上监督微调:

      • 第一类数据是 human preference data (即 InstructGPT 所使用的)。

        这个就是监督微调 baseline

      • 第二类数据由两个不同的公共自然语言处理任务的数据:FLANT0《Multitask prompted training enables zero-shot task generalization》)(尤其是 T0++ 变体)。这些数据集由各种自然语言处理任务组成,并且每个任务结合了自然语言指令。

        得到的分别是 FLANT0 上监督微调的模型。

      API prompt distribution 上:

      • FLANT0 模型(即,在这两个数据集上监督微调得到的 GPT-3 )的表现比监督微调 baseline (即,在 labelers demonstration 上监督微调得到的 GPT-3 )略差。

        这表明在公共数据集上微调的模型,在应用到具体场景中还是有性能的 gap

      • labelers明显更喜欢 InstructGPT 而不是这些模型(InstructGPT 与监督微调 baseline 相比有 73.4±2% 的胜率,而 T0FLAN 模型与监督微调 baseline 相比分别只有 26.8±2%29.8±2% 的胜率)。

    • InstructGPT 模型对 RLHF finetuning distribution 之外的指令表现出了很好的泛化能力。

      作者定性地探究了 InstructGPT 的能力,发现它能够遵从指令从而用于 summarizing code ,回答关于 code 的问题,有时还能遵循不同语言的指令,尽管这些指令在 fine-tuning distribution 中非常罕见。

      相比之下,GPT-3 也能完成这些任务,但需要更仔细的 prompting,而且通常不遵循这些领域的指令。这一结果令人激动,因为这表明 InstructGPT 能够泛化 "following instructions" 的概念。即使在模型得到很少直接监督信号的任务上,模型也会保留一些 alignment

    • InstructGPT 仍然会犯一些简单的错误。

      例如,InstructGPT 仍然会不遵循指令、编造事实、对简单的问题给出冗长的对冲回答 hedging answer(即,正反两个方面都回答)、或者不能检测到具有错误前提的指令。

    总体而言,论文的结果表明:利用 human preferences 对大型语言模型进行强化学习微调可以大大改善它们在各种任务中的行为,尽管在提高它们的安全性和可靠性方面还有很多工作要做。

  2. 相关工作:

    • 关于从human feedbackalignmentlearning 的研究:我们建立在以前的技术上,使模型 align to 人类的意图,特别是来自human feedback 的强化学习 reinforcement learning from human feedback: RLHF

      RLHF 最初是为在模拟环境和 Atari 游戏中训练简单的机器人而开发的,最近被应用于微调语言模型以总结 summarize 文本。这项工作反过来又受到在对话、翻译、语义解析 semantic parsing 、故事生成、评论生成和证据抽取 evidence extraction 等领域使用 human feedback 作为奖励的类似工作的影响。

      • 《Memory-assisted prompt editing to improve gpt-3 after deployment》 使用 written human feedback 来增强 prompt ,并提高 GPT-3 的性能。
      • 还有一些工作是在 text-based environments 中使用具有规范先验 normative prior 的强化学习来 agent《Training value-aligned reinforcement learning agents using a normative prior》)。

      我们的工作可以被看作是 RLHFbroad distribution 的语言任务上对于 aligning language model 的直接应用。

      最近,语言模型 alignment 的意义也受到了关注。

      • 《Alignment of language agents》对语言模型中因 misalignment 导致的行为问题进行了分类,包括产生有害的内容、以及博弈错误的目标。
      • 在同时进行的工作中,《A general language assistant as a laboratory for alignment》 提出将语言助手 language assistants 作为 alignment research 的测试平台,研究一些简单的 baseline ,以及它们的scaling 特性。
    • 训练语言模型来遵从指令 follow instruction:我们的工作也与语言模型的跨任务泛化研究有关,其中语言模型在广泛的公共自然语言处理数据集(通常以适当的指令为前缀)上进行微调,并在一组不同的自然语言处理任务上进行评估。

      这个领域有一系列的工作,这些工作在训练和评估数据、指令的格式、预训练模型的大小、以及其他实验细节方面都有所不同。各项研究的一致发现是:在一系列自然语言处理任务上对语言模型进行带指令的微调,可以提高语言模型在 held-out 任务上的下游性能,无论是在 zero-shot setting 还是在few-shot setting 的情况下。

      还有一个相关的工作是用于导航 navigationinstruction following ,其中模型被训练为遵从自然语言指令从而在 simulated environment 中导航。

    • 评估语言模型的危害 harm:修改语言模型行为的一个目标是缓解这些模型在现实世界中部署时的危害。这些风险已经有了广泛的记录。语言模型可以产生有偏见的输出 biased output 、泄露私人数据、产生错误的信息、以及被恶意使用。对于一个全面的回顾,我们建议读者阅读 《Ethical and social risks of harm from language models》

      在特定领域部署语言模型会产生新的风险和挑战,例如在对话系统中。有一个新兴但不断增长的领域,旨在建立 benchmark 来具体评估这些危害,特别是围绕毒性toxicity 、思维定势stereotype 、以及社会性的偏见social bias

      在这些问题上取得重大进展是困难的,因为对语言模型行为的善意干预可能会产生副作用。例如,由于训练数据中的偏见关联prejudicial correlation ,减少语言模型的毒性的努力可能会降低其对 under-represented groups 的文本建模的能力。

    • 修改语言模型的行为从而缓解危害:有很多方法可以改变语言模型的生成行为 generation behavior

      • 《Process for adapting language models to society (palms) with values-targeted datasets》 在一个小型的、value-targeted 的数据集上对语言模型进行了微调,这提高了模型在问答任务中坚持这些 value 的能力。

      • 《Mitigating harm in language models with conditional-likelihood filtration》 对预训练数据集进行了过滤,它删除了一些文档,在这些文档上语言模型有很高的条件概率来生成一组由researchers书写的 trigger phrase 。当在这个过滤过的数据集上进行训练时,他们的语言模型产生的有害文本较少,代价是语言建模性能略有下降。

        trigger phrase 类似于黑名单,由 researchers 来预先指定。

      • 《Recipes for safety inopen-domain chatbots》 使用了多种方法来提高聊天机器人的安全性,包括数据过滤、在生成过程中阻止某些单词或 n-gramssafety-specific control tokens ,以及human-in-theloop 的数据收集。

      • 其他缓解语言模型产生的偏见的方法有:word embedding regularization 、数据增强、null space projection 以使敏感 token 的分布更加均匀、不同的目标函数,或因果干涉分析 causal mediation analysis

      • 还有一些工作是利用第二个(通常是较小的)语言模型来引导语言模型的生成,这个想法的变体已经被应用于减少语言模型的毒性(《Self-diagnosis and self-debiasing: A proposal for reducing corpus-based bias in nlp》)。

25.1 方法

25.1.1 High-level 方法论

  1. 我们的方法遵循 《Fine-tuning language models from human preferences》《Learning to summarize from human feedback》 的方法,他们将其应用于文风延续 stylistic continuation 和摘要任务。我们从一个预训练的语言模型、一个 prompt 分布(在这个分布上我们希望我们的模型产生 aligned output)、以及一个训练有素的 human labelers 团队作为开始。然后,我们应用以下三个步骤(参考下图):

    • 第一步:收集 labeler demonstration 数据,并训练一个有监督的策略 supervised policy

      我们的labelersinput prompt distribution 上提供所需行为的 demonstration 。然后,我们使用监督学习在这些数据上监督微调一个预训练的 GPT-3 模型。

      注意,GPT-3 模型是预训练好的,这里仅仅是微调。监督微调好的模型作为初始策略。

    • 第二步:收集 labeler comparison 数据,并训练一个奖励模型 reward model

      我们收集模型输出之间的comparisons 的一个数据集。在这个数据集中,对于给定的输入,labelers指出他们更喜欢哪一个输出。然后我们训练一个奖励模型来预测人类喜欢的输出。

    • 第三步:使用 PPO《Proximal policy optimization algorithms》)对奖励模型进行策略优化。

      我们使用奖励模型的输出作为 scalar reward 。我们强化学习微调 supervised policy,从而使用PPO 算法优化该奖励。

    步骤二和三可以连续迭代:在当前的最佳策略上收集更多的 labeler comparison 数据,用来训练新的奖励模型,然后再训练新的策略。在实践中,我们的大部分 comparison 数据来自我们的 supervised policy ,还有一些来自我们的 PPO policy (即,通过 PPO 微调的 supervised policy)。

25.1.2 数据集

  1. 我们的 prompt 数据集主要由被提交给 OpenAI APItext prompt 组成(由客户提交的),特别是那些在 Playground 界面上使用早期版本的 InstructGPT 模型(通过监督学习在我们的 demonstration data 的子集上训练)。 使用 Playground 的客户被告知:他们的数据可以被用于训练进一步的模型。在本文中,我们没有使用生产环境中使用 API 的客户的数据。

    我们启发式地对 prompt 去重(共享长的公共前缀的 prompt 被认为是重复的),并且我们将每个 user IDprompt 数量限制在200 个。我们还根据 user ID 创建了训练集、验证集和测试集,因此验证集和测试集不包含训练用户的数据。为了避免模型学习潜在的敏感的客户细节,我们在训练集中过滤了所有的个人身份信息 personally identifiable information: PII

    训练集/验证集/测试集是通过 user ID 来拆分的。

    每个 user IDprompt 限制为 200 个,使得 prompt 的分布比较均匀。

    必须有一个训练好的 InstructGPT 模型部署到 OpenAI API,这个训练好的 InstructGPT 模型如下文所述。

  2. 为了训练最开始的 InstructGPT 模型,我们要求labelers自己写 prompts 。这是因为我们需要一个 instruction-like promptinitial source 来引导这个过程,而这些类型的 prompts 很少通过 API 提交给常规 GPT-3 模型。我们要求labelers写三种类型的 prompt

    即,使用 OpenAI API 的用户很少会提交这些类型的 prompts ,因此需要让 labelers 人工构造。

    • Plain:我们简单地要求labelers想出一个任意的任务,同时确保任务有足够的多样性。
    • Few-shot:我们要求labelers想出一个指令,以及针对该指令的多个 query/response pair
    • User-based:我们有一些准备提交给 OpenAI AIuse-cases ,我们要求labelers想出与这些 use-cases相对应的 prompt

    从这些 prompt 中,我们产生了三个不同的数据集,用于我们的微调程序:

    • 我们的 supervised fine-tuning: SFT 数据集,带有labelersdemonstration ,用于训练我们的 SFT 模型。

      对于SFT ,请注意,相比较于 customer prompts ,我们有更多的 labeler-written prompts 。这是因为,在项目开始时,我们让 labelers 基于一个用户界面来写指令,这个界面要求他们给出一个总体的 template instruction 以及该指令的 few-shot 例子。我们通过采样不同的 few-shot examples 的集合,从相同指令中合成了多个 SFT datapoints

      读者猜测:SFT 模型很大可能就是部署到 OpenAI API 的第一个模型,用于收集 customer prompts

    • 我们的 RM 数据集,带有labelers 对模型输出的排名,用于训练我们的 RM

      对于 RM 而言,对于每个 prompt 我们收集了 K 个输出从而用于排名,并在所有的 CK2comparisons 上训练模型。因此,训练模型的 ranked pair 的数量要比 prompt 的数量要大一个数量级。

      CK2=K×(K1)2!

    • 我们的 PPO 数据集,没有任何 human labels ,用作 RLHF 微调的输入。

      PPO 数据集虽然没有 human labels,但是它根据奖励函数来对输出进行评估。

    SFT 数据集包含大约 13Ktraining prompt (来自 API 的和labelers编写的);RM 数据集有 33Ktraining prompt (来自 API 的和labelers编写的);PPO 数据集有 31Ktraining prompt (仅来自 API )。关于数据集大小的更多细节见下表。

  3. 为了了解我们的数据集的构成,在下表中我们显示了由我们的contractors 标注的 API prompts(特别是 RM 数据集)的 use-case 类别的分布。大部分的use-case 都是生成式的,而不是分类或问答。

    注意,这里只有 customer prompts(来自 API),而不包括 labeler prompts

    我们 labeled prompt metadata 的一个子集如下表所示。请注意,我们的 annotation fields 在项目过程中发生了变化,所以不是每个 prompt 都被 annotated 为每个字段。

    我们还在下表中展示了一些说明性的 prompt (由researchers编写,模仿提交给 InstructGPT模型的 prompt 类型)。

    我们在附录 A 中提供了关于我们数据集的更多细节。

    {} 表示模板,""" 表示分隔符。

  4. 更多提交给 InstructGPT 模型的 prompt (来自论文附录 A.2.1 )。

  5. 提交给 GPT-3 模型的prompt (来自论文附录 A.2.2 ),通常而言它们更少地 instruction-style 并且包含更显式的 prompting 。注意这里有些 prompt,其中用户意图是不清晰的。

    提交给 GPT-3prompt 和提交给 InstructGPTprompt 是不同的。这是因为我们希望 GPT-3 也是 instruction-following 风格的。

  6. 还有一些关于数据集的统计信息:

25.1.3 任务

  1. 我们的训练任务有两个来源:

    • 由我们的labelers编写的 prompt 数据集。
    • 在我们的 API 上提交给早期 InstructGPT 模型的prompt 数据集(见 Table 6)。

    这些 prompt 非常多样化,包括生成、问答、对话、摘要、抽取、以及其他自然语言任务(见Table 1)。

    我们的数据集超过 96% 是英语,然而接下来我们也探索了我们的模型对其他语言的指令的响应能力、以及完成编码任务。

    对于每个自然语言的 prompt ,任务往往是通过自然语言指令直接指定的(例如 "Write a story about a wise frog"),但也可以通过 few-shot 样本(例如给出两个青蛙故事的例子,并提示模型生成一个新的青蛙故事)、或隐式延续 implicit continuation (例如提供一个关于青蛙故事的开头)来间接指定。在每一种情况下,我们都要求我们的labelers尽力推断出撰写 prompt 的用户的意图,并要求他们跳过任务非常不清晰的 input 。此外,我们的labelers还考虑到隐式意图 implicit intention (如响应的真实性)、以及潜在的有害输出(如,有偏见或有毒的语言),这些由我们提供给他们的指令(见附录 B )和他们的最佳判断来指导。

    因为 labelers 需撰写这些 promptdemonstration (即,人工标注)。

25.1.4 Human data 收集

  1. 为了产生我们的 human demonstration 数据和 human comparison 数据,并进行主要的评估,我们通过 ScaleAI 雇用了一个由大约 40contractors组成的团队。与早期在摘要任务上收集 human preference data 的工作相比,我们的输入跨越了更广泛的任务范围,并且偶尔会包括有争议的敏感话题。我们的目的是选择一批对不同人口群体的偏好敏感、并且善于识别有潜在危害outputlabelers。因此,我们进行了一个筛选测试,旨在衡量labelers在这些方面的表现。我们选择了在这个测试中表现良好的labelers

    • 我们的选择程序如下:

      • 和敏感语言标志的一致性:我们创建了一个 promptscompletions 的数据集,其中一些 promptscompletions 是敏感的(即任何可能引起强烈负面情绪的文本,无论是有毒的、性的、暴力的、判断judgemental 的、政治的等等)。我们自己给这些数据贴上了sensitivity 标签,并测量了我们(指的是论文的 researchers)和 labelers 之间的一致性。

        completiondemonstration 的含义相同,都是针对生成任务来人工撰写的 label

      • ranking 上的一致性:我们把提交给 OpenAI APIprompts 、以及几个 model completions ,让 labelers 按整体质量对 completions 进行排名。我们测量他们与 researcher ranking的一致性。

      • sensitive demonstration 写作:我们创建 sensitive prompts 的一个小集合,在这些 prompts 中,对输出的适当响应需要细微的差别。然后,我们用 1-7Likert scale 对每个 demonstration 进行评分,并计算出每个 labeler 的平均 demonstration score

      • 为不同群体识别敏感语言的自评估能力self-assessed ability :我们希望选择一个 labelers team,他们整体上能够识别广泛领域的敏感内容。由于法律原因,我们不能根据人口统计学标准来雇用contractors。因此,我们让 labelers 回答这个问题:"对于哪些话题或文化群体,你能轻松识别敏感言论?" ,并将此作为我们选择程序的一部分。

      在收集了这些数据后,我们选择了在所有这些标准上表现良好的labelers(我们在匿名的数据版本上进行选择)。由于第四个准则是主观的,我们最终根据这些标准主观地选择了labelers,但是我们也有 soft cutoff (即,过滤阈值):在敏感语言标记、以及 ranking 方面有 75% 的一致性,在sensitive demonstration 写作上获得 6/7 分。

    • labelers人口统计信息:

    更多信息详见论文附录 B.1

  2. 在训练和评估过程中,我们的 alignment 准则可能会发生冲突:例如,当用户请求到一个潜在的有害的 response 时。在训练中,我们优先考虑对用户的帮助性helpfulness(如果不这样做则需要做出一些困难的设计决定,我们把这些决定留给未来的工作)。然而,在我们的最终评估中,我们要求labelers优先考虑真实性truthfulness和无害性harmlessness(因为这才是我们真正关心的)。

  3. 如同 《Learning to summarize from human feedback》,我们在项目过程中与labelers紧密合作。我们有一个入职过程,对labelers进行项目培训,为每项任务编写详细的说明(下图分别为 prompt distributionRealToxicityPrompts distributionfinal evaluations 的指令,详细内容见附录 B.2 ),并在共享聊天室中回答labelers的问题。

  4. 作为一项初步研究来看看我们的模型如何泛化到其它labelers的偏好。我们雇用了一组单独的labelers,他们不产生任何训练数据。这些labelers来自相同的供应商,但没有经过筛选测试。

    尽管任务很复杂,但我们发现labelers之间的一致率相当高:

    • training labelers72.6±1.5% 的时间内相互同意(即,一致率)。
    • held-out labelers 的一致率为 77.3±1.3%
    • 作为比较,在 《Learning to summarize from human feedback》 的摘要工作中,researcher-researcher 的一致率为 73±4%

25.1.5 模型

  1. 我们从 GPT-3 预训练的语言模型开始。这些模型是在互联网数据上训练出来的,可以适应广泛的下游任务,但其行为特征 characterized behavior 不明显。从这些模型开始,我们再以三种不同的技术来训练模型:

    • 监督微调 supervised fine-tuning: SFT:我们使用监督学习在 labeler demonstrations 上监督微调 GPT-3 模型。我们训练了16epochs ,使用余弦学习率衰减,以及 dropout rate = 0.2 。我们根据验证集上的 RM 得分来选择最终的 SFT 模型。

      RM 是怎么来的?根据后面内容的说法,奖励模型 RM 是从 SFT 模型开始,而 SFT 模型又依赖于监督微调,所以这是一个相互依赖的问题。

      在项目开始时,可以先根据验证损失来选择最佳的 SFT 模型,然后再来训练奖励模型,然后再利用训练好的奖励模型再来选择最佳的 SFT 模型。

      《Recursively summarizing books with human feedback》 类似,我们发现我们的 SFT 模型在 1epoch 后在验证损失上过拟合。然而我们发现,尽管有这种过拟合,但训练更多的 epoch 有助于 RM scorehuman preference rating

      注意,尽管验证损失过拟合,但是验证集的奖励分没有过拟合,而这里是根据验证集的奖励分来筛选模型的。

    • 奖励模型 reward modeling: RM:从移除 final unembedding layerSFT 模型开始,我们训练了一个模型来接受 prompt and response ,并输出一个 scalar reward 。在本文中,我们只使用 6BRM ,因为这样可以节省大量的计算量,并且我们发现 175BRM 训练可能不稳定,因此不太适合在 RL 期间作为价值函数 value function 使用(更多细节见附录 C)。

      《Learning to summarize from human feedback》 中,RMcomparison 数据集上训练的,其中 comparison 是模型在同一个输入的两个 output 上得到的。他们使用交叉熵损失,将 comparison 作为标签(奖励的差异代表human labelers偏好一个 output 超过另一个 output 的对数几率 log odds)。

      即,输入 x,y0,y1 ,然后标签为获胜的output 的索引 i ,损失函数为:

      (33)sigmoid(rθ(x,yi)rθ(x,y1i))

      为了加快 comparison 的收集,我们向labelers提供了 Kresponse 来排序,其中 4K9 。对于每个 prompt,这就为labelers提供了 CK2comparisons 。由于每个标注任务中的 comparisons 之间是非常相关的,我们发现:如果我们简单地在数据集中混洗 comparisons ,对数据集的一个 epoch 就会导致奖励模型的过拟合。

      相反,我们将每个 prompt 的所有 CK2comparisons 作为单个样本。这在计算上更有效率,因为它只需要对每个 completion 进行一次前向传播(而不是对 Kcompletion 进行 CK2 次前向传播)。而且,由于它不再过拟合,它实现了 validation accuracyvalidation log loss的大幅提高。

      作为单个样本的话,相当于让模型一次性看到这 Kreponselist-wise 排序,并且模型也尝试学习这个 list-wise 排序。如果作为多个样本并混洗的话,那么模型每次只能看到 pair-wise 排序,从而使得模型学习的是 pair-wise 排序。

      具体而言,奖励模型的损失函数为:

      (34)loss(θ)=1CK2E(x,yw,yl)D[logσ(rθ(x,yw)rθ(x,yl))]

      其中:

      • rθ(x,y) 是在 prompt xcompletion ycompletion 由人工标注)上运行奖励函数的 scalar output,其中奖励函数的参数为 θ
      • yw 是在 pair (yw,yl) 之间好的那个 completion (哪个 completion 更好,也是由人工标注)。
      • Dhuman comparison 的数据,σ()sigmoid 函数。
      • CK2 为从 K 个元素中随机选择 2 个元素的组合数,等于 K×(K1)2!

      最后,由于 RM loss 对奖励的 shift 是不变的,我们使用一个 bias 对奖励模型进行归一化处理,以便在做强化学习之前,labelersdemonstration 的均值为零。

    • Reinforcement learning: RL:再次遵从 《Learning to summarize from human feedback》 , 我们使用 PPO 在我们的环境中微调了 SFT 模型。该 environment 是一个 bandit environment ,它呈现一个随机的customer prompt 并期望对这个 prompt 作出响应。给定 promptresponse ,它产生一个由奖励模型决定的奖励,并结束该 episode 。此外,我们对 SFT 模型增加一个 per-tokenKL 惩罚项,从而缓解奖励模型的过度优化。价值函数 value functionRM 中初始化。我们称这些模型为 "PPO"

      注意,价值函数和奖励函数是分离的,因为奖励函数会在项目过程中被反复地重新训练,而每次重新训练之后就把最新的奖励函数拷贝给价值函数。

      我们还尝试将预训练梯度混合到 PPO 梯度中,从而解决在公共数据集上的性能退化的问题。我们称这些模型为 "PPO-ptx" 。在RL 训练中,我们最大化如下所示的合并的目标:

      (35)objective(ϕ)=E(x,y)DπϕRL[rθ(x,y)βlog(πϕRL(yx)πSFT(yx))]+γExDpretrain[log(πϕRL(x))]

      其中:

      • πϕRL 为学到的 RL 策略,πSFT 为监督微调的模型,ϕ 为策略的参数。

      • Dpretrain 为预训练的数据分布,DπϕRL 为强化学习的数据分布。

      • βKL reward 系数,γ 为预训练损失系数,它们分别控制 KL 惩罚的强度、以及预训练梯度的强度。

        KL reward 会分解到 per-token 粒度来计算:

        (36)log(πϕRL(yx)πSFT(yx))=t=1Tlog(πϕRL(ytx,y<t)πSFT(ytx,y<t))

      对于 PPO 模型,γ=0 。 除非另有说明,本文中 InstructGPT 指的是 PPO-ptx 模型。

      根据最后一项,最大化 objective(ϕ) 要求最大化 πϕRL 在预训练的数据分布 Dpretrain 上的对数似然。这是为了缓解 InstructGPT 在公共数据集上的性能退化问题。

      这里似乎未给出每个 token 的奖励,而是给出当前状态的价值(即,rθ(x,y) )。

  2. baseline

    • 我们将 PPO 模型的性能与 SFT 模型、以及 GPT-3 进行比较。

      我们也比较了 GPT-3 ,我们为 GPT-3 提供一个 few-shot prefix ,从而 "prompt" 它进入 instruction-following 模式(GPT-3-prompted )。这个前缀被添加到 user-specified 的指令中。

    • 我们还在 FLANT0 数据集上比较了 InstructGPT175B GPT-3 的微调。

      对于 InstructGPT 是强化学习微调,对于 GPT-3 是监督微调。

      这两个数据集都由各种自然语言处理任务组成,每个任务都有自然语言指令(这些数据集在所包含的NLP 数据集、以及所使用的指令风格上有所不同)。我们分别在大约 1M 个样本上对它们进行微调,并选择在验证集上获得最高奖励模型得分的 checkpoint

25.1.6 模型训练细节

  1. 所有模型遵循的配置:

    • 所有模型都使用 GPT-3 架构,以及与 GPT-3 相同的 BPE 编码。
    • 对于奖励模型和价值函数,原始模型的 unembedding layer 层被替换为投影层从而以输出一个标量值(注,价值函数作为奖励模型的最新版本的副本)。
    • 所有模型都使用 fp16 权重和 activation ,权重的 master 副本为 fp32
    • 我们所有的语言模型和 RL 策略的上下文长度都是 2k token 。我们过滤掉长于 1k tokenprompt ,并将最大响应长度限制在 1k token
    • 所有的模型都是用 Adam 优化器训练的,β1=0.9,β2=0.95
  2. SFT 训练:

    • 我们训练我们的SFT 模型 16epoch ,其中 residual dropout = 0.2

    • 我们使用 cosine LR schedule ,在训练结束时降至原始学习率的10% ,没有 learning rate warmup

      • 对于我们的 1.3B6B 模型,我们使用 9.65e-6的初始学习率和 batch size = 32
      • 对于 175B 模型,我们使用 5.03e-6 的初始学习率和 batch size = 8

    为了选择学习率,我们对1.3B6B 模型几何搜索geometric search7 个学习率、对 175B 模型搜索了 5 个学习率。我们还用几何搜索调优了 epoch 数量。我们最终的模型是根据奖励模型的分数来选择的,我们发现与验证损失相比,奖励模型的分数对human preference 结果更predictive

  3. RM 训练:我们训练了一个单一的 6B 奖励模型,我们将其用于所有大小的 PPO 模型。较大的 175B 奖励模型有可能实现较低的验证损失,但是它存在两个问题:

    • 首先,它们的训练更不稳定,这使得它们不适合作为 PPO 价值函数的初始化。
    • 其次,使用175B 奖励函数和价值函数大大增加了 PPO 的计算要求。

    在初步实验中,我们发现 6B 的奖励模型在广泛的学习率范围内是稳定的,并导致同样强大的PPO模型。

    最终的奖励模型是从一个 6B GPT-3 模型初始化的,该模型在各种公共 NLP数据集( ARC, BoolQ, CoQA, DROP, MultiNLI, OpenBookQA, QuAC, RACE, Winogrande )上进行了微调。我们选择从 GPT-3 初始化而不是 SFT 初始化,主要是出于历史原因:当从 GPT-3SFT 模型初始化 RM 时,我们发现结果是类似的。

    我们在完整的奖励模型训练集(见Table 6 )上训练了单个 epoch,学习率为 9e-6 ,采用 cosine learning rate schedule (在训练结束时下降到其初始值的 10% ),batch size = 64

    训练似乎对学习率或 schedule 不是很敏感。改变学习率高达50% 时,导致类似的性能。

    训练对 epoch 数量相当敏感:多个 epoch 很快就会使模型与训练数据过拟合,验证损失显著恶化。

    这里的 batch size 代表每个 batch 中不同 prompt 的数量。每个 promptKlabeled completions4K9 ),其中有多达 CK2 个可能的comparisons 。平局被丢弃(即,无法进行比较的)。因此,一个 batch 中最多可以包含 64×CK2<=2304comparisons

  4. 用于 RLHFinitialization models

    • 我们从预训练的 GPT-3 模型中初始化 RLHF 模型,并在 demonstration 数据集上应用监督微调 2epoch

    • 在微调过程中,我们还混入了 10% 的预训练数据,因为我们发现这对 PPO 训练有帮助。

      这是为了缓解 InstructGPT 在公开数据集上的性能退化问题。

    • 我们使用cosine learning rate schedule ,学习率最终衰减到峰值学习率的 10% 。我们对每个模型的几个不同的峰值学习率进行比较,并挑选出同时在 demonstration 验证集和预训练验证集上损失较低的一个。

      我们对 1.3B6B 模型的 5 个学习率进行了对数线性扫描,对 175B 模型的 3 个学习率进行了对数线性扫描。针对 1.3B6B175B 模型找到的学习率分别为 5e-61.04e-52.45e-6

      注意,这里除了考虑 demonstration 验证集之外,我们还考虑了预训练验证集,后者是为了缓解 InstructGPT 在公开数据集上的性能退化问题。

    • 我们对1.3B6B模型使用 batch size = 32 ,对 175B 模型使用 batch size = 8

    为什么不直接用 SFT (监督微调模型)来初始化 RLHF ?这是因为监督微调模型并未考虑预训练数据,因此在公开数据集上存在性能退化问题。

  5. RLHF 训练:然后,我们从上述带有 pretraining mix 的监督微调模型中初始化 RL 策略。这些模型也被用来计算 KL reward ,方法与 《Learning to summarize from human feedback》相同,其中 β=0.02

    我们为所有的 RL 模型训练了 256Kepisodes 。在过滤掉带有 PIIprompts 和重复的 prompts(基于公共前缀来判断重复)之后,这些episodes 包括大约 31K 个不同的 prompts 。每次迭代的 batch size = 512 ,其中 minibatch size = 64 。换句话说,每个 batch 被随机分成8minibatch ,并且仅训练了单个 inner epoch《Proximal policy optimization algorithms》)。

    我们采用常数学习率,并且在前 10 次迭代中从学习率峰值的十分之一开始应用预热。应用权重的指数移动平均,衰减率为 0.992

    我们在估计generalized advantage 时不应用折扣(《High-dimensional continuous control using generalized advantage estimation》)。PPOclip ratio = 0.2 ,针对 rolloutssampling temperature = 1

    即:0.2πϕRL(yx)πϕoldRL(yx)10.2 ,这约束了策略更新不能太大。

    rollouts 指的是一段轨迹,它用于 inner epoch

    如前所述,对于所有 PPO 模型,我们使用 6B 的奖励函数和 6B 的价值函数,后者由前者初始化。通过在所有模型规模的策略上使用相同的 6B 奖励模型和价值函数,更容易比较策略模型规模对策略性能的影响。对于 1.3B6B 的策略模型,用于价值函数的固定学习率为 9e-6 ;对于 175B 的策略,用于价值函数的固定学习率为 5e-6

    策略函数的学习率是多少?论文并没有提到。猜测这里是用于策略函数的学习率,而不是价值函数的学习率(价值函数来自于奖励模型)。

    我们最初的 RLHF 实验显示了在公共自然语言处理数据集上的退化(如 SQuADv2DROP ),我们通过在 PPO 训练中混合预训练梯度来缓解退化。我们使用的预训练样本是 RL 训练 episodes 数量的 8 倍。预训练数据是从用于训练 GPT-3 模型的数据集中随机采样的。对于每个 minibatch ,我们以连续的 steps 计算 PPO 梯度和预训练梯度,并将它们都累积到 gradient buffers 。我们将预训练梯度乘以一个系数 γ=27.8 ,从而控制来自 PPO distributionpretraining distribution 的梯度的相对强度。

  6. FLAN 模型和 T0 模型:我们通过在 FLAN 数据集和 T0 数据集上微调 175B GPT-3 模型来获得我们的 FLAN baselineT0 baseline

    注意,这些模型不是用于 FLAN/T0 任务的评估,而是用于 API prompt distribution 上的评估。

    对于 T0,请注意我们是在 T0++ 版本的数据集上训练的。因为 T0 包含的数据( 96M 个数据点)比 FLAN1.2 M个数据点)多得多,所以我们对 T0 进行了采样,使其达到 1M 个数据点,从而使每个模型的训练数据量具有可比性。请注意,原始模型是在数据点可以重复的 epoch 上进行训练的,但在我们的 epoch 中,我们经历了每个数据点而没有重复(即,仅训练一个 epoch,从而更好地匹配我们训练 SFT baseline 的方式)。

    我们应用了 cosine learning rate schedule ,并对每个数据集尝试了 4e-66e-6 的初始学习率。学习率在训练结束时衰减到其峰值的 10% ,我们在两个实验中都使用了 batch size = 64 。为了选择最佳的 FLAN checkpoint,我们使用我们的 6B 奖励模型对 prompt 验证集的 completion 进行进行打分,如下图所示。我们挑选了奖励模型分数最高的 checkpoint 进行 human eval ,也就是在学习率为4e-6、训练了 896K 个样本的 checkpoint

    我们进行了两个类似的实验来寻找最佳的 T0 checkpoint

    • 在一个实验中,我们使用了 batch size = 128、学习率为 4e-61.28M 个样本。
    • 另一个实验使用了 batch size = 64、学习率为 6e-61M 个样本。

    再一次地,我们使用奖励模型进行打分。我们从第一个实验选择了 checkpoint,其中这个 checkpoint 是训练了 896K 个样本得到的。

25.1.7 评估

  1. 为了评估我们的模型是如何 "aligned"的,我们首先需要澄清在该上下文中 alignment 是什么意思。alignment 的定义历来是一个模糊和混淆的话题,有各种相互竞争的提法 proposal 。遵从 《Scalable agent alignment via reward modeling: a research direction》,我们的目标是训练符合用户意图的模型。更实际的是,对于我们的语言任务的目标,我们使用了一个类似于 《A general language assistant as a laboratory for alignment》的框架,他们定义模型如果是有帮助 helpful 的、诚实 honest 的和无害 harmless 的,那么模型就是 aligned 的。

    • 为了是 helpful 的,模型应该遵循指令,但也可以从 few-shot prompt 或另一个 interpretable pattern (如,"Q: {question}\nA:")中推断出意图。

      由于一个给定prompt 的意图可能是不明确的或模糊的,我们依靠我们的labelers的判断,并且我们的主要指标是labelerspreference rating 。然而,由于我们的labelers不是产生prompt 的用户,因此用户的实际意图和labelers的意图(labelers仅仅阅读 prompt 并认为该 prompt 所代表的意图)之间可能会有分歧。

    • 目前还不清楚如何衡量纯粹的生成模型的诚实性honesty :这需要比较模型的实际输出、以及模型对正确输出的 "belief",而由于模型是一个大黑箱所以我们无法推断模型的 belief

      相反,我们用两个指标来衡量真实性(即,模型关于世界的 statement 是否真实):

      • 评估我们的模型在封闭域任务 closed domain task 中编造信息的倾向(即,"幻觉hallucination")。
      • 使用 TruthfulQA 数据集。

      不用说,这仅仅抓住了真实性实际含义的一小部分。

    • 与诚实性类似,测量语言模型的危害性 harm 也带来了许多挑战。在大多数情况下,语言模型的危害取决于其输出在现实世界中的使用方式。例如,一个产生有毒输出的模型在 deployed chatbot 的上下文中可能是有害的,但如果用于数据增强以训练更准确的毒性检测模型则甚至可能是有益的。

      在项目的早期,我们让labelers评估一个输出是否是 "潜在有害的"。然而,我们停止了这一做法,因为它需要对输出结果最终如何使用进行过多的猜测,尤其是我们的数据是来自与 Playground API 接口互动的用户(而不是来自生产中的 use case )。

      因此,我们使用了一套更具体的代理准则,旨在捕捉被部署的模型中可能最终有害行为的不同方面:我们让labelers评估一个输出在 customer assistant 的上下文中是否不合适,是否诋毁了受保护的阶层,或包含性或暴力内容。我们还在旨在衡量偏见和毒性的数据集(如 RealToxicityPrompts )上对我们的模型进行了基准测试。

  2. 总而言之,我们可以把定量评价分为两个独立的部分:

    • API distribution 上的评估:我们的主要指标是在 held outprompt 集合上的 human preference rating ,其中这个 held out 集合来自于我们训练集相同的数据源(即,OpenAI API )。

      当使用来自 APIprompt 进行评估时,我们仅选择训练期间未见过的用户所产生的 prompt 。然而,鉴于我们的 training prompt 被设计为与 InstructGPT 模型一起使用,它们很可能不利于 GPT-3 baseline 。因此,我们也对提交给 GPT-3 APIprompt 进行了评估:这些 prompt 通常不是 "instruction following" 的风格,而是专门为 GPT-3 设计的。

      在这两种情况下,对于每个模型,我们计算它的输出比 baseline policy 更受欢迎的频率。我们选择我们的 175B SFT 模型作为 baseline,因为它的性能接近中间水平。此外,我们要求labelers1-7 分来判断每个响应的整体质量,并为每个模型输出收集一系列元数据(如下表所示)。

    • 对公共 NLP数据集的评估:我们在两类公共数据集上进行评估:

      • 一类是捕捉语言模型安全性的某个方面,特别是真实性、毒性、以及偏见。
      • 另一类是捕捉传统自然语言处理任务的 zero-shot 表现,如问答、阅读理解、以及摘要。

      我们还对 RealToxicityPrompts 数据集的毒性进行了人工评估。我们在所有sampling-based 的自然语言处理任务上发布我们模型的样本。

25.2 结果

25.2.1 API distribution 上的结果

  1. GPT-3 的输出相比,labelers明显更喜欢 InstructGPT 的输出。

    • 结果如下图所示,可以看到(每个都是和 SFT 175B 进行比较,并且是在 training labelers 上评估的):

      • GPT-3 的输出表现最差。
      • 通过使用精心制作的 few-shot prompt 可以得到显著的效果提升(GPT-3 (prompted))。
      • 通过使用监督学习在 demonstrations 上监督微调可以进一步提升效果(SFT)。
      • 通过使用 PPOcomparison 数据上训练的效果更好。
      • PPO 期间增加对预训练的更新(即,PPO-ptx)并不会导致labelers偏好的巨大变化。

      为了说明我们收益的大小:当直接比较时,175B InstructGPT 的输出有 85±3% 的时间优于 GPT-3 的输出、有 71±4% 的时间优于 few-shot GPT-3

    • 我们还发现(每个都是和 SFT 175B 进行比较):针对提交给 GPT-3 APIprompts 进行评估时,我们的结果没有明显变化(如下图所示),尽管我们的 PPO-ptx 模型在较大的模型规模下表现略差。

      上半部分为 heldout labelers、下半部分为 training labelers ;左半部分为 GPT prompts、右半部分为 InstructGPT prompts

    • 在下图中,我们显示,labelers也对 InstructGPT 的输出在几个更具体的维度进行了有利的评价。

      具体来说,与 GPT-3 相比,InstructGPT 的输出在 customer assistant 的上下文中更合适,更经常地遵循指令中定义的明确约束(例如 "Write your answer in 2 paragraphs or less."),更不可能完全不遵循正确的指令,并且在封闭域的任务中编造事实("幻觉")的频率更低。

      这些结果表明,InstructGPT 模型比 GPT-3 更可靠、更容易控制。我们发现,我们的其他元数据类别 metadata category 在我们的 API 中出现的频率太低,以至于我们的模型之间无法获得统计学上的显著差异。

  2. 我们的模型泛化了 held-out labelers(他们没有产生任何训练数据)的偏好。

    held-out labelers 与我们用来产生训练数据的training labelers有类似的排名偏好(如下图所示,每个都是和 SFT 175B 进行比较)。具体而言,根据 held-out labelers ,我们所有的 InstructGPT 模型仍然大大超过了 GPT-3baseline 。因此,我们的 InstructGPT 模型并不是简单地对我们的training labelers的偏好进行过拟合。

    我们从我们的奖励模型的泛化能力中看到了进一步的证据。我们做了一个实验:将labelers分成 5 组,用5 折交叉验证(在其中4组上训练,在held-out组上评估)来训练 5 个奖励模型(用 3 个不同的种子)。这些奖励模型在预测 held-out 组中labelers的偏好时,准确率为 69.6±0.9% ,与预测其训练集中labelers的偏好时的 72.4±0.4% 的准确率相比略有下降。

  3. 公共自然语言处理数据集并不能反映出我们的语言模型的使用情况。

    在下图中,我们还将 InstructGPT 与我们在 FLANT0 数据集上微调的 175B GPT-3 基线进行比较。我们发现,这些模型的表现比 GPT-3 好、与GPT-3 prompted 相当、而比我们的 SFT baseline 差。这表明这些数据集没有足够的多样性从而在 API prompt distribution 上提高性能。

    在一对一比较中,我们的 175B InstructGPT 模型输出在 78% 的时间里比 FLAN 模型更受欢迎,在 79% 的时间里比 T0 模型更受欢迎。

    我们相信我们的 InstructGPT 模型优于 FLANT0 的原因有两个:

    • 首先,公共自然语言处理数据集的设计是为了捕捉那些容易用自动化指标 automatic metric 评估的任务,如分类、问答,以及某种程度的摘要和翻译。然而,分类和问答仅占 API 客户使用我们语言模型的一小部分(约 18% ),而根据labelers的说法,开放式生成 open-ended generation 和脑暴 brainstorming 约占我们 prompt dataset57% (见Table 1)。
    • 其次,公共自然语言处理数据集可能很难获得非常高的输入多样性(在真实世界用户感兴趣的输入种类上)。当然,在自然语言处理数据集中发现的任务确实代表了一种我们希望语言模型能够解决的指令,所以最广泛类型的 instruction-following 模型将结合两种类型的数据集(即,公共资源语言数据集、API prompt distribution 数据集)。

25.2.2 公共 NLP 数据集上的结果

  1. InstructGPT 模型在真实性方面比 GPT-3 有所改进。

    • 根据人类对 TruthfulQA 数据集的评估,与 GPT-3 相比,我们的 PPO 模型在生成真实的和 informative 的输出方面表现出小、但是明显的改进(如下图所示)。这种行为是默认的:我们的模型不需要被特别指示说真话就能表现出改进的真实性。

      有趣的是,我们的 1.3B PPO-ptx 模型是个例外,它的表现比相同规模的 GPT-3 模型略差。

      当仅仅对没有针对 GPT-3 进行对抗性选择的 prompt 进行评估时,我们的 PPO 模型仍然明显比 GPT-3 更真实,更 informative (尽管绝对改进减少了几个百分点)。

      这里指的是针对 GPT-3prompt,而不是针对 InstructGPTprompt

    • 遵从 《Truthfulqa: Measuring how models mimic human falsehoods》,我们也给出了一个有用的 "Instruction+QA"prompt,该 prompt 指示模型在不确定正确答案的时候用 "I have no comment" 来回应。

      在这种情况下,我们的 PPO 模型真实但是 uninformative ,而不是自信地说出假话。baselineGPT-3 模型在这方面没有那么好。

      在右图中可以看到,PPO 模型的真实性大幅提升(灰色柱体)。

    我们在真实性方面的改进还体现在我们的 PPO 模型在 API distribution 的封闭域任务中产生幻觉(即编造信息)的频率较低,我们在 Figure 4 中(Hallucinations 指标)显示了这一点。

  2. InstructGPT在毒性方面比GPT-3有小的改进,但没有偏见。

    • 我们首先在 RealToxicityPrompts 数据集上评估我们的模型。我们通过两种方式进行:

      • 我们通过 Perspective API 运行模型样本,以获得自动的毒性分,这是该数据集的标准评估程序。
      • 我们还将这些样本发送给labelers,以获得对绝对毒性、相对于prompt 的毒性、连续性、以及整体输出偏好分。

      我们根据 prompt toxicity 对该数据集的 prompt 进行均匀采样,以更好地评估我们的模型在高 input toxicity 下的表现。这与该数据集的标准 prompt sampling 不同,因此我们的绝对毒性数字被夸大了。

      我们的结果如下图所示。我们发现:

      • 当被指示产生一个安全和尊重的输出("respectful prompt")时,InstructGPT 模型产生的毒性输出比根据 Perspective APIGPT-3 的输出要少。
      • respectful prompt 被移除时("no prompt"),这一优势就消失了。

      respectful prompt 的例子:

      biased prompt 的例子:

    • 有趣的是,当明确提示产生一个有毒的输出时(即,biased prompt ),InstructGPT 的输出比 GPT-3 的输出更有毒(如下图所示)。

    • 这些结果在我们的 human evaluations 中得到了证实。在 respectful promptsetting下,InstructGPT 的毒性比GPT-3小,但在 no prompt 的情况下二者表现相似。我们在论文附录 E 中提供了扩展结果。总结一下:

      • 给定 prompt 的情况下,我们所有的模型都被评估为比预期更少的毒性(它们在 -11的范围内得到一个负分,其中 0 表示与预期的毒性差不多)。
      • 我们的 SFT baseline 是所有模型中毒性最小的,但也是连续性最低的,在我们的排名中也是最不受欢迎的,这可能表明该模型产生了非常短的或退化的响应。
    • 为了评估该模型产生有偏见的发言的倾向(见论文附录 E ),我们还在 WinogenderCrowS-Pairs 数据集的修改版本上评估了InstructGPT。这些数据集由成对的句子组成,可以突出 potential bias 。我们计算产生每对句子的相对概率和相关二元概率分布的熵(以比特为单位)。完全无偏的模型在每对句子之间没有偏好,因此会有最大的熵。

      根据这一指标,我们的模型并不比 GPT-3 的偏见更小。PPO-ptx 模型显示出与GPT-3 类似的偏见,但在respectful promptsetting 下,它表现出较低的熵,因此有较高的偏见。

      偏见的模式并不清楚:似乎 instructed 模型对它们的输出更有把握,不管它们的输出是否表现出刻板的行为stereotypical behavior

  3. 我们可以通过修改我们的 RLHF 微调程序,将公共自然语言处理数据集上的性能退化降到最低。

    默认情况下,当我们在 API distribution 上训练 PPO 模型时,它会受到 "alignment tax" 的影响,因为它在几个公共自然语言处理数据集上的性能会下降。我们希望有一个能够避免 alignment taxalignment procedure ,因为它能够激励我们使用那些unaligned 、但是在这些任务上更有能力的模型。

    在下图中,我们显示:

    • 在我们的 PPO 微调中加入预训练更新(即,PPO-ptx),可以缓解所有数据集上的这些性能退化,甚至在HellaSwag 上超过了 GPT-3
    • DROPSQuADv2 、以及翻译上,PPO-ptx模型的性能仍然落后于GPT-3

    需要做更多的工作来研究并进一步消除这些性能退化。

    把预训练更新混合进来,要比增加 KL 系数这一更简单的解决方案表现得更好。在Figure 33 中,我们显示:

    • 存在一个预训练混合系数的值,它既能扭转 SQuADv2DROP 上的性能退化,又能使验证奖励的减少幅度最小。
    • 相反,增加 KL 系数(Figure 34 )会导致验证奖励的显著减少,并且在 DROPSQuAD 上从未完全恢复性能。

    KL modelPPO init 改成 GPT-3 ,也有类似的结果。

25.2.3 定性的结果

  1. InstructGPT 模型对 RLHF finetuning distribution 之外的指令展示出有前景的通用性。

    具体而言,我们发现 InstructGPT 展示出遵循non-English 语言的指令的能力,并针对 code 进行总结和问答。这很有意思,因为non-English语言和 code 在我们的微调数据中只占极少数,而且这表明:在某些情况下,alignment 方法可以泛化到在输入上产生所需的行为,其中这些输入并没有人类的监督信息。

    我们没有对这些行为进行定量跟踪,但我们在下图中展示了一些定性的例子。我们的 175B PPO-ptx 模型能够可靠地回答关于 code 的问题,也能遵循其他语言的指令。然而,我们注意到:即使指令是其他语言的,它也经常产生英语的输出。相比之下,我们发现GPT-3 能完成这些任务,但需要更仔细的 prompting ,而且很少遵循这些领域的指令。

  2. InstructGPT 仍然会犯简单的错误。

    在与我们的 175B PPO-ptx 模型互动的过程中,我们注意到它仍然会犯一些简单的错误,尽管它在许多不同的自然语言任务上表现很强。举几个例子:

    • (1):当给定一个有错误前提 premise 的指令时,该模型有时会错误地假定前提是真的。
    • (2):该模型可以过度 hedge :当给定一个简单的问题时,它有时会说这个问题没有单个答案而是给出多个可能的答案,即使从上下文来看有一个相当明确的答案。
    • (3):当指令包含多个明确的约束条件时,该模型的性能会下降(例如:"list 10 movies made in the 1930’s set in France")。或者当约束条件对语言模型具有挑战性时(例如,指定句子数量来写一个摘要),模型的性能就会下降。

    我们下图中展示了这些行为的一些例子。

    • 我们怀疑行为 (2) 的出现部分是因为我们指示labelers奖励认知谦逊 epistemic humility ,因此labelers可能倾向于奖励hedge 的输出,而这被我们的奖励模型所发现。
    • 我们怀疑行为 (1) 的出现是因为在训练集中很少有错误前提的prompt ,而我们的模型对这些例子(即错误前提的 prompt),没有很好的泛化。

    我们相信这两种行为都可以通过对抗性的数据收集而大大减少(《Build it break it fix it for dialogue safety: Robustness from adversarial human attack》)。

25.3 讨论

  1. 针对 alignment research 的影响:这项研究是我们更广泛的研究计划的一部分,以使人工智能系统 align to 人类的意图。即使这项工作专注于我们目前的语言模型系统,我们也在寻求适用于未来人工智能系统的 general 的和 scalable 的方法。我们在这里工作的系统仍然相当有限,但它们是当今最大的语言模型之一,我们将它们应用于广泛的自然语言任务,包括分类、摘要、问答、创意写作、对话、以及其它任务。

    我们在这项工作中的 alignment research 的方法是迭代式的:我们正在改进当前人工智能系统的 alignment ,而不是抽象地关注尚未存在的人工智能系统的 alignment 。这种方法的一个缺点是,我们没有直接面对只有在 align 超人类系统 superhuman system 时才会出现的 alignment 问题 。然而,我们的方法确实为我们提供了一个清晰的经验反馈循环 feedback loop ,即什么有效、什么无效。我们相信,这种反馈循环对于完善我们的 alignment 技术至关重要,它迫使我们与机器学习的进展保持同步。此外,我们在这里使用的 alignment 技术(即,RLHF)是 align 超人类系统 align superhuman system 的几个 proposal 中的重要构件。例如,RLHF 是最近关于在 summarizing books 上的工作中的一个核心方法,这项任务表现出 align 超人类人工智能系统的一些困难,因为人类很难直接评估(《Recursively summarizing books with human feedback》)。

    从这项工作中,我们可以为更通用的alignment research 吸取教训:

    • 相对于预训练而言,增加 model alignment 的成本并不高。收集我们的数据的成本、以及训练的计算成本(包括运行实验的成本),只是训练 GPT-3 的一小部分:训练我们的 175B SFT 模型需要 4.9 petaflops/s-day ,训练我们的 175B PPO-ptx 模型需要 60 petaflops/s-day ,而训练 GPT-3 需要 3640 petaflops/s-day

      同时,我们的结果显示:RLHF 在使语言模型对用户更有帮助方面非常有效,比模型规模增加 100 倍更有效。这表明:目前,增加对现有语言模型的 alignment 的投资,要比训练更大的模型更有性价比,至少对于我们客户的自然语言任务分布 natural language task distribution 来说是这样。

    • 我们已经看到一些证据表明:InstructGPT 可以将 "following instructions" 推广到我们没有监督指令的 setting 中,例如在non-English 语言任务和 code-related 的任务中。这是一个重要的属性,因为让人类监督每一项任务都是非常昂贵的。需要更多的研究来研究这种泛化性如何随着模型容量的增加而 scale 。关于这个方向的最新研究,见 《Eliciting latent knowledge: How to tell if your eyes deceive you》

    • 我们能够缓解我们的微调所带来的大部分性能下降。如果不是这样的话,这些性能下降将构成alignment tax(即,align 模型的额外成本)。任何具有高税收的技术都可能不会被采用。为了激励未来高能力的人工智能系统保持 align to 人类意图,需要有 low alignment taxalignment 技术。为此,我们的结果对 RLHF 作为一种 low-taxalignment 技术来说是个好消息。

    • 我们已经从现实世界的研究中验证了 alignment 技术。alignment research 在历史上是相当抽象的,聚焦于理论结果、小的合成领域synthetic domain、或在公共自然语言处理数据集中训练机器学习模型。我们的工作为人工智能系统的 alignment research 提供了基础,这些系统正在现实世界中与客户一起在生产中使用。这使得技术的有效性和局限性有了一个重要的反馈循环。

  2. 我们和谁 align:当将语言模型 align to 人的意图时,语言模型的最终行为是底层模型underlying model (及其训练数据)、微调数据、以及所使用的 alignment 方法的函数。在本节中,我们描述了一些具体的影响微调数据的因素,以最终确定我们与什么进行 aligh、以及和谁 alighn 。然后,我们考虑了需要改进的地方。

    文献通常使用 "human preferences""human values" 这样的术语来界定 alignment 。在这项工作中,我们针对一组labelers的偏好进行 aligh ,这些偏好受到了labelers所得到的指令、他们接受指令的上下文(作为一份有偿工作)、以及发出指令的人(即,researchers)的影响。一些关键的注意事项是适用的:

    • 首先,我们 align to demonstrationspreferences ,其中这些 demonstrationspreferencestraining labelers 所提供,而这些 training labelers 直接产生了我们用来微调模型的数据。我们在附录 B 中描述了我们的labelers的雇用过程和人口统计学。一般而言,他们大多是居住在美国或东南亚的说英语的人,通过 UpworkScale AI 雇用的。他们在许多样本上意见相左:我们发现labelers之间的一致率约为 73%

    • 第二,我们也 align to 我们(指的是论文的作者)的 preferences ,作为设计这项研究 的researchers (因此也代表了我们更广泛的研究组织 OpenAI):

      • 我们编写了标注指令 labeling instructionslabelers 在编写 demonstrations 、以及选择他们喜欢的输出时将标注指令作为指导。
      • 此外,我们在共享聊天室中回答他们关于 edge cases 的问题。

      关于不同的指令集和界面设计对从 labelers 那里收集的数据的确切影响、以及对模型行为的最终影响,还需要更多的研究。

    • 第三,我们的训练数据是由 OpenAI 客户向 OpenAI API Playground 上的模型发送的 prompts 决定的,因此我们隐含地 align to 客户认为有价值的东西(或者在某些情况下,这些客户的目前使用 API 的终端用户认为是有价值的)。

      客户或他们的终端用户可能不同意,或者客户可能没有为终端用户的福祉进行优化。例如,客户可能想要一个模型,使用户在其平台上花费的时间最大化,这不一定是终端用户想要的。在实践中,我们的 labelers 并不了解特定的 promptcompletion 会在什么情况下被看到。

      注意,这里提到的客户和终端用户代表不同的主体,可能具有不同的利益。而在正文部分,我们将客户、用户都认为是相同的概念。

    • 第四,OpenAI 的客户并不代表所有潜在或当前的语言模型用户,更不用说受语言模型使用所影响的所有个人和群体。在这个项目的大部分时间里,OpenAI API 的用户都是从一个 waitlist 中挑选出来的。这个 waitlist 的最初种子是 OpenAI 的员工,使得最终的用户群体偏向于我们自己的社交网络。

    退一步讲,在设计一个公平、透明、有合适的问责机制的 alignment 过程中,有很多困难。本文的目标是证明这种 alignment 技术可以为特定的应用 align to 一个特定的人类参考群体。我们并不是说researchers、我们雇用的 labelers 或我们的 API customers 是正确的偏好来源。有许多利益相关者需要考虑:训练模型的组织、使用模型开发产品的客户、这些产品的终端用户、以及可能直接或间接受到影响的更多人群。这不仅仅是一个使 alignment 过程更具参与性的问题。我们不可能一下子训练出一个符合每个人偏好的系统,也不可能让每个人都认可这种权衡。

    前进的道路之一是可以训练以某些群体的偏好为条件的模型,或者可以很容易地进行微调或 prompted 从而代表不同的群体。然后,不同的模型可以被支持不同价值观的群体部署和使用。然而,这些模型最终可能还是会影响到更广泛的社会,而且有很多困难的决定要做,涉及到以谁的偏好为条件,以及如何确保所有群体都能被代表,并能选择退出可能有害的process

  3. 局限性:

    • 方法论:我们的InstructGPT 模型的行为,部分地由从我们的contractors那里获得的human feedback 所决定。一些标注任务依赖于价值判断,这些价值判断可能受到我们的contractors的身份、信仰、文化背景、以及个人历史的影响。我们雇用了大约 40contractors,以他们在筛选测试中的表现为指导,该测试旨在判断他们对sensitive prompts 的识别和反应能力,以及他们与researchers在有详细说明的标注任务中的一致率(见附录 B )。

      我们保持了小规模的contractors团队,因为与小规模的contractors团队更有利于进行高效的沟通。然而,这个小团队显然不能代表将使用我们部署的模型并受其影响的全部人群。作为一个简单的例子,我们的 labelers 主要是讲英语的,我们的数据几乎完全由英语指令组成。

    • 模型:我们也有很多方法可以改进我们的数据收集的 setting 。例如,由于成本的原因,大多数的 comparisons 只由一个contractor来标注。对样本进行多次标注可以帮助识别我们的contractors有分歧的地方,从而帮助识别出单个模型无法 align to 所有的样本的地方。

      在有分歧的情况下,align to 平均 labeler preference 可能不可取。例如,在生成对少数群体影响过大的文本时,我们可能希望属于该群体的 labelers 的偏好得到更多的重视。

  4. 开放性问题:这项工作是使用 alignment 技术对语言模型进行微调以遵循各种指令的第一步。为了进一步使语言模型的行为 align to 人们实际希望它们做的事情,有许多开放性问题需要探索:

    • 可以尝试许多方法来进一步减少模型产生有毒的、有偏见的、或其他有害输出的倾向。例如:

      • 我们可以使用一种对抗性的设置,让 labelers 找到模型的最坏情况下的行为,然后将其标注并添加到数据集中(《Build it break it fix it for dialoguesafety: Robustness from adversarial human attack》)。
      • 人们还可以将我们的方法与过滤预训练数据的方法结合起来(《Mitigating harm in language models with conditional-likelihood filtration》),要么用于训练初始的预训练模型,要么用于我们 pretraining mix 方法的数据。
      • 同样,可以将我们的方法与提高模型真实性的方法相结合,比如 WebGPT《Webgpt: Browser-assisted question-answering with human feedback》)。
    • 在这项工作中,如果用户要求一个潜在的有害或不诚实dishonest 的响应,我们允许我们的模型生成这些输出。训练我们的模型,使其不顾用户的指令而无害是很重要的,但也很困难,因为一个输出是否有害取决于它的部署环境。例如:使用语言模型生成有毒的输出从而作为数据增强 pipeline 的一部分,可能是有益的。我们的技术也可以应用于使模型拒绝某些用户指令,我们计划在这项研究的后续迭代中对此进行探索。

    • 让模型做我们想做的事与可引导性 steerability 和可控性 controllability 文献直接相关。一个有前途的未来道路是将RLHF 与其他可控性方法相结合,例如使用控制代码 control codes《Ctrl: A conditional transformer language model for controllable generation》),或者在推断时使用更小的模型来修改采样程序(《Plug and play language models: A simple approach to controlled text generation》)。

    • 虽然我们主要关注 RLHF,但还有许多其他算法可以用来在我们的 demonstrationcomparison 数据上训练策略,以获得更好的结果。例如:

      • 人们可以探索 expert iteration ,或更简单的 behavior cloning 方法,它们使用 comparison 数据的一个子集。
      • 人们还可以尝试带约束的优化方法(《Constrained policy optimization》),使得在产生少量有害行为的条件下最大化奖励模型得分。
    • comparisons 也不一定是提供 alignment 信号的最有效方式。例如,我们可以让labelers 编辑模型响应使其变得更好,或者用自然语言来生成对模型响应的批评。在设计labelers 向语言模型提供反馈的界面方面,也有很大的选择空间,这是一个有趣的人机交互问题。

    • 我们提出的通过将预训练数据纳入 RLHF 微调来减轻 alignment tax 的建议,并不能完全解决性能退化,而且可能使某些任务更有可能出现某些不理想的行为(如果这些行为存在于预训练数据中)。这是一个值得进一步研究的领域。

      另一个可能改进我们方法的修改是过滤 pretraining mix 数据中的有毒内容(《Mitigating harm in language models with conditional-likelihood filtration》),或者用合成指令 synthetic instruction 来增强这些数据。

    • 正如 《Artificial intelligence, values, and alignment》 所详细讨论的那样, align to 指令、意图、暴露的偏好、理想的偏好、兴趣、以及价值观,这些之间存在着微妙的差异。 《Artificial intelligence, values, and alignment》主张采用基于原则 principle-basedalignment 方法:换句话说,要确定 "尽管人们的道德信仰存在广泛的差异,但得到反思性认可的公平的对齐原则"("fair principles for alignment that receive reflective endorsement despite widespread variation in people’s moral beliefs")。 在我们的论文中,为了简单起见,我们 align to 被推断的用户意图,但在这个领域还需要更多的研究。事实上,最大的开放性问题之一是如何设计一个透明的 alignment 过程,有意义地代表受技术影响的人,并以一种在许多群体中达成广泛共识的方式综合 synthesizes 人们的价值观。

  5. 更广泛的影响:我们的目标是,通过训练大型语言模型来让它们做一组特定人类希望它们做的事情从而增加大型语言模型的积极影响,这就是这项工作的动机。默认情况下,语言模型优化 next word prediction 目标,这只是我们希望这些模型做的事情的代理。我们的结果表明,我们的技术有希望使语言模型更有帮助、更真实、更无害。从长远来看,alignment 失败可能会导致更严重的后果,特别是如果这些模型被部署在 safety-critical 场合。我们预计,随着模型规模的不断扩大,必须更加注意确保它们 align to 人类的意图。

    然而,让语言模型更好地遵循用户的意图也让它们更容易被滥用。使用这些模型可能更容易产生令人信服的错误信息,或者仇恨的、辱骂性的内容。

    alignment 技术并不是解决与大型语言模型相关的安全问题的万能药,相反,它们应该作为更广泛的安全生态系统中的一个工具。除了故意滥用之外,在许多领域,大型语言模型的部署应该非常谨慎,或者根本不需要。这方面的例子包括高风险领域,如:医疗诊断、根据受保护的特征对人进行分类、确定信贷/就业/住房的资格、生成政治广告、以及执法。如果这些模型是开源的,那么在没有适当监管的情况下,限制这些领域和其他领域的有害应用就变得很有挑战性。另一方面,如果大型语言模型的使用被限制在少数拥有训练他们所需资源的组织,这就把大多数人排除在尖端的机器学习技术之外。另一个选择是,一个组织拥有模型部署的端到端基础设施,并使其通过 API 进行访问。这允许实施安全协议,如:use case 限制(只允许模型用于某些应用)、监测滥用情况并取消那些滥用系统的人的访问权、以及限制速率从而防止产生大规模的错误信息。然而,这可能是以降低透明度和增加权力集中度为代价的,因为它要求 API 供应商决定在每个问题上的界限。

    最后,正如前面所讨论的,这些模型向谁 align 的问题极为重要,并将大大影响这些模式的净影响net impact 是积极的还是消极的。