AI学习笔记——模糊逻辑(Fuzzy Logic)
模糊逻辑严格意义上来说与之前讲的机器学习没有什么太大的关系,但是对于人工智能AI来说,我认为是一个非常重要的概念。所以这篇文章就来讲讲什么是模糊逻辑,以及模糊逻辑的应用。
1. 经典的布尔逻辑
布尔数值就是0和1,是和非,也是计算机逻辑的基础,其基本运算就是"与、或、非",体现在编程中就是“If .... then...”,这个相信大家都很熟悉了,我们大部分的自动化程序就是用布尔逻辑设计的。
布尔逻辑赋予计算机自动判断和决策的能力,但是却并不完美,甚至限制了计算机的能力,因为人类判断和决策往往没那么简单。比如布尔逻辑能够很好处理那种是非很清晰的场景,比如用电脑可以轻松编写“如果下雨就提醒我出门带伞“”这样的程序,因为下不下雨是一个清晰的是非逻辑。
然而人在实际决定带不带伞出门时常是考虑雨的大小,雨会下多久。那多大的雨算大雨需要带伞,多小的雨算小雨不用带伞呢?对于人类的决策来说往往没有一个清晰的雨量的门槛。
模糊逻辑就是用来解决这样的分类和决策难题的。
2. 隶属度(Degree of Membership)
在模糊逻辑的眼中,大雨,小雨,和中雨之间是没有严格的界限的,也就是说某一种雨量的大小并不完全归属于某一个类,而是以隶属度来衡量的。比如对于10mm降雨,隶属于小雨的隶属度为0.5, 中雨的隶属度为0.4,大雨的隶属度为0.1,100mm降雨小雨的隶属度为0, 中雨的隶属度为0.3,大雨的隶属度为0.7。
将逻辑的输入数值(降雨量)转化成各个集合(小雨,中雨,大雨)的隶属度的过程就叫做Fuzzification。 也是模糊逻辑的第一步。
3. Fuzzyfication(模糊化)
如何确定输入数值与隶属度的关系呢,这就要用到隶属度函数。通常可以用下图这种方式表示。
上图是考试分数和学生成绩的隶属度关系。 比如考0分,Poor的隶属度为1,Avg. 和Good为0。 考试为32.5分(红黑交叉点),Poor的隶属度为0.5,Avg.为0.5, Good为0。 在任意一点都能找到其所对应的集合的隶属度。
4. 模糊逻辑的“与,或,非”运算
模糊逻辑的运算实际上就是模糊逻辑中分解出的各个隶属度的运算。我们将逻辑的两个输入定义为A,B,输出为C(A与B -> C),举个例子,A = Poor: 0.5(Poor的隶属为0.5 )B = Good:0.2, 那么C= A与B是多少呢?
其实有好多计算C的方法,这里介绍一个最简单的“最小隶属法(MAX implication)”,于是 C=A与B中最小那个(0.2)。于是C= Good: 0.2.
那D = A或B怎么计算呢?还是介绍一个最简单的“最大隶属法(MIN implication)”,即 C=A或B中最大的那个(0.5)。 于是D= Poor: 0.5
"非"的运算就更简单了,直接如下图所示取相反的折线就完了。
5. 模糊逻辑的决策规则(Rule Base)
将输入模糊化了之后,需要通过规则,和模糊逻辑的运算来重新组合。下面我们通过一个实例来介绍一下什么是模糊逻辑的规则。
你要编写一个程序来给自己分配食物,食物的多少由你饥饿的程度(Hunger)和事物的味道(Taste)共同决定的,两者分别有少、中、多(S, M, L)三个集合
如下图,表格为规则,隶属度函数在表格下面,Taste 和 Hunger 的取值为了方便起见,分别设为5.625和5。因此模糊化之后 Taste(S)=0:Taste(M)=0.75,Taste(L)=0.25, Hunger(S)=0, Hunger(M)=5, Hunger(L)=0。规则就是比如:Taste(M)与Hunger(M)输出M,Hunger(M)与Taste(L)输出L。
可见除了规则表中标记成红色和绿色的部分,其他的输出都为0。
表中:
- 红色M是Taste(M)与Hunger(M)的输出结果可以用最小法则Min(1, 0.75)=0.75
- 绿色L是Taste(L)与Hunger(M)的输出结果可以用最小法则Min(1, 0)=0。
同样的如果Taste和Hunger分别取5.625和4.375,如图会有下面结果
表中:
- 红色S是Taste(M)与Hunger(S)的输出结果可以用最小法则Min(0.75, 0.25)=0.25
- 绿色M是Taste(M)与Hunger(M)的输出结果可以用最小法则Min(0.75, 0.75)=0.75
- 黄色M是Taste(L)与Hunger(S)的输出结果可以用最小法则Min(0.25, 0.25)=0.25
- 紫色L是Taste(L)与Hunger(M)的输出结果可以用最小法则Min(0.25, 0.75)=0.25
- 其他输出为0。
这些输出我们在模糊逻辑中定义为Fire Strength(FS)。
6. 去模糊化(De-fuzzyfication)
模糊逻辑通过模糊化将输入的数值转化成各个集合的隶属度之后,再通过规则和运算可以得到若干个FS。这些FS并不能为我们解决实际问题。以之前分配事物的为例,我们想知道给出任意两个输入值(Taste 和 Hunger)能输出一个确定的数值,这时我们就要用去模糊化来得到这个输出值了。
去模糊化有很多方法,这里我同样只介绍一个简单和应用广泛的方法:加权平均判决法
其中FS就是上一步输出的Fire Strength, OW (Output Wight)是权重。权重通常是取每个集合的中间值,分配食物的例子OW(S)=2.5, OW(M)=5, OW(L)=7.5。
如果Taste = 5.625, Hunger = 4.375
FS1(S)=0.25, FS2(M)=0.75, FS3(M)=0.25, FS4(L)=0.25.
用上面的公式可以求得
Output = (0.252.5+0.755+0.255+0.257.5)/(0.25+0.75+0.25+0.25)=5
尾声
模糊逻辑就介绍完了,是不是非常简单。模糊逻辑已经广泛应用在电冰箱,电饭锅等家电设备的自动控制,同时还广泛运用在了游戏的开发中了。
Leave AI学习笔记——模糊逻辑(Fuzzy Logic) to:
Read more #ai posts
Best Posts From hongtao
We have not curated any of hongtao's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.