Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ ПО ИИ.doc
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
1.4 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДНІПРОДЗЕРЖИНСЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

Л.В. Дранишников

Конспект лекцій

з дисципліни " Системи штучного інтеллекту"

Дніпродзержинськ

2009

ЗМІСТ

Тема 1.

Уведення. Задачі штучного інтелекту. Структура досліджень в області штучного інтелекту. Інтелектуальний інтерфейс. Нова технологія рішення задач. Прикладні системи, орієнтовані на знання. Основні проблеми штучного інтелекту. Представлення знань.

Тема 2.

Моделі представлення знань. Продукционная модель. Модель, заснована на використанні фреймів. Модель семантичної мережі. Логічна модель.

Тема 3.

Експертні системи. Призначення експертних систем. Структура експертної системи. Функціонування ЭС. Класифікація інструментальних засобів. Етапи створення експертних систем. Автоматичне міркування. Основні механізми дедукції. Розробка ЭС, у якій реалізується зворотний ланцюжок міркувань. Стан і тенденції розвитку штучного інтелекту.

Тема 4.

Нейронные мережі. Застосування нейронных мереж. Структура штучного нейрона. Функції активації. Класифікація нейронных мереж. Робота нейросети. Навчання нейронной мережі. Алгоритми навчання нейронных мереж. Типи нейронных мереж. Пакет Neural Networks Toolbox. Приклади створення і використання нейронных мереж. Використання Sіmulіnk при побудові НС. Система автоматичного керування з нейросетевым регулятором на основі еталонної моделі

Тема 5.

Експертні системи і нечітка логіка

Литература

Лекции 1.

Введение.

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

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

Системы искусственного интеллекта (СИИ) — это системы, созданные на базе ЭВМ, которые имитируют решение человеком сложных интеллектуальных задач.

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

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

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

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

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

Пример 1. Факт. В часы пик на улице много машин. Правило. ЕСЛИ попытаться в часы пик перейти шоссе, ТО можно попасть под машину.

Пример 2. Факт 2а. Тихие, темные улицы опасны. Факт 2б. Пожилые люди обычно не совершают дерзких преступлений. Факт 2в. Полиция защищает людей от преступников.

Правило 2а. ЕСЛИ на тихой, темной улице встретится пожилой человек, ТО можно не очень беспокоиться. Правило 2б. ЕСЛИ на тихой, темной улице вы увидите полицейского, ТО можно чувствовать себя в безопасности.

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

Упрощение. Каким образом человеческий мозг из огромного разнообразия фактов и правил быстро выбирает подмножество, подходящее к конкретной ситуации? Дело в том, что в мозгу человека существует сложная система, руководящая выбором правильной реакции на конкретную ситуацию. Такой выбор называется упрощением. Механизм выбора блокирует мысли, не имеющие отношения к решаемой в данный момент задаче. Механизм упрощения способствует достижению цели, игнорируя все бесполезные для этого факты, т.е. механизм упрощения заставляет мозг сосредоточиться только на фактах и правилах, нужных для достижения поставленной цели. На рис.1 приведена схема работы механизма упрощения при выборе необходимых правил и фактов.

Здесь механизм упрощения используется при выборе правил для ситуации А и Б. В процессе упрощения в соответствии с отношением ЕСЛИ - ТО проверяется некоторое условие. Если условие удовлетворяет состоянию А, выбираются правила для А, или наоборот.

Цель

Упрощение

ЕСЛИ состояние А, ТО выбрать правила для А

ЕСЛИ состояние Б,

ТО выбрать правила для Б

Правила для А

ЕСЛИ …, ТО

Правила для Б

ЕСЛИ …, ТО

Механизм вывода. Достигая цели, человек не только приходит к решению поставленной перед ним задачи, но одновременно приобретает новые знания. Например: 1. ИВАН и МАРЬЯ - родители ДИМЫ. 2. ИВАН и МАРЬЯ - родители СВЕТЫ. Кем приходятся друг другу ДИМА и СВЕТА. Механизм упрощения заставляет человека обратиться к хранящемуся в его мозгу правилу: ЕСЛИ у девочки и мальчика одни и те же родители, ТО мальчик и девочка - брат и сестра. Цель мгновенно достигнута.

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

Структура исследований в области искусственного интеллекта.

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

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

На рис.2. указаны четыре большие группы исследований, входящие в область интересов искусственного интеллекта.

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

Искусственный интеллект

1 2 3 4

Имитация творческих

процессов

Интеллектуализация

ЭВМ

Новая технология

решения задач

РОБОТЫ

Системы

общения

Планирование в АСУ

Базы знаний

Системы автоматизиро-

ванного проектирования

Оперативное управление

Системы планирования

решения задач

Автоматизация научных

исследований

СИСТЕМЫ:

Интеллектуальные

ИПС

Интеллектуальные

ППП

Расчетно-логические

системы

Экспертные системы

Рис.2. Структура исследований в области искусственного интеллекта.

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

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

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

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

Лекция 2. Интеллектуальный интерфейс.

Несмотря на то, что программирование как специальность появилась лишь 45 лет назад, количество программистов сейчас достигло многих миллионов и продолжает расти (рис.3.).

108

107

106

105

104

103

Кол. чел.

1960 1970 1980 1990

Рис.3.

На рис.3 показаны два графика, характеризующие рост в США числа профессиональных программистов (непрерывная кривая) и тех, кто программирует сам (пунктирная кривая). Профессиональных программистов принято подразделять на системных и прикладных. Системные программисты – это те, кто занят созданием базового математического обеспечения для ЭВМ. Они разрабатывают операционные системы, трансляторы с различных языков, сервисные программы и др. Прикладные программисты пишут программы, позволяющие решать конкретные задачи, интересующие пользователей ЭВМ. Это значит, что их единственной работой является посредничество между пользователем и ЭВМ. Из рис. 3 видно, что наблюдается тенденция быстрого роста людей, занятых программированием. Если сохранится эта тенденция, то вскоре все взрослое население земного шара будет занято программированием. Абсурдность этого очевидна. Одним из выходов было бы исключение программиста из цепи пользователь – программист – ЭВМ. Но это довольно трудно. Дело в том, что решение сложных задач включает в эту цепь не только одного программиста, а целую группу людей. Конечный пользователь (КП) общается с аналитиком (программист – аналитик). Его функция – перевод задачи КП в некоторую исходную формальную модель. Конечный пользователь (биолог, лингвист, химик и т.д.), скорее всего, сформулирует возникшую перед ним задачу на языке своей профессии. Искусство аналитика состоит в умении по этой формулировке построить адекватную ей математическую задачу.

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

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

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

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

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

- знания о языке и

- знания о той проблемной области, в которой работает пользователь.

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

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

Рис.4.

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

Таким образом, интеллектуальный интерфейс можно создать только на основе методов и идей, разрабатываемых в искусственном интеллекте.

Новая технология решения задач.

Разработка средств, образующих интеллектуальный интерфейс, опережает разработку ЭВМ пятого поколения (быстродействие 1012 операций в секунду; объем оперативной памяти достигать 1012 байтов; элементная база на основе сверхбольших интегральных схемах – СБИС – на одном кристалле может размещаться 106 логических элементов, на которых хранятся многие программы, часто встречающиеся при решении задач из данной проблемной области – переход от обычного программирования к программированию прямо на кристалле; существенное внимание уделяется не только вычислительным, но и логическим операциям, ибо большая часть задач – это задачи информационного типа – производительность ЭВМ оценивается через новую специальную единицу ЛВС – логические выводы в секунду – 108-109 ЛВС).

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

Многие программные системы, возникшие еще в ”доинтеллектуальную” эпоху, обретают новые качества, становятся интеллектуальными. Возникают системы принципиально нового типа.

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

Рис.5

Система снабжается базой знаний о той проблемной области или наборе таких областей, информация о фактах и явлениях из которых составляет информационное содержание системы. Системы подобного рода называют интеллектуальными информационно-поисковыми системами (ИИПС).

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

Дальнейшим развитием ИППП являются расчетно-логические системы (РЛС). Если в ИППП имеют дело с одним (возможно групповым) пользователем, то в РЛС всегда имеется целая группа пользователей, совместно решающая общую задачу, например задачу планирования или проектирования. Крупные задачи такого уровня всегда разбиваются на иерархическую совокупность локальных задач, решаемых отдельными группами пользователей. Это связано с тем, что знания, квалификация, ответственность в организационных системах всегда распределены. В рамках решения общей задачи происходят многократные итерации как между специалистами одного ранга, так и по ”вертикали”, когда специалисты более низкого ранга свои результаты с работниками более высокого уровня. Для организации такого взаимодействия РЛС должны иметь специальные средства. Они входят в состав средств планировщика, берущего на себя задачу обмена информацией между ЭВМ, которыми пользуются специалисты, занятые решением общей задачи.

Последним новым классом программных систем, появлению которых способствовали успехи в области искусственного интеллекта, являются экспертные системы. Общая структура такой системы показана на рис.7.

Из рис.7. видно, что в состав экспертных систем входят уже знакомые нам блоки: диалоговый процессор, база знаний, планировщик. Новым блоком является подсистема объяснения. Ее появление связано с характером экспертных систем. Их основной задачей является помощь специалистам за счет использования знаний о проблемной области, полученных из самых разнообразных источников: книг, статей, научно-технической документации, экспертов-специалистов и т. п., т.е. в экспертных системах хранится коллективный опыт, накопленный в данной проблемной области. Экспертные системы выступают в качестве экспертов-консультантов, когда специалист обращается к ним за помощью. Задача экспертной системы – объяснить пользователю непонятное для него явление.

Рис.7.

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

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

Лекция 3. Прикладные системы, ориентированные на знания.

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

1 Монитор

2 Система общения

3 Система накопления и ведения знаний

4 База знаний и база данных

5 Система логического вывода

6 Система объяснения

7 Исполнительная система

8 Планировщик решения прикладных задач

9 Библиотека прикладных программ и

библиотека программных модулей

10 Функциональная семантическая сеть

11 Средства обеспечения санкционирования

доступа к системе распределенных баз

знаний и данных

12 Средства коллективного решения задач

Рис.8.

1,2,3,4,5 – интеллектуальные ИПС; 1,2,4,8,9,10 – интеллектуальные ППП;

1,2,3,4,5,6,7 – ЭС; 1,2,4,8,9,10 – РЛС; 1,2,3,4,5,6,7,11 – распределенные ЭС;

1,2,3,4,5,6,7,12 – ЭС коллективного пользования;

1,2.3,4,5,6,7,8,9,10,11,12 – обобщенные прикладные интеллектуальные системы.

На рис.8. представлены основные функциональные подсистемы, характерные для всех трех типов прикладных интеллектуальных систем.

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

Основные проблемы искусственного интеллекта. Представление знаний.

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

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

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

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

Можно указать четыре причины, которые позволяют говорить не о данных, а о знаниях, используемых в ЭВМ.

1. Внутренняя интерпретируемость. Каждая информационная единица должна иметь уникальное имя, по которому интеллектуальная система (ИС) находит её, а также отвечает на запросы, в которых это имя упомянуто. Когда данные, хранящиеся в памяти, были лишены имен, то отсутствовала возможность их идентификации системой. Данные могла идентифицировать лишь программа, извлекающая их из памяти по указанию программиста, написавшего программу. Что скрывается за тем или иным двоичным кодом машинного слова, системе было неизвестно. Для машины все эти сведения одинаковы и однотипны. ЭВМ их интерпретирует как двоичные числа, над которыми совершаются те или иные операции. Первый шаг на пути к знаниям заключается в том, чтобы сообщить ЭВМ эти сведения, дать ей возможность интерпретировать данные и свои действия с ними на содержательном уровне.

2. Структурированность. Одной из фундаментальных особенностей человеческого познания окружающего мира является его способность к декомпозиции наблюдаемых объектов, умению выделять в них отдельные элементы и связи между ними. Это позволяет человеку воспринимать любой объект как некоторую структуру. Именно это свойство позволяет представлять объекты в виде совокупности более простых и познавать свойства нового объекта через свойства тех, что входят в его структуру. Информационные единицы должны были обладать гибкой структурой. Для них должен выполняться “принцип матрешки”, т.е. рекурсивная вложенность одних информационных единиц в другие. Каждая информационная единица может быть включена в состав любой другой, и из каждой единицы можно выделить некоторые её составляющие. Другими словами должна существовать возможность произвольного установления между отдельными информационными единицами отношений типа “часть – целое”,” род – вид” или “элемент – класс”.

Свойство структурированности отражается в том, что соответствующие понятия оказываются соединенными между собой связями типа «часть-целое», «класс-элемент», «род-вид» и т.п. Такие связи образуют в нашей памяти иерархии понятий и позволяют вводить новые понятия, объединяющие в себе множества понятий, соответствующих реальным объектам внешнего мира. Так возникают понятия типа «дерево», «млекопитающее», «мебель». Знания, представимые в ЭВМ, должны обладать такой же способностью к образованию иерархий, введению новых обобщенных понятий на составляющие их понятия и отношения между ними. Сделать это можно различным и способами. Один из них – явное указание хранящихся в базе информации тех ее единиц, которые являются для них видовыми. На рис.9 показано, как организуется такая взаимосвязь. Описание каждой информационной единицы на этом рисунке состоит из двух частей: информации, относящейся к данной единице, и ссылок на родовые единицы (видовые единицы).

Мебель

Стулья

Столы

Сиденья

Шкафы

Ножки

Зеркала

Дверцы

Рис.9.

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

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

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

Полная структура взаимосвязей показана на рис.10. По умолчанию между всеми вершинами в этой сети имеется также отношение «быть одновременно».

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

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

Ступеньки

Стены

Столбы

Помост

Кровелька

Сад находится в центре

находится в

Тень

причина-следствие

Клены

находится в Беседка

Марта

Рис.10

Лекция 4. Прикладные системы, ориентированные на знания (продолжение).

  1. Активность. Четвертой важной характеристикой того, что можно считать настоящими знаниями, является их активность. При работе с ЭВМ активными считались программы, т.е. процедуры, а данные в ЭВМ оказывались пассивными (они просто хранились в памяти и ждали, когда их извлекут). У человека активными оказываются именно знания, которые формируют цели его деятельности. Активизированные цели вызывают реализацию тех процедур, которые могут оказаться полезными для достижения поставленных целей. Неполнота знаний заставляет человека искать пути их пополнения, и противоречивость в знаниях – стремление к преодолению ее. При создании интеллектуальных систем необходимо обеспечить воспроизведение этого важнейшего свойства «базы знаний» человека. Имеется много способов имитации этой характеристики знаний в искусственных системах. Рассмотрим один из них. На рис. 11,а показаны три информационные единицы, хранящиеся в базе знаний. Они связаны между собой особыми оценочными связями.

С

А

Б

+ _

а)

+

Рис.11

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

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

Первая заключается в изменении своего мнения о пользователе Б. Возможно, система не совсем правильно оценила результаты взаимодействия с ним, и необходимо собрать о пользователе Б дополнительную информацию. Для этого следует возбудить соответствующие программы ее сбора. Если после их работы система изменит свое мнение о пользователе Б, то содержимое той зоны ее базы знаний станет таким, как это показано на рис. 11 б. Теперь выполнен принцип: «друзья моих друзей – мои друзья», и система из состояния диссонанса приходит в состояние, которое ее вполне устраивает. Вторая возможность состоит в изменении своего мнения о пользователе А. Ведь система могла и ошибиться, приписав ему положительную характеристику. Снова включаются процедуры пополнения знаний о пользователях. Теперь адресатом их является пользователь А. Если после дополнительной проверки зона базы знаний становится такой, как это показано на рис.11 в, то диссонанс опять ликвидирован. Понятно, что А и Б хорошо относятся друг к другу, но оба они с точки зрения системы не слишком хороши. Третья возможность – возбудить процедуры в пользователях А и Б по проверке отношений между собой. Например, сообщить этим пользователям (или одному из них, например А, к которому система хорошо относится) некоторую дополнительную, располагающую системой информацию о них. Если после этого пользователи (по крайней мере А) изменят мнение друг о друге и треугольник примет вид, показанный на рис. 11г, то система вновь будет удовлетворена.

По ее мнению «справедливость восторжествовала» и диссонанс ликвидирован. Если же все три попытки не увенчались успехом – треугольник остался таким, как он показан на рис. а, - то у системы остается в запасе единственная процедура – вытеснение диссонансного знания из активного поля внимания.

С

б) + + в) _ С _

А Б А + Б

+

Рис.11

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

С

г) + _

А _ Б

Рис.11

Модели представления знаний

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

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

Типичными моделями представления знаний являются:

Продукционная модель;

Модель, основанная на использовании фреймов;

Модель семантической сети;

Логическая модель.

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

Продукционная модель.

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

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

Примером продукции может служить следующее выражение:

ЕСЛИ клиент работает на одном месте более двух лет, ТО клиент имеет постоянную работу.

Как условие, так и действие правила могут учитывать несколько выражений, объединенных логическими связками И, ИЛИ, НЕ:

ЕСЛИ клиент имеет постоянную работу И клиенту более 18 лет И клиент НЕ имеет финансовых обязательств, ТО клиент может претендовать на получение кредита.

Помимо продукционных правил база знаний должна включать и простые факты, поступающие в систему через интерфейс пользователя или выводимые в процессе поиска решения задачи. Факты являются простыми утверждениями типа «клиент работает на одном месте более двух лет». И когда в процессе интерпретации правил машиной вывода какой-либо факт согласуется с частью правила ЕСЛИ, то выполняется действие, определяемое частью ТО этого правила. Новые факты, добавляемые в базу знаний в результате действий, описанных в правилах, также могут быть использованы для сопоставления с частями ЕСЛИ других правил. Последовательное сопоставление частей правил ЕСЛИ с фактами порождает цепочку вывода. Цепочка вывода, полученная в результате последовательного выполнения правил П1 и П2 показана ниже (см. рис. 12. Пример цепочки вывода.). Эта цепочка показывает, как на основании правил и исходных фактов выводится заключение о возможности получения кредита. Цепочки вывода экспертной системы могут быть предъявлены пользователю и помогают понять, как было получено решение.

Рис. 12. Пример цепочки вывода

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

Лекция 5. Фреймовая модель.

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

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

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

Структуру фрейма можно представить так:

ИМЯ ФРЕЙМА :

(имя 1-го слота: значение 1-го слота),

(имя 2-го слота: значение 2-го слота),

…………………………………………

(имя N-го слота: значение N-гo слота).

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

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

Процедура на событие «если добавлено» (IF-REMOVED). Выполняется, когда новая информация записывается в слот.

Процедура на событие «если удалено» (IF-ADDED). Выполняется, когда информация удаляется из слота.

Процедура на событие «по требованию» (IF-NEEDED). Выполняется, когда запрашивается информация из пустого слота.

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

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

Модель фрейма является достаточно универсальной, поскольку позволяет отобразить все многообразие знаний о мире через:

фреймы-структуры, для обозначения объектов и понятий (заем, залог, вексель);

фреймы-роли (менеджер, кассир, клиент);

фреймы-сценарии (банкротство, собрание акционеров, празднование именин);

фреймы-ситуации (тревога, авария, рабочий режим устройства) и др.

Рис.13. Пример описания знаний с помощью фреймов

Важнейшим свойством теории фреймов является заимствованное из теории семантических сетей наследование свойств. И во фреймах, и в семантических сетях наследование происходит по АКО-связям (A-Kind-Of = это). Слот АКО указывает на фрейм более высокого уровня иерархии, откуда неявно наследуются, т.е. переносятся, список и значения слотов. Возможно наследование свойств от нескольких прототипов. Такой вид наследования получи название «множественное наследование».

В качестве примера можно рассмотреть формирование понятия заказ товара (см. рис.13. Пример описания знаний с помощью фреймов.).

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

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

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

Наиболее распространенным типом фрейма может служить структура представления знаний следующего типа: (Имя фрейма (<Имя слота>(Значение слота>)(<Имя слота><Значение слота>),…(<Имя слота><Значение слота>)).

Например, рассмотрим фрейм: «квартира»(квартира <столовая><20кв.м>)(<стол><обеденный раскладной>)(<стулья><6, мягкие>…).

Достоинством системы, использующей фреймы, заключается в том, что те элементы, которые традиционно присутствуют в описании объекта или события, группируются и благодаря этому могут извлекаться и обрабатываться как единое целое. Скелетный фрейм для понятия «руководитель» имеет вид:

имя: РУКОВОДИТЕЛЬ

специальность: СЛУЖАЩИЙ

имя:______________________

возраст:___________________

адрес:_____________________

отдел:_____________________

заработная плата:____________

дата начала:_________________

до:_________________________

Рис.14. Скелетный фрейм для понятия "РУКОВОДИТЕЛЬ"

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

имя: РУКОВОДИТЕЛЬ

специальность: СЛУЖАЩИЙ

имя: агрегат (фамилия, имя, отчество)

возраст: агрегат (годы)

адрес: АДРЕС

отдел: диапазон (производство, администрация)

заработная плата: ЗАРПЛАТА

дата начала: агрегат (месяц, год)

до: агрегат (месяц, год) (по умолчанию: теперь)

Часть слотов заполнена некими объектами, а не простыми именами. В данном примере фигурируют три различных типа заполнителей. Заполнитель слота может быть или константой, или именем другого фрейма. Простейшие из них: АДРЕС, ЗАРПЛАТА – это имена других фреймов данной системы, на которые делается ссылка. Обозначение “агрегат” указывает на то, что должны быть заданы определенные объекты, а обозначение “интервал” – на то, что должен быть выбран один из множества объектов. В конечном итоге к заполнителю соответствующих слотов присоединяются указанные в скобках подразумеваемые (принимаемые по умолчанию) значения. Обозначения “агрегат”, “ интервал”, “подразумеваемый” называют фасетами слота.

Пример фрейма для заполнителя ЗАРПЛАТА, относящегося к фрейму РУКОВОДИТЕЛЬ, имеет вид (содержит четыре слота, один из которых требует двойного заполнителя):

имя: ЗАРПЛАТА

почасовая заработная плата: агрегат (грн. в час)

код налога: агрегат (код налога) (по умолчанию: непредвиденный)

налог на дату: агрегат (месяц, год)

вычислить ((ОПЛАТА НАЛОГА) (налог))

В этом примере проиллюстрировано понятие “процедурное присоединение”, которое дает возможность вставлять во фреймы обычные программы. Вставляемая процедура вызывается заполнителем фасета “вычислить”. В слоте “налог на дату” фрейма ЗАРПЛАТА находим заполнитель ”вычислить (ОПЛАТА НАЛОГА)(налог)”. Это указывает на то, что заполнитель фрейма ЗАРПЛАТА должен извлечь фрейм ”ОПЛАТА НАЛОГА”, содержащий некую процедуру. Эта процедура затем будет реализована с использованием информации, содержащейся в системе фреймов в качестве данных для вычисления значения ”налог на дату”, которое после этого может быть внесено в слот в поле ”налог”.

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

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

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

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

Лекция 6. Модель семантической сети.

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

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

Понятиями обычно выступают абстрактные или конкретные объекты, а отношения - это связи типа: "это" ("is"), "имеет частью" ("has part"), "принадлежит", "любит" и т.п. Характерной особенностью семантических сетей является обязательное наличие трех типов отношений:

класс - элемент класса;;

свойство – значение;

пример элемента класса.

В качестве примера на рис.15 показана весьма простая семантическая сеть для представления объекта «чайник».

Рис. 15.

Наиболее часто в семантических сетях используются следующие отношения:

связи типа "часть-целое" ("класс-подкласс", "элемент-множество" и т.п.); функциональные связи (определяемые обычно глаголами "производит", "влияет"...); количественные (больше, меньше, равно...); пространственные (далеко от, близко от, за, под, над...); временные (раньше, позже, в течение...); aтрибутивные связи (иметь свойство, иметь значение...); логические связи (и, или, не) и др.

Можно ввести несколько классификаций семантических сетей.

Например, по количеству типов отношений: однородные (с единственным типом отношений); неоднородные (с различными типами отношений).

По типам отношений: бинарные (в которых отношения связывают два объекта); парные (в которых есть специальные отношения, связывающие более двух понятий).

Проблема поиска решения в базе знаний типа семантической сети сводится к задаче поиска фрагмента сети, соответствующего некоторой подсети, соответствующей поставленному вопросу. Подобного рода задачи решаются с помощью аппарата теории графов. Следует особо отметить роль фундаментальных признаков связей (рефлексивность, симметричность и транзитивность) в процессе вывода на сети. Так, например, связи вида "это есть" или "иметь частью" транзитивны, что позволяет говорить об установлении с помощью этой связи свойств иерархии наследования в сети. Это означает, что элементы более низкого уровня в сети могут наследовать свойства элементов более высокого уровня в сети. В самом общем виде семантическая сеть представляет собой ориентированный граф, в которой вершины соответствуют определенным объектам или понятиям, а дуги отражают те отношения, которые имеются между вершинами. Базовым функциональным элементом семантической сети служит структура из двух компонентов – «узлов» и связывающих их «дуг». Каждый узел представляет некоторое понятие, а дуга – отношение между парами понятий. Дуга имеет направленность, благодаря чему между понятиями в рамках определенного факта выражается отношение «субъект/объект». Более того, любой из узлов может быть соединен с любым числом других узлов; в результате этого обеспечивается формирование сети фактов. Можно считать, что каждая из таких пар отношений представляет простой факт. Узлы помечаются именем соответствующего отношения. С позиций логики базовую структуру семантической сети можно рассматривать в качестве эквивалента предиката с двумя аргументами (бинарный предикат); эти два аргумента представляются двумя узлами, а собственно предикат – направленной дугой, связывающей эти узлы. При разумном выборе обозначений отношений можно выразить очень сложные совокупности фактов. При разработке представления в виде семантической сети особый практический интерес имеет связь вида «является», отражающая принадлежность к некоторому классу объектов. К другим видам связей относится связь «имеет», указывающая на то, что одно понятие представляет часть другого, а также связь «есть», указывающая на то, что одно понятие служит атрибутом другого.

Рисунок 16. Пример простейшей семантической сети.

Примером простой семантической сети является описание объекта автомобиль и рядя связанных с ним понятий (см. рис. 16. Пример простейшей семантической сети.). На этой сети присутствует следующая цепочка понятий: «автомобиль имеет частью двигатель», «двигатель имеет частью стартер». В силу транзитивности отношения "иметь частью" можно вывести следующее утверждение «автомобиль имеет частью стартер». Аналогично можно сделать вполне очевидный вывод, что «Иванов обладает автомобилем» или, что «Mercedes имеет частью двигатель и потребляет топливо».

Пользуясь подобными отношениями, можно представить сложные совокупности фактов. С помощью сетевых элементов могут быть построены довольно сложные комбинации фактов. На языке Lisp (List Processing – обработка списков) базовые элементы семантической сети могут быть запрограммированы в виде списковой комбинации атом/свойство. Так, элемент Иван работает в производственный отдел представляет факт – Иван работает в производственном отделе: атом – «Иван», свойство – «работает», значение данного свойства – «производственный отдел». Популярность семантических сетей обязана связи «является», в которой заложены большие возможности для построения иерархии понятий.

Основное преимущество этой модели - в соответствии современным представлениям об организации долговременной памяти человека. Недостаток модели - сложность поиска вывода на семантической сети.

Подытожим основные свойства семантических сетей.

1. Семантические сети описывают отношения между объектами, которые задаются узлами сети.

  1. Узлы обозначаются окружностями и имеют имена.

  2. Отношения между узлами указываются связующими их линиями.

  3. Семантическую сеть можно использовать для создания структур и объектов.

  4. Семантическую сеть можно использовать для создания правил базы знаний.

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

Логическая модель.

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

Языки логического типа опираются на исчисления, заимствованные из логики (чаще всего на исчисление предикатов). Каждый факт в базе знаний описывается в виде некоторого набора предикатов. Если, например, Р1 есть предикат «хорошо относится», то Р1(С, А) может интерпретироваться как утверждение: « система хорошо относится к пользователю А». Сложные структуры из фактов задаются формулами, состоящими из предикатов и операций. Например, формула описывает ситуацию на рис.а. В этой формуле черточка над символом предиката означает отрицание соответствующего утверждения, а значок & (операция конъюнкции) означает одновременность того, что все три предиката, являются истинными. Закономерности, характерные для проблемной области, в которой работает система, также задаются формулами исчисления предикатов. Для этого используется операция импликации, обозначаемая стрелкой . Запись: может характеризовать принцип типа: «друзья моих друзей – мои друзья». В этой формуле X и Y – переменные, вместо которых можно подставлять различные лица, поиск необходимого факта или закономерности в базах знаний, использующих языки логического типа, сводится к реализации процедуры логического вывода.

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

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

Лекция 7. Экспертные системы.

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

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

Экспертная система - программа, которая использует знания специалистов (экспертов) о некоторой конкретной узко специализированной предметной области и в пределах этой области способна принимать решения на уровне эксперта-профессионала.

Экспертные системы - прикладные программы ИИ, в которых база знаний представляет собой формализованные эмпирические знания высококвалифицированных специалистов (экспертов) в какой-либо узкой предметной области.

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

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

  1. Алгоритмы функционирования ЭС имитируют подход к решению проблемы со стороны человека.

  2. Умение объяснять свои действия в понятной для человека форме.

  3. Наличие естественно-языкового интерфейса.

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

ЕСЛИ условие ТО действие

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

ЕСЛИ посылка ТО заключение

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

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

Определение целей

О пределение подхода к решению

Определение фактов

Получение данных

Д остижение целей с помощью правил и механизма вывода

Извлечение новых фактов для верификации целей с помощью механизма вывода

Рис.17.

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

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

Когда целесообразно использование экспертных систем?

Экспертные системы целесообразно использовать тогда, когда 1) разработка ЭС возможна, 2) оправдана и 3) методы инженерии знаний соответствуют решаемой задаче.

Рассмотрим более подробно эти условия.

Разработка ЭС возможна, когда:

  • существуют эксперты в данной области;

  • эксперты должны сходиться в оценке предлагаемого решения;

  • эксперты должны уметь выразить на естественном языке и объяснить используемые методы;

  • задача требует только рассуждений, а не действий;

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

  • задача должна относиться к достаточно структурированной области;

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

Разработка ЭС оправдана, если:

  • решение задачи принесет значительный эффект:

  • использовать человека-эксперта невозможно из-за ограниченного количества экспертов или из-за необходимости выполнения экспертизы одновременно во многих местах;

  • при передаче информации эксперту происходит значительная потеря времени или информации;

  • необходимо решать задачу в окружении, враждебном человеку.

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

  • может быть естественным образом решена посредством манипуляции с символами, а не с числами;

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

  • должна быть достаточно сложной, чтобы оправдать затраты, но не чрезмерно сложной;

  • должна быть достаточно узкой, но практически значимой.

Назначение экспертных систем

Таким образом, экспертные системы - это прикладные системы ИИ, в которых база знаний представляет собой формализованные эмпирические знания высококвалифицированных специалистов (экспертов) в какой либо узкой предметной области. Экспертные системы предназначены для замены при решении задач экспертов в силу их недостаточного количества, недостаточной оперативности в решении задачи или в опасных (вредных) для них условиях.

Обычно экспертные системы рассматриваются с точки зрения их применения в двух аспектах: для решения каких задач они могут быть использованы и в какой области деятельности. Эти два аспекта накладывают свой отпечаток на архитектуру разрабатываемой экспертной системы.

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

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

  • диагностика,

  • прогнозирование,

  • идентификация,

  • управление,

  • проектирование,

  • мониторинг.

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

  • медицина,

  • вычислительная техника,

  • военное дело,

  • микроэлектроника,

  • радиоэлектроника,

  • юриспруденция,

  • экономика,

  • экология,

  • геология (поиск полезных ископаемых),

  • математика.

Примеры широко известных и эффективно используемых (или использованных в свое время) экспертных систем:

