超参数调试

来源:互联网 发布:网络带来的危害 编辑:程序博客网 时间:2024/06/05 04:39

1. 随机选取,而不是grid search:举个极端的例子,比如Adam algorithm中的learning rate 和 为了防止0为分母而加的一个比较小的值,很明显搜索后者是没什么用的,如果用5*5的grid search,最重要的learning rate只搜索了5个,而如果random的话可以search到25个learning rate 


2. 在合适的范围内随机选取超参数,比如有时需要在对数坐标下选取


3. 调试:可以对一个网络时不时地调整超参数,也可以同时训练多个超参数不同的model


4. batch normalization:batch normalization makes your hyperparameter search problem easier,(现在还没明白为什么?),makes the neural network much more robust to the choice of hyperparameters and will also enable you to much more easily train even very deep networks(ResNet)

实现BN的过程就是对hidden layer进行归一化得到Z,再通过2个参数得到Z'(每层每个feature都有这样的2个参数,是learnable的)控制最后归一化的均值和方差


原因的话:

(1)类似于普通的归一化

(2)BN限制了前面参数更新给后面一部分网络带来的影响(至少均值,方差差不多),减弱了层与层之间的耦合,thus, speed up training

关于BN值得一提的还有2点:

(1)BN有一定的regularization的效果,因为对数据进行scale,然后又是mini-batch,会引入noise,这就像drop -out 一样,有点regularization的效果,好像在ResNet的paper里面也有说到

(2)test的时候只输入一个数据,对单个数据求均值和方差没有意义,所以在training的时候就要keep track of均值和方差,然后用指数加权平均的方式feed 给test data