相对自适应判别器(Relative Adaptive Discriminator, RAD)

文献1提出了一种改进的生成对抗网络(GAN)框架,旨在解决传统GAN和进化GAN(EGAN)中常见的训练不稳定、模式崩溃、梯度消失和高计算成本等问题。其中有一个创新点指出传统判别器基于绝对分数判断真假样本,容易导致训练不平衡。RAD基于相对logit差异来评估真实样本和生成样本。

传统GAN判别器的损失:

这篇文章提出的:

其中:

生成器的损失:

在这里回顾一下GAN的设计思路,这涉及了一个博弈论的思想,简单说就是让生成器尽力去欺骗判别器(xfake→xreal),而判别器要尽力去区分这个数据是否来自生成器(D(xreal)→1、D(xfake)→0)。

再来看这篇论文的改进思路,其核心思想是:比较同一小批中的真实样本和生成样本,并从它们的差异(相对logits)中学习,而不是绝对概率。

他给了伪代码,其中他设计了两个生成样本,但并未见其如何使用。

在这里我用Pytorch实现一下:

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F
python 复制代码
def rad_generator_loss(real_logits, fake_logits, eps=1e-8):
    """
    相对自适应生成器损失
    参数:
        real_logits: 判别器对真实样本的输出, shape (batch_size,)
        fake_logits: 判别器对生成样本的输出, shape (batch_size,)
    返回:
        生成器损失标量
    """
    # 生成器希望 fake_logits - real_logits 尽量大
    diff_fake_real = fake_logits - real_logits
    loss_gen = -torch.log(torch.sigmoid(diff_fake_real) + eps).mean()
    return loss_gen
python 复制代码
def rad_discriminator_loss(real_logits, fake_logits, eps=1e-8):
    """
    相对自适应判别器损失 (RAD)
    参数:
        real_logits: 判别器对真实样本的输出, shape (batch_size,)
        fake_logits: 判别器对生成样本的输出, shape (batch_size,)
        eps: 防止 log 数值不稳定
    返回:
        判别器损失标量
    """
    # 保持广播机制,对每个样本对计算差值
    # 第一项: log σ(real - fake)
    diff_real_fake = real_logits - fake_logits
    loss_real = -torch.log(torch.sigmoid(diff_real_fake) + eps).mean()
    # 第二项: log σ(fake - real)
    diff_fake_real = fake_logits - real_logits
    loss_fake = -torch.log(torch.sigmoid(diff_fake_real) + eps).mean()
    
    return loss_real + loss_fake

参考文献:

1Atifa Rafique, Xue Yu, Kashif Iqbal, Mujahid Tabassum, Amir Hussain, Khursheed Aurangzeb,

MD-EGAN: Evolutionary GAN with dynamic latent sampling and relative adaptive discriminator for improved performance,Neurocomputing,Volume664,2026,131951, https://doi.org/10.1016/j.ne ucom.2025.131951.

***************END**************

相关推荐
能有时光3 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
盼小辉丶18 小时前
PyTorch强化学习实战(18)——基于DQN处理股票交易问题
pytorch·深度学习·强化学习
万亿少女的梦1682 天前
基于深度学习的动物图像分类系统设计与实现
pytorch·深度学习·计算机视觉·图像分类·convnext
西西弗Sisyphus3 天前
PyTorch 数据加载:Dataset、DataLoader 与 WeightedRandomSampler 解决类别不平衡
pytorch·python
小白学大数据3 天前
无库无捷径,PyTorch 手写完整 Transformer 大语言模型 LLM
开发语言·pytorch·语言模型·transformer
承渊政道3 天前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(基于PyTorch卷积层的MNIST分类实战:从卷积直觉到高效卷积设计)
人工智能·pytorch·神经网络·分类·chatglm·卷积·大模型学习
想会飞的蒲公英4 天前
一个 PyTorch 模型训练的完整流程
人工智能·pytorch·python
梦想三三4 天前
Flask + PyTorch模型部署实战:从训练权重到API接口完整工程解析(附完整代码)
人工智能·pytorch·python·flask·模型推理·ai 工程化
白日做梦Q4 天前
PyTorch从零手写CNN实现NEU钢材表面缺陷检测(完整实战·单篇完结)
人工智能·pytorch·cnn
想会飞的蒲公英4 天前
TF-IDF + 随机森林中文文本分类全链路实战:从训练脚本到 Flask API + Streamlit 前端
人工智能·pytorch·python·随机森林·分类·flask·tf-idf