Что такое нечеткая логика?

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

Я прочитал статью в Википедии и пару руководств и даже запрограммировал материал, который «использует нечеткую логику» (детектор границ и 1-колесный самоуправляемый робот), и все же меня очень сбивает с толку переход от теории к коду. Что такое нечеткая логика, в менее сложном определении для вас?


person DFectuoso    schedule 30.12.2008    source источник


Ответы (11)


Нечеткая логика - это логика, в которой членство в состоянии, по сути, представляет собой число с плавающей запятой с диапазоном 0..1 вместо int 0 или 1. В результате вы получаете такие вещи, как, например, изменения, которые вы вносите в систему управления несколько естественно более тонко настроены, чем то, что вы получили бы с наивной двоичной логикой.

Примером может служить логика, которая ограничивает активность системы на основе активных TCP-соединений. Допустим, вы определили «слишком много» TCP-соединений на вашем компьютере как 1000 и «слишком много» как 2000. В любой момент ваша система имеет состояние «слишком много TCP-соединений» от 0 (‹= 1000) до 1 (> = 2000), который вы можете использовать в качестве коэффициента при применении любых доступных вам механизмов дросселирования. Это гораздо более снисходительно и отзывчиво к поведению системы, чем наивная двоичная логика, которая знает только, как определить «слишком много», и полностью или «не слишком много» задросселировать, а не задросселировать вообще.

person chaos    schedule 30.12.2008
comment
Верно, а другая половина правил нечеткой логики обычно представляет собой нечеткое множество (а не одно значение). Эти последовательные нечеткие множества модифицируются в зависимости от степени истинности их антецедентов, и нечеткие выходные данные всех правил объединяются в окончательный нечеткий выходной набор. Именно этот последний набор дефаззифицируется, чтобы получить в качестве ответа одно значение. - person Predictor; 03.02.2011

Я хотел бы добавить к ответам (которые были модифицированы), что хороший способ визуализировать нечеткую логику следующий:

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

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 - "kinda любит арахис, вроде как арахис не любит", а d - "действительно не любит арахис".

И вы можете программировать соответственно на основе этой информации.

Надеюсь, это поможет визуальным ученикам.

person Steven Evers    schedule 30.12.2008

Лучшее определение нечеткой логики дает ее изобретатель Лотфи Заде:

«Нечеткая логика означает представление проблем компьютерам способом, схожим с тем, как их решает человек, а суть нечеткой логики заключается в том, что все зависит от степени».

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

Есть несколько шагов для обработки нечеткой логики (рис. 1). Эти шаги: во-первых, фаззификация, при которой четкие входные данные преобразуются в нечеткие входные данные, во-вторых, эти входные данные обрабатываются с помощью нечетких правил для создания нечетких выходных данных и, наконец, дефаззификация, которая приводит к степени результата, поскольку в нечеткой логике может быть более одного результата с разной степенью.

image004

