この記事を使用して、バックプロパゲーションを使用したニューラルネットワークを実装していますが、エラーの計算に問題があります。一言で言えば、私のシグモイド関数はすべてのノード出力を1.0に押しつぶし、エラー計算で0を返します。
error = (expected - actual) * (1 - actual) * actual
^^ this term causes multiply by 0
したがって、私のエラーは常に0です。
問題は、1.0未満に漸近的に制限されるのではなく、1.0を返すシグモイド実装にあると思われます。
# ruby
def sigmoid(x)
1/(1+Math.exp(-x))
end
シグモイドが実際に1.0に達することはないというのは正しいですか、それとも何か別の問題がありますか?