点
击蓝字 / 关注我们
Beginning of Winter
在实例化判别器时,模型会根据传入的参数进行灵活配置,为后续的网络构建打下基础。
核心参数配置:
网络规模:由层数和隐藏层大小控制网络的深度和宽度
损失策略:通过loss_function参数决定输出层的激活方式及中间层的归一化方式(支持 WGGP或SGAN)
正则化:可选的L2正则化,防止过拟合
多样性参数:预设了Minibatch Discrimination,也就是批次多样性的参数,包括:n_kernels(特征图的核,取值为5)和kernel_dim(核的维度,取值为3)
判别器的网络结构每一层都包含了一套复杂的“特征提取-增强-处理”组件。
单层内部结构:
对于隐藏层中的每一层,包含以下组件:
主特征提取:一个标准的全连接层,用于提取输入数据的非线性特征
多样性特征提取:另一个全连接层,专门用于为批次多样性机制生成特征(维度为n_kernels * kernel_dim)
归一化处理:
a. WGGP模式:使用LayerNormalization。这是为了适应 Wasserstein GAN with Gradient Penalty的要求,不使用Batch Norm以避免破坏样本间的独立性假设(除了 Minibatch Discrimination 部分)
b. 其他模式:使用标准的BatchNormalization
正则化与激活:包括Dropout(0.5)层以增强鲁棒性,以及LeakyReLU激活函数以保持梯度流动
输出层设计:
如果不使用SGAN(如WGAN),输出层是线性的(无激活函数)
如果使用SGAN,输出层使用sigmoid激活函数,输出 [0, 1] 的概率值
这是该判别器最显著的特征,旨在解决GAN训练中常见的模式崩溃(Mode Collapse)问题。通过让判别器观察这一批次数据的内在差异性,迫使生成器生成多样化的样本,而不仅仅是重复生成判别器认为真实的某一种样本。
算法流程:
张量重塑:将输入特征重塑为 (-1, n_kernels, kernel_dim) 的3D张量
差异计算:计算批次内所有样本两两之间的L1距离(绝对值差)
特征聚合:对距离取负指数 (exp(-abs_diffs))并求和。这意味着样本间越相似,该值越大;样本越分散,该值越小
特征拼接:在前向传播函数中,将计算出的群体多样性特征直接拼接到个体主特征之后,作为下一层的输入
数据在网络中的流动过程如下:
输入接收:接收维度为 (N, n_features) 的张量。
层级迭代:遍历所有的隐藏层:
a. 通过主全连接层计算个体特征
b. 通过辅助全连接层并计算批次多样性特征
c. 将个体特征与多样性特征在通道维度拼接
d. 依次通过归一化,Dropout,LeakyReLU层
最终输出:通过输出层得到判别评分(概率或数值)
DATGAN的判别器不仅仅是一个简单的二分类器,它是一个融合了现代GAN训练技巧(如批次多样性和Gradient Penalty兼容性)的复杂特征提取器。它通过同时关注个体真实性和群体多样性,为生成器提供了高质量的反馈信号。

