今天组会读了一下deepmind的PixelCNN(nips的那篇),不是很明白到底为什么follow的work这么多(而且pixel rnn还拿了best paper award。。),感觉pixel by pixel生成是一种非常反直觉的生成方式。而且是规定了从上往下从左往右的顺序。这种生成方式的insight在哪里?
(个人理解是为了引出wavenet?因为对语言序列来说生成是有顺序的,但是用来生成图片就很奇怪了)
相比较,虽然GAN生成的更加随意,但是laplacian GAN和stack GAN都是一种更符合直觉的方式。

另外,pixel CNN也有生成速度慢的问题,所以它和GAN相比到底有什么不同的地方值得大家去思考呢?(有什么可能比GAN更优的地方呢?)

(对pixelCNN还一知半解,只是想到了提个问,欢迎贴个reddit上已有的讨论啊什么的。。。。。。)

作者:Xun Huang
链接:https://www.zhihu.com/question/54414709/answer/139256237
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

谢邀,相比GAN,PixelCNN/RNN有以下几个优势:
1. 可以通过chain rule提供exact的data likelihood,虽说likelihood不是一个完美的evaluation metric [12],但它对评价一个generative model还是能提供很多insight(尤其是detect missing mode)。GAN的方法不仅没有办法给出exact的likelihood,而且approximate出来的likelihood似乎结果很差 [9]。另外PixelCNN这套方法在likelihood这个metric上是state-of-the-art,甩其它方法一大截。我觉得拿ICML best paper主要就是因为这个。
2. 因为objective function直接就是likelihood,PixelCNN的training要稳定很多
PixelCNN的典型training curve[11]:
<img src="https://pic2.zhimg.com/v2-710a1cd80b866075703f4ff734d4c9c9_b.png" data-rawwidth="747" data-rawheight="323" class="origin_image zh-lightbox-thumb" width="747" data-original="https://pic2.zhimg.com/v2-710a1cd80b866075703f4ff734d4c9c9_r.png">
GAN的典型training curve... [10]
<img src="https://pic3.zhimg.com/v2-4acb41ec2440af0fcbee1517832a36fe_b.png" data-rawwidth="1834" data-rawheight="673" class="origin_image zh-lightbox-thumb" width="1834" data-original="https://pic3.zhimg.com/v2-4acb41ec2440af0fcbee1517832a36fe_r.png">

3. PixelCNN的data space可以是continuous也可以是discrete的(discrete的performance稍好一点点),但是GAN目前基本还只能在continuous data上work。在discrete data上如何实现GAN目前仍是一个non-trivial的open problem。

当然,除了题主提到的依赖于arbitrary的order而且sampling很慢以外,PixelCNN还有很多缺点:
1. PixelCNN的training其实也很慢,比如OpenAI的PixelCNN++ [8] 要在8块Titan上train 5天才converge... 这还只是一个CIFAR dataset
2. sample quality明显不如GAN。现在state-of-the-art的GAN在CIFAR上能生成相当reasonable的sample [5]:
<img src="https://pic1.zhimg.com/v2-3c668605be5bf3121c3bc144f4dbcae4_b.png" data-rawwidth="320" data-rawheight="320" class="content_image" width="320">
但是PixelCNN++[8]的sample基本还看不出什么object...
<img src="https://pic4.zhimg.com/v2-00214865f46df7fc5d2212eed8a829a7_b.png" data-rawwidth="340" data-rawheight="339" class="content_image" width="340">

3. 暂时还没有paper用PixelCNN成功做出来unsupervised/semi-supervised feature learning,但是GAN在这方面硕果累累 [1,2,3,4]。

最后还想说的一点是,PixelCNN和GAN也许并不是非此即彼的关系,在将来有可能可以combine起来。如果有一个generative model能同时具备两者的优势,既能给出exact的likelihood又能有GAN这么好的sample quality,那将会是一个非常有趣的工作。这几个月的各种model组合(VAE+GAN [6], VAE+PixelCNN [7])也suggest这种combination或许是可行的。

[1] Salimans et al., Improved Techniques for Training GANs, 2016
[2] Dumoulin et al., Adversarially Learned Inference, 2016
[3] Donahue et al., Adversarial Feature Learning, 2016
[4] Denton et al., Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks, 2016
[5] Huang et. al., Stacked Generative Adversarial Networks, 2016
[6] Larsen et al., Autoencoding beyond pixels using a learned similarity metric, 2016
[7] Gulrajani et al., PixelVAE: A Latent Variable Model for Natural Images, 2016
[8] Salimans et al., PixelCNN++: A PixelCNN Implementation with Discretized Logistic Mixture Likelihood and Other Modifications, 2016
[9] Wu et al., On the Quantitative Analysis of Decoder-Based Generative Models, 2016
[10] torch/torch.github.io
[11] carpedm20/pixel-rnn-tensorflow
[12] Thesis et al., A note on the evaluation of generative models, 2016

如何比较PixelCNN与DCGAN两种Image generation方法?相关推荐

  1. GET和POST两种基本请求方法的区别

    GET和POST两种基本请求方法的区别 回退 回退时无害 会再次提交请求 记录 URL可被记录, 用于再访问 不可以 缓存 主动缓存 可手动设置 编码方式 只进行url编码 多种编码方式 参数长度 有 ...

  2. 哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现

    哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 参考文章: (1)哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 (2)https://www. ...

  3. 史上最容易理解————GET和POST两种基本请求方法的区别

    GET和POST两种基本请求方法的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过req ...

  4. fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较

    我觉得作者写的挺好,评论也写的很对. 目前我的项目就是在VS2008+Qt+win7上开发的.我上次总结的QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件也说明了这个问题. ...

  5. 【转载】面向对象建模与数据库建模两种分析设计方法的比较

    [转载]面向对象建模与数据库建模两种分析设计方法的比较 板桥里人 http://www.jdon.com 2007/9/23(转载请保留) 我们知道:一个软件从无到有需要经过如下几个阶段:分析.设计. ...

  6. Word 2003中打开最近操作过的文档的两种推荐的方法

    本文介绍Word 2003中打开最近操作过的文档的两种推荐的方法. 注:我的系统为WINDOWS 7,与XP下基本一致. 方法1: 在WINDOWS 7下,点击任务栏上的WINDOWS图标(即&quo ...

  7. 【H5】两种加密解密方法:

    [H5]两种加密解码方法: encodeURI(): //加密 decodeURI(); //解密 加密成base64编码格式 btoa() 加密 atob() 解密 实现代码如下: <!DOC ...

  8. js两种拼接字符串方法

    js两种拼接字符串方法 function(msgArr) {//参数为一个数组,每一个对象为图片id和图片地址var len = msgArr.length;//第一种拼接方式,直接用"+& ...

  9. R中两种常用并行方法——2. snowfall

    上一篇博客(R中两种常用并行方法--1. parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定.很多时候我们将大量的计算任务挂 ...

最新文章

  1. 微博更经济的异地容灾方案是怎么搞的
  2. MySQL【案例讲解】分组函数
  3. 爬虫3 requests基础之 乱码编码问题
  4. C# 判断一个字符串是否为url
  5. CO02工单下达时错误“订单类型 ZP91 工厂 1000: 没有检查工序的维护规则”
  6. 6.旋转数组的最小数字
  7. Search Engine Hacking – Manual and Automation
  8. 大国崛起:数据库领域的中国力量
  9. 大数运算之C 语言大数演算法
  10. 安装pika配置系统服务过程中遇到的错误
  11. 安卓和iOS的兼容性问题: 键盘弹起时,固定在底部的按钮是否被弹到键盘上方
  12. 解决移动端滑动方向相反
  13. 使用Unity调用派样机技术小结
  14. 娱乐至死,年轻人的慢性毒药
  15. music功能 vue_vue_music:歌手详情页
  16. Elasticsearch项目实战,商品搜索功能设计与实现!
  17. python守护进程进程池_Python—守护进程管理工具(Supervisor)
  18. .Net Core MVC引入static静态变量到.cshtml页面
  19. Ajax: A New Approach to Web Applications
  20. 红帽企业版Linux_6安装指南

热门文章

  1. 写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码
  2. java js css 压缩工具_javascript和css文件的压缩(YUI Compressor)
  3. spring boot 注解_Spring-Boot项目中如何配置redis注解缓存?
  4. c#版在pc端发起微信扫码支付
  5. redhat7操作系统安装
  6. JavaScript 编程精解 中文第三版 零、前言
  7. VSCode------搭建.net core 2.0,并配置到IIS服务器
  8. 公共安全再受质疑 看安防语音对讲新趋势
  9. [CTO札记]搜索结果第3页,也会进来
  10. Asp.Net页面输出到EXCEL