人工智能——实验二:医学知识表示与推理

一、实验目的

1、能够描述常见的医学知识表示方法,并能运用谓词逻辑表示法、产生式表示法和语义网络表示法进行医学知识的表示。

2、能够描述常见的确定性知识推理方法和不确定性知识推理方法的基本原理,并能运用产生式推理和可信度推理进行医学知识推理。

3、能够编写Python程序实现医学知识推理。

 

二、实验过程

1、知识表示

1、分别利用谓词逻辑表示法、产生式表示法和语义网络表示法,对以下知识进行表示:

1)患者病情表现为头项强痛、恶寒、脉浮,医生诊断为太阳病。

2)患者得了太阳病,并且还表现为项背拘急、汗出、恶风等症状,则诊断为桂枝加葛根汤证,可以采用发汗的治疗方法,采用桂枝加葛根汤进行治疗。

1)答:

谓词逻辑表示法:头痛(x) ∧ 恶寒(x) ∧ 脉浮(x) → 太阳病(x)

产生式表示法:IF 头痛 AND 恶寒 AND 脉浮 THEN 太阳病

语义网络表示法:

2)谓词逻辑表示法:太阳病(x) ∧ 项背拘急(x) ∧ 汗出(x) ∧ 恶风(x) → 桂枝加葛根汤证(x) ∧ 发汗治疗(x) ∧ 桂枝加葛根汤治疗(x)

产生式表示法:IF 太阳病 AND 项背拘急 AND 汗出 AND 恶风 THEN 桂枝加葛根汤证 AND 发汗治疗 AND 桂枝加葛根汤治疗

语义网络表示法:

2、可信度推理解题

2、基于以下的一组医学知识,请利用可信度推理进行解题:

r1:  IF  脉浮缓  THEN  脉浮  (1.0)

r2:  IF  头项强痛  AND  恶寒  AND  脉浮  THEN  太阳病  (0.9)

r3:  IF  太阳病  AND  发热  AND  汗出  THEN  太阳中风证  (0.7)

r4:  IF  太阳病  AND  烦闷  AND  汗出  THEN  太阳中风证  (0.6)

已知:CF(脉浮缓)=0.7,CF(头项强痛)=0.6,CF(恶寒)=0.8,CF(发热)=0.8,CF(汗出)=0.9,CF(烦闷)=0.6

求:CF(太阳中风证)=?

答:

CF(脉浮) = CF(脉浮缓) * 1.0 = 0.7

CF(太阳病) = min(CF(头项强痛), CF(恶寒), CF(脉浮)) * 0.9 = min(0.6, 0.8, 0.7) * 0.9 = 0.6 * 0.9 = 0.54

CF(太阳中风证) from r3 = min(CF(太阳病), CF(发热), CF(汗出)) * 0.7 = min(0.54, 0.8, 0.9) * 0.7 = 0.54 * 0.7 = 0.378

CF(太阳中风证) from r4 = min(CF(太阳病), CF(烦闷), CF(汗出)) * 0.6 = min(0.54, 0.6, 0.9) * 0.6 = 0.54 * 0.6 = 0.324

合并两条规则:CF(太阳中风证)=CF(r3)+CF(r4)×(1−∣CF(r3)∣)CF(太阳中风证) ==0.378+0.324×(1−0.378)=0.378+0.324×0.622=0.579

最终结果:CF(太阳中风证)=0.579

3、Python编程

3. 利用Python编程实现可信度推理,并将第2题的r1、r2、r3、r4等四条规则知识,以及初始事实集,输入程序,运行该程序得出推理结果。

# 定义规则及初始可信度
facts = {
    "脉浮缓": 0.7,
    "头项强痛": 0.6,
    "恶寒": 0.8,
    "发热": 0.8,
    "汗出": 0.9,
    "烦闷": 0.6,
}

# 规则
rules = [
    {"if": ["脉浮缓"], "then": "脉浮", "weight": 1.0},
    {"if": ["头项强痛", "恶寒", "脉浮"], "then": "太阳病", "weight": 0.9},
    {"if": ["太阳病", "发热", "汗出"], "then": "太阳中风证", "weight": 0.7},
    {"if": ["太阳病", "烦闷", "汗出"], "then": "太阳中风证", "weight": 0.6},
]


