はい!今やってます!

Work Pertly, Live Idly

【WIP】DeepLearning / 深層学習 基礎の基礎

ディープラーニングの概要

ディープラーニングとは?

どもでも読めるので省略

これが本当にわかりやすい http://www.yukisako.xyz/entry/backpropagation

基礎的な関数

ニューラルネットは関数の集まりです。

損失関数・誤差関数(loss)

どれだけ理想と乖離しているかを算出する為の評価関数。

ニューラルネットワークの学習の目的は損失関数の値をできるだけ小さくするパラメーターを見つけることです。 最適なパラメーターを見つけて、そのような問題を解くことを最適化と言います。 パラメーターの勾配(微分)を手がかりに、勾配方向にパラメーターを更新するステップを何度も繰り返して、徐々に最適なパラメーターへと近づけていくのです。

損失関数・誤差関数の種類

  • 二乗和誤差(mean squared error)
  • 交差エントロピー誤差(cross entoropy error)

損失関数・誤差関数のテクニック

  • クリッピング(LossClipping)
    誤差が1を超えたら傾きを1に固定する操作

活性化関数

|
|

活性化関数の種類

活性化関数テクニック

  • バッチノーマライゼーション
    学習を早く進行させることができる。初期値に依存しない。過学習を抑制するなどのメリットがある。
    各層のアクティベーションの分布を適度な広がりを持つように調整するアルゴリズム
    全結合レイヤーと活性関数のレイヤーの間に挿入して、ミニバッチごとにデータの正規化を行う。

  • 重みの初期値について
    0,1に偏ったデータでは逆伝播で勾配の値が消えてしまう、これを勾配消失というが、この現象を防ぐ為に適度な重みを初期値として持たせる手法が用いられる。
    線形なシグモイド関数tanh関数ではXavierの初期値が、ReLU関数ではHeの初期値が用いられ、現時点ではベストプラクティスとなっている。

全結合層(Fully-Connected Layer)

|
|

全結合層の種類

  • Affine

全結合層のテクニック

出力層

|
|

出力層の種類

  • 恒等関数
  • ソフトマックス
  • Softmax-With-Loss
    損失関数も含めてソフトマックスが実装される場合

出力層のテクニック

勾配降下法(gradient)

|
|

Optimizerとして利用される
勾配降下法(gradient descent method)は損失が一番小さくなる点(鞍点:saddle point)を探すときに使用する方法

勾配降下法の種類

  • SGD(確率的勾配降下法)
    SGD(stochastic gradient descent)は最も実装が単純で基礎的な手法です。 汎用的ですが、問題によっては非効率な場合があります。
    SGDは未だに有効な手法ですが、一般に別の手法を用いたほうが効率的で、時には最終的な認識精度も上がります。

  • Momentum
    Momentumは「運動量」という意味で物理に関係があります。常に同じ方向に勾配の影響を受ける場合に、同じ方向へ一定して加速する為、SGDに比べ効率的に計算がすすめられます。

  • AdaGrad
    学習係数の減衰はパラメータ「全体」の学習係数の値を一括して下げることとなったが、ひとつひとつのパラーメーターに対して、要素毎に適応的に学習係数を調整しながら学習を行います。パラメーターの要素の中でよく動いたパラメーターの学習係数は次第に小さくなっていきます。

  • RMSprop
    AdaGradでは学習を進めれば進める程更新度合いは小さくなり、無限に学習すると更新料は0となります。過去の全ての勾配を均一に加算するのではなく、過去の勾配を徐々に忘れ、新しい勾配の情報が大きく反映されるように加算し、この問題を解決した手法がRMSpropです。
  • RMSPropGraves
  • AdaDelta
  • Adam
    勾配の方向を工夫することで、勾配降下を効率的にしたMomentumとAdaGradを融合したような手法。また、ハイパーパラメーターの「バイアス補正」が行われていることもこの関数の特徴です。

勾配降下法のテクニック

  • 学習係数の減衰
    学習が進むにつれて学習係数を小さくする手法。最初は"大きく"学習し、次第に"小さく"学習する。AdaGrad等で用いられる。

深層学習で陥りがちな問題や使われるテクニック

過学習

過学習の問題

パラメーターが多く表現力が高い場合や訓練データが少ない場合に起こります。
100パーセントの認識精度はテストデータで過学習を起こしている場合があります。
訓練データとテストデータの認識精度に誤差がある場合は過学習を起こしているといえます。

過学習に対応する方法

  • Weight Decay(荷重減衰)
    重みパラメーターが大きな値を取ることにペナルティを課すことで過学習を防ぐ仕組み。   正則化の強さハイパーパラメーターとして渡す。この値が大きいとより大きなペナルティを課すことになる。 ただし、重みの初期値を0にすると2層目の逆伝播ですべて均一な重みをもつようになってしまう為、重みの対象的な構造を崩すためランダムな初期値を持たせる必要があります。

  • Dropout
    ニューロンをランダムに消しながら学習させて対処する 。消失率はハイパーパラメーターで渡される(多分)。 機械学習でよく使われるアンサンブル学習という方法を一つのネットワークで擬似的に実現している。

勾配消失

ミニバッチ学習

