G検定 4-5 15. 誤差逆伝播法
シラバス 15. 誤差逆伝播法 についてまとめていきます。
目標
・誤差逆伝播法の概要を説明できる
・誤差逆伝播法の適用時に生じる問題とその主たる原因について説明できる
キーワード
勾配消失問題, 勾配爆発問題, 信用割当問題, 連鎖律
誤差逆伝播法 (Backpropagation)の導入
最適化計算に用いられる勾配降下法ですが、計算が困難でした。
そこで複数のパラメータに対して微分を効率よく求めるために誤差逆伝播法が考えられました。
• 基本的な考え方
ニューラルネットワークの学習方法の一つ
出力の誤差を後ろから前に伝えていく
効率的にパラメータを修正できる
大事なのは、微分において「変数を中継」することができること。応用すれば、一度微分値を求めた部分についてはその計算を再利用できるので、計算コストを削減できる。
合成関数の微分あるいは連鎖律と呼ばれる微分の公式を使います
どのニューロンが予測結果に寄与している・していないかを判別できる(信用割当問題を解決できる。なぜまではわからない。)
• 処理の流れ
前向き計算:入力から出力を計算
誤差計算:出力と目標値の差を計算
逆向き計算:誤差を後ろから前に伝播
パラメータ更新:計算された誤差を基に修正
誤差逆伝播法の副次的効果
勾配消失問題 (Vanishing Gradient Problem)
誤差が層を遡るにつれて小さくなりすぎる問題
深い層での学習が進まなくなる
例:伝言ゲームで情報が薄まっていくようなもの
勾配爆発問題 (Exploding Gradient Problem)
誤差が層を遡るにつれて大きくなりすぎる問題
学習が不安定になる
例:スピーカーのハウリングのように増幅されていくようなもの
連鎖律に関する問題 (Chain Rule Issues)
多層での微分の連鎖による計算の複雑さ
計算コストが高くなる
数値的な不安定性が生じやすい
【対策】
1. 勾配消失問題
勾配消失問題は、誤差逆伝播中に勾配が層を逆方向に伝播するにつれて指数関数的に小さくなり、初期層のパラメータがほとんど更新されなくなる問題です。
原因:
活性化関数の選択: シグモイド関数やハイパボリックタンジェント関数のような勾配が飽和しやすい活性化関数は、勾配消失を引き起こしやすいです。
深いネットワーク構造: 層が深くなるほど、勾配が消失する可能性が高くなります。
解決策:
ReLU系の活性化関数の利用: ReLU、Leaky ReLU、PReLUなどは勾配消失問題を緩和します。(詳細はG検定 4-6 12 活性化関数)
バッチ正規化: 各層の出力を正規化することで、勾配消失を防ぎます。
残差接続 (ResNet): ショートカット接続を用いることで、勾配がより深く伝播しやすくなります。
勾配クリッピング: 勾配がある閾値を超えないようにすることで、勾配爆発を防ぎます。
2. 勾配爆発問題
勾配爆発問題は、勾配が層を逆方向に伝播するにつれて指数関数的に大きくなり、学習が不安定になる問題です。
原因:
学習率が大きすぎる: 大きすぎる学習率は、勾配爆発を引き起こしやすいです。
重みの初期値: 不適切な重みの初期値は、勾配爆発を引き起こす可能性があります。
解決策:
学習率の調整: 学習率を小さくすることで、勾配爆発を防ぎます。
勾配クリッピング: 勾配がある閾値を超えたら、勾配をクリップすることで、勾配爆発を防ぎます。
重みの初期化: Xavierの初期値やHeの初期値など、適切な重みの初期化方法を用いることで、勾配爆発を防ぎます。