吴恩达|如何理解神经网络误差反向传播算法

在吴恩达《机器学习》的教学视频中,讲神经网络反向传播章节时,神经单元误差是直接给出的推导式,第一反应是这玩意儿怎么来的?有什么用?
在网上看了些相关文章后,还是理解的不透彻,之后看了《深度学习的数学》这本书的描述后才测底明白,在此总结一下。

首先,明确一点,神经单元误差与平方误差虽然都是表达“误差”的意思,但是它们的含义却完全不一样。

问题1:为什么要引入误差反向传播算法?用“梯度下降算法”中 ∂ J ( θ ) ∂ w j i l \frac{\partial J(\theta)}{\partial w_{ji}^{l}} wjilJ(θ)直接计算偏导项来更新参数不行吗?
答:可以利用“梯度下降法”中直接计算偏导数的形式来更新神经网络的每个参数,但是,在神经网络中,偏导数的计算量十分巨大且复杂。因此,才引入了误差反向传播算法。误差反向传播算法的特点是将繁杂的导数计算替换为数列的递推关系式,而提供这些递推关系式的就是名为神经单元误差的变量 δ j l \delta_{j}^{l} δjl

问题2:神经单元误差是怎么推导出来的?含义是什么?
答:《深度学习的数学》中是直接先给出了神经单元误差的定义:
δ j l = ∂ J ( θ ) ∂ z j l ( l = 2 , 3 , . . . ) \delta _{j}^{l}=\frac{\partial J(\theta)}{\partial z_{j}^{l}}(l = 2,3,...) δjl=zjlJ(θ)(l=2,3,...)
然后,用 δ j l \delta_{j}^{l} δjl表示平方误差关于权重的偏导数(具体过程可以参考该书的电子版第142页),得到一般公式:
∂ J ( θ ) ∂ w j i l = δ j l a i l − 1 ( l = 2 , 3 , . . . ) \frac{\partial J(\theta)}{\partial w_{ji}^{l}}=\delta_{j}^{l}a_{i}^{l-1}(l=2,3,...) wjilJ(θ)=δjlail1(l=2,3,...)
最终,前向传播算法得出代价函数 J ( θ ) J(\theta) J(θ),误差反向传播算法得出梯度 ∂ J ( θ ) ∂ w j i l \frac{\partial J(\theta)}{\partial w_{ji}^{l}} wjilJ(θ)。这样,就可以通过优化算法scipy.optimize.minimize()进行神经网络训练。

δ j l \delta_{j}^{l} δjl的含义:从表达式可知, δ j l \delta_{j}^{l} δjl表示神经单元的加权输入 z j l z_{j}^{l} zjl变化给平方误差带来的变化率。如果神经网络符合数据,根据最小值条件(函数取得最小值的必要条件,导数为0),变化率应该为0。那就是说,可以认为 δ j l \delta_{j}^{l} δjl表示与神经网络符合数据的理想状态的偏差。这个偏差表示为“误差”。

吴恩达关于 δ j l \delta_{j}^{l} δjl的解释:如果分析网络的内部,稍微把 z j l z_{j}^{l} zjl改一下,就会影响到神经网络 h θ ( x ) h_{\theta}(x) hθ(x)的值,从而影响到 J ( θ ) J(\theta) J(θ)。它所衡量的是为了影响这些中间值,我们想要改变神经网络中的权重的程度,进而影响整个神经网络的输出 h θ ( x ) h_{\theta}(x) hθ(x)

参考链接:https://pan.baidu.com/s/169TgcEsC3HXOxn77AaT-bg
提取码:etqz

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值