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

生成对抗网络

生成对抗网络

  • 生成对抗网络(Generative Adversarial Network)
    • generate
    • why 输出分布(distribution)
  • GAN
    • Anime face Generation
      • Unconditional generation
      • Discriminator
    • basic idea of GAN
    • algorithm for GAN
    • theory for GAN
    • tips for training GAN
      • 变换divergence
        • WGAN
        • more tips
    • GAN for sequence generation
  • more generative model
  • evaluate
  • conditional generation
  • learning from unpaired data
    • cycle GAN
    • GAN for 翻译

生成对抗网络(Generative Adversarial Network)

generate

在这里插入图片描述

why 输出分布(distribution)

我们希望找到的function对于同样的输入有多种可能的输出。
在这里插入图片描述

GAN

Anime face Generation

Unconditional generation

在这里插入图片描述

Discriminator

在这里插入图片描述

basic idea of GAN

示例:generator生成图片,discriminator分辨生成的图片,然后generator调整其中参数继续生成图片(调整目标是为了骗过discriminator),discriminator也进一步调整试图分辨生成图片与真实图片之间的差距,以此类推

algorithm for GAN

在这里插入图片描述

固定生成器,训练判别器:将数据集中的真实图片label为1,generator产生的图片label为0,discriminator可以使用分类/回归方法判断图片之间的差异

在这里插入图片描述

调整network使得输出的分数更高

在这里插入图片描述

反复训练 G,D

theory for GAN

在这里插入图片描述

已知一个normal distribution经过generator得到一个分布PG,真实数据的分布记为Pdata,我们的目的是让PG和Pdata尽可能的接近。
即该问题中定义loss function为PG与Pdata之间的举例,并找到一组网络参数使loss function最小

how to get the Div
通过sampling
在这里插入图片描述
how to use sampling
use real data and generated data to train discriminator
在这里插入图片描述

真实的图给高分,生成图给低分
训练过程就是:最大化目标函数
目标函数是:将real data通过判别器得到的分数取log(D(y)),同理对生成图片通过判别器得到分数D(y)取log(1-D(y)),即让真实图分数越大越好,生成图分数越小越好。

在这里插入图片描述
可以通过变化目标函数使用不同的divergence
在这里插入图片描述
不同的divergence要如何设计objective function?
using the divergence you like

tips for training GAN

变换divergence

在最早的GAN中我们选择最小化的是JS divergence
在大多数案例中,PG和Pdata重叠部分非常少

  • 图片是高维空间中的低维manifold(流体),其重叠部分注定很小(就好像二维空间中的两条直线,除非刚好重合,否则重叠部分很小)
  • 我们对PG和Pdata的了解仅限于sample,可能由于sample原因导致重叠部分较少(如果sample的点不够多不够密,也是没有重叠的)

而两个没有重叠的分布算JS divergence永远为log2
在这里插入图片描述在这里插入图片描述变换divergence——wasserstein distance

在这里插入图片描述在这里插入图片描述

假设有一台推土机,推土机把P堆土挪到Q堆土所移动的平均距离就是wasserstein distance
穷举所有moving plan,找最短平均距离即为wasserstein distance

在这里插入图片描述

wasserstein distance可以看出由左到右,模型越来越好

WGAN

在这里插入图片描述

D 需要是一个足够平滑的function(否则无法收敛)

在这里插入图片描述

more tips

在这里插入图片描述在这里插入图片描述

GAN for sequence generation

在这里插入图片描述在这里插入图片描述

more generative model

在这里插入图片描述在这里插入图片描述

监督学习的方法

evaluate

通过影像辨识评估GAN产生图片的效果
在这里插入图片描述
在这里插入图片描述

