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

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

主要内容

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

标量情况

任意函数G:RdR. 其hessian矩阵H的元素为

(1)Hij=2Gzizj,

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

(1.5)Hij=zj(Gzi)=0,ij

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

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

(2)LH(G)=i=1djidHij2.

向量情况

此时G:RdRp, 设xi=(G(z))i, Hixi关于z的hessian矩阵, 则

(3)LH(G)=maxiLHi(G).

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

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

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

定理1: Varv(vTHv)=2i=1djidHij2.

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

故只需用vTHv的经验方差来替换LH(G)就可以了.

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

然后再来看怎么估计一次vTHv, 便是很直接的中心差分

(5)vTHv1ϵ2[G(z+ϵv)2G(z)+G(zϵv)].

应用到生成模型中

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

(7)LG=Expz(z)[f(1D(G(z)))]+λEzpz(z)[LH(G)].

代码

原文代码

posted @   馒头and花卷  阅读(298)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示