Загадка искусственного интеллекта
Тема искусственного интеллекта всегда была в информатике "страной плохишей", населенной массой "неправильных" проблем, не поддающихся решению традиционными способами. Эта область привлекла внимание прежде всего разносторонних специалистов, которых не испугало ее открытое, лишенное всякой организации пространство, — людей, которых влечет задача узнать, как мы мыслим. Такие исследователи, как Марвин Минский (Marvin Minsky), Джон Мак-Карти (John McCarthy), Герберт Саймон (Herbert Simon), Пат Хейес (Pat Hayes), Дональд Мичи (Donald Michie) и Бернард Мельтцер (Bernard Meltzer), стали первопроходцами для тех, кто следовал за ними по пути, пролегающем через информатику, психологию и математическую логику.
Я предлагаю вам задуматься над вопоосами: "Зачем при построении экспертных систем нам вообще нужны технологии, используемые в задачах искусственного интеллекта? Почему нас не устраивают традиционные информационные технологии, такие как матемагическое моделирование? Или, другими словами, тот факт, что экспертные системы начали развиваться в русле задач искусственного интеллекта, является случайностью либо в этом была своя логика?"
Не вдаваясь в длительные рассуждения, можно ответить, что нет ничего плохого в использовании для построения экспертных систем подходящих традиционных технологий, если это приводит к желаемому результату. Например, генерация гипотез в системе DENDRAL (см. главу 20) основана на алгоритме перечисления вершин плоского графа, а в системе MYCIN (см. главу 3) использован статистический подход для выбора способа лечения на основе анализа чувствительности организма к тем или иным лекарственным препаратам. Использование методов поиска или языков программирования, характерных для систем искусственного интеллекта, не запрещает инженерам по знаниям применять методики, заимствованные из прикладной математики, исследования операций или других подходящих дисциплин. Для некоторой части рассматриваемой проблемы решение может быть получено чисто алгоритмически или математически, и было бы непозволительной роскошью отказываться от таких методов, если они способствуют достижению нужного результата.
Более пространный ответ (который я также постараюсь изложить покороче) состоит в том, что экспертные системы не смогли бы получить столь широкого распространения в настоящее время, если бы в свое время в их развитие не внесли существенный вклад идеи искусственного интеллекта. То, что предлагает искусственный интеллект, — это множество концепций, технологий и архитектур, пригодных для решения комплексных проблем в тех случаях, когда чисто арифметические или математические решения либо неизвестны, либо малоэффективны. За последние 30 лет появился ряд работ, в которых предпринималась попытка приспособить к проблематике экспертных систем теоретические и практические результаты, полученные в соответствующих областях математики, информатики или общественных наук. Однако, как правило, оказывалось, что перенос результатов из других дисциплин сопряжен с появлением новых нетривиальных проблем представления информации и управления процессом.
В предыдущих главах мы акцентировали
ваше внимание на тех концепциях искусственного интеллекта, которые положены
в основание технологии проектирования экспертных систем. Ниже мы кратко перечислим
их.
Если мы имеем дело с проблемами, изоморфными абстрактным проблемами (такими, как поиск в лабиринте, оптимизация маршрута и т.п.), о которых известно, что они требуют экспоненциально возрастающих ресурсов, то такой поиск может эффективно выполняться на основе знаний в том смысле, что он направляется знаниями о предметной области.
Представление знаний является не менее важным фактором конструкции экспертной систем, чем механизм логического вывода, поскольку именно представление знаний определяет характеристики пространства поиска, на котором работает механизм вывода.
В ряде глав данной книги мы рассмотрели и технологии искусственного интеллекта, используемые в практике построения экспертных систем. Перечислим их.
Широкий набор языков программирования высокого уровня, которые применяются для представления знаний разного рода, таких как эмпирические ассоциации и иерархии концептов.
Интерактивные стратегии извлечения знаний, их преобразования и представления, управление применением знаний в процессе решения проблем.
Методологии проектирования, обеспечивающие создание таких экспертных систем, которые "прозрачны" как для пользователя, так и для инженеров по знаниям, сопровождающих систему в процессе эксплуатации.
Эти технологии оформлены в виде блоков-компонентов, из которых формируется архитектура экспертной системы. В настоящей книге вы познакомились со следующими методами.
Методы комбинирования различных парадигм представления знаний, которые позволяют выявить сильные стороны компонентов и компенсировать слабые.
Методы послойной организации вычислительной структуры, позволяющие структурно разделить знания о предметной области и методике решения в рамках единой интегрированной системы.
Инструментальные средства расширения функциональных возможностей решателя задач, позволяющие подключить к нему программы обучения и трассировки процесса.
Мы еще вернемся в данном обзоре к этим структурным компонентам экспертных систем. Но нужно подчеркнуть, что извлечь реальную пользу из перечисленных компонентов можно только на основе изложенных ранее базовых концепций. Даже такие ранние системы, как MYCIN и DENDRAL, успех которых удивил всех в свое время, появились не сами по себе, а явились закономерным результатом исследований в области искусственного интеллекта.
Хотя в этот успех внесли свой вклад и традиционные дисциплины (например, исследование операций и стратегий поиска), решающим фактором все-таки оказались идеи искусственного интеллекта. В настоящее время уже общим местом стало утверждение, что по определению предметом интереса области искусственного интеллекта являются те информационные проблемы, которые не могут быть решены с помощью традиционных технологий. Я думаю, что так оно останется и в обозримом будущем.
Представление знаний
В определенном смысле любая компьютерная программа содержит знания. Программа сортировки по методу "пузырька", написанная на языке BASIC, содержит знания программиста о том, как упорядочить элементы списка. Так чем же все-таки представление знаний отличается от обычного программирования?
Разобраться в сути компьютерной программы, решающей задачу сортировки списков, совсем непросто. Она, конечно же, содержит знания программиста о методе решения задачи, но, помимо этих знаний, в ней содержатся и другие:
как манипулировать языковыми конструкциями используемого языка программирования;
как добиться высокой производительности программы;
как выбрать подходящие методы решения частных проблем обработки данных, играющих, тем не менее, важную роль в достижении конечного результата, и как организовать управление процессом.
Языки представления знания являются языками высокого уровня, специально предназначенными для кодирования в явном виде фрагментов знаний человека, таких как правила влияния и набор свойств типовых объектов, причем высокий уровень языка проявляется в том, что от пользователя скрываются, насколько это возможно, технические подробности механизма представления знаний. Конечно, пользователь при желании может познакомиться со всеми деталями, но идея состоит в том, что это совсем не обязательно делать в процессе разработки программы. В отличие от более привычных языков профаммирования, языки представления знаний исключительно экономичны в смысле объема программного кода. В значительной мере это объясняется тем, что заботу о множестве мелочей берет на себя интерпретатор языка. Можно показать, что большинство из них обладает всеми признаками машины Тьюринга, другими словами, такие интерпретаторы теоретически способны выполнять любые вычисления, которые под силу машине, реализующей программу, написанную на любом из "обычных" языков программирования.
Несмотря на отмеченные достоинства таких языков, нельзя забывать и о существовании определенных проблем при их применении.
Переход от описания знаний о предметной области на всем понятном "человеческом" языке к их представлению в виде какого-либо формализма, воспринимаемого компьютером, требует определенного искусства, поскольку невозможно (по крайней мере, на сегодняшний день) описать, как механически выполнить такое преобразование. Так как возможности логического вывода, которые может реализовать программа, напрямую связаны с выбором способа представления знаний, то, по моему мнению, именно представление знаний, а не их извлечение является самым узким местом в практике проектирования экспертных систем.
Существует определенный баланс противоречий между выразительностью языка представления знаний и простотой трактовки представленных в нем процедур определения логического влияния. Другими словами, чем более концентрировано будут представлены знания в языковой форме, тем сложнее, а значит, и дольше будет процесс их осознания.
В большинстве случаев представление знаний осложняется неуверенностью в них или неопределенностью высказываемых суждений. Наши знания по самой своей природе часто являются неполными и содержат множество догадок и предположений.
Вызов со стороны проблемы представления знаний состоит в том, что мы не можем себе позволить опустить руки перед сложностями, связанными с передачей знаний от человека программе, возможностью их адекватной трактовки и неопределенностью знаний.
Мы вынужденно согласились на довольно эмпирический подход к переводу знаний на язык формальных правил или описаний объектов. Это действительно больше искусство, чем наука, и чем больше вы создадите правил и объектов в процессе своей деятельности, тем более высокого уровня совершенства добьетесь в этом деле. Вопреки распространенному мнению, эта работа далеко не каждому по плечу.
Желая добиться логической полноты, мы часто сталкиваемся с проблемой необозримости. Но чаще всего нам совсем нет нужды получать все логически возможные решения проблемы — можно отыскать только оптимальное или любое, удовлетворяющее заданным ограничениям.
При работе с неопределенностями мы согласны закрыть глаза на некоторую математическую некорректность. Хотя многие используемые на практике варианты схем влияния и не вполне согласуются с аксиомами теории вероятностей, мы идем на определенные упрощения ради практической выгоды.
Сказанное выше нужно расценивать как констатацию реально существующей ситуации. Я не сомневаюсь, что дальнейшие исследования методов представления знаний позволят нам лучше понять смысл этих компромиссов, но в настоящее время мы располагаем методами, которые вполне устраивают нас на практике.
Отошли в прошлое оживленные дискуссии на отвлеченные темы вроде "Может ли машина мыслить?" или "Как действительно представляются знания в мозге человека?" Сейчас чаще всего задаются вопросом: "Что позволяет сделать данная технология?", а ответ на него может быть получен только программой, в которой сконцентрированы результаты теоретической и практической работы, а не метафизические спекуляции.
Языки программирования систем искусственного интеллекта
Правила логического вывода, теория ориентированных графов и математическая логика были изобретены задолго до появления такой области исследований, как искусственный интеллект. Но именно исследования в этой области позволили адаптировать формальный аппарат этих теорий к задачам представления знаний и отыскать высокоэффективные средства их реализации. Развитие современных продукционных, объектно-ориентированных систем и систем процедурной дедукции в значительной мере определяется такими приложениями искусственного интеллекта, как проблемы классификации и конструирования, описанные в ряде глав данной книги.
Хотя в ходе исследований искусственного интеллекта появилось множество самых различных языков представления, все они обладают рядом сходных свойств.
Во-первых, все такие языки являются декларативными в том смысле, что позволяют описывать знания, имеющие отношение к решению конкретной задачи, а не способ ее решения. В большинстве экспертных систем используется архитектура, в которой знания отделены от машины логического вывода. Это позволяет проводить эксперименты с использованием одних и тех же знаний в разных режимах обработки. Некоторые новые архитектурные решения, например использующие доску объявлений, позволяют представлять управляющие знания декларативно и обрабатывать их так же, как и другие виды знаний.
Во-вторых, все такие языки организованы по модульному принципу. Подобно тому, как сам язык скрывает от пользователя детали механизма реализации, отдельные модули знаний скрывают детали своей реализации друг от друга, общаясь через глобальную структуру данных (в продукционных системах и системах на основе доски объявлений) или посредством определенных протоколов (в объектно-ориентированных системах). Это позволяет наращивать объем базы знаний и использовать методику отработки проектируемой системы на прототипах.
В-третьих, механизм вызова процедур в таких языках основан на сопоставлении образцов в той или иной форме. Активизация правил в продукционных системах, включение источников знаний в системах с доской объявлений и резолюция фраз в дедуктивных системах в той или иной форме используют такое сопоставление. Это очень мощный и достаточно общий механизм, который способствует модульной организации компонентов системы, хотя и требует определенных вычислительных ресурсов.
Языки представления знаний обычно реализуются в виде системы логического вывода, управляемой сопоставлением образцов. Программа на любом из языков такого рода состоит из множества относительно независимых модулей (правил, структур или фраз), которые сопоставляются со входными данными и манипулируют имеющимися в памяти данными. В любой такой системе имеются три существенных компонента.
Набор модулей, каждый из которых может быть активизирован данными, поступающими на вход системы, если эти данные соответствуют образцу, определенному для этого модуля.
Одна или несколько динамических структур данных, которые могут анализироваться и модифицироваться активизированным модулем.
Интерпретатор, который циклически управляет выбором и активизацией модулей.
Исследования в этой области в последние годы концентрируются вокруг следующих задач:
поиск эффективных методов реализации интерпретаторов;
создание на основе "чистых формализмов" программных средств, пригодных для практического применения;
проведение экспериментов со "смешанными" формализмами, объединяющими разные парадигмы.
На сегодняшний день такие языки, как CLIPS, предоставляют в распоряжение пользователя множество разнообразных средств представления знаний и манипулирования ими, которые в руках специалистов позволяют создавать программы для решения широкого круга практических проблем.
Решение практических проблем
В главах с 10 по 15 мы познакомили вас с идеей, которая состоит в том, что существует несколько обобщенных задач, которые в том или ином виде решаются в большинстве экспертных систем. В частности, мы показали, чем отличаются задачи классификации от задач конструирования, и что для своего решения эти задачи требуют применения совершенно разных стратегий поиска.
При решении задач классификации основной акцент делается на отыскании приемлемого, но, возможно, приближенного соответствия между данными и решениями на некотором уровне абстракции. Нужно учесть все имеющиеся свидетельства, объединить их каким-то образом, а затем уточнить и ранжировать решения-кандидаты. В таких задачах пространство решений, как правило, известно заранее, и представленные в нем категории могут быть перенумерованы. Для работы с таким пространством вполне подходят методы исчерпывающего поиска, которые используют наличие определенности для упорядочения и отсечения путей поиска. Для работы с пространствами поиска большого объема, которые не удается разбить на несколько относительно независимых подпространств, приходится использовать более сложные методы, настроенные на определенную форму организации пространства гипотез (например, иерархическую и причинную).
Суть задачи конструирования состоит в построении некоторого сложного объекта, который должен удовлетворять заданным ограничениям. Естественно, что при этом пространство решений оказывается очень большим. Обычно не удается проследить все возможные пути на пространстве решений в поиске оптимального, чаще всего отыскивается одно из приемлемых решений, удовлетворяющих ограничениям. Ограничения могут влиять друг на друга, и в такой ситуации для разрешения конфликтов нужно использовать знания о предметной области. Наиболее общей для решения задач конструирования оказалась стратегия предложение и пересмотр. Суть ее состоит в том, что частичные решения расширяются до тех пор, пока не будут нарушены заданные ограничения, а затем такое нарушение устраняется с помощью эвристик.
Несмотря на то, что в большинстве случаев можно считать, что типичной задачей классификации является диагностирование, а задачей конструирования — планирование, соответствие между реальными приложениями и обобщенными задачами носит более сложный характер.
Вы имели возможность убедиться, что такие программы диагностирования, как INTERNIST, фактически используют методику решения задачи конструирования. Элементами решения являются отказы, которые объединяются в составную гипотезу. Таким образом, оказывается, что нет никакого смысла заранее нумеровать узлы пространства решений, поскольку пациент может страдать десятью и более заболеваниями. Более того, в общем виде проблема отыскания "наилучшего" объяснения имеющемуся набору симптомов относится к классу необозримых. Без использования мощного механизма концентрации внимания программы на определенном участке пространства не удается отыскать даже приблизительное решение проблемы. Поэтому для решения подобных задач дифференциального диагностирования используются средства, типичные для задач конструирования.
Ряд программ, например R1/XCON, обладает знаниями, достаточными для того, чтобы решить задачу конструирования без использования рекурсии предположений и возврата назад. В рамках стратегии нисходящего уточнения, которая предполагает разбиение задачи построения конфигурации вычислительной системы на ряд практически независимых подзадач, система R1 иногда переключается на восходящую методику логического вывода. На примере системы планирования ONCOCIN мы показали, что для решения проблемы планирования могут иногда использоваться стратегии, характерные для задач эвристической классификации. Благодаря тому, что в этой системе применяется довольно жестко формализованное представление протоколов лечения онкозаболеваний, появилась возможность выбирать подходящую заготовку плана лечения из библиотеки, а затем адаптировать ее к конкретному случаю.
Но как бы там ни было, разграничение задач классификации и конструирования оказалось исключительно полезным, поскольку помогло автоматизировать процесс приобретения знаний. Было также показано, что функциональные возможности программных средств извлечения знаний могут быть существенно расширены, если такие средства будут включать в свой состав декларативную модель предметной области и некоторые знания, касающиеся решаемой задачи, в частности — как будут использованы в приложении получаемые знания. Хотя разработка систем извлечения знаний с ограничением ролей, таких как MORE и RIME, еще не вышла из стадии лабораторных экспериментов, они ознаменовали собой появление новой мощной методологии построения баз знаний. В ее основу положена концепция "извлечение знаний также должно базироваться на знаниях". Первые полученные результаты дают основание надеяться, что на основе этой методологии будут созданы эффективные средства, которые позволят устранить одно из основных "узких" мест в практике проектирования экспертных систем. Автоматический анализ целостности базы знаний и компиляция их в форму выполняемых модулей также в значительной мере упрощается при использовании модели предметной области и информации о принципах решения проблем, используемых в проектируемом приложении.
Архитектура экспертных систем
В данной книге мы представили классификацию инструментальных средств для проектирования экспертных систем, которая учитывает разнообразные подходы к представлению знаний и управлению процессом принятия решений. В частности, были выделены следующие категории систем.
Оболочки экспертных систем, которые поддерживают какой-либо язык представления знаний и комбинацию режимов управления. Такие оболочки хорошо зарекомендовали себя в ряде приложений, разработанных во времена становления экспертных систем.
Языки программирования высокого уровня, такие как интерпретаторы порождающих правил и объектно-ориентированные системы, которые образуют основные компоненты для представления знаний и управления ходом логического вывода.
Программные среды, использующие смешанные парадигмы, которые обеспечивают пользователя широким спектром средств представления и множеством механизмов управления.
Архитектуры решения проблем, такие как системы с доской объявлений, представляют собой объектно-ориентированные оболочки, на основе которых можно создавать конкретные приложения.
Полезные программные пакеты, которые можно использовать для решения определенных подзадач, например моделирования или анализа правдоподобия. Такие пакеты могут работать в тесном взаимодействии с основной программой решения проблемы.
Было показано, что программы построения экспертных систем первого поколения представляли собой, по существу, адаптацию экспертных систем, хорошо зарекомендовавших себя на практике. Многие из них показали затем свою жизнеспособность и эффективность. Например, система EMYCIN была использована для построения множества прикладных экспертных систем для областей, весьма далеких от медицины, включая структурный анализ и поиск неисправностей в электронных схемах. К этому же периоду относится и появление специализированных языков программирования, таких как OPS5 и FLAVORS.
Для систем второго поколения характерно использование смешанной архитектуры, объединяющей различные парадигмы. Использование соответствующих инструментальных средств продемонстрировало, что с их помощью можно создавать системы с самой разнообразной архитектурой, поддерживающей разные способы представления знаний и механизмы управления процессом.
В прошлом часто высказывалось предположение, что использование в процессе разработки более мощных инструментальных средств будет способствовать упрощению программирования экспертных систем. Существует, однако, некоторый баланс между "мощностью" инструмента, принимающего решение за разработчика, и гибкостью, допускающей возможность выбрать решение, наиболее подходящее для конкретной системы. Чрезмерное упрощение оболочек зачастую оборачивалось слишком большими ограничениями для разработчиков прикладных систем, в то время как смешивание разных парадигм программирования предоставляло такую свободу, с которой не всякий программист мог разумно управиться. Как показала практика, наиболее эффективным путем оказалось предоставление разработчику тщательно продуманных готовых модулей, таких как системы анализа правдоподобия, которые способны эффективно решать отдельные важные нетривиальные задачи. Применение таких модулей существенно сокращает сроки разработки прикладных экспертных систем.
Рекомендуемая литература
Для рядового читателя лучшим источником сведений о последних событиях в мире искусственного интеллекта является журнал Al Magazine. Множество интересных обзоров можно найти и на страницах Knowledge Engineering Review, который будет весьма полезен студентам и инженерам.
Тем, кого интересуют определенные темы исследований, я рекомендую регулярно просматривать материалы конференций
IJCAI (International Joint Conference on Artificial Intelligence),
AAAI (The National Conference on Artificial Intelligence). Эта конференция проводится при поддержке Американской ассоциации искусственного интеллекта (American Association for Artificial Intelligence);
ECAI (European Conference on Artificial Intelligence).
О новых областях применения методов искусственного интеллекта можно узнать в трудах специализированных конференций, касающихся космических исследований, автоматизации проектирования, производства, правоведения и др. Обычно календарь проведения подобных конференций публикуется на страницах журналов AI Magazine и Communications of the Association for Computer Machinery. В рамках Association for Computer Machinery работает Special Interest Group on Artificial Intelligence (SIGART), которая ежеквартально публикует собственный сборник сообщений.
Прекрасным источником работ прошлых лет является журнал Artificial Intelligence. В электронном журнале Journal of Artificial Intelligence Research вы найдете рефераты материалов, распространяемых по сети Internet с 1993 года. Его адрес
http: //www. cs/washington. edu/research/ jair/home. html
В Internet существует и много других источников информации по проблемам искусственного интеллекта. Ниже приведены только некоторые из них.
http://www.aaai.org— сервер Американской ассоциации искусственного интеллекта (American Association for Artificial Intelligence);
http://www.cs.cmu.edu/Groups/AI/html/repository.html - хранилище публикаций по искусственному интеллекту при университете Карнеги-Меллона;
http://www.comlab.ox.ac.uk/archive/comp/ai.html— включает каталоги отдельных лабораторий, занимающихся проблемами искусственного интеллекта;
http://www.jsc.nasa.gov/~clips/CLIPS.html — сервер CLIPS;
http://www.ai-cbr.org/theindex.html— источники, касающиеся методики использования прецедентов в системах искусственного интеллекта.
|