我想用Java编写贝叶斯网络,以便更好地理解它们。我找到了一些《人工智能:一种现代方法》(第3版)中的代码,也就是“AIMA”。
您建议我阅读并改编那里的代码来解决特定问题,还是应该如何开始?您能指导我如何使用这些代码吗?
回答:
如果你想学习,我认为没有必要看现有的代码。你自己动手做可能会学到更多。
一个好的起点是编写代码来执行以下操作:
-
从联合概率表中计算条件概率。
例如,从P(A,B,C)计算P(A|B)
-
从完整的条件概率集合中计算联合概率表。
例如,从P(A|B,C)*P(B)*P(C)计算P(A,B,C)。
-
给定一个有向无环图(DAG),计算A是否与B是d-分离的。
先用朴素的方法实现以上所有内容,然后再回过头来尝试提高效率。这应该能让你很好地理解什么是贝叶斯网络(条件概率表)以及它们的用途(概率推理)。