強化学習でどんどん賢くなる

松尾豊氏:今のが「認識」の話で、次にできるようになっているのが「運動の習熟」です。これはなにかというと、我々人間はサッカーボールを蹴っているうちにどんどん上手に蹴れるようになるわけですね。ゴルフボールを打っているうちにどんどん上手に打てるようになる。なぜ上達するのかというと、ゴルフボールをたまたま上手に打てると「今のはうまく打てたな」と思って、そのやりかたを繰り返すわけです。

これは専門的に言うと、報酬。「いいこと」ですね。報酬が与えられると、その前にやった行動を強化するという仕組みで上達すると言われています。ですから、強化学習と言われます。

犬に「お手」を教えるのも同じで、犬にお手を教える時は、たまたま犬がお手をするとエサをあげるということを何回もやっていると、犬がお手をするようになるわけです。

これは犬の立場からみると、エサという報酬がもらえた、その前にやった行動を強化してるわけですね。なんですけれど、犬もやたらめったらお手をすればいいわけではなくて、ご主人さまがお手をしてほしそうな時にするといいわけですから、「こういう状態で、こういう状況で、こういう行動をするといい・悪い」という、状況と行動をセットにして、いいか・悪いかというのを学習していくんですね。

強化学習というのは昔からある技術なんですけれど、今までのやりかたはこの状況を定義するのに人間が作った変数を使っていたんです。さっき、特徴量の話をしましたけれど、状況を定義するのに人間が作った特徴量を使っていたわけです。ところが、ディープラーニングと組み合わせる方法は、ディープラーニングで出てきた特徴量をその状況の定義として使います。違いはそれだけなんです。

違いはそれだけなんですけれど、非常に小さい差なんですけれど、それだけでいろいろとおもしろいことが起こります。いくつか動画をお見せしますが、非常に有名なものなので、見たことある方多いかもしれません。

ゲームのコツを見つける人工知能

まず、AlphaGoを作ったDeepMindという会社が2013年になにやっていたか。こういうものを作っていました。ゲームをプレイする人工知能を作っていました。

これはブロック崩しのゲームですけれど、今お話した強化学習を使っています。ですので、最初は下手なんですけれど、試行錯誤してだんだん上達してきます。スコアを報酬としていますので、スコアが上がるとその前にやった行動を強化する仕組みで上達していきます。それですごく上手になるんですけれど、実はこのくらいだったら今までの人工知能でもできました。

今までの人工知能はどうやっていたかというと、「これがボールだよ」とか「これが自分が動かしているバーだよ」というのを人間が定義すると、(人工知能でもゲームがプレイ)できたんですね。

ところが、これがすごいのが、画像を入れているだけなんです。画像を入れているだけで「丸っこいものがある」とか、「棒っぽいものがある」とか、「それのX座標が合っている時に点が入りやすい」とかいうことを学んでいくわけです。

そうするとなにが起こるかというと、そのうちコツを発見していきます。このゲームだと、「左端を狙う」ということをやり始めるんですね。左端とか右端に通路を作っちゃうとすごく点が入るんですけれど、これを作りにいっているわけです。つまり、画像からその状況の特徴量を取り出しているから、「右端とか左端にブロックがない状態」というのが、いい状態なんだということに気づいてるわけです。

今とまったく同じプログラムを使って、ぜんぜん違う言語を学習させることができまして、こういうインベーダーゲームも今とまったく同じプログラムで学習させることができます。これもけっこうすごいことで、今までだといくら強化学習を使うにしても、「これがミサイルだよ」とか「これが敵だよ」というのを人間が定義しないといけなかったんですけれど、そういうことを一切せずに画像を入れるだけで、スコアを報酬とするだけでうまくなるということです。

これは昔のATARI社のゲームなんですけれど、60種類くらいあるATARI社のゲームのうち半分の30種類以上で、人間のハイスコアよりも上手になります。残り半分は下手なんですけれど、それは戦略性があるもの、思考を必要とするもの。こういうものは下手なんですが、反射神経、運動神経だけでいいやつは人間よりうまいということです。これをDeepMindは2013年にやっていたんですね。

ロボットの“苦手”を克服

そうすると、今の技術を単純にロボットに適用するとなにが起こるか。ロボットがだんだん上達していきますということが自明だったんですけれど、それを実際にやったのがUCバークレー(カリフォルニア大学バークレー校)でして、これが昨年の5月です。ロボットがおもちゃの飛行機の部品を本体に組みつけるということをやっています。

これは強化学習なので、最初は下手なんですけれど、だんだん試行錯誤しているうちに上達していきます。うまくいったら報酬がもらえる。上からカメラで見ていますので、入力されるのは画像です。関節の角度とかじゃなくて画像なんですね。したがって、先ほどのブロック崩しのゲームと原理的にはまったく同じことをやっています。そうすると、こういうふうに上手にはめこめるようになります。

