森の踏切番日記

人生LARKしたい

AlphaGoに花束を~『人工知能はいかにして強くなるか?』を読んで

8月の読書録01ーーーーーーー

 人工知能はいかにして強くなるか?

 小野田博一

 講談社ブルーバックス(2017/01/20)

 ★★☆

────────────────────


f:id:morifumikirikita319:20170814132306j:image

 

一口に人工知能(Artificial Intelligence, AI)といっても、画像認識とか音声認識とか自動運転車とか対話型AIとか文章自動生成プログラムとか様々であるが、その中でも特に対戦型AIについて「人工知能が学習して強くなるしくみ」を解説したのが本書である。

 

著者は、人工知能とは、「知的に見えるふるまいをするプログラムやシステム」であると説明している。「知的に見えるふるまい」とは、「人が行うならば知性が必要である処理」のことだという。具体的には、学習、推論、判断などのことだろう。

 

2016年3月、Googleの研究部門が開発した囲碁プログラムAlphaGoが、韓国の囲碁棋士イ・セドルとの五番勝負を四勝一敗で勝利したことは、各メディアで大きく取り上げられたが、著者によると、ほとんどの記事でAIが「学習」する意味を誤解していたという。

 

著者は、AIの「学習」は人間的な意味での学習とは違うのだと強調しているが、人間の学習の定義については、説明しなくても分かるだろうという態度で、触れられていない。

 

そこで念のために調べてみたのだが、辞書的な意味では「学問や技術の基礎的な知識を学び習うこと」となる。「習う」とは、繰り返し学ぶことである。「習」という文字は、鳥の雛が羽を動かして飛び方を習うという意味だったと思う。

 

心理学的には「経験によって生じる持続的な行動の変化」ということになる。つまり、経験を積むことにより何かを習得するということか。これも一種の相転移だろう。

 

人が学習するとき脳内ではどのような変化が生じるのかについても重要だと思うのだが、本書では触れられていない。『脳・心・人工知能』(甘利俊一・講談社ブルーバックス)によると、脳科学的には学習とは、「神経回路網の動作がよりよくなるようにシナプスの効率を変化させる」ことであるという。これには、「教師あり学習」と「教師なし学習(自己組織化)」、それに「強化学習」がある。

 

そこで思い出されるのが、ネズミを使った迷路の実験だが、前掲書によると、これは海馬にある短期記憶の「場所細胞」が関わっているらしい。脳の記憶の仕組みは、コンピュータの記憶とは全く異なるという。また、脳というのは、一種の階層並列コンピュータであって、学習と記憶を並行して行い、脳の機能を改善していくという。本書では、この辺りの解説が無いので人の学習とAIの学習の違いが分かりにくいかも知れない。

 

前掲書『脳・心・人工知能』によると、そもそも人工知能研究は、「脳の模倣とは一線を画し、記号を用いて論理的な推論を行うことによって知能を実現する戦略を掲げて」始まったのである。つまり、人間の知能そのものをもつ機械を作ろうという研究ではなくて、人間が知能を使ってすることを機械にさせようという研究なのである。従って、AIの学習が人間の学習とは異なるのは当然のことなのである。AIにおける学習とは、すなわち、「機械学習(machine learning)」のことである。

 

本書では「機械学習」とは、「素データの背後にある何らかの規則をコンピュータが拾い上げること」であると説明している。つまり、数値化されたデータを解析して推論モデル(予測式)を構築するということである。それをもとに新しい結論を得る(未知のデータの結果を予測する)ことができるわけである。

 

たとえば、多量のデータを多変量解析のプログラムに入力して計算結果を出力させることが、AIの「学習」ということになる。本書では、多変量解析の例として、回帰分析と判別分析のごく簡単な例を紹介している。統計学の基本を知っている方が理解しやすいと思う。

 

「深層学習(deep learning)」は、機械学習の一手法であるが、私が理解している限りにおいては、人工知能研究における機械学習とは出自が異なる。そもそも、脳科学人工知能研究とは対立していたのだそうだ。この辺りの事情については前掲書『脳・心・人工知能』に解説されている。

 

深層学習のもとになったのは、人間の脳の働き(神経回路網=ニューラルネットワーク)を模した学習機械パーセプトロンの研究である。脳は情報を階層的に処理していく。その階層は何段にも分かれ、それぞれが特有の情報の表現を持つ。この中で、外界の構造に合わせた表現方法を内部に自動的に作り上げていく。深層学習とはこれを目指すものだという。

 

20世紀後半に二度のニューロブームが起きたそうだが、ハード面でもソフト面でもクリアすべきハードルが高くて全体的には研究はなかなか進まなかったようだ。ところが21世紀になって、コンピュータの能力が格段に飛躍するとともに、ビッグデータが扱える状況になった。そうした中で、カナダのヒントンが2006年に多層パーセプトロンを用いた「深層学習」の構想を世に問い、状況が変わったのだそうだ。

 

