2016-06-25 16 views
0

私は値を予測する必要がある関数y=(x1)^2 + 2*(x2)+(x3)+ 3*(x4)^3を持っています。ですから、私は入力層に4つの入力、1つの隠れ層、出力層に2つのノードを持っています。 yが正の場合、デフォルト出力は[1 0]であり、yが負の場合、出力は[0 1]です。私たちがそれを実行するたびに、ニューラルネットワークの予測の精度はトレーニングとテストのデータのサイズによって異なります

入力が0との間にあり、重みが-11の間です。アルファは0.01であり、しきい値は0.005です。

200件のデータを訓練すると、トレーニングデータで94%、テストデータで86%(隠れ層の4つのノード)が得られます。

私は250例のトレーニングセットで90.2%の精度とテストデータで96%の精度を得ています。また、同じプログラムを再度実行することで、無作為化されたウェイトのため、トレーニングデータとテストデータの精度が変わります。

ここで、98%〜100%を達成するためにどの程度精度を上げることができますかをお勧めします。

+0

いくつかのトレーニングデータを入力してください。 –

+0

[0.6294 0.8116 -0.7460 0.8267]、target [1 0] –

+0

そして、入力の範囲は実際には-1から1、別の入力[0.2647 -0.8049 -0.4430 0.0938]、ターゲット[0 1]です。 [ –

答えて

0

パフォーマンスとコンバージェンス速度を向上させるには、体重更新に運動量項を追加します。この用語は、勾配降下中の振動を減少させ、勾配降下を局所的な最小値から逸脱させる可能性がある。これは、グラジエント降下がプラトーのような構造に達するとグラジエントが非常に小さくなり、アルゴリズムが停止する可能性があるためです。

最新の重み更新に現在の更新とアルファ(学習率と同じではない)を掛け合わせたものが追加されるため、そのような台地を過ぎることができます。

enter image description here

出典:https://page.mi.fu-berlin.de/rojas/neural/neuron.pdf

私はあなたのトレーニング手順を知らないが、次のように、あなたのネットワークを訓練することができます:

は、ネットワークにすべてのトレーニングデータをフィード。その後、テストデータの結果を検証します。時刻tでの検証実行の結果がt-1の検証結果とほぼ等しくなるまで、これを実行します。したがって、テストデータのエラーは減少しなくなります。

関連する問題