zoukankan      html  css  js  c++  java
  • NLP领域预训练模型

    声明

    本文原文来自于:arxiv

    介绍

    在大语料上训练的预训练模型可以学习得到通用的语言表达知识,对很多下游任务表现有帮助。随着算力的提升、训练方法越来越强,这些模型也越来越深。

    • 第一代预训练模型学习词嵌入模型,由于模型本身不会用在后面的任务中,因此大多比较浅;

    • 第二代预训练模型关注结合上下文语境的词嵌入,这一些模型一般仍然需要在后续的任务中继续学习具体的单词表达。

    背景

    自然语言表示

    一个好的表达应该表达通用先验,这些先验不是特定于任务的,但可能对学习机器解决人工智能任务有用。对语言来说,包括语法规则和语义知识。通用的方法是用一个低维的非稀疏向量来表示句子语义。

    上下文表示,([h_1,h_2,cdots,h_T] = f_{enc}(x_1, x_2,cdots,x_T))

    编码器

    序列模型学习的是顺序的特征,训练成本低,但不容易捕捉跨度较大的信息。非序列模型表达能力更强,训练需要更大的语料。

    序列模型

    • 卷积网络

    • 循环网络

    非序列模型

    • fully-connected self-attention

    预训练模型的意义

    • 在大语料上训练的预训练模型可以学到通用的语言表达知识

    • 初始化较好,加速模型收敛

    • PTM可以视为一种正则化,减少过拟合

    PTM历史

    第一代PTM

    在大量的未标注语料上训练可以辅助其他任务。CBOW和Skip-Gram是非常经典的模型。Word2vec 是这些模型最流行的实现之一,它使预训练的词嵌入可用于 NLP 中的不同任务。此外,GloVe也是一种广泛使用的用于获得预训练词嵌入的模型,该模型是通过大型语料库中的全局(词-词)共现统计计算得出的。

    还有一些聚焦于段落或者文章的,如paragraph vector, Skip-thought vectors, Context2Vec。

    第二代PTM

    第二代PTM考虑每个词的上下文语义。Dai 和 Le 为 NLP 提出了第一个成功的 PTM 实例,他们使用语言模型和序列自动编码器初始化 LSTM,发现预训练可以提高 LSTM 在许多文本分类任务中的训练和泛化能力。Ramachandran等人发现无监督预训练可以显著改善 Seq2Seq 模型。编码器和解码器的权重均使用两种语言模型的预训练权重进行初始化,然后使用标注数据进行微调。除了用 LM 预训练上下文编码器外,McCann 等人使用机器翻译从使用注意力的seq2seq模型预训练了一个深度 LSTM 编码器。预训练编码器输出的CoVe可以提高各种常见 NLP任务的性能。

    Peters等得到了带有双向语言模型 (BiLM) 的预训练 2 层 LSTM 编码器,由前向 LM 和后向 LM 组成。预训练的ELMo输出的上下文表示在广泛的 NLP 任务中带来了巨大的改进。阿克比克等人使用字符级 LM 预训练的上下文字符串嵌入捕获词义。然而,这两个 PTM 通常用作特征提取器来生成上下文词嵌入,这些词嵌入被输入到主模型中以执行下游任务。这些模型参数固定,下游任务的网络参数是从头开始训练的,ULMFiT尝试对用于文本分类(TC)的预训练 LM 进行微调,并在六个广泛使用的文本分类数据集上取得了最先进的结果。 ULMFiT 由 3 个阶段组成:

    1. 在通用领域数据上预训练 LM;
    2. 在目标数据上微调LM;
    3. 对目标任务进行微调。

    ULMFiT 还研究了一些有效的微调策略,包括判别式微调、倾斜三角学习率和逐步解冻。

    最近,非常深的 PTM 显示了它们在学习通用语言表示方面的强大能力:例如,OpenAI GPT和 BERT。除了 LM,还提出了越来越多的自监督任务,以使 PTM 从大规模文本语料库中捕获更多知识。

    概览

    预训练任务

    • 监督学习
    • 非监督学习
    • 自监督学习

    在本节中,我们将介绍现有 PTM 中一些广泛使用的预训练任务。我们可以将这些任务视为自监督学习。下表还总结了他们的损失函数。

    1. Language Modeling,用之前所有的词预测下一个词,问题是只能预测单向。
    2. Masked Language Modeling (MLM),随机用[MASK]标识遮住一些单词,然后用上下文预测这些单词。为了解决训练和应用过程中的不匹配,BERT使用了80%的[MASK],10%的随机token和10%的原字符。
    3. Sequence-to-Sequence MLM (Seq2Seq MLM),用seq2seq思想编码带掩码的序列,然后再解码得到掩码序列。
    4. Permuted Language Modeling (PLM),XLNet论文中指出,MASK方法本质上还将各个被盖住的字符视为独立的,过度简化。PTM将原始序列随机打乱,然后预测某些位置上的词。在实践中,由于收敛缓慢,只能预测置换序列中的最后几个标记。并且为目标感知表示引入了特殊的双流自注意力。
    5. Denoising Autoencoder (DAE),恢复被破坏的输入语句。方法有:
      1. 使用mask遮盖。
      2. 删除某些字符(相比于1,需要预测位置)
      3. 文本填充。
      4. 恢复随机打乱的句子。
      5. 文本旋转,随机地选择一个词并旋转文档,使其以该词开始。模型需要识别文档的真正开始位置。
    6. Contrastive Learning (CTL),对比学习主要通过提高正确的词对相对于随机词对的表现来训练的。
      1. Deep InfoMax (DIM),需要(f_{enc}( extrm{x}_{i:j})^T f_{enc}(hat{ extrm{x}}_{i:j}) > f_{enc}( ilde{ extrm{x}}_{i:j})^Tf_{enc}( extrm{x}_{i:j})),其中( extrm{x}_{i:j},hat{ extrm{x}}_{i:j}, ilde{ extrm{x}}_{i:j})分别表示(i, j)子段、被盖住后的掩码序列和一段随机序列。
      2. Replaced Token Detection (RTD),替换标记检测 (RTD) 与 NCE 相同,但根据其周围的上下文预测标记是否被替换。带负采样的 CBOW (CBOW-NS) [129] 可以看作是 RTD 的一个简单版本,其中负样本是从词汇表中随机采样的,具有简单的分布。
      3. Next Sentence Prediction (NSP) ,预测两个句子间的关系。
      4. Sentence Order Prediction (SOP),与NSP相似,但负样本可以为连续两个句子颠倒顺序,这样就不能用主题进行预测了。

    分类角度

    为了阐明现有 PTM 与 NLP 的关系,我们构建了 PTM 分类法,从四个不同的角度对现有 PTM 进行分类:

    1. 表示类型:根据下游任务使用的表示,我们可以将 PTM 分为非上下文模型和上下文模型。
    2. 结构:PTM 使用的骨干网络,包括 LSTM、Transformer 编码器、Transformer 解码器和完整的 Transformer 架构。“Transformer”是指标准的编码器-解码器架构。 “Transformer 编码器”和“Transformer 解码器”分别表示标准 Transformer 架构的编码器和解码器部分。它们的区别在于解码器部分使用带有三角矩阵的掩码自注意力来防止单词出现在它们未来(正确)的位置上。
    3. 预训练任务类型:PTM 使用的预训练任务类型。
    4. 扩展:为各种场景设计的 PTM,包括知识丰富的 PTM、多语言或特定语言的 PTM、多模型 PTM、特定领域的 PTM 和压缩的 PTM。

    模型分析

    由于 PTM 的巨大成功,了解它们捕获了哪些类型的知识以及如何从它们中归纳出知识非常重要。有大量文献分析存储在预训练的非上下文和上下文嵌入中的语言知识和世界知识。

    非上下文词嵌入

    首先探索静态词嵌入以获取各种知识。米科洛夫等人发现神经网络语言模型学习的单词表示能够捕捉语言中的语言规律,单词之间的关系可以用关系特定的向量偏移来表征。有研究发现,Skip-Grame生成的词向量可以捕获句法和语义词关系,例如 vec(“China”) − vec(“Beijing”) ≈ vec(“Japan”) − vec(“Tokyo”)。此外,他们发现词向量的组合属性,例如,vec(“Germany”) + vec(“capital”) 接近 vec(“Berlin”)。受这些工作的启发,Rubinstein 等人。发现分布词表示擅长预测分类属性(例如,狗是一种动物),但无法学习属性(例如,天鹅是白色的)。同样,古普塔等人表明 word2vec 嵌入隐式编码实体的参考属性。分布式词向量与简单的监督模型一起,可以学习以合理的准确度预测实体的数字和二进制属性。

    上下文词嵌入

    大量研究在上下文嵌入中探索和诱导了不同类型的知识。一般来说,有两种类型的知识:语言知识和世界知识。

    语言知识

    广泛的探索任务旨在调查 PTM 中的语言知识。坦尼,刘等人发现 BERT 在许多句法任务上表现良好,例如词性标注和成分标注。然而,相比于简单的句法任务,BERT 在语义和细粒度句法任务上还不够好,此外,Tenney 等人分析了 BERT 层在不同任务中的作用,发现 BERT 解决任务的顺序与 NLP 管道中的顺序相似。此外,BERT 中也证实了主谓一致和语义角色的知识。此外,休伊特和曼宁、贾瓦哈尔、金等人提出了几种从 BERT 中提取依赖树和选区树的方法,证明了 BERT 编码语法结构的能力。雷夫等人探索了 BERT 内部表示的几何结构并找到了一些证据:1)语言特征似乎在单独的语义和句法子空间中表示; 2)注意力矩阵包含语法表示; 3)BERT 在非常精细的层面上区分词义。

    世界知识

    除了语言知识,PTM 还可以存储训练数据中呈现的世界知识。探索世界知识的一种直接方法是使用“填空”完形填空语句查询 BERT,例如,“但丁出生于 [MASK]”。彼得罗尼等人通过从多个知识源手动创建单标记完形填空语句(查询)来构建 LAMA(语言模型分析)任务。他们的实验表明,BERT 包含与传统信息提取方法竞争的世界知识。由于LAMA的查询生成方式简单,江等人认为 LAMA 只是测量语言模型知道的下限,并提出更先进的方法来生成更有效的查询。尽管 LAMA 的发现令人惊讶,但它也受到了后续工作的质疑。同样,一些研究从 BERT 中为下游任务引入了关系知识和常识知识。

    PTM扩展

    知识增强PTM

    PTM 通常从通用的大规模文本语料库中学习通用语言表示,但缺乏特定领域的知识。将外部知识库中的领域知识合并到 PTM 中已被证明是有效的。外部知识范围从语言 、语义、常识 、事实到特定领域的知识。

    一方面,可以在预训练期间注入外部知识。早期的研究侧重于联合学习知识图嵌入和词嵌入。自 BERT 以来,设计了一些辅助预训练任务,将外部知识整合到深度 PTM 中。 LIBERT (基于语言的 BERT)通过额外的语言约束任务整合了语言知识。柯等人整合每个词的情感极性,将 MLM 扩展到 Label-Aware MLM (LA-MLM)。因此,他们提出的模型 SentiLR 在多个句子和方面级别的情感分类任务上实现了最先进的性能。莱文等人提出了 SenseBERT,它经过预训练,不仅可以预测被屏蔽的标记,还可以预测它们在 WordNet 中的超意义。

    ERNIE(THU)将在知识图谱上预训练的实体嵌入与文本中相应的实体提及相结合,以增强文本表示。同样,KnowBERT与实体链接模型联合训练 BERT,以端到端的方式合并实体表示。王等人提出了KEPLER,它联合优化了知识嵌入和语言建模目标。这些工作通过实体嵌入注入知识图的结构信息。相比之下,K-BERT显式地将从 KG 中提取的相关三元组注入到句子中,以获得 BERT 的扩展树形输入。此外,熊等人采用实体替换识别来鼓励模型更加了解事实知识。然而,大部分这些方法,都在注入知识时修改了模型参数,在注入多种知识时可能会遭受灾难性的遗忘。为了解决这个问题,K-Adapter 通过针对不同的预训练任务独立训练不同的适配器来注入多种知识,从而实现持续的知识注入。

    另一方面,人们可以将外部知识整合到预先训练的模型中,而无需从头开始重新训练。例如,K-BERT允许在对下游任务进行微调期间注入事实知识。关等人使用常识知识库、ConceptNet 和 ATOMIC 来增强 GPT-2 以生成故事。杨等人提出了一种知识-文本融合模型,用于获取机器阅读理解的相关语言和事实知识。

    此外,Logan IV 等人和 Hayashi 等人分别将语言模型扩展到知识图语言模型(KGLM)和潜在关系语言模型(LRLM),两者都允许以知识图为条件进行预测。这些新颖的 KG 条件语言模型显示出预训练的潜力。

    多语种与特定语种的预训练模型

    多语种

    学习跨语言共享的多语言文本表示在许多跨语言 NLP 任务中起着重要作用。

    跨语种语言理解

    大多数早期工作都集中在学习多语言词嵌入,它在单个语义空间中表示来自多种语言的文本。然而,这些方法通常需要语言之间的(弱)对齐。

    多语言 BERT (mBERT) 由 MLM 预训练,使用来自前 104 种语言的维基百科文本的共享词汇和权重。每个训练样本都是一个单语文档,没有专门设计的跨语言目标,也没有任何跨语言数据。即便如此,mBERT 在跨语言泛化方面的表现还是出奇地好。凯等人表明语言之间的词汇重叠在跨语言成功中的作用可以忽略不计。

    XLM通过合并跨语言任务、翻译语言建模 (TLM) 改进了 mBERT,该任务在并行双语句子对的串联上执行 MLM。 Unicoder进一步提出了三个新的跨语言预训练任务,包括跨语言单词恢复、跨语言释义分类和跨语言掩码语言模型(XMLM)。

    XLM-RoBERTa (XLM-R)是一个在超大的数据上预训练的多语种编码器,数据为100 种不同语言的 2.5TB 清洗过的CommonCrawl数据。XLM-RoBERTa 的预训练任务仅是单语 MLM。 XLM-R 在多个跨语言基准测试中取得了最先进的结果,包括 XNLI、MLQA 和 NER。

    跨语种语言生成

    多语言生成是一种从输入语言中生成不同语言文本的任务,例如机器翻译和跨语言抽象摘要。

    与用于多语言分类的 PTM 不同,用于多语言生成的 PTM 通常需要对编码器和解码器进行联合预训练,而不是只关注编码器。

    MASS使用单语Seq2Seq MLM在多种语言上预训练了Seq2Seq模型,并在无监督NMT上取得了显着改进。XNLG执行跨语言自然语言生成的两阶段预训练。第一阶段使用单语 MLM 和跨语言 MLM (XMLM) 任务预训练编码器。第二阶段通过使用单语 DAE 和跨语言自动编码 (XAE) 任务预训练解码器,同时保持编码器固定。实验表明 XNLG 在跨语言问题生成和跨语言抽象摘要方面的优势。 mBART是 BART 的多语言扩展,在跨 25 种语言的大规模单语语料库上与 Seq2Seq 去噪自动编码器 (DAE) 任务联合预训练编码器和解码器。实验表明,mBART 在各种机器翻译 (MT) 任务中产生了显着的性能提升。

    特定语种

    尽管多语言 PTM 在多种语言上表现良好,但最近的工作表明,在单一语言上训练的 PTM 明显优于多语言结果。

    对于没有明确词边界的中文,建模更大的粒度和多粒度词表示已经取得了巨大的成功。 Kuratov 和 Arkhipov 使用迁移学习技术将多语言 PTM 适配为俄语的单语 PTM。此外,还针对不同语言发布了一些单语 PTM,例如法语的 CamemBERT和 FlauBERT,芬兰的 FinBERT,荷兰语的 BERTje 和 RobBERT ,阿拉伯语的AraBERT。

    多模态PTM

    观察 PTM 在许多 NLP 任务中的成功,一些研究集中在获得 PTM 的跨模态版本。这些模型中的绝大多数是为一般的视觉和语言特征编码而设计的。并且这些模型在一些庞大的跨模态数据语料库上进行了预训练,例如带有口语的视频或带有字幕的图像,并结合了扩展的预训练任务以充分利用多模态特征。通常,基于视觉的 MLM、屏蔽视觉特征建模和视觉语言匹配等任务广泛用于多模态预训练,例如 VideoBERT、VisualBERT、ViLBERT。

    视频-文本

    VideoBERT 和 CBT是联合视频和文本模型。为了获得用于预训练的视觉和语言标记序列,视频分别由基于 CNN 的编码器和现成的语音识别技术进行预处理。单个 Transformer 编码器在处理后的数据上接受训练,以学习视频字幕等下游任务的视觉语言表示。此外,UniViLM建议引入生成任务以进一步预训练在下游任务中使用的解码器。

    图像-文本

    除了用于视频语言预训练的方法外,还有一些作品在图像文本对上引入了 PTM,旨在适应视觉问答 (VQA) 和视觉常识推理 (VCR) 等下游任务。几个提议的模型采用两个独立的编码器进行图像和文本表示,例如 ViLBERT和 LXMERT。而其他方法如 VisualBERT、B2T2、VLBERT、Unicoder-VL和 UNITER则提出了单流统一 Transformer。尽管这些模型架构不同,但在这些方法中引入了类似的预训练任务,例如 MLM 和图像文本匹配。为了更好地利用视觉元素,在由预训练的 Transformer 编码之前,通过应用 RoI 或边界框检索技术将图像转换为区域序列。

    音频-文本

    此外,有几种方法探索了 PTM 在音频-文本对上的可能性,例如 SpeechBERT。这项工作试图通过使用单个 Transformer 编码器对音频和文本进行编码来构建端到端语音问答 (SQA) 模型,该编码器在语音和文本语料库上使用 MLM 进行了预训练,并在问答上进行了微调。

    指定域与指定任务PTM

    大多数公开可用的 PTM 都是在通用领域语料库(例如维基百科)上进行训练的,这将它们的应用程序限制在特定领域或任务上。最近,一些研究提出了在专业语料库上训练的 PTM,例如 BioBERT 用于生物医学文本,SciBERT用于科学文本,ClinicalBERT用于临床文本。

    除了对特定领域的 PTM 进行预训练外,一些工作还尝试使可用的预训练模型适应目标应用,例如生物医学实体规范化、专利分类 、进度笔记分类和关键字提取。

    还提出了一些面向任务的预训练任务,例如用于情感分析的SentiLR 中的情感标签感知 MLM、用于文本摘要的 Gap Sentence Generation (GSG)和用于不流畅检测的噪声词检测。

    模型压缩

    由于 PTM 通常至少包含数亿个参数,因此它们很难部署在现实生活应用中的在线服务和资源受限的设备上。模型压缩是一种减小模型大小和提高计算效率的潜在方法。

    有五种压缩 PTM的方法:(1) 模型剪枝,删除不太重要的参数,(2) 权重量化,使用更少的比特来表示参数,(3) 相似模型单元之间的参数共享, (4) 知识蒸馏,它训练一个较小的学生模型,该模型从原始模型的中间输出中学习;(5) 模块替换,用更紧凑的替代品替换原始 PTM 的模块。

    模型剪枝

    模型剪枝是指去除部分神经网络(例如权重、神经元、层、通道、注意力头),从而达到减小模型尺寸和加快推理时间的效果。

    戈登等人探讨了剪枝的时间(例如,在预训练期间,下游微调之后的修剪)和剪枝制度。米歇尔等人和 Voita 等人试图修剪transformer中的整个自注意力头。

    量化

    量化是指将精度较高的参数压缩到较低的精度。沉等人的作品和 Zafrir 等人只关注这个领域。请注意,量化通常需要兼容的硬件。

    参数共享

    另一种众所周知的减少参数数量的方法是参数共享,它广泛用于 CNN、RNN 和 Transformer 。 ALBERT使用跨层参数共享和分解嵌入参数化来减少 PTM 的参数。虽然参数数量大大减少,但 ALBERT 的训练和推理时间甚至比标准 BERT 还要长。

    通常,参数共享不会提高推理阶段的计算效率。

    知识蒸馏

    知识蒸馏 (KD) 是一种压缩技术,其中训练称为学生模型的小模型来重现称为教师模型的大型模型的行为。在这里,教师模型可以是许多模型的集合,并且通常经过良好的预训练。与模型压缩不同,蒸馏技术通过一些优化目标从固定的教师模型中学习一个小的学生模型,而压缩技术旨在搜索更稀疏的架构。

    一般来说,蒸馏机制可以分为三种类型:(1)从软目标概率蒸馏,(2)从其他知识蒸馏,以及(3)蒸馏到其他结构:

    1. 从软目标概率蒸馏。Bucilua 等人表明让学生接近教师模型可以将知识从教师转移到学生。一种常见的方法是逼近教师模型的对数。 DistilBERT在教师的软目标概率上使用蒸馏损失训练学生模型:

      [mathcal{L}_{KD-CE} = sum_i t_i cdot log (s_i) ]

      (t_i, s_i)分别表示老师和学生评估的概率。

      从软目标概率中提取也可用于特定于任务的模型,例如信息检索 和序列标记。

    2. 从其他知识蒸馏。 软目标概率的提炼将教师模型视为一个黑匣子,只关注其输出。分解教师模型,提炼更多的知识可以为学生模型带来改进。

      TinyBERT使用嵌入输出、隐藏状态和自注意力分布执行层到层蒸馏。 MobileBERT还使用软目标概率、隐藏状态和自注意力分布执行层到层蒸馏。 MiniLM从教师模型中提取自注意力分布和自注意力值关系。

      此外,其他模型通过多种方法提炼知识。孙等人介绍了一种“耐心”的师生机制,Liu 等人利用 KD 来改进预训练的多任务深度神经网络。

    3. 蒸馏成其他结构。一般来说,学生模型除了较小的层尺寸和较小的隐藏尺寸,结构与教师模型相同。然而,不仅减少参数而且简化从 Transformer 到 RNN或 CNN的模型结构可以降低计算复杂度。

    模块替换

    模块替换是一种有趣且简单的减小模型尺寸的方法,它用更紧凑的替代品替换了原始 PTM 的大模块。徐等人提出了忒修斯压缩,由一个名为“忒修斯之船”的著名思想实验激发,该实验逐渐将源模型中的模块替换为更少的参数。与KD不同,忒修斯压缩只需要一个特定任务的损失函数。压缩过的模型,BERT-of-Theseus,比之前快1.94倍,表现为原来的98%。

    提前退出

    另一种减少推理时间的有效方法是提前退出,它允许模型在出口处提前退出,而不是通过整个模型。要执行的层数取决于输入。

    提前退出的想法首先应用于计算机视觉,例如 BranchyNet和 Shallow-Deep Network。随着深度预训练语言模型的出现,最近采用提前退出来加速基于 Transformer 的模型。作为一项先驱工作,Universal Transformer使用自适应计算时间(ACT)机制来实现输入自适应计算。埃尔巴亚德等人。提出了用于机器翻译的深度自适应变换器,它学习预测特定序列或标记需要多少解码层。 Liu 等人没有学习需要多少计算量。分别提出了基于互信息(MI)和重建损失的两种估计方法,以直接为每个样本分配适当的计算。

    最近,DeeBERT、RightTool、FastBERT、ELBERT、PABEE被提出来减少Transformer编码器的计算。他们的方法通常包含两个步骤:(a)训练注入的出口匝道(又名内部分类器),以及(b)设计退出策略来决定是否退出。

    通常,训练目标是所有出口匝道交叉熵损失的加权和

    [mathcal{L}_{early-exit} = sum_{i=1}^M w_i cdot mathcal{L}_i ]

    其中(M)是出口匝道的数量。 FastBERT 采用自蒸馏损失,用最终分类器生成的软目标训练每个出口。廖等人通过考虑过去和未来的信息来改进目标。特别是,出口匝道被训练为聚合过去层的隐藏状态,并近似于未来层的隐藏状态。此外,Sun 等人从集成学习和互信息的角度开发了一个新的训练目标,通过该目标将出口作为一个集成进行训练。他们提出的目标不仅优化了每个出口匝道的准确性,还优化了出口匝道的多样性。

    在推理过程中,需要一个退出策略来决定是提前退出还是继续下一层。 DeeBERT、FastBERT、Liao 等人采用预测分布的熵作为现有标准。同样,RightTool使用最大的 softmax 分数来决定是否退出。 PABEE 开发了一种基于耐心的策略,当连续层的预测不变时,允许样本退出。此外,Sun 等人采用基于投票的策略,让所有过去的出口匝道投票决定是否退出。此外,李等人提出了一种基于窗口的不确定性作为退出标准,以实现序列标记任务的字符级提前退出(TokEE)。

    使 PTM 适应下游任务

    尽管 PTM 从大型语料库中捕获通用语言知识,但如何有效地将其知识应用于下游任务仍然是一个关键问题。

    迁移学习

    迁移学习是将源任务(或领域)的知识调整到目标任务(或领域)。

    NLP中的迁移学习有很多种,如领域适应、跨语言学习、多任务学习等。使 PTM 适应下游任务是顺序迁移学习任务,其中任务是顺序学习的,目标任务有标记数据。

    如何迁移

    要将 PTM 的知识转移到下游 NLP 任务,我们需要考虑以下问题:

    选择合适的预训练任务、结构和语料

    不同的 PTM 通常对同一个下游任务有不同的影响,因为这些 PTM 是用各种预训练任务、模型架构和语料库进行训练的。

    1. 目前,语言模型是最流行的预训练任务,可以更有效地解决范围广泛的 NLP 问题。然而,不同的预训练任务有自己的偏差,对不同的任务产生不同的效果。例如,NSP 任务使 PTM 理解两个句子之间的关系。因此,PTM 可以使诸如问答 (QA) 和自然语言推理 (NLI) 等下游任务受益。
    2. PTM 的架构对于下游任务也很重要。例如,尽管 BERT 有助于大多数自然语言理解任务,但生成语言却很困难。
    3. 下游任务的数据分布应该近似于 PTM。目前,有大量现成的 PTM,它们可以方便地用于各种特定领域或特定语言的下游任务。

    因此,给定一个目标任务,选择经过适当的预训练任务、架构和语料库训练的 PTM 总是一个很好的解决方案。

    选择合适的网络层

    给出一个预训练深度网络,不同的层应该捕捉到不同类型的信息,例如位置标签、语法规则、长距离依赖、语义角色、互指。对于基于RNN的模型来说,Belinkov 和 Melamud表示,一个多层LSTM编码器的不同层学习得到的表示对不同任务的作用不同。对于基于transformer的预训练模型,Tenny发现BERT表达传统NLP的各个步骤:基础的句法信息在网络的早期表现出来,而高级的语义信息在高层出现。

    (H^{(l)}(1 leq l leq L))表示共(L)层的预训练模型第(l)层网络的表示,(g(cdot))代表目标任务的特定模型。

    有三种方式选择表达:

    1. 只选择词嵌入:一种方法是只选择预先训练好的静态嵌入,而模型的其余部分仍然需要为新的目标任务从头开始训练。

      它们无法捕获可能更有用的更高级别的信息。词嵌入仅用于捕获词的语义含义,但我们还需要理解词义等更高层次的概念。

    2. 顶层:最简单有效的方法是将顶层的表示输入特定任务的模型 (g(H(L) ))

    3. 所有层:一种更灵活的方法是通过软概率自动选择最佳层,如ELMO:

      [r_t = gamma sum_{l=1}^L alpha_l h_t^{(l)} ]

      其中(alpha_l)是第(l)层的softmax归一化权重,(gamma)是对预训练模型输出的缩放系数。该混合表示传给模型(g(r_l))

    是否要进行微调

    目前,模型迁移有两种常见的方式:特征提取(预训练参数被冻结)和微调(预训练参数被解冻和微调)。

    在特征提取方式中,预训练的模型被视为现成的特征提取器。此外,暴露内部层很重要,因为它们通常编码最可转移的表示 。

    尽管这两种方式都可以显着受益于大多数 NLP 任务,但特征提取方式需要更复杂的特定于任务的架构。因此,对于许多不同的下游任务,微调方式通常比特征提取方式更通用和方便。

    微调策略

    随着 PTM 深度的增加,它们捕获的表示使得下游任务变得更加容易。因此,整个模型的任务特定层很简单。自 ULMFit 和 BERT 以来,fine-tuning 成为 PTMs 的主要适应方法。然而,微调的过程通常很脆弱:即使具有相同的超参数值,不同的随机种子也会导致截然不同的结果。

    除了标准的微调之外,还有一些有用的微调策略。

    两阶段微调

    另一种解决方案是两阶段转移,它在预训练和微调之间引入了一个中间阶段。在第一阶段,PTM 被转换成一个由中间任务或语料库微调的模型。在第二阶段,迁移的模型针对目标任务进行微调。孙等人表明,对相关领域语料库的“进一步预训练”可以进一步提高 BERT 的能力,并在八个广泛研究的文本分类数据集上取得了最先进的性能。彭等人和 Garg 等人引入了与目标任务相关的中间监督任务,为BERT、GPT和ELMo带来了很大的改进。李等人还对故事结局预测使用了两阶段转移。提出的 TransBERT(可转移 BERT)不仅可以从大规模未标记数据中转移通用语言知识,还可以从各种语义相关的监督任务中转移特定种类的知识。

    多任务微调

    刘等人在多任务学习框架下对BERT进行了微调,这表明多任务学习和预训练是互补的技术。

    使用额外的适配模块进行微调

    微调的主要缺点是参数效率低下:每个下游任务都有自己的微调参数。因此,更好的解决方案是在原始参数固定的情况下,在 PTM 中注入一些可微调的适配模块。

    Stickland 和 Murray 为单个共享 BERT 模型配备了小的附加任务特定的适应模块、投影注意层(PAL)。与 PAL 共享的 BERT 与 GLUE 基准测试中单独微调的模型相匹配,参数减少了大约 7 倍。同样,Houlsby 等人通过添加适配器模块修改了预训练 BERT 的架构。适配器模块产生紧凑且可扩展的模型;他们只为每个任务添加几个可训练的参数,并且可以在不重新访问以前的任务的情况下添加新任务。原始网络的参数保持固定,产生高度的参数共享。

    其他

    受广泛使用的集成模型的成功启发,Xu 等人通过两种有效机制改进了BERT的微调:自集成和自蒸馏,可以在不利用外部资源或显着降低训练效率的情况下提高BERT在下游任务上的性能。他们在单个训练过程中集成了集成和蒸馏。教师模型是一个集成模型,通过在之前的时间步骤中对几个学生模型进行参数平均。

    逐渐解冻也是从顶层开始逐渐解冻 PTM 层的有效方法,不是同时微调所有层。 Chronopoulou 等提出了一种更简单的解冻方法,顺序解冻,它首先只微调随机初始化的任务特定层,然后解冻PTM的隐藏层,最后解冻嵌入层。

    李和Eisner使用可变信息平静模块,在只保持对目标任务有用信息的情况下,压缩了ELMo的词嵌入。

    总的来说,以上工作表现了PTM的表现可以通过更好的微调策略来提高。

    基于提示的调优

    缩小预训练和微调之间的差距可以进一步提高 PTM 在下游任务上的性能。另一种方法是通过设计适当的提示将下游任务重新构成 MLM 任务。基于提示的方法在少样本设置、零样本设置甚至全监督设置中显示出强大的力量。当前的基于提示的方法可以根据提示是离散的还是连续的分为两个分支。

    离散提示

    离散提示是要插入到输入文本中的一系列单词,它有助于 PTM 更好地对下游任务进行建模。孙等人通过将基于方面的情感分析 (ABSA) 任务转换为句子对分类任务来构建辅助句子,但其模型参数仍需要微调。 GPT-3提出了上下文学习,将原始输入与任务描述和一些示例连接起来。通过这种方式,GPT-3 可以在不调整参数的情况下实现具有竞争力的性能。此外,Petroni 等人发现在适当的手动提示下,BERT 可以在没有训练的情况下在实体预测任务(LAMA)上表现良好。除了 LAMA,Schick 和 Schutze提出了 PET,它为各种文本分类和蕴含任务设计了离散提示。然而,手动设计提示是一种次优化,因此,许多方法都试图自动生成提示,LPAQA使用了两种方法,即基于挖掘的生成和基于释义的生成,以找到表达特定关系的最佳模式。AutoPrompt通过梯度引导搜索找到最佳提示。 LM-BFF采用 T5自动生成提示。

    连续提示

    另一种选择不是寻找最佳的具体提示,而是直接在连续空间中优化提示,即提示向量不一定是 PTM 的词类型嵌入。优化的连续提示与词类型嵌入连接,然后输入 PTM。秦和艾斯纳和钟等人发现优化的连续提示在关系任务上可以胜过具体提示(包括手动、挖掘(LPAQA)和梯度搜索(AutoPrompt提示)。WARP在输入序列之前、之间和之后插入可训练的连续提示标记,同时保持 PTM 的参数固定,从而在 GLUE 基准测试中获得可观的性能。Prefix-Tuning插入连续的提示作为表格-文字生成任务中的GPT-2或总结任务中的BART的输入前缀。Prefix-Tuning作为一种高效调参策略,在全监督设置中得到了相当有竞争力的表现,并在少镜头设置中优于模型微调。此外,P-Tuning 表明,在连续提示的情况下,GPT 在自然语言理解 (NLU) 任务上也可以达到与类似大小的 BERT 相当甚至更好的性能。最近,莱斯特等人表明,提示微调随着规模的扩大而更具竞争力。当 PTM 超过数十亿个参数时,模型微调和提示微调之间的差距可以缩小,这使得基于提示的调优成为高效服务大规模 PTM 的一种非常有前景的方法。

    应用

    在本节中,我们总结了 PTM 在几个经典 NLP 任务中的一些应用。

    一般评价基准

    NLP 社区有一个基本问题,即我们如何以可比较的指标评估 PTM。因此,大规模基准测试是必要的。

    通用语言理解评估 (GLUE) 基准是九个自然语言理解任务的集合,包括单句分类任务(CoLA 和 SST-2)、成对文本分类任务(MNLI、RTE、WNLI、QQP 和MRPC)、文本相似性任务 (STSB) 和相关排序任务 (QNLI)。 GLUE 基准是为评估模型的稳健性和泛化而精心设计的。 GLUE 不提供测试集的标签,而是设置评估服务器。

    然而,由于近年来的进步极大地侵蚀了 GLUE 基准的净空,因此提出了一个名为 SuperGLUE的新基准。与GLUE相比,SuperGLUE具有更加挑战性的任务和更多样化的任务格式。

    问答

    问答(QA),或狭义的机器阅读理解(MRC)概念,是 NLP 社区的重要应用。从易到难,QA 任务分为三种类型:单轮抽取式 QA (SQuAD) 、多轮生成式 QA (CoQA) 和多跳 QA (HotpotQA) 。

    BERT创造性地将抽取式QA转换为跨度预测任务,包括预测起始跨度标签和结束跨度标签。之后,预训练模型作为预测跨度的编码器,一直有很好的表现。对于抽取式QA,张等人提出了一个回顾阅读器结构并用预训练模型初始化编码器。对于多轮对话来说,Ju等人提出“预训练+对抗训练+基本原理标记+知识蒸馏”模型,对于多跳QA,Tu等人提出了可解释的“选择、解答、解释”(SAE)系统,预训练模型在选择模块中作为编码器。

    通常,所提出的 QA 模型中的编码器参数通过 PTM 初始化,其他参数随机初始化。

    情感分析

    BERT通过简单地对 SST-2 进行微调,性能优于以前的最先进模型,SST-2 是一种广泛使用的情绪分析 (SA) 数据集。 Bataa 和 Wu将 BERT 与迁移学习技术结合使用,并在日本 SA 中实现了新的最新状态。

    尽管他们在简单的情感分类方面取得了成功,但将 BERT 直接应用于基于方面的情感分析(ABSA),这是一项细粒度的 SA 任务,显示出不太显着的改进。为了更好地利用 BERT 的强大表示,Sun 等人通过将 ABSA 从单个句子分类任务转换为句子对分类任务来构建辅助句子。徐等人提出了后训练,使 BERT 从其源域和任务适应 ABSA 域和任务。此外,Rietzler 等人通过分析具有 ABSA 性能的跨域后训练的行为,扩展了的工作。卡里米等人表明可以通过对抗性训练进一步提高后训练 BERT 的性能。宋等人添加了一个额外的池化模块,它可以实现为 LSTM 或注意力机制,以利用 BERT 中间层进行 ABSA。此外,李等人共同学习面向端到端 ABSA 的方面检测和情感分类。 SentiLR从 SentiWordNet 获取词性标签和先验情感极性,并采用标签感知 MLM 利用引入的语言知识来捕捉句子级情感标签和词级情感转变之间的关系。 SentiLR 在多个句子和方面级别的情感分类任务上实现了最先进的性能。

    对于情感转移,Wu 等人提出了基于 BERT 的“Mask and Infill”。在掩码步骤中,该模型通过掩蔽情感标记将情感与内容分开。在填充步骤中,它使用 BERT 和目标情绪嵌入来填充掩码区域。

    命名体识别

    命名实体识别 (NER) 在信息提取中并在许多 NLP 下游任务中发挥着重要作用。在深度学习中,大多数 NER 方法都在序列标注框架中。句子中的实体信息会转化为标签序列,一个标签对应一个词。该模型用于预测每个单词的标签。由于ELMo和BERT在 NLP 中展示了他们的力量,关于NER的预训练模型有很多工作。

    阿克比克等人使用预训练的字符级语言模型为 NER 生成词级嵌入。 TagLM和 ELMo使用预训练语言模型的最后一层输出和每层输出的加权和作为词嵌入的一部分。刘等人使用逐层修剪和全连接来加速 ELMo 对 NER 的推理。德夫林等人使用第一个 BPE 的 BERT 表示在没有 CRF 的情况下预测每个单词的标签。皮雷斯等人通过多语言 BERT 实现了零样本 NER。蔡等人利用知识蒸馏在单个 CPU 上为 NER 运行小型 BERT。此外,BERT 还用于特定领域的 NER,例如生物医学等。

    机器翻译

    机器翻译 (MT) 是 NLP 社区中的一项重要任务,吸引了许多研究人员。几乎所有的神经机器翻译 (NMT) 模型都共享编码器-解码器框架,该框架首先通过编码器将输入标记编码为隐藏表示,然后从解码器解码目标语言中的输出标记。拉马钱德兰等人发现编码器-解码器模型可以通过使用两种语言模型的预训练权重初始化编码器和解码器来显着改进。埃杜诺夫等人使用 ELMo 在 NMT 模型中设置词嵌入层。这项工作通过使用预训练的语言模型进行源词嵌入初始化,展示了英语-土耳其语和英语-德语 NMT 模型的性能改进。

    鉴于 BERT 在其他 NLP 任务上的出色表现,研究如何将 BERT 纳入 NMT 模型是很自然的。 Conneau 和 Lample尝试通过多语言预训练 BERT 模型初始化整个编码器和解码器,并表明在无监督 MT 和英语-罗马尼亚语监督 MT 上可以实现显着改进。类似地,Clinchant等人推荐了一系列不同的实验来测试使用BERT作为NMT模型的编码器的最佳方法。他们通过使用 BERT 作为编码器的初始化实现了一些改进。此外,他们发现这些模型可以在域外数据集上获得更好的性能。Imamura 和 Sumita提出了一种用于 NMT 的两阶段 BERT 微调方法。在第一阶段,编码器由预训练的 BERT 模型初始化,它们仅在训练集上训练解码器。在第二阶段,整个 NMT 模型在训练集上联合微调。通过实验,他们表明这种方法可以超越直接对整个模型进行微调的单阶段微调方法。除此之外,朱等人建议使用预训练的 BERT 作为额外的内存来促进 NMT 模型。具体来说,他们首先通过预训练的 BERT 对输入单词进行编码,并使用最后一层的输出作为额外的内存。然后,NMT 模型可以通过编码器和解码器每一层中的额外注意力模块访问内存。他们在监督方面表现出明显的改善, 半监督和无监督 MT。

    MASS(Masked Sequence-to-Sequence Pre-Training)不是仅预训练编码器,而是利用 Seq2Seq MLM 联合预训练编码器和解码器。在实验中,这种方法在无监督 MT 和英语-罗马尼亚语监督 MT 上都可以超越 Conneau 和 Lample 提出的 BERT 式预训练。与 MASS 不同,mBART是 BART的多语言扩展,它与 Seq2Seq 去噪自动编码器 (DAE) 任务一起在 25 种语言的大规模单语语料库上预训练编码器和解码器。实验表明,mBART 可以在句子级别和文档级别显着改善有监督和无监督机器翻译。

    摘要

    摘要,旨在产生一个较短的文本,保留较长文本的大部分含义,近年来引起了 NLP 社区的关注。自从广泛使用 PTM 以来,该任务得到了显着改善。钟等人引入了可转移的知识(例如,BERT)进行总结并超越了以前的模型。张等人尝试预训练一个文档级模型,该模型预测句子而不是单词,然后将其应用于诸如摘要之类的下游任务。更详细地说,张等人为预训练设计了 Gap Sentence Generation (GSG) 任务,其目标涉及从输入生成类似摘要的文本。另外,Liu和Lapata设计了BERTSUM。BERTSUM 包括一个新颖的文档级编码器,以及一个用于提取摘要和抽象摘要的通用框架。

    在编码器框架中,BERTSUM 通过插入多个 [CLS] 标记来学习句子表示来扩展 BERT。对于抽取式摘要,BERTSUM 堆叠了几个句间 Transformer 层。对于抽象摘要,BERTSUM 提出了一种使用新微调计划的两阶段微调方法。钟等人提出了一种新颖的摘要级框架 MATCHSUM 并将概念化的提取摘要作为语义文本匹配问题。他们提出了一种 Siamese-BERT 架构来计算源文档和候选摘要之间的相似度,并仅使用基本版本的 BERT 在 CNN / DailyMail 上取得了最先进的结果。

    对抗攻击预防御

    深度神经模型容易受到对抗性示例的影响,这些示例可能会误导模型产生特定的错误预测,而原始输入的扰动却难以察觉。在 CV 中,对抗性攻击和防御已被广泛研究。然而,由于语言的离散性,它对文本仍然具有挑战性。为文本生成对抗样本需要具备以下品质:(1) 人类法官难以察觉但会误导神经模型; (2) 语法流利,语义与原始输入一致。金等人使用对抗性示例成功地攻击了经过微调的 BERT 在文本分类和文本蕴涵方面。华莱士等定义了通用对抗性触发器,当连接到任何输入时,它可以诱导模型产生特定目的的预测。某些触发器甚至会导致 GPT-2 模型生成种族主义文本。孙等人表明 BERT 在拼写错误方面并不稳健。

    PTM 还具有生成对抗样本的巨大潜力。李等人提出了 BERT-Attack,这是一种基于 BERT 的高质量有效攻击者。他们在下游任务上将 BERT 与另一个经过微调的 BERT 进行了对比,并成功误导目标模型进行错误预测,在成功率和扰动百分比方面均优于最先进的攻击策略,同时生成的对抗样本流畅且语义保留。

    此外,PTMs 的对抗性防御也很有前景,它提高了 PTMs 的鲁棒性并使它们对对抗性攻击免疫。

    对抗训练旨在通过最小化嵌入空间中标签保留扰动的最大风险来提高泛化能力。最近的工作表明对抗性预训练或微调可以提高 NLP 的 PTM 的泛化和鲁棒性。

    未来研究方向

    尽管 PTM 已经证明了它们在各种 NLP 任务中的能力,但由于语言的复杂性,挑战仍然存在。在本节中,我们提出了 PTM 的五个未来方向。

    预训练模型的上限

    目前,PTM 尚未达到其上限。大多数当前的 PTM 可以通过更多的训练步骤和更大的语料库进一步改进。

    NLP 的最新技术可以通过增加模型的深度来进一步推进,例如 Megatron-LM(83 亿个参数,72 个 Transformer 层,隐藏大小为 3072 和 32 个注意力头)和 Turing-NLG(170 亿个参数,78 个 Transformer 层,隐藏大小为 4256 和 28 个注意力头)。

    通用 PTM 一直是我们学习语言内在普遍知识(甚至世界知识)的追求。然而,此类 PTM 通常需要更深的架构、更大的语料库和具有挑战性的预训练任务,这进一步导致更高的训练成本。然而,训练庞大的模型也是一个具有挑战性的问题,需要更复杂、更高效的训练技术,如分布式训练、混合精度、梯度累积等。 因此,更实际的方向是设计更高效的模型架构,自监督预训练任务、优化器和训练技能,以及使用现有硬件和软件训练的技巧。 ELECTRA是朝着这个方向的一个很好的解决方案。

    PTM 的架构

    Transformer已被证明是一种有效的预训练架构。然而,Transformer 的主要限制是它的计算复杂度,它是输入长度的二次方。受 GPU 内存的限制,当前大多数 PTM 无法处理超过 512 个标记的序列。打破这个限制需要改进Transformer的架构。尽管许多工作试图提高 Transformer 的效率,但仍有很大的改进空间。此外,为 PTM 寻找更有效的替代非 Transformer 架构对于捕获更远距离的上下文信息很重要。深度架构的设计具有挑战性,我们可能会寻求一些自动方法的帮助,例如神经架构搜索(NAS)。

    面向任务的预训练和模型压缩

    在实践中,不同的下游任务需要不同的 PTM 能力。 PTMs 和下游任务之间的差异通常在于两个方面:模型架构和数据分布。较大的差异可能导致 PTM 的好处可能微不足道。例如,文本生成通常需要一个明确的任务来预训练编码器和解码器,然而文本匹配需要设计句子对的预训练任务。

    此外,虽然更大的 PTM 通常可以带来更好的性能,但一个实际的问题是如何在特殊场景中利用这些巨大的 PTM,例如低容量设备和低延迟应用程序。因此,我们可以为下游任务精心设计特定的模型架构和预训练任务,或者从现有的 PTM 中提取部分特定于任务的知识。

    与其从头开始训练面向任务的 PTM,我们可以通过使用模型压缩等技术使用现有的通用 PTM 来教授它们。尽管 CV中广泛研究了 CNN 的模型压缩,但 NLP 的PTM压缩才刚刚开始。Transformer 的全连接结构也让模型压缩更具挑战性。

    微调之外的知识转移

    目前,微调是将 PTM 的知识转移到下游任务的主要方法,但一个不足是其参数效率低下:每个下游任务都有自己的微调参数。一个改进的解决方案是修复 PTM 的原始参数,并为特定任务添加小的微调自适应模块。因此,我们可以使用共享 PTM 来服务多个下游任务。实际上,从 PTM 挖掘知识可以更灵活,例如特征提取、知识蒸馏、数据增强,使用 PTM 作为外部知识。期待更有效的方法。

    PTM 的可解释性和可靠性

    尽管 PTM 达到了令人印象深刻的性能,但其深度非线性架构使得决策过程高度不透明。

    最近,可解释的人工智能 (XAI) 已成为一般 AI 社区的热点。与用于图像的 CNN 不同,由于类似 Transformer 的架构和语言的复杂性,解释 PTM 更加困难。已经做出了广泛的努力来分析 PTM 中包含的语言和世界知识,这有助于我们以一定程度的透明度理解这些 PMT。然而,模型分析的很多工作依赖于注意力机制,注意力对可解释性的有效性仍然存在争议。

    另外PTM面对对抗攻击也十分脆弱。随着PTM的应用在生产环境中越来越广泛,他们的可靠性也倍受关心,那些关于对抗性攻击的研究通过充分暴露缺点来帮助我们理解他们的能力,对抗防御也十分有前景,可以提高PTM的鲁棒性,增强对对抗攻击的免疫力。

    总体而言,作为许多 NLP 应用中的关键组件,PTM 的可解释性和可靠性在许多方面仍有待进一步探索,这有助于我们了解 PTM 的工作原理,并为更好地使用和进一步改进提供指导。

    总结

    在本次调查中,我们对 NLP 的 PTM 进行了全面概述,包括背景知识、模型架构、预训练任务、各种扩展、适应方法、相关资源和应用。基于当前的 PTM,我们从四个不同的角度提出了一种新的 PTM 分类法。我们还为 PTM 提出了几个可能的未来研究方向。

    一个人没有梦想,和咸鱼有什么区别!
  • 相关阅读:
    查看电脑保存的wifi密码
    数据仓库
    nodejs 中国汉字模糊查询简单(很low)实现
    nodejs express 框架 上传文件
    async样例
    mongodb Map/reduce测试代码
    未释放资源的教训,开发MongoDB连接一定要关闭连接
    采集系统优化:大家接手过的最烂的项目,最坑爹的项目是哪个?
    Android的HttpClient调用,冲突的解决办法
    MongoDBcrud操作,采集部分代码
  • 原文地址:https://www.cnblogs.com/TABball/p/14949017.html
Copyright © 2011-2022 走看看