新たなライブラリsonnet
sonnetとは
DeepMind社が社内で利用していた深層学習ライブラリです。
昨日これがオープンソース化されました。
DeepMind社製であること
DeepMindは現在Google傘下の人工知能開発企業です。
圧倒的な専門家集団の集まりであり、深層学習の研究にGoogleが乗り切る際に、DeepMind社は買収されました。その後、資金力と研究力を兼ね備えたこのタッグは、機械学習でトップレベルのNIPSに論文をバンバン載せています。
近年、以後ソフトAlphaGoが、トップ囲碁棋士を破りましたが、これを開発したのもDeepMindです。AlphaGoは強化学習に深層学習を導入することで、圧倒的な性能の向上を実現しました。
DeepMindは我々のよく知るGoogleの中でも深層学習に非常に強いということが伺えます。
TensorFlowと共に使える
TensorFlowは深層学習で人気ナンバーワンのフレームワークです。
実際にGoogleが研究と開発で用いていたものをオープンソース化し、登場からわずか数カ月で利用者が爆発的に増えました。以後、研究でもTensorFlowを用いたものが出てくるようになり、深層学習の研究を実装面でサポートし、世界に貢献しております。
TensorFlowと同時に用いることができる形でsonnetは実装されています。
決して競合するものではなく、TensorFlowが強化された形と思って良いでしょう。
TensorFlow
TensorFlowの役割
今でこそ深層学習のフレームワークとして大流行していますが、実際には多次元配列の計算を効率化し、計算グラフとして実行することがTensorFlowの役割です。
ニューラルネットは計算グラフで記述できるため、当然TensorFlowが深層学習が大活躍するのは疑いの余地がありません。しかし実際には、深層学習に偏ったものではなく、もっと広く一般的な計算を行うことができるフレームワークとなっています。
深層学習の発展によって、TensorFlow側も、深層学習の実装をサポートするべく様々な関数を追加していますが、記述のしやすさという点において他のフレームワークに勝っていたかといえばそうでも無いというのが今までの印象でした。
TensorFlowの追加ライブラリ
ニューラルネットワーク記述に特化しているライブラリとしてChainerがあります。Chainerは日本産であり、非常に扱いやすい記述体系を持っています。私が深層学習を始める時も、最初に使ったのはこのChainerでした。
Keras
しかし、Google側も深層学習をより扱いやすくするために、Kerasをサポートするようになり、直感的な記述がしやすいという点において差が縮まったように思います。(むしろKerasの方がわかりやすいかもしれないです)
TensorFlow-Fold
直感的なプログラミングがKerasによりサポートされ、深層学習でのニューラルネットの設計が非常に楽になりました。しかし一方で、(Chainerに比べ)学習の途中で計算グラフを変更することができないという欠点がありました。
これを解決すべく、TensorFlow-Flodが追加され、現在も開発が行われているところです。
計算グラフを学習の途中で変えられるのは、Chainerが「計算グラフを計算しながら構築する」という思想を持っているためです。(TensorFlowは計算グラフを構築してから計算するので、計算が始まった段階で計算グラフの変更は不可能というわけです。)
edward
他にも確率的なモデルを記述し、TensorFlowと共に用いることのできるライブラリ「edward」が今年追加されており(これはGoogleがサポートしているわけではありませんが)、TensorFlowに機能を追加していこうという流れはとどまるところを知りません。
sonnet
そして今回、DeepMindからsonnetが追加された形となっています。
ただ、レポジトリに怪しい文面が。
「This installation is compatible with Linux/Mac OS X and Python 2.7.」
(ずっとPython3.5でやってきているぞ。ここにきて2系なのか?)
とりあえず手が空き次第試していきたいと思います。
DeepMindのですから、きっと今後伸びていくことでしょう。
sonnet使ってみた記事まとめ
以下、実際に簡単にsonnetを利用した記事。
多分日本語最速で出た使ってみた記事
インストールから丁寧に