日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Logit Adjust

發(fā)布時間:2023/12/29 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Logit Adjust 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Logit Adjust

BER

我們在分類問題中常用的誤分類函數(shù)使得分類器最終學(xué)到的分布:
P(y∣x)∝P(y)P(x∣y)P(y|x) \propto P(y)P(x|y) P(yx)P(y)P(xy)
假設(shè)在一個不平衡貓狗二分類問題中,狗是一個小類,只有整個數(shù)據(jù)集的1%的數(shù)據(jù)量。則P(y)=0.01P(y)=0.01P(y)=0.01,這樣無論P(x∣y)P(x|y)P(xy)有多大,右邊這一項都會很小。所以作者使用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]?Pxy?(y/?argmaxyy^??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|yxy”,這個條件函數(shù)的假設(shè)是怎么回事? 在我的理解中x是樣本,再結(jié)合最開始舉得例子,P(x∣y)=ba+bP(x|y) = \frac{b}{a+b}P(xy)=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(yx)L1?P(xy)
這樣分類器分類時就不會再受到不平衡數(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:xRL?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(xy固定的時候,無論P(y)P(y)P(y)怎么變,模型都是無視的,這就直觀的解釋了,為什么BER可以用于解決類別不平衡的問題。
  接著作者假設(shè)P(y∣x)∝exp(sy?(x))P(y|x) \propto exp(s^*_y(x))P(yx)exp(sy??(x)),其中s?:x→RLs^*:x \to R^Ls?:xRL是一個記分器(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(yx)P(yx)/p(y)。因此上面的長等式又可以表示為:
上式最后一項就是作者所謂的logit adjust。作者提出可以有兩種形式來執(zhí)行,其一是整合在loss函數(shù)中,其二是在測試的時候做后處理。第一種方式定義的損失函數(shù)如下:

def build_loss_fn(use_la_loss:bool, base_probs, tau=1.0):def loss_fn(logits, labels):if use_la_loss:logits = logits + torch.log(torch.tensor(base_probs**tau + 1e-12,dtype=torch.float32,device="cuda",).detach())loss = F.cross_entropy(logits, labels)return lossreturn loss_fn

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。