Loading... ## Adversarial Nets > Objective: 在数据 $\boldsymbol {x}$ 上学习分布 $p_g$. 先定义一个先验输入的噪音变量 $z$, 分布为 $p_{\boldsymbol {z}}(\boldsymbol {z})$, 通过MLP $G(\boldsymbol {z}; \theta_g)$ 映射到输入空间上. 定义一个MLP $D(\boldsymbol {x}; \theta_d)$, 输出一个标量: 来自真实数据输出 $1$, 来自Generator输出 $0$. 在训练 $D$ 最大化识别数据来源的同时, 训练模型 $G$, 去最小化 $\log [1 - D(G(\boldsymbol {z}))]$, 即 $D$ 和 $G$ 进行 min-max 博弈: $$ \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(\boldsymbol {x})}[\log D(\boldsymbol {x})] + \mathbb{E}_{z \sim p_{\boldsymbol {z}}(\boldsymbol {z})}[\log (1-D(G(\boldsymbol {z})))] \tag{1} $$ > 若 $D$ 是完美的: > > - $D(\boldsymbol {x}) = 1$, 式1左侧 $\log D(\boldsymbol {x}) = 0$ > - $D(G(\boldsymbol {x})) = 0$, 式2右侧 $\log (1-D(G(\boldsymbol {z}))) = 0$ > > $D$ 希望能将数据分开, $G$ 希望将生成数据使 $D$ 分不. 当 $D$ 和 $G$ 无法进步时, 处于均衡状态, 此时称为 **纳什均衡**. ### 训练算法 ![](/usr/uploads/2022/04/3420326755.png) 首先分别采样 $m$ 个噪音样本 $\boldsymbol {z}^{(i)} \sim p_g(\boldsymbol {z})$ 和 真实数据样本 $\boldsymbol {x}^{(i)} \sim p_{\text{data}}(\boldsymbol {x})$ 的 minibatch. 通过minibatch放入价值函数(式1)求梯度: $$ \nabla_{\theta_d} \frac{1}{m} \sum^m_{i=1} \left[\log D(\boldsymbol {x}^{(i)}) + \log (1 - D(G(\boldsymbol {z}^{(i)}))) \right] \tag{2} $$ 再采样 $m$ 个噪音样本 $\boldsymbol {z}^{(i)} \sim p_g(\boldsymbol {z})$, 通过minibatch对 $G$ 进行更新: $$ \nabla_{\theta_g} \frac{1}{m} \sum^m_{i=1} \log (1 - D(G(\boldsymbol {z}^{(i)}))) \tag{3} $$ > 对于超参数训练次数 $k$, 不能取得过大也不能取得过小. 如果没有足够的更新, 可能会导致训练停滞; 若更新足够多, 式3右侧值趋近于0, 此时求梯度存在困难 对于最外层的for-loop, 我们希望模型能够收敛时结束训练. (GAN的收敛较难判断) ### Theoretical Results #### 1. Global Optimality of $p_g = p_{\text{data}}$ - **Proposition**: Fixed $G$, optimal $D$ is $$ D_G^\ast(x) = \frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x})+p_g(\boldsymbol {x})} \tag{4} $$ > $p$ 表示 $\boldsymbol {x}$ 在真实数据里产生的概率 > > 当 $p_g = p_{\text{data}}$ 时, 即两个分布一致时, $D_G(\boldsymbol {x}) = \frac{1}{2}$ *Proof*: 训练一个 $D$, 给定任意一个 $G$, 能够最大化价值函数 $V(G, D)$ $$ \begin{aligned} V(G, D) &= \int_\boldsymbol {x} p_\text{data}(\boldsymbol {x}) \log(D(\boldsymbol {x}))dx + \int_\boldsymbol {z} p_\boldsymbol {z}(\boldsymbol {z}) \log( 1 - D(g(\boldsymbol {z})))dz \\ &= \int_\boldsymbol {x} \Big[ p_\text{data}(\boldsymbol {x}) \log(D(\boldsymbol {x})) + p_g(\boldsymbol {x}) \log(1-D(\boldsymbol {x})) \Big] dx \end{aligned}\tag{5} $$ > 计算 来自 $p$ 的 $x$, 对 $f(x)$ 的期望: $\mathbb{E}_{x \sim p} f(x)= \int_x p(x)f(x)dx$ 对于积分内的内容, 可以看成 $y \to a \log y + b \log (1-y)$, 在 $\frac{a}{a+b}$ 中取得最大值 $[0,1]$. $\square$ 此时, 将 $p_g = p_{\text{data}}$ 带入式1, $$ \begin{aligned} C(G) &= \max_D V(G, D) \\ &= \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} [\log D_G^\ast (\boldsymbol {x})] + \mathbb{E}_{\boldsymbol {z} \sim p_\boldsymbol {z}} [\log (1 - D_G^\ast (G(\boldsymbol {z})))] \\ &= \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} [\log D_G^\ast (\boldsymbol {x})] + \mathbb{E}_{\boldsymbol {x} \sim p_g} [\log (1 - D_G^\ast (\boldsymbol {x}))] \\ &= \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})}\right] + \mathbb{E}_{\boldsymbol {x} \sim p_g} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})}\right] \end{aligned} \tag{6} $$ 只需要对 $C(G)$ 计算最小值即可. --- - **Theorem**: 当 $C(G)$ 取得全局最小值时, 当且仅当 $p_g = p_{\text{data}}$, 此时, $C(G) = -\log 4$ *Proof*: > KL散度: $\text{KL}(p||q) = \mathbb{E}_{x \sim p} \log \frac{p(x)}{q(x)}$. 在已知 $q$ 的情况下, $q$ 到 $p$ 的距离 对于 $\frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})}$: - 分子部分 $p_\text{data}(\boldsymbol {x})$ 是一个分布 - 分母部分 $p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})$ 并不是一个分布, 但在前乘 $\frac{1}{2}$ 可以看成一个分布 此时, Eq.6的左右两个 $\log$ 可以看作是两个KL散度. 因此, 式5可以继续改写, 同时根据 Eq.4 我们可以求出 Eq.6 : $$ \begin{aligned} C(G) &= \max_D V(G, D) \\ &= \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})}\right] + \mathbb{E}_{\boldsymbol {x} \sim p_g} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x})}\right] \\ &=\mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{\frac{1}{2} (p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x}))} + \log \frac{1}{2} \right] + \mathbb{E}_{\boldsymbol {x} \sim p_g} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{\frac{1}{2} (p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x}))} + \log \frac{1}{2} \right] \\ &= \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}}[\log \frac{1}{2}] + \mathbb{E}_{\boldsymbol {x} \sim p_g}[\log \frac{1}{2}] + \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{\frac{1}{2} (p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x}))} \right] + \mathbb{E}_{\boldsymbol {x} \sim p_g} \left[\log \frac{p_\text{data}(\boldsymbol {x})}{\frac{1}{2} (p_\text{data}(\boldsymbol {x}) + p_g(\boldsymbol {x}))} \right]\\ &= -\log 4 + KL(p_\text{data} \Vert \frac{p_\text{data}+p_g}{2}) + KL(p_g \Vert \frac{p_\text{data}+p_g}{2}) \end{aligned} \tag{7} $$ 当两个KL散度都等于0时, 说明两个分布 $p_\text{data}$ 和 $p_g$ 相同. $\square$ #### 2. Convergencve of Algo 1 **Proposition**: 如果 $G$ 和 $D$ 都有足够的容量, 对于算法1的每一步 $D$ 可以达到最优解, 如果允许去迭代的运行 $$ \mathbb{E}_{\boldsymbol {x} \sim p_\text{data}}[\log D^\ast_G(\boldsymbol {x})] + \mathbb{E}_{\boldsymbol {x} \sim p_g}[\log (1 - D^\ast_G(\boldsymbol {x}))] $$, $P_g$ 将收敛于$P_d$. $$ 最后修改:2023 年 01 月 25 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