有关 GAN 的入门学习:Make Your First GAN With PyTorch 的学习与笔记

开个坑,每周更新 1 - 2 篇学习生成对抗网络的笔记。
文章以学习(翻译) Make Your First GAN With PyTorch 为主,插入个人批注、笔记。


本文目录


1. 关于 Make Your First GAN With PyTorch

Make Your First GAN With PyTorch (个人译为:《使用 PyTorch 制作自己的第一个 GAN 网络》)是由 Tariq Rashid 编写的生成对抗网络 GAN 的入门书籍,可以在 Amazon 上购买英文电子版

有关 GAN 的入门学习:Make Your First GAN With PyTorch 的学习与笔记
本书作者 Tariq Rashid 拥有机器学习和数据挖掘硕士学位,目前活跃在伦敦技术领域,领导了一个有 3000 名成员的伦敦 Python 小组。

作者先后撰写了一系列有关机器学习的书籍,比如 Make Your Own Neural NetworkMake Your Own Algorithmic ArtCreative Coding For Kids: CodeGuppy Edition 等。

个人感觉,作者撰写的书籍,非常适用于初学者或者非计算机/数学专业学生入门,比如 Make Your First GAN With PyTorch (《使用 PyTorch 制作自己的第一个 GAN 网络》) 中基本没有故作高深的数学公式,而是使用许多有趣的图表来解释简单的概念和方法。

我作为一个非计算机/数学专业背景的人,看完书后觉得基本掌握了生成对抗网络的基础入门知识。

2. 本系列文章特点

我去年下半年通读了 Make Your First GAN With PyTorch,并做了一些笔记。这个系列的文章,以介绍该书内容要点为主,加上个人的一些观点和认识,期待能帮助大家入门 生成对抗网络(GAN)

本篇文章介绍原文引言,后附各文章的地址。

3.(原书)引言要点

过去几年里,机器学习和人工智能获得了突破性发展,基本每过几个月会报道出惊人的成就。

作为有 3000 多年历史的围棋,看起来规则很简单,但是需要非常非常复杂的策略,近几年 AlphaGo 才首次赢得世界冠军。

除了赢得冠军,AlphaGo 甚至发现了人类 3000 年来都没有发现的一些新策略。作者认为,相比于学会执行任务,发现新策略是机器学习领域更加深远的成功。

3.1 创造型 AI

201810月,佳士得拍卖行以 43.25 万美元的高价卖出一幅由神经网络生成的肖像画,成为艺术史上的里程碑。

上述神经网络由对抗式训练Adversarial Training)开展训练,对应的网络架构叫做生成对抗网络Generative Adversarial Network, GAN)。

由于 GAN 可以创造看起来很合理的图像,所以吸引了很多,特别是创造性技术领域的注意力。GAN 生成的图像并不是训练数据的简单复制和粘贴,也不是训练数据的简单平均,而是通过学习来创造图像,这比简单地复制或者对训练数据求平均更高一个层级。

作为世界*的神经网络领域研究者, Yann LeCunGAN“过去20年中深度学习最酷的 idea”

我第一次接触生成对抗网络,应该是之前照片风格化(比如将照片变为漫画风格)的 APP。印象中,这种技术还引起了不大不小的 “出圈” 现象,很多人都分享类似的照片到朋友圈或其他平台上。
另外,相当长的时间,我都是把 “生成对抗网络” 叫错成 “对抗生成网络”…后来干脆,直接用汉语拼音拼写出 “GAN” 来称呼它…

3.2 GAN 是全新概念

不同于传统神经网络已经有了几十年来的研究和改进,GAN2014Ian Good­fellow 的开创性论文才开始凸显。

但是,学界其实还没有完全理解如何像传统的网络一样有效地来训练 GAN; 当 **GAN **工作时,它们可能效果好的惊人,但也很容易失败,当前关于 GAN 网络如何工作、为什么会失败的研究也很活跃。

3.3 本书主要目的

本书为想迈出理解 GAN 是什么、如何工作第一步的人提供指导,也为学
习使用工业标准工具来实际构造 GAN 的人提供参考。

本书试图使用很友好的、简单的语言和很多图片来可视化的解释一些想法,尽量使用最少的数学公式,避免不必需的术语,让来自尽可能多的不同背景的读者来理解 GAN,并且能创建属于他们自己的 GAN

本书不会试图详尽的覆盖每个话题,也不会试图成为 GAN 的百科全书,而是力图覆盖范围更小、基础性更强。

3.4 有关工具和教程

Python 是最受欢迎和便于学习的编程语言之一,也已经成为了机器学习和 AI 的标准。

GAN 是由神经网络构成的,虽然具有一些基础,但是作者之前的书 ‌Make Your Own Neural Network 专注提供神经网络及其如何工作的最基础介绍。该书也提供了 Python 基础、微积分和梯度下降的介绍,这些内容对 GAN 也很有用,可以参考下面链接:

谷歌现在提供免费的基于网络的 Python 环境 Google Colab,这意味着不需要安装 Python 或其他任何软件,可以完全在谷歌的基础结构中开发和运行强大的神经网络。

PyTorchPython 的一个扩展,使得构建、运行机器学习模型变得简单,也是本书主要使用的框架。

关于 Google Colab:这是本系列文章中最令人蛋疼的一点,因为本书为了降低入门难度,所有的代码都在 Google Colab 中编写运行。
而由于众所周知的原因,国内的同学基本用不了这个平台,而亲测腾讯、百度、阿里等深度学习在线平台的难度和操作性都要复杂很多…
所以,没办法,本系列文章一方面仍保持原作中以 Google Colab 为基础的环境配置,也将适当时候增加国内配置单机平台的文章。同时,同学们也可以尝试腾讯、百度、阿里等在线平台。

4. 各章链接(持续更新)

  • 0. 引言
  • 1. PyTorch 基础
  • 2. 第一个 PyTorch 网络
  • 3. 精妙改进方法
  • 4. CUDA 基础
  • 5. 生成对抗网络思想
  • 6. 生成简单 1010 模式
  • 7. 生成手写体数字
  • 8. 生成人脸的案例
  • 9. 卷积生成对抗网络
  • 10. 有条件的 GAN
  • 11. 总结
  • 附录A: 理想损失值
  • 附录B: GAN 学习的是 “可能性”
  • 附录C: 卷积案例
  • 附录D: 不稳定学习
上一篇:XMC-GAN:从文本到图像的跨模态对比学习


下一篇:AK4940VN-L转换器模拟开关和PLL的48kHz 24位单声道音频编解码器