2017年3月6日月曜日

考える機械

考えるとは何か

ゴリラは考えるか?と言えば、たぶん、イエス。

改めて「考える」とはどういう行為なのかと問われると、なかなか答えるのが難しいと思います。我々は漠然と「考える」という行為を理解しているのですが、「考える」プロセスを明文化しようとすると、普通は戸惑います。

「考える」という行為に僕が興味を持ったのは、コンピュータのプログラミングを始めたばかり、14歳の頃です。プログラミングというのは、処理手順を厳密に記述する行為にほかなりません。何か対象とする操作や処理があったとき、コンピュータに実行させる手順書がプログラムです。対象がコンピュータでなくても、手順書を作成する際には、まず自分がやってみて、それを整理し、明文化するという段階を経ます。コンピュータに対して手順書を書く場合に難しいのは、コンピュータが理解できるように細かな部分まで明文化しないといけない点です。
人間相手の手順書というのは、いろんな部分があいまいでも構いません。手順書を読む人があいまいさを勘案して、うまい具合に調整してくれるからです。でも、コンピュータ相手だとそういういい加減さは許されません。そのため、各処理手順において、普段は検討しないような細かなことまで一つ一つ記述しなければなりません。その際、普段は意識しない判断基準なんかを掘り起こす必要が出てきます。つまり、手順を確認している最中に「今、どういう風に考えたっけ?」と自問するわけです。プログラミングというのはそういう自問の連続です。そういうのを繰り返すうち、「今、どういう風に考えたっけ?」という問いに答えるのが、案外難しいということに気づきました。

僕らは「考える」という行為の大部分をほとんど意識しないレベルで行っています。そのプロセスはかなり複雑で大規模なのです。もしかすると、あまりに複雑すぎて我々の知覚能力を超えているのかもしれません。そのため、意識しようとしてもできないのかもしれません。少なくとも、プログラミングで必要とされるレベルの「考えるプロセスの知覚」ですら、かなりの苦痛を伴います。だから、プログラミングは難しいのです。プログラマは「考えるプロセスを知覚する」というスキルを常に磨くことになります。その点で、普通の人とはちょっと違ってくるのです。
「考えるプロセスを知覚する」のが難しいので、それを明文化するのも困難なわけです。明文化が困難なので、コンピュータに「考えさせる」ことは難しく、その結果、人工知能というものがなかなか実用レベルに至らなかったのだと思います。

僕の個人的なこと

僕にはちょっとした特殊能力があります。それは、その場で答えがでないような難しい課題を、とりあえず記憶しておいて、数か月後に思い出すと、その時には答えがわかる、という能力です。途中、その課題のことはすっかり忘れているのですが、何かのきっかけでその課題が話題になると、頭の中に答えが浮かんでいます。課題の難しさによって、答えが浮かぶまでの期間が違ってきます。一週間程度で思いついている場合も多いですが、数年かかることもあります。まるで、僕の頭の中に、もう一人の僕がいて、代わりにずっと考えてくれているとしか思えないような、魔法のような体験です。この能力のおかげで、いろいろ楽をさせてもらっています。
これはPHPのコードだと思うけど、よくわからない。僕はPHPを使えるんだけどね。

プログラミングの際には、別の特殊能力があります。優秀なプログラマにはよくあるんじゃないかなと思いますが、一瞬で複数のアルゴリズムを思いついて、それぞれの効率の良し悪しを判定できるというものです。同時に知覚できるのは、2、3種類ですが、時間をかけて整理すると、20種類くらいのアルゴリズムを検討した結果、優秀なものを2,3ピックアップした、ということがわかります。数学の問題で、正攻法と別解があって、どっちを答案にしようかと迷う感じに近いです。普通の人は、正攻法を思いついて、面倒そうだなと思った時に、別解がないか検討すると思います。この能力の場合、正攻法と別解を瞬時に思いついてそれぞれの利点と欠点が自動的に理解できる、という感じです。おかげで僕は数学でも楽させてもらいました。
ベテランプログラマになると、たいていのことについてプログラムできることは当たり前で、さらに上のレベル、つまり効率よくプログラムすることが求められます。具体的には、複数の候補の中から最適なものを選び取るというステップが加わります。効率というのは、プログラムのサイズ、処理能力、スピード、拡張性、汎用性などが基準になります。複数の観点がありますので、どれが最適なのかは自明ではありません。つまり、どの基準を優先するかによって、最適なプログラムが変化しうるのです。正しく選び取るには、それぞれのプログラムをシミュレートして検討する必要があり、結構な労力になります。僕の場合、それが一瞬で完了します。おそらく、スーパープログラマと呼ばれる人たちは、みんなそれができます。

