【问题标题】:Calculating delta of bias using derivative of sigmoid function results always in 0使用 sigmoid 函数的导数计算偏差增量始终为 0
【发布时间】:2021-02-16 19:04:27
【问题描述】:

我正在使用 python 制作人工神经网络,并开始进行反向传播。我很快就遇到了试图计算偏差的增量值的问题。这成了一个问题,因为我使用的是 sigmoid 函数,当激活值为 1 时,它的导数 (sigmoid(x)*(1-sigmoid(x))) 恰好返回 0。 我在这里错过了什么吗?它总是返回 0 的问题是 delta 也将是 0,所以我将无法反向传播偏差的权重。

【问题讨论】:

    标签: neural-network backpropagation sigmoid


    【解决方案1】:

    sigmoid 函数的导数应该只返回接近 0 的非常大的值,例如 x>5x<-5

    我的计算器显示 sigmoid 函数的导数是 ~0.1966,输入为 1。

    没有看到代码,我无法确定问题出在哪里,但这里有一些可能需要检查的地方:

    • sigmoid 函数可能没有正确实现
    • 某处有整数除法
    • 数字四舍五入到零

    【讨论】:

    • 这是有道理的,但实际发生的是我的输入不是 1,因为我正在处理偏差,我将 sigmoid 设置为返回 1。所以每当我调用该函数时,如果它返回 1这是偏见。最后返回 0 调用它的导数
    • 你设置sigmoid函数返回1?然后当然导数将返回零,因为 1 * (1 - 1) 将始终返回零。当 x 接近正无穷大时,sigmoid 函数应该只返回 1。为什么你总是设置sigmoid函数返回1?
    • 并非总是如此,仅在使用偏置神经元时,因为它的整个噱头应该是它的激活值是1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2012-07-22
    • 2015-12-17
    • 2018-06-06
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多