lijianlong1 / data_uhnd_other

2 stars 1 forks source link

对FGM对抗学习的一个细节的问题 #2

Open Joshuass11 opened 5 months ago

Joshuass11 commented 5 months ago
def _on_backward(
        self,
        inputs,
        outputs,
        logits,
        loss,
        gradient_accumulation_steps=1,
        **kwargs
):
    loss.backward()
    #在此使用pgd方式进行对抗学习扰动

    self.fgm.attack(epsilon=1.0)    # 在这个地方可以调整扰动的数值概率
    logits = self.module(**inputs)
    _, attck_loss = self._get_train_loss(inputs, logits, **kwargs)
    attck_loss.backward()
    self.fgm.restore()

    self._on_backward_record(loss, **kwargs)

    return loss在这段代码里在FGM扰动前后都回传了loss,但是为什么最后返回了原来的loss呢,请问有试过相加loss和attack_loss,再返回total_loss的尝试吗?试了下单纯相加效果不好,在尝试别的权重组合,只是有点疑惑进行FGM攻击后再返回攻击前的loss符合逻辑吗?如果可以回答的话非常感谢!