NLP(3)--GAN

目录

一、概述

二、算法过程

三、WGAN

1、GAN的不足

2、JS散度、KL散度、Wasserstein距离

3、WGAN设计

四、Mode Collapse and Mode Dropping

1、Mode Collapse

2、Mode Dropping 

3、FID

四、Conditional GAN


一、概述

        GAN(Generative Adversial Network)生成式对抗网络,由生成器(Generator)和对抗器(Discriminator)组成,通过让生成器生成对应类别分布的网络,判别器来判别是否为真或假的概率值,不断迭代过程,使生成器能生成更为逼真的样本数据。

        生成器的任务就是通过从随机噪音中生成与真实数据尽可能相似的网络,来欺骗判别器。

        判别器的任务是接收生成样本和真实样本的判断生成样本和真实样本之间的区别,并通过一系列神经网络输出一个概率值,表示该样本为真的概率。

        GAN已经在若干领域取得了成果,比如语音合成,图像生成等方面,但仍存在一些挑战,比如不稳定性和模式坍塌等问题。

二、算法过程

        (1)首先初始化生成器和判别器参数,并通过随机噪音生成一批假样本。

        (2)将假样本放入生成器,通过生成器生成图片。

        (3)生成图片传给判别器,判别器输出与真实值相比为真的概率,将相关数值传输给生成器。

        (4)生成器通过修改超参数,生成新的图片传给判别器。

        (5)不断迭代以上过程,知道达到某一个阈值,或者迭代次数上限。

三、WGAN

1、GAN的不足

        (1)模式崩溃问题,在生成器中可能生成特定类型的样本,忽略了其他不同类型的训练样本,没有达到多样性,从而出现模式崩溃的问题。

        (2)没有指标可以告知收敛的程度的问题,我们只能人为的通过监控训练的图像,来知道收敛的程度,这大大降低的训练的效果,浪费了训练的时间。(例如下面这个图,在迭代到两者overlap之前,测量js散度都是一成不变的log2。)

2、JS散度、KL散度、Wasserstein距离

(1)散度:表征空间各点矢量场发散的强弱程度,表示场的有源性。

div \ F=\triangledown \cdot F=\frac{\partial F_x}{\partial x} +\frac{\partial F_y}{\partial y} +\frac{\partial F_z}{\partial z}

