局所最小値の落とし穴
次の損失関数 loss_function() のプロットを考えます。右側の点で示した大域的最小値に加え、左側の点を含む複数の局所最小値があります。

この演習では、keras.optimizers.SGD() を使って loss_function() の大域的最小値を見つけます。これは2回行い、毎回 loss_function() への入力の初期値を変えます。最初は初期値 6.0 の変数 x_1 を使います。次に、初期値 0.3 の変数 x_2 を使います。loss_function() はすでに定義済みで利用できます。
この演習はコースの一部です
Introduction to TensorFlow in Python
演習の手順
- 学習率 0.01 の確率的勾配降下法(SGD)オプティマイザを使うように
optを設定します。 - 損失関数
loss_function()と、初期値が 6.0 の変数x_1を用いて最小化を実行します。 - 損失関数
loss_function()と、初期値が 0.3 の変数x_2を用いて最小化を実行します。 x_1とx_2をnumpy配列として出力し、値が異なるか確認します。これらはアルゴリズムが見つけた最小値です。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Initialize x_1 and x_2
x_1 = Variable(6.0,float32)
x_2 = Variable(0.3,float32)
# Define the optimization operation
opt = keras.optimizers.____(learning_rate=____)
for j in range(100):
# Perform minimization using the loss function and x_1
opt.minimize(lambda: loss_function(____), var_list=[____])
# Perform minimization using the loss function and x_2
opt.minimize(lambda: ____, var_list=[____])
# Print x_1 and x_2 as numpy arrays
print(____.numpy(), ____.numpy())