1

私は計算する必要がある線形補間を使用しています:
p' = \lambda_1*p_1 + \lambda_2*p_2 + \lambda_3*p_3.

ただし、p_1、p_2、p_3 は同時確率であるため、アンダーフローにより float として表現できません。そこでlog2(p_1)、 、log2(p_2)、およびを取得して、ログ スペースで作業しますlog2(p_3)

p'確率のログを考えると、またはを計算する方法がよくわかりませんlog2(p')log2(p_1* \lambda_1)なども必要に応じて計算します。

4

1 に答える 1

0

通常のアプローチは、最大の項を見つけて、その合計を修正時間として計算することです。さらに詳細に

q[i] = log( lambda[i]) + log( p[i])) i = 1..
we want Q = log( exp( q[1]) + exp(q[2]) + .. )
let the largest q[i] be q[j], then we get 
Q = log( ( exp( q[1]-q[j]) + exp( q[1]-q[j]) + ..) * exp(q[j]))
  = q[j] + log( exp( q[1]-q[j]) + exp( q[1]-q[j]) + ..)

第 2 項の評価では、すべての q[i]-q[j] が負であるため、オーバーフローは発生しません。アンダーフローが発生するほど負の値がある場合は、項の 1 つ ( exp( q[j]-q[j]) ) が 1 になるため、無視してください。

于 2016-04-06T13:44:59.213 に答える