Продукции по сравнению с другими формами представления знаний имеют следующие преимущества:
· модульность;
· единообразие структуры (основные компоненты продукционной системы могут применяться для построения интеллектуальных систем с различной проблемной ориентацией);
· естественность (вывод заключения в продукционной системе во многом аналогичен процессу рассуждений эксперта);
· гибкость родовидовой иерархии понятий, которая поддерживается только как связи между правилами (изменение правила влечет за собой изменение в иерархии).
Однако продукционные системы не свободны от недостатков:
· процесс вывода менее эффективен, чем в других системах, поскольку большая часть времени при выводе затрачивается на непроизводительную проверку применимости правил;
· этот процесс трудно поддается управлению;
· сложно представить родовидовую иерархию понятий.
Представление знаний с помощью продукций иногда называют «плоским», так как в продукционных системах отсутствуют средства для установления иерархии правил. Объем базы знаний продукционных систем растет линейно, по мере включения в нее новых фрагментов знаний, в то время как в традиционных алгоритмических системах, использующих деревья решений, зависимость между объемом базы знаний и количеством собственно знаний является логарифмической.
Логические модели
Логические модели представления знаний реализуются средствами логики предикатов.
Предикатом называется функция, принимающая только два значения — истина и ложь — и предназначенная для выражения свойств объектов или связей между ними. Выражение, в котором утверждается или отрицается наличие каких-либо свойств у объекта, называется высказыванием. Константы служат для именования объектов предметной области. Логические предложения или высказывания образуют атомарные формулы. Интерпретация предиката — это множество всех допустимых связываний переменных с константами. Связывание представляет собой подстановку констант вместо переменных. Предикат считается общезначимым, если он истинен на всех возможных интерпретациях. Говорят, что высказывание логически следует из заданных посылок, если оно истинно всегда, когда истинны посылки.
Наиболее простым языком логики является исчисление высказываний, в котором отсутствуют переменные. Любому высказыванию можно приписать значение истинно или ложно. Отдельные высказывания могут соединяться связками И, ИЛИ, НЕ, которые называются булевыми операторами. Основу исчисления высказываний составляют правила образования сложных высказываний из атомарных.
Здесь переменные обозначают логические высказывания, о которых можно сказать, что они истинны или ложны. Логические операторы имеются в большинстве языков программирования. Однако исчисление высказываний — недостаточно выразительное средство для обработки знаний, поскольку в нем не могут быть представлены предложения, включающие переменные с кванторами.
Исчисление предикатов с кванторами (логика предикатов) является расширением исчисления высказываний, в котором для выражения отношений между объектами предметной области могут использоваться предложения, включающие не только константы, но и переменные.
В общем случае модели, основанные на логике предикатов, описываются формальной системой, которая задается четверкой:
М = (Т, Р, А, П),
где Т — множество базовых элементов или алфавит формальной системы; Р — множество синтаксических правил, с помощью которых можно строить синтаксически корректные предложения; А — множество аксиом или некоторых синтаксически правильных предложений, заданных априорно; П — правила продукций (правила вывода или семантические правила), с помощью которых можно расширять множество А, добавляя в него синтаксически правильные предложения.
Главное преимущество логических моделей представления знаний заключается в возможности непосредственно запрограммировать механизм вывода синтаксически правильных высказываний. Примером такого механизма служит, в частности, процедура вывода, построенная на основе метода резолюций. Однако с помощью правил, задающих синтаксис языка, нельзя установить истинность или ложность того или иного высказывания. Причем это распространяется абсолютно на все языки. Высказывание может быть построено синтаксически правильно, но оказаться совершенно бессмысленным.
Логические модели представления и манипулирования знаниями были особенно популярны в 70-х годах. Тогда казалось, что с появлением языков программирования типа ПРОЛОГ процедуры логического вывода в исчислении предикатов будут достаточны для решения всех типов задач в интеллектуальных системах. Вместе с тем, по мере того как в поле зрения исследователей включались все новые интеллектуальные задачи, стало ясно, что говорить о доказательном выводе можно только в небольшом числе случаев, когда проблемная область, в которой решается задача, формально описана и полностью известна. Но большинство задач, где интеллект человека позволяет находить нужные решения, связано с областями, где знания принципиально неполны, неточны, некорректны и характеризуются еще немалым числом характеристик, начинающихся с частицы «не». При таких условиях речь может идти только о правдоподобном выводе, при котором окончательный результат получается лишь с некоторой оценкой уверенности в его истинности. Кроме того, специалисты, работающие в плохо формализованных областях (например, в медицине), рассуждают совсем не так, как представители точных наук. Для них весомым аргументом в пользу принятия какого-либо положения может быть мнение ряда признанных в этих областях авторитетов или, например, сходство доказываемого положения с другим, для которого решение уже известно. Поэтому дальнейшее развитие баз знаний пошло по пути работ в области индуктивных логик, логик «здравого смысла», логик веры и других логических систем, имеющих мало общего с классической математической логикой.
Фреймы
Фрейм чаще всего определяют как структуру данных для представления стереотипных ситуаций. Модель представления знаний на основе фреймов использует концепцию организации памяти, понимания и обучения человека, предложенную М. Минским (1979). Фрейм (дословно — «рамка») — это единица представления знаний, детали которой могут изменяться в соответствии с текущей ситуацией. Фрейм в любой момент может быть дополнен различной информацией, касающейся способов применения данного фрейма, последствий этого применения и т. п.
Структура фрейма состоит из характеристик описываемой стереотипной ситуации и их значений, которые называются, соответственно, слотами и заполнителями слотов.
Имя фрейма:
Имя первого слота, значение первого слота
Имя второго слота, значение второго слота
Имя К-го слота, значение К-го слота
Незаполненный фрейм называется протофреймом, а заполненный — экзофреймом. Роль протофрейма как оболочки в экзофрейме весьма важна. Эта оболочка позволяет осуществлять процедуру внутренней интерпретации, благодаря которой данные в памяти системы не безлики, а имеют вполне определенный, известный системе смысл.
Слот может содержать не только конкретное значение, но и имя процедуры, позволяющей вычислить его по заданному алгоритму, а также одну или несколько продукций (эвристик), с помощью которых это значение определяется. В слот может входить не одно, а несколько значений. Иногда этот слот включает компонент, называемый фасетом, который задает диапазон или перечень его возможных значений. Фасет указывает также граничные значения заполнителя слота.
Как уже отмечалось, помимо конкретного значения в слоте могут храниться процедуры и правила, которые вызываются при необходимости вычисления этого значения. Среди них выделяют процедуры-демоны и процедуры-слуги. Первые запускаются автоматически при выполнении некоторого условия, а вторые активизируются только по специальному запросу. Если, например, фрейм, описывающий человека, включает слоты ДАТА РОЖДЕНИЯ и ВОЗРАСТ и в первом из них находится некоторое значение, то во втором слоте может стоять имя процедуры-демона, вычисляющей возраст по дате рождения и текущей дате и активизирующейся при каждом изменении текущей даты.
Совокупность фреймов, моделирующая какую-либо предметную область, представляет собой иерархическую структуру, в которую фреймы собираются с помощью родовидовых связей. На верхнем уровне иерархии находится фрейм, содержащий наиболее общую информацию, истинную для всех остальных фреймов. Фреймы обладают способностью наследовать значения характеристик своих родителей, находящихся на более высоком уровне иерархии. Эти значения могут передаваться по умолчанию фреймам, находящимся ниже них в иерархии, но если последние содержат собственные значения данных характеристик, то в качестве истинных принимаются именно они. Это обстоятельство позволяет без затруднений учитывать во фреймовых системах различного рода исключения.
Различают статические и динамические системы фреймов. В системах первого типа фреймы не могут быть изменены в процессе решения задачи, а в системах второго типа это допустимо.
О системах программирования, основанных на фреймах, говорят, что они являются объектно-ориентированными. Каждый фрейм соответствует некоторому объекту предметной области, а слоты содержат описывающие этот объект данные, то есть в слотах находятся значения признаков объектов. Фрейм может быть представлен в виде списка свойств, а если использовать средства базы данных, то в виде записи.