【论文精度(李沐老师)】Generative Adversarial Nets

news2024/12/23 22:08:14

Abstract

我们提出了一个新的framework,通过一个对抗的过程来估计生成模型,其中会同时训练两个模型:生成模型G来获取整个数据的分布,辨别模型D来分辨数据是来自于训练样本还是生成模型G。生成模型G的任务是尽量的让辨别模型D犯错。这个framework对应一个博弈论中双人对抗游戏。在任何函数空间的G和D中,存在一个独一无二的解,这个解能够将你整个训练中的数据的真实分布找出,D在任何地方等于1/2。如果G和D是一个MLP的话,整个系统可以通过一个误差反传进行训练。我们不需要任何的马尔科夫链或者对一个近似的推理过程展开。实验通过对生成的样本进行定性和定量评估,证明了该框架的潜力。
(介绍了GAN做的是个什么事情)

Introduction

一、深度学习是用来发现一些丰富、有层次的模型,这些模型能够对AI中的各种数据做一个概率分布的表示。虽然深度学习在辨别模型上取得了显著的进展,但是在生成模型上做的还是比较差,这个难点来自于我们最大化似然函数的时,要对概率进行很多的近似,从而带来了很大的计算困难。
二、(对GAN的一些介绍)在所提出的对抗网络框架中,生成模型和对抗模型对立:一个判别模型,它学习确定一个样本是来自模型分布还是数据分布。生成式模型可以被认为是类似于一队造假者,试图生产假币并在不被发现的情况下使用,而鉴别式模型则类似于警察,试图检测假币。这个游戏中的竞争促使两个团队改进他们的方法,直到假币与真币无法区分(希望造假者赢)。
三、这个框架可以产生许多种模型和优化算法的具体训练算法。在这篇文章中,我们探讨了这样一种特殊情况:生成模型通过多层感知器传递随机噪声来生成样本,而判别模型也是多层感知器。我们把这种特殊情况称为对抗性网络。在这种情况下,我们可以只用非常成功的反向传播和dropout算法来训练两个模型,只用正向传播从生成模型中取样。不需要近似推理或马尔科夫链。

Related work

一、之前的方法总是想去构造出一个分布函数,然后给这个函数提供一些参数进行学习,这些参数通过最大对数似然函数来求,但这会导致计算困难,尤其是维度比较高的时候。因为这些方法在计算上有困难,所以最近有些工作**“generative machines”**——学一个模型来近似模拟需要的结果,这项工作计算比较容易但是无法得知最后的分布是什么样子。
二、我们观察到对于f的期望求导等价于对f自己求导(说明为什么通过误差的反向传递对GAN求解)。说了一下VAEs的工作,和GAN类似。
三、说了一下NCE所做工作,但是其损失函数比较复杂,在求解性能上没有GAN好。
四、解释了一下与predictability minimization(PM)的区别。
五、解释了一下与adversarial examples的区别。adversarial examples构造一些假的样本,达到以假乱真的目的,从而测试算法的稳定性。

Adversarial nets

(讲的GAN的目标函数,以及对其的求解)
一、这个框架最简单的应用是当你的生成器和辨别器都是MLP的时候。生成器会学一个在数据x上的 p g p_g pg分布。对于生成模型,我们定义一个先验 p z ( z ) p_z(z) pz(z),在输入的噪音变量z上。对于生成模型,就是把z映射映射成x,参数是 θ g \theta_g θg G ( z ; θ g ) G(z;\theta_g) G(z;θg)。辨别器 D ( x ; θ d ) D(x;\theta_d) D(x;θd),就是把x输出成一个标量,用来表示此数据来自真实数据(用1表示)还是由生成器(用0表示)生成的。在训练D的同时也会训练G,G用来最小化 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z))),即训练一个G使我的辨别器尽量的犯错,G(z)代表是一个假图片。
二、
在这里插入图片描述
最理想状态是图(d),此时D的输出一直是0.5。
在这里插入图片描述
上述算法中,先更新我们的辨别器,再更新我们的生成器。k是超参数,不能太大/小,要保证辨别器有足够的更新,但也不要更新的太好。
如果没有把辨别器足够好的更新,我们更新生成器则没有太大的意义。
如果把辨别器更新的太好了, 1 − D ( G ( z i ) ) 1-D(G(z^i)) 1D(G(zi))会变成0,此时对生成器的更新会有困难。
GAN的收敛是非常不稳定的。

