0

予測を行うためにニューラルネットワークを実装するように指示されました。だから私はフィードフォワードMultiLayer PerceptronをBackpropagationアルゴリズムで作成しました。うまくいきました。しかし、私は結果をより速く、より速く得る必要があります。そこで、私は遺伝的アルゴリズムについて勉強セッションで重みを最適化するように教えました。遺伝的アルゴリズムを使用したニューラルネットワークの重み最適化

どのように染色体をコードすることをお勧めしますか?

ランダムに生成された重みのテーブル(-100,100)として既に行っていますが、それは特別な結果をもたらしません。私は、突然変異の確率が高い場合でさえ、重みのランダムなテーブルを生成することは解空間を制限するという問題があると推測します。

遺伝的アルゴリズムをうまく機能させるために、染色体の重みをどのようにエンコードすればよいでしょうか?

ありがとうございます。

+0

高速コンバージェンスと同じように高速ですか?次に、バッチ正規化を使用します。 –

+2

遺伝的アルゴリズムを使うと、おそらく勾配降下や別の分析的学習アプローチを使うよりも多くのリソース(例えば、時間とCPU)が必要になるでしょう。 RMSpropやadagradを使ってみましたか? – jorgenkg

+0

私はこれまで神経ネットワークの進化に取り組んできましたが、ネットワークウェイトをビットベクトルとして表現し、その2つの表現(ビットベクトル/重みリスト)間の変換を実行することが最も効率的な検索戦略であると感じました。 – jorgenkg

答えて

1

簡潔に(これはすでにコメントで示唆されている):do not do this。遺伝的アルゴリズムは、が効率的に最適化されない問題の単純なメジャーオプティマイザであり、は、ゆっくりと発見的なと多くのリソースを必要とします。特には決してであり、非常に効率的なトレーニング方法(SGD、Rmsprop、Adam)が数多くあります。ネットワークアーキテクチャなどのように、有効なグラジエントを計算することができず、他のよく定義された数学的手順を使用することもできないような、より抽象的な部分を最適化するために使用できます。

0

ニューラルネットワークの重みを最適化するために進化的アルゴリズムを使用する場合は、 より良いアプローチがあります。一度バックプロパゲーションを使用してネットワークを学習し、最大と最小の重み付けを使用します。 -1.0988333,1,2982293の間に体重が分布していると言いますが、この区間の間に染色体を生成できるように[-2,2] /( - 2,2)をとることで、より良い解を得られるようになり、さらに最適化することができますアルゴリズムによって。 [-100,100]の間隔は、最適解の生成が遅くなります。もちろん、最適なソリューションを得るには、フィットネス機能の問題をどのように定義しますか。 1つのアプローチは、与えられた重みに対して最小rms値を得ることである。

関連する問題