【问题标题】:How to make sense (handle) when computes logarithm of zero in prior information在先验信息中计算零的对数时如何理解(处理)
【发布时间】:2015-08-24 17:01:55
【问题描述】:

我从事图像分类工作。我正在使用一种称为先验概率的信息(在贝叶斯规则中)。它的范围在[0,1]. 并且需要对数计算。但是,如您所知,零数的对数是 Inf。 例如,给定图像I (size 3 by 3) 中的像素x,其成本函数为

Cost(x)=30+log(prior(x))

其中prior是一个矩阵3 by 3

prior=[  0  0  0.5;
         1  1  0.2;
       0.4  0    0]
I    =[  1  2    3;
         4  5    6;
         7  8    9]

然后我想计算x=1 的成本

cost(x=1)=30+log(0)

现在,log(0)Inf。然后结果cost(x=1)Inf。基于我的假设,prior=0 表示给定像素属于背景,prior=1 表示给定像素属于前景。

我的问题是如何计算log(prior) 满足我的假设。

我正在使用 Matlab 来执行此操作。我认为 log(0) 变成非常小的负值。我只是将它设置为-9 作为我的代码

%% Handle with log(0)
prior(prior==0.0) = NaN; 
%% Compute log
log_prior=log(prior);
%% Assume that e^-9 very near 0.
log_prior(isnan(log_prior)) = -9; 

更新:明确我在做什么。让我们看看贝叶斯规则。我的任务是如何分配给定像素 x 属于背景(BG)或前景(FG)。这取决于概率

P(x∈BG|x)=P(x|x∈BG)P(x∈BG)/P(x)

其中P(x|x∈BG)是似然函数,假设它是由高斯分布逼近的,P(x∈BG)是先验项,P(x)是常数,可以忽略

使用最大后验 (MAP) 估计,我们可以将上述方程映射到对数空间(以解决高斯函数中的指数)

Cost(x)=log(P(x∈BG|x))=log(P(x|x∈BG))+log(P(x∈BG))

为简单起见,假设log(P(x|x∈BG))=30log(P(x∈BG))log(prior),那么我的成本函数可以重写为

Cost(x)=30+log(prior(x))

现在的问题是先验在[0,1] 内,那么它的对数是-Inf。正如chepner所说,我们可以将eps值添加为

log(prior+eps)

但是,log(eps) 是一个更大的负数。它会影响我的成本函数(也变成非常大的负数)。然后我的成本函数(30) 中的第一项变得不必要了。基于我的假设 log(x)=1 那么像素 x 将是 BG 而prior(x)=1 将是 FG。计算成本函数时如何处理我的日志(之前)?

【问题讨论】:

  • 0 的对数实际上是无穷大,因为它随着 x 接近 0 无限减小。
  • 是的。我知道。但是,当我用贝叶斯规则计算它时。当prior = 0时如何考虑该术语作为我的成本函数
  • 是否存在某个区间(0, eps],您知道prior(x) 的值永远不会下降?也就是说,如果prior(x) 不为零,那么它至少会是eps?如果是这样,请选择 log(eps) 作为 log(prior) 可以返回的最小值。否则,我看不出你给定的成本函数如何处理一个任意小的输入值,它不会给你一个比你为prior(x)==0“选择”的值更小的值。
  • 在 Matlab 中,log(0) 返回-Inf,因此可以根据需要使用或替换它。这个问题,顺便说一句,不是 Matlab 问题 - 这是一个标准的“编程入门”问题,通过使用 -Inf 或在记录日志之前将 eps 添加到所有输入数据中,很容易解决
  • @user8430 我的观点是您的选择在很大程度上取决于您将记录的预期值,或者您选择的负无穷大替代值不能保证小于任何值的“真实”日志值。

标签: matlab image-processing computer-vision bayesian


【解决方案1】:

在摆弄 Matlab 之前,正确的做法是尝试理解您的问题。问问自己“先验概率消失意味着什么?”。答案由贝叶斯定理给出,其中一种形式是:

posterior = likelihood * prior / normalization

因此,根据定义,先验为零的地方是您确定您的事件(您正在计算其概率的事物)不会发生的地方,无论它们明显的可能性(即“成本”)如何。所以它们对你来说并不有趣。您只需认识到这一点并跳过它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2019-03-19
    • 2011-07-02
    • 2023-03-08
    • 2021-06-19
    • 2023-03-30
    相关资源
    最近更新 更多