梯度惩罚(Pytorch)

起因:希望深度学习输入时小的扰动不会影响结果,我们会在输入端加一些噪声,让模型自己去适应这种扰动,从而提升整体的鲁棒性,CV领域可以直接在图像输入添加噪声,NLP领域因为输入都是one-hot形式,无法直接添加噪声,我们可以考虑在embedding之后的词向量上添加扰动,或者直接在embedding矩阵中添加扰动(FGM方法)。

 细微的噪声加入图层,对结果影响巨大

 f(x+\Delta x,y) 这里取\Delta x为loss的梯度,正向梯度loss下降,反向梯度loss上升。

 \Delta x=\frac{\partial f(x,\theta))}{\partial x}              其中\theta为模型参数

 f(x+\Delta x,\theta)\approx f(x,\theta)+\frac{\partial f(x,\theta)}{\partial x}\cdot \Delta x

模型参数更新(\Delta x 为已经计算出来的常数): 

\begin{align*} \frac{\partial f(x+\Delta x,\theta)}{\partial \theta}&=\frac{\partial f(x,\theta)}{\partial \theta}+\frac{\partial^{2}f(x,\theta)}{\partial x \partial \theta}\cdot\Delta x\\&=\frac{\partial}{\partial \theta}[f(x,\theta)+\frac{1}{2}\cdot(\frac{\partial f(x,\theta)}{\partial x})^{2}]\end{}

-->\triangledown_{\theta} f(x=\Delta x,\theta)=\triangledown_{\theta}[f(x,\theta)+\frac{1}{2}(\triangledown_{x}f(x,\theta))^{2}]

 可以看出在输入中添加的扰动,近似等价于在loss函数中添加梯度惩罚项:

\frac{1}{2}\left ( \triangledown _{x}f(x,\theta )) \right )^{2}

Pytorch简易实现:

self.optim.zero_grad()
loss.backward(retain_graph=True)      # loss梯度回溯两次,要保留计算图
#  ******************************
name_list = ['hidden_layer.0.weight'] # 需要提取梯度的层名
for name, para in model.named_parameters():
    if name in name_list:
        gp = (para.grad ** 2).sum()
        loss += 0.5 * gp * epsilon
        self.optim.zero_grad()        # 梯度清零,在新得到的loss上进行梯度更新
        loss.backward()
        break
# ******************************** 围起来的是在原先基础上需要添加的代码
self.optim.step()

为了应对Wasserstein GAN在训练过程中出现的稳定性问题,推荐参考论文《改进训练的Wasserstein GANs》。该论文提出了通过梯度惩罚来增强训练稳定性的创新方法,具体操作包括在WGAN的损失函数中引入一个梯度惩罚项,以此替代原有的权重剪辑(weight clipping)策略。 参考资源链接:[优化Wasserstein GAN训练:梯度惩罚提升模型稳定性与生成质量](https://wenku.csdn.net/doc/4rxvh2qd2b?spm=1055.2569.3001.10343) 梯度惩罚的核心思想在于,通过对批评家(critic)梯度范数的约束,间接确保了批评家函数的Lipschitz连续性,而无需通过直接的权重剪辑。这种方法允许批评家在更广的参数空间内进行优化,从而避免了权重剪辑可能引起的训练不稳定性和生成样本质量的下降。 在实践中,可以在损失函数中添加一个额外的项,该项与批评家梯度范数的平方成正比。通过对该惩罚项的优化,可以迫使批评家在输入数据空间中产生更平滑的输出,进而提升整个WGAN训练过程的稳定性。具体来说,这可以通过计算批评家在真实样本和生成样本之间的插值点的梯度来实现,然后确保这些梯度范数与1保持一致。 实验表明,引入梯度惩罚后,WGAN不仅在训练过程中表现得更加稳定,而且在生成图像质量和多样性方面也有所提升,例如在CIFAR-10和LSUN卧室数据集上的表现显著优于传统的WGAN。通过这种方法,研究者们能够在几乎不需要任何额外超参数调整的情况下,实现高质量图像的生成。 如果你希望深入理解梯度惩罚的具体实现、对权重惩罚的影响以及对生成样本质量的提升,建议详细阅读《改进训练的Wasserstein GANs》这篇论文。文中不仅详细介绍了梯度惩罚的原理,还提供了丰富的实验结果和对比分析,是深入研究WGAN训练稳定性的宝贵资源。 参考资源链接:[优化Wasserstein GAN训练:梯度惩罚提升模型稳定性与生成质量](https://wenku.csdn.net/doc/4rxvh2qd2b?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值