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