您的位置:首页 > 其它

deep learning:改进BP过程的一些参数设定

2014-02-27 15:30 169 查看
结合模式分类中关于多层神经网络的讲解总结如何提高网络学习能力,主要是改进BP过程的一些trick:

1.在实际训练中,应结合validation的学习曲线变化来决定何时停止训练(error最小的时候),因为训练曲线肯定会在err上一直下降,最终会导致过拟合

2.激活函数,对于激活函数,应该要求存在非线性(不然线性作用线性还是线性,没有学习能力),有上下限(保证能够学习收敛),连续性和光滑性(BP中对导数的求解需要),因此我们多选用sigmoid和tanh。

对于sigmoid参数的设置,最好以0为中心,反对称,f = a tanh(b net) = 2a / (1+exp(-b net)) -a,通常取a=1.716,b=2/3,这样f' = 0.5,这个应该和toolbox中关于tanh的参数设置类似。

3.输入信号尺度变换,这个就是NN中对数据最开始的规格化处理,保证每个特征能平衡的贡献于上层,均值为0,方差为1.

4.带噪声的训练,现在还没用过,应该是防止过拟合

5.隐单元的数量,太少,显然表达能力不足,太多了,会导致训练的err下降,但测试err变大,即过拟合,通常选取n/10个权值相对较好,我们也可以先用较大的数量,然后衰减。

6.学习率,控制学习速度,学习率较小时,方向影响小,可保证收敛,但很慢;较大,则开始震荡收敛,若大于二倍最优,则发散。

对于sigmoid,通常0.1足够,这里可以看toolbox中设置的过大。

最优的学习率可以通过一步学习得到的局部误差最小的那个得到,n = (J''/W)-1,即J对W的二阶导的倒数,具体实际中如何求解,应该也是借助BP中类似。

7.冲量项,目的是允许当误差曲面存在平坦区时,网络还是可以快速学习(BP中)。主要控制BP过程梯度下降的方向,如果学习率为0,相当于没有控制,直接按算法的梯度下降,可能导致达到局部最小,而非最优。

w(m+1) = w(m) + (1-a)delta Wbp(m) + a delta W(m-1),即平衡原方向和新方向,平滑W的变化,a(0,1),通常取0.9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: