Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системы искусственного интеллекта

..pdf
Скачиваний:
21
Добавлен:
05.02.2023
Размер:
2.23 Mб
Скачать

141

Факты могут добавляться к списку фактов (с помощью команды assert), уда-

ляться из него (с помощью команды retract), изменяться (с помощью команды modify) и дублироваться (с помощью команды duplicate) самим пользователем или программой. Например:

(assert (light green))

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

(deffacts walk "Some facts about walking"

(status walking)

(walk-sign walk) )

Когда производится сброс состояния среды CLIPS (с помощью команды reset)

все факты, описанные в конструкции deffacts, добавляются к списку фактов.

Кроме того, по этой команде в список фактов заносится исходный факт (initialfact). Этот факт включается в список фактов всегда с идентификатором f-0.

Одним из основных методов представления знаний в CLIPS являются правила.

Правила используются для представления эвристик, определяющих ряд дей-

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

Правило состоит из двух частей: антицедента (условия), который является ана-

логом условия в if-then операторе и записывается слева, и консеквента (заклю-

чения), который является аналогом then части этого оператора и записывается справа.

142

Левая часть правила представляет собой ряд условий (условных элементов), ко-

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

ет в списке фактов. Одним из типов условных элементов может быть образец.

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

кие факты удовлетворяют условию, определяемому образцом. Процесс сопо-

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

определяет, какие из правил являются применимыми. Если все условия правила выполняются, то оно активируется и помещается в список активированных пра-

вил.

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

CLIPS.

Правая часть правила представляет собой совокупность действий, выполняе-

мых, если правило применимо. Действия, описанные в применимых правилах,

выполняются тогда, когда блок вывода CLIPS получает команду начать выпол-

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

блок вывода использует глубинную стратегию разрешения конфликтов. Дей-

ствия, описанные в выбранном правиле, выполняются (при этом список приме-

нимых правил может измениться), а затем блок вывода выбирает другое прави-

ло и т. д. Этот процесс продолжается до тех пор, пока не остается ни одного применимого правила, т. е. пока список активированных правил не окажется

143

пуст. Для выбра приоритета правил используется параметр salience, которому может быть присвоено любое целочисленное значение в диапазоне [-10 000, 10 000]

Блок вывода постоянно отслеживает все правила, условия которых выполня-

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

(defrule rule_name "optional_comment"

(patten_1)

(patten 2)

……….

(patten_N)

=>

(action_1)

(action_2)

(action_M))

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

Идентификатор переменной всегда начинается с вопросительного знака, за ко-

торым следует ее имя. В общем случае формат переменной выглядит следую-

щим образом:

?

144

Примеры переменных:

?х ?sensor ?noun ?color

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

Чаще всего переменные описываются и получают значения в левой части пра-

вила. Например:

