機械学習、深層学習のプラットフォームの整理

  • 59
    Like
  • 1
    Comment

はじめに

最近、プラットフォームのオープン化が盛んになってきたので、改めて機械学習プラットフォーム、深層学習プラットフォーム(フレームワーク)の整理をしてみる。
※※※ 事実と異なってればご指摘ください。

主なプラットフォーム

PaaSサービス

名称 URL
Google Cloud Platform https://cloud.google.com/
Azure Machine Learning https://azure.microsoft.com/ja-jp/services/machine-learning
Amazon Machine Learning https://aws.amazon.com/jp/machine-learning
Bluemix IBM Watson https://www.ibm.com/watson/

学習フレームワーク(Python)

名称 URL
Theano http://deeplearning.net/software/theano/index.html
TensorFlow https://www.tensorflow.org/
Caffe http://caffe.berkeleyvision.org/
Chainer http://chainer.org/
Keras https://keras.io/

PaaSサービスの簡単な説明

各ベンダーの提供サービスには予め学習されたモデルの翻訳や画像・動画認識などが用意されています。

Google Cloud Platform

Screen Shot 0029-07-04 at 10.53.49 PM.png

Google社が提供する機械学習プラットフォームになります。
サイズを問わず、あらゆるデータの機械学習モデルを簡単に構築できるマネージド サービスです。
クラウド上に用意されたTensorFlowも使えます。
※サイトより抜粋

機械学習の内容

・Cloud Machine Learning Engine
教師ありの回帰・分類、教師なしのクラスタリングなどさまざまなデータから学習ができます。
使用アルゴリズムは非公開。

Azure Machine Learning

Screen Shot 0029-07-04 at 10.56.59 PM.png

Azure Machine Learning は、クラウドの予測分析サービスであり、分析ソリューションとして予測モデルを迅速に作成し、デプロイできるようにします。
そのまま使うことのできるアルゴリズムのライブラリを利用して、インターネットに接続した PC でモデルを作成し、予測ソリューションを迅速にデプロイできます。
※サイトより抜粋

機械学習の内容

・Azure ML
こちらも教師ありの回帰・分類、教師なしのクラスタリングなどさまざまなデータから学習ができます。
使用アルゴリズムは選択できます。(アルゴリズムが多すぎてオーバスペックとのこと。)

Amazon Machine Learning

amazon_machine_learning.png

Amazon Machine Learning は、機械学習モデルを構築し、予測を生成するためのマネージド型サービスであり、堅牢でスケーラブルな高度なアプリケーションを開発できます。Amazon Machine Learning を使用すると、機械学習アルゴリズムおよび手法に関する幅広い背景知識を必要とすることなく、強力な機械学習テクノロジーを使用できます。
※サイトより抜粋

機械学習の内容

・Amazon Machine Learning
 こちらも教師ありの回帰・分類、教師なしのクラスタリングなどさまざまなデータから学習ができます。

 [使用アルゴリズム]
  回帰 : Linear Regression
  分類 2値分類 : Logistic Regression
     多クラス分類 : Multinomial logistic Regression

Bluemix IBM Watson

IBM-Watson-Logo.png

IBMは、AIを「Artificial Intelligence(人工知能)」ではなく、「Augmented Intelligence (拡張知能)」として人間の知識を拡張し増強するものと定義し、IBM Watsonを中核とするコグニティブ・ソリューションとしてお客様に提供しています。IBM Watson(ワトソン)は、自然言語処理と機械学習を使用して、大量の非構造化データから洞察を明らかにするテクノロジー・プラットフォームです。
※サイトより抜粋

機械学習の内容

 こちらも教師ありの回帰・分類、教師なしのクラスタリングなどさまざまなデータから学習ができます。
 また学習済みのAPIが複数用意されているので、新規サービス作るときには便利です。
 
  [使用アルゴリズム]
   非公開
   「複数の利用可能なアルゴリズムを検討し、ニーズに合致するアルゴリズムを選択する」らしいです。
   

学習フレームワークの簡単な説明

OSSで配布されているフレームワークになります。

Theano

main-thumb-t-449747-200-vosprwwgrsgxbcuogpvzqfdrnccpscnt.jpeg

http://deeplearning.net/software/theano/index.html

ディープラーニングのフレームワークの祖父と呼ばれ、多くの世界的研究者はPythonによって書かれたTheanoを使っているそうです。

