Основным принципом инженерии знаний является то, что возможности решателя задач интеллектуального агента в первую очередь определяются его информационной базой и лишь во вторую - используемым методом вывода. Экспертные системы должны быть сильны знаниями, даже если они слабы методами. Это важный вывод, который лишь недавно по достоинству оценили исследователи ИИ. Долгое время они занимались почти исключительно разработкой различных методов вывода. Но можно использовать
почти любой метод. Сила заключается в знаниях.
- Эдвард Фейгенбаум (Edward Feigenbaum), Стэндфордский университет
Nam et ipsa scientia potestas est (Знание - сила). - Фрэнсис Бэкон (Francis Bacon)
7.0. Введение
Продолжая изучать вопросы представления и интеллекта, рассмотрим важный компонент ИИ - сильные методы решения задач, или методы, основанные на знаниях.
Человек-эксперт способен действовать на высоком уровне, так как много знает об области своей деятельности. Это простое наблюдение является главным обоснованием для разработки сильных методов, или решателей проблем, основанных на знаниях (см. введение к части III). Экспертные системы используют знания специфичной предметной области. Обычно разработчики экспертной системы приобретают эти знания с помощью экспертов, методологию и деятельность которых затем эмулирует система. Так же, как опытные люди, экспертные системы являются "специалистами" по узкому кругу проблем. Подобно людям, они обладают как теоретическими, так и практическими знаниями: человек-эксперт, обеспечивающий систему знаниями, обычно привносит собственное теоретическое понимание предметной области, а также снабжает систему "хитростями", кратчайшими путями решения и эвристиками, полученными из опыта решения проблем.
Экспертные системы обычно предоставляют следующие возможности.
Отслеживают свои процессы рассуждения, выводя промежуточные результаты и
отвечая на вопросы о процессе решения.
Позволяют несколько модифицировать базу знаний (добавлять и удалять информацию).
Рассуждают эвристически, используя для получения полезных решений во многом
несовершенные знания.
273
Процесс рассуждения экспертной системы должен быть открыт для проверки, обеспечивая информацию о состоянии решения проблемы и объясняя выборы и решения, которые делает программа. Объяснения важны для человека-эксперта, например врача или инженера, если он должен принять рекомендацию компьютера. В самом деле, мало кто из экспертов будет принимать советы других людей, не говоря уже о том, чтобы следовать совету машины, не учитывая ее аргументацию. Как и любые программные средства, экспертные системы должны обеспечивать простоту прототипирования, тестирования и изменения. Для поддержки итеративной методологии разработки используются языки и средства программирования задач ИИ. В чисто продукционной системе, например, модификация одного правила не имеет глобальных синтаксических побочных эффектов. Правила могут добавляться или удаляться без необходимости дальнейших изменений всей программы. Разработчики экспертной системы часто объясняют, что легкость модификации базы знаний является главным фактором производства успешных программ.
Следующей особенностью экспертных систем является использование эвристических методов решения проблем. Разработчики экспертных систем установили, что неформальные "трюки" и "интуитивные правила" являются существенным дополнением к стандартной теории, предоставляемой учебниками и курсами. Иногда эти правила усиливают теоретические знания с учетом здравого смысла, а зачастую они просто дают кратчайший путь к решению.
Экспертные системы строятся для решения широкого круга проблем в таких областях, как медицина, математика, машиностроение, химия, геология, вычислительная техника, бизнес, законодательство, оборона и образование. Эти программы решают разнообразные проблемы. Следующий список из работы [Waterman, 1986] является полезным конспектом общих задач экспертных систем.
Интерпретация - формирование высокоуровневых выводов из наборов строк
данных.
Прогнозирование - проектирование возможных последствий данной ситуации.
Диагностика - определение причин неисправностей в сложных ситуациях на основе наблюдаемых симптомов.
Проектирование- нахождение конфигурации компонентов системы, которая
удовлетворяет целевым условиям и множеству проектных ограничений.
Планирование- разработка последовательности действий для достижения множества целей при данных начальных условиях и временных ограничениях.
Мониторинг - сравнение наблюдаемого поведения системы с ее ожидаемым поведением.
Инструктирование - помощь в образовательном процессе по изучению технической области.
Управление - управление поведением сложной среды.
В этой главе мы сначала рассмотрим технологию, которая дает возможность решать проблемы на основе знаний. Успешная инженерия знаний должна обеспечивать решение широкого круга проблем: от выбора соответствующей прикладной области до извлечения и формализации знаний по решению задач. В разделе 7.2 будут рассмотрены системы, основанные на правилах. При этом продукционная система будет представлена как программная архитектура для реализации процессов решения и анализа. В разделе 7.3 рассматриваются приемы
274
рассуждений на основе моделей и опыта. Раздел 7.4 посвящен планированию - процессу организации частей знаний в непротиворечивую последовательность действий по достижению цели. Приемы рассуждения в неопределенных ситуациях, описанные в главе 8, также важны для разработки решателей задач на основе сильных методов.
7.1. Обзор технологии экспертных систем
7.1.1. Разработка экспертных систем, основанных на правилах
На рис. 7.1 показаны модули, которые составляют типичную экспертную систему. Пользователь взаимодействует с системой через пользовательский интерфейс, который скрывает многие сложности, в том числе внутреннюю структуру базы правил. При разработке интерфейса экспертной системы используют разнообразие стилей, включая "вопрос-ответ", меню управления или графический интерфейс. Тип интерфейса определяется потребностями пользователя и требованиями базы знаний и системы вывода. Ядром экспертной системы является база знаний, которая содержит знание из частной прикладной области. В экспертной системе, основанной на правилах, это знание представляется в форме правил если..., то..., как в примерах из раздела 7.2. База знаний содержит как общие знания, так и информацию о частных случаях.
Механизм вывода применяет знания при решении реальных задач. По существу, он является интерпретатором базы знаний. В продукционной системе механизм вывода совершает цикл распознавание-действие. Процедуры, которые выполняют этот управляющий цикл, отделены от самих продукционных правил. Такое разделение механизма вывода и базы знаний важно поддерживать по нескольким причинам.
Оно дает возможность представить знания более естественным образом. Напри
мер, правила если..., то... точнее описывают навыки человека по решению задач,
чем компьютерный код более низкого уровня.
В связи с тем, что база знаний отделяется от программных управляющих структур
более низкого уровня, разработчики экспертной системы могут сосредоточиться на
накоплении и организации знаний, а не на деталях их компьютерной реализации.
В идеале разделение знаний и управления позволяет вносить изменения в одну
часть базы знаний без создания побочных эффектов в других.
Разделение знаний и управляющих элементов программы позволяет использовать
в различных системах одни и те же модули управления и интерфейса пользователя.
Оболочка экспертной системы включает все компоненты, показанные на рис. 7.1,
а база знаний и данные о частных случаях могут пополняться для новых приложе
ний. Штриховые линии на рис. 7.1 ограничивают модули оболочки.
Экспертная система должна сохранять информацию о частных случаях, в том числе факты и выводы. Сюда включаются данные, полученные в отдельном случае решения задачи, частные заключения, степени доверия к заключениям и тупики в процессе поиска. Эта информация отделяется от общей базы знаний.
Подсистема объяснений позволяет программе пояснить свое рассуждение пользователю. Она обеспечивает обоснования заключений системы в ответ на вопросы "как?" (раздел 7.2), объяснение необходимости конкретных данных, а также ответы на вопросы "почему?" (раздел 7.2).
Глава 7. Сильные методы решения задач 275
Многие системы включают также редактор базы знаний. Редакторы баз знаний помогают программистам локализовать и откорректировать сбои в действиях программы, используя информацию, обеспечиваемую подсистемой объяснений. Кроме того, они могут помочь в пополнении новых знаний, поддержке корректности синтаксиса правил и в проверке на непротиворечивость при изменениях в базе знаний.
Важной причиной сокращения времени разработки и настройки современных экспертных систем является наличие оболочек. В Internet можно найти оболочки CLIPS, JASS, а в части VI предлагаются оболочки для LISP и PROLOG. К сожалению, программные оболочки не решают всех проблем, возникающих при разработке экспертных систем. Хотя разделение знаний и уровня управления, модульность архитектуры продукционной системы и использование соответствующего языка представления знаний помогают при построении экспертной системы, извлечение и формализация знаний для конкретной области остаются пока очень трудными задачами.
7.1.2. Выбор задачи и процесс инженерии знаний
Экспертные системы привлекают значительные денежные инвестиции и человеческие усилия. Попытки решить слишком сложную, малопонятную или, другими словами, не соответствующую имеющейся технологии проблему могут привести к дорогостоящим и постыдным неудачам. Поэтому были выработаны критерии оправданности решения данной задачи с помощью экспертной системы.
Необходимость решения оправдывает стоимость и усилия по разработке экспертной системы. Многие экспертные системы были построены в таких областях,
как разведка минералов, бизнес, оборона и медицина, где существует большой потенциал для экономии денег, времени и защиты человеческой жизни.
Отсутствие человеческого опыта в ситуациях, где он необходим. В геологии,
например, существует необходимость удаленной экспертизы минирования и бурения. Геологи и инженеры часто сами проходят большие расстояния, что связано с
большими затратами и потерями времени. При использовании экспертной системы
многие проблемы удаленных районов могут быть решены без их посещения.
Проблема может быть решена с использованием символьных рассуждений. Решение проблемы не требует физической ловкости или конкретных
276
навыков. Современным роботам и системам зрения не хватает ума и гибкости, присущих человеку.
Проблемная область является хорошо структурированной и не требует рас
суждений на основе здравого смысла. Высокотехнологичные области очень
удобны для изучения и формализации: для них четко определена терминология и
построены ясные и конкретные концептуальные модели. Рассуждения на основе
здравого смысла трудно автоматизировать.
Проблема не может быть решена традиционными вычислительными методами. Технология экспертных систем не должна использоваться там, где это не является необходимостью. Если проблема может быть удовлетворительно решена более традиционными методами, она не должна рассматриваться как кандидат для решения экспертными системами.
Известны эксперты, способные взаимодействовать между собой и четко выражать свои мысли. Знания, используемые экспертными системами, формируются из опыта и суждений людей, работающих в данной области. Важно, чтобы эти эксперты не только хотели, но и были способны поделиться знаниями.
Проблема имеет приемлемые размеры и границы. Например, программа, пытающаяся воплотить весь опыт врача, нереальна. Программа, подсказывающая медицинские решения по использованию конкретного медицинского оборудования или конкретного множества диагнозов, более практична.
К разработке экспертной системы необходимо привлекать инженеров по знаниям, экспертов в данной предметной области и конечных пользователей. Инженер по знаниям является экспертом по языку ИИ и представлению. Его главная задача - выбрать программный и аппаратный инструментарий для проекта, помочь эксперту в данной области членораздельно сформулировать необходимую информацию, а также реализовать ее в корректной и эффективной базе знаний. Часто инженер по знаниям изначально не знаком с прикладной областью.
Знания о предметной области обеспечивает эксперт. Экспертом предметной области обычно является тот человек, который работал в этой области и понимает принципы решения ее задач, знает приемы решения, может обеспечить управление неточными данными, оценку частичных решений и имеет другие навыки, делающие его экспертом. Эксперт в предметной области отвечает за передачу этих навыков инженеру по знаниям.
В большинстве приложений основные проектные ограничения определяет конечный пользователь. Обычно разработка продолжается до тех пор, пока пользователь не будет удовлетворен. Навыки и потребности пользователя учитываются в течение всего цикла разработки. Постоянно отслеживаются следующие вопросы. Делает ли программа работу пользователя более легкой, быстрой, удобной? Какой уровень объяснения необходим пользователю? Может ли пользователь предоставить системе корректную информацию? Является ли адекватным интерфейс? Соответствует ли рабочая среда пользователя ограничениям на использование программ? Например, интерфейс, требующий ввода данных с клавиатуры, не подходит для использования в кабине истребителя.
Так же, как и большинство разработок ИИ, экспертные системы требуют нетрадиционного жизненного цикла разработки, основанного на раннем прототипировании и постепенной модификации кода. Обычно работа с системой начинается с попытки инженера по знаниям описать процессы, происходящие в данной предметной области. Этому
277
помогает взаимодействие с экспертом в данной области. Адекватность описания достигается с помощью предварительных интервью с экспертами и наблюдения за ними в процессе работы. Далее инженер по знаниям и эксперт начинают процесс извлечения знаний по решению проблем. Для этого эксперту задается ряд простых задач, которые он пытается решить, объясняя используемые при этом приемы. Зачастую этот процесс записывают на видео- и аудиокассеты.
Иногда полезно, чтобы инженер по знаниям был новичком в предметной области. Общеизвестно, что человек-эксперт не всегда может точно объяснить ход решения сложной проблемы. Часто он забывает упомянуть шаги, которые за годы работы в этой области стали для него вполне очевидными или даже автоматическими. В силу своего относительно слабого знакомства с предметной областью инженеры по знаниям могут заметить эти концептуальные разрывы и попросить о помощи. Когда инженер по знаниям получит общее представление о предметной области и проведет несколько сеансов решения задач с экспертом, он сможет приступить к разработке системы: выбрать способ представления знаний (например, правила или фреймы), определить стратегию поиска (прямой, обратный, в глубину, в ширину и т.п.), разработать пользовательский интерфейс. После выполнения этих обязательных этапов инженер по знаниям строит прототип.
Этот прототип должен быть способен решить проблемы из данной предметной области и обеспечить испытательный стенд для проверки предварительных проектных решений. Когда прототип готов, инженер по знаниям и эксперт в предметной области испытывают и уточняют знания путем решения конкретных задач и устранения дефектов. Если предположения, сделанные при проектировании прототипа, оказываются корректными, прототип можно поступательно расширять до тех пор, пока он не превратится в окончательную систему.
Экспертные системы строятся методом последовательных приближений. Выявляемые ошибки приводят к коррекции и наращиванию базы знаний. В этом смысле база знаний скорее "растет", чем конструируется. На рис. 7.2 представлена блок-схема, описывающая исследовательский цикл разработки программы. Этот подход к программированию был изучен Сеймуром Папертом (Seymour Papert) с помощью его языка LOGO [Papert, 1980], а также Аланом Кэем (Alan Key). Согласно философии LOGO отслеживание откликов компьютера на некорректное представление идей в программном коде приводит к коррекции кода (отладке) и преобразованию в более точный код. Этот процесс проб и корректировки проектов-кандидатов является общепринятым в разработке экспертных систем и кардинально отличается от таких проработанных иерархических процессов, как проектирование сверху вниз.
Если прототип стал слишком громоздким, или проектировщики решили изменить подход к проблеме, прототип можно просто выбросить. Прототип позволяет разработчикам исследовать проблему и ее важные взаимосвязи посредством реального конструирования программы для ее решения. После завершения постепенной модификации зачастую создается более прозрачная версия, обычно с меньшим количеством правил.
Другой важной особенностью экспертных систем является то, что программа никогда не должна рассматриваться как законченная. Эвристическая база знаний всегда будет иметь ограниченные возможности. Модульность модели продукционной системы позволяет естественным образом добавить новые правила или в любое время подкорректировать существующую базу правил.
278 Часть III. Представление и разум в ракурсе искусственного интеллекта
7.1.3. Концептуальные модели и их роль в приобретении знаний
На рис. 7.3 представлена упрощенная модель процесса извлечения знаний, которая могла бы служить первой аппроксимацией для понимания задач приобретения и формализации человеческого опыта. Человек-эксперт, работая в прикладной области, оперирует знанием, мастерством и практическими навыками. Это знание часто является неопределенным и неточным. Инженер по знаниям должен транслировать этот неформальный опыт в формальный язык вычислительной системы. В процессе формализации практической деятельности человека возникает ряд важных вопросов.
1. Человеческое мастерство часто недоступно для осознания разумом. Как отмечает Аристотель в своей "Этике": "Все, чему мы должны научиться, мы изучаем на собственном опыте". Навыки врача формируются за годы обучения в интернатуре и в процессе работы с пациентами. После многолетней работы эти навыки становятся интегрированными и существуют в основном на уровне подсознания. Эксперты могут затрудняться точно описать то, что они делают при решении проблем.
Глава 7. Сильные методы решения задач 279
Человеческий опыт часто принимает форму знания о том, как справиться с ситуацией, а не о том, каковы рациональные характеристики этой ситуации. Мы вырабатываем сложные механизмы действия, а не формируем фундаментальное понимание этих механизмов. Наглядным примером этого является уникальная последовательность действий при верховой езде: опытный наездник для поддержания равновесия не решает в реальном времени многочисленные системы дифференциальных уравнений, а использует интуитивное ощущение гравитации, момента и инерции для формирования адекватной управляющей процедуры.
Приобретение знаний часто рассматривается как получение фактических знаний об объективной реальности так называемого "реального мира". Как показано в теории и на практике, человеческий опыт представляет модели мира, формируемые отдельным человеком или группой людей. Такие модели создаются под воздействием социальных процессов, скрытых закономерностей и эмпирических методологий.
Опыт накапливается. Люди не только получают новые знания, но и перерабатывают существующие, что сопровождается продолжительными дебатами в науке.
Следовательно, инженерия знаний является сложной задачей, связанной с жизненным циклом любой экспертной системы. Чтобы упростить эту задачу, полезно создать концептуальную модель - прослойку между человеческим опытом и реализованной программой (рис. 7.4). Под концептуальной моделью понимается концепция знаний о данной области, построенная инженером по знаниям. Несомненно, отличаясь от модели эксперта в данной области, концептуальная модель действительно определяет структуру формальной базы знаний.
Из-за сложности большинства интересных областей этот промежуточный результат нельзя рассматривать как окончательный. Инженеры по знаниям должны задокументировать и передать свое представление о предметной области с помощью общих методов проектирования программ. При разработке экспертной системы необходимо описать требования к системе. Однако из-за специфики жизненного цикла разработки требования к экспертной системе должны развиваться вместе с прототипом. Словари терминов, графические представления пространства состояний и комментарии в коде сами являются частью этой модели. Публикуя эти проектные решения, мы уменьшаем количество ошибок как при реализации, так и при сопровождении программы.
280 Часть III. Представление и разум в ракурсе искусственного интеллекта
Инженеры по знаниям должны сохранять записи своих интервью с экспертами по предметной области. Часто по мере улучшения понимания проблемной области инженеры по знаниям формируют новые интерпретации или открывают новую информацию. Записи наряду с документированием данных и интерпретаций играют важную роль при рассмотрении проектных решений и тестировании прототипов. Наконец, эта модель играет промежуточную роль при формализации знаний. Выбор языка представления оказывает значительное влияние на модель предметной области, создаваемую инженером по знаниям.
Концептуальная модель не является формальной или исполняемой на компьютере. Это промежуточное проектное решение, шаблон для начала процесса кодирования человеческого опыта. Если инженер по знаниям использует модель исчисления предикатов, она может быть представлена в виде набора простых сетей, определяющих состояния рассуждений посредством типичных способов решения проблем. Лишь после дальнейших уточнений эта сеть превратится в набор правил "если..., то...".
При создании концептуальной модели рассматриваются следующие вопросы. Является ли решение проблемы детерминированным или оно основано на поиске? Как выполняется рассуждение: на основе данных (возможно, с генерацией и тестированием) или на основе цели (с учетом некоторого множества вероятных гипотез)? Существуют ли стадии рассуждения? Хорошо ли изучена область и может ли она обеспечить глубокие прогнозирующие модели, или все знание существенно эвристично? Можно ли для решения новых проблем использовать примеры прежних задач и их решений, или сначала необходимо преобразовать эти примеры в общее правило? Является ли знание точным, или оно "размытое" и приближенное, и для него используются численные оценки определенности (глава 8)? Позволяют стратегии рассуждений делать стабильные выводы или внутренняя неопределенность системы требует немонотонного рассуждения, возможности формулировать утверждения, которые впоследствии могут модифицироваться или отменяться (раздел 8.1)? И, наконец, требует ли структура знаний о данной области отказаться от вывода на основе