Googleの猫認識 (Deep Learning)

今から約1年前(2012年6月下旬ごろ)、ネット上で下の画像とともに
Googleの研究開発によってコンピュータが猫を認識できるようになった」
というニュースが飛び回り、あちこちで話題になった。

例えば、次のようなサイトで大きく取り上げられた。
Google、大規模人工ニューロンネットワークを用いた研究成果を紹介|日経BP社 ITニュースPRO
猫を認識できるGoogleの巨大頭脳 | WIRED.kp
Google、脳のシミュレーションで成果……猫を認識 | RBB TODAY

これらのサイトの記事では、だいたい次のように紹介されている。

今回の研究成果では、コンピューターは猫がどういうものであるか人間に教えられること無く、自力で理解した。

http://www.rbbtoday.com/article/2012/06/27/90985.html

1週間にわたりYouTubeビデオを同ネットワークに見せたところ、ネットワークは猫の写真を識別することを学習した。事前に猫をネットワークに教えたわけでも、「猫」のラベル付けをした画像を与えたわけでもなかった。つまり、ネットワーク自身が、YouTubeの画像から猫がどういうものかを知ったことになる。

http://itpro.nikkeibp.co.jp/article/NEWS/20120627/405501/

今回の研究成果では、コンピューターは猫がどういうものであるか人間に教えられること無く、自力で理解した。

http://blogs.yahoo.co.jp/aki_setura2003/29793119.html

Google だし、人工知能だし、コンピュータが勝手に理解したというし、なんといっても「猫」だし!
キャッチ―な言葉があふれて、ネット上で話題になるのも納得できる。

(たぶん、無名の研究所が「コンピュータにミミズを認識させることに成功した」と発表したら、同じだけの成果だったとしても、ここまで話題にはならないのだろう)

ところで、改めて読み直してみると「コンピューターは猫がどういうものであるか人間に教えられること無く、自力で理解した。」ということが何を意味するのか、なかなかわからない。

猫だということを教えてもらうことなく、猫を理解するってどういうこと?

日本語の記事をいくら読んでも、どのへんが、どうすごいのか、いまひとつ釈然としない。(もしかしたらニュース記者も、あまり理解できていないのかもしれない)

そのようなときは、原典にあたるのが基本。

このニュースの発端となった、Googleのオフィシャルブログの記事はこちらにある。
http://googleblog.blogspot.jp/2012/06/using-large-scale-brain-simulations-for.html

そして、その研究論文は次のURLからPDFファイルとして入手できる。
http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/unsupervised_icml2012.pdf

このような最先端の研究論文を誰でもアクセスできるというのは素晴らしいことだ。

さて、1年遅れながら、論文に目通してみることで、ようやくどのような実験をして、どのような成果が得られたのかがわかった。
以下に簡単にまとめてみる。

(以下を読む前に、先日のエントリ「機械学習(教師有学習と教師無学習)」を一読することをお勧めする。今回のGoogleの研究成果は教師無学習の話。)


YouTubeにアップロードされている動画から、ランダムに取り出した200x200ピクセルサイズの画像を1000万枚用意し、これを用いてDeep Learning を行った(3%前後の画像に人間の顔が含まれていた。猫が含まれる画像もたくさんあった)。

Deep Learning とは、ここ最近になってその有効性が注目されている新しい機械学習の手法で、多段階のニューラルネットワークを構成する(後半で説明)。

ニューラルネットワークの最初の層の入力は各画素(200x200=40,000)のRGBの値で、9つの階層を構築した。

1000台のコンピュータで3日間かけて学習を行った。

その結果、人間の顔、猫の顔、人間の体の写真に反応するニューロンができた

ここで、最後の項目がわかりにくくて誤解を招く箇所。
もう少し噛み砕いて書くと次のようになる。

ニューロンはたくさんある。

・顔画像群を入力としたときに、もっとも敏感に反応するニューロンを選び出す。

・そのニューロンの反応を観察することで、入力画像が「顔」であるかそうでないかを、精度よく識別することができた。

・つまり、機械学習によって「顔に反応するニューロン」が生まれた。

このニューロンが最も強く反応した順番に並べた写真群が次のもの。


ここまでの話だと、たぶんよくある学術的な論文にとどまるのだろうけど、
この論文の優れている点の一つに、ニューロンが最も強く反応する画像を作り出した」ことが挙げられる。

これによって、一般のニュースとして取り上げられやすくなった。

最適化によって、このニューロンがより強く反応するのはどのような画像であるかを、人工的に作り出したものが次。




あとは、猫の顔に対しても、これと同じようにすればよい。

・猫画像群を入力としたときに、もっとも敏感に反応するニューロンを選び出す。

・そのニューロンの反応を観察することで、入力画像が「猫」であるかそうでないかを、精度よく識別することができた。

・つまり、機械学習によって「猫に反応するニューロン」も生まれた。

この、猫ニューロンが最も強く反応する画像が冒頭の猫画像。
コンピュータが「もっとも猫らしい猫」と判断する画像というわけだ。


今回の研究は Googleが持つ、膨大なデータと膨大な計算リソースを潤沢に使って、それまでの研究とはケタが違う規模の実験を行ったことによる成果である、と評価することができる。

それでも、実際の人間の脳のネットワークと比べると、100万分の1の規模だというのだから、まだまだ発展の余地が残されている。


Deep Learning について

このGoogleの行った研究で用いられているのは、Deep Learning という手法。

Deep Learning については、次の二つのスライドがとても参考になる。

・最初のスライドの次の図が端的に Deep Learning の仕組みを説明している。

ニューラルネットワークが複数の層を成す。手前のネットワークの出力が、次のネットワークの入力となる。

学習は、最初の層から順番に行われる。1つの層の学習が終わると、次の層の学習に移る。出力を逆変換して戻した時に、入力に近づくように調整(学習)する。

最初の層は、エッジなどの局所的な特徴の抽出が行われ、階層が上になるほど、より大域的な特徴(概念)を識別できるようになる。


入門 機械学習

入門 機械学習

パターン認識と機械学習 上

パターン認識と機械学習 上