IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> GAN 学习的到底是什么?(Make Your First GAN With PyTorch 附录 B) -> 正文阅读

[人工智能]GAN 学习的到底是什么?(Make Your First GAN With PyTorch 附录 B)

  • 本文是 Make Your First GAN With PyTorch 的附录 B,本书的介绍详见这篇文章

  • 当然,学习这么久的生成对抗网络 (GAN),一定对 GAN 为啥能 “创造” 东西好奇,这篇文章我们就探讨一下这个问题。



GAN 到底学习的是什么呢?

这问题很好,但是答案并不是很明显。

下面我们在不涉及太多数学术语的情况下,给出 GAN 学习内容的直觉认识。

为了认识 GAN 学习什么,让我们从 GAN 学习什么开始探讨。

1. GAN 不记忆训练数据

GAN 并不记忆训练数据的任何例子。

  • 对于构成脸部的训练数据而言,这意味着生成器并不记忆诸如眼睛、耳朵、嘴唇或鼻子等部分。

生成器并不能直接看到训练数据,它利用鉴别器的后向传播误差进行学习,而鉴别器只能对某个图像是否真实进行分类。

所以,GAN 学习的是训练数据中不同元素出现的 可能性(likelihood)

2. 一个简单的例子

下面是 8 张图片构成的小数据集,图片本身仅有 3×3 个像素,而且每个像素仅能有两个取值(这里是蓝色和白色)。
简单数据集示例
如果我们,作为人类,来画与数据集类似的图像,我们可能直觉地在中间和左上角画出蓝色像素;同时,大家也可能在左下角画出蓝色像素。

  • 这种直觉背后是什么呢?

直觉的背后,是关于哪个像素是蓝色的 可能性(likely)

  • 观察图像的中心像素,数据集中除了 1 个图片外,其他图像的中心像素都是蓝色的;
  • 除此之外, 很多图像的左上角的像素也是蓝色的,个别图像的左下角像素也是蓝色的。
  • 与之相反,某些像素, 比如没有任何一张图像顶部中间的像素是蓝色的。
  • 下面从直觉转移到简单的数学计算,我们统计一下每个蓝色像素的数量。

下面图片中左侧的网格给出了这些数量。

在这里插入图片描述

  • 8 个训练图像中,左上角像素为蓝色的图像共有 6 个,左下角像素为蓝色的图像有 2 个;
  • 顶部中间为蓝色的数量为 0,也就是说训练集中没有任何图像的顶部中间像素是蓝色的。

可以很容易地将上图左侧的计数转换为 可能性(likelihood)概率(prob- ability),正如上图右侧的网格。

这个网格类似于 概率分布(probability distribution),显示的是一个 3×3 图像中蓝色像素分布的 可能性(likelihood)

3. 从概率分布中生成图像

如果我们是一个生成器,在确定某个像素是否是蓝色的之前,我们需要先看一下这些概率。

比如,

  • 对于左上角的像素,是蓝色的可能性相当高 (0.75)
  • 对于顶部中间的像素,是蓝色的可能性为 0,所以我们从没将它置为蓝色的。

下图给出了使用这个方法创建的 24 个不同的图像:

在这里插入图片描述

  • 看起来这些图像就像来自于训练集中一样。

从概率分布中创建图像的要点,并不是从训练数据中拷贝图像或其某个部分;而是要创造 可能性(likelihoods) 与训练数据一致的图像。

下面是将计数转换为概率并生成图像的代码:

4. 学习图像特征的像素集合

上面简化的例子,仅考虑了独立像素的可能性。但这实际上对诸如 MNIST 数字CelebA 脸部 等更真实的图像,效果并不好。

  • 考虑脸部照片的一个微笑。如果代表嘴唇的一些像素是红色的,那附近的像素同样也应该是红色的。我们不能让附近的像素是不同的颜色(比如紫色)的来代表不同的微笑,这会看起来很混乱和不真实。
  • 这意味着生成器神经网络学习某个特定的颜色,是和周边的像素有关系的。举例而言,如果某个生成器产生一个红色像素作为脸部的嘴唇,完成学习的网络权重将同样倾向于把临近像素置为红色。

下面的图片使用了一个简化的生成器网络来展示这个过程:

简化的生成器示意图

  • 可以看到,某个较强的权重 w 1 w_1 w1? 激活了中间层的一个节点,之后这个节点的信号继 续被较强的权重 w 2 w_2 w2? 产生红色的像素。而被权重 w 1 w_1 w1? 激活的节点,同样也允许较强的权重 w 3 w_3 w3? 来对画出红色像素周边的皮肤色彩。
  • 使用这种方法,权重联合起来可以画出红色像素作为嘴唇,同样画出非红色的像素作为嘴唇周边的脸部。

5. 更多模式和模式坍塌

  • 如果使用 MNIST 数据集进行训练,我们期望生成器有能力画出所有十个数字,这意味着需要学习所有十个数字的概率分布。
  • 生成器如何同时学习对应不同类型图像的多个概率分布是个挑战。

我们前面完成了这个挑战,是因为 GAN 可以学习正确的网络权重,这样不同范围的随机种子可以激活网络不同的路径,使得匹配不同的概率分布。

直觉地看,这个事情很复杂,这也是为什么 GAN 很难成功训练的要点。

我们之前接触到的 模式坍塌(mode collapse) ,就是说明生成器仅仅学习到了一个类型图像的概率分布。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:58:09  更:2022-05-21 19:02:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 5:59:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码