ある物流会社のエンジニアが、配送の遅延の有無を予測するため、全結合層を3層重ねたネットワークを作った。隠れ層の活性化関数はReLU関数である。重みをすべて0.01、バイアスをすべて0で初期化して学習させた。学習後、重みの値は0.01から変化していたが、各隠れ層では、どのユニットもほかのユニットとまったく同じ重みを持っていた。この原因と対処として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 A
この問題の論点:全結合層の重みの初期化
ポイント
同じ層のユニットの重みを同じ値で初期化すると対称性が崩れず、全ユニットが同じ働きのまま学習が進みます。重みは乱数で初期化します。
選択肢ごとの解説
- A
適切 正解
同じ入力に同じ重みを掛けるため、同じ層のユニットは同じ値を出力します。誤差逆伝播法で求まる勾配も同じなので、更新後もそろったままです。乱数で初期化すればこの対称性が崩れ、ユニットごとに別の特徴を学べます。
- B
不適切
重みは0.01から変化しているため、更新は行われています。同じ層のユニットは同じ勾配を受けるので、学習率を大きくしても全ユニットが同じだけ動くだけで、ユニットどうしの差は生まれません。
- C
不適切
出力が0のまま勾配が流れないユニットは、重みが更新されなくなります。この事例は、更新されたうえで全ユニットがそろっている状況です。活性化関数を変えても、同じ値から始めた対称性は崩れません。
- D
不適切
バイアスも学習で更新されるため、0で初期化するのは一般的な設定です。バイアスをすべて同じ1にしても、同じ層のユニットは同じ入力と同じ重みを持つままなので、出力も勾配もそろったままです。
試験での狙われ方
重みの初期値をそろえたときの問題を、学習率や活性化関数による不具合と見分けさせる形で問われます。
参考
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目17 全結合層)
- Goodfellow, Bengio, Courville, Deep Learning (2016) (8.4 Parameter Initialization Strategies)