赞
踩
BP(Back Propagation)网络是1985年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。一个最简单的三层BP神经网络:
BP神经网络的学习目的是希望能够学习到一个模型,能够对输入运算后输出一个我们期望的输出。
后向传播的对象是训练过程中的分类误差,通过从输出层到前一隐含层,再到更前一层的隐含层,逐层向后传递计算出所有层的误差估计。
在BP神经网络中,只有相邻的神经层的各个单元之间有联系,除了输出层外,每一层都有一个偏置结点:
上图中隐藏层只画了一层,但其层数并没有限制,传统的神经网络学习经验认为一层就足够好,而最近的深度学习观点认为在一定范围内,层数越多,模型的描述和还原能力越强。
偏置结点是为了描述训练数据中没有的特征,偏置结点对于下一层的每一个结点的权重的不同而生产不同的偏置,于是可以认为偏置是每一个结点(除输入层外)的属性。
训练一个BP神经网络,实际上就是在外界输入样本的刺激下不断调整网络的权重和偏置这两个参数,以使网络的输出不断接近期望的输出,BP神经网络的训练过程分两部分:
BP网络训练开始之前,对网络的权重和偏置值进行初始化,权重取[-1,1]之间的一个随机数,偏置取[0,1]间的一个随机数。神经网络的训练包含多次的迭代过程,每一次迭代(训练)过程都使用训练集的所有样本。
每一轮训练完成后判断训练样本的分类正确率和最大训练次数是否满足设定条件,如果满足则停止训练,不满足则从前向传输进入到逆向传输阶段。
逆向反馈(Backpropagation)
逆向反馈从最后一层即输出层开始,训练神经网络作分类的目的往往是希望最后一层的输出能够描述数据记录的类别,比如对于一个二分类的问题,我们常常用两个神经单元作为输出层,如果输出层的第一个神经单元的输出值比第二个神经单元大,我们认为这个数据记录属于第一类,否则属于第二类。
逆向反馈是为了调整网络的参数,即权重值和偏置值,而调整的依据就是网络的输出层的输出值与类别之间的差异,通过调整参数来缩小这个差异,这就是神经网络的优化目标。对于输出层:
其中Ej表示第j个结点的误差值,Oj表示第j个结点的输出值,Tj记录输出值,比如对于2分类问题,我们用01表示类标1,10表示类别2,如果一个记录属于类别1,那么其T1=0,T2=1。
中间的隐藏层并不直接与数据记录的类别打交道,而是通过下一层的所有结点误差按权重累加,计算公式如下:
其中Wjk表示当前层的结点j到下一层的结点k的权重值,Ek下一层的结点k的误差率。
计算完误差率后,就可以利用误差率对权重和偏置进行更新,首先看权重的更新:
其中λ表示表示学习速率,取值为0到1,学习速率设置得大,训练收敛更快,但容易陷入局部最优解,学习速率设置得比较小的话,收敛速度较慢,但能一步步逼近全局最优解。
更新完权重后,还有最后一项参数需要更新,即偏置:
梯度下降法
BP中通过训练误差来逐步调整各层间的输入权重和偏置,这个调整的过程依据的算法一般有两种,一是梯度下降法(Gradient Descent),一是最小二乘法。
训练误差(损失函数)是关于输入权重和偏置的二次函数,分别对权重和偏置求偏导数,也就是梯度向量,沿着梯度向量的方向,是训练误差增加最快的地方, 而沿着梯度向量相反的方向,梯度减少最快,在这个方向上更容易找到训练误差函数(损失函数)的最小值。
梯度下降法的直观理解参见下图:
在山峰附件的某处,要一步一步走向山底,一个好的办法是求解当前位置的梯度,然后沿着梯度的负方向向下走一步,然后继续求解当前位置的梯度,继续沿着梯度的负方向走下去,这样一步一步直到山底,这其中用到的方向就是梯度下降法。
梯度下降法也有一个问题就是如果初始点的位置选择的不合适,就容易导致找到的一个局部最优解,而不是全局最优解。
1. 算法的步长选择。在前面的算法描述中,我提到取步长为1,但是实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。
2. 算法参数的初始值选择。 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
3.归一化。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化,也就是对于每个特征x,求出它的期望
这样特征的新期望为0,新方差为1,迭代次数可以大大加快。
梯度下降法分类
批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本来求梯度。
随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。
在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。
梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。
梯度下降法和牛顿法/拟牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。