(1) 问题的简单版本:
如何计算 log(P1+P2+...+Pn),给定 log(P1), log(P2), ..., log(Pn),而不需要任何项的 exp 来得到原始 Pi。我不想得到原始的 Pi,因为它们非常小,可能会导致数字计算机下溢。
(2) 长版问题:
我正在使用贝叶斯定理来计算条件概率 P(Y|E)。
P(Y|E) = P(E|Y)*P(Y) / P(E)
我有一千个概率相乘。
P(E|Y) = P(E1|Y) * P(E2|Y) * ... * P(E1000|Y)
为了避免计算机数值下溢,我使用 log(p) 并计算 1000 log(p) 的总和,而不是计算 1000 p 的乘积。
log(P(E|Y)) = log(P(E1|Y)) + log(P(E2|Y)) + ... + log(P(E1000|Y))
但是,我还需要计算 P(E),即
P(E) = sum of P(E|Y)*P(Y)
log(P(E))
不等于 log 的总和(P(E|Y)*P(Y))
。log(P(E))
如果不解决P(E|Y)*P(Y)
(它们是非常小的数字)并添加它们,我应该如何获得。