目标:训练一个可以直接以任意宽度运行的单一网络。其实是在权重共享的条件下,我们可以根据不同的硬件设备挑选不同宽度的网络,不再重训练一个权重。
其中每个输入通道或通道组可以被视为输出神经元的残差分量。所以,更宽的网络的性能不应该比其细小的网络更差(小网络的准确性可以使一个大网络后面的连接为0来实现)。换言之完全聚合的特征y n y^nyn和部分聚合的特征y k y^kyk残差δ \deltaδ存在下界
0≤δk+1≤δk≤δk0,δk=∣∣yn−yk∣∣
这里的y k y^kyk前k 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个随机宽度,该方法有很好的收敛性和整体性能。好处有:
我们可以在训练时明确地跟踪模型的验证准确性,这也表明了网络的性能下界和上界。