math - ANN中的Sigmoid函数及其导数

标签 math machine-learning artificial-intelligence derivative sigmoid

我正在根据教程制作 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) 不起作用(最大迭代次数后获得的模型错误)权重)?

最佳答案

在第一组公式中,导数表示为函数值的函数,即

tanh'(x) = 1-tanh(x)^2 = dsigmoid(sigmoid(f))

由于现有代码中可能会以这种方式使用和实现它,因此如果将其替换为“正确”公式,您将得到错误的导数。

关于math - ANN中的Sigmoid函数及其导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43882661/

相关文章:

java - BigInteger.pow(大整数)?

c# - "System.Math.Cos"可以返回一个(float)吗?

python - 如何用keras制作3D滤镜

algorithm - 换位表?

algorithm - 如何向 A* 启发式添加更多参数而不仅仅是距离?

c - 可比性测试比%运算符更快?

c++ - 在 C++ 中计算欧拉数

python - 如何在tensorflow.js上加载/重新训练/保存ssd_inception_v2_coco?

r - 如何获得逻辑回归模型测试项目的错误模式?

algorithm - 修改 Minimax 为 Alpha-Beta 剪枝伪代码