作者:Captain Jack
链接:https://www.zhihu.com/question/25097993/answer/127472322
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
深度学习 14. 深度学习调参,CNN参数调参,各个参数理解和说明以及调整的要领。underfitting和overfitting的理解,过拟合的解释
简短的注意事项
- 预处理: -mean/std zero-center就够了, PCA, 白化什么的都用不上., 反正CNN能学习encoder, PCA用不用其实关系不大, 大不了网络里面自己学习出来
- shuffle, shuffle, shuffle.网络原理的理解最重要, CNN的conv这块, 你得明白sobel算子的边界检测.
- Dropout, Dropout, Dropout(不仅仅可以防止过拟合, 其实这相当于做人力成本最低的Ensemble, 当然, 训练起来会比没有Dropout的要慢一点, 同时网络参数你最好相应加一点, 对, 这会再慢一点).CNN更加适合训练回答是否的问题, 如果任务比较复杂, 考虑先用分类任务训练一个模型再finetune.。
- 无脑用ReLU(CV领域).。
- 无脑用3x3.。
- 无脑用xavier。
- LRN一类的, 其实可以不用. 不行可以再拿来试试看.。
- filter数量2^n.多尺度的图片输入(或者网络内部利用多尺度下的结果)有很好的提升效果.第一层的filter, 数量不要太少. 否则根本学不出来(底层特征很重要).。
- sgd adam 这些选择上, 看你个人选择. 一般对网络不是决定性的. 反正我无脑用sgd + momentum.。
- batch normalization我一直没用, 虽然我知道这个很好, 我不用仅仅是因为我懒. 所以要鼓励使用batch normalization.不要完全相信论文里面的东西. 结构什么的觉得可能有效果, 可以拿去试试. 。
- 你有95%概率不会使用超过40层的模型.。
- shortcut的联接是有作用的.暴力调参最可取, 毕竟, 自己的生命最重要. 你调完这个模型说不定过两天这模型就扔掉了.机器, 机器, 机器. Google的inception论文, 结构要好好看看.一些传统的方法, 要稍微了解了解. .
- 激活函数我们现在基本上都是采用Relu,而momentum一般我们会选择0.9-0.95之间,weight decay我们一般会选择0.005, filter的个数为奇数,而dropout现在也是标配的存在。这些都是近年来论文中通用的数值,也是公认出好结果的搭配。所以这些参数我们就没有必要太多的调整。
- 14.