問題を解決するためにニューラルネットワーク(およびその逆)ではなく遺伝的アルゴリズムを使用するタイミングを決定するための経験則(または例のセット)はありますか?
両方の方法を混在させることができる場合があることは知っていますが、2つの方法の高レベルの比較を探しています。
ウィキペディアから:
遺伝的アルゴリズム (GA)は、find正確または近似solutions最適化と検索の問題。
そして:
ニューラルネットワーク は、非線形統計データモデリングツールです。これらを使用して、入力と出力の間の複雑な関係をモデル化したり、データ内のパターンを見つけたりすることができます。
ソリューションの価値を定量化できる問題がある場合、遺伝的アルゴリズムは有向検索を実行できます解空間の。 (たとえば、2点間の最短ルートを見つける)
異なるクラスに多数のアイテムがある場合、ニューラルネットワークは、classify以前に「見た」ことのないアイテム。 (例:顔認識、音声認識)
実行時間も考慮する必要があります。遺伝的アルゴリズムは、許容可能な解決策を見つけるのに長い時間がかかります。ニューラルネットワークは「学習」に時間がかかりますが、その後、ほぼ瞬時に新しい入力を分類できます。
遺伝的アルゴリズム(セクシーな名前にもかかわらず)は、ほとんどの目的で、最適化手法です。要するに、多くの変数があり、これらの変数の値の最適な組み合わせを見つけたいということです。そこにたどり着くために、自然の進化から技術を借りています。
ニューラルネットワークは、パターンを認識するに役立ちます。彼らは脳の単純化されたモデルに従い、それらの間でいくつかの重みを変更することにより、入力に基づいて出力を予測しようとします。
これらは根本的に異なる2つのエンティティですが、解決できる問題が重複する場合があります。
GAは、定義した構造に新しいパターンを生成します。
NNは、提供されたトレーニングデータに基づいて既存のパターンを分類(または認識)します。
GAは、ソリューションの大規模な状態空間を効率的に検索し、1つ以上の優れたソリューションに収束しますが、必ずしも「最良の」ソリューションではありません。
NNは(トレーニングを介して)パターンを認識することを学習できますが、学習したことを理解すること、つまり、トレーニング後に知識を抽出し、他の(NN以外の)で知識を再利用することは悪名高く困難です。
ここでは、まったく異なる2つのことを比較しています。
ニューラルネットワークは回帰/分類に使用されます-(x、y)の例のセットが与えられた場合、特定のxについて未知のyを回帰させます。
遺伝的アルゴリズムは最適化手法です。関数f(x)が与えられた場合、f(x)を最小化/最大化するxを決定します。
それらの間には多くの類似点があるので、それらの違いのみを概説しようとします。
オンラインパターン(時間とともに変化するパターン)を分析できる。一般に、これは一致し予測する必要がある時変サンプルです。
例:
特定の不変の問題に寄与すると思われる属性をコーディングできる場合に使用します。重要なのは、これらの属性をコーディングできることです(時にはその属性を知っていることもあります)。また、問題は大部分が変わらないことです(そうでなければ、進化は収束しません)。
例:
backpropagation algorithmの代替として遺伝的アルゴリズムを使用して、ニューラルネットワークの重みを更新できます。この例については、 http://www.ai-junkie.com/ann/evolved/nnt1.html を参照してください。
遺伝的アルゴリズムは(通常)離散データ(列挙、整数範囲など)で機能します。 GAの一般的なアプリケーションは、ブルートフォース検索(すべての組み合わせを評価する)のみが利用可能な場合に、「十分な」ソリューションを求めて個別のスペースを検索することです。
一方、ニューラルネットワークは(通常)連続データ(浮動小数点数など)で機能します。 NNの一般的なアプリケーションは関数近似です。入力のセットXと関連する出力のセットYがありますが、分析関数f:X→Yです。
もちろん、両方のバリアントが数千あるため、それらの間の境界線は多少ぼやけています。
経験則はありません。多くの場合、問題を定式化してそれらのいずれかを利用できます。機械学習は依然として活発な研究分野であり、どの学習モデルを使用するかは議論の余地があります。
GAは進化からセクシーな言語を取り入れていますが、コンピューターがランダムなプロセスを経て解決策に出くわすのを待っています。データを研究し、適切な仮定を立て、必要なものを把握し、これらを有効に活用できるアプローチを選択してください。最初の選択で結果が悪い場合は、その理由を理解し、アルゴリズム自体を改善するか、より良いアルゴリズムを選択します。