当前位置: 首页 > news >正文

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

相关文章:

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 Networ…...

无涯教程-JavaScript - IMLOG2函数

描述 IMLOG2函数以x yi或x yj文本格式返回复数的以2为底的对数。可以从自然对数计算复数的以2为底的对数,如下所示- $$\log_2(x yi)(log_2e)\ln(x yi)$$ 语法 IMLOG2 (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the bas…...

SpringBoot复习:(61)拦截器(HandlerInterceptor)的用法

一、自定义拦截器: package cn.edu.tju.interceptor;import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespo…...

【PyQT5教程】-01入门PyQT5

PyQT介绍 1.Qt 1.1 介绍 Qt(读作“cute”)是一个跨平台的C应用程序开发框架,最初由挪威公司Trolltech(现在是Qt公司的一部分)开发。Qt提供了一系列工具和类库,用于开发图形界面应用程序、命令行工具和服务…...

判断字符串s是否为字符串t的子序列

题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一…...

数据结构之队列的实现(附源码)

目录 一、队列的概念及结构 二、队列的实现 拓展:循环队列 三、初学的队列以及栈和队列结合的练习题 一、队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(Fi…...

[A题]2023 年全国大学生数学建模比赛思路、代码更新中.....

💥1 概述 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组…...

Tailwind 练手项目

Tailwind 练手项目 用到的技巧 Tailwind CSS 速成 应该都提过了,我不记得这里有什么特别新的知识 整体完成图大概这样: 一个纯静态页面,没有做 JS 之类的特效,不过做了移动端适配,说实话我写到一半的时候改了不少………...

SpringMVC_SSM整合

一、回顾SpringMVC访问接口流程 1.容器加载分析 容器分析 手动注册WebApplicationContext public class ServletConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationContext() {//获取SpringMVC容器An…...

【操作系统】电脑上没有IIS怎么办

文章目录 前言一、查看二、解决 前言 有的新机刚开始在计算机-管理-服务下没有IIS网络服务怎么办。 一、查看 桌面计算机/此电脑 鼠标右键:管理 服务和应用 发现没有IIS 二、解决 控制面板 程序和功能 启动或关闭Windows功能 IIS相关的所有功能选中&#xff…...

【vue】vue项目中批量下载文件并打压缩包

前言 一开始用的是循环单个文件下载,即从后台获取到文件url列表,循环对每个url单独进行下载,这样的问题是每调用一次下载,浏览器都会进行“另存为”的弹框,很麻烦!!! 关闭“下载前…...

Linux中的软件管家——yum

目录 ​编辑 一,软件安装的方式 二,对yum的介绍 1.yum的作用 2,yum的库 三,yum下载软件的操作 1.yumlist 2.yuminstall 3.yumremove 四,yum源的转换 一,软件安装的方式 软件安装的方式大概分为三种…...

安卓绘制原理概览

绘制原理 Android 程序员都知道 Android 的绘制流程分为 Measure、Layout、Draw 三步骤,其中 Measure 负责测量 View 的大小Layout 负责确定 View 的位置Draw 负责将 View 画在屏幕上 由 ViewRootImpl 实现的 performTraversal 方法是 Measure、layout、draw 的真正…...

接口测试工具开发文档

1 开发规划 1.1 开发人员 角 色 主要职责 负责模块 人员 备注 n xxx模块 xxx 1.2 开发计划 <附开发计划表> 1.3 开发环境和工具 开发工具 工具 作用 Notepad 编辑器 Perl 解释器 2 总体设计 设计思路&#xff1a;因为测试app和server。首先必须…...

面试题速记:JavaScript有哪些数据类型,它们的区别是?

JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; ●Symbol 代表创建后独一无二…...

Spring Cloud面试题

为什么需要学习Spring Cloud 不论是商业应用还是用户应用&#xff0c;在业务初期都很简单&#xff0c;我们通常会把它实现为单体结构的应用。但是&#xff0c;随着业务逐渐发展&#xff0c;产品思想会变得越来越复杂&#xff0c;单体结构的应用也会越来越复杂。这就会给应用带…...

计算机网络自顶向下-web页面请求历程

1. 准备: DHCP、 UDP、 IP 和以太网 假定 Bob 启动他的便携机&#xff0c;然后将其用一根以太网电缆连接到学校的以太网交换机 &#xff0c; 交换机与学校的路由器相连。学校的路由器与一个 ISP 连接&#xff0c; 本例中 ISP 为 comcast.net &#xff0c;为学校提供了 DNS 服务…...

打造西南交通感知新范式,闪马智能携手首讯科技落地创新中心

9月4日&#xff0c;2023年中国国际智能产业博览会&#xff08;以下简称“智博会”&#xff09;在重庆拉开帷幕。大会期间&#xff0c;由上海闪马智能科技有限公司&#xff08;以下简称“闪马智能”&#xff09;与重庆首讯科技股份有限公司&#xff08;以下简称“首讯科技”&…...

Android11去掉Settings中的网络和互联网一级菜单

碰到一个不要wifi不要蓝牙的项目&#xff0c;客户要求去掉Settings中的网络和互联网一级菜单&#xff0c;因为硬件都不贴&#xff0c;所以软件对应也要去掉。 我们可以根据packages/apps/Settings/res/xml/top_level_settings.xml的布局文件找到TopLevelNetworkEntryPreferenc…...

基于Python开发的五子棋小游戏(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的五子棋小游戏&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&a…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...