| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 对抗生成网络(GAN)详解 -> 正文阅读 |
|
[人工智能]对抗生成网络(GAN)详解 |
目录 前言之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但是这种方法计算比较困难,尤其是维度比较高时,所以作者考虑能不能不用构造一个分布出来,而是构造一个模型自己去学习这个分布。这两种方法有本质的区别,第一种是要完完全全的将分布构造出来,将分布的均值、方差等弄明白,而第二种方法是不需要构造分布,只需要构造模型得到近似的结果就可以。 GAN模型中有两个分布,一个是生成器,一个是判别器,根据他们的名字就可以看出,生成器是生成和真数据相似的分布来欺骗判别器,二判别器是判断出假数据从而不让生成器得逞,原文中作者举了一个很形象的例子,生成器就如假币的贩子,判别器就如警察,假币贩子制造假币,警察识别假币找出假币贩子,是一个对抗的过程。 其实,原始的生成器和判别器很简单,就是一些全连接网络组成,可以通过反向传播进行端到端的训练,训练过程相当于一个不断学习和对抗的过程。 整个过程大概如下图所示,将随机噪音输入到生成器,这里的随机噪音例如可以服从的是高斯分布,生成器根据输入的噪声生成一张假图像,判别器将真实图像和生成的假图像作为输入进行训练,这里的判别器其实就是一个二分类模型,输出为真或假。 目标函数GAN的目标函数如下所示,很多人都没有对这个函数进行详细的说明,在这里呢我详细的说明一下。 式中,z是随机噪声,是随机噪声z的分布,是生成器,输入为z,其中有一个权重参数,是判别器,输入为图像x,他的权重参数为,所以对于GAN来说他训练的是两个模型,是一个对抗的过程,所以在他的目标函数中有一个求最大max和一个求最小min的过程。 GAN的目标函数包括两部分,如图中的红框和绿框: ?判别器D要最大化,的含义是将真实图像输入到判别器D中,判别器认为是真图的概率,判别器希望真实图像的概率越大越好,这就对应了式中的maxD,绘制出图像如下。 ? 生成器要最小化函数,的含义是将噪声z输入到生成器G中得到一个假图,然后将输入到判别器D中,输出判别器认为假图是真图的概率,即。绘制出图像如下,生成器的目标是让判别器认为假图是真图的概率越大越好,即接近于1,而是一个递减的过程,即越大越小,所以生成器的目标变成了让越小越好,这就对应了式中的minG。 ? ?原理?如图,详细和展示了GAN整个训练过程 图中, Z为噪声空间,噪声空间中为均匀分布的随机数,生成器将噪声空间的随机数z映射到图像空间x,随机点映射到图像空间的分布就是绿色曲线所示的高斯分布,而图像中的黑色曲线为真实图像的数据分布,蓝色曲线为判别器预测x为真实数据的概率,蓝色曲线在真实数据的分布出偏高,在生成器生成的数据分布处偏低。
训练这部分就是详细说明了GAN的训练过程,包括给定生成器训练判别器,和给定判别器训练生成器,将会涉及到大量的计算公式以及推导。 训练过程对应的伪代码如图,训练过程包括两个,第一个是首先训练k次判别器,然后再训练一次生成器。 ? 训练判别器
其中目标函数和我们之前说的是一样的,只不过是将期望换成了均值。 训练生成器
注意再生成器的目标函数中,不会收到判别器的影响,所以只有生成器的部分。 给定生成器,训练判别器首先给出结论,再进行证明: 对于给定的生成器G,最优的判别器为 其中为真实图像的概率,为假图像的概率 证明 给定生成器最大化判别器的目标函数 ?其中,期望的定义为: ?所以式(1)中的期望可以变为积分的形式 ? ?上式中既有对x的积分又有对z的积分,其中对于随机噪声z的采样就相当于对假图像的采样,所以可以对积分元素进行统一 ?所以,(2)式可以统一对x积分 变换后的式子我们就比较熟悉了,其实就是二分类交叉熵,即? ?对于二分类交叉熵为凸函数,所以可以求得最大值,证明如下 ?证明完毕 给定判别器,训练生成器生成器目标函数: ?其中的判别器就是我们上面训练好的判别器,代入上式得 那么,上式中当且仅当时,生成器的目标函数取得最小值 -log4 证明 证明完毕。 总结至此,有关GAN的说明基本差不多了,主要说明了一些重点的原理性的东西,一些细节没有进行说明,感兴趣的朋友可以去看原文,最后希望大家能点赞支持! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:42:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |