机器学习:神经网络学习之多层前馈神经网络(二)

2019-08-17 16:53发布

现实任务中使用神经网络时,大多是在使用BP算法进行训练。BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,比如递归神经网络。同样地,BP算法也不是完美的,可能会面临各种问题。

结构学习问题

多层前馈神经网络包括:输入层、输出层、一个或多个隐含层。输入层神经元的个数由输入的数据维度(连续属性)和编码方法(离散属性)确定;输出层神经元的个数由待分类的类别数目和编码方法确定。

只需要一个包含足够多神经元的隐含层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。

如何确定隐含层神经元的个数仍然是个悬而未决问题。实际应用中通常是根据经验来确定或者靠“试错法”来调整。

初始化问题

在BP算法中,连接权和偏置在网络学习之前,都需要将其初始化为不同的小随机数。“不同”保证网络可以学习;“小随机数”可以防止其值过大而提前进入饱和状态,达到局部极小值。

解决办法:重新初始化。

步长设置问题

BP网络的收敛是基于无穷小的修改量,学习率控制着算法每一轮迭代中的更新步长。

步长太小,收敛速度就会过慢。步长太大,又可能会导致网络的不稳定,甚至瘫痪。因此,需要自适应步长,让步长随着网络的训练而不断变化。

权值和阈值的更新问题

基本的BP算法采用的是样例更新,即每处理一个训练样例就更新一次权值和阈值。样例更新的缺陷:参数更新频繁,不同样例可能抵消,需要迭代的次数较多。另外,训练样例的输入顺序对训练结果有较大影响,它更“偏爱”较后输入的样例。而给训练样例安排一个适当的顺序,又是非常困难的。

解决的方法就是采用周期更新,即每处理一遍所有的训练样例才更新一次权值和阈值。但在很多实际任务中,周期更新的累计误差下降到一定程度后,进一步下降会非常缓慢,这时样例更新往往会获得较好的解,尤其当训练集非常大时效果更明显。

过拟合问题

神经网络由于强大的表示能力,通常遭遇过拟合。具体表现为:训练误差持续降低,但测试误差却可能上升。

缓解过拟合的策略包括早停和正规化。早停就是在训练过程中,若训练误差降低,但验证误差升高,则停止训练;正则化就是误差目标函数中增加一项描述网络复杂程度的部分,比如连接权值和阈值的平方和。

文章来源: https://www.toutiao.com/group/6726044732553691662/