一个有什么好处,另一个没有在实践中?我了解他们所做的理论,但他们在实际使用中的局限性和能力是什么?我正在考虑将 Drools 与 java prolog 用于一个新的 AI 项目,但对其他建议持开放态度。有哪些流行的方法可以推断复杂的关系数据集或替代方案?
4 回答
反向链接(a la Prolog)更像是找出哪些初始条件构成了通往目标的路径。在一个非常基本的层面上,它是从您的目标向后搜索以找到满足它的条件。
反向链接用于查询应用程序(查找满足某些标准的项目) - 反向链接应用程序的一个商业示例可能是查找特定再保险合同涵盖哪些保险单。
前向链接 (a la CLIPS) 匹配条件,然后根据这些条件生成推论。这些条件又可以匹配其他规则。基本上,这需要一组初始条件,然后从这些条件中得出所有可能的推论。
推论(如果断言)也可以是可以触发外部动作的动作或事件。这在事件驱动系统中很有用,因为可以将规则集配置为(例如)启动工作流或其他一些操作。这种类型的规则引擎是商业应用中最常用的。
事件驱动系统是前向链接规则引擎的常见应用。前向链接应用程序的一个示例可能是电信计划供应引擎(通常用于管理移动电话计划)。输入具有特定计划的特定用户将触发在各种电话交换机、计费系统、财务、CRM 系统等中设置的一系列项目。
关注者的回答非常好。当被要求将差异归结为一个合理的片段时,我通常会说:
大量输出假设 + 大量数据预先 => 使用前向链接
更少的输出假设 + 必须查询数据 => 使用反向链接
但这只是经验法则,而不是诫命。
在旧的旧旧的旧专家系统时代,他们曾经说前向链接有利于环顾四周(检查可能是什么),而后向链接有利于确认(检查“它”是否真的存在)。
考虑配置(前向链接,XCON [1])和医疗诊断(MYCIN)[2]
前向链接关注“接下来会发生什么?”的问题,而后向链接关注“为什么会发生这种情况?”的问题。
前向链的一个例子是预测股票市场状态是否对利率变化产生影响。
反向链接的一个例子是人类血癌的诊断。
简单来说,前向链主要用于预测未来的结果,而后向链主要用于分析历史数据。