1.研究概况
- Prolog :1972年,一种描述性的程序设计语言(逻辑程序),以一阶谓词逻辑为理论基础,语法上可以表示为一阶谓词逻辑的Horn 子句集。用户只需要编写程序的逻辑部分,而控制部分由计算机自动完成。prolog程序基本语法
- probabilistic logic programming:1992年,R.Ng,提出了第一个概率逻辑程序框架,并在此框架中对概率信息进行描述,同时研究了这种语言的固定点语义。形式:对一般的逻辑程序中的每个原子附加一个概率值
- PRISM : 1995年,提出了著名的分布语义:
- Problog:2007年,对Prolog的扩展,即每条逻辑程序前加上了其概率 Problog官网,它使用了
1.PRISM中的分布语义:
2.DNF
3.二叉决策图:
2.概率选择
不同的概率逻辑程序选用的概率选择的算法不同,但目的是相同的,即获得可能的世界的一个较好的分布。如PRISM中的二进制开关函数:bsw(ID,N,R),在一个描述一个人的血型如何被来自父母的基因决定的程序中,bsw函数的应用为:
获得可能的世界的一个分布后,和bsw相关的参数可以通过优化算法如EM算法被计算出来,使得该结果下的可能的世界的联合分布概率最大。
4.推理
- SUCC任务:该任务是计算基查询q成功的概率,表示为:SUCC(q) = P(q),其中, P(q)=
- MARG任务:该任务是在计算给定条件 下,求每个基原子q的边缘概率,其表示为:
- MPE任务:该任务是找到一个最有可能世界,在该世界中,使条件e成立,其表示为:
其中U是在Herbrand基中不出现在e中的所有原子构成的集合。 - 精确推理:大多数的精确推理方法都被认为是对蕴含感兴趣查询q的所有可能世界的谓词逻辑表示进行推理。这
类方法将可能世界定义成一个析取范式(以下简称DNF),其定义如下:
该式可以对应到前面分布语义的公式中,用析取符号替换求和符号,用合取符号替换乘号,用随机变量的真值替换概率