2015/12/26に大阪であった、GDGkobe主催のTensorFlow勉強会に行って来た。
TensorFlow(読み方は日本人は「テンソルフロー」と読む場合が多いらしいが、米国人は「テンソーフロー」らしい)はGoogleが2015/11に公開した機械学習アルゴリズムにも使える「多次元配列並列演算ライブラリ」で、Deep Learningに期待しているエンジニアを中心に、注目を浴びているモノ。

結論的に、TensorFlowは、Deep Learningパッケージでなく、Deep Learningのアルゴリズムが(良く)わかった研究者の為の開発環境だった
だから、初心者やすぐに動かしたい人はチュートリアルが動いても、結局次のステップに進めない可能性が高いので、覚悟をしておいた方がイイ。

たぶん、今回参加した人は、ほぼ全員「Googleが(簡単に使える)Deep Learningパッケージを公開した」ので、「どうやったら使えるのだろうか?」とか、「自分の思っている画像を見つけ出すシステムはどう作るのだろう」と期待した参加したに違いないが(私もそうだったし)、中盤で「えぇ、Deep LearningアルゴリズムはGoogleが提供してくれるのではないの?」と思っただろう。
どうりで、Google提供のチュートリアルのDeep Learningサンプルの結末があっけなかった訳だ。

要は、ChainerとかCaffeとかのDeep Learning環境で、画像識別するということはTensorFlow環境下でも実現できるけど、アルゴリズムを自分で実装したのに限る訳で、「それでは自分で画像を覚えさせて識別するにはどうしたらいいの?」という問に対しては、Googleとしては、「サンプルに出しているDeep Learningは一般的なモノで、たまたまそういうアルゴリズムが動くことを見せているだけで、利用者は勝手に考えて欲しい」ということだろう。

そもそも、Deep LearningとTensorFlowをつないで公表したことが誤解を生む原因。もちろん、チュートリアルにDeep Learningが入っていたのもややこしくしている訳だが。
名前の通り、TensorFlowは、テンソル(多次元配列)の高速分散計算ライブラリでしかなくて、Deep Learningのアルゴリズムが組込まれたライブラリではないこと。
確かに、機械学習やDeep Learningのエンジニアが使ってきたライブラリであることは確かで、その結果を出してきた事も事実。もちろん、ニューラルネットワークやDeep Learningに使ったら便利な機能も入っている。
機械学習研究者やDeep Learning研究者なら、このライブラリを上手く使って、自分のDeep Learningプログラムを完成させることができるだろうが、そうでない初心者とかは結構辛い。

特に、TensorFlowは本来はGPUの利用を中心にして考えていて、ポイントは分散化。MapReduceがデータアクセスの分散化に特化しているところを、計算にまで拡張したモノらしい。
現在公開されているTensorFlowは、1台のPCで複数台のGPUボードは対応しているらしいが(未確認)、Google社内ではGPUクラスタ(「"CPU+複数のGPU”の複数台」が連なって、スパコンに近い構成になっている様だ)で使えるらしい。

これまでの機械学習(ニューラルネットワーク)やDeep Learning研究者は、(たぶん)C言語やMATLABでプログラムを書いてきたのだろうけど、処理が重くなってきた時の対処方法はあまりなく、別途ハードウェアに特化した記述をして研究を進めてきたに違いない。
今回のTensorFlowを使えば、稼働できるハードウェアで最適経路で行列演算を並列高速化してくれるみたいだが、この「稼働できるハードウェア」がミソで、現状では複数台のGPUクラスタ版のTensorFlowをいずれは公開するとGoogleが言っていない。
おそらく、Googleは自らのクラウドサービスに誘い込むためにTensorFlowを使うのだろうと予想している。

まぁGoogleのこういう動きは大体、オープンソース系の人達を動かして、GoogleのMapReduceプログラミングモデルとかからHadoopが生まれた様に、複数クラスタ上での並列行列演算エンジンは誰かが作ってくれるに違いないし、その場合はTensolFlowスクリプトを読んだり、変換する環境もできるだろうから、心配するに越したことが無いのだろう。

結局は、ツールはいろいろ揃ってきたから、自らDeep Learningは勉強しましょうということだろう。

但し、TensorFlowとか関係なしに、Deep Learningは学習用データの数が尋常でなく、おそらく3,000~10,000以上の、そこそこ質の良いデータが必要なのに対して、人間が機械学習アルゴリズムを駆使して(良く)考えた環境は30~40枚ぐらいから、それなりの結果を出し始めるのも事実で、何に時間、労力、知恵を使うのかは良く考えた方がいいと思われる。

深層学習: Deep Learning/近代科学社

¥3,780
Amazon.co.jp

深層学習 (機械学習プロフェッショナルシリーズ)/講談社

¥3,024
Amazon.co.jp