聊一聊计算机视觉中的KL散度

简介: KL散度(Kullback-Leibler Divergence)是一种衡量两个概率分布差异的非对称度量,在计算机视觉中有广泛应用。本文介绍了KL散度的定义和通俗解释,并详细探讨了其在变分自编码器(VAE)、生成对抗网络(GAN)、知识蒸馏、图像分割、自监督学习和背景建模等领域的具体应用。通过最小化KL散度,这些模型能够更好地逼近真实分布,提升任务性能。

聊一聊计算机视觉中的KL散度

B站:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com)

博客:肆十二-CSDN博客

问答:(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com)

KL散度的定义:

KL散度(Kullback-Leibler Divergence,库尔贝克-莱布勒散度)是一种用于衡量两个概率分布之间差异的非对称度量。给定两个概率分布 (P(x)) 和 (Q(x)),其中 (P(x)) 是真实分布,(Q(x)) 是近似分布,KL散度的定义为:
$$ D_{KL}(P || Q) = \sum_{x} P(x) \log\left(\frac{P(x)}{Q(x)}\right) $$
对于连续分布,定义为:
$$ D_{KL}(P || Q) = \int P(x) \log\left(\frac{P(x)}{Q(x)}\right) dx $$
这里:

  • (P(x)) 是真实的概率分布,通常表示事物的真实情况。
  • (Q(x)) 是用于近似 (P(x)) 的分布,通常是某种假设模型。
  • (D_{KL}(P || Q)) 是 (P) 和 (Q) 之间的KL散度,用于衡量两个分布之间的差异。

KL散度是非负的,且只有当 (P = Q) 时,KL散度才为0。KL散度并不对称,即
$$ D_{KL}(P || Q) \neq D_{KL}(Q || P) $$

通俗解释:

你可以把KL散度想象成一种“信息损失”的度量。当我们用一个近似的分布 (Q(x)) 来描述真实分布 (P(x)) 时,KL散度告诉我们因为这种近似导致了多少信息损失。

举个例子,假设你想描述一群人的身高分布,实际的分布是 (P(x)),但你手头只有一个简单的模型 (Q(x)) 来进行估计。KL散度衡量的是你的估计((Q(x)))与实际情况((P(x)))之间有多大的差异。差异越大,KL散度越大,说明你的模型 (Q(x)) 越不符合真实分布,信息损失越大。

形象比喻:

假设你在看一部电影,电影的剧情真实分布是 (P(x)),但你提前得到了一个剧透(近似分布 (Q(x))),KL散度衡量的是剧透和实际剧情的差异。如果剧透和实际剧情差不多(即 (P(x)) 和 (Q(x)) 很接近),那么你几乎没有“损失”什么信息。如果剧透跟实际剧情完全不一样,KL散度就会很大,意味着你对剧情的理解有很大偏差。

KL散度在很多机器学习和信息论中的应用场景,尤其在深度学习中的自监督学习、生成模型等领域,用来衡量两个概率分布之间的距离。

KL散度在计算机视觉得应用

在计算机视觉领域,KL散度被广泛应用于各种任务中,特别是在概率建模、深度学习和生成模型中。以下是KL散度在计算机视觉中的几个常见应用场景:

1. 变分自编码器(Variational Autoencoder, VAE)

变分自编码器是深度学习中生成模型的一个重要方法,它广泛应用于图像生成、图像重建等任务中。KL散度在VAE中的关键作用是帮助学习潜在空间中的概率分布。

VAE中的KL散度:
在VAE中,模型试图学习一种潜在的隐变量分布 (q(z|x))(给定输入图像 (x) 的潜在变量分布)来逼近一个先验分布 (p(z))(通常为高斯分布)。KL散度用于衡量这两个分布之间的差异,即:
$$ D_{KL}(q(z|x) || p(z)) $$
通过最小化KL散度,VAE能够使隐变量的分布 (q(z|x)) 尽可能接近先验分布 (p(z)),从而在图像生成和重建中保证潜在空间的合理性和连续性。

应用:

  • 图像生成:VAE能够生成逼真的图像,生成过程中KL散度起到了让潜在空间保持一致性的重要作用。
  • 图像重建:通过最小化KL散度,VAE可以有效重建输入图像,从而在压缩或去噪任务中表现优异。

2. GAN中的KL散度

生成对抗网络(Generative Adversarial Networks, GANs)是另一类广泛用于图像生成的模型。虽然传统GAN中KL散度并不是核心部分,但在一些GAN的变体(如Wasserstein GAN等)中,KL散度被用作衡量生成图像分布与真实图像分布的差异。

GAN变体中的KL散度:
某些生成对抗模型通过最小化生成图像分布 (Q(x)) 和真实图像分布 (P(x)) 之间的KL散度来提高生成图像的质量。

应用:

  • 图像生成:KL散度用于保证生成器生成的图像能够尽量逼近真实图像分布,从而提升生成图像的逼真度和多样性。

3. 知识蒸馏(Knowledge Distillation)

在计算机视觉的模型压缩任务中,知识蒸馏是一种常见的技术,KL散度在此发挥了重要作用。在知识蒸馏过程中,我们有一个大的“教师模型”和一个较小的“学生模型”,KL散度用于衡量学生模型输出的概率分布与教师模型输出的概率分布之间的差异。

知识蒸馏中的KL散度:
在知识蒸馏中,KL散度用于引导学生模型学习教师模型的知识。具体来说,学生模型输出的概率分布 (Q(x)) 和教师模型输出的概率分布 (P(x)) 之间的差异通过KL散度来最小化:
$$ D_{KL}(P || Q) $$
通过最小化这个散度,学生模型能够在保持较小参数量的同时,尽量接近教师模型的性能。

应用:

  • 模型压缩:KL散度帮助小模型(学生模型)学习大模型(教师模型)的知识,从而在计算资源有限的设备上部署更高效的计算机视觉模型,如移动设备上的目标检测或分类任务。

4. 图像分割中的分类损失

在图像分割任务中,特别是多类别分割,模型输出的每个像素点都对应一个概率分布,表示它属于不同类别的概率。在这种情况下,KL散度可以用来作为损失函数,衡量预测的概率分布和真实类别分布之间的差异。

分割中的KL散度:
给定每个像素点的真实类别分布 (P(x)) 和模型预测的类别分布 (Q(x)),KL散度可以用于度量两者的差异,作为优化模型的目标函数。

应用:

  • 语义分割:通过KL散度,模型能够在像素级别上更加准确地匹配真实类别的分布,提升语义分割的准确性。

5. 自监督学习

在自监督学习中,模型通过设计一些预训练任务来学习有效的图像特征,而无需依赖大量的标注数据。KL散度在这些预训练任务中被用来衡量不同视角、不同变换下的图像之间的分布差异。

自监督任务中的KL散度:
通过最小化KL散度,模型能够学习在不同数据变换下保持一致的特征表示。这在无监督图像分类、目标检测等任务中非常有用。

应用:

  • 无监督表示学习:KL散度可以帮助模型学习鲁棒的特征表示,从而在后续的监督任务中表现出更强的泛化能力。

6. 背景建模和运动检测

在视频分析和运动检测任务中,背景建模是一个常见问题。常用的高斯混合模型(GMM)用于建模像素的背景分布,而KL散度则用来衡量像素的当前分布与背景分布之间的差异。

背景建模中的KL散度:
当某个像素的当前分布与背景模型的分布之间的KL散度较大时,意味着该像素可能是前景物体的一部分,可以用于检测运动物体。

应用:

  • 视频监控:在监控摄像头场景中,KL散度可以帮助识别运动中的物体,尤其是在复杂的动态背景下,提供更加精确的前景分割。

总结

KL散度在计算机视觉领域有广泛的应用,尤其在生成模型、模型压缩、概率建模等任务中。它在模型的优化过程中起到核心作用,用于衡量两个概率分布的差异,帮助模型提高生成图像的质量、压缩模型的性能,以及在自监督学习和背景建模中提升任务表现。

目录
相关文章
|
11月前
|
机器学习/深度学习 存储 自然语言处理
简单聊一聊大模型微调技术-LoRA
LoRA(Low-Rank Adaptation)是一种用于减少大模型微调中参数数量和计算资源的技术。通过引入低秩分解,LoRA 仅更新少量参数,从而显著降低显存消耗和计算需求。适用于大规模预训练模型的微调、跨领域迁移学习、低资源设备部署和多任务学习等场景。例如,在微调 BERT 模型时,LoRA 可以仅调整约 0.1% 的参数,保持与全量微调相近的性能。
1376 0
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
11440 57
|
机器学习/深度学习 算法 数据挖掘
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
1186 0
|
自然语言处理 算法 数据挖掘
自蒸馏:一种简单高效的优化方式
背景知识蒸馏(knowledge distillation)指的是将预训练好的教师模型的知识通过蒸馏的方式迁移至学生模型,一般来说,教师模型会比学生模型网络容量更大,模型结构更复杂。对于学生而言,主要增益信息来自于更强的模型产出的带有更多可信信息的soft_label。例如下右图中,两个“2”对应的hard_label都是一样的,即0-9分类中,仅“2”类别对应概率为1.0,而soft_label
自蒸馏:一种简单高效的优化方式
Latex更改字体颜色以及快速生成 SCI 论文的 revised version 和 pure version
Latex更改字体颜色以及快速生成 SCI 论文的 revised version 和 pure version
Latex更改字体颜色以及快速生成 SCI 论文的 revised version 和 pure version
|
机器学习/深度学习 人工智能 数据可视化
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
我们引入了一个高效计算的CNN结构名字叫做shuffleNet,这个结构被设计用来解决部署算力非常有限的移动设备问题,这个新的结构使用了两个新的操作,pointwise group convolution 和 channel shuffle能够在极大减少计算量的同时保持一定的精度。我们在ImageNet classification和MS COCO目标检测数据集上做实验论证了ShuffleNet和其他的结构相比有着很好的性能。比如,相比于mobilenet,shufflenet在ImageNet 分类任务上有着更低的top-1错误率(错误率是7.8%)需要的计算量为40MFLOPs。在一个AR
3076 0
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
|
7月前
|
人工智能 自然语言处理 数据可视化
Agentic Reasoning:推理界RAG诞生!牛津大学框架让LLM学会『组队打怪』:动态调用搜索/代码代理,复杂任务准确率飙升50%
Agentic Reasoning 是牛津大学推出的增强大型语言模型(LLM)推理能力的框架,通过整合外部工具提升多步骤推理、实时信息检索和复杂逻辑关系组织的能力。
271 1
|
11月前
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
393 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
|
11月前
|
传感器 编解码 资源调度
聊一聊计算机视觉中的高斯分布
高斯分布,又称正态分布,是概率统计中常见的分布形式。在计算机视觉领域,高斯分布被广泛应用于图像噪声建模、高斯滤波、特征表示、背景建模及高斯核密度估计等方面,是许多图像处理算法的核心。通过高斯分布,可以有效处理噪声、平滑图像、提取特征及建模背景,提升算法性能。
2323 0
|
8月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
2029 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现