概
通过限制谱范数来限制Lipschitz常数, 但又不像weight normalization 或者其它的正则化方法一样, 本文提出的方法不会丧失过多的灵活性且保持高效.
主要内容
经过WGAN之后, 有许多方法是探讨如何限制Lipschitz常数的, 即
[min_G max_{|f|_{Lip} le K} V(G, D),
]
其中(f)为
[f(x, heta) = W^{L+1}a_L (W^L(a_{L-1}(W^{L-1}(cdots a_1(W^1x)cdots)))),
]
[D(x, heta) = mathcal{A}(f(x, heta)).
]
实际上,
[|f|_{Lip} le prod_{i=1}^{L+1} sigma(W^l),
]
其中(sigma)为谱范数. 故本文的思想是, 实际使用下面的权重矩阵
[ar{W}_{SN} (W) := W/sigma(W),
]
此时(|f|_{Lip} le 1).
但是, 由于(W)在训练过程中是变化的, 所以, 作者并不是精确求解(sigma(W)), 采用了一种类似running average的方式, 既然
[sigma(W) = u_1^T Wv_1,
]
其中(u_1, v_1)分别为(sigma(W))所对应的左特征向量和右特征向量.
作者进一步分析, 经过标准化后的(W)的梯度的变化
[frac{partial V(G, D)}{partial W} = frac{1}{sigma(W)} (hat{mathbb{E}}[delta h^T] - lambda u_1v_1^T),
]
其中(lambda:= hat{mathbb{E}}[delta^T (ar{W}_{SN}h)]), (delta:= (partial V(G,D) / partial (ar{W}_{SN}h))^T) . 与原来的梯度仅仅差了后面的一项, 这相当于阻止整个网络仅仅往一个方向学习而产生mode collapse.
实际上, 已经有很多类似的方法了, 一些是在损失函数后面加正则化项, 一些是直接要求多个奇异值的和等于某一个值(WN), 作者认为这些方法会让网络的能力下降, 在某种程度上会迫使权重的奇异值集中在一个维度之上. 还有像正交化的约束, 是能够避免集中在一个维度之上的, 但是这假设所以维度的意义是同等重要, 这个并不合适, 因为谱不一致是有意义的.