超网络 HyperNetworks 是什么?用一个网络生成另一个网络的权重
超网络(HyperNetworks)是一种用一个神经网络来生成另一个神经网络权重的结构。谷歌大脑的 David Ha、Andrew Dai 和 Quoc Le 在 2016 年发表的论文《超网络》中系统地提出了这一思路。负责生成权重的网络被称为超网络,而被生成权重的那个网络被称为主网络或目标网络。
和传统网络有什么不同
在传统的神经网络中,每一层的权重都是独立的参数,在训练中直接被优化,训练完成后就固定不变。而在超网络的结构中,主网络的权重不是直接学习出来的,而是由超网络根据某些输入“计算”出来的。训练时,优化的是超网络的参数;超网络学会了如何为主网络生成合适的权重。这就像是:传统网络是直接把一件衣服做出来,而超网络是学会了一套“裁剪的方法”,可以根据需要裁出不同的衣服。
有什么好处
减少参数和权重共享:主网络可能有很多层,每层有大量的权重。如果用一个小的超网络,根据每一层的“层编号”或一个小的嵌入向量来生成这一层的权重,那么总的参数量可以大大减少,不同的层之间也自然地共享了信息。动态调整:超网络可以根据输入的不同,实时地生成不同的权重,让主网络的行为随着输入而变化。论文中把这一思想用于循环神经网络,让网络的权重在处理序列的每一步都可以根据当前的状态进行调整,在语言建模和手写生成等任务上取得了不错的效果。
应用
超网络的思想在很多领域都有应用。元学习和小样本学习:让超网络根据一个新任务的少量示例,直接生成一个适合这个任务的模型权重,快速适应新任务。持续学习:为不同的任务生成不同的权重,减少任务之间的相互干扰。神经架构搜索:用超网络为大量候选的网络结构生成权重,快速评估它们的效果,而不必逐个训练。在 AI 图像生成领域,超网络也被用于个性化定制:比如根据用户提供的几张照片,生成一组用于微调扩散模型的权重,让模型学会生成特定的人物或风格,HyperDreamBooth 等方法就采用了这样的思路,比逐个微调更快。还有研究用超网络生成 LoRA 的权重,让大模型根据任务描述直接得到对应的适配参数。