`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Четко о нечетком

0 
 
Сегодня термины fuzzy set и fuzzy logic далеко не столь популярны, как, например, в середине восьмидесятых годов. Тогда словосочетание "нечеткая логика" буквально не сходило со страниц самых разных изданий -- от микротиражных сугубо специализированных до массовых и столь научно-популярных, что термин "научный" при упоминании их названий приходилось произносить как-то стыдливо. В общем, было то, что скупые на слова американцы называют hype. Опять же, совершенно очевидно -- осознать hype можно только после его окончания, что и произошло со всем содержащим нечеткое понятие fuzzy. К середине 90 х годов на еще недавно столь многообещающую технологию начались вялые "гонения". Сначала анализ цитирования в научных работах выявил катастрофический спад интереса ученых-теоретиков. Затем откликнулись практики -- слово fuzzy якобы возглавило самый "бесперспективный" раздел в программировании. И вот, к началу нового тысячелетия, у многих создалось впечатление, что нечеткая логика -- это что-то некогда очень модное и сегодня совсем забытое. Вроде белых нейлоновых мужских рубашек -- кратко прозвучавшего вопля моды, оставившего заметный лишь представителям уходящего поколения след в допотопных фильмах. Как обычно бывает, на деле все и так, и одновременно совсем не так. Некогда возлагаемые на "нечеткую логику" как теорию и технику решения всех проблем ожидания не подтвердились -- точно так же, как не подтвердились ранее и не подтвердятся в будущем все аналогичные ожидания от "самых современных лекарств от всех болезней". Но и теория, и практика от этого ни в коем случае нисколько не пострадали. Скорее даже наоборот. C одной стороны, для нечеткой логики нашлись столь четко очерченные области применения, что стало возможным создание мощных инструментальных средств, позволяющих спрятать множество нетривиальных низкоуровневых математических операций за удобными пользовательскими интерфейсами и выразительными проблемно-ориентированными графическими метафорами. С другой стороны, фундаментальные математические операции нечеткой логики настолько четко определены, что они давно и успешно реализованы "в железе" (точнее, в системах команд) серийно выпускаемых однокристальных микроконтроллеров. Впрочем, высокоуровневая инструментальная поддержка fuzzy logic -- предмет отдельного обстоятельного разговора в издании, не содержащем слова "обозрение" в названии. Мы же поговорим о собственно главных идеях "нечеткости", как обычно, не оставив без внимания ярких личностей, стоящих за этими идеями, и, наконец, для полноты знакомства с забытым незнакомцем -- буквально в нескольких словах опишем аппаратную реализацию нечеткой системы команд (fuzzy command set).


От парадокса к теории...

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

Стандартное "четкое" множество строится на основе математической конструкции, "отсеивающей" из "универсального множества" (в общем случае -- содержащего все во Вселенной) некоторую часть его элементов. За "отсев" отвечает так называемая характеристическая функция, значение которой для каждого элемента универсального множества может принимать строго (или, в принятых здесь терминах, четко) одно из двух возможных значений: 1 или 0. Формального описания "характеристической функции вообще" в математических терминах не существует, о ней принято говорить естественным языком примерно так: если элемент универсального множества обладает свойством (или набором свойств) S, то характеристическая функция для этого элемента равна 1, в противном случае ее значение 0. То есть фактически любое множество определяется этим самым свойством (или набором свойств) S и объединяет некоторое количество (не обязательно конечное, счетное) элементов, обладающих свойством S. Четкость классических множеств заключается в строгой определенности значений характеристической функции -- элемент или строго определенно принадлежит множеству (характеристическая функция равна 1) или строго определенно не принадлежит ему (характеристическая функция 0). И такая определенность очень долго устраивала специалистов по теоретической и прикладной математике.

А теперь давайте попробуем из всей бесконечности "всего" в нашей Вселенной, в которой, очевидно, есть место и для таких объектов, как "вода" и "стаканы", сформировать множество на основе вполне понятного человеку свойства S, определенного словами "стакан воды". Стакан, до краев наполненный водой, очевидно, удовлетворяет этому свойству -- и характеристическая функция для такого элемента множества будет равна единице. А какое значение должна принимать характеристическая функция, если стакан наполнен водой на две трети? А если наполовину? А если стакан наполнен водой всего на треть -- он еще "стакан воды" или уже не совсем?

Этот "парадокс стакана воды" на самом деле не иллюстрирует ничего другого, кроме специфики формирования характеристической функции. Люди понимают (или умеют понимать) неформально определенные свойства вроде "стакана воды", "среднего возраста", "небольшого роста". Машинные (традиционные вычислительные) алгоритмы же, напротив, оперируют строгими значениями: "123 миллилитра", "34 года", "163 сантиметра". Именно эти (как видно -- весьма тонкие и неплохо определенные) отличия в свое время провоцировали модные рассуждения об ЭВМ пятого поколения на основе нечеткой логики, которым, дескать, суждено стать вычислительной основой искусственного интеллекта. Впрочем, с середины восьмидесятых ничего ни с пятым поколением, ни с искусственным интеллектом не случилось (разве что о них почти все забыли).

Первая публикация, в которой прозвучал термин fuzzy set (нечеткое множество) и была сформулирована главная идея нечеткости, датируется 1965 годом. Ее автор -- Лотфи Заде -- сегодня является одним из самых признанных в мире прикладных математиков и системотехников (перечень регалий поныне здравствующего 83 летнего Заде, похоже, займет больший объем, чем вся эта статья, посему знакомьтесь сами: www.cs.berkeley.edu/~zadeh/). Отец теории нечетких множеств -- личность с на удивление яркой историей. Клише соцреалистического прошлого "никто не забыт, ничто не забыто" в случае с ним почему-то не сработало ни разу. Поэтому восстановим справедливость. Лотфи Заде был рожден в 1921 г. в советском Баку, в советской семье, которая по своему составу являлась "классикой шестидесятых" (единением в одной ячейке общества пресловутых физиков и лириков). Сегодня, читая работы Заде, хорошо понятно, что его отец-журналист и мать-физик весьма мудро поступили, когда в 1931 г. смогли увезти десятилетнего Лотфи подальше от надвигающихся побед коллективизации и индустриализации -- в Иран (точнее, тогда еще в Персию). Там будущий ученый с мировым именем получил более чем неплохое образование сначала в частной пресвитерианской школе в Тегеране (здесь так и хочется хмыкнуть -- в Персии, почти 90% населения которой исповедовало ислам, нашлось место и для одной из разновидностей христианства), а затем -- в Университете Тегерана. Ну а в "послеперсидский" период путь будущего ученого вполне традиционен для большинства высококлассных специалистов: непременный Массачусетский технологический институт (MIT), изучение системотехники, Беркли... Впрочем, довольно истории -- сам Лотфи Заде не обижался на игнорирование его советской властью, не восхищался признанием его "выдающимся азербайджанцем" после логического завершения оной. Он всегда считал себя гражданином мира: "Вопрос в действительности не в том, кто я -- американец, русский, иранец, азербайджанец или кто-то еще... Я формировался людьми всех этих национальностей и всеми культурами, носителями которых являлись эти люди, и я чувствую себя комфортно среди них всех".

Возвращаясь к теории fuzzy sets, мы теперь располагаем вполне достаточными сведениями для того, чтобы весьма точно сформулировать ее главное отличие от классической теории четких множеств. Если для четких множеств результатом вычисления характеристической функции могут быть только два значения -- 0 или 1, то для fuzzy sets это количество бесконечно, но ограничено диапазоном от нуля до единицы. Справедливости ради следует отметить, что Лотфи Заде, формулируя это главное свойство нечетких множеств, стоял на плечах гигантов. В начале 1920 х годов польский математик Лукашевич трудился над принципами многозначной математической логики, в которой значениями предикатов могли быть не только "истина" или "ложь". В 1937 г. еще один американский ученый -- выходец из богатого на специалистов по нечеткой логике Баку -- Макс Блэк (Max Black) в своей статье в журнале "Философия науки" (Philosophy of Science) впервые применил многозначную логику Лукашевича к спискам как множествам объектов и назвал такие множества неопределенными (vague). И только почти через 30 лет после этой работы Блэка Заде на основе логики Лукашевича построил полноценную алгебраическую систему. Прошли еще долгие 10 лет, и лед тронулся: теоретическая алгебра Заде благодаря Ибрагиму Мамдани (Ebrahim Mamdani) из лондонского колледжа королевы Марии (Queen Mary College) заработала "в железе". Именно Мамдани в 1975 г. спроектировал первый функционирующий на основе алгебры Заде контроллер, управляющий паровой турбиной (стоит заметить, что принципы построения алгоритмики его стали каноническими и увековечены общепринятым среди специалистов названием Mamdani-type controller).

Итак, отличие между четкими и нечеткими множествами заключается "только" в количестве возможных значений характеристической функции. "Только" -- потому что, например, системы управления, реализованные на основе четких и нечетких алгебр, могут отличаться ровно настолько, насколько число "два" отличается от бесконечности. Здесь достаточно привести ставший каноническим пример -- знаменитую управляемую тележку, способную двигаться вперед-назад по рельсам, балансирующую шестом, закрепленным на ней одним концом в шарнире. Управляющую программу такой системы можно создать на основе разной алгоритмики, но при "лобовом подходе" (решение систем дифференциальных уравнений в реальном времени) необходим очень мощный вычислитель. В то же время алгоритмы нечеткой логики позволяют блестяще решить задачу при использовании в качестве управляющего компьютера 16 разрядного микроконтроллера с целочисленным арифметико-логическим устройством и тактовой частотой всего 2 MHz.


От теории -- к практике

Похоже, наступило время конкретизаций. Давайте от весьма абстрактных понятий нечеткого множества и характеристической функции перейдем к вещам более конкретным. Например, к вполне реальному примеру управления, скажем, кондиционером. Представим себе такой, мягко говоря, далекий от демократических ценностей кондиционер, в котором на очень низкооплачиваемой должности "управляющего" (желающие могут использовать эквивалентный термин "менеджер") задействован человек, получающий от сидящих в кондиционируемых помещениях сотрудников пожелания относительно температуры. Например, из обслуживаемой комнаты сообщают: "Что-то тут жарковато". "Управляющий" начинает увеличивать подачу охлажденного осушенного воздуха в комнату (например, увеличивает обороты двигателей компрессора и вентилятора кондиционера). Причем по предыдущему опыту "управляющий" знает, что если пожелание озвучено в мягкой обезличенной форме, то надо увеличить обороты немного. Ну, может, даже совсем чуть-чуть добавить, и все будут довольны. А вот если пожелание нельзя напечатать ввиду изобилия ненормативной лексики, адресованной лично "управляющему", то обороты надо увеличивать резко, но ненадолго. И так далее. В принципе, именно такой подход всегда использовался людьми при создании неавтоматических систем управления, а якобы финальную точку в его применимости поставил центробежный автоматический регулятор оборотов паровой машины, изобретенный Джеймсом Уаттом. И именно такой подход прекрасно описывает алгоритмику работы основанной на нечетких множествах управляющей системы. Нечеткими множествами в указанном примере являются выраженные словами "температуры" и "обороты двигателя". Например, "температуры" могут быть такими: "колотун", "холодно", "весьма прохладно", "свежо", "отлично", "тепло", "жарковато", "жарко", "невозможно", "@#$%!!!!". Каждое из значений в данном случае является нечетким множеством, не только отсеивающим с помощью некоторой характеристической функции определенный диапазон температур, но и указывающим степень соответствия приведенному в названии свойству. Иначе говоря, нечеткое множество, именуемое "свежо", может быть представлено в виде набора пар "температура -- степень соответствия свойству "свежо"". Совершенно очевидно, что только в каком-то диапазоне температур степень соответствия будет принимать ненулевые значения (скажем -- от 8° до 11° по Цельсию), потому что меньше восьми градусов -- это еще не совсем "свежо" (скорее, "весьма прохладно"), а больше одиннадцати -- это уже совсем не "свежо". В диапазоне от 8° до 11° характеристическая функция будет принимать ненулевые значения, закон ее изменения нам в данном случае неважен: важнее понимать, что где-то посередине этого диапазона находится наиболее соответствующее определению "свежо" значение температуры. Чем ближе к границам множества "свежо", тем менее соответствует температура свойству "свежо". По такому же принципу строятся и нечеткие множества "оборотов двигателя" -- например, "не очень быстро" может отсеивать ненулевыми значениями характеристической функции диапазон от 300 до 800 об/мин и т. д. Ну а теперь давайте вспомним модель с "менеджером кондиционера" -- для него входными данными являются пожелания относительно температуры, пользуясь только что определенными терминами -- нечеткие множества "температуры", а его выходными, управляющими воздействиями являются нечеткие множества "оборотов двигателя". Соответственно, создание управляющей системы, основанной на алгебраических принципах нечетких множеств, заключается в отображении описывающих ее входы на описывающие ее выходы нечетких множеств. Кстати, это весьма точная формулировка, которую мы получили, вообще не прибегая к математическому аппарату. Чтобы раскрыть последнюю тайну, осталось еще раз вернуться к примеру с менеджером -- внимательный читатель должен был заметить неоднократно ненавязчиво использовавшиеся при описании поведения "управляющего" конструкции "если -- то" ("...если пожелание озвучено... то надо...", "...если пожелание нельзя... то обороты..."). Собственно говоря, это и есть основные конструкции (точнее, правила) нечеткой логики.

Естественно, основными они названы не в силу их фундаментальности в теории fuzzy sets, а из-за категорической необходимости для понимания принципов работы реальных систем на основе нечеткой логики. Если использовать четкую терминологию, указанные правила называются предикативными, а механизм, позволяющий с их помощью отображать нечеткие множества входов на выходы (бесспорно, тоже нечеткие множества), принято называть механизмом нечетких выводов. Наборы предикативных правил обычно формулируются отлично знающими предметную область специалистами -- экспертами. И, в частности, поэтому некоторые системы, основанные на механизме нечетких вызовов, также называют экспертными. Детали реализации механизма нечетких выводов, собственно говоря, мы и определили как алгоритмику. Она образована последовательностью четырех базовых действий: фазификации, логического вывода, композиции и дефазификации. Поясним жутковатые, совершенно неславянские "...фикации" -- они, естественно, происходят от английского fuzzy и обозначают то, что крайне трудно односложно выразить русским языком: "привнесение нечеткости" и "устранение нечеткости" соответственно. Так как реализующая нечеткий алгоритм программа получает на вход вполне "четкие" данные, например совершенно конкретное мгновенное значение температуры с датчика, а оперирует нечетким множеством и значением характеристической функции (степенью принадлежности этого значения к нечеткому множеству), то, очевидно, необходимо в наборе пар, описывающих нечеткое множество, найти содержащую это исходное значение температуры пару. Такой процесс и называется фазификацией. Дефазификация, напротив, позволяет по полученным выходному нечеткому множеству и значению характеристической функции восстановить конкретное значение выходной величины (это, очевидно, также задача нахождения подходящей пары, но уже с известным значением степени принадлежности к множеству). Сущность промежуточных этапов может изменяться для разных алгоритмик, однако ничего особенно страшного в них нет (мы не будем их рассматривать только потому, что умышленно избавлялись от неподходящей для объемов статьи математики).

Вот, пожалуй, и все, что мы смогли позволить себе в небольшой журнальной статье. Но, как было обещано, несколько слов мы все-таки скажем о "железных fuzzy-вычислителях". Точнее, об одном семействе микроконтроллеров, ставшем на сегодняшний день классикой серийно производимых доступных машин нечеткой логики. Естественно, речь идет о знаменитом семействе HC12 компании Freescale (бывшее полупроводниковое подразделение Motorola). В системе команд HC12 реализованы такие уникальные конструкции, как, например, MEM и WAV, по сути, являющиеся однокомандной реализацией процедур фазификации и дефазификации. Кроме того, HC12 поддерживает и две команды, осуществляющие промежуточные этапы механизма нечетких выводов. Если добавить к этим четырем сугубо специализированным машинным командам почти десяток "fuzzy-ориентированных" инструкций, можно не удивляться тому, что HC12 так любим и почитаем производителями встраиваемых систем в самых разных областях. Ведь контроллеры этого семейства на нечетких задачах обгоняют более дорогие и универсальные 32 битные чипы не в несколько, а в десятки и сотни раз.
0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT