假設各位都知道並了解  Cross Entropy 是什麼的前提下,

這篇文章主要提到 Focal Loss ,一種基於  Cross Entropy 的改進方法。


Cross Entropy 的簡介


主要改進兩個方向:


  1. Data imbalanced
  2. Difficulty sample in weight ( Focal Loss )

首先我們先來比較 Cross Entropy 與 Focal Loss 的 function:

CE vs FL


如上圖所見, 
Alpha 負責解決 Data imbalancedGamma 負責解決 Difficulty sample 的問題。
  • Alpha
講解 Alpha 之前,先讓我們了解什麼是 Data imbalanced
Data imbalanced 就是關於你的資料集,如果每個類別的樣本分布不均,
這樣模型就容易被樣本多的類別所決定。
模型被牽著鼻子走 -> 樣本少的類型容易分不好 -> 分類精準度就會遇到瓶頸。
像是 Modelnet40 就有這種問題。

所以 Alpha 是一個 Vector ,把 Alpha 乘回原本該進去 CE 的分佈機率表,
便可以用來來平衡樣本少與樣本多的類別。
(個人是使用 總樣本數 / 該類別樣本數,作為該類別的 Alpha t 值)


(但是如果你在一些優秀的公家機構,
    他們會花整整兩個月找工讀生,並用人工增加樣本少的樣本數,
    以達到 Data balanced這種工人智慧實在是讓我嘆為觀止。
    所以說數學很重要對吧?
     PS. 我絕對沒有說花試所會這麼做。)




  • Gamma


Gamma 就比較難解釋了,
首先假設分類網路分對且高信心(i.e. 好分類樣本)的情況下
  ( assume y = 1 , p = 0.8 , gamma = 1):


原始的 CE 給出的 Loss 會是: -log(p) ~ 0.096
改進後的 FL 給出的 Loss 會是: (-1) * (1-p)^gamma * log(p) ~ 0.019


而在分類網路分對且低信心度(i.e. 難分類樣本)的情況下
  ( assume y = 1 , p = 0.2 , gamma = 1 )
原始的 CE 給出的 Loss 會是: -log(p) ~ 0.698
改進後的 FL 給出的 Loss 會是: (-1) * (1-p)^gamma * log(p) ~ 0.559

在高信心度分類正確情況下,FL 的 Loss 會更低,
在低信心度分類正確情況下,FL 的 Loss 會更低,
這代表 FL 比 CE 更好對嗎?

如果妳到目前為止覺得我說的超對!
身高又超過 160、長髮過肩,麻煩聯絡我: wuyiulin@gmail.com

無論在哪個城市,我總是知道哪間牛排館最好吃。
只差一位無條件支持我的另一半!



分類網路分錯且低信心度(i.e. 難分類樣本)的情況下
  ( assume y = 1 , p = 0.2 , gamma = 1 )
原始的 CE 給出的 Loss 會是: -log(p) ~ 0.698
改進後的 FL 給出的 Loss 會是: (-1) * (1-p)^gamma * log(p) ~ 0.559

哇靠,怎麼 FL 給出的 Loss 比較低?
難分類的就算了,如果好分類的分錯怎麼辦?
分類網路分錯且高信心度(i.e. 好分類樣本)的情況下
  ( assume y = 1 , p = 0.8 , gamma = 1 )
原始的 CE 給出的 Loss 會是: -log(p) ~ 0.096
改進後的 FL 給出的 Loss 會是: (-1) * (1-p)^gamma * log(p) ~ 0.019

將近四倍的 Loss 值,超級優秀。


原論文中 gamma 值是 Hyperparameter
參照下所畫的曲線。 



結論:

個人覺得 FL 的 Gamma 部分比較適合在精確度已經 push 到很極端的模型。
但是 Alpha vector 看起來倒是通用沒問題。


如果本篇數學部分推導有任何錯誤,
歡迎聯絡:wuyiulin@gmail.com




References







By wuyiulin

喜歡騎單車的影像算法工程師

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *