Conditional GAN

Conditional GAN

1. 概述

GAN的出现为数据生成提供了一种新的思路,以图像生成为例,在GAN框架中,不再需要其他复杂的操作,如Markov Chain等,只需要对定义好的网络进行backpropagation即可完成生成网络的训练。在原始的GAN框架中,包括了两个部分,分别为生成网络(Generator) G G G和判别网络(Discriminator) D D D,其中生成网络(Generator) G G G用于生成图片,判别网络(Discriminator) D D D用于判别一张图片是否是真实的。通过不断提高生成网络 G G G的生成质量,最终“骗”过判别网络 D D D,在此过程中,判别网络 D D D也在不断提高自身的判别能力,通过如此的一个动态的“博弈”过程,最终,训练好的生成网络 G G G便可以用于生成“以假乱真”的图片。

然而在所有的过程中,无论是生成过程还是判别过程都是无任何指导的,Conditional GAN[1]提出在上述的两个过程中引入一个条件,以此指导上述的两个过程。

2. 算法原理

2.1. GAN原理回顾

在原始的GAN框架中,包括了两个部分,分别为生成网络(Generator) G G G和判别网络(Discriminator) D D D,其中:

  • 生成网络(Generator) G G G用于生成图片,其输入是一个随机的噪声 z \boldsymbol{z} z,通过这个噪声生成图片,记作 G ( z ) G\left ( \boldsymbol{z} \right ) G(z)
  • 判别网络(Discriminator) D D D用于判别一张图片是否是真实的,对应的,其输入是一整图片 x \boldsymbol{x} x,输出 D ( x ) D\left ( \boldsymbol{x} \right ) D(x)表示的是图片 x \boldsymbol{x} x为真实图片的概率

在GAN框架的训练过程中,希望生成网络 G G G生成的图片尽量真实,能够欺骗过判别网络 D D D;而对于判别网络 D D D,希望能够把 G G G生成的图片从真实图片中区分开。这样的一个过程就构成了一个动态的“博弈”。最终,GAN希望能够使得训练好的生成网络 G G G生成的图片能够以假乱真,即对于判别网络 D D D来说,无法判断 G G G生成的网络是不是真实的。此时,训练好的生成网络 G G G便可以用于生成“以假乱真”的图片。

GAN的价值函数:

m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )=\mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; D\left ( \boldsymbol{x} \right ) \right ]+\mathbb{E}_{\boldsymbol{z}\sim p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z} \right ) \right ) \right ) \right ] Gmin​Dmax​V(D,G)=Ex∼pdata​(x)​[logD(x)]+Ez∼pz​(z)​[log(1−D(G(z)))]

GAN的训练过程如下所示:

www.zeeklog.com - Conditional GAN

2.2. Conditional GAN

Conditional GAN的思想也比较简单,在GAN的基础上增加了条件输入,在生成网络和判别网络中分别加入一个条件输入 y \boldsymbol{y} y, y \boldsymbol{y} y可以为任何的额外信息,分别与原始的 x \boldsymbol{x} x和 z \boldsymbol{z} z这两个输入concat在一起,如下图所示:

www.zeeklog.com - Conditional GAN

Conditional GAN的价值函数:

m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ∣ y ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ∣ y ) ) ) ] \underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )=\mathbb{E}_{\boldsymbol{x}\sim p_{data}\left ( \boldsymbol{x} \right )}\left [ log\; D\left ( \boldsymbol{x}\mid \boldsymbol{y} \right ) \right ]+\mathbb{E}_{\boldsymbol{z}\sim p_{\boldsymbol{z}}\left ( \boldsymbol{z} \right )}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}\mid \boldsymbol{y} \right ) \right ) \right ) \right ] Gmin​Dmax​V(D,G)=Ex∼pdata​(x)​[logD(x∣y)]+Ez∼pz​(z)​[log(1−D(G(z∣y)))]

