计算 P(R|H,L,F)=P(H|R)P(L|R)P(F|R,H)。 其中相应概率值可以查条件概率表 。 由于上述例子只有一个未知随机变量 , 所以不用迭代 。 更一般的 , 使用贝叶斯网...
- 对所有可观察随机变量节点用观察值实例化;对不可观察节点实例化为随机值 。P(y|wi)=αP(y|Parents(y))∏jP(sj|Parents(sj))
- 对DAG进行遍历 , 对每一个不可观察节点y , 计算 , 其中 wi 表示除 y 以外的其它所有节点 ,α 为正规化因子 ,sj 表示 y 的第 j 个子节点 。
- 使用第三步计算出的各个y作为未知节点的新值进行实例化 , 重复第二步 , 直到结果充分收敛 。
- 将收敛结果作为推断值 。以上只是贝叶斯网络推理的算法之一 , 另外还有其它算法 , 这里不再详述 。
1、确定随机变量间的拓扑关系 , 形成DAG 。 这一步通常需要领域专家完成 , 而想要建立一个好的拓扑结构 , 通常需要不断迭代和改进才可以 , 需要用到机器学习得到 。
2、训练贝叶斯网络 。 这一步也就是要完成条件概率表的构造 , 如果每个随机变量的值都是可以直接观察的 , 像我们上面的例子 , 那么这一步的训练是直观的 , 方法类似于朴素贝叶斯分类 。 但是通常贝叶斯网络的中存在隐藏变量节点 , 那么训练方法就是比较复杂 , 例如使用梯度下降法 。
优化的贝叶斯网络结构要保证它产生的序列从头到尾的可能性最大 , 如果用概率做度量 , 就是后验概率最大 。 当然可以搜索所有可能的路径 , 但是会是一个NP-Hard问题 。 一般采用贪心算法 , 在每一步时沿着箭头方向寻找有限步 , 贪心容易陷入局部最优 。 为防止局部最优 , 采用蒙特卡洛方法 , 用许多随机数在贝叶斯网络中试试 , 看看是否陷入局部最优 , 但计算量较大 。 最近 , 新的方法是利用互信息 , 只保留互信息较大的节点的直接连接 , 然后再对简化的网络进行完备的搜索 , 找到全局优化的结构 。
而节点之间弧的权重确定可以通过最大后验估计来得到 , 使用EM(expectation-maximization process)过程来解决 。
一般的 , 参数和结构的交替训练的 , 先优化结构 , 再优化参数 , 然后再优化结构...直至得到收敛或者误差足够小的模型 。
参考文献:
吴军 《数学之美》
张洋 《算法杂货铺——分类算法之贝叶斯网络(Bayesian networks) 》
—THE END—
? 劝你别再闷头自学NLP了!!!请收下这套自然语言处理(NLP)算法学习路线!
? 数学家比10个师更有威力?| 美国在第二次世界大战中胜利的原因之一
? 耶鲁校长:这才是判断一个人受过教育的铁证!
? 趣文 | π里包含了所有可能的数字组合吗?
? 我们计划招收300名数学算法爱好者 , 免费系统学习傅立叶变换
? 泰勒级数的物理意义
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
