深度卷积对抗神经网络 基础 第三部分 (WGAN-GP)

news2024/9/20 20:32:37

深度卷积对抗神经网络 基础 第三部分 (WGAN-GP)

Wasserstein GAN with Gradient Penalty (WGAN-GP)

我们在训练对抗神经网络的时候总是出现各种各样的问题。比如说模式奔溃 (mode collapse)和 梯度消失(vanishing gradient)的问题。

比如说,模式奔溃,指的是生成器的学习效率远高于辨别器的时候,那么学习一段时间过后,辨别器便无法再继续提供有用的损失信息,以至于生成器无法得到参考而塌陷到一个局部最小点中去。而梯度消失指的是当损失趋于无限大或者无限小时,损失函数的值变化基本可以视为忽略,那么梯度就会消失,进而停止学习或者学习效率基本为零。

正如GANs模型中,我们经常使用BCE损失函数 (BCE loss problem)来作为模型的损失函数,但是其会存在一定的模式奔溃和梯度消失的问题。 为了解决这个问题,WGAN使用 EMD (Earth mover’s distance) 距离,通过类比定义两个曲线之间距离的方式来定义其损失的函数。

EMD 用于分析两张图片的距离,其实是计算两个分布数据之间的距离,也就是所谓的推土机距离。当其应用于比较生成图像和真图像的距离时,其不会直接想BCEloss那样直接使用判别器的判别结果,而是根据计算生成图像和真图像的分布距离来作为反馈,这样就可以直接避免上述的两个问题。一来模式不会立刻崩溃,而是生成一组图片才会有一个评分结果,并且比较的不是单一图像的差距,而是生成图像和真图像的分布差距。其次,这个距离可以通过对critic函数限制来达到避免梯度消失的问题。

  • Function of amount and distance
  • Doesn’t have a flat regions when the distributions are very different
  • approximating EMD solves mode collapse and vanishing gradient from BCE LOSS

Wasserstein loss: with c(x) critic

Screenshot 2023-01-12 183853

这个函数需要满足 1-Lipschitz 连续条件。This function needs to be 1-Lipschitz Continuous to validate W-loss

其主要是满足训练时的稳定性条件,其斜率的绝对值被正负一所限制。 which will maintain some stability during training

Screenshot 2023-01-12 184223

Screenshot 2023-01-12 183536

相对于BCE损失函数,W损失函数如何可以变得更加稳定?enforce this condition (feature space)

这个模型通过加入一个修正项的方式来矫正其满足1-lipschitz条件。

那么如何权衡? How much to weigh this regularization term against the main loss function 如何权衡main loss和penalty使得其满足1-L 连续条件

方法一: 梯度惩罚 Gradient penalty

这个方法很简单,当梯度大于一时,我们通过修正项进行修正,使得学习稳定一些。而如何检测梯度的值也非常重要,如果每次计算损失都检测,那么一定是不值当的。因此我们对特征空间中的点进行插值的方式类进行计算。 x ^ \hat{x} x^便是插值点,我们只要计算插值点的梯度值来代替这一区域的梯度。

  • 通过在W-loss中加入一个gradient penalty,当其值大于一时,其gradient过于大,那么我们就控制其小于1.
  • 但是又无法对所有feature space中的点都进行插值,因此我们需要将真假照片进行插值处理来计算gradient。
  • gradient penalty 用来计算真假的gradient的理想值,我们想要这个值在与正负一的距离**<=1**。

Screenshot 2023-01-12 190733

插值interpolation x ^ \hat{x} x^的表示式为:
x ^ = ϵ x + ( 1 − ϵ ) g ( z ) \hat{x} = \epsilon x + (1- \epsilon)g(z) x^=ϵx+(1ϵ)g(z)

Screenshot 2023-01-12 190115

