誤差逆伝播法と勾配消失問題について解説!

U-Netの論文を読破してみて

U-Netの論文をざっと読んで、以下のブログを眺めていました。
ブログ読む方が楽だなー

www.acceluniverse.com

CNNの背景

順伝播型ネットワークについて分かりやすく説明したブログです。
NNの基礎が書かれています。

melheaven.hatenadiary.jp

一般的に画像処理の際によく適用されるCNN(Convolutional Neural Network)。
これまで説明した通り、順伝播ネットワーク・誤差逆伝播法・確率的勾配降下法の考え方は継承しています。
詳しくは今後まとめようと考えていますが、画像認識に特化させるように
中間層において畳み込み層とプーリング層が新たに追加されます。
畳み込み層とプーリング層では画像処理特有の特別な処理を施しています。

CNNではどうしても層が深くなりがちです。
理由としてニューラルネットワークの特徴として、層を深くすればするほど、複雑な特徴も抽出可能な為です。
その為CNNでは、Degration(勾配消失問題・勾配発散問題)などが発生するリスクが高いです。

誤差逆伝播法の基礎

深層学習では学習時に、誤差が極小となるように重みを更新します。
重要なのは出力層の誤差関数や各層の活性化関数を微分した勾配です。
誤差逆伝播法では、情報が出力層側から入力層側へ流れていきますが、
このとき、層が何重にも折り重なっている為、活性化関数が入れ子構造になっています。

その為複雑な関数の微分となり、
これらの関数の微分に必要な計算量をコンパクトにしようと、
連鎖律を活用して計算する方法を誤差逆伝播法と呼びます。
詳しく知りたい方は以下の記事へ。

qiita.com


誤差逆伝播法では誤差関数(上記の記事では損失関数)の勾配を出力層から入力層へと計算していきます。
しかし勾配消失問題の原因はここに隠されているのです・・・。

勾配消失問題

上記の記事を読んでいると、気づかれたかもしれませんが、
出力層〜入力層における誤差関数勾配の総和の内部は活性化関数の微分の積で表されます。

もし各層における誤差関数の勾配が小さい値(0に近い)場合、
その積を全層における誤差関数勾配として得る為、
誤差関数勾配は小さい値のかけ算を繰り返すことで、0に近い値になってしまいます。

これが勾配消失問題です。
こうなってしまうと学習が進まず、ニューラルネットワーク2度目の冬を迎える要因になりました。

ReLU関数の強み

勾配消失問題を打破しようと様々な策が練られ、その代表的な例がReLU関数を活性化関数で用いることです。

なぜ勾配消失問題を避ける為にはシグモイド関数ではなく、ReLU関数を使用すべきなのか
以下の記事で説明しています。

melheaven.hatenadiary.jp