【深度学习笔录】SNGAN论文阅读及其实现

Posted by ShawnD on April 7, 2020

论文部分

Abstract

生成对抗网络研究的挑战之一是其训练的不稳定性。 本文提出了一种新的权重规范化技术,称为谱规范化技术,以稳定判决器的训练。 我们的新的规范化技术在计算量小,并且易于合并到现有的实现中。 我们在CIFAR10、STL-10和ILSVRC2012数据集上测试了谱规范化的有效性,并实验证实了谱规范化GAN(SN-GANs)能够生成相对于以前的训练稳定技术,更好或相等质量的图像。

1 INTRODUCTION

生成对抗网络(GANs)(Goodfellow等人,2014年)作为生成模型的框架近年来取得了相当大的成功,并已应用于多种类型的任务和数据集。 简而言之,GANs是一个用于模拟生成给定目标分布的模型分布的框架,它由生成模型分布的生成器和从目标中区别模型分布的判决器组成。 其概念是依次连续训练模型分布和判别器,目的是减少模型分布与目标分布之间的差异, 这个差异在训练的每一步由最好的判决器测量。 在机器学习界,GANs不仅因为它能够学习高度结构化的概率分布,而且还因为它的理论上有趣的方面而受到人们的关注。例如,(Nowozin等人,2016年;Uehara等人,2016年;Mohamed&Lakshminarayanan,2017年)表明,判决器的训练相当于训练一个评估器, 它评估模型分布与目标分布的密度比率。 这是一个视角,为隐式模型的方法打开了大门(Mohamed&Lakshminarayanan,2017;Tran等人,2017),它们可以在没有密度函数的情况下进行变分优化。

在GANs训练中,一个持续存在的挑战是判决器的性能控制。 在高维空间中,判别器的密度比率估计在训练过程中往往是不准确和不稳定的,生成器网络无法学习目标分布的多模态结构。 更糟糕的是,当模型分布的支持和目标分布的支持是不相交的时,存在一个判决器,可以完美地区分模型分布和目标分布。 一旦在这种情况下产生了这样的判决器,生成器的训练就会完全停止,因为这样产生的相对于输入的判决器的导数变为0。 这促使我们对判决器的选择引入某种形式的限制。

在本文中,我们提出了一种新的权重规范化方法,称为谱规范化,它可以稳定判决器网络的训练。 我们的规范化具有以下良好的特性:

  • Lipschitz常数是唯一要微调的超参数,该算法不需要对唯一的超参数进行密集的微调,以获得满意的性能。
  • 实现简单,附加计算成本小。

事实上,即使不调整Lipschitz常数,我们的规范化化方法也运行得很好,这是唯一的超参数。在本研究中,我们解释了GANs谱规范化对其他正则化技术的有效性,如权重规范化(Salimans&Kingma,2016)、权重裁剪(Arjovsky等人,2017年)和梯度惩罚(Gulrajani等人,2017年)。 我们还表明,在没有互补正则化技术(例如,批规范化、权重衰减和判决器上的特征匹配)的情况下, 谱规范化可以比权重规范化和梯度惩罚更好地提高生成图像的质量。

2 METHOD

在这一部分中,我们将为我们提出的方法奠定理论基础。 让我们考虑一个简单的判决器,由以下形式的神经网络组成,输入x:

\[f(x, \theta) = W^{L + 1}a_L(W^L(a_{L-1}(W^{L-1}(...a_1(W^1 x))))) \tag 1\]

其中\(\theta := \{W^1, ..., W^L, W^{L+1}\}\)是 学习参数的集合, $W^l \in R^{d_l \times d_{l-1}}, W^{L+1} \in R^{1 \times d_L}$, $a_L$是元素级别的非线性激活函数。 为了简单起见,我们省略了每个层的偏置项。最后判决器的输出为:

\[D(x, \theta) = A(f(x, \theta)) \tag 2\]

其中A是相对应于用户选择的距离测量散度的激活函数。GANs的标准公式:

\[\min_G \max_D V(G, D)\]

其中G和D的min和max分别掌管着生成器和判决器函数的集合。$V(G, D)$的传统形式是$E_{x \thicksim q_{data}}[log D(x)] + E_{x’ \thicksim P_G}[log (1 - D(x’))]$, 其中$q_{data}$是数据分布以及$p_G$是通过最小-最大优化对抗学习到的模型生成器的分布。 该表达式的D中使用的激活函数A是具有范围[0,1]的连续函数(例如sigmoid函数)。 众所周知,对于一个固定的生成器G, 对于$V(G, D)$这个形式的最优判决器是:$D_G^* := q_{data}(x) / (q_{data}(x) + p_G(x))$。

机器学习界最近指出,判决器所选择的函数空间对GANs的性能有着至关重要的影响。一些作品(Uehara等人,2016年;Qi,2017年;Gulrajani等人,2017年)提出Lipschitz连续性在确保统计的有界性方面的重要性。 例如,在上述标准公式上,GANs的最优判决器采用以下形式:

\[D_G^*(x) = \frac{q_{data}(x)}{q_{data}(x) + p_G(x)} = sigmoid(f^*(x)), \quad where \quad f^*(x) = log q_{data}(x) - log p_G(x) \tag 3\]

以及它的导数:

\[\nabla_x f^*(x) = \frac{1}{q_{data}(x)} \nabla_x q_{data}(x) - \frac{1}{p_G(x)} \nabla_x p_G(x) \tag 4\]

可以是无界的,甚至是不可计算的。 这促使我们对f(x)的导数引入一些规范化条件。

一项特别成功的工作是(Qi,2017;Arjovsky等人,2017;Gulrajani等人,2017),它提出了通过添加定义在输入样本上的正则项来控制判决器的Lipschitz常数的方法。 我们将跟随他们的脚步,从K-Lipschitz连续函数集合中寻找判决器D,即:

\[\mathop{argmax} \limits_{\|f\|_{Lip} \leq K} V(G, D) \tag 5\]

其中$|f|_{Lip}$的含义是, 对于任意的$x, x’$,在L2范数的情况下, 有一个最小值M, 使得$|f(x) - f(x’)| / |x - x’| \leq M$。

虽然基于正则化的输入允许基于样本的相对简单的公式,但它们也受到这样一个事实的影响, 它们不能在生成器和数据分布的支持之外的空间上施加正则化,而不引入一些启发式的方法。 本文介绍的一种方法,称为谱规范化,是一种对权重矩阵进行规范化化处理的方法。

2.1 SPECTRAL NORMALIZATION

我们的谱规范化通过直接约束每一层的谱范数来控制判决器函数f的Lipschitz常数 $g: h_{in} \mapsto h_{out}$。 通过定义, Lipschitz范数$|g|_{Lip}$等于$sup_h \sigma(\nabla_g(h))$,其中$\sigma(A)$矩阵A的谱范数(A的L2矩阵范数)

\[\sigma(A) := \max_{h:h \neq 0} \frac{\|Ah\|_2}{\|h\|_2} = \max_{\|h\|_2 \leq1} \|Ah\|_2 \tag 6\]

推导:

\[\frac{\|f_\Theta(x + \xi) - f_\Theta(x)\|_2}{\|\xi\|_2} = \frac{\|(W_{\Theta, x}(x+\xi)+b_{\Theta, x}) - (W_{\Theta, x} + b_{\Theta, x})\|_2}{\|\xi\|_2} = \frac{\|W_{\Theta, x}\xi\|_2}{\|\xi\|_2} \leq \sigma(W_{\Theta, x})\]

它和A最大奇异值相等。 因此,对于一个线性层$g(h) = Wh$, 范数是$|g|{Lip} = sup_h \sigma(\nabla_g(h)) = sup_h \sigma(W) = \sigma(W)$。 如果激活函数$|a_l|{Lip}$的Lipschitz范数等于1, 我们可以使用不等式$|g_1 o g_2|{Lip} \leq |g_1|{Lip}·|g_2|{Lip}$观察$|f|{Lip}$的以下界限:

