什么是模糊逻辑?

时间:2008-12-30 06:05:18

标签: artificial-intelligence logic theory definition fuzzy-logic

我正在学校使用几种AI算法,我发现人们使用模糊逻辑来解释他们可以用几种情况解决的任何情况。当我回到书本时,我刚刚读到关于如何取而代之的状态从On到Off它是一条对角线,有些东西可以在两种状态但在不同的“级别”。

我已经阅读了维基百科条目和一些教程,甚至编写了“使用模糊逻辑”(边缘检测器和1轮自控机器人)的东西,但我发现它从理论到代码......对于你来说,在不太复杂的定义中,什么是模糊逻辑?

11 个答案:

答案 0 :(得分:36)

模糊逻辑是一种逻辑,其中状态成员资格实际上是一个范围为0..1而不是int 0或1的浮点数。你从中获得的里程数就像是你所做的改变之类的事情。与天真的二进制逻辑相比,控制系统自然会更加精细。

示例可能是基于活动TCP连接限制系统活动的逻辑。假设您将计算机上的“有点太多”TCP连接定义为1000,并将“很多”定义为2000.在任何给定时间,您的系统从0开始具有“太多TCP连接”状态(< = 1000 )到1(> = 2000),您可以将其用作应用您可用的任何限制机制的系数。这比原始的二进制逻辑更容易和响应系统行为,只知道如何确定“太多”,完全限制,或“不太多”,而不是节流。

答案 1 :(得分:36)

我想添加答案(已经修改过),可视化模糊逻辑的一种好方法如下:

传统上,使用二进制逻辑,您将拥有一个其隶属函数为真或假的图形,而在模糊逻辑系统中,隶属函数则不是。

1|
 |   /\
 |  /  \
 | /    \
0|/      \
 ------------
   a  b c   d

假设该功能是“喜欢花生”

a. kinda likes peanuts
b. really likes peanuts
c. kinda likes peanuts
d. doesn't like peanuts

函数本身不一定是三角形,通常不是(使用ascii art更容易)。

模糊系统可能会有很多这样的,有些甚至是重叠的(甚至是对立的)如下:

1|   A    B
 |   /\  /\      A = Likes Peanuts
 |  /  \/  \     B = Doesn't Like Peanuts
 | /   /\   \
0|/   /  \   \
 ------------
  a  b  c d

所以现在c是“有点像花生,有点不喜欢花生”,d是“真的不喜欢花生”

您可以根据该信息进行相应的编程。

希望这有助于视觉学习者。

答案 2 :(得分:10)

模糊逻辑的最佳定义由其发明者 Lotfi Zadeh 给出:

  

“模糊逻辑意味着以类似于人类解决问题的方式向计算机表示问题,模糊逻辑的本质是一切都是程度问题。”

通过一个简单的篮球比赛示例,可以很容易地解释用类似于人类解决方式的计算机解决问题的意义;如果一名球员想要首先防守另一名球员,他应该考虑他的身高以及他的比赛技巧。如果他想要防守的球员很高并且相对于他打得非常慢,那么他将利用他的直觉决定是否应该保护那个球员,因为他有不确定性。在这个例子中,重要的一点是属性是相对于玩家的,并且竞争对手的身高和游戏技巧有一定程度。模糊逻辑为这种不确定的情况提供了一种确定性的方法。

处理模糊逻辑有一些步骤(图-1)。这些步骤是;首先是模糊化,其中清晰的输入被转换为模糊输入,其次这些输入用模糊规则处理以创建模糊输出,最后去模糊化,结果与结果的程度一样,在模糊逻辑中可能有不同程度的不止一个结果。

image004

图1 - 模糊过程步骤(David M. Bourg P.192)

为了举例说明模糊处理步骤,可以使用先前的篮球比赛情况。正如在例子中提到的那样,对手球员身高1.87米,相对于我们的球员来说相当高,并且可以运球速度为3米/秒,这相对于我们的球员而言是慢的。除了这些数据之外,还需要一些规则来考虑哪些被称为模糊规则,例如;

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

图2 - 多高

image007

图3-有多快

根据规则和输入数据,输出将由模糊系统创建,如;守卫的程度是0.7,有时守卫的程度是0.4,从不守卫是0.2。

image009

图4 - 输出模糊集

在最后一步, defuzzication ,用于创建一个清晰的输出,这个数字可以决定我们在游戏中应该用来保护玩家的能量。质心是创建输出的常用方法。在此阶段,计算平均点的权重完全取决于实施。在这种应用中,它被认为是高重量的防护或不防护,但有时防护的重量轻。 (David M. Bourg,2004)

image012

图5-模糊输出(David M. Bourg P.204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

结果,模糊逻辑在不确定性下使用做出决定并找出决策程度。模糊逻辑的问题是随着输入数量的增加,规则数量呈指数增长。

有关更多信息及其在游戏中的可能应用,我写了一篇文章check this out

答案 3 :(得分:6)

为了建立混乱的答案,形式逻辑只不过是一个将句子映射到估值的归纳定义集合。至少,这就是模型理论家对逻辑的看法。在句子布尔逻辑的情况下:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

模糊逻辑变化将被归纳定义:

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

请注意,基本逻辑的唯一区别是将句子评估为具有0.5的“真值”的权限。模糊逻辑模型的一个重要问题是真值满足的阈值。这是要问:对于估值v(A),对于什么值D,情况是v(A)> D表示A满意。

如果您真的想了解更多关于模糊逻辑等非经典逻辑的建议,我建议An Introduction to Non-Classical Logic: From If to IsPossibilities and Paradox

重新打开我的编码器帽,我会在现实世界的编程中使用模糊逻辑,因为模糊逻辑倾向于不可判断。也许它的复杂性太大,收益微薄。例如,超值逻辑可以很好地帮助程序模型模糊。或者也许概率足够好。简而言之,我需要确信域模型与模糊逻辑相吻合。

答案 4 :(得分:4)

也许一个例子可以清除可能带来的好处:

假设您要制作恒温器,并希望它为24度。


这是你使用布尔逻辑实现它的方法:

  • 规则1:当满负荷时加热 它的温度低于21度。
  • 规则2: 当它充满力量时会降温 温度超过27度。

这样的系统只会一次又一次是24度,效率会非常低。


现在,使用模糊逻辑,就像这样:

  • 规则1:对于每度低于24度的程度,将加热器向上旋转一个刻度(在24处为0)。
  • 规则2:对于温度超过24度的每个度数,将冷却器调高一个档位(24点为0)。

这个系统总是在24度左右,它只有一次,只会进行一次微调。它也会更节能。

答案 5 :(得分:3)

嗯,你可以阅读Bart Kosko的作品,其中一位是'创始人'。 1994年的“Fuzzy Thinking: The New Science of Fuzzy Logic”是可读的(通过亚马逊可以非常便宜地获得)。显然,他从2006年开始有一本新书“Noise”,这本书也非常平易近人。

基本上(在我的意思中 - 现在已经好几年没读过这些书中的第一本),模糊逻辑就是如何应对这个世界,那里的东西可能是10%凉爽,50%温暖,10%热,可以对不同国家的真实程度作出不同的决定(不,这些百分比不等于100%并不完全是意外 - 尽管如果需要我会接受更正)。

答案 6 :(得分:3)

Fuzzy Logic Washing Machines的帮助下,一个非常好的解释。

答案 7 :(得分:2)

我知道你从概念到代码很难的意思。我正在编写一个评分系统,该系统在Linux系统上查看sysinfo和/ proc的值,并提供0到10之间的数字,10表示绝对最差。一个简单的例子:

你有3个负载平均值(1,5,15分钟)和(至少)三种可能的状态,好,坏,坏。扩展一下,你可以在每个平均值上有六种可能的状态,在我刚才注意到的三个中添加“即将”。然而,所有18种可能性的结果只能从得分中扣除1。重复使用交换消耗,实际VM分配(提交)内存和其他东西..你有一大碗有条件的意大利面条:)

它的定义与艺术一样多,你如何实现决策制定过程总是比范式本身更有趣..而在布尔世界中,它相当切割和干燥。

我很容易说出load1< 2扣除1,但不是很准确。

如果你可以教一个程序来做你在评估一些情况时所做的事情并保持代码可读,你已经实现了一个很好的模糊逻辑的例子。

答案 8 :(得分:1)

模糊逻辑是一种解决问题的方法,适用于从简单,小型嵌入式微控制器到大型,网络化,多通道PC或基于工作站的数据采集和控制系统的系统。它可以用硬件,软件或两者的组合来实现。模糊逻辑提供了一种基于模糊,模糊,不精确,嘈杂或缺失输入信息得出明确结论的简单方法。用于控制问题的模糊逻辑方法模仿一个​​人如何做出决策的速度要快得多。

模糊逻辑已被证明在专家系统和其他人工智能应用中特别有用。它也被用在一些拼写检查器中,以建议一个可能的单词列表来替换拼写错误的单词。

要了解详情,请查看:http://en.wikipedia.org/wiki/Fuzzy_logic

答案 9 :(得分:0)

以下是一种经验性答案。

一个简单的(可能是简单的答案)是“模糊逻辑”是任何逻辑,它返回的值不是直的真/假,或1 / 0.这有很多变化,它们往往是高度特定领域的

例如,在我以前的生活中,我做了使用“内容相似性搜索”的搜索引擎,而不是常见的“布尔搜索”。我们的相似系统使用余弦系数的加权属性向量表示查询,文档和产生的值在0..1范围内。用户将提供“相关性反馈”,其用于在期望文档的方向上移动查询向量。这与在某些人工智能系统中进行的培训有一定关系,在这些系统中,逻辑会因试运行结果而得到“奖励”或“惩罚”。

目前,Netflix正在开展竞赛,为其公司寻找更好的建议算法。见http://www.netflixprize.com/。实际上,所有算法都可以表征为“模糊逻辑”

答案 10 :(得分:0)

模糊逻辑是基于人类思维方式的计算算法。当存在大量输入变量时,它尤其有用。给出了一个用于两个变量输入的在线模糊逻辑计算器:

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php