(now!)NLP发展到Transformer相关及改进模型
0. NLP
0.1 发展
https://www.jianshu.com/p/d35a2fd593eb
0.2 训练流程
1. RNN和LSTM
单词的先后顺序会影响句子的意思,RNN擅长捕捉序列关系,不过对于翻译来说,句子间的单词数量不是一一对应的。
1.1 缺点
- 串行结构,计算速度慢
- 梯度爆炸和梯度消失
1.2 梯度爆炸和梯度消失问题
见[面试.md]
1.3 LSTM
长短期记忆网络相对于RNN,多了一个遗忘门,会适当删减(筛选)前置特
1.4 存在问题
受限于结构,RNN只能处理N to N
,1 to N
和N to 1
问题,但是无法处理N to M
的问题?
2. Word2Vec和Seq2Seq
Seq2Seq
是一个拥有编码器Encoder
和解码器Decoder
的模型,Encoder
和Decoder
依然是RNN网络,不过在Seq2Seq
模型中先由Encoder
提取原始句子的意义,再由Decoder
将意义转化成对应的语言,依靠意义这一中介,Seq2Seq
解决了两端单词数不对等的情况。
意义单元能够存储的信息是有限的,如果一个句子太长,翻译精度就会下降?
3. Attention
3.1 描述
每个阶段我们关注到的内容都有所不同
机器翻译中,
写出每个英文单词时,我们会格外注意其中的一部分汉字
而Attention
可以从纷繁复杂的输入信息中,找出对当前输出最重要的部分
3.2 工作原理
Q
是QUERY
,表示输入信息;Key
和Value
成对出现,通常原始文本(输入)的信息。通过计算Q
与K
之间的相关性,得出不同的K
对输出的重要程度,再与对应的V
相乘求和,就得到了Q
的输出。
3.2.1 例子
以阅读理解为例,Q
是问题,K
和V
是原始文本,计算Q
与K
的相关性,让我们找到文本中最需要注意的部分,利用V
得到答案。
在机器翻译中,Q
是翻译结果,K
是输入文本,V
是对应语义
在Seq2Seq
的基础结构上,在Decoder
生成每个单词时,都有意识的从原始句子中提取生成该单词最重要的信息,摆脱了输入序列的长度限制。
但是在该模型中,RNN需要逐个计算相关性,计算速度太慢了?
4. Self-Attention
只关注输入序列元素之间的关系,通过将输入序列直接转化为Q、K、V
,然后在内部进行Attention
计算,就能很好捕捉文本的内在联系,对其作出再表示
5. Multi-Head Attention
使用多种变换生成不同的Q、K、V
进行运算,再将他们对相关语句的意义的结论综合起来,进一步增强Self-Attention
的效果
6. Transformer(Bert GPT)
6.0 简介
6.1 Transformer和CNN对比(图像领域)
- 在
CNN
应用到海量数据后,就会发现其对数据的适配能力不够强;而Transformer
对大数据的适配能力很强,可以明显看到随着数据的增加,表现/性能performance
不断增加。 Transformer
的每个参数是动态变化的;而CNN
学习参数一旦学习完后就固定了fixed
。Transformer
对每张图的参数都是不一样的、随时变化的,就可以有无限的参数空间来做一件事。像CNN
中新引入的Dynamic Network
、Dynamic convolution
、Dynamic Relu
等概念都是为了把这个参数动态化
6.2 Interest Point和Attention
Attention
关注feature
彼此之间的相互关系,Interest Point
(如sift/hog中等)则是可以学到哪些点更突出、更有表达力。
思考:这Attention和Interest Point是否可以在学习过程中彼此互补?
6.3 总结
dynamic
比static
好close loop
比open loop
好
7. Bert
机器是如何理解语言的?
就像图像由像素组成,而像素是由RGB
数值表示,我们没有办法让机器直接理解语言,需要将它们转换成机器能明白的东西,比如数字组成的向量。
为什么使用向量表示语言?
词语的意义之间是有关联的,距离可以表示词与词直接的关系。
如何得到向量?
机器学习的出现让我们不必为一个单词设计向量,而是将收集好的句子、文章等数据交给模型,由它为单词们找到最合适的位置。
7.1 Transformer->Bert
Bert
就是帮助我们找到词之间位置关系的模型之一,Bert
源于Transformer
。
既然Encoder
可以将语义很好地抽离出来,直接将这部分独立(Bert
),也能很好地对语言作出表示。
7.2 Bert的训练
除了结构,人们还为Bert
设计了独特的训练方式:
- 遮挡
masked
训练,对语料随机覆盖15%
的词汇,让Bert
去猜这些词汇是什么(完形填空) - 利用Next Sentence Prediction任务学习句子级别的信息(或者可以理解为上下文是否匹配)
总结:前者可以让Bert
更好地依据语境进行预测(完形填空),后者让Bert
对上下文关系有更好的理解(阅读理解)
7.3 Bert的应用
在完成不同的NLP
任务时,需要将已经训练好的Bert
依据任务目标,增加不同功能的输出层联合训练。
- 文本分类增加了分类器
Linear classifier
(输入句子,输出类别如欺诈
) - 阅读理解增加了一个全连接层
softmax
(输入问题和文章,输出答案的位置)
面对不同任务,Bert
只需对任务作出微调即可
8. GPT(生成式预训练Transformer)
Transformer
的Encoder
变成了Bert
,Decoder
变成了GPT
。
GPT
也是一个预训练语言模型,同样需要面对不同任务进行微调fine tuning
8.1 应用(生成)
next-token prediction
- 机器翻译、文本摘要等基于原始文本信息的任务
- 新闻写作等无中生有的生成类任务
- 学习过大量的音乐数据后,给出一个乐句,
GPT-2
就能生成一段音乐 - 使用文本和对应图像的数据进行训练,
GPT-3
就能依据描述输出图像,哪怕真实世界并不存在的也能生成
8.2 GPT-3(暂未开源)
GPT-3
是一个拥有1750
亿参数的预训练模型,不需要面对不同的任务再训练,也不需要微调就能直接使用,这就是所谓的零样本学习Zero-Shot Learning
。
与语言模型相比,GPT-3
更接近一个包含知识、语境理解和语言组织能力的数据库。
8.2.1 强大功能
- 结构决定了功能,
Decoder
的输出都基于上一步输出的内容(也就是Bert
输出的语义),这时的生成成了GPT
最强大的能力,给它一个开头,它就能依据这些这些文字的风格和内容不断续写,甚至可以创作歌词和小说。 - 进一步训练后,
GPT
还能跨越语言的壁垒,如音乐生成和根据描述生成图像等
9. ViT(Vision Transformer)
通过将图片切块划分转化为序列作为输入
ViT使用的Transformer
没有考虑Transformer
对于词在不同位置语义的变化(也就是Transformer
更关注图像特征之间的),所以只能用来做分类任务,而图像出现在哪个位置、具体哪些像素属于这个类别,也就是目标检测和分隔仍无法实现,而Swin Transformer
解决了这一问题。
10. 迁移学习(Transfer Learning)
- CNN中前几层都是在提取特征,直到全连接层才进行分类。提取特征的过程很相似,我们可以拿出来直接用,再用苹果与梨的数据训练新的全连接层完成分类。
- 像这样利用数据、任务和模型间的相似性,将训练好的内容应用到新的任务上,被称为迁移学习。
- 由于这一过程发生在两个领域间,已有的知识和数据,也就是被迁移的对象被称为源域;被赋予经验的领域被称为目标域。
- 不是一种模型,更像是一种解题思路
10.1 优点
- 目标领域的数据太少,需要数据更多的源域的帮助
- 为了节约训练时间
- 实现个性化应用
individualized
10.2 应用及与预训练模型关系
10.2.1 应用
- 语料匮乏的小语种之间的翻译
- 缺乏标注的医疗影像数据识别
- 面向不同领域快速部署对话系统
10.2.2 预训练模型与迁移学习的关系
预训练模型是迁移学习的一种,就像预先学习了一个指数/技术,然后再把这个知识/技术代入到具体任务中。
像Transformer
、Bert
、GPT
这些预训练语言模型,微调后可以完成不同的任务。
11. 提升篇
11.1 模型
- SGNS/cBow、FastText、ELMo等(词向量)
- DSSM、DecAtt、ESIM等(问答和匹配)
- HAN、DPCNN等(分类)
- BiDAF、DrQA、QANet等(MRC)
- CoVe、InferSent等(迁移)
- MM、N-shortest等(分词)
- Bi-LSTM-CRF等(NER)
- LDA等主题模型(文本表示)
11.2 训练
- point-wise、pair-wise和list-wise(匹配、ranking模型)
- 负采样:从非当前label中选择几个作为负样本加入,作为出现负样本的概率加入到损失函数中
- 优点
- 提高训练速度
- 改进效果(模拟真实环境下噪声情况,让模型鲁棒性更强)
- 优点
- NCE(噪声对比估计):通过学习数据样本分布和噪声样本分布的区别,从而发现样本的特性。
- 作用
- 解决归一化参数密度估计问题
- 作用
- 层级softmax方法(fastText模型),哈夫曼树的构建
- 不均衡问题的处理
- KL散度与交叉熵loss函数
11.3 评估指标
- F1-score
- PPL
- MRR
- MAP