C 表示critisizer, G代表 generator,上述表达式中 第一项 E ( c ( x ) ) E(c(x)) E(c(x)) 指的是C识别真图片的期望,因此,越高越好。第二项 E ( c ( g ( x ) ) ) E(c(g(x))) Ec(g(x))指的是C识别假图片的期望,因此越低越高,这样 第一项减去第二项便是越高越好,因此总体来说,对于C来说,整体项越大越好,C的有效率越高。而在当C取到最有效的鉴别器后,这时,寻找最高效的生成器便是最重要的。那么反过来,第一项无法改变,而第二项则是越大越好,越大意味着C把假图片识别成了真图片,因此整体便是越小越好。这也是为什么会有 min max之说。

  • fake 分数越高, critic loss越高,因为fake图片的分数代表着其将假图片识别成1的分数高
  • real 分数越高,critic loss越低,因为其识别错误会是0,而识别正确是1,而critic要识别越正确越好,所以越高越好
  • gradient penalty越高,critic loss越低,因为其越高,其在中间点的gradient距离1越远,也就意味着其loss越大,因为其gradient和理想1有差别。

方法二: Weight clipping

通过给gradient加入一个上限和下限来使其满足1-L连续条件,问题是这种方法降低了学习能力和速率,不建议采用

Screenshot 2023-01-12 190041

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

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

相关文章

在linux下安装docker

文章目录 目录 文章目录 前言 一、docker 二、使用步骤 1.环境准备 2.安装 三、配置阿里云镜像加速 四、卸载 总结 前言 一、docker 镜像&#xff08;image&#xff09;&#xff1a; docker镜像就好比是一个模板&#xff0c;可以通过这个模板来创建容器服务&#xff0c;tomc…

【攻坚克难】详解k8s持久化存储数据pv、pvc存储问题

问题 如图:pod中的容器,创建一个包含文件的目录,重启pod或系统重启后,此目录及其文件都会丢失,如何保证其不会丢失? 图 1 创建包含文件的目录 方法 分析:用pv、pvc为k8s持久化存储数据是最好的选择,可解决上述问题。流程:pv → pvc → pod把创建的目录挂载到pvc上步…

路由 OSPF 优化(FA地址、路由汇总、路由过滤、区域认证、接口认证)

1.2.0 路由 OSPF 优化&#xff08;FA地址、路由汇总、路由过滤、区域认证、接口认证&#xff09; 一、FA地址 该文章介绍的FA地址说辞简单易懂&#xff1a;路由协议系列之六&#xff1a;OSPF FA地址 产生条件 ASBR在其连接外部网络的接口&#xff08;外部路由的出接口&#xf…

CS61A 2022 fall HW 01: Functions, Control

CS61A 2022 fall HW 01: Functions, Control 文章目录CS61A 2022 fall HW 01: Functions, ControlQ1: A Plus Abs BQ2: Two of ThreeQ3: Largest FactorQ4: HailstoneHW01对应的是Textbook的1.1和1.2 Q1: A Plus Abs B 题目&#xff1a; Fill in the blanks in the following f…

Java | 解决并发修改异常问题【CurrentModificationException】

今日碰到Java中的一个异常&#xff0c;名为CurrentModificationException&#xff0c;从属于RunTimeException运行时异常&#xff0c;故作此记录 异常解析 首先来说明一下什么是【并发修改异常】❓ 因为迭代器依赖集合而存在&#xff0c;因为当你在操作集合中元素的时候&#…

springboot中restful风格请求的使用

springboot中restful风格请求的使用restful风格springboot中的使用1.创建html表单页面2.在yml配置文件中开启rest表单支持3.编写controller层及对应映射处理4.启动服务&#xff0c;逐个访问restful风格 Rest风格支持&#xff08;使用HTTP请求方式动词来表示对资源的操作&#…

【手写 Vue2.x 源码】第四十二篇 - 组件部分 - 组件挂载流程简述

一&#xff0c;前言 上篇&#xff0c;组件部分-生成组件的真实节点&#xff1b; 本篇&#xff0c;组件部分-组件挂载流程分析&#xff1b; 二&#xff0c;组件挂载流程分析 1&#xff0c;示例 全局组件&#xff1a;my-button&#xff0c;name&#xff1a;‘全局组件’&…

