FRN实验记录

本文记录了FRN(Feature Response Normalization)的优化实验,包括σ修正、max函数导数修正,以及在BN、LN、GN上的测试。实验表明,σ修正中引入学习变量和特定lr策略能改善性能,但max函数导数修正效果不一。在无warm up和cosine decay时,FRN无法收敛。此外,提出的问题包括新方法的稳定性、优势及其优化潜力。
摘要由CSDN通过智能技术生成

在batchsize128的情况下,变化ramp-up,看最佳的ramp-upepoch是多少。

ramp-up 20 50 80
FRN 91.74% 92.30% 92.28%

感觉最优的rampup应在50~80个epoch之间,暂用50.

0:后续实验计划

  • cifar100上FRN效果太差,复现的结果有问题。需要更正。

  • 测试3 的方法究竟有什么好处?更快的收敛究竟意味着什么?
    接下来的实验要从三方面入手:
    1:该方法是否稳定?
    2:该方法究竟有什么好处?
    3:该方法能够进一步优化?
    针对第一点,比较好的方法就是多个数据集检验。鉴于目前算力,只在svhn和cifar100上跑一下就可以,应该足够说明问题。
    针对第二点,因为FRN复现有问题(cifar100上结果不对,同时也找不到更好的调参方式),同时,如果该方法对BN,LN,WN等方式都有好处,将会有更大的意义。所以先不再以FRN为基础,而是转向BN,LN,WN。从BN开始。 目前FRN面临的问题就是训练困难。需要采用warmup和cosine形式的lr下降方式才能work。这种新的训练方式能否降低对这些技巧的依赖,使得该方法更加普适?
    针对第三点,这种训练方式也许说明了方差不那么重要。能否用其他的东西来代替方差?另外,这种方法对BN有没有效果?

1: σ \sigma σ修正

1.1 Max_Min_FRN

在ramp-up 50的情况下,变化batchsize,看各种算法的accuracy。

Image per GPU 128 32
BN 93.01% 92.01%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
No_sigma_FRN_V1 91.51% 91.50%
No_sigma_FRN_V2 91.71% 91.71%

三种layer的公式如下:

  • B N : x ^ = γ x − μ b n σ b n + β , σ b n = ∑ ( x i − μ ) 2 H ∗ W ∗ B BN: \hat{x}=\gamma\frac{x-\mu_{bn}}{\sigma_{bn}}+\beta,\sigma_{bn}=\sqrt{\frac{\sum (x_i-\mu)^2}{H*W*B}} BN:x^=γσbnxμbn+β,σbn=HWB(xiμ)2

  • F R N : x ^ = m a x ( γ x σ f r n + β , τ ) , σ f r n = ∑ x i 2 H ∗ W FRN:\hat{x}=max(\gamma\frac{x}{\sigma_{frn}}+\beta,\tau),\sigma_{frn}=\sqrt{\frac{\sum x_i^2}{H*W}} FRN:x^=max(γσfrnx+β,τ),σfrn=HWxi2

  • M a x _ M i n _ F R N : x ^ = m a x ( γ x σ r a n g e + β , τ ) , σ r a n g e = x m a x − x m i n 2 ∗ l n ( H ∗ W ) , x m a x , x m i n 是 在 H W 两 个 维 度 统 计 的 Max\_Min\_FRN:\hat{x}=max(\gamma\frac{x}{\sigma_{range}}+\beta,\tau),\sigma_{range}=\frac{x_{max}-x_{min}}{\sqrt{2*ln(H*W)}},x_{max},x_{min}是在HW两个维度统计的 Max_Min_FRN:x^=max(γσrangex+β,τ),σrange=2ln(HW) xmaxxmin,xmax,xminHW

  • N o _ σ _ F R N _ V 1 : x ^ = m a x ( γ x + β , τ ) No\_\sigma\_FRN\_V1:\hat{x}=max(\gamma x +\beta,\tau) No_σ_FRN_V1:x^=max(γx+β,τ)

  • N o _ σ _ F R N _ V 2 : x ^ = m a x ( x , τ ) No\_\sigma\_FRN\_V2:\hat{x}=max( x,\tau) No_σ_FRN_V2:x^=max(x,τ)
    从上面表格可以看出,

  • FRN在两种batchsize中表现一致。这不仅依赖于FRNlayer的设计( σ f r n \sigma_{frn} σfrn与batch无关,且无需计算mean),也与FRN的lr设置相关。lr的初始值是 0.1 ∗ b a t c h _ s i z e / 256 0.1*batch\_size/256 0.1batch_size/256,是一个与batchsize相关的量,如果没有这个设计,小batchsize也会使得FRN性能变差。

  • FRN在Images per GPU 128的情况下,是差于BN的。但是paper里面最大的Images per GPU是32,而在Images per GPU 32的情况下,FRN性能优于BN。所以这个结果是与paper里面结果一致的。

  • Max_Min_FRN效果较FRN差距比较大。但是在小batchsize下,与BN基本持平。与FRN差距较大的原因,初步分析,是由于 σ r a n g e = x m a x − x m i n 2 ∗ l n ( H ∗ W ) ≈ σ b n = ∑ ( x i − μ ) 2 H ∗ W ∗ B < < σ f r n = ∑ x i 2 H ∗ W \sigma_{range}=\frac{x_{max}-x_{min}}{\sqrt{2*ln(H*W)}}\approx\sigma_{bn}=\sqrt{\frac{\sum (x_i-\mu)^2}{H*W*B}}<<\sigma_{frn}=\sqrt{\frac{\sum x_i^2}{H*W}} σrange=2ln(HW) xmaxxminσbn=HWB(xiμ)2 <<σfrn=HWxi2

  • 非常有意思的点是,当我们把方差 σ \sigma σ置为1时,效果仍然不错。而且与 γ , β \gamma,\beta γ,β关系不大。同时,我们发现这种训练在前期收敛速度特别快,远远超过正常的FRN。这是一个很好的性质。只是在后期,他的精度无法达到FRN的级别。

1.2:对 σ f r n \sigma_{frn} σfrn的一种估计

有高斯分布性质,大体可以认为, σ f r n ≈ μ 2 + σ 2 \sigma_{frn}\approx\sqrt{\mu^2+\sigma^2} σfrnμ2+σ2 ,这里的 μ , σ \mu,\sigma μ,σ指在H,W两个维度上算出的均值方差。
若方差用 σ r a n g e \sigma_{range} σrange代替,均值用 ( x m a x + x m i n ) / 2 (x_{max} + x_{min})/2 (xmax+xmin)/2代替,可以降低运算量。

  • M a x _ M i n _ F R N _ V 2 : x ^ = m a x ( γ x σ r a n g e _ v 2 + β , τ ) , σ r a n g e _ v 2 = ( x m a x − x m i n ) 2 2 ∗ l n ( H ∗ W ) + ( x m a x + x m i n ) 2 4 Max\_Min\_FRN\_V2:\hat{x}=max(\gamma\frac{x}{\sigma_{range\_v2}}+\beta,\tau),\sigma_{range\_v2}=\sqrt{\frac{(x_{max}-x_{min})^2}{2*ln(H*W)}+\frac{(x_{max}+x_{min})^2}{4}} Max_Min_FRN_V2:x^=max(γσrange_v2x+β,τ),σrange_v2=2ln(HW)(xmaxxmin)2+4(xmax+xmin)2
Image per GPU 128 32(batchsize:64,GPU:2)
BN 93.01% 92.01%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
Max_Min_FRN _V2 91.80% 91.81%
1.3:用可学习变量代替方差
  • L e a r n a b l e _ V 1 : y = m a x ( γ ∗ m i n ( x , α ) + β , τ ) Learnable\_V1:y=max(\gamma *min(x,\alpha)+\beta,\tau) Learnable_V1:y=max(γmin(x,α)+β,τ)
Image per GPU 128 32(batchsize:64,GPU:2)
BN 93.01% 92.40%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
Max_Min_FRN _V2 91.80% 91.81%
Learnable_V1 90.55%

  • L e a r n a b l e _ V 2 : y = m a x ( γ ∗ m i n ( x , α ) + β , τ ) / ( α − β ) Learnable\_V2:y=max(\gamma *min(x,\alpha)+\beta,\tau)/(\alpha - \beta) Learnable_V2:y=max(γmin(x,α)+β,τ)/(αβ)
Image per GPU 128 32(batchsize:64,GPU:2)
BN 93.01% 92.01%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
Max_Min_FRN _V2 91.80% 91.81%
Learnable_V1 90.55%
Learnable_V2 不收敛,效果很差
  • L e a r n a b l e _ V 3 : y = 2 ∗ m a x ( γ ∗ m i n ( x , α ) + β , τ ) / ( α + β ) Learnable\_V3:y=2*max(\gamma *min(x,\alpha)+\beta,\tau)/(\alpha + \beta) Learnable_V3:y=2max(γmin(x,α)+β,τ)/(α+β)
Image per GPU 128 32(batchsize:64,GPU:2)
BN 93.01% 92.01%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
Max_Min_FRN _V2 91.80% 91.81%
Learnable_V1 90.55%
Learnable_V2 不收敛,效果很差
Learnable_V3 不收敛,效果很差
  • L e a r n a b l e _ V 4 : y = m a x ( γ ∗ m i n ( x , α ) + β , τ ) / d e t a c h ( α − β ) Learnable\_V4:y=max(\gamma *min(x,\alpha)+\beta,\tau)/detach(\alpha - \beta) Learnable_V4:y=max(γmin(x,α)+β,τ)/detach(αβ)
Image per GPU 128 32(batchsize:64,GPU:2)
BN 93.01% 92.01%
FRN 92.30% 92.31%
Max_Min_FRN 91.25% 91.25%
Max_Min_FRN _V2 91.80% 91.81%
Learnable_V1 90.55%
Learnable_V2 不收敛,效果很差
Learnable_V3 不收敛,效果很差
Learnable_V4 不收敛,效果很差
  • L e a r n a b l e _ V 5 : y = m a x ( γ ∗ l e a k y _ m i n ( x , u p l i m , s l
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值