Transformer系列模型笔记

1.word2vec

1.1 CBOW(词袋模型)

根据上下出现的单词预测中间的单词,包括输入层、投影层、输出层。输入层包括上下出现单词的向量化表示;投影层是把输入层的向量累加求和后做映射;输出层(计算语料库中所有单词的概率,计算量大!)所以设计的底层是一颗哈夫曼树,按照语料库中单词出现的频率作为权重进行构建,出现频率越高的节点在树中层数越浅。

1.2 skip-gram

与词袋模型刚好相反,skip-gram模型是根据当前词推测当前单词可能的前后单词。

构建上下文词--目标词的数据集,采用了负采样技巧,使用上下文词+随机从语料库中选取词语构成负样本,将任务转化为逻辑回归N元分类任务。

2.Transformer

2.1预训练模型

为什么要研究预训练模型

有大量任务中存在无标注数据,若采用人工标注则费时费力。那么我们可以采用先使用大规模数据集训练一个大模型,再利用我们手头少量数据集做微调。

2.2训练过程

2.3模型优势

比起CNN,CNN只能通过卷积核提取到局部信息,而对于文本数据忽略了长距离的依赖。

比起RNN,RNN随着距离的增加,信息衰减严重,而transformer不存在距离问题它只取决于两者的相关性。RNN建模当前词时只会用到前面的词,而transformer建模当前词时不仅可以用到前面的词也会用到后面的词。RNN无法做到并行计算,只能一步一步计算隐藏层状态。

2.4位置编码

为了解决句子中的时序问题,transformer引入了位置编码。

当位置为偶数时为sin(××),位置为奇数时为cos(××)。

2.5解码器的两个注意力层

第一个是带masked的多头注意力层,本质上是一个自注意力层,与Encoder不同的是该自注意力层只允许关注已输出位置的信息,在通过softmax之前进行mask使之变为一个很大的负数。

第二个是不带masked的多头注意力层,也叫Encoder-Decoder注意力层。不同的是,Decoder中的qkv只有q来源于上一个Decoder的输出,kv全部来源于Encoder的最后一层输出。

3.ELMO模型

产生原因:因为word2vec无法区分多义词的不同语义,因此ELMO可以根据上下文动态调整:预训练(双层双向LSTM)+ 特征融合。伪双向---分开训练的!!!

本质思想:事先用语言模型学好一个单词的Word Embedding,然后在实际使用Word Embedding的时候,单词已经具备了特定的上下文了,这个时候可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。

ELMO虽然采用的双向结构,但两个方向是彼此独立训练的,从而避免了已知答案去预测答案的情况。

**【使用】**ELMO会得到三个Embedding向量:单词的word Embedding、第一层LSTM对应的Embedding(表示单词的句法信息)、第二次LSTM对应的Embedding(表示单词的语义信息)。分别给予这三个Embedding一个权重(这个权重可以通过学习得到),将三个Embedding分别乘以权重再进行累加后得到一个Embedding,将它作为补充的新特征用于下游任务。

4.生成式预训练模型GPT

GPT使用了transformer中的Encoder结构,其中的self-Attention替换为了masked的self-Attention,从而每个位置的词看不到后面的词。

为什么采用单向不采用双向:因为模型要训练预测能力,双向结构可以看到中间要预测的单词。因此GPT放弃了transformer的双向结构改用单向结构,也奠定了GPT根据已有的上下文生成下文的任务。

**【使用】**下游任务要向GPT的网络结构看齐,在做下游任务时GPT的参数初始化为预训练好的GPT网络参数,最后使用手头的任务训练这个网络并进行微调。

5.集大成者Bert

Bert使用了双向的transformer的结构集成,Bert综合了ELMO的双向优势与GPT的transformer特征提取优势。

**【使用】**同样是预训练,在下游任务中进行微调。

【输入输出部分的处理】为了适配多任务下的迁移学习,Bert设计了更通用的输入层和输出层。起始位置用[CLS]标识,两个句子用[SEP]分割,每个单词有三个Embedding---单词Embedding(有的单词会被拆分为一组公共字词单元,如playing被拆为play和ing)、句子Embedding、位置信息Embedding,将这三个Embedding直接相加得到最终输入。

**【两个创新】**Bert除了集中了前两个模型的优势之外,还做出了两个创新。

一个是让Bert具备通过上下文做预测的能力。具体做法是将大量的词替换为,模型需要通过上下文去预测这些标签。但是,直接将大量的词替换为标签可能会造成一些问题,模型可能会认为只需要预测相应的输出就行,其他位置的输出就无所谓。同时Fine-Tuning阶段的输入数据中并没有标签,也有数据分布不同的问题。因此文本中15%的词用于预测,这15%中的80%被替换为,10%的词被替换为其他词,另外10%保持不动。

另一个是让Bert具备判断句子B是否为句子A下文的能力。50%的训练数据选择语料库中真正相连的两个句子,50%的训练数据是从语料库中随机选取一个句子拼在第一个句子后面。这个做法相当于token级别的完形填空。

相关推荐
阿杰学AI2 小时前
AI核心知识91——大语言模型之 Transformer 架构(简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·自然语言处理·aigc·transformer
芷栀夏3 小时前
CANN ops-math:筑牢 AI 神经网络底层的高性能数学运算算子库核心实现
人工智能·深度学习·神经网络
r i c k4 小时前
数据库系统学习笔记
数据库·笔记·学习
shandianchengzi5 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
Yeats_Liao5 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
浅念-6 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
Tadas-Gao6 小时前
缸中之脑:大模型架构的智能幻象与演进困局
人工智能·深度学习·机器学习·架构·大模型·llm
The森6 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10866 小时前
Skills 的问题与解决方案
笔记
三水不滴6 小时前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc