2016/03/19

深学習の成果

Googleの子会社が作った人工知能の「AlphaGo」が、囲碁のプロ棋士を負かしたのだ!
これまで、チェスや将棋ではすでに人工知能が勝利していたんだけど、囲碁は盤面が大きくて自由度が高いためか、なかなかプロを負かすようなプログラムが組めなかったんだって。
アマレベルではそこそこの強さだったらしいんだけど。
でも、この度、人工知能がやっとプロから勝利したのだ。
なので報道されているんだよね。

この人工知能に使われているのが、ディープラーニングという技術。
機械が自ら学習し、判断できるようにするのが人工知能だけど、徹底的にいろんなデータを解析させて、認識・判断能力を高めるものらしいのだ。
今回の囲碁の対戦では、戦っている内に更に強くなっているんじゃないか、なんて言われていたけど、まさに、そういうこともあり得るんだよね。
これがどんどん進化すると、これまで人間の認識・判断能力が求められていた乗り物の運転などにも応用できる可能性があるんだ。
そうなると、SFの世界のように、勝手に指定したところに行ってくれる無人タクシーなんかが実現するかも。

もともと、コンピュータの囲碁プログラムでは、「定石」がデータとして入力されていて、実際の盤面をそれに照らして、次にどういう手を打つと勝利する確率が高くなるかを計算して、期待値が一番高い手を打つ、というイメージのものなんだよね。
なので、どこまでパターンとしての棋譜がデータとして入れられるか、それをもとに可能な手を次から次へと計算して処理できるか、というのが課題。
将棋やチェスだと、駒の動きに制限があるので「次の一手」の自由度が比較的低いのだけど、囲碁の場合はそれこそ自由に打てるので、この計算量が半端なくなるのだ。
それで処理能力が追いつけなくて、対戦できるレベルで強いプログラムを構築するのが難しかったみたい。
待ち時間無制限でどれだけ時間がかかってもよいならできたのかもしれないけど。

これは「力任せ検索」と言われている手法で、考えられるすべての可能性を試して、計算するというもので、コンピュータで微分方程式を解いたりするのに使われる手法。
でも、実際には可能な選択肢が多すぎると、現実的に計算できないという壁にぶち当たるのだ。
これを越えるために必要なのが「当たりをつける」という処理方法。
人間の場合でも、単純な問題、やったことのある問題ならすぐ解ける、というのがあるけど、それは瞬時にそれが「既知」の世界に属するかどうかを判断しているのだ。
全く同一の問題でなくても、同じような問題をやったことある場合、「こうすれば解けるかな?」という当たりがつけられるので、比較的スムーズに解けるよね。
むしろ、そういうのがないと、一生懸命算数のドリルをやる必要性がなくなるわけだけど(笑)

ところが、古典的なコンピュータの場合は、細かく条件設定をして、それぞれの条件をクリアしているかどうかをまずゼロイチで判断し、それがすべてクリアされると次へ進む(いわゆる「サブルーチン構造」)、というようなプロセスになるのだ。
なので、いちいちそれぞれの条件を判定していく必要があるんだよね。
このため、コンピュータの場合は、つるかめ算を計算する場合、頭と足の数を変えると前回と同じくらいの時間をかけて解くことになるんだけど、十分に熟練した人間だと、前にやっていればぱっと答えが思い浮かんだりするんだよね。
そういう判断がコンピュータにもできないか、というのが人工知能を構築する上での課題なのだ。

コンピュータが画像認識が得意でないのもこのためで、古典的なプログラムだと、細かい条件を設定し、それが合致しているのかどうか、そして、複数の条件のうち、どれとどれの組み合わせの場合にどう認識するかなどを全部プログラムに組み込まないとダメだったんだよね・・・。
○か×かなんていうシンプルな判断ならよいけど、「ネコ」かどうか、とかなるともうお手上げ状態。
それが「個別のそのネコ」(例えば、イソノさんちのタマ)かどうかの判断ならまだしも、それがいわゆる「ネコ」一般に当たるものかどうかなんていう曖昧な判断はできないのだ(>o<)
一方で、人間の場合は、「ネコ」というばくっとしたイメージが合って、それに合致するかどうかを瞬時に判断できる仕組みを持っているんだよね。
まぎらわしいのもあるけど、ぱっと見てすぐに「ネコ」かどうか判断できないってことはまずないのだ。

でも、これは逆の作用もあって、いわゆるそのおぼろげなイメージに合致してしまうと、「ネコ」でないものも「ネコ」に見えてしまうということも起こるんだよね。
道ばたにあったゴミ袋をネコと見間違えたりなんてのはそういうこと。
特に、○が3つあって「∵」の形で並んでいると、どうしても人間の顔に見えてくる、というのもあるのだ。
そういう意味では、これまでのコンピュータ認識では、まず心霊写真は出てこないんだよね(笑)

こういう人間の情報処理能力を機械の中で再現しようというのが人工知能。
ニューラルネットワークと言われる、人間の神経系を模した情報伝達ネットワークを、さらに複層にしたものがディープラーニングに使われているのだ。
人間の神経回路も、神経伝達物質が受容体に結合するかしないかのゼロイチ信号で成り立っているわけだけど、「学習」により、特定の神経間のつながりが強くなったり、弱くなったりすることで、複雑な情報処理が行われていると考えられているんだよね。
よく使うものは強く、あまり使わないものは弱く。
さらに、特定の信号が来たときに、別の神経の感度が高くなったり、低くなったりすることがあるのだ。
これは例えば、熱いと感じたら手を引っ込める、自分自身の臭いは感じづらいなどに現れているよね。
こういうのを再現するため、データを入力して学習させることでネットワーク伝達の重み付けを行い、階層的なネットワーク間のつながりも持たせることで、神経系回路に似せた構造を作り出すのだ。
言うのは簡単だけど、実際にそれをアルゴリズムとして組むのはものすごく難しいのだけど・・・。

こういうのを繰り返すことで、機械においても、こういう組み合わせで情報が来たら、次はたいていこうなる確率が高いので、あらかじめこうしておく、みたいな判断ができるようになるんだ。
ただし、そのためには相当な量のデータと正誤判断を入力しておかないといけないのだ。
「深く学習する」という名称は、そういうところから来ているんだよね。
人間もそうなっているかというと、全部が全部そうとは言わないまでも、そういう側面もあるんだよね。
特に、言葉なんかは周りの人がどういう言葉を使っているかでかなりの影響を受けるわけで、使用言語や方言だけでなく、語彙なども変わってくるのだ。
慣れたことなら無意識のうちにできるようになるというのも、こういう学習効果のたまものだよね。
だけど、全くの未知の事態に遭遇しても、これまでの経験を踏まえたり、踏まえなかったりしてなんとか対処しようともするんだけど、こういうのはまだ人工知能では対処しきれないんだよね。
また、音楽・美術・文学などの創造的な活動もできないんだよね。
なので、人間の脳内の情報処理はそれだけでは説明できない部分があるわけで、完全に取って代わられるということでもないのだ。
そうでないと安心できないよね(笑)

0 件のコメント: