Logit Adjust
Logit Adjust
BER
我們在分類問題中常用的誤分類函數(shù)使得分類器最終學(xué)到的分布:
P(y∣x)∝P(y)P(x∣y)P(y|x) \propto P(y)P(x|y) P(y∣x)∝P(y)P(x∣y)
假設(shè)在一個不平衡貓狗二分類問題中,狗是一個小類,只有整個數(shù)據(jù)集的1%的數(shù)據(jù)量。則P(y)=0.01P(y)=0.01P(y)=0.01,這樣無論P(x∣y)P(x|y)P(x∣y)有多大,右邊這一項都會很小。所以作者使用BER即banlance error rate,
首先舉一個例子方便快速理解BER的思想:
源地址
根據(jù)上面這個混淆矩陣有BER=0.5?(ba+b+cc+d)BER = 0.5 * (\frac{b}{a+b}+\frac{c}{c+d})BER=0.5?(a+bb?+c+dc?)通常的誤差計算公式則為ER=b+ca+b+c+dER=\frac{b + c}{a+b+c+d}ER=a+b+c+db+c?再看原文中給出的BER的公式:
BER(f)=1L∑y∈[L]Px∣y(y?argmaxy′∈y^fy′(x))BER(f) = \frac{1}{L}\sum_{y \in [L]}P_{x|y} (y \notin argmax_{y^{\prime} \in \hat{y}}f_{y^{\prime}}(x)) BER(f)=L1?y∈[L]∑?Px∣y?(y∈/?argmaxy′∈y^??fy′?(x))
y^\hat{y}y^?等價于原文中的花體y,有y^=[L]=1,2,…L.\hat{y}=[L]={1, 2, \dots L}.y^?=[L]=1,2,…L.上式右邊用人話翻譯過來就是“把所有(類別)yyy被分類器fy′(x)f_{y^\prime}(x)fy′?(x)誤分類的概率加起來,最后對類別數(shù)做平均”。精髓就在于誤差的計算是class-wise的,想想我們通常評估誤差率,都是用一個batch中,用誤分類樣本數(shù)batchsize\frac{誤分類樣本數(shù)}{batchsize}batchsize誤分類樣本數(shù)?來表示,這個時候分類器就可以偷懶,只要把所有樣本都預(yù)測為大類就可以在誤差率這個評價指標(biāo)上表現(xiàn)良好。一個問題在于,為甚么上式積分符號下面有一個”x∣yx|yx∣y”,這個條件函數(shù)的假設(shè)是怎么回事? 在我的理解中x是樣本,再結(jié)合最開始舉得例子,P(x∣y)=ba+bP(x|y) = \frac{b}{a+b}P(x∣y)=a+bb?左邊翻譯過來是“已知為類別y,則其為樣本x的概率”,右邊翻譯過來是“類別y的準(zhǔn)確率”,這兩者要怎么畫上等號呢?還請讀者不吝賜教。
BER鼓勵分類器學(xué)到的分布:
P(y∣x)∝1LP(x∣y)P(y|x) \propto \frac{1}{L}P(x|y) P(y∣x)∝L1?P(x∣y)
這樣分類器分類時就不會再受到不平衡數(shù)據(jù)集的影響。但是考慮另一個問題,如果狗這個小類中全部都是二哈,只有一個泰迪,那么分類器很可能會學(xué)到P(二哈∣狗)→1P(二哈|狗) \to 1P(二哈∣狗)→1,這相當(dāng)于一個不平衡子集的問題。
Logit Adjustment
最小化BER可以表述為f?∈argminf:x→RLBER(f)f^* \in argmin_{f:x \to R^{L}}BER(f)f?∈argminf:x→RL?BER(f),原文提到這個問題的一個典型的解是:“the best posible or Bayes-optimal score as following:”
上式右邊的等式與上一節(jié)中分析BER鼓勵分類器學(xué)習(xí)的分布的形式是一致的。文章中進(jìn)一步闡述,當(dāng)類別條件概率P(x∣y)P(x|y)P(x∣y)固定的時候,無論P(y)P(y)P(y)怎么變,模型都是無視的,這就直觀的解釋了,為什么BER可以用于解決類別不平衡的問題。
接著作者假設(shè)P(y∣x)∝exp(sy?(x))P(y|x) \propto exp(s^*_y(x))P(y∣x)∝exp(sy??(x)),其中s?:x→RLs^*:x \to R^Ls?:x→RL是一個記分器(scorer),用來把樣 本x映射為一個長度為L向量,向量中的每個元素表示分類器認(rèn)為該樣本屬于某一類的分?jǐn)?shù)。使用指數(shù)函數(shù)一是因為它本身是RnR^nRn上單調(diào)增的二是因為在外面套上對數(shù)函數(shù)之后可以把它消掉。同時根據(jù)定義有Pbal(y∣x)∝P(y∣x)/p(y)P^{bal}(y|x) \propto P(y|x)/p(y)Pbal(y∣x)∝P(y∣x)/p(y)。因此上面的長等式又可以表示為:
上式最后一項就是作者所謂的logit adjust。作者提出可以有兩種形式來執(zhí)行,其一是整合在loss函數(shù)中,其二是在測試的時候做后處理。第一種方式定義的損失函數(shù)如下:
tau默認(rèn)是1,也就是不起任何作用,作者給的推薦配置中也沒有對這個參數(shù)進(jìn)行修改。加1e-12應(yīng)該是為了數(shù)值穩(wěn)定性。
最后作者認(rèn)為自己的方法相對于之前的方法的優(yōu)勢之一是有堅實的統(tǒng)計學(xué)基礎(chǔ):最小化平衡誤差時保證了費(fèi)雪一致性(Fisher consistent)。關(guān)于這個性質(zhì)我的淺薄理解就是在一個采樣上{X}求得的函數(shù)f:X→θf:{X} \to \thetaf:X→θ,對于真實分布仍然適用。用人話來說就是,我這個函數(shù)可以根據(jù)這個采樣求得這個分布的一個未知參數(shù)θ\thetaθ,把這個函數(shù)放到真實分布上仍然是正確的,這樣我求的這個函數(shù)就可以以偏概全。
總結(jié)
以上是生活随笔為你收集整理的Logit Adjust的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DBNet详解
- 下一篇: docker镜像包制作