【目次】
・ディープラーニングとは
・ディープラーニングでできること
・ディープラーニング実行のためのライブラリ
・参考文献
ディープラーニングとは
階層の深いニューラルネットワークを利用したアルゴリズムの総称。
様々なアルゴリズムが存在する。
畳み込み層とプーリング層と呼ばれる層を持つニューラルネットワークの総称
CNNは画像認識に良く利用され、畳み込み層やプーリング層が画像における局所的な情報の抽象化や位置の不変性を持たせる役割を担っています。人間の視野の構造にも近いとされているらしいです。
- 畳み込み層
前の層の中で近くにあるノード同士の集合が、次の層のノードと接続するような構造を持つ層のこと。画像の局所的な部分の特徴を様々な方法で浮き立たせる役割を果たす。
- プーリング層
前の層のノードの局所的な部分をまとめあげる処理のこと。局所的な部分の最大化を取る処理は「最大プーリング」と呼ばれる。プーリング層の役目は位置変更への感度を下げることで、小さな平行移動に対する不変性を持たせることにあります。
入力層(画像データなどの特徴量)と出力層(判別したいカテゴリなど)が同一のサイズのノードを持つ層となるニューラルネットワークを利用したアルゴリズム。利用する隠れ層は一般的に、入力層や出力層よりも小さいものにするそうです。隠れ層は1層である必要性はなく、複数置くこともできます。AutoEncoderの役割としては、入力層と出力層の値がなるべく同じ値を出力しながら、欠損を極力少なくして、情報を圧縮することです。その結果として、データをよく表す特徴を獲得したり(なんだか主成分分析的なものを感じますね。)、深いネットワークを解く際の初期値を手にいれることができます。圧縮することで、深い階層のネットワークでもうまく計算できるということになります。
先ほど挙げたCNNやAutoEncoderの前提となるデータは固定長と呼ばれ、つまり画素数などのピクセルが一定のものを値としてとります。しかしながら、画像のデータ以外は固定長データではないものが多いので、扱うことができません。実際、音声の長さやテキストの文字数はデータによってバラバラです。そこで、可変長のデータを扱えるようにしたものが、Recurrent Neural Network(RNN)です。音声認識処理や自然言語処理で利用されているそうです。
RNNの特徴は、Recurrent(再帰)の字面の通り、隠れ層において再帰的な構造を持つことで前の状態を再び使いながら計算を行うことです。どうして再帰によって可変長が扱えるようになるのかは、理解が追いついていないですが、同じデータの長さでなくても、隠れ層で得た知見を活かせるという仕組みのようです。
ディープラーニングでできること
不適切なコンテンツ検知
画像の意味分析
画像のキャプション
CLOUD VISION API
Cloud Vision APIの凄さを伝えるべくRasPi botとビデオを作った話
iOSのSiriなどに活用されている。従来の手法である隠れマルコフを利用した場合はエラー率が25.8%であったのに対して、ディープラーニングでは16%のエラー率に改善されているそうです。
CRMのデータとかアクセスログデータにおいての活用に関心がありますが、数は少ないものの、活用している企業はあるようです。ディープラーニングとアクセス解析の事例はググっても出てこなかったのは残念です。
(基礎調査)Deep Learning は、ビジネス や 産業の現場で どこまで使われているのか?
ディープラーニング実行のためのライブラリ
実行するためのライブラリですが、非常に多くのものが用意されているようです。私はTensorFlowやChainerやTheano・Caffe・Pylearn2くらいしか目にしかことはなかったです。インストールも簡単ですし、Pythonを用いるという観点からはChainerが一番興味があります。
・TensorFlow
・Chainer
・Theano
・Pylearn2
・PyBrain
・nolearn
・Cuda-convnet2
・Torch7
・deeplearning4j
・Caffe
・DeepDream
ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換) – Over&Out その後
参考文献