回帰問題のためにニューラルネットワークを構築することを学んでいます。これは線形関数によく近似して動作します。隠しレイヤーと出力レイヤーでリニアなアクティベーション機能を使用する1-5-1ユニットの設定では、トリックと結果が高速で信頼性が高くなります。私はそれを、単純な二次データを供給しようとすると、(F(X)= X * X)、ここで何が起こるかであるしかし、:ANN:ニューラルネットワークによる非線形関数の近似
線形活性化関数を使用すると、それがデータセット
を通じて線形関数にフィットするようにしようTANH機能では、TANH曲線をデータセットに収めようとします。それは、チャート上の活性化関数の形状を繰り返していますので、これは、私は現在の設定が線形関係なく、何かを学ぶことが本質的にできないことを信じています
。しかし、これは真実ではないかもしれません。なぜなら、他の実装が曲線を完全に学習するのを見たからです。だから、私は何か間違っているかもしれない。あなたの指導をしてください。
私の重みは、ランダム化されている私のコードについて
(-1、1)入力が正規化されません。データセットはランダムな順序で供給されます。学習率を変更したりレイヤーを追加したりしても、画像はあまり変化しません。
私はjsfiddleを作成した、と遊ぶのが
場所は、この機能である:入力ベクトル配列の配列とターゲットベクトル配列:
function trainingSample(n) {
return [[n], [n]];
}
これは、単一のトレーニングサンプルを生成します。 この例では、f(x)=x
関数を生成します。それを[[n], [n*n]]
に変更し、二次関数を得ました。
再生ボタンは右上にあり、これらの値を手動で入力するための2つの入力ボックスもあります。ターゲット(右)ボックスが空の場合、フィードフォワードのみでネットワークの出力をテストできます。
コード内にネットワークの設定ファイルがあり、学習率などを設定できます。 (var Config
を検索してください)
アクティベーション機能はどこに適用されますか? – lejlot
ニューロンでは、フォワードパスで、入力の合計を渡します。私はチュートリアルのデータと照らし合わせてチェックしました。明らかにあなたのコードを提供するBP –
の問題です。そうでなければ、助けが不可能です。間違っている可能性のあるものが多すぎます。 – lejlot