ディープラーニング・機械学習で使用されているライブラリの種類
ディープラーニング・機械学習で多くのユーザに使用されているライブラリ7種類についてについて解説します。
scikit-lean
Pythonのオープンソース機械学習ライブラリです。
サポートベクターマシン、ランダムフォレスト、Gradient Boosting、k近傍法、DBSCANなどを含む様々な分類、回帰、クラスタリングアルゴリズムを備えています。
GPU は未対応のため、ディープラーニングなどの高演算が必要な処理は出来ませんが、一貫性のある分かりやすいAPIを提供しており、ディープラーニングを除く機械学習やデータ分析においてほぼ標準の地位を築いています。
特徴:
- 機械学習にて使用可能
- 一貫性のある分かりやすいAPIを提供
- 機械学習やデータ分析においてほぼ標準の地位を築いている
公式サイト: http://scikit-learn.org/stable/
TensorFlow
もともとはGoogle内部で使われていましたが、2015年11月にオープンソースとして公開されました。
機械学習、ディープラーニングに用いられているライブラリです。
Googleの検索ランキング、Googleフォトの画像分類、音声認識など各種サービスなどでも広く活用されています。
対応プログラミング言語はC言語、C++、Python、Java、Goと幅広く対応しています。「Googleが社内プロダクトでも利用しているライブラリ」として話題になりました。
GPU による演算をサポートしており、高速な計算が可能です。あらかじめネットワーク構成を決定してから実行するDefine by Runと呼ばれる仕組みを採用しています。
TensorFlowの特徴は、汎用性が高く細かな調整が可能なフレームワークとなります。
ただし、汎用的な分、これを使いこなしてデイープラーニングのモデルを作成するためには、相応の学習時間と数学や統計学の知識が必要となります
特徴:
- 汎用性が高く細かな調整が可能なフレームワーク
- 機械学習、ディープラーニングにて使用可能
- GPU による演算をサポート
- 相応の学習時間と数学や統計学の知識が必要となる
公式サイト:https://www.tensorflow.org/
Keras
「Theano」や「TensorFlow」のようなテンソルを高速計算するライブラリの高レベルAPIとして登場しました。
高水準のニューラルネットワークライブラリです。
ネットワーク構成が直観的に記述できることが特徴で、一貫性のある分かりやすいAPIを提供します。
機能が高度にモジュール化されているので、層を積み上げ、各層のアルゴリズムやパラメータを指定する形で簡単にニューラルネットワークを構成することができます。
機械学習、ディープラーニングが使用可能です。
GPU による演算をサポートしており、高速な計算が可能となります。
TensorFlowと同様にあらかじめネットワーク構成を決定してから実行するDefine by Runと呼ばれる仕組みを採用しています。
特徴:
- 層を積み上げ、各層のアルゴリズムやパラメータを指定する形で簡単にニューラルネットワークを構成することが可能
- 機械学習、ディープラーニングにて使用可能
- GPU による演算をサポート
公式サイト:https://keras.io/ja/
Apache Mahout
Apache Software Foundationが管理する機械学習アルゴリズムのオープンソース・ソフトウェアです。
機械学習には大量のデータが必要となるため、手軽に複数のマシンに分散して処理できる「Apache Hadoop」で動作する機械学習のライブラリとして開発されました。
「レコメンデーション(Recomendation)」、「クラスタリング(Clustering)」「分類(Classification)」を使用することが出来ます。
特徴:
- 複数のマシンに分散して処理できる「Apache Hadoop」で動作することが可能
- 機械学習にて使用可能
- 「レコメンデーション(Recomendation)」、「クラスタリング(Clustering)」「分類(Classification)」を使用することが可能
公式サイト:https://mahout.apache.org/
Chainer
日本の機械学習系のベンチャー企業であるPreferred Networksにより開発されました。
トヨタを始めとして多くの日本企業から資金調達を得て活動しています。
ニューラルネットワークの計算および学習を行うためのオープンソースソフトウェアライブラリです。
GPU による演算をサポートしており、高速な計算が可能となります。ネットワーク構成は直観的に記述できることが特徴で、ネットワークを動的に変更できるDefine by Runを用いています。
日本の機械学習系のベンチャー企業開発しているということもあり、日本では使用しているユーザが多いです。
特徴:
- 日本では使用しているユーザが多い
- 機械学習、ディープラーニングにて使用可能
- GPU による演算をサポート
公式サイト:https://chainer.org/
PyTroch
元々はChainerからフォークされされて作られましたが、現在では独自のものに置き換わっています。
Facebookが中心となり開発が行われています。
Chainerと同じくGPU による演算をサポートしており、高速な計算が可能となります。
ネットワークを動的に変更できるDefine by Runを用いています。
PyTrochの特徴としては、コミュニティが活発で、後発にもかかわらず急速に発達し、公開後1年足らずで一躍人気ライブラリとなっています。
特徴:
- Chainerからフォークされており、コミュニティが活発
- 機械学習、ディープラーニングにて使用可能
- GPU による演算をサポート
公式サイト:https://pytorch.org/
caffe
C++で実装されており、C++/Python/MATLABで使用できます。
カリフォルニア大学バークレー校のBerkeley Vision and Learning Centerが中心となって開発しています。
画像認識に特化しており高精度を出した論文にCaffeを利用した研究が数多く報告されています。
GPU による演算をサポートしており、高速な計算が可能となります。
あらかじめネットワーク構成を決定してから実行するDefine by Runと呼ばれる仕組みを採用しています。
特徴:
- 画像認識に特化しており、高精度を出した研究が数多く報告されている。
- 機械学習、ディープラーニングにて使用可能
- GPU による演算をサポート公式サイト:http://caffe.berkeleyvision.org/
まとめ
機械学習・ディープラーニングで使用されているライブラリについて説明しました。
ライブラリを選択するときに大事になるのは、どのように使用するかという使用用途と、コーディング能力の技術力、AI、人工知能などの理解度によって選択することが重要となります。
例えば、ディープラーニングを除く機械学習、データ分析を行う場合はscikit-leanを選択した方がいいでしょう。また、画像認識に特化したディープラーニングを行いたい場合はcaffeを選択した方がいいかと思います。
TensorFlowについては実際にGoogleで使用されており実績も多数ありますが、汎用性が高く細かな調整が必要のため初心者には敷居が高くなってしまいます。
その代わり、Kerasを用いることでTensorFlowでの処理を高レベルのAPIとして使用することができるので、簡単にディープラーニングのモデルを構築することができるようになります。
ただし、その分、細かな調整が出来なくなってしまうという欠点もあります。
このようにライブラリは様々ですので、使用用途、技術力、知識力に合わせて選択していくことが必要です。