基本読書

基本的に読書のこととか書く日記ブログです。

自動運転車や囲碁解析、ネットフリックスのレコメンドの裏側では実際何が起こっているのか──『スマートマシンはこうして思考する』

この『スマートマシンはこうして思考する』は、smart machines、ちまたでAIといわれているものが実際どのような仕組みで「知能があるような」振る舞いをみせているのかを解説する一冊である。各種アルゴリズムの詳細に立ち入るわけではなく、かといって抽象的にしすぎるわけでもなく、「そこで何が行われているのか」がコンピュータ科学の知識があまりない人間にとってもわかりやすいように書かれている。

本書で取り上げられていくのは自動運転やNetflixのユーザへのレコメンドエンジン、囲碁で人類最強となったAlpha Go、クイズ王に勝ったクイズAIのワトソンなど、各分野でブレイクスルーを起こした成果の数々と、それを実施した人々の物語だ。自動運転にしろレコメンドエンジンにしろ、一つの企業やチームがシコシコと研究室で研究し続けてきた果てにぱっと出てきた、というものは少なく、多かれ少なかれ他の同様の問題に取り組むAI研究者らとの競争、コミュニティの中から生まれている。

たとえばNetflixのレコメンドエンジンは、提供される賞金獲得のために初期は様々なチームが個別に実装する形で進行したが、それだけでは限界が見えてきた時にいくつものチームが統合・合併し技術を合わせることでブレイクスルーを果たした。自動運転も、人間の運転手なしで砂漠を走る自動運転車のレースに取り組んだ研究コミュニティの存在が大きかった。本書は、そうした開発者たちの物語でもある。

自動運転車はどう動いているのか?

スマートマシンの仕組みと言われてもどのようなものなのか、どんな困難があるのか、想像もつかないかもしれない。たとえば、自動運転車がどのようにして道を走行するのか? 目的地をナビのようにセットして、あとは周囲の車との車間距離に気をつけて(物体を探知して)気をつけてルート通りに走ればいいだけではないか?

とはいえ、実際にはそれだけのことを実行するのに途方もない処理が必要なのだ。たとえば、どうやって走っていいルート=道路を検知するのか? 障害物があったとして、それをどうよければ良いのか? 前の車にぶつからないように減速するにしても、どれぐらい減速したら間に合うのかも計算しなければいけない。安全な地面ばかりではなく、沼のような場所、細かな石などの危険度も判定する必要がある。また、どのようなシステムでも絶対にバグはある。たとえば、存在しない障害物をバグで幻視してしまい、まったく動けなくなるなど。そうした「予想外の事態」が起こった時にどのような行動をとらせるべきなのかなど、考えるべきことは多い。

そうした問題を解決するために多くの処理が挟まれているのだが、単純化すると自動運転車は3つの層からなる構造が良い成績を残している(DARPAの自動運転車コンテストでは)。ひとつは、カメラやGPS、加速度計やジャイロなどを用いて情報を収集するハードウェア層。もうひとつはそうしたデータを統合し、解釈してより高レベルの世界モデルを生成する認識&世界モデリング層。この層が具体的に何をやっているかというと、車の位置と速度の調整、移動物体の検出、道路の縁の検出など、「世界に何があるのか。自分がどのような状態なのか」をリストアップしている。

人間ならどこまでが道路かなどみたらすぐわかるが、スマートマシンはいちいち「どうやって道路の縁を判定するのか」という処理を書かねばならない。その仕組のひとつが、類似した色の画素をグループ化する「クラスタリング」と呼ばれる機械学習のテクニックで、画素の塊でどこからどこまでが道路なのか(そして道路ではないのか)を判定するのである。そうした認識処理が終わった後、計画と思考を担当する層に解釈された情報が受け渡されてそこが「どう行動すべきか」を決断する。

この最後の思考&計画層にも無数の判断が行われている。「交差点に対処する」のもそのひとつで、1.(青なのか赤なのか)センサーを監視する。2.(交差点を渡る)優先権を持つ場合、走行する。3.優先権がなく信号が赤、もしくは順番が詰まっている場合交差点が空くのを待つ。4.車線として交差点を通過する。5.道をふさぐ障害物があれば車線を変更する。6.完了 といった流れがコード化されている。

その後に操縦&速度を管理するコントローラに受け渡され──とスムーズに動いているようにみえてもその背後ではものすごく複雑な処理が実行されているのである。

どうやってクイズに答えているのか?

続いて、『ジェパディ!』というクイズ番組に答えて人間を超えたワトソンについての話もおもしろかったので紹介してみよう。たとえば「ミロラド・チャビッチはこの人の2008オリンピックの完全勝利を、あと100分の1秒で阻止するところだった」という問題に答えられるのである。これは正直なかなか難しそうな問題だ。

そこではアーキテクチャ「DeepQA」が用いられているのだけれども、これの仕組みはざっと次のようになる。「質問を分析」し「検索エンジンを使って解答候補を調査」し、その候補それぞれに「スコアづけ」をおこなって、その中からもっともたかいものを自身の答えとする。これも自動運転の時のように、言っていることは簡単だが実際にはその中ではものすごくたくさんの処理が動いている。

まずワトソンは問題の中の特定すべき要素=答えるべき要素を自然言語処理を駆使して「フォーカス」として抜き出す。先の問題で言えば、「この人」の部分である。次にその解答のタイプは「人」なのか「都市」なのか「疾患」なのかといったカテゴライズを行う。「この人」とフォーカスが抜き出せたのであれば、まず人を尋ねていると判断できるだろう。自然言語処理を通すことで、文章における単語が形容詞なのか動詞なのか、固有名詞なのかが分析できるから、重要度の高い単語を組み合わせて検索を繰り返し(ミロラド・チャビッチ 2008 オリンピック 完全勝利 のように)、「解答候補」を作成する。ここで重要なのはウィキペディアで、なんとジェパディの正解の95%はウィキペディアの記事のタイトルになっていたのだという。

そうやって検出された解答候補を、事前にフォーカスから推測されるカテゴリに従って絞り込み、そこからまた個別に検索を繰り返し、そこでヒットした単語が問題文とどれだけ関係しているのか(珍しい単語が含まれていればそれには重みが与えられる)など細かな「調整」「判断」が行われ、最終的にスコアが決定される。かなりはしょったが、それでも相当に面倒くさいことをしているのがわかっただろう。

おわりに

本書を読むと、AIって大したことないと言うか、泥臭いことをやっているんだな、と思うかもしれない。Alpha goにしても自動運転にしても、めちゃくちゃ大量のソフトウェアを書いてはじめて特化した目的をなんとかこなしているような現状だ。

本当にこんなもんが人間の仕事を奪うのか、と思うかもしれないし、実際、人間をまるっと置き換えるような汎用AIが出来るヴィジョンは現在ではまったくない。だが、将棋、囲碁と一つずつ(同時に?)AIがゲームを攻略していくように、少しずつ少しずつ、より複雑な問題を対処できるようになっている。本書の終盤でも、囲碁よりもさらに複雑なゲーム、スタークラフトやDOTA2のような多人数が介するリアルタイム対戦ゲームをAIがどのように攻略しつつあるのかが語られている。

狭い領域であってもこうやって泥臭く前に進んでいくことで、人間にしかできないとされてきた領域は減っていくのだろう。その時が待ち遠しい!