Friday, February 27, 2015

Step by Step Neural Network: Nesterov's Accelerated Gradient

To apply Nesterov's accelerated gradient, first, store the current weight parameters, next update the weights with the previous gradient, compute the gradient, then update the weight parameters from the stored position. using the same update rule as classic momentum.

Nesterov's accelerated gradient を適応するためには、まず、勾配を計算する前に現在の重みを保存しておき、次に重みを前回の勾配を使って更新、更新された重みを使って勾配を計算する。そして、保存しておいた重みから、新たに計算された勾配を使って重みを更新する。

Code

# Store the current weight, and jump with current gradient
W1_0, B1_0, W2_0, B2_0 = W1, B1, W2, B2
W1, B1, W2, B2 = W1+mc*dW1, B1+mc*dB1, W2+mc*dW2, B2+mc*dB2

# Compute gradient using W1, B1, W2, B2
# ...

# Update weights from the stored position W1_0, B1_0, W2_0, B2_0
dW1 = - lr * dEdW1 + mc * dW1
dB1 = - lr * dEdB1 + mc * dB1
dW2 = - lr * dEdW2 + mc * dW2
dB2 = - lr * dEdB2 + mc * dB2
W1, B1, W2, B2 = W1_0+dW1, B1_0+dB1, W2_0+dW2, B2_0+dB2

Result

The following figures show the effect of Nesterov's accelerated gradient (NAG), compared against classic momentum (CM) and optimisation without momentum (plain gradient descent) for different optimisation parameter values. Network is optimised faster with NAG than with CM, and the oscillation seen in the case of CM with high momentum value does not occur with NAG.

以下の図は Nesterov's accelerated gradient (NAG) によるネットワークの学習効果の変化を、様々な最適化パラメーターの値に対して、通常のモーメンタム(CM), モーメンタムなしの場合と比較して示している。NAG の場合 CM よりも改善が速く、CM でモーメンタム係数が大きい場合に発生した振動も起こらなくなっている。

No comments:

Post a Comment