(2)KL散度:相对熵、信息增益,表征两个概率分布P和Q差别的非对称性度量,对P和Q的距离的收敛没有判别性,在没有完全重叠时,KL散度都将没有价值。

        D_{KL}(P//Q)=-\sum_{x \in X}P(x)log \frac{1}{P(x)}+\sum_{x \in X}P(x)log \frac{1}{Q(x)}

        KL散度是非对称的,即KL(A,B)≠KL(B,A),由于对数函数是凸函数,KL散度为非负数。 

(3)JS散度:度量两个概率的分布相似度,解决KL散度的非对称问题,JS散度是对称的。但仍然没有解决KL散度中的收敛没有判别性的问题。 

        JSD(P//Q)=\frac{1}{2}KL(P//M)+ \frac{1}{2}KL(Q//M)

        其中上式,M=\frac{1}{2}(P+Q) 。

(4)Wasserstein距离

        Wasserstein距离也是度量两个概率分布之间的距离,改进了两个分布之间没有重叠部分或重叠部分较少,难以反映两个分布远近的问题,而此时KL散度没有意义,JS散度反映的是常量。

        W(P,Q)=inf_{\gamma\sim \Pi(P,Q)} E_{(x,y) \sim \gamma} [||x-y||]

        \Pi(P,Q)反映P和Q的所有联合分布,对于每一个可能的联合分布γ,可以从中取得一个(x,y),并计算这对样本距离||x-y||,在这种情况下计算距离的期望值E_{(x,y) \sim \gamma} [||x-y||],并在所有可能的联合分布下对期望值取下界。

3、WGAN设计

        (1)将目标函数原来的JS散度替换为Wasserstein距离

        (2)去掉了判别器最后输出层的sigmoid激活函数。由于样本之间一般是不重叠的,使用sigmoid函数会更容易训练出一个判别器,而导致生成器不在移动,而使用一般的线性模型会是生成器和判别器一直以很小的方向移动,但总归是移动的。

        (3)将优化器Adam换成RMSProp,实验得出的经验结论罢了

        (4) 权重修剪方面,通过每次更新判别器的参数,将权重限制在预先设定好的范围内,避免判别器权重过大或过小,可以使Wasserstein距离更加稳定可靠。

四、Mode Collapse and Mode Dropping

1、Mode Collapse

        模式崩溃:生成图像出现多个相同图片,缺乏多样性,就是出现了模式崩溃。

2、Mode Dropping 

        模式丢失,生成模式在训练中无法有效生成所有真实数据分布中的模式或样本,使得生成的图片不能捕捉真实数据的分布特征,类似下面图片中在迭代之后,人脸没有变化只有肤色发生了变化。

3、FID

        FID (Frechet inception distance),能够计算生成图像和真实图像的特征向量之间的度量,分数越低,生成图像和真实图像越相似。

四、Conditional GAN

        Conditional GAN就是条件GAN,添加一定的文字信息(或者是音讯信息)与输入的图像一同进入生成器,一般来说文字信息是要与相关信息的图片匹配,这样可以保证生成器能够利用到文字信息。

        其余的过程和GAN一样,在G和D之间不断迭代。

        另外在实际的应用中,在D的输入中也要加入一些噪音,可以保证不会出现D快速拟合训练集的效果。

参考视频:2021 - 生成式对抗网络(GAN) (三) – 生成器效能评估与条件式生成_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于uwb和IMU融合的三维空间定位算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................................................kkk 0; for E…

【初识Git工具】Git工具的基本介绍

【初识Git工具】Git工具的基本介绍 一、什么是Git?1.1 Git简介1.2 Git和SVN区别1.3 常用的Git工具二、Git的起源三、Git的优点四、Git的架构五、Git的基本概念5.1 仓库(Repository)5.2 版本(Commit)5.3 分支(Branch)5.4 合并(Merge)5.5 标签(Tag)六、Git的基本使用命…

【特殊文本文件——Properties和xml文件】

特殊文本文件 一、Properties 是一个Map集合(键值对集合),但是我们一般不会当集合用核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容 1.使用Properties读取属性文件里的键值对数据…

【个人博客系统网站】统一处理 · 拦截器

【JavaEE】进阶 个人博客系统(2) 文章目录 【JavaEE】进阶 个人博客系统(2)1. 统一返回格式处理1.1 统一返回类common.CommonResult1.2 统一返回处理器component.ResponseAdvice 2. 统一异常处理3. 拦截器实现3.1 全局变量SESSI…

宏定义天坑记录

宏定义天坑记录 事件原委与推理过程 在编译一个使用了Protobuf的项目时出现了如下报错 [ybVM-8-7-centos boost_searcher]$ make g -o http_server http_server.cc data/raw_html.pb.cc -stdc11 -lboost_system -lboost_filesystem -lpthread -ljsoncpp -lprotobuf In file…

etcd选举源码分析和例子

本文主要介绍etcd在分布式多节点服务中如何实现选主。 1、基础知识 在开始之前,先介绍etcd中 Version, Revision, ModRevision, CreateRevision 几个基本概念。 1、version 作用域为key,表示某个key的版本,每个key刚创建的version为1&#…

【猿灰灰赠书活动 - 05期】- 【速学Linux:系统应用从入门到精通】

👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:博文为大家争取福利,与机械工业出版社合作进行送书活动 👨‍&#x1f…

【虚拟机】

虚拟机 简介VMware Workstation简介下载安装许可证密钥 CentOS简介下载 创建新的虚拟机 简介 虚拟机(Virtual Machine,简称VM)是一种软件模拟的计算机,它在一台物理计算机上创建了一个独立的虚拟计算环境。这个虚拟环境可以运行操…

在线实时监测离子风机的功能

离子风机是一种能够通过释放大量负离子来净化空气并提供清新环境的设备。要实现联网实时在线监测离子风机,可以考虑以下几个步骤: 1. 设备接入互联网:离子风机需要具备网络连接功能,可以通过无线网络或者以太网接入路由器&#x…

[uni-app] 海报图片分享方案 -canvas绘制

文章目录 canvas使用记录先看下实际效果图绘制流程及思路1. 绘制头像, 通过drawImage来绘制2.绘制文字部分 具体代码 分享海报图片的方式,以前再RN端采用的是截图方案, 我记得组件好像是 react-native-view-shot 现在要处理uni-app的海报图片分享, 一般也有 html2canvas的相关插…

索尼 toio™应用创意开发征文|联盟国战

✨ 能用众力,则无敌于天下矣;能用众智,则无畏于圣人矣。 —— 孙权 前言: 从火爆全网的ChatGPT,到人人都是开发者。AI无疑贯彻了整个2023年的主题,从刚上幼儿园的小朋友到耄耋之年的老顽童,都对…

0基础学习VR全景平台篇 第96篇:VR电子楼书

大家好,欢迎观看蛙色VR官方系列课程——VR电子楼书! 作为2021年底全新上线的行业解决方案,是专门针对地产、园区数字化营销的一站式VR解决方案,为行业潜在客户提供优质的7x24小时线上看房体验。 本期教程将通过功能介绍后台操作&…

SpringBoot项目集成Druid

文章目录 一、前言二、Druid相关内容1、Druid简介1.1数据库连接池 2、项目集成Druid2.1、环境准备2.2、依赖准备2.3、编写配置文件2.4、测试访问 3、功能介绍3.1、查看数据源3.2、SQL监控3.3、URI监控 三、总结提升 一、前言 本文将介绍Druid的相关内容以及项目如何集成Druid&…

C#,《小白学程序》第十二课:日历的编制,时间DateTime的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十二课&#xff1a;日历的编制&#xff0c;时间DateTime的计算方法与代码 /// 本课学习时间类型的数据 DateTime 的简单方法&#xff0c;并编制一个月的日历。 /// </summary> /// <param name"sender"…

OpenWrt系统开发笔记

openWrt英文官网&#xff1a; https://openwrt.org/ 中文官网&#xff1a; http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多   一个是lede,地址为&#xff1a;https://github.com/coolsnowwolf/lede   另一个为OpenWrt的官方源码&#…

笔记 | 排序算法实现(Python)

排序算法 一、选择排序二、合并/归并排序三、快速排序四、计数排序 排序类型时间复杂度选择排序(Selection Sort) O ( n 2 ) O(n^{2} ) O(n2)合并/归并排序&#xff08;Merge Sort&#xff09; O ( n log ⁡ n ) O(n\log n ) O(nlogn)快速排序(Quick Sort)平均情况 O ( n log ⁡…

STM32F4X RTC

STM32F4X RTC 什么是RTCSTM32F4X RTCSTM32F4X RTC框图STM32F4X RTC计数频率STM32F4X RTC日历STM32F4X RTC闹钟 STM32F4X RTC例程 什么是RTC RTC全程叫Real-Time Clock实时时钟&#xff0c;是MCU中一个用来计时的模块。RTC的一个主要作用是用来显示实时时间&#xff0c;就像日常…

利用less实现多主题切换(配合天气现象)

1. 先看效果&#xff1a; 2. 话不多说直接撸吧&#xff1a; 原理&#xff1a;先给body元素添加style&#xff0c;再根据天气现象动态更改style 开撸&#xff1a; 创建src/assets/style/variables.less 使用 XXX:var(–XXX,‘style’) 声明系列变量&#xff0c;之后添加其他变…

单臂路由实验:通过Trunk和子接口实现VLAN互通

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. PC 配置 IP 地址2. PC3 属于 Vlan10&#xff0c;PC4 属于 Vlan20&#xff0c;配置单臂路由实现 Vlan10 和 Vlan20 三层互通3. 测试在 PC3 上 Ping PC4 &#xff0c;可以 Ping 通 PC4 摘要&#xff1a; 本文…