On Hiding Neural Networks Inside Neural Networks
https://arxiv.org/abs/2002.10078v3
本文提出了一种新颖的隐写方式,在神经网络中隐藏一个神经网络。神经网络所包含的参数往往比训练数据更多,过剩的参数量给信息隐藏提供了天然的土壤。神经网络拥有千万级甚至上亿的数据量,也就导致其参数的可能取值非常非常多,参数空间非常非常大。多任务的实质就是:优化获得分别满足各个任务的性能要求的参数空间的交集。
本文也可以看成是一个多任务学习,满足原始任务,同时嵌入一个网络。而本文实现这一任务的方式就是:参数共享。
做法
定义,显网络
h
h
h,隐网络
h
π
h_\pi
hπ,以及密钥
k
k
k。
对于每层网络,其权重是
w
w
w,使用密钥
k
k
k,控制
w
→
w
π
w\rightarrow w_\pi
w→wπ的映射关系。其中
π
:
{
1
,
…
,
d
}
→
{
1
,
…
,
d
}
\pi:\{1,\ldots,d\}\rightarrow\{1,\ldots,d\}
π:{1,…,d}→{1,…,d}是一个受密钥控制的映射关系。也就是重新排列。
这样,显网络和隐网络之间就实现了参数的共享。
同时训练这两个网络的方法类似于多任务学习。区别在于,两者之间只存在参数的共享,而不存在feature的共享。
损失函数
在训练过程中,定义两个任务的损失函数,以两个不同的数据集,public数据集合secret数据集。在每次训练迭代的过程中,从两个数据集中分别采样。
对权重的更新也是同时考虑两个任务。
实验略。训练细节处理略。要下班了。溜了。