概
disentagle a function 究竟是什么不是很了解, 仅仅关于此方法如何运用二阶信息做一个记录. 其目的是显然的, 就是希望生成器输入的隐变量所调节的特征是独立的.
如图 逐渐增加(z_6), 其生成图片由外轮廓变成实物, 但不加hessian penalty的GAN似乎缺少一种严格的划分.
主要内容
hessian penalty的目的就是希望令hessian矩阵的非对角线元素小(最好为0).
标量情况
任意函数(G:mathbb{R}^d ightarrow 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 ightarrow mathbb{R}^p), 设(x_i=(G(z))_i), (H_i)是(x_i)关于(z)的hessian矩阵, 则
实际上别的比如(mathrm{mean})也是可以的, 但是作者实验发现用(max)最好.
处于实际(计算量)的考量
如果输入的维度很大的话, 想要直接计算hessian矩阵是不容易的, 作者采用的是一种采样加逼近的方式, 首先
定理1: (Var_v (v^THv)=2sum_{i=1}^dsum_{j ot=i}^d H_{ij}^2).
其中(v)是Rademacher vectors, 即(v)的每个元素独立同分布于伯努利分布((p=1/2)).
故只需用(v^THv)的经验方差来替换(mathcal{L}_H (G))就可以了.
注: 生成器的输入很少, 感觉用不到这个啊.
然后再来看怎么估计一次(v^THv), 便是很直接的中心差分
应用到生成模型中
此思想仅仅运用于训练生成器