どこがこれまでと違うかというと、フィードバックを備えた確率的な神経回路網を多層に積み上げているところだという。しかも、はじめに自己組織化を行って、外界の情報構造を獲得するという。深層学習がその威力を最初に見せつけたのは、パターン認識、画像認識であった。この深層学習と人工知能を組み合わせたことにより人工知能研究は新しい局面に入ったのである。

 


f:id:morifumikirikita319:20170815154446j:image

Why Deep Learning Is Suddenly Changing Your Life | Suddenly, Revolution and Change

🐱ニューラルネットワークによる画像認識の例。

 

 

本書では、ニューラルネットワークの計算の方法について、複数の変数を使って複数の合成値を作り、それらの合成値を使ってさらに合成値を作ることを繰り返し最後の出力層が答えを出すという仕組みであると、簡単に説明している。前掲書『脳・心・人工知能』では、さらに深層学習のもとになった神経学習の数理モデルの解説があるが、非線形でかなり難しい。また、種々のテクニックが開発されているし、様々な考え方があるようだ。

 

脳(神経回路網)の学習には前述の通り、教師あり学習、教師なし学習(自己組織化)、強化学習の3種類があるが、これらは人工知能でも用いられている。深層学習は、はじめに教師なし学習(unsupervised learning)を行ってから教師あり学習(supervised learning)を行うというアイデアが斬新なのだそうだ。従来の機械学習に比べて人間の学習に近いように思われるが、それでも脳の学習とは異なるようだ。AlphaGoは、深層学習と強化学習(reinforcement learning)を組み合わせて使っているという。

 


f:id:morifumikirikita319:20170815154716j:image

機械学習(machine learning)と深層学習(deep learning)と人工知能(AI)との関係を図にすると上のようになる。Neurocomputingは脳型学習機械のこと。

 

 

本書では、人の学習と機械学習の違いについて、機械学習は経験から学ぶわけではないと説明している。また、従来の機械学習と深層学習の違いについて、従来の機械学習は人間が特徴量(変数)を定義しなければならないが、深層学習ではAIが学習データから自動的に特徴量を抽出するというのがよくある説明なのだが、これは用意されたアルゴリズムによって特徴量を抽出するという意味であって、コンピュータが自律的に判断するわけではないと、著者は釘を刺している。

 

対戦型AIでは、局面の良し悪しを数値化する評価関数の設定と読みの深さを何手までにするかがプログラム作成上のポイントとなるようだ。計算速度の制約があるので評価と読みのどちらを優先するかという問題になる。

 

スマホの無料アプリの定番ゲームなどでは、評価関数は簡略版で読みの浅いプログラムが使われているのだろう。久しぶりにやってみたのだが、将棋ソフトのBONANZAには惨敗した。強すぎる。囲碁は早く勝負がつく九路盤でやってみたが勝ったり負けたり。憂さ晴らしにリバーシ(オセロ)で四隅を取って圧勝した。レベルが上がると評価関数の設定が変わるか読みの深さが変わるかするのだろう。

 

2人で行う完全情報ゲーム(チェスや囲碁など)において、自分の手番のときにどの手がベストか完全に解析できた場合、その結果をデータベースとして持っていれば、完璧なゲームをすることが可能ということで、本書では完全解析の基本について解説されている。

 

対戦型AIでは、探索速度が最重要だという。従って、より深く手を読むためには、いかにして探索の無駄を省くかが非常に重要になるので、その代表的な手法が紹介されている。それらの手法を用いて、チェッカーについては、すでに完全解析されているそうで、チェスについては駒数が残り5駒以下の終盤について完全解析されているという。

 

本書の後半は、ハード面(計算速度や記憶容量など)とソフト面(新しい手法の開発など)の両方の進歩によって対戦型AIが徐々に進化していった歴史が、チェッカー、チェス、囲碁の順に紹介されている。棋譜の紹介がほとんどなので、ゲーム好きの人には興味深い内容だろうが、ゲームに興味の無い人やルールを知らない人にはつまらない内容だと思う。

 

人工知能研究が本格化したのは1950年代からだが、最初のチェッカープログラムが書かれたのは1952年である。チェッカーは読みの深さが全てともいえるゲームだそうだ。人間の世界チャンピオンに勝利したのは1990年代前半で、40年かかったことになる。1980年代以降ハード面が飛躍的に進化したことも関係するかも知れない。1990年代には終盤のデータベースが完成(4000億局面以上)、2007年にチェッカーの完全解析に成功したそうだ。双方が最善を尽くせば引き分けになるという。これは、従来の機械学習による。

 

