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)].
\]

代码

原文代码

The Hessian Penalty: A Weak Prior for Unsupervised Disentanglement的更多相关文章

  1. A Statistical View of Deep Learning (V): Generalisation and Regularisation

    A Statistical View of Deep Learning (V): Generalisation and Regularisation We now routinely build co ...

  2. Deep Learning 学习笔记——第9章

    总览: 本章所讲的知识点包括>>>> 1.描述卷积操作 2.解释使用卷积的原因 3.描述pooling操作 4.卷积在实践应用中的变化形式 5.卷积如何适应输入数据 6.CNN ...

  3. BAYESIAN STATISTICS AND CLINICAL TRIAL CONCLUSIONS: WHY THE OPTIMSE STUDY SHOULD BE CONSIDERED POSITIVE(转)

    Statistical approaches to randomised controlled trial analysis The statistical approach used in the ...

  4. iOS深入学习之Weak关键字介绍

    iOS深入学习之Weak关键字介绍 前言 从大二的开始接触OC就用到了weak属性修饰词,但是当时只是知道如何去用这个关键字:防止循环引用.根本没有深入地去了解它. 在刚来北京的时候面试过程中也常常考 ...

  5. Unsupervised Learning and Text Mining of Emotion Terms Using R

    Unsupervised learning refers to data science approaches that involve learning without a prior knowle ...

  6. spring remoting源码分析--Hessian分析

    1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...

  7. @property中的copy.strong.weak总结

    1.NSString类型的属性为什么用copy NSString类型的属性可以用strong修饰,但会造成一些问题,请看下面代码 #import "ViewController.h" ...

  8. weak和nonull

    weak和nonull是相互排斥的,所以weak和null不能同时使用,如下图:

  9. spring与hessian整合例

    spring与hessian的简单应用实现例: 开发环境:window7 64,jdk8,tomcat8,spring4.2.5,hessian4.0 开发语言:java hessianServer端 ...

随机推荐

  1. Yarn 生产环境核心配置参数

    目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...

  2. HDFS06 DataNode

    DataNode 目录 DataNode DataNode工作机制 数据完整性 DataNode掉线时限参数设置 DataNode工作机制 一个数据块在DataNode上以文字形式存储在磁盘上,包括一 ...

  3. 学习java 7.8

    学习内容: 被static修饰的不需要创建对象,直接用类名引用即可 内部类访问特点:内部类可以直接访问外部类的成员,包括私有 外部类访问内部类的成员,必须创建对象 成员内部类,内部类为私有,Outer ...

  4. 《C陷阱与缺陷》 第0章导读 第1章词法陷阱

    1.= 与==的区别 赋值运算符= 的优先级要小于逻辑运算符== 也就是说,会进行先逻辑上的比较,然后再把比较结果进行赋值,很合理. getc库是什么??? 1.C语言中有单字符 = 也有多字符单元如 ...

  5. Oracle中的DBMS_LOCK包的使用

    一.DBMS_LOCK相关知识介绍 锁模式: 名字 描述 数据类型 值 nl_mode Null INTEGER 1 ss_mode Sub Shared: used on an aggregate ...

  6. Output of C++ Program | Set 16

    Predict the output of following C++ programs. Question 1 1 #include<iostream> 2 using namespac ...

  7. vue项目windows环境初始化

    下载nodejs zip包并加载到环境变量 nodejs的版本最好使用12版,而不是最新版 npm install webpack -gnpm install -g yarnyarn config s ...

  8. my41_主从延迟大排查

    半同步复制 主库执行 INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; SET GLOBAL rpl_semi_sync ...

  9. my38_MySQL事务知识点零记

    从innodb中查看事务信息 show engine innodb status\G; ------------ TRANSACTIONS------------Trx id counter 3153 ...

  10. maven高级学习

    上一篇<maven是什么>介绍了最初级的maven学习,今天就趁着周末的大好时光一起学习下maven的高级知识吧. 1.maven工程要导入jar包的坐标,就必须要考虑解决jar冲突 1) ...