The Sandwich Rule

简介: 目标:训练一个可以直接以任意宽度运行的单一网络。其实是在权重共享的条件下,我们可以根据不同的硬件设备挑选不同宽度的网络,不再重训练一个权重。

目标:训练一个可以直接以任意宽度运行的单一网络。其实是在权重共享的条件下,我们可以根据不同的硬件设备挑选不同宽度的网络,不再重训练一个权重。

其中每个输入通道或通道组可以被视为输出神经元的残差分量。所以,更宽的网络的性能不应该比其细小的网络更差(小网络的准确性可以使一个大网络后面的连接为0来实现)。换言之完全聚合的特征y n y^nyn和部分聚合的特征y k y^kyk残差δ \deltaδ存在下界

0δk+1δkδk0,δk=ynyk

这里的y k y^kykk kk个通道的输出,k0是一个超参数,是通道宽度设定的下限例如k 0 = ⌈ 0.25 n ⌉ k_{0}=\lceil 0.25 n\rceilk

假设我么将y n y^ny n

当作一个标杆(真实值),当我们的输入通道减少(设为k kk)时候,这时候我们的输出y k y^ky k

的值与y n y^ny n

之间存在一个残差,而且k的值越小,残差越大,我们设定一个下限k 0 k_0k

0 。从上面公式我们可以得出一些线索。

单个网络可以在[ k 0 , n ] [k_0,n][k

0

,n]任意宽度执行。因为残差随着k kk的增加而变小,而且δ k + 1 ≤ δ k \delta_{k+1} \leq \delta_{k}δ k+1 ≤δ k ,所以说,我们在给定的宽度[ k 0 , n ] [k_0,n][k 0 ,n]之后,我们可以在宽度之内任意选择宽度,而且我们已经限定了最大的残差(无非就是选择通道少,残差大,性能低;反之通道多,接近大网络的特性,残差小,性能好)。所以可以瘦身网络在已界定的范围内,并且可以通过增删通道数量来直接调控网络层的性能和资源消耗之间的关系。

我们暂不谈其它,只再谈论一下作者如何训练的。

The Sandwich Rule

思考:在上面的方程中,我们知道任宽度的性能以最小宽度0.25 × 0.25×0.25×和最大宽度1.0 × 1.0×1.0×性能的为限。换句话说,我们优化上界和下届可以隐式的优化了在他们之间的所有子网络。因此提出了三明治规则,即在每次迭代中,以最小宽度、最大宽度和(n−2)随机宽度训练模型,而不是n个随机宽度,该方法有很好的收敛性和整体性能。好处有:


我们可以在训练时明确地跟踪模型的验证准确性,这也表明了网络的性能下界和上界。

相关文章
|
10月前
|
C++
我应该使用 NULL 还是 0?
我应该使用 NULL 还是 0?
|
缓存 JavaScript Go
你真的了解esModule吗
项目中我们常常会接触到模块,最为典型代表的是esModule与commonjs,在es6之前还有AMD代表的seajs,requirejs,在项目模块加载的文件之间,我们如何选择,比如常常因为某个变量,我们需要动态加载某个文件,因此你想到了require('xxx'),我们也常常会用import方式导入路由组件或者文件,等等。因此我们有必要真正明白如何使用好它,并正确的用好它们。
|
人工智能
Colorful Slimes
题目描述 Snuke lives in another world, where slimes are real creatures and kept by some people. Slimes come in N colors. Those colors are conveniently numbered 1 through N. Snuke currently has no slime. His objective is to have slimes of all the colors together.
74 0
|
Web App开发 前端开发 JavaScript
gulp
gulp 1. 安装 npm install --g gulp 2. 初始化 npm init 3.
1030 0
|
JavaScript 前端开发

热门文章

最新文章