更多博客
博客进阶

广义语言模型

Generalized Language Models

AI 导读

Lil'Log 博客梳理预训练语言模型的文章。按时间顺序介绍 CoVe、ELMo、跨视角训练 CVT、ULMFiT、GPT、BERT、ALBERT、GPT-2、RoBERTa、T5、GPT-3、XLNet、BART 和 ELECTRA,涉及预训练任务、输入嵌入、字节对编码、零样本迁移等,最后总结困惑度指标与常用任务和数据集。

分级
值得看
收录时间
2026-10-29

中文精读

原文约 9,137 词 · 23 节

  1. 泛化的语言模型(引言与目录)

    • 2018 年 NLP 的进展来自大规模预训练语言模型,如 OpenAI GPT 与 BERT,它们用通用架构在多种语言任务上取得好表现。
    • 思路类比 ImageNet 分类预训练帮助视觉任务;但 NLP 的预训练不需要标注数据,因此训练规模可以推到极限。
    • 脚注提到 He et al. (2018) 发现图像分割任务未必需要预训练。
    • 此前词嵌入(word embedding)不依赖上下文,同一个词在不同句子中共享同一向量,如两个“apple”。
    • 早期做法是把词嵌入当作已有任务模型的额外特征,改进幅度有限;本文讨论让嵌入依赖上下文、并更易用于下游任务的各种方法。
    • 目录覆盖 CoVe、ELMo、Cross-View Training、ULMFiT、GPT、BERT、ALBERT、GPT-2、RoBERTa、T5、GPT-3、XLNet、BART、ELECTRA,以及总结、困惑度指标与常用任务数据集。
  2. CoVe:上下文词向量与其 NMT 基础

    • CoVe(Contextual Word Vectors,McCann et al. 2017)是由注意力 seq-to-seq 机器翻译模型的编码器学到的词向量,表示是整个输入句子的函数,而非传统静态词向量。
    • NMT 模型由标准两层双向 LSTM 编码器和带注意力的两层单向 LSTM 解码器组成,在英德翻译任务上预训练。
    • 直觉是编码器在把词转成另一种语言之前需捕获高层次语义与句法信息,因此其输出可作为下游任务的上下文词向量。
    • 编码器输入是源语言词序列的 GloVe 向量,输出隐藏状态序列 h = [h_1..h_n],每个 h_t 为前向与后向 LSTM 状态的拼接。
    • 解码器由上一目标词嵌入与上一上下文调整隐藏状态得到新隐藏状态,用 softmax(H(W_1 s_t + b_1)) 计算注意力权重,再算出上下文调整状态并输出词分布。
  3. 在下游任务中使用 CoVe

    • 把 NMT 编码器隐藏状态定义为上下文向量:CoVe(x) = biLSTM(GloVe(x))。
    • 论文提出在问答和分类任务中把 GloVe 与 CoVe 拼接成 v = [GloVe(x); CoVe(x)]:GloVe 来自全局词共现比例、无句上下文,CoVe 处理文本序列因而带上下文。
    • 做法是先为输入词生成 GloVe + CoVe 拼接向量,再作为额外特征送入任务专用模型,编码器可插到任意下游模型中。
    • 局限有两点:预训练受限于有监督翻译任务可用的数据集;CoVe 对最终性能的贡献受任务模型架构约束。
    • 后续 ELMo 用无监督预训练解决第一点,OpenAI GPT 与 BERT 用无监督预训练加生成式架构进一步同时解决两点。
  4. ELMo:双向语言模型与其表示

    • ELMo(Embeddings from Language Model,Peters et al. 2018)通过以无监督方式预训练语言模型来学习上下文化词表示。
    • 基础是双向语言模型(biLM):前向方向按 p(x_i | x_1..x_{i-1}) 预测,后向方向按 p(x_i | x_{i+1}..x_n) 预测,两者用多层 LSTM 建模,共享嵌入层参数 Θ_e 与 softmax 层参数 Θ_s。
    • 最终层隐藏状态由两个方向的最终层状态拼接而成,经 softmax 归一化输出词概率;训练目标是最小化两个方向的负对数似然。
    • 在 L 层 biLM 之上,ELMo 为每个任务学习线性组合,把各层隐藏状态堆叠:R_i 含 2L+1 个向量(含嵌入层输出)。
    • 组合权重 s^task 按任务学习并用 softmax 归一化,缩放因子 γ^task 用于校正 biLM 隐藏状态分布与任务特定表示分布的错配。
    • 分层评测显示:词义消歧(WSD)这类语义任务上顶层优于第一层,词性标注(POS)这类句法任务上第一层准确率更高,说明低层偏句法、高层偏语义,堆叠各层有帮助。
  5. 在下游任务中使用 ELMo

    • 与 CoVe 类似,ELMo 向量被加入任务专用模型的输入或较低层;对部分任务(如 SNLI 与 SQuAD,但不包括 SRL),加入输出层也有帮助。
    • ELMo 带来的提升在有监督数据量小的任务上最大;使用 ELMo 也能以更少标注数据达到相近性能。
    • 总结:语言模型预训练是无监督的,无标注文本语料充足,理论上预训练规模可以尽可能扩大。
    • 但 ELMo 仍依赖为任务定制的模型,改进只是增量式的,而为每个任务寻找好的架构依然不容易。
  6. 交叉视图训练(CVT):架构与多任务

    • ELMo 的无监督预训练与任务学习分属两个独立模型、两个训练阶段;CVT(Clark et al. 2018)把它们合并为一个统一的半监督学习过程。
    • 模型由两层双向 LSTM 编码器和一个主预测模块组成,训练时交替输入有标注与无标注数据批次。
    • 在有标注样本上用标准监督学习更新全部参数,损失为交叉熵。
    • 在无标注样本上,主预测模块仍能给出“软”目标;若干辅助任务只看到受限视图(如仅用一个方向的编码器隐藏状态),其输出需匹配全视图输入的主预测。
    • 这样编码器被迫把完整上下文的知识蒸馏到部分表示中;此阶段对 biLSTM 编码器反向传播,但主预测模块固定,损失是最小化辅助预测与主预测的距离。
    • 多任务时 CVT 为额外任务加若干主预测模型,共享同一句子表示编码器:监督训练随机选一个任务,更新其预测器与编码器;无标注数据上则对所有任务联合优化。多任务提升表示的通用性,副产品是从无标注数据得到全任务标注样本,这类跨任务标签稀有而珍贵。
  7. 在下游任务中使用 CVT

    • 主预测模块理论上可取任意形式,CVT 论文同时给出通用与任务专用设计的例子。
    • 在 NER、POS 标注这类序列标注任务中,预测器为两层全连接加 softmax,将每个 token 的两层隐藏状态拼接后分类。
    • 辅助任务只接收第一层前向或后向 LSTM 状态,因只观察左或右的部分上下文,必须像语言模型那样学:fwd、bwd 只用单一方向,future、past 分别再向未来和前进一步取状态。
    • 若主预测模块含 dropout,有标注训练时 dropout 照常生效,无标注训练生成辅助任务“软”目标时不启用。
    • 机器翻译任务中主预测模块换成带注意力的标准单向 LSTM 解码器,两个辅助任务分别是:对注意力权重向量做 dropout(随机置零部分值),以及预测目标序列中的未来词;辅助任务要匹配的主预测是用束搜索(beam search)在固定主解码器上生成的最佳目标序列。
  8. ULMFiT 与 GPT:预训练加微调、transformer 解码器与 BPE

    • ULMFiT(Howard & Ruder, 2018)首次探索生成式预训练 LM 加任务微调,动机直接来自 ImageNet 预训练在视觉任务上的成功,基础模型是 AWD-LSTM。三步:在维基百科文本上做通用 LM 预训练;目标任务 LM 微调;目标任务分类器微调。
    • 微调稳定化用了两项技术:判别式微调(discriminative fine-tuning),不同层用不同学习率,因不同层捕获不同类型信息;斜三角学习率(STLR),先线性升后线性降,上升段短以快速进入合适参数空间,衰减段长以便更好微调。
    • 分类器微调时在预训练 LM 上加两个前馈层和 softmax:concat pooling 对隐藏状态历史取最大池化与平均池化并与最终隐藏状态拼接;逐层解冻(gradual unfreezing)从最后一层起逐层解冻以避免灾难性遗忘。
    • GPT(Generative Pre-training Transformer,Radford et al., 2018)沿用 ELMo 思路,但在大规模自由文本语料上训练;与 ELMo 有两处主要差别:架构上 ELMo 是独立训练的左右多层 LSTM 的浅层拼接,GPT 是多层 transformer 解码器;
    • 用法上 ELMo 把嵌入当额外特征送入任务专用模型,GPT 对所有下游任务微调同一基础模型。
    • GPT 的解码器模型丢弃编码器部分,只有单个输入序列;每个块含带掩码的多头自注意力层和逐点前馈层,最终经 softmax 输出目标词分布;损失为无后向计算的负对数似然,形式为对 log p(x_i | x_{i-k}..x_{i-1}) 求和。
  9. ULMFiT 与 GPT:预训练加微调、transformer 解码器与 BPE(续)

    • 输入序列用 BPE 编码:该算法源自 1990 年代的数据压缩,后来用于解决机器翻译的开放词表问题(翻译到新语言易遇罕见与未知词);基于罕见未知词常可拆成多个子词,BPE 迭代贪心地合并高频字符合成最佳分词。
  10. 监督微调(Supervised Fine-Tuning)

    • GPT 的核心突破是去掉任务专用模型结构,直接在预训练语言模型上做微调:输入 n 个 token 的序列,取最后一层最后一个 token 的输出 h_L^(n),只需新增一个可训练权重矩阵 W_y,用 softmax 给出类别分布。
    • 分类损失是真实标签的负对数似然;把 LM 损失作为辅助损失一并优化,理由是能加快训练收敛,并有望提升监督模型的泛化。
    • 其他端任务无需定制结构:输入含多句时在每对句子间插入分隔符 token(`$`),其 embedding 是新学参数但规模很小;句子相似任务把两种顺序都放进去,多选题把上下文与每个候选答案配对。
    • 总结:第一阶段用尽量多的自由文本做生成式预训练,第二阶段用少量标注数据、极少新参数在具体任务上微调,这套通用框架在当时(2018 年 6 月)多数语言任务上超过了 SOTA。局限是单向性,只学从左到右预测未来上下文。
    text
    $$ P(y\mid x_1, \dots, x_n) = \text{softmax}(\mathbf{h}_L^{(n)}\mathbf{W}_y) $$
  11. BERT 与预训练任务

    • BERT(Bidirectional Encoder Representations from Transformers)延续 GPT 的思路:先在自由文本上训练大模型,再在具体任务上微调,不需要定制网络结构;最大差别与改进是把训练变成双向,同时预测左右两侧上下文。
    • 消融研究称“模型的双向性是唯一最重要的新贡献”;模型架构是多层双向 Transformer 编码器。
    • 任务一:掩码语言模型(MLM)。每个序列随机遮蔽 15% 的 token;由于微调时不会出现 `[MASK]`,对被选中的词按 80% 概率换成 `[MASK]`、10% 换成随机词、10% 保持不变;模型只预测缺失词,不知道哪些位置被替换,输出规模仅为输入的 15%。
    • 任务二:下一句预测(NSP)。受 QA、NLI 等下游任务启发,训练一个二分类器判断 B 是否为 A 的下一句:50% 的样本 B 紧跟 A,50% 不紧跟。
    • 两个辅助任务的训练数据都可由任意单语语料轻易生成,规模不受限;总损失为平均 MLM 似然与平均 NSP 似然之和。
    text
    (本节无代码)
  12. 输入表示与下游任务用法

    • BERT 的输入 embedding 是三者相加:WordPiece 分词 embedding(把词拆成子词单元以更好处理生僻词与未登录词)、段 embedding(两句输入分别用句子 A/B embedding,用 `[SEP]` 分隔;单句只用 A)、以及可学习而非硬编码的位置 embedding。
    • 第一个 token 固定为 `[CLS]`,作为下游任务预测用的占位符。
    • 微调只需加极少新参数:分类任务取 `[CLS]` 最后一层隐状态 h^[CLS]_L 乘小权重矩阵后 softmax;SQuAD 类 QA 任务为每个 token 预测答案片段的起、止两个分布,微调时只新学 W_s 与 W_e 两个小矩阵。
    • 与 GPT 的训练配置对比:GPT 中 `[SEP]`、`[CLS]` 仅在微调阶段引入,BERT 在预训练阶段就学习它们及句 A/B embedding;两者都训练 1M 步,batch 分别为 32k 与 128k 词;GPT 全部微调任务用 lr=5e-5,BERT 按任务设学习率。
  13. ALBERT:因式分解嵌入、跨层参数共享与句子顺序预测

    • ALBERT(A Lite BERT)是 BERT 的轻量版本:相近配置下训练快 1.7 倍、参数少 18 倍;三项改动中前两项减少参数与内存占用,第三项用更具挑战性的任务替换 NSP。
    • 因式分解嵌入参数化:BERT 中词表 embedding 维度 E 与隐状态维度 H 相同,增大 H 就要学更大的词表 embedding(规模依赖词表 V),代价高;而分词 embedding 学的是与上下文无关的表示、隐层是上下文相关的,因此可把 V×H 大矩阵拆成 V×E 与 E×H 两个小矩阵,当 H≫E 时参数量显著下降。
    • 跨层参数共享:可选择只共享前馈部分、只共享注意力参数或共享全部参数;该技巧大幅减少参数而性能损失不大。
    • 句子顺序预测(SOP)替代 NSP:实验发现 NSP 太容易,SOP 的正样本是同一文档中两个连续片段,负样本则把同两段的顺序对调;NSP 只需靠主题差异就能判断,而 SOP 要求模型理解片段间的连贯性与顺序。
  14. GPT-2 与零样本迁移

    • GPT-2 是 GPT 的直接后继,有 15 亿参数,是原 GPT 的 10 倍;在 8 个语言建模数据集中的 7 个上取得 SOTA,且是完全零样本迁移、不做任务特定微调。预训练数据是约 800 万个网页,来自爬取 Reddit 上有质量外链所指向的页面。
    • 在小数据集和衡量长程依赖的数据集上提升尤其明显。预训练任务只有语言建模,所有下游任务都被表述为预测条件概率,不做任何任务特定微调。
    • 文本生成直接用 LM;机器翻译通过把“英文句子 = 中文句子”这样的句对和末尾的“目标英文句子 =”作为条件拼接起来诱导;QA 类似地把问答对放在上下文中;摘要则在文章后加 `TL;DR:` 诱导。
    • 分词沿用 BPE,但作用在 UTF-8 字节序列上:每个字节 8 位可取 256 个值,UTF-8 每字符最多 4 字节,词表只需 256 即可覆盖任意字符,无需担心预处理与分词;但字节级 LM 与 SOTA 词级 LM 仍有不可忽视的性能差距。
    • BPE 以贪心方式合并高频共现的字节对;为避免常见词出现多种版本(如 `dog.`、`dog!`、`dog?`),GPT-2 禁止跨类别合并字符,从而提高最终字节切分质量,并能给任意 Unicode 字符串赋概率。
    • 架构改动较少:层归一化(Layer Normalization)移到每个子块输入处(类似 “building block” 残差单元)、最后一个自注意力块后额外加一层归一化、按模型深度设计初始化、残差层权重初始按 1/√N 缩放(N 为残差层数),以及使用更大的词表与上下文长度。
  15. RoBERTa

    • RoBERTa(Robustly optimized BERT approach)是一份让 BERT 训得更好的“配方”,因为作者发现原版 BERT 明显训练不足。
    • 要点:用更大 batch、训更久;去掉 NSP 任务;训练数据用连续采样的多句构成更长片段,因为以单句为输入会损害下游性能;把静态掩码改为动态掩码——原 BERT 在预处理阶段只掩一次,RoBERTa 在 40 个 epoch 中用 10 种不同掩码方式。
    • 还新增 CommonCrawl News 数据集,进一步印证更多数据预训练有助于下游表现;与 GPT-2 一样用字节序列上的 BPE;并发现超参数选择对性能影响很大。
  16. T5 与 GPT-3

    • T5 即“Text-to-Text Transfer Transformer”,采用原始 Transformer 的编码器-解码器结构(token→embedding→编码器→解码器→输出);借鉴“Natural Language Decathlon”框架,把常见 NLP 任务统一成基于上下文的问答,但不用显式 QA 格式,而用简短的任务前缀区分意图,并对每个任务分别微调。
    • 文本到文本框架便于用同一模型在多种任务上评估迁移学习。模型在 2019 年 4 月抽取并经过多种过滤的网页语料上训练,下游任务用“适配层”(adapter layers,额外加一层训练)或“逐步解冻”(gradual unfreezing,见 ULMFiT)微调,只更新部分参数;T5-11B 在多项 NLP 任务上取得 SOTA。
    • 作者自述目标不是提出新方法,而是提供领域现状的全景视角,长论文详述了训练设置与评估流程。
    • GPT-3 与 GPT-2 架构相同但参数达 1750 亿(GPT-2 的 10 倍),使用稠密与局部带状稀疏交替的注意力模式(同 sparse transformer),并在宽度和深度两个维度切分以跨多 GPU 训练;训练数据是过滤后的 Common Crawl 混合若干高质量精选数据集,作者尝试剔除与所用基准数据集的重叠,但因一个 bug 过滤并不完美。
    • 所有下游评估都在少样本(few-shot)设置下进行,不做基于梯度的微调,示例作为 prompt 的一部分给出;GPT-3 在许多数据集上表现强劲,可与微调过的 BERT 相比,且性能随模型规模和示例数量增加而提升。
  17. XLNet 与排列语言建模

    • 自回归(AR)模型如 GPT 与自编码(AE)模型如 BERT 各有缺点:AR 学不到阅读理解等下游任务需要的双向上下文;AE 假设被掩位置在给定其余 token 时相互独立,过度简化了长距离依赖。XLNet 把 AE 推广以兼得 AR 的好处,提出排列语言建模目标。
    • 对一个文本序列采样一个因式分解顺序 z,按该顺序分解似然 p_θ(x) 来训练;由于直接使用上下文隐状态 h_θ 会违背目标,改用 g_θ(x_{z_<t}, z_t)。
    • 为此设计双流自注意力:查询流 g_{z_t} 只用位置 z_t 而看不到内容 x_{z_t},用于预测时;内容流 h_{z_t} 同时编码内容与位置,为后续位置提供完整上下文。因排列语言建模优化困难,XLNet 只预测因式分解顺序中最后一段 token。
    • 名称中的 XL 来自 Transformer-XL:沿用其通过复用前序片段的隐状态来延长注意力跨度的设计;在 GLUE 上以单任务、无集成方式与多个语言模型对比。
    latex
    $$ \begin{aligned} \mathcal{L}_\text{XLNet} &= - \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_T} \Big[ \sum_{t=1}^T \log p_\theta (X_{z_t} = x \mid \mathbf{x}_{\mathbf{z}_{<{t}}})\Big] \\ &= - \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_T} \Big[ \log \frac{ \exp(e(x)^\top \color{red}{h_\theta (\mathbf{x}_{\mathbf{z}_{<{t}}})}) }{ \sum_{x'} \exp(e(x')^\top \color{red}{h_\theta (\mathbf{x}_{\mathbf{z}_{<{t}}})}) } \Big] \\ &= - \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_T} \Big[ \log \frac{ \exp(e(x)^\top \color{blue}{g_\theta (\mathbf{x}_{\mathbf{z}_{<{t}}}, z_t)}) }{ \sum_{x'} \exp(e(x')^\top \color{blue}{g_\theta (\mathbf{x}_{\mathbf{z}_{<{t}}}, z_t)}) } \Big] \end{aligned} $$
  18. BART

    • BART 是一种去噪自编码器(denoising autoencoder),目标是从随机加噪后的文本恢复原文,做法是把类 BERT 的双向编码器和类 GPT 的自回归解码器联合训练,损失只是最小化负对数似然。
    • 作者试验了多种加噪变换:token 掩码、token 删除、文本填充(text infilling,即把随机采样的若干 token 的文本片段替换成一个 [MASK])、句子乱序、文档旋转(documentation rotation,即从随机 token 处开始截取文档)。
    • 实验发现最好的加噪方式是文本填充加句子打乱;不同预训练目标在下游任务上的表现差异明显。
    • token 掩码很关键:只用句子乱序或文档旋转时表现很差;从左到右的预训练有利于生成,双向编码器对 SQuAD 至关重要。
    • 预训练目标不是唯一因素,相对位置嵌入、段级循环(segment-level recurrence)等架构改进也重要;自回归语言模型在 ELI5 上表现最好,而 BART 的整体表现最为稳定强劲。
  19. ELECTRA

    • ELECTRA 全称“Efficiently Learning an Encoder that Classifies Token Replacements Accurately”,针对现有预训练模型算力开销大的问题,把语言建模改造成判别任务以提高预训练效率。
    • 提出新的预训练任务“替换 token 检测”(Replaced Token Detection, RTD):随机选 k 个位置,用小型语言模型(生成器 G)给出合理的替换词,判别器 D 判断每个 token 是原文还是被替换过。
    • 生成器的损失是负对数似然,判别器的损失是交叉熵;生成器并不以对抗方式训练去骗过判别器,只优化 NLL,因为对抗训练的实验结果为负。
    • 实践上只在生成器与判别器之间共享嵌入、并用较小的生成器(为判别器大小的 1/4 到 1/2)比共享全部权重(那样两模型必须同尺寸)更有利;生成器与判别器联合训练优于两阶段交替训练。
    • 预训练后丢弃生成器,只用 ELECTRA 判别器在下游任务上微调;文中给出其在 GLUE dev 集上的表现对比表。
  20. 小结

    • 本节用一张表汇总各基座模型及其预训练任务:CoVe 是 seq2seq NMT 模型,用翻译数据做监督学习;ELMo 与 CVT 均为两层 biLSTM,分别做下一 token 预测和有标注/无标注数据的半监督学习。
    • ULMFiT 用 AWD-LSTM 在 Wikitext-103 上做自回归预训练;GPT、GPT-2、GPT-3 均为 Transformer 解码器,做下一 token 预测。
    • BERT 用 Transformer 编码器做掩码语言模型加下一句预测;ALBERT 结构同 BERT 但更轻量,任务是掩码语言模型加句子顺序预测;RoBERTa 同 BERT,用掩码语言模型(动态掩码)。
    • T5 是编码器加解码器,在多任务混合(无监督与有监督)上预训练,每个任务都转成文本到文本格式;XLNet 同 BERT,做排列语言建模(permutation language modeling)。
    • BART 由 BERT 编码器和 GPT 解码器组成,从加噪版本重建文本;ELECTRA 同 BERT,做替换 token 检测。
  21. 指标:困惑度

    • 困惑度(perplexity)常用作内在评估指标,衡量语言模型在给定上下文条件下刻画真实词分布的能力。
    • 离散概率分布 p 的困惑度定义为其熵的指数:2^{H(p)} = 2^{-Σ_x p(x) log_2 p(x)}。
    • 对含 N 个词的句子,假设每个词频率相同为 1/N,则熵为 H(s) = -Σ_{i=1}^N (1/N) log_2 p(w_i)。
    • 由此句子困惑度化简为 (p(w_1)…p(w_N))^{-1/N};好的语言模型应给出高的词概率,因此困惑度越小越好。
  22. 常见任务与数据集

    • 问答:SQuAD 是基于维基百科文章阅读理解数据集,答案为文中一段文本;RACE 含 2.8 万余段文章、近 10 万道题,取自中国面向初高中的英语考试。
    • 常识推理:Story Cloze Test 要求从两个选项里选出多句故事的正确结尾;SWAG 含 11.3 万句子对补全样例,评估有依据的常识推理。
    • 自然语言推理(NLI,也称文本蕴含):RTE、SNLI(57 万人工书写的英语句对,标签为蕴含、矛盾、中立)、MNLI(文体与主题更多样)、QNLI(由 SQuAD 转为(问题,句子)二分类)、SciTail。
    • 命名实体识别(NER):CoNLL 2003 NER 任务、OntoNotes 5.0(英、阿、中文本)、Reuters Corpus、细粒度 NER(FGN)。
    • 其他任务:情感分析(SST、IMDb)、语义角色标注(CoNLL-2004 与 2005)、句子相似性(MRPC、QQP、STS Benchmark)、句子可接受性(CoLA)、文本组块(CoNLL-2000)、词性标注(Penn Treebank 的华尔街日报部分)。
    • 机器翻译(WMT 2015 英捷、WMT 2014 英德、IWSLT 2015 英越)、指代消解(CoNLL-2012)、长程依赖(LAMBADA、Children’s Book Test)、多任务基准(GLUE、decaNLP)、无监督预训练数据(Books corpus、1B Word 基准、英文维基约 25 亿词)。
  23. 参考文献

    • 列出正文各节对应的文献,涵盖 CoVe、CVT、ELMo、ULMFiT、GPT、BERT、Transformer、子词切分(subword units)、ALBERT、RoBERTa、GPT-2 与 GPT-3、XLNet、BART、ELECTRA、T5 等工作的论文或博客。
    • 其中 BART 对应 Lewis 等(ACL 2020),ELECTRA 对应 Clark 等(ICLR 2020);末尾给出本文的引用格式(BibTeX 条目)。