machine-learning - 在反向传播中使用激活导数

标签 machine-learning neural-network artificial-intelligence

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

首先,当我从反向传播算法中删除激活导数并将其替换为常数时,网络仍在训练,尽管速度稍慢。所以我认为这对于算法来说并不是必需的,但它确实提供了性能优势。

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

当然,在激活函数变化最快的值处,我们会想要一个更小的值,以便权重更新更小?这将防止由于激活函数上陡坡附近的权重变化而发生较大的输出变化。然而,这与算法的实际工作方式完全相反。

有人可以向我解释一下为什么要这样设置以及为什么会提供如此大的性能改进吗?

最佳答案

我不完全确定这是否是您所要求的,但这个答案可能会为您想要理解的内容提供一些见解。

想象一下误差曲线:

curve

我们正在尝试使用梯度下降来最小化成本函数,正确吗?假设我们位于曲线的最外侧,那里的误差非常高。通过用曲线计算梯度下降,函数会发现斜率很陡,因此误差很大,所以会采取很大的步长。当它沿着曲线向下移动时,斜率慢慢接近 0,因此每次都会采取更小的步长。

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

ok

看看它是如何从迈大步开始,然后每次迈小步的?这是通过使用激活导数来实现的。它一开始就迈出了一大步,因为有一条陡峭的曲线。随着坡度变小,步长也会变小。

如果您使用常量值,则必须选择非常小的步长以避免超出最小值,因此必须使用更多迭代才能获得类似的结果。

关于machine-learning - 在反向传播中使用激活导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192628/

相关文章:

image-processing - 有谁有关于尖峰神经元或其他类型的图像机器学习的信息

algorithm - 我可以使用哪种井字游戏算法来确定 AI 的 "best move"?

artificial-intelligence - 量子 PSO 和带电 PSO(PSO = 粒子群优化器)

python - 使用 pickle 保存模型

text - 字符的序列预测?

python - 你能帮我在 pyBrain 中线性激活我的简单分类器神经网络吗?

java - 表示节点之间路径长度的数据结构?

python - Keras 预测每次返回相同的结果

java - 如何在j48算法中注入(inject)IBk(knn)? (韦卡、java)

scala - Spark ML 将预测标签转换为字符串,无需训练 DataFrame