Mode Collapse,中文又称模式奔溃,主要出现于 GAN 训练的后期阶段,生成器生成图像样式单一问题。回顾 GAN 的原理,判别器用于分辨出真实图像和生成图像而生成器致力于生成让判别器难以分辨真伪的图像。原始的 GAN 损失更关注生成单张图像是否真实,而非生成的图像“们”是否符合实际的图像分布。这给了生成器投机取巧的机会,只生成个别几张逼真的样本,生成的图像真实但单一,不符合实际的图像分布。
在这里插入图片描述

在这里插入图片描述

Mode Dropping,指 GAN 能很好地生成训练集中的数据,但难以生成非训练集的数据,“缺乏想象力”。因为采样数量的局限性,现实中我们无法采集到全部可能的图像,即采集到所有可能的图像是不可能的(如果有能力采集到所有可能的图像,那么我们也就不需要 GAN 来生成图像了),所以通常我们会采样,采集一定数量的图像来代表整个图像分布。如图2所示,generated data 分布过于与训练集 real data 分布近似,但由于 real data 无法代表整体分布,生成器无法生成没见过的图像。可以看到在 iteration t 和 iteration t+1,生成器生成的图像除了颜色以外没有其他的变化。这就像是我们考试前不理解知识点而直接背答案一般,题目一变,就直接不会了。个人感觉这种现象也更像是过拟合于训练集。

Inception Score
在这里插入图片描述Frechet Inception Distance(FID)
在这里插入图片描述
more
在这里插入图片描述

conditional generation

输入文字产生图片
在这里插入图片描述在这里插入图片描述输入图片产生图片
在这里插入图片描述

learning from unpaired data

supervied learning:paired data(数据+label)
在这里插入图片描述
如何使用GAN做无监督学习
在这里插入图片描述

直接从X中sample训练generator和discriminator使之接近Y中sample的话,很有可能会忽略输入特征直接生成Y sample图像,这样也是不合理的
conditional GAN (使用成对data进行训练)

此时没有成对资料——cycle GAN

cycle GAN

从X转换到Y,再从Y转换到X,使转换前和转换后越接近越好
三层:generator(x2y);generator(y2x);discriminator
在这里插入图片描述more GAN(风格转换类)
在这里插入图片描述

GAN for 翻译

在这里插入图片描述

相关文章:

  • C++【算法】【动态规划问题】
  • Flink中Table Api和SQL(二)
  • hook函数之useEffect的使用——自定义hook函数网络请求——
  • Windows 窗体显示的“模式方式”与“非模式方式”
  • JDBC详讲Connection与 jdbc-Statement
  • 外部 SRAM 实验
  • Redis从入门到精通(二)
  • 2021.09青少年软件编程(Python)等级考试试卷(四级)
  • JAVA计算机毕业设计毕业论文管理系统Mybatis+系统+数据库+调试部署
  • Redis实战 - 01 Redis 和 SpringSecurity Oauth2 实现认证授权中心
  • 数据结构:堆
  • 基于机器学习的搜索推荐系统
  • MATLAB | 分段赋色折线图及其图例绘制
  • C#面向对象程序设计课程实验三:实验名称:C#数组和集合
  • 数据结构--(栈、队列实现及3个OJ题)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • __proto__ 和 prototype的关系
  • ComponentOne 2017 V2版本正式发布
  • CSS 专业技巧
  • EOS是什么
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue学习第二天
  • 百度小程序遇到的问题
  • 从零开始的无人驾驶 1
  • 关于extract.autodesk.io的一些说明
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 说说动画卡顿的解决方案
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Spring Batch JSON 支持
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​插件化DPI在商用WIFI中的价值
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ()、[]、{}、(())、[[]]命令替换
  • (4)事件处理——(7)简单事件(Simple events)
  • (Python第六天)文件处理
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十)c52学习之旅-定时器实验
  • (小白学Java)Java简介和基本配置
  • (学习日记)2024.01.19
  • (一)为什么要选择C++
  • (转)http协议
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core中Emit的使用
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .netcore 获取appsettings
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net连接oracle数据库
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • [20150321]索引空块的问题.txt