人工知能/AIライブラリ紹介まとめ
04 February,2019

人工知能/AIライブラリ紹介まとめ

「人工知能/AIライブラリー紹介」で取り扱っているライブラリをこちらにまとめていきます。
随時更新をおこなっていきますので、ぜひ覗きにきてください。

 

目次

1.データフローグラフを使用して数値計算を行うための「TensorFlow」
2.ニューラルネットワークが記述できる、非常に高機能なライブラリ「Chainer」
3.表現力、速度、モジュール性を念頭に設計された「Caffe」
4.数式の定義や最適化、評価ができるPythonライブラリ「Theano」
5.ニューラルネットワークを一連の演算的ステップとして記述する「Toolkit」
6.歴史が長く多くの研究所や企業で利用されている「Torch」
7.最先端のディープラーニング技術をサポートする「MXNet」
8.Pythonでニューラルネットワークが記述できる「KERAS」

 

1.データフローグラフを使用して数値計算を行うための「TensorFlow」

tensor

TensorFlowは、データフローグラフを使用して数値計算を行うためのオープンソースソフトウェアライブラリです。

TensorFlowのTensor(テンソル)とは線形の量を表す概念で、多次元データ構造(多次元配列)を指します。
TensorFlowのFlow(フロー)はData flow graphs(データ・フロー・グラフ)= データの流れを定義した「グラフ」で処理します。
データフローグラフにおけるグラフとは、ノード(頂点)とノードの間の連結を示すエッジ(枝)から成るデータ構造のことを指します。

つまり、TensorFlowのTensorとは多次元データ構造を流れる様に処理をすることで深層学習が行えるライブラリです。
そのため、TensorFlowを始めるには、前提に機械学習や深層学習といった基礎知識が必要になります。
もっと視覚的に理解したい方は、TensorFlow Playgroundサイト http://playground.tensorflow.org/が仕組みをイメージで分かりやすく説明しています。

詳しくはこちらのブログ「人口知能/AIライブラリー紹介vol.1 機械学習の分野で活用される「TensorFlow」」をご覧ください。

 

2.ニューラルネットワークが記述できる、非常に高機能なライブラリ「Chainer」

chainer

Chainer (チェイナー)とは、オープンソフトウェアライブラリの一つで、ニューラルネットワークの計算および学習を行うための深層学習 (ディープラーニング)分野で主に活用されています。

ChainerはPythonでニューラルネットワークが記述できる、非常に高機能なライブラリです。
また、バックプロパゲーション(誤差逆伝播法)に必要なデータ構造をプログラムの実行時に動的に生成する特徴「Define-by-Run」があり、
特に、複雑なニューラルネットワークの構築を必要とする深層学習で主に活用されています。

Chainerは深層学習(ディープラーニング)の研究と開発を行うスタートアップ企業、「Preferred Networks(PFN)」がメインとなって開発しました。
Chainerを始めるには、前提に機械学習やニューラルネットワーク、深層学習といった基礎知識が必要になります。

詳しくはこちらのブログ「人工知能/AIライブラリー紹介vol.2 機械学習の分野で活用される「Chainer」」をご覧ください。

 

3.表現力、速度、モジュール性を念頭に設計された「Caffe」

caffesabu
Caffeライブラリ(カフェ)とは、オープンソフトウェアライブラリの一つで、表現力、速度、モジュール性を念頭に設計された深層学習(ディープラーニング)フレームワークです。特に画像認識の高速処理がが得意で、ディープラーニングにより1日に何百万枚もの画像を処理することができます。同様の機能を持つライブラリとして、こちらのブログで紹介している「TensorFlow」、「 Chainer」、さらに「Keras」などがあります。

Caffeライブラリは、Yangqing Jia氏が、カリフォルニア大学バークレー校の博士課程に在籍したころのプロジェクトで開発されました。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.3 機械学習の分野で活用される「Caffe」」をご覧ください。

 

4.数式の定義や最適化、評価ができるPythonライブラリ「Theano」

theano-sabu

Theano (テアノ)とは、オープンソフトウェアライブラリの一つで、数学的表現(多次元配列など)を効率的に使用する数式の定義や最適化、評価ができるPythonライブラリです。深層学習(ディープラーニング)分野で主に活用されています。
Theanoは、ディープラーニングを実装したライブラリではありません。正確には、「コンピュータ代数システム」と「最適化コンパイラ」の機能をもつPython用数値計算ライブラリです。

