Batch Normalization, 批标准化,神经网络shortcut 是什么,无脑用ReLU(CV领域). 无脑用3x3.

145 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

Batch Normalization, 批标准化

和普通的数据标准化类似, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 在之前 Normalization 的简介视频中我们一提到, 具有统一规格的数据, 能让机器学习更容易学习到数据之中的规律.

神经网络shortcut 是什么

shortcut(或shortpath,中文“直连”或“捷径”)是CNN模型发展中出现的一种非常有效的结构。

研究人员发现,网络的深度对CNN的效果影响非常大,但是单纯地增加网络深度并不能简单地提高网络的效果,由于梯度发散,反而可能损害模型的效果。而shortcut的引入就是解决这个问题的妙招。

Resnet为例:在残差网络中,一个“捷径(shortcut)”或者说“跳跃连接(skip connection)”允许梯度直接反向传播到更浅的层。

简短的注意事项:

  1. 预处理: -mean/std zero-center就够了, PCA, 白化什么的都用不上. 我个人观点, 反正CNN能学习encoder, PCA用不用其实关系不大, 大不了网络里面自己学习出来一个.
  2. shuffle, shuffle, shuffle.
  3. 网络原理的理解最重要, CNN的conv这块, 你得明白sobel算子的边界检测.
  4. Dropout, Dropout, Dropout(不仅仅可以防止过拟合, 其实这相当于做人力成本最低的Ensemble, 当然, 训练起来会比没有Dropout的要慢一点, 同时网络参数你最好相应加一点, 对, 这会再慢一点).
  5. CNN更加适合训练回答是否的问题, 如果任务比较复杂, 考虑先用分类任务训练一个模型再finetune.
  6. 无脑用ReLU(CV领域).
  7. 无脑用3x3.
  8. 无脑用xavier.
  9. LRN一类的, 其实可以不用. 不行可以再拿来试试看.
  10. filter数量2^n.
  11. 多尺度的图片输入(或者网络内部利用多尺度下的结果) 有很好的提升效果.
  12. 第一层的filter, 数量不要太少. 否则根本学不出来(底层特征很重要).
  13. sgd adam 这些选择上, 看你个人选择. 一般对网络不是决定性的. 反正我无脑用sgd + momentum.
  14. batch normalization我一直没用, 虽然我知道这个很好, 我不用仅仅是因为我懒. 所以要鼓励使用batch normalization.
  15. 不要完全相信论文里面的东西. 结构什么的觉得可能有效果, 可以拿去试试.
  16. 你有95%概率不会使用超过40层的模型.
  17. shortcut的联接是有作用的.
  18. 暴力调参最可取, 毕竟, 自己的生命最重要. 你调完这个模型说不定过两天这模型就扔掉了.
  19. 机器, 机器, 机器.
  20. Google的inception论文, 结构要好好看看.