分享

模糊数学

 heshingshih 2022-05-07 发布于北京

模糊逻辑学习笔记

注意,笔者水平有限,有错请指出。

背景

模糊逻辑是一个名叫卢菲特. 泽德(Lotfi Zadeh)的人在20世纪60年代中期发明的,它能让电脑以一种类似人的方法去推理语言术语和规则。计算机能够通过模糊集合把一个输入的精确值(或普通值)模糊化,然后使用模糊规则得出模糊输出,最后去模糊得到精确的输出值。这就是众所周知的基于规则的模糊推理,如下图:

image-20200911164121116

普通集合

这个概念很常见,比如一个普通集合A={1, 2, 3, 4, 5}。那么一个数是否属于集合A是很明显的,不是真就是假。可以使用隶属度概念描述这种情况,例如数字4对集合A的隶属度是1,数字7对集合A的隶属度是0。

模糊集合

隶属函数

模糊集合是从普通集合扩展得到的,普通集合的隶属度是{0, 1},而模糊集合的隶属度是[0,1]。举个例子,假设有3个集合:笨拙、平均和聪明,表示一个人的智力水平。然后张三智商115,那么他属于“聪明”的隶属度可能是0.75,属于“平均”的隶属度是0.25,属于“笨拙”的隶属度是0,如下图所示:

image-20200911170248681

看见上图的三角形了吗,它们是隶属函数的图像。模糊集合就是通过一个隶属函数来定义的,这些函数可以是任意形状,通常是三角形或者梯形的。构造这些隶属函数有一些规则,下面再模糊规则处描述。

模糊集合运算符

模糊集合和普通集合一样有集合运算。主要是如下几个:

(1)交集

假设有2个隶属函数F1, F2,那么x对于它们的隶属度分别是F1(x), F2(x)。它们的交集是它们中最小的那个:

F1(x)F2(x)=min{F1(x), F2(x)}

(2)并集

它们的并集是它们之中最大的那个:

F1(x)F2(x)=max{F1(x), F2(x)}

(3)补集

F1(x)=1F1(x)

限制词

限制词是一元的运算符,可以用来修饰模糊集合的含义。两个常用的限制词是“非常地”和“相当地”。对一个模糊集合 A 来说,用“非常地”作修饰:

FVERY(A)=(FA(x))2

换句话说,结果就是隶属度的平方。“相当地”是利用隶属度的平方来修饰一个模糊集合的,像这样:
FFAIRLY(A)=FA(x)

这些限制词的效果可以从下面的图看出来,使用“相当地”修饰隶属度的话,标准应该比集合本身更加宽松。相反,用“非常地”去修饰的话,标准就变得比较严格。大概就是这么一个情况。

image-20200911201757951

模糊语言变量

一个模糊语言变量是由一个或者多个模糊集合的合成,它定量地表示一种概念或一个域。例如模糊语言变量IQ的成员是模糊集合“笨拙”、“平均”和“聪明”,用集合符号可以写成:IQ={}。注意,模糊语言变量的成员集合的隶属度函数的形状和不对称性是可以改变的,视问题需要而定。

模糊规则

模糊规则主要是由一种前因与后果的形式构成的:IF 前提 THEN 后果。

我们使用一个武器选择的例子来说明。假设使用火箭筒的期望值取决于2个因素:目标的距离和弹药的数量。那么前提是目标的距离和弹药的数量,后果是使用火箭筒的期望值。

首先,我们要设计模糊语言变量,也即隶属函数。设计模糊语言变量的时候,需要遵守几个重要的准则:

  1. 对于通过模糊语言变量的任何垂直线(代表一个输入值),在每个同它相交的模糊集合中的隶属度总和应该接近于1。这就保证了穿越模糊语言变量的模糊形(所有成员集合的形状组合)的数值之间的平稳过渡。
  2. 对于通过模糊语言变量的任何垂直线,它应该只与2个或者更少的模糊集合相交。

image-20200911201910717

好了,开始设计模糊语言变量。目标的距离由3个集合组成:Target_close、Target_Medium 和 Target_Far,这三个术语足以让专家确定使用武器的规则。当想到'close'的时候,你基本会选择近战,其他术语类似。这样就能得到目标距离这一模糊语言变量的隶属度函数:

image-20200911202546776

弹药的数量(状态)也是由3个集合组成:Ammo_Low、Ammo_Okay和Ammo_Loads,按照常识和经验设计出隶属度函数:

image-20200911202856773

但是别忘记了期望值的模糊语言变量:

image-20200911210705756

然后就是设计规则,因为火箭筒是中等距离武器,如果近距离发射会伤害到自己;如果太远,那么敌人可以躲避开。根据相关的经验,这里创建9条规则来确定使用火箭筒的期望值:

image-20200911203255496

注意这里的“与”,对应的是前面集合运算的交集,也即取最小的隶属度。模糊规则的提出是基于经验的,不同的人提出的规则可能不一样,反映了不同的见解。

模糊推理

模糊推理就是使用上述提到的隶属函数和规则进行计算。首先一定会有前提输入,这里输入是目标的距离和弹药的数量。假设目标的距离是200,弹药的数量是8。

下面是模糊推理的步骤:

  1. 对于每条规则
    1. 对于每个前提条件,计算输入数据的隶属度
    2. 基于上一步即1.1中确定的值,计算规则的推理结论的置信度
  2. 将所有的推理结论的置信度合成一个单个的结论(一个模糊集合,包含结论的置信度)
  3. 将从2中得到的结论去模糊化

使用火箭筒例子来说明。

计算隶属度和置信度

规则1

目标的距离是200,弹药的数量是8,那么对应 Target_Far 和 Ammo_Loads 的隶属度分别是 0.33 和 0.00 ,所以取最小的是0.00,如下图:

image-20200911204500737

规则2

对应 Target_Far 和 Ammo_Okay 的隶属度分别是 0.33 和 0.78 ,所以取最小的是0.33,如下图:

image-20200911205249063

合成单个的结论

其他规则同理可以计算出来,注意每个规则计算出来的是结论的置信度。可以根据这些结论构造一个模糊联想矩阵:

image-20200911205630282

从这个矩阵可以看到 undesirable 有2个值,这些叫做多重置信度。有很多处理多重置信度的方法,常用的两种方法是有界限的和(和被限制到1)以及最大值。我们这里使用取最大值的方法,所以可以得到 0.33。因此,当目标的距离是200,弹药的数量为8时,所有规则综合后的推理结果是:

结论 置信度
不期望 0.33
期望 0.2
非常期望 0.67

接着可以把推理结果表现在模糊语言变量上:

image-20200911210938349

然后把上述推理结果合成一个单一的模糊形:

image-20200911211104276

去模糊化

去模糊化是模糊化的逆过程,是把一个模糊集合转换成一个精确值的过程。有很多方法可以完成这个过程,这里只介绍一种,那就是中心法,这种方法很准确,其他方法请看参考的书籍。它得工作就是确定输出集合整体的中心。一个模糊形的中心是可以被计算出来的,通过把这个模糊形分为S.P采样点,计算每个采样点对总体隶属度的贡献之和,再除以采样的隶属度之和。公式如下:

CrispValue=s=DomainMaxS=DomainMins×DOM(s)s=DomainMaxS=DomainMinDOM(s)

其中 s 是在每个采样点的值,以及 DOM(s) 是这个值在模糊语言变量中的隶属度。被选来作计算的采样点越多,结果就会越准确,虽然在实践中只有10到20个采样点,但通常已经足够了。

以火箭筒使用问题为例,取10个采样点,对每个采样点计算每个成员集合的隶属度。

image-20200911213143966

然后计算分子:

10×0.33+20×0.33+30×0.53+40×0.53+50×0.2+60×0.6+70×0.87+80×0.67+90×0.67+100×0.67=334.8

计算分母:
0.33+0.33+0.53+0.53+0.2+0.6+0.87+0.67+0.67+0.67=5.4

这样就能得到精确值:
Desirability=334.85.4=62

感觉

模糊逻辑是一种重要的决策方法。

参考资料

  1. 谢季坚, 刘承平. 模糊数学方法及其应用[M]. 华中理工大学出版社, 2005.
  2. 巴克兰. 游戏人工智能编程案例精粹[M]. 人民邮电出版社, 2012.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多