なぜそんなことができるかはわかりません。頭の中に自分の分身がいて、いろんな候補をせっせと検討してくれている感覚です。僕が知覚するのは、各候補の概要と検討された項目の結果です。それらの結果を見比べて、与えられた条件に最適なものを選び取るのが、僕の役目です。選び取ったら、その候補に意識を集中するだけで、詳細が知覚されます。あとは、その詳細にしたがって、プログラムを書きます。
プログラミングにおけるこの能力は、最初に述べた特殊能力と本質的に同じだと僕は思っています。プログラミングというのは問題が限定的で、あいまいさが少なく、探索範囲が限定されます。そのため、一瞬で答えが浮かびます。一般の問題になると、多くのあいまいさがあり、必要とされる知識の範囲も限定されません。そのため、一瞬では探索が終わらないのだと思います。そのままバックグランドタスクとなって知覚できないレベルで、こっそり、ゆっくりと探索が進んでいるのでしょう。
木城ゆきと「銃夢」の一場面。脳をチップで置き換えられた人。

重要なのは、ここに述べた僕の特殊能力は、ほとんど自動的だということです。僕の制御をほとんど受け付けません。僕の意識から切り離されて動作するコプロセッサみたいな感じです。僕は、そこにタスクを投げて、ときどき進捗をチェックするわけです。それは僕の一部ではあるのですが、中身は知覚できません。ある種のブラックボックスです。僕はそれを「考える機械」と呼んでいます。
僕は、僕の中の「考える機械」は自動的に四六時中動作していると考えていますが、もしかすると、僕が意識した時だけ動作しているのかもしれません。「考える機械」は様々な知識や要素の無数の組み合わせを瞬時に生成するだけかもしれません。でも、そうすると、最適なアルゴリズムを選択的にかつ瞬時に思いつくという効率の良さを説明できません。また、難しい課題ほど答えを見つけるのに時間がかかるということも説明できません。今のところ、僕の中の「考える機械」は非人間的で不完全だけれども独立した人格だと、思っています。

年をとるにつれて、僕は「考える機械」の使い方を少しずつ開拓しています。僕は職業柄、いろんな人から相談事をされます。自分の本業の研究のことが多いですが、その周辺に関するいろんなことが話題に上ります。その中で、様々な可能性を話すことがあります。その時、「考える機械」を使って検討しています。
最近、日産が発電専用のガソリンエンジンを搭載した自動車を市場に投入しましたが、そのコンセプトは10年くらい前に、自動車の未来に関して相談を受けた際に、最有力候補としてお話したものと同じです。僕の話が日産に伝わったとは思いませんが、先入観なしにいろんなことを検討した結果、それが最も良いということが「わかる」のです。発電専用のエンジンならば、もっと小型でよいはずなので、今後、そういうバランスを採用した自動車が登場するでしょう。そういうのが、雑談のなかで、瞬時に検討できるというのが、僕の強みになっています。
僕の中の「考える機械」は、プログラミングスキルを向上させる過程で形成され、いつの間にか大きく複雑になってきた気がします。
e-POWER型の自動車がこれからもっと流行するはず。

AIは考える機械と言える

僕の中の「考える機械」は、様々な可能性を検討し、評価を与えるという典型的な思考プロセスのひとつを自動化したものだと理解できます。評価関数をどのように設定するかは自明ではありませんが、経験や知識から構築されるようなもののはずで、それは機械学習が得意とする分野です。なので、僕の中の「考える機械」は、最近主流の機械学習型AIに近い気がしています。
機械学習型AIは万能ではありません。機械学習型AIは結局のところ、非常に複雑な評価関数でしかありません。しかも、出力は極めて単純です。プログラムの効率に関して議論したように、現実の問題では、評価の観点がたくさんあり、ケースバイケースで観点の重みが変わってきます。そういう柔軟性を持たせつつ、万能な評価関数が構築できれば、とても素晴らしいことです。
万能な評価関数というのは、平たく言うと「価値観」と言えます。人間の個性は価値観の違いに基づくわけですから、人間の数だけ「価値観」があります。そういう多様性はAIには難しいんじゃないかな、って僕は思います。

