【问题标题】:What is fuzzy logic?什么是模糊逻辑?
【发布时间】:2010-09-28 19:34:20
【问题描述】:

我在学校使用了几个 AI 算法,我发现人们使用模糊逻辑这个词来解释他们可以通过几个案例解决的任何情况。当我回到书上时,我刚刚读到关于如何而不是从开到关的状态,它是一条对角线,并且某些东西可以同时处于两种状态但处于不同的“级别”。

我已经阅读了维基百科条目和一些教程,甚至是“使用模糊逻辑”的编程内容(边缘检测器和单轮自控机器人),但我仍然觉得从理论到代码……对你来说,在不太复杂的定义中,什么是模糊逻辑?

【问题讨论】:

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


    【解决方案1】:

    模糊逻辑是一种逻辑,其中状态成员本质上是一个范围为 0..1 而不是 int 0 或 1 的浮点数。您从中获得的好处是,例如,您所做的更改一个控制系统自然比你用简单的二进制逻辑得到的更精细。

    一个示例可能是基于活动 TCP 连接限制系统活动的逻辑。假设您将计算机上“有点太多”的 TCP 连接定义为 1000,将“太多”定义为 2000。在任何给定时间,您的系统从 0 (= 2000),您可以将其用作应用任何可用节流机制的系数。与只知道如何确定“太多”、完全节流或“不太多”、根本不节流的幼稚二进制逻辑相比,这更加宽容和响应系统行为。

    【讨论】:

    • 对,另外一半的模糊逻辑规则通常是一个模糊集(而不是单个值)。这些结果模糊集根据它们的前件为真的程度进行修改,并将所有规则的模糊输出组合成最终的模糊输出集。正是这个最终集合被“去模糊化”以产生单个值作为响应。
    【解决方案2】:

    我想补充一下(已修改的)答案,以下是可视化模糊逻辑的好方法:

    传统上,对于二元逻辑,您会得到一个隶属函数为真或假的图,而在模糊逻辑系统中,隶属函数不是。

    1| | /\ | / \ | / \ 0|/\ ------------ A B C D

    假设函数是“喜欢花生”

    一种。有点喜欢花生 湾。真的很喜欢花生 C。有点喜欢花生 d。不喜欢花生

    函数本身不必是三角形的,通常也不是(使用 ascii 艺术更容易)。

    一个模糊的系统可能会有很多这样的,有些甚至重叠(甚至相反)像这样:

    1|甲乙 | /\ /\ A = 喜欢花生 | / \/ \ B = 不喜欢花生 | / /\ \ 0|/ / \ \ ------------ A B C D

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

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

    希望这对那里的视觉学习者有所帮助。

    【讨论】:

      【解决方案3】:

      模糊逻辑的最佳定义是其发明者Lotfi Zadeh

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

      用一个篮球比赛中的简单例子可以很容易地解释用计算机解决问题类似于人类解决问题的意义;如果一个球员想要防守另一个球员,首先他应该考虑他的身高和他的比赛技巧。简单来说,如果他想要防守的球员个子很高,并且相对于他来说打得非常慢,那么他会根据自己的直觉来决定是否应该防守那个球员,因为对他来说存在不确定性。在这个例子中,重要的一点是属性是相对于玩家的,并且对于对手玩家的身高和演奏技巧有一定程度的影响。模糊逻辑为这种不确定的情况提供了一种确定性的方法。

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

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

      为了举例说明模糊处理步骤,可以使用之前的篮球比赛情况。如示例中所述,对手球员身高 1.87 米,相对于我们的球员来说相当高,并且可以以 3 m/s 的速度运球,相对于我们的球员来说很慢。除了这些数据之外,还需要考虑一些称为模糊规则的规则,例如:

      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
      

      图 2 - 多高

      图 3- 有多快

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

      图4-输出模糊集

      在最后一步,去模糊化,用于创建一个清晰的输出,这个数字可以决定我们在游戏中应该用来保护玩家的能量。质心是创建输出的常用方法。在这个阶段,计算平均点的权重完全取决于实现。在这个应用程序中,它被认为给后卫或不后卫赋予高权重,但有时对后卫给予低权重。 (大卫·M·博格,2004 年)

      图 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

      【讨论】:

      • 会员的总度数是否有可能超过1?而且我的印象是,不同集合中的隶属度总和必须等于 1。
      【解决方案4】:

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

       (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

      戴上我的编码员帽子,我会小心在现实世界的编程中使用模糊逻辑,因为模糊逻辑倾向于不可判定。也许它太复杂而收效甚微。例如,超值逻辑可以很好地帮助程序模型模糊。或者也许概率就足够了。简而言之,我需要确信域模型与模糊逻辑相吻合。

      【讨论】:

        【解决方案5】:

        也许一个例子可以说明好处是什么:

        假设您想制作一个恒温器,并且希望它是 24 度。


        这是您使用布尔逻辑实现它的方式:

        • 规则 1:全功率加热时, 它比21度更冷。
        • 规则 2: 在全功率冷却时 高于 27 度。

        这样的系统只会偶尔是24度,效率很低。


        现在,使用模糊逻辑,它会是这样的:

        • 规则 1:温度每低于 24 度,将加热器调高一档(0 到 24)。
        • 规则 2:温度每升高 24 度,将较冷的温度调高一档(0 到 24 度)。

        这个系统总是在 24 度左右,而且只会偶尔进行一次微小的调整。它也将更加节能。

        【讨论】:

        • 两者都在实现布尔逻辑 - 模糊逻辑发生了什么?
        • 对于“每度,提高一个档次”,我的意思是当温度从 24 度进一步升高时,系统会逐渐努力工作,而不是完全打开或关闭。这就是模糊逻辑所在。我错过了什么吗?
        • 这不是模糊逻辑的工作原理。结果是一样的,但过程是不同的。模糊逻辑由具有概率值(0 到 1)的布尔值定义,这些概率值定义了一个值在多大程度上是一个类别的一部分。在您的示例中,值完全属于它们的类别(即高于 24 度),因此虽然结果相似,但这不是模糊逻辑。
        • 决定加热器强度的模糊值怎么样?
        【解决方案6】:

        嗯,您可以阅读“开国元勋”之一Bart Kosko 的作品。 1994 年的“Fuzzy Thinking: The New Science of Fuzzy Logic”是可读的(并且可以通过亚马逊以相当便宜的价格二手获得)。显然,他有一本 2006 年的新书“Noise”,也很平易近人。

        但基本上(在我的解释中 - 几年没有读过这些书的第一本了),模糊逻辑是关于如何处理可能 10% 凉爽、50% 温暖和 10% 热的世界,可能会就不同状态的真实程度做出不同的决定(不,这些百分比加起来不等于 100% 并非完全是偶然的——尽管如果需要我会接受更正)。

        【讨论】:

          【解决方案7】:

          很好的解释,在Fuzzy Logic Washing Machines的帮助下。

          【讨论】:

            【解决方案8】:

            我知道您所说的从概念到代码很难实现的意思。我正在编写一个评分系统,它查看 Linux 系统上 sysinfo 和 /proc 的值,并得出一个介于 0 和 10 之间的数字,10 绝对是最差的。一个简单的例子:

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

            它既是一种艺术,也是一种定义,你如何实施决策过程总是比范式本身更有趣。而在布尔世界中,它相当简单。

            如果load1

            如果您可以教程序执行评估某些情况时会执行的操作并保持代码可读性,那么您已经实现了一个很好的模糊逻辑示例。

            【讨论】:

              【解决方案9】:

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

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

              要了解更多信息,请查看:http://en.wikipedia.org/wiki/Fuzzy_logic

              【讨论】:

                【解决方案10】:

                以下是一种经验性的答案。

                一个简单的(可能是简单化的答案)是“模糊逻辑”是任何返回除真/假或 1 / 0 以外的值的逻辑。对此有很多变体,它们往往是高度特定于域的.

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

                目前,Netflix 正在举办一场竞赛,为他们的公司寻找更好的建议算法。见http://www.netflixprize.com/。实际上所有的算法都可以被描述为“模糊逻辑”

                【讨论】:

                  【解决方案11】:

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

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-03-17
                    • 2011-05-17
                    • 2016-10-24
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多