Fuzzy Logic
模糊逻辑将真值设为 0 到 1 之间的数值,使基于规则的系统能够推理“温暖”或“附近”等模糊概念。涵盖控制器和代码。
模糊逻辑是一种多值逻辑,其中一个命题可以部分为真,其真值程度可以是 0 到 1 之间的任意值,而不只是非真即假。它源于 Lotfi Zadeh 1965 年在加州大学伯克利分校发表的模糊集论文,为计算机提供了一种精确计算人类模糊概念(如“温暖”“附近”或“快速”)的方法。模糊系统将专家知识编码为简单的 if-then 规则,并融合部分适用的规则,因此随着输入变化,输出也会平滑变化。这一特性使模糊逻辑成为控制工程中的常用工具,从列车制动到洗衣机均有应用;它也仍用于需要可解释、可手动调节规则的人工智能(AI)系统。
模糊集和隶属函数#
在经典集合论中,一个元素要么属于某个集合,要么不属于。模糊集则通过隶属函数为每个元素分配 0 到 1 之间的隶属度,隶属函数通常是输入范围上的三角形、梯形或高斯曲线。相邻集合彼此重叠,因此温度为 24 °C 的房间可能同时有 0.6 的“温暖”隶属度和 0.2 的“炎热”隶属度,标签会逐渐变化,而不是在某个阈值处突然跳变。逻辑运算也可以扩展到不同程度:Zadeh 最初将 AND 定义为两个隶属度的最小值,将 OR 定义为最大值,将 NOT 定义为 1 减去隶属度;而 AND 运算采用乘积等其他选择,则属于称为 t-范数的一类运算。
模糊推理系统的工作原理#
模糊控制器分四步将精确的传感器读数转换为精确的控制指令:
- 模糊化:将每个输入值映射为其在每个模糊集中的隶属度,例如判断障碍物有多“近”“中等距离”或“远”。
- 规则评估:触发每条 if-then 规则,例如“如果距离很近,就强力制动”,触发程度取决于条件的成立程度。
- 聚合:根据每条规则的触发强度截断其输出集合,再合并截断后的集合,通常使用最大值运算。
- 去模糊化:将合并后的集合转换为一个数值,通常取其质心。
这种方法称为 Mamdani 方法,以 Ebrahim Mamdani 命名;1975 年,他与 Sedrak Assilian 合作,用这种方法控制一台实验室蒸汽机。本例实现了一个三规则 Mamdani 控制器,根据与障碍物的距离设定制动力:
import numpy as np
# Output fuzzy sets over braking force (0-100%)
force = np.linspace(0, 100, 501)
gentle = np.interp(force, [0, 40], [1, 0])
firm = np.interp(force, [20, 50, 80], [0, 1, 0])
hard = np.interp(force, [60, 100], [0, 1])
for distance in [8, 15, 22, 35]:
# Fuzzification: how near, medium, and far the obstacle is (meters)
near = np.interp(distance, [5, 20], [1, 0])
medium = np.interp(distance, [10, 20, 30], [0, 1, 0])
far = np.interp(distance, [20, 40], [0, 1])
# Rules: near -> hard, medium -> firm, far -> gentle; clip each set (min), combine (max)
combined = np.maximum.reduce([np.minimum(near, hard), np.minimum(medium, firm), np.minimum(far, gentle)])
# Defuzzification: the centroid of the combined set is the crisp braking command
print(f"{distance:>2} m -> brake {np.sum(force * combined) / np.sum(combined):.0f}%")脚本会输出距离分别为 8、15、22 和 35 米时的制动力:86%、60%、47% 和 14%。在 15 米处,障碍物的“近”隶属度为 0.33,“中等距离”隶属度为 0.5,因此强力和适度制动规则都会部分触发,融合后得出 60% 的制动力。三条规则便能生成平滑的制动曲线,不会出现控制指令突然跳变的阈值。
应用场景#
- 控制系统:1987 年仙台地铁南北线开通时,Hitachi 的模糊自动列车运行系统便用于控制加速和制动,使乘坐更加平稳、停车更加准确。模糊控制器还会根据不精确的传感器读数调节洗衣机、电饭煲和空调等消费电器。
- 图像分割:模糊 c 均值是均值聚类的一种软聚类版本,会为每个像素分配其在每个聚类中的隶属度。它广泛用于医学图像分析,例如区分 MRI 扫描中的脑组织类型;边界上的像素可能同时包含两种组织。
- 视觉驱动的决策:Ultralytics 的速度估计方案使用 YOLO26 模型跟踪车辆,并以 km/h 为单位报告每辆车的速度。模糊规则库可以将这个精确输入评定为慢速、中速或快速,然后据此设置警告级别或信号灯时序。
- 神经模糊系统:Jyh-Shing Roger Jang 于 1993 年提出的自适应神经模糊推理系统(ANFIS),使用神经网络训练方法,从数据中学习隶属函数和规则参数,同时保持规则清晰易读。
模糊逻辑与概率、符号 AI 的比较#
模糊逻辑和概率都使用 0 到 1 之间的数值,但描述的是不同类型的不确定性。概率是贝叶斯网络进行推理时使用的量,表示一个定义明确的事件发生的可能性,例如明天下雨的概率为 30%。模糊隶属度表示一个模糊描述与已知状态的符合程度,例如温度为 50 °C 的咖啡有 0.7 的“温暖”隶属度。与经典符号 AI相比,模糊规则库保留了专家系统清晰易读的 if-then 形式,但将每条规则的真假条件替换为隶属程度,从而让多条规则能够同时影响一个决策。










