AdaGradでは、重みごとに勾配の二乗を累積した量hを使い、h←h+g²、w←w−η×g÷√hの式で重みを更新する(gは勾配、ηは学習率、hの初期値は0とし、ゼロ除算を防ぐ微小な値は無視する)。η=0.1で2つの重みw1、w2を学習したところ、1回目と2回目の更新での勾配は、w1が3と4、w2が0.6と0.8であった。2回目の更新でw1とw2が動く量(変化の大きさ)の組み合わせとして、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 B
この問題の論点:AdaGradの重みごとの更新量
ポイント
AdaGradはこれまでの勾配の二乗和の平方根で学習率を割るため、勾配が大きかった重みほど更新幅が抑えられます。
選択肢ごとの解説
- A
不適切
学習率×勾配をそのまま使う、通常の勾配降下法の値です(0.1×4=0.4、0.1×0.8=0.08)。AdaGradでは、これを累積した勾配の二乗和の平方根で割るため、値が変わります。
- B
適切 正解
w1はh=3²+4²=25、√h=5なので0.1×4÷5=0.08です。w2はh=0.6²+0.8²=0.36+0.64=1、√h=1なので0.1×0.8÷1=0.08です。勾配の大きさが5倍違っても、更新量はそろいます。
- C
不適切
hの平方根ではなく、h自体で割った場合の値です。w1では0.1×4÷25=0.016となります。w2はh=1なので偶然0.08で一致しますが、更新式は√hで割ります。
- D
不適切
1回目の勾配を累積せず、2回目の勾配の二乗だけをhとした場合の値です(√h=4と0.8で、0.1×4÷4=0.1、0.1×0.8÷0.8=0.1)。AdaGradは1回目の勾配の二乗も足し込むため、√hはw1で5、w2で1になります。
補足
このように、AdaGradは重みごとに実質的な学習率を変えます。勾配がまれにしか生じない重み(出現頻度の低い特徴量に対応する重みなど)は、hが小さいままなので比較的大きく更新されます。一方で、hは学習の間ずっと増え続けるため、どの重みも更新幅がしだいに小さくなり、学習が進まなくなりやすい点が弱点です。RMSpropは、累積の代わりに指数移動平均を使ってこの弱点を緩和します。
試験での狙われ方
更新式に数値を当てはめて追わせる計算や、通常の勾配降下法・RMSpropとの更新幅の違いを比べさせる形が考えられます。