【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手]

【再啰嗦一下】本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习笔记(一):元学习、小样本学习

三、生成对抗网络 GAN 综述

说到小样本学习,就想说比较时髦的生成对抗网络GAN。别误会,生成对抗网络并不是只针对小样本生成,还有很多别的丰富应用。

1. GAN

GANs是一种结构化的概率模型,由两个对立的模型组成:生成模型(G)用于捕获数据分布,判别模型(D)用于估计生成数据的概率,以确定生成的数据是来自真实数据分布,还是来自G的分布。D和G使用基于梯度的优化技术(同时梯度下降)玩一个极小极大零和博弈,直到纳什均衡。

GANs在一些实际任务中表现良好,例如图像生成、视频生成、域自适应和图像超分辨率等。传统的GANs虽然在很多方面都取得了成功,但是由于D和G训练的不平衡,使得GANs在训练中非常不稳定。D利用迅速饱和的逻辑损失。另外,如果D可以很容易的区分出真假图像,那么D的梯度就会消失,当D不能提供梯度时,G就会停止更新。

近年来,对于模式崩溃问题的处理有了许多改进,因为G产生的样本基于少数模式,而不是整个数据空间。另一方面,引入了几个目标(损失)函数来最小化与传统GANs公式的差异。最后,提出了几种稳定训练的方法。

2. DCGAN

顾名思义,DCGAN主要讨论CNN与GAN如何结合使用并给出了一系列建议。另外还讨论了GAN特征的可视化、潜在空间插值等问题。

3. ImprovedGAN

Ian Goodfellow等人提供了诸多训练稳定GAN的建议,包括特征匹配、mini-batch识别、历史平均、单边标签平滑以及虚拟批标准化等技巧。讨论了GAN不稳定性的最佳假设。

4. PACGAN

PACGAN讨论的是的如何分析model collapse,以及提出了PAC判别器的方法用于解决model collapse。思想其实就是将判别器的输入改成多个样本,这样判别器可以同时看到多个样本可以从一定程度上防止model collapse。

5. WGAN

WGAN首先从理论上分析了原始GAN模型存在的训练不稳定、生成器和判别器的loss无法只是训练进程、生成样本缺乏多样性等问题,并通过改进算法流程针对性的给出了改进要点。

6. CycleGAN 

CycleGAN讨论的是image2image的转换问题,提出了Cycle consistency loss来处理缺乏成对训练样本来做image2image的转换问题。Cycle Consistency Loss 背后的主要想法,图片A转化得到图片B,再从图片B转换得到图片A',那么图片A和图片A'应该是图一张图片。

7. Vid2Vid

Vid2Vid在生成器中加入光流约束,判别器中加入光流信息及对前景和背景分别建模,重点解决视频转换过程中前后帧图像的不一致性。

8. PGGAN

PGGAN创造性地提出了以一种渐进增大(Progressive growing)的方式训练GAN,利用逐渐增大的PGGAN网络实现了效果令人惊叹的生成图像。“Progressive Growing” 指的是先训练 4x4 的网络,然后训练 8x8,不断增大,最终达到 1024x1024。这既加快了训练速度,又大大稳定了训练速度,并且生成的图像质量非常高。

9. StackGAN

StackGAN是由文本生成图像,StackGAN模型与PGGAN工作的原理很像,StackGAN 首先输出分辨率为64×64 的图像,然后将其作为先验信息生成一个 256×256 分辨率的图像。

10. BigGAN

BigGAN模型是基于 ImageNet 生成图像质量最高的模型之一。该模型很难在本地机器上实现,而且 有许多组件,如 Self-Attention、 Spectral Normalization 和带有投影鉴别器的 cGAN等。

11. StyleGAN 

StyleGAN应该是截至目前最复杂的GAN模型,该模型借鉴了一种称为自适应实例标准化 (AdaIN) 的机制来控制潜在空间向量 z。虽然很难自己实现一个StyleGAN,但是它提供了很多有趣的想法。

12. 小结

当然前文有一些方法没有提到的,例如CGAN、自编码GAN等。

说到这里,放一张大佬整理的GAN家族主要模型的概要图:

  • 左边部分主要是改进模型解决例如图片转换、文本转图像、生成图片、视频转换等实际问题。
  • 右边部分主要是解决GAN框架本身存在的一些问题。

同时,再分享一下生成式对抗网络(GANs)最新2020综述,分类更全面更细致:[认真看图][认真看图]

  • 主要包括基于重新设计的网络结构、新的目标函数和替代优化算法的技术三个大类

GAN 已经在一些特定应用上与其它机器学习算法相结合,例如半监督学习、迁移学习、强化学习和多模态学习等。GAN 在图像处理与计算机视觉(例如图像超分辨率、图像生成、目标检测和视频处理等)、自然语言处理(例如文本生成等)、音乐(例如歌词生成等)、语音与音频、医学以及数据科学中的典型应用(例如之前我的随笔里提到的数据补全、异常检测、时间序列预测等)。

同时,GAN 被用于特征学习领域(例如特征选择、哈希和度量学习等)和其它机器学习任务(例如主动学习、在线学习 、零/小样本学习和多任务学习等)。可以说,计算机领域的很多研究分支中的算法模型都能够互相迁移、彼此融合,从而在不同领域有了拓展性的应用。

