ディープラーニングとは | 開発者向けフレームワークまとめ【保存版】

こんなにあった!?Deep Learning Frameworkまとめ
このエントリーをはてなブックマークに追加

googleが写真から猫を判別できるようになったというニュースから約7年。3度目の正直とばかりにディープラーニングがAI研究の大きなブレイクスルーになりました。

そして今やその技術はOSS化され、たくさんのライブラリやフレームワークが登場したので、いったんこの辺でまとめてみようと思います。

と、そのまえに…

ディープラーニングとは?

いままでの機械学習と呼ばれるものは、人間が特徴を定義しそれをもとに学習し精度を上げていたので必ず最初に人間が特徴を定義する必要がありました。

しかしディープラーニングは学習データから自動で特徴を抽出し精度を上げることもできます。その場合、人間が用意するのは学習データのみ。学習データが豊富にあれば精度は高くなります。

例えば、猫と犬とライオンの特徴を定義させるにはたいへんな労力が必要でしたが、写真をある程度の枚数用意ができれば、ディープラーニングで特徴を抽出し判断できるようになりました。

この技術は画像解析、言語解析、音声解析などの分野でいっきに広がりを見せています。

そんなディープラーニングにもライセンスやOSによってフレームワークが多数存在するので簡単にまとめてみました。

ディープラーニングフレームワークまとめ

TensorFlow

googleがOSS化したもっとも有名なディープラーニングのフレームワーク。CPU/GPU用にコードを書く必要が無くスケーラビリティにも優れています。MNIST(手書き数字を判別)、CNN(画像認識)、Word2Vec(各単語の関係を学習)、RNN(文章から次の単語予測)、Seq2Seq Model(フランス語を英語に翻訳)がすぐに試せます。

TensorFlow

https://www.tensorflow.org/

  • 対応OS:OS X、Ubuntu
  • 言語:C++、Python
  • ライセンス:Apache License 2.0

CNTK(Computational Network Toolkit)

非商用利用で割と早めに公開されていましたが、TensorFlowのOSS化をうけMITライセンスに変更されたMicrosoftのディープラーニングフレームワーク。MS曰く他のフレームワークよりスピードに重点をおいているため高速だということです。

cntk

https://github.com/Microsoft/CNTK

  • 対応OS:Windows 64bit
  • 言語:C++、Checked-C
  • ライセンス:MIT

Chainer

公式ドキュメントは英語ですが西川さん、スーパーエンジニアの岡野原さん率いるPFNが開発した国産のディープラーニングフレームワーク。実装がもっとも簡単で機能面でも高性能なTensorFlowとよく対比されますが互角の高評価です。

chainer

http://chainer.org/

  • 対応OS:OS X、Windows、Ubuntu、CentOS6+
  • 言語:Python
  • ライセンス:MIT

Caffe

BVLCが中心になって開発しているOSS。スポンサーはヤフージャパン。優秀な学習データを使ってすぐに分類を開始することが可能で画像などのデータベース作成に便利なスクリプトが用意されています。

caffe

http://caffe.berkeleyvision.org/

  • 対応OS:OS X、Ubuntu、RHEL/CentOS
  • 言語:Python、C/C++、Matlab
  • ライセンス:BSD

PredictionIO

apache spark上で起動するScala製のディープラーニングフレームワーク。 今年(2016年)にsalesforceに買収されSalesforceIQの強化に使われると見られています。パーソナライズやレコメンデーションなどが可能です。

PredictionIO

http://prediction.io/

  • 対応OS:OS X、Ubuntu
  • 言語:Scala、SDKはPython、Java、PHP製があり
  • ライセンス:Apache License 2.0

Amazon Machine Learning

AWSのアプリケーション。RegionsがまだEU (Ireland)とUS East (N. Virginia)しかサポートされていないのがマイナスですが今後に期待。

aml

https://aws.amazon.com/jp/machine-learning/

  • 対応OS:クロスプラットフォーム
  • webユーザーインターフェイス

他にも

keras/torch7/Deeplearning4j/Theano/Pylearn2/Blocks/Lasagne/deepy/EBlearn/cuda-convnet などなど…多くのフレームワークが存在するのでお気に入りを探すのも良いと思います。

おまけ(分散処理フレームワーク)

ビックデータから分散処理するためのフレームワークも少しだけまとめました。

Apache Hadoop

googleが発表したMapReduceの理論をもとに開発されOSS化した、もっとも使われている分散処理フレームワーク。ストック型データをバッチ処理するため大規模データの分散処理に長けていますがリアルタイムな処理には向いていません。

hadoop

http://hadoop.apache.org/

  • 対応OS:クロスプラットフォーム
  • 言語:Java
  • ライセンス:Apache License 2.0

Jubatus

ちょっとマイナーですが、紹介しておきます。
NTTソフトウェアイノベーションセンタとchainerを開発したPFNの共同研究開発でつくられたJubatus。すべてのデータをメモリ上で処理できオンラインで処理するためリアルタイムな分散ができます。

jubatus

http://jubat.us/ja/index.html

  • 対応OS:OS X、RHEL6.2 以降 (64-bit)、Ubuntu(64-bit)、その他のLinux環境 (32-bit含む)
  • 言語:C++、Python、Ruby、Java
  • ライセンス:MIT

他にもMicrosoftが発表したDMTK(Distributed Machine Learning Toolkit)、Hadoopと同じくApacheのトップレベルプロジェクトのApache spark、リアルタイムで分散処理してくれるApache S4などなど…多数存在するのでコチラも色々と試してみてはいかがでしょうか。

まとめ

PCの計算能力が向上したことにより3度目の正直としてブレイクスルーになったディープラーニング。

すでに開発はかなりの段階まで進んでおり、非エンジニアでも人工知能を扱う日は近いと思います。

よく聞く言葉ではありますが、人工知能にはできないスキルを磨くもしくは身につけるということを意識していきたいですね。

ではまた!