反向传播中的激活函数导数的使用

我有点困惑,为什么反向传播中的激活函数导数是这样的设置。

首先,当我从反向传播算法中移除激活函数导数,并用一个常数替代时,网络仍然可以训练,尽管速度稍慢。因此,我认为激活函数导数对算法来说并不是必不可少的,但它确实提供了性能优势。

然而,如果激活函数导数(简单来说)只是激活函数相对于当前输入的变化率,那么为什么这能带来性能提升呢?

难道在激活函数变化最快的地方,我们不应该使用一个较小的值,使权重更新也较小吗?这样可以防止由于靠近激活函数陡坡的权重变化而导致输出发生大的变化。然而,算法的实际操作却完全相反。

能有人解释一下为什么它被这样设置,以及为什么这能带来如此大的性能提升吗?


回答:

我不确定这是否是你所问的,但这个回答可能会对你试图理解的内容有所帮助。

所以想象一下误差曲线:

curve

我们试图使用梯度下降来最小化成本函数,对吗?假设我们处于曲线的最外侧,误差非常高。通过计算曲线上的梯度下降,函数会意识到斜率很陡,因此误差很高,所以它会迈出大步。当它沿着曲线向下移动时,斜率逐渐接近0,因此每次会迈出更小的步子。

使用激活函数导数的梯度下降可视化:

ok

看到它是如何从迈出大步开始,然后每次都迈出更小的步子了吗?这是通过使用激活函数导数实现的。它开始时迈出大步,因为有陡峭的曲线。随着斜率变小,步子也变小。

如果你使用一个常数值,你将不得不选择一个非常小的步子以避免超过最小值,因此需要更多的迭代才能达到类似的结果。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注