機械学習の基礎
多くの層を重ねたニューラルネットワークで、活性化関数にシグモイド関数を使うと、入力に近い層の学習が進みにくくなる理由として、適切なものはどれか。
- Aシグモイド関数の微分は最大でも0.25なので、逆伝播で層を通るたびに勾配が小さくなり、入力に近い層ではほとんど0になるから
- Bシグモイド関数は出力が0から1の範囲に収まらないので、層を通るたびに値が大きくなり、計算があふれてしまうから
- Cシグモイド関数には微分できない点があるので、逆伝播で勾配を求められない層が出てくるから
答えと解説を見る
正解:A. シグモイド関数の微分は最大でも0.25なので、逆伝播で層を通るたびに勾配が小さくなり、入力に近い層ではほとんど0になるから
逆伝播では、各層の活性化関数の微分が勾配に次々と掛け合わされます。シグモイド関数の微分は σ(z)(1 − σ(z)) で最大でも0.25なので、例えば10層を通ると 0.25¹⁰ ≈ 9.5 × 10⁻⁷ と、勾配は非常に小さくなります。これを勾配消失と呼びます。対策として、正の範囲で微分が1になるReLUを使う、層を飛び越えて信号を伝える残差接続(スキップ接続)を入れる、重みの初期値を工夫する、バッチ正規化を使う、といった方法があります。
- A. 正しい。1より小さい微分の掛け算が続いて、勾配が消えていきます。
- B. シグモイド関数の出力は0から1の範囲に収まるので、値があふれることはありません。
- C. シグモイド関数はすべての点で微分できます。