[PyTorch][chapter 55][WGAN]

news2024/11/25 11:41:19

前言:

         前面讲到GAN 在训练生成器的时候,如果当前的Pr 和 Pg 的分布不重叠场景下:

JS散度为一个固定值,梯度为0,导致无法更新生成器G

         WGAN的全称是WassersteinGAN,它提出了用Wasserstein距离(也称EM距离)去取代JS距离,这样能更好的衡量两个分布之间的divergence。


目录:

  1.      GAN 数据分布问题
  2.      GAN JS 散度问题
  3.      EM 距离
  4.      WGAN
  5.      WGAN-GP
  6.      伪代码分析

一  GAN 数据分布问题

       在大部分场景 :P_G,P_{data} 分布不重叠

        原因1 :数据空间的维度

                   如下图   p_G,p_{data}

                   在低维空间是个有重叠的流形 ,

                   在高维空间展开就是不重叠的 线或者平面

                   图片可以认为是高维的空间

             

          原因2: 采样

                 我们生成器p_G 和真实的数据 p_{data} 虽然有重叠

但是实际采样的时候,生成的图片和真实图片分布

不一定重叠,如下

    

               


二   GAN JS 散度问题

      2.1  JS 散度问题

               前面讲过, p_{data} 和 生成器生成的分布 P_{G}

      不重叠的时候,JS 散度为常数 log2, 此刻梯度为0.

       导致生成器无法更新。

              因为生成器G很弱,制作出来的数据很假,鉴别器D 很容易

        鉴别出,导致鉴别器D也无法更新。

      

           2.2    Least Square Gan

               针对JS 散度为常数问题,梯度为0,早期提出了用linear 替代

sigmoid 来分类,解决该问题。


三 EM 距离

     WGAN 里面采用了EM 距离。

     3.1 简介

         Wasserstein 距离又叫Earth-Mover(EM)距离,又叫推土机距离。

        如下图1维空间里面两个分布,P,Q,如果把P 移动到Q,则需要d步。

             

 

      把P 分布变成Q 分布,有不同的铲土方案.

      穷举所有的可能方案,其中铲土距离最小的,称为Wasserstein 距离。

      

     

3.2   EM 距离矩阵表示

        如下图,把分布P 移动到分布Q.

有不同的移动的方案,每一种方案称为r.

矩阵里面每个元素的值 r(x_p,x_q) 代表移动的土量。

用不同颜色表示,颜色越深值越大。

  P 上每个位置的值: 等于矩阵当前行的值,

  Q 上每个位置的值 : 等于矩阵当前列的值

        

3.2 EM 距离的优势

         如下图:P_{G_O},P_{G_{50}}

                   JS 散度: 都是一样 log2,无法分辨出G_0,G_{50} 哪个生成器更好

                   EM 距离: d_{50} 距离更小,通过训练,可以把G_0 训练成G_{50}

  

     

            

       KL散度和JS散度是突变的,要么最大要么最小,Wasserstein距离却是平滑的,如果我们要用梯度下降法优化这个参数,前两者根本提供不了梯度,Wasserstein距离却可以。

       在高维空间中如果两个分布不重叠或者重叠部分可忽略,则KL和JS既反映不了远近,也提供不了梯度,但是Wasserstein却可以提供有意义的梯度。   


四     WGAN 

    4.1  优化目标:

   GAN 里面 wassertein 距离度量方法如下:

  针对鉴别器我们期望: 

          E_{x \sim p_{data}}[D(x)] 越大越好

          E_x{x \sim p_G}[D(x)] 越小越好

    4.2 问题:

        对D(x)没有约束的时候,,会导致训练的时候,无法收敛。

         E_{x\sim p_{data}} [D(x)] \mapsto\infty

            E_{x \sim p_G} [D(x)] \mapsto -\infty

 4.3 解决方案

     加入了Lipschitz 约束,要D(x) 变化不是很大,在一个约束范围内,该约束条件称为

Lipschitz。

     Lipschitz 定义

      |f(x_1)-f(x_2)|\leq K|x_1-x_2|

     WGAN 里面,f 相当于 D, x_1,x_2相当于p_{data},p_g sample出来的样本

     当k =1 ,称为1-Lipschitz。如下图的红线符合1-Lipschitz,

绿线不符合 1-Lipschitz 条件

4.4 Weight Clip

           早期解决方案:

             当w >c, w=c

             当 w<-c, w=-c

       约束参数的变化,但是并不能满足1-Lipschitz,只是发现实际工程效果比较好

     |D(x_1)-D(x_2)|<|x_1-x_2|


