AI個別技術と関連理論 2・ヒューリスティック1

ヒューリスティックとは

あらためて、「ヒューリスティック heuristic」という言葉の意味から確認します。

辞書的には「発見的な」、「発見をうながすような」や、「体験学習による」といった意味です。

人工知能の領域での意味もまさしくそういうことで、「存在する、あるいは、存在する可能性が高い未知の何か」を探すために、コンピュータに暫定解を出させ、評価し、やり直しさせるトライ&エラーを繰り返すことで、求める答えに近づいていく(近似していく)手法になります。本当の意味での最適解が出せるわけではなく、それに少しでも近似した解を求めます。

この手法に依って立つ人工知能技術はたくさんあります。古くは迷路を抜けるルートを学習するSNARC(1951年)があります。人工知能の歴史が始まった源流のひとつでした。ほかにも、General Problem Solver (1957年)や、強化学習、遺伝的アルゴリズム Genetic Algorithm、ボルツマンマシン、ニューラルネットワーク、およびこれを利用したディープラーニングなどはヒューリスティックな手法に依っています。

 

原点・SNARC

マービン・ミンスキーとディーン・エドモンドが作製したSNARC Stochastic Neural Analog Reinforcement Calculator(確率的神経アナログ強化学習計算機)は、1つにつき6本の真空管と1つのモーターを持つ、神経細胞を模した人工ニューロン装置40個をランダムに接続したマシンでした。人工ニューロンは、電気信号を受けると複数の分岐のどれかに信号を増幅して出力するようになっていました。このマシンが迷路の正しいルートを進んでいるときはオペレーターが信号を送り、そうでないときは送らないという操作をすると、電荷がキャパシター(コンデンサー)に蓄積され、正しいルートを進んでいるときの信号経路を使う確率が高くなり、まちがったルートを進んでいるときの信号経路を使う確率が下がるようになっています。マシンが迷路内を移動しながら正誤のルート記憶を重ねていく繰り返しで、マシンは迷路のルートを学習したのです。

興味深いことに、このマシンは本当に「脳」のような振る舞いを見せました。真空管は電球と同じで、長い間使っていると切れてしまい、機能しなくなります。SNARCも実験を重ねるうちに真空管が切れてしまうことがあったのですが、信号はこわれた人工ニューロンを迂回して伝わり、全体的な効率は低下したものの、学習機能そのものは失われなかったのです。

これは後の「ニューラルネットワーク Neural Network」の原型となりました。また、試行錯誤(トライ&エラー)の繰り返しで迷路の抜け方を探り当てる手法は、まさにヒューリスティックでした。

 

General Problem Solver (1957年)

ハーバート・サイモン、アレン・ニューウェルは、「人間の思考をシミュレートする」汎用の問題解決プログラムとしてGeneral Problem Solver (GPS)を開発しました。このプログラムは、手段目標分析 Means-Ends Analysis (MEA)にもとづいて問題を解決します。

手段目標分析は、「現在の状態を目標の状態に変換する」という大きな目的に向けて、

・目標状態と現在状態の差を観測、評価

・その差を縮小するためにすべき手段を考え、

・その手段が実行可能かどうか評価し、可能ならば実行する

というステップを繰り返して近づいていく手法です。やはりヒューリスティックな手法になります。

このプログラムでは、「現在状態→目標状態」という大目的に対し、これを果たすための「手段」という下位問題が生じる構造になっています。場合によっては、その手段を可能にするための手段という、もう一段下位の問題も生じます。

たとえば、「庭に一本の木が生えている」という現在状態から、「木のテーブルを完成する」という目標状態を目指すとしましょう。すると以下のような下位問題が生じてきます。

 

下位問題① 現在状態「木が生えている」→「木を切り倒す必要がある」

・手元に斧かチェンソーがあるか

ある→実行①(木を切り倒す)→下位問題②へ

ない→下位問題①-1 斧かチェンソーが必要だ

・買いに行くお金があるか

ある→買いに行く(→実行①へ)

ない→下位問題①-2 お金が必要だ

お金を用意する手段を検討(銀行でおろす、誰かに借りる、働きに出る……)

(以下省略)

下位問題② 現在状態「丸太が手に入った」→「板や角材にする必要がある」

・のこぎり、できれば電動丸鋸があるか

ある→実行②(丸太を板や角材に)→下位問題③へ

ない→下位問題②-1 のこぎりが必要だ

・買いに行くお金があるか (以下省略)

下位問題③ 現在状態「板と角材がある」→「テーブルの形に向けて部材を成形する」

・のこぎりはあるので実行

下位問題④ 現在状態「テーブルの部材(パーツ)がある」→「組み立ててテーブルにする」

・釘とトンカチはあるか

ある→実行④

ない→下位問題④-1 釘とトンカチが必要だ

・買いに行くお金があるか (以下省略)

 

「庭に生えている木からテーブルを作る」プログラムは、だいたいこのようにして順次手段を実行し、目標状態に近づいていきます。手元に何の道具もない場合、二度も三度もホームセンターに行ったり、お金がなければ二度も三度も金策に走ったりしなければならないあたり、実にヒューリスティックです。

ただ、実際のGPSは代数や幾何の証明問題や迷路脱出など、プログラムに形式的に記述できる問題にしか取り組めませんでした。だからGeneral Problem Solver=「一般的な問題を解決するマシン」というのは明らかな誇大表現です。それに、上の例で出てきた「斧、チェンソー、のこぎり、釘とトンカチ、お金、銀行、お金持ちの友人、就職先」などの手段はプログラム上で人間が与えてやらなければならず、マシンがみずから手段を考え出し発見しているわけではありません。この点から見ても、単純・限定的な系で形式化できる問題にしか対応できず、現実の問題には太刀打ちできないことは明らかでした。

しかし、証明問題など、人間が知性を用いて解く問題を、曲がりなりにもマシンが解いて見せたことは、当時は衝撃的に受け止められました。