Давайте-ка продолжим изучать методы и технологии Искусственного Интеллекта. Если на прошлых занятиях мы изучали методы и инструменты работы со знаниями, то сегодня мы посмотрим, где всё это можно применять. Так что наша сегодняшняя тема — экспертные системы. Поехали…
Развитие экспертных систем началось чуть ли не с началом эры Искусственного Интеллекта, и разработка этого класса систем была вторым существенным прорывом в исследованиях. Экспертные системы основаны на трёх ранее рассмотренных подходах — представлении знаний, символьных вычислениях и обработке естественного языка.
Когда идея экспертных систем только родилась у пионеров искусственного интеллекта, казалось, что достаточно посадить эксперта, который тщательно формализует свою проблемную область на выбранном формализме представления знаний, и искусственная интеллектуальная система сможет самостоятельно вырабатывать решения в любых ситуациях этой проблемной области. Однако этот наивный подход столкнулся с серьёзными проблемами самого разного характера.
В первую очередь возникли проблемы организационного характера, если так можно выразиться. Хотя в целом они не являются непреодолимыми, разработка экспертных систем серьёзно «провисла». Дело в том, что эксперты не стремятся делиться своим знанием, особенно в целях его неограниченного распространения и применения. Ведь если экспертная система будет решать все задачи за человека в заданной проблемной области, то зачем нужен эксперт?
Другими словами, это вполне обоснованное опасение специалиста в том, что если он поделится своим знанием, то тем самым «размоет» свою полезность и востребованность. Тем не менее, вопрос вполне решаем с учётом того, что большая часть действительно нужных знаний изложена в письменных источниках — статьях и книгах. И их можно использовать для построения баз знаний интеллектуальных систем.
Тем не менее, в конечном итоге даже нашлись эксперты, которые были крайне заинтересованы в создании подобных систем. И они начали работать над базами данных. И тут-то обнаружился следующий проблемный аспект — экспертные знания, в общем-то, не так просто формализовать.
Их прямой перевод на язык формальной логики возможен только в очень ограниченных случаях, а в большей части экспертные знания представляют собой переплетение так называемых «НЕ-факторов» — они неполны, часто противоречивы (особенно если рассматривать знания нескольких экспертов), неточны в силу неточности измерений и фундаментальной неопределённости реального мира. Часто знания выражаются на нечётком естественном языке, и для решения повседневных задач этого достаточно, но совершенно недостаточно для формализации в виде баз знаний.
Даже появление профессии когнитолога или инженера по знаниям не помогло — пришлось развивать математический аппарат. В итоге и эта проблема была побеждена, и сегодня существует большое количество формализмов и методов обработки знаний с НЕ-факторами.
Но и наличие НЕ-факторов в знаниях экспертов не стало такой серьёзной проблемой, как динамика в знаниях. Знания — это не статическая, заранее и навсегда установленная догма, которую можно запрограммировать один раз и дальше пользоваться всегда. В процессе исследований оказалось, что знания — это эволюционирующая сущность, истинная природа которой скрывается от исследователей. А потому было очень сложно формализовать то, как знания изменяются в процессе своей эволюции.
Понятно было, что этот процесс можно описать такими словами, как «обучение», «актуализация» и т. п., однако от этого проще не становилось. Как осуществлять обучение экспертной системы? Когда наступает тот самый момент, характеризующий необходимость актуализировать знания о проблемной области? Кто должен актуализировать знания? Может ли система самостоятельно актуализировать и недополнять свою собственную базу знаний? Это немногие из широкого ряда вопросов, которые встали перед первыми разработчиками экспертных систем. На некоторые из таких вопросов полноценных и исчерпывающих ответов нет до сих пор.
Хотя в целом описанные сложности привели к приостановке развития экспертных систем и методологии их построения, до сих пор есть как отдельные экспертные системы в очень узких проблемных областях, так и целые довольно проработанные фреймворки и оболочки для построения экспертных систем. Что характерно, постепенно этот инструментарий впитывал в себя все те новые математические формализмы, которые позволяли справиться с НЕ-факторами и динамичностью знаний.
И сегодня существующие и развивающиеся фреймворки для экспертных систем представляют собой очень продвинутое программное обеспечение. Хотя, надо признать, что в основном все они основаны на обработке символьной информации и исповедуют нисходящий подход в Искусственном Интеллекте.
Давайте рассмотрим общую архитектуру экспертной системы и кратко опишем компоненты экспертных систем, представленных в ней.
Первое. Это база знаний, которая содержит знания экспертной системы о проблемной области. В режиме штатной работы обычно база знаний не изменяется, а потому информация из неё берётся машиной вывода в режиме «только чтение». Изменение базы знаний осуществляется в режиме обучения системы экспертом. Однако в последнее время наибольший интерес представляют экспертные системы, которые имеют возможности самообучения в процессе работы с пользователями.
Второе. Рабочая память содержит факты, которые вводятся пользователем при помощи интерфейса (либо как-то иначе добываются экспертной системой из внешнего мира — например, с сенсоров). При помощи фактов машина вывода активирует знания из базы знаний и выводит новые факты, которые также помещаются в рабочую память.
Третье. Машина вывода — это ядро экспертной системы. Она получает знания из базы знаний и факты из рабочей памяти, а также запросы пользователя через интерфейс взаимодействия с ним. Далее происходит цикличная работа с рабочей памятью и, при необходимости, с пользователем, когда на основе имеющихся фактов и знаний осуществляется вывод новых фактов, их уточнение у пользователя или запрос у него дополнительных фактов. В конечном итоге машина вывода получает результаты вывода и выдаёт их пользователю через интерфейс с ним.
Четвёртое. Интерфейс пользователя представляет собой тот механизм, при помощи которого пользователь взаимодействует с экспертной системой. В самом начале развития этого направления планировалось, что интерфейс пользователя будет естественно-языковым, однако с анализом естественного языка возникли существенные проблемы, а потому чаще всего использовался формализованный ввод (иногда даже похожий на естественно-языковой).
Экспертная система может быть интегрированной в информационную систему более высокого уровня, тогда, как уже было указано выше, в её рабочую память информация может поступать не только посредством интерфейса пользователя, но и из других систем или, например, с сенсоров, если экспертная система используется при управлении каким-нибудь технологическим процессом.
С другой стороны, интегрированная экспертная система может выдавать свои заключения не только конечному пользователю, но и другим системам или даже исполнительным устройствам. Другими словами, сегодня экспертные системы могут использоваться как полноценные и законченные блоки для создания комплексных систем управления с возможностью взаимодействия не только со специально обученными пользователями, но и с другими системами.
Это позволяет нарисовать более целостную диаграмму того, что представляет собой экспертная система в своём окружении. С учётом вышесказанного получается полноценная обобщённая кибернетическая система, взаимодействующая со средой. И такое взаимодействие осуществляется в парадигме символьных вычислений.
Интересным является вопрос — в составе каких более крупных систем могут включаться экспертные системы? Самый тривиальный ответ: «В составе систем автоматического управления и автоматизированных систем управления». Это традиционные области использования экспертных систем, особенно в хорошо формализуемых проблемных областях. Например, системы автоматического управления технологическими процессами вполне могут управляться при помощи достаточно небольших экспертных систем, базы знаний которых содержат несколько сотен продукций.