ニューラルネットワークの学習は、簡単に言ってしまうと行列演算であり、ニューロンの定義(活性化関数とその導関数と入力数)やニューロンの接続構成(ネットワーク)が定義されると、演算処理自体は自動実行できる。こうしたことから、あらかじめディープラーニングに必要なプログラムを組み合わせて、外部から定義や一定形式の学習データを与えることで、ニューラルネットワークを動かすことが可能だ。このために作られた一群のソフトウエアは「ディープラーニングフレームワーク」(Deep learning Framework)と呼ばれる。
ディープラーニングフレームワークでは、ニューラルネットワークの定義を「モデル」などと呼ぶ。「モデル」では、ニューロンの定義やその接続だけでなく、一群のニューロンをまとめた「層」などを定義でき、簡単にニューラルネットワークを定義できる。また多くの場合、モデルと学習済みのニューラルネットワークを組み合わせて配布可能にしたり、動作中の状態や各種パラメーターなどをグラフ化したりするツールなどが組み込まれている。
学習を自動化する場合、学習データのデータ構造や正解情報の与え方を一定の「学習データ形式」とし、世間に流通しているさまざまな汎用データ形式(画像や音声、テキストなど)を自身の学習データ形式に変換するツールなどを含むこともある。
また最近は、複数のディープラーニングフレームワークがあり、その中には他のフレームワークが保存、出力できるデータを取り込めるような機能を持つものもある。
現時点では、複数のディープラーニングフレームワークが登場している(表1)。ほとんどがオープンソースとして提供されており、インターネット経由で入手可能だ。
名称 | 情報ページ |
---|---|
Amazon Machine Learning | https://aws.amazon.com/jp/machine-learning/ |
Caffe | http://caffe.berkeleyvision.org/ |
Chainer | http://chainer.org/ |
The Microsoft Cognitive Toolkit (旧Computational Network Toolkit) | https://www.microsoft.com/en-us/research/product/cognitive-toolkit/ |
cuda-convnet | https://code.google.com/p/cuda-convnet/ |
deeplearning4j | https://deeplearning4j.org/index.html |
deepy | http://deepy.readthedocs.io/en/latest/#welcome-to-deepy |
EBlearn | http://eblearn.sourceforge.net/ |
H2O | http://www.h2o.ai/download/ |
Keras | https://keras.io/ja/ |
Lasagne | https://lasagne.readthedocs.io/en/latest/# |
PredictionIO | http://predictionio.incubator.apache.org/ |
PyBrain | http://pybrain.org/ |
TensorFlow | https://www.tensorflow.org/ |
Theano | http://deeplearning.net/software/theano/# |
torch | http://torch.ch/ |