欢迎持续关注我的下一篇随笔:人工智能中小样本问题相关的系列模型演变及学习笔记(三):迁移学习

欢迎持续关注我的下一篇随笔:人工智能中小样本问题相关的系列模型演变及学习笔记(四):知识蒸馏、增量学习

欢迎持续关注该专题:人工智能中小样本问题相关的系列模型演变及学习笔记(含元学习/小样本学习/生成对抗网络/迁移学习等)

如果您对异常检测感兴趣,欢迎浏览我的另一篇博客:异常检测算法演变及学习笔记

如果您对智能推荐感兴趣,欢迎浏览我的另一篇博客:智能推荐算法演变及学习笔记CTR预估模型演变及学习笔记

如果您对知识图谱感兴趣,欢迎浏览我的另一篇博客:行业知识图谱的构建及应用基于图模型的智能推荐算法学习笔记

如果您对时间序列分析感兴趣,欢迎浏览我的另一篇博客:时间序列分析中预测类问题下的建模方案深度学习中的序列模型演变及学习笔记

如果您对数据挖掘感兴趣,欢迎浏览我的另一篇博客:数据挖掘比赛/项目全流程介绍机器学习中的聚类算法演变及学习笔记

如果您对人工智能算法感兴趣,欢迎浏览我的另一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)人工智能领域常用的开源框架和库(含机器学习/深度学习/强化学习/知识图谱/图神经网络)

如果你是计算机专业的应届毕业生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的应届生,你如何准备求职面试?

如果你是计算机专业的本科生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的本科生,你可以选择学习什么?

如果你是计算机专业的研究生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的研究生,你可以选择学习什么?

如果你对金融科技感兴趣,欢迎浏览我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之后博主将持续分享各大算法的学习思路和学习笔记:hello world: 我的博客写作思路

人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN的更多相关文章

  1. 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...

  2. CTR预估模型演变及学习笔记

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...

  3. 生成对抗网络(GAN)相关链接汇总

    1.基础知识 创始人的介绍: “GANs之父”Goodfellow 38分钟视频亲授:如何完善生成对抗网络?(上) “GAN之父”Goodfellow与网友互动:关于GAN的11个问题(附视频) 进一 ...

  4. 一文入门人工智能的明珠:生成对抗网络(GAN)

    一.简介 在人工智能领域内,GAN是目前最为潮流的技术之一,GAN能够让人工智能具备和人类一样的想象能力.只需要给定计算机一定的数据,它就可以自动联想出相似的数据.我们学习和使用GAN的原因如下: 1 ...

  5. AI佳作解读系列(六) - 生成对抗网络(GAN)综述精华

    注:本文来自机器之心的PaperWeekly系列:万字综述之生成对抗网络(GAN),如有侵权,请联系删除,谢谢! 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian G ...

  6. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  7. python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字

    python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字在字符串里面插入指定分割符的方法,先把字符串变成list然后用join方法变成字符串str=' ...

  8. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  9. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

随机推荐

  1. 2018年要学习的10大Python Web框架

    通过为开发人员提供应用程序开发结构,框架使开发人员的生活更轻松.他们自动执行通用解决方案,缩短开发时间,并允许开发人员更多地关注应用程序逻辑而不是常规元素. 在本文中,我们分享了我们自己的前十大Pyt ...

  2. AWS访问慢的原因分析及解决方案

    中国区的用户在访问海外AWS服务器的时候会遇到访问很慢的情况,那如何快速访问海外AWS服务器,今天和大家一起聊一下这个话题. 首先,为什么中国的用户访问海外AWS会变慢? 我总结来下大概有以下几方面的 ...

  3. IEEE 754标准--维基百科

    IEEE二进制浮点数算术标准(IEEE 754) 是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorm ...

  4. 数学--数论--HDU 2674 沙雕题

    WhereIsHeroFrom: Zty, what are you doing ? Zty: I want to calculate N!.. WhereIsHeroFrom: So easy! H ...

  5. CodeForces - 260B

    A recently found Ancient Prophesy is believed to contain the exact Apocalypse date. The prophesy is ...

  6. SSTI(服务器模板注入)学习

    SSTI(服务器模板注入)学习 0x01 SSTI概念 SSTI看到ss两个字母就会想到服务器,常见的还有SSRF(服务器端请求伪造).SSTI就是服务器端模板注入(Server-Side Templ ...

  7. 带"反悔"的贪心-超市

    题面:https://www.acwing.com/problem/content/description/147/ 超市里有N件商品,每个商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品 ...

  8. 数据结构与算法:栈(Stack)的实现

    栈在程序设计当中是一个十分常见的数据结构,它就相当于一个瓶子,可以往里面装入各种元素,最先装进这个瓶子里的元素,要把后装进这个瓶子里的全部元素拿出来完之后才能够把他给拿出来.假设这个瓶子在桌上平放,左 ...

  9. STM32 外部中断详解(原理+配置代码)

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...

  10. CF-163A Substring and Subsequence 字符串DP

    Substring and Subsequence 题意 给出两个字符串s,t,求出有多少对s的子串和t的子序列相等. 思路 类似于最长公共子序列的dp数组. dp[i][j]表示s中以i为结尾的子串 ...