чем обусловлена эффективность заполнения базы знаний экспертной системы

Разработка экспертных систем на Prolog

Экспертная система — компьютерная программа, которая, как и любая другая программа, получает какие-то данные на вход и формирует другие данные на выходе. Особенность в том, что целью работы экспертной системы является замена эксперта (человека) в некоторой предметной области. Естественно, работают такие программы без магии, а по вполне определенному алгоритму. От некоторых других видов интеллектуальных систем они отличаются большим объемом знаний эксперта, необходимым для принятия решения. Например, система, которая контролирует температуру в мангале при жарке шашлыка не может называться экспертной системой.

Экспертные системы создаются для самых различных предметных областей, например:

Так или иначе, в процессе использования в систему попадают факты пользователя, чаще всего это происходит в форме диалога, при этом система формирует вопросы исходя их данных в базе и данных ранее ответов. Например, система Akinator [5], угыдывающая задуманного пользователем персонажа мультфильма, может спросить «является ли ваш персонаж человеком?».

Важно, что все экспертные системы, вне зависимости от предметной области, имеют схожую структуру — на самом деле, какая разница «угадывает» система диагноз по симптомам или персонажа мультфильма по его параметрам? По этой причине для разработки часто используются специальные инструменты создания типовых систем или заготовки систем, в которые эксперту нужно лишь внести данные и правила, однако, в этой статье мы посмотрим как сделать простейшую экспертную систему на языке Prolog.

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

чем обусловлена эффективность заполнения базы знаний экспертной системы

Важно понимать, что база данных содержит факты, а база знаний — правила вывода решений на основе фактов и введенных пользователем данных. Правила представляют собой, по сути, исходный код программы, — именно поэтому для разработки экспертных систем удобно использовать языки типа SWI Prolog, ведь они позволяют добавлять новые правила в программу прямо во время ее исполнения. Чтобы понять как разработанная система работает и как запустить приведенный код стоит пройти по ссылкам [6, 7].

Ниже приведен пример разработки сильно упрощенной экспертной системы, помогающей студенту выбрать тему дипломной работы.

1 Обзор предметной области

Так как в основе любой экспертной системы находится база данных, то разработка начинается с анализа предметной области. Тут надо понять какие критерии стоит учитывать при подборе темы дипломной работы. Темы выпускных работ обычно формируют преподаватели исходя из своих интересов. Студент выбирает тему бакалаврской работы из набора имеющихся с учетом:

Например, если студент при обучении у преподавателя Пупкина с трудом получил тройку — маловероятно он пойдет к нему на дипломирование. Если студент ничего не знает в области блокчейна, но ему хотелось бы развиваться в этой сфере — возможно он выберет соответствующую тему. Тема работы «Разработка клиент-серверного приложения для игры в покер» может быть интересна студенту, но он не возьмет ее если руководитель требует писать сервер на Erlang, а студент не любит функциональное программирование.

Таким образом, предметная область задачи состоит из сущностей:

Модель предметной области с использованием нотации диаграммы классов UML [8] приведена на рисунке:
чем обусловлена эффективность заполнения базы знаний экспертной системы

2 Наполнение базы данных

Исходя из информации, изложенной в обзоре предметной области, ясно, что хранить программа должна темы и данные студента. Однако, данные студента вводятся в процессе диалога с ним и не должны храниться после чтобы не влиять на работу с системой следующего пользователя. Таким образом, в базе надо хранить лишь информацию о темах.

Для наполнения базы были найдены темы ВКР, по первому запросу поисковая система выдала информацию о темах Высшей школы экономики [9]. Однако, опубликованный список тем содержит лишь информацию о названии и руководителе, остальная информация была сформирована мной и не является точной — данные в базу данных экспертной системы должен вносить эксперт (руководитель ВКР).

В результате создана такая база данных:

На этом этапе можно лишь перебрать все записи базы и вывести их запросом:
?- theme(Theme, Name, Complex, knowledge_areas(Areas), skills(Skills)).

3 Алгоритмы работы экспертной системы (формирование базы знаний)

3.1 Выбор руководителей

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

Собрать всех преподавателей можно так:

чем обусловлена эффективность заполнения базы знаний экспертной системы

Теперь надо вывести эти имена списком так, чтобы к каждому имени был привязан номер. Это позволит пользователю не вводя имя (в котором легко сделать опечатку) выбрать нужные имена. Для этого описан предикат, принимающий на вход список и начальный номер и выводящий элементы списка в столбик так, что у каждого следующего элемента номер на единицу больше. Также написан предикат, выполняющий запрос всех имен (как показано выше) и выводящий их:

Результат выполнения запроса:

чем обусловлена эффективность заполнения базы знаний экспертной системы

Теперь можно запросить у пользователя список имен и выбрать соответствующих номерам преподавателей:

чем обусловлена эффективность заполнения базы знаний экспертной системы

3.2 Выбор области знаний

Теперь, когда выбраны предполагаемые — можно собрать список областей знаний в которых у них есть темы и выдать их в виде такого же списка.
Сначала можно получить список всех областей в которых есть темы у выбранных руководителей:

Теперь можно собрать все эти области в список и убрать из него повторы:

Мы смогли получить по списку имен руководителей список областей в которых они работают без повторов, выведем этот список на экран чтобы студент смог выбрать интересующие его области:

В настоящий момент можно написать такую цель:

?- select_names(Names), select_areas(Names, Areas).

с ее помощью мы сначала просим выбрать имена, а затем области. Результат ее выполнения:

чем обусловлена эффективность заполнения базы знаний экспертной системы

3.3 Указание компетенций студента

Аналогичным образом можно запросить у пользователя набор его компетенций. Для этого можно описать правила поиска всех компетенций, которые требуются в темах выбранных преподавателей по выбранным областям, примерно так:

Дадим пользователю выбрать навыки из имеющегося списка:

Дальше надо убрать из выдачи темы, для выполнения которых у студента не хватает компетенций…

3.4 Выбор темы

Для выбора тем, соответствующих всем выбранным критериям написан такой предикат:

Итак, он перебирает все темы в базе данных и для каждой из них проверяет следующее:

Для реализации последней части используется два отрицания. Так:
\+ member(Skill, Skills)
проверяет что навыка Skill нет в списке Skills. Список Skills — навыки студента.

первый оператор \+ стоит перед группой (почти лямбда-функцией) и завершится успешно если вся группа «провалится». Группа провалится если среди навыков темы найдется такой Skill, что его нет у студента. Таким образом весь приведенный в последнем листинге фрагмент завершится если у студента есть все необходимые навыки для выполнения темы.

Все описанные выше предикаты собраны (вызываются) в предикате выбора темы так:

То есть если на каком то этапе оказалось что система не может помочь — например, нет преподавателя, с которым хотел бы работать студент — то процесс подбора темы прерывается с сообщением о проблеме.

Результат подбора темы:

чем обусловлена эффективность заполнения базы знаний экспертной системы

На приведенном рисунке видно, что одна и та же тема выведена дважды. Чтобы убрать это — все названия помещаются в список, который преобразуется во множество:

4 Итоги

Видно, что для создания экспертной системы надо сначала проанализировать предметную область и понять какие данные стоит сохранять в системе, а также определиться с набором правил, по которым система может принимать решения. Затем, стоит описать данные и правила на языке программирования. В созданной тут системе нет никакого интерфейса для эксперта, таким образом система является статической.

Исходный код разработанной системы доступен в репозитории [10], пример ее использования:
чем обусловлена эффективность заполнения базы знаний экспертной системы

Предлагаю посмотреть несколько похожих по структуре экспертных систем, написанных на других диалектах языка Prolog:

Источник

Кому нужны экспертные системы

Что такое экспертная система (ЭС)? Все слышали этот термин, он часто воспринимается как устаревший, немодный, далекий от мэйнстрима и в науке, и в технике. «Это очень специальная область программирования, не имеющая широкого применения». ЭС проходят в институте и потом благополучно забывают.

Они появились в конце 60-х годов как самое многообещающее, практичное направление развития науки об искусственном интеллекте. Несмотря на множество интересных разработок, ЭС не только не получили широкого распространения, но нет даже ни одной коммерчески успешной разработки.

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

