成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習中常用的損失函數你知多少?

開發 開發工具 機器學習
本文作者將常用的損失函數分為了兩大類:分類和回歸。然后又分別對這兩類進行了細分和講解,其中回歸中包含了一種不太常見的損失函數:平均偏差誤差,可以用來確定模型中存在正偏差還是負偏差。

機器通過損失函數進行學習。這是一種評估特定算法對給定數據建模程度的方法。如果預測值與實際結果偏離較遠,損失函數會得到一個非常大的值。在一些優化函數的輔助下,損失函數逐漸學會減少預測值的誤差。本文將介紹幾種損失函數及其在機器學習和深度學習領域的應用。

[[243642]]

損失函數和優化

沒有一個適合所有機器學習算法的損失函數。針對特定問題選擇損失函數涉及到許多因素,比如所選機器學習算法的類型、是否易于計算導數以及數據集中異常值所占比例。

從學習任務的類型出發,可以從廣義上將損失函數分為兩大類——回歸損失和分類損失。在分類任務中,我們要從類別值有限的數據集中預測輸出,比如給定一個手寫數字圖像的大數據集,將其分為 0~9 中的一個。而回歸問題處理的則是連續值的預測問題,例如給定房屋面積、房間數量以及房間大小,預測房屋價格。

  1. NOTE  
  2.         n        - Number of training examples. 
  3.         i        - ith training example in a data set. 
  4.         y(i)     - Ground truth label for ith training example. 
  5.         y_hat(i) - Prediction for ith training example. 

回歸損失

1. 均方誤差/平方損失/L2 損失

數學公式:

均方誤差

顧名思義,均方誤差(MSE)度量的是預測值和實際觀測值間差的平方的均值。它只考慮誤差的平均大小,不考慮其方向。但由于經過平方,與真實值偏離較多的預測值會比偏離較少的預測值受到更為嚴重的懲罰。再加上 MSE 的數學特性很好,這使得計算梯度變得更容易。

  1. import numpy as np 
  2. y_hat = np.array([0.000, 0.166, 0.333]) 
  3. y_true = np.array([0.000, 0.254, 0.998]) 
  4. def rmse(predictions, targets): 
  5.     differences = predictions - targets 
  6.     differencesdifferences_squared = differences ** 2 
  7.     mean_of_differences_squared = differences_squared.mean() 
  8.     rmse_val = np.sqrt(mean_of_differences_squared) 
  9.     return rmse_val 
  10. print("d is: " + str(["%.8f" % elem for elem in y_hat])) 
  11. print("p is: " + str(["%.8f" % elem for elem in y_true])) 
  12. rmsermse_val = rmse(y_hat, y_true) 
  13. print("rms error is: " + str(rmse_val)) 

2. 平均絕對誤差/L1 損失

數學公式:

平均絕對誤差

平均絕對誤差(MAE)度量的是預測值和實際觀測值之間絕對差之和的平均值。和 MSE 一樣,這種度量方法也是在不考慮方向的情況下衡量誤差大小。但和 MSE 的不同之處在于,MAE 需要像線性規劃這樣更復雜的工具來計算梯度。此外,MAE 對異常值更加穩健,因為它不使用平方。

  1. import numpy as np 
  2. y_hat = np.array([0.000, 0.166, 0.333]) 
  3. y_true = np.array([0.000, 0.254, 0.998]) 
  4.  
  5. print("d is: " + str(["%.8f" % elem for elem in y_hat])) 
  6. print("p is: " + str(["%.8f" % elem for elem in y_true])) 
  7.  
  8. def mae(predictions, targets): 
  9.     differences = predictions - targets 
  10.     absolute_differences = np.absolute(differences) 
  11.     mean_absolute_differences = absolute_differences.mean() 
  12.     return mean_absolute_differences 
  13. maemae_val = mae(y_hat, y_true) 
  14. print ("mae error is: " + str(mae_val)) 

3. 平均偏差誤差(mean bias error)

與其它損失函數相比,這個函數在機器學習領域沒有那么常見。它與 MAE 相似,唯一的區別是這個函數沒有用絕對值。用這個函數需要注意的一點是,正負誤差可以互相抵消。盡管在實際應用中沒那么準確,但它可以確定模型存在正偏差還是負偏差。

數學公式:

平均偏差誤差

二、分類損失

1. Hinge Loss/多分類 SVM 損失

簡言之,在一定的安全間隔內(通常是 1),正確類別的分數應高于所有錯誤類別的分數之和。因此 hinge loss 常用于***間隔分類(maximum-margin classification),最常用的是支持向量機。盡管不可微,但它是一個凸函數,因此可以輕而易舉地使用機器學習領域中常用的凸優化器。

數學公式:

SVM 損失(Hinge Loss)

