反向链接是什么?从目标出发倒推需要哪些条件的推理方法
反向链接(Backward Chaining),也叫反向推理、逆向推理或后向链接,是一种推理方法,常用于人工智能中的专家系统和规则引擎。它是一种目标驱动的推理方式:从要达成的目标或要证明的结论出发,反向地寻找能够推导出这个目标的规则和事实,一直追溯到已知的事实,从而判断目标是否成立。
它是怎么推理的
基于规则的系统中,知识通常以“如果……那么……”的规则形式存储,比如:“如果动物有羽毛,那么它是鸟”“如果动物是鸟并且会游泳并且不会飞,那么它是企鹅”。
假设我们想知道“这只动物是企鹅吗”,反向链接的推理过程是这样的:首先把“它是企鹅”作为目标;找到结论是“企鹅”的那条规则,它的条件是“是鸟、会游泳、不会飞”,于是这三个条件变成了新的子目标;接着检查每个子目标:“是鸟”这个子目标,又可以通过“有羽毛”这条规则来推导,于是“有羽毛”成为新的子目标;如此层层往下,直到子目标是已知的事实,或者可以直接向用户询问,比如“这只动物有羽毛吗”;如果所有的子目标都能被证明,原来的目标就成立;只要有一个条件不满足,就尝试其他的规则,所有规则都失败了,目标就不成立。
和前向链接的对比
与反向链接相对的是前向链接:它从已知的事实出发,不断地应用规则推出新的事实,直到得出结论,是一种数据驱动的推理方式。打个比方,前向链接像侦探收集了所有的线索,一步步推出所有可能的结论;反向链接像侦探先怀疑某个嫌疑人,再去找能证实或排除他的证据。
当目标明确、需要验证的是某个具体的结论时,反向链接更加高效:它只会关注与目标相关的规则和事实,不会推导出大量无关的结论。当已知的事实很多、需要找出所有可能的结论时,前向链接更合适。
应用
反向链接的典型应用是诊断类的专家系统:比如医疗诊断,先假设一种疾病,再去检查病人是否有支持这个诊断的症状和检查结果。20 世纪 70 年代斯坦福大学开发的著名医学专家系统 MYCIN,就主要采用反向链接来诊断细菌感染并推荐抗生素。逻辑编程语言 Prolog 的执行机制本质上也是反向链接:给出一个查询,系统会自动地反向搜索能证明它的事实和规则。此外,它还被用于故障排查、定理证明和规则引擎中。