李宏毅2021-GAN学习笔记

Discriminator G ∗ = a r g m i n D i v ( P G , P d a t a ) G^*=arg min Div(P_G,P_{data}) G=argminDiv(PG,Pdata)

real data sampleed from P d a t a P_{data} Pdata,
general data sampled from P G P_G PG

Objective Function For Discriminator

Loss function

这个函数针对Discrimiator 的分类结果计算,越大说明分类效果越好
V ( G , D ) = E y ∼ P d a t a [ l o g D ( y ) ] + E y ∼ P G [ l o g ( 1 − D ( y ) ) ] V(G,D) = E_{y_{\thicksim P_{data}}} [logD(y)]+ E_{y_{\thicksim P_{G}}} [log(1-D(y))] V(G,D)=EyPdata[logD(y)]+EyPG[log(1D(y))]

objective Function for D

D ∗ = a r g m a x V ( D , G ) D^*=arg maxV(D,G) D=argmaxV(D,G)==Training classifier:minimize cross entropy

JS 的缺点

JS divergence 如果两个分布之间没有重叠,公式结果都是 log ⁡ 2 \log2 log2
在这里插入图片描述
J S ( P G 0 , P d a t a J S ( P G 0 , P d a t a J S ( P G 100 , P d a t a = log ⁡ 2 = log ⁡ 2 = log ⁡ 0 W ( P G 1 , P d a t a ) W ( P G 1 , P d a t a ) W ( P G 1 , P d a t a ) = d 1 = d 2 = 0 \begin{aligned} JS(P_{G_0},{P_{data}}\qquad \qquad &JS(P_{G_0},{P_{data}}\qquad \qquad \qquad &JS(P_{G_{100}},{P_{data}}\\ =\log2\qquad\qquad\quad & = \log2 \qquad & =\log0 \\ W(P_{G_1},P_{data})\qquad\qquad&W(P_{G_1},P_{data})&\qquad W(P_{G_1},P_{data})\\ =d1\qquad\qquad\qquad&=d2&=0 \end{aligned} JS(PG0,Pdata=log2W(PG1,Pdata)=d1JS(PG0,Pdata=log2W(PG1,Pdata)=d2JS(PG100,Pdata=log0W(PG1,Pdata)=0
在这里插入图片描述

WGAN

摘自: http://www.twistedwg.com/2018/01/31/WGAN.html

在这里插入图片描述在这里插入图片描述

先要知道的是wasserstein-1 距离是人为定义的对于两个分布Pr和Pg间差异的测量。再来看式子,∏(Pr, Pg)代表对于(x,y)的边缘分布为Pr和Pg的联合分布的集合。我们从这个集合里面任选一个联合分布r,对应这个r联合分布,求出(x,y)服从r这个分布时x,y两个点对于||x-y||的期望值。对于联合分布集合里面所有的联合分布,我们都能求出这样一个期望值,其中最小的那个期望值就是我们要求的wasserstein-1 距离了。
在这里插入图片描述
来源
作者:兴趣使然
链接:https://www.zhihu.com/question/41752299/answer/353764754
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

GAN的一些技巧

在这里插入图片描述

Generator 的一些问题

Mode Collapse

只产生几张特定的高质量图片,来骗过Discrimitor .
目前没有完全解决

Mode Dropping

generator 生成的图片虽然不少,特征却只是真实资料的一部分 。 比如生成的人脸肤色单一等。
也没有获得本质上的解决。

memory too

深度网络完全记住了图片,导致生成的图片和原数据极为接近,或者仅仅只是图片的左右反转。

判断标准

quanlity (质量) :区分器无法区分。
diversity(多样性):能生成各种类型,具备各种不同特征的图片。 而且图片的特征分布比较接近均匀分布。

评估方法

Inception Score(IS):

Good quality ,large diversity -> Large IS

Frechet Inception Distance (FID)

去出深度网络分类前的最后一层隐藏层作为数据的特征矢量。
假设此矢量符合高斯分布。
计算不同对象之间的FID得出结果。

### 李宏毅机器学习笔记中的GAN相关内容 #### GAN基本概念 生成对抗网络(Generative Adversarial Networks, GANs)由两个主要部分组成:生成器(Generator)和判别器(Discriminator)。生成器的目标是从随机噪声中生成逼真的样本,而判别器则试图区分这些生成的样本与真实的数据样本。两者通过相互竞争的方式共同训练,最终达到纳什均衡状态,在此状态下生成器能够生成几乎无法被识别出来的假样本[^4]。 #### 条件GAN的应用扩展 条件GAN是在标准GAN的基础上进行了改进,允许模型基于特定条件来控制生成的内容。具体而言,除了提供给生成器和判别器的标准输入外,还会附加一段描述期望特性的向量作为额外输入。这段向量可以是由文本转换而成的表示形式,从而指导生成过程按照指定的主题或风格进行创作。例如,可以通过输入一段文字说明让GAN创建具有相应属性的人脸图片;同样地,也支持利用语音信号引导图像合成任务。 #### 训练技巧与优化策略 为了提高GAN及其变体的有效性和稳定性,研究者们提出了多种辅助技术: - **Learning Rate Scheduling**: 动态调整学习率有助于改善收敛性能并防止过拟合现象的发生。一种常见的做法是采用Warm-Up机制——初期保持较低水平的学习速率以便充分探索损失曲面特性,随后逐步增加直至某个峰值后再缓慢降低,以此促进全局最优解的发现[^5]。 - **Regularization Methods**: 正则化手段如Dropout对于增强泛化能力至关重要。特别是在卷积神经网络架构下运用时,不仅能有效缓解过拟合风险,还能促使特征提取更加鲁棒可靠[^3]. ```python import torch.nn as nn class Generator(nn.Module): def __init__(self, input_dim=100, output_channels=3): super(Generator, self).__init__() # 定义生成器结构... def forward(self, z, condition_vector=None): # 实现前向传播逻辑... pass class Discriminator(nn.Module): def __init__(self, input_channels=3): super(Discriminator, self).__init__() # 定义判别器结构... def forward(self, image, condition_vector=None): # 实现前向传播逻辑... pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值