読者です 読者をやめる 読者になる 読者になる

プロクラシスト

みんなのProcrastination(先延ばし、回り道)を少しでも有意義に。

MENU

Chainer, tensorflow, Keras, それともゼロから作る?Deep Learningを制するには何がいいのか?!

【2017/1/7追記】

Deep Learning用モジュールといえば??

Theano, Caffe, Tensorflow, Chainer あたりが有名か。どれもpythonで簡単に使えるのでとても良い。
↓はそれぞれのことが詳しく書かれているからおすすめ

d.hatena.ne.jp

特に最近人気なのはtensorflowとChainerのように思う。 基本的には学習のためのモジュールで、ディープラーニングネットワークを簡単に書けるようになっている。

各ノードで値を渡して・・・とか考えなくても良い。素晴らしい。

それぞれの違いは少しづつあるが、簡単に特徴をあげる

tensorflowは英語。だがtensorboardは唯一無二。googleが作っている安心感

tensorboardと呼ばれる可視化ツールは実に素晴らしい可視化ツールだ。どのくらいすごいかはこのページで遊んでみればよい

playground.tensorflow.org

こんなに簡単に学習過程が見られるのは本当に素晴らしい。

あとは、googleが作っているという安心感がある。googleのいいところは自社プロダクトを自社で使っているというところ。
当たり前だと思う??周りを見渡してみましょう。紺屋の白袴でしょう。

一流のエンジニアが作っている&フィードバックしている安心感はある。

そして、チュートリアルが充実している。特に画像系は、最新研究の成果がすでにtutorialにあったりするので、非常にいい。

tensorflow tutorial (英語)

難点は英語だということ。得意な方は全く問題ないが、なかなか壁は高い。

【2017/1/7追記】Kerasがtensorflowのラッパーとして優秀すぎる!

Kerasと言うのを試してみましたが、これは簡単。わずか10行程度で書けるこの凄さ。

Kerasのドキュメントは日本語版もあり、かなりわかりやすい。 そして、私のブログでもKerasを試してみた。これを見れば、Kerasを使えるようになるはず!

www.procrasist.com

こんなに簡単にニューラルネットの学習器を組めるとなると、まさにDeeplearningの大航海時代突入ですね!

ぜひ試してみてください。

chainerは日本語であるがゆえに日本のみのコミュニティ??

chainerはPreffered Networks社という日本の会社が作っているオープンソース。こちらもgoogleに負けないくらいの天才集団が作っている。

高度に抽象化されている分、とてもスッキリと学習ネットワークを構築できる。個人的にはtensorflowよりも書きやすい。それに何と言っても日本語のエントリが多いため、とても勉強しやすいのである。しかし、逆に難点は日本語であることなのかもしれない。日本以外のコミュニティの広がりが鈍いとも言われている。

chainerは探せばたくさんチュートリアルが出てくる。 まとめてくれている記事もある。

studylog.hateblo.jp

また、日本の優秀エンジニア層が結構Chainerを使っているケースも数多く見受けられる。 例えば、NIPSのベストペーパーだった"Value Iteration Network"と呼ばれる強化学習の実装なんかも、すぐにChainerで実装してくれていたり。

qiita.com

  • 海外の人と議論したい、tensorboardを使いたい!というときはtensorflowが良い
  • 日本語が良い、特に↑みたいな気持ちがなく、Deep learningのコードを書きたい。というときにはchainerがおすすめ

ちなみに、日本人はなんでもchainerで済ませたいと思っている節があるようで、これにはKerasの作者も困惑しているようw

ライバル3つの本

  • Chainerによる実践深層学習

Chainerによる実践深層学習

Chainerによる実践深層学習

  • ゼロから作るDeep Learning

どれも2016年に発売された人気の本

tesorflow本は画像関連がメイン

畳み込み中心ということで、CNNやその周りのことについて書いている。

実際のコードを見ながら、tutorialの痒いところに手が届くような説明になっているので、 画像分類などのタスクをやってみたいが、英語で挫折した人も、これを買って読めば良いと思う。

chainer本は自然言語処理、時系列処理が中心

numpyなどpythonの簡単な説明から入るので、無理なく進められる。 また、メインはword2vecやRecurrent Neural Netといった自然言語・時系列処理のものなので、 このあたりに興味がある人は是非オススメ。

ゼロから作るDeepLearningは、仕組みがわかるのが嬉しい!

【2017/1/7追記】
上の二つから遅れて発売されたのがこの本。ライブラリを用いずにDeeplearningを作るというなかなかチャレンジングな本。題材としてはCNNで画像認識。 この本のいいところは、numpyやmatplotlibといったpythonの基本ツールから丁寧にコード付きで説明してくれているところ。 今じゃ、機械学習といえばpythonが主流となってきているので、この本を通して覚えるのもいいかも。 実際に自分で作ると、逆誤差伝搬とか、活性化関数とか、DeepLearningの核となっている技術がわかるのでオススメです。

ただ、車輪の再発明感はあるので、ただ単に使いたいだけの人からすると少し冗長なのかもしれない。

興味のある分野に応じて買えば良さそう

主眼においている分野がちがうので、意外と内容にかぶりは少なそう。 画像をやってみたいならtensorflow本を買い、時系列や自然言語処理をしたいならchainer本を買えばいいと思う。 腰を据えてディープラーニングを始めてみようという人は、ゼロから作るDeepLearningをまず買って、一度作りきった状態でchainerやtensorflow(Keras)に移ることをオススメする。

今日のポイントは

tensorflowは可視化もしやすい&Kerasが最強

Chainerは日本発ということが最大のアドバンテージ、

中身の仕組み知りたい人はゼロから書いてみるのもいいかも!