ディープラーニング
確率的勾配法は誤差から勾配を計算して中間層の重みを修正するが、シグモイド関数などは見てすぐにわかる通り、勾配が0に近い領域が存在する。偶然その領域に進むと勾配が0に近くなり、重みがほぼ修正されなくなる。多層NNでは一か所でも勾配が0に近い層が存在すると、それより下の層の勾配も全て0に近くなるため、確率的には層数が増えるほど学習が難しくなる。詳しくはバックプロパゲーション、活性化関数も参照のこと。
1998年には畳み込みニューラルネットワーク(CNN)の直系の元祖となるLeNet-5(末尾の数字は5層であることを表す)が提案された。論文の中で、ニューラルネットワークの層構造を板状の図形で図示する方法が初めて用いられた。
回帰型ニューラルネットワーク(Recurrent Neural Network:RNN)とは、有向閉路を持つニューラルネットワークのこと。それ以前の入力によって変化する状態を保持する(オートマトン)。動画像、音声、言語など、入力データの順序によって出力が変わる場合に有効である。また、順伝播型ニューラルネットワークでは、近似できるピーク数が中間層の素子数に依存するのに対して、回帰型ニューラルネットワークでは無限の周期性を持つ関数を近似することが可能である。
1980年代から研究が始まり、1982年に発表されたホップフィールド・ネットワークが初期の研究。その後ElmanネットワークやJordanネットワークが発表され、1997年にS. HochreiterおよびJ. SchmidhuberらがLSTMネットワーク(長・短期記憶、Long short-term memory)を発表した。
Caffe - Python, C++
torch - Lua
Theano - Python。関数型言語。並列化に特化し、GPUのコードが自動的に生成される。
Pylearn2 - Python
Blocks - Python
Keras - Python。TensorFlowのラッパー。Theanoでも動作可能。
Lasagne - Python
deepy - Python
cuDNN - NVIDIAが提供するCUDAベース (GPUベース) のDNN用プリミティブライブラリ。
Deeplearning4j - Java、Scalaが使用されている。
EBlearn - C++で書かれているCNN用ライブラリ。
cuda-convnet - C++/CUDA実装のCNN。基本的な機能はEBlearnと同じ。
Chainer - Python
TensorFlow - Python, C++
ReNom - Python
PyTorch
Microsoft Cognitive Toolkit - Python, C++, C#。以前はCNTKと呼ばれていた。
DyNet - Python, C++