Skip to content

Commit

Permalink
GAN typos (d2l-ai#391)
Browse files Browse the repository at this point in the history
* small typo

* small typo

* code and description is not same

* statements polishing

* statements polishing

* minor typo

* statements polishing

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor typo

* minor  typo

* minor typo

* minor typo

* minor typo

* minor typos

* GAN typos
  • Loading branch information
XiaGenYuan authored and astonzhang committed Sep 27, 2018
1 parent 13b84bb commit fc17550
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions contrib/chapter_generative_adversarial_networks/GAN.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# 生成对抗网路 GAN #
# 生成对抗网络 GAN #


这几年深度学习的流行除了卷积神经网络(Convolutional Neural Networks)外,再来有意思的就是生成对抗网路GAN(Generative Adversarial Network),由Ian Goodfellow在2014年提出GAN概念的[[1]](https://arxiv.org/abs/1406.2661),我们甚至可以用两个不同的**成语**来描述机器学习的两个重要分支判断模型以及生成模型:


#### 化繁为简(判断模型):
在电脑视觉里面的分类问题中,我们想要让电脑知道这张图片是鸟,我们会收集许多关于鸟的资料,例如不同种类的鸟..等,并透过卷积神经网络(Convolutional Neural Networks)让电脑来训练、学习,之后电脑就会分辨出这张图片是不是 “鸟”。
在电脑视觉里面的分类问题中,我们想要让电脑知道这张图片是鸟,我们会收集许多关于鸟的资料,例如不同种类的鸟..等,并通过卷积神经网络(Convolutional Neural Networks)让电脑来训练、学习,之后电脑就会分辨出这张图片是不是 “鸟”。

**电脑会看了许许多多关于鸟的图片,并归纳出一些规则,来分辨这张图片是不是鸟。**

Expand All @@ -20,19 +20,19 @@


#### 无中生有(生成模型):
人类可以听到一些关键字,脑海产生对应关键字的图像,所以我们是不是也能让电脑听到关于****这个字,他就会产生猫的影像呢?答案是可以的,透过生成模型我们可以让电脑产生相对应的图像。
人类可以听到一些关键字,脑海产生对应关键字的图像,所以我们是不是也能让电脑听到关于****这个字,他就会产生猫的影像呢?答案是肯定的,透过生成模型我们可以让电脑产生相对应的图像。

**可能电脑没有看过我家的小猫长怎样,可是既然是猫,所以他应该要有4只脚,一身毛茸茸的毛发......等。**
**可能电脑没有看过我家的小猫长啥样,可是既然是猫,所以他应该要有4只脚,一身毛茸茸的毛发......等。**

![](../img/generate_cat.PNG)



## 生层对抗网路是什么
上面的例子示范出我们可以让电脑生成我们感兴趣的图像,可是我们到底要怎么知道这些生成出来的图像是猫而不是老虎呢?所以Ian Goodfellow就提出了除了生成外我们还要给你一个对抗网路
## 生成对抗网络是什么
上面的例子示范出我们可以让电脑生成我们感兴趣的图像,可是我们到底要怎么知道这些生成出来的图像是猫而不是老虎呢?所以Ian Goodfellow就提出了除了生成外我们还要给你一个对抗网络

**什么是对抗网路**
对抗网路换句话说就是想要知道你生成的图像到底像不像猫?如果这个网路在古代就出现的话,指鹿为马这句成语大概就不会传下来了吧...**也难怪Yann LeCun曾说:“生成对抗网路是机器学习这十年来最有趣的主意**
**什么是对抗网络**
对抗网络换句话说就是想要知道你生成的图像到底像不像猫?如果这个网络在古代就出现的话,指鹿为马这句成语大概就不会传下来了吧...**也难怪Yann LeCun曾说:“生成对抗网络是机器学习这十年来最有趣的主意**


原论文也有提出一个有趣的例子,有一个小偷(生成器)要努力印刷出可以骗过警察(判断器)的钞票,而警察(判断器)也要努力学习尽管小偷(生成器)的印刷技术越来越高明,他也要分辨得出来。
Expand All @@ -49,7 +49,7 @@



如此一来这样这样的训练方法可以让双方学得越来越好,我们可以不要让网路那么的GAN(GANG)让他更PEACE一点,大概是生物课本里面的互益共生。
如此一来这样这样的训练方法可以让双方学得越来越好,我们可以不要让网络那么的GAN(GANG)让他更PEACE一点,大概是生物课本里面的互益共生。


## 准备资料集
Expand Down Expand Up @@ -128,15 +128,15 @@ for i in range(4):
visualize(img_list[i + 10][0])
plt.show()
```
## 定义网路架构
DCGAN的架构核心就是由卷积神经网络(Convolutional Neural Networks)来组成,判断器会经过卷积神经网络不断的缩小特征图的大小,并判断输入的图像是真实图像还是生成的图像。而生成网路会经过upconvolutions,所以特征图会变得越来越大,如此一来可以从低维度的向量变成高维度的的图片。
## 定义网络架构
DCGAN的架构核心就是由卷积神经网络(Convolutional Neural Networks)来组成,判断器会经过卷积神经网络不断的缩小特征图的大小,并判断输入的图像是真实图像还是生成的图像。而生成网络会经过upconvolutions,所以特征图会变得越来越大,如此一来可以从低维度的向量变成高维度的的图片。

而在DCGAN这篇论文中又提出**几个重点**

1**取消原有的池化层**,而在判断器中改用跨步卷积,在生成器中使用微步卷积
1.**取消原有的池化层**,而在判断器中改用跨步卷积,在生成器中使用微步卷积
2.在判断器和生成器中**均使用批量标准化(batch normalization)**
3.在判断器**取消全连接層(fully connected)** 以获得更深的网络结构
4.在生成器中,除了输出层使用Tanh当激活函数**这里会用tanh主要是因为我们一开始把图像归一化到[-1,1]之间,如果想要是图像归一化到[0,1]之间可以用(sigmoid)替代**),**其余层均使用RELU激活,在判断器的所有层中均使用LeakyReLu激活**
3.在判断器**取消全连接层(fully connected)** 以获得更深的网络结构
4.在生成器中,除了输出层使用Tanh作为激活函数**这里会用tanh主要是因为我们一开始把图像归一化到[-1,1]之间,如果想要是图像归一化到[0,1]之间可以用(sigmoid)替代**),**其余层均使用RELU激活,在判断器的所有层中均使用LeakyReLu激活**

![](../img/DCGAN.PNG)

Expand Down Expand Up @@ -191,7 +191,7 @@ with netD.name_scope():
```

## 设定损失函数及优化
这边利用二元交叉熵当成损失函数,并利用adam演算法来进行优化,我们利用常态分布来初始化网路参数
这边利用二元交叉熵当成损失函数,并利用adam演算法来进行优化,我们利用常态分布来初始化网络参数
```python
# 损失函数
loss = gluon.loss.SigmoidBinaryCrossEntropyLoss()
Expand All @@ -213,7 +213,7 @@ netD_filename='discriminator.params'
```


## 训练网路
## 训练网络
可以看到我们的生成器慢慢地产生出像脸的影像。
**训练分成训练判断器及生成器两个部分**

Expand Down Expand Up @@ -322,12 +322,12 @@ plt.show()

## 小结

- 使用生成对抗网路来生成图像
- 使用生成对抗网络来生成图像

## 练习


- 生成对抗网路有一个缺点就是输出的影像很模糊,能不能设计好的生成器或判别器来提升生成影像的解析度。
- 生成对抗网络有一个缺点就是输出的影像很模糊,能不能设计好的生成器或判别器来提升生成影像的解析度。
- 改变损失函数的设计,例如参考wgan或者lsgan的设计。

## 参考
Expand Down

0 comments on commit fc17550

Please sign in to comment.