遺伝的アルゴリズムとニューラルネットワーク
1. 概要
遺伝的アルゴリズムとニューラルネットワークは完全に異なる概念であり、さまざまな問題を解決するために使用されます。 この記事では、最初に、遺伝的アルゴリズムとニューラルネットワークの簡単な一般的な紹介から始めます。 次に、いくつかの例を使用して、これらの各手法をいつ使用する必要があるかについてのガイドラインの概要を説明します。
その過程で、他の一般的なアルゴリズムとは異なるこれらのアルゴリズムに関するいくつかの興味深い事実についても説明します。
2. 遺伝的アルゴリズムとニューラルネットワークとは何ですか
遺伝的アルゴリズムとニューラルネットワークの基本について説明することから始めましょう。
2.1. 遺伝的アルゴリズムの基礎
遺伝的アルゴリズムは、ダーウィンの自然進化論に触発された検索ヒューリスティックです。 これは、最も適切な要素を選択するプロセスを自然に反映しています。
遺伝的アルゴリズムは、最初の母集団から始まります。 このアルゴリズムは、最初の母集団から、選択、クロスオーバー、および突然変異のステップを使用して新しい母集団を生成します。
アルゴリズムは初期母集団を入力として受け取り、適応度関数を選択します。 適応度関数は、アルゴリズムが最適またはほぼ最適なソリューションを生成するのに役立ちます。 アルゴリズムは継続し、選択、クロスオーバー、および突然変異操作を通じて母集団を進化させます。 最適化制約を満たすまで、いくつかの母集団を生成します。
2.2. ニューラルネットワークの紹介
一方、ニューラルネットワークは、パターンの決定と識別に努める一連のアルゴリズムで構成されています。 これは、人間の脳のニューラルネットワークが機能するのと同じように機能します。 アルゴリズムでは、ニューラルネットワークはニューロンのネットワークを指します。ニューロンは、特定のモデルからデータを収集および分類するために使用される数学関数です。
ニューラルネットワークには、重みと多くの隠れ層を含めることができます。
ユーザーからの入力は、ニューラルネットワークの入力ニューロン層を形成します。 活性化関数層が出力を決定します。 問題によっては、複数の活性化関数層を持つことができます。 合計レイヤーは、活性化関数レイヤーによって生成された出力を合計し、それを出力レイヤーセクションに表示します。
3. 動機
3.1. 遺伝的アルゴリズム
生物学的システムは、高度に最適化された適応システムであることが知られています。 遺伝的アルゴリズムの背後にある意図は、適応型で人工知能システムを開発することです。
遺伝的アルゴリズムは、一般に検索ベースの最適化問題に使用されます。これは、他の一般的なアルゴリズムでは解決が難しく、時間がかかります。最適化問題とは、目的関数の最大化または最小化のいずれかを指します。 遺伝的アルゴリズムは、最適化問題の最適またはほぼ最適な解を見つけることを目的としています。
3.2. ニューラルネットワーク
ニューラルネットワークは、複雑なデータパターンや予測問題を解いてモデル化できる数学モデルです。ニューラルネットワークアルゴリズムは、脳の処理を複製して基本単位として使用することで開発されています。 人間の脳の機能や動作を模倣する能力を持っているので、人間ができることなら何でもできます。
ニューラルネットワークには多くの用途があります。
- 電子メールでのスパム検出や人体での癌検出などのパターン認識
- 天気予報や株式市場予測などの予測
4. ニューラルネットワーク上で遺伝的アルゴリズムを使用する場合
それでは、詳細を掘り下げて、遺伝的アルゴリズムが特定の問題に適している場合を理解してみましょう。
遺伝的アルゴリズムは、検索ベースの最適化手法です。 優れた解の離散状態空間の大規模なセットがあり、利用可能な唯一の解はすべての組み合わせを評価することであると仮定します(ブルートフォース法)。 この場合、遺伝的アルゴリズムはかなり良い解決策を与えることができますが、最適な解決策は保証されません。
コンピュータサイエンスの分野では、解決が非常に難しいNP困難な問題や時間のかかる問題が数多くあります。 たとえば、巡回セールスマン問題(TSP)について考えてみましょう。 TSPの実際のアプリケーションの1つは、2つの都市間の最短経路を見つけることです。 ここで、ある都市から別の都市への最短経路を見つけるために運転中にGPSを使用していると仮定します。 もちろん、最適なルートを取得するためのGPSの遅延は許容されません。 このような場合、遺伝的アルゴリズムは、高速でかなり正確な解を得るための良い選択です。
従来の微積分法は、ランダムな点から始まり、勾配に向かって移動し、ピーク点に達するとすぐに停止する単一ピークの目的関数の場合にうまく機能します。 しかし、実際には、風景のような問題は多くの山と谷で構成されています。 このような場合、従来の微積分法は極大に固執する可能性があります。 このような場合の遺伝的アルゴリズムは、グローバルな最大値を見つけることができます。
5. 遺伝的アルゴリズムでニューラルネットワークを使用する場合
ニューラルネットワークが遺伝的アルゴリズムよりも効率的な選択である場合を調べてみましょう。
連続データで関数近似の問題がある場合は、ニューラルネットワークを使用するのが最適です。
ハードディスクに100万枚の画像が保存されているとします。これらの画像から、犬の画像が含まれている画像と猫の画像が含まれている画像を決定する必要があります。 これは分類問題の例です。 このタスクは、ニューラルネットワークによって効率的に実行できます。
最後に、特定の都市の住宅の価格とサイズを含むデータセットがあると考えてください。 家のサイズの詳細を考えると、タスクは価格を予測することです。 これは、線形回帰問題の例です。 この場合、ニューラルネットワークを使用すると、各家の適切な価格予測を行うことができます。
6. 例
このセクションでは、遺伝的アルゴリズムとニューラルネットワークを適用する問題の例をいくつか紹介します。
6.1. 遺伝的アルゴリズムの例
MAXONE問題について話し、遺伝的アルゴリズムを使用してそれを解決する方法を見てみましょう。
2桁の文字列(0と1の文字列)があり、バイナリ文字列の1の数を最大化するとします。 初期母集団がN長さLのランダムな文字列を持ち、Fが適応度関数を表すと仮定します。 MAXONE問題では、Fは母集団に存在する1の数です。
ここで、 CountOne()関数は、初期母集団の1の数をカウントします。 X は、このアルゴリズムから予想される1の整数を示します。 初期母集団は、選択、突然変異、および交差によって進化し、アルゴリズムは適応度関数を再度計算します。 指定された制約( X の値)を満たしている場合は、母集団が受け入れられます。それ以外の場合は、選択操作に戻ります。
N =4およびL=4を使用しています。 ランダムに生成された初期母集団は次のとおりです。
M1 = 1011 F(M1)= 3
M2 = 0010 F(M2)= 1
M3 = 1010 F(M3)= 2
M4 = 0000 F(M4)= 0
上記の例で示したように、初期母集団の1の総数は6です。 遺伝的アルゴリズムは、選択、クロスオーバー、および突然変異を使用して、より多くの1を持つ新しい母集団を生成することを目的としています。
選択では、フィットネススコアが良好な文字列が他の文字列よりも優先され、1の数が多い新しい母集団が生成されます。 選択を適用した後、次の母集団を取得するとします。
M1 = 1011(M1)
M2 = 1010(M3)
M3 = 0010(M2)
M4 = 1011(M1)
さて、M4を変更する理由は、M4のフィットネススコアがゼロであるためです。 したがって、最初の母集団の他の文字列と比較して最大数の1が含まれているため、選択操作では文字列M1が優先されます。
それでは、クロスオーバー操作を適用してみましょう。 クロスオーバーでは、2つのストリングが選択され、両方のストリングのランダムな部分が交換されて、新しいストリングが生成されます。 クロスオーバーにはM4とM3をランダムに選択しています。 M1とM2は、クロスオーバー後も変更されません。
- クロスオーバー前:M3 = 0 010 M4 = 1 011
- クロスオーバー後:M3 = 0 011 M4 = 1 010
赤字のビットは、クロスオーバー動作中にM3とM4の間で交換されます。
それでは、ミューテーション操作に進みましょう。 ミューテーションでは、既存のビットを変更するか、文字列にビットを導入して多様性を維持するという考え方があります。
- 突然変異前:M1 = 101 1 M2 = 1 0 1 0 M3 = 0 011 M4 = 1010
- 突然変異後:M1 = 1010 M2 = 1111 M3 = 0111 M4 = 1011
色付きのビットは、ミューテーションプロセス中に変更されます。 次に、適応度関数をもう一度計算します。
F(M1)= 2
F(M2)= 4
F(M3)= 3
F(M4)= 3
したがって、新しい母集団の適応度関数の値は12です。 16ビットのうち、1に対応する12ビットがあります。 母集団の1の数が6である初期の母集団から始めました。 したがって、新しい人口は以前の人口から改善されました。
アルゴリズムは反復を続行します。 ユーザーは、終了のためのいくつかの条件を与えることができます。 たとえば、適応度関数が14に等しい場合は常に、このアルゴリズムを終了するように指定できます。
6.2. ニューラルネットワークの作成
このセクションでは、ANDテーブルを検証するための非常に単純なニューラルネットワークを作成します。ニューラルネットワークには、入力層と出力層があります。 ここで、エッジには重みが含まれています。
この単純なニューラルネットワークを使用して、ANDゲートを検証する方法を調べてみましょう。 ここでは、2入力ANDゲートを検討しています。
基本的な考え方は、すべてのノードにしきい値Tがあるということです。 着信信号がノードのしきい値より大きい場合、入力値は受け入れられません(生成0)。 簡単にするために、この例では重みとしきい値の値を手動で設定します。 アルゴリズムは、各ノードの着信信号を計算してから、出力ノードのしきい値を使用してチェックステップを実行します。
重みとしきい値を計算するには、さまざまな方法があります。 この例では、事前に指定された値を使用します。
ノードX1の重みはW1(X1)=1.5です。
ノードX2の重みはW2(X2)=1.5です。
ノードYのしきい値はT(Y)=2です。
最初の入力:X1 = 0、X2 = 0
- 確認手順:
2番目の入力:X1 = 0、X2 = 1
- 確認手順:
3番目の入力:X1 = 1、X2 = 0
- 確認手順:
4番目の入力:X1 = 1、X2 = 1
- 確認手順:
したがって、このニューラルネットワークアルゴリズムの助けを借りて、この例ではANDテーブルを正常に検証しました。
7. 高レベルの比較
遺伝的アルゴリズムとニューラルネットワークに関して多くのことを議論してきました。 ここで、すでに説明したすべてのポイントを2つの手法の高レベルの比較に入れます。
まず第一に、遺伝的アルゴリズムは、探索問題と最適化問題の最適またはほぼ最適な解を見つけるために使用される検索ベースの最適化アルゴリズムです。 一方、ニューラルネットワークは、複雑な入力と出力の間をマッピングする数学モデルです。 以前は知られていない要素を分類できます。
遺伝的アルゴリズムは通常、離散データでうまく機能しますが、ニューラルネットワークは通常連続データで効率的に機能します。
遺伝的アルゴリズムは新しいパターンをフェッチできますが、ニューラルネットワークはトレーニングデータを使用してネットワークを分類します。
遺伝的アルゴリズムは、問題を解決するために常に派生情報を必要とするわけではありません。
遺伝的アルゴリズムは、適切な解を得るために適応度関数を繰り返し計算します。 そのため、妥当な解を計算するにはかなりの時間がかかります。 一般に、ニューラルネットワークは新しい入力の分類にかかる時間がはるかに短くなります。
8. 結論
このチュートリアルでは、遺伝的アルゴリズムとニューラルネットワークについて説明しました。 紹介と動機付けから始め、次に2つの手法を使用するためのいくつかの一般的なケースとガイドラインに注目しました。
さらに、読者がよりよく理解できるように、いくつかの問題の例と2つの手法の高レベルの比較を示しました。