避免落入區域極小值
上一題示範了很容易卡在區域極小值。我們只有一個變數的簡單最佳化問題,但在必須先經過區域極小值時,梯度下降仍然無法找到全域極小值。避免這個問題的一種方法是加入動量(momentum),讓最佳化器可以衝破區域極小值。我們會再次使用上一題的損失函式,已經定義好並以 loss_function() 提供給你。

tensorflow 中有數個最佳化器帶有動量參數,包括 SGD 與 RMSprop。在本練習中你將使用 RMSprop。注意這次 x_1 與 x_2 已被初始化為相同的值。此外,keras.optimizers.RMSprop() 也已從 tensorflow 匯入供你使用。
本練習屬於課程
Python 的 TensorFlow 入門
練習說明
- 將
opt_1設定為使用學習率 0.01、動量 0.99。 - 將
opt_2設為使用 RMS(root mean square propagation)最佳化器,學習率 0.01、動量 0.00。 - 定義
opt_2的最小化操作。 - 以
numpy陣列的形式列印x_1與x_2。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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(____, ____)