局所最小値を回避する
前の問題では、局所最小値に簡単にはまり込んでしまうことを確認しました。変数が1つの単純な最適化問題でも、まず局所最小値を通過しなければならない場合、勾配降下法は大域最小値を見つけられませんでした。この問題を避ける一つの方法がモメンタムで、最適化器が局所最小値を突き抜けるのに役立ちます。ここでも前の問題の損失関数を使います。これは loss_function() として定義済みで利用できます。

tensorflow のいくつかの最適化器(SGD や RMSprop など)にはモメンタムのパラメータがあります。本演習では RMSprop を使います。なお、今回は x_1 と x_2 が同じ値に初期化されています。さらに、keras.optimizers.RMSprop() は tensorflow からすでにインポート済みです。
この演習はコースの一部です
Introduction to TensorFlow in Python
演習の手順
opt_1を学習率 0.01、モメンタム 0.99 で設定します。opt_2を、学習率 0.01、モメンタム 0.00 の RMS(root mean square)最適化器で設定します。opt_2の最小化処理を定義します。x_1とx_2をnumpy配列として出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Initialize x_1 and x_2
x_1 = Variable(0.05,float32)
x_2 = Variable(0.05,float32)
# Define the optimization operation for opt_1 and opt_2
opt_1 = keras.optimizers.RMSprop(learning_rate=____, momentum=____)
opt_2 = ____
for j in range(100):
opt_1.minimize(lambda: loss_function(x_1), var_list=[x_1])
# Define the minimization operation for opt_2
____
# Print x_1 and x_2 as numpy arrays
print(____, ____)