Subclass-balancing Contrastive Learning for Long-tailed Recognition

Subclass-balancing Contrastive Learning for Long-tailed Recognition

核心公式解析

L S B C L = ? ∑ i = 1 N ( 1 ∣ M ~ i ∣ ∑ z p ∈ M ~ i log ? exp ? ( z i ? z p ? / τ 1 ) ∑ z a ∈ V ~ i exp ? ( z i ? z a ? / τ 1 ) + β 1 ∣ P ~ i ∣ ? ∣ M i ∣ ∑ z p ∈ P ~ i / M i log ? exp ? ( z i ? z p ? / τ 2 ) ∑ z a ∈ V ~ i / M i exp ? ( z i ? z a ? / τ 2 ) ) \begin{align*} & \mathcal{L}_{S B C L}=-\sum_{i=1}^{N}\left(\frac{1}{\left|\tilde{M}_{i}\right|} \sum_{z_{p} \in \tilde{M}_{i}} \log \frac{\exp \left(z_{i} \cdot z_{p}^{\top} / \tau_{1}\right)}{\sum_{z_{a} \in \tilde{V}_{i}} \exp \left(z_{i} \cdot z_{a}^{\top} / \tau_{1}\right)}\right. \\ & \left.+\beta \frac{1}{\left|\tilde{P}_{i}\right|-\left|M_{i}\right|} \sum_{z_{p} \in \tilde{P}_{i} / M_{i}} \log \frac{\exp \left(z_{i} \cdot z_{p}^{\top} / \tau_{2}\right)}{\sum_{z_{a} \in \tilde{V}_{i} / M_{i}} \exp \left(z_{i} \cdot z_{a}^{\top} / \tau_{2}\right)}\right) \tag{4} \end{align*} ?LSBCL?=?i=1N? ? ?M~i? ?1?zp?M~i??logza?V~i??exp(zi??za??/τ1?)exp(zi??zp??/τ1?)?+β ?P~i? ??Mi?1?zp?P~i?/Mi??logza?V~i?/Mi??exp(zi??za??/τ2?)exp(zi??zp??/τ2?)? ??(4)?

公式4里面的負號是針對里面的兩項的
所以,它有兩個意思:

  • term1: 針對相同簇標簽的實例之間的對比損失。這部分損失函數在計算時,比較了當前實例 x i x_i xi?和同一簇中的正樣本 z p z_p zp?之間的相關性。具體而言,它通過計算它們的內積,并初一一個溫度參數 τ 1 \tau_1 τ1?來衡量它們的相似度,然后利用softmax函數來計算它們之間的相對概率。整個損失函數的目標是使同一簇中的實例在特征空間中更加接近。

  • term2: 針對不同簇中的相同類別標簽實例之間的對比損失。這部分損失函數考慮了當前實例 x i x_i xi?和其他不在同一簇中的同一類別標簽的正樣本 z p z_p zp?之間的相關性。與第一部分不同的是,這里通過將同一類別標簽的實例從損失計算中排除來確保實例的多樣性。同樣,這部分也利用內積和softmax函數來計算相對概率

  • 超參數 b e t a beta beta在公式中用于平衡這兩部分損失。它可以調整兩種損失對模型訓練的影響程度,以便更好地優化特征空間。第二部分的損失函數的目的是促使不同簇中的同一類別標簽實例之間在特征空間中更加相似,以幫助模型更好地學習到數據的結構和特征。

綜上所述,這個公式的目的是通過結合簇標簽和類別標簽的對比損失來優化模型的特征表示,使得相同簇內的實例更加相似,同時確保不同簇中的同一類別標簽實例之間也能保持一定的相似度。

在公式4的第二部分中,通過將同一類別標簽的實例從損失計算中排除,即只考慮不在同一簇中的同一類別標簽的正樣本,從而促使模型在學習時注重實例的多樣性。具體來說,這種設計可以確保模型不會過于集中在同一簇內的實例之間的相似性,而是更加關注不同簇中的同一類別標簽實例之間的相似性。

通過排除同一簇中的實例,模型被迫在學習時關注不同簇中的實例之間的關系,從而更好地學習到數據的全局結構和特征。這種方法有助于提高模型的泛化能力,使其能夠更好地區分不同類別的實例,并增強對數據的表征能力。因此,通過排除同一簇中的實例,可以確保模型在學習時考慮到不同類別標簽之間的多樣性,從而提高模型的性能和表現。

也就是說“通過將同一類別標簽的實例從損失計算中排除,即只考慮不在同一簇中的同一類別標簽的正樣本,”這樣可以使得模型更加關注同一class的不同層次結構,而不是同一簇。把關注重心放在同一類,不同簇的層級結構上去。

