The Hessian Penalty: A Weak Prior for Unsupervised Disentanglement
概
disentagle a function 究竟是什么不是很了解, 仅仅关于此方法如何运用二阶信息做一个记录. 其目的是显然的, 就是希望生成器输入的隐变量所调节的特征是独立的.
如图 逐渐增加\(z_6\), 其生成图片由外轮廓变成实物, 但不加hessian penalty的GAN似乎缺少一种严格的划分.
主要内容
hessian penalty的目的就是希望令hessian矩阵的非对角线元素小(最好为0).
标量情况
任意函数\(G:\mathbb{R}^d \rightarrow \mathbb{R}\). 其hessian矩阵\(H\)的元素为
假设其非对角线元素为0, 即
这意味着, \(G\)关于\(z_i\)的导函数不含\(z_j\), 即与\(z_j\)无关(倘若在考虑定义域内(1.5)均满足), 这说明, 调节\(z_j\)对调节\(z_i\)导致\(G\)的变化没有影响.
为求目标(1.5), 添加如下hessian penalty:
向量情况
此时\(G: \mathbb{R}^d \rightarrow \mathbb{R}^p\), 设\(x_i=(G(z))_i\), \(H_i\)是\(x_i\)关于\(z\)的hessian矩阵, 则
实际上别的比如\(\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\), 便是很直接的中心差分
应用到生成模型中
此思想仅仅运用于训练生成器