みなさん、今までに一度くらいは将棋や囲碁などでコンピュータと対戦したことがありませんか?例えば、パソコンにもとから入っていることもありますよね。ではコンピュータがプロと対戦したらどうなると思いますか?
最近では人工知能(AI)という単語を耳にする機会があると思いますが、将棋や囲碁においても様々なAIが開発されています。例えば、情報処理学会ではトッププロ棋士に勝つためのプロジェクトが立ち上げられ、事実上の目的を達成したとして「コンピュータ将棋プロジェクトの終了宣言」がなされるに至っています。(参考:情報処理学会 創立50周年記念事業)
将棋と囲碁を単純に比較するのであれば、囲碁の方が盤面のパターンが多く、実際に囲碁ではAIが人に勝つことは難しいと考えられてきました。しかし、囲碁においても2016年3月に行われたAIとトップ棋士の対局では、AIが4勝1敗で勝利を収めました。(参考:AlphaGo | DeepMind)
これで将棋や囲碁におけるAIと人との対局が完全に終わったというわけではありません。今後についてはぜひ調べて自分の目で確かめてみてください。
GAは「ダーウィンの進化論」をモチーフにしたものです。
ダーウィンの進化論を簡単に説明すると、
同じ生物でも個体間で違いがあって、それは親から受け継がれたものです。また優秀な個体、劣等な個体が存在し、まわりの環境によって優秀な個体が残りやすくなり劣等な個体は淘汰されていきます。加えて突然変異によって、より優秀な個体ができることもあり、その性質も次世代に受け継がれていきます。こうした一連の流れを繰り返すことで、その種が環境により適合するように進化していきます。
これがダーウィンの進化論の大まかな説明です。理解を容易にするために、キリンを例にとってみましょう(あくまで架空の話です)。
はるか昔、首の短いキリンと首の長いキリンが草原で暮らしていました。首が長いと草だけでなく、木の葉を食べることができますよね。つまり、長く生きる(食糧を確保する)点で首の長いほうが優れています。こうして、子孫には首の長いキリンが多くなり、現在のようにキリンは首が長いという結果になったんですね。 |
結局、GAって何なの?
GAとは、「優秀な個体=より良い答え」としていろいろな問題を解いていく手法になります。キリンが草原で生き残るという問題にGAを適用すると、首の長いキリンが優秀な個体(答え)として選ばれるわけですね。
GAは様々な分野で使われています。主に後述する「最適化問題」を解くために使われることが多いようです。
具体的には、ガスパイプライン制御、新幹線の形状決定、工場稼動計画、経路最適化、ロボット制御、プログラム自動生成、VLSIのレイアウト設計、遺伝子情報解析、蛋白質の構造決定などに用いられています。
有名な例である新幹線においては、N700系が登場する際に話題になりました。これまでより速く走行することで問題となる騒音や振動に対応するため、新幹線の先頭形状をどのように変更すればよいかということでGAが使用されました。
最適化問題(Optimization Problem)とは、「与えられた条件下で、目的関数を最大または最小にする解を探すこと」をいいます。
もっと分かりやすく書くと「計画を立てたり、行動したりするときに、どうすれば一番楽に、お金もかからずに済むかというのを短時間で調べること」です。
まともに解こうとすると計算量が多くなり、パソコンでも解けないものを、工夫したアルゴリズムを用いて少ない計算量で求めようというものです。
最適化問題の例としては、
|
|
|
|
|
などがあります。これらの問題は、総当たりで計算すれば最適解が分かるのですが計算量が爆発的に増えて計算が終わりません。
そこで短時間でこの問題を解くために、GAのような工夫したアルゴリズムが用いられています。