\[\|f\|_{Lip} \leq \|(h_L \mapsto W^{L+1}h_L)\|_{Lip}·\|a_L\|_{Lip}·\|(h_{L-1} \mapsto W^Lh_{L-1})\|_{Lip} ... \|a_l\|_{Lip}·\|(h_0 \mapsto W^1 h_0)\|_{Lip} = \prod_{l=1}^{L+1} \|(h_{l-1} \mapsto W^lh_{l-1})\|_{Lip} = \prod_{l=1}^{L+1}\sigma(W^l) \tag 7\]

我们的谱规范化规范权重矩阵W的谱范数, 使它满足Lipschitz约束$\sigma(W) = 1$:

\[\bar W_{SN}(W) := W / \sigma(W) \tag 8\]

如果使用(8)规范化每个$W^l$, 我们可以使用不等式(7)和$\sigma(\bar W_{SN}(W))=1$, 使得$|f|_{Lip}$以1为界。

在这里,我们想强调我们的谱规范化和由Yoshida&Miyato(2017)引入的谱范数“正则化”之间的区别。 与我们的方法不同,谱范数“正则化”通过在目标函数中添加显式正则化项来惩罚谱范数。 它们的方法与我们的方法有根本的不同,因为它们不试图将谱范数设置为指定的值。此外,当我们重写目标函数(12)以及重组规范化的损失函数的导数时, 我们看到,我们的方法是用一个样本数据相关的正则化函数来增强损失函数的。 另一方面,谱范数正则化将样本数据不相关的正则化强加于代价函数,就像L2正则化和Lasso一样。

2.2 FAST APPROXIMATION OF THE SPECTRAL NORM σ(W)

正如我们前面提到的,我们用来使判决器的每一层正则化的谱范数σ(W)是W的最大奇异值。 如果我们天真地应用奇异值分解来计算每一轮的σ(W),算法就会变得计算繁重。相反,我们可以使用功率迭代方法来估计σ(W)(Golub&VanderVorst,2000年;Yoshida&Miyato,2017年)。 利用功率迭代法,我们可以用非常小的额外计算时间来估计相当于vanilla GANs的全部计算成本的谱范数。

2.3 GRADIENT ANALYSIS OF THE SPECTRALLY NORMALIZED WEIGHTS

分别对应$W_{ij}$, $\bar W_{SN}$的梯度是:

\(\frac{\partial \bar W_{SN}(W)}{\partial W_{ij}} = \frac{1}{\sigma(W)}E_{i,j} - \frac{1}{\sigma(W)^2} \frac{\partial \sigma(W)}{\partial W_{i, j}}W = \frac{1}{\sigma(W)}E_{ij} - \frac{[u_1 v_1^T]_{ij}}{\sigma(W)^2}W \tag 9\) \(= \frac{1}{\sigma(W)}(E_{ij} - [u_1 v_1^T]_{ij} \bar W_{SN}) \tag{10}\)

其中$E_{ij}$是第(i,j)项为1且其他各处为零的矩阵, u1和v1分别是W的第一个左奇异矢量和右奇异矢量。 如果h是由W¯SN变换的网络中的隐藏层,则在mini-batch上计算的V(G,D)相对于判决器D的W的导数:

\[\frac{\partial V(G, D)}{\partial W} = \frac{1}{\sigma(W)}(\hat E[\delta h^T] - (\hat E[\delta^T \bar W_{SN} h])u_1 v_1^T \tag {11})\] \[= \frac{1}{\sigma(W)}(\hat E[\delta h^T] - \lambda u_1 v_1^T) \tag {12}\]

其中 $\delta := (\partial V(G, D) / \partial(\bar W_{SN}h))^T, \lambda := \hat E[\delta^T(\bar W_{SN}h)]$, $\hat E[·]$表示一个mini-batch上的实验期望。 对于一些$k \in R$, 当$\hat E[\delta h^T] = k u_1 v_1^T$, 有$\frac{\partial V}{\partial W} = 0$。

