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" 公式,您将得到错误的导数。