コントロールできていれば、王様を突撃させてもいい?

松尾豊氏:よろしくお願いします。25分ということですので、手短に話していきたいと思います。みなさんもご存知の通り、DeepMindが開発した囲碁のAI「AlphaGo」がプロ棋士を破ったというニュースがありました。ちょうど先週、このときの棋譜が公開されました。将棋のバージョンと、チェスのバージョン、両方の棋譜が公開されています。

この(汎化されたAlphaGo Zeroのアプローチを使用している)AlphaZeroの棋譜は、わりと早いうちから玉が中段に出ていくんですね。将棋の羽生竜王がコメントしておりまして、それが特徴的だとおっしゃっていました。

王様は端っこにいたほうが安全そうな気がするので、やはり端っこにいる場合が多くて。終盤になって仕方なく、逃げ回るために中段に出てくるということがあるんです。ところが、きちんとコントロールさえできれば、中段で出ていったほうが、最初から逃げ道が多いのでよいという考えではないかと思います。

囲碁の場合も、中央を使うという手が新たに発見されていましたけれども、将棋においても、人間が思いつかなかったような手が有効だということが示されてきているのかなと思います。

「人工知能」という言葉が指し示すものの変化

最近、人工知能はすごく注目されていますが、僕は「人工知能」という言葉には、少しまずい面があると思っています。それは、いろんな意味合いが混ざってしまっているからです。

例えば、単純に、IT化・デジタル化のことを人工知能と呼んでいることが多い場合があります。また、(人工知能では)たくさんデータを集めることが重要ですが、従来は「ビッグデータ」と言っていたものです。シリコンバレーの企業は昔から利用しているわけですけれども、単にこういったことを指してる場合もあります。

僕は、ディープラーニングが技術的なブレイクスルーだと思っていて、注目すべきはこれだと思います。もちろん、いまお話しした2つについても、世の中で、とくに日本社会において重要なことは間違いないんです。でも、世界中でいま、ブレイクスルーが起こっているのは、ディープラーニングではないかと思っています。

ディープラーニングについては、もういろいろとご存知かと思いますのであまり言いませんが、画像認識の精度はものすごく上がっています。2015年以降は、もう人間の精度を超えるような例が相次いでいます。この技術があるから、顔認証や医療画像の診断がどんどん実用化されているということになります。

動画の中にどういうものがあるかを検知することもできますし、これがロボットに適用されて、画像認識とアクチュエータを組み合わせることによって、いろんなものをピッキングできるようになるなど、さまざまな動作ができるようになる例がどんどん出てきています。

自然言語処理の分野も革新しているディープラーニング

また、今年は自然言語処理で本当に大きな飛躍があった年でした。自然言語処理にディープラーニングが活用され始めたのは、2013~2014年くらいです。翻訳にディープラーニングが使われるようになって、ものすごく精度が上がったのが2016年でした。

自然言語処理におけるかなり多くのタスクにおいて、人間の精度と同等か、それを上回るような手法が次々と出てきたということで、ここでもディープラーニングが革新をもたらしているということになります。

こういうことがなぜ急に起こるのか。その原理のところを少し説明したいと思います。ディープラーニングの説明の仕方はいろいろあるんですけれども、僕は「深い関数を使った最小二乗法」という言い方が一番わかりやすいと思います。

画像認識=変数1万個の重回帰分析

「最小二乗法」をご存知の方は、あとは「深い関数」がなにかを説明するだけでいいわけです。では、最小二乗法から説明していきましょう。例えば、お店の売上、飲料の売上といったデータがあるとします。飲料が、何月何日に、気温が何度で、そのときにどのくらい売れたかというデータがあったとすると、気温と売上の関係はプロットすると、なんだか相関がありそうだということがわかりますね。

Excelなどで「近似直線の追加」を実行すると直線が引けますけれども、これが最小二乗法でできます。直線ですから、「y=a+bx」と置きます。これはある種の推定値を表していますので、実際の値からどれだけずれているか、誤差を取って二乗します。プラス・マイナスがありますので二乗して、この全部のサンプルの点を足し合わせます。それで、この二乗和が最小になるようにaとbのパラメータを決めると、この点々の上に一番乗るような線が描かれます。これが最小二乗法ですね。

気温というのは一変数でしたけれども、これを気温と湿度という二変数にします。そうしますと、気温と湿度から売上を予測することができるわけですが、この空間は3次元の空間であると。変数はx1、x2と2つの変数を使うようになりますけれども、やることは一緒です。この誤差の二乗和を最小にするようにa、b、cを決めればいいということになります。

一変数を二変数にしましたが、今度は一万変数にします。一万変数にしますと、図示はできませんが、やることは一緒ですね。x1からx10000まで、1万個の変数を使った式を立てて、この誤差の二乗和を計算し、これが最小になるようにk0~k10000までのパラメータを決めてあげればいい、ということになります。

要するにこれは、重回帰分析なわけですね。よく使われますけれども、変数の数というのは数個から多くても数十個くらいです。1万個の重回帰分析など、普通はしないわけです。では、世の中に1万個の重回帰分析の問題はあるのかというと、実はあります。これが画像認識になるんです。

ディープラーニングとは、深い関数を使った最小二乗法

どういうことかというと、100px四方の画像に猫が写っているかを判定したいという問題は、まさにこれにあたるんです。100×100の画像ですので、1万個のピクセルの値が入っています。このとき、「猫だったら1、そうじゃなかったら0を返すような関数を見つけてください」という問題になりますから、実は最小二乗法で解けるということですね。

この猫関数というものがあったとすると、これはx1~x10000までの1万個の変数を使った式で表され、「ある画像が猫でした」「ある画像が猫ではありませんでした」というデータがたくさんあればいいわけです。猫のときは1、猫じゃないときは0になるように、誤差を最小化するようにパラメータを決めればいいんですね。すると、今度新しい画像が入ってきたときに、自動的に「猫だ」「猫じゃない」と言えるようになるということです。

ですので、(画像認識は)変数の数がかなり多い最小二乗法である、ということなんです。もう1つ、すごく重要なのが「深い」ということ。実にディープということです。では、なぜ深いのか。そもそも深いとはどういうことかというと、入力されるx1~x10000までの値から、直接猫関数が計算されるというのは、浅いんですね。直接なので浅いということです。

そうではなく、一旦中間的な関数を介します。f1~f100と示しているような中間的な関数を介しておいて、それを使って猫関数を計算します。そうすると、1段階をかませたことになるので、2層になります。

従来の重回帰分析は、x1~x10000から直接猫関数が定義されるので浅いわけです。そうではなく、一旦このf1~f100みたいな中間的な関数を定義して、それで猫関数を定義すると2層にしたことになるので、深くなる。こうして、どんどん深くしていけばいいということですね。

x1~x10000まで画素の値が入ってきて、それが1段、2段、3段と関数が定義されて、最終的に猫関数や犬関数みたいなものが定義される。そして、全体を最小二乗法で、パラメータが最適化されているんだということです。

ですので、ディープラーニングがなにかというと、要するに「深い関数を使った最小二乗法」ということです。では、「深い関数」というのはどういうことなのかというと、「入力から出力までが何段階かにわかれてつながっている」というだけのことです。