Survey : 预训练模型在自然语言处理的现状

2022-04-18 14:37:43 浏览数 (1)

注:本篇笔记参考论文:

Pre-trained Models for Natural Language Processing: A Survey

一、Introduction

本篇论文的贡献包含以下四个方面:

1、NLP 综合概述

① 背景知识;② 模型架构;③ 预训练任务;④ 各种各样的扩展;⑤ 自适应方法;⑥ 应用;

2、NLP 新的分类法

① 表示类型;② 模型架构;③ 预训练任务类型;④ 特定场景下的延伸;

3、NLP 丰富的开源库

① 开源的PTM实施;② 可视化工具;③ 语料;④ 论文列表;

4、NLP 未来研究方向

二、Background

1、语言表示学习

① 分布式表示的核心思想是基于低维的向量值来描述一段文本;

② embedding可以分为:上下文(contextual Embeddings)和非上下文(Non-contextual Embeddings)

图-01 NLP通用神经架构

2、神经上下文编码 (Neural Contextual Encoders)

分为两类:

(1)序列模型

序列模型通常获取序列中一个word的局部语境,可以分为两类:

① 卷积模型

原理:卷机模型获得输入语句的词向量,通过卷积操作,聚合相邻词的局部信息计算出一个word的平均值;

② 循环模型

原理:循环模型通过短记忆(shorot memory)方式获取词的上下文表示,例如:LSTM, GRU。在实际应用中,双向LSTM或GRU通常从一个word的两个方向收集信息,但是,其模型效果容易受到长期依赖问题影响。

(2)非序列模型

主要是全连接层的自注意力模型,这种模式的一个成功实例是:Transformer。

Transformer也需要其它的补充模块,例如:位置编码,层归一化,残差连接,以及 逐位的前向传播网络层(feed-forward network layers)。

① 优点

Transformer可以直接为一个序列中的两个词之间的依赖建模,这种方式非常适合于语言的长距离依赖,且效果非常好。

② 缺点

Transformer属于“重“架构、更少的模型偏置,Transformer通常需要大规模训练语料,以及在小规模语料上容易过拟合。

3、为什么需要预训练?

优点主要有三个:

① 在大规模文本语料上的预训练,能够学到通用的语言表示,并有助于下游任务;

② 预训练提供了更优的模型初始化,通常能够取得更好的泛化性能,以及在目标任务上加速收敛;

③ 预训练可以被当作一类在小规模数据集上避免过拟合的正则方法。

4、NLP中预训练模型简介

(1)第一代预训练模型:预训练词向量(word embeddings)

主要是两个浅层的架构:CBOW(continuous bag-of-word 连续词袋模型)和 SG(skip-gram)

① word2vec是这些最受欢迎的模型其中之一,它能够将预训练词向量应用到NLP的不同任务重;

② GloVe也是一个用于获取预训练词向量广泛使用的模型,这些词向量基于大规模语料中全局word-word共现统计计算而来。

缺点:

① 这些语句词向量模型尝试对输入语句进行编码,形成固定维度的词向量表示,而不是根据每个token计算上下文表示。

(2)第二代预训练模型:预训练上下文编码器(contextual Encoders)

① Seq2Seq模型能够通过无监督预训练得到大幅提升。编码器encoder和解码器decoder的权重基于两个语言模型的预训练权重进行初始化,然后通过带标签的数据进行模型微调。

② 由预训练模型BiLM,ELMO等输出的上下文表示,在大量NLP任务上,取得了大幅的提升。

三、Overview of PTMs

1、预训练任务

预训练任务可以分为以下几个类别:

(1)语言模型 LM(language model)

在NLP中最常用的无监督任务是概率语言模型,这是一个经典的概率密度预估问题。尽管LM是一个通用的概念,然而在实际应用中,LM通常是指自回归LM和单向LM。

(2)掩码语言模型 MLM(masked language model)

MLM首先会把输入语句中的一些tokens覆盖掉,然后根据剩下的tokens去训练模型预测这些被掩盖的tokens。

MLM可以分为两类:

① Seq2Seq MLM

对于MLM可以使用encoder-decoder架构,encoder读取一个掩码语句,decoder有序地以自回归方式生成带有掩码的tokens。

② E-MLM(Enhanced MLM)

RoBERT通过动态masking提升BERT表现;

UniLM在三类语言模型任务上扩展了mask预测任务,分别是:单向、双向、序列到序列预测。

(3)排列语言模型 PLM(permuted language model)

PLM是一个在输入语句随机排列上的语言模型任务。从语句所有可能的随机排列结果中,随机抽取一些样本。然后,在这些语句中选择一些tokens当作target,基于剩下的tokens和targets的的自然位置,训练模型预测这些targets。

(4)去噪自编码器 DAE(denoising autoencoder)

DAE 获取部分“脏数据”,目标是恢复原始有序的输入数据。尤其对于语言,类似于标准的Transformer这样的序列到序列的模型,通常被用来重构原始的文本。

