2021李宏毅机器学习笔记--23 Theory behind GAN

摘要

本章节主要介绍GAN理论后的数学原理,GAN可以根据很多的example来生成新的东西,但其实它生成的东西里面,可能只有一个固定的区域里sample出来的是我们想要的,而现在GAN的工作就是找到这个区域distribution。在GAN之前主要使用Maximum Likelihood Estimation(最大似然估计),假如说我们的数据集的分布是 P d a t a ( x ) P_{data}(x) Pdata(x),我们定义一个分布 P G ( x ; θ ) P_G(x;\theta) PG(x;θ),我们想要找到一组参数 θ,使得 P G ( x ; θ ) P_G(x;\theta) PG(x;θ)越接近 P d a t a ( x ) P_{data}(x) Pdata(x)越好。Minimize KL Divergence其实最大似然估计的另一种解释,它只不过是在MLE的函式基础上加了一项然后重新整理得到的。但问题是采用高斯混合模型定义 P G P_G PG,生成的图片会非常模糊。所以就有了Generator的方法,它是从一个简单的分布(比如正态分布)中sample出样本,然后扔进一个network(即generator),然后得到输出,把这些输出统统集合起来,我们会得到一个与目标十分接近的distribution。我们可以从 P G P_G PG P d a t a P_{data} Pdata中sample出一些样本出来,那么问题就变成了从sample的数据来求 P G P_G PG P d a t a P_{data} Pdata,怎么求呢,可以使用Discriminator(生成器)来衡量二者之间的的Divergence散度。而生成器训练的目标是找到一个 G ∗ G^* G,去最小化 P G P_G PG P d a t a P_{data} Pdata的差异。

一、Maximum Likelihood Estimation(最大似然估计)

首先考虑一下,GAN到底生成的是什么呢?比如说,假如我们想要生成一些人脸图,实际上,我们是想找到一个分布,从这个分部内sample出来的图片,像是人脸,而不属于这个distribution(分布)的,生成的就不是人脸。而GAN要做的就是找到这个distribution。
在这里插入图片描述
在GAN出生之前,我们怎么做这个事情呢?
之前用的是Maximum Likelihood Estimation,最大似然估计来做生成的,我们先看一下最大似然估计做的事情。

最大似然估计的理念是,假如说我们的数据集的分布是 P d a t a ( x ) P_{data}(x) Pdata(x),我们定义一个分布 P G ( x ; θ ) P_G(x;\theta) PG(x;θ),我们想要找到一组参数 θ,使得 P G ( x ; θ ) P_G(x;\theta) PG(x;θ)越接近 P d a t a ( x ) P_{data}(x) Pdata(x)越好。比如说,加入 P G ( x ; θ ) P_G(x;\theta) PG(x;θ)如果是一个高斯混合模型,那么 θ 就是均值和方差。
在这里插入图片描述
具体的操作步骤如下:

  1. 首先我们不知道真实的数据分布是什么样的,但是我们可以从 P d a t a ( x ) P_{data}(x) Pdata(x)抽样出一些样本(真实图片)
  2. 对每一个sample出来的x, 我们都可以计算它的likelihood,也就是给定一组参数θ ,我们就能够知道 P G ( x ; θ ) P_G(x;\theta) PG(x;θ)长什么样,然后我们就可以计算出在这个分布里面sample出某一个x的几率。
  3. 我们把在某个分布可以产生 x i x_i xi 的likelihood乘起来,可以得到总的likelihood: L = ∏ i = 1 m P G ( x i ; θ ) L = \prod_{i=1}^m P_G(x^i;\theta) L=i=1mPG(xi;θ),我们要找到一组 θ ∗ θ^* θ,可以最大化L

二、MLE=Minimize KL Divergence(最小KL散度)

其实最大似然估计的另一种解释是Minimize KL Divergence

在这里插入图片描述
前面我们已经解释过,我们要找到一组 θ ∗ θ^* θ ,使得 θ ∗ = a r g max ⁡ θ ∏ i = 1 m P G ( x i , θ ) θ^*=arg\max\limits_{\theta}\prod_{i=1}^mP_G(x_i,\theta) θ=argθmaxi=1mPG(xi,θ),我们对其做一些变换, 加一个Log,再把Log乘进去:

θ ∗ = a r g max ⁡ θ ∏ i = 1 m P G ( x i , θ ) θ^*=arg\max\limits_{\theta}\prod_{i=1}^mP_G(x_i,\theta) θ=argθmaxi=1mPG(xi,θ) = a r g log ⁡ max ⁡ θ ∏ i = 1 m P G ( x i , θ ) arg\log\max\limits_{\theta}\prod_{i=1}^mP_G(x_i,\theta) arglogθmaxi=1mPG(xi,θ) =
a r g max ⁡ θ ∑ i = 1 m l o g P G ( x i , θ ) arg\max\limits_{\theta}\sum_{i=1}^mlogP_G(x_i,\theta) argθmaxi=1mlogPG(xi,θ)

其中, ∑ i = 1 m \sum_{i=1}^m i=1m就相当于我从 P d a t a ( x ) P_{data}(x) Pdata(x)中sample出m个样本出来。
这个事情就相当于求从 P d a t a ( x ) P_{data}(x) Pdata(x)采样出x xx的期望:
a r g max ⁡ θ E x ∼ P d a t a [ l o g P G ( x ; θ ) ] arg\max\limits_{\theta}E_{x\sim P_{data}}[logP_G(x;\theta)] argθmaxExPdata[logPG(x;θ)]

接下来我们把 E x ∼ P d a t a E_{x\sim P_{data}} ExPdata这一项展开,做一个积分,得到:
= a r g max ⁡ θ ∫ x P d a t a l o g P G ( x , θ ) d x = arg\max\limits_{\theta}\int_xP_{data}logP_G(x,\theta)dx =a

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值