私は、3 層の逆伝播ネットワークを使用して xor の例に取り組んでいます。出力層にシグモイド アクティベーションがある場合、(1,0) の入力は 1 の目的の出力に対して 0.99 を与える可能性があり、(1,1) の入力は 0 の目的の出力に対して 0.01 を与える可能性があります。
しかし、出力を 0 または 1 の離散値にしたい場合は、その間のしきい値を 0.5 に設定するだけでよいでしょうか? このしきい値は、他の重みと同じようにトレーニングする必要がありますか?
私は、3 層の逆伝播ネットワークを使用して xor の例に取り組んでいます。出力層にシグモイド アクティベーションがある場合、(1,0) の入力は 1 の目的の出力に対して 0.99 を与える可能性があり、(1,1) の入力は 0 の目的の出力に対して 0.01 を与える可能性があります。
しかし、出力を 0 または 1 の離散値にしたい場合は、その間のしきい値を 0.5 に設定するだけでよいでしょうか? このしきい値は、他の重みと同じようにトレーニングする必要がありますか?
もちろん、出力ニューロンの後にしきい値を設定して、0.5 より後の値を 1 にし、0.5 より下のすべての出力を 0 にすることもできます。0.4 の出力は 0.001 の値よりも「ゼロ」が少なく、この差によってデータに関する有用な情報が得られるため、離散化しきい値で連続出力を非表示にしないことをお勧めします。
しきい値なしでトレーニングを行います。ニューロン ネットワークの出力をしきい値処理せずに使用して、例のエラーを計算します。
もう 1 つの詳細: シグモイドなどの伝達関数を使用しますか? シグモイド関数は [0, 1] の値を返しますが、0 と 1 は漸近線です。シグモイド関数はこれらの値に近づくことはできますが、到達することはありません。この結果、ニューラル ネットワークは 0 または 1 を正確に出力できなくなります。したがって、シグモイド倍数を 1 より少し上にすると、これを修正できます。これと、逆伝播のその他の実用的な側面については、こちらで説明していますhttp://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf