人工知能とは ④ディープラーニングの手法1

What is Artificial Intelligence?

ディープラーニングには、活性化関数であるシグモイド関数の微分(の最大値)が25%しかないという勾配損失問題がありました。しかし、隠れ層では任意の実数を(非線形に)変換できる関数であれば、どんな関数でも問題ないとして、この部分を工夫するアイデアはディープラーニングブームの前からありました。

活性化関数

tanh関数|ハイパボリックタンジェント

シグモイド関数を線形変換したもので、シグモイド関数が0〜1の値と取るのに対して、tanh関数は-1〜1の範囲をとります。シグモイド関数の微分の最大値が0.25であるのに対して、tanh関数の微分の最大値は1なので、勾配消失を起こしにくいことがわかります。しかし、最大値が1ということで消失しない訳ではありませんので階層の深いネットワークでは実用的ではありません。

ReLU関数|ランプ関数|Rectified Linear Unit

現在の主流はReLU関数です。y = max ( 0, x )とシンプルは式です。xが0より大きい場合に限り、微分値は常に最大値の1となり、tanh関数のピーク時のみ1になる場合と比べると、勾配消失が小さくなりにくくなります。ただし、xが0以下の場合は微分値も0になりますから、学習がうまくいかない場合も発生します。

■派生系
Leaky ReLU関数
x<0の状態で僅かな傾きを持っている。これにより、微分値が0になることがほとんどなくなり、ReLU関数よりも更に勾配消失しにくくなります。
Parametric ReLU関数
Leaky ReLU関数のx<0のときの傾きを学習に寄って最適化する
Randomized ReLU
複数の傾きを試す

学習の最適化

勾配降下法

機械学習の目的は、モデルの予測値と実際の値の誤差をなくすことにありますが、その誤差関数を最小化する関数の最小化問題があります。関数の最小化というば、微分です。それぞれの層で重みで誤差関数を微分した値が0になるような重みを偏微分によって求めます。ニューラルネットワークでは、各パラメータ(重み)に対して勾配降下法を適用して最適解を求める。

k  : イテレーション。何回繰り返し計算を繰り返したかを示すといいます。
α   : 学習率、勾配に沿って一度にどれだけ降下するかのハイパーパラメータ
学習 : ニューラルネットワークではこの勾配降下法を用いて何回も計算すること

■問題点①
傾きがゼロとなるような部分を2つ以上持っているケースでは見せかけの最適解局所最適解と大域最適解を判別することができない
■解決策
・学習率を大きく設置する
・適切なタイミングで学習率の値を小さくしていく

■問題点②
3次元である場合、ある次元では最適解であるが、他の次元では極大になる鞍点という場合がある。また、この鞍点付近は勾配が小さいことが多く、抜け出すことが難しい。これをプラトーという。
■解決策
・モーメンタム : 最適化の進行方向に学習を加速させる。1990年代に提唱された。
・Adagrad   :
・Adadelta   :
・RMSprop   :現在の主流
・Adam    :現在の主流

精度を高めるテクニック

ドロップアウト

ディープニューラルネットワークは複雑な関数が表現できるので訓練データに対して過敏な反応をして、ディープラニングの最大の課題のオーバーフィッティングが発生しやすくなっています。そこで、ランダムにニューロンを、学習の繰り返し毎|エポック毎、除外するドロップアウトというテクニックがあります。ドロップアウトはアンサンブル学習を行っていることになる。

early stopping

学習を進めていくなかでテストデータに対する誤差関数が右上がりになり始めた時点で学習を止めること。このテクニックは、ジェフリー・ヒルトンはこのテクニックのことをノーフリーランチ定理あらゆる問題で性能の良い汎用化最適化戦略は理論上不可能を意識して、Beautoful FREE LUNCHといった。

初期値の調整

  1. 正規化
    データのスケールを調整するなど、データ全体を調整する処理
    各特徴量を0〜1の範囲に変換する処理
  2. 標準化
    各特徴量の平均を0、分散を1にする処理
    特徴量を標準正規化分布に従うように変換する
  3. 白色化
    各特徴量を無相関化したうえで標準化する
    かなりの計算量が必要となる
  4. 重みの初期値を工夫する
    一様分布もしくは正規分布に従う蘭州にネットワークの大きさに合わせた適当な件数をかける。シグモイド関数にはXavierの初期値、ReLU関数にはHeの初期値が良いとされている。

バッチ正規化|batch normalization

各層に伝わってきたデータを活性化関数をかける前に正規する。オーバーフィッティングもしにくくなる。

推薦図書

日本ディープラーニング協会
JDLA監修
ディープラーニングG
ジェネラリスト検定

・公式テキスト
・公式問題集