Theory behind GAN

假如要生成一些人脸图,实际上就是想要找到一个分布,从这个分布内sample出来的图片像是人脸,分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。

在GAN之前用的是Maximum Likelihood Estimation。

Maximum Likelihood Estimation(最大似然估计)

最大似然估计的思想是,假设数据的分布是 Pdata(x) ,定义一个分布为PG(x;θ) ,求得一组参数θ,使得PG(x;θ)Pdata(x) 越接近越好。具体步骤如下:

  1. Pdata(x) 中sample出一些样本;
  2. 对于sample出来的样本,可以计算出它们的likelihood;
  3. 计算总分likelihood L,并找到一组参数θ*  使得L最大。

MLE=Minimize KL Divergence

最大似然估计就相当于最小化的KL散度。

如果使用最大似然估计,采用高斯混合模型定义PG  ,生成的图片会非常模糊,现在使用generator产生PG 。优化的目标就是使PGPdata 越接近越好,即使得G* 越小越好,但是不知道PGPdata 的公式。

虽然不知道PGPdata 的公式,但是可以从这两个分布中做sample。可以用Discriminator来衡量PGPdata 的Divergence。训练出来的maxV(G,D) 就相当于JS divergence。

证明过程

要求V(G,D)的最大值,就是求 的最大值。

因为PGPdata 都是固定的,所以设为常数,然后通过求导求出最大值。

将求出的D* 回带入V(G,D),然后化简。

Generator 的训练目标就是,找到一个G* 去最小化PGPdata 之间的差异,即 ,由于不知道PGPdata 的具体公式,所以无法直接计算divergence。于是通过一个discriminator来计算两个分布之间的差异, 。所以最终优化目标为

假设已经把Generator固定住了,红点表示固定住G后的 ,也就是PGPdata  的差异。现在的目标是最小化这个差异,所以下图的三个网络中,G3 是最优秀的。

具体的做法就是:

  1. 首先固定G,找到一个能够使V最大的D;
  2. 然后固定D,找到能够使这个最大D情况下V最小的G。不停的迭代。

虽然L(G)中有求最大值,但是它依然可以做微分,即分段求微分。

具体算法如下:

  1. 给定一个G0
  2. 求解出使得V(D,G) 最大的D0*
  3. 利用梯度下降求解出G1 ;
  4. 利用G1 求解出使得V(D,G) 最大的D1* ,不断迭代。

其实在训练过程中不是真正的minimize JS散度,因为G在训练时变化时,V(D,G) 也会发生改变;此时由于D固定,所以JS散度会变得不再是此刻G下的JS散度了。所以要保证V(D,G0) 和V(D,G1)  很像,即G的参数变化很小。

Algorithm for GAN(Review

首先训练D,多训练几次直至收敛;之后训练G:其中第一项是与生成器无关的,由于G不能训练太多,否则会导致D无法evaluate JS,所以update一次就好。

  • In practice

理论上V是要取期望值,但是实际上是不可能的,只能用样本的均值进行估计。

论文原文在实作的时候把log⁡(1-D(x)) 换成-log⁡(D(x)) ,蓝色曲线刚开始的值很大,适合做梯度下降。其实后来实验证明两种结果都差不多。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类和对象(5)--运算符重载

目录 一 概念 二 运算符重载的实现 三 关于时间的所有运算符重载 四 默认赋值运算符 五 const取地址操作符重载 一 概念 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数…

Android 13.0 Launcher3仿ios长按app图标实现抖动动画开始拖拽停止动画

1.概述 在13.0的系统rom定制化开发中,在对系统原生Launcher3的定制需求中,也有好多功能定制的,在ios等电子产品中 的一些好用的功能,也是可以被拿来借用的,所以在最近的产品开发需求中,需求要求模仿ios的 功能实现长按app图标实现抖动动画,接下来看如何分析该功能的实现…

基于静电放电算法优化概率神经网络PNN的分类预测 - 附代码

基于静电放电算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于静电放电算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于静电放电优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

【数据结构与算法】JavaScript实现双向链表

文章目录 一、双向链表简介二、封装双向链表类2.0.创建双向链表类2.1.append(element)2.2.toString()汇总2.3.insert(position,element)2.4.get(position)2.5.indexOf(element)2.7.update(position,element)2.8.removeAt(position)2.9.其他方法2.10.完整实现 三、链表结构总结3…

苍穹外卖--员工分页查询

请求参数封装: Data public class EmployeePageQueryDTO implements Serializable {//员工姓名private String name;//页码private int page;//每页显示记录数private int pageSize;}请求结果封装: public class PageResult implements Serializable {…

青岛数字孪生赋能工业制造,加速推进制造业数字化转型

随着企业数字化进程的推进,数字孪生技术逐渐在汽车行业得到广泛应用。5G与数字孪生、工业互联网的融合将加速数字中国、智慧社会建设,加速中国新型工业化进程,为中国经济发展注入新动能。数字孪生、工业物联网、工业互联网等新一代信息通信技…

Pattern Recognition投稿经验

文章目录 ManuscriptTitle PageHighlightsAuthor BiographyDeclarationSubmit 合作推广,分享一个人工智能学习网站。计划系统性学习的同学可以了解下,点击助力博主脱贫( •̀ ω •́ )✧ 停更了大半年,近期终于完成了论文投稿,趁…

基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码

基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工电场优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

什么是PWA(Progressive Web App)?它有哪些特点和优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【算法训练营】参数解析+跳石板

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

跟我一起来做一个音视频产品功能!

前言: 大家好,上来和大家汇报一下h264翻译进度,目前翻译完了第六章,第七章快翻译完了,马上可以翻译第八章。 在第七章翻译完了之后,我会做一个知识点总结出来,一起学习,一起进步&…

小程序授权获取昵称

wxml: <form bindsubmit"formsubmit"><view style"width: 90%;display: flex;margin-left: 5%;"><view class"text1">昵称&#xff1a;</view><input style"width: 150px;margin-left: 30px;margin-top: 30px;…

操作系统秋招面试题

自己在秋招过程中遇到的高频操作系统相关的面试题 内存管理 虚拟内存 虚拟内存的⽬的是为了让物理内存扩充成更⼤的逻辑内存&#xff0c;从⽽让程序获得更多的可⽤内存。 为了更好的管理内存&#xff0c;操作系统将内存抽象成地址空间。每个程序拥有⾃⼰的地址空间&#xff…

【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总

参考论文&#xff1a;Core Challenges in Embodied Vision-Language Planning 论文作者&#xff1a;Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文&#xff1a;https://arxiv.org/abs/2106.13948 论文出处&#xff1a;Jo…

恕我直言,大模型对齐可能无法解决安全问题,我们都被表象误导了

是否听说过“伪对齐”这一概念&#xff1f; 在大型语言模型&#xff08;LLM&#xff09;的评估中&#xff0c;研究者发现了一个引人注目的现象&#xff1a;当面对多项选择题和开放式问题时&#xff0c;模型的表现存在显著差异。这一差异根源在于模型对复杂概念的理解不够全面&…

SpringCloud 之Feign的性能优化

Feign底层默认是JDK自带的HttpURLConnection&#xff0c;它是单线程发送HTTP请求的&#xff0c;不能配置线程池&#xff0c;我们使用Okhttp或者HttpClien 朵发送http请求&#xff0c;并且它们两个都支持线程池。 常见HTTP客户端 HttpClient HttpClient 是 Apache Jakarta Comm…

数位和相等数对的最大和【教3妹学编程-算法题】数位和相等数对的最大和

3妹&#xff1a;2哥&#xff0c;你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定” 2哥 : 啥&#xff1f;18岁就当爹啦&#xff1f; 3妹&#xff1a;确切的说是14岁好吧。 2哥 : 哎&#xff0c;想我30了&#xff0c; 还是个单身狗。 3妹&#xff1a;别急啊&#xff0c; 2…

mfc140u.dll丢失的解决方法,以及针对每个解决mfc140u.dll丢失办法的优缺点

在使用电脑的过程中&#xff0c;有时会遇到一些与动态链接库文件&#xff08;DLL&#xff09;相关的错误。其中&#xff0c;mfc140u.dll丢失是一种常见的问题&#xff0c;它可能导致应用程序无法正常运行。在本文中&#xff0c;我们将探讨关于mfc140u.dll丢失的解决办法&#x…

PS学习笔记——初识PS界面

文章目录 PS界面 PS界面 我使用的是PS2021&#xff0c;可能不同版本界面有所不同&#xff0c;但大体来说没有太多差异 可以看到下面这个图就是ps的主界面&#xff0c;大体分为菜单栏、选项栏、工具栏、面板、以及最中央的工作区。 ps中的操作基本都能在菜单栏中找到 可以从菜…