(1) 問題の単純なバージョン:
log(P1)、log(P2)、...、log(Pn) を指定して、元の Pi を取得するために項の式を使用せずに log(P1+P2+...+Pn) を計算する方法。元のPiは非常に小さく、数値計算のアンダーフローを引き起こす可能性があるため、取得したくありません。
(2) 問題の長いバージョン:
ベイズの定理を使用して、条件付き確率 P(Y|E) を計算しています。
P(Y|E) = P(E|Y)*P(Y) / P(E)
1000 倍の確率があります。
P(E|Y) = P(E1|Y) * P(E2|Y) * ... * P(E1000|Y)
コンピュータ数値のアンダーフローを避けるために、log(p) を使用して、1000 p の積を計算する代わりに 1000 log(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)