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级别的完形填空。

相关推荐
数智工坊4 分钟前
视觉SLAM第5讲|相机成像模型:针孔投影、畸变修正与深度感知全拆解
人工智能·深度学习·数码相机·机器人
yi01117 分钟前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
北风toto26 分钟前
数据库笔记:Armstrong 公理系统与集合论的深度辨析
数据库·笔记
EasyBr指纹浏览器28 分钟前
我的开源项目:小红书笔记归档,把来源和缺项一起留下
笔记·小红书·开源工具·素材管理·内容归档
海海不掉头发30 分钟前
图论及其应用_课堂笔记整理_CSDN博客
笔记·图论
志尊宝33 分钟前
Vue3 零基础每日笔记(075):图片懒加载与骨架屏
javascript·vue.js·笔记
Rocky Ding*39 分钟前
VideoChat3 深度解析:视频理解的效率,来自时空压缩与主动感知的共同设计
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·视频理解
禹凕40 分钟前
深度学习之激活函数(Deep Learning about Activation function)
人工智能·深度学习
loulanyue_44 分钟前
脑机接口:意动·芯动·行动——读同济医院副院长廖家智2026云栖演讲
人工智能·深度学习·云栖大会
忆~遂愿1 小时前
免密连接+快捷键+虚拟鼠标:ToDesk远程操作AI效率拉满
人工智能·python·深度学习·神经网络·自然语言处理·计算机外设·安全架构