思考下例,我們有三個訓練樣本,要預測三個類別(狗、貓和馬)。以下是我們通過算法預測出來的每一類的值:

Hinge loss/多分類 SVM 損失

計算這 3 個訓練樣本的 hinge loss:

  1. ## 1st training example 
  2. max(0, (1.49) - (-0.39) + 1) + max(0, (4.21) - (-0.39) + 1) 
  3. max(0, 2.88) + max(0, 5.6) 
  4. 2.88 + 5.6 
  5. 8.48 (High loss as very wrong prediction) 
  6. ## 2nd training example 
  7. max(0, (-4.61) - (3.28)+ 1) + max(0, (1.46) - (3.28)+ 1) 
  8. max(0, -6.89) + max(0, -0.82) 
  9. 0 + 0 
  10. 0 (Zero loss as correct prediction) 
  11. ## 3rd training example 
  12. max(0, (1.03) - (-2.27)+ 1) + max(0, (-2.37) - (-2.27)+ 1) 
  13. max(0, 4.3) + max(0, 0.9) 
  14. 4.3 + 0.9 
  15. 5.2 (High loss as very wrong prediction) 

交叉熵損失/負對數似然:

這是分類問題中最常見的設置。隨著預測概率偏離實際標簽,交叉熵損失會逐漸增加。

數學公式:

交叉熵損失

注意,當實際標簽為 1(y(i)=1) 時,函數的后半部分消失,而當實際標簽是為 0(y(i=0)) 時,函數的前半部分消失。簡言之,我們只是把對真實值類別的實際預測概率的對數相乘。還有重要的一點是,交叉熵損失會重重懲罰那些置信度高但是錯誤的預測值。

  1. import numpy as np 
  2. predictions = np.array([[0.25,0.25,0.25,0.25], 
  3.                         [0.01,0.01,0.01,0.96]]) 
  4. targets = np.array([[0,0,0,1], 
  5.                    [0,0,0,1]]) 
  6. def cross_entropy(predictions, targets, epsilon=1e-10): 
  7.     predictions = np.clip(predictions, epsilon, 1. - epsilon) 
  8.     N = predictions.shape[0] 
  9.     ce_loss = -np.sum(np.sum(targets * np.log(predictions + 1e-5)))/N 
  10.     return ce_loss 
  11. cross_entropycross_entropy_loss = cross_entropy(predictions, targets) 
  12. print ("Cross entropy loss is: " + str(cross_entropy_loss)) 

【本文是51CTO專欄機構“機器之心”的原創文章,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2018-06-21 15:17:15

機器學習

2017-04-18 15:49:24

人工智能機器學習數據

2016-01-28 19:58:43

創業IT建設

2020-06-08 07:00:00

數據安全加密機密計算

2023-11-29 14:34:15

機器學習統計學

2021-05-22 23:08:08

深度學習函數算法

2024-06-27 00:46:10

機器學習向量相似度

2016-08-30 13:23:26

DevOpsOpenStackIaaS

2024-11-05 12:56:06

機器學習函數MSE

2025-01-06 05:00:00

人工智能GPU深度學習

2018-06-26 09:24:02

流量陷阱費用

2022-10-28 15:19:28

機器學習距離度量數據集

2023-03-30 08:00:56

MySQL日期函數

2020-05-08 07:00:00

Linux色碼文件類型

2021-05-08 05:40:32

Excel數據技巧

2010-04-01 09:46:04

Oracle日期函數

2011-08-05 15:32:44

2023-04-11 08:49:42

排序函數SQL

2022-06-30 08:31:54

排序函數SQL

2012-02-13 22:50:59

集群高可用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人av在线播放 | 久久久久久久久久久久91 | 精彩视频一区二区三区 | 中文字幕一区二区三区四区五区 | 国产精品一区二区视频 | 国产视频二区 | 天天操夜夜操 | 国产激情视频在线观看 | 99精品视频一区二区三区 | 九色网址| 亚洲一区 中文字幕 | 午夜影院在线视频 | 精品少妇一区二区三区在线播放 | 一区中文字幕 | 免费看国产一级特黄aaaa大片 | 精品视频一区二区 | 日韩a在线 | 久久91精品久久久久久9鸭 | 一级一级毛片免费看 | 日韩看片 | 亚洲另类视频 | 国内精品视频 | 欧美一区二区免费 | 亚洲福利网 | 久久久久久久一区 | 国产在线视频一区二区 | 97视频网站| 久久久av | 久在线 | 中文字幕精品一区二区三区精品 | 亚洲乱码一区二区 | 91xxx在线观看 | 精品一区二区三区av | 日韩激情在线 | 久久人人网 | 欧美精品在线播放 | 一区二区三区免费在线观看 | 97精品国产97久久久久久免费 | 国产精品一区二区av | 国产一区二区三区视频 | 日韩欧美精品一区 |