2016-11-18 12 views
1

回帰問題のためにニューラルネットワークを構築することを学んでいます。これは線形関数によく近似して動作します。隠しレイヤーと出力レイヤーでリニアなアクティベーション機能を使用する1-5-1ユニットの設定では、トリックと結果が高速で信頼性が高くなります。私はそれを、単純な二次データを供給しようとすると、(F(X)= X * X)、ここで何が起こるかであるしかし、:ANN:ニューラルネットワークによる非線形関数の近似

線形活性化関数を使用すると、それがデータセット

enter image description here

を通じて線形関数にフィットするようにしよう

TANH機能では、TANH曲線をデータセットに収めようとします。それは、チャート上の活性化関数の形状を繰り返していますので、これは、私は現在の設定が線形関係なく、何かを学ぶことが本質的にできないことを信じています

enter image description here

。しかし、これは真実ではないかもしれません。なぜなら、他の実装が曲線を完全に学習するのを見たからです。だから、私は何か間違っているかもしれない。あなたの指導をしてください。

私の重みは、ランダム化されている私のコードについて


(-1、1)入力が正規化されません。データセットはランダムな順序で供給されます。学習率を変更したりレイヤーを追加したりしても、画像はあまり変化しません。

私はjsfiddleを作成した、と遊ぶのが

場所は、この機能である:入力ベクトル配列の配列とターゲットベクトル配列:

function trainingSample(n) { 
    return [[n], [n]]; 
} 

これは、単一のトレーニングサンプルを生成します。 この例では、f(x)=x関数を生成します。それを[[n], [n*n]]に変更し、二次関数を得ました。

再生ボタンは右上にあり、これらの値を手動で入力するための2つの入力ボックスもあります。ターゲット(右)ボックスが空の場合、フィードフォワードのみでネットワークの出力をテストできます。

コード内にネットワークの設定ファイルがあり、学習率などを設定できます。 (var Configを検索してください)

+0

アクティベーション機能はどこに適用されますか? – lejlot

+0

ニューロンでは、フォワードパスで、入力の合計を渡します。私はチュートリアルのデータと照らし合わせてチェックしました。明らかにあなたのコードを提供するBP –

+0

の問題です。そうでなければ、助けが不可能です。間違っている可能性のあるものが多すぎます。 – lejlot

答えて

0

私が記述している設定では、フィーチャの選択のために非線形関数を学習することは不可能です。フォワードパスのどこにも1より大きい入力依存性がありません。そのため、私の出力関数のスナップショットが出力に表示されています。ダー。

関連する問題