一、focal_loss代碼
def binary_focal_loss(gamma=2.0, alpha=0.25): def binary_focal_loss_fixed(y_true, y_pred): """ y_true shape need same as y_pred shape """ epsilon = K.epsilon() y_pred = K.clip(y_pred, epsilon, 1.0 - epsilon) p_t = y_true * y_pred + (1 - y_true) * (1 - y_pred) alpha_factor = y_true * alpha + (1 - y_true) * (1 - alpha) modulating_factor = K.pow(1.0 - p_t, gamma) return -K.sum(alpha_factor * modulating_factor * K.log(p_t), axis=-1) return binary_focal_loss_fixed
focal loss代碼通過使用keras庫來創建一個二分類的focal loss函數。在pseudo-Huber損失函數的基礎上,利用指數函數來加強焦點。對於y_true=1和y_true=0,alpha參數會對真正和假正誤差進行賦值。同樣的,gamma參數會調整損失函數的幾何形狀。
二、focal loss實際並不好用
focal loss實際上並不如預期那樣好用。一些研究人員在實驗中發現,雖然focal loss在框架用例數據集上的結果要優於標準的交叉熵損失,但在其他數據集上可能會產生比標準交叉熵損失更差的結果。這個原因主要是focal loss只關注於未被正確分類的樣本,忽略掉了其他已被正確分類的樣本,因此會產生過擬合的問題。
三、focalloss缺點
focal loss最大的缺點之一就是需要經過不斷的實驗才能確定最優的gamma和alpha參數,而這對於很多工程師或者是研究人員來說是一件非常耗時的過程。此外,focal loss在樣本不平衡和分布移位(distribution shift)的時候也會出現問題,這是因為gamma和alpha參數不穩定,它們往往取決於數據的分布情況。
四、focalloss改進
為了解決focal loss所面臨的問題,學者們提出了一些改進。比如在目標檢測中,RetinaNet提出的focal loss可以通過多層監督來加強難分類樣本的訓練,而自適應分類的半監督focal loss則可以根據每個類別數據的分布自適應性地進行alpha和gamma參數的調整。
五、focal loss函數
根據最初的論文,focal loss函數可以表示如下:
FL(p_t)=-α(1−p_t)^γ * log(p_t)
其中,p_t是正確分類的概率,α是正向權重,γ是焦距參數。可以看到,當γ=0並且α=0.25時,公式會退化成標準的二元交叉熵損失函數。
六、focalloss損失函數
focal loss應用在分類任務中時,可以通過將其作為損失函數來優化模型。下面是一個圖像分類的focal loss示例:
from keras import backend as K def categorical_focal_loss(gamma=2.0, alpha=0.25): def focal_loss_fixed(y_true, y_pred): """ Multi-class Focal loss for imbalanced data """ epsilon = K.epsilon() y_pred = K.clip(y_pred, epsilon, 1.0 - epsilon) y_true = K.one_hot(tf.cast(y_true, tf.int32), y_pred.shape[1]) pt = y_true * y_pred + (1 - y_true) * (1 - y_pred) alpha_t = y_true * alpha + (1 - y_true) * (1 - alpha) loss = -K.sum(alpha_t * K.pow(1.0 - pt, gamma) * K.log(pt),axis=-1) return loss return focal_loss_fixed model = Sequential() model.add(Dense(num_classes, activation='softmax', input_shape=input_shape)) model.compile(optimizer='adam', loss=categorical_focal_loss(gamma=2., alpha=.25), metrics=['accuracy'])
七、focal選取
最後,被稱為有效的優化方案之一的樣本調整技術可以用來解決focal loss在樣本不均衡的情況下產生過擬合的問題。樣本調整可以通過減輕訓練數據中的類別不平衡性來消除過擬合。
原創文章,作者:RZLN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150134.html