GAN(对抗生成网络)的数学原理及基本算法

GAN在生成任务上与其他方法对比

Machine Learning (ML) 本质上是寻找一个函数 f : X → Y f:X\to Y f:XY,通过网络来近似这个函数。Structured Learning (SL) 输出相对于ML更加复杂,可能是图、树、序列……通常ML的问题,每个类别都会有一些样本,但是SL则不会——输出可能是输入从来没见过的东西。
GAN 之前,auto-encoder (AE) 非常常用。AE结构:输入 → \to encoder → \to vector c → \to decoder → \to 输出。训练的时候要使得输入输出尽可能相近。当做生成任务的时候,截取AE的decoder部分,随机给vector c,输出即生成的结果。所以可见AE可以用于做生成——即将decoder输出视为生成信息。但是这种训练方式面对一个问题,假设A、B都是训练集信息,针对A、B网络能够很好的进行生成,但是当面对 0.5 A + 0.5 B 0.5A+0.5B 0.5A+0.5B网络将会不知道输出应该是什么(最大的可能是两个图像的堆叠)。
对AE的改进叫做variational-AE (VAE) 在之前模型结构的基础上,对输入加上了噪声,其余不变。这种操作能够让模型能加稳定。
VAE同样有一个问题,下图是四种生成的情况。由于通常会以衡量输入输出的相似度作为评估标准,以L1或L2为例来讲,下图第一行的生成loss将会小于第二行。但从人的角度出发,第一行添加或者失去的一个像素点使得图像更加不真实,相反,第二行尽管图像与原图差别更大,但是更加真实。
VAE面临的一个问题
VAE的另一个问题是,如果数据分布较为分散,从降低训练loss的情况出发,更倾向于产生数据分布介于分散分布之间。但往往,这样会使得生成结果非常不真实。
GAN能够弥补上述模型的缺陷。SL做生成任务,通常两种思考方式:bottom-up和top-down。前者是通过一个一个小组件完成生成任务,但往往会失去大局观。top-down是从大体上生成,但很难在细节上完成生成。GAN的通常构成包括generator(生成器)和discriminator(辨别器)。从SL的角度分析GAN,则可以将GAN看做同时具有bottom-up和top-down结构的生成模型。generator从细节上考虑如何生成,可视为bottom-up,discriminator从宏观考虑生成效果是否真实,可视为top-down。

GAN背后的数学原理

首先,GAN的结构通常包括generator和discriminator,前者用于生成,后者对生成结果进行评价。下面介绍GAN背后的数学原理。
假设随机变量 X ∼ P d a t a ( x ) X\thicksim P_{data}(x) XPdata(x),通过GAN的generator生成的结果有: X ∼ P G ( x ) X\thicksim P_{G}(x) XPG(x)。那么如果生成器效果越好,那么两个分部将会越相近。通常使用最大似然进行优化。从 P d a t a ( x ) P_{data}(x) Pdata(x)中进行采样,获取样本 { x 1 , x 2 , x 3 … x m } \{ x_1, x_2, x_3 \dots x_m\} { x1,x2,x3xm},那么目标就是要去最大化这些样本产生的log likelihood: L = arg max ⁡ θ l o g ∏ i = 1 m P G ( x ; θ ) \begin{aligned} L = \argmax \limits_{\theta} log \prod\limits_{i=1}^m P_G(x;\theta) \end{aligned} L=θargmaxlogi=1mPG(x;θ)这个公式的意思就是从 P d a t a P_{data} Pdata采样出的样本用 P G P_G PG这个分布来产生,log likelihood越大越好。对上述公式进行进一步化简:
L = arg max ⁡ θ l o g ∏ i = 1 m P G ( x i ; θ ) L = arg max ⁡ θ ∑ i = 1 m l o g P G ( x i ; θ ) L ≈ arg max ⁡ θ E x ∼ P d a t a [ l o g P G ( x ; θ ) ] L = arg max ⁡ θ ∫ x P d a t a ( x ) l o g P G ( z ; θ ) d x \begin{aligned} L &= \argmax \limits_{\theta} log \prod\limits_{i=1}^m P_G(x_i;\theta)\\ L &= \argmax \limits_{\theta} \sum\limits_{i=1}^m log P_G(x_i;\theta)\\ L &\approx \argmax \limits_{\theta} E_{x\thicksim P_{data}}[log P_G(x;\theta)]\\ L &= \argmax \limits_{\theta} \int\limits_x P_{data}(x)log P_G(z;\theta)dx \end{aligned} LLLL=θargmaxlogi=1mPG(xi;θ)=θargmaxi=1

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值