3. Представление

Вид материалаОбзор
Подобный материал:
1   ...   96   97   98   99   100   101   102   103   ...   110

24.2. Представление знаний

В определенном смысле любая компьютерная программа содержит знания. Программа сортировки по методу "пузырька", написанная на языке BASIC, содержит знания программиста о том, как упорядочить элементы списка. Так чем же все-таки представление знаний отличается от обычного программирования?

Разобраться в сути компьютерной программы, решающей задачу сортировки списков, совсем непросто. Она, конечно же, содержит знания программиста о методе решения задачи, но, помимо этих знаний, в ней содержатся и другие:

как манипулировать языковыми конструкциями используемого языка программирования;

как добиться высокой производительности программы;

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

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

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

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

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

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

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

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

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

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

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

Отошли в прошлое оживленные дискуссии на отвлеченные темы вроде "Может ли машина мыслить?" или "Как действительно представляются знания в мозге человека?" Сейчас чаще всего задаются вопросом: "Что позволяет сделать данная технология?", а ответ на него может быть получен только программой, в которой сконцентрированы результаты теоретической и практической работы, а не метафизические спекуляции.

24.3. Языки программирования систем искусственного интеллекта

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

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

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

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

В-третьих, механизм вызова процедур в таких языках основан на сопоставлении образцов в той или иной форме. Активизация правил в продукционных системах, включение источников знаний в системах с доской объявлений и резолюция фраз в дедуктивных системах в той или иной форме используют такое сопоставление. Это очень мощный и достаточно общий механизм, который способствует модульной организации компонентов системы, хотя и требует определенных вычислительных ресурсов.

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

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

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

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

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

поиск эффективных методов реализации интерпретаторов;

создание на основе "чистых формализмов" программных средств, пригодных для практического применения;

проведение экспериментов со "смешанными" формализмами, объединяющими разные парадигмы.

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