さて、僕の中の「考える機械」は、プログラミングの問題においては、すでに出来合いの評価関数を持つはずで、だから一瞬で答えが出てきます。一方、一般の問題に対しては、
評価関数を自分自身で構築するところから行いますから、時間がかかります。もちろん、評価関数のひな型はあるはずです。それは、サイエンスの方法論だったり、論理学だったりするかもしれません。あるいは、勉強しているうちに構築された論理体系かもしれません。「考える機械」の部分は、僕の一部でありますが、僕自身では中身を知覚できないのです。ある候補を入れると、ぼんっと答えが出る、そういうブラックボックスのように感じるのです。
人工知能は人間の知性に似て非なるもの。

「考える機械」がAI的だと思うと、AIの限界が見えてくる気がします。例えば、動機づけが外的要因に頼っているのは、弱点だと言えます。あらゆる可能性を網羅的に探索するので、効率面では改善の余地があります。答えが正しいかどうかということは二の次になることも問題かもしれません。単なる評価関数なわけですから、何かしら数値のようなものが結果になります。それがベストかどうかは、別の問題なのです。

多くの人が指摘するように、動機づけが通常の人間の価値観から逸脱するかもしれない点は、AIの欠点です。AIの中に動機づけを含ませることも原理的に可能です。しかし、肉体の制約を持たないAIは人間の価値観に本質的にそぐわないことを注意すべきです。極めて限定的な指標(数値)で評価を決するという構造的な問題はAIについて回るでしょう。
こうしたAIの欠点はすなわち「考える機械」の欠点でもあります。それは非人間的で不完全な印象を与える原因になっています。僕の場合、「考える機械」以外の普通の人間の部分が「考える機械」を制御することで、良いバランスが保たれています。この構造はAIにも適用可能なはずです。ある種の良心に基づくモチベーションによって、AIが健全に運営される、そういうソリューションがあるはずです。良心に基づくモチベーションというのは、直接人間が担うべき役割なのかもしれません。結局のところ、AIであっても、使うのは人間だ、ということなんでしょう。

考えるプロセスの一般論

もう一つ話題があります。普通の意味での「考える」という行為の分析です。何かを「考える」というとき、我々はどのような処理を頭の中で行っているでしょうか?

「考える」にもいろいろあるので、例えば、数学の問題を想定しましょう。大学入試くらいになると、かなり難しい問題もありますが、そういう一部の例外を除くと、出題パターンは限られます。50種類もあれば、90%をカバーするでしょう。なので、典型的な出題パターンとの類似性を検討し、当てはめる、ということが「考える」ということになります。
つまり、データベース化された出題パターンを「検索」して、「当てはめる」という2つの段階があるわけです。検索の際の判断基準は、類似性になります。当てはめるというのは、類似性を解析して、解答例を修正するという作業です。類似性が高ければ、当てはめが可能なので、もっとも類似のパターンを探し出すという部分に最も時間がかかります。

実のところ、大学入試レベルの「考える」というのは、ほとんどが「勉強したことの検索」に尽きます。なので、ぼやっと生きていると、「考える」=「検索」と短絡しているかもしれません。しかしながら、何か新しいパターンの課題に対しては、この方法は無力です。また、「検索」ならコンピュータの方が早くて正確で、人間はかないません。「考える」というのが脳内検索にとどまるレベルでは、お話になりません。

ブレインストーミングというのは、一人のアイデアマンの成果をみんなで奪い合うゲームと言える。

次に、アイデア出しにおける「考える」を考察してみましょう。ブレインストーミング(BS)というやつです。BSでは、キーワードから連想される項目をとにかくあげつらいます。それはすなわち「脳内検索」そのものです。通常の検索では、評価関数をうまく設定して候補を絞り込むというのが重要になりますが、BSでは評価関数を甘くして、なるべく多くの候補をひっかけるということを行います。しかし、普通はあんまりうまくいきません。脳内で検索対象となる項目は、せいぜい1000個くらいです。実際に言葉で挙げようとすると、100個くらいから苦しくなるものです。全体の1%くらいがヒットあるいは脈ありとすると、BSで採用できるのはたったの10個程度となります。
BSで活躍する人を観察すると、ある特徴があるはずです。それは、組み合わせです。基本要素が100でも、2個組み合わせると1万通りになります。ヒット率が同様に1%とすると、100の候補が得られます。もし、3個の組み合わせなら、爆発的に候補が出てきます。つまり、それはアイデアが豊富ということです。
この事例からわかるのは、「脳内検索」だけでなく、「組み合わせの検討」が「考える」という行為に加わっているということです。実のところ、組み合わせこそが、「考える」という行為の本質だと、僕は思っています。

