人工智能导论 模糊逻辑
模糊逻辑我们使用模糊逻辑(FuzzyLogic)描述具有模糊性的语言形式和思维.在应用中,我们通过模糊控制系统(FuzzyControlSystem)使Agent得以基于模糊规则利用具有模糊性的现实事实并以此为基准作出可靠的决策.
标准的模糊控制系统架构如下图所示.在接下来的数节中我们将详细介绍它:
1.隶属度(DegreeofMembership)和此前介绍的传统逻辑(或清晰逻辑)不同,在模糊逻辑中事物不是非黑即白的,不能直接用True或False表达,而需要取一个介于000和111之间的值描述这个事件(或事物)接近/远离某个状态(如False或True)的程度.
考虑一个例子:我们称Axton很强,但究竟什么样才算是很强,什么样算是比较强,什么样算是不太强?在布尔逻辑中,我们可以直接处理是非分明的场景,比如判断一个人,Ta要么强,要么根本不强.但在模糊逻辑中,很强,比较强,不太强之间并没有严格界限,换言之某个人能力的强弱不完全归属于一个类,而是被一个称为隶属度的数值衡量的.
2.模糊化(Fuzzification)模糊化就是将逻辑的输入数值转换为各个分类集合的隶属度的过程,输入数值和隶属度的关系被隶属度函数定义:
如在上图的隶属度函数中可以看到,温度被人为地划分为寒冷,温暖和炎热分类,而这三个分类的隶属度函数分别在平面上以蓝色,橙色与红色表示.
在该问题中,温度由三个模糊集合组成,且给定温度数值,该数值对应于不同模糊集合的隶属度由这三个集合的隶属度函数确定,比如212121度(对应图中竖线)被视为寒冷的隶属度为0.80.80.8,视为温暖的隶属度为0.20.20.2,炎热的隶属度为000.
值得注意的是,一个值可以同时属于不同的模糊集合.
3.逻辑运算模糊逻辑中的逻辑运算就是模糊逻辑中,分解出的各个隶属度的运算.它们被定义为:
给定谓词AAA,BBB,则有:
最小隶属法(Conjunction):
T(A∧B)=min(T(A),T(B))T(AwedgeB)= ext{min}(T(A),T(B))T(A∧B)=min(T(A),T(B))
最大隶属法(Disjunction):
T(A∨B)=max(T(A),T(B))T(AveeB)= ext{max}(T(A),T(B))T(A∨B)=max(T(A),T(B))
取反(Negation):
T(¬A)=1−T(A)T( egA)=1-T(A)T(¬A)=1−T(A)
4.决策规则在模糊化输入后,我们需要构造规则,应用模糊逻辑的运算将得到的隶属度组合计算,以作为决策的依据.
一般地,模糊逻辑的决策规则都为包含一系列逻辑语句的集合,这些逻辑语句具备这样的结构:
IF THEN ext{IF}~~ ext{THEN}~~IF THEN
考虑讲义中提及的TheBasicTippingProblem,我们有下列规则:
给定前件规则服务水平低或食材质量差,限定结果只给很少的小费;给定前件规则服务水平比较好,限定结果只给一般水平的小费;给定前件规则服务水平很高或食材质量很好,限定结果慷慨解囊.则我们可以将该模糊逻辑问题中如上描述的三条规则表示为:
值得注意的是,如上面三条例子所描述的一样:
决策规则中的前件条件可以是某个由多个子条件组成的复合谓词公式,如第一条规则中的前件条件实际上由两个子条件:服务水低和食材质量差组成.决策规则中的前件条件可以是恰好由一个条件组成的复合谓词公式,如第二条规则.决策规则中前件条件的形式可以是某个谓词公式的取反,如第三条规则.对某个问题而言,在给定所有的决策规则后,我们需要使用上一节介绍的三种基础逻辑运算将这些规则转换为逻辑公式,从而实现将给定的模糊条件转化为对应的规则强度(RuleStrength)的功能.
5.推断和去模糊化在执行推断(Inference)时,我们的基本任务是基于给定的模糊输入确定每一条规则给出的结果,并将这些不同的规则给出的结果综合起来.
在执行去模糊化(Defuzzification)时,我们的基本任务是给出一个数值作为最终的输出.
在模糊逻辑中,执行推断的常用方法包括Mamdami模糊逻辑推理和Sugeno模糊逻辑推理.
前者的输出仍是一个模糊集,而后者的输出为由某个单例隶属函数(SingletonMembershipFunction)定义的常数或线性函数.
单例隶属函数的特征为:它只在其定义域上的某个点处具有非零函数值,而在其他任何位置上的函数值均为000.我们下面详细描述两种推断方法的具体工作流程:
Mamdami模糊逻辑推理简要地说,使用Mamdami模糊逻辑推理计算模糊推断系统(FuzzyInferenceSystem,FIS)的输出需要下列的六个步骤:
确定给定问题的所有模糊规则(FuzzyRules)使用隶属函数将输入值模糊化.基于模糊规则将已经被模糊化的输入结合,进而计算出该规则在给定模糊输入下对应的规则强度(RuleStrength).结合上一步中计算出的规则强度和给定规则的输出隶属函数,得出基于当前的模糊输入下该规则的结果(Consequence).将来自所有规则的结果相结合,从而得出输出分布(OutputDistribution).需要注意的是:
在第四步中,结果是通过将给定规则的输出隶属函数在规则强度的高度上推平得到的:在第五步中,绝大多数情况下输出分布在定义域上任何点的值都是全体规则的输出隶属函数的析取(也就是取并):在得到输出分布后,我们需要去模糊化,这一般是通过取输出分布的函数和xxx轴围成的图形的质心得到的.计算公式如下:
z=∑i=1qZi⋅uc(Zi)∑i=1quc(Zi)z=frac{sum_{i=1}^{q}Z_icdotu_c(Z_i)}{sum_{i=1}^{q}u_c(Z_i)}z=∑i=1quc(Zi)∑i=1qZi⋅uc(Zi)
其中qqq为人为指定的划分份数,ZiZ_iZi为xxx轴上的对应划分处的值,uc(Zj)u_c(Z_j)uc(Zj)为输出分布在xxx轴上某个位置上对应的函数值.
Sugeno模糊逻辑推理Sugeno模糊逻辑推理和Mamdami模糊逻辑推理的流程基本类似,主要区别在前者不以隶属函数作为输出,其输出是通过以每条规则的输出隶属函数取极值时对应的xxx坐标为系数,和每条规则在给定的模糊输入下算出的,对应的规则强度取加权平均得到的.
如本题中,计算Sugeno模糊逻辑推理的算法就是:
ans=k1⋅λ1+k2⋅λ2+k3⋅λ3λ1+λ2+λ3=0.1⋅20+0.2⋅50+0.5⋅800.1+0.2+0.5=65. ext{ans}=frac{k_1cdotlambda_1+k_2cdotlambda_2+k_3cdotlambda_3}{lambda_1+lambda_2+lambda_3}=frac{0.1cdot20+0.2cdot50+0.5cdot80}{0.1+0.2+0.5}=65.ans=λ1+λ2+λ3k1⋅λ1+k2⋅λ2+k3⋅λ3=0.1+0.2+0.50.1⋅20+0.2⋅50+0.5⋅80=65.
Reference:
4.Fuzzyinferencesystems
MamdaniandSugenoFuzzyInferenceSystems
FuzzyLogic
KnowledgeRepresentationandReasoning,Ch12.4
FuzzyInferenceProcess
【人工智能】模糊推理
模糊推理:交叉的隶属函数,方法如模糊规则中推理方法一致,step3中的每一个格子都有所应的隶属关系函数引言:“生活中的模糊关系”模糊集合模糊集合的定义模糊集合的表示法模糊集合表示法示例隶属函数模糊规则模糊计算的流程引言:“生活中的模糊关系”如果说,我们简单的将温度温度>25度的天气称为温暖,将温度>25度的天气称为热,这种模糊性就消除了,这在数学上没有任何问题,然而就这1度之差,就将“冷”变为“温暖”,“温暖”变为“热”,这又不符合我们日常的生活习惯在企图用数学处理生活中的问题时,精确的数学语言和模糊的思维习惯产生了矛盾。模糊逻辑就是用来解决这一矛盾的工具之一
模糊集合模糊集合(fuzzyset)是对经典集合的扩充。下面先介绍集合论中的几个名词。
论域:要讨论的全体对象,常用U、E等大写字母表示。元素:论域中的每个对象,常用a,b,c,x,y,z等小写字母表示。集合:论域中具有某种相同属性的确定的,可以彼此区别的元素的全体,常用A,B,C,X,Y,Z等表示,例如A={x∣f(x)>0}A={x|f(x)>0}A={x∣f(x)>0}模糊集合的定义设存在一个普通论域UUU,UUU到[0,1][0,1][0,1]区间的任一映射fff都可以确定UUU的一个模糊集合,称为UUU上的模糊集合AAA。其中映射fff叫做模糊集的隶属度函数,对于UUU上一个元素uuu,f(u)f(u)f(u)叫做uuu对于模糊集的隶属度,也可写作A(u)A(u)A(u)
模糊集合的表示法模糊集合:A(u)={u∣f(u)}模糊集合:A(u)={u|f(u)}模糊集合:A(u)={u∣f(u)}
Zadeh表示法
当论域为离散集合时,一个模糊集合可以表示为:A=∑u∈UfA(u)uA=sum_{uinU}frac{f_A(u)}{u}A=u∈U∑ufA(u)当论域为连续集合时,一个模糊集合可以表示为:A=∫ufA(u)uA=smallint_ufrac{f_A(u)}{u}A=u∫ufA(u)注意:这里仅仅是借用了求和与积分的符号,并不表示求和与积分,仅仅代表集合
序数表示法
对于一个模糊集合来说,如果给出了论域上所有的元素以及其对应的隶属度,就等于表示出了该集合。所以,序对表示法出现了。A={(u,fa(u))∣u∈U}A={(u,f_a(u))|uinU}A={(u,fa(u))∣u∈U}UUU:论域、uA(u)u_A(u)uA(u):隶属函数、uuu:元素
模糊集合表示法示例如果加上,这篇文章篇幅过长了,劳烦看客移步:模糊集合表示法示例
隶属函数本节多有借鉴:隶属函数的确定–Evanism_小风铃
隶属度函数:Au(u)隶属度函数:A_u(u)隶属度函数:Au(u) :若对论域(研究的范围)U中的任一元素x,都有一个数A(x)∈[0,1]与之对应,则称A为U上的模糊集,A(x)称为x对A的隶属度。当x在U中变动时,A(x)就是一个函数,称为A的隶属函数。
常见的隶属度函数:
确定隶属函数常用的方法有以下三种:
模糊统计法指派法借用已有的客观尺度模糊统计法
指派法指派法通过已有的函数模型,将自己的实例放入对应的函数模型中完成隶属函数的确定。
偏大型的f(x)常常为增函数,而偏小型的为减函数借用已有的客观尺度
以上隶属函数选用,可以参照指派法为了不让此篇博客篇幅过长,以上所有出现的隶属函数的JAVA实现和具体的使用方法,劳烦移步:【人工智能】模糊隶属函数
模糊规则回到最初的问题:step1:找出语言变量(冷,温暖,热,多,少,随性)的所对应区间(模糊集合)、论域(取值范围)
(模糊规则):如果天气冷,所以多穿衣服。(变量uAu_AuA取值范围):温度[-∞,+∞],但可以做出25三个区间(变量uBu_BuB取值范围):穿衣指数[1,10],可以做出,[1,3],[3,6],[6,10]三个区间这里穿衣指数仅仅是为了解题而假设出来,并没有实际含义温度:25:热的区间穿衣指数:[1,3]:少的区间;[3,6]:随性区间;[6,10]:多的区间
step2:依据经验,使用合适的模糊隶属函数将模糊集合表示出来
我所采用的是三角模糊隶属函数、和梯型模糊隶属函数,将其表示出来可以得到,各自的隶属函数
这样,就可以得到任意一个温度,或者穿衣指数对其模糊集合的隶属度,
例如,A(23)A(23)A(23){冷“”–0,“温暖”–0.267,“热”–0}B(4)B(4)B(4){“少”–0,“随性”–0.67,“多”–0}
step3:将所得到的隶属函数,组合成模糊关系矩阵
那么我们将规则做一个矩阵化处理,得到模糊关系:
例如,A(23)A(23)A(23){冷“”–0,“温暖”–0.267,“热”–0}B(4)B(4)B(4){“少”–0,“随性”–0.67,“多”–0}A(23)→B(4)A(23)→B(4)A(23)→B(4)={000;00.2670;000},也就是说大前提:如果温暖,则舒适随性小前提:23,则4,结论:置信度是0.267
模糊计算的流程模糊计算的过程可以分为四个模块:模糊规则库、模糊化、推理方法和去模糊化
模糊规则库是专家提供的模糊规则。模糊化是根据隶属度函数从具体的输入得到对模糊集隶属度的过程。推理方法是从模糊规则和输入对相关模糊集的隶属度得到模糊结论的方法。去模糊化就是将模糊结论转化为具体的、精确的输出的过程。
示例:如果加上篇幅过长,劳烦移步:模糊推理附录(2)
人工智能作业——python实现洗衣机模糊推理系统实验
人工智能作业——python实现洗衣机模糊推理系统实验凉农:请问博主,这个洗衣时间取不到120的边界值是为什么呢?
c++实现贪心法构造最大整数问题〖残恋〗:那这三个数咋办13,312,343
人工智能作业——python实现洗衣机模糊推理系统实验秋欢禧:pipinstallscikit-fuzzy
人工智能作业——python实现洗衣机模糊推理系统实验m0_51990111:您好,博主,我想问一下这个模糊推理方法用的具体是什么,比如Mamdani推理方法还是其他的
人工智能作业——python实现洗衣机模糊推理系统实验joey_jiangz:看看具体是什么错,对应修改一下