在上一篇博客中,SEnet关注于各通道间的依赖关系,通过增强和减弱某个通道特征的表达使得网络有“注意力”。而SAGAN将注意力机制应用在GAN生成项目中,主要是每个feature map 和它自身的转置相乘,让任意两个位置的像素直接发生关系,这样就可以学习到任意两个像素之间的依赖关系,从而得到全局特征。从单个特征出发,使得网络有“注意力”能力。
1、GAN生成图片时存在的问题
① 在卷积神经网络中,每个卷积核的尺寸都是很有限的(基本上不会大于5),因此每次卷积操作只能覆盖像素点周围很小一块邻域。对于距离较远的特征,例如狗有四条腿这类特征,就不容易捕获到了(也不是完全捕获不到,因为多层的卷积、池化操作会把 feature map 的高和宽变得越来越小,越靠后的层,其卷积核覆盖的区域映射回原图对应的面积越大。但总而言之,毕竟还得需要经过多层映射,不够直接)。Self-Attention 通过直接计算图像中任意两个像素点之间的关系,一步到位地获取图像的全局几何特征。
② GAN在生成图片时,擅长合成几乎没有结构约束的图像类别,例如海洋、天空和景观类别。但是无法捕获在某些类别中始终如一地出现的几何或结构模式,如狗有四条腿、狗的皮毛等。这种原因并不是GAN自身带来的,而是以前的GAN模型在很大程度上依赖于卷积来模拟不同图像区域之间的依赖关系。卷积运算是基于一个局部感受域,只能在经过几个卷积层之后才能处理图像中远距离的相关性。这种学习长期相关性问题上,在卷积网络下可能无法表示它们, 因为在模型优化阶段捕获多个层相关性参数是不容易的,并且这些参数化可能是统计学上的,这就带来了一定的问题。增加卷积核的大小可以增加网络的表示能力, 但这样做也会失去使用本地卷积结构获得的计算和统计效率。
2、SAGAN的亮点
① 将Attention机制用在GAN生成上。在此之前,self-Attention在Attention is All You Need中提出,应用在机器翻译上, 文中指出引入自我注意机制可以很好的学习到序列的依赖关系,从全局上去分析序列。Non-local Neureal Networks 一文将Self-Attention应用在了视频分类上,推导说明Self-Attention对于图像前后依赖关系上是有很大意义的,同时在单幅图像中可以很好地学习到图像的全局特征。
那么可以利用self Attention机制更好地学习全局特征之间的依赖关系。传统的 GAN 模型很容易学习到纹理特征:如皮毛,天空,草地等,不容易学习到特定的结构和几何特征,例如狗有四条腿,既不能多也不能少。
自我注意(Self-Attention)引入到卷积GAN中是对卷积的补充,有助于模拟跨越图像区域的长距离,多级别依赖关系。在Self-Attention作用下发生器在生成图像过程中, 可以对每个位置的精细细节都与图像远处的精细细节进行仔细协调。
② 用到了谱归一化,提出于