使用梯度下降將模型最佳化

已完成

我們已了解成本函式如何使用資料來評估模型的執行效能。 最佳化工具是最後一塊拼圖。

優化器的角色是以提升效能的方式調整模型。 它做出改變的方式是檢查模型輸出和成本,並建議模型的新參數。

例如,在我們的農場案例中,線性模型有兩個參數:線條的截距和線條的斜率。 如果線條的節距是錯誤的,則模型一般會低估或高估溫度。 如果斜率設定錯誤,此模型將無法展示 1950 年代之後溫度變化的方式。 最佳化工具會變更這兩個參數,讓它們能隨著時間進行溫度的最佳建模。

描述機器學習生命周期中優化器部分的示意圖。

梯度下降

現今最常見的最佳化演算法稱為梯度下降。 此演算法存在數種變體,但全都使用相同的核心概念。

梯度下降會使用微積分來預估變更每個參數將如何變更成本。 例如,增加參數可能會預測成本降低。

之所以稱為梯度下降,是因為這會計算每個模型參數和成本之間關聯性的梯度 (斜率)。 然後,這些參數會被改變以便沿着斜坡下降。

雖然此演算法既簡單又功能強大,但其並不保證能找出將成本降至最低的最佳模型參數。 誤差的兩個主要來源為局部極小值不穩定

本機最小值

我們先前的範例看起來成效不錯,這是假設當參數小於 0 或大於 10 時,成本會持續增加:

成本與模型參數的關係圖。在模型參數為五時,成本達到最小值。

如果小於零或大於 10 的參數會導致較低的成本,那麼這份工作就不會看起來那麼好,如同這張圖片所示:

成本與模型參數之關係的繪圖,當模型參數為五時,成本達到一個局部最小值,但當模型參數為負六時,成本則更低。

在上圖中,負七的參數值會是比五更好的解決方案,因為其成本較低。 漸層下降事先並無法知道每個參數與成本之間的完整關聯性 (其以虛線表示)。 因此其很容易找到局部極小值,這些參數估計可能不是最佳解,但其梯度為零。

不穩定

另一個相關的問題是,梯度下降有時會顯示不穩定。 此不穩定通常發生在步進大小或學習率 (每次反覆運算時調整每個參數的數量) 太大時。 每次步進時,由於參數的調整程度過大,導致模型在每次反覆運算後反而會變得更糟:

成本與模型參數之關係的繪圖,顯示成本移動的步進較大,且成本降低幅度極小。

採取較慢的學習率可解決此問題,但可能也會造成問題。 首先,較慢的學習率可能代表定型需要很長的時間,因為需要更多步驟。 其次,步進幅度較小,更有可能導致以本機最小值進行定型:

成本與模型參數變動的圖,顯示成本的小幅變化。

相較之下,較快的學習速率可以更容易地避開局部最小值,因為較大的步伐可以略過局部最大值。

成本與模型參數之關係的繪圖,其中成本以固定的幅度移動,直到達到最小值。

如我們在下一個練習中所見,針對每個問題,都會有一個最佳的步進大小。 尋找最佳化通常需要進行實驗。