メリット/デメリット

メリット
計算グラフは見やすく抽象化されている
再帰型ニューラルネットワークは計算グラフに良く適合する
高レベルのラッパー(Keras、Lasagne)により、手間が省ける
デメリット
エラーメッセージが役に立たないことがある
大きなモデルの場合、コンパイルの時間が長くなることがある
事前トレーニングを受けたモデルにへのサポートが不十分
単一GPU

TensorFlow

tensor-flow_opengraph_h.png

https://www.tensorflow.org/

TnesorFlowは、Googleが「Google Brain」というプロジェクトのもとで開発を行っているニューラルネットワークの最新ライブラリです。

ハイレベルな機能を実装することができ、計算をデータフローやグラフで表すことができます。
ライブラリの内部はおよそC++で作られていますが、Pythonも含まれており柔軟に使用できる構造になっています。

メリット/デメリット

メリット
計算グラフの抽象化
Theanoよりもコンパイル時間が短い
TensorBoardを使用して視覚化が可能
データとモデルの並列処理
デメリット
他のフレームワークより遅い
事前トレーニングされたモデルがあまりない。
計算グラフは単なるPythonなため、遅い。
商用サポート無し
新しいトレーニングのバッチがあるごとに読み込みをするためにPythonにドロップアウトする
大規模なソフトウェアプロジェクトで動的型付けにエラーが発生しやくすい

Caffe

caffe-logo.jpg

http://caffe.berkeleyvision.org/

Caffeは有名で、広く一般に使用されているマシンビジョンのライブラリで、Matlabのの実装した素早い畳み込みネットワークをC及びC++で移植したもの。
Caffeは、画像処理を主としテキスト、音声、時系列データなど他のディープラーニングを対象としてません。

メリット/デメリット

メリット
フィードフォワードネットワークと画像処理に適している
既存のネットワークの微調整に適している
コードを書かずにモデルをトレーニングする
Pythonのインターフェースが非常に有益である
デメリット
新しいGPU層にC++/CUDAを書く必要がある
再帰型ニューラルネットワークには適していない
大規模なネットワークには(GoogLeNet, ResNet)使いにくい
拡張性がない
商業用サポートがない
開発に時間が掛かる

Chainer

tensor-flow_opengraph_h.png

http://chainer.org/

Chainerとはオープンソースのニューラルネットワークフレームワークで、Python APIを備えています。中心となる開発チームはPreferred Networksという東京を拠点とする機械学習のスタートアップで活動しており、多くの東京大学のエンジニアが携わっています。
CMUのDyNetやFacebookのPyTorchが登場するまではChainerが動的計算グラフの主要なニューラルネットワークフレームワークであり、様々な長さの入力が可能なネットワークであったため、自然言語処理作業には人気の高い機能です。独自のベンチマークを使い、Chainerは他のPython向けフレームワークよりも素早く、MxNetとCNTKを含めた最も遅いテストグループであるTensorFlowを備えています。

メリット/デメリット

メリット
直感的な計算グラフの構築が可能
デバッグが比較的行い易い
デメリット
計算速度が遅くなりがち
アップデートについていけるか不安
利用人口がまだまだ少ない(日本国外)

Keras

1b042898-d4d8-4a90-b7aa-831eea3a5f83.png

https://keras.io/

Kerasとは、高速計算ライブラリのディープラーニング用ラッパーとないTheano及びTensorFlowの最上部で使用するライブラリで、直感的なAPIを提供しています。

ディープラーニングを始めようというときにはプログラミングの壁が大きく立ちはだかります。しかし、Kerasの場合はプログラミングが未経験でも、すぐに簡単なネットワークの学習は可能になります。

メリット
プログラミング未経験でも恐らく大丈夫
フレームワークが急速な成長を続けている
利用者も多い
最も初心者に優しいのはKerasで間違いない
デメリット
処理の中身はコードからは全く分からない
オリジナルの処理をさせるのが面倒
計算グラフ構築後、変更不可能

さいごに

PaaS事業者においては実現できることで各社に差はないので、使いやすなどが勝負になってくるかと思います。

フレームワークについては先日もSONYさんが出してましたね!
今後もOSS化は増えそうですね!

やりたいことを実現するのに必要なものを選択するのがベストかと思いますが、絶対に必要なのはアルゴリズムの選択やニューラルの設計等の根本的なところが大事だと感じます。