有以下几种方式构建“脏数据”(corrupt text):

① token masking 掩码

② token deletion 删除

③ text infilling 填充

④ sentence permutation 排列

⑤ document rotation 交替

(5)对比学习 CTL(contrastive learning)

对比学习假设一些所观察的文本对语义更相似,而非随机采样的文本对。

① 损失函数:即如果文本对语义相似,则尽可能学习,缩小这个差距。

② CTL目前有如下两种方式:

NSP(Next Sentence Prediction)下一句预测

目标:训练模型区分训练语料中的两个输入语句是否前后连续(即上下句)

SOP(Sentence Order Prediction)语句顺序预测

目标:假设有两个语句A和B,正样本:A - B,负样本:B - A

2、预训练模型的分类

(1)表示类型 representation type

根据下有任务的表示方式,可以将PTM分为:上下文模型 和 非上下文模型

图-02 表示PTM列表

(2)模型架构

主要有:LSTM、Transformer encoder、Transformer decoder、Transformer-encoder-decoder

(3)预训练任务类型
(4)扩展 extensions

PTM用于各种各样的场景,种类还包含:基于知识的PTM,多模态PTM,特定领域的PTM,压缩版PTM

四、Extensions of PTMs

1、知识增强 PTM

PTM 通常从通用的、大规模的文本语料学习通用知识表示,但是,缺乏领域知识。

2、多语言 - 特定语言 PTM

基于多国语言语料进行模型训练,学习,或者基于特定语言语料学习文本表示。

3、多模态 PTM

① 视频 - 文本 PTM ;② 图像 - 文本 PTM;③ 语音 - 文本 PTM;

4、特定领域 - 特定任务 PTM

① BioBERT 用于生物领域文本;

② SciBERT 用于科学领域文本;

③ ClinicalBERT 用于医药领域文本;

5、模型压缩

模型压缩是一种潜在方式用于减少模型尺寸,提升计算效率。

目前,有六种方式用来模型压缩,分别是:

(1)模型裁剪 model pruning

裁剪掉神经网络的部分模块,例如:权重、神经元、通道、注意力头,因而,能够获得减少模型尺寸后的效果,以及加速推理时间。

(2)量化 quantization

将更高精度的参数压缩至更低精度的参数,可以理解为数据值由细到粗。

(3)参数共享 parameter sharing

将模型中的一些层的参数与其它层共享,减少总的参数量。

(4)知识蒸馏 knowledge distillation

本质上是用一个小模型(student模型)经过训练后尽量逼近一个大模型(teacher模型)的效果。

知识蒸馏可以分为以下三种类型:

① soft target probabilities 软目标概率蒸馏

用teacher的输出目标值当作训练的target,这个就是软目标的意思。然后,student模型去学习,逼近这个target。

② other knowledge 其它知识蒸馏

③ other structure 其它结构蒸馏

(5)模块替换 module replacing

用压缩后的子模块替换原始PTM中的大模块,减少模型尺寸。

(6)提前退出 early exit

减少推理时间,不用跑完整个模型的所有层,可以在执行到某些层后,立即退出。例如:DeeBERT,FastBERT,ELBERT;

图-03 压缩模型对比

五、Adapting PTMs to Downstream Tasks

1、迁移学习

① 定义:将从源任务(source task)学习到的知识经过调整后用于目标任务(target task)

② 类型:领域适应(domain adaption),跨语言(cross-lingual)学习,多任务学习

2、 如何迁移?

(1)选择合适的预训练任务,模型架构和语料

(2)选择合适的模型层

对于一个预训练的深度模型,不同的层能够捕获到不同种类的信息,例如:位置信息,长期依赖信息,语义信息,共现信息等。

有三种选择表示的方式:

① 仅保留embedding 层 (embedding only)

仅选择预训练的静态embedding,模型的其它层仍然需要针对新的目标任务,从头开始训练。

② 最高层 (top layer)

最简单、有效的方式是将top layer的表示直接输入到特定任务的模型中。

③ 所有层(all layers)

以自动化地方式选择最优层,例如:ELMO

(3)微调 或 不微调

① 特征提取:冻结预训练模型参数;

② 模型微调:预训练参数进行微调;

3、微调策略

(1)两阶段的微调

① 阶段一:PTM被迁移到由中间任务或语料的模型微调上;

② 阶段二:迁移后的模型再基于目标任务进行微调。

(2)多任务微调

缺点:参数无效,因为每个任务都需要根据自己的特点微调(参数改变)。

(3)适应模块的微调

两种方式:self-ensemble 自集成 和 self-distillation 自蒸馏。

六、Resources of PTMs

1、资源列表

图-04

七、Future Directions

1、Upper Bound of PTMs

更大的语料、更多训练步骤,更深的模型结构,分布式训练

2、PTM 架构

打破目前PTM现有的模型架构,减少计算复杂性。

3、特定任务的预训练和模型压缩

4、基于微调后的知识迁移

5、预训练模型的可解释性

0 人点赞