優化與訓練
收斂(convergence)
/ kun-VER-junss /
收斂,是訓練不再取得有意義進展的那個點——損失已經走平,再多走幾步幾乎什麼都不改變了。想像我們那位走下谷底的登山者:收斂就是走到一處,朝各個方向看去地面都大致是平的,於是沒有哪個更低的地方值得再走過去。模型安定了下來,繼續訓練大多只是空轉車輪。
實踐中你無法證明模型已經觸到了真正的谷底,所以你會用一些停止準則:相鄰兩步之間損失變化小於某個極小的量,或者已經跑滿了固定數目的輪次,又或者驗證表現不再改善。因此「已收斂」是一個務實的判斷,而非數學上的確定——它意思是「夠好了,而且不再變好」,未必是「全域最優」。
有兩點值得老實說清。第一,收斂了,並不等於收斂到了一個好東西——模型收斂到一個糟糕的解(一片高而平的區域)和收斂到一個好解一樣容易。第二,對於深層網路那種非凸的損失地形,根本就沒有「能抵達最低點」的保證;你到達某一片夠低的區域就停了。你是收斂得快、慢,還是壓根不收斂,極大地取決於學習率、優化器,以及問題的條件好不好——這也是為什麼發散(損失不安定下來,反而爆炸)是你要提防的那種失敗模式。
各輪次的損失值:4.0、1.2、0.6、0.42、0.40、0.399、0.3989、0.3988。前幾輪收穫很大;到最後幾輪,每輪只削掉不到0.001。若以「改善小於0.001就停」為閾值,你就會宣告收斂——模型實際上已經穩定在約0.399。
收斂,就是每一步幾乎再也換不來什麼改善的時候。
收斂不等於最優。模型可以收斂到一個平庸的解;收斂只告訴你它不再變好,並不說明這答案就好。永遠要看那個實際的損失值,而不是只看它走平了。
又稱
另見