HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

またもやTensorFlowが強化!!深層学習ライブラリ「sonnet」の登場【使ってみた記事紹介を追加】

 

 

follow us in feedly

f:id:s0sem0y:20170410090434p:plain

 

 新たなライブラリsonnet

sonnetとは

 

DeepMind社が社内で利用していた深層学習ライブラリです。

昨日これがオープンソース化されました。

 

DeepMind社製であること

DeepMindは現在Google傘下の人工知能開発企業です。

圧倒的な専門家集団の集まりであり、深層学習の研究にGoogleが乗り切る際に、DeepMind社は買収されました。その後、資金力と研究力を兼ね備えたこのタッグは、機械学習でトップレベルのNIPSに論文をバンバン載せています。

 

s0sem0y.hatenablog.com

 

近年、以後ソフトAlphaGoが、トップ囲碁棋士を破りましたが、これを開発したのもDeepMindです。AlphaGoは強化学習に深層学習を導入することで、圧倒的な性能の向上を実現しました。

DeepMindは我々のよく知るGoogleの中でも深層学習に非常に強いということが伺えます。

 

s0sem0y.hatenablog.com

 

TensorFlowと共に使える

TensorFlowは深層学習で人気ナンバーワンのフレームワークです。

実際にGoogleが研究と開発で用いていたものをオープンソース化し、登場からわずか数カ月で利用者が爆発的に増えました。以後、研究でもTensorFlowを用いたものが出てくるようになり、深層学習の研究を実装面でサポートし、世界に貢献しております。

 

TensorFlowと同時に用いることができる形でsonnetは実装されています。

 

決して競合するものではなく、TensorFlowが強化された形と思って良いでしょう。

 

TensorFlow

TensorFlowの役割

今でこそ深層学習のフレームワークとして大流行していますが、実際には多次元配列の計算を効率化し、計算グラフとして実行することがTensorFlowの役割です。

 

ニューラルネットは計算グラフで記述できるため、当然TensorFlowが深層学習が大活躍するのは疑いの余地がありません。しかし実際には、深層学習に偏ったものではなく、もっと広く一般的な計算を行うことができるフレームワークとなっています。

 

深層学習の発展によって、TensorFlow側も、深層学習の実装をサポートするべく様々な関数を追加していますが、記述のしやすさという点において他のフレームワークに勝っていたかといえばそうでも無いというのが今までの印象でした。

 

 

TensorFlowの追加ライブラリ

ニューラルネットワーク記述に特化しているライブラリとしてChainerがあります。Chainerは日本産であり、非常に扱いやすい記述体系を持っています。私が深層学習を始める時も、最初に使ったのはこのChainerでした。

 

Keras

しかし、Google側も深層学習をより扱いやすくするために、Kerasをサポートするようになり、直感的な記述がしやすいという点において差が縮まったように思います。(むしろKerasの方がわかりやすいかもしれないです)

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

 

TensorFlow-Fold

直感的なプログラミングがKerasによりサポートされ、深層学習でのニューラルネットの設計が非常に楽になりました。しかし一方で、(Chainerに比べ)学習の途中で計算グラフを変更することができないという欠点がありました。

これを解決すべく、TensorFlow-Flodが追加され、現在も開発が行われているところです。

 

s0sem0y.hatenablog.com

 

計算グラフを学習の途中で変えられるのは、Chainerが「計算グラフを計算しながら構築する」という思想を持っているためです。(TensorFlowは計算グラフを構築してから計算するので、計算が始まった段階で計算グラフの変更は不可能というわけです。)

 

s0sem0y.hatenablog.com

 

 

edward

他にも確率的なモデルを記述し、TensorFlowと共に用いることのできるライブラリ「edward」が今年追加されており(これはGoogleがサポートしているわけではありませんが)、TensorFlowに機能を追加していこうという流れはとどまるところを知りません。

 

s0sem0y.hatenablog.com

 

sonnet

そして今回、DeepMindからsonnetが追加された形となっています。

ただ、レポジトリに怪しい文面が。

 

This installation is compatible with Linux/Mac OS X and Python 2.7.」

 

(ずっとPython3.5でやってきているぞ。ここにきて2系なのか?)

 

github.com

 

とりあえず手が空き次第試していきたいと思います。

DeepMindのですから、きっと今後伸びていくことでしょう。

 

sonnet使ってみた記事まとめ

以下、実際に簡単にsonnetを利用した記事。

 

多分日本語最速で出た使ってみた記事

qiita.com

 

インストールから丁寧に

www.procrasist.com

 

コードに対するコメントが豊富で参考になる記事

deeplearning.hatenablog.com