在吴恩达《机器学习》的教学视频中,讲神经网络反向传播章节时,神经单元误差是直接给出的推导式,第一反应是这玩意儿怎么来的?有什么用?
在网上看了些相关文章后,还是理解的不透彻,之后看了《深度学习的数学》这本书的描述后才测底明白,在此总结一下。
首先,明确一点,神经单元误差与平方误差虽然都是表达“误差”的意思,但是它们的含义却完全不一样。
问题1:为什么要引入误差反向传播算法?用“梯度下降算法”中直接计算偏导项来更新参数不行吗?
答:可以利用“梯度下降法”中直接计算偏导数的形式来更新神经网络的每个参数,但是,在神经网络中,偏导数的计算量十分巨大且复杂。因此,才引入了误差反向传播算法。误差反向传播算法的特点是将繁杂的导数计算替换为数列的递推关系式,而提供这些递推关系式的就是名为神经单元误差的变量。
问题2:神经单元误差是怎么推导出来的?含义是什么?
答:《深度学习的数学》中是直接先给出了神经单元误差的定义:
然后,用表示平方误差关于权重的偏导数(具体过程可以参考该书的电子版第142页),得到一般公式:
最终,前向传播算法得出代价函数,误差反向传播算法得出梯度
。这样,就可以通过优化算法scipy.optimize.minimize()进行神经网络训练。
的含义:从表达式可知,
表示神经单元的加权输入
变化给平方误差带来的变化率。如果神经网络符合数据,根据最小值条件(函数取得最小值的必要条件,导数为0),变化率应该为0。那就是说,可以认为
表示与神经网络符合数据的理想状态的偏差。这个偏差表示为“误差”。
吴恩达关于的解释:如果分析网络的内部,稍微把
改一下,就会影响到神经网络
的值,从而影响到
。它所衡量的是为了影响这些中间值,我们想要改变神经网络中的权重的程度,进而影响整个神经网络的输出
。
参考链接:https://pan.baidu.com/s/169TgcEsC3HXOxn77AaT-bg 提取码:etqz