前向链接与后向链接

Posted

技术标签:

【中文标题】前向链接与后向链接【英文标题】:Forward Chaining vs Backward Chaining 【发布时间】:2011-03-22 19:23:02 【问题描述】:

一个有什么好处,另一个没有在实践中?我理解他们所做的理论,但他们在实际使用中的局限性和能力是什么?我正在考虑 Drools 与 java prolog 的新 AI 项目,但对其他建议持开放态度。有哪些流行的方法可以在复杂的关系数据集或替代方案上进行推理?

【问题讨论】:

一个很好的参考:“前向和后向推理的区别研究”ijetae.com/files/Volume2Issue10/IJETAE_1012_48.pdf 【参考方案1】:

前向链接关注“接下来会发生什么?”的问题,而后向链接关注“为什么会发生这种情况?”的问题。

前向链的一个例子是预测股票市场状态是否会影响利率的变化。

反向链接的一个例子是人类血癌的诊断。

简单来说,前向链主要用于预测未来的结果,而后向链主要用于分析历史数据。

【讨论】:

【参考方案2】:

在旧的旧旧的旧旧专家系统时代,他们曾经说前向链接适用于环顾四周(检查可能是什么),而后向链接适用于确认(检查“它”是否真的是)。

思考配置(前向链接,XCON [1])和医学诊断 (MYCIN) [2]

    http://www.aaai.org/Papers/AAAI/1980/AAAI80-076.pdf https://www.amazon.com/Rule-Based-Expert-Systems-Addison-Wesley/dp/0201101726

【讨论】:

【参考方案3】:

关注者的回答非常好。当被要求将差异归结为一个简单的片段时,我通常会说:

大量输出假设 + 大量数据预先 => 使用前向链接

更少的输出假设 + 必须查询数据 => 使用反向链接

但这只是经验法则,而不是诫命。

【讨论】:

【参考方案4】:

后向链接(a la Prolog)更像是找出哪些初始条件构成了通往目标的路径。在非常基本的层面上,它是从您的目标向后搜索以找到满足它的条件。

反向链接用于查询应用程序(查找满足特定标准的项目) - 反向链接应用程序的一个商业示例可能是查找特定再保险合同涵盖哪些保险单。

前向链接 (a la CLIPS) 匹配条件,然后根据这些条件生成推论。这些条件又可以匹配其他规则。基本上,这需要一组初始条件,然后从这些条件中得出所有可能的推论。

推理(如果断言)也可以是可以触发外部动作的动作或事件。这在事件驱动系统中很有用,因为可以将规则集配置为(例如)启动工作流或其他一些操作。这种类型的规则引擎是商业应用中最常用的。

事件驱动系统是前向链接规则引擎的常见应用。前向链接应用程序的一个示例可能是电信计划供应引擎(通常用于管理移动电话计划)。输入具有特定计划的特定用户将触发在各种电话交换机、计费系统、财务、CRM 系统等中设置的一系列项目。

【讨论】:

仅供参考 Drools 显然两者都做(假设这些功能已完成):jbug.jp/trans/jboss-rules3.0.2/ja/html/ch01.html 单独使用前向链接提出了一个问题,即相对于简单脚本语言的优势。

以上是关于前向链接与后向链接的主要内容,如果未能解决你的问题,请参考以下文章

作业二:使用前向/后向算法实现中文分词器|自然语言

BiLstm原理

jQuery:单击链接后向li元素添加类,并取消选择所有其他类

nginx与后端服务长短链接配置性能差异比较

前向链接一阶逻辑(统一)

将结构前向声明为类时出现 Visual C++ 2015 链接器错误