五   WGAN-GP

    前面讲过1-Lipschitz

    |D(x_1)-D(x_2)|<|x_1-x_2|

    等价于在每个位置

   

     5.1 优化目标

           增加了Penalty 项

    问题

    \int_x  没办法计算,所有可能的x 进行积分

    5.2  解决方案

      假设 x 是从P_{penalty} 里面采样出来的

     

   5.3 penalty 采样

        P_{data},P_{G} 两点相连接,在连接线上随机采样一个点,称为penalty中的x

       

  在每个位置强制的Lipschitz条件是不可能的,通过Penalty 机制,在蓝色的区域进行

满足Lipschitz,实验上效果也很好

5.4 penalty 方案2

   如下图,也可以用绿色的代表penalty,即使Norm 小于1 也进行Penalty,

有点类似SVM 思想,强制要求在-1,1 超平面上。

  

5.5 Spectrum Norm

          在每个地方都满足gradient <1


六  GAN伪代码分析

     6.1 训练鉴别器D,训练K次

    

      6.2  训练生成器G

            


七  WGAN 伪代码

    4处不一样

    7.1 训练D

  

     注意要使用Weight Clipping or Gradient Penalty

   7.2 训练G

      

注意训练D的时候要使用Weight Clipping or Gradient Penalty

参考:

课时130 WGAN-GP实战_哔哩哔哩_bilibili

什么是利普希茨条件? - 知乎

https://www.cnblogs.com/breadcake/p/16861792.html

令人拍案叫绝的Wasserstein GAN - 知乎

WGAN 李-哔哩哔哩_Bilibili

GAN Lecture 6 (2018): WGAN, EBGAN_哔哩哔哩_bilibili

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

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

相关文章

第2章 算法

2.1 开场白 2.2 数据结构与算法之间的关系 在“数据结构”课程中&#xff0c;就算谈到算法&#xff0c;也是为了帮助理解好数据结构&#xff0c;并不会详细谈及算法的方方面面。 2.3 两种算法的比较 2.4 算法的定义 算法是解决特定问题求解步骤的描述&#xff0c;在计算机…

【AI视野·今日Robot 机器人论文速览 第四十一期】Tue, 26 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 26 Sep 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Extreme Parkour with Legged Robots Authors Xuxin Cheng, Kexin Shi, Ananye Agarwal, Deepak Pathak人类可以通过以高度动态…

华为智能企业远程办公安全解决方案(1)

华为智能企业远程办公安全解决方案&#xff08;1&#xff09; 课程地址方案背景需求分析企业远程办公业务概述企业远程办公安全风险分析企业远程办公环境搭建需求分析 方案设计组网架构设备选型方案亮点 课程地址 本方案相关课程资源已在华为O3社区发布&#xff0c;可按照以下…

shell脚本学习笔记

shell脚本重点记录 判断文件或者文件夹是否存在 if [ ! -d "log" ];thenchmod 707 $file1一个文件的权限包括读取、写入、执行&#xff0c;权限范围包含所有者、所属组、其他人&#xff0c;可以通过数字或者字母描述一个文件的权限&#xff1a;读取权限对应r或4&a…

高速,低延,任意频丨庚顿新一代实时数据库鼎力支撑电力装备服务数字化

产品同质化日趋严重以及市场需求不断迭代等内外形势下&#xff0c;电力装备制造业自身赢利需求不断增涨&#xff0c;电力等下游产业数字化发展形成倒逼之态&#xff0c;作为国家未来发展的高端装备创新工程主战场&#xff0c;电力装备智能化以及服务型转型升级已经成为装备制造…

在nodejs中如何防止ssrf攻击

在nodejs中如何防止ssrf攻击 什么是ssrf攻击 ssrf&#xff08;server-side request forgery&#xff09;是服务器端请求伪造&#xff0c;指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击。(利用一个可发起网络请求的服务当作跳板来攻击其他服务)…

mac docker部署hadoop集群

1. 安装docker 确保电脑已经安装docker docker安装过程可自行查找资料&#xff0c;mac下docker可以使用brew命令安装 安装之后&#xff0c;查看docker版本&#xff0c;确认安装成功 docker -v2. 下载jdk 最好下载jdk-8&#xff0c;jdk的版本过高可能hadoop2.x不支持jdk-8的下…

