BCEWithLogitsLoss vs. Hinge Loss

在 GAN 設計中,BCE(Binary Cross Entropy)與 Hinge Loss 各有優勢:

  • BCEWithLogitsLoss(目前使用)
    • 適合標準 GAN 設計,會強制 D 學習分辨真實與偽造
    • 可能會導致梯度消失問題,特別是在 D 學習速度比 G 快的時候
  • Hinge Loss(改善 D 訓練)
    • 更適合 WGAN 或 LSGAN,因為它不會給 D 過於極端的梯度信號
    • Hinge Loss 對於 D 來說: pythonCopyEditd_loss_real = torch.mean(F.relu(1 - real_D_logits)) d_loss_fake = torch.mean(F.relu(1 + fake_D_logits)) d_loss = d_loss_real + d_loss_fake
    • G 仍然可以使用 -torch.mean(fake_D_logits) 作為對抗損失

如果你發現目前 D 學習過快,導致 G 訓練不穩定(例如 loss 振盪),可以嘗試 Hinge Loss,通常會讓生成結果更穩定

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *