码迷,mamicode.com
首页 > 其他好文 > 详细

2016.3.28 如何去确定初始参数

时间:2016-05-13 02:16:18      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

如何去确定初始参数

有那么多参数,比如说学习率yita,惩罚的大小lambda,以及minibatch还有网络什么时候停止。

一个比较宏观的思路是为了验证想法,没有必要用全部的数据集,而是采用其中的一部分,验证有效了,再去使用更大的数据集合,而且为了验证想法,可以适当的减小网络的层的深度,而且做更频繁的validation,其实就是相当于做快速的小实验,能够更快的训练网络,看到想法的效果。

所以这样的想法在实验时候非常有效。记住:使用小网络进行小样本的测试。

 

那么对于学习来说,到底什么样的参数合适呢?

学习率:数量级确定之后越大越好。

Early stop:由于学习的时候学习的正确率在震荡,因此难以确定到底是在哪一轮停止,所以采用比如说n轮准确率不上升来确定该停止了。有可能带来的一个问题就是可能在某一阶段,学习到了一个平台,多了一会儿就继续下降,不过这个问题在考虑的时候不用考虑这么多,因为这样的概率还是比较少的,或者觉得不够好,再修改n。不过这确实是一个即使停止训练的有效的方法。

Lambda:这是为了惩罚w过大,确定了学习率之后进行相关的调试,找到一个比较好的值,反过来再调整一下学习率lambda。这样相互交替,达到一个比较好的结果。其实学习率可以看成是步长,而梯度下降可以看成是方向,我要在某个方向上走长的距离,而lambda决定了方向,按照原来的思路,其实在某一个方向上的数值要进行改变的时候是稍微减小,也不会变化特别的大,于是就是相当于,我不是再当前的点上进行调整,而是稍微减小了一些之后再进行调整,不过总觉的怪怪的,因为虽然说是减小,但是实际上相当于再参数空间变换了一个位置,再按照原来的位置进行一个学习。

Minibatch size:为了充分发挥计算机的计算能力,可以采用想量化的变成或者是并行计算,这样的计算效率要高好多,所以通过这样的方式能够有效的减少训练的真实时间。

 

下面问题来了:

1.    有没有一个程序能够自动调参,当然,我说的不是枚举,而是通过某种可以和网络输出结果相互动的方式来进行参数的学习。

2.    lambda可以看成是希望减小w,小了之后对于特别奇葩的值就不是很敏感,但是如果从参数空间上来看,是缩放到了另一个点之后再调整,那么这两个点之间有什么关系?

2016.3.28 如何去确定初始参数

标签:

原文地址:http://blog.csdn.net/zhaohui1995_yang/article/details/51346701

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!