::: hljs-right

DATE: April 8, 2024

:::


loss

从原理上来说,生成器和判别器从一开始都是非常弱的,因此一般不会在训练一开始两者损失就非常剧烈的波动。在训练一段时间达到稳定期后,生成器和判别器的损失都应该在一个小区间内波动,而不会有明显的持续上升/下降趋势。 如果生成器损失持续明显上升,表明其无法学习怎么欺骗判别器,体现在结果上就是开始生成噪声。 如果判别器损失持续明显上升,表示其无法学习怎么识别生成器,体现在结果上就是生成器可能会生成一致的,无意义的但是能欺骗判别器的图像(比如直接输出训练集中的样本)。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_40714949/article/details/126117319

Loss Functions

Wasserstein GAN

使用 Earth Mover distance 的优势在于即使真实的生成数据分布是不相交的,它也是连续的。同时,在生成的图像质量和损失值之间存在一定关系。使用 Earth Mover distance 的劣势在于对于每个生成模型 G 都要执行许多判别网络 D 的更新。而且,研究人员认为权重修改是确保 1-Lipschitz 限制的极端方式^1^。

image.png ::: hljs-center 图1^1^:左图earth mover distance是连续的, 即便其分布并不连续, 右图为the Jensen Shannon divergence ::: image.png ::: hljs-center 图2^2^:每个格子代表要移动的土,每行加起来就是左边P的高度,每列加起来就是上面Q的高度 :::

均方损失(mean squared loss)替代对数损失(log loss)

LSGAN的作者认为传统 GAN 损失函数并不会使收集的数据分布接近于真实数据分布。 GAN损失函数中的对数损失并不影响生成数据与决策边界(decision boundary)的距离。另一方面,LSGAN也会对距离决策边界较远的样本进行惩罚,使生成的数据分布与真实数据分布更加靠近,这是通过将均方损失替换为对数损失来完成的。

Two Timescale Update Rule(TTUR)

在TTUR方法中,对判别网络D和生成网络G使用不同的学习速度。低速更新规则用于生成网络G,判别网络D使用高速更新规则。SAGAN就使用了TTUR方法。

for iter_d in range(critic_iters):
	Update D network
# /end for
Update G network

Gradient Penalty

improved Training of WGANs中,作者称权重修改会导致优化问题。权重修改会迫使神经网络学习学习更简单的相似(simpler approximations)达到最优数据分布,导致结果质量不高。同时如果WGAN超参数设置不合理,权重修改可能会出现梯度消失或梯度爆炸的问题,论文作者在损失函数中加入了一个简单的梯度惩罚机制以缓解该问题。 image.png ::: hljs-center 加入 Gradient Penalty 作为正则化器 ::: DRAGAN的作者称,当GAN的博弈达到一个局部平衡态(local equilibrium state),就会出现mode collapse。而且判别网络D在这种状态下产生的梯度是非常陡(sharp)的。一般来说,使用梯度惩罚机制可以帮助避免这种状态的产生,极大增强GAN的稳定性,尽可能减少mode collapse的出现。

上述部分包括wasserstein distance,详见李宏毅对抗生成网络 (GAN)教程(4)Tips for GAN (WGAN EBGAN)

其他相关概念

Bernoulli Distribution

Binomial分布,$n = 1$时就是Bernoulli分布,$n→ \infty$时接近Gaussian分布,可以用Gaussian分布逼近 训练gan时从Gaussian分布, Bernoulli分布中采样的区别?

Model Collapse

多标签分类交叉熵损失CrossEntropyLoss

image.png

Regularization^3^

L2参数正则化

常用的L2参数正则化通过向目标函数添加一个正则项$\Omega(\theta)=\frac{1}{2}{|w|}^2$ ,使权重更加接近原点。L2参数正则化方法也叫做权重衰减,有时候也叫做岭回归(ridge regression)。 L2参数正则化之后的模型具有以下总的目标函数: $$\tilde{J}(w ; X, y)=\frac{\alpha}{2} w^{\top} w+J(w ; X, y)$$ 与之对应的梯度为: $$\nabla_{w} f(w ; X, y)=\alpha w+\nabla_{w} J(w ; X, y)$$

L1参数正则化

对模型参数 的L1正则化被定义为: $\Omega(\theta)={||w||}1=\sum{i}|w_i|$ ,即各个参数的绝对值之和。 正则化的目标函数如下所示 $$\tilde{J}(w ; X, y)=\alpha|w|1+J(w ; X, y)$$ 对应的梯度(实际上是次梯度): $$\nabla{w} \tilde{J}(w ; X, y)=\alpha sign(w)+\nabla_{w} J(w ; X, y)$$

L1正则化和L2正则化的区别

  1. L1相对于L2能够产生更加稀疏的模型,即当L1正则在参数w比较小的情况下,能够直接缩减至0。因此可以起到特征选择的作用,该技术也称之为 LASSO。
  2. 如果从概率角度进行分析,很多范数约束相当于对参数添加先验分布,其中L2范数相当于参数服从高斯先验分布;L1范数相当于拉普拉斯分布。

从傅里叶变换的角度去理解正则化器的工作原理

在频域空间有一个明显的规律,即频率从低到高依次收敛。且实验结果表明低频占优的傅立叶变换往往能更好的拟合数据。因此我们可以将神经网络看做一个函数,对其进行傅里叶变换求得频谱,频谱中低频分量是变化平滑的部分,高频分量则是变化敏感的部分(函数变化越快,则高频变量越丰富),根据F-Principle的低频优先机制,我们要减少函数的高频分量,增加低频分量,也就是尽量让函数变得平缓。 https://zhuanlan.zhihu.com/p/163432355

1-Lipschitz约束

image.png


  1. https://zhuanlan.zhihu.com/p/68120231
  2. https://blog.csdn.net/wrt1213/article/details/124721611
  3. https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=ge_ala#4