Подтвердить что ты не робот

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

Я работаю с несколькими алгоритмами AI в школе, и я нахожу, что люди используют слова Fuzzy Logic, чтобы объяснить любую ситуацию, которую они могут решить с помощью нескольких случаев. Когда я возвращаюсь к книгам, я просто читаю о том, что вместо состояния, идущего от On to Off, это диагональная линия, и что-то может быть в обоих состояниях, но в разных "уровнях".

Я прочитал запись в wikipedia и пару учебных пособий и даже запрограммированных материалов, которые "используют нечеткую логику" (реберный детектор и 1-колесный самоконтролируемый робот), и все же я считаю, что это очень запутывает переход от теории к Код... для вас, в менее сложном определении, что такое нечеткая логика?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Предположим на секунду, что функция "любит арахис"

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

Сама функция не должна быть треугольной и часто не является (это просто проще с искусством ascii).

Нечеткая система, вероятно, будет иметь многие из них, некоторые даже перекрывающиеся (даже противоположности):

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

так что теперь c "добрый любит арахис, любопытный не любит арахис", а d "действительно не любит арахис"

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

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

Ответ 3

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

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

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

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

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

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

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

Ответ 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 выполнено.

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

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

Ответ 5

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

Скажем, вы хотите сделать термостат, и вы хотите, чтобы он составлял 24 градуса.


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

  • Правило 1: разогревайте при полной мощности, когда он холоднее, чем на 21 градус.
  • Rule2: остывать при полной мощности, когда это теплее 27 градусов.

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


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

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

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

Ответ 6

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

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

Ответ 8

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

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

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

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

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

Ответ 9

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

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

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

Ответ 10

Ниже приводится своего рода эмпирический ответ.

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

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

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

Ответ 11

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

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