NLP-预训练语言模型

文章目录

  • 发展历程
  • 迁移学习
  • 预训练、精调范式(Pre-train,Fine-tune)

发展历程

神经语言模型 → 浅层次词向量 → 深层次词向量 → 预训练语言模型 神经语言模型\to浅层次词向量\to深层次词向量\to预训练语言模型 神经语言模型浅层次词向量深层次词向量预训练语言模型

预训练语言模型:
是采用迁移学习的方法,通过自监督学习,从大规模数据中获得与具体任务无关的预训练模型,然后用训练好的预训练模型提高下游任务的性能的一种数据增强法

迁移学习

分类:
1、归纳迁移学习
在源领域和任务上学习出的一般的知识,然后将其迁移到目标领域和任务上


迁移方式:
1、基于特征的方式
将源任务预训练模型的输出或者中间隐藏层的输出作为特征直接加入到目标任务的学习模型中。目标任务的学习模型可以是一般的浅层分类器或者一个新的神经网络模型
2、基于精调的方式
在目标任务上复用源任务预训练模型的部分组件,并对其参数进行精调


2、推导迁移学习
一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习

预训练、精调范式(Pre-train,Fine-tune)

预训练-精调范式基本思想:

  • 预训练方法通过自监督学习从大规模数据中获得与具体任务无关的预训练模型,然后用训练好的预训练模型提高下游任务的性能

预训练,精调范式–目标工程:

  • 特点:引入各种辅助loss,添加到预训练模型中,再训练,以适配下游任务,之后,通过引入额外的参数,用特定任务的目标函数对模型进行微调,使其更适配下游任务。研究重点转向目标工程,设计在预训练和微调阶段使用的训练目标

训练过程分为两个阶段:
1、利用大型语料库完成预训练模型非监督学习
2、针对特定任务在相应数据集中进行监督学习,通过Fine-tuning技术来适配具体任务。

按照语言模型分类:
NLP-预训练语言模型_第1张图片
按照模型结构划分:
NLP-预训练语言模型_第2张图片
典型预训练语言模型

  • LSTM

双向语言模型的半监督序列标注模型TagLM
Semi-supervised sequence tagging with bidirectional language models
1、用大量未标注的原始语料训练双向语言模型得到 h k L M 向量 h_{k}^{LM}向量 hkLM向量
2、将 h k L M 向量 h_{k}^{LM}向量 hkLM向量加入目标任务模型,用标注的任务数据训练任务模型

ELMO
Embeddings from language Models
学习深层的上下文词表示知识,并用此来更好的增强各类NLP任务
1、预训练阶段:用大规模无标注数据预训练双向语言模型,然后将BiM网络参数固定得到ELMo k _{k} k
2、任务模型训练,将ELMo k t a s k _{k}^{task} ktask加入下游任务,用任务标注数据增强微调任务模型参数及ELMo k t a s k _{k}^{task} ktask中的参数

ULM-FiT
Universal Language Model Fine-tuning for Text Classification
提出一种可以让不同NLP任务之间采用类似CV微调技术的通用归纳迁移学习方法,主要贡献是训练方法


模型:三层,单向AWD-LSTM,源任务:语言模型,目标任务:文本分类


训练过程:
1、用通用语料预训练语言模型
2、用任务语料微调语言模型
3、目标任务微调(文本分类任务)

  • Transformer Decoder

GPT
Generative Pre-Training
Improving Language Understanding by Generative Pre-Training
模型结构:
采用了Transformer的Decoder部分,每个子层只有一个Masked Multi Self-Attention和一个Feed Forward,模型共叠加使用了12层的Decoder
训练:
1、pre-tuning,主要利用大型语料库完成非监督学习
2、fine-tuning,针对特定任务在相应数据集中进行监督学习,通过Fine-tuning技术来适配具体任务
任务微调有两种:1、只调任务参数;2、任务参数和预训练模型参数一起调,这样可以让预训练模型更加适配任务

  • Transformer Encoder

BERT
BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding
Transformer的Encoder
结构:堆叠的双向Transformer Encoder,在所有层中共同依赖于左右上下文。基础版是12个Encoder(12层);高级版24个Encoder(24层)
训练:
1-1:通用领域语言结构知识学习
深层双向预测模型,预测中存在自己看见自己的问题,达不到预期效果
解决方法:采用Masked Language Model, MLM
遮住某些单词的句子作为编码器的输入,输出端用被掩盖位置的最终隐藏状态预测被掩盖的单词


基于MLM的训练方法:
随机遮住15%的单词作为训练样本。其中,80%用masked token来代替,10%用随机的一个词来替换,10%保持这个词不变


1-2:句子顺序关系学习
预训练学习二个句子顺序关系的二分类的模型(对学习句子之间的关系有帮助)
训练方法:
正样本和负样本的比例是1:1,给定句子A和B,B是A的实际语境的下一句;负样本:在语料库中随机选择句子作为B。
通过两个特定的token[CLS]和[SEP]来串接两个句子,该任务在[CLS]位置输出预测
2、与下游任务对接

RoBERTa
RoBERTa: A Robustly Optimized BERT Pretraining Approach
对原来BERT模型调优达到效果提升
1、改进优化函数
2、改用动态掩码的方式训练模型,证明NSP(Next Sentence Prediction)训练策略的不足,采用了更大的batch size[更大的batch size配合更大学习率能提升模型优化速率和模型性能]
3、使用更大的数据集,使用BPE(Byte-Pair Encoding)处理文本数据

  • Transformer

BART
BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension
Bidirectional and Auto-Regressive Transformers
BERT和GPT都是单独堆叠Transformer的Encoder和Decoder,单纯使用一部分,会造成一些问题:
Bert:具备双向语言理解能力却不具备做生成任务的能力
GPT:拥有自回归特性却不能更好的从双向理解语言
解决方法:使用Transformer的结构为基础,吸纳两者的优点,使用多种噪声破坏原文件,再将残缺文本通过序列到序列的任务重新复原(降噪自监督)
1、训练:
输入加入噪声干扰的原文,输出恢复后的原文序列
5种加噪方式
2、与下游任务对接:对于不同的任务,BART有不同的使用方法

实验结果:
RoBERTa和BART的表现相似,但BART能够在不牺牲性能的情况下将任务扩展到生成任务上,且增长近10%的参数量

T5
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
(NLP Text-to-Text预训练模型超大规模探索)
动机:给整个NLP预训练模型领域提供了一个通用框架,把所有NLP任务都转化成一种形式(Text-to-Text),通过这样的方式可以用同样的模型,同样的损失函数,同样的训练过程,同样的解码过程来完成所有的NLP任务

各种NLP任务,只需要针对一个超大预训练模型,考虑怎么把任务转换为合适的文本输入输出,模型对这些任务的区分只是根据构建的输入输出形式,做出一个超级模型,这样所有的NLP任务都能直接处理

输入输出格式:为了告诉模型当前的任务,给每条输入样本加一个具体任务相关的前缀
训练:通过大量实验对比选择

# 预训练,提示,预测范式(Pre-train, Prompt, Predict)

你可能感兴趣的:(nlp,自然语言处理)