Искусственный интеллект: как создать свою экспертную систему?
Введение
В последнее время системы, обладающие “искусственным интеллектом”, стали проникать практически во все области человеческой деятельности: технику, транспорт, промышленность, медицину, менеджмент, банковский сектор, юриспруденцию, науку и образование. Разработчики и потенциальные пользователи систем искусственного интеллекта (ИИ) возлагают на эти системы большие надежды, предполагая, что они смогут решить большинство, если не все, проблемы. Вместе с тем, мода на искусственный интеллект может привести к тому, что системы ИИ будут разрабатываться для тех областей, в которых их применение не всегда оправдано и будет неэффективно, а иногда даже невозможно. Поэтому важно понимать, что такое "искусственный интеллект", какие существуют технологии искуственного интеллекта и в каких областях они могут использоваться.
Цель этой книги – познакомить читателя, дать ему представление об экспертных системаах – одной из технологий искусственного интеллекта.
Искусственный интеллект и экспертная система
В настоящее время искусственный интеллект зачастую сводят к машинному обучению, что не совсем правильно. Машинное обучение (machine learning) и его разновидности, например, нейросети (neural network), это – технология, позволяющая решать задачи из области искусственного интеллекта (распознавание образов, распознавание речи, машинный перевод, анализ больших данных и т.д.). Другой технологией искусственного интеллекта являются экспертные системы (expert system).
Искусственный интеллект – раздел информатики, связанный с разработкой интеллектуальных программ для компьютеров.
Экспертная система (ЭС) – компьютерная программа, использующая экспертные знания для обеспечения высокоэффективного решения задач в узкой предметной области.
Есть и другие определения термина "экспертная система".
Под экспертной системой понимается система, объединяющая возможности компьютера со знаниями и опытом эксперта в такой форме, что система может предложить разумный совет или осуществить разумное решение поставленной задачи.
Экспертные системы призваны решать те задачи, где, как принято считать, невозможно обойтись без эксперта-человека.
При реализации экспертной системы важным вопросом является выбор архитектуры и языка программирования.
Существует два основных подхода к созданию экспертной системы. Первый подход предполагает использование языка логического программирования, второй – универсального процедурного или объектно-ориентированного языка программирования. При использовании универсального языка программирования база знаний о предметной области может быть встроена в код программы (реализуется при помощи инструкций if-then-else) или отделена кода и помещена во внешний текстовый файл.
Знания о предметной области меняются во времени – уточняются характеристики объектов и связи между ними, выявляются новые связи, правила поведения объектов, факты. Изменение знания о предметной области требует изменений поведения экспертной системы, изменения базы знаний. Исходя из этого, можно утверждать, что архитектура экспертная система должна быть открытой, т.е. у пользователя должна быть возможность "повышения квалификации" экспертной системы в процессе ее использования путем корректировки базы знаний, причем, желательно, без привлечения программистов. Указанному требованию соответствует экспертная система, в которой база знаний отделена от кода и представлена совокупностью правил логического вывода, находящихся во внешнем текстовом файле доступном для редактирования. В такой архитектуре программный код, реализующий интерфейс пользователя, механизм заключений и объясняющую систему, называют оболочкой экспертной системы, при этом задача создания экспертной системы сводиться к задаче создания базы знаний – совокупности правил логического вывода.
Экспертная система как инструмент поддержки принятия решений
Во многих ситуациях люди принимают решения, следуя советам экспертов – специалистов соответствующих предметных областей. Привлечение к решению проблемы эксперта, а в случае сложных проблем, группы экспертов, делает процесс принятия решения длительным и дорогим. При этом на результат экспертизы зачастую оказывает так называемый человеческий фактор, совет, полученный от эксперта, носит субъективный характер.
В качестве альтернативы обычной экспертизе, предполагающей участие экспертов, во многих случаях возможно проведение экспертизы с применением экспертной системы.
Экспертная система это – компьютерная программа, обладающая знаниями эксперта в соответствующей предметной области и моделирующая процесс суждения человека-эксперта. Применение экспертной системы в качестве системы поддержки принятия решения позволяет сократить временные и финансовые затраты на экспертизу, снизить влияние человеческого фактора.
Экспертные системы призваны решать те задачи, где, как принято считать, невозможно обойтись без совета или рекомендации эксперта-человека. Некоторые области деятельности, в которых возможно и оправдано использование ЭС в качестве инструмента поддержки принятия решений, приведены ниже.
Медицина
– Диагностика и выявление причин болезни
– Выбор стратегии лечения
– Подбор лекарства
– Анализ кардиограммы
– Подбор диеты
Техника
– Выявление причин неисправностей оборудования
– Устранение аварийных ситуаций
– Выбор конфигурации системы
– Выбор технологии, материала, комплектующих, оборудования
Бизнес
– Оценка инвестиционной привлекательности проекта
– Оценка рисков проекта
– Выбор/оценка поставщика (подрядчика)
– Выбор стратегии развития бизнеса
– Формирование команды проекта
Финансы
– Оценка надежности заемщика
– Операции с ценными бумагами
– Оценка рисков
– Юриспруденция
– Выбор стратегии поведения
Мода
– Выбор стиля, элемента одежды
Экспертная система – взгляд снаружи
Чтобы понять, как работает экспертная система, представьте следующую ситуацию. Вы собираетесь, например, на концерт, и перед вами стоит проблема: надевать галстук или нет, а если надевать, то какой: одноцветный, с рисунком или в крапинку. Не являясь специалистом в области моды, вы звоните своему приятелю-стилисту. Приятель задает вам несколько вопросов, относительно вида концерта, элементов одежды, которые есть в вашем распоряжении, и на основе информации, полученной от вас, дает совет, что, по его мнению, вам следует надеть (рис. 1). В описанной ситуации вашего приятеля можно рассматривать как экспертную систему. Он обладает знаниями в предметной области (мода) и, на основе полученной от вас информации о текущей ситуации, может предложить вам разумное решение проблемы.
Рис. 1. Диалог с экспертом
Теперь, если вы каким-либо образом сможете “извлечь знания из эксперта”, понять, как эксперт принимает решения, формализовать знания и процесс принятия решений, то вы сможете создать экспертную систему, которая заменит реального человека-эксперта, и в дальнейшем, чтобы получить совет, вы будете обращаться не к эксперту, а к экспертной системе (рис. 2).
Рис. 2. Диалог с экспертной системой
Архитектура экспертной системы
Архитектура экспертной системы, в которой знания представлены совокупностью правил логического вывода, показана на рис. 3.
Рис. 3. Архитектура экспертной системы на правилах (МВ – механизм или "машина" выводв; ИР – интерфейс разработчика; ОС – объясняющая система; ИП – интерфейс пользователя)
В простейшем случае экспертная система может состоять из базы знаний, механизма вывода и интерфейса разработчика-пользователя (рис. 4).
Рис. 4. Минимальная архитектура экспертной системы
(ИР – интерфейс разработчика; МВ – "машина" вывода)
Основой экспертной системы является база знаний о предметной области. База знаний (БЗ) содержит знания – информацию об объектах предметной области.
В экспертных системах для представления знаний используют:
– семантические сети
– фреймы
– правила логического вывода
Семантические сети и фреймы используют в системах, предназначенных для решения исследовательских задач в области искусственного интеллекта. Рассмотрение этих способов представления знаний выходит за рамки этой книги.
Правила логического вывода в общем случае представляют собой выражения вида
ЕСЛИ условие ТО заключение
Правила логического вывода отражают ход рассуждений человека-эксперта и позволяют наиболее естественно и понятно описать процесс принятия решений.
Например, на естественном языке правила выбора галстука можно записать так:
If jacket is blazer and shirt is white classic then tie is narrow
If jacket is sport coat and shirt is striped then no tie
В базе знаний экспертной системы эти правила выглядят так:
rule(1)
jacket = blazer
shirt = white_classic
then
tie=narrow;
rule(2)
jacket = sport_coat
shirt = striped
then
tie = no;
Факты базы знаний представляю собой утверждения вида
Объект = Значение, cf=к
Факты в базе знаний появляются в процессе консультации как результат ответов пользователя на вопросы экспертной системы, а также как результат согласования фактов с правилами.
Например, если на вопрос экспертной системы Shirt? пользователь введет white_classic, то в базу знаний будет добавлен факт
shirt=white_classic, cf=100
Если в процессе консультации в ответ на вопросы машины вывода Jacket? и Shirt? пользователь, соответственно, введет sport_coat и strip, то в базу знаний сначала будут добавлены факты
jacket=sport_coat, cf=100
shirt=strip, cf=100
Затем, в результате согласования текущих значений объектов jacket и shirt с предпосылкой правила 2 (см. выше) будет добавлен факт-заключение
tie=no,cf=60
Механизм или "машина" вывода (inference engine) моделирует процесс рассуждений эксперта, реализует цепочку вывода заключения путем сопоставления фактов и правил логического вывода.
Интерфейс пользователя (user interface) обеспечивает взаимодействие пользователя с экспертной системой в процессе консультации.
Интерфейс разработчика (developer interface) имеет доступ к базе знаний, что позволяет вносить в нее изменения, корректировать правила логического вывода.
Объясняющая система (explanation module) обеспечивает отображение цепочки вывода заключения, показывает правила, на основе которых заключение было сделано.
Оболочка экспертной системы
В экспертной системе, основанной на правилах логического вывода, знания обычно оделены от программного кода, реализующего механизм вывода заключений, и находятся во внешнем текстовом файле. В такой архитектуре (рис. 5) механизм вывода, объясняющую систему, интерфейсы пользователя и разработчика называют оболочкой экспертной системы (англ. Shell – оболочка). При таком подходе задача создания экспертной системы сводиться к задаче создания базы знаний – составлению правил логического вывода.
Рис. 5. Экспертная система = Оболочка + База знаний
UNGIN – оболочка экспертной системы
Оболочка экспертной системы UNGIN представляет собой приложение для универсальной платформы Windows и может работать на любом устройстве, на котором установлена операционная система Microsoft Windows 10/11.
Оболочку экспертной системы UNGIN можно бесплатно установить из магазина приложений Microsoft по ссылке
https://www.microsoft.com/store/apps/9PHPDLLRDX4P
Главное окно оболочки экспертной системы UNGIN приведено на рис. 6.
Рис. 6. Окно оболочки UNGIN