FRN提升方法
经过一些实验,找到了FRN的提升方法,首先上结果。
实验结果
数据集 |
FRN |
NewFRN |
NewL1FRN |
BN |
---|
cifar10 |
91.24% |
92.00% |
91.60% |
92.40% |
cifar100 |
64.54% |
68.38% |
68.28% |
69.06% |
-
cifar10的实验结果
-
cifar100的实验结果
从上面两图以及表格可以看出,新方法可以比FRN更快的收敛,并且在大数据集上取得更好的结果。
方法说明
- FRN:y=max(γσfrnx+β,τ),σfrn=H∗W∑xi2+ϵ
FRN公式如上。用该公式进行训练,存在一个问题。就是收敛太慢。经过实验对比,当把σfrn置为1时,收敛速度大大加快。新方法就是利用了这个特性,
epoch为当前训练的Epoch数量。total_epoch为需要训练的总Epoch数量。为方便书写,令epoch/total_epoch = E。
σNewfrn={1,max(1,α∗σfrn),if E <startif start<E
当start<E<end时,α从0线性增长到1,当E>end时,α以同样的斜率继续增长。通常假设start=0.1,end=0.9.
- NewFRN:y=max(γσNewfrnx+β,τ)
从实验结果来看,NewFRN大幅好于FRN。
NewFRN需要计算二阶矩,在前向和反向传播时,计算量都比较大。用一阶矩代替,可以降低一部分计算量
将σfrn=H∗W∑xi2+ϵ替换成σl1=H∗W∑abs(x)+ϵ,其余不做变化。
从实验结果来看,NewL1FRN并没有明显的差于NEWFRN。
方法弊端
- 没有降低计算量
- 对BN,LN,GN等方法没有效果。猜测之所以出现这种情况,是因为σBN,σGN,σLN都是方差,但是σfrn是二阶矩。所以σfrn>>σBN,σGN,σLN
实验潜在问题
FRN的实验结果很难复现。在GitHub上找了两个复现FRN的人,也没有复现出paper的结果。