DeepLearning

Deep Learningとはなにか

More than 1 year has passed since last update.

凄い凄いと言われてもピンとこない人向け。(という体の社内勉強会資料)

機械学習からの橋渡しです。


Deep Learning とは (as TL;DR)


  • 機械学習(Machine Learning)の一種

  • 多層(Deep)のニューラルネットワークを使う

  • 特徴量抽出を自動化できる

  • 学習コストは高いが、人間の労力を抑えられる


    • ただし、訓練データは依然として手作業で作成する必要がある




機械学習の中での位置づけ


機械学習の構成要素


  • 学習データ

  • 特徴量

  • アルゴリズム


「学習」方法は3通りある


  • 教師あり学習(Supervised learning)

  • 教師なし学習(Unsupervised learning)


    • Deep Learningは主にこれ



  • 強化学習(Reinforcement learning)


代表的なアルゴリズム


  • 決定木

  • サポートベクターマシン

  • クラスタリング

  • ニューラルネットワーク


    • Deep Learningはこの一角



  • ベイジアンネットワーク

  • 強化学習

  • 遺伝的アルゴリズム


ニューラルネットワークをもっと細かく


構成要素


  • 入力層

  • 隠れ層

  • 出力層


層間の繋ぎ方


  • 全結合

fullConnect.png


  • 局所結合

localConnect.png

※図はあくまで大雑把な概念です


代表的なアプローチ


  • 畳み込みニューラルネットワーク(CNN)


    • 画像認識に非常によく使われる

    • 局所結合



  • 再帰的ニューラルネットワーク(RNN)


    • 音声認識によく使われる

    • 全結合



  • 長・短期記憶(LSTM)(RNNの一種)

  • ボルツマンマシン


代表的なテクニック


  • パーセプトロン(順伝播法)


    • 直感的だが、計算量が膨大になりやすい



  • 勾配降下法

  • 誤差逆伝播法

  • 事前学習


    • いい塩梅の初期パラメータを設定する手法



  • プルーニング


    • 学習済みネットワークの結合を削って計算量を減らす




畳み込みニューラルネットワーク(Deep Learningの例として)


  • Deep Learningとして世に広く知れ渡るきっかけになったアプローチ。


    • 隠れ層が多い(深い)ネットワークの利用により、画像認識の成功率が飛躍的に向上した



  • 画像認識に非常によく使われる

  • (隠れ層で)異なるフィルターを次々に適用して画像処理をするイメージ


Deep Learningのメリット・デメリット


メリット


  • 特徴量抽出をしなくてもよい

  • 学習済みのモデルを認識に使うのは計算コストが小さい


デメリット


  • 大量の学習データが必要

  • 学習の計算コストが大きい

  • 層が多いほどブラックボックス化しやすい


小ネタ


本当にブラックボックスなのか

CNNについては多少の意味づけが可能。


  • 学習済みのネットワークが、人間が物を見る時の認識と酷似している


    • (入力層に近い層が)視覚野のV2の活性化パターンと似ている



学習済みのパターンの例

https://devblogs.nvidia.com/parallelforall/deep-learning-computer-vision-caffe-cudnn/


Deep Learningを始めるには


ハードウェアが必要


  • TESLA(NVIDIAのGPGPU)

  • NVIDIAのGPUを使えるAWS


  • TPU(Tensor Processing Unit)

GPUはAMDも出しているが、Deep LearningはCUDAの独壇場となっている。

TPUの利用が一般ユーザ向けに開放されるかは2016/06時点では不明。


ソフトウェアも必要


(学習用の)フレームワーク


  • TensorFlow(C/Python)


    • スケーラビリティ重視



  • Chainer(Python)


    • 柔軟性重視



  • Torch7(Lua/C)


    • 高速



  • Caffe(C/Python/Matlab)


    • CNN特化




学習済みネットワーク(実機用推論エンジン)


まずは入門から体験したい!


NVIDIA Deep Learning学習コース


  • 日本語コンテンツ



  • 基本プレイ無料


    • AWS上のGPUを無料で使える学習コース。

    • フレームワークを選んで実際にDeep Learningを動かしてみるところまでが無料。

    • もっと細かい内容は有償提供(だが、実質AWS利用料だけで学習できるとのこと)




参考