Использование производного сигмоида в обратном распространении приведет к нулю ошибок? - Нейронные сети - PullRequest
0 голосов
/ 20 июня 2019

Я кодирую нейронную сеть с использованием ошибки обратного распространения.Для этого я должен определить ошибку предыдущего слоя по ошибке следующего слоя.Я не эксперт, но из того, что я видел, использование следующей формулы является (или одним) правильным способом сделать это:

error = ( Weights_next^T * error_next ) .* sigmoid_Derivative(net)

Что меня смущает в этом, так это использование производногосигмовидной функции.В некотором смысле имеет смысл использовать его, но поскольку производная сигмоиды всегда меньше или равна 0,25, это означает, что при перемещении назад от слоя к слою ошибка будет уменьшаться в геометрической прогрессии.Это приведет к тому, что в любом слое, кроме последнего, почти не будет корректировок веса.

К сожалению, это именно то, что происходит в моем NN прямо сейчас, с последним слоем, имеющим некоторую допустимую ошибку, но все остальные просто имеютошибка 0.

Не нужно ли корректировать эту формулу с коэффициентом 4, чтобы наивысший коэффициент больше не составлял 0,25, а вместо 1,0?

Или я делаючто-то еще здесь не так?

...