Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лахов.doc
Скачиваний:
1
Добавлен:
15.04.2019
Размер:
380.42 Кб
Скачать

Сопоставление с переменной образца

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

(< переменная)

которая сопоставляется лишь с той частью образа, с которой эта переменная уже сопоставлена. Например:

_(сопоставь1 ‘ (?> x) ( *> Y) ( < X))

‘(символ ТОТ-ЖЕ должен быть ТОТ-ЖЕ))

(( Х. ТОТ-ЖЕ) ( У ДОЛЖЕН БЫТЬ))

Направленный с права налево уголок скобки < напоминает о том, что переменная уже ранее сопоставлена.

Форма < обрабатывается так, что значение переменной берется из списка пар и заменяет в образце выражение с <, и с полученным таким образом образцом вновь пытаются выполнить сопоставление.

(defсопоставитель < ( m h v пары)

(сопоставь 1 (cons (значение v пары)

(cdк m)) h пары))

(defun значение (имя пары)

(cdr (assoc имя пары )))

Лекция № 9

ЯЗЫКИ ПРОГРАММИРОВАНЯ НИЗКОГО УРОВНЯ ДЛЯ Ии И ЯЗЫКИ ПРЕДОСТАВЛЕНИЯ ЗНАНИЙ.

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

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

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

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

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

До недавнего времени наиболее популярным базовым языком реализации систем ИИ вообще и ЭС, в частности, был ЛИСП (McCarthy, 1978].

Как известно, язык ЛИСП был разработан в Стэнфорде под руководством Дж. Маккарти в начале 60-х годов и не предназначался вначале для программирования задач ИИ. Это был язык, который должен был стать следующим за ФОРТРАНом шагом на пути автоматизации программирования.

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

1990

1980

1970

1960

Рис. 9.1 Эволюция средств и представления знаний

Примерно тогда же окончательно сформировались и принципы, положенные в основу языка ЛИСП: использование единого спискового предоставления для программ и данных, применение выражений для определения функций, скобочный синтаксис языка. Процесс разработки языка завершился созданием версии ЛИСП 1.5. [McCarthy, 1978], которая на многие годы определила пути его развития.

После разработки в начале 70-ых годов таких мощных ЛИСП систем, MacLisp, Interlisp [Moon, 1973; Teitelman, 1974], попытки создания языков ИИ, отличенных от ЛИСПа , но на той же парадигме, по-видимому, сходят на нет. И дальнейшее развитие языка идет, с одной стороны, по пути его стандартизации (таковы, например, Standart Lisp, Franz Lisp и Common Lisp), а с другой – в направлении создания концептуально новых языков для предоставления и манипулирования знаниями, погружённых в ЛИСП – среду [Barr et al., 1982].

Уже в середине 60-ых годов разрабатывались языки, предполагающие другие концептуальные основы. Наиболее важными из них в области обработки символьной информации являются, по нашему мнению, СНОБОЛ [Griswold, 1978], разработанный в лабораториях Белла, и язык РЕФАЛ [Турчин, 1968], созданный в ИПМ АН СССР.

Первый из них (СНОБОЛ) – язык обработки строк, в рамках которого впервые появилась и была реализована в достаточно полный мере концепция поиска по образцу. С позицией сегодняшнего дня можно сказать, что язык СНОБОЛ был одной из первых практических реализаций развитой продукционной системы. Наиболее известная и интересная версия этого языка – СНОБОЛ – IV [Грисуолд и др., 1980], здесь на наш взгляд, техника задания образцов и работа с ними существенно опередили потребности практики.

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

В начале 70-х годов появился ещё один новый язык, способный составить конкуренцию ЛИСПу при реализации систем, ориентированных на знания; - язык ПРОЛОГ [Сlocksin et al., 1982]. Он не даёт новых сверхмощных средств программирования по сравнению с ЛИСПом, но поддерживает другую модель организации вычислений. Подобно тому, как ЛИСП скрыл от программиста устройство памяти ВМ, ПРОЛОГ позволил ему не заботиться (без необходимости) о потоке управления в программе. ПРОЛОГ предполагает такую парадигму мышления, в рамках которой описание решаемой задачи представляется в виде слабо структурированной совокупности отношений. Это удобно, если число отношений не слишком велико и каждое отношение описывается небольшим числом альтернатив. В противном случае ПРОЛОГ – программа становиться весьма сложной для понимания и модификации. Возникают и проблемы эффективности реализации языка, так как в общем случае механизмы вывода, встроенные в Пролог, обеспечивают поиск решения на основе перебора возможных альтернатив и декларативного возврата из тупиков. ПРОЛОГ разработан в Марсельском университете 1971 г. [Colmerauer, 1983].

Необходимо выделить языки, ориентированные на программирования поисковых задач. Это ПЛЕНЕР и различные его модификации [Пильщиков, 1983], КОННАВЕЙР [Sussman et al., 1976], а также языки выросшие из потребностей известной планирующей системы QA4 [Sacerdoti et al., 1976]. Все эти языки функционируют в ЛИСП-среде и создавались как расширения базового языка. Для них, кроме свойств ЛИСПа, характерны следующие черты: представление данных в виде произвольных списковых структур; развитые методы сопоставления образцов, поиск с возвратами и вызов процедур по образцу. Заметим, что в конечном счете ни один из них не стал универсальным языком программирования ИИ.

