大致框架
- 基于四个不同的方向给PTM分类
- 如何将PTM的知识应用到下游任务中去
- 未来的研究中PTM潜在的几个方向
- 本文旨在帮助研究者理解、使用和发展各种NLP任务下的PTM
介绍
现在NLP任务主要是应用神经网络模型,一个优势是避免了[[Feature engineering|特征工程]]问题。而非神经网络一般相当依赖离散的手动构建的特征。现如今神经网络都是使用低维度、密集的向量([[Distributed Representation]])来隐含地表示表示语言的句法或语法特征。
相比[Computer Vision],NLP领域的进展就比较小了,主要是因为大多数监督NLP任务的数据集太小(机器翻译除外),大数量的模型参数在小数据上训练经常产生过拟合的现象,所以早期的NLP模型大多是窄模型,且只有1-3层。
预训练模型在大语料库上可以学习到通用的语言表示,而且不用从头开始训练一个新模型。
第一代预训练模型主要目的是为了更好地学习词嵌入表示。计算效率上有些低,不考虑上下文信息,所以也就不能捕获更深层的特征信息,存在一些问题:polysemous disambiguation, syntactic tructures, semantic roles, anaphora。 主要代表:Skip-Gram [Distributed representations of words and phrases and their compositionality] and GloVe [GloVe: Global vectors for word representation].
第二代PTMs主要重点在于学习上下文词嵌入 例如:CoVe [Learned in translation: Contextualized word vectors], ELMo [Deep contextualized word representations], [[Radford et al_Improving Language Understanding by Generative Pre-Training|OpenAI GPT]] and [[Devlin et al_2019_BERT|BERT]]。下游NLP任务还是需要这些训练过的编码器来表示上下文的词。
详细框架
- PTMs中的背景知识、常用的符号
- PTMs一个简短的总结以及分类
- PTMs的扩展
- 如何应用到下游任务
- PTMs的相关资源
- NLP任务的集合
- 现在的挑战以及未来的方向
背景知识
语言表示学习
a good representation should express general-purpose priors that are not task-specific but would be likely to be useful for a learning machine to solve AI-tasks.
一个好的表示应该表达通用的知识,并不是针对特定的任务,但是对机器学习去解决AI任务会很有用。 —-Bengio
对于语言表示来说,好的表示应该能够获取到隐含的语言的规律以及常识性知识,比如说lexical meanings, syntactic structures, semantic roles, and even pragmatics(语用学)。分布式表示的核心就是利用低维度的向量来描述文本中的一部分,这个向量中的每个维度都没有对应的意义,但是整个向量却表示了一个具体的含义,也许每个单独的向量是有意义的,不过现在我们无法解释,其可解释性太低,几乎没有。
从图中可以看出,两种词嵌入,有没有上下文语意的,也就是字面意思,会不会根据上下文信息更改向量的表示,举个例子,苹果这个词语代表的词向量会不会换了个句子,其训练出来的词嵌入向量就发生变化。
-
Non-contextual Embeddings 这类词嵌入有两种明显的局限,一是因为词嵌入是静态不变的,无法表示多义性的词语;二是,此表中未出现的词语无法表示,一般使用字符级表示或者子词表示的方法来解决这个问题。
-
Contextual Embeddings 为了解决上面两个问题,主要通过分辨词语在不同上下文中的语意,这里是将所有的词语或者子词放进一个神经编码器中去计算每个词语的上下文词嵌入或者动态词嵌入。
Neural Contextual Encoders
序列模型
序列模型通常按顺序捕获单词的局部上下文。
- 卷积模型通过卷积操作把邻居的本地信息汇总从而获得这个词语的meaning
- 循环模型通过short momery来获取上下文表示,双向的LSTM或者是GRUs可以从两个方向收集信息,但是会受到远距离依赖问题的影响。
非序列型
非序列模型通过预先定义好的树或者图结构(句法树、语法关系) 来学习上下文表示,其中构建一个好的图结构是一个比较有挑战的问题,也比较依赖外部的工具或者是知识,例如依存解析。
实际上,更加直接的方法是使用全连接图,连接的权重是通过自注意力机制进行动态计算的,能够隐含地显示词与词之间的关系,一个比较成功的例子是[[Vaswani et al_2017_Attention Is All You Need|Transformer]],不过也使用了一些其他的模块:[[Positional Embeddings]]、[[Feed-Forward Network(FFN)]]、[[Layer Normalization]]、[[Residual Connections]]等等。
序列模型难以获取长尾的词信息,但是易于训练,多种NLP任务也可以拿到不错的成绩。
Transformer可以直接对序列中每两个单词之间的依赖关系进行建模,这更强大并且更适合对语言的远程依赖关系进行建模。
However, due to its heavy structure and less model bias, the Transformer usually requires a large training corpus and is easy to overfit on small or modestly-sized datasets.
Reference: [[Radford et al_Improving Language Understanding by Generative Pre-Training|GPT]]
由于transformer其强大的能力,也是目前主流的PTMs常用的结构。
为什么需要预训练?
- 由于大部分NLP任务需要充分训练模型从而防止过拟合
- 而这就需要大规模的标注数据集
- 但是对于句法和语义等任务来说,人工标注相当昂贵
- 所以想要先用大规模的无标注数据学习一个好的表示,再用于下游任务中
- 优点:
- 可以学习到通用的语言表示
- 提供了更好地模型初始化
- 避免了在小数据集上过拟合
NLP预训练历史
- 第一代:预训练词嵌入
- 把词语表示成稠密向量,one-hot是稀疏的
- pair-wise ranking task而不是语言模型
- Mikolov提出并不需要深度神经网络来构建好的词嵌入,并提出CBOW和skip-gram模型
- Word2Vec、GloVe
- 都是上下文无关的,大多数都是使用浅层模型训练,未训练到的还需要模型从头训练
- 第二代:上下文编码器
- 研究者发现预训练和微调可以提高多任务学习的性能
- 无监督预训练可以改进seq2seq模型
- 更大的数据集、更加强大的结构、新的预训练任务
- BiLM、ELMo的输出可以大幅度改善NLP任务,通常被用来计算上下文词嵌入
- ULMFiT的三个阶段:
- 在通用领域上预训练LM
- 在目标数据上微调
- 在目标任务上微调
- 自监督任务用于预训练模型在大规模文本语料库上学习到更多的知识
- 微调是预训练任务用于下游任务的主要方式
Overview
预训练模型之间的主要区别是:上下文编码器的用途、预训练任务、目的
预训练任务
- 分类
- 有监督
- 把输入映射到输出上
- 无监督
- 从无标注数据中寻找内在的联系、知识
- 自监督
- 上面两者的混合,学习范式与SL相同,但是其训练的标签是自动生成的
- 核心思想是预测输入的任何部分,类似MLM
- NLP的数据一般比较少,不足以训练好的PTM
- 越有挑战性的任务越对下游任务有利,例如MT
- 有监督
- LM
- 单向LM的一个缺点是:每个Token只编码了左边的token和他自己
- BiLM提出two-tower模型,编码前向和反向
- MLM
- Masked LM
- 完形填空,cloze
- “cloze procedure”: A new tool for measuring readability
- 缺点:造成预训练和微调阶段之间的断层,因为[mask]并不出现在微调阶段
- 解决方案:special token 80,random 10,origin 10
- s2s MLM
- MLM通常是分类任务,softmax分类器预测
- 范式:编码器输入masked序列,解码器利用自回归顺序输出masked token
- MASS,T5
- 什么样的预训练任务利于什么样的下游任务,s2s MLM有利于qa、summary、MT
- Enhanced Masked Language Modeling
- RoBERTa,动态Mask
- XLM,拼接平行双语句对,Translation Language Modeling (TLM)
- Span-BERT,将结构信息编码到预训练中
- 外部知识
- Masked LM
- 乱序LM
- 预训练时的mask在微调阶段不出现,造成断层
- 输入句子的token是重新排序的
-
In practice, only the last few tokens in the permuted sequences are predicted, due to the slow convergence. And a special two-stream self-attention is introduced for target-aware representations.
- Denoising Autoencoder (DAE)
- 输入部分损坏,目的是为了回复原来的输入
- 三种方式:
- masking
- 删除,判断丢失部分的位置
- 填充,预测多少token丢失
- Sentence Permutation,句子置换,
- Document Rotation,判断文档开始的位置-句子
- 对比学习
- 正例之间在语义上比随机例子更相似
- 通过对比来学习一般性知识
- 一般计算复杂度相比LM低
- task:
- Deep InfoMax (DIM)
- 最先用于图像,通过最大化图像表示和本地区域图像之间的共同信息来提高ptm的质量
- NLP中,使n-gram span比随机的span与masked句子联系更高
- Replaced Token Detection (RTD)
- 通过上下文预测token是否被替换
- [[Clark et al_2020_ELECTRA_arXiv2003.10555 [cs]|ELECTRA]]使用生成器来替换序列中的token,判别器判断哪些token能被替换了,改进了RTD
- WKLM替换实体,而不是token,把实体替换成具有相同类型的其他实体,从而去预测
- Next Sentence Prediction NSP
- 判断两个句子是不是来自同一个训练语料并且是连续的,正反例出现的比例是相同的
- 学习两个句子之间的关系
- 不过NSP任务不太可靠
- Sentence Order Prediction (SOP)
- 目的是使生成的句子、文档更具有一致性
- ALBERT,sentence order prediction (SOP) loss
- Deep InfoMax (DIM)
PTMs分类
- 四个方向
- 表示类型:上下文
- 结构:LSTM、transformer、enc、dec
- 预训练任务类型:[[Qiu et al_2020_Pre-trained Models for Natural Language Processing#预训练任务|预训练任务]]
- 拓展:知识、多语言、多模态、特定语言、特定领域、压缩
PTMs拓展
知识
- 注入知识会受到灾难性遗忘问题的影响
- K-Adapter在不同的预训练使用不同的适配器进行注入知识
- K-BERT注入外部知识不需要重新训练,在微调时注入
- Logan IV et al. [119] and Hayashi et al. [57] extended language model to knowledge graph language model (KGLM) and latent relation language model (LRLM)
多语言和特定语言
- Cross-Lingual Language Understanding (XLU)
- 通常需要语言间的对齐
- mBert多语言一般化效果还可以
- XLM相比mbert引入了一个多语言任务,translation language modeling (TLM),平行双语语料融合
- Cross-Lingual Language Generation (XLG)
- XNLG [19] performs two-stage pre-training for cross-lingual natural language generation.
- 预训练单语和多语MLM 编码器
- 固定编码器,训练单语DAE和交叉语言自动编码的解码器
- 在交叉语言的问题生成和摘要总结效果好
- XNLG [19] performs two-stage pre-training for cross-lingual natural language generation.
多模态
Typically, tasks like visual-based MLM, masked visual-feature modeling and visual-linguistic matching are widely used in multi-modal pre-training, such as VideoBERT [165], VisualBERT [103], ViLBERT [120].
- 分别对图像和文字进行编码:ViLBERT [120] and LXMERT [175]
- 只有一个transformer:VisualBERT [103], B2T2 [2], VLBERT [163], Unicoder-VL [101] and UNITER [17]
压缩
- PTMs通常参数量都相当巨大,很难部署到在线服务和移动设备上
- 压缩方法:
- 模型剪枝
-
Model pruning refers to removing part of neural network (e.g., weights, neurons, layers, channels, attention heads),
-
- 权值量化
- 将高精度压缩为低精度
- 参数共享
- 跨层之间进行参数共享
- ALBERT,尽管进行共享了,但是训练和推断的时间变长了
- 在推断阶段并不会提高计算效率
- 知识蒸馏:TinyBERT
- 模块替换:Theseus Compression
- 模型剪枝
应用PTMs到下游任务
迁移学习
- 如何迁移
- 选择合适的预训练任务、结构、语料库
- 预训练任务、结构、语料库对于下游任务的影响相当大
- 例如:NSP->Question Answering (QA) and Natural Language Inference (NLI)
- bert可以帮助理解任务,但是很难做生成任务
- 合适的层
- 预训练深度模型每层所捕捉的信息时不同的, POS tagging, parsing,long-term dependencies, semantic roles, coreference
- 通常句法信息在浅层,语义信息在深层
- 所以在使用ptms的时候,使用那一层的信息也是很重要的
- 微调?
- PTMs一般作为特征抽取器和微调,区别就是看参数固不固定
- 微调对于各种任务来说更加方便使用
- 选择合适的预训练任务、结构、语料库
- 微调策略
- 两阶段
- 中间任务或者语料
- 目标任务
- 多任务学习
- 额外的模块
- 效率低下
- 改进:原始的参数固定的基础上增加一些微调模块
- 模型融合和蒸馏等
- 两阶段
应用
General Evaluation Benchmark
- The General Language Understanding Evaluation (GLUE) benchmark
-
a collection of nine natural language understanding tasks, including single-sentence classification tasks (CoLA and SST-2), pairwise text classification tasks (MNLI, RTE, WNLI, QQP, and MRPC), text similarity task (STSB), and relevant ranking task (QNLI). GLUE benchmark is well-designed for evaluating the robustness as well as generalization of models.
- 不提供真实标签,而是一个服务器
- superGLUE
-
- Question Answering
- 抽取式QA->span prediction
- multi-round generative QA:PTM+Adversarial Training+Rationale Tagging+Knowledge Distillation
- Sentiment Analysis
- Named Entity Recognition
- 预测每个token对应的label
- bio和bieso
- Machine Translation
- MASS使用seq2seq MLM去一起训练编码器和解码器
- Summarization
- Zhong利用Siamese-BERT去计算原文档与总结之间的相似度
- Extractive summarization as text matching
- Adversarial Attacks and Defenses
- 预训练模型相当脆弱
- 所以如何攻击和防御也是研究的重点
- 攻击:利用人类感知不到的输入变化但是能够影响模型的输出,语法上流畅,语义上也要连贯
- BERT在拼写错误上不敏感
未来的方向
上限
- PTMs还远没有达到上限,现在大部分模型都是利用更多的训练和更大的数据集去提高性能
- 但是我们需要考虑的是:更加合理和深的模型结构以及更有针对性、挑战性的预训练任务
-
Therefore, a more practical direction is to design more efficient model architecture, self-supervised pre-training tasks, optimizers, and training skills using existing hardware and software.
- [[Clark et al_2020_ELECTRA_arXiv2003.10555 [cs]|ELECTRA]]
结构
- Transformer结构的主要局限是计算复杂度,一般是输出长度的平方
- 目前算力不够发达,大部分模型最多只能处理512个token
- 设计深度模型的结构相当困难,也有自动搜索网络结构的工作 [[Neural architecture search with reinforcement learning]]
任务导向和模型压缩
- PTMs和下游任务之间的矛盾主要有两方面:
- 模型架构
- 数据分布
- 参数量大,移植到移动设备等->压缩
Knowledge Transfer Beyond Fine-tuning
- 固定原始参数,在这基础上增加一些可微调的模块
- BERT and PALs: Projected attention layers for ecient adaptation in multi-task learning
- Parameter-efficient transfer learning for NLP
- 需要更有效率的模型