基于上下文:输入问题和文本,输出答案;如阅读理解
封闭系统:直接输入问题,输出答案;如聊天机器人
定义:先在有大量训练数据的任务上预训练,再在下游任务上继续训练
定义:是一种基于transformer encoder的双向语言表示模型
定义:一种基于transformer的多任务模型
迁移学习优点:
减少训练时间
提升预测准确率
可通过少量数据训练
迁移学习类型:
(1)Transfer
(2)Pre-train data
(3)Pre-training task
迁移学习流程:
先在原始数据集上进行预训练,再迁移至具体下游任务上继续训练,进行精调
类型:
基于特征与基于精调(Feature-based vs Fine-Tuning):
基于特征:
定义:将预训练模型的隐藏层参数提取出来,用在新模型中
例:
如词嵌入的训练就是一种迁移学习,先通过中心词预测得到词嵌入矩阵,再将其迁移到其他NLP任务中加以使用
基于精调:
定义:直接用预训练模型,或为预训练模型新增一个输出层,使其更适应当前任务
例:
通过电影评论训练一个三分类情感分类模型,现在要通过课程评论训练五分类模型
可通过直接使用之前的模型在新数据集上继续训练,并增加新输出层,以实现五分类的要求,
数据与表现:
关系:通常训练数据量越大,模型效果越好
标注数据与未标注数据:
关系:通常标注数据数量较少,未标注数据数量很多
通过无标注数据迁移学习:
方法:先通过无标注数据预训练模型,再迁移至标注数据上继续训练
自监督学习(Self-supervised task):
方法:构建一种模型结构,使其能自行构建训练集与标签进行训练,无需人工标注数据
概述:使用固定大小的窗口选择上下文,来预测中心词
缺点:因窗口大小固定,当窗口过小时可能丢失关键信息
概述:解决固定窗口问题,并使用了RNN结构,使用全部上下文信息来预测中心词
缺点:没有注意力机制,缺乏长期记忆力,存在梯度消失问题
概述:GPT使用了Transformer的Decoder结构,使用了注意力机制,利用全部前文信息来预测中心词
缺点:使用前向注意力,只考虑之前出现的词
概述:BERT使用了Transformer的Encoder结构,且使用双向注意力,能同时考虑上下文信息
特点:
Words to sentences:不仅能预测下一个单词,还可能预测下一个句子
预训练:支持自监督训练,可以使用MLM和NSP两种方法进行预训练
Multi-Mask:随机从句子中选择单词作为中心词让模型预测
Next Setence Prediction:输入一个句子,让模型预测下一个句子
概述:T5使用了Transformer的Encoder和Decoder结构,是一种多任务模型
特点:
Text-to-Text:文本到文本,通过在输入文本中指定任务类型,即可通过一个模型实现不同任务功能
定义:
全称Bidirectional Encoder Representations from Transformer ,即双向Transformer编码器模型;
是一个多任务语言表示模型(language representation model);
主要模型结构是由trasnformer的encoder堆叠而成,主要流程是预训练(pre-training)与精调(fine-tuning)
结构:
由输入层、中间层、输出层构成;中间层与输出层同transformer encoder基本一致
输入层为适应多任务训练而进行了一定改造
特点:
多层双向transformer
位置编码
深度网络结构/大量参数
输入层:
输入格式:为使BERT支持多任务,因此输入格式为 [标识符]+句子 的结构
标识符:
[CLS]:表示当前任务类型,为分类任务
[SEP]:分隔符,分隔两段文本
输入层格式:
词嵌入(Token Embneddings):将各单词转换为对应词向量
段嵌入(Segment Embeddings):表明这个词属于哪个句子;在有多文本输入时用于区分
位置嵌入(Position Embeddings):维护各单词间位置关系,由模型训练出;(与Transformer不同,Transformer中是预先设定好的值)
输出层:
输出格式:对应输入层,会输出 对应任务的结果+句子
定义:可先通过大量语料数据进行无监督的预训练
方法:
掩码语言模型(MLM):随机选择单词遮掩作为中心词预测,不需要人工标注数据
下一句子预测(NLP):给出上一句,预测下一句,同样不需要人工标注数据
定义:使用预训练好的BERT模型迁移至不同下游任务继续训练,以进行精调
方法:通过改变输入结构,来实现对不同任务的目标
定义:一种文本到文本模型,将常见的NLP任务全部整合进一个模型中
常见预训练模型结构比较:
(1)Encoder-Decoder:即 Seq2Seq 常用模型,分成 Encoder 和 Decoder 两部分,Encoder可用全部信息,Decoder只能用之前的信息;如Transformer
(2)Language model:只使用Encoder,当前时间步只能看到之前时间步信息;如GPT
(3)Prefix LM:Encoder 和 Decoder 的融合体,部分Encoder只能能看到之前的信息,而部分Decoder能看到全部信息;如UniLM
T5模型结构:
基于Encoder-Decoder结构的深度网络模型,因通过实验发现其效果最好
定义:通过使用不同任务的数据集来训练模型
输入输出格式: 任务指令+输入文本
数据训练策略(Data Training Strategies):
因为T5是多任务模型,所以需要使用不同数据集进行训练,可以通过以下策略决定各类数据比例:
(1)等量混合(Equal mixing):即从不同任务数据集中取等量数据用于训练
(2)等比混合(Examples-proportional mixing):根据不同任务数据集大小,等比例取数据用于训练,即数据集越大取的训练数据越多
(3)混合系数混合(Temperature scaled mixing):设定一个混合系数T,根据其从不同数据集中选择训练数据
定义:通过先预训练再精调的方式训练模型
精调方法:
逐步解冻法(Gradual Unfreezing):先将所有隐藏层设为不可训练,再从深至浅依次解冻,使其可以训练
调整层法(Adapter layers):增加新的输出层,并进行训练
结论:
使用预训练+精调的训练方法效果比使用多任务训练要好
更大的模型、更多的训练数据、更长的训练时间,都对最终效果起正面影响
定义:国际权威数据集,包含了各类NLP问题的数据集,可用来训练和评价模型效果
包含领域:
Transformer encoder:
数据示例:
使用T5实现:
(1)加载预训练模型
(2)调整数据格式,使其符合T5的输入格式
(3)在目标任务上精调模型
(4)使用最终模型预测结果
作业代码:https://github.com/Ogmx/Natural-Language-Processing-Specialization
可将代码与数据下载至本地,使用jupyter notebook打开