チェスのプログラムの歴史はチェッカーよりも古いそうだが、本格的なチェスプログラムが書かれたのは1957年である。1970年代前半から世界コンピュータ・チェス選手権が始まり、様々な手法が開発され進歩していく。使用言語は、FortranやAssemblyだった。1986年に駒数5以下の終盤が完全解析される。

 

1989年、DEEP THOUGHTが世界コンピュータ・チェス選手権で優勝。計算速度は100万局面/秒で、読みの深さは10層だったという。このDEEP THOUGHTが進化したのがDEEP BLUEで、1997年に世界チャンピオンだったカスパロフにマッチ(6ゲーム)で勝利したのである。やはり、40年かかっている。ただし、早指しでは1992年にFRITZというプログラムがカスパロフに勝っているそうだ。現在世界最強のチェスプログラムはKOMODOというプログラムだそうで、人間的な知識による局面評価が最大の特色だという。この辺りになるとマニアック過ぎて正直ついていけない。

 

強いプログラムであるためには深い読みが必要なのだが、囲碁では膨大な計算量が要求されるので、AIが人間を超えるのは難しいと長らく考えられてきたという。最初の囲碁プログラムは1968年に書かれた。その後長らく、チェッカーやチェスと同様に、評価関数を用いたプログラムが書かれた時代が続くが強いプログラムはまったく登場しなかったという。

 

評価関数を使わずにモンテカルロ法を使ったプログラムが初めて書かれたのが1993年のことで、その後モンテカルロ法を使った強いプログラム(といってもアマ高段者レベル)が続々と登場したという。モンテカルロ法は、乱数を発生させて解の近似値を求める手法である。円周率の近似値計算が思い出される。

 

本書には例題として、「長さ1の直線上に極小の虫(つまり、点)が2匹、それぞれランダムな位置にとまる。このとき、2匹の虫の距離の期待値を求めよ」という基本的な問題が紹介されている。なんか懐かしい。(積分を使って、答えは1/3)

 

AlphaGoは、モンテカルロ法と評価関数を併用しているという。機械学習では、強化学習にモンテカルロ法を使うのである。これは、モンテカルロ法でランダムに選ばれた手を打つことを何百回も繰り返して評価を決めるという力技らしい。

 

AlphaGoは、2000万局ものプロの棋譜を学習し、さらにAlphaGo同士の対局をたくさん行い、多量の棋譜データを解析して、結果予測プログラムの精度を高めたという。人間同士の対局だけでは、ポカもあるので正確さに欠けるということである。機械学習における学習は、1ゲームごとに教訓を得るわけではないことが、ここでも強調されている。多量のデータから解析するのが機械学習なのである。

 

AlphaGoの最大の特色は、「この局面で人間はどこに打つか」を予測するプログラムを持っている点だという。この部分に深層学習が使われていると思うのだが、深層学習だという記述が無いので分かりにくい。著者は人工知能研究よりの人なので、深層学習をなるべく目立たないようにしているのではないかと勘繰りたくなる。

 

AlphaGoは、さらに、予測の正確さを多少犠牲にした高速計算版を持っていて、モンテカルロ法に使っているという。つまり、深層学習による予測プログラムの正確な予測で探索木の枝刈り(手を選択)しながら層(読み)を深めていき、末端では高速計算版を使ったモンテカルロ法と評価関数による予測プログラムで正確な予測をすることによって、AlphaGoは強いプログラムになったということのようだ。著者は、AlphaGoの基本構造は複雑なアルゴリズムではないことを言いたかったようだが、素人にうまく伝わるかどうか。

 

著者は、AlphaGoの強さの基本は、局面評価にモンテカルロ法を使っている点にあるという。これは、従来の機械学習における話であって、AlphaGo特有のものではない。また、精度のよい「人間の着手予測(模倣)プログラム」とモンテカルロ法を補う「勝率予測プログラム(時間を節約できる)」を使用していることがAlphaGoを強くしていて、それが他のプログラムとは大きく違う点であるという。この部分が深層学習だと思うのだが、深層学習だとは書かれていない。やはり、深層学習を目立たないようにしているとしか思われない。

 

全体的な印象としては、頭のいい人特有の分かりにくい文章という感じである。分かりやすい説明ではない。統計学やゲームの理論、グラフ理論の基本は知っていないと理解しにくいかも知れない。深層学習の解説は不十分だと思った。理系の一般向け解説書は、どの分野でも云えることだが、1冊だけで理解できるというものではない。著者の立ち位置なども知っておいた方がよい。いろいろ読み比べた方がよいだろう。

 

 

 

 

 

📄関連図書

脳・心・人工知能 数理で脳を解き明かす (ブルーバックス)

脳・心・人工知能 数理で脳を解き明かす (ブルーバックス)

 

※深層学習については、こちらの方が詳しい。

 

 

📄関連日記