我们想谈谈(12)的含义。第一项$\hat E[\delta h^T]$与没有规范化时权重的导数相同。 因此,表达式中的第二项可以看作是利用自适应正则化系数λ惩罚第一奇异分量的正则化项。 当$\delta$和$\bar W_{SN} h$指向相似的方向时,λ是正的,这防止了W的列空间在训练过程中集中到一个特定的方向。我们还可以使用谱规范化为模型设计新的参数化。 也就是说,我们可以将层映射分成两个独立的可训练分量:谱规范化映射和谱范数常数。 事实证明,这种参数化有其自身的优点,并提升了GANs的性能。

3 SPECTRAL NORMALIZATION VS OTHER REGULARIZATION TECHNIQUES

Salimans&Kingma(2016)引入的权重规范化是一种对权重矩阵中每个行向量的L2范数进行规范化的方法。从数学上将,这等价于要求权重通过$\bar W_{WN}$权重规范化:

\[\sigma_1(\bar W_{WN})^2 + \sigma_2(\bar W_{WN})^2 + ... + \sigma^T(\bar W_{WN})^2 = d_o, \quad where \quad T = min(d_i, d_o) \tag {13}\]

其中$\sigma_t(A)$时矩阵A的第t个奇异值。 因此,直到一个标量,这与Frobenius规范化相同,它要求平方奇异值之和为1。但是,这些规范化无意间对矩阵施加了比预期强得多的约束。如果$\bar W_{WN}$是$d_i \times d_o$维矩阵的规范化后的权重, 对$t = 2, …, T$, 当$\sigma_1(\bar W_{WN}) = \sqrt{d_o}$和$\sigma_t(\bar W_{WN}) = 0$时, 对于一个固定向量h, 范数\(\|\bar W_{WN} h\|_2\)最大, 这意味着$\bar W_{WN}$秩为一。使用这样的$\bar W_{WN}$相当于只使用一个特征可将模型概率分布与目标分布区分开。 为了保留仅可能多的输入的范数, 并且使判决器更加敏感, 人们可能会希望使$W_{WN} h$的范数尽可能大。对于权重规范化,这是以减小秩以及判决器使用的特征数量为代价的。 因此,权重规范化与我们希望使用尽可能多的特征来区分生成器分布和目标分布之间存在意愿冲突。前者的目标在很多情况下通常会控制后者, 无意中减小了用于判决器的特征数量。因此,该算法将产生相当随机的模型分布,该模型分布仅在少数几个特征上与目标分布匹配。权重截断也有相同的缺陷。

另一方面,我们的谱规范化不会遭受这样的冲突。 注意,线性操作的Lipschitz常数仅由最大奇异值决定。 换句话说,谱范数与秩无关。因此,与权重规范化不同,我们的谱规范化允许参数矩阵使用尽可能多的特征,同时满足局部1-Lipschitz约束。 我们的谱规范化在选择奇异分量(特征)的数量以馈送到判决器的下一层时留下了更多的自由。

Brock等人(2016)在每个权重上引入正交正则化,以稳定GANs的训练。在他们的工作中,Brock等人(2016)通过添加下面一项来增强对抗目标函数:

\[\|W^TW - I\|_F^2 \tag {14}\]

虽然这似乎与谱规范化的目的相同,但正交正则化在数学上与我们的谱规范化有很大的不同,因为正交正则化通过将所有奇异值设置为1来破坏有关谱的信息。 另一方面,谱规范化只对谱进行缩放,使其最大值为一。

Gulrajani等(2017)将梯度惩罚方法与WGAN结合使用。在他们的工作中, 他们为判决器施加了K-Lipschitz常数, 通过正则项增强目标函数, 这个正则项使得函数有了局部1-Lipschitz常数(例如$|\nabla_{\hat x}f|2 = 1$), 其中$\hat x$是生成分布$\tilde x$和样本分布$x$的插值, 其形式为$\hat x = \epsilon \tilde x + (1 - \epsilon)x$。 虽然这种相当简单的方法不会受到我们上面提到的关于特征空间的有效维度的问题的影响,但这种方法有一个明显的弱点,那就是 依赖于当前的生成分布。优化过程的一个问题是,生成分布在训练过程中会逐渐变化,这可能会破坏这种正则化的效果。 事实上,我们通过实验观察到,高学习率会破坏WGAN-GP的性能。 相反,我们的谱规范化将函数正则化为操作空间,正则化的效果相对于批处理的选择更稳定。 我们的谱规范化训练不会轻易地被激进的的学习速率破坏稳定性。 此外,WGAN-GP比我们的单步功率迭代谱规范化需要更多的计算成本,因为$|\nabla{\hat x}f|_2$的计算需要一整轮的前向和反向传播。

4 EXPERIMENTS

对于判决器和生成器的结构,我们使用卷积神经网络。此外, 对于卷积权重$W \in R^{d_{out} \times d_{in} \times h \times w}$谱范数的评估, 我们使用维度为$d_{out} \times (d_{in}hw)$二维矩阵。 我们对生成器的参数使用BatchNorm。

对于WGAN-GP以外的所有其他方法,我们对对抗损失使用以下标准目标函数:

\[V(G, D) = E_{x \thicksim q_{data}(x)}[log D(x)] + E_{z \thicksim p(z)}[log (1 - D(G(z)))] \tag {15}\]

其中$z \in R^{d_z}$是隐变量, p(z)是标准正态分布$N(0, 1)$, G:$R^{d_z} \mapsto R^{d_o}$是一个确定性生成函数。 我们在所有的实验中设置$d_z$为128。 对于G的更新 , 我们使用$-E_{z \thicksim p(z)}[log (D(G(z)))]$来代替损失函数。对于D的更新, 我们使用定义在(15)中原始的损失函数。 我们也使用了所谓的hinge loss来测试算法的表现:

\[V_D(\hat G, D) = E_{x \thicksim q_{data}(x)}[min(0, -1 + D(x))] + E_{z \thicksim p(z)}[min(0, -1 - D(\hat G(z)))] \tag {16}\] \[V_G(G, \hat D) = - E_{z \thicksim p(z)}[\hat D(G(z))] \tag {17}\]

分别对应判决器和生成器。 优化这些目标等价于最小化所谓的KL散度:$KL[p_g | q_{data}]$。 这种损失已经在Lim&Ye(2017);Tran等人中提出并使用(2017)。 基于hinge loss的算法在inception score和FID评价时也表现出良好的性能。对于带有梯度惩罚的(WGAN-GP)的Wasserstein GANs, 我们使用以下的目标函数:$V(G, D) := E_{x \thicksim q_{data}}[D(x)] - E_{z \thicksim p(z)}[D(G(z))] - \lambda E_{\hat x \thicksim p_{\hat x}}[(|\nabla_{\hat x} D(\hat x)]|_2 - 1)^2]$。

## A THE ALGORITHM OF SPECTRAL NORMALIZATION

我们为每个权重随机初始化一个向量$\tilde u$。如果主要的奇异值没有多重性,并且u不与第一个左奇异矢量正交,我们可以求幂方法的原理,并通过以下更新规则生成第一个左和右奇异矢量:

\[\tilde v \leftarrow W^T \tilde u / \|W^T \tilde u\|_2, \tilde u \leftarrow W \tilde v / \|W \tilde v \|_2 \tag {18}\]

我们可以使用这样估计的奇异向量估计W的谱范数

\[\sigma(W) \approx \tilde u^T W \tilde v \tag {19}\]

这里W的形状为$(h, w)$, u的形状为$h, 1$, v的形状为$w, 1$, 所以:

\[Size(u^T W v) = (1, h) (h, w) (w, 1) = 1\]

实现部分

Reference

  1. Miyato T, Kataoka T, Koyama M, et al. Spectral normalization for generative adversarial networks[J]. arXiv preprint arXiv:1802.05957, 2018.