您的位置:首页 > Web前端

DeepLearning(基于caffe)优化策略(3)--调参篇

2017-06-09 14:09 369 查看
        我们都知道,DeepLearning是一个非常好用的方法,纵使很多人认为DeepLearning是炼药炉,学习它的是炼药师,但不可否认的是,很多场景下,DeepLearning有着非常好的效果,比如说人脸识别等等。

        DeepLearning中有着成千上万个参数(每一层都有很多的参数),调参自然而然也就成为了一个不可避免的话题。接下来,总结一下深度学习中的调参方法。

      1.训练的数据要尽量准确(包括训练的特征以及标注)

         数据是训练的起始阶段,也是重要阶段。数据的好坏直接决定了模型的效果,就好比你要学习的东西本身就是模棱两可的,那自然不会有太好的效果。

      2.做好相应的归一化操作

        详细请见:http://blog.csdn.net/sihailongwang/article/details/72818603

        如果不进行必要的归一化的话,就会使得各个特征相差很小,减小学习的速率,增加网络时间,并有可能导致无法收敛。

      3.初始化参数也很重要

        推荐论文:《On the importance of initialization and momentum in deep learning》

        设置太大了,影响收敛的速度,甚至无法达到收敛,设置太小了,则参数寻优的时候会不动。

        虽然原则上是随机找一堆参数初始值,然后通过随机梯度下降,找到最好的参数,但是在这篇论文中,论证了初始权值选好的话,会对效果以及收敛速度有着明显的作用,当然如何设置初始化参数,不仅需要在大量实践经验总结而来,而且还要经常看一些paper。

      4.使用momentum

        还是刚才那篇论文,论文中讲到使用Momentum的效果有目共睹的,还提到了NAG(Nesterovs Accelerated Gradient),并将CM(Classical Momentum)和NAG进行了对比(论文中的结论:While each iteration of NAG may only be slightly more effective than CM at correcting a large and inappropriate
velocity,and NAG is able to avoid these oscillations almost entirely)

      5.梯度更新步长

      6.梯度归一化

        就是结果除以minibatch size,这样就可以不显示依赖minibatch size了

      7.限制权重参数的最大值

        不然迭代的容易飞了。

      8.使用dropout

        详细请见:http://blog.csdn.net/sihailongwang/article/details/72847382

        在Caffe框架中,会有专门的Dropout层可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: