2016-06-16 20 views
3

シグモイドを持つニューラルネットワークがあるとします。それは入力xを有するので、ノードはtanhχを接続に出力する。接続はw * tanhxを出力し、wは接続の重みです。0の入力を持つニューラルネットワーク

入力が0で希望出力が1のようなものになるのはどうですか?入力が0の場合、接続の出力はw * tanh0 = 0になります。したがって、入力が0の場合、追加するノードまたは接続の数や接続の重みの大きさにかかわらず、出力は常に0になります。

あなたは0の入力が0以外の何かを与える単純なネットワークをどうやって作りますか?

+3

バイアスを忘れているので、出力がゼロにならないことがあります。 NNは非線形関数である。また、あなたの出力方程式は間違っています。 –

答えて

1

ことの一つは、それぞれの層のための関数の形式はあるべきであるということです関数(tanh)。これはあなたの質問に答えたり、あなたの問題を解決したりしません。

あなたの質問に答えるために

最初の方法は、あなたの入力にバイアスユニットを追加する必要があります。これを行う方法の1つは、一定の入力1を入力として使用することです。

疑似コードがある場合:number_of_inputs = 10代わりに疑似コード:number_of_inputs = 11; input[10] = 1を使用します。

これにより、出力関数は上記と同じ形式になります。

第二の方法は、

また、あなたの伝達関数の外側でバイアスユニットを追加することができます。つまり、あなたの出力の形式は次のようになります。

z = transpose(W) * X output = tanh(z) + b

bの更新ルールは、あなたの損失の派生物ではなく、あなたの転送の微分に基づくことになります。

2

値が定数1の擬似入力を追加する必要があります。この入力は、最初の層のニューロンの重み付けバイアスとして使用できます。

0

シグモイド関数は、に限定されず、tanh(x)である。より一般的な形式はw * tanh(ax + c)+ bです。あなたは、このようになります低いx値が1.0に近い結果を与える場所:

-1 * TANH(x)は+ 1

重みとバイアスは圧迫を一般化ツールであり、シグモイド曲線を必要な場所に移動させることができます。

あなたが転送に入る前に、重みベクトルを掛けるされています。注目すべきは別に

関連する問題