GAN系列基础知识
原始值函数
原始GAN的值函数是
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) = E_{x \sim p_{data}(x)}[logD(x)]+E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
其中Ex∼pdata(x)E_{x \sim p_{data}(x)}Ex∼pdata(x)表示从真实样本采样,Ez∼pz(z)E_{z \sim p_{z}(z)}Ez∼pz(z)表示从噪声样本中采样
进一步将V(D,G)写成积分格式就是
V(G,D)=∫xpdata(x)log(D(x))dx+∫zpz(z)log(1−D(g(z)))dzV(G,D)=∫xpdata(x)log(D(x))dx+pg(x)log(1−D(x))dxV (G, D) = \int_xp_{data}(x) log(D(x))dx + \int_zp_z(z) log(1 − D(g(z)))dz \\ V (G, D) = \int_xp_{data}(x) log(D(x))dx + p_g(x) log(1 − D(x))dx V(G,D)=∫xpdata(x)log(D(x))dx+∫zpz(z)log(1−D(g(z)))dzV(G,D)=∫xpdata(x)log(D(x))dx+pg(x)log(1−D(x))dx
For any (a, b) ∈ R2, the function y → a log(y) + b log(1 − y) achieves its maximum at a/(a+b).
优化饱和
**在实际训练中,早期G很差,G生成的样本很容易被D识别,使得D回传给G的梯度极小,达不到训练目标,这种现象叫做优化饱和。**进一步解释一下优化饱和的原因,将D的sigmoid输出层的前一层记为o,那么D(x)=Sigmoid(o(x)),那么
∇D(x)=∇Sigmoid(o(x))=D(x)(1−D(x))∇o(x)\nabla D(x)=\nabla Sigmoid(o(x))=D(x)(1-D(x))\nabla o(x) ∇D(x)=∇Sigmoid(o(x))=D(x)(1−D(x))∇o(x)
所以训练G时候的梯度里包含的D(G(x))就趋近于0
解决方案是把log(1−D(G(z)))log(1-D(G(z)))log(1−D(G(z)))改成log(D(G(z)))log(D(G(z)))log(D(G(z))),minGmin_GminG变成了maxGmax_GmaxG
WGAN-GP
普通的GAN可以看做是优化JS距离,但是只用JS距离会进入坍缩模式(拿图片举例,反复生成一些相近或相同的图片,多样性太差。生成器似乎将图片记下,没有泛化,更没有造新图的能力,好比一个笨小孩被填鸭灌输了知识,只会死记硬背,没有真正理解,不会活学活用,更无创新能力)。猜测问题根源和JS距离维度低有关系,因此引入了Wasserstein距离(也叫推土机距离,Earth Mover distance)。
为什么Wasserstein距离能克服JS距离解决不了的问题?理论上的解释很复杂,需要证明当生成器分布随参数θ变化而连续变化时,生成器分布与真实分布的Wasserstein距离也随θ变化而连续变化,并且几乎处处可导,而JS距离不保证随θ变化而连续变化。
推土机距离实际中非常难求,但是有个Wasserstein距离对偶式比较好求解:
minGmax∣∣f∣∣L<=1E(f(x))−E(f(x~))min_Gmax_{||f||_L<=1}E(f(x))-E(f( \widetilde{x}))minGmax∣∣f∣∣L<=1E(f(x))−E(f(x))
其中∣∣f∣∣L<=1||f||_L<=1∣∣f∣∣L<=1是1-Lipschitz函数(对于函数f(x),若其任意定义域中的x1,x2,都存在L>0,使得|f(x1)-f(x2)|≤L|x1-x2|。 大白话就是:存在一个实数L,使得对于函数f(x)上的每对点,连接它们的线的斜率的绝对值不大于这个实数L。)。其实x是real,x~\widetilde{x}x是生成,上面这个其实就是把原始GAN值函数的Log也去掉。
实际中发现The interaction between the weight constraint and the loss function makes training of WGAN difficult and leads to exploding or vanishing gradients.解决方案直接把1-Lipschitz的约束变成了Gradient Penalty(The idea of Gradient Penalty is to enforce a constraint such that the gradients of the critic’s output w.r.t the inputs to have unit norm)。因此最终的目标函数变成了
判别器也换了一个名字叫做Critic评分器
Spectral Normalization
为了让判别器函数满足 1-Lipschitz continuity,W-GAN 和之后的 W-GAN GP 分别采用了 weight-clipping 和 gradient penalty 来约束判别器参数。这里的谱归一化,则是另一种让函数满足 1-Lipschitz continuity 的方式。谱归一化会对每一层的权重做奇异值分解,并对奇异值做归一化以将其限制在1以内
IPM(Integral Probability Metrics)-GAN
IPM-GAN基于积分概率度量两个分布的距离,WGAN是一种典型的IPM-GAN,另外一种典型的IPM-GAN叫做McGAN(Mean and Covariance Feature Matching GAN)。它从最小化IPM的角度将分布之间距离的度量定义为有限维度特征空间的分布匹配。
首先,分类超平面搜索;然后,判别器向远离超平面的方向更新;最后,生成器向超平面的方向更新。实际上,这种几何解释同样可以应用在其他GAN上,包括f-GAN、WGAN等。各种GAN之间的主要区别就在于分类超平面的构建方法以及特征向量的几何尺度缩放因子的选择
DC-GAN
DCGAN全称Deep Convolutional GAN,发表于ICLR2016。DCGAN的主要贡献反卷积操作又称为“分数步长卷积”(fractional-strided convolution)或“转置卷积”(transposed convolution),可以视为一种与正常卷积“相反”的操作,这里不是指反卷积是卷积的逆变换,而是使用一种类似卷积的方法实现了上采样
ALI(Adversarially learned inference)
Adversarially Learned Inference(简称ALI)与Adversarial feature learning(简称BiGAN)类似,GAN中的生成器实现了从Latent向量空间z到图像空间x的转换,ALI和BiGAN模型则添加了图像空间x到Latent向量空间z的转换。判别器不仅需要学习区分生成的样本和真实的样本,还需要区分两个不同的数据和潜在变量联合分布。
IRGAN
给定q,生成模型会在整个文档集中按照概率分布pθ(d∣q)p_\theta(d|q)pθ(d∣q)挑选出文档dθ,它的目标是逼近真实数据的概率分布ptrue(d|q),进而迷惑判别器;同时,判别模型试图将生成器伪造的(q,dθ)从真实的(q,dtrue)中区分出来。原本的判别模型是用来鉴别与Query相关或不相关的文档,而在GAN框架下判别模型的目标发生了微妙变化,区分的是来自真实数据的相关文档和模拟产生的潜在相关文档。当然,最终的判别模型仍可鉴别与Query相关或不相关的文档。我们用一个MiniMax目标函数来统一生成模型和判别模型。最终利用强化学习中策略梯度求期望和重参数技巧显式地表达pθ(d∣q)p_\theta(d|q)pθ(d∣q)
相关文章:

GAN系列基础知识
原始值函数 原始GAN的值函数是 minGmaxDV(D,G)Ex∼pdata(x)[logD(x)]Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) E_{x \sim p_{data}(x)}[logD(x)]E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minGmaxDV(D,G)Ex∼pdata(x)[logD(x)]Ez∼pz(z)[log(1−D(G(z)))] 其中Ex…...

Linux/CenterOS 7.9配置汉化gitlab服务器
1.安装gitlab的依赖项 yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python2.启动postfix,并设置为开机启动 systemctl start postfixsystemctl enable postfix3.防火墙和selinux的设置 setenforce 0systemctl stop fire…...

山洪灾害监测预警平台 山洪灾害监测预警系统解决方案 以人为本 科学防御
平升电子山洪灾害监测预警平台 山洪灾害监测预警系统解决方案,集信息采集、传输、分析和预警等功能于一体,实现预警信息及时、准确地上传下达,提升监测预警能力,使可能受灾区域能够及时采取措施,最大程度减少人员伤亡和…...

The Number Of ThreadPoolExecutor
序言整理下Java 线程池中线程数量如何设置的依据巨人肩膀:https://blog.csdn.net/weilaizhixing007/article/details/125955693https://blog.csdn.net/yuyan_jia/article/details/120298564#:~:text%E4%B8%80%E4%B8%AA%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%A4%84%E7%90%86%E8%AE%A1,…...

Linux(Linux各目录结构详解)
我们知道Linux系统是一个文件系统,它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 : ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…...

UART通讯简介
UART全称Universal AsynchronousReceiver/Transmitter,通用异步收发传输器。 一、工作原理 和其它串口一样,数据按照二进制从低位到高位一位一位的传输,能将要传输的数据在串行通信与并行通信之间加以转换,能够灵活地与外部设备进…...

80 90后表示真干不过,部门新来的00后已经把我卷奔溃了,不想干了····
都说00后躺平了,但是有一说一,该卷的还是卷。这不,刚开年我们公司来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …...
Python中2.x 与 3.x 版本区别?
Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下相容。 许多针对早期 Python 版本设计的程式都无法在 P…...
性能指南笔记一
全面的性能 1.好处和效率之间的权衡在增加程序特性的过程 2.数据库永远是瓶颈,分布式系统的整体性能问题 我们当前的性能处于什么百分位? 是不是整体的性能属于下降的? 一开始就考虑可能性很小的性能问题? 3.吞吐量测试 TPS 每秒…...
es数据导入导出
使用elasticdump导入导出数据 一、安装elasticdump 终端中输入 1 npm install elasticdump -g -g表示全局可用,直接在终端输入 elasticdump --version,出现版本信息即表示安装成功,如下 1 2 C:\Users\T470s>elasticdump --version 6.3.3 …...
Python3入门教程||Python3 字符串||Python3 列表
Python3 字符串字符串(string,简写为str)是 Python 中最常用的数据类型之一。我们可以使用引号( 或 " )来创建字符串。创建字符串很简单,只要为变量分配一个值即可。例如:var1 Hello World!var2 "W3Cscho…...
API 的安全性
大家好。今天聊一个很重要但是大部分人不重视的API安全问题。api固有的范围和风险意味着它们需要一种不同的安全方法。应用程序编程接口(api)是现代应用程序的构建模块,它们的使用正在以惊人的速度增长。然而,随着使用的增加,风险也会增加。。…...
Linux驱动->设备树
1.定义 设备树(device tree是描述硬件信息的一种树形结构,设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点,一个设备节点内部包含当前硬件的多个不同属性,相同节点不同 2.设备树的文件格式…...

一天一道力扣题
232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek()…...

算法leetcode|36. 有效的数独(rust重拳出击)
文章目录36. 有效的数独:样例 1:样例 2:提示:分析:题解:rustgoccpythonjava36. 有效的数独: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效…...

都说爱有回音,这次情人节驱动人生宠你!
来了来了,它又来了——那个一波人狂欢,一波人孤单的节日。 眼看着身边人在订花订餐厅,选礼物,空气中弥漫着微妙的氛围,驱动哥脑海里只有明天下班的地铁挤不挤得过这群约会的人。 不过根据哥的观察,发现一个…...
npm安装依赖报错 npm code ERESOLVEnpm ERESOLVE unable to resolve dependency tree
在安装npm i vue-router (路由)时出现了这个错误。 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vue_test@0.1.0 npm ERR! Found: vue@2.6.14 npm ERR! node_modules/vue npm ERR! vue@"^2.6.…...

【项目设计】—— 基于Boost库的搜索引擎
目录 前言 一、项目的相关背景 1. 什么是Boost库 2. 什么是搜索引擎 3. 为什么要做Boost搜索引擎 二、搜索引擎的宏观原理 三、搜索引擎技术栈和项目环境 四、正排索引 VS 倒排索引 —— 搜索引擎的具体原理 1. 正排索引(forword index) 2. 倒…...

全网详解MyBatis-Plus updateById方法更新不了空字符串或null的解决方法
文章目录1. 文章引言2. 分析问题3. 解决问题3.1 方法1:全局配置方式3.2 方法2:非null字段验证策略3.3 方法3:通过注解的方式4. 总结1. 文章引言 在开发的过程中,我们经常使用MyBatis-Plus的updateById方法更新数据表,…...

联想K14电脑开机全屏变成绿色无法使用怎么U盘重装系统?
联想K14电脑开机全屏变成绿色无法使用怎么U盘重装系统?最近有用户使用联想K14电脑的时候,开机后桌面就变成了绿色的背景显示,无法进行任何的操作。而且通过强制重启之后还是会出现这个问题,那么这个情况如何去进行系统重装呢&…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...