Pre-trained Model
PTMs两大范式
1.浅层次嵌入(Non-Contextual Embeddings)
词嵌入 | 训练目标 | 预料范围 | 特点 |
---|---|---|---|
NNLM | 语言模型 | 局部语料 | 基于语言模型训练,词嵌入只是NNLM的一个产物 |
Word2Vec | 非语言模型(窗口上下文) | 局部语料 | 采用分层SoftMax和负采样,损失函数为带权重的交叉熵 |
Glove | 非语言模型(词共现矩阵) | 全局语料 | 全局语料构建词共现矩阵后进行高效矩阵分解算法 |
2.预训练编码器(Contextual Embeddings) (解决一词多义)
编码器 | PTMs代表 | 计算方式 | 特点 |
---|---|---|---|
MLP(MultiLayerPerceptron) | NNLM/Word2Vec | 前馈+并行 | 不考虑位置信息 |
CNNs | 前馈+并行 | 考虑位置信息 n-gram局部上下文编码 | |
RNN→LSTM | ELMo | 循环+串行 | 天然适合处理位置信息,但BPTT会导致梯度消失 |
Transformer(Encoder) | BERT | 前馈+并行 | self-attention 解决长距离依赖,无位置偏差 |
Transformer(Decoder) | GPT-1、GPT-2 | 前馈+并行 | |
Transformer-XL | XLNet | 循环+串行 | 基于transformer引入相对位置编码 |
Recurrent NN
limitation:Vanishing gradient problem
Long Short Term Memory
上侧箭头变化慢,下侧箭头变化快,保证梯度不会消失。
Embedding from Language Model (ELMo)
RNN-based language model
training of ELMo: Next Word Prediction
- contextualized word embedding
- each word token has its own embedding
同一个单词上下文不同embedding可能不同(一词多义)
有从前到后和从后到前两种embedding,都要
有不同层的embedding, 都要,再给比例(不同实验比例不同)
Bidirectional Encoder Represtations from Transformer (BERT)
encoder of transformer
- bidirectional 双向!
Training of BERT
Approach 1: Masked LM (MLM)
盖掉句子中的一些单词,预测被改掉的单词是哪个
如果两个词汇填在同一个地方没有违和感,那么他们可能意思相似,拥有相似的Embedding
Approach 2: Next Sentence Prediction
判断两个句子是否应该被接在一起
[SEP] : the boundary of two sentences
[CLS] : the position that outputs classification results (一般在开头)
How to use BERT
根据特定 case对模型进行 fine tuning
case1: input 句子,output 分类(文本分类,情感分类)
经过BERT(fine-tuned)后, [CLS]的输出再来Linear Classifier。
case2: input 句子,output 每个单词的分类
case3: input 句子*2, output 分类 (根据前提,判断假设是否正确)
case4: Extraction-based Question Answering(给一篇文章,问他一些问题,问题中的词汇要在文章中出现过)
延申:Enhanced Representation through Knowledge Integration (ERNIE)
因为中文中盖掉一些字很容易猜出来,因此我们盖掉一些词汇。
Genrative Pre-Training (GPT)
decoder of transformer
非常非常的巨大,很神奇。
根据下游任务的模型修改
fine-tuning
预训练语言模型“迁就“各种下游任务。具体体现就是通过引入各种辅助任务loss,将其添加到预训练模型中,然后继续pre-training,以便让其更加适配下游任务,这个过程中,预训练语言模型做出了更多的牺牲。
delta-tuning
仅微调模型参数的一小部分,或是增加一组参数,而其余部分保持不变。
prefix-tuning
提出任务特定的trainable前缀prefix,这样直接为不同任务保存不同的前缀即可。只需要不同任务设置不同的Prefix即可,因此实现上只需要存储一个大型transformer模型和多个学习的任务特定的prefix参数。
prompt-tuning
将人为的规则给到预训练模型,使模型可以更好地理解人的指令的一项技术,以便更好地利用预训练模型。例如,在文本情感分类任务中,输入为”I love this movie.”,希望输出的是”positive/negative”中的一个标签。那么可以设置一个Prompt,形如:“The movie is _”,然后让模型用来表示情感状态的答案(label),如positive/negative,甚至更细粒度一些的“fantastic”、“boring”等,将空补全作为输出。