在人工智能与机器学习的学习过程中,初学者往往会先接触决策树、逻辑回归、K 近邻、支持向量机等具体算法。但继续追问就会发现,这些方法背后都指向一个更基础的问题:面对实际任务,我们究竟是先由人把规则写出来,还是让系统从数据中把规律学出来?
这对应着两种重要的问题求解思路:规则驱动与数据驱动。
前者强调由人根据知识、经验和逻辑关系显式制定规则;后者强调从样本数据中学习输入与输出之间的关系。
理解这两种思路,不只是为了区分传统程序与机器学习,更是为了回答一个更根本的问题:什么样的问题适合手工写规则,什么样的问题更适合交给数据去学习。
一、什么是规则驱动
1、基本含义
规则驱动(Rule-Based)指的是:先由人明确写出解决问题所需的判断规则,再由程序严格按照这些规则执行。
也就是说,在这种思路中,系统本身并不学习规律,而是执行人已经给出的规律。
例如:
• 如果温度低于 0℃,则判断可能结冰
• 如果邮件标题包含某些高风险词,且发件人不在白名单中,则标记为可疑
• 如果订单金额超过某阈值且来自异常地区,则触发人工审核
这些都属于典型的规则驱动系统。
2、规则驱动的核心特征
规则驱动最重要的特征有三个:
• 规则是显式写出来的
• 判断过程通常可追踪、可解释
• 系统能力高度依赖规则设计者的知识质量
换句话说,规则驱动系统的“聪明程度”,很大程度上取决于人是否提前把关键逻辑写清楚了。
3、从程序设计角度理解规则驱动
从更一般的程序设计角度看,传统软件开发中的大量系统,本质上都是规则驱动的。
图 1 规则驱动的基本路径
程序员根据问题需求,把判断条件、流程分支和处理步骤写进代码中,程序再按这些逻辑运行。
因此,规则驱动并不只是人工智能中的一种方法,它也是传统计算机程序设计最基本的思想之一。
4、规则驱动适合什么问题
(1)规则明确、边界清楚的问题
如果一个问题的判断逻辑本身很清晰,而且能够被稳定表达出来,那么规则驱动通常非常合适。例如:
• 税率计算
• 格式校验
• 权限控制
• 简单流程审批
• 固定条件报警
这类问题的共同点是:规则相对稳定,而且能被人明确写出。
(2)必须高度可解释的问题
如果系统输出必须能清楚说明“为什么得出这个结论”,规则驱动通常很有优势。因为每一步判断都来自显式规则,推理链条相对透明。
(3)样本数据不足的问题
如果没有足够数据支撑模型学习,而专家知识又比较成熟,那么规则驱动往往比数据驱动更现实。也就是说,有些问题并不是“不能机器学习”,而是“当前更适合先用规则解决”。
(4)稳定且变化慢的问题
如果问题环境长期稳定,规则变化不频繁,那么规则驱动系统维护成本也相对可控。这使它在很多传统业务系统中仍然非常重要。
5、为什么很多问题不适合纯规则驱动
(1)规则数量可能爆炸
有些问题如果完全依赖人工写规则,规则数量会迅速增长,甚至出现组合爆炸。
例如,在图像识别中,如果想手工列出“猫长什么样”,你很快就会发现:
• 姿态变化很多
• 光照变化很多
• 背景变化很多
• 品种差异很多
这类问题并不是没有规则,而是规则太多、太细、太难显式穷举。
(2)很多判断本质上是概率性的
例如,一封邮件是否是垃圾邮件,往往不是由单一条件决定,而是由多个线索共同形成一种“更像”或“更不像”的统计判断。
这类问题若完全靠规则,往往会不断堆积补丁式条件,系统越来越复杂,却仍不够稳健。
(3)复杂模式常常只有数据才能显现
在高维特征空间中,许多重要模式并不容易被人直接概括成清晰的显式规则。
这正是机器学习兴起的重要原因之一:很多问题并非“没有规律”,而是“规律适合从数据中学习,而不适合手工书写”。
二、什么是数据驱动
1、基本含义
数据驱动(Data-Driven)指的是:不预先把全部规则显式写出来,而是提供大量样本数据,让系统从数据中学习规律。
图 2 数据驱动的基本路径
在这种思路中,设计者通常不会直接告诉系统“遇到什么条件就一定输出什么结果”,而是提供:
• 输入数据
• 对应输出结果(监督学习)
或仅提供输入数据本身,由系统发现其中的结构与分布特征(无监督学习)。
然后让模型通过训练去捕捉其中的模式。
2、数据驱动的核心特征
数据驱动最重要的特征有三个:
• 系统能力主要来自数据,而不是人工枚举规则
• 规律通常是“学出来的”,而不是“直接写出来的”
• 模型表现强烈依赖数据质量、数据规模和特征表示
也就是说,在数据驱动系统中,人不再直接给出完整求解规则,而是把重点放在问题定义、数据准备、特征表示以及模型选择与训练之上。
3、从机器学习角度理解数据驱动
机器学习(Machine Learning)是最典型、最重要的数据驱动方法之一。
例如:
• 给模型大量房屋特征与房价样本,让它学习价格规律
• 给模型大量邮件与垃圾/正常标签,让它学习分类边界
• 给模型大量图像与类别,让它学习识别模式
在这些问题中,我们往往并不知道怎样手工写出完整规则,但可以通过样本数据让模型自己归纳出较稳定的模式。
4、数据驱动适合什么问题
(1)规则难以手工完整写出的问题
这是数据驱动最重要的适用场景。例如:
• 图像识别
• 语音识别
• 自然语言理解
• 用户行为预测
• 高维复杂分类问题
这些问题往往不是完全没有规律,而是规律太复杂、太细微、太高维,很难靠人工枚举写成完整规则。
(2)存在大量样本数据的问题
如果可以获得较多高质量样本,那么数据驱动方法就更有优势。因为它的核心能力来自于“从大量数据中总结稳定模式”。
(3)环境变化快、规则需要持续更新的问题
在一些场景中,人工维护规则会非常辛苦。例如:
• 欺诈检测
• 广告点击预测
• 推荐系统
• 用户流失预测
因为模式会不断变化,此时让模型随着新数据持续更新,通常比手工维护大量规则更有效。
(4)模糊边界和统计规律占主导的问题
有些问题并不存在清晰的确定性规则,而更像一种概率判断。例如:
• 一封邮件“像不像”垃圾邮件
• 一条评论“像不像”负面情绪
• 一张图片“像不像”某种物体
这类问题天生更适合数据驱动,因为它们本质上更像统计模式识别,而不是确定性逻辑推演。
5、为什么很多问题也不适合纯数据驱动
(1)有些规则必须显式保证
例如:
• 法规合规约束
• 风险阈值控制
• 权限与审批逻辑
• 业务中的硬边界条件
这些内容往往不能只交给模型从数据中“猜”,而必须通过显式规则保证。
(2)数据不足时,模型无法可靠学习
如果样本太少、标注质量不高,数据驱动方法可能根本学不出稳定模式。此时,成熟的业务规则往往比脆弱的模型更可靠。
(3)某些场景必须给出明确解释
在一些高风险应用中,仅仅给出“模型认为如此”并不够,还需要回答“为什么这样判断”。这时,规则驱动或规则约束通常仍然非常重要。
三、规则驱动与数据驱动的核心区别
图 3 规则驱动与数据驱动的核心区别
1、规律的来源不同
这是最根本的区别。
• 规则驱动:规律先由人总结,再写给系统
• 数据驱动:规律由模型从数据中学习出来
也就是说,规则驱动强调“先有规则,再有执行”;数据驱动强调“先有数据,再从中归纳规则”。
2、人与系统分工不同
在规则驱动中,人负责主要的推理工作,系统更多负责执行。
在数据驱动中,人负责定义问题、准备数据和选择模型,而具体规律提取主要由模型训练过程完成。
3、知识表达方式不同
规则驱动中的知识通常以显式形式存在,例如:
• if-else 条件
• 规则表
• 逻辑表达式
• 专家系统规则库
而数据驱动中的知识通常隐含在模型参数、模型结构或表示空间中,不一定能被直接写成几条明确规则。
4、输出结果的性质不同
规则驱动的输出通常建立在显式条件匹配基础之上,结果往往较为明确,常表现为通过/不通过、满足/不满足、触发/不触发等确定性判断。
数据驱动的输出通常来自模型对样本模式的学习结果,往往带有统计意义,常表现为概率、分数、类别预测值或连续预测值。
四、规则驱动与数据驱动的协同应用
图 4 规则驱动与数据驱动的结合方式
1、规则作为边界,模型处理复杂模式
这是很常见的组合方式。例如:
• 用规则先过滤明显非法输入
• 用模型对剩余复杂样本做概率判断
• 用规则控制最终风险阈值和人工复核流程
2、规则生成候选,模型做排序或判断
例如在搜索、推荐或风控系统中:
• 规则先筛选候选对象
• 模型再对候选做评分、排序或分类
这样做的好处是兼顾可控性与灵活性。
3、模型发现模式,规则固化经验
有时也会反过来:先用数据驱动方法发现某些稳定规律,再把其中一部分提炼成可显式表达的业务规则。
这说明规则驱动与数据驱动并不是单向替代关系,而可能形成循环。
五、从学习机器学习的角度如何理解这两种思路
1、机器学习并不是否定规则
学习机器学习,不意味着传统规则系统已经无用。
更准确地说,机器学习是在回答一类特殊问题:当规则难以手工完整写出时,我们能否让系统从数据中学习规律。
2、规则驱动是理解数据驱动的重要参照
如果不理解规则驱动,就很难真正理解机器学习的必要性。
因为机器学习并不是“更时髦的编程”,而是在某些问题上对规则驱动方法局限性的回应。
3、真正重要的是判断问题性质
面对一个新问题,更关键的不是先问“能不能上机器学习”,而是先问:
• 规则是否清楚且可稳定表达
• 数据是否足够支撑学习
• 可解释性要求有多高
• 问题模式变化有多快
只有先判断问题性质,才能决定应偏向规则驱动还是数据驱动,或是两者结合。
📘 小结
规则驱动与数据驱动是两种重要的问题求解思路。前者依赖人显式编写规则,适用于规则清楚、可解释性要求高的场景;后者依赖数据学习规律,更适用于模式复杂、规则难以穷举且样本较丰富的问题。
“点赞有美意,赞赏是鼓励”