论文地址
1、灵感来源于nature中的基因型(超网络)以及表型(主网络)
2、主要为了解决CNN,RNN中权重不共享以及RNN中全共享的问题,旨在创造一个relaxed weight-sharing across layers的模型,在不特别影响精度的情况下,减少了模型参数。
超网络为前馈网络生成权重。黑色连接和参数与主网络相关联,而橙色连接和参数与超级网络相关联。
分解原理:
卷积的所有参数: K j ∈ R N i n f s i z e × N o u t f s i z e K^j\in R^{N_{in}f_{size} \times N_{out} f_{size}} Kj∈RNinfsize×Noutfsize ,(其中 j = 1 , . . . D j=1,...D j=1,...D 为深度卷积网络的层数),作者想让这个参数用线性映射一下,由此可以表示为:
将其沿着参数 N i n N_{in} Nin方向分解为slices,输出的结果可以等价于输入两个线性层之后的叠加,由此函数 g ( ) ˙ g(\dot ) g()˙可以拆分为如下公式(其中的<.>表示dot product点积):
为什么要用两层:一是比一层的参数要少,二是对于共享参数 W o u t 、 B o u t W_{out}、B_{out} Wout、Bout,两层的hperNetwork表示能使结构更为紧凑。
由此就可以用在一些深度卷积网络中,例如Resnet网络,结果如下:
代码:
HyperNetwork,定义了可学习参数
生成embedding
总体结构:
其实大概就是把Residual network中的卷积的权重换成了hpernetwork网络产生的结果(W),这个超网络需要embedding即Z作为激励
github代码
主要是想用一个小一点的RNN模型,来生成main RNNs的参数,其中的参数会随时间变化并生成,故名为动态叭~
HyperRNNs结构图,其中黑色连接和参数,与基本RNNs相关。本文介绍了橙色连接和参数,并与HyperRNNs关联。虚线箭头用于生成参数。
基本RNN的标准公式如下所示:
其中 ϕ \phi ϕ是一个非线性函数,可以是tanh、relu等,
由之前的思路,HyperRNN可以将 h t h_t ht计算为对应于上面的那个图:
由于这样计算会引起存储空间太大,所以改进之后的式子表示为:
其中d是一个权重的缩放向量。