一、规则系统概述

1.1 什么是规则系统

规则系统,说白了就是一套「如果…那么…」的逻辑集合。

你给它一个输入,它按照你写好的规则去匹配,然后给出输出。没有学习,没有概率,没有模糊地带——就是硬碰硬的逻辑判断。

我刚开始接触AI时,觉得这东西太简单了。后来才发现,简单的东西往往最可靠。举个例子:

IF 温度 > 30°C THEN 开启空调
IF 湿度 > 80% THEN 启动除湿
IF 两者都满足 THEN 同时开启

这就是一个最朴素的规则系统。你写死了,它就照做。不会偷懒,不会耍滑。

核心要点:规则系统 = 知识(规则库)+ 推理(匹配引擎)。知识是人给的,推理是机械的。

1.2 规则系统的历史

规则系统的历史,其实比深度学习早得多。

1960年代:萌芽期

我记得最早期的专家系统,比如DENDRAL(化学分析用)和MYCIN(医疗诊断用),都是基于规则的。那时候没有大数据,没有GPU,全靠领域专家一条一条写规则。

1970-1980年代:黄金期

规则系统开始商业化。我见过一些老项目文档,里面光规则就有几千条。那时候大家觉得,只要规则够多,机器就能像人一样思考。嗯,后来发现没那么简单。

1990年代至今:沉淀期

机器学习兴起后,规则系统一度被冷落。但说实话,在工业界,规则系统从未消失。为什么?因为有些场景,你根本不敢用黑盒模型。

时期 代表系统 特点
1960s DENDRAL 化学结构分析,规则由专家手工编写
1970s MYCIN 医疗诊断,引入不确定性推理
1980s XCON 计算机配置,商业上最成功的规则系统之一
2000s+ 业务规则引擎 如Drools、ILOG,用于金融、风控等领域

个人经验:我在项目中遇到过一家银行的风控系统,核心判断逻辑全是规则。不是他们不想用机器学习,而是监管要求——每条拒绝理由必须能解释清楚。规则系统在这方面,天然有优势。

1.3 规则系统的优点

优点其实很明确,我挑几个最实用的说:

  • 可解释性强——每条决策都有明确的规则依据。出了问题,直接查是哪条规则触发了。这在医疗、金融、法律领域是刚需。
  • 开发门槛低——不需要大量数据,不需要训练模型。领域专家直接写规则就行。我曾经帮一个工厂做质检系统,工人师傅都能参与写规则。
  • 稳定可靠——同样的输入,永远得到同样的输出。不会因为模型更新就突然变了个样。生产环境里,这种确定性太重要了。
  • 调试方便——规则是显式的,你可以一条一条测试。不像神经网络,调个参数都不知道影响什么。

一句话总结:规则系统适合「规则明确、需要解释、数据稀缺」的场景。

1.4 规则系统的缺点

但是,缺点也很明显。我踩过的坑不少,这里说几个典型的:

  • 规则爆炸——规则一多,维护就变成噩梦。我见过一个系统,规则从100条涨到5000条,最后没人敢改。改一条,怕影响十条。
  • 覆盖不全——总有你没想到的情况。现实世界太复杂了,你写规则时根本想不到所有边界条件。我曾经因为漏了一条规则,线上出了事故,被叫起来修到凌晨三点。
  • 缺乏泛化能力——规则只能处理你写过的场景。遇到新情况,它就傻了。不像学习型系统,还能「猜一猜」。
  • 知识获取瓶颈——规则需要专家提供知识。但专家很贵,而且他们的知识往往是隐性的,说不清楚。你想想看,让一个老中医把他的经验写成规则,多难?

避坑指南:我曾经接手过一个遗留系统,规则库有3000多条,其中200条互相矛盾。为什么?因为不同时期不同人写的,没人统一管理。所以,规则系统一定要有版本管理和冲突检测机制,否则迟早出问题。

1.5 什么时候该用规则系统?

我个人习惯这样判断:

  1. 规则是否明确?——比如「超过60岁不能投保」,这种硬性条件,用规则最合适。
  2. 是否需要解释?——比如贷款被拒,客户问为什么,规则系统能直接给出理由。
  3. 数据是否充足?——如果数据很少,别想什么深度学习,老老实实写规则。
  4. 变化频率如何?——规则变化慢,适合用规则系统。如果规则天天变,维护成本会很高。

嗯,这里要注意:规则系统和学习型系统不是非此即彼的。我现在的做法是,能用规则的地方用规则,规则搞不定的交给模型。两者结合,往往效果最好。

一个小建议:如果你刚开始做一个项目,先别急着上模型。试试用规则搭一个基线系统。很多时候,简单的规则就能解决80%的问题。剩下的20%,再考虑用学习型方法去优化。

下一章,我会详细讲规则系统的核心组件——规则引擎。到时候会结合代码,聊聊怎么设计一个可维护的规则系统。