В 70-ых годах в программировании вообще и программировании задач ИИ, в частности, центр тяжести стал смещаться от процедурных к декларативным описаниям. К этому же времени в ИИ сформировались и концепции предоставления знаний на основе семантических статей и фреймов. Естественно, что появились и специальные языки программирования, ориентированных на поддержку этих концепций. Среди таких ЯПЗ явно выделяются KRL, FRL, KL-ONE и некоторые другие [Хорошевский, 1990]. Характерными чертами этих ЯПЗ были: двухуровневые предоставления данных (абстрактная модель предметной области в виде иерархии множеств понятий и конкретная модель ситуации как совокупность взаимосвязанных экземпляров этих понятий), предоставление связей между понятиями и закономерностей предметной области в виде присоединенных процедур, семантический подход к сопоставлению образцов поиску по образцу.

OPS 5 – один из многочисленных на сегодняшний день ЯПЗ для ЭС, поддерживающих продукционный подход к предоставлению знаний. OPS 5 (Brownstone et al) (Official Production System, version 5) – программа, в общем случае, содержит секцию деклараций, где описываются используемые объекты и определяются введённые пользователями функции, секцию продукций, основу которой составляют правила. OPS 5 – объекты описываются с помощью фреймов – экземпляров, прототипы которых задаются в виде определённых структур данных, опирающихся на небольшое число встроенных типов. Во –время исполнения программы обрабатываемы данные помещаются в рабочую память, а правила – в память продукции. Модуль вывода решений в OPS 5 – системе состоит из трёх блоков: отождествления, где осуществляется поиск подходящих правил, выбора исполняемого правила из конфликтного множества правил и собственно исполнителя выбранного правила. Непосредственно в OPS 5 поддерживается единственная стратегия вывода решений – вывод, управляемый целями.

Инструментальные пакеты для ИИ

Развитые среды автоматизации программирования на базе языков символьной обработки является необходимым технологическим уровнем систем поддержки разработки прикладных интеллектуальных систем. К лучшим, большинство специалистов относит системы ART [ART, 1984), KEE [Florentin, 1987] и Knowledge Ckaft [CARNEGIE, 1987) и G 2.

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

В середине 80-х годов система ART была одной из самых современных интегрированных сред (ИС), поддерживающих технологию проектирования систем. Основанных на правилах. В ней существует ясное и богатое разнообразие типов правил.

ART объединяет два главных формализма предоставления знаний: правила для процедурных знаний и фреймоподобные структуры для декларативных знаний . Главным является формализм продукционных правил. Декларативные знания описываются через факты и схемы [schemata] и в некоторых случаях образцы [patterns]. Кроме факторов числовой неопределённости, которые связываются с индивидуальными фактами, в ART размещаются факты, которые явно применяются за ложные, и факты, истинность которых неизвестна. Возможно использование логических зависимостей, которые позволяют изменить факты позже, если обнаружится, что они на самом деле оказались ложными. Механизм Viewpoint допускает образование нескольких конкурирующих миров, где пробуются альтернативные решения. Первые версии ART опирались на язык ЛИСП, последние реализованы непосредственно на С.

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

KEE является средой, в основе которой лежат фреймы , в то время как в ART – правила.

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

Инструментальная среда G 2 – разработка фирмы Gensym Corp. – является развитием известной экспертной системы реального времени PICON. Основные функциональные возможности G 2 связаны с поддержкой процессов слежения за множеством (порядка тысяч) одновременно изменяющихся параметров и обработкой изменений в режиме реального времен, проверкой нештатных ситуаций на управляемы объектах и принятием решений как в режиме ассистирования оператору, так и в автоматическом режиме. функциональные возможности системы обеспечиваются быстрым выполнением распараллеливающихся операций, доступными в режиме on-lain данными, блоками темпорального вывода (включая стандартные forward и backward рассуждения, а также event – driven выводы). Все это даёт возможность прикладным системам, разработанным с использованием G 2, поддерживать на RISC – архитектурах обработку 1000 правил реального уровня сложности.

ЛИТЕРАТУРА

1. Гаврилова Т.А., Хорошевский В. Ф. Базы знаний интеллектуальных сисстем. СПб.: Питер. 2001 – 384 с. илл.

2. Маурер У. Введение в программирование на языке Лисп. – М.: Мир – 1976 – 104 с.

3. Хювенен Э., Сеппянен И. Мир Лиспа . В 2 т.т. Т.1 Введение в язык Лисп и функциональное программирование. – М.: Мир, 1990 –447 с. Т.2 Методы и системы программирования . – М.: Мир, 1990 – 319 с.

4. Джонсон П. Введение в экспертные системы. – М.: Издательский дом “Вильямс”, 2001 – 624 с. илл.

5. Хендерсон П. Функциональное программирование. Применение и реализации. – М.:1983 – 349 с. илл.

6. www.xanalis.com ( дистрибутивы системы программирования WorkLisp и документация по Common Lisp )