在人工智能与机器学习的学习过程中初学者往往会先接触决策树、逻辑回归、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、真正重要的是判断问题性质面对一个新问题更关键的不是先问“能不能上机器学习”而是先问• 规则是否清楚且可稳定表达• 数据是否足够支撑学习• 可解释性要求有多高• 问题模式变化有多快只有先判断问题性质才能决定应偏向规则驱动还是数据驱动或是两者结合。 小结规则驱动与数据驱动是两种重要的问题求解思路。前者依赖人显式编写规则适用于规则清楚、可解释性要求高的场景后者依赖数据学习规律更适用于模式复杂、规则难以穷举且样本较丰富的问题。“点赞有美意赞赏是鼓励”