在规则系统或任何通过前向链推理规则推导事实的推理系统中,你如何剪枝“不必要的”分支?我不确定正式的术语是什么,但我只是想了解人们在推理问题时是如何限制他们的思路的,而我所见过的所有语义推理器似乎都无法做到这一点。
例如,在约翰·麦卡锡的论文An Example for Natural Language Understanding and the AI Problems It Raises中,他描述了让程序智能地回答关于《纽约时报》新闻文章的问题时可能遇到的问题。在第4节“非单调推理的必要性”中,他讨论了在使用奥卡姆剃刀在推理故事时限制事实的包含。他使用的示例故事是关于抢劫犯迫害一家家具店老板的故事。
如果要求程序在谓词演算中形成故事的“最小完成”,它可能需要包括原始故事中未直接提及的事实。但是,它还需要某种方式来知道何时限制其推理链,以免包含不相关的细节。例如,它可能想包括案件中涉及的确切警察人数(文章中省略了),但它不想包括每位警察都有母亲这一事实。
回答:
好问题。
从您的问题来看,我认为您所说的“剪枝”是指事前执行的模型构建步骤,即限制可用于算法构建模型的输入。机器学习中使用的术语“剪枝”指的是不同的东西——一个事后步骤,在模型构建之后,并且作用于模型本身,而不是作用于可用的输入。(“剪枝”这个术语在ML领域可能还有第二个含义,但我不知道。)换句话说,正如您所说,剪枝确实是一种“限制其推理链”的技术,但它通过删除完整(工作)模型的组件事后进行,而不是通过限制用于创建该模型的输入来进行。
另一方面,隔离或限制可用于模型构建的输入——这我认为您可能已经想到了——确实是机器学习的一个关键主题;这显然是许多最新ML算法表现出色的一个因素——例如,支持向量机(SVM的基础是仅从一小部分数据,即“支持向量”,构建最大边距超平面的洞察力),以及多元自适应回归样条(一种回归技术,其中没有尝试通过“绘制一条穿过数据的单条连续曲线”来拟合数据,而是逐个拟合数据的离散部分,对每个部分使用有界的线性方程,即“样条”,因此,优化数据分区的谓词步骤显然是该算法的关键)。
剪枝解决什么问题?
至少对于我实际编码和使用过的特定ML算法——决策树、MARS和神经网络——剪枝是在最初过度拟合的模型上执行的(过度拟合的模型能够非常紧密地拟合训练数据,以至于它无法泛化(准确预测新实例)。在每个实例中,剪枝都涉及逐个删除边缘节点(DT、NN)或回归方程中的项(MARS)。
其次,为什么剪枝是必要/理想的?
难道仅仅精确地设置收敛/分裂标准不是更好吗?这并不总是有帮助。剪枝从“自下而上”工作;模型是从自上而下构建的,因此调整模型(以实现与剪枝相同的好处)不仅消除了一个或多个决策节点,还消除了作为该边缘节点的子节点(就像将树修剪得更靠近树干一样)。因此,消除一个边缘节点也可能消除一个或多个从属于该边缘节点的强节点——但建模者永远不会知道这一点,因为他/她的调整消除了在该边缘节点上进一步的节点创建。剪枝从另一个方向工作——从最下级(最低级别)的子节点向上朝着根节点的方向工作。