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

AI论文精读笔记-Generative Adversarial Nets(GAN)

1. 论文基本信息

  • 论文标题:Generative Adversarial Nets

  • 作者:Ian J. Goodfellow,∗ Jean Pouget-Abadie,† Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair,‡ Aaron Courville, Yoshua Bengio§

  • 发表时间和期刊:2014.06;NeurIPS

  • 论文链接:Generative Adversarial Nets

2. 研究背景和动机

        到目前为止,深度学习中最引人注目的成功来自于判别模型,通常是那些将高维度、丰富的输入映射到类别标签的模型。相比之下,生成模型的影响力较小,原因在于近似许多难以处理的概率计算(这些计算在最大似然估计和相关策略中出现)非常困难,此外在生成背景中难以利用分段线性单元的优势。

3. 主要贡献

        (1) 我们通过“对抗”的方式提出了一种新的framework用于估算生成模型,绕过了这些难题。在所提出的对抗网络框架中,生成模型与一个对手判别模型进行对抗:一个判别模型学习如何判断样本是来自伪造的分布还是数据分布。生成模型可以类比为一组伪造者,试图制造假币并使用而不被发现,而判别模型则类似于警察,试图识别假币。这场竞争驱使双方不断改进方法,直到假币与真币无法区分。

        (2) 用一个有监督学习的损失函数来做无监督学习。标号来自于是采样的还是生成的。(可以说是自监督学习的灵感来源之一)

4. 方法和模型

        下图是GAN的生成器与判别器的优化过程。其中蓝色虚线代表判别结果的分布情况(注意,当判别结果为\frac{1}{2}时,代表生成器伪造的数据达到最优结果,此时相当于随机猜测);黑色虚线代表真实的数据分布情况;绿色实线代表生成器生成的结果分布。

        生成器的目标就是通过MLP将z(代表噪声分布)映射到x(真实数据分布),可以看到,随着不断优化z,噪声分布逐渐向真实的数据分布靠拢,到最后判别结果的分布趋向于\frac{1}{2}

下图是GAN的核心算法。其中第一个等式用于优化判别器,第二个等式用于优化生成器

5. 实验和结果

略~

6. 讨论和未来工作

GAN的优点总结如下

  1. 无需马尔可夫链:训练过程中不需要依赖马尔可夫链,仅需反向传播来获取梯度。
  2. 无推断步骤:学习过程中无需进行推断操作,简化了模型训练。
  3. 模型灵活性:模型可以集成多种不同的函数,具有较强的灵活性。
  4. 梯度传递优势:生成器网络通过鉴别器的梯度进行更新,而非直接从数据样本中更新参数,这可能带来一定的统计优势,避免输入信息直接复制到生成器的参数中。
  5. 高质量分布表示:相较于基于马尔可夫链的方法,GAN能够表示非常清晰甚至退化的分布,而马尔可夫链方法则需要分布较模糊以便模式之间的混合。

GAN的缺点总结如下

  1. 无显式概率分布表示:GAN模型中没有显式地表示目标概率分布。
  2. 训练不稳定性:生成器和判别器的训练需要很好地同步。

7. 个人理解和反思

        GAN的出现已经过了10年之久,现在也涌现出很多基于GAN的优化工作,比如StyleGAN3等等。而GAN的主要思想也不是前人未曾想到的,不过,GAN将其发扬光大,讲解清楚,成为生成领域的经典之作。


http://www.kler.cn/a/304913.html

相关文章:

  • 【vue2.0入门】vue单文件组件
  • 基于promtail+loki+grafana搭建日志系统
  • [ComfyUI]Flux:繁荣生态魔盒已开启,6款LORA已来,更有MJ6写实动漫风景艺术迪士尼全套
  • learn-F12 Performance(性能)前端性能分析(LCP,CLS,INP)
  • CLion配置QT开发环境
  • 【深度学习】LSTM、BiLSTM详解
  • ZYNQ LWIP(RAW API) TCP函数学习
  • css grid布局属性详解
  • Python Tkinter小程序
  • 每日学习一个数据结构-B+树
  • React中九大常用Hooks总结
  • golang学习笔记22——golang微服务中数据竞争问题及解决方案
  • docker容器中的内存占用高的问题分析
  • 集群聊天服务器项目【C++】(四)cmake介绍和简单使用
  • 循环链表(判断双循环链表是否为对称,将两个单循环链表合并成一个循环链表)
  • ​Web3与AI的交汇点:打造未来智能化去中心化应用
  • React学习笔记(1.0)
  • SQLServer事务
  • QT::QComboBox自定义左击事件信号
  • 使用豆包MarsCode编程助手提升开发效率的实战分享!
  • 算法-最少箭引爆气球(贪心+区间)
  • oracle停止当前运行的JOB或kill会话
  • Python图像处理——计算机视觉中常用的图像预处理
  • Conda新建虚拟环境,安装包一直失败:000和404错误
  • RabbitMQ 基础入门
  • 【python爬虫】之scrapy框架介绍