Нечеткая логика на практике

Стандартная статья о нечеткой логике обычно грешит двумя вещами:

  1. В 99% случаев статья касается исключительно применения нечеткой логики в контексте нечетких множеств, а точнее нечеткого вывода, а еще точнее алгоритма Мамдани. Складывается впечатление, что только этим способом нечеткая логика может быть применена, однако это не так.
  2. Почти всегда статья написана на математическом языке. Замечательно, но программисты пользуются другим языком с другими обозначениями. Поэтому оказывается, что статья просто непонятна тем, кому, казалось бы, должна быть полезна.

Все это грустно, потому что нечеткая логика — это одно из величайших достижений математики XX-ого века, если критерием брать практическую пользу. В этой статье я попытаюсь показать, насколько это простой и мощный инструмент программирования — настолько же простой, но гораздо более мощный, чем система обычных логических операций.

Самым замечательным фактом о нечеткой логике является то, что это прежде всего логика. Из начал мат-логики известно, что любая логическая функция может быть представлена дизъюнктивной или конъюнктивной нормальной формой, из чего следует, что для реализации исчисления высказываний достаточно всего трех операций: конъюнкции (&&), дизъюнкции (||) и отрицания (!). В классической логике каждая из этих операций задана таблицей истинности:

a  b  ||   a  b  &&   a  !
--------   --------   ----
0  0  0    0  0  0    0  1
0  1  1    0  1  0    1  0
1  0  1    1  0  0
1  1  1    1  1  1

В нечеткой логике, в отличие от классической, вместо величин истина и ложь используется величина степень истинности, принимающая любые значения из бесконечного множества от 0 до 1 включительно. Следовательно логические операции уже нельзя представить таблично. В нечеткой логике они задаются фукнциями.

Есть два способа реализации дизъюнкции и конъюнкции:

#Максиминный подход:
a || b => max(a, b)
a && b => min(a, b)
#Колорометрический подход:
a || b => a + b - a * b
a && b => a * b

Отрицание задается единственным способом (не трудно догадаться):

!a => 1 - a

Легко проверить, что для крайних случаев — когда значения переменных исключительно 1 или 0 — приведенные выше функции дают таблицы истинности операций классической логики. Готово! Теперь у нас есть расширенная логика, обладающая невероятной мощью, простотой и при этом полностью совместимая с классической логикой в предельных случаях. Значит везде, где мы [программисты] используем логические выражения, мы можем использовать выражения нечеткой логики? Не совсем.

Дело в том, что все операторы языков программирования требуют четких условий, поэтому в какой-то момент всегда приходится из нечеткой степени истинности получать четкий критерий срабатывания. Это похоже на то, что происходит в квантовом мире: до тех пор, пока система эволюционирует в соответствии с уравнением Шредингера, ее квантовое состояние изменяется детерминированно и непрерывно, но как только мы прикасаемся к системе, происходит квантовый скачок, и система сваливается в одно из дискретных состояний. В нечеткой логике это называется дефаззификацией. Природа просто превращает квантовое состояние в вероятность и бросает кости, но вообще говоря методы дефаззификации бывают разные. Я не буду углубляться в эту тему, потому что объем ее тянет на отдельную статью. Упомяну лишь только, что метод дефаззификации следует выбирать, учитывая семантику задачи.

Для примера представим себе систему управления ракетой, использующую нечеткую логику для обхода препятствий. Представим себе, что ракета летит точно в гору, и система управления вычисляет решение: лететь вправо — 0.5, лететь влево — 0.5. Если использовать дефаззификацию методом центра масс, то система управления даст команду — лететь прямо. Бум! Очевидно, что в этом случае правильное решение — бросить кости и получить команду «влево» или «вправо» с вероятностью 50%.

В простейшем случае, когда нужно принять решение на основании степени истинности, можно разбить множество [0,1] на интервалы и использовать if-else-if.

Если нечеткая логика используется для поиска по нечеткому критерию, то дефаззификация вообще может быть не нужна. Производя сравнения, мы будем получать некоторое значение степени равенства для каждого элемента пространства поиска. Мы можем определить некоторую минимальную степень равенства, значения ниже которой нас не интересуют; для оставшихся элементов степень равенства будет релевантностью, по убыванию которой мы будем сортировать результаты, и пускай пользователь решит, какой результат правильный.

В качестве примера приведу использование нечеткой логики для решения задачи, которой я развлекался еще в институте — это задача поиска китайского иероглифа по изображению.

