ニューラルネットワークの安定性を向上させるにはどうすればよいですか?


11

Rでニューラルネットを使用して、14入力と1出力のNNを構築しています。同じ入力トレーニングデータと同じネットワークアーキテクチャ/設定を使用して、ネットワークを数回構築/トレーニングします。

各ネットワークが生成されたら、それをスタンドアロンのテストデータセットで使用して、いくつかの予測値を計算します。ネットワークを構築するたびにすべての入力(トレーニングデータとテストデータの両方)が同じままであるにもかかわらず、予測データの反復ごとに大きな差異があることがわかりました。

NN内で毎回生成される重み付けに違いがあり、2つのニューラルネットワークが同一になることはないことを理解していますが、同一のデータが与えられた場合、各トレイン全体でより一貫性のあるネットワークを作成するにはどうすればよいですか?


あなた(またはRパッケージ)が使用した学習アルゴリズムとアーキテクチャについてもう少し詳しく教えてもらえますか?NNにはいくつの層がありますか?
Lucas

こんにちはルーカスは、私はRパッケージneuralnetの使用しているリンクここで良い説明の記事を持っているリンクを。私は8つのニューロンの1つの隠れ層を使用しています。学習アルゴリズムは、重みバックトラッキングを使用した弾力性のあるバックプロパゲーションです。
tfb

回答:


8

一般に、非表示ノードの数を増やし、適切な重みの減衰(別名、尾根ペナルティ)を使用することにより、安定性が向上します。

具体的には、caretパッケージを使用して精度(さらには精度の不確実性)をよりよく理解することをお勧めします。キャレットではavNNet、初期シードの影響を減らすために、アンサンブル学習者を複数のニューラルネットワークから除外します。私は個人的に使用して大きな改善を見ていませんavNNetが、それはあなたの元の質問に対処することができます。

また、入力がすべて適切に調整されていることを確認します。直交化してから再スケーリングしましたか?Caretは、pcaNNet関数を介してこの前処理を行うこともできます。

最後に、一部のスキップレイヤー接続を破棄することを検討できます。ただし、これらの接続を歪めるために、データに外れ値/てこ比のポイントがないことを確認する必要があります。


興味深いことに、ネットのトレーニングを「nnet」関数(同じ名前のパッケージで利用可能)に切り替え、データのテストセットの結果がはるかに安定しました-重みの異なる方法と関係があるかもしれません2つのパッケージ間で初期化されましたか?
tfb

nnet、私が正しくリコール場合は、最初の重みは、すべての-0.7と0.7の間の一様乱数に初期化されます。そして、あなたはパラメータの大きさを制御することができます。私は正直に言ってnnetパッケージにしっかり運があり、他のオプションを試したことがありません。がんばって!
シアパークス

1

私はRで作業したことがないので、より一般的なヒントしか提供できません。

アルゴリズムが収束したかどうかを確認しましたか?考えられる理由の1つは、さまざまなパラメーターセットがすべて同じ最適値の半分にあることです。

アルゴリズムが常に収束するが、異なる局所最適値に収束する場合、それらを回避しようとする多くのヒューリスティックがあります。確率的勾配降下法(SGD)を使用する場合の1つの単純な戦略は、小さいバッチと大きい運動量を使用することです。バッチサイズを小さくすると、トレーニングにノイズが効果的に導入され、局所的な最適値を逃れるのに役立ちます。より高度な戦略は、自動エンコーダを使用して重みを初期化することです。


fyiと同じように、nnetベースR のfrom を使用している限り、RのBFGS最適化メソッドを使用しoptimます。実際に勾配を計算して、表面の画像を取得します。その実装にはバッチ処理や固定運動量パラメーターはありません。そうは言っても、収束に失敗することは簡単です。特にごみが入っている場合
Shea Parkes

@SheaParkesコメントとシェに答えてくれてありがとう。私は実際にはニューラルネットパッケージを使用しています-上記のコメントを参照してください。ウェイトバックトラッキングを備えた復元力のあるバックプロパゲーションアルゴリズムを使用
tfb

それから私の謝罪ルーカス、私はその一口を逃しました。私はあなたがそれがtfbでうまくいったことをうれしく思います。
シアパークス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.