三、在这里插入图片描述
在上面的公式里,后面一项会有一点问题,即容易把辨别器更新的太好了, 1 − D ( G ( z i ) ) 1-D(G(z^i)) 1D(G(zi))会变成0,此时对生成器的更新会有困难,所以更新G的时候把目标函数改成max l o g D ( G ( z ) ) logD(G(z)) logD(G(z)),但同时也会产生一些数值上的问题,今后的工作会对其进行一些改进。

Theoretical Results

(讲了一些理论上的结果)
一、当且仅当 p g = p d a t a p_g=p_{data} pg=pdata(生成器学到的分布=真实数据的分布),目标函数有一个全局最优解。
二、算法一确实能够求解目标函数。

Global Optimality of p g = p d a t a p_g=p_{data} pg=pdata

(讲目标函数是正确的)
Proposition 1 当G固定时,辨别器最优解(取值范围[0,1])为
在这里插入图片描述
p g = p d a t a p_g=p_{data} pg=pdata时,结果为1/2。
Theorem 1 当且仅当 p d a t a = p g p_{data}=p_g pdata=pg时,C(G)取得全局最小值。
在这里插入图片描述
KL散度,量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息。
GAN使用的JS散度相对熵(KL散度)虽然可以用来表示两个概率分布之间的差异,但是它并不是对称的,因此有时用它来训练神经网络会有顺序不同造成不一样的训练结果的情况。为了克服这个问题,有人就提出了一个新的衡量公式,叫做JS散度

Convergence of Algorithm 1

Proposition 2
如果 G 和 D 有足够的容量,并且在算法 1 的每一步,允许判别器在给定 G 的情况下达到其最优值,并更新 p g p_g pg 以改进标准 E x ∼ p d a t a [ l o g D ∗ G ( x ) ] + E x ∼ p g [ l o g ( 1 − D ∗ G ( x ) ) ] Ex∼p_{data} [log D∗ G(x)] + Ex∼p_g [log(1 − D∗ G(x))] Expdata[logDG(x)]+Expg[log(1DG(x))] 然后 p g p_g pg 收敛到 p d a t a p_{data} pdata

Advantages and disadvantages

优:生成器没有去看真正样本上的数据,没有试图去拟合那些特征,所以使得其能够生成比较锐利的一些边缘。
缺:要均衡好G和D,如果G和D没均衡好,会导致结果很差。

Conclusions and future work

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DI依赖注入

DI依赖注入Setter注入setter注入引用类型setter注入简单类型(基本数据类型和字符串)构造器注入构造器注入引用类型自动装配集合注入首先我们明确一些观点1、注入的Bean的数据包括引用类型与简单类型(基本数据类型和字符串)2、通过…

HTML5 地理定位

HTML5 Geolocation(地理定位) HTML5 Geolocation(地理定位)用于定位用户的位置。 Geolocation 通过请求一个位置信息,用户同意后,浏览器会返回一个包含经度和维度的位置信息! 定位用户的位置 …

【C语言数组部分】

数组部分综述引入:数组概念:一、一维数组1.1一维数组的创建:1.2一维数组的初始化:1.2.1初始化概念:1.2.2完全初始化:1.2.3不完全初始化:1.3字符数组的初始化:1.3.1用字符初始化&…

如何解决spring的循环依赖问题?

前言 昨天我们说了什么是spring的循环依赖,以及产生的原因,今天那我们就来说说如何解决spring的循环依赖问题。 上篇文章说到过,只有通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题是被解决的? Spring是怎样解决…

rhce第二次作业

配置ssh免密登陆,能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 [root456 ~]# hostname host [root456 ~]# bash \\更改名称[roothost ~]# su redhat …

2023年腾讯云S5云服务器性能网络收发包PPS、连接数、内网带宽能力等性能测评

腾讯云服务器标准型S5实例CPU采用Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,主频2.5GHz,睿频3.1GHz,标准型S5云服务器基于全新优化虚拟化平台,配有全新的Intel Advanced Vector Extension (AVX-512) 指令集&#…

微服务+springcloud+springcloud alibaba学习笔记【Spring Cloud服务网关】(7/9)

Spring Cloud服务网关 7/91、GateWay概述2、GateWay的特性:3、GateWay与zuul的区别:4、zuul1.x的模型:5、什么是webflux:6、GateWay三大概念:6.1,路由:6.2,断言:6.3,过滤:7、GateWay的工作原理:8、使用GateWay:8.1,建module8.2,修改pom文件8.3,写配置文件8.4,主启动类8.5,针对p…

