ANN

时间:2017-05-10 02:29:23

标签: 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有效(模型训练以校正权重),而数学导数sech 2 (x)则不然(在最大迭代次数后得到的模型存在错误权重)?

1 个答案:

答案 0 :(得分:2)

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

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

由于这可能是在现有代码中使用和实现的,如果用“正确”公式替换它,你将得到错误的衍生物。