9月21日に中央大学駿河台記念館で行われたSONY Neural Nework Console(NNC)のセミナーに参加しました。Watson本の出版などでお世話になっているリックテレコムさんからNNC本が出たということで、その関連セミナーに招待いただいたのです。
セミナーにはSONYの小林由幸氏と、NNC本著者の足立悠氏が登壇され、NNCの機能や実際のモデルの構成方法などを説明いただきました。
NNCは何度か試してみたことはあるのですが、実際の案件などで使うというところまではやっていませんでした。しかし、今回のセミナーを受講したことで、もっと使ってみたくなりました。
Structure Searchが凄そう
特に興味を惹いたのは、NNCのStructure Searchという機能です。教師あり学習の場合、インプットデータを教師データ付きで準備することはどうしても人手でやる必要があります。それは仕方ないというか当たり前のこととして、次にやらないといけないのはネットワークの構造を組み立てることです。
最も一般的なフルコネクトのネットワーク(Affine層)を何層重ねるのか、畳み込み層は入れるのか、ニューロンは何ユニットにするのか、活性化関数に何を使うのかなどを考える必要があります。その最適な構造は何なのかを探り出すのは、試行錯誤が必要です。ネットワークの構造に絶対的な回答はなく、試行錯誤して精度と計算量のバランスが最も良さそうなところを見つけだすしかないからです。
その試行錯誤をStructure Searchを使うと、NNCが自動的にやってくれるというのです。これは試して見る価値ありです。
ディープラーニングはEnd to End
SONYの小林氏が何度も強調していたのはディープラーニングはEnd to Endの技術であるということでした。インプットデータを準備して、ネットワークを試行錯誤して、良さそうなモデルができたとしても、100%の精度ということはまずありません。そこで、そのモデルはなぜそのような回答を出すのか、説明変数の何が影響を及ぼしているのかといった、ディープラーニングの根拠を人間は求めてしまいます。セミナーでも質疑応答でそうした質問が繰り返されました。
小林氏の回答は、ディープラーニングはあくまでEnd to Endの技術であるということです。つまり、モデルへの入力と正答(教師データ)というEnd to Endのデータを与えて、モデルの中身については分からないというのがディープラーニングという技術であるということです。中身を知ろうとする方法もあるのですが、それはあくまで参考に過ぎません。
小林氏の経験でも工場にディープラーニングに導入した際に、根拠を求められるという経験を何度もしたとのこと。その際の最終的な決着点は、ディープラーニングを導入することで工場の最終的な不良率が改善したこと。つまり、モデルについて何だかんだ言っても、人間ですら一定の割合で不良を生み出すのであり、それより不良率が下がるのであれば根拠については問題にしなくて良いだろうということ。
強引な方法のように思いますが、それが落とし所なのではないかと思いました。それと合わせて、ディープラーニングの精度は人間をどんどん超えていくだろうということも感じます。
試行錯誤するしかない
ディープラーニングの精度を高める方法は、結局のところはデータの量しかありません。もちろん、データの量だけでなくて質が必要だし、ネットワークの構造が精度を決めるのは間違いありません。しかし、データの質とネットワークの構造は試行錯誤しないと、どういうデータが質が良いのか、ネットワークの構造が良いのか分からないわけです。
そうした試行錯誤はNNCのStructure Searchなどのツールによる支援を受けながら、結局は人間が試行錯誤するしかありません。そうした試行錯誤は人間自身が数をこなすしかないでしょう。
そうした試行錯誤をできるだけ簡単に何度も繰り返すための環境として、NNCは魅力があると思います。WatsonでもNNCのようにGUIでネットワークを組み立てるツールが出てきていますが、現状ではNNCの方が完成形になっている印象です。
当初はWindows版しか出ていなかったNNCですが、今はWebブラウザで使えるクラウド版もありますし、クラウド版ではGPUを使えるようになっていますから、またNNCを使い始めてみようと思います。