
278
|
第六章:深度網路的調整
損失函數
損失函數可以讓最佳化函數知道它在預期的工作中表現如何。在本章前半段討論模型目
標時,我們曾談及損失函數的使用(輸出層損失函數)。以下就是一些關於損失函數其
他使用場景的說明,包括在哪裡可以最有效地使用它,以及關於如何使用它的一些警
告。說得直接一點,其實損失函數只用於兩個地方:
• 輸出層(或 LossLayer 損失層)
• 支援無監督逐層預訓練的層;例如自動編碼器、RBM 與 VA E
大多數層(卷積層、稠密層、LSTM 層等)都沒有(也無法)具有損失函數,因為無法
以逐層方式進行預訓練。
除了本章前面所列出的分類損失函數之外,其他分類損失函數還包括樞紐損失函數
(hinge loss)與邏輯損失函數(logistic loss)。如果網路必須針對硬分類進行最佳化,
樞紐損失函數就是最常用的損失函數;例如,0 = 非詐欺,1 = 詐欺,按慣例稱之為 0-1
分類器。如果比較想知道的是機率而不是硬分類,就可以使用邏輯損失函數。最好的
例子就是,透過真人參與其中的(human-in-the-loop)解決方式,標記出潛在的詐欺行
為,或是預測使用者點擊廣告的機率。如果想要預測出有效的機率值,就表示要生成 0
到 1 之間的數字。
二元分類與樞紐損失函數
樞紐損失函數主要是用於二元分類的情況。樞紐損失函數也有針對多類別
分類(例如一對全部或一對一)的擴展,不過此處並不會詳述。
瞭解訓練期間的 debug 除錯輸出
在訓練期間,我們會看到如下所示的指令行輸出:
21:36:00.358 ...