赞
踩
本文主要做了一下贡献:
传统结构:不含有文本意思的词向量经过编码,成为含有文本意思的词向量。(个人理解是上游)接着应用于特殊任务(下游)
不含文本意思的词向量的缺陷:1)静态的,不随上下文的改变而改变。2)out-of-vocabulary problem,遇到词典之外的词语。
含文本意思的词向量的介绍:就是Encoder之后的词向量。每个词的词向量与整句话相关。
神经网络的文本的encoders能被分为两类:seq model和non-seq model
Seq model:
卷积模型
卷积神经网络
循环模型
LSTM、GRU
Non-Seqence Model:
PTMs for NLP:
无监督的预训练,有监督的fine-tuning
第一代PTMs:预训练词向量,是NNLM的先驱工作
Word2Vec:CBOW和Skip-Gram。与此同时,还出现了paragraph vector,Skip-thought vector,Context2Vec
第二代PTMs:预训练上下文的编码器
LSTM、seq2seq、ELMo(双向LSTM)、ULMFiT(Universal Language Model Fine-tuning)
近代:GPT、BERT
有三种预训练任务:
机器翻译任务是最有挑战性的任务之一,并且它的encoder的预训练对其他下游NLP任务也有很大推动作用。
自监督的预训练任务和使用的损失函数:
语言模型(LM):使用概率计算。缺点:只有上文信息,没有下文信息。
Masked Language Modeling(MLM)
Mask一些单词,通过剩下的单词来预测Mask掉的单词。
Seq2Seq MLM
将一个masked的句子输入编码器,解码器以自回归的方式按顺序产生掩码token。该模型被用于MASS和T5。可用于下游任务,例如问答,总结和机器翻译。
E-MLM(Enhanced Masked LM)
RoBERTa通过动态masking提升了BERT
Permuted Language Modeling(PLM)
有人指出,上游使用Mask,下游不使用Mask,将导致预训练和fine-tuning之间存在gap。
PLM会对输入句子进行随机排列。然后选择词语Mask,进行预测。但是效果不好。
Denoising Autoencoder(DAE)
该模型是拿一个被破坏了的输入,然后目的是恢复原来的输入。有几种方式去破坏文本:
Token Masking
Token Deletion:不同于第一种方法,这种方法还需要预测失去输入的位置。
Text Infilling:
预测两个空白部分,空白处的位置和数量都是已知的,但是缺失词的数量不知道,自己觉得生成多少词。
Sentence Permutation:将文本分成句子,并打乱。预测句子顺序。
Document Rotation:随机一致地选择一个token,并旋转文档,使其从该token开始。模型需要确定文档的实际起始位置。
Contrastive Learning(CTL)
损失函数:
L
C
T
L
=
E
x
,
y
+
,
y
−
[
−
l
o
g
e
x
p
(
s
(
x
,
y
+
)
)
e
x
p
(
s
(
x
,
y
+
)
)
+
e
x
p
(
s
(
x
,
y
−
)
)
]
L_{CTL}=E_{x,y^+,y^-}[-log\frac{exp(s(x,y^+))}{exp(s(x,y^+))+exp(s(x,y^-))}]
LCTL=Ex,y+,y−[−logexp(s(x,y+))+exp(s(x,y−))exp(s(x,y+))]
s ( x , y ) = f e n c ( x ) T f e n c ( y ) s(x,y)=f^T_{enc(x)}f_{enc(y)} s(x,y)=fenc(x)Tfenc(y)
or
s
(
x
,
y
)
=
f
e
n
c
(
x
⊕
y
)
s(x,y)=f_{enc}(x\oplus y)
s(x,y)=fenc(x⊕y)
pairwise ranking task:替换中心词汇,让模型预测该句子是否合法。
Deep InfoMax(DIM)
Replaced Token Detection(RTD):根据上下文预测是否token被替换。ELECTRA提升了RTD的性能,通过设置一个产生器G和一个鉴别器D,一共有两个步骤:1)使用MML来训练G。2)使用G的权重初始化D,然后冻结G,微调D,使用的是鉴别任务(鉴别是否token被G替换)。预训练之后G被扔掉,只用D进行下游任务的微调。
Next Sentence Prediction(NSP):利用标点符号来构造预训练语言模型。预测两个句子是否相连。这样可以让模型理解输入句子的关系,进而有利于对信息敏感的任务,例如问答和推理。后来有人发现这个东西不可靠。
Sentence Order Prediction(SOP):ALBERT使用该方法代替了NSP,使用两个连贯的句子在同一个文本中作为正例,将这两个句子顺序交换作为反例。结果ALBERT胜过BERT在各种各样的下游任务中。StructBERT和BERTje也采取SOP作为他们的自监督学习任务。
Others
Cross-lingual task、multi-model applications
从四个方面对已经存在的PTMs进行分类:
分类图:
总结:
主要讨论文本级的PTMs和非文本级的PTMs分别获得了什么知识。
Non-Contextual Embeddings:
有人证明skip-gram能获得句法和语义的词语的关系。例如:
vec(“China”) − vec(“Beijing”) ≈ vec(“Japan”) − vec(“Tokyo”)
还发现了语义合成的秘密:vec(“Germany”) + vec(“capital”) is close to vec(“Berlin”).
Contextual Embeddings:
大概有两种知识可以学习:( linguistic knowledge)语言知识和(world knowledge)全局知识
PTMs一般会缺乏特殊领域的知识。引入额外的知识会使得模型更加有效。早期的研究集中于知识图谱嵌入和词嵌入想混合。自从BERT之后,通过设置一些辅助性质的预训练任务来融入额外的知识。并且融入额外知识的时候不需要重新训练他们,只需要微调即可。
knowledge graph language model(KGLM)和latent relation language model(LRLM),这两个模型支持基于知识图谱的预测。
Mulitilingual PTMs(多语言)
Cross-Lingual Language Understanding (XLU) :早期是研究多语言词向量,试图将多语言合并到一个语义空间中。mBERT展示了很强的能力。
XLM提升了mBERT通过加入了一些交叉语言的任务。
XLM-RoBERTa (XLM-R)的训练数据集比较庞大。
Cross-Lingual Language Generation (XLG):生成不同语言的文本。这种模型需要对编码器和解码器都进行训练。、
Language-Specific PTMs(特殊语言)
有人用迁移学习技术将一个多语言的PTM转化为了俄语模型。另外,一些单语言模型也被训练成专用语言的模型。
将视觉和语言特征编码。这些模型再一些大型多模态语料库中进行训练,例如语音或者图像。VideoBERT、VisualBERT、ViLBERT
Video-Text PTMs
VideoBERT 和 CBT
Image-Text PTMs
Audio-Text PTMs:SpeechBERT
大多数语言模型都是使用普遍的语料库,例如维基百科,这限制了模型在特殊任务上的学习能力。但是最近已经有人提出了特殊领域的模型。
由于参数很多,因此难以在真实生活中为人民服务,模型浓缩是一个有潜力的方法去减小模型尺寸和提升计算效率。
有5种方法去压缩PTMs:
模型剪枝。移除不重要的参数
移除部分网络(权重、神经元、层、核、注意力头)。
权重量子化。使用更少的存储空间去存储参数。
将高准确度参数压缩到更低的准确度。这个方法需要可兼容的硬件。
参数共享相似的模型单元。
典型模型:ALBERT。虽然参数减少了,但是推理时间变得更长。
知识蒸馏。训练一个更小的模型从起初的模型当中学习中间的输出。
知识蒸馏(KD)[168]是一种压缩技术,其中一个叫做学生模型的小模型被训练来重新产生一个叫做教师模型的大模型的行为。该机制能被分为三种类型:
从软目标概率中提取
有人证明通过使得学生来模仿老师能使得知识从老师转移到学生。DistilBERT训练学生模型使用蒸馏损失函数:
L
K
D
−
C
E
=
∑
i
t
i
⋅
l
o
g
(
s
i
)
L_{KD-CE}=\sum_i{t_i}\cdot log(s_i)
LKD−CE=i∑ti⋅log(si)
t
i
t_i
ti和
s
i
s_i
si分别是老师和学生所预测的可能性。
从软目标概率中提取也能被应用于特殊任务模型中。
这种模型实际上是将老师模型看作一个黑盒,并且只关注它的输出。
从其他知识中提取
TinyBERT、MobilBERT
蒸馏到其他结构中
将Transformer模型蒸馏到RNN或者CNN能减少计算复杂度。
模型替换。用更紧凑的替代品替换原来的模块。
BERT-of-Theseus
Early Exit(提前退出)
让模型提前退出来代替通过整个模型,执行的层数由输入决定。
Depth-adaptive transformer学会了预测有多少层encoding layer需要执行对于一个特别的序列。
DeeBERT、RightTool、Fast-BERT、ELBERT、PABEE均减少了encoder的计算,他们减少计算的方法通常包含两步:
NLP领域中迁移学习的种类:domain adaptation(领域自适应)、 cross-lingual learning(跨语言学习)、 multi-task learning(多任务学习)。下游任务是有标签数据。
为了将PTM的知识迁移到下游任务中,我们需要考虑以下几个问题:
选择合适的预训练任务,模型架构和语料
选择合适的layers:不同层能捕获不同种类的信息
有三种layer可选:
是否进行微调?
两种模型迁移的方法:特征提取(冻结预训练参数)、微调(更常用、更便利)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnhdyMCL-1664289552043)(C:\Users\11878\AppData\Roaming\Typora\typora-user-images\image-20220731141219448.png)]
Two-stage fine-tuning(两级微调):这是一种介于预训练和微调之间的策略。
Multi-task fine-tuning(多任务微调):有人证明了多任务学习和预训练是互补的技术
Fine-tuning with extra adaptation modules(使用额外适应模块微调):微调的主要不足在于参数的无效率,解决方法是注入一些微调适应模块,而起初的参数是固定的。
其他。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。