focal loss的引入主要是為了解決難易樣本數量不平衡(注意,有區別於正負樣本數量不平衡)的問題,實際可以使用的範圍非常廣泛,為了方便解釋,還是拿目標檢測的應用場景來說明:
單階段的目標檢測器通常會產生高達100k的候選目標,只有極少數是正樣本,正負樣本數量非常不平衡。我們在計算分類的時候常用的損失——交叉熵的公式如下:
但這並不能解決全部問題。根據正、負、難、易,樣本一共可以分為以下四類:
儘管 alpha 平衡了正負樣本,但對難易樣本的不平衡沒有任何幫助。而實際上,目標檢測中大量的候選目標都是像下圖一樣的易分樣本。
這些樣本的損失很低,但是由於數量極不平衡,易分樣本的數量相對來講太多,最終主導了總的損失。而本文的作者認為,易分樣本(即,置信度高的樣本)對模型的提公升效果非常小,模型應該主要關注與那些難分樣本(這個假設是有問題的,是ghm的主要改進物件)
這時候,focal loss就上場了!
乙個簡單的思想:把高置信度§樣本的損失再降低一些不就好了嗎!
舉個例, [公式] 取2時,如果 [公式] , [公式] ,損失衰減了1000倍!
focal loss的最終形式結合了上面的公式(2). 這很好理解,公式(3)解決了難易樣本的不平衡,公式(2)解決了正負樣本的不平衡,將公式(2)與(3)結合使用,同時解決正負難易2個問題!
最終的focal loss形式如下:
實驗表明[公式] 取2, [公式] 取0.25的時候效果最佳。
這樣以來,訓練過程關注物件的排序為正難》負難》正易》負易。
這就是focal loss,簡單明瞭但特別有用。
5分鐘理解onecache hash演算法
onecahce中的hash演算法有兩種 onecache自帶演算法 twemproxy的ketama演算法 可以實現和twemproxy的直接切換。hash函式通過配置檔案中的root節點的hash屬性配置。如果需要用twemproxy的ketama演算法,則配置twemproxy mode 1。...
5分鐘理解transformer模型位置編碼
bert模型是自然語言處理方面里程碑式的進步,其核心是transformer層,而transformer採用自注意力編碼器摒棄了迴圈網路,迴圈網路天生的順序資訊在自注意力編碼器中沒有了,而語言往往是順序不同意思相差很大。所以transformer的作者設計了一種三角函式位置編碼方式,為每個不同位置的...
5分鐘搞懂 session與cookie
無狀態協議的意思是服務端與客戶端不會記錄任何一次通訊的資訊。諾蘭有一部電影 記憶碎片 說的是乙個有 短期記憶喪失症 的人根據自己支離破碎的記憶來找到殺害自己妻子的 的故事。因為記不住發生的事,電影中那個老兄只能靠寫字條幫忙記錄事情。無狀態協議的通訊雙方就是 失憶症患者 而且是永久性的。服務端君 和 ...