信息最大化(Information Maximization)

信息最大化在目標域無標簽的域自適應任務中,它迫使模型在沒有真實標簽的情況下,對未標記數據產生高置信度且類別均衡的預測。此外,這些預測也可以作為偽標簽用于自訓練。

例如,在目標域沒有標簽時,信息最大化損失可以應用于目標域數據,使模型適應目標域并產生有意義的預測,緩解源域和目標域之間的分布偏移。在自訓練或生成模型中,信息最大化通過要求整體預測分布均衡,有效防止模型將所有樣本都預測到少數幾個類別上。

信息最大化損失函數

信息最大化的損失函數可以表達為[1]:
L I M = L e n t + L d i v = H ( Y ∣ X ) ? H ( Y ) \begin{align} \mathcal{L}_{IM} &= \mathcal{L}_{ent}+\mathcal{L}_{div} \\ &= H(Y|X)-H(Y) \end{align} LIM??=Lent?+Ldiv?=H(YX)?H(Y)??

式中, H ( Y ∣ X ) H(Y|X) H(YX)模型預測輸出標簽的信息熵,最小化條件熵讓模型的預測P(Y|X)更加自信。 H ( Y ) H(Y) H(Y)是預測類別標簽的邊緣熵,由于損失前面有個負號,則需要最大化邊緣熵,迫使模型預測的各個類別均勻分布,而不是偏向其中某個類別。

信息最大化本質是最大化預測標簽 Y Y Y 與輸入 X X X 的互信息 I ( X ; Y ) = H ( Y ) ? H ( Y ∣ X ) I(X;Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)?H(YX),因此 L I M = ? I ( X ; Y ) \mathcal{L}_{IM} = -I(X;Y) LIM?=?I(X;Y)。最小化該損失等價于提升輸入與預測標簽之間的互信息。

① 熵最小化損失 (Entropy Minimization)
L e n t = ? E x ∑ c = 1 C δ c ( f ( x ) ) log ? δ c ( f ( x ) ) \begin{align} \mathcal{L}_{ent} = -\mathbb{E}_x \sum_{c=1}^C \delta_c(f(x)) \log \delta_c(f(x)) \end{align} Lent?=?Ex?c=1C?δc?(f(x))logδc?(f(x))??

式中, f ( x ) f(x) f(x)表示模型的預測輸出, δ c \delta_c δc?是softmax函數,代表樣本 x x x是類別 c c c的概率值。

② 多樣性最大化損失 (Diversity Regularization)
L d i v = ? ( ? ∑ c = 1 C p ^ c log ? p ^ c ) = ∑ c = 1 C p ^ c log ? p ^ c \begin{align} \mathcal{L}_{div} &=-(- \sum_{c=1}^C \hat{p}_c \log \hat{p}_c)\\ &= \sum_{c=1}^C \hat{p}_c \log \hat{p}_c \end{align} Ldiv??=?(?c=1C?p^?c?logp^?c?)=c=1C?p^?c?logp^?c???

其中, p ^ c = 1 N ∑ i = 1 N p i c \hat{p}_c=\frac{1}{N}\sum_{i=1}^{N}p_{ic} p^?c?=N1?i=1N?pic?表示類別 c c c在整個批次上的平均預測概率,也就是類別 c c c的邊緣分布。注意:在數學上, P ( Y = c ) P(Y=c) P(Y=c)的邊緣概率應該為 P ( Y = c ) = ∑ i = 1 N P ( X = x i , Y = c ) P(Y = c) = \sum_{i=1}^N P(X = x_i, Y = c) P(Y=c)=i=1N?P(X=xi?,Y=c),這里采用的均值而非總和,即采用批次均值 p ^ c \hat{p}_c p^?c? 作為無偏估計。

總結

  • 最小化條件熵 H ( Y ∣ X ) H(Y|X) H(YX):迫使模型對每個目標域樣本做出確定性預測。
  • 最大化邊緣熵 H ( Y ) H(Y) H(Y):確保模型在整個目標域上的預測類別分布均勻,防止坍縮到少數類。

代碼

import torch
import torch.nn as nn
import torch.nn.functional as Fclass IMLoss(nn.Module):def __init__(self, lambda_div=0.1, eps=1e-8):"""信息最大化損失函數:無監督學習范式Args:lambda_div (float): 多樣性損失的權重系數,默認0.1eps (float): 數值穩定項,防止log(0),默認1e-8"""super().__init__()self.lambda_div = lambda_divself.eps = epsdef forward(self, logits):"""計算信息最大化損失Args:logits (torch.Tensor): 模型輸出的logits張量,形狀為(batch_size, num_classes)Returns:torch.Tensor: 計算得到的總損失值"""# 計算softmax概率probs = F.softmax(logits, dim=1)# 1. L_ent: 熵最小化損失,使預測更確定entropy_per_sample = -torch.sum(probs * torch.log(probs + self.eps), dim=1)entropy_loss = torch.mean(entropy_per_sample)# 2. L_div: 多樣性最大化損失, 使類別分布均勻mean_probs = torch.mean(probs, dim=0) # 邊緣分布,由于樣本是獨立同分布的,這里考慮概率的平均值而非總和diversity_loss = -torch.sum(mean_probs * torch.log(mean_probs + self.eps))# L_IM總損失total_loss = entropy_loss - self.lambda_div * diversity_lossreturn total_lossnum_classes=3
bs=2logits = torch.randn(bs, num_classes) # 模型輸出的邏輯值:model(x)
loss_fn = IMLoss()
loss = loss_fn(logits)

知識點

邊緣分布/邊際分布 (Marginal distribution)定義[2]:Given a known joint distribution of two discrete random variables, say, X X X and Y Y Y, the marginal distribution of either variable – X X X for example – is the probability distribution of X X X when the values of Y Y Y are not taken into consideration.
p X ( x i ) = ∑ j p ( x i , y j ) , p Y ( y j ) = ∑ i p ( x i , y j ) p_X(x_i)=\sum_jp(x_i,y_j),\\ p_Y(y_j)=\sum_i p(x_i,y_j) pX?(xi?)=j?p(xi?,yj?),pY?(yj?)=i?p(xi?,yj?)

案例:

如下表所示,一個批次有3個樣本,類別為4,對應的隨機變量Y的邊緣分布為最后一行。

y 1 y_1 y1? y 2 y_2 y2? y 3 y_3 y3? y 4 y_4 y4? p X ( x ) p_X(x) pX?(x)
x 1 x_1 x1? 4 32 \frac{4}{32} 324? 2 32 \frac{2}{32} 322? 1 32 \frac{1}{32} 321? 1 32 \frac{1}{32} 321? 8 32 \frac{8}{32} 328?
x 2 x_2 x2? 3 32 \frac{3}{32} 323? 6 32 \frac{6}{32} 326? 3 32 \frac{3}{32} 323? 3 32 \frac{3}{32} 323? 15 32 \frac{15}{32} 3215?
x 3 x_3 x3? 9 32 \frac{9}{32} 329? 0 0 0 0 0 0 0 0 0 9 32 \frac{9}{32} 329?
p Y ( y ) p_Y(y) pY?(y) 16 32 \frac{16}{32} 3216? 8 32 \frac{8}{32} 328? 4 32 \frac{4}{32} 324? 4 32 \frac{4}{32} 324? 32 32 \frac{32}{32} 3232?

參考

[1] [2002.08546] Do We Really Need to Access the Source Data? Source Hypothesis Transfer for Unsupervised Domain Adaptation

[2] Marginal distribution - Wikipedia

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

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

相關文章

AUTOSAR實戰教程--標準協議棧實現DoIP轉DoCAN的方法

目錄 軟件架構 關鍵知識點 第一:PDUR的緩存作用 第二:CANTP的組包拆包功能 第三:流控幀的意義 配置過程 步驟0:ECUC模塊中PDU創建 步驟1:SoAD模塊維持不變 步驟2:DoIP模塊為Gateway功能添加Connection ?步驟3:DoIP模塊為Gateway新增LA/TA/SA ?步驟4:PDUR模…

設備驅動與文件系統:05 文件使用磁盤的實現

從文件使用磁盤的實現邏輯分享 我們現在講第30講,內容是文件使用磁盤的具體實現,也就是相關代碼是如何編寫的。上一節我們探討了如何從字符流位置算出盤塊號,這是文件操作磁盤的核心。而這節課,我們將深入研究實現這一核心功能的…

【PCIe總線】-- inbound、outbound配置

PCI、PCIe相關知識整理匯總 【PCIe總線】 -- PCI、PCIe相關實現 由之前的PCIe基礎知識可知,pcie的組成有:RC(根節點)、siwtch(pcie橋)、EP(設備)。 RC和EP,以及EP和EP能…

20250607在榮品的PRO-RK3566開發板的Android13系統下實現長按開機之后出現插入適配器不會自動啟動的問題的解決

20250607在榮品的PRO-RK3566開發板的Android13系統下實現長按開機之后出現插入適配器不會自動啟動的問題的解決 2025/6/7 17:20 緣起: 1、根據RK809的DATASHEET,短按開機【100ms/500ms】/長按關機,長按關機。6s/8s/10s 我在網上找到的DATASHE…

AIGC 基礎篇 Python基礎 02

1.bool類型 書接上回,我們上次最后講了三大數據類型,除了這三個之外,Python也有bool類型,也就是True和False。 a 2 print(a1) print(a2) 像這里,輸出的內容第一個是False,因為a的值為2,而第…

華為大規模——重塑生產力

華為大模型通過以下幾個方面重塑生產力: 提供強大算力支持 華為致力于構建領先的昇騰人工智能算力平臺,推出高性能昇騰AI集群,支持月級長期穩定訓練,可靠性業界領先。同時打造開放的昇騰計算平臺,兼容主流算子、框…

iOS上傳應用包錯誤問題 “Invalid bundle. The “UIInterfaceOrientationPortrait”“

