Некоторые аспекты построения агентных систем

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

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

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

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

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

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

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

Следует заметить, что понятие агента является некоторым парафразом определения объекта. Действительно, если взять общепринятую формулу “класс = данные + методы (функции для работы с ними)” [1], то можно сказать, что агент - это объект, обладающий функциями для приема информации из внешнего мира, воздействия на внешний мир и принятия решения о роде воздействия. Принятие решения может происходить рефлективно (то есть будет строго задано) и описываться программой.

Понятие интеллектуального агента является развитием методов ООП. Упрощая, можно сказать, что “интеллектуальный агент = данные + методы + знания”, причем методы здесь - это не только функции работы с данными, но и функции работы со знаниями и возможные методы воздействия на окружающую среду агентом. С сожалением можно отметить, что многие разработчики утверждают, что используют в своих продуктах технологии интеллектуальных агентов, тогда как основная их отличительная черта - знания - в разработках не представлены.

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

В работе [2] приведены следующие свойства агентов, не вступающие в противоречия с данными определениями.

  • Автономность - агент функционирует самостоятельно.
  • Способность общения - агент взаимодействует с другими агентами.
  • Реактивность - агенты способны воспринимать окружающую среду и адекватно реагировать на ее изменения.
  • Активность - агент обладает целенаправленным поведением.

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

Из готовых продуктов к реализованным на продукциях (точнее на их модификации) можно назвать проект Guardians Стэндфордского университета, который отслеживает состояние пациента [3]. Следует заметить, что проект был начат в 1987 году и на данный момент база знаний программы содержит около 1000 правил. По заявлению разработчиков система позволяет давать 100%-но верный диагноз для занесенных в базу случаев и может применяться не только в медицине, но и в других областях. На нейросетях была реализована игра “Creatures” компании “CyberLife”. База одного норна (искусственного существа, которое необходимо вырастить и воспитать) содержит более 900 нейронов и около 5000 синапсов [4]. При этом норн обучается в ходе своей жизни. Соответствующим образом воспитанные особи сами могут стать учителями для последующих поколений. Сейчас на базе этих норнов компания CyberLife разрабатывает систему управления беспилотными летательными аппаратами для ВВС Великобритании [5].

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

В свое время считалось, что подобное возможно только при создании роботов. Важной в этом плане является работа О. Этзиони из Вашингтонского университета, в которой он показал, что физическая окружающая среда не является необходимой для создания агента [7].

Еще одним важным свойством является то, что мы можем создать некоторую виртуальную среду, в которую поместим модель объекта, который после моделирования должен быть реализован аппаратно. При этом мы получаем возможность отладить базу знаний и модели поведения будущего аппарата еще до его создания. Кроме того, отработанные методы представления знаний и сама база знаний практически без корректировки могут быть перенесены в создаваемый аппарат. Пример такого моделирования описан в [8].

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

Исключением будут ситуации, когда время реакции гарантированно много больше, чем время принятия решения (например при отправке электронной почты по модему), либо если ведется моделирование. Однако в последнем случае моделироваться может система, время на принятие решения в которой будет критично.

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

Следующей проблемой является формализация знаний. Правила, разработанные в работе [3] (около 1000) составлялись в течении нескольких лет. Следует заметить, что многие работы были забыты не столько из-за плохих методов работы со знаниями, сколько из-за их плохой проработки.

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