首页 > 编程语言 > 详细

吴恩达机器学习笔记29-反向传播算法(Backpropagation Algorithm)

时间:2019-02-22 22:06:19      阅读:1474      评论:0      收藏:0      [点我收藏+]

之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层
开始正向一层一层进行计算,直到最后一层的??? (??)。

现在,为了计算代价函数的偏导数技术分享图片我们需要采用一种反向传播算法,也就是

首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。 以一
个例子来说明反向传播算法。
假设我们的训练集只有一个实例(??(1), ??(1)),我们的神经网络是一个四层的神经网络,
其中?? = 4,???? = 4,?? = 4:
前向传播算法:

技术分享图片

技术分享图片

我们从最后一层的误差开始计算,误差是激活单元的预测( (4)
k a )与实际值(????)之间的误差,(?? = 1: ??)。

我们用??来表示误差,则:技术分享图片

我们利用这个误差值来计算前一层的误差:技术分享图片其中 ??′(??(3))

是 ?? 形函数的导数,技术分享图片

而(??(3))????(4)则是权重导致的误差的和。
下一步是继续计算第二层的误差: ??(2) = (??(2))????(3) ? ??′(??(2))

因为第一层是输入变量,不存在误差。我们有了所有的误差的表达式后,便可以计算代
价函数的偏导数了,假设?? = 0,即我们不做任何正则化处理时有:

技术分享图片

重要的是清楚地知道上面式子中上下标的含义:
?? 代表目前所计算的是第几层。
?? 代表目前计算层中的激活单元的下标,也将是下一层的第??个输入变量的下标。
?? 代表下一层中误差单元的下标,是受到权重矩阵中第??行影响的下一层中的误差单元
的下标。
如果我们考虑正则化处理,并且我们的训练集是一个特征矩阵而非向量。在上面的特殊
情况中,我们需要计算每一层的误差单元来计算代价函数的偏导数。在更为一般的情况中,
我们同样需要计算每一层的误差单元,但是我们需要为整个训练集计算误差单元,此时的误
差单元也是一个矩阵,我们用??????
(??)来表示这个误差矩阵。第 ?? 层的第 ?? 个激活单元受到第 ??
个参数影响而导致的误差。
我们的算法表示为:

技术分享图片

即首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的
结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。
在求出了??????
(??)之后,我们便可以计算代价函数的偏导数了,计算方法如下:

技术分享图片

吴恩达机器学习笔记29-反向传播算法(Backpropagation Algorithm)

原文:https://www.cnblogs.com/sl0309/p/10420812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!