是的,您理解的非常正確。通過將同一類別標簽的實例從損失計算中排除,即只考慮不在同一簇中的同一類別標簽的正樣本,有助于使模型更加關注同一類別的不同層次結構,而不是僅限于同一簇內的實例。這樣的設計可以幫助模型更好地理解和學習類別之間的層級結構和關系,從而提高模型對數據的表征能力和泛化能力。

通過重點關注同一類別標簽的不同簇中的實例之間的關系,模型可以更好地捕捉類別之間的多樣性和差異性,從而更好地區分不同類別。這種方法有助于模型學習到更加豐富和全面的數據特征,提高模型的性能和泛化能力。因此,將關注重心放在同一類別的不同層次結構上,而不僅限于同一簇內的實例,可以幫助模型更好地理解數據的類別結構和特征,從而提高模型的訓練效果。

溫度參數 τ \tau τ的作用

對于監督對比學習,溫度參數 τ \tau τ的大小會影響特征分布的懲罰程度。具體來說,當溫度較低時,對特征分布的懲罰較高,這實際上鼓勵特征更加集中分布在一起。隨著溫度的增加,相對懲罰趨向更加均勻,這會使得特征的分布更加均勻。

溫度參數 τ \tau τ在對比損失函數中的作用是控制樣本之間的相似性度量。較低的溫度值會增加樣本之間的差異性,導致特征更加集中在一起,因為相似的樣本對會更加突出,而不相似的樣本對會有更大的懲罰。這會導致特征分布更加尖銳,即特征更加集中在一些特定的區域。

相反,較高的溫度值會減少對樣本之間差異性的強調,導致更加均勻的特征分布。這是因為相似性度量相對均勻,不同樣本對之間的差異性減少,特征分布更加均勻。

因此,當溫度較小時,對比損失函數更加強調樣本之間的差異性,導致特征更加集中;而當溫度較大時,對比損失函數更加均勻化樣本之間的相似性度量,導致特征分布更加均勻。

溫度越低,feature distribution越緊致。為了使得同一subclass越緊致,那就讓 τ 1 < τ 2 \tau_1 < \tau_2 τ1?<τ2?

公式5解析

根據引用的參考文獻[40],對于類別 c c c,我們定義 ? ( c ) \phi(c) ?(c)如下所示:

? ( c ) = ∑ i = 1 n c ∣ z i ? t c ∣ 2 n c log ? ( n c + α ) (5) \phi(c)=\frac{\sum_{i=1}^{n_{c}}\left|z_{i}-t_{c}\right|{2}}{n{c} \log \left(n_{c}+\alpha\right)} \tag{5} ?(c)=nclog(nc?+α)i=1nc??zi??tc?2?(5)
? ( c ) \phi(c) ?(c)是用來衡量類別 c c c內實例與類別中心點之間的平均距離的度量。具體來說, ? ( c ) \phi(c) ?(c)的計算方式是將類別內每個實例與類別中心點的歐氏距離求和,然后除以類別中實例數量 n c n_c nc?和一個對數項,以此來表示平均距離。在公式中, t c t_c tc?代表類別 c c c的中心點, z i z_i zi?代表類別 c c c的實例, α \alpha α是一個超參數用于調節公式的縮放,確保 ? ( c ) \phi(c) ?(c)不會過大。

通過計算 ? ( c ) \phi(c) ?(c),我們可以了解類別 c c c內實例與類別中心點的平均距離,從而衡量類別內實例的聚集程度。如果 ? ( c ) \phi(c) ?(c)較小,則表示類別內實例更加緊密地聚集在一起;而如果 ? ( c ) \phi(c) ?(c)較大,則表示類別內實例分布較散,距離類別中心點較遠。

? ( c ) \phi(c) ?(c)的值被用來計算類別 c c c的溫度 τ 2 ( c ) \tau_{2}(c) τ2?(c),以便根據類別內實例的聚集程度調整溫度值,從而影響特征的分布,使得類別內實例的特征形成比子類別更松散的聚類。因此, ? ( c ) \phi(c) ?(c)在這里起到了指導調整溫度值以控制特征分布的作用。

其中, t c t_{c} tc?是類別 c c c的中心點(centroid), α \alpha α是一個超參數,用于確保 ? ( c ) \phi(c) ?(c)不會過大,而 z i z_{i} zi?對應于屬于類別 c c c的實例。從這個公式可以看出,如果當前到類別中心的平均距離較大,或者類別包含的數據較少,那么溫度將會被設置為較大的值,以便在訓練過程中采用類別 c c c的特征分布。接著,我們定義類別 c c c的溫度為:

τ 2 ( c ) = τ 1 ? exp ? ( ? ( c ) 1 C ∑ i = 1 C ? ( i ) ) (6) \tau_{2}(c)=\tau_{1} \cdot \exp \left(\frac{\phi(c)}{\frac{1}{C} \sum_{i=1}^{C} \phi(i)}\right) \tag{6} τ2?(c)=τ1??exp(C1?i=1C??(i)?(c)?)(6)

這樣, τ 2 ( c ) \tau_{2}(c) τ2?(c)對于類別標簽始終大于 τ 1 \tau_{1} τ1?對于簇標簽(因為 ? ( c ) > 0 \phi(c)>0 ?(c)>0),并且能反映類別中實例集中程度的當前水平。具體來說,提出的 τ 2 ( c ) \tau_{2}(c) τ2?(c)鼓勵類別 c c c中實例的特征形成比子類別更松散的聚類(通過 τ 2 ( c ) > τ 1 \tau_{2}(c)>\tau_{1} τ2?(c)>τ1?),同時自適應地調整溫度以避免過度松散或過度密集的聚類。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44431.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LiteOS增加執行自定義源碼

開發過程注意事項&#xff1a; 源碼工程路徑不能太長 源碼工程路徑不能有中文 一定要關閉360等殺毒軟件&#xff0c;否則編譯的打包階段會出錯 增加自定義源碼的步驟: 1.創建源碼目錄 2. 創建源文件 新建myhello目錄后&#xff0c;再此目錄下再新建源文件myhello_demo.c 3. 編…

程序員學長 | PyCaret,一個超強的 python 庫

本文來源公眾號“程序員學長”&#xff0c;僅用于學術分享&#xff0c;侵權刪&#xff0c;干貨滿滿。 原文鏈接&#xff1a;PyCaret&#xff0c;一個超強的 python 庫 今天給大家分享一個超強的 python 庫&#xff0c;PyCaret。 https://github.com/pycaret/pycaret 簡介 …

[論文筆記]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL

引言 今天帶來又一篇RAG論文筆記&#xff1a;RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL。 檢索增強語言模型能夠更好地適應世界狀態的變化并融入長尾知識。然而&#xff0c;大多數現有方法只能從檢索語料庫中檢索到短的連續文本片段&#xff0…

random.choices 的參數及其應用

random.choices 是 Python 的 random 模塊中的一個函數&#xff0c;用于從給定的序列中隨機選擇元素&#xff0c;可以設置權重。這個函數在需要根據特定概率分布進行隨機選擇的場景中非常有用。下面是 random.choices 的參數及其詳細介紹&#xff1a; 文章目錄 參數應用示例基本…

釋放序列和同步

#include <iostream> #include<thread> #include<atomic> #include<vector> std::atomic<int>count(0); std::vector<int>queue_data; //如果存儲操作被標記為memory_order_release、memory_order_acq_rel或memory_order_seq_cst&#xff…

FP5207+音頻功率放大器的組合解決方案-適用于便攜式音頻播放器、無線耳機、智能音箱和車載音響系統等高質量音頻輸出需求的產品,以提高電池供電的效率和輸出功率

隨著消費者對智能家居的需求增長&#xff0c;智能音響市場成為重要增長點。同時&#xff0c;音響技術也在不斷發展&#xff0c;音響及揚聲器的功能和性能不斷提升。 藍牙音箱&#xff0c;這類音箱供電是以鋰電池為主&#xff0c;一般選用內置升壓的音頻功放芯片&#xff0c;音響…

iOS input 標簽 focus 失效

解決方案 <inputv-if"show"ref"inputRef" />watch(inputRef, (ref) > {ref?.focus(); });

vivado DQS_BIAS

DQS_偏差 DQS_BIAS是驅動差分輸入緩沖器的頂級端口的屬性&#xff0c;或者 雙向緩沖基元&#xff08;IBUFDS、IOBUFDS&#xff09;。 DQS_BIAS屬性在某些的輸入端提供可選的DC偏置 偽差分I/O標準&#xff08;DIFF_SSTL&#xff09;和真差分I/O規范&#xff08;LVDS&#xff09;…

windows 構建nginx本地服務隨系統自啟

1.先去官網下載一個nginxzip 2.將zip解壓&#xff0c;將nginx-server.exe文件放入文件夾 3.創建nginx-server.xml&#xff0c;將以下內容放進文件內 <service> <id>nginx</id> <name>Nginx Service</name> <description>High Per…

強化學習中的蒙特卡洛算法和時序差分算法

在強化學習&#xff08;Reinforcement Learning, RL&#xff09;中&#xff0c;價值函數的估計是核心任務之一。蒙特卡洛&#xff08;Monte Carlo, MC&#xff09;方法和時序差分&#xff08;Temporal Difference, TD&#xff09;方法是兩種常用的策略&#xff0c;用于估計狀態…

軟件架構之架構風格

軟件架構之架構風格 9.3 軟件架構風格9.3.1 軟件架構風格分類9.3.2 數據流風格9.3.3 調用/返回風格9.3.4 獨立構件風格9.3.5 虛擬機風格9.3.6 倉庫風格 9.4 層次系統架構風格9.4.1 二層及三層 C/S 架構風格9.4.2 B/S 架構風格9.4.3 MVC 架構風格9.4.4 MVP 架構風格 9.5 面向服務…

機器學習筑基篇,?Ubuntu 24.04 編譯安裝 Python 及多版本切換

[ 知識是人生的燈塔&#xff0c;只有不斷學習&#xff0c;才能照亮前行的道路 ] Ubuntu 24.04 編譯安裝最新Python及多版本切換 描述&#xff1a;說到機器學習&#xff0c;人工智能&#xff0c;深度學習不免會提到Python這一門編程語言&#xff08;人生苦短&#xff0c;及時Pyt…

windows防火墻端口設置

PS&#xff1a;本文實例為Windows Server 2019&#xff0c;其他Windows版本大同小異。 1、首先打開windows防火墻&#xff0c;點擊“高級設置” 2、 高級設置界面 3、假設需要開放一個端口為3306應該怎么做 光標對準“入站規則”右鍵新建規則&#xff0c;選擇“端口” 協議這…

C++類和對象(一)

目錄 面向過程和面向對象 面向過程編程&#xff08;Procedural Programming&#xff09; 面向對象編程&#xff08;Object-Oriented Programming&#xff09; 一、類的定義 類定義格式 類域 二、類的訪問限定符及封裝 訪問限定符 封裝 三、實例化 實例化概念 對象大小…

軟件運行次數

題目&#xff1a; 實現一個驗證程序運行次數的小程序&#xff0c;要求如下&#xff1a; 當程序運行超過3次時給出提示&#xff1a;本軟件只能免費使用3次&#xff0c;歡迎您注冊會員后繼續使用&#xff5e;程序運行演示如下&#xff1a; 第一次運行控制臺輸出&#xff1a;歡迎…

常見WAF攔截頁面總結

(1) D盾 (2) 云鎖 (3) UPUPW安全防護 (4) 寶塔網站防火墻 (5) 網防G01 (6) 護衛神 (7) 網站安全狗 (8) 智創防火墻 (9) 360主機衛士或360webscan (10) 西數WTS-WAF (11) Naxsi WAF (12) 騰訊云 (13) 騰訊宙斯盾 (14) 百度云 圖片 (15) 華為云 (16) 網宿云 (17) 創宇盾 圖片 (…

ROS服務通信自定義srv

服務通信自定義srv 流程:創建ROS功能包按照固定格式創建srv文件編譯配置文件編譯生成中間文件 流程: srv 文件內的可用數據類型與 msg 文件一致&#xff0c;且定義 srv 實現流程與自定義 msg 實現流程類似&#xff0c;需查閱msg文件的可以瀏覽ROS話題通信流程自定義數據msg格式…

【服務器】在Linux查看運行的Python程序,并找到特定的Python程序

在Linux查看運行的Python程序并找到特定的Python程序 寫在最前面1. 使用ps命令查看所有Python進程查看詳細信息 2. 使用pgrep命令查找Python進程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python進程打開的文件 5. 使用nvidia-smi命令查看GPU使用情況…

JDBC編程的學習——MYsql版本

目錄 前言 什么是JDBC ??? 前置準備 使用JDBC的五個關鍵步驟 1.建立與數據庫的連接 2.創建具體的sql語句和Statement 3.執行SQL語句 4.處理結果集 5.釋放資源 完整流程展示 前言 筆者在先前的博客就提過會寫關于JDBC的內容 [Mysql] 的基礎知識和sql 語句.教你速成…

R包:reticulate R對python的接口包

介紹1 R和python是兩種不同的編程語言&#xff0c;前者是統計學家發明并且服務數學統計計算&#xff0c;后者則是最萬能的膠水語言。隨著大數據時代的到來&#xff0c;兩者在數據分析領域存在越來越多的共同點且可以相互使用&#xff0c;為了破解二者的編程壁壘&#xff0c;CR…