“loss值”指導你的人工智能不那麼“智障”的關鍵指標

同樣的算法,同樣的數據,為什麼別人的神經網絡叫人工智能,而你的只能叫“人工智障”?其實神經網絡的訓練過程充滿了不確定性。現在的神經網絡雖然是經過數學嚴格推導出來的,但其

實踐過程還是有一些類似老中醫看病的地方:很多非常有用的“黑科技”都是排列組合試出來的。

“loss值”指導你的人工智能不那麼“智障”的關鍵指標

訓練神經網絡往往是一個很漫長的過程。一方面,訓練一個網絡需要海量的訓練數據,比如ImageNet數據集有1500多萬張圖片,訓練用的ISLVRC 2012數據集也包含125萬個樣本。另一方面,神經網絡需要調節的參數規模非常龐大。例如,經典的圖片識別模型VGG-16一共有1.38億個參數需要調節,可以想象,每次迭代需要的計算量和參數更新複雜度有多大。

“loss值”指導你的人工智能不那麼“智障”的關鍵指標

在這個漫長的過程中,程序員一般會階段性地評估當前模型的水平。其中一個最重要的指標就是損失函數的值,也叫Loss值。我們知道,訓練神經網絡就是讓Loss值不斷變小的過程。如果輸出的Loss值在變大,則說明模型算法或者數據是錯的,需要調一下Bug。如果Loss值在下降,但是降得很慢,就說明調節的參數不對,需要把模型調得更激進一點,參數更新的步子邁得大一點兒。只要Loss值一直在下降,就說明我們的訓練大方向是對的。

那模型的性能到底如何呢?我們之前講過,在訓練開始時,我們會把數據劃分為訓練集、驗證集和測試集。在訓練的過程中,我們會不斷用驗證集來驗證我們的模型準確性(或其他性能指標)。

“loss值”指導你的人工智能不那麼“智障”的關鍵指標

這樣我們就可以畫出一條曲線,橫座標是訓練的次數,縱座標是準確度。可以看出,正常情況下,隨著訓練次數的增加,驗證集的準確度一直在提升。那麼,測試集的情況怎麼樣呢?我們也可以每隔一段時間測試一下測試集的準確度。正常的話,這條曲線也在不斷提升,並且按道理來說,因為驗證集的數據更接近訓練集,所以它的準確率應該一直比測試集高。


分享到:


相關文章: