神经网络是一个好工具,但是就像有的刀削铁如泥,有的却只能拿来切豆腐,
真正决定神经网络好不好用的,是神经元之间连接的权重和神经元的阈值,如何确定这些数字,大部分我们使用的都是反向传播,也就是BP算法,BP算法的思想非常简单,即根据网络输出的答案与正确答案之间的误差,不断调整网络的参数。
假设我们正在训练一个图片分类网络,输入一张图片逐步向前计算后,网络会给出它属于某一类事物的概率,由于每个神经网络的初始参数是随机赋予的,大部分时间网络参数都不尽如人意,这时我们可以根据网络输出与正确答案之间的差距,从最后一层开始逐层向前调整神经网络的参数,如果误差值为负,我们就提升权重,反之就降低权重。
调整的程度受一定的比率,即学习率的制约,它就像一个旋钮,用来控制参数调整程度的高低,在一次次输入数据和反向调整中,网络就能逐渐给出不错的输出。
由于强大的调整能力,BP算法控制下的神经网络很容易过拟合,也就是在训练数据上表现的很好,却认不出新数据是什么,
这时我们可以采用“提前停止”策略,也就是将数据按一定比例划分为“训练集”和“验证集”,用训练集调整参数,用验证集调整误差,如果训练集降低误差的同时验证集的误差在升高,就代表网络开始过于适应“训练集”,这时就可以结束训练。