Когда появились первые электронный вычислительные машины (ЭВМ), их называли электронным мозгом и с опаской ожидали скорого прихода машин, заменяющих человека. Машин стало много, их мощность возросла в миллионы раз, но человека они заменить не смогли. Появление «электронного мозга» в ближайшие годы не прогнозируется, несмотря на то, что уже прошло более 60 лет со времени появления первых вычислительных машин.

Одна из основных причин слабого развития ЭС – алгоритмическая парадигма мышления разработчиков прикладных программ. Эта парадигма настолько глубоко проникла во все, что касается компьютеров, что мы этого не замечаем. Кажется, все замечательно – человек дает команды (нажимает мышкой нужные кнопки на экране) – машина исполняет, чего еще желать? Если же копнуть глубже – какие команды отдает человек? Вместо того, чтобы давать машине задание – сказать ЧТО надо сделать, что хочет пользователь, человек дает инструкции – КАК делать, какую последовательность операций выполнить машине, чтобы получить нужный результат.

Первая проблема в общении пользователя с машиной – надо учиться, обучиться пользованию нужными прикладными программами – т.е. выучить, когда и какие кнопки в программе нажимать, чтобы получить нужный результат. Как и любую машину, ее надо освоить, понять как с ней обращаться, запомнить способы управления и освоить их, так же как с автомобилем или кофеваркой.

Противоречивость этой ситуации никто не замечает. Компьютер – не просто очередная машина для облегчения жизни человеку, компьютер – машина для усиления интеллекта, для выполнения умственных операций. (Как то уже забылось, что арифметические операции и процедуры – умственные операции, которые существуют только в сознании человека). Поскольку современные компьютеры выполняют только алгоритмизованные операции, вся остальная часть умственной деятельности остается за человеком.

В результате, чем больше программ должен применять человек, тем больше он должен запомнить и выучить. Компьютер не «разгружает», а «нагружает».

Вместо квалифицированного, умного, знающего «помощника», которому можно поручить работу, не беспокоясь о результате, мы имеем сильного и неумного «раба», который сделает только то, что прикажут и ни на йоту больше, который не имеет ни усердия, ни знаний, ни творческой устремленности на результат.

Чтобы добиться от него результата, человек – пользователь должен хорошо потрудиться — выучить программу, постоянно ею управлять, готовить исходные данные для программы и еще обрабатывать результаты работы.

Возьмем, для примера, электронную бухгалтерию. Бухгалтерские программы можно сравнить со счетоводом – специалистом низшей квалификации в иерархии бухгалтерских специальностей. Бухгалтерская программа не может заменить бухгалтера, она заменяет лишь счетовода – заполняет графы в журналах и подсчитывает итоговые суммы. Электронная бухгалтерия имеет много полезных свойств, но без бухгалтера она бесполезна.

Какой может быть интеллектуальная программа – бухгалтерская ЭС? Такая программа полностью заменяет специалиста-бухгалтера – автоматически и безошибочно классифицирует и кодирует денежные операции, знает, автоматически собирает и применяет все необходимые нормативные и правовые акты и может консультировать директора по текущим операциям и по общим бухгалтерским вопросам.

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

Интеллектуальный текстовый редактор должен сам создавать тексты документов по указаниям пользователя. Например: «На это письмо надо ответить согласием», «На эту претензию надо подготовить возражение», «Вот это письмо надо переписать в более мягкой форме».

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

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

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

Одно из важных отличий ЭС – ориентация на язык пользователя, поскольку в ЭС пользователь формулирует описание своей задачи – ЧТО он хочет, а не инструкции машине – КАК выполнить его задание.

Существует один пробел в современном программировании из-за которого в сознании программистов нет установки на смысловую обработку информации – нет формальной основы – языков программирования для представления и обработки смысловой информации, хотя все необходимые языковые средства описаны в соответствующих публикациях. Система концептуального программирования разрабатывается в НПФ «Семантикс Рисеч».

Созданию прикладных ЭС массового применения мешает инерция алгоритмического подхода. Многое можно сделать и на существующей технологической базе. Надо лишь вспомнить, что машина является средством усиления интеллекта человека и может выполнять не только арифметические операции.

