這篇文章將為大家詳細講解有關(guān)如何進行損失函數(shù)losses分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為滴道企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,滴道網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
一般來說,監(jiān)督學(xué)習(xí)的目標(biāo)函數(shù)由損失函數(shù)和正則化項組成。(Objective = Loss + Regularization)
對于keras模型,目標(biāo)函數(shù)中的正則化項一般在各層中指定,例如使用Dense的 kernel_regularizer 和 bias_regularizer等參數(shù)指定權(quán)重使用l1或者l2正則化項,此外還可以用kernel_constraint 和 bias_constraint等參數(shù)約束權(quán)重的取值范圍,這也是一種正則化手段。
損失函數(shù)在模型編譯時候指定。對于回歸模型,通常使用的損失函數(shù)是平方損失函數(shù) mean_squared_error。
對于二分類模型,通常使用的是二元交叉熵損失函數(shù) binary_crossentropy。
對于多分類模型,如果label是類別序號編碼的,則使用類別交叉熵損失函數(shù) categorical_crossentropy。如果label進行了one-hot編碼,則需要使用稀疏類別交叉熵損失函數(shù) sparse_categorical_crossentropy。
如果有需要,也可以自定義損失函數(shù),自定義損失函數(shù)需要接收兩個張量y_true,y_pred作為輸入?yún)?shù),并輸出一個標(biāo)量作為損失函數(shù)值。
對于keras模型,目標(biāo)函數(shù)中的正則化項一般在各層中指定,損失函數(shù)在模型編譯時候指定。
內(nèi)置的損失函數(shù)一般有類的實現(xiàn)和函數(shù)的實現(xiàn)兩種形式。
如:CategoricalCrossentropy 和 categorical_crossentropy 都是類別交叉熵損失函數(shù),前者是類的實現(xiàn)形式,后者是函數(shù)的實現(xiàn)形式。
常用的一些內(nèi)置損失函數(shù)說明如下。
mean_squared_error(平方差誤差損失,用于回歸,簡寫為 mse, 類實現(xiàn)形式為 MeanSquaredError 和 MSE)
mean_absolute_error (絕對值誤差損失,用于回歸,簡寫為 mae, 類實現(xiàn)形式為 MeanAbsoluteError 和 MAE)
mean_absolute_percentage_error (平均百分比誤差損失,用于回歸,簡寫為 mape, 類實現(xiàn)形式為 MeanAbsolutePercentageError 和 MAPE)
Huber(Huber損失,只有類實現(xiàn)形式,用于回歸,介于mse和mae之間,對異常值比較魯棒,相對mse有一定的優(yōu)勢)
binary_crossentropy(二元交叉熵,用于二分類,類實現(xiàn)形式為 BinaryCrossentropy)
categorical_crossentropy(類別交叉熵,用于多分類,要求label為onehot編碼,類實現(xiàn)形式為 CategoricalCrossentropy)
sparse_categorical_crossentropy(稀疏類別交叉熵,用于多分類,要求label為序號編碼形式,類實現(xiàn)形式為 SparseCategoricalCrossentropy)
hinge(合頁損失函數(shù),用于二分類,最著名的應(yīng)用是作為支持向量機SVM的損失函數(shù),類實現(xiàn)形式為 Hinge)
kld(相對熵損失,也叫KL散度,常用于最大期望算法EM的損失函數(shù),兩個概率分布差異的一種信息度量。類實現(xiàn)形式為 KLDivergence 或 KLD)
cosine_similarity(余弦相似度,可用于多分類,類實現(xiàn)形式為 CosineSimilarity)
自定義損失函數(shù)接收兩個張量y_true,y_pred作為輸入?yún)?shù),并輸出一個標(biāo)量作為損失函數(shù)值。
也可以對tf.keras.losses.Loss進行子類化,重寫call方法實現(xiàn)損失的計算邏輯,從而得到損失函數(shù)的類的實現(xiàn)。
下面是一個Focal Loss的自定義實現(xiàn)示范。Focal Loss是一種對binary_crossentropy的改進損失函數(shù)形式。
在類別不平衡和存在難以訓(xùn)練樣本的情形下相對于二元交叉熵能夠取得更好的效果。
詳見《如何評價Kaiming的Focal Loss for Dense Object Detection?》
https://www.zhihu.com/question/63581984
關(guān)于如何進行損失函數(shù)losses分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。