ANN 中的 sigmoid 函数和 sigmoid 函数的导数
Sigmoid function and derivative of sigmoid function in ANN
我正在根据教程制作 ANN。教程中的sigmoid和dsigmoid如下:
sigmoid(x) = tanh(x)
dsigmoid(x) = 1-x*x
然而,根据定义,dsignmoid 是 sigmoid 函数的导数,因此它应该是 (http://www.derivative-calculator.net/#expr=tanh%28x%29):
dsigmoid(x) = sech(x)*sech(x)
当使用 1-x*x 时,训练确实会收敛,但是当我使用数学上正确的导数时,即。 sech平方,训练过程不收敛
问题是为什么 1-x*x 有效(训练模型以校正权重),而数学导数 sech2(x) 无效(在 max 之后获得的模型迭代次数持有错误的权重)?
第一组公式中,导数表示为函数值的函数,即
tanh'(x) = 1-tanh(x)^2 = dsigmoid(sigmoid(f))
由于现有代码中可能以这种方式使用和实现,因此如果将其替换为 "right" 公式,您将得到错误的导数。
我正在根据教程制作 ANN。教程中的sigmoid和dsigmoid如下:
sigmoid(x) = tanh(x)
dsigmoid(x) = 1-x*x
然而,根据定义,dsignmoid 是 sigmoid 函数的导数,因此它应该是 (http://www.derivative-calculator.net/#expr=tanh%28x%29):
dsigmoid(x) = sech(x)*sech(x)
当使用 1-x*x 时,训练确实会收敛,但是当我使用数学上正确的导数时,即。 sech平方,训练过程不收敛
问题是为什么 1-x*x 有效(训练模型以校正权重),而数学导数 sech2(x) 无效(在 max 之后获得的模型迭代次数持有错误的权重)?
第一组公式中,导数表示为函数值的函数,即
tanh'(x) = 1-tanh(x)^2 = dsigmoid(sigmoid(f))
由于现有代码中可能以这种方式使用和实现,因此如果将其替换为 "right" 公式,您将得到错误的导数。