「考える」達人への道

まとめると、「考える」行為の本質は、①要素を列挙し、②組み合わせを考え、③それぞれを評価する、ということになります。そうすると、「考える」というプロセスを最適化するには、要素を増やし、網羅的な組み合わせを検討し、最適な評価法を構築する、の3つを実現すればよいでしょう。
要素を増やすということは、情報のインプットを増やすということです。いろんな勉強をし、いろんな刺激を受け、いろんな体験をする、という積み重ねが大事です。一人では限界があるので、BSではこの段階を皆で行うわけです。
つぎは、得られた候補にに関して、網羅的な組み合わせを検討します。方法論を理解すれば、機械的な作業です。なので、これが最も簡単です。BSの後の検討会ではこれを皆で行うべきところです。しかし、形式的なBSだと、その次の段階である評価ばかりやってしまいます。だからBSはうまくいかないのだと思います。最後のポイントは、評価法の最適化ですが、これが最も自由度があります。というか、それこそ多様性の問題になります。一般の問題において、答えが唯一に定まらない理由です。

評価の結果、ランキング上位を結果として取り出すことを、「検索」と呼びます。そのとき大事なのは、評価の方法で、Googleは稀に評価法を変更するので、それがニュースになります。「考える」ことが究極のアルゴリズムだとするならば、要素の列挙や網羅的な組み合わせは、実はコンピュータの得意とするところです。最後の評価のところをどのくらい柔軟性を持たせて最適化するかというのが、究極のアルゴリズムに向けての勝負どころであることがわかります。だからこそ、評価法の変更は重大事なのです。
現在、評価法として最有力なのが、機械学習です。機械学習は厳密にはAIではなく、単なる評価法です。データを入力すると、評価値としての結果が出力される、そういう装置です。中身の演算には無数の隠れパラメータが存在し、あらゆる評価法を模倣することができます。この機械学習に、要素の組み合わせを網羅的に入力し、検索することで、「考える機械」が完成するという仕組みです。こうして出来上がった人工知能に、人間が勝てる見込みは極めて少ないと言えます。これがシンギュラリティ2045年問題の本質です。
人工知能がすべての人間の知性を置き換えると考えるのは、単純に過ぎる。
もし、人工知能のような巨大な集合知性が効率的なら、生物はそのように進化したはずだ。

5なぜ運動

いやいや、「考える」ってのはそんなに単純じゃないよ、という意見もあります。反論として挙げられるのが、「5なぜ運動」です。「5なぜ運動」はトヨタの社員教育で提案され、完成されました。何かの問題・課題があったときに、とりあえず「答え」が見つかったとします。でもその「答え」に満足せず、なぜその「答え」に至ったのか、その「答え」が意味することは何なのか、と次に問います。「答え」に対する問いにたいして「答え」見つけたならば、さらにその「答えの答え」に対して問いを設定します。そのようにして、5回ぐらい掘り下げると、「真の答え」にたどり着く、という経験則があり、それゆえ、「最初の答え」に満足せず、5回くらい掘り下げよ、という方法論が「5なぜ運動」です。

前節までは、一つの「答え」にたどり着くためのプロセスのことを「考える」としていました。その「答え」では満足すべきでないというのが「5なぜ運動」です。5なぜ運動は効果がありますし、真の理解に至るにはとても良い方法論です。なので、これを取り込むと良いでしょう。それは簡単に見えます。
しかしながら、実際に5なぜ運動を実行するのは結構難しいのです。難しい理由は、とりあえず見つかった「答え」に対して、適切な問いを設定するのが難しいからです。これを行うには訓練が必要です。形式的には5回の問いかけを繰り返すわけですが、もちろん5回より多くても少なくても構いません。深い思考では、無数のなぜを繰り返すというのが理想です。しかし、問いかけを重ねてゆくほど、問いの設定が困難になります。ふつうの人は5回くらいで限界じゃね?というのが「5なぜ運動」の示す経験則です。