Замена существующих прикладных программ экспертными системами кардинально повысит эффективность компьютеров и улучшит современный мир. Приведем лишь несколько возможных примеров.

Создание ЭС массового применения могли бы сильно повысить производительность труда во всех областях деятельности человека.

ЭС для юриста могла бы помогать ему в составлении и анализе документов, консультировать по текущему законодательству.

ЭС может принципиально изменить природу школьного и вузовского образования, а также значительно улучшить полезность системы электронного правительства. ЭС налогового инспектора могла бы автоматически проверять налоговые декларации и другие документы.

В не очень далекой перспективе развития ЭС, можно представить, что каждый человек сможет получить неограниченные возможности заинтересованного и активного персонального общения, которые сегодня обеспечивают коммерческий успех социальный сетей и поисковых программ Интернет. Общение с виртуальными интеллектуальными личностями кардинально изменят не только парадигму общения человека с компьютером, но и сами основы экономической деятельности общества.

Источник

Представления знаний в интеллектуальных системах, экспертные системы

Введение

Экспертная система (далее по тексту — ЭС) — это информационная система, назначение которой частично или полностью заменить эксперта в той или иной предметной области. Подобные интеллектуальные системы эффективно применяются в таких областях, как логистика, управление воздушными полетами, управление театром военных действий. Основною направленной деятельностью предсказание, прогнозирование в рамках определенного аспекта в предметной области.

Экскурс в историю экспертных систем

История экспертных систем берет свое начало в 1965 году. Брюс Бучанан и Эдвард Фейгенбаум начали работу над созданием информационной системы для определения структуры химических соединений.

Результатом работы была система под названием Dendral. В основе системы формировалась последовательность правил подобных к «IF – THEN». Информационная система не перестала развиваться и получила множество наследников, таких как ONCOIN – информационная система для диагностики раковых заболеваний, MYCIN – информационная система для диагностики легочных инфекционных заболеваний.

Следующим этапом стали 70-е годы. Период не выделялся особыми разработками. Было создано множество разных прототипов системы Dendral. Примером служит система PROSPECTOR, областью деятельности которой являлась геологические ископаемые и их разведка.
В 80-ых годах появляются профессия – инженер по знаниям. Экспертные системы набирают популярность и выходят на новый этап эволюции интеллектуальных систем. Появились новые медицинские системы INTERNIS, CASNE.

С 90-ых годов развитие интеллектуальных систем приобретает новые и новые методы и особенности. Нововведением становится парадигма проектирования эффективных и перспективных систем. Гибкость, четкость решения поставленных задач дало новое название – мультиагентных систем. Агент – фоновый процесс который действует в целях пользователя. Каждый агент имеет свою цель, «разум» и отвечает за свою область деятельности. Все агенты в совокупности образуют некий интеллект. Агенты вступают в конкуренцию, настраивают отношения, кооперируются, все как у людей.

В 21 век, интеллектуальной системой уже не удивишь никого. Множество фирм внедряет экспертные системы в области своей деятельности.

Быстродействующая система OMEGAMON разрабатывается c 2004 года с IBM, цель которой отслеживание состояния корпоративной информационной сети. Служит для моментального принятия решений в критических или неблагоприятных ситуациях.

G2 – экспертная система от фирмы Gensym, направленная на работу с динамическими объектами. Особенность этой системы состоит в том, что в нее внедрили распараллеливание процессов мышления, что делает ее быстрее и эффективней.

Структура экспертной системы

чем обусловлена эффективность заполнения базы знаний экспертной системы

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

2. Данные
Данные — это совокупность фактов и идей представленных в формализованном виде.
Собственно на данных основываются закономерности для предсказания, прогнозирования. Продвинутые интеллектуальные системы способные учиться на основе этих данных, добавляя новые знания в базу знаний.

3. Модель представления данных
Самая интересная часть экспертной системы.
Модель представления знаний (далее по тексту — МПЗ) — это способ задания знаний для хранения, удобного доступа и взаимодействия с ними, который подходит под задачу интеллектуальной системы.