DENDRAL - ЭС для распознавания структуры сложных органических молекул по результатам их спектрального анализа (считается первой в мире экспертной системой), MOLGEN - ЭС для выработки гипотез о структуре ДНК на основе экспериментов с ферментами; MYCIN- ЭС диагностики кишечных заболеваний; PUFF - ЭС диагностики легочных заболеваний; MACSYMA - ЭС для символьных преобразований алгебраических выражений; YES/MVS - ЭС для управления многозадачной операционной системой MVS больших ЭВМ корпорации IBM; DART - ЭС для диагностики больших НМД корпорации IBM; PROSPECTOR - ЭС для консультаций при поиске залежей полезных ископаемых; POMME - ЭС для выдачи рекомендаций по уходу за яблоневым садом; набор экспертных систем для управления планированием, запуском и полетом космических аппаратов типа "челнок"; ЭСПЛАН - ЭС для планирования производства на Бакинском нефтеперерабатывающем заводе; МОДИС - ЭС диагностики различных форм гипертонии.

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

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

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

Лекция 8. ЭС (продолжение)

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

Основу ЭС составляет подсистема (машина) логического вывода, которая использует информацию из базы знаний (БЗ), генерирует рекомендации по решению искомой задачи. Чаще всего для представления знаний в ЭС используются системы продукций и семантические сети. Для этого обычно используется программно реализованный механизм дедуктивного логического вывода (какая-либо его разновидность) или механизм поиска решения в сети фреймов или семантической сети. Допустим, БЗ состоит из фактов и правил (если <посылка> то <заключение>). Если ЭС определяет, что посылка верна, то правило признается подходящим для данной консультации и оно запускается в действие. Запуск правила означает принятие заключения данного правила в качестве составной части процесса консультации. Цель ЭС - вывести некоторый заданный факт, который называется целевым утверждением (то есть в результате применения правил добиться того, чтобы этот факт был включен в рабочее множество), либо опровергнуть этот факт (то есть убедиться, что его вывести невозможно, следовательно, при данном уровне знаний системы он является ложным). Целевое утверждение может быть либо "заложено" заранее в базу знаний системы, либо извлекается системой из диалога с пользователем. Работа системы представляет собой последовательность шагов, на каждом из которых из базы выбирается некоторое правило, которое применяется к текущему содержимому рабочего множества. Цикл заканчивается, когда выведено либо опровергнуто целевое утверждение. Цикл работы экспертной системы иначе называется логическим выводом Логический вывод может происходить многими способами, из которых наиболее распространенные - прямой порядок вывода и обратный порядок вывода. Прямой порядок вывода - от фактов, которые находятся в рабочем множестве, к заключению. Если такое заключение удается найти, то оно заносится в рабочее множество. Прямой вывод часто называют выводом, управляемым данными.

Машина логического вывода может реализовывать рассуждения в виде:

    1. Дедуктивного вывода (прямого, обратного, смешанного);

    2. Нечеткого вывода (аппарат нечетких множеств и нечеткой логики );

    3. Вероятностного вывода (использование коэффициентов уверенности, выражающих степень достоверности знания);

4. Унификации (подобно тому, как это реализовано в Прологе);

  1. Поиска решения с разбиением на последовательность подзадач;

  2. Поиска решения с использованием стратегии разбиения пространства поиска с учетом уровней абстрагирования решения или понятий, с ними связанных;

  3. Монотонного или немонотонного рассуждения,

  4. Рассуждений с использованием механизма аргументации;

  5. Ассоциативного поиска с использованием нейронных сетей;

  6. Вывода с использованием механизма лингвистической переменной.

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

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

Функционирование ЭС

ЭС работает в двух режимах: 1) режиме приобретения знаний; 2) режиме решения задачи, называемом также режимом консультации или режимом использования ЭС

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

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

Классификация инструментальных средств.

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

Языки программирования

Средства автоматизации разработки экспертных систем

Оболочки экспертных систем

Языки программирования

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

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

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

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

Объектно-ориентированные языки

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

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

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

Smalltalk — объектно-ориентированный язык программирования с динамической типизацией, продолжает активно развиваться.

Smalltalk оказал большое влияние на развитие многих других языков, таких как: Objective-C, Actor, Java и Ruby. Основными идеями Smalltalk’а являются:

«Всё — объекты». Строки, целые числа, логические значения, определения классов, блоки кода, стеки, память — всё представляется в виде объектов. Выполнение программы состоит из посылок сообщений между объектами. Любое сообщение может быть послано любому объекту; объект-получатель определяет, является ли это сообщение правильным, и что надо сделать, чтобы его обработать.

Одной из особенностей Smalltalk’а является то, что традиционные конструкции: if-then-else, for, while, и т. д. не являются частью языка. Все они реализованы с помощью объектов. Например, решение принимается с помощью посылки сообщения ifTrue: логическому объекту, и передаёт управление фрагменту кода, если логическое значение истинно. Есть всего три конструкции:

посылка сообщения объекту;

присваивание объекта переменной;

возвращение объекта из метода;

и несколько синтаксических конструкций для определения литеральных объектов и временных переменных.

Язык логического программирования PROLOG

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

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

С практической точки зрения, пользуясь языком PROLOG, программист в качестве "бесплатного приложения" получает в свое распоряжение следующие возможности:

  • индексированную базу данных фраз, которые можно использовать для представления правил, процедур или данных;

  • универсальный механизм сопоставления, который позволяет выполнять сопоставление данных и шаблонов, включающих переменные, и возвращать подстановку, которая может обеспечить их совпадение;

  • стратегию управления (поиск в глубину — depth-first search), основанную на правилах нисходящего поиска (фразы, которые размещены в базе данных ближе к "голове", обрабатываются первыми) и вычислении слева направо (подцели обрабатываются в том порядке, в котором они перечислены в списке).