Springboot 整合 Redis 进行基本操作

SpringBoot整合Redis 首先创建 Springboot 项目。 spring-data-redis针对jedis提供了如下功能:1.连接池自动管理,并提供了一个高度封装的“RedisTemplate”类2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口ValueOperat…

计网第六章.应用层各协议概览

以下来自湖科大计算机网络公开课笔记及个人所搜集资料 目录一. C/S方式和P2P对等方式二. 动态主机配置协议DHCP三.域名系统DNS域名解析过程四.文件传输协议FTP基本工作原理:五.电子邮件六.万维网www万维网的文档6.1 HTTP(HyperText Transfer Protocol&am…

左手Python 右手R —— 最大公约数和最小公倍数

左手Python 右手R —— 最大公约数和最小公倍数前言1、 最大公约数1.1 约数1.2 最大公约数1.3 求解方法2、 最小公倍数2.1 倍数2.2 最小公倍数2.3 求解方法3、程序实现3.1 python 代码实现3.2 R语言代码实现小结创作不易,都浏览到这儿了,看官可否将下面的…

【Linux系统创建,修改用户和组和修改目录文件的权限以及实验的心得体会】

实验过程 1.创建一个新用户nick,设置其主目录为home/nick。 (1)添加新用户: sudo useradd -m 用户名 sudo passwd 新用户名 (2)给新用户可以执行的root权限 sudo vi /etc/sudoers #User privilege specification roo…

Spring Security实战(一)——基于内存和数据库模型的认证与授权

目录 简介 一、初识Spring Security(入门案例) (1)新建project (2)选择依赖 (3)编写一个 HelloController (4)启动项目,访问localhost:8080…

手动清除gitlab中prometheus的数据

背景: gitlab服务器上, 磁盘经常爆满。后来通过 du -sh ./* 查出prometheus下的data占了绝大多数磁盘空间。 因此,准备删除prometheus的数据。 思路 由于prometheus的数据占用的空间较大,因此在实际使用时,可以关闭…

【 Spring MVC 核心功能(一) - 使用注解实现 URL 路由映射】

文章目录引言一、RequestMapping 注解介绍1.1 RequestMapping 是 post 还是 get 请求?1.2 RequestMapping 指定一种请求方式二、GetMapping三、PostMapping四、总结引言 前面我们讲到,学习 Spring MVC 需要掌握三个核心功能即连接,获取参数&…

avi文件怎么转成mp4视频,3种方法快速学

avi文件怎么转成mp4视频?前面小编给大家讲了mov格式和webm格式,以及如何将mov和webm格式转换成mp4格式。今天小编给大家说一说另外一种视频格式,就是avi,AVI英文全称为Audio Video Interleaved,即音频视频交错格式&…

SpringBoot中对Bean的处理方法以及第三方Bean处理的方式

我们可以通过Spring当中提供的注解Component以及它的三个衍生注解(Controller、Service、Repository)来声明IOC容器中的bean对象,为应用程序注入运行时所需要依赖的bean对象,也就是依赖注入DI。 关于IOC容器中Bean的其他使用细节…

矿泉水为什么会溴酸盐超标

矿泉水为什么会溴酸盐超标? 水生产企业多使用臭氧消毒,不过,水生产企业不存在水运输路途遥远的问题,因此可以使用臭氧消毒。同时,也是因为臭氧在消毒后会直接变成氧气,所以不会有使用氯消毒后的那种味道&a…

give_you_flag(GIF原理、二维码定位符)

下载附件是一个GIF 看到最后你会发现它突然漏了一个二维码出来 我们将这个GIF分解成图片(动图就是由多张静态图片组合而成,按照一定的顺序和时间播放的) https://tu.sioe.cn/gj/fenjie/ 提取出里面包含二维码的那张 但是我们发现这里有一个…

word2vec原理

1.背景 2013年,Google开源了一款用于词向量计算的工具—word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embed…

GDPU C语言 天码行空7

1. 数组最大值交换 ⭐ 1e9&#xff1a;10的9次方 #include<stdio.h>int main() {int n, i,idx 0;//idx 记录第一个出现的最大值下标scanf("%d", &n);double a[30];double max -1e9;// 1e9 表示10的9次方&#xff0c;十亿&#xff0c;int 的最大范围级别…