开个坑,每周更新 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 上购买英文电子版。
本书作者 Tariq Rashid 拥有机器学习和数据挖掘硕士学位,目前活跃在伦敦技术领域,领导了一个有 3000 名成员的伦敦 Python 小组。
作者先后撰写了一系列有关机器学习的书籍,比如 Make Your Own Neural Network、Make Your Own Algorithmic Art、Creative 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
2018 年 10月,佳士得拍卖行以 43.25 万美元的高价卖出一幅由神经网络生成的肖像画,成为艺术史上的里程碑。
上述神经网络由对抗式训练(Adversarial Training)开展训练,对应的网络架构叫做生成对抗网络(Generative Adversarial Network, GAN)。
由于 GAN 可以创造看起来很合理的图像,所以吸引了很多,特别是创造性技术领域的注意力。GAN 生成的图像并不是训练数据的简单复制和粘贴,也不是训练数据的简单平均,而是通过学习来创造图像,这比简单地复制或者对训练数据求平均更高一个层级。
作为世界*的神经网络领域研究者, Yann LeCun 称 GAN 为 “过去20年中深度学习最酷的 idea” 。
我第一次接触生成对抗网络,应该是之前照片风格化(比如将照片变为漫画风格)的 APP。印象中,这种技术还引起了不大不小的 “出圈” 现象,很多人都分享类似的照片到朋友圈或其他平台上。
另外,相当长的时间,我都是把 “生成对抗网络” 叫错成 “对抗生成网络”…后来干脆,直接用汉语拼音拼写出 “GAN” 来称呼它…
3.2 GAN 是全新概念
不同于传统神经网络已经有了几十年来的研究和改进,GAN 从 2014 年 Ian Goodfellow 的开创性论文才开始凸显。
但是,学界其实还没有完全理解如何像传统的网络一样有效地来训练 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 或其他任何软件,可以完全在谷歌的基础结构中开发和运行强大的神经网络。
PyTorch 是 Python 的一个扩展,使得构建、运行机器学习模型变得简单,也是本书主要使用的框架。
关于 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: 不稳定学习