Действительно, дедуктивную порождающую систему довольно ПРОСТО эмулировать на языке PROLOG (как используется эмуляция) Можно без особого труда разработать и простой интерпретатор, реализующий стратегию построения прямой цепочки вывода. Модификация рабочей памяти выполняется операторами assert и retract, которые добавляют или удаляют формулы из базы данных. Вы уже знаете, как можно организовать локальное управление ходом процесса в системе, основанной на фреймах, как организовать обработку значений по умолчанию и исключений, хотя эти методы и не вписываются в стандартную логику.

Успешный опыт применения идей логического программирования, в частности создание программы МЕСНО, продемонстрировал ряд явных отклонений от синтаксиса исчисления предикатов первого порядка и его процедурной интерпретации в стандартной версии PROLOG. Некоторые семантические и синтаксические ограничения в программах МЕСНО и PLANNER до сих пор не преодолены в системах, базирующихся на языках логического программирования.

Язык функционального программирования LISP

Лисп (LISP, от англ. LISt Processing — «обработка списков») — семейство языков программирования, основанных на представлении программы системой линейных списков, которые притом являются основной структурой данных языка. Лисп считается вторым после Фортрана старейшим высокоуровневым языком программирования. Традиционный Лисп имеет строгую динамическую систему типов, содержит императивные свойства, но в общем поощряет функциональную парадигму программирования.

Существует объектно-ориентированное расширение языка — CLOS.

Основная особенность Лиспа — представление программы в виде списков — определяет однородность и простоту синтаксиса. Внешне исходный код программы на Лиспе отличается обилием круглых скобок; редактирование программ значительно упрощается использованием текстового редактора, поддерживающего автоматическое выравнивание кода, подсветку соответствующих пар скобок и команды рода «перейти через список вправо». Хорошо приспособлен к кодированию на Лиспе редактор Emacs (большая часть которого написана на Лиспе), кроме того в коммерческих реализациях (например в LispWorks) IDE содержит удобные редакторы, сохраняющие все достоинства Emacs.

Одним из самых распространённых диалектов Лиспа является Common Lisp. Его реализации существуют для большинства платформ. Есть реализации распространяемые свободно под лицензиями, позволяющими использовать Лисп без ограничений в коммерческих приложениях, кроме этого существуют коммерческие реализации, предлагающие дополнительные возможности (IDE, дополнительные библиотеки и т. п.), в том числе техническую поддержку. С полным списком реализаций можно ознакомиться здесь: Common Lisp Implementation.

Лекция 9. Многофункциональные программные среды

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

Структурированные объекты, например фреймы, оказываются более удобным средством для хранения и манипулирования описаниями объектов предметной области, но применение таких знаний требует включения в программу фрагментов программного кода (например, на языке LISP), которые затем трудно анализировать. Рациональное зерно в первых попытках свести вместе стили, основанные на правилах и фреймах, состояло в том, чтобы объединить способность представлять объекты, характерные для фреймов, с возможностями связывать условия и действия с помощью порождающих правил.

Одной из первых многофункциональных сред искусственного интеллекта является LOOPS. в которой в рамках единой архитектуры обмена сообщениями были объединены четыре парадигмы программирования:

  1. Процедурно-ориентированное программирование. Эта парадигма была представлена языком LISP, в котором активным компонентом являются процедуры, а пассивным — данные, несмотря на то, что в LISP процедуры сами по себе также являются данными, поскольку имеют вид списков. В рамках единой среды процедуры могут быть использованы для обработки внешних данных, в частности изменения значений общедоступных переменных.

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

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

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

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

CLIPS как многофункциональная среда программирования(инженерии знаний)

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

  • для определения стандартных функций используется синтаксис, подобный LISP;

  • предоставляет в распоряжение разработчика родовые функции, аналогичные мультиметодам CLOS;

  • располагает встроенным объектно-ориентированным языком COOL, который, в отличие от CLOS, включает и средства поддержки обмена сообщениями.

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

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

Средства автоматизации разработки экспертных систем.

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

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

Оболочки экспертных систем.

Оболочки экспертных систем - программный продукт, обладающий средствами представления знаний для определенных предметных областей. Задача пользователя заключается не в непосредственном программировании, а в формализации и вводе знаний с использованием предоставленных оболочкой возможностей. Недостатком этих систем можно считать невозможность охвата одной системой всех существующих предметных областей. Примером могут служить ИНТЕРЭКСПЕРТ, РС+, VP-Expert.

Оболочка, shell - базовый элемент операционной системы, определяющий интерпретацию команд и действий пользователя.

CLIPS (Язык C, интегрированная Продукционная Система) - OPS-ПОДОБНАЯ продукционная система, использующая вывод от фактов к цели, написанная на C в ANSI NASA. Механизм логического вывода CLIPS включает сопровождение , динамическое добавление правил и настраиваемые cтратегии разрешения противоречий. CLIPS, включая динамическую версию , легко встраивается в другие прикладные программы. CLIPS включает объектно-ориентированный язык, названный COOL(Объектно-ориентированный Язык CLIPS), который прямо интегрирован с механизмом логического вывода.

FuzzyCLIPS 6.02 - версия CLIPS, оболочка экспертной системы, основанная на правилах, используется для представления и управления нечеткими фактами и правилами. В дополнение к функциональным возможностям CLIPS, FuzzyCLIPS может иметь дело с точными, нечеткими (или неточными) знаниями, сложными рассуждениями, которые можно свободно смешивать в правилах и фактах экспертной системы. Система использует две базисных концепции о неточности, нечеткость и неопределенность.

Этапы создания экспертных систем

В проектировании экспертных систем можно выделить следующие этапы: