第28章 生成对抗网络 习题28.1   GAN的生成网络的学习可以定义为以下的最小化问题: $$ \min \limits{\theta} \left \{ E{\boldsymbol{z} \sim P{\text {seed }}(\boldsymbol{z})} [ \log (1 - D( G(\boldsymbol{z} ; \boldsymbol{\theta}) ; \bar{\boldsymbol{\varphi}}))-\log ( D( G(\boldsymbol{z} ; \boldsymbol{\theta}) ; \bar{\boldsymbol{\varphi}} )) ] \} \right. $$ 比较与式(28.
GAN的生成网络的学习可以定义为以下的最小化问题:
比较与式(28.2)的不同,并考虑其作用。
解答:
解答思路:
解答步骤:
第1步:给出式(28.2)定义的生成网络学习的最小化目标函数
根据书中第28.1.1节的公式(28.2):
假设已给训练数据\mathcal{D}遵循分布P_{\text{data}} (\boldsymbol{x}),其中\boldsymbol{x}是样本。生成网络用 \boldsymbol{x} = G(\boldsymbol{z}; \boldsymbol{\theta})表示,其中\boldsymbol{z}是输入向量(种子),\boldsymbol{x} 是输出向量(生成数据),\boldsymbol{\theta}是网络参数。判别网络是一个二类分类器,用P(1 | \boldsymbol{x}) = D(\boldsymbol{x}; \boldsymbol{\theta})表示,其中\boldsymbol{x}是输入向量,P(1 | \boldsymbol{x})和1 - P(1 | \boldsymbol{x})是输出概率,分别白哦是输入\boldsymbol{x}来自训练数据和生成数据的概率,\varphi是网络参数。种子z遵循分布P_{\text{seed}} (\boldsymbol{z}),生成网络生成的数据分布表示为P_{\text{gen}}(\boldsymbol{x}),由P_{\text{seed}}(\boldsymbol{z})和\boldsymbol{x} = G(\boldsymbol{z}; \boldsymbol{\theta})决定。
如果判别网络参数 \varphi 固定,可以通过最小化以下目标函数学习生成网络参数θ。
第2步:比较题中公式和式(28.2)定义的生成网络学习的最小化目标函数
题中GAN的生成网络的学习可以定义为以下的最小化问题:
与式(28.2)比较,式中多减去了一项:
第3步:分析题中的最小化问题的目标函数的作用
令x = D(G(\boldsymbol{z} ; \boldsymbol{\theta}) ; \bar{\boldsymbol{\varphi}}),则最小化问题可表示为
题中最小化问题的目标函数的作用:
两个人进行零和博弈,参与人X和Y可选择的策略分别是\mathcal{X} = \{1, 2 \} 和 \mathcal{Y} = \{1, 2\}。在博弈中,若参与人X和Y分别选择i \in \mathcal{X}和j \in \mathcal{Y},则X的损失或Y的收益是a_{ij}。整体由矩阵A=(a_{ij})表示,矩阵A定义为:
针对这个博弈求 \min_i \max_j a_{ij}和\max_j \min_i a_{ij},并验证这时\max_j \min_i a_{ij} \leqslant \min_i \max_j a_{ij}成立。
解答:
解答思路:
解答步骤:
第1步:零和博弈的概念
根据维基百科中的零和博弈
(参考资料:https://zh.wikipedia.org/wiki/%E9%9B%B6%E5%92%8C%E5%8D%9A%E5%BC%88 )
零和博弈,又称零和游戏或零和赛局(Zero-sum game)与非零和博弈相对,是博弈论的一个概念,属非合作博弈。零和博弈表示所有博弈方的利益之和为零或一个常数,即一方有所得,其他方必有所失。在零和博弈中,博弈各方是不合作的。
第2步:结合零和博弈的概念,给出题中的求解方法
结合第1步给出的零和博弈概念,该博弈的收益矩阵为:
考虑最小最大化原则,即如果参与人X先选择策略,此时参与人X会选择使自己最小收益最大化的策略,即对应\max_j \min_i a_{ij}。
而对应计算过程,则是先按行计算每一行最小值,然后在每一行的最小值中选择最大值,得到\max_j \min_i a_{ij}。
考虑最大最小化原则,即如果参与人Y先选择策略,此时参与人Y会选择使对方最大收益最小化的策略,即对应\min_i \max_j a_{ij}。
而对应计算过程,则是先按列计算每一行最大值,然后在每一行的最大值中选择最小值,得到\min_i \max_j a_{ij}。
第3步:自编程对该博弈进行求解
import numpy as np
def minmax_function(A): """ 从收益矩阵中计算minmax的算法 :param A: 收益矩阵 :return: 计算得到的minmax结果 """ index_max = [] for i in range(len(A)): # 计算每一行的最大值 index_max.append(A[i,:].max()) # 计算每一行的最大值中的最小值 minmax = min(index_max) return minmax
def maxmin_function(A): """ 从收益矩阵中计算maxmin的算法 :param A: 收益矩阵 :return: 计算得到的maxmin结果 """ column_min = [] for i in range(len(A)): # 计算每一列的最小值 column_min.append(A[:,i].min()) # 计算每一列的最小值中的最大值 maxmin = max(column_min) return maxmin
# 创建收益矩阵 A = np.array([[-1,2],[4,1]]) # 计算maxmin maxmin = maxmin_function(A) # 计算minmax minmax = minmax_function(A) # 输出结果 print("maxmin =", maxmin) print("minmax =", minmax)
maxmin = 1 minmax = 2
第4步:验证这时\max_j \min_i a_{ij}和\min_i \max_j a_{ij}的关系
由上步可得:
这时\max_j \min_i a_{ij} \leqslant \min_i \max_j a_{ij}成立。
计算以下两个概率分布的Jessen-Shannon散度,设0 log0 = 0。
| 0.1 | 0.7 | 0.1 | 0.1 | 0 |
|---|---|---|---|---|
| 0.2 | 0 | 0 | 0.8 | 0 |
解答:
解答思路:
解答步骤:
第1步:Jessen-Shannon散度的定义
根据维基百科的Jessen-Shannon散度
(参考Wiki:https://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence )
给出两个概率分布P和Q,其Jessen-Shannon散度为:
其中\displaystyle M = \frac{1}{2} (P + Q),D(\cdot \| \cdot)表示为KL散度。
根据书中附录E的KL散度的定义:
KL散度是描述两个概率分布Q(x)和P(x)相似度的一种度量,记作D(Q \| P)。对离散随机变量,KL散度定义为
D(Q | P) = \sum_i Q(i) \log \frac{Q(i)}{P(i)}
D(P | Q) = \int Q(x) \log \frac{Q(x)}{P(x)} \text{d} x
P = [0.1, 0.7, 0.1, 0.1, 0] \
Q = [0.2, 0, 0, 0.8, 0] \
M = \frac{1}{2} (P + Q) = [0.15,0.35,0.05,0.45,0]
D(P | M) = \sum_{i} P(i) \ln \frac{P(i)}{M(i)} = \ln 2 - 0.3 * \ln 3 \
D(Q | M) = \sum_{i} Q(i) \ln \frac{Q(i)}{M(i)} = 3.6 * \ln 2 -1.8 * \ln 3
\begin{aligned}
\text{JS} (P | Q)
&= \frac{1}{2} D(P | M) + \frac{1}{2} D(Q | M) \
&= \frac{1}{2}(4.6*\ln2 - 2.1 * \ln3 ) \
&= 2.3* \ln 2 - 1.05 * \ln 3 \
&= 0.440696
\end{aligned}
0 \leqslant \text{JS} (P | Q) \leqslant \ln 2
\text{JS} (P | Q) = \frac{1}{2} D(P | M) + \frac{1}{2} D(Q | M)
\text{JS} (P | Q) = \frac{1}{2} D(P | M) + \frac{1}{2} D(Q | M)
\text{JS} (P | Q) = 0
P = Q = M = \frac{1}{2}(P + Q)
\text{JS}(P | Q) = \frac{1}{2} D(P | M) + \frac{1}{2} D(Q | M)
\begin{aligned}
\text{JS} (P | Q)
&= \frac{1}{2} \int P(x) \ln \left( \frac{P(x)}{\displaystyle \frac{ P(x) + Q(x)}{2}} \right) \text{d} x + \frac{1}{2} \int Q(x) \ln \left ( \frac{Q(x)}{\displaystyle \frac{P(x) + Q(x)}{2}}\right) \text{d} x \
&= \frac{1}{2} \int P(x) \ln \left( \frac{2 P(x)}{ P(x) + Q(x) } \right) \text{d} x + \frac{1}{2} \int Q(x) \ln \left( \frac{2 Q(x)} {P(x) + Q(x)} \right) \text{d} x \
&= \frac{1}{2} \int \left[ P(x) \ln \left( \frac{P(x)}{P(x) + Q(x)} \right) + Q(x) \ln \left( \frac{Q(x)}{P(x) + Q(x)} \right) \right ] \text{d} x +\ln2
\end{aligned}
\ln \left(\frac{P(x)}{P(x) + Q(x)} \right) \leqslant 0 \
\ln \left(\frac{Q(x)}{P(x) + Q(x)} \right) \leqslant 0
\frac{1}{2} \int \left [ P(x) \ln \left( \frac{P(x)}{P(x) + Q(x)} \right) + Q(x) \ln \left( \frac{Q(x)}{P(x) + Q(x)} \right ) \right] \text{d} x \leqslant0
\text{JS} (P | Q) = \frac{1}{2} \int \left[ P(x) \ln \left( \frac{P(x)}{P(x) + Q(x)} \right) + Q(x) \ln \left( \frac{Q(x)}{P(x) + Q(x)} \right) \right ] \text{d} x + \ln2 \leqslant \ln 2
\begin{aligned}
\text{JS} (P | Q)
&= \frac{1}{2} D(P | M) + \frac{1}{2} D(Q | M) \
&= \frac{1}{2} \sum_i P(i) \ln \left( \frac{P(i)}{\displaystyle \frac{ P(i) + Q(i)}{2}} \right) + \frac{1}{2} \sum_i Q(i) \ln \left ( \frac{Q(i)}{\displaystyle \frac{P(i) + Q(i)}{2}}\right) \
&= \frac{1}{2} \sum_i P(i) \ln \left( \frac{2 P(i)}{ P(i) + Q(i) } \right) + \frac{1}{2} \sum_i Q(i) \ln \left( \frac{2 Q(i)} {P(i) + Q(i)} \right) \
&= \frac{1}{2} \sum_i \left[ P(i) \ln \left( \frac{P(i)}{P(i) + Q(i)} \right) + Q(i) \ln \left( \frac{Q(i)}{P(i) + Q(i)} \right) \right ] + \ln2
\end{aligned}
\ln \left(\frac{P(i)}{P(i) + Q(i)} \right) \leqslant 0 \
\ln \left(\frac{Q(i)}{P(i) + Q(i)} \right) \leqslant 0
\frac{1}{2} \sum_i \left[ P(i) \ln \left( \frac{P(i)}{P(i) + Q(i)} \right) + Q(i) \ln \left( \frac{Q(i)}{P(i) + Q(i)} \right) \right ] \leqslant0
\text{JS} (P | Q) = \frac{1}{2} \sum_i \left[ P(i) \ln \left( \frac{P(i)}{P(i) + Q(i)} \right) + Q(i) \ln \left( \frac{Q(i)}{P(i) + Q(i)} \right) \right ] + \ln2 \leqslant \ln 2
\text{JS}(P | Q) \leqslant \ln 2
0 \leqslant \text{JS} (P | Q) \leqslant \ln 2
C =
\left [ \begin{array}{ccccc}
w_1 & w_2 & w_3 & 0 & 0 \ 0 & w_1 & w_2 & w_3 & 0 \
0 & 0 &w_1 & w_2 & w_3
\end{array} \right ]
\left [ \begin{array}{ccccc}
w_1 & w_2 & w_3 & 0 & 0 \
0 & w_1 & w_2 & w_3 & 0 \
0 & 0 &w_1 & w_2 & w_3
\end{array} \right ] \cdot
\left [ \begin{array}{c}
x_1 \ x_2 \ x_3 \ x_4 \ x_5
\end{array} \right ] =
\left [ \begin{array}{c}
z_1 \ z_2 \ z_3
\end{array} \right ]
C^T =
\left [ \begin{array}{ccc}
w_1 & 0 & 0 \
w_2 & w_1 & 0 \
w_3 & w_2 & w_1 \
0 & w_3 & w_2 \
0 & 0 & w_3
\end{array} \right ]
\left [ \begin{array}{ccc}
w_1 & 0 & 0 \
w_2 & w_1 & 0 \
w_3 & w_2 & w_1 \
0 & w_3 & w_2 \
0 & 0 & w_3
\end{array} \right ] \cdot
\left [ \begin{array}{c}
z_1 \ z_2 \ z_3
\end{array} \right ] =
\left [ \begin{array}{c}
x_1 \ x_2 \ x_3 \ x_4 \ x_5
\end{array} \right ]
\boldsymbol{w} = \text{rot180} (\boldsymbol{w}')
O = \frac{I + 2P - K}{S} + 1 \tag{28.13}
I = \frac{[O + (O - 1)(S - 1)] + 2(K - P - 1)- K}{1} + 1
O' = \frac{I' + 2P' - K'}{S'} + 1
I' = O, P' = K - 1, K' = K, S' = 1 \
O' = O + K - 1
\hat{I}' = O + (O-1) \
P' = K - 2 \
K' = K \
S' = 1 \
O' = O + K - 1