Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

НИТ / О нечеткой логике

.doc
Скачиваний:
24
Добавлен:
27.04.2015
Размер:
67.58 Кб
Скачать

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

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

Для начала краткий экскурс в теорию множеств. Множество – это совокупность нескольких объектов, обладающих определенным свойством. Например, множество всех людей, находящихся на нашей планете. Множество автомобилей марки «Ауди» с цветовыми координатами RGB (255, 165, 0). Множество всех самцов какаду, сидящих на ветке на одной лапе ровно в 15 часов 39 минут по Гринвичу. Суть четких множеств заключается в абсолютной их категоричности. То есть, для того, чтобы определить, принадлежит ли объект какому-то множеству, нужно ответить на вопрос, обладает ли он свойством, определяющим это множество. Да/Нет. Ни больше, ни меньше. Единица больше нуля? Да. Значит, она принадлежит к множеству положительных чисел.

Перейдем ближе к телу, к теории нечетких множеств. Создана она была американским ученым азербайджанского происхождения Лотфи Заде, для того, чтобы адаптировать теорию множеств к способу человеческого мышления. Ведь как человечишко мыслит? Если, будучи на пляже, спросить купающегося: «Скажи, мил человек, какую температуру имеет вода по шкале Фаренгейта, с точностью до десятых долей градуса?», - он посмотрит на вас, как на душевно больного. А если задать вопрос: «Как водичка сегодня?», он сообщит: «Холодная/горячая/теплая», или буркнет «мокрая», если сегодня не в духе. Весь цимес в том, что «холодная вода» - это достаточно размытая формулировка. Один будет в блаженстве нежиться там, откуда второй сбежит на берег греться через две минуты. Так уж устроен человек, субъективизм и отсутствие четких границ – это про нас.

Некоторые уже смогли сообразить, почему именно нечеткие множества. Крайне трудно определить, сколько людей обладает свойством «высокий». Для меня, двухметрового красавца, косой сажени в плечах, высокий – это как минимум не ниже уровня моего уха. А коротышка полутора метров будет смотреть на человека ростом 170 см задрав голову – для него высокий рост начинается гораздо раньше. Это что касается субъективизма.

Вторая сложность заключается в размытости границ. Возможно ли точно задать то количество сантиметров, которое отделит человека среднего роста от низкого? 170 с половиной? 172 и три четверти? Разделение очень и очень условно. Итак, мы вплотную подошли к отличию нечетких множеств от четких.

Барабанная дробь, мхатовская пауза… Итак, нечеткие множества отличаются от четких тем, что объекты, принадлежащие нечетким множествам, могут обладать определяющим их свойством в разной степени. Условились считать эту степень принадлежности лежащей в интервале от нуля до единицы, но если кому-то удобнее, то он может умножить на 100, и будут вам проценты.

Допустим, пьете вы обжигающий кофе, чашка дымится. С уверенностью 0,99 (99 процентов – первый и последний раз делаю работу за вас) можно утверждать, что кофе обладает свойством «горячий». Если же он (кофе, в смысле) имеет температуру 50 градусов по Цельсию, то степень обладания свойством «горячий» будет гораздо ниже, скажем, 0,76 (теперь считайте сами). В то же время, есть объекты, которые принадлежат множеству «горячий» с нулевой или единичной степенью. Например, полузамерзший кофе сможет назвать горячим лишь помешанный, либо не знающий русского языка, а кипящий – это горячий сто пудов. Примеров можно привести нескончаемое количество, благо, что практически любая человеческая категория, которая используется в повседневной жизни, является нечеткой. Полагаясь на ваше богатое воображение, оставляю задачу нахождения других примеров для самостоятельного решения.

Почему же создание подобной теории было так важно, почему на нее обратили столь пристальное внимание? Ответ прост: тут скрыто золотое дно. Колоссальная широта применения. Допустим, вы инженер, и перед вами стоит задача спроектировать микроволновку. До какой температуры человек будет разогревать еду? До 40,2°С? Хрен там. До горячей, что есть нечеткое множество. А задача микроволновки – придать хавчику такую температуру, которая с единичной степенью достоверности принадлежала бы к множеству «горячо».

Дальше начинается самое веселое, прогульщики уроков математики могут с воем разбегаться в стороны. А? Что? Я обещал обойтись без этого? Как говорил старина Арни в известном фильме – «Я солгал». Степень принадлежности как правило обозначается греческой буквой «мю» - μ. Чтобы не скучать, введем понятие лингвистической переменной – это такая переменная, которая может принимать значение в виде слов человеческого языка. То есть, лингвистическая переменная «рост» может принимать значения: «высокий», «средний», «низкий». Значения лингвистической переменной будем называть терм-множествами, обращаю внимание – они являются нечеткими. И, наконец, существует понятие универсального множества – обычное, четкое множество, содержащее все значения, которые может принимать обычная переменная. Обычная переменная «рост человека» может принимать значения от нуля до «сколько там рекорд Гиннеса, я не помню».

Задача функции принадлежности (ФП) – определить, с какой степенью обычная переменная принадлежит значению лингвистической переменной. Раз уж я начал педалировать тему роста, разовью: ФП определяет, с какой степенью человек ростом 184 см принадлежит терм-множеству «средний». Итак, подобьем бабки. У нас имеется лингвистическая переменная. У нас есть несколько ее значений, каждое из которых является нечетким множеством. Наконец, у нас есть универсальное множество – множество числовых значений обычной переменной. Перед нами стоит следующая цель: определить для каждого из нечетких множеств свою функцию принадлежности, т.е. для каждого из элементов универсального множества задать степень принадлежности соответствующему нечеткому множеству. Тогда мы сможем ткнуть на конкретное значение переменной и посмотреть, с какой степень оно принадлежит к какому-либо нечеткому множеству. Все, гроза прошла, можно утереть пот и ненадолго расслабиться. Дальше пойдут веселые картинки, после чего ненадолго продолжим развлекаться. На картинках я проиллюстрирую смысл функции принадлежности, покажу, каких видов бывают эти звери, с чем их едят, и объясню, как этих зверей строить. Вернемся к полюбившейся вам теме роста человека. Возьмем для примера множество «средний» ипостроим график функции принадлежности.

Теперь можно, вооружившись остро заточенным карандашом, выбрать любое значение «икс» и посмотреть, с какой степенью этот икс удовлетворяет условию среднего роста. То, что метр восемьдесят – это железно. Метр семьдесят два – со степенью 0,5. Рост метр пятьдесят средним ну никак не является, поэтому степень принадлежности равна нулю. И так далее. Отметим, что приведенная функция называется треугольной. В это поверить трудно, и тем не менее.

Но мы взяли готовую функцию, которую нам кто-то (кто-то!) любезно предоставил. Как же самим построить аналогичную функцию? Есть два способа: простой и с заморочками. По понятным причинам опишу лишь простой. Для начала, нужно собрать группу экспертов. Ну, то есть, тех бездельников, которые считают, что во всем разбираются и знают, как на самом деле устроен мир. Дать каждому эксперту по карандашу и блокноту. Потом перечислить значения переменной и попросить поставить «1» (палочку, крестик – опционально) напротив этого значения, если эксперт считает, что значение переменной принадлежит нечеткому множеству. Ноль – в противном случае. После чего для каждого значения переменной просуммировать нули и единицы и взять среднее - то бишь, разделить получившуюся сумму на количество бездельников. Получившееся значение будет лежать в интервале от нуля до единицы (оба значеия - включительно). Некоторые могли догадаться, что мы получили значение функции принадлежности для конкретного значения переменной. Получив величины ФП для всех значений переменной икс, можно строить график. Или не строить, если лень.

Соседние файлы в папке НИТ