bp神经网络算法的要点(零基础机器学习入门)

上接 零基础机器学习入门——浅谈神经网络(四),本节我们主要说说BP算法:

大家可以先简单看看前面的文章,回顾一下前向传播和偏导的概念。本节大家可能会看的比较懵,下一节我们会将这些文字的东西实例化。跳过本节不影响您接下来的学习

BP算法是一种计算偏导数的有效方法,它的基本原理是:利用前向传播最后输出的结果来计算误差的偏导数,再用这个偏导数和前面的隐藏层进行加权求和,如此一层一层地向后传下去,直到输入层(不计算输入层),最后利用每个节点求出的偏导数来更新权重。

bp神经网络算法的要点(零基础机器学习入门)(1)

BP反向传播

定义:“残差(error term)”这个词来表示误差的偏导数。

输出层→隐藏层:残差 = -(输出值-样本值) * 激活函数的导数隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 激活函数的导数如果输出层用Purelin作激活函数,Purelin的导数是1,输出层→隐藏层:残差 = -(输出值-样本值)如果用Sigmoid(logsig)作激活函数,那么:Sigmoid导数 = Sigmoid*(1-Sigmoid)输出层→隐藏层:残差 = -(Sigmoid输出值-样本值) * Sigmoid*(1-Sigmoid) = -(输出值-样本值)*输出值*(1-输出值)隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 当前节点的Sigmoid*(1-当前节点的Sigmoid)如果用tansig作激活函数,那么:tansig导数 = 1 - tansig^2

bp神经网络算法的要点(零基础机器学习入门)(2)

曲线展示

残差全部计算好后,就可以更新权重了:输入层:权重增加 = 当前节点的Sigmoid * 右层对应节点的残差 * 学习率隐藏层:权重增加 = 输入值 * 右层对应节点的残差 * 学习率偏移值的权重增加 = 右层对应节点的残差 * 学习率学习率前面介绍过,学习率是一个预先设置好的参数,用于控制每次更新的幅度。

此后,对全部数据都反复进行这样的计算,直到输出的误差达到一个很小的值为止。以上介绍的是目前最常见的神经网络类型,称为前馈神经网络(FeedForward Neural Network),由于它一般是要向后传递误差的,所以也叫BP神经网络(Back Propagation Neural Network)。

是不是看文字已经兴趣大减?下一节我们就用图形和数字的方式对这些文字进行说明,你会发现原来大名鼎鼎的反向传播算法也不过如此

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页