信息熵|atttion矩阵的注意力熵

2024-09-04 23:12

本文主要是介绍信息熵|atttion矩阵的注意力熵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

显著图可以看作是模型的注意力图,它标识了模型对输入图像某些区域的关注程度。我们使用 blob 区域(连通的显著区域)来检测模型关注的部分,然后计算这些区域的概率分布,再通过熵来衡量这些区域的“信息量”或“分散度”。

举个简单的例子:

Step 1: 假设有一个 4x4 的注意力图 x
x = [[0.1, 0.2, 0.4, 0.1],[0.1, 0.5, 0.3, 0.2],[0.7, 0.6, 0.2, 0.1],[0.1, 0.3, 0.4, 0.2]
]
Step 2: 计算均值 m

对于每个像素,我们可以计算注意力图 x 的均值。假设均值为:

m = mean(x) = 0.3
Step 3: 通过均值识别显著区域

我们认为那些大于均值 m 的区域更“显著”,所以创建一个二值掩码 B_mask

B_mask = [[0, 0, 1, 0],[0, 1, 1, 0],[1, 1, 0, 0],[0, 1, 1, 0]
]

 这张 4x4 的掩码图表示了显著区域的连通分量(blob),比如第 (0,2) 位置的 1 表示这个像素比均值大,因此是一个显著区域的一部分。

Step 4: 计算 blob 中的激活值和总值

现在我们需要计算这些 blob 的激活值。假设我们将 x 的显著区域重新计算(即通过 relu 操作),得到:

x_reactivated = [[0, 0, 0.1, 0],[0, 0.2, 0, 0],[0.4, 0.3, 0, 0],[0, 0.1, 0.2, 0]
]

然后我们计算每个 blob 的总激活值 p_u 和整个显著区域的总值 B

  • p_u 是每个连通区域内的激活值和掩码值相乘再求和。
  • B 是整个显著区域的总激活值。
假设:
  • p_u = [0.1, 0.2, 0.3, 0.4] 代表四个 blob 的激活值。
  • B = 1.0 是所有显著区域的总激活值。
Step 5: 计算每个 blob 的概率 p_n

每个 blob 的激活值 p_u 除以总值 B,得到它们的概率 p_n

p_n = p_u / B = [0.1 / 1.0, 0.2 / 1.0, 0.3 / 1.0, 0.4 / 1.0]= [0.1, 0.2, 0.3, 0.4]
Step 6: 计算熵 H

根据熵的公式:

H = - Σ (p_n * log(p_n))

我们将这些概率代入公式计算熵:

H = - (0.1 * log(0.1) + 0.2 * log(0.2) + 0.3 * log(0.3) + 0.4 * log(0.4))

逐步计算:

H ≈ - (0.1 * -2.3 + 0.2 * -1.61 + 0.3 * -1.2 + 0.4 * -0.92)
H ≈ - (-0.23 - 0.322 - 0.36 - 0.368)
H ≈ 1.28
Step 7: 计算损失

最后,将熵值除以样本数和注意力头的数量来计算最终损失。这个熵值代表模型在显著区域的分散度,值越高说明模型的关注越分散,值越低则说明模型更集中地关注特定区域

总结:

这个示例展示了如何通过注意力图计算显著区域的熵值,并以此作为损失函数的一部分来优化模型。高熵表示模型对多个区域的注意力分散,低熵则表示模型对少数区域的关注更集中。在实际应用中,目标是通过最小化熵来鼓励模型专注于特定的显著区域。

这篇关于信息熵|atttion矩阵的注意力熵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137300

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

【Tools】大模型中的自注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 自注意力机制(Self-Attention)是一种在Transformer等大模型中经常使用的注意力机制。该机制通过对输入序列中的每个元素计算与其他元素之间的相似性,

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

【Tools】大模型中的注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 在大模型中,注意力机制是一种重要的技术,它被广泛应用于自然语言处理领域,特别是在机器翻译和语言模型中。 注意力机制的基本思想是通过计算输入序列中各个位置的权重,以确

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

YOLOv8改进实战 | 注意力篇 | 引入CVPR2024 PKINet 上下文锚点注意力CAAttention

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

python科学计算:NumPy 线性代数与矩阵操作

1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 NumPy 的 array() 函数创建。矩阵的形状可以通过 shape 属性来访问。 import numpy as np# 创建一个 2x3 矩阵mat

【UVA】10003-Cutting Sticks(动态规划、矩阵链乘)

一道动态规划题,不过似乎可以用回溯水过去,回溯的话效率很烂的。 13988658 10003 Cutting Sticks Accepted C++ 1.882 2014-08-04 09:26:49 AC代码: #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include