首页 > 其他分享 >生成式对抗网络

生成式对抗网络

时间:2023-07-20 22:33:38浏览次数:114  
标签:Generator 生成式 网络 Pdata GAN Pg Discriminator 对抗 图片

Network As Generator(网络作为生成器)

  • 把Network当成生成使用;输入另加一个参数z,这个z为某个Distribution(分布)中抽取得来,不固定;
  • z一般要简单,由于z不同,所以x的输出就由单一的输出变成一个复杂的Distribution(分布)

例如:x、z都为向量:输入时,直接把z接到x后边作为输入;x、z长度相同,把x+z作为输入

用途:当我们的任务需要有一定的创造力时,同样的输入需要有不同的输出。(例如:聊天机器人、画画)

 Generative Adversarial Network(GAN:生成对抗网络)

例如:生成一张二次元的脸

在GAN中除了Generator(产生者)以外,还需要训练Discriminator(辨别者)用于辨别生成的结果的正确性

理解:把Generator比作制作假钞的人,Discriminator比作警察;所以假钞和警察的对抗中,假钞变的越来越像真的(Discriminator也叫激励函数)

运作方式

  • Generator和Discriminator就是两个Network,在确定初始化参数后
  1. 定住Generator,只训练Discriminator(可以当成分类或者回归的问题解决)
  2. 定住Discriminator,只训练Generator(让Generator想方法骗过Discriminator)

 训练技巧:WGAN

JS Divergence(JS分歧)的问题:

  • 如果两个分部不重叠,JS发散总是Log2
  • Pg和Pdata数据的重叠部分很少,所以当不重叠时,JS Divergence就不能训练参数(直觉:如果两个分布不重叠,二进制分类器达到100%的正确率)

换一个衡量两个分布的相似程度方式:

  • Wasserstein Distance:两个分布P和Q,把P分布的图像转化成Q分布图像要移动的点的平均距离作为P和Q的相似程度:

  • 有很多可能的“移动计划”,使用“移动计划”与最小平均距离来定义Wasserstein距离

计算Pg和Pdata之间的Wasserstein距离:

 Evaluation Of Generation(生成评价)

  • 衡量一个Generate好坏的方法:跑一个影像的分类系统,把GAN产生的图片传入其中,看产生的结果,输出为一个几率分布P(c|y),如果这个几率分布越集中越好

Mode Collapse(模式折叠):多次产生同一张图片,蓝色为真图片,黄色为生成的图片,当Generator发现Discriminator的某个盲点,就有可能多次根据盲点骗过Discriminator,所以就会多次产生同样的图片

Mode Dropping(模式下降):产生出来的图片只与全部数据的部分相似(产出照片时没有利用全部的数据)

 Conditional GAN(有条件的GAN)

  • 以上的Generator的输入都是一个随机的分布,现在要操控Generator的输出,在原基础上再传入一个值x,让Generator根据随机分布和x产生y

例如:生成红眼的二次元脸;输入图纸产生房子;输入白天图片产生晚上图片

 Learning from Unpaired Data(从未配对数据中学习)

  • 以上训练Network时,输入x输出y,需要成对的x、y才能训练,但现在有一堆x和一堆y,并且不成对,这种没有标注的资料如何训练

如果有一些有标注的资料,则可以训练一个神经网络用于标注这些没有别标注的资料

一点标注都没有的资料:

例如:影像风格转换(真人图片转换为动漫图片)

方法:训练一个输入为X域资料,输出为Y域资料的Network

 问题:有可能Gx->y时,直接忽视x输出一张动漫脸,使得生成的动漫脸和真人脸没有关联:

 Cycle GAN:训练两个Generator,第一个用于把X域的图转换为Y域的图,第二个用于把Y域的图还原为X域的图,让输入和输出越接近越好,Discriminator(辨别者)用于辨别第一个Generator生成的图片是否为Y域的图片

 Theory Behind GAN(GAN背后的理论)

