入力xから、z = wx、a = ReLU(z)、L = (a − t)²の順に損失Lを計算するモデルがある。ここでReLU(z) = max(0, z)である。x = 3、w = 0.5、正解t = 0.5のとき、誤差逆伝播法で求める重みwについての損失の勾配∂L/∂wの値として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 D
この問題の論点:連鎖律による勾配の計算
ポイント
誤差逆伝播法は、連鎖律にもとづき出力側から局所的な微分を順に掛け合わせて勾配を求めます。この例では∂L/∂w = ∂L/∂a×∂a/∂z×∂z/∂wです。
選択肢ごとの解説
- A
不適切
∂L/∂a = 2×(1.5 − 0.5) = 2.0で計算を止めた値です。wについての勾配を求めるには、さらに∂a/∂z = 1と∂z/∂w = x = 3を掛ける必要があります。
- B
不適切
(a − t)²の微分を(a − t) = 1.0として係数2を落とし、1.0×1×3 = 3.0とした値です。正しくは∂L/∂a = 2(a − t) = 2.0で、これに1と3を掛けます。
- C
不適切
ReLU関数の微分として出力値a = 1.5を掛け、2.0×1.5×3 = 9.0とした値です。ReLU関数の導関数は、入力が正なら1、負なら0です。
- D
適切 正解
z = 0.5×3 = 1.5、a = 1.5なので∂L/∂a = 2×(1.5 − 0.5) = 2.0です。z > 0でReLU関数の微分は1、∂z/∂w = x = 3なので、連鎖律により2.0×1×3 = 6.0です。
補足
もしw = −0.5ならz = −1.5となり、ReLU関数の微分が0になるため、∂L/∂wも0になります。この入力からは、wに勾配が伝わりません。各層の局所的な微分を順に掛けるという同じ手順を、層の数だけ繰り返すのが誤差逆伝播法です。途中で1より小さい値が何度も掛かると勾配消失問題、1より大きい値が何度も掛かると勾配爆発問題につながります。
試験での狙われ方
簡単な合成関数の勾配を連鎖律で求めさせる計算や、活性化関数の導関数の値を確かめさせる形が考えられます。
参考
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目15 誤差逆伝播法)
- Goodfellow, Bengio, Courville, Deep Learning (2016) (6.5 Back-Propagation and Other Differentiation Algorithms)
- Rumelhart, Hinton, Williams, Learning representations by back-propagating errors (1986)