信息熵|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: 计算损失

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

总结:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值