人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手]
【再啰嗦一下】本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习笔记(一):元学习、小样本学习
三、生成对抗网络 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的更多相关文章
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- CTR预估模型演变及学习笔记
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...
- 生成对抗网络(GAN)相关链接汇总
1.基础知识 创始人的介绍: “GANs之父”Goodfellow 38分钟视频亲授:如何完善生成对抗网络?(上) “GAN之父”Goodfellow与网友互动:关于GAN的11个问题(附视频) 进一 ...
- 一文入门人工智能的明珠:生成对抗网络(GAN)
一.简介 在人工智能领域内,GAN是目前最为潮流的技术之一,GAN能够让人工智能具备和人类一样的想象能力.只需要给定计算机一定的数据,它就可以自动联想出相似的数据.我们学习和使用GAN的原因如下: 1 ...
- AI佳作解读系列(六) - 生成对抗网络(GAN)综述精华
注:本文来自机器之心的PaperWeekly系列:万字综述之生成对抗网络(GAN),如有侵权,请联系删除,谢谢! 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian G ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字
python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字在字符串里面插入指定分割符的方法,先把字符串变成list然后用join方法变成字符串str=' ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
随机推荐
- 短视频sdk:选择一个靠谱的短视频SDK 你需要了解这些
2017 年,短视频成为了内容创业的新风口,各种短视频 App 如雨后春笋般先后上线.随着互联网内容消费升级,视频越来越像文字.图片一样,成为每一个 App 不可或缺的一部分. 为了能够更好地聚焦于业 ...
- 基于国内某云的 Domain Fronting 技术实践
发布时间:2019-12-16 11:30:53 一.简介 Domain Fronting,中文译名 “域前置” 或 “域名前置”,是一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术 ...
- P1459 三值的排序 Sorting a Three-Valued
题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排成升 ...
- python(os 模块)
1.os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix' import os print(os.name) #结果如下 ...
- 算法---BitMap
问题: 假设有3亿个整数(范围0-2亿),如何判断某一个树是否存在.局限条件一台机器,内存500m. 常规的思路:我们可以将数据存到一个集合中,然后判断某个数是否存在:或者用一个等长的数组来表示,每个 ...
- rsync客户端一键安装rsync脚本(源码)
客户端 read -np "请输入源码rsync的URL 地址 包名(以空格为分隔符,别带/):" URL DZ BM yum remove -y rsync &>& ...
- Qt源码解析之-从PIMPL机制到d指针
一.PIMPL机制 PIMPL ,即Private Implementation,作用是,实现 私有化,力图使得头文件对改变不透明,以达到解耦的目的 pimpl 用法背后的思想是把客户与所有关于类的私 ...
- Android广播时间——实现强制下线功能
目录 思路:强制下线功能需要先关闭掉所有的活动,然后回到登录界面. 步骤 1.关闭所有活动 2.创建BaseActivity类作为所有活动的父类,因为需要用ActivityCollector管理所有活 ...
- calc less 下不起作用
在 less中不能使用css3 calc属性不能 css3 新增长度计算属性 可以根据不同单位计算宽度 .test{ width: calc(100% - 150px); } 但是当我们在less中使 ...
- pc建站自适应
转载 来自https://www.cnblogs.com/eyed/p/7872521.html HTML5----响应式(自适应)网页设计 现在,很多项目都需要做响应式或者自适应的来适应 ...