開始使用免費開始

避免落入區域極小值

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

單一變數函式的圖,上面有多個區域極小值與一個全域極小值。

tensorflow 中有數個最佳化器帶有動量參數,包括 SGDRMSprop。在本練習中你將使用 RMSprop。注意這次 x_1x_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_1x_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(____, ____)
編輯並執行程式碼