(now!)NLP发展到Transformer相关及改进模型
https://www.jianshu.com/p/d35a2fd593eb

单词的先后顺序会影响句子的意思,RNN擅长捕捉序列关系,不过对于翻译来说,句子间的单词数量不是一一对应的。
见[面试.md]
长短期记忆网络相对于RNN,多了一个遗忘门,会适当删减(筛选)前置特
受限于结构,RNN只能处理N to N,1 to N和N to 1问题,但是无法处理N to M的问题?

Seq2Seq是一个拥有编码器Encoder和解码器Decoder的模型,Encoder和Decoder依然是RNN网络,不过在Seq2Seq模型中先由Encoder提取原始句子的意义,再由Decoder将意义转化成对应的语言,依靠意义这一中介,Seq2Seq解决了两端单词数不对等的情况。
意义单元能够存储的信息是有限的,如果一个句子太长,翻译精度就会下降?
每个阶段我们关注到的内容都有所不同
机器翻译中,

写出每个英文单词时,我们会格外注意其中的一部分汉字
而Attention可以从纷繁复杂的输入信息中,找出对当前输出最重要的部分

Q是QUERY,表示输入信息;Key和Value成对出现,通常原始文本(输入)的信息。通过计算Q与K之间的相关性,得出不同的K对输出的重要程度,再与对应的V相乘求和,就得到了Q的输出。

以阅读理解为例,Q是问题,K和V是原始文本,计算Q与K的相关性,让我们找到文本中最需要注意的部分,利用V得到答案。

在机器翻译中,Q是翻译结果,K是输入文本,V是对应语义
在Seq2Seq的基础结构上,在Decoder生成每个单词时,都有意识的从原始句子中提取生成该单词最重要的信息,摆脱了输入序列的长度限制。
但是在该模型中,RNN需要逐个计算相关性,计算速度太慢了?
只关注输入序列元素之间的关系,通过将输入序列直接转化为Q、K、V,然后在内部进行Attention计算,就能很好捕捉文本的内在联系,对其作出再表示
使用多种变换生成不同的Q、K、V进行运算,再将他们对相关语句的意义的结论综合起来,进一步增强Self-Attention的效果
CNN应用到海量数据后,就会发现其对数据的适配能力不够强;而Transformer对大数据的适配能力很强,可以明显看到随着数据的增加,表现/性能performance不断增加。Transformer的每个参数是动态变化的;而CNN学习参数一旦学习完后就固定了fixed。Transformer对每张图的参数都是不一样的、随时变化的,就可以有无限的参数空间来做一件事。像CNN中新引入的Dynamic Network、Dynamic convolution、Dynamic Relu等概念都是为了把这个参数动态化Attention关注feature彼此之间的相互关系,Interest Point(如sift/hog中等)则是可以学到哪些点更突出、更有表达力。
思考:这Attention和Interest Point是否可以在学习过程中彼此互补?
dynamic比static好close loop比open loop好机器是如何理解语言的?
就像图像由像素组成,而像素是由RGB数值表示,我们没有办法让机器直接理解语言,需要将它们转换成机器能明白的东西,比如数字组成的向量。
为什么使用向量表示语言?
词语的意义之间是有关联的,距离可以表示词与词直接的关系。
如何得到向量?
机器学习的出现让我们不必为一个单词设计向量,而是将收集好的句子、文章等数据交给模型,由它为单词们找到最合适的位置。
Bert就是帮助我们找到词之间位置关系的模型之一,Bert源于Transformer。
既然Encoder可以将语义很好地抽离出来,直接将这部分独立(Bert),也能很好地对语言作出表示。
除了结构,人们还为Bert设计了独特的训练方式:
masked训练,对语料随机覆盖15%的词汇,让Bert去猜这些词汇是什么(完形填空)总结:前者可以让Bert更好地依据语境进行预测(完形填空),后者让Bert对上下文关系有更好的理解(阅读理解)
在完成不同的NLP任务时,需要将已经训练好的Bert依据任务目标,增加不同功能的输出层联合训练。
Linear classifier(输入句子,输出类别如欺诈)softmax(输入问题和文章,输出答案的位置)面对不同任务,Bert只需对任务作出微调即可
Transformer的Encoder变成了Bert,Decoder变成了GPT。
GPT也是一个预训练语言模型,同样需要面对不同任务进行微调fine tuning
next-token prediction
GPT-2就能生成一段音乐GPT-3就能依据描述输出图像,哪怕真实世界并不存在的也能生成GPT-3是一个拥有1750亿参数的预训练模型,不需要面对不同的任务再训练,也不需要微调就能直接使用,这就是所谓的零样本学习Zero-Shot Learning。
与语言模型相比,GPT-3更接近一个包含知识、语境理解和语言组织能力的数据库。
Decoder的输出都基于上一步输出的内容(也就是Bert输出的语义),这时的生成成了GPT最强大的能力,给它一个开头,它就能依据这些这些文字的风格和内容不断续写,甚至可以创作歌词和小说。GPT还能跨越语言的壁垒,如音乐生成和根据描述生成图像等通过将图片切块划分转化为序列作为输入
ViT使用的Transformer没有考虑Transformer对于词在不同位置语义的变化(也就是Transformer更关注图像特征之间的),所以只能用来做分类任务,而图像出现在哪个位置、具体哪些像素属于这个类别,也就是目标检测和分隔仍无法实现,而Swin Transformer解决了这一问题。
individualized预训练模型是迁移学习的一种,就像预先学习了一个指数/技术,然后再把这个知识/技术代入到具体任务中。
像Transformer、Bert、GPT这些预训练语言模型,微调后可以完成不同的任务。