深度學習的優化方法直接作用的對象是損失函數。在最優化、統計學、機器學習和深度學習等領域中經常能用到損失函數。損失函數就是用來表示預測與實際數據之間的差距程度。一個最優化問題的目標是將損失函數最小化,針對分類問題,直觀的表現就是分類正確的樣本越多越好。在回歸問題中,直觀的表現就是預測值與實際值誤差越小越好。
PyTorch中的nn模塊提供了多種可直接使用的深度學習損失函數,如交叉熵、均方誤差等,針對不同的問題,可以直接調用現有的損失函數。常用損失函數如下:
類 | 算法名稱 | 適用問題類型 |
torch.nn.L1Loss() | 平均絕對值誤差損失 | 回歸 |
torch.nn.MSELoss() | 均方誤差損失 | 回歸 |
torch.nn.CrossEntropyLoss() | 交叉熵損失 | 多分類 |
torch.nn.NLLLoss() | 負對數似然函數損失 | 多分類 |
torch.nn.NLLLoss2d() | 圖片負對數似然函數損失 | 圖像分割 |
torch.nn.KLDivLoss() | KL散度損失 | 回歸 |
torch.nn.BCELoss() | 二分類交叉熵損失 | 二分類 |
torch.nn.MarginRanKingLoss() | 評價相似度的損失 | |
torch.nn.MultiLabelMarginLoss() | 多標簽分類的損失 | 多標簽分類 |
torch.nn.SmoothL1Loss() | 平滑的L1損失 | 回歸 |
torch.nn.SoftMarginLoss() | 多標簽二分類問題的損失 | 多標簽二分類 |