11

遺伝的アルゴリズムは隠れノードの数と人工ニューラルネットワークで行われるトレーニングの量を最適化する最も効率的な方法ですか?ニューラルネット最適化遺伝的アルゴリズム

私はMatlabのNNToolboxを使ってニューラルネットワークをコーディングしています。私は他の最適化手法の提案にも門戸を開いていますが、私はGAに最も精通しています。

答えて

11

実際に、NNに関してGAを使用して最適化できるものは複数あります。 構造(ノード数、レイヤー、アクティベーション機能など)を最適化することができます。 また、GAを使用して訓練することもできます。つまり、体重を設定することです。

遺伝的アルゴリズムは決して最も効率的ではありませんが、通常、使用する数字の手がかりがほとんどない場合に使用されます。訓練のための

、あなたは、nelder-meadなどをバックプロパゲーションを含む他のアルゴリズムを使用することができます。..

あなたは数隠れノードを最適化したいと述べ、このために、遺伝的アルゴリズムはもののこれまで「最適」から、十分であろう。あなたが探しているスペースは、おそらく遺伝的アルゴリズムを使用するには小さすぎますが、彼らはまだ働くことができ、アフリカ、彼らはすでにmatlabに実装されているので、大したことはありません。

トレーニングの量を最適化するとどういう意味ですか?エポックの数を意味するなら、それはうまくいきます。訓練は何らかの形で開始重みに依存し、通常はランダムであることを覚えておいてください。そのため、GAに使用されるフィットネス機能は実際には機能しません。

+0

ありがとうございます。これは私が探していた正確な情報です。 – ServAce85

+0

私はそれをC/C++でコーディングしてから、Amazon EC2サーバーを1000時間稼働させたいと思っています。 –

+0

GPのみを使用してGAを使用してANNをトレーニングする利点は何ですか? ANNには、脳を模倣するというメリットがあり、バックプロパゲーションなどのスマートな方法でウェイトを更新する方法を使用して、ネットワークが正しい方向(脳のように)に進化するようにすることができます。しかし、GAを使用してウェイトを更新すると、すべて緩和されてしまいます.GPを上回るメリットはありません。ネットワークが改善するかどうかは今や偶然です。あなたはそれを何と考えていますか? – HelloGoodbye

0

遺伝的アルゴリズムを使用すべきかどうかはわかりません。

あなたの遺伝的アルゴリズムの初期解の集団は、あなたのニューラルネットワークの訓練セット(特定の訓練方法が与えられている)で構成されていると仮定します。通常、最初のソリューション集団は、問題に対するランダムなソリューションで構成されます。しかし、無作為なトレーニングセットは実際にあなたのニューラルネットワークを訓練しません。

あなたの遺伝的アルゴリズムの評価アルゴリズムは、必要なトレーニングの量、特定の問題を解決する際のニューラルネットワークの品質、隠れたノードの数の重み付けされた平均になります。

これを実行すると、ニューラルネットワークの品質(トレーニング時間、隠れノード数、ネットワークの問題解決能力)に関して最良の結果を得たトレーニングセットが得られます。

あなたは全く異なるアプローチを検討していますか?

0

あなたはどのような問題を抱えているのかよくわかっていませんが、GAはちょっとした過度の話です。使用しているパラメータの範囲によっては、徹底した(または他の方法ではない)検索が機能する場合があります。最初のいくつかの値に対して隠れノードの数に関してNNのパフォーマンスをプロットし、小さいものから大きいものへとジャンプします。私の経験では、多くのNNのパフォーマンスは驚くほど早いです。どのような範囲の隠れノード番号が最も理にかなっているかをよく理解することができます。

NNのトレーニング反復では同じことがよくあります。トレーニングが増えると、ネットワークは一点まで助けられますが、すぐに多くの効果を失うことになります。

これらのNNパラメータは、大部分の場合、非常に複雑な方法でパフォーマンスに影響を与えません。一般的には、それらを増やすとしばらくの間パフォーマンスが向上しますが、その後は減少します。GAは、この種の単純なカーブで良い値を見つけるのに本当に必要なわけではありません。隠れノード(またはトレーニング反復)の数が実際に複雑な方法でパフォーマンスを変動させる場合、GAのようなメタヒューリスティックスが適切な可能性があります。しかし、そのルートを取る前に、ブルートフォースアプローチを試してみてください。

+0

私のデータが非常に騒々しい(脳波データを考える)ため、ブルートフォースは私のアプリケーションでは機能しません。 – ServAce85

0

私はあなたが最小限のソリューションで始まり、ニューロンの数を成長することができますので、遺伝的アルゴリズムは良いアイデアであると言うことが多いでしょう。最適な点を見つけたいと思う「品質関数」は滑らかであり、わずかなばらつきしかない可能性が非常に高いです。

あなたはこの最適NNが頻繁に私は機能を評価するのに高価である問題に対して最適な数値のレシピで説明したように最適化アルゴリズムを使用して、あなたの場合、準ニュートンの推薦見つける必要がある場合。

2

遺伝的アルゴリズムが有効ニューラルネットワークの最適化に適用することができますが、あなたは何をしたいのかについて少し考える必要があります。こうした逆伝播など

ほとんどの「古典的な」NNトレーニングアルゴリズムは、ニューロンのみの重量を最適化します。遺伝的アルゴリズムは重みを最適化することができますが、これは通常非効率です。しかし、尋ねていたように、ネットワークのトポロジーとトレーニングアルゴリズムのパラメータを最適化できます。あなたは "過剰訓練"されているネットワークを作成することに特に注意する必要があります。修正遺伝的アルゴリズムと

一つのさらなる技術は、逆伝播の問題を克服するのに役立ちます。逆伝播は、通常、極小値を見つけるが、それらを正確かつ迅速に見つける。遺伝的アルゴリズムとバックプロパゲーション(例えば、ラマルクGA)とを組み合わせることにより、両方の利点が得られる。この技術は、簡潔に説明されているGAUL tutorial

4

ニューラルネットワークと遺伝的プログラミングの良い例は、NEATアーキテクチャ(ニューロエボリューショントポロジの拡張)です。これは、最適なトポロジーを見つける遺伝的アルゴリズムです。また、隠れたノードの数を減らすことが良いことも知られています。

また、これはNeroと呼ばれるゲームを作成しました。非常にユニークで非常に驚くべき具体的な結果。

博士スタンレーのホームページ:ここ

http://www.cs.ucf.edu/~kstanley/

彼はそれを発明したものですと、あなたはNEATちょうど約すべての関連を見つけることができます。

+0

これにはC#ライブラリがあります - > SHARPNEAT http://sharpneat.sourceforge.net/ – JohnIdol

1

あなたの目的関数が連続していないときにニューラルネットワークを訓練するために遺伝的アルゴリズムを使用すると便利な場合があります。

+0

なぜGPを使用しないのですか?GAを使用してニューラルネットワークのウェイトを更新する場合、ウェイトがすべて正しい方向に更新されるようにするスマートメソッドではなく、GPを使用するだけでニューラルネットを使用する利点が失われているようです。 – HelloGoodbye

関連する問題