理论:如果要生成一张人脸图片,每张图片可以当成高维度空间的一个点,在整个高维空间中只有少部分的点是人脸图片,并且这些点在高维空间中有某个固定的分布,GAN做的事就是找出这个分布。

  • 机器训练出的分布设为Pg,真实的最佳分布为Pdata,所以要找出那个与Pdata分歧(divergence)最小的分布Pg

  • 训练Discriminator(辨别者)给Pg和Pdata中图片打分,通过分数求出Div(Pg,Pdata

训练Discriminator,达到分辨“假钞”的目的,让其对Pg中图片分数越低越好,对Pdata中图片分数越高越好。所以设一个函数,只与Generator和Discriminator有关,在训练Discriminator时会让Generator停止训练

图片得分为D(x):

  • Pg中图片分数越低越好,所以求 (1-Pg) 分数套Log函数的期望越大越好
  • Pdata中图片分数越高越好,所以求 Pdata 分数套Log函数的期望越大越好

综上,求V(G,D)最大时就训练出了Discriminator:

所以越大越好

由于Pdata(x)和Pg(x)为常数,所以求最大值:

 计算方法:把后边max部分用L(G)表示:求G*:

 Max V(G,D)和Min L(G)都是分段函数,求微分时也要分段求

 

Flow Based Generation Model(基于流的生成模型)

  • change of variable theorem(变元定理):分布π转换成p之后,π上点z相应的移动到x,z移动∆z后,x相应的移动∆x,其中保证π(z) ∆z=p(x) ∆x;当∆x趋近于0时,变得到了π(z)与p(x)之间的关系

 二元也相同:

利用换元定理,代入GAN得:

显然,当输入z和输出x的维度较高时,  的计算量较大,并且需要将z换成x,所以也必须知道,所以需要对G做一定的限制,让G变简单,但可以叠多层

 

 耦合层:

方法一:G可设置为:

计算

 计算,计算右下角:

 方法二:影像处理G可设置为:

计算:结果为

 

标签:Generator,生成式,网络,Pdata,GAN,Pg,Discriminator,对抗,图片
From: https://www.cnblogs.com/TianLiang-2000/p/17569876.html

相关文章

  • [Linux][报错解决] 使用固定ip导致无法访问网络
    起因之前试了试代码......
  • 二层改三层网络架构
    从二层到三层网络架构的演进随着网络规模的不断扩大和业务的增加,二层网络架构在一些场景下已经无法满足需求,于是逐渐出现了三层网络架构的概念。本文将重点讨论二层改三层网络架构的原因、特点以及示例代码。二层网络架构的问题二层网络架构主要基于MAC地址进行转发,通过交换机实......
  • 卷积神经网络不同优化器
    实现卷积神经网络不同优化器简介卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一种广泛应用于图像处理和计算机视觉任务中的深度学习模型。在训练过程中,我们通常会使用优化器(Optimizer)来自动调整网络的权重和偏置,以最小化损失函数。本文将介绍如何使用不同的优化器来训练卷积......
  • Unity 网络编程-正确收发数据流
    1.TCP数据流我们知道在使用Socket网络程序时,操作系统会将数据存到发送接收缓存中。程序不能直接操作它们,只能通过socket.Receive,socket.Send等方法来间接操作。在使用以上方法时,如果接收缓存为空,那Receive方法会阻塞。如果发送缓存满了则Send方法会阻塞。粘包半......
  • 网络流
    网络网络和网络流是不一样的。(废话,毕竟他俩差一个字)网络是指一个有向图\(G=(V,E)\),每条边\((u,v)\inE\)都有一个权值\(c(u,v)\),我们把它叫做这条边的容量。显然,当\((u,v)\notinE\)时,\(c(u,v)=0\)。其中有\(2\)个特殊的点:源点\(s\)和汇点\(t\),\(s,t......
  • 【网络流,dp】Gym102220A Apple Business
    ProblemLink有一棵\(n\)个点的完全二叉树(点\(i\)的父亲是\(\lfloori/2\rfloor\)),第\(i\)个点有\(a_i\)个苹果。现在有\(m\)个订单,每个订单只接受\(u_i\)到\(v_i\)路径上的苹果,保证\(u_i\)是\(v_i\)的父亲,并且最多只接受\(c_i\)个苹果,单价为\(w_i\)。你可......
  • OpenStack 网络 不通 根据
    OpenStack网络不通根据介绍OpenStack是一个开源的云计算平台,它提供了一套完整的解决方案来构建和管理私有云和公有云环境。在OpenStack中,网络是一个重要的组件,它允许虚拟机之间进行通信,并提供了对外部网络的连接。然而,有时候我们可能会遇到网络不通的问题,这篇文章将带你了解一些......
  • MATLAB train 神经网络 函数
    MATLABtrain神经网络函数神经网络是一种用于模拟人脑神经系统的数学模型,它由大量的神经元和连接它们的权重组成。MATLAB是一个功能强大的数学计算软件,提供了丰富的工具箱和函数,用于神经网络的设计和训练。其中train函数是MATLAB中用于训练神经网络的重要函数之一。train函数的......
  • U-Net神经网络总体结构
    实现U-Net神经网络总体结构1.简介U-Net是一种用于图像分割的神经网络结构,在医学领域的图像分析中得到广泛应用。它的结构独特,可以实现高精度的图像分割任务。本文将介绍U-Net的总体结构以及每一步的代码实现。2.U-Net总体结构U-Net的总体结构可以分为两个部分:编码器(En......
  • 小分支职场网络覆盖案例总结
    需求描述1.AP部分: AP数量较少,考虑到成本,AP使用FAT模式。2.交换机部分:下联接入有线网部分和AP部分。3.防火墙部分:网关、DHCP、NAT具体配置1.AP部分====修改AP工作模式====****查看AP工作模式****[CN-SZBW-1F-OFFICE-AP11]displaywlandeviceroleCurrentrunningmo......