目录
https://blog.csdn.net/benzhujie1245com/article/details/117173090
一、注意力机制
1、注意力机制
关注重点,找出重点,发现更多细节信息,抑制无用信息
1.1公式理解
例子:以淘宝为例
QKt就是多个查询和多个物品向量来计算相似性 转置是便于相乘,得到一个相似性的实数值
softmax转为概率权重
根号下dk是指 推到梯度值,
1.2 注意力机制的实现过程和代码
https://zhuanlan.zhihu.com/p/48508221
https://www.bilibili.com/video/BV1kT4y1v7RH/?spm_id_from=pageDriver&vd_source=a402747bd6c153bdb2defee02a9cb617
例如计算单词 thinking和machines的相似性
q1*k1的转置 得到一个数
2 向量运算
可以直接乘
可以在github上下载代码,transformer
temperature就是根号下dk
3 自注意力机制
1、注意力机制和子注意力机制的区别
例子,汉译英
没有用注意力的情况,各个权重一样,就不合理了
使用注意力机制的情况
自注意力机制
注意力机制的q\k\v是分布在两侧的
自注意力机制将注意力机制包含在里面,qkv全在source部分
4 多头注意力机制
多头注意力机制: matmul为乘法,scale为除以根号下dk,mask为掩膜,softmax不必多说,matmul最后这个为公式中最后乘以v
多头注意力机制 :为多个层各自分别操作,然后进行连接
不同的头提取的信息不同
多头注意力机制的情况是多个单层的
代码实现
设置截取长度,p指的是不足的填充p,超出的不要
src_len:截取长度
s指的是开始,e指的结束
d_model:表示每一个字用多少维度的向量来表示
d_k,d_v表示维度
n_heads:表示有几个头
http://t.csdn.cn/d41Fy
torch.Size([1,5,4])
1指的是只有一个例子
5指的是我喜欢你p这五个字符
4每一个字符使用1行4列表示
二、 新课程学习
课程地址
结构详解
1.1 整体架构
tansformer是什么:
看三个图,越来越详细
encoder结构完全相同,参数不相同,在独立训练
decoder结构完全相同,参数不相同,在独立训练
1.2 encoder
首先,放encoder图
第一部分:
1,Embedding
2、位置嵌入
Embedding:按照字切分,每个字分为512维度的字向量,
位置编码
对于RNN的所有编码共享一套参数,U是一样的
在偶数和奇数位置使用不同的三角函数
接下来将embedding和位置编码后的相加
位置编码的作用:线性组合意味着位置向量中蕴含了相对位置信息
残差和LayerNorm
x的结果和z的结果作为残差结果相加,进行layerNorm
残差:
为什么使用layer normalization而不是BN,
BN的效果差,所以不用
LN针对每一个样本的同一维度进行操作,例如小明,小李,小红等的体重进行处理
前馈神经网络 feed forward
FeedForward的输入是什么呢?是Multi-Head Attention的输出做了残差连接和Norm之后得数据,然后FeedForward做了两次线性线性变换,为的是更加深入的提取特征。
所以FeedForward的作用是:通过线性变换,先将数据映射到高纬度的空间再映射到低纬度的空间,提取了更深层次的特征
Decoder
第一层:mask是啥
需要对当前单词和之后的单词做掩膜,抹掉不能看
如果能看的话就会出现每个词都对预测的有贡献
第二层:怎么交互的
encoder中生成的是KV矩阵,decoder中生成q矩阵,注意:交互就是三者进行的交互,分别于decoder中的每一个进行交互
softmax函数
softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来
encoder代码
应用
1、机器翻译类应用,endcoder和decoder共同使用
2、只是用encoder端,文本分类BERT和图片分类VIT
3、只是用decoder端,生成类模型