4. Механизм логического вывода данных(Подсистема вывода)
Механизм логического вывода(далее по тексту — МЛВ) данных выполняет анализ и проделывает работу по получению новых знаний исходя из сопоставления исходных данных из базы данных и правил из базы знаний. Механизм логического вывода в структуре интеллектуальной системы занимает наиболее важное место.
Механизм логического вывода данных концептуально можно представить в виде :
А — функция выбора из базы знаний и из базы данных закономерностей и фактов соответственно
B — функция проверки правил, результатом которой определяется множество фактов из базы данных к которым применимы правила
С — функция, которая определяет порядок применения правил, если в результате правила указаны одинаковые факты
D — функция, которая применяет действие.

Какие существуют модели представления знаний?

Распространены четыре основных МПЗ:

Продукционная МПЗ

Пример

ДиагнозТемператураДавлениеКашель
Грипп39100-120Есть
Бронхит40110-130Есть
Аллергия38120-130Нет

Пример продукции:
IF Температура = 39 AND Кашель = Есть AND Давление = 110-130 THEN Бронхит

Продукционная модель представления знаний нашла широкое применение в АСУТП

Среды разработки продукционных систем(CLIPS)

CLIPS (C Language Integrated Production System) — среда разработки продукционной модели разработана NASA в 1984 году. Среда реализована на языке С, именно потому является быстрой и эффективной.
Пример:

Подобное правило будет активировано только тогда, когда в базе данных появится факт симптома с подобными параметрами.

Семантическая сеть МПЗ

В основе продукционной модели лежит ориентированный граф. Вершины графа — понятия, дуги — отношения между понятиями.
Особенностью является наличие трех типов отношений:

По количеству типов отношений выделяют однородные и неоднородные семантические сети. Однородные имею один тип отношения между всеми понятиями, следовательно, не однородные имею множество типов отношений.

Все типы отношений:

Пример

чем обусловлена эффективность заполнения базы знаний экспертной системы
Недостатком МПЗ является сложность в извлечении знаний, особенно при большой сети, нужно обходить граф.

Фреймовая МПЗ

Предложил Марвин Мински в 1970 году. В основе фреймовой модели МПЗ лежит фрейм. Фрейм — это образ, рамка, шаблон, которая описывает объект предметной области, с помощью слотов. Слот — это атрибут объекта. Слот имеет имя, значение, тип хранимых данных, демон. Демон — процедура автоматически выполняющаяся при определенных условиях. Имя фрейма должно быть уникальным в пределах одной фреймовой модели. Имя слота должно быть уникальным в пределах одного фрейма.

Слот может хранить другой фрейм, тогда фреймовая модель вырождается в сеть фреймов.

Пример

чем обусловлена эффективность заполнения базы знаний экспертной системы

Пример вырождающейся в сеть фреймов

чем обусловлена эффективность заполнения базы знаний экспертной системы
На своей практике, мне доводилось встречать системы на основе фреймовой МПЗ. В университете в Финляндии была установлена система для управления электроэнергией во всем здании.

Языки разработки фреймовых моделей (Frame Representation Language)

FRL (Frame Representation Language) — технология создана для проектирования интеллектуальных систем на основе фреймовой модели представления знаний. В основном применяется для проектирования вырождающихся в сеть фреймовой модели.

Запись фрейма на языке FRL будет иметь вид:

Существуют и другие среды: KRL (Knowledge Representation Language), фреймовая оболочка Kappa, PILOT/2.

Формально логическая МПЗ

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

Пример

A1 = A2 = A3 = ; IF A1 AND A2 THEN
Банальней примера и не придумаешь.
Важно: Стоит заметить, что формально логическая МПЗ схожа с продукционной. Частично это так, но они имеют огромную разницу. Разница состоит в том, что в продукционной МПЗ не определены никакие связи между хранимыми объектами предметной области.

Важно

Любая экспертная система должна иметь вывод данных и последовательность «мышления» системы. Это нужно для того чтобы увидеть дефекты в проектировании системы. Хорошая интеллектуальная система должна иметь право ввода данных, которое реализуется через интеллектуальный редактор, право редактора на перекрестное «мышление» представлений при проектировании системы и полноту баз знаний(реализуется при проектировки закономерностей предметной области между инженером по знаниям и экспертом).

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *