HyperNetwork
论文地址
1、灵感来源于nature中的基因型(超网络)以及表型(主网络)
2、主要为了解决CNN,RNN中权重不共享以及RNN中全共享的问题,旨在创造一个relaxed weight-sharing across layers的模型,在不特别影响精度的情况下,减少了模型参数。
模型
一、静态 HyperNetwork:深度卷积网络的权重分解方法
超网络为前馈网络生成权重。黑色连接和参数与主网络相关联,而橙色连接和参数与超级网络相关联。
分解原理:
卷积的所有参数:
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代码
二、动态HperNetwork递归网络的自适应权值生成
主要是想用一个小一点的RNN模型,来生成main RNNs的参数,其中的参数会随时间变化并生成,故名为动态叭~
HyperRNNs结构图,其中黑色连接和参数,与基本RNNs相关。本文介绍了橙色连接和参数,并与HyperRNNs关联。虚线箭头用于生成参数。
基本RNN的标准公式如下所示:
其中
ϕ
\phi
ϕ是一个非线性函数,可以是tanh、relu等,
由之前的思路,HyperRNN可以将
h
t
h_t
ht计算为对应于上面的那个图:
由于这样计算会引起存储空间太大,所以改进之后的式子表示为:
其中d是一个权重的缩放向量。