Рисунок 1. Нечеткие шаги процесса (Дэвид М. Бург, стр.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

На последнем шаге дефаззикация используется для создания четкого вывода, представляющего собой число, которое может определять энергию, которую мы должны использовать для защиты игрока во время игры. Центр масс - это распространенный метод создания выходных данных. На этом этапе веса для вычисления средней точки полностью зависят от реализации. В этом приложении считается, что охраннику придается большой вес, а иногда нет - охраннику уделяется меньший вес. (Дэвид М. Бург, 2004 г.)

image012

Рисунок 5 - нечеткий вывод (Дэвид М. Бург, стр.204)

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

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

Для получения дополнительной информации и возможного применения в игре я написал небольшую статью зацените

person hevi    schedule 25.10.2011
comment
Возможно ли, чтобы общая степень членства превышала 1? И у меня создалось впечатление, что сумма степеней принадлежности к разным множествам всегда должна равняться одной. - person Alfonso Vergara; 23.11.2016

Если говорить о хаосе, то формальная логика - это не что иное, как индуктивно определенный набор, который сопоставляет предложения с оценкой. По крайней мере, так думает теоретик моделей о логике. В случае сентенциальной логической логики:

 (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 удовлетворено.

Если вы действительно хотите узнать больше о неклассической логике, такой как нечеткая логика, я бы порекомендовал либо Введение в неклассическую логику: от "если" к "есть" или Возможности и парадокс

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

person Alan    schedule 30.12.2008

Может быть, пример проясняет, какие преимущества могут быть:

Допустим, вы хотите сделать термостат и хотите, чтобы он был 24 градуса.


Вот как вы бы реализовали это с помощью логической логики:

  • Правило 1: нагрейте на полную мощность, когда ниже 21 градуса.
  • Правило 2: остыть на полную мощность, когда температура превышает 27 градусов.

Такая система будет только один раз на 24 градуса, и это будет очень неэффективно.


Теперь, используя нечеткую логику, это будет примерно так:

  • Правило 1: на каждый градус ниже 24 градусов увеличивайте нагреватель на одну ступень (от 0 до 24).
  • Правило 2: на каждый градус, на который теплее, чем 24 градуса, увеличивайте температуру на одну ступень (от 0 до 24).

Эта система всегда будет где-то около 24 градусов, и она будет только один раз и только время от времени вносить крошечные корректировки. Также он будет более энергоэффективным.

person Wouter van Nifterick    schedule 30.12.2008
comment
Оба реализуют логическую логику - что случилось с нечеткой логикой? - person Jonathan Leffler; 30.12.2008
comment
Для каждого градуса увеличивайте на одну ступень, я имею в виду, что система постепенно работает активнее, когда температура поднимается дальше от 24 градусов, вместо того, чтобы полностью включаться или выключаться. Вот где нечеткая логика. Я что-то упускаю? - person Wouter van Nifterick; 30.12.2008
comment
Нечеткая логика работает не так. Результат тот же, но процесс другой. Нечеткая логика определяется логическими значениями, имеющими вероятностные значения (от 0 до 1), определяющие, насколько значение является частью категории. В вашем примере значения полностью относятся к своей категории (т.е. выше 24 градусов), поэтому, хотя результаты похожи, это не является нечеткой логикой. - person TheEnvironmentalist; 19.11.2013
comment
Как насчет нечетких значений, определяющих интенсивность обогревателя? - person James P.; 29.05.2016

Что ж, вы могли прочитать работы Барта Коско, одного из «отцов-основателей». 'Нечеткое мышление: новая наука нечеткой логики 'с 1994 года можно читать (и довольно дешево можно купить в секонд-хендах на Amazon). Судя по всему, у него есть более новая книга «Noise». с 2006 года, что тоже вполне доступно.

Однако в основном (перефразируя - я не читал первую из этих книг в течение нескольких лет), нечеткая логика - это о том, как вести себя с миром, где что-то, возможно, на 10% круто, на 50% тепло и на 10% жарко, где разные могут приниматься решения относительно степени истинности различных состояний (и нет, это не совсем случайность, что эти проценты не составляют в сумме 100% - хотя при необходимости я бы согласился с поправкой).

person Jonathan Leffler    schedule 30.12.2008

Очень хорошее объяснение с помощью стиральных машин Fuzzy Logic.

person Adeel Ansari    schedule 30.12.2008

Я знаю, что вы имеете в виду, говоря, что переходить от концепции к коду сложно. Я пишу систему подсчета очков, которая смотрит на значения sysinfo и / proc в системах Linux и дает число от 0 до 10, 10 - наихудшее. Простой пример:

У вас есть 3 средних значения нагрузки (1, 5, 15 минут) с (как минимум) тремя возможными состояниями: хорошее, плохое и плохое. Расширяя это, вы можете иметь шесть возможных состояний в среднем, добавив «примерно к» к трем, которые я только что отметил. Тем не менее, результат всех 18 возможных вариантов может вычесть только 1 из очков. Повторите это с потреблением свопа, выделенной виртуальной памятью (выделенной) памятью и прочим ... и у вас есть одна большая миска условных спагетти :)

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

Мне было бы очень легко сказать, если load1 ‹2 вычитает 1, но совсем не очень точно.

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

person Tim Post♦    schedule 30.12.2008

Fuzzy Logic - это методология решения проблем, которая может быть реализована в различных системах - от простых небольших встроенных микроконтроллеров до крупных сетевых многоканальных ПК или систем сбора данных и управления на базе рабочих станций. Он может быть реализован аппаратно, программно или их комбинацией. Нечеткая логика предоставляет простой способ прийти к определенному выводу на основе расплывчатой, двусмысленной, неточной, зашумленной или отсутствующей входной информации. Подход нечеткой логики к управлению проблемами имитирует то, как человек будет принимать решения, только намного быстрее.

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

Чтобы узнать больше, просто посетите: http://en.wikipedia.org/wiki/Fuzzy_logic .

person Badar    schedule 04.07.2012

Следующее - своего рода эмпирический ответ.

Простой (возможно, упрощенный ответ) заключается в том, что «нечеткая логика» - это любая логика, которая возвращает значения, отличные от прямого истинного / ложного или 1/0. Существует множество вариантов этого, и они, как правило, сильно зависят от предметной области.

Например, в моей предыдущей жизни я использовал поисковые системы, которые использовали «поиск по сходству контента» в отличие от обычного «логического поиска». Наша система подобия использовала коэффициент косинуса векторов взвешенных атрибутов, представляющих запрос и документы, и выдавала значения в диапазоне 0..1. Пользователи предоставляли «обратную связь по релевантности», которая использовалась для смещения вектора запроса в направлении желаемых документов. Это отчасти связано с обучением, проводимым в определенных системах ИИ, где логика «награждается» или «наказывается» за результаты пробных запусков.

Прямо сейчас Netflix проводит конкурс, чтобы найти лучший алгоритм предложения для своей компании. См. http://www.netflixprize.com/. Фактически все алгоритмы можно охарактеризовать как «нечеткую логику».

person Peter Rowell    schedule 30.12.2008

Нечеткая логика - это алгоритм расчета, основанный на человеческом мышлении. Это особенно полезно при большом количестве входных переменных. Дан один онлайн-калькулятор нечеткой логики для ввода двух переменных:

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

person Patrick Chung    schedule 28.01.2014