4-6 活性化関数
みかん
今回はG検定の第4章「ディープラーニングの概要」の6節「活性化関数」を解説します
1. シグモイド関数と勾配消失問題
みかん
誤差逆伝播法で出力層側から隠れ層のパラメータを更新していく際、活性化関数の微分がいくつかの項の掛け合わせに含まれます。この構造が勾配消失問題を引き起こす大きな原因となりました。
みかん
シグモイド関数の微分の最大値は0.25です。これは1よりだいぶ小さいですよね。隠れ層を重ねるごとに、活性化関数の微分が掛け合わさって伝播していく誤差はどんどん小さくなっていきます。
シグモイド関数と勾配消失
シグモイド関数の微分の最大値 = 0.25。隠れ層を重ねるごとに勾配がどんどん小さくなり、入力層付近の隠れ層にはほとんどフィードバックすべき誤差がゼロになってしまう。
あいで
0.25を何回も掛けていったらすぐにゼロに近づきますよね。だから深いネットワークだと学習ができなくなるんですか。
みかん
その通りです。この勾配消失問題を解決するために、シグモイド関数以外の活性化関数が研究されていきました。
2. tanh関数
みかん
第3次AIブームの前から実践されていた活性化関数の工夫の1つが、tanh(ハイパボリックタンジェント)関数です。シグモイド関数を線形変換したもので、出力の範囲は-1から1です。
tanh関数
tanh関数 = シグモイド関数を線形変換したもの。出力範囲は-1から1。微分の最大値は1で、シグモイド関数(0.25)より勾配消失しにくい。
みかん
tanh関数の微分の最大値は1です。シグモイド関数の0.25と比べると勾配が消失しにくくなることが分かります。シグモイド関数を使っている場合はtanhに置き換えたほうがよいとされます。
あいで
微分の最大値が1なら、勾配消失問題は完全に解決するんですか?
みかん
残念ながら完全ではありません。最大値が1であっても、1より小さい数に収まってしまうケースがほとんどなので、ディープネットワークでは勾配消失問題を完全には防げません。
3. ReLU関数
みかん
tanh関数よりもさらに勾配消失問題に対処できるのがReLU(Rectified Linear Unit)関数です。式はy = max(0
ReLU関数 = max(0
みかん
ReLU関数を微分すると、xが0より大きい限り微分値は常に1になります。tanh関数のようにピーク値の1のときだけでなく、常に1が得られるため勾配消失しにくいんです。
みかん
ただし、xが0以下の場合は微分値も0になりますから、学習がうまくいかない場合もあることには注意が必要です。
あいで
x≦0で微分値が0になる問題を解決した活性化関数はあるんですか?
みかん
はい、ReLUの派生としてLeaky ReLU関数があります。x<0においてもわずかな傾きをもつことで、微分値が0にならないようにしています。
みかん
他にも、x<0部分の傾きを学習で決めるParametric ReLUや、ランダムに傾きを決めるRandomized ReLUなどがあります。どれが一番良いかは一概には言えません。
あいで
シグモイド→tanh→ReLU→Leaky ReLUと進化してきたんですね。勾配消失問題を克服するための歴史が見えます。
まとめ
みかん
1つ目、シグモイド関数は微分の最大値が0.25のため、隠れ層を重ねるほど勾配消失問題が発生する。
みかん
2つ目、tanh関数は微分の最大値が1でシグモイドより改善されたが、完全には勾配消失を防げない。
みかん
3つ目、ReLU関数はmax(0
みかん
4つ目、Leaky ReLUやParametric ReLU、Randomized ReLUなどReLUの派生が多数存在する。
みかん
ということで今回は活性化関数について解説しました
あいで
このチャンネルでは情報に関することを発信しています。
あいで
よければチャンネル登録、高評価よろしくお願い致します。