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