アカデミアとChainer

Preferred Networks (PFN)の比戸です。先週Chainerの[ポスター発表](http://learningsys.org/papers.html)で参加した[NIPS](https://nips.cc/Conferences/2015)を中心に、アカデミアの関係について書いてみたいと思います。ディープラーニングの応用が広まる中で、Chainerの活用が増える一助になればいいと考えています。

# Chainerの利点

NIPSは機械学習系の最重要国際会議で、毎年この時期に開かれています（今回はモントリオールで、29回目）。機械学習、特にディープラーニングの研究が盛んになり産業界からの関心が高まる中で、約3800人と過去最大の参加者となりました。

もちろん機械学習分野の全てをカバーしているので本会議でディープラーニングに分類される論文は1割ほどですが、今年も多くの新しい手法が提案されていました。Neural Conversation Modelを改善するためにNLPの知見をネットワークの途中に入れたもの、画像とテキスト両方を使う応用のためにCNNとRNNを組み合わせたもの、Memory Networkのようにメモリモジュールを持ったもの、Neural Turing Machineのようにアルゴリズム自体を学習するタイプのもの…

その中でやはり感じるのは、提案されるニューラルネットワークの構造が複雑化している、ということです。お手軽な実装が増えたLSTMをコンポーネントとして使うのはもはや当たり前になり、Attentionの導入やGenerativeなモデルをタスク毎にどうデザインして上手く学習させるか、という部分が研究として肝になっています。Highway networkや会期中に結果が出たILSVRC2015優勝チームのResidual Learningなど、数十から百を超える多層のニューラルネットワークも増えてきました。

（MNIST使いすぎという意見もありますが）実データを使った実験も必須なので、そのような複雑なモデルを簡単に実装でき、かつデバッグやチューニング試行錯誤がし易い、ということが、これからより研究する上でも、対抗手法まで含めた比較実験でも、重要になってきます。

そして、そういうところでこそChainerが活用されればと思っています。モデル記述用の専用テキストフォーマットなどは使わずPythonコードとしてネットワークが記述できますし、コンパイル不要でPython標準のデバッガ・プロファイラを使ってニューラルネットワークの計算を直接記述・モニタリングしながらトライアルアンドエラーを行えるのは大きなメリットだと思います。実行時間は他のフレームワークより高速というわけではないですがCuPyによってCPU/GPU透過なコードが書きやすくなりましたし、GPU側ではNVIDIA提供のcuDNNなどを利用しているので、標準的なGPUベースのパフォーマンスは得られます。

フレームワーク付属の画像認識のサンプルを動かすところまではどのフレームワークも簡単ですが、その段階から最先端の研究までのギャップが広がっている今、アカデミア利用でこれらのFlexible&Intuitiveを重点に置いたChainerの設計思想がマッチするのではないかと思います。

また、実アプリでの応用についても、表には出てこないですがPFN内では実際のR&Dプロジェクト向けにChainerが全面的に使われており、様々なアルゴリズムの実装や改良を高い生産性で行えることは自ら体感済みです。様々な会社の方とお会いしても「実はChainer使ってます」という声を頂くことは多いので、（Chainerの名前が表に出るかは別として）ビジネス用途でも今後広まっていくことを期待しています。（OSS活動への貢献も引き続き歓迎しております）

# Chainerポスター発表の意義

ディープラーニングはアカデミアと産業の距離がかなり近い、特異な状態にあります。FacebookやGoogleと主要大学研究室の人材の行き来を見てもそうですし、論文が出たものが実応用に使われる、あるいは逆にすでにサービスで使われている手法があとから論文として公表されることからもわかります。

ディープラーニングフレームワークの多くも、UC Berkeley発祥のCaffeから始まって、Torch、Theanoなど、そのアカデミアのコミュニティから生まれたものがほとんどです。

Githubで公開すれば多少は認知されるものの、やはりユーザーの多さや、ベンチマークなど公平な評価の場として、アカデミアで名乗りを上げておくことが重要だと考えていました。そこで今回、NIPSで機械学習のソフトウェアについて扱う唯一のワークショップ（併設ミニ会議）、Machine Learning Systems WorkshopにChainerのコンセプトを説明した論文を投稿し、ポスター発表として採択されました。

蓋を開けてみると、ワークショップ当日はTensorFlowのJeff Deanが招待講演をしており、Chainer同様新しいディープラーニングフレームワークであるMXNetのポスターもあるなど、同じ土俵にいることをアピールするには非常に良いタイミングだったと思います。今後論文でChainerが引用される際にも、一つ論文としての引用先ができたので、それもうれしいことです。

Chainerを元々使っている海外の研究者やスタートアップの人達と初めて会うことができましたし、他のフレームワークを使っているがChainerは知らなかったという人にアピールすることもできました。今後の開発に役立つ議論や、中には厳しい意見もありましたが、全部含めてGithub上でリモートでOSS開発をしているだけでは得られない経験になったと思います。

# ディープラーニングフレームワークの選択肢

NIPS中に何度か繰り返された質問として、「この一年でフレームワークが乱立したが、これは良くない状態ではないか？統一されたほうがコミュニティとしての開発貢献が集中するし、さらに言えばモデルフォーマットの標準化を考えるべきでは？」というものがありました。Bengioなど様々な人の意見を統合すると「各フレームワークには強み弱みがあるので、多様性があって用途に応じて最適なものを選べる方が今は良い。また、標準化されたモデルフォーマットのようなものを考えるには、ディープラーニング研究の速度とネットワークの複雑化が早過ぎるので、今はまだ難しいのではないか」ということでした。

私もこれについては同意見で、プログラミング言語と同様に、短所長所を考えて用途について選ばれるのだと思います（言語を一般的に比較しようとすると宗教戦争になるのと同じような話）。画像認識で実績豊富なモデルが使いたければCaffeが良いでしょうし、Luaが苦にならなければTorchは記述力とパフォーマンスのバランスが良いですし、すでにTheanoを極めた人は他のものは要らないでしょうし、今後の展開に期待するなら今からTensorFlowに賭ける人もいると思います。その中でChainerはFlexibleとIntuitiveを重点に置きながら、ユニークなポジションを維持して、研究用途からビジネスまで使ってもらえるように最適なバランスを考えた開発を継続できれば、と思っています。

※以上は個人の考えでありPFNやChainer開発陣の総意ではありません
※※米国ではまだ14日、っていう言い訳を使おうとしたけど30分過ぎてしまってすみません