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 z_6 z6, 其生成图片由外轮廓变成实物, 但不加hessian penalty的GAN似乎缺少一种严格的划分.

主要内容

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

标量情况

任意函数 G : R d → R G:\mathbb{R}^d \rightarrow \mathbb{R} G:RdR. 其hessian矩阵 H H H的元素为
H i j = ∂ 2 G ∂ z i ∂ z j , (1) \tag{1} H_{ij} = \frac{\partial^2G}{\partial z_i \partial z_j}, Hij=zizj2G,(1)
假设其非对角线元素为0, 即
H i j = ∂ ∂ z j ( ∂ G ∂ z i ) = 0 , i ≠ j (1.5) \tag{1.5} H_{ij} = \frac{\partial}{\partial z_j} (\frac{\partial G}{\partial z_i}) = 0, \quad i \not =j Hij=zj(ziG)=0,i=j(1.5)
这意味着, G G G关于 z i z_i zi的导函数不含 z j z_j zj, 即与 z j z_j zj无关(倘若在考虑定义域内(1.5)均满足), 这说明, 调节 z j z_j zj对调节 z i z_i zi导致 G G G的变化没有影响.

为求目标(1.5), 添加如下hessian penalty:
L H ( G ) = ∑ i = 1 d ∑ j ≠ i d H i j 2 . (2) \tag{2} \mathcal{L}_H (G) = \sum_{i=1}^d \sum_{j\not= i}^d H_{ij}^2. LH(G)=i=1dj=idHij2.(2)

向量情况

此时 G : R d → R p G: \mathbb{R}^d \rightarrow \mathbb{R}^p G:RdRp, 设 x i = ( G ( z ) ) i x_i=(G(z))_i xi=(G(z))i, H i H_i Hi x i x_i xi关于 z z z的hessian矩阵, 则
L H ( G ) = max ⁡ i L H i ( G ) . (3) \tag{3} \mathcal{L}_H (G) = \max_i \mathcal{L}_{H_i} (G). LH(G)=imaxLHi(G).(3)

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

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

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

定理1: V a r v ( v T H v ) = 2 ∑ i = 1 d ∑ j ≠ i d H i j 2 Var_v (v^THv)=2\sum_{i=1}^d\sum_{j\not=i}^d H_{ij}^2 Varv(vTHv)=2i=1dj=idHij2.

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

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

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

然后再来看怎么估计一次 v T H v v^THv vTHv, 便是很直接的中心差分
v T H v ≈ 1 ϵ 2 [ G ( z + ϵ v ) − 2 G ( z ) + G ( z − ϵ v ) ] . (5) \tag{5} v^THv \approx \frac{1}{\epsilon^2} [G(z+\epsilon v) - 2G(z) + G(z-\epsilon v)]. vTHvϵ21[G(z+ϵv)2G(z)+G(zϵv)].(5)

应用到生成模型中

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

L G = E x ∼ p z ( z ) [ f ( 1 − D ( G ( z ) ) ) ] + λ ⋅ E z ∼ p z ( z ) [ L H ( G ) ] . (7) \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)]. LG=Expz(z)[f(1D(G(z)))]+λEzpz(z)[LH(G)].(7)

代码

原文代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值