2011-02-24 13 views
16

入力ベクトルのsinを予測するために多層パーセプトロンを実装しました。ベクトルは、ランダムに選択された4つの-1,0,1とバイアスが1に設定されています。ネットワークは、ベクトルの内容の合計の罪を予測する必要があります。多層ニューラルネットワークは負の値を予測しない

例えば入力= < 0,1、-1,0,1>出力=罪(0 + 1 +( - 1)+ 0 + 1)

私が午前問題は、ネットワークがということです負の値を予測することはなく、ベクトルのsin値の多くは負の値になります。すべての正またはゼロの出力を完全に予測します。私は、エポックごとに更新されるウェイトの更新に問題があると推測しています。これまで誰もNNのこの問題に遭遇しましたか?どんな助けでも素晴らしいでしょう!

注:非公開レイヤーと出力レイヤーにシグモイド関数を使用しており、学習率がトン(現在は0.1)に達しました。

答えて

11

私は多層のパーセプトロンを調べたので、それで塩の粒でこれをとってください。

問題ドメインを[-1,1]ではなく[0,1]ドメインに再スケールします。あなたはロジスティック関数のグラフを見てみた場合:それは[0,1]の間の値を生成

enter image description here

。私はそれが否定的な結果をもたらすとは思わない。私は間違っているかもしれない、難しいかもしれない。

EDIT

あなたが実際にあなたの問題領域にロジスティック機能を拡張することができます。 generalized logistic curveのAおよびKパラメータをドメインの境界に設定します。

もう一つのオプションは双曲線正接であり、[-1、+ 1]からなり、設定する定数はありません。

+0

ありがとう、それは理にかなっています! Ilは負の値を許すことができる関数を見なければなりません。残念ながら私は問題ドメインを大学の課題として変更できません。再度、感謝します! –

+0

@B。 Bowles私の答えを可能な解決策で更新しました。 –

+0

すごくいいですね、今試してみてください!この数式には、このネットワークには適用されない多くのパラメータがあり、数学は私の強みではありません。それは確かに前方の方法のように聞こえる。 –

3

アクティブ化関数にはさまざまな種類があり、その多くは0から1までの値を出力するように設計されています.0から1の間だけを出力する関数を使用している場合は、 1および-1である。 FANNを使用している場合は、FANN_SIGMOID_SYMMETRICアクティベーション機能を使用するように指示します。

+0

不幸にも、私はこの課題のためのlibsを使用することはできません!私はそれがどのように動作するか見ている、ありがとう –

関連する問題