全ての訓練データの中から一部のデータのみを選び出し、その一部のデータを使って学習を行う。 全てのデータに対する損失関数を計算するのは現実的では無いため、一部のデータを全体の近似として利用する。

bbb

DropOut Weight Decay

ハイパーパラメーター

ハイパーパラメーター

ハイパーパラメーターの種類

項目名 役割
各層のニューロン
隠れ層の数
バッチサイズ
学習関数
学習率 学習係数やLearning Rateとも呼ばれる0.010.001あたりの数字が使われる。勾配降下法に於いて一度の施行で変化させる量を決定する。学習係数の減衰というテクニックが使われる。
Weight Decay(荷重減衰) 重みパラメーターの値が小さくなるように学習を行うこと。重みを小さい値にすることで過学習をおきづらくする。
Dropout(消失比率)
忘却バイアス
サンプリング率 訓練データの
学習回数
重みパラメーターの初期値

ハイパーパラメーターの最適化について

訓練データ、検証データ、テストデータとあるうち、検証データをつかってハイパーパラメーターを検証することが多い。

  • ランダムなサンプリング
  • ベイズ最適化

モデル

より良いモデルは、訓練に必要なデータ量が少なく、訓練に必要な時間が少なく、訓練の精度が高い

CNN

https://qiita.com/icoxfog417/items/5fd55fad152231d706c2

(Convolution * N + (Pooling)) * M + Fully Connected * K

CNNの構成

  • 畳み込み層(Convolution Layer)
    特徴量の畳み込みを行う層
  • プーリング層(Pooling Layer)
    レイヤの縮小を行い、扱いやすくするための層
  • マックスプーリング
  • 全結合層(Fully Connected Layer)
    特徴量から、最終的な判定を行う層
  • パディング
  • ストライド

CNNのチューニングテクニック

  • フィルタを小さくし、階層を深くする
  • PoolingやFCのレイヤをなくす

CNNの派生モデル

RNN

RNNの派生モデル

  • LightRNN
  • BlackOut for RNN

RNNのテクニック

LSTM

RNNの勾配消失問題

LSTMの派生モデル

LSTMのチューニングテクニック

強化学習

強化学習(Reinforcement Learning) 状態空間と行動空間が連続か、離散かでアルゴリズムを選択する。
https://qiita.com/sugulu/items/3c7d6cbe600d455e853b https://qiita.com/namakemono/items/8353946eeec11c3dd2f1

強化学習に関するモデル

強化学習のテクニック

  • ε-greedy
    時折ランダムに行動を選択する
  • neural fitted Q
  • 体験再生
  • target network
    DQNでは,選択したactionを過大評価しないよう,experience memoryを行う(行動を評価する)際と,行動選択を選択する際で使うモデルを分けるという方策がとられています.
  • 割引率を用いた累積報酬(Discounted Future Reward) 時間がかかると得られる報酬が減っていく

強化学習のベンチマーク

  • RLglue

ネットワーク

論文

arxivで上げられた論文をサマってる。便利。 http://arxivtimes.herokuapp.com/

音声認識

音声認識のネットワーク

  • Dilated Convolution
  • Residual Networks

音声認識の評価 / テスト / データセット

動画認識

動画認識のネットワーク

  • fractionally-strided spatio-temporal convolutions
  • fractionally-strided spatial convolutions
  • PredNet
  • Deep Predictive Coding Networks
  • ConvLSTM
  • Densely Connected Convolutional Networks

画像認識

画像認識のネットワーク

  • Pixel RNN
  • Image-to-Image Translation with Conditional Adversarial Nets
  • Conditional GAN
  • PatchGAN
  • StackGAN
  • DCGAN 画像生成??

画像認識の評価 / テスト / データセット

  • CIFER-100 画像
  • ILSVRC 2016 画像認識
  • MNIST

言語認識

言語認識のネットワーク

  • Pointer Sentinel Mixture Model
  • Polnter Network
  • GNMT(Google's Neural MAchine Translation)
  • ByteNet

言語認識の評価 / テスト / データセット

ライブラリと開発環境

pyenv / virtualenv anaconda IPython Jupyter NumPy pandas SciPy matplotlib PIL(Python Image Library) scikit-learn

関数名

  • predict 認識結果を得る処理
  • gradient 重みパラメーターに対する勾配を誤差逆伝播法によって求める
  • numeric_gradient 重みパラメーターに対する勾配を数値微分によって求める
  • accuracy 認識精度を求める処理

実行環境

Google Cloud Machine Learning(GCP)

その他

  • pickle
  • nomalize
  • flatten
  • predict
  • accuracy
  • shape
  • batch処理
  • ミニバッチ
  • matplotlib.pylab
  • iter iterate 繰り返し epocs
  • layer dense dropout
  • optimizer rmsprop
  • 二次元配列
  • 2値クラス配列
  • perplexity
  • input, forgat, output gate
  • fo-pooling
  • Linear(行列積
  • Bi-directional
  • Residual Connection
  • Zero-Shot
  • Mask Convolution
  • Attention
  • SL policy network(alpha go)
  • RL policy network(alpha go)
  • value network(alpha go)
  • モンテカルロ木探索
  • 連鎖律
  • 順伝播
  • 加算レイヤ
  • 乗算レイヤ
  • アフィン変換(順伝播で行う行列の内積)
  • 誤差逆伝播