gpt4 book ai didi

c - Baum Welch 算法中的 Gamma 和浮点精度

转载 作者:太空狗 更新时间:2023-10-29 15:04:04 25 4
gpt4 key购买 nike

我目前正在尝试用 C 语言实现 Baum Welch 算法,但我遇到了以下问题:gamma 函数:

gamma(i,t) = alpha(i,t) * beta(i,t) / sum over `i` of(alpha(i,t) * beta(i,t))

不幸的是,对于足够大的观察集,随着 t 的增加,alpha 迅速下降到 0,随着 t 的减少,beta 迅速下降到 0,这意味着,由于四舍五入向下,从来没有一个点 alpha 和 beta 都非零,这使得事情变得相当成问题。

有没有办法解决这个问题,还是我应该尝试提高值的精度?我担心如果我尝试这种方法,问题可能会再次出现,因为每次观察 alpha 和 beta 下降大约一个数量级。

最佳答案

您应该在对数空间中进行这些计算,通常所有概率模型的计算:

lg_gamma(i, t) = (lg_alpha(i, t) + lg_beta(i, t)
- logsumexp over i of (lg_alpha(i, t) + lg_beta(i, t)))

其中lg_gamma(i, t)表示gamma(i, t)等的对数,logsumexpthe function described here。在计算结束时,如果需要,您可以使用 exp 转换为概率(通常只需要显示概率,但即使有日志也可能更可取)。

对数的底数并不重要,只要你处处使用相同的底数即可。我更喜欢自然对数,因为 loglog2 相比节省了输入 :)

关于c - Baum Welch 算法中的 Gamma 和浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com