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

news2024/11/24 6:18:42

生成对抗网络(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。

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,输出越小越好。

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

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

相关文章

「AntV」使用AntV X6实现流程编排设计器

通过对BPMN的深入学习,以及对业界成熟的流程编排设计器的调研,了解到要研发一个流程编排设计器,需要实现如下几个主要的功能: 支持创建各种流程图元素,包括任务(活动)、网关、事件等。支持绘制…

漏洞复现 || NginxWebUI 后台命令执行runCmd远程命令执行

免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此…

【Linux】yum git 的使用

yum 的使用 yum 源的查看 yum 源就是一个配置文件。 可以看到 yum 源的文件中包含有很多下载源的链接。我们使用 yum 命令进行安装的时候,就是通过这些链接去寻找下载源进行下载的。这些链接一般都是国内的镜像网址。 所谓的更新 yum 源,也就是将最新…

异步交互技术Ajax

Ajax 概念:Asynchronous JavaScr And XML 异步的JavaScript和XML作用: 数据交换:通过Ajax可以给服务器发送请求,并获取服务响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部…

mysqldump + python 定时备份数据库

场景: 需要对mysql进行定时备份,受限于硬盘空间的大小,需要对备份的数据需要定时清理 python代码实现: # -*- coding:UTF-8 -*- """ProjectName : HotelGo2DelonixPmxFileName : fix_missing_ratesDescripti…

第二章:L2JMobius学习 – 安装jdk17

L2JMobius是一套开源的 LineageII 的服务器端代码,使用Java语言编写。想要运行L2JMobius源程序的话,需要安装jdk17版本。首先,下载jdk17版本。 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.msi 当然,也…

华为OD机试真题 Java 实现【新员工座位安排系统】【2022Q4 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 工位由序列F1,F2…Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。 1、某一空位的友好度为左右连续…

ModaHub魔搭社区:腾讯云发布的向量数据库有什么特点?技术架构是什么样的?

腾讯云发布的向量数据库有什么特点?技术架构是什么样的? Tencent Cloud VectorDB从性能上看,具备高性能、高可用、低成本等优势,比如单索引支持10亿级向量规模,最快支持毫秒级数据实时更新,适用于AI运算、…

【STM32】自举模式 和 程序下载(ST-Link和串口示例)

STM32官方网站STM32中文社区 如果遇到不清楚的概念,可以看之前的文章。 一、自举模式二、程序下载2.1 概述2.2 实操2.21 SWD 方式下载(ST-Link)2.22 串口下载 一、自举模式 STM32有一个特殊的功能,就是可以通过不同的方式启动程序…

maven 工程结构 和 archetype 模板

文章目录 一、maven 工程结构1.1. jar 工程结构1.2. war 工程结构 二、archetype 模板2.1. 推荐的 archetype 模板2.2. 自定义 archetype 模板2.2.1 自定义模板示例 有没有好奇过,通过 Maven 生命周期命令构建项目时,我们并没有指定源文件目录和编译后的…

5张图告诉你:同样是职场人,差距怎么这么大?

点赞 ➕ 评论 ➕ 收藏 养成三连好习惯 在职场中,我们常常会听到各种各样的抱怨: 👩‍⚖️‍ 小A: 凭什么别人每次述职绩效都是优秀呀? 感觉TA也没干啥呀! 🕵 小B: 凭啥这个事情,领导指派TA去对接呀&#…

“设计模式”概述

设计模式代码样例:Git 设计原则 依赖倒置原则(DIP) 高层模块(稳定)不应依赖底层模块(变化),二者都应依赖于抽象(稳定)抽象不应依赖于实现细节,…

YoloV5/YoloV7改进---注意力机制:线性上下文变换LCT,性能优于SE

目录 1.LCT介绍 2.LCT引入到yolov5 2.1 加入common.py中: 2.2 加入yolo.py中: 2.3 yolov5s_LCT.yaml 2.4 yolov5s_LCT1.yaml 3.YOLOv5/YOLOv7魔术师专栏介绍 1.LCT介绍 论文: https://arxiv.org/pdf/1909.03834v2.pdf AAAI 2020 摘要&a…

最长上升子序列 (从dp---->贪心)

最长上升子序列 思路: 题目要求找到最长上升的子序列,那么这个时候,我们可以假以第i个为结尾,那么此时以i为结尾的最大上升子序列是多少。但是这个时候,会发现,从第i个为结尾往前面找的话,是一…

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解)

08第六集:LED闪烁第六集:LED闪烁和花式点灯上和花式点灯上.mp4 09第六集:LED闪烁和花式点灯下.mp4 【大文哥学习32位8051】20230704【冲哥视频】第六集的晶振时钟的学习困惑 2023/7/5 17:36 delay_ms(3000); 刷机的时候如果使用11.0592M的Fos…

Ardupilot学习笔记

参考文献 【1】https://ardupilot.org 主打的就是一个炫酷 自驾仪 Ardupilot 一套开源的自驾仪,集成了各种各样的代码,包括其他开源代码(如PX4代码)和项目、驱动等。 即:自驾仪即集成了整个可以实现无人载具(如无人机&#xff…

Day_61-62 决策树

目录 Day_61-62决策树(准备工作) 一. 算法的基本概念 1. 决策树的定义 2. 如何构建决策树? 2.1 熵 2.2 信息增益原则 2.3 计算步骤 二. 示例演示 1. 第一次节点决策分类: 2. 后续节点的决策分类 3. 决策分类的结束条件 三. 代码实现 1. 主函数 2. 两个构…

Matlab把两个不同的x轴和y轴画在同一个图里

我们知道画两个y轴可以用yyaxis. 那么画两个x轴呢? 这时候可以用神奇的tiledlayout. % 创建两组数据 x1 0:0.1:40; y1 4.*cos(x1)./(x12); x2 1:0.2:20; y2 x2.^2./x2.^3;t tiledlayout(1,1); % 创建一个tiledlayout % 第一个坐标系 ax1 axes(t); % 创建坐标系, 指定t为…

Go语言MinGW的安装

Go语言MinGW的安装 相比在 Linux 平台上安装 GCC 编译环境,在 Windows 平台上安装 MinGW 是比较简单的,只需经历以下几个过 程。 1、MINGW32位安装 1、打开 [MinGW 官网] https://osdn.net/projects/mingw/,下载 MinGW 安装包。 点击即可…

个人对于SAR的粗浅理解

个人对于SAR的粗浅理解 有同学问我是做成像的,让我解释一下SAR成像,我思索了一下,决定这样简单回答: 首先SAR的全称为Synthetic Aperture Radar,即合成孔径雷达,本质还是一种Radar 合成孔径,其…