论文笔记 | Hypernetworks

所谓hypernetworks,即用一个网络生成另一个网络。被生成的网络被称为main network.

作为一种meta-learning的方法,其优点在于,可以限制模型的参数空间的大小。

模型建立

文章中,作者提出静态与动态的两种hypernetwork。

Static Hypernetwork

对于一个卷积网络来说,每一个卷积核含有$N_{in}\times N_{out}$的filter,每一个filter的大小为$f_{size}\times f_{size}$. 那么就可以用一个矩阵$K^j \in \mathbb{R}^{N_{in}f_{size}\times N_{out}f_{size}}$来表示第$j$层的参数。

其中$z^j$为网络第$j$层接受的embedding,$z^j \in \mathbb{R}^{N_z}$. $D$为主网络的层数。

同时,$K^j$可以被拆成$N_{in}$个小矩阵$K_i^j \in \mathbb{R}^{f_{size}\times N_{out}f_{size}}$.

基于这样的表述,作者提出了一个两层的线性网络。第一层接受输入$z^j$并将其线性映射到$N_{in}$维。

其中,$a_i^j\in \mathbb{R}^d$, $W_i\in \mathbb{R}^{d\times N_z}$, $z_j\in \mathbb{R}^{N_z}$, $B_i\in \mathbb{R}^{d}$, $d$为隐藏层的大小。文章中取$d=N_z$.

第二层接受$a_i$并将其映射到$K_i$.

其中,$W_{out}\in \mathbb{R}^{f_{size}\times N_{out}f_{size}\times d}$, $B_{out}\in \mathbb{R}^{f_{size}\times N_{out}f_{size}}$.

将得到的所有$K_i^j$拼接起来,即可得到所求的$K_j$。

对于拥有不同大小卷积核的情况,作者提出,可以通过拼接多个basic kernels来得到更大的卷积核。例如,如果选取basic size为16,那么$N_i=32$, $N_{out}=64$的卷积核可以由8个basic kernels组合而成。

Dynamic Hypernetwork

这一部分中,作者利用一个RNN(被称为HyperRNN)来动态的为另一个RNN/LSTM生成weights.

Basic RNN的标准形式为

其中$h_t\in \mathbb{R}^{N_h}$为隐藏状态,$\phi$为$tanh$或$relu$,$W_h\in\mathbb{R}^{N_h\times N_h}$, $W_x \in\mathbb{R}^{N_h\times N_x}$, $b\in \mathbb{R}^{N_h}$.

而在HyperRNN中,$W_h$, $W_x$, $b$按照以下规则生成

其中$W_{hz}\in \mathbb{R}^{N_h\times N_h\times N_z}$, $W_{xz}\in\mathbb{R}^{N_h\times N_x\times N_z}$, $W_{bz}\in\mathbb{R}^{N_h\times N_z}$, $b_0\in \mathbb{R}^{N_h}$. $z_h, z_x, z_b\in\mathbb{R}^{N_z}$按照以下规则计算

上面的模型在更新main RNN参数时,对于内存的消耗非常大,作者引入了weight scaling vector $d_z\in\mathbb{R}^{N_h}$. 令

更进一步,

实验

图像识别领域使用static hypernetworks,数据集采用MNIST和CIFAR-10。语言建模领域采用dynamic hypernetworks,数据集采用Penn Treebank and Hutter Prize Wikipedia,以及handwriting generation.