ロボマインド・プロジェクト、第78弾
こんにちは、ロボマインドの田方です。
「脳の中のCPU」シリーズ、最終回。
いよいよ、核心に迫りますよ。
(ホワイトボード)
上の問題と下の問題の本質的な意味についてです。
上の問題は、未成年が飲酒してるのをチェックする問題。
下は、母音の裏が偶数かをチェックする問題。
どちらも、数学的には同じ問題なのに、どうして上はすぐに解けて、下はなかなか解けないのでしょう?
今回のテーマは、生物の行動原理とコンピュータのアルゴリズムの違いの話です。
まず、根本的な生物の行動原理からおさらいしましょう。
生物は、不快を避けて、快を求める行動を取ります。
快・不快は感情に結びついています。
たとえば、不快としては、お腹がすいたとか、天敵が近づいてきたといった恐怖です。
そして、お腹がすいたら、食べ物を探そうと行動しますし、天敵が近づいてきたら、逃げたり、どこかに隠れようとします。
食べ物を得るとか、安全な場所に移動するとかがゴールとなります。
つまり、探索のアルゴリズムとなるわけです。
そこで、まずは、一般的な探索アルゴリズムの説明からしますね。
アルゴリズムっていうのは、コンピュータで問題を解く解き方のことです。
簡単な例として、迷路探索のアルゴリズムを考えてみます。
スタートがあって、ゴールがある迷路です。
途中に道が分かれていて、たいていの道は行き止まりになってます。
ゴールまでたどり着ける道が、少なくとも一つあって、その道を探す探索となります。
さて、この迷路問題、コンピュータで解くのに、大きく二つのアルゴリズムがあります。
一つは、分かれ道に来た時、どれか一つ、たとえば一番右とか決めて進んで行って、次に、また分かれ道に来たら、また右と決めて、行き止まりになるまで進みます。
行き止まりになったら、最初の分かれ道に戻って、次は、右から2番目の道を同じように進んで行きます。
こうやって、どんどん進んで、ゴールにたどり着くまで繰り返します。
このアルゴリズムを深さ優先探索と言います。
もう一つのアルゴリズムは、分かれ道に来たら、まず、右端の道を選びます。
そして、次の分かれ道に来たら、一旦戻って、元の分かれ道で、右から2番目の道を選びます。
こうやって、最初の分かれ道を全て探索したら、右端の道の次の分かれ道を全て探索します。
こうやって、少しずつ調べながらゴールを探す方法です。
このアルゴリズムを、幅優先探索といいます。
こういった探索アルゴリズムは、迷路以外にも、様々な分野で使われます。
たとえば、将棋やチェスの問題もこれで解けます。
たとえば、自分の最初の一手が、10通り考えられるとすると、そのすべてに対して、相手の次の一手を全部考えてみるわけです。さらにその全ての手に対して、自分のその次の一手も全て考えてみるわけです。こうやって、あらゆる手を考えるのが解探索のアルゴリズムです。
こういった、アルゴリズムは、第一次AIブームとよばれた1960年代に生まれました。
さて、こっからが本題です。
これを、未成年の飲酒問題に適応してみます。
たとえば、居酒屋にいる人の中で、未成年で飲酒をしてる人がいないかチェックするわけです。
前回、説明しましたけど、コンピュータプログラムでは、人は人物オブジェクトとして扱います。
オブジェクトは、プロパティっていう属性を持っていて、人物オブジェクトの場合、名前プロパティ、住所プロパティ、性別プロパティ、年齢プロパティなんかが考えられます。
先に、言っておきますけど、コンピュータって、ホンマにアホなんです。
人間とは、考え方が全然違うんです。
この問題を解くのに、居酒屋にいる人、一人ずつ、プロパティを全部調べるわけです。
探すのは、未成年がアルコールを飲んでないかです。
一番端のオッサンの属性から調べるとします。
まずは、住所から調べます。
都道府県はどこか。何県の何市か。何市の何区か。そうやって順に属性を調べていくわけです。
住所を全部調べたら、次は、性別を調べます。
こうやって、未成年か青年か確定するまで、全ての属性を調べるわけです。
そんな面倒な計算って思うかもしれないですけど、これが、コンピュータのアルゴリズムなんです。
コンピュータが得意なのは、繰り返し計算です。
だから、人間からみたら、そんな面倒なって思うかもしれないですけど、コンピュータなら、飽きもせず計算してくれるわけです。
第37回、38回で「フレーム問題」を取り上げましたけど、このフレーム問題も同じです。
フレーム問題で有名なのが、洞窟の中にあるバッテリを取ってくるって問題です。
ただし、バッテリの上に時限爆弾が乗ってるわけです。
ほんで、爆弾をのけて問題がないかって判断するのに、爆弾をのけると壁が落ちてこないかとか、壁の色が変わらないかとかって延々と計算してるうちに、爆弾が爆発してしまうわけです。
なんでそんなこと考えるのって思いますよね。
でも、コンピュータの探索のアルゴリズムを使って解を探すと、こうなってしまうんですよ。
人間なら、そんなアホな調べ方、しないですよね。
パッと見て、女子高生がビール飲んでるの見たら、「あっ」て思うわけです。
なんで、人間なら、それが簡単にできるかと言うと、未成年がお酒を飲むのが悪いってルールを知ってるからですよね。
そのルールを当てはめたら、すぐに分かるわけです。
じゃあ、それと同じように、コンピュータにルールを覚えさせたらええやんってなりますよね。
でも、コンピュータって、ホンマにアホなんですよ。
未成年がアルコールを飲むのはダメと同じように、全てのルールを書き出そうとするんですよ。
未成年はハンバーグを食べるのはOKとか。
でも、人は、そんなルール、いちいち、覚えてないですよね。
じゃぁ、何を覚えてるんでしょう。
それは、何をしたら悪いか、何をしたら良いかってことを覚えてるわけです。
善悪のルールです。
覚えてると言うより、善悪のルールに反応する機能を持ってんです。
悪いことはすぐに反応する機能です。
他人の行動だけでなくて、自分が行動するときも、最優先で、この善悪のルールを照らし合わせるわけです。
これが、人間のもつアルゴリズムなわけです。
だから、居酒屋で女子高生がビール飲んでたら、すぐに、あっとなるわけです。
深さ優先探索とか、幅優先探索とか使うわけじゃないんです。
行ってみれば、善悪優先探索です。
実際には、善悪だけでなく、恥とかの社会的感情も使います。
つまり、何か発言するとき、こんなこと言っても恥ずかしくないかって社会的感情に照らし合わせて発言したりするわけです。
これが、人間の持つ探索アルゴリズムと言えます。
そう考えると、下の問題を解くのが難しいのがわかります。
下の問題だと、正解に照らし合わせても何の感情も発生しないからです。
母音の裏が奇数になっていて、「あっ」と思わないわけです。
人は、社会で行動するときに使うアルゴリズムは、社会的感情との照合なんです。
これを最優先に考えるわけです。
ロボットを作る時、幅優先探索とか、深さ優先探索で考えたらダメなんです。
そんなロボットだと、フレーム問題に陥いるわけです。
コンピュータは繰り返し計算が得意だからといって、あらゆる問題を繰り返し計算で解こうとするから、いつまで経っても、人間と同じ心が生まれないわけです。
AIで、現在主流の機械学習は、まさに、大量の繰り返し計算です。
人の気持ちを理解して、人間社会に溶け込むAIを作るには、コンピュータが得意なことじゃなくて、人間の心のアルゴリズムをコンピュータに実装しないといけないんです。
残念ながら、そういったアプローチで、AIを開発してるところは、ロボマインド・プロジェクト以外では、聞いたことがありません。
よかったら、ロボマインド・プロジェクトを応援(チャンネル登録)してもらえると嬉しいです。
それでは、次回も、お楽しみに!