# 计算CF
def calculate_cf(facts, rules):
    def combine_cf(cf1, cf2): # 合并两条规则(结论不确定性的合成)
        return cf1 + cf2 * (1 - abs(cf1))

    updated_facts = facts.copy() # 每次循环都需要更新规则和可信度
    for rule in rules:
        condition_cf = min([updated_facts.get(cond, 0) for cond in rule["if"]]) # 可信度推理:证据不确定性的表示和计算
        result_cf = condition_cf * rule["weight"]
        if rule["then"] in updated_facts: # 判断是否存在一样的数据,需要进行规则的更新
            updated_facts[rule["then"]] = combine_cf(updated_facts[rule["then"]], result_cf)
        else:
            updated_facts[rule["then"]] = result_cf
    return updated_facts


# 执行推理
result = calculate_cf(facts, rules)
print("CF(太阳中风证) =", result.get("太阳中风证", 0))

 

三、知识补充

1、中医知识说明

(1)中医诊病:辩证论治

        首先辩证,辨别证据(四诊信息,望闻问切);然后论治(治则、治法、方药、针推)

(2)”证据“——症(症状、体征)

(3)疾病与证候:疾病是病情整个发生发展过程,证候是某一阶段的病理本质的概况,比如,太阳病包括太阳中风证、太阳伤寒证、表郁轻证等。

2、可信度推理

(1)概念:

        可信度是指人们根据以往经验对某个事物或现象为真的程度的一个判断,或者说是人们对某个事物或现象为真的相信程度。

        例如,沈强昨天没来上课,理由是头疼。就此理由,只有以下两种可能:一是真的头疼了,理由为真;二是没有头疼,理由为假。但就听话人而言,因不能确切知道,就只能某种程度上相信,即可信度。

(2)表示形式:

        在C-F模型中,知识是用产生式规则表示的,其一般形式为: IF E THEN H (CF(H, E)) 。其中,E是知识的前提条件;H是知识的结论;CF(H, E)是知识的可信度。

(3)MB和MD:

        在CF模型中,把CF(H, E)定义为CF(H, E)=MB(H, E)-MD(H, E),式中E是知识的前提条件; H是知识的结论;CF(H,E)是知识的可信度。

        MB称为信任增长度, MB(H, E)的定义

     MD称为不信任增长度, MD(H, E)的定义为

   (4)MB和MD的关系:

        当MB(H, E)>0时,有P(H|E)>P(H),即E的出现增加了H的概率

        当MD(H, E)>0时,有P(H|E)<P(H) ,即E的出现降低了H的概率

        根据前面对CF(H, E)可信度 、MB(H, E)信任增长度、MD(H, E)不信增 长度的定义,可得到CF(H, E)的计算公式:

3、证据不确定性的表示和计算

(1)基本证据:

        表示方法,用可信度,其取值范围也为[-1,1]。例如,CF(E) ,其含义:

        CF(E)= 1,证据E肯定它为真

        CF(E)= -1,证据E肯定它为假

        CF(E)= 0,对证据E一无所知

        0<CF(E)<1,证据E以CF(E)程度为真

        -1<CF(E)<0,证据E以CF(E)程度为假

(2)否定证据:

(3)组合证据:

        合取:E=E1 AND E2 AND … En时,若已知CF(E1),CF(E2),…,则 CF(E)=min{CF(E1), CF(E2), … ,CF(En)}

        析取:E=E1 OR E2 OR … En时,若已知CF(E1),CF(E2),…,则 CF(E)=max{CF(E1), CF(E2), … ,CF(En)}

4、不确定性的更新

(1)不确定性的更新公式:CF(H)=CF(H, E)×max{0, CF(E)}

        若CF(E)<0,则 CF(H)=0 ,即该模型没考虑E为假对H的影响。

        若CF(E)=1,则 CF(H)=CF(H,E) ,即规则强度CF(H,E)实际上是在E为真时,H的可信度。

5、结论不确定性的合成

设有知识:IF E1 THEN H (CF(H, E1))

IF E2 THEN H (CF(H, E2))

则结论H 的综合可信度可分以下两步计算:

(1)分别对每条知识求出其CF(H)。即

        CF1(H)=CF(H, E1) ×max{0, CF(E1)}

        CF2(H)=CF(H, E2) ×max{0, CF(E2)}

(2)用如下公式求E1与E2对H的综合可信度

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值