ニューラルネットワークはどのように動いているのか
次の図は、元の画像と第1段のニューロンの畳み込みによる変化を示す図で、第1段のフィルタは元画像のコントラストの変化を強調するように働いている。
![]() |
元画像とフィルタを適用した画像の例。このフィルタの例ではコントラストの変化している部分を強調した出力画像となっている (以降の図はGTC2015におけるFacebookのRob Fergus氏の発表スライドを撮影したもの) |
さらに、この画像に非線形関数とMax Poolingを適用すると次の図のようになる。
これらの技術を使ったFacebookの顔認識では、ニューロンネットワークを進むにつれ、次の図のように入力イメージが変形されて行き、最後の2段で顔の判別が行われている。この図を見ても4層目のM2層までは顔の特徴を抽出していると思えるが、それ以降のフィルタは直感的には意味が分からない。
しかし、重みのチューニングされたネットワークでは、各層はある程度明確な役割を担っている。次の図は第1層のフィルタの出力に適合するパターンを示したもので、いろいろな傾きの縞模様に適合するパターンが多い。
次の図は第2層に反応するパターンのTop 9(太い枠の中の9パターン)を示したもので、縞や大きな点などの特徴的な画像に対応するフィルタとなっている。
この第2層のフィルタに高い適合性を示すTop 9の画像パッチを示すのが次の図である。特定の物と対応するイメージは少ないが、明らかに特性の異なる画像が反応するフィルタが作られていることが分かる。
第5層では抽象化が進み、次の図のフィルタがどのような特徴を抜き出しているのかは分かり難い。
しかし、Layer 5までのフィルタに良く適合するTop 9の画像を見ると、キーボードに適応するフィルタ、犬に良く適合フィルタ、花に適合するフィルタなどが出来ていることが分かる。
このように画像のハイレベルの特徴に適合するフィルタが出来れば、最終段でこれらの結果を組み合わせて、良く適合するカテゴリを出力することができる。
しかし、学習する画像を増やせば、認識率が改善されるとしても、所望の認識率に届くとは限らない。その場合には、どうやって改善すれば良いのであろうか? 次の図はニューロン層の数と認識率の関係を示したもので、1層から6層までそれぞれの出力に判別器をつけて認識率を測定したもので、1層だけでも20%強の認識率があるが、後の層になるにつれて認識率があがり、6層の出力では72%の認識率となっている。
このようにニューラルネットワークの層数を増やすことは、認識率を改善する効果があることが分かる。
前にあげたエポックメーキングなニューラルネットワークの図に見られるGoogLeNetでは単純な層数の追加だけではないネットワーク構造が使われている。間違いを減らすために抽出すべき特徴的なパターンを検出するフィルタを追加するなどの改良が行われているのではないかと思われる。
しかし、前にあげた各層のフィルタが抽出するパターンの図から、どのような特性が得られるのかという関係性を推測するのは容易ではないと思われる。したがって、良いフィルタを作るには多くの試行錯誤が必要で、Andrew Ng先生のスライドに書かれているように、Black Magicの領域になっているのではないかと思われる。
ディープラーニングの急速な実用化
このように精度の高いディープラーニングシステムを作ることは、容易ではなく、Google、Microsoft、Baidu、Facebookなどが多数の研究者を擁して競い合っている状況であるが、一方、ディープラーニングを現在できる範囲でビジネスに使っていこうという動きが急速に広がってきている。こう書くと、最先端の開発を行っているのは大学や一部の有力企業で、大部分の企業は現在使える範囲のディープラーニングシステムをビジネスに使っているという印象を持たれるかもしれないが、ディープラーニングシステムを自分で開発している企業は、大小を問わず、自社のビジネスを支えるためにシステムの改良を行っている。
次の図は、ディープラーニングでNVIDIAが関与した組織の数の年次推移を示すもので、2013年には100組織であったが、2014年には1549、2015年には3409組織と急増している。組織の内訳は大学などの高等教育機関が40%と多いが、企業と思われる組織が半数程度を占め、多くの分野の組織が含まれている。
なお、以下の図のスライドは、NVIDIAの井崎武士氏の発表資料のコピーである。