The Hessian Penalty: A Weak Prior for Unsupervised Disentanglement

Pebbles W., Pebbles J., Zhu J., Efros A., Torralba A. The Hessian Penalty: A Weak Prior for Unsupervised Disentanglement. arXiv preprint arXiv 2008.10599, 2020.

disentagle a function 究竟是什么不是很了解, 仅仅关于此方法如何运用二阶信息做一个记录. 其目的是显然的, 就是希望生成器输入的隐变量所调节的特征是独立的.

在这里插入图片描述
如图 逐渐增加\(z_6\), 其生成图片由外轮廓变成实物, 但不加hessian penalty的GAN似乎缺少一种严格的划分.

主要内容

hessian penalty的目的就是希望令hessian矩阵的非对角线元素小(最好为0).

标量情况

任意函数\(G:\mathbb{R}^d \rightarrow \mathbb{R}\). 其hessian矩阵\(H\)的元素为

\[\tag{1} H_{ij} = \frac{\partial^2G}{\partial z_i \partial z_j}, \]

假设其非对角线元素为0, 即

\[\tag{1.5} H_{ij} = \frac{\partial}{\partial z_j} (\frac{\partial G}{\partial z_i}) = 0, \quad i \not =j \]

这意味着, \(G\)关于\(z_i\)的导函数不含\(z_j\), 即与\(z_j\)无关(倘若在考虑定义域内(1.5)均满足), 这说明, 调节\(z_j\)对调节\(z_i\)导致\(G\)的变化没有影响.

为求目标(1.5), 添加如下hessian penalty:

\[\tag{2} \mathcal{L}_H (G) = \sum_{i=1}^d \sum_{j\not= i}^d H_{ij}^2. \]

向量情况

此时\(G: \mathbb{R}^d \rightarrow \mathbb{R}^p\), 设\(x_i=(G(z))_i\), \(H_i\)\(x_i\)关于\(z\)的hessian矩阵, 则

\[\tag{3} \mathcal{L}_H (G) = \max_i \mathcal{L}_{H_i} (G). \]

实际上别的比如\(\mathrm{mean}\)也是可以的, 但是作者实验发现用\(\max\)最好.

处于实际(计算量)的考量

如果输入的维度很大的话, 想要直接计算hessian矩阵是不容易的, 作者采用的是一种采样加逼近的方式, 首先

定理1: \(Var_v (v^THv)=2\sum_{i=1}^d\sum_{j\not=i}^d H_{ij}^2\).

其中\(v\)是Rademacher vectors, 即\(v\)的每个元素独立同分布于伯努利分布(\(p=1/2\)).

故只需用\(v^THv\)的经验方差来替换\(\mathcal{L}_H (G)\)就可以了.

注: 生成器的输入很少, 感觉用不到这个啊.

然后再来看怎么估计一次\(v^THv\), 便是很直接的中心差分

\[\tag{5} v^THv \approx \frac{1}{\epsilon^2} [G(z+\epsilon v) - 2G(z) + G(z-\epsilon v)]. \]

应用到生成模型中

此思想仅仅运用于训练生成器

\[\tag{7} \mathcal{L}_G = \mathbb{E}_{x \sim p _z(z)} [f(1-D(G(z)))] + \lambda \cdot \mathbb{E}_{z \sim p_z(z)} [\mathcal{L}_H(G)]. \]

代码

原文代码

posted @ 2020-09-30 20:26  馒头and花卷  阅读(290)  评论(0编辑  收藏  举报