什么是软件架构中的ASRs(架构需求文档)?

作者&#xff1a;非妃是公主 专栏&#xff1a;《软件工程》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01&#xff1a;软件工程概述 软件工程复习02&#xf…

十大经典排序算法(动态演示+代码)-快速排序与希尔排序

快速排序 1.什么是快速排序 我们知道排序有很多种&#xff0c;常见的如希尔排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;堆排序等等&#xff0c;而快速排序也是排序家族中的一员。因为其在大多数情况下有着优秀的综合性能&#xff0c;快速排序的快速也算是实至…

结构型模式-享元模式

1.概述 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销&#xff0c;从而提高系统资源的利用率。 2.结构 享元&#xff08;Flyweight &#xff09;模式中存在以下两种状态&#xff1a; 内…

信息论复习—信源编码的基本方法

目录 信源编码的目的&#xff1a;提高传输效率 离散信源&#xff1a; 离散信源的分类&#xff1a; 离散无记忆信源 (DMS: Discrete Memoryless Source&#xff09;&#xff1a; 离散无记忆信源的特点&#xff1a; 离散无记忆信源编码与译码&#xff1a; 等长编码的编码速…

Day869.索引(下) -MySQL实战

索引&#xff08;下&#xff09; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于索引&#xff08;下&#xff09;的内容。 先来看一下这个问题&#xff1a; 下面这个表 T 中&#xff0c;如果执行 select * from T where k between 3 and 5&#xff0c;需要执行几次…

【Java|golang】1828. 统计一个圆中点的数目

给你一个数组 points &#xff0c;其中 points[i] [xi, yi] &#xff0c;表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries &#xff0c;其中 queries[j] [xj, yj, rj] &#xff0c;表示一个圆心在 (xj, yj) 且半径为 rj 的圆。 对…

git 操作整理

git操作整理 git 配置 git config --global user.name “yuluo” git config --global user.email “1481556636qq.com” git config --global color.ui auto 启用命令行着色输出 git 操作 暂存区 git init . 初始化git仓库 git status 看仓库状态 git add index.html…

【C++】C++11简介 | 列表初始化 | 声明 | 范围for

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;C11简介&…

安装配置Ecplise插件PyDev 8.3.0

参考&#xff1a;安装Eclipse&#xff1a;https://baijiahao.baidu.com/s?id1751992697661111503&wfrspider&forpcEclipse安装PyDev&#xff1a;https://baijiahao.baidu.com/s?id1746725485069671146&wfrspider&forpc方法一&#xff1a;失败打开eclipse&…

分享138个ASP源码,总有一款适合您

ASP源码 分享138个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 138个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1idRmCxILGVt5pBkac-GiiA?pwdjmmu 提取码&#x…

AX7A200教程(4): DDR3的读写fifo仿真

在上篇博客中&#xff0c;我们只是进行突发读写&#xff0c;没有使用读写fifo对ddr3进行读写&#xff0c;因ddr3读写接口都是256位宽&#xff0c;所以ddr3的读写fifo输入和输出都是32位&#xff0c;和ddr3对接的接口都是256位&#xff0c;如下面示意图所示。下面的截图为ddr3的…

《c++ primer》第五章 语句

前言 建议看书的时候就看一下异常&#xff0c;其它的直接跳过 一、简单语句 ​ 一条表达式语句以;结尾&#xff0c;它的作用是执行表达式并丢弃掉求值结果。一行如果只有一个;也是一条语句&#xff0c;称为空语句。复合语句时用{}括起来的语句或者声明&#xff0c; 也称为块&a…

Qt之QLCDNumber

文章目录一、QLCDNumber简介二、QLCDNumber属性示例获取系统时间示例代码提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、QLCDNumber简介 QLCDNumber控件用于显示一个LCD数字。 它可以显示几乎任意大小的数字。可以显示十进制、十六进制、八进制或…