总览-对CS236课程Lecture 4的整理
·

-
自注意力机制
-
注意力机制
- 上回说到了RNN,并提到了RNN的缺陷,训练和生成的串行问题,效率太慢了,因此引入了自注意力+掩码机制,下面会先谈谈注意力机制再引申到自注意力+掩码,一步步来;
-
先从RNN用作序列到序列的转换开始,比如翻译

- 编码器Encoder:从序列中提取特征c然后输入到解码器Decoder中;
- 解码器Decoder:从编码器获取特征然后翻译成其他语言;
- 这里存在一个问题,紫色方框中c的大小时固定的,那么编码器传到解码器的信息量是固定的,但是输入序列的长度不是固定的,随着输入序列的增长,无法将所有特征都压入c,存在特征丢失;
-
因此优化出了注意力机制即c应该只关心对当前输出相关部分,不需要整个序列的特征

- 将h和解码器的当前状态相关,比如用点积,两个向量越相关结果会越大,然后h乘以它们对应的权重a再传输给解码器c,那么c里面就是越和当前状态相关的内容权重越大,越不相关的权重越小,这就是注意力机制。
-
交叉注意力
- 需要先将参数重新定义一下,这里我们先将s用Q表示,h用X表示;
- 定义V:X里提取出来的一部分,直接与a运算;
- 定义K:X里提取出来的一部分,输出到e;
- 定义Wv:X通过该权重矩阵提取的V即V = XWv;
- 定位Wk:X通过该权重矩阵提取的K即K = XWk;
- 最后这个序列到序列的RNN框架变成了下图:
- 其中
,除以根号D的原因是Q和K的点积会随着维度D的增加而增加,你可以理解需要对E进行一个归一化,因此除了根号D;
- X来自编码器,Q来自解码器;
- 因为Q与X生成的K做了点击,Softmax 后,就是 Q 对 X 的关注分布,这个架构就叫交叉注意力;
- 其中
- 需要先将参数重新定义一下,这里我们先将s用Q表示,h用X表示;
-
自注意力
- 定义一个矩阵Wq,使得Q = XWq,框架变成了
- 这就是自注意力的框架。
- 定义一个矩阵Wq,使得Q = XWq,框架变成了
-
掩码自注意力

- 在E模块加负无穷的掩码,是想在训练时不让模型偷窥未来,应该依据过去的数据,图里负无穷标记的位置可能有问题,Q1应该无法看到K2和K3,Q2无法看到K3,Q3是都能看到K1和K2才对,E模块处设置了负无穷后对应到A模块就是0;
- 这样后面的X3只依赖前面的输入X1和X2,但并不依赖前面X1和X2的计算结果,因此可以实现训练时的并行,但是生成时还是串行的;
-
-
PixelCNN
- 课程中没有完整给出模型框架,只提取了掩码卷积那一块东西,博主在这里扩展一下;
- 模型结构
- 从网上摘取的图,上图链接;
- 右下角标A的模块是A型卷积即
,这主要就是体现论文中基于条件概率建模的; - 右下角标B的模块是B型卷积即
,这也是体现论文中基于条件概率建模的; - 左上角标R的是激活函数用ReLU;
- residual是残差模块;
- 第一层卷积升维,用64个卷积核,将通道数扩到64;
- 残差模块里的第一个1×1卷积进行降维通道数降到32,方便中间的3×3卷积计算
- 残差模块里的后一个1×1卷积进行升维通道数升到64再进入下一个残差模块,最后经过两个1×1卷积将通道扩到256;
- 为什么要输出256,因为像素取值范围时0-255,并且输出的每个像素概率,通道0里面存储的是这个像素取0的概率依次类推。
- 最后一层应该还有个softmax将分数转概率,上图作者可能是忽略了没画。
- 输入后的第一层卷积用模型A,因为不能看自己,后面层用模型B允许看自己的原因是本身已经不是输入的原始值了,至少经过了一层卷积,因此只屏蔽了未来;
- pixelCNN也存在问题,存在盲区,为了让模型看不到后面的信息,卷积核下方设置了0掩码,但是多层卷积后,最底层的当前像素虽然感受野很大,但是会缺失前面累计下来的掩掉的信息;
-
自回归模型的训练
- 前面具体介绍了自注意力和PixelCNN这两个自回归模型,这部分将进行抽象总结;
- KL散度
- 自回归模型使用KL散度D衡量两个分布之间的距离;
- 当概率分布p等于q时,说明距离最短,即D=0;
- 其中p作为真实数据的分布;
- 然后我们的目标就是要最小化D,让模型学习的分布q接近真实数据的分布,这样使用q生成的图像才能和真实图像一样;
- 怎么最小化D
- 因为
,所以能转化为期望形式,
用
真实数据分布替换,
用
模型的分布替换;
- 最小化D,等价于最大化
;
- 但是因为我们没办法算真实数据概率,因此我们并不知道模型的分布离真实数据的分布到底有多近。
- 我们再将
形式转换一下如下
- 最终就是要最大化联合概率密度
- 使用链式法则

- 上面两个公式结合可推出最大似然估计
- 再取对数似然
- 其中梯度使用反向传输。
- 当维度D太大时
- 转成期望后,就可以用蒙特卡洛近似了。
- 转成期望后,就可以用蒙特卡洛近似了。
- 最终就是要最大化联合概率密度
- 因为
- 蒙特卡洛估计
- 就是可以用样本的均值来近似期望,样本越多近似度越高;
-
过拟合和欠拟合的处理

- 后面几个PPT都是讲述对过拟合和欠拟合的出来,这里总结一下,过拟合会导致高方差,欠拟合则导致高偏差,建议使用交叉验证的方式,如果训练集变现很好,但是验证集上表现太差就是过拟合,如果训练集和验证集上表现都不好就是欠拟合;
- 过拟合可以通过减小参数、参数共享或者简化模型等处理;
- 相反欠拟合就可以通过添加参数,深化模型来弥补;
- 自回归模型使用KL散度D衡量两个分布之间的距离;
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)