引言 在開發 iOS 應用的整個生命周期中,打包上傳到 App Store 是一個至關重要的步驟。每一次提交,Xcode 都會在后臺執行一系列嚴格的校驗流程,包括對 Info.plist 配置的檢查、架構兼容性的驗證、資源完整性的審查等。如果某些關鍵項配置不當…

【計算機組成原理】緩沖技術SPOOLing技術

緩沖技術 單緩沖區:初始:工作區滿,緩沖區空 每塊用時max(處理時間, 輸入時間) 傳送時間雙緩沖區:先裝1,1滿才裝2。初始:工作區空,1空,2滿 每塊用時max(處理時間, 傳送時間) 輸入時…

給網站添加live2d看板娘

給網站添加live2d看板娘 參考文獻: stevenjoezhang/live2d-widget: 把萌萌噠的看板娘抱回家 (ノ≧?≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 網站環境如下,文章也主…

web端rtmp推拉流測試、抽幀識別計數,一鍵式生成巡檢報告

本文旨在實現無人機城市交通智慧巡檢中的一個模塊——無人機視頻實時推拉流以及識別流并在前端展示,同時,統計目標數量以及違停數量,生成結果評估,一并發送到前端展示。對于本文任何技術上的空缺,可在博主主頁前面博客…

基于自適應虛擬諧波阬的光儲VSG并網電流諧波抑制模型

“電氣仔推送”獲得資料(專享優惠) 模型簡介 此模型完全復現于《基于自適應虛擬阻抗的光儲并網系統諧波抑制策略》-程靜 此并網系統模型的核心控制為虛擬同步發電機(VSG)控制,采用基于混合廣義積分器的諧波信號提取…

【RockeMQ】第2節|RocketMQ快速實戰以及核?概念詳解(二)

升級Dledger高可用集群 一、主從架構的不足與Dledger的定位 主從架構缺陷 數據備份依賴Slave節點,但無自動故障轉移能力,Master宕機后需人工切換,期間消息可能無法讀取。Slave僅存儲數據,無法主動升級為Master響應請求&#xff…

【會員專享數據】2017-2024年我國分省的10米精度土地覆蓋數據

土地覆蓋數據是我們在各項研究中都非常常用的數據,之前我們分享過2017-2024年全球范圍的10米精度土地覆蓋數據(均可查看之前的文章獲悉詳情)!該數據提供瓦片形式,也就是全球的數據沒有拼成一張圖,很多小伙伴…

通過css實現正方體效果

效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* css實…

Java并發編程-理論基礎

Java并發編程-理論基礎 1、什么是進程&#xff1f; 進程&#xff08;Process&#xff09;是計算機中的程序關于某數據集合上的一次運行活動&#xff0c;是系統進行資源分配的基本單位&#xff0c;是操作系統結構的基礎。在早期面向進程設計的計算機結構中&#xff0c;進程是程…

Tornado WebSocket實時聊天實例

在 Python 3 Tornado 中使用 WebSocket 非常直接。你需要創建一個繼承自 tornado.websocket.WebSocketHandler 的類&#xff0c;并實現它的幾個關鍵方法。 下面是一個簡單的示例&#xff0c;演示了如何創建一個 WebSocket 服務器&#xff0c;該服務器會接收客戶端發送的消息&a…

模塊化架構下的前端調試體系建設:WebDebugX 與多工具協同的工程實踐

隨著前端工程化的發展&#xff0c;越來越多的項目采用模塊化架構&#xff1a;單頁面應用&#xff08;SPA&#xff09;、微前端、組件化框架等。這類架構帶來了良好的可維護性和復用性&#xff0c;但也帶來了新的調試挑戰。 本文結合我們在多個模塊化項目中的真實經驗&#xff…

高考:如何合理選擇學科、專業以及職業

如何合理選擇學科、專業以及職業 一、自我認知&#xff1a;明確自身興趣與優勢&#xff08;一&#xff09;興趣探索&#xff08;二&#xff09;能力評估&#xff08;三&#xff09;價值觀與目標 二、外部調研&#xff1a;深入了解學科、專業與職業&#xff08;一&#xff09;學…

【新品解讀】一板多能,AXRF49 定義新一代 RFSoC FPGA 開發平臺

“硬件系統龐雜、調試周期長” “高頻模擬前端不穩定&#xff0c;影響采樣精度” “接收和發射鏈路難以同步&#xff0c;難以擴展更多通道” “數據流量大&#xff0c;處理與存儲跟不上” 這些是大部分客戶在構建多通道、高頻寬的射頻采樣鏈路時&#xff0c;面臨的主要問題。…

實現仿中國婚博會微信小程序

主要功能&#xff1a; 1、完成底部標簽導航設計、首頁海報輪播效果設計和宮格導航設計&#xff0c;如圖1所示 2、在首頁里&#xff0c;單擊全部分類宮格導航的時候&#xff0c;會進入到全部分類導航界面&#xff0c;把婚博會相關內容的導航集成到一個界面里&#xff0c;如圖2…