掌握 JavaScript 数组方法:了解如何操作和优化数组

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Android Logcat 命令行工具

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、日常用法3.1 面板介绍3.2 日志过滤…

零代码编程:用ChatGPT批量将多个文件夹中的视频转为音频

有多个文件夹中的 视频&#xff0c;都要批量转换成音频格式。 转换完成后要删除视频。虽然现在已经有很多格式转换软件可以实现这个功能&#xff0c;但是需要一个个文件夹的操作&#xff0c;还要手动去删除视频。用ChatGPT来写一个批量自动操作程序吧&#xff1a; 输入提示词如…

获取el-select选中的下标

accountZbList:[ ]:下拉列表已通过接口获取数据 <el-row><el-col :span"12"><el-form-item label"账簙" prop"accountTook" class"itemzb"><el-select v-model"tableForm.accountTook" placeholder&…

软件测试基础学习

注意&#xff1a; 各位同学们&#xff0c;今年本人求职目前遇到的情况大体是这样了&#xff0c;开发太卷&#xff0c;学历高的话优势非常的大&#xff0c;公司会根据实际情况考虑是否值得培养&#xff08;哪怕技术差一点&#xff09;&#xff1b;学历稍微低一些但是技术熟练的…

改进的最大内切圆算法求裂缝轮廓宽度

前段时间我将网上最大内切圆算法进行了代码的整理&#xff0c;原先博主上传的代码稍微有点乱&#xff0c;可能也是它自己使用&#xff0c;大家可以看这篇整理好的&#xff1a;最大内切圆算法计算裂缝宽度。 最大内切圆算法详解 一个圆与给定的多边形或曲线的每一条边或曲线都…

13.(开发工具篇github)如何在GitHub上上传本地项目

一:创建GitHub账户并安装Git 二:创建一个新的仓库(repository) 三、拉取代码 git clone https://github.com/ainier-max/myboot.git git clone git@github.com:ainier-max/myboot.git四、拷贝代码到拉取后的工程 五、上传代码 (1)添加所有文件到暂存

PyTorch 模型性能分析和优化 — 第 1 部分

一、说明 这篇文章的重点将是GPU上的PyTorch培训。更具体地说&#xff0c;我们将专注于 PyTorch 的内置性能分析器 PyTorch Profiler&#xff0c;以及查看其结果的方法之一&#xff0c;即 PyTorch Profiler TensorBoard 插件。 二、深度框架 训练深度学习模型&#xff0c;尤其是…

江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮

在江西这片充满活力的土地上&#xff0c;数字经济如潮水般涌动&#xff0c;会展文化与科技的完美结合&#xff0c;正如新时代的璀璨繁星照亮夜空&#xff0c;更预示着一场AIGC创新的壮丽篇章即将展开。作为拓世科技集团的老朋友&#xff0c;江西广电多位领导多次莅临拓世科技集…

【MATLAB源码-第40期】基于matlab的D*(Dstar)算法栅格路径规划仿真。

1、算法描述 D*算法路径规划 D*算法&#xff08;Dynamic A*&#xff09;是A*算法的一种变种&#xff0c;主要用于在地图中的障碍物信息发生变化时重新计算路径&#xff0c;而不需要从头开始。该算法适用于那些只有部分信息已知的环境中。 工作原理&#xff1a; 1. D*算法首先…

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序 RK3288和 RK3399的 LED驱动程序7.3 RK3288和 RK3399的 LED驱动程序7.3.1 原理图7.3.1.1 fireflye RK3288的 LED原理图7.3.1.2 firefly RK3399的 LED原理图 7.3.2 所涉及的寄存器操作7.3.2.1 RK3288的 GPIO8_A1引脚7.…

探索ClickHouse——使用MaterializedView存储kafka传递的数据

在《探索ClickHouse——连接Kafka和Clickhouse》中&#xff0c;我们讲解了如何使用kafka engin连接kafka&#xff0c;并读取topic中的数据。但是遇到了一个问题&#xff0c;就是数据只能读取一次&#xff0c;即使后面还有新数据发送到该topic&#xff0c;该表也读不出来。 为了…

Ae 效果:CC Smear

扭曲/CC Smear Distort/CC Smear CC Smear &#xff08;CC 漩涡条纹&#xff09;可以将两点之间的源图像内容进行拉伸扭曲变形&#xff0c;形成一种类似油墨被涂抹或者柔体被拉扯之后的漩涡条纹效果。 ◆ ◆ ◆ 效果属性说明 From 从 漩涡条纹效果的起点。 默认为合成的中心。…