(defrule make-quack

(duck-sound ?sound)

=>

(assert (sounds-is ?sound) )

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

ется в правой части при помощи функции bind.

(defrule addition

(numbers ?x ?y)

=>

(assert (answer (+ ?x ?y)))

(bind ?answer (+ ?x ?y))

145

(printout t "answer is " ?answer crlf))

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

вать фактами непосредственно из правила. Для такого присвоения используется комбинация "<-". Следующий пример иллюстрирует присвоение переменной значения адреса факта и ее последующее использование:

(defrule get-married

?duck <- (bachelor Dopey)

=>

(retract ?duck))

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

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

струкций. Глобальные переменные CLIPS подобны глобальным переменным в процедурных языках программирования, но они значительно слабее типизиро-

ваны (на них не налагается ограничения хранения данных только одного типа. CLIPS не ориентирован на численные вычисления, но в нём предусмотрены стандартные математические и арифметические функции: +, –, *, /, ** (возведе-

ние в степень), Abs, Sqrt, Mod, Min, Max.

Контрольные вопросы

1.Какая модель знаний поддерживается в среде CLIPS?

2.Как создаются правила в CLIPS?

3.Какие языки поддерживаются в среде ART?

146

4.Перечислите функции конструктора deffunction.

5.Какие инструментальные системы для разработки СИИ существуют?

Глава 9. Разработка систем искусственного интеллекта

Проектирование систем искусственного интеллекта— это итеративный и эволюционный процесс, в котором участвуют такие специалисты, как: эксперт,

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

висимости от объема и трудоемкости работ группа может состоять из трех — шести человек.

При оценке проблемной области на этапе проектирования СИИ необходи-

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

ставления данных, затраты на разработку СИИ, наличие экспертов, наличие не-

обходимых ресурсов (компьютеров, программистов, программного обеспечения и т. д.).

Процесс построения СИИ разделяют на 4 основных этапа (рис. 9.1)

1. Идентификация определения задач и идентификация их характеристик.

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

рактеристики и особенности. Разрабатывается техническое задание на проекти-

руемую систему и очерчивается круг пользователей системы. В результате вы-

рабатываются определенные требования.

147

Рис. 9.1 - этапы разработки СИИ

2. Концептуализация предметной области, отражающая знания экспертов,

позволяет анализировать тип знаний, которыми оперирует эксперт в процессе принятия решений. Инженер знаний определяет формальные средства пред-

ставления знаний и процедуры получения решений, соответствующие харак-

теру рассуждений эксперта при выводе решения.

3 . Формализация представления знаний (модели) и определение механизма вывода решений. Эти компоненты моделирования в значительной степени вли-

яют на успешное решение поставленной задачи по проектированию системы.

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

4. Тестирование системы.

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

явлении различных недостатков происходит обращение к тому или иному этапу разработки в зависимости от характера недостатков. При отсутствии каких-либо знаний в СИИ или их недостаточной определенности возвращаются к этапу 4 и

по возможности вносят поправки. В случае если какие-либо знания, представ-

148

ленные экспертом практически невозможно представить в пределах формализ-

ма выбранной модели представления знаний, то возвращаются к этапу 3 и вы-

бирают альтернативные модели или схемы представления знаний. 5.

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

реализуемых инструментарием. Определяют следующие стадии существования СИИ: демонстрационный прототип; исследовательский прототип; действующий прототип; промышленная система; коммерческая система.

Демонстрационный прототип — это состояние разработанности системы,

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

гой стороны, эту стадию стремятся пройти как можно быстрее. Работа демон-

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

Исследовательский прототип проектируется в течение 1,5 ...2 лет. На этой стадии развития системы ее БЗ уже содержит несколько сотен правил, которые достаточно адекватно описывают предметную область.

Действующий прототип систем искусственного интеллекта осуществляет качественный вывод решений на расширившемся пространстве правил, достиг-

шем порядка 1000. Поэтому для вывода сложных решений требуются большие ресурсы времени и памяти.

Промышленные системы обеспечивают высокий уровень качества решения проблем предметной области при значительных уменьшениях времени решения и требуемой памяти. Количество правил возрастает не столь значительно по сравнению с действующим прототипом. На этой стадии происходит преобразо-

149

вание действующего прототипа за счет расширения числа правил и совершен-

ствования систем искусственного интеллекта на базе использования более эф-

фективных, инструментальных средств. Это требует примерно 3 ... 4 года.

Коммерческая система предназначена в основном для продажи. Она явля-

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

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

сти оказывает влияние на функционирование СИИ, выбор метода представле-

ния знаний, способов рассуждения о знаниях, и т. д.

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

обретения знаний, а также различные формы получаемой информации.

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

Предложена следующая классификация этапов обучения СИИ, соответ-

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

- получение информации без логических выводов. Это обучение без выво-

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

- получение извне информации, уже представленной в виде знаний, т.е. в

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

ходимо иметь функцию преобразования входной информации в формат, удоб-

ный для дальнейшего использования и включения в базу знаний.

150

-обучение по примерам.

1.Параметрическое обучение.

2.Обучение на основе выводов по аналогии.

3.Обучение на основе выводов по индукции – эвристическое

обучение.

Параметрическое обучение. Наиболее простая форма обучения по приме-

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

хологические модели обучения, системы управления обучением и другие си-

стемы.

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

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

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

Обучение на основе выводов по индукции – эвристическое обучение. Обу-

чение по индукции с использованием выводов высокого уровня, как при обуче-

нии по аналогии. В процессе этого обучения путем обобщения совокупности имеющихся данных выводятся общие правила. Обучение этой категории вклю-

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

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

ется из представления входной информации. Приобретение знаний на метау-

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