信息最大化(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=Exc=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=1Cp^clogp^c)=c=1Cp^clogp^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=N1i=1Npic表示类别 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=1NP(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)=jp(xi,yj),pY(yj)=ip(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.tpcf.cn/news/908690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…