自用大模型学习笔记--transformer(不定期更新,欢迎挑错)
Self-Attention机制
产生原因:每个词在句子中的重要程度不同,所以对每个词要赋予不一样的权重。
自注意力机制是注意力机制的一种,目的是让机器注意到整个输入中不同部分之间的相关性。其减少了对外部信息的依赖,更擅长捕捉数据或特征内部相关性。QKV是同一个东西,或来源于同一个X,从而更关注X的关键信息。
1、将input embedding成向量。
2、分别和权重矩阵相乘得到Query向量(查询),Key向量(键)和Value向量(值)。
Query向量(查询):查询的范围,主观意识的特征向量
Key向量(键):被比对的项,物体的突出特征向量
Value向量(值):物体本身的特征向量,与KEY成对出现
3、q1向量分别和k1,k2...做点积(点积是其中一种方法,还有cosine相似度,MLP网络),得到相关性分数(score)。这里为什么要点积呢,因为点积中的cos反映了两个向量在方向上的相似度。
4、为了避免模长给score带来影响,score会除以q、k、v维度的平方根(论文中是8),使梯度更稳定。
5、mask是可选步骤,在encoder里面不做,decoder里面会做(这个后面会讲)。
6、经过softmax得到权重因子(更加突出重要元素的权重)。
7、权重因子和value相乘得到词的新的向量表示。
公式如下:
Multi-Head Self-Attention
对于同一个输入X,定义多组可训练的参数矩阵,从而得到多个不同的Q,K,V,最后学习到不同的参数。
Encoder-Decoder
注意里面用到了交叉注意力机制(decoder的q和encoder的kv运算)
【Transformer系列(1)】encoder(编码器)和decoder(解码器)_encoder和decoder的区别-CSDN博客
layer Norm(NLP): 几个句子就有几个分布,并标准化,不同句子的语义失去可比性。
batch Norm(CV): 一个batch中同一通道的所有特征视为一个分布,并将其标准化,因为同一通道一般捕捉的是同一类特征。
mask 机制:做预测的时候只考虑输入向量本身和输入向量之前的向量,不考虑后面的向量
减少Attention计算量的方法
一、通过人类知识省略一些计算量
(1)local attention/ truncated attention
只需要知道左右邻居的key,其他的值都设为0。
类似CNN,因为a. 只关注局部区域;b. 参数共享; c. 局部特征提取
(2)stride attention
关注stride外的领居
(3)global attention
add special token into original sequence(类似token中的综合员)
these special tokens: attend to every token; attended by every token
二、只关注关键信息
(1)small values directly set to 0
如何找到small values? 对Q, K 做clustering,相近的vector属于一个群
(2)learnable patterns(学另一个Network)
(3)linformer/ compressed attention(压缩矩阵)
N keys---K representative keys
N values--K representative values
三、改变运算顺序
kq first-- vk first
改变前: N*d*N+d'*N*N
改变后:d'*N*d+d'*d*N
计算量得到的减少
四、新的框架结构
synthesizer
大模型输出采样方法(TOP-K,TOP-P,temperature)
top-k: 每一步只从概率最高的K个单词中进行随机采样(k是超参数)
top-p: 每次生成下一个单词时,首先计算所有可能单词的概率分布,然后从高向低排序,直到累积的概率和超过阈值,并在此范围内随机采样。
temperature: 使用温度调整单词的概率分布,温度越低模型越具有确定性。
【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解-CSDN博客