Skip to content

Commit 6105ae1

Browse files
committed
Add GAN model image
1 parent 5eaefff commit 6105ae1

3 files changed

Lines changed: 86 additions & 10 deletions

File tree

10.Neural_network_learning.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1501,7 +1501,7 @@
15011501
"name": "python",
15021502
"nbconvert_exporter": "python",
15031503
"pygments_lexer": "ipython3",
1504-
"version": "3.8.3"
1504+
"version": "3.8.8"
15051505
},
15061506
"toc": {
15071507
"base_numbering": 1,

17.Generative_adversarial_networks.ipynb

Lines changed: 85 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,54 +48,130 @@
4848
"id": "879ce7dc",
4949
"metadata": {},
5050
"source": [
51-
"2014年,**生成对抗网络**(Generative Adversarial Network, **GAN**)由 [Ian Goodfellow 等](https://arxiv.org/abs/1406.2661) 提出,该网络模型在生成图像数据方面的表现令人惊异,如今已经成为众多研究者的关注点。"
51+
"2014年, [Ian Goodfellow 等](https://arxiv.org/abs/1406.2661) 提出了基于博弈论的生成模型——**生成对抗网络**(Generative Adversarial Network, **GAN**)。该网络模型在生成图像数据方面的表现令人惊异,如今已经成为众多研究者的关注点。"
5252
]
5353
},
5454
{
5555
"cell_type": "markdown",
56-
"id": "105ca718",
56+
"id": "c301a186",
5757
"metadata": {},
5858
"source": [
59-
"受博弈论中二人零和博弈思想的启发,**GAN**主要由**生成器**和**判别器**两个部分组成,**生成器**和**判别器**分别作为博弈的两方。其中,**生成器**的目的是生成接近真实的样本去骗过判别器, 而**判别器**是去区分真实的样本和生成的样本。通过对抗训练来不断的提高各自的能力,最终达到一个纳什均衡(Nash equilibrium)的状态"
59+
"除了图像合成,生成对抗网络在计算机视觉(CV)任务中还有很多的应用,如图像超分辨率、语义分割、图像编辑、图像修复、图像去噪、图像融合以及视频生成等。生成对抗网络在自然语言处理(NLP)中的应用也呈现日益增长的趋势, 例如:从文本生成图像、字体生成、对话生成、机器翻译、语音生成等"
6060
]
6161
},
6262
{
6363
"cell_type": "markdown",
64-
"id": "c301a186",
64+
"id": "4ae586a6",
6565
"metadata": {},
6666
"source": [
67-
"除了图像合成,生成对抗网络在计算机视觉(CV)任务中还有很多的应用,如图像超分辨率、语义分割、图像编辑、图像修复、图像去噪、图像融合以及视频生成等。生成对抗网络在自然语言处理(NLP)中的应用也呈现日益增长的趋势, 例如:从文本生成图像、字体生成、对话生成、机器翻译、语音生成等。"
67+
"# 2. GAN原理"
6868
]
6969
},
7070
{
7171
"cell_type": "markdown",
72-
"id": "4ae586a6",
72+
"id": "105ca718",
7373
"metadata": {},
7474
"source": [
75-
"# 2. GAN原理"
75+
"## 2.1 GAN模型\n",
76+
"\n",
77+
"受博弈论中二人零和博弈思想的启发,**GAN** 主要由**生成器**(Generator)和**判别器**(Discriminator)两个部分组成,**生成器**和**判别器**分别作为博弈的两方。其中,**生成器**的目的是生成接近真实的样本去骗过判别器, 而**判别器**是去区分真实的样本和生成的样本。通过对抗训练来不断的提高各自的能力,最终达到一个纳什均衡(Nash equilibrium)的状态。"
7678
]
7779
},
7880
{
7981
"cell_type": "markdown",
8082
"id": "a3885b9f",
8183
"metadata": {},
82-
"source": []
84+
"source": [
85+
"- **生成器**$G$:它以一个随机向量(潜在空间中的一个随机点)作为输入,并将其解码为一张合成图像。\n",
86+
"\n",
87+
"\n",
88+
"- **判别器**$D$:以一张图像(真实的或合成的均可)作为输入,并预测该图像是来自训练集还是由生成器创建。"
89+
]
8390
},
8491
{
8592
"cell_type": "markdown",
8693
"id": "0aab3569",
8794
"metadata": {},
95+
"source": [
96+
"![img](images/chapter17/GAN.jpg)"
97+
]
98+
},
99+
{
100+
"cell_type": "markdown",
101+
"id": "1cc5f2a3",
102+
"metadata": {},
103+
"source": [
104+
"基于这样的思想可以设计出 GAN 的目标函数如下式所示:\n",
105+
"\n",
106+
"$$ {\\rm min} \\; {\\rm max}\\; V(D, G) = \\mathbb{E}_{x\\sim p_ {\\rm data}\\;(x)}[{\\rm log}D(x)] + \\mathbb{E}_{z\\sim p_ {\\rm z}\\;(z)}[{\\rm log}(1-D(G(z)))] $$"
107+
]
108+
},
109+
{
110+
"cell_type": "markdown",
111+
"id": "463fff5b",
112+
"metadata": {},
113+
"source": [
114+
"其中 $G$ 代表生成器,$D$ 代表判别器,$P_{\\rm data}(x)$ 代表真实样本的概率分布,$P_{z}(z)$ 代表随机噪声的概率分布,$z$ 是服从高斯分布的随机噪声。"
115+
]
116+
},
117+
{
118+
"cell_type": "markdown",
119+
"id": "5eb07848",
120+
"metadata": {},
121+
"source": [
122+
"> 对于生成器 $G$ 来说,通过随机噪声 $z$ 作为输入,生成器 $G$ 期望自己生成的样本尽可能地欺骗判别器 $D$,所以需要最大化判别概率 $D(G(z))$,于是对于生成器 $G$,它的目标函数是最小化 ${\\rm log}(1-D(G(z)))$。\n",
123+
"\n",
124+
"> 对于判别器 $D$,为了尽可能地区分真实样本和虚假的生成样本,它希望最小化判别概率 $D(G(z))$ 的同时,最大化判别概率 $D(x)$。于是判别器的目标函数是最大化 $ {\\rm log} D(x) + {\\rm log}(1-D(G(z)))$。"
125+
]
126+
},
127+
{
128+
"cell_type": "markdown",
129+
"id": "94a926a4",
130+
"metadata": {},
88131
"source": []
89132
},
90133
{
91134
"cell_type": "markdown",
92135
"id": "21c95b3b",
93136
"metadata": {},
137+
"source": [
138+
"在对抗训练的过程中,判别器$D$ 判别真假样本的能力逐渐提高;而 生成器$G$ 为了欺骗判别器$D$,生成样本逐渐趋近于真实样本,最终使整个模型生成质量较好的新数据。"
139+
]
140+
},
141+
{
142+
"cell_type": "markdown",
143+
"id": "51f2530d",
144+
"metadata": {},
94145
"source": []
95146
},
96147
{
97148
"cell_type": "markdown",
98-
"id": "1cc5f2a3",
149+
"id": "ad06db0f",
150+
"metadata": {},
151+
"source": [
152+
"## 2.2 GAN的缺点"
153+
]
154+
},
155+
{
156+
"cell_type": "markdown",
157+
"id": "ffd25861",
158+
"metadata": {},
159+
"source": [
160+
"- 在模型训练过程中,存在模式崩溃问题:生成器从具有多种模式的训练集中仅学习到单个或有限的模式,而错失对其他模式的学习,从而无法生成具有多样性的样本。\n",
161+
"\n",
162+
"\n",
163+
"- 使用随机向量作为生成器的输入缺乏语义和可操作性,无法控制模型生成具有指定特征的样本;\n",
164+
"\n",
165+
"\n",
166+
"- 模型使用到的神经网络本身可以被进一步改造和优化;\n",
167+
"\n",
168+
"\n",
169+
"- 训练过程中易出现梯度消失、训练不稳定、神经网络难以收敛等问题"
170+
]
171+
},
172+
{
173+
"cell_type": "markdown",
174+
"id": "f30a5f43",
99175
"metadata": {},
100176
"source": []
101177
},

images/chapter17/GAN.jpg

15.7 KB
Loading

0 commit comments

Comments
 (0)