Transformer也能生成图像,新型ViTGAN性能比肩基于CNN的GAN( 二 )


方法
图1展示了新提出的ViTGAN架构 , 其由一个ViT判别器和一个基于ViT的生成器构成 。 研究者发现 , 直接使用ViT作为判别器会让训练不稳定 。 为了稳定训练动态和促进收敛 , 研究者为生成器和判别器都引入了新技术:(1)ViT判别器上的正则化和(2)新的生成器架构 。
Transformer也能生成图像,新型ViTGAN性能比肩基于CNN的GAN

图1:新提出的ViTGAN框架示意图 。 生成器和判别器都是基于视觉Transformer(ViT)设计的 。 判别器分数是从分类嵌入推导得到的(图中记为*);生成器是基于patch嵌入逐个patch生成像素 。
增强Transformer判别器的Lipschitz性质 。 在GAN判别器中 , Lipschitz连续性发挥着重要的作用 。 人们最早注意到它的时候是将其用作近似WGAN中Wasserstein距离的一个条件 , 之后其又在使用Wasserstein损失之外的其它GAN设置中得到了确认 。 其中 , 尤其值得关注的是ICML2019论文《Lipschitzgenerativeadversarialnets》 , 该研究证明Lipschitz判别器能确保存在最优的判别函数以及唯一的纳什均衡 。 但是 , ICML2021的一篇论文《Thelipschitzconstantofself-attention》表明标准点积自注意力层的Lipschitz常数可以是无界的 , 这就会破坏ViT中的Lipschitz连续性 。 为了加强ViT判别器的Lipschitz性质 , 研究者采用了上述论文中提出的L2注意力 。 如等式7所示 , 点积相似度被替换成了欧几里得距离 , 并且还关联了投影矩阵的权重 , 以用于自注意力中的查询和键(key) 。 这项改进能提升用于GAN判别器的Transformer的稳定性 。
经过改进的谱归一化 。 为了进一步强化Lipschitz连续性 , 研究者还在判别器训练中使用了谱归一化 。 标准谱归一化是使用幂迭代来估计每层神经网络的投影矩阵的谱范数 , 然后再使用估计得到的谱范数来除权重矩阵 , 这样所得到的投影矩阵的Lipschitz常量就等于1 。 研究者发现 , Transformer模块对Lipschitz常数的大小很敏感 , 当使用了谱归一化时 , 训练速度会非常慢 。 类似地 , 研究者还发现当使用了基于ViT的判别器时 , R1梯度惩罚项会有损GAN训练 。 另有研究发现 , 如果MLP模块的Lipschitz常数较小 , 则可能导致Transformer的输出坍缩为秩为1的矩阵 。 为了解决这个问题 , 研究者提出增大投影矩阵的谱范数 。
他们发现 , 只需在初始化时将谱范数与每一层的归一化权重矩阵相乘 , 便足以解决这个问题 。 具体而言 , 谱归一化的更新规则如下 , 其中σ是计算权重矩阵的标准谱范:
重叠图像块 。 由于ViT判别器具有过多的学习能力 , 因此容易过拟合 。 在这项研究中 , 判别器和生成器使用了同样的图像表征 , 其会根据一个预定义的网络P×P来将图像分割为由非重叠patch组成的序列 。 如果不经过精心设计 , 这些任意的网络划分可能会促使判别器记住局部线索 , 从而无法为生成器提供有意义的损失 。 为了解决这个问题 , 研究者采用了一种简单技巧 , 即让patch之间有所重叠 。 对于patch的每个边缘 , 都将其扩展o个像素 , 使有效patch尺寸变为(P+2o)×(P+2o) 。
这样得到的序列长度与原来一样 , 但对预定义网格的敏感度更低 。 这也有可能让Transformer更好地了解当前patch的邻近patch是哪些 , 由此更好地理解局部特性 。
生成器设计
基于ViT架构设计生成器并非易事 , 其中一大难题是将ViT的功能从预测一组类别标签转向在一个空间区域生成像素 。
Transformer也能生成图像,新型ViTGAN性能比肩基于CNN的GAN

图2:生成器架构 。 左图是研究者研究过的三种生成器架构:(A)为每个位置嵌入添加中间隐藏嵌入w , (B)将w预置到序列上 , (C)使用由w学习到的仿射变换(图中的A)计算出的自调制型层范数(SLN/self-modulatedlayernorm)替换归一化 。 右图是用在Transformer模块中的自调制运算的细节 。