Я сразу отбросил идею распознавать любой каракуль, нарисованный пользователем на экране (тогда это был экран КПК). Вместо этого программа предлагала выбрать тип черты из порядка 23-х, определенных правилами японской каллиграфии. Выбрав тип черты, пользователь рисовал прямоугольник, в который вписывалась черта. Фактически, иероглиф — и введенный, и хранимый в словаре — представлялся в виде множества прямоугольников, для которых был определен тип.

Как определить равенство иероглифов в таком представлении? Для начала сформулируем критерий в четкой постановке:

Иероглифы A и B равны тогда и только тогда, когда для каждой черты в A существует равная ей черта в B и для каждой черты в B существует равная ей черта в A.

Неявно предполагается, что иероглифы не содержат черт-дубликатов, то есть, если некоторая черта совпала с чертой в другом иероглифе, то ни с одной другой чертой в том же иероглифе она совпасть не может.

Равенство черт можно определить следующим образом:

Черты равны тогда и только тогда, когда относятся к одному типу и их прямоугольники занимают одну и ту же площадь.

Эти два определения дают нам систему утверждений, которой достаточно для реализации алгоритма поиска.

Для начала построим матрицу E[n,n] следующим образом:

for i in 1..n
  for j in 1..n
    E[i,j] = A[i] == B[j]
  end
end
#A и B - это иероглифы; A[i] и B[j] - это их черты, и оператор '==' вычисляет их нечеткое равенство.
#Предполагается, что оба иероглифа имеют одинаковое количество черт - n.

Затем сомкнем эту матрицу в вектор M[n]:

for i in 1..n
  M[i] = E.max_in_row(i)
end
#Метод max_in_row вычисляет максимальное значение в строке матрицы.

Я использую максиминный подход, потому что, на практике, колорометрический дает слишком маленькие значения для конъюнкций. Если вспомнить, что max — это дизъюнкция, то получается, что мы вычисляем утверждение, что i-я черта A равна первой черте B или второй или третьей и т.д. Таким образом M — это вектор совпадений черт A с чертами B.

Далее, нам нужно превратить вектор совпадений в одно единственное значение, и это можно сделать двумя способами:

#Просто нечеткой конъюнкцией.
e = M.min
#Либо так:
e = M.sum / M.length #(отношение суммы элементов к длине вектора).

Оба способа работают, но по-разному, причем второй способ работает даже если сравнивать черты четко. Какой из них правильней — вопрос философский.

Еще пару слов стоит сказать о сравнении черт. В соответствии с определением, равенство черт — это конъюнкция двух условий: равенства типов и равенства прямоугольников. Черты некоторых типов очень похожи. Вводя, пользователь легко может их перепутать, поэтому стоит иметь таблицу похожести, значения которой будут отражать насколько черта i похожа на черту j (на главной диагонали, естественно, будут единицы). Как степень равенства прямоугольников можно брать отношение площади их пересечения к площади большего из прямоугольников.

Вобщем, область применения нечеткой логики весьма обширна. В любом алгоритме, в любой системе правил попробуйте заменить истину и ложь на степень истинности и, возможно, эта система правил или алгоритм станут более точно отражать реальность. В конце концов, мы живем в мире, который фундаментально нечеток.
Share post

Comments 38

    +6
    А где тут «на практике»? )
      +1
      примеры с ракетой и иероглифами.
        +4
        Какие то они очень абстрактные
          +1
          ну если бы подробнее расписать пример с ракетой (поиск пути, обход препятствий), то полезность нечеткой логики становится очевидной
            +3
            Примеров можно привести массу, и каждый потянет на отдельную статью. Один такой я как раз держу прозапас, но скоро, думаю, опубликую.

            Основная идея следующая:
            1. Не обращая внимания на нечеткость, сформулировать решение в виде системы утверждений.
            2. Для каждого предиката каждого утверждения найти такую функцию, которая в крайних случаях давала бы 1 и 0; в остальных, равномерно распределенные значения в пределах (0, 1).
            3. Применить нечеткую логику.


            Этот метод можно применять в практике обычного программирования — для реализации, к примеру, бизнес-логики. Цель статьи — показать, что нечеткая логика — это просто. Как говорят американцы: «It's not a rocket scince».
              +4
              > «It's not a rocket science»

              Как? Вон же ракета в примерах была…
      +1
      А можно еще примеры, кроме ракеты и иероглифа?
      В голову приходит распознавание изображений, но, как я понимаю, применение нейронных сетей в этой области более распространено.
        +1
        Кстати, о нейронных сетях. На выходе нейронная сеть дает массив чисел. Как его интерпретировать? Фактически, его нужно сравнить с другими массивами чисел — эталонами, на которых сеть обучалась. Естественно, результат с эталонами никогда не совпадает точно, и здесь на помощь приходит нечеткая логика. Если элементы массивов нормализованы (принадлежат интервалу [0, 1]), тогда для сравнения результата с эталоном можно использовать формулу:

        fuzzy_and(1 - abs(result[i] - etalon[i]))
        


        Получаем массив степеней равенства длины равной количеству эталонов, а дальше дефазификация.

        Один мой одногрупник разрабатывал нечто подобное на диплом.
          0
          А смысл такой операции? Если сравнение используется при обучении сети, то как-раз отклонение от эталона и нужно получить, чтобы вычислить энергию ошибки
          +2
          Вообще-то существуют т. н. нейро-нечеткие сети, так что вполне применимо ;)
          +7
          Из статьи совершенно непонятно, в чем разница между нечеткими и вероятностными моделями. Даже в примерах Вы рассуждаете в терминах вероятностей, приплетая даже квантовую механику
            0
            Вообще говоря, между вероятностными и нечеткими моделями нет ничего общего (с этого начинал первую лекцию наш преподаватель нечеткой логики), но тему вы подняли интересную.

            Тот же самый наш преподаватель объяснял разницу между вероятностью и нечеткостью так:

            Представьте себе десять стаканов с жидкостью. Человек берет один из них и выпивает. Если пять из десяти стаканов содержат чистый яд, а остальные воду, то с вероятностью 50% человек умрет. Это вероятностная модель. Мы говорим, что любой произвольно взятый стакан содержит яд с вероятностью 50%. Если же мы говорим, что утверждение «любой произвольно взятый стакан содержит яд» истинно на 50%, это значит, что каждый стакан содержит 50% яда, и какой бы стакан ни выбрал человек, он [человек] окажется мертв на 50%, что бы это ни значило. Почему? Потому что мы рассуждаем в рамках силлогизма:

            Если человек выпьет яд, он умрет.
            Человек выпил яд.
            Значит человек мертв.

            Если рассчитать это по правилам нечеткой логики, получится, что человек мертв на 50%.

            Вероятность — это лишь один из возможных способов дефазификаци, один из возможных способов интерпретации нечеткости. В данном примере можно трактовать то, что человек мертв на 50% так: из произвольно взятой выборки людей, 50% это не переживут. Но можно трактовать и по-другому: человек, кем бы он ни был, гарантировано выживет, но его здоровью будет нанесен непоправимый вред.

            Вообще, дефазификация — это то, за что некоторые ортодоксальные ученые считают адептов нечеткой логики шарлатанами. На самом деле, нечеткая логика просто не определяет каких либо способов интерпретации — это просто метод исчисления высказываний.
              +2
              Вы ошибаетесь, что между вероятностными и нечеткими моделями нет ничего общего, напротив, многие теоремы (возможно все, хотя это не доказано) нечеткой логики транспонируются в теоремы теории вероятностей.
              Вероятность — не способ дифуззификации, поскольку такая интерпретация приводит к смешению понятий и, как правило, к неверным результатам. В приведенном примере вывод о том, что человек мертв с вероятностью 50% некорректен по определению вероятности. Правильно интерпретировать результат так: степень принадлежности человека к множеству живых людей составляет 50%, к множеству мертвых — 50% (формулировки похожи внешне, но смысловое отличие критично).
              Дело тут, в общем, в том, что теория множеств в современном понимании порождает логику, четких множеств — классическую логику, нечетких — нечеткую. Вероятность базируется на классической
                –2
                Я знаю, этот человек — Эрвин Шредингер. Только сам он яд не пил, а согласно слухам, экспериментировал с котами… ;))) Думаю, квантовая механика — это идеальный пример работы нечеткой логики.

                Я не совсем понял как автор использует нечеткую логику в своем алгоритме. По-моему при работе такого алгоритма каждый if вычисляет сразу оба возможных варианта, форкая выполнение в новую ветвь и ставя в соответствие этой ветви вероятность, из условия. Результат работы такого алгоритма — это все множество результатов каждой из ветвей, взятых с соответствующей вероятностью (вообще не люблю термин «вероятность» и предпочитаю говорить «плотность»).

                Алгоритм «if ( c ) then A else B» должен выдать:
                A: с вероятностью ©
                B: с вероятностью (1-c)
                Если требуется, из этого множества результатов можно произвести дефазификацию (фон-неймановскую редукцию) методом взвешенного бросания костей (произвести измерение распределенной величины).

                P.S. Еще такая мысль: практически любое высказывание человека объективно носит нечеткий характер. Однако субъективно (в его логической системе) оно всегда принимает либо истину, либо ложь. Отсюда корень непонимания между людьми ))
                  +1
                  Квантовая механика в современной трактовке опирается на вероятность, а не на нечеткость. Вероятностные и нечеткие модели часто изоморфны, но теоретически основываются на совершенно различных принципах. Нельзя сказать, что элементарная частица принадлежит некоторому множеству в заданной мере (в рамках законов квантовой механики). Так что квантовая механика — отвратительный, совершенно ошибочный пример работы нечеткой логики.
                  0
                  Есть такая штука, как общий логико-вероятностный метод
                  Если сравнивать его математический аппарат, то он по сути ничем не отличается от приведенных вами примеров для нечеткой логики

                  #Колорометрический подход:
                  a || b => a + b — a * b
                  a && b => a * b

                  # ОЛВМ


                  Так в чем собственно разница между ними?
                0
                Спасибо!
                В универе начинала заниматься нечеткой логикой, но из-за обстоятельств не получилось продолжить. Нечеткая логика — весьма интересная тема, а применение ее на практике было для меня загадкой, хотя, научрук рассказывал, как применял ее. Например, в оборудовании для нефтетранспортировки, где никакие способы не позволяли решить проблему (сейчас уже не помню, какую и в чем точно), лишь нечеткая логика помогла справиться.
                  0
                  И всё-таки хотелось бы поподробнее об областях применения максиминной и колометрической системы.
                  Хотябы на примере иероглифов — как именно различались результаты, полученные в разных системах?
                    –2
                    a = 0.1
                    b = 0.1
                    1. a&&b = min(a, b) = 0.1; a||b = max(a, b) = 0.1
                    2. a&&b = a*b = 0.01; a||b = a + b — a*b = 0.19
                      0
                      Способов выполнения нечетких конъюнкции и дизъюнкции вообще больше, как минимум пять общепризнанных. Автор в статье вполне справедливо заметил, что какую из систем применять — вопрос философский и четких универсальных рекомендаций Вам никто не даст. Основная проблема нечеткой логики применительно к построению моделей, учитывающих неопределенность, в том, что она по-сути является способом формализации экспертных оценок. Поэтому при выборе системы операций нужно руководствоваться исходными предположениями модели и принципами получения знаний экспертов.
                        0
                        тоесть, получается, что однозначно определённых базовых операций в нечёткой логике просто нету в принципе.
                        и имеет смысл тогда говорить о «колометрической нечёткой логике», «максиминной нечёткой логике», «пьяноэкспертной чёткой логике», итп — каждая со своей областью применения.

                        но если у них всех будут различаться ВЫВОДЫ — как это можно объядинять в одну
                          0
                          Дело в том, что логика — это способ рассуждений. Нечеткая логика определяет этот самый способ, основываясь на нечетких множествах. В каждом конкретном случае может быть предпочтительно использование того или иного набора операций, но все такие наборы должны удовлетворять условиям нечеткой логики. Поэтому Вы правы, в сущности существует класс нечетких логик, отличающихся определением основных операций, но обладающих общими свойствами.
                          Главное понять, что нельзя получить результат со степенью определенности большей, чем у исходных данных. Но получить результат с хотя бы такой же степенью неопределенности — уже неплохо.
                          0
                          Автор в статье вполне справедливо заметил, что какую из систем применять — вопрос философский и четких универсальных рекомендаций Вам никто не даст.

                          Не соглашусь. Если есть несколько способов — значит можно взять какую-нибудь задачу, например перемещение персонажа в игре, относительно расстояния до стен (в лабиринте) и попробовать использовать все эти методы. Результаты сравнить. Мне кажется будут отличия. У каждого метода есть свои плюсы и минусы, и характерные особенности, которые предрасполагают тот или иной метод к решению определенного круга задач. Если дойдут руки — сделаю и опубликую статью, с примерами на С++.
                            +1
                            Это и имелось ввиду. Существует множество способов оперировать нечеткими высказываниями, множество нечетких алгебр логики, и в каждой определение базовых логических операций произрастает из каких-то своих соображений: экономических, вероятностных и пр. Такое положение вещей позволяет учитывать при решении задачи априорную слабо формализуемую информацию. Но рассуждения можно вести с совершенно различных позиций и с помощью нечеткой логики прийти к совершенно различным результатам — в ней нет понятия противоречивости. Разумеется, эмпирически установлены классы задач, где, скажем, одна процедура продукционного вывода дает «более правдоподобный» результат, чем другая, но подобные рекомендации на практике настолько расплывчаты, что для конкретной задачи приходится рассматривать несколько вариантов и экспериментально, с помощью экспертных оценок определять вариант, который дает наиболее адекватные результаты. Но теории, предлагающей какие-либо теоремы, позволяющей по ряду критериев строго выбрать алгебру нечеткой логики для решения прикладной задачи, лично мне на глаза не попадалось. Фактически разным алгебрам соответствуют разные теории и выбор между ними уже выходит за пределы математики и переходит в раздел чистого экспертного шаманства.
                        0
                        По слухам есть стирльные машины использующие Fuzzy Logic при стирке, что позволяет экономить электроэнергию до 40%, вроде этим занимается Sumsung, так что реальное применение есть.
                          0
                          Ну, это больше маркетинговый ход.
                          0
                          Прочитал я статью и комменты и стало мне интересно немного разобраться, где же грань между вероятностными моделями и нечеткой логикой. Я не являюсь экспертом в этой области, поэтому хотел бы услышать мнение знающих людей. А чтобы было проще, приведу простой пример и мои то, как я это понимаю.

                          Представим, что есть пешеход, который планирует переходить дорогу на пешеходном переходе. В это время к пешеходному переходу приближается автомобиль.
                          Человек должен принять решение: начать переходить или стоять.
                          Машина может остановиться или проехать. Это зависит от 2 факторов: исправна ли машина (технически может остановиться) и видит ли водитель пешехода.

                          Предположим, что вероятность поломки машины 1% (т.е. в каждый момент времени у нас есть 1 шанс из 100 на то, что тормоза откажут, не очень хорошая машина. Можно взять реальные числа, рассчитанные исходя из времени наработки на отказ тормозов машины, но они будут маленькими и неудобными).
                          Вероятность того, что водитель не заметит пешехода 30% (т.е. есть в 3 случаях из 10, водитель просто не замечает пешехода, проезжая по этой дороге, а вот это число уже весьма реально, особенно вечером).

                          Итак, нам надо решить, что должен делать пешеход.

                          Вероятностная модель нам дает следующее: вероятность остановки машины равна 0,7*0,99 = 0,693 = 69,3%
                          Решение пешехода зависит от того, насколько он хочет жить. Если он хочет остаться в живых (считаем, выжить после аварии у него не получится) с вероятностью 95% (вполне нормальное желание), он должен ждать. Тут мы не рассматриваем то, что машина начнет останавливаться и это будет значить, что повысились шансы на то, что водитель видит пешехода, тогда решение может поменяться.

                          Нечеткая логика дает следующее: для того, чтобы перейти, нам надо знать, что машина остановится. Машина остановится если выполняются оба условия: она исправна и водитель видит пешехода. Правдивость того, что машина исправна 0,99, правдивость того, что водитель видит пешехода 0,7. Оператор И определен в статье a && b => a * b. и мы получаем все то же 0,693. Это значение правдивости такого утверждения: «пешеход перейдет дорогу и останется в живых». И тут нам надо делать дефаззификацию, если просто поставить какую-то границу (на сколько хочется жить), то будет точно также, как и с вероятностью. Если же случайно выбрать один из ответов с вероятностью 0,693 и обратной 0,307, то это не дает нам ничего, кроме принятия какого-то решения.

                          В такой задачке я не совсем понимаю разницы между подходами. Что я упускаю? Объясните плиз. Или может быть они не такие уж разные?
                            0
                            Вы путаете вероятность с правдивостью. Вероятность (в простейшей формулировке) представляет собой частоту возникновения некоторого события при устремлении времени в бесконечность. Правдивость есть степень уверенности в принадлежности объекта к некоторому множеству. Таким образом, применительно к рассматриваемой задаче не следует применять нечеткую логику. Некорректно говорить, что правдивость факта `водитель видит пешехода` составляет 0.7, это не значит, что в семи случаях из десяти водитель увидит пешехода.
                            Одинаковые результаты получаются потому, что колометрическая система операторов соответствует аналогичным вероятностным.
                            Вообще разграничить довольно просто. Нечеткая логика — это именно логика, она оперирует высказываниями. Т.е. применять ее следует в том случае, если существует некоторое множество высказываний, достоверность которых известна, и нужно установить достоверность некоторого множества высказываний, логически выводимых из этого множества.
                            Т.е. не применяйте нечеткую логику к событиям, это не ее область
                              0
                              Вот поэтому и пытаюсь разобраться, где что:)
                              Я не совсем понимаю почему нельзя применять в этом случае нечеткую логику. Есть вероятность события — водитель видит пешехода. Но в то же время есть высказывание «водитель видит пешехода», оно может быть правдой или ложью в каждый момент времени: водитель либо видит, либо не видит, только вот мы не знаем ответа на него, знаем только то, что водитель чаще видит. Поэтому это высказывание правдиво в этот момент времени с этой самой вероятностью 70%. В чем тут ошибка?
                                0
                                Степень принадлежности к множеству — это прежде всего характеристика объекта. Это не вероятность. Нельзя сказать, что высказывание правдиво с вероятностью N%, оно правдиво НА N%, Вы уверены в этом на 70%. Степень принадлежности объекта к множеству не меняется со временем, если не меняется сам объект. Т.е. если Вы говорите, что «водитель видит пешехода» правдиво на 70% — это значит, что в любой ситуации Вы уверены в том, что водитель видит пешехода, на 70% даже если перед ним чистая дорога и пешеход размером с годзиллу. Также как «сократ — человек» и «человек — смертен» не изменяться во времени, если не измениться определение слов.
                                  0
                                  Спасибо за разъяснение, стало понятно, но не до конца. Такой уж я непонятливый:)
                                  Есть три возможных непонятности:
                                  1) Что такое правдивость? Как она появляется и как связана с вероятностью, если связана?

                                  2) Можно ли сказать, что нечеткая логика может включать в себя вероятностную модель, когда правдивость равна вероятности в тот момент времени, когда принимается решение?

                                  3) Если предыдущее не верно, то как правильно применить нечеткую логику к задаче про пешехода? Возможно ли это в принципе? (Должно быть возможно, с обычной бинарной логикой я могу сказать просто, машина исправна И водитель видит = надо идти, но я теряю часть информации)
                                    +1
                                    1) Правдивость — всего лишь слово, интерпретация. В теории его нет, есть степень принадлежности к множеству. Например, представьте себе, что нужно определить значение слова «горячо». Вы говорите, что 50 градусов Цельсия соответствует определению «горячо» на 0,6. Т.е. число 50 принадлежит множеству объектов, определяемых как «горячо», в степени 0.6. Но Вы не можете сказать, что в 60% случаев 50 градусов — это горячо, а в 40% — нет. Коэффициент принадлежности можно интерпретировать по-разному, назвать его правдивостью, уверенностью и т.п. Иногда определение этого коэффициента связано со статистическими данными, что роднит его с вероятностью, но вероятность связана с относительной частотой события (но не определяет событие), в то время как степень принадлежности характеризует объект. Например, можно сказать, что человек хиппи на 20%, это не значит, что в 20% случаев он ведет себя как хиппи, это значит, что свойства «хиппи» в нем выражены на 20%.
                                      0
                                      2) Иногда можно сказать, что степень принадлежности равна вероятности. В вашем примере можно вероятность поломки 0.1 интерпретировать как степень принадлежности к множеству исправных машин 99.9%. Но вероятностная модель не может быть включена в нечеткую, они базируются на разных принципах. Правда, часто для нечеткой модели можно найти эквивалентную вероятностную
                                        0
                                        3) Относительно задачи. Разница с моделью в классической логике в следующем. Вы неявно сформировали продукцию следующего вида:
                                        исправна(X) и видит_пешехода(Y) -> не_задавит(X).
                                        Дело в том, что в классической логике Вы УВЕРЕНЫ в истинности этой продукции. В нечеткой логики это не так, поскольку неопределенность в предпосылке или в заключении ведет к неопределенности самой импликации.

                                        Можно построить нечеткую модель следующим образом:
                                        X — машина
                                        Y — водитель
                                        водит(Y, X) и (неисправна(X) или не_видит(Y)) -> собьет_пешехода(X)
                                        Это продукционная модель в логике предикатов. Каждый предикат определяет соответствующее множество объектов. Нечеткая логика позволяет задать степень принадлежности X и Y к соответствующим множествам. Если речь об автоматической системе управления, она может на основании полученной степени принадлежности X к множеству сбивших пешехода принять соответствующее решение.
                                        В статье не обсуждалась нечеткая импликация, поэтому я вскользь ее коснусь. Общий вид продукции
                                        Если x есть A, ТО y есть B.
                                        Нам нужно определить «правдивость» того, что y есть B, имея «правдивость» того, что x есть A и «из x следует y». Проблема в том, что степень истинности этой импликации также нужно задать.
                                        Это очень поверхностное объяснение, вообще нечеткие продукционные модели весьма сложны и интересны. Если Вам требуется более подробное объяснение — напишите в личку, буду рад помочь
                                          0
                                          Спасибо еще раз за объяснение!

                                          Кажется я начал понимать разницу:). Проблема в определении понятия правдивости. Похоже, что не для каждой задачи можно применять нечеткую логику. Т.е. задача с водителем не подходит просто потому, что водитель не может видеть пешехода на 70%. Он его либо видит, либо не видит. Вот если бы мы считали что-то вроде нажатия на педаль тормоза, эффективность тормозной системы, трения между шиной и асфальтом, тогда можно было бы сказать, что эти значения от 0 (совсем не тормозят машину) до 1 (тормозят максимально быстро) и тогда бы надо было применить И ко всем этим значениям, чтобы получить значения торможения машины целиком. И уже, исходя из этого значения, можно предсказать поведение машины. Я правильно понимаю теперь?

                                          Честно говоря, мне для работы такое не надо, но просто интересно понять. Еще раз спасибо за объяснение.
                                            0
                                            В целом, да, хотя не обязательно так усложнять модель. Если Вас интересует построение нечетких моделей, почитайте «В.В.Борисов, В.В.Круглов, А.С.Федулов. Нечеткие модели и сети». Книга сложная, но стоящая.
                                  0
                                  Автор несколько запутал публику примерами. В случае с ракетой модель вероятностная, поскольку речь о событиях, и если известна вероятность каждого события и закон распределения случайной величины, можно, образно говоря, подбросить монетку и принять решение. А вот в случае с иероглифами — это действительно очень хороший пример применения нечеткой логики, поскольку на основании некоторого множества фактов (степень похожести категорий, степень похожести черт и т.п.) требуется логически установить достоверность выводимого факта «иероглифы одинаковые», или «иероглифы принадлежат к одному множеству». Для этой задачи существует эквивалентная вероятностная интерпретация, но нечеткая более интуитивная, а значит, предпочтительней.
                                  0
                                  Я использую fuzzy logic в оценочной деятельности с 2012 года (в т.ч. в оценке интеллектуальной собственности):

                                  Костин А.В., Смирнов В.В. Метод согласования результатов оценки стоимости, основанный на нечеткой логике // Имущественные отношения в Российской Федерации, №12 (135), 2012. — C.6-20. — www.labrate.ru/kostin/064749.pdf

                                  Костин А.В. Отчет об оценке рыночной стоимости исключительных прав на изобретения и связанных с ними ноу-хау / Материалы к круглому столу «Оценка интеллектуальной собственности: функциональный подход и продвинутые методы» 14.06.2016 (ЦЭМИ РАН) // Библиотека LABRATE.RU (Сетевой ресурс), 11.06.2016. — www.labrate.ru/kostin/otchet-IP-Golden_peROO-2008.htm

                                  Рекомендации по ее использованию вошли в нормативные документы крупного СРО оценщиков:

                                  СНМД РОО 04-070-2015. Методические рекомендации по согласованию результатов, полученных разными подходами / Издание официальное. — М.: Российское общество оценщиков, 2015. — 36 с. — URL: sroroo.ru/upload/iblock/323/mr-po-soglasovaniyu-rezultatov.pdf

                                  СНМД РОО 04-090-2015. Методические рекомендации по раскрытию неопределенности результатов оценки / Издание официальное. — М.: Российское общество оценщиков, 2015. — 22 с. — URL: sroroo.ru/upload/iblock/b03/mr-po-raskrytiyu-neopredelennosti-rezultatov-otsenki.pdf

                                  Only users with full accounts can post comments. Log in, please.