反向传播中激活导数的使用
Use of activation derivative in back propagation
我有点疑惑为什么反向传播中的激活导数是这样的。
首先,当我从反向传播算法中删除激活导数并将其替换为常量时,网络仍在训练,尽管速度稍慢。所以我认为它对算法来说不是必需的,但它确实提供了性能优势。
但是,如果激活导数(简单地说)只是激活函数相对于当前输入的变化率,那么为什么这会提供性能改进?
当然在激活函数变化最快的值处我们想要一个较小的值以便权重更新较小?这将防止因激活函数上陡坡附近的权重变化而发生较大的输出变化。然而,这与算法的实际工作方式完全相反。
有人可以向我解释为什么它是这样设置的以及为什么它提供了这样的性能改进吗?
我不完全确定这是否是您所要求的,但这个答案可能会让您对您想要了解的内容有所了解。
想象一下误差曲线:
我们正在尝试使用梯度下降来最小化成本函数,对吗?假设我们位于曲线的最外侧,那里的误差非常高。通过用曲线计算梯度下降,函数会意识到斜率很陡,因此误差很大,所以会走很大的一步。当它沿着曲线向下移动时,斜率慢慢接近 0,因此每次都会采取更小的步长。
梯度下降与激活导数的可视化:
看看它是如何从迈出一大步开始,一步步走小步的?这是通过使用激活导数来实现的。它从一大步开始,因为有一条陡峭的曲线。随着斜率变小,步长也变小。
如果您使用常量值,则必须选择非常小的步长以避免超过最小值,因此必须使用更多的迭代才能获得类似的结果。
我有点疑惑为什么反向传播中的激活导数是这样的。
首先,当我从反向传播算法中删除激活导数并将其替换为常量时,网络仍在训练,尽管速度稍慢。所以我认为它对算法来说不是必需的,但它确实提供了性能优势。
但是,如果激活导数(简单地说)只是激活函数相对于当前输入的变化率,那么为什么这会提供性能改进?
当然在激活函数变化最快的值处我们想要一个较小的值以便权重更新较小?这将防止因激活函数上陡坡附近的权重变化而发生较大的输出变化。然而,这与算法的实际工作方式完全相反。
有人可以向我解释为什么它是这样设置的以及为什么它提供了这样的性能改进吗?
我不完全确定这是否是您所要求的,但这个答案可能会让您对您想要了解的内容有所了解。
想象一下误差曲线:
我们正在尝试使用梯度下降来最小化成本函数,对吗?假设我们位于曲线的最外侧,那里的误差非常高。通过用曲线计算梯度下降,函数会意识到斜率很陡,因此误差很大,所以会走很大的一步。当它沿着曲线向下移动时,斜率慢慢接近 0,因此每次都会采取更小的步长。
梯度下降与激活导数的可视化:
看看它是如何从迈出一大步开始,一步步走小步的?这是通过使用激活导数来实现的。它从一大步开始,因为有一条陡峭的曲线。随着斜率变小,步长也变小。
如果您使用常量值,则必须选择非常小的步长以避免超过最小值,因此必须使用更多的迭代才能获得类似的结果。