
- •1. Введение в интеллектуальные системы.................................................................7
- •2. Разработка систем, основанных на знаниях ........................................................36
- •3. Теоретические аспекты инженерии знаний..........................................................55
- •4. Технологии инженерии знаний.............................................................................. 95
- •5. Новые тенденции и прикладные аспекты
- •6. Программный инструментарий разработки систем, основанных на знаниях............................................................................................................................194
- •7. Пример разработки системы, основанной на знаниях ................................….226
- •8. Представление данных и знаний в Интернете...................................................257
- •9. Интеллектуальные Интернет-технологии..........................................................300
- •1. Введение в интеллектуальные системы
- •1.1. Краткая история искусственного интеллекта
- •1.1.1. Предыстория
- •1.1.2. Зарождение нейрокибернетики
- •1.1.3. От кибернетики «черного ящика» к ии
- •1.1.4. История искусственного интеллекта в России
- •1.2. Основные направления исследований в области искусственного интеллекта
- •1.2.1. Представление знаний и разработка систем, основанных на знаниях (knowledge-based systems)
- •1.2.2. Программное обеспечение систем ии (software engineering for Al)
- •1.2.3. Разработка естественно-языковых интерфейсов и машинный перевод (natural language processing)
- •1.2.4. Интеллектуальные роботы (robotics)
- •1.2.5. Обучение и самообучение (machine learning)
- •1.2.6. Распознавание образов (pattern recognition)
- •1.2.7. Новые архитектуры компьютеров (new hardware platforms and architectures)
- •1.2.8. Игры и машинное творчество
- •1.2.9. Другие направления
- •1.3. Представление знаний и вывод на знаниях
- •1.3.1. Данные и знания
- •1.3.2. Модели представления знаний
- •1.3.3. Вывод на знаниях
- •1.4. Нечеткие знания
- •1.4.1. Основы теории нечетких множеств
- •123456789 10 Рис. 1.7. Формирование нечетких множеств
- •1.4.2. Операции с нечеткими знаниями
- •1.5. Прикладные интеллектуальные системы
- •2. Разработка систем, основанных на знаниях
- •2.1. Введение в экспертные системы. Определение и структура
- •2.2. Классификация систем, основанных на знаниях
- •2.2.1. Классификация по решаемой задаче
- •2.2.2. Классификация по связи с реальным временем
- •2.2.3. Классификация по типу эвм
- •2.2.4. Классификация по степени интеграции с другими программами
- •2.3. Коллектив разработчиков
- •2.4. Технология проектирования и разработки
- •2.4.1. Проблемы разработки промышленных эс
- •2.4.2. Выбор подходящей проблемы
- •2.4.3. Технология быстрого прототипирования
- •2.4.4. Развитие прототипа до промышленной эс
- •2.4.5. Оценка системы
- •2.4.6. Стыковка системы
- •2.4.7. Поддержка системы
- •3. Теоретические аспекты инженерии знаний
- •3.1. Поле знаний
- •3.1.1. О языке описания поля знаний
- •3.1.2. Семиотическая модель поля знаний
- •3.1.3. «Пирамида» знаний
- •3.2. Стратегии получения знаний
- •3.3. Теоретические аспекты извлечения знаний
- •3.3.1. Психологический аспект
- •3.3.2. Лингвистический аспект
- •3.3.3. Гносеологический аспект извлечения знаний
- •3.4. Теоретические аспекты структурирования знаний
- •3.4.1. Историческая справка
- •3.4.2. Иерархический подход
- •3.4.3. Традиционные методологии структурирования
- •3.4.4. Объектно-структурный подход (осп)
- •4. Технологии инженерии знаний
- •4.1. Классификация методов практического извлечения знаний
- •4.2. Коммуникативные методы
- •4.2.1. Пассивные методы
- •4.2.2. Активные индивидуальные методы
- •4.2.3. Активные групповые методы
- •4.3. Текстологические методы
- •4.4. Простейшие методы структурирования
- •4.4.1. Алгоритм для «чайников»
- •4.4.2. Специальные методы структурирования
- •4.5. Состояние и перспективы автоматизированного приобретения знаний
- •4.5.1. Эволюция систем приобретения знаний
- •4.5.2. Современное состояние
- •4.6. Примеры методов и систем приобретения знаний
- •4.6.1. Автоматизированное структурированное интервью
- •4.6.2. Имитация консультаций
- •4.6.3. Интегрированные среды приобретения знаний
- •4.6.4. Приобретение знаний из текстов
- •5. Новые тенденции и прикладные аспекты инженерии знаний
- •5.1. Латентные структуры знаний и психосемантика
- •5.1.1. Семантические пространства
- •5.1.2. Методы многомерного шкалирования
- •5.1.3. Использование метафор для выявления «скрытых» структур знаний
- •5.2. Метод репертуарных решеток
- •5.2.1. Основные понятия
- •5.2.2. Методы выявления конструктов Метод минимального контекста
- •5.2.3. Анализ репертуарных решеток
- •5.2.4. Автоматизированные методы
- •5.3. Управление знаниями
- •5.3.1. Что такое «управление знаниями»
- •5.3.2. Управление знаниям и корпоративная память
- •5.3.3. Системы omis
- •5.3.4. Особенности разработки omis
- •5.4. Визуальное проектирование баз знаний как инструмент познания
- •5.4.1. От понятийных карт к семантическим сетям
- •5.4.2. База знаний как познавательный инструмент
- •5.5. Проектирование гипермедиа бд и адаптивных обучающих систем
- •5.5.1. Гипертекстовые системы
- •5.5.2. От мультимедиа к гипермедиа
- •5.5.3. На пути к адаптивным обучающим системам
- •6. Программный инструментарий разработки систем, основанных на знаниях
- •6.1. Технологии разработки программного обеспечения - цели, принципы, парадигмы
- •6.1.1. Основные понятия процесса разработки программного обеспечения (по)
- •6.1.2. Модели процесса разработки по
- •6.1.3. Инструментальные средства поддержки разработки систем по
- •6.2. Методологии создания и модели
- •6.3. Языки программирования для ии и языки представления знаний
- •6.4. Инструментальные пакеты для ии
- •6.5. WorkBench-системы
- •7. Пример разработки системы, основанной на знаниях
- •7.1. Продукционно-фреймовый япз pilot/2
- •7.1.1. Структура пилот-программ и управление выводом
- •7.1.2. Декларативное представление данных и знаний
- •7.1.3. Процедурные средства языка
- •7.2. Психодиагностика – пример предметной области для построения экспертных систем
- •7.2.1. Особенности предметной области
- •7.2.2. Батарея психодиагностических эс «Ориентир»
- •7.3. Разработка и реализация
- •7.3.1. Архитектура системы и ее база знаний
- •7.3.2. Общение с пользователем и опрос испытуемых
- •7.3.3. Вывод портретов и генерация их текстовых представлений
- •7.3.4. Помощь и объяснения в эс «Cattell»
- •8. Представление данных и знаний в Интернете
- •8.1. Язык html и представление знаний 8.1.1. Историческая справка
- •8.1.2. Html - язык гипертекстовой разметки Интернет-документов
- •8.1.3. Возможности представления знаний на базе языка html
- •8.2. Онтологии и онтологические системы
- •8.2.1. Основные определения
- •8.2.2. Модели онтологии и онтологической системы
- •8.2.3. Методологии создания и «жизненный цикл» онтологий
- •8.2.4. Примеры онтологий
- •8.3. Системы и средства представления онтологических знаний
- •8.3.1. Основные подходы
- •8.3.2. Инициатива (ка)2 и инструментарий Ontobroker
- •Средства спецификации онтологий в проекте Ontobroker
- •Формализм запросов
- •Формализм представления и машина вывода
- •Аннотация Web-страниц онтологической информацией
- •8.3.3. Проект shoe - спецификация онтологий и инструментарий Общая характеристика проекта
- •Спецификации онтологий и инструментарий shoe
- •Формализм представления и машина вывода
- •Аннотация Web-документов на базе онтологии
- •Формализм запросов
- •8.3.4. Другие подходы и тенденции
- •9. Интеллектуальные Интернет-технологии
- •9.1. Программные агенты и мультиагентные системы
- •9.1.1. Историческая справка
- •9.1.2. Основные понятия
- •9.2. Проектирование и реализация агентов и мультиагентных систем
- •9.2.1. Общие вопросы проектирования агентов и mac
- •9.2.2. Инструментарий AgentBuilder
- •9.2.3. Система Bee-gent
- •9.3. Информационный поиск в среде Интернет
- •9.3.1. Машины поиска
- •9.3.2. Неспециализированные и специализированные поисковые агенты
- •9.3.3. Системы интеллектуальных поисковых агентов
- •Autonomy и Web compass - системы интеллектуального поиска и обработки информации
- •Проект системы marri
- •Прототип системы OntoSeek
- •(Onto)2 - агент поиска и выбора онтологий
6.2. Методологии создания и модели
жизненного цикла интеллектуальных систем
В настоящее время в области разработки и реализации интеллектуальных систем сложилось следующее положение: с одной стороны, квалификация коллективов разработчиков здесь, как правило, достаточно высока, чтобы считать классические положения технологии разработки ПО, обсуждавшиеся выше, естественным компонентом работы. С другой стороны, жизненно важными технологические аспекты создания интеллектуальных систем становятся, лишь, когда такие системы выходят на уровень промышленных разработок. Создание и внедрение интеллектуальных систем общения с промышленными базами данных, систем машинного перевода нового поколения, интеллектуальных систем автоматического синтеза программ и особенно экспертных систем, по существу, и выдвинуло проблему технологической поддержки разработок в области ИИ на передний план [SIG-SOFT, 1986].
На фоне вышеописанной ситуации обращает на себя внимание тот факт, что имеются только единичные примеры инструментальных систем, которые бы поддерживали некоторую четко провозглашенную технологию разработки ПО и опирались бы на достаточно развитые системы представления знаний [Ramamoorthy et al., 1987]. Учитывая это, в данном параграфе рассматриваются технологические аспекты и методологии создания интеллектуальных систем в свете введенных выше понятий технологии программирования, а в следующих - инструментарий для разработки систем ИИ.
Стиль программирования систем искусственного интеллекта существенно отличается от стиля программирования с использованием обычных алгоритмических языков. При этом почти каждая подобласть области ИИ характеризуется своим собственным стилем программирования, не всегда адекватным для других приложений. В табл. 6.1 приведены некоторые характерные отличия между обычными программными системами и системами ИИ [Ramamoorthy et al., 1987].
Таблица 6.1. Отличия систем ИИ от обычных программных систем
Характеристика программирование |
Программирование в СИИ |
Традиционное |
Тип обработки |
Символьная |
Числовая |
Методы |
Эвристический поиск |
Алгоритм |
Задание шагов решения |
Неявное |
Точное |
Искомое решение |
Удовлетворительное |
Оптимальное |
Управление и данные |
Перемешаны |
Разделены |
Знания |
Неточные |
Точные |
Модификации |
Частые |
Редкие |
Но ввиду все возрастающего использования систем ИИ в конкретных приложениях, к ним начинают предъявляться практически те же требования, что и к традиционным программным комплексам и системам. В связи с этим становится весьма актуальной поддержка жизненного цикла программ в ИИ. К основным этапам в этом случае относятся инженерия требований, тестирование на прототипах и сопровождение.
Как и в случае обычных программных систем, разработка системы ИИ должна начинаться с формулирования полных, непротиворечивых и однозначных требований к ней [Basih et al., 1984]. При проектировании должны использоваться принципы технологии разработки ПО - такие, например, как сокрытие информации, локализация и модульность. Предполагается, что система должна проектироваться как композиция уровней. Любой уровень должен быть чувствителен лишь к нижележащим уровням. Такое проектирование упрощает не только реализацию, но и тестирование.
Тестирование ПО ИИ отличается от тестирования обычных систем, так как для первых характерно недетерминированное поведение вследствие использования стратегии разрешения конфликтов, зависящей от параметров периода исполнения программы. Поэтому единственным эффективным способом тестирования систем ИИ является прототипизация.
Фаза сопровождения, включающая выполнение самых различных модификаций системы, является важнейшим этапом процесса разработки любой системы, но имеет свою специфику для систем ИИ. Здесь база знаний - наиболее динамичный компонент и меняется в течение всего жизненного цикла. Поэтому сопровождение интеллектуальных систем - серьезная проблема. Но именно вопросам сопровождения уделяется мало внимания, хотя в обычном программировании имеются средства, которые могли бы быть адаптированы и для случая ПО ИИ. Это, например, системы управления версиями, системы управления конфигурацией и системы модифицирующих запросов.
Таким образом, создание ПО систем, основанных на знаниях, имеет как общие моменты с разработкой традиционных систем ПО, так и свою специфику, которая явным образом должна отражаться в соответствующих моделях жизненного цикла.
В недавнем прошлом полигоном для создания и испытания таких моделей являлись экспертные системы (ЭС).
В ходе работ по созданию ЭС практически сложилась определенная технология, включающая следующие основные этапы: идентификацию, концептуализацию, формализацию, реализацию и тестирование [Попов, 1987; Уотерман, 1989]. На этапе идентификации определяются задачи, подлежащие решению, выявляются цели разработки, ресурсы, наличие экспертов, готовых и способных передать свои знания проектируемой ЭС, категории и требования будущих пользователей. Концептуализация необходима для проведения содержательного анализа предметной области, в процессе которого выделяются используемые понятия и их взаимосвязи, определяются методы решения задач, и подробно обсуждалась в предыдущих главах.
На этапе формализации определяются способы представления всех типов знаний, специфицируются выделенные ранее понятия, фиксируются способы интерпретации знаний, моделируется работа системы, и оцениваются полученные результаты.
Этап реализации предполагает создание программной обстановки, в которой будет функционировать будущая система, и наполнение экспертом базы знаний, а на этапе тестирования эксперт и инженер по знаниям в интерактивном режиме, используя, в частности, объяснения, проверяют компетентность ЭС. В заключение на этапе тестирования проверяется пригодность ЭС для конечных пользователей.
Понятно, что процесс создания ЭС не сводится к строгой последовательности выполнения вышеперечисленных этапов. В ходе разработки происходят многочисленные возвраты к предыдущим этапам и решения, принятые там, пересматриваются. Все это существенно снижает общую эффективность разработки конкретной системы и позволяет сделать вывод о том, что модель жизненного цикла, соответствующая такой технологии, имеет мало шансов на промышленное использование.
Это, конечно, не означает, что ЭС, разработанные в рамках такой методологии, практически бесполезны или их проектирование вообще невозможно. Обычно таким образом создаются небольшие автономно функционирующие ЭС первого поколения.
Промышленная технология создания ЭС включает три фазы (или, если быть точнее, технологии): проектирование, реализацию и внедрение. Жизненный цикл разработки, охватываемый этой технологией или совокупностью технологий, состоит из 6 этапов: исследование выполнимости проекта; разработка общей концепции ЭС; разработка и тестирование серии прототипов; разработка и испытание головного образца; разработка и проверка расширенных версий системы; привязка системы к реальной рабочей среде.
На фазе проектирования проект инициализируется, формируется группа разработчиков, определяются требования к будущей ЭС, проводятся исследования выполнимости проекта и вырабатывается общая концепция будущей системы. Остальные фазы данной технологии, по мнению [Микулич, 1990], ближе к технологии Уотермана (Waterman) и направлены на реализацию разработанной концепции в виде серии прототипов, последовательно приближающихся к требуемой ЭС. Последний из прототипов и приобретает статус головного образца, который устанавливается будущим пользователем в реальную операционную среду.
Нетрудно понять, что первые два этапа промышленной технологии соответствуют этапу идентификации; следующие три - этапам концептуализации, формализации, реализации и тестирования. Новым и вместе с тем естественным для промышленной технологии является здесь этап привязки системы к реальной рабочей обстановке.
Недостатком и той и другой технологии является то, что в действительности это лишь более или менее структурированный набор методических рекомендаций, к отдельным элементам которого, в лучшем случае, привязаны те или иные инструментальные средства. И можно сказать, что сегодняшнее состояние здесь ближе к описательному, чем к естественно-научному. А это влечет за собой наличие интерпретаций методологических рекомендаций, которые могут быть настолько различными, что теряется сама идея технологии. Таким образом, самым важным на данном этапе является создание операциональных моделей технологии разработки интеллектуальных систем. И здесь, по нашему мнению, хорошим примером могут послужить модели экспертизы, уже разработанные в рамках исследований по приобретению знаний.
Приобретение знаний, как уже неоднократно отмечалось выше, является ключевой задачей во всех технологиях построения систем, основанных на знаниях (СОЗ). Существует распространенный принцип, согласно которому производительность СОЗ находится в прямой зависимости от количества знаний, содержащихся в системе [Feigenbaum, 1977]. Более 15 лет, с момента появления известной программы TIERESIAS [Davis, 1984], исследователи в области ИИ рассматривают приобретение знаний как задачу переноса знаний эксперта в БЗ системы, что чрезвычайно важно для создания действующей системы. Но в настоящее время работы в области приобретения знаний становятся важными и с точки зрения использования полученных здесь результатов для создания интеллектуальных технологий разработки самих СОЗ.
Первое поколение методик для СОЗ базировалось на подходах двух типов: поэтапном и прототипном.
Поэтапный подход связан с представлениями о жизненном цикле [Buchanan et al., 1983; Guida et al., 1989] и соответствующей поддержке его основных стадий.
В прототипном подходе первого поколения [Grover, 1983; Wielinga et al, 1988] процесс приобретения знаний может не отрабатывать все стадии, так как основным предположением здесь была возможность раскрытия структуры области экспертизы на раннем этапе проектирования на основе сравнительно небольшого анализа. Во втором поколении СОЗ-методик признана сложность процесса приобретения знаний, преодоление которой видится в моделировании экспертизы. В данной области были предложены такие методики, как онтологический анализ [Alexander et al., 1987], концептуальные графы Sowa [Clancey, 1985], подходы, основанные на обобщенных (родовых) задачах [Chandrasekaran, 1985], и концептуальное моделирование, например KADS-методология [Breuker et al., 1986]. Методики приобретения знаний обсуждаются в огромном числе работ и, в частности, в предыдущих главах настоящей книги. Не имея места для их сколько-нибудь полного анализа, сошлемся здесь лишь на обзоры [Wielinga et al., 1988; Молокова, 1992; Осипов, 1993] и перейдем к инструментальным средствам поддержки разработки интеллектуальных систем.