ディープラーニングとは何か。
目次
誤差逆伝播法
- 「誤差逆伝播法」とは、ディープラーニングの学習を効率よく行うための手法
- 勾配降下法では、計算コストの問題がある(パラメータごとに計算するためネットワークが深くなると計算が膨大になる)
- 一部を効率よく微分を計算できるようにする方法→誤差逆伝播法
- その層に伝播してきた値には、前の層の値が含まれていることに着目し、再利用する計算方法
(変数を中継することができる) - 使われる微分の公式:「合成関数の微分」「連鎖律」
- 予測誤差がネットワークを逆向きにたどっているように見えるため付けられた名称
- 勾配降下法を用いてニューラルネットワークの学習をする際、微分計算を誤差逆伝播法を用い、効率よく行うもの
- メリット:どのニューロンが予測結果に寄与している・していないを判別できるようになった
(各勾配値が逆伝播の過程で求められるため) - 「信用割当問題(モデルのどの部分がこの予測結果をもたらしているか分からない)」の解決へとつながる
※どこが影響しているかは分かるが、なぜ影響しているかまでは分からない - 問題点:「勾配消失問題」「勾配爆発問題」→勾配値が小さくなりすぎてしまう/大きくなりすぎてしまう
活性化関数
「シグモイド関数」「ソフトマックス関数」以外の活性化関数について。
勾配消失問題とシグモイド関数
誤差逆伝播法で、出力層から順に各層にわたっての勾配値を計算する際、「活性化関数の微分」があるものの、シグモイド関数の微分では最大値が0.25にしかならないため、勾配が消失していくという問題が生じてしまう(「微分した関数(導関数)」参照)。
つまり、隠れ層を遡るごとに、活性化関数の微分が掛け合わさると、伝播していく誤差がどんどん小さくなっていくことになり、勾配消失問題が生じることになってしまう。
tanh関数
- 勾配消失問題は、シグモイド関数の最大値が0.25にしかならないことが原因
→シグモイド関数以外の関数を用いることで勾配消失問題を防ぐ
(ただし、出力層ではシグモイド関数(またはソフトマックス関数)でなければならない) - 出力層以外→任意の実数を非線形に変換することができる関数でさえあれば、どのような関数も活性関数として用いることに特に問題はない
- 「tanh関数(ハイパボリックタンジェント)」:-1から1の範囲を取ることが特徴
→最大値が1なので勾配が消失しにくい
(とはいえ、最大値が1というだけなので、完全に防ぐことはできない)
ReLU関数
- 「ReLU(Rectified Linear Unit)関数」:0より大きければ最大値である1が得られることになる
→勾配が消失しにくい(誤差逆伝播法における勾配が小さくなりにくい)
ただし、0以下の場合は0になるため、学習がうまくいかない場合もある
その他
- 「Leaky ReLU関数」:0超の場合、わずかな傾きを持っている
→ReLU関数のほうがよい場合もあり、ケースバイケース - 「Parametric ReLU」
- 「Randomized ReLU」