見てわかるとおり、ロボットっぽくない動きで、いい加減なんですね。適当に当てて、入りそうなところを探して入ったら押しこむということをやっている。

(会場笑)

どういう状態になると報酬を与えるかというのを変えると、ぜんぜん違う動作も学習させることができまして、こういうLEGOのブロックをくっつけるということもできます。これ、今までのロボットはすごく苦手で、これは位置も角度も両方合わないとはまらないんですね。今までのロボットは非常に苦手だったんですけれど、こういうことができるようになっています。

こういうものも今まで難しかった典型的なタスクなんですけれど、いろいろとできるようになっています。

自動運転にも応用

これと同じ技術を、日本のプリファード・ネットワークスという会社がトヨタ(自動車)さんと一緒にやっています。ディープラーニングと強化学習を使う。

それを自動運転に応用したものがこれで、この白い車は今の強化学習を使って、試行錯誤を経て上達したあとの車です。途中で赤い車が出て来ますが、これは人間が運転している車です。

4叉路の交差点も信号ないんですけども、非常に上手に動いていきます。赤の車がめちゃくちゃな運転をするんですけれど、自動運転の車、非常に大人な対応をしてちゃんと避けていきます(笑)。

(会場笑)

なぜこういうことができるかというと、この自動運転の車は最初下手な状態から何回も失敗しながら上達しているので、「どうなるとぶつかるか」とか、「どうなると避けられるか」ということがわかっているわけですね。だから、人間の運転手と同じようにあまりあったことのない状況になっても、適切に対応できる。これは今、現在の自動運転の方式とまったく違う方式です。

いま現在の自動運転の方式は自車位置を正確に計測し、正確な地図情報を持つことによって経路をきれいに引いて、そのとおりに動くということなんですけれど、ここでやっているのは試行錯誤を経て上達させるということですね。

自ら学ぶことのすごさ

これと同じことをGoogleが今年の3月に出したものがこれで、ロボットアームがピッキングを学習しています。これは今、練習しているところですね。14台が並列に並んで練習しています。たくさんのものが入った箱の中から目的のものを取り出すということを、何回も持ち上げては戻し、持ち上げては戻しということで練習しています。

そうすると、いろんなものが持てるようになるんですけれど、これを見ても「これって、すごいの?」と思うかもしれないですけれど、今までのロボットはこれができなかったんですね。信じられないことに、こんなに簡単なこともできなかった。こういうたくさんのものが入った箱の中から目的のものを取り出すというのは、すごく難しくて。

なぜかというと、まず認識ができないと、目的のものがどこにあるかわからないですね。それから、ものによって持つべき場所が違うんですね。長いものを長い方向に持っちゃうと持てないので、長いものは短い方向に持たないといけないし、丸いもの、柔らかいもの、それぞれ持ちかたが違うわけです。

今までのやり方だと、持つべきものを決めて「ここを持て」と人間が定義するとできたんですけれど、こういうたくさんあるものだとそれがうまくいかなかった。これは何回も試行錯誤して、持ちかたも学習しているわけですね。ですから、いろんなものが持てる。

考えてみれば、人間もいろんなものを持てますけれど、なぜ持てるかというと、赤ちゃんの時に練習しているからですよね。赤ちゃんの時に何回も、持っては落とし、持っては落としというのをやっているから、いろんなものの持ちかたをちゃんと考えて持てる。大人になったらそういうのはぜんぜん意識しないから、持てて当たり前だと思いますけれども、赤ちゃんの時に練習している。それと同じことです。

「モラベックのパラドックス」の打破

こういうことができるようになっていてすごいんですけれど、人工知能の世界では「モラベックのパラドックス」というのが知られています。これはなにかというと、子供のできることほどコンピューターにやらせるのが難しいということです。ハンス・モラベックという人が1980年代からずっと言っているんですけれど。

どういうことかというと、大人とか専門家じゃないとできないように一見思われる、例えば医療の診断とか、数学の定理を証明するとか、あるいはチェスを打つとか、こういったことは、実はコンピューターにとってはそんなに難しくなくて、人工知能の研究の初期、1960〜70年代にかなりの部分が達成されているんですね。

ところが、3歳児でもできるような、画像を認識するとか、積み木を上手に積むとか、こういうことが人工知能はいくら経ってもできるようにならなかった。これが数十年続いてきたわけです。これは一見すると逆説的なので、パラドックスと言われています。それが今、変わりつつあるんですね。要するに、3歳児のように認識できるようになり、3歳児のようにちゃんと上達するようになってきたということです。

なぜできるようになったかというと、コンピューターのパワーが上がったからです。アイデア自体は、昔からありました。1980年当時にNHKの研究所にいた福島(邦彦)先生が提案してるものと今のディープラーニング、そっくりなんですけれど、当時の計算技術、計算機のパワーだととてもできなかった。それがいま現在のコンピューターのパワーでようやくできるようになってきたということです。

そう考えると、「初期仮説への回帰」と書いてありますが、人工知能という分野はもともと、人間の知能をコンピューターで実現することができるんじゃないかと、そういう野心的な仮説でスタートした分野です。なぜそう思うかというと、人間の脳というのはある種の電気回路で、人間の脳がやっていることは情報処理でしょう、と。

「人間の脳がやっていることが情報処理なんだとしたら、すべての情報処理はコンピューターで実現できる」というのは、アラン・チューリングという人が万能チューリングマシンという概念で言ったことです。人間の脳がやっていることが情報処理なんだとしたら、コンピューターで実現できないはずがないと思って始めたんですが、60年経ってもできない。

なぜできないかというと、僕は原因はここしかないと思っています。要するに、認識というのができなかった。認識がコンピューターのパワーを必要としすぎていて、今までだとできなかった。ところが、それが今、乗り越えられつつあるわけで、やはり人間の知能をコンピューターで実現することができるんじゃないか、そういう仮説に戻ったほうがいいんじゃないかと思っています。

言葉の意味理解ができると……

「認識」「運動」「言語」という順番で進んでいくわけですけれども、「認識」「運動」は今お見せしたとおり、だいぶできるようになってきています。あと「言語」ですね。「言葉の意味理解」。

これは、例えば今でもGoogle翻訳があります。けれども、これは言葉の意味理解を一切してないんですね。どうやっているかというと、英語のある文字列が日本語のある文字列に置きかわる確率というのを統計的に計算して、それが1番高くなるものを選んでいるだけだということです。ところが、僕がここで言っている言語というのは、言葉の意味理解をちゃんと人間と同じようにする。

人間と同じように言葉の意味を理解するとはどういうことかというと、非常に単純化してしまえば、僕は文から映像を生成すること、文を聞いて映像を思い浮かべること。それから、映像から文を生成すること。こういう文と映像の相互変換ができれば、これは言葉の意味がわかっているということだと思っています。

こういう変化が起こっていくと、当然いろんな産業に影響がある。認識ができるだけで、お医者さんがX線で「ここに影がありますね」とかいうのは、もう全部機械、コンピューターでできるわけです。それから防犯・監視。監視カメラをつけていても、結局後ろで人が見ていないといけないわけですけれど、これも全部コンピューターでできる。

運動の習熟までいきますと、自動運転、物流、建設、農業の自動化、介護、調理、掃除ができる。言葉の意味理解ができると、翻訳、ホワイトカラー支援全般ができるということです。

これは僕が2年ほど前に書いた図で、2030年くらいまでにここまでいくんじゃないかと思っていたんですけれど、当時はこの1番とか2番が始まったかなくらいでした。それが2年経つと、この赤線で書いたところまで来ているんですね。赤い三角で書いたところまで来て、もうすごい勢いで進んでいます。要するに、認識というのが1番峠だったんで、峠を越えたら早いんですね。言葉の意味理解までいきつつあります。

自動翻訳が飛躍的に進化する可能性も

どういうものかというと、1つはオートメイテッド・イメージキャプチャニングというもので、画像を入れるとそれを記述するような文を生成するんですね。これは男の人がギターを弾いていますけれど、画像を入れると“Man in black shirt playing guitar.”と出てきます。それから、女の子がジャンプをしている写真を入れると“Girl in pink dress is jumping in air.”という文が出てきます。

このくらいだと、画像認識ちょっと賢くなったくらいかなと思うんですけれど、昨年末にはこの逆ができるようになってきまして、文を入れると絵が出てくると。“A very large commercial plane flying in blue skies.”と入れると、こういう絵が出てくるんですね。「blue」を「rainy」に変えると、こういうレイニーっぽい絵になります。

「ゾウが砂漠を歩いている」とか「ゾウが野原を歩いている」と入れると、こういうのが出てきます。

これは画像を検索しているんじゃなくて、描いているんですね。ですから、あり得ない文も入れることができます。例えば“A stop sign flying in blue skies.”、「停まれ標識が空を飛んでいる」という文を入れると、本当に停まれ標識が空を飛んでいる絵を描くんですね。これはまさに、我々が小さいころにお話を聞きながら、情景を心の中に思い浮かべたのと同じことができるようになってきているということです。

そうするとなにができるか。“A stop sign flying in blue skies.”という文から、こういう絵を生成しますね。これが先ほどお話したオートメイテッド・イメージキャプチャニングで、英語じゃなくて日本語に直すということをやると、つまり、ほかの言語から絵を描いてべつの言語に直すということができるわけです。これは翻訳なんですけれど、今までの翻訳とまったく方式が違うわけです。画像を介した翻訳です。要するに意訳ですね。

こういうのもできるようになる、なりつつあるということです。もちろん、静止画じゃなくて映像にしないといけないですし、抽象的な概念をどう扱うんだとか、いろいろありますけれど、基本的にはこういうやりかたで、僕は意味理解というのができるはずだと思っています。そうすると、おそらく10年から15年くらいで本当に自動翻訳というのができてしまう可能性があるということです。