假设从真实数据中采样 m m m个样本 { x ( 1 ) , x ( 2 ) , ⋯ , x ( m ) } \left \{ \boldsymbol{x}^{\left ( 1 \right )},\boldsymbol{x}^{\left ( 2 \right )},\cdots ,\boldsymbol{x}^{\left ( m \right )} \right \} {x(1),x(2),⋯,x(m)},从噪音分布 p g ( z ) p_g\left ( \boldsymbol{z} \right ) pg​(z)中同样采样 m m m个样本,记为 { z ( 1 ) , z ( 2 ) , ⋯ , z ( m ) } \left \{ \boldsymbol{z}^{\left ( 1 \right )},\boldsymbol{z}^{\left ( 2 \right )},\cdots ,\boldsymbol{z}^{\left ( m \right )} \right \} {z(1),z(2),⋯,z(m)},针对每一个样本,都有一个对应的条件,记为 { y ( 1 ) , y ( 2 ) , ⋯ , y ( m ) } \left \{ \boldsymbol{y}^{\left ( 1 \right )},\boldsymbol{y}^{\left ( 2 \right )},\cdots ,\boldsymbol{y}^{\left ( m \right )} \right \} {y(1),y(2),⋯,y(m)},此时,上述价值函数可以近似表示为:

m i n G m a x D V ( D , G ) ≈ ∑ i = 1 m [ l o g D ( x ( i ) ∣ y ( i ) ) ] + ∑ i = 1 m [ l o g ( 1 − D ( G ( z ( i ) ∣ y ( i ) ) ) ) ] \underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )\approx \sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )}\mid \boldsymbol{y}^{\left ( i \right )} \right ) \right ]+\sum_{i=1}^{m}\left [ log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )}\mid \boldsymbol{y}^{\left ( i \right )} \right ) \right ) \right ) \right ] Gmin​Dmax​V(D,G)≈i=1∑m​[logD(x(i)∣y(i))]+i=1∑m​[log(1−D(G(z(i)∣y(i))))]

简化后为:

m i n G m a x D V ( D , G ) ≈ ∑ i = 1 m [ l o g D ( x ( i ) ∣ y ( i ) ) + l o g ( 1 − D ( G ( z ( i ) ∣ y ( i ) ) ) ) ] \underset{G}{min}\; \underset{D}{max}\; V\left ( D,G \right )\approx \sum_{i=1}^{m}\left [ log\; D\left ( \boldsymbol{x}^{\left ( i \right )}\mid \boldsymbol{y}^{\left ( i \right )} \right ) + log\; \left ( 1-D\left ( G\left ( \boldsymbol{z}^{\left ( i \right )}\mid \boldsymbol{y}^{\left ( i \right )} \right ) \right ) \right ) \right ] Gmin​Dmax​V(D,G)≈i=1∑m​[logD(x(i)∣y(i))+log(1−D(G(z(i)∣y(i))))]

训练过程中只需修改上述的梯度公式,其余与GAN的训练一致。

3. 总结

Conditional GAN的思路相对于传统的GAN来说比较直接,在生成网络和判别网络的输入中增加一些额外的信息,用于指导整个过程的训练。

参考文献

[1] Mirza M, Osindero S. Conditional generative adversarial nets[J]. arXiv preprint arXiv:1411.1784, 2014.

Read more

【亮数据 × Dify】零代码秒搭 AI 实时爬虫,数据伸手就来!

【亮数据 × Dify】零代码秒搭 AI 实时爬虫,数据伸手就来!

主要演示了如何用亮数据(Bright Data)+ Dify 零代码搭建一个 AI 实时爬虫工具,实现自动抓取网页数据并生成分析报告。核心流程如下: ✅ 总结: 1. 工具介绍 * Dify:开源的大语言模型应用开发平台,支持无代码搭建 AI 应用。 * 亮数据(Bright Data):提供网页抓取服务,支持 API 调用。 2. 操作步骤 步骤内容1. 登录 Dify 云需科学上网,支持 GitHub / 谷歌 / 邮箱登录。2. 安装插件在 Dify 插件市场通过 GitHub 链接安装“亮数据”插件。3. 创建应用新建空白应用 → 选择“工作流”模式 → 命名项目。4. 配置工作流构建

By
使用 VS Code 连接 MySQL 数据库

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

By