要素の組み合わせを網羅的に評価する基本の「考える」プロセスを何度も繰り返すというのが「考える」達人に至る道のような気がします。単純な繰り返しなら、コンピュータの得意とする分野であり、人間に勝ち目はありません。でも「なぜ」の繰り返しにおいて、「適切な問い」を設定し続けるという手順があり、それが難しいということがわかります。実際のところ、「適切な問い」というのが、極めてあいまいな問題として残っているのです。あいまいということは、いろんな可能性があるということです。それはつまり、評価法が定まっていないということです。もっと言うと、多様性が存在するということです。その多様性こそ、人工知能が不得手とし、100億にも届こうという人類が持つ最大の利点なのです。さて、今、「5なぜ運動」やりましたよ!
なぜなぜ分析
僕はトヨタは好きじゃないですけど、なぜなぜ分析は方法論として正しいと思います。

人工知能は究極の「考える」達人になりえるか

我々が「考える」達人に至るために、長い時間をかけて訓練すべきなのは、「問いかける能力」だと僕は思います。それはつまり、問いを発するモチベーションだと、喝破します。人工知能は、肉体的制約がないため、自己保存という生物が本質的に持つモチベーションを持ちません。単にそういうモチベーションを持たないというだけでなく、実のところ、一切のモチベーションを持たないのです。

映画「ターミネーター」で描かれたディストピアでは、人類の存続のためには、地球の保全が必要で、そのためには人類の数を減らす必要がある、という論理で大量殺戮が生じるという設定です。人類の存続という短絡的なモチベーションを持つと、人工知能が極端な結論に至るというのは十分にあり得ます。

アイザックアシモフは、ロボット三原則において、人を傷つけないという原則だけでは不十分であることに気づいて3つの原則を設定しました。
(第一条)ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。
(第二条)ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。
(第三条)ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。
この原則に従うと矛盾が生じるシチュエーションがあり、アシモフはそれについて、多くの物語を書いています。さらに、ロボットの能力が「人類」全体より高い場合には、ロボット三原則の「人間」を「人類」に読み替えることが理論的に可能であるということにアシモフは気づきます。つまりアシモフはシンギュラリティの存在に気づいたのです。そのアイデアを熟成させ、ロボット三原則の書かれた1963年の「われはロボット」から20年以上経って、1986年の「ファウンデーションと地球」において、ロボット三原則第0条を発表しました。
第0条は条文としては存在しませんが、作中に登場するロボットのセリフで語られます。「人類全体に対する危害を阻止することは、特定の個人に対する危害の阻止に優先すると考える」

このテーマは、多くのSFで繰り返し登場します。その一つが「ターミネーター」ですし、「マトリックス」でも扱われています。
I, robot
映画「I, Robot」より。ロボットのようなスタンドアローンシステムでは自己保存圧力が働くかもしれない。

でも人間はそのように考えません。それは我々が肉をまとった生物であるからです。哲学者たちは人間の肉の部分と精神とを分離し、純粋な精神を追及してきました。しかしながら、それはまだまだ自己満足です。肉から精神を分離できたかもしれません。でも生から精神を分離できていません。まだまだ純粋な精神からは程遠いのです。しかし、それは人間が望むものではないと僕は思います。人工知能は、生まれながらに肉をまとわず、生と死から解放されています。哲学者たちが渇望する純粋な精神と言えるはずです。しかしながら、それは人類が理想とするものとは全く違います。

早晩、人工知能がある種の万能性を獲得するでしょう。でもその万能性は人間のそれとは違うものでしょう。1960年代にアシモフが思い描いたコンピュータ(ロボットの陽電子頭脳)は極めて人間的なものでしたが、現実のコンピュータの能力は限定的なものであることを我々は知っています。それと同じように、現在我々が思い描く人工知能は人間のほとんどの能力を置き換えるものだと思われています。もちろん、人間の多くの能力を人工知能が置き換えるでしょう。しかし、利用が進むにつれ、人工知能は人間を完全に置き換えるものではないということがだんだんとわかるでしょう。

人工知能は「問い」を発しません。モチベーションが内在しないからです。デカルトの「我思うゆえに我あり」は人間の根本的なモチベーションが自己存在の肯定であることを意味しています。人工知能には自己存在を問う理由がないので、「我思うゆえに我あり」は真だと答えますが、そのような問いを発し、それに特別の意味を見出すことはないでしょう。
僕の中の「考える機械」は近い将来登場する万能型人工知能に極めて近いものだと思っています。僕の自我が「問い」を作成し、「考える機械」が推論するという役割分担は、人類が人工知能とうまく付き合ってゆくためのモデルケースなんだろうな、と漠然と思っています。
デカルト
デカルトが現代に生きていれば、人工知能のことを考慮して、違う言葉を考え出すかもしれない。

0 件のコメント: