l2tp连接尝试失败 因为安全层在初始化_来捋捋batch norm,初始化,和优化

因为要准备面试,把之前摘录的简单梳理下,名词缩写从简,有空再好好补充。

首先,不准备写一个完整的normalization和初始化的清单,应该也不难搜到。

看到很多文章引用bn的时候,还是在提ICS的解释,有点难过。更甚至于还有bn把输入归一化到0附近减少梯度消失的解释,说着说着发现还有个beta和gamma,然后就尿了。

其实18年就有人发表跟进文章:ICS不能解释bn的作用。稍微捋捋这条线,也当做笔记。

优化领域本身也很玄学,一方面有很多工作研究怎么降低train loss;另一方面,train loss低的解不一定泛化能力强,所以有人研究什么样的解泛化能力更强,比过拟合稍微复杂些,毕竟double descent目前也没有很好的解释。第二条线本篇先略过了,有机会再挖坑。

tldr;

bn的作用是光滑loss;bn,ics,performence 3者没有必然关系;

合理的初始化能找到更光滑的初始区域,从而去掉bn,或者warm-up;

最后的很短的总结可以瞄一眼,总结了下几个主题之间的关系。

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift,2015

原文总结的bn的作用:1. 允许大lr;2. 初始化不敏感;3. 一种正则,减少对dropout的需求。

除了操作上的别扭,也有一些其他文章提及bn的负面作用[1][2]

原文将bn的成功归因为减少bn前一层输出的ics,也就是参数更新前后,某一层输入分布的变化。后面的工作基本上推翻了这个解释。

How Does Batch Normalization Help Optimization? 2018

这篇文章的几个结论:

  1. ics和bn带来的性能提升没关系
  2. bn不能减少ics
  3. bn有用的原因是它能使损失函数曲面(loss landscape)更光滑

下图是在某个点,沿着一个梯度方向走,观察到的loss,loss方差越大,越容易产生梯度爆炸,结果就是发散。

30afa1f602b27c136b01ed5cb821678f.png

Fixup Initialization: Residual Learning Without Normalization,2019

这篇文章说的是,其实不需要bn,只要找到一个好的初始化。结论是针对resnet的,之前还有一篇针对vanilla cnn的dynamic isometry研究[3],没时间看了,等忙完一起补。

分析:

  1. 标准初始化导致某些层的梯度随着深度爆炸
  2. 想要使gradient norm和深度无关,只要两步:
    1. 标准初始化之后,缩放一下每层的参数
    2. 在分支上加几个乘数和bias

按照不严谨的思考,这意味着在参数空间的某些区域里,梯度呈现爆炸,像是雷区,不能开大lr走,在另一些区域里,就更加安全(光滑),可以用大lr训练;bn能减少这种雷区。

类似这个原理的工作还有rezero[4],也是针对residual连接,residual分支的0初始化,可以去除warm-up和layer norm。

这是不是意味着warm-up有了一个直观解释?通过小lr迭代进入安全区,再开始大lr训练,不过这种解释也没有实验验证,我看过的唯一专门讨论warm-up的工作[5]好像也没解释原因,有时间再去调研一下。不过对使用warm-up原因还是有比较一致的观点,初始化区域的loss方差太大,逼格高一点的说法就是loss的Lipschitzness特性不够好。

刚看到一篇ICLR2020关于warm-up的投稿[6](虽然被拒了,分析和结论还挺有意义的,这里看中文[7]),把layer-norm移到residual分支,能缓解初始区域梯度爆炸的问题,从而不需要warm-up。还没来得及细看论文,以后补吧。

总结

可以看到,优化的研究方向:

  1. 寻找更光滑的区域(挑简单的路走)
  2. 改造网络,使整体的loss landscape整体上更光滑(改造山路)
  3. 使优化器更鲁棒,来应对不光滑的loss,使优化器能在各种崎岖山路一马平川(改进交通工具)

对应的方法:

  1. 主要是各种初始化方案
  2. 各种norm
  3. 各种优化技巧,比如warm-up,RAdam[8],Gradient Centralization[9]

第一种方向听起来像是逃避现实,实际上也有相关的更深入的研究,是优化领域的另一条线:SGD实际上本身就是一种正则化,只会搜索初始化附近一个领域。所以初始化区域挑好了,就很难再走到那些雷区。

好像还有证明,等下次来更新补充,本来不想这么短就结束,要滚去刷题了,时间超预算了,扎心。

TOREAD

19年的两篇文章[10][11]研究了bn的负作用:

bn似乎要配合skip连接才能光滑loss,否则会使初始梯度更加容易爆炸[10]

bn容易造成模型不robust,带来对抗样本[11]

参考

  1. ^CPC http://arxiv.org/abs/1905.09272
  2. ^adversary https://www.reddit.com/r/MachineLearning/comments/d2m5zr/d_batch_normalization_is_a_cause_of_adversarial/
  3. ^dynamic_isometry https://arxiv.org/abs/1806.05393
  4. ^rezero https://arxiv.org/abs/2003.04887
  5. ^warmup https://openreview.net/forum?id=r14EOsCqKX
  6. ^On Layer Normalization in the Transformer Architecture https://openreview.net/forum?id=B1x8anVFPr
  7. ^香侬读 | Transformer中warm-up和LayerNorm的重要性探究 https://zhuanlan.zhihu.com/p/84614490
  8. ^Ranger https://zhuanlan.zhihu.com/p/100877314
  9. ^GC https://arxiv.org/abs/2004.01461v2
  10. ^abA Mean Field Theory of Batch Normalization https://arxiv.org/abs/1902.08129
  11. ^abBatch Normalization is a Cause of Adversarial Vulnerability https://arxiv.org/abs/1905.02161
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值