学習率の変化による損失と精度への影響 (2)
はじめに
前回の記事で、勾配と学習率の関係において一度最小値に達した後、再び勾配は大きくなったため、勾配と学習率の関係に着目して何故このような減少が生じるのか調べた。
SGDのアルゴリズムの違いによる影響
- モーメンタムなし
- モーメンタムあり
- モーメンタム + nestrov
図1、図2、図3にepochと勾配の関係を示す。図2、図3においては、を勾配とした。いずれのSGDの手法においてもepochと勾配の関係に違いはなかった。
損失関数による影響
CIFAR100のような多クラス分類では、モデル出力値にLogSoftmax関数を適用した後、NLLLossにより推定値を求めている。これはCross Entropy Lossとほぼ同じである。
NLLLoss
NLLLossを次式に示す。
今回の話では、はモデルの出力値、はラベルのインデックスである。また、はバッチサイズ、は重みであり1である。NLLLossはで微分しても定数であり勾配に影響しない。
LogSoftmax
LogSoftmaxを次式に示す。
はモデルの出力値である。図4にこの関数への入力と出力の関係を示す。
図のようにLogSoftmaxは負の値であり、線形である。この関数の微分形を次式に示す。
図5に微分式への入力と出力の関係を示す。
図に示すように微分形の出力はほぼ一定である。従って、学習率と勾配の関係に影響しないと考えられる。
ついでに、順伝播と逆伝播の関係を調べた。これらは式(4)のように表され、LogSoftmaxの順伝播と逆伝播は図6のようになる。
はLogSoftmax関数である。
結論
参考[1]によると、高次元のニューラルネットワークのパラメータを最適化する時、局所解は事実上存在せず、全次元のうち数次元において極値をある鞍点が存在する。この鞍点からどのように脱出するかを突き止めるまで、鞍点への接近と脱出の状態が繰り返される。
というのが上記の実験で見られた勾配の振動であると思われる。
大域解ではない局所解である確率は損失関数が大域解に近づくほど高くなるため、学習がある程度進めば局所解である部分で止めても問題はないらしい。