通俗易懂生成对抗网络GAN原理(二)

生成对抗网络(Generative Adversarial Network, GAN)的原理

学习李宏毅机器学习课程总结。
前面学习了GAN的直观的介绍,现在学习GAN的基本理论。现在我们来学习GAN背后的理论。

引言

假设x是一张图片(一个高维向量),如64 * 64 * 3的图片,每个图片都是高维空间中的一个点。为了画图方便,我们就画成二维上的点。在高维空间中,只有一小部分采样出来的点符合我们的数据分布(如:整个图中只有蓝色区域采样的点的才是人脸,其他地方的就不是)。
我们想要产生的图片,其数据分布为Pdata。
目的: 让机器找出这个分布。
在这里插入图片描述

原始做法

在有GAN之前,人们怎么做生成任务呢?

最大似然估计 (Maximum likelihood estimate)。

  • 假设数据集的数据分布为Pdata(x)
    比如数据集为二次元人物,我们也不知道Pdata长什么样
  • 假设生成数据分布为PG(x; θ)
    希望找到θ,使得PG(x; θ)和原始未知分布Pdata(x)越接近越好
    如:服从高斯分布,θ就是均值和方差
  • 从Pdata(x)里采样一组样本{x1, x2, …, xm}
  • 对每个样本,计算其似然:PG(xi; θ)
    在这里插入图片描述
    找到一个θ*,使得该似然值最大

下面有个很重要的概念:
最大似然估计 = 最小KL散度

下面证明:
在这里插入图片描述

注:求最大值的θ,多个log不影响,为了乘积变加和

我们可以先回顾一下KL散度的定义:
设P(x)和Q(x) 是随机变量X 上的两个概率分布,则在离散随机变量的情形下,KL散度的定义为:
在这里插入图片描述
在连续随机变量的情形下,KL散度的定义为:
在这里插入图片描述
接着上面的,所以:
下面多加了一项(红框),对结果不影响对吧,是为了和KL散度有关。
在这里插入图片描述
所以,生成模型目的等价为:最小化分布PG和分布Pdata的散度。

如何定义一个广义的PG?
如果分布为简单的高斯分布,我们可以计算PG(x; θ),但实际数据都是更复杂的数据,有更复杂的分布,所以无法计算出PG的似然。怎么办?有人提出Generator。

GAN的做法

Generator

图像生成任务在80年代就有人做,那个时候人们就是用高斯模型做,但生成的图片非常非常模糊,不管怎么调整均值和方差,都出不来想要的结果。所以需要更广义的方法做生成任务,即生成对抗网络。

G怎么做生成呢?
从高斯分布中采样的数据z(也可以是其他分布,,如均匀分布等,那到底哪种分布输入好呢?其实都可以,对输出的影响不是很大,因为G都能给它变成更复杂的分布),输入网络G,得到输出x。

在这里插入图片描述
我们希望概率分布PG和Pdata越接近越好,也就是最小化它们的某种散度Divergency(有很多散度,不一定是KL散度)。

那怎么计算这个散度呢?
Pdata和PG的概率分布公式我们不知道,所以不知道怎么算。所以人们想到了判别器Discriminator。

Discriminator

虽然我们不知道Pdata和PG的概率分布公式,但我们可以从这两堆数据里分别采样一些出来。

在这里插入图片描述
GAN的神奇之处就在于,可以通过D来量这两堆数据之间的散度。

把从Pdata和PG分布里取出的样本数据输入D,训练:

在这里插入图片描述

D相当于二分类器,希望对真数据Pdata,输出分数越大越好;对生成数据PG,输出分数越小越好。训练的D的结果,就会告诉我们PG和Pdata他们之间的散度有多大。

训D的时候,G的参数是固定住的。

在这里插入图片描述
如果你机器学习基础很好的话,就可以看出这个D的优化函数和二分类器的式子一模一样。

神奇的地方是,当你训完D,你可以得到一个最小的loss或最大的V(D, G ),而这个值和某个JS散度有一些关系,甚至可以说它就是JS散度。

如果D很难区别两类数据的不同,loss就下不去,目标函数就不会得到最大,意味着这两堆数据很相似很接近,他们之间的散度就是很小的。反之亦然。

在这里插入图片描述

在这里插入图片描述

数学证明

为什么训练目标函数和散度有关呢?
在这里插入图片描述

下面证明:
在这里插入图片描述
假设:D(x)可以是任何函数

上式相当于,找到一个D,让积分里面的部分最大:
在这里插入图片描述

为了看起来方便,让Pdata = a, PG = b, D(x) = D。
在这里插入图片描述

可得到如下,求导,让导数为0。就可得到D*
在这里插入图片描述
此时得到局部最大。
接下来,把刚才求得的D*代入目标函数:
在这里插入图片描述

得到下式:
在这里插入图片描述

为了把它整理成像JS散度,就作一些变换,分子分母同除以2:
在这里插入图片描述

把分子的1/2都提出来,放到前面,就是2log(1/2),或 -2log2。

最后式子可以写成如下:
在这里插入图片描述
回顾一下JS散度的公式:
在这里插入图片描述

所以可以看到,最后最大化目标函数就是在最大化它们的JS散度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14448.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DevOps系列文章 之 SnakeYAML解析与序列化YAML

1、简述 如何使用SnakeYAML库将YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档。 在DevOps平台系统中是基础的能力支持,不管是spring boot 的配置还是K8S 资源清单yaml 2、项目设置 要在项目中使用SnakeYAML,需要添加Maven依赖…

百度网盘删除“我的应用数据”文件夹

方法一:电脑端 工具链接, BaiduPCS-Go-3.6.8-windows-86.zip - 蓝奏云 电脑端下载解压运行,弹出浏览器窗口和命令行,在浏览器中输入百度网盘账号密码,登录。 之后会需要输入验证码,之后使用手机号或者邮…

恒生电子探路金融大模型

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日,恒生电子和旗下子公司恒生聚源正式发布基于大语言模型技术打造的数智金融新品:金融智能助手光子和全新升级的智能投研平台WarrenQ。此外,恒生电子金融行业大模型LightGPT也首次对外亮…

Ctfshow web入门 nodejs篇 web334-web344

CTFshow NodeJs web334 前言:做原型链污染,入门的话个人建议先看看P神的文章,只看前四部分就行了。 深入理解 JavaScript Prototype 污染攻击 | 离别歌 (leavesongs.com) 然后也得有一点js基础,不用太多,要不然看起…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站,新建一个网站(域名随便输反正是局域网)然后点击确认 如下,网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名,即可看见我们的网站 然后网站好了,就可以新建项…

Vue和React的区别?

目录 共同点 1. 数据驱动视图 2. 组件化 3. Virtual DOM 不同点 1. 核心思想不同 2. 组件写法差异 3. diff算法不同 4. 响应式原理不同 5. 其他不同点 首先找到 Vue 和 React 的共性,它们被用于解决什么问题, 然后再挖掘各自独特的个性、设计原…

基于WebSocket的简易聊天室的基本实现梳理

一,前言 目前在很多网站为了实现推送技术所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。HTTP 协议是一种无状态的、无连…

【Rust】所有权

文章目录 所有权stack与heap所有权存在的原因所有权规则变量作用域String类型内存和分配变量与数据交互的方式1.Move2.Clone3.Copy 所有权与函数返回值与作用域引用借用可变引用悬空引用Dangling References引用的规则切片字符串切片将字符串切片作为参数传递其他类型的切片 所…

CentOS Linux的替代品(六)_BigCloud Enterprise Linux R8 U2 基础安装教程

文章目录 CentOS Linux的替代品(六)_BigCloud Enterprise Linux R8 U2 基础安装教程一、BC-Linux简介二、BigCloud Enterprise Linux R8 U2 基础安装2.1 下载地址2.2 安装过程 三、简单使用3.1 关闭selinux3.1.1 临时关闭selinux3.1.2 永久关闭selinux 3…

SpringBoot中间件——封装限流器

背景 通常能知道一个系统服务在正产增速下流量大小,扩容与压测也是基于此。若有突发或者恶意攻击访问,都要将流量拦截在外。这部分功能不属于业务侧,它是通用非业务的共性需求,所以我们将共性抽取为限流中间件。 方案设计 图解&…

多元回归预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost回归预测,WOA-XGBoost回归预测模型,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost回归预测,WOA-XGBoost回归预测模型,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源…

LeViT-UNet:transformer 编码器和CNN解码器的有效整合

levi - unet[2]是一种新的医学图像分割架构,它使用transformer 作为编码器,这使得它能够更有效地学习远程依赖关系。levi - unet[2]比传统的U-Nets更快,同时仍然实现了最先进的分割性能。 levi - unet[2]在几个具有挑战性的医学图像分割基准…