Theanoは、Pythonの標準的数値計算ライブラリである「Numpy」に似た構文を使用して計算を記述します。そのPythonコードをC++/CUDAにコンパイルすることで高速に動作させることができます。計算コードは、CPU/GPUのどちらを利用しても効率的に動作するようにコンパイルされます。

Theano登場当時は、デープラーニングを実装する際に、CUDAやC++でコーディングをする必要があり大変でした。Theanoはそんな大変な作業をPythonから比較的簡単に生成できるライブラリとして非常に重宝されました。現在でも様々な深層学習モデルを実装したディープラーニングライブラリのリポジトリで使われていて、未だに触る機会のあるフレームワークです。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.4 機械学習の分野で活用される「Theano」」をご覧ください。

 

5.ニューラルネットワークを一連の演算的ステップとして記述する「Toolkit」

tool

Microsoft Cognitive Toolkit(コグニティブツールキット:旧CNTK)とは、オープンソフトウェアライブラリの一つで、ニューラルネットワークの計算および学習を行うための深層学習(ディープラーニング)分野で主に活用されているディープラーニングフレームワークです。

Toolkitは、有向グラフを利用してニューラルネットワークを一連の演算的ステップとして記述するディープラーニングツールキットです。この有向グラフでは、葉ノードは入力値またはネットワークパラメータを表し、他のノードはそれらの入力に対する行列演算を表現します。
Toolkitを利用することで、フィードフォワードDNN、畳み込みニューラルネットワーク(CNN)※1、リカレントネットワーク(RNN / LSTM)※2などの一般的なモデルタイプを簡単に実現して組み合わせることができます。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.5 機械学習の分野で活用される「Toolkit」」をご覧ください。

 

6.歴史が長く多くの研究所や企業で利用されている「Torch」

torch

Torch(トーチ)とは、オープンソフトウェアライブラリの一つで、ニューラルネットワーク(※2)などの機械学習をサポートしているGPUでの利用を目的に開発された科学計算フレームワークです。

Torchは古くからある機械学習ライブラリで、多くの研究所や企業で利用されています。TorchはLuaというスクリプト言語を使用して構築を行います。LuaJIT(jitコンパイラ)を使用するためPythonよりも動作が早いです。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.6 機械学習の分野で活用される「Torch」」をご覧ください。

 

7.最先端のディープラーニング技術をサポートする「MXNet」

MXnet

MXNet(エムエックスネット)とは、オープンソフトウェアライブラリの一つで、「効率性」と「柔軟性」を兼ね備えた「スケーラビリティー」のあるディープラーニングフレームワークです。
主にニューラルネットワークの計算および学習を行うための深層学習(ディープラーニング)分野で活用されています。
最先端のディープラーニング技術「畳み込みニューラルネットワーク(CNN)」「リカレント」「長短期メモリネットワーク(LSTM)」などをサポートします。MXNetに含まれるGluonインターフェイスのおかげで、開発者は自身のスキルレベルにかかわらず、クラウド環境からモバイルデバイスまでの幅広いデバイスに対応し、深層学習の定義/トレーニング/展開が可能です。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.7 機械学習の分野で活用される「MXNet」」をご覧ください。

 

8.Pythonでニューラルネットワークが記述できる「KERAS」

keras

KERAS (ケラス)とは、オープンソフトウェアライブラリの一つで、TensorFlowまたはCNTK,Theano上で実行できる高水準のニューラルネットワークライブラリです。
主に深層学習(ディープラーニング)分野で活用されています。KERASはPythonでニューラルネットワークが記述できる、非常に高機能なライブラリです。

ニューラルネットワークライブラリであるMXNet、Deeplearning4j、TensorFlow、CNTK、Theanoなどの上部で動作することができます。深層学習(ディープラーニング)を迅速に実験できるように設計されおり、最小限でモジュール式、さらに拡張性があることに重点を置いて開発されました。

詳しくはこちらのブログ「人工知能/AIライブラリ紹介vol.8 機械学習の分野で活用される「KERAS」」をご覧ください。

 

2019年1月17日 公開
2019年1月18日 追記
2019年2月4日 追記

※当サイトに掲載されている一部画像、スクリ-ンショット、文章に置いては著作権侵害を目的に利用しておらず、第三十二条で定められる引用の範囲で使用しています。万が一問題があればお問い合わせからご連絡ください。即刻削除いたします。
本ブログは業務の研究開発のためのものとなり、一部、弊社に関連性が無いものも掲載しております。

mieru