Третьего дано
АрхивСлышали ли вы когда-нибудь о нечеткой логике? Нет, я не про ту, которая нечетко работает, а про ту, которой дают на вход нечеткие данные, а она все равно четко работает. Есть такая буква! Назовете слово целиком? Ладно, подсказываю: "fuzzy". Встречали, разумеется.
«My CPU is a neuro net processor, a learning computer.
The more contact I have with humans the more I learn»
Арнольд Шварцнеггер. «Терминатор»
Слышали ли вы когда-нибудь о нечеткой логике? Нет, я не про ту, которая нечетко работает, а про ту, которой дают на вход нечеткие данные, а она все равно четко работает. Есть такая буква! Назовете слово целиком? Ладно, подсказываю: «fuzzy». Встречали, разумеется. На стиральных машинах, микроволновках, кондиционерах, видеокамерах. Правда, продавец так и не мог объяснить вам, что это такое и почему дороже стоит.
С развитием вычислительной техники, которая давным-давно обогнала по быстродействию отдельных логических элементов человеческий мозг, выявился казус: с одной стороны, задачи, которые не под силу решить человеку за приемлемое время, легко выполняются не самыми крутыми микропроцессорами, а с другой - то, с чем легко справляется человек, до сих пор с трудом «переваривают» компьютеры. Проблема в том, что ситуация напоминает разговор глухого со слепым - компьютер и человек оперируют разной логикой. Первый не признает компромиссов: да или нет, ноль или единица. Человек таких ограничений всячески избегает, оставляя путь для отступления на случай неверного ответа. Оно и понятно: если для машины ответ не имеет никакого значения, то для человека он - основа выживания, когда постоянно приходится выбирать меньшее из возможных зол. Собственно, и при определении путей развития компьютеров мы, несколько сомневаясь, выбрали цифру вместо аналогового сигнала, и, на тот момент, вряд ли ошиблись. Но путь для отступления остался, и, вдоволь наигравшись с тем, что выросло из булевой алгебры, можно оглянуться назад, чтобы с новых позиций оценить идеи, оставленные нами до лучших времен.
Идеи отказа от двоичного представления информации витают в воздухе давно. Помнится, редакция даже получала статьи, описывающие преимущества троичной логики («да», «нет», «не знаю») перед двоичной, но не сочла возможным публиковать их. Дело не в том, что такой подход к логике невозможен или ошибочен (первые работы по троичной логике появились в 1900 году, ею, в частности, занимался Дональд Кнут), а в том, что за троичной логикой будет (и действительно была) «четверичная», «пятеричная» и так далее, а между тем довольно давно разработаны более общие принципы построения логических систем, позволяющие оперировать с любой многозначной логикой, в свете которых двоичная или троичная является всего лишь частным случаем. Это так называемая нечеткая логика (fuzzy logic), а принципы ее подобны тем, которыми руководствуется человек, принимая решения. Разумеется, это не панацея и не переворот в компьютерном мире, нечеткая логика не решит тех задач, которые не решаются на основе логики двоичной, но во многих случаях она удобнее, производительнее и дешевле.
Реализация нечеткой логики может быть различной. В самом простом случае ее можно сделать программной эмуляцией на базе существующих процессоров классической архитектуры (и для этого существует немало программных средств, с одним из которых можно подробнее ознакомиться в следующей статье), но для получения реальных преимуществ в быстродействии лучше подходят специализированные аппаратные решения, информация о некоторых из них приведена во врезке.
Если двигаться дальше по пути приближения к принципам работы мозга, а именно каскадировать fuzzy-вычислители, мы получим один из вариантов нейропроцессора или нейронной сети. Во многих случаях эти понятия просто объединяют, называя общим термином «neuro-fuzzy logic». Углубляться в дебри нейросетевых вычислений мы сейчас не будем - они вполне заслуживают отдельной темы номера, представим лишь две реализации нейровычислителей «в железе» от компании Intel, информация о которых была закрыта Министерством обороны США сразу после их появления. Следует отметить также, что в Интернете, набитом под завязку данными по микроэлектронике, ресурсов по нечеткой логике, fuzzy-процессорам и нейропроцессорам не так уж и много. Из того, что есть, большинство датировано не позднее, чем 1998 годом, но даже для них три четверти ссылок не работают. Вероятно, этот факт объясняется серьезным интересом военных к подобным разработкам: так, известно, что NASA рассматривает возможность применения (если еще не применяет) нечетких систем для управления процессами стыковки космических аппаратов. Будем надеяться, новые технологии достанутся не только военным, и нам не придется узнавать о них со слов Терминатора..
Некоторые аппаратныe fuzzy-процессоры
[i41518]
Некоторые аппаратныe fuzzy-процессоры
-
ST52 Dualogic (STMicroelectronics) - cемейство 8-битовых микроконтроллеров, содержащих в одном корпусе традиционное вычислительное ядро, ядро для fuzzy-вычислений и периферийные схемы. Поддерживает специальный набор инструкций для работы с нечеткой логикой и позволяет определять несколько независимых наборов правил для нескольких различных алгоритмов
-
ST62 (STMicroelectronics) - 8-битовый микроконтроллер со встроенной, однократно программируемой памятью для автомобильной промышленности, продолжение семейства Dualogic. Расширенный температурный диапазон (от -40о до +125оС), гарантированный срок хранения данных для памяти EPROM и EEPROM не менее 20 лет.
-
68HC12 (Motorola) - fuzzy-микроконтроллер, базирующийся на ядре Motorola 68HC11 и содержащий специальные функции нечеткой логики. Предназначен для использования с программным пакетом fuzzyTECH и позволяет увеличить скорость выполнения приложений, созданных в этом пакете, до 15 раз и компактность кода до 6 раз по сравнению с реализацией на обычном ядре 68HC11.
-
VY86C570 (Togai InfraLogic) - fuzzy-сопроцессор, 12 -битовое ядро FCA (Fuzzy Computational Accleration), 4Kx12 бит памяти OCTD (Observation, Conclusion, & Temporary Data), память RB (Rule Base), и интерфейсная логика в одном корпусе.
-
SAE 81C99 (Siemens) - fuzzy-процессор, способный выполнять восемь программируемых алгоритмов, обрабатывать 256 входных переменных и формировать до 64 выходных значений максимум по 16384 правилам. Может использоваться как отдельное устройство или в качестве сопроцессора для 8 и 16-разрядных микроконтроллеров. Скорость работы - 10 миллионов правил в секунду.