Современные системы искусственного интеллекта часто строятся как системы взаимодействующих и сотрудничающих агентов.
Одним из расширений понятия программы стало понятие агента. Оно появилось в связи с использованием программ не только для решения численных задач или иной подобной обработки информации, но и в системах реального времени (real-time systems).
Обычная вычислительная программа, например, программа расчета колебаний струны, запускается на ЭВМ, получает входные данные, выполняется как последовательность заранее написанных команд, выводит результат. До следующего запуска извне (если он вообще состоится) она пребывает в состоянии «комы». В программе расчета колебаний струны, конечно, фигурирует такой параметр как время, но он используется наряду с другими параметрами, такими как амплитуда, и никакого отношения к реальному времени, в котором выполняется программа, не имеет.
Программа реального времени функционирует (запускается, приостанавливается, возобновляется, завершается, запускается вновь) в соответствии с внешними, физическими, а не абстрактными, часами. Это ее главный отличительный признак.
Кроме того, физическое время чаще всего является одним из существенных параметров расчета. Программа реального времени взаимодействует с окружением (получает и передает информацию) посредством интерфейсов, т.е. она влияет на окружающую среду и испытывает, в свою очередь, влияние окружающей среды. Отсюда следует второй важный отличительный признак программы реального времени: потенциально она может оценивать результаты своего выполнения (обратная связь) и менять свои действия в будущем с учетом прошлого.
Таким образом, можно говорить о поведении программы реального времени по отношению к окружению. В связи с этим программа реального времени уже не рассматривается как элемент stand-alone системы, она является частью системы, имеющей признаки распределенной системы.
Эти и другие важные отличия от обычной программы привели к возникновению понятия программного агента и более широкого понятия – автономного агента.
В традиционных системах программы могут правильно функционировать только в условиях полностью предсказуемого окружения. Для того чтобы выполнить с помощью программы некоторое вычисление пользователь должен задать всю входную информацию (аргументы). Если программа берет исходные данные из базы данных, то должна быть полная уверенность в том, что эти данные имеются в базе.
Программные агенты обладают некоторыми знаниями об окружающем мире, которые позволяют им самим решать небольшие проблемы без вмешательства пользователя. Например, Интернет-агенты могут самостоятельно отыскивать нужную информацию в Сети (разумеется, в определенных пределах). Таким образом, агенты – это более гибкая конструкция, чем традиционные программы. Дополнительно, если агент может общаться с другими агентами, то они могут помочь ему решить проблему, действуя совместно.
Как и в случае классических алгоритмов, когда мы обсуждаем интуитивное понятие алгоритма и его формализации, можно обсуждать интуитивное понятие агента и различные его формализации.
Начнем с интуитивного понятия агента. Несмотря на рост числа теоретических исследований и приложений технологий, основанных на применении агентов, так и нет общепринятого определения термина «агент». Существует несколько трактовок, зависящих от целей исследования.
В частности, П.Маес из Media Lab Массачусетского технологического института считает, что «автономные агенты – это вычислительные системы, которые существуют в сложном динамическом окружении, чувствуют и действуют в этом окружении автономно, и так, чтобы реализовать множество целей и задач, для которых они спроектированы».
Б.Хайес-Рот считает, что «мыслящие агенты непрерывно выполняют три функции: восприятие динамически изменяющихся условий окружения; действия по влиянию на окружение; логический вывод для интерпретации получаемой информации, решения проблем, построения заключений и определения действий».
М.Вулдридж и Н.Дженнингс разделяют слабое и сильное понятия агента. Слабый агент рассматривается как система со свойствами автономности, возможности работать в обществе (social ability), реактивности, целенаправленности. Сильное понятие агента предполагает возможность непредписанных действий, предпринимаемых на основе собственных «идей».
Их определение включает следующие свойства: 1) автономия: агенты действуют без непосредственного вмешательства людей или чего-либо еще, определенным образом контролируют свои действия и внутреннее состояние; 2) социальные возможности: агенты взаимодействуют с другими агентами (и, возможно, людьми) с помощью некоторого языка; 3) реактивность: агенты воспринимают свое окружение (которое может быть физическим миром, пользователем – через графический пользовательский интерфейс, набором других агентов, Интернетом, или комбинацией всего этого) и отвечают периодически так, чтобы изменить что-то в своем окружении; 4) целенаправленность: агенты не просто отвечают своему окружению, они способны на целенаправленное поведение и проявление инициативы.
Т.Хесс и др. разделяют свойства на базовые и продвинутые. К базовым относятся целенаправленность, постоянство функционирования и реактивность. Продвинутые свойства включают наличие искусственного интеллекта, мобильность и интерактивность.
С.Франклин и А.Грэссер в 1996 году предложили следующее обобщенное определение агента:
Автономный агент – это система, находящаяся внутри окружения и являющаяся его частью, воспринимающая это окружение (его сигналы) и воздействующая на окружение для выполнения собственной программы действий.
Расшифровка этого определения дается перечнем свойств, которыми должен обладать автономный агент:
1) реактивность;
2) автономность;
3) целенаправленность;
4) непрерывность функционирования;
5) коммуникативность;
6) обучаемость (адаптивность);
7) мобильность;
8) гибкость;
9) индивидуальность.
Разные авторы не совсем одинаково трактуют перечисленные свойства. Попытаемся объяснить их подробнее.
Свойство реактивности означает, что агент временами отвечает на изменения в окружении. Агент имеет сенсоры, с помощью которых получает информацию от окружения. Сенсоры могут быть самыми различными. Это могут быть микрофоны, воспринимающие акустические сигналы и преобразующие их в электрические, видеокарты захвата изображений, клавиатура компьютера или общая область памяти, в которую окружение помещает данные и из которой программный агент берет данные для вычислений.
Не все изменения окружения становятся известными (доступными) сенсорам агента. Это вполне естественно. Ведь и человек не воспринимает звуки частотой свыше 30 кГц, радиоволны и т.д. Таким образом, окружение не является полностью наблюдаемым для агента.
Аналогично, агент воздействует на окружение путем разнообразных исполнительных механизмов, включая общую память. Разумеется, степень воздействия как и степень восприятия является ограниченной. Агент может перевести окружение из некоторого состояния в некоторое другое, но не из любого в любое.
Свойство автономности означает, что агент является самоуправляющимся, сам контролирует свои действия. Программный агент, находящийся на некотором сервере, обладает возможностью «самозапуска». Он не требует от пользователя каких-либо специальных действий по обеспечению его старта (подобно тому, как мы «кликаем» два раза по иконке некоторого файла).
Свойство целенаправленности означает, что у агента имеется определенная цель и его поведение (воздействие на окружение) подчинено этой цели, а не является простым откликом на сигналы из окружения. Иначе говоря, агент является управляющей системой, а не управляемым объектом.
Свойство непрерывности функционирования означает, что агент постоянно находится в состоянии исполнения. Это не значит, что он ежесекундно выдает в окружение какие-то сигналы. Он может прекратить активные действия, «заснуть», до некоторого момента времени или какого-то события. Но в необходимый момент времени он сам возобновляет действия, не требуя какого-то «включения» извне.
Свойство коммуникативности означает, что агент общается с другими агентами (включая людей), используя для этого некоторый язык. Это не обязательно единый язык для всех агентов. Достаточно, чтобы у пары общающихся агентов был общий язык. Язык может быть сложным как, например, естественный язык. Но может быть и примитивным: обмен числами или короткими словами. Если многословные фразы сложного языка несут всю информацию, как правило, в себе, то слова простого языка предполагают «умолчание»: обе стороны диалога «знают», о чем идет речь (как в известном анекдоте о занумерованных анекдотах).
Свойство обучаемости означает, что агент может корректировать свое поведение, основываясь на предыдущем опыте. Это не просто накопление в памяти параметров окружения, т.е. использование исторических данных, но сопоставление истории собственных действий с историей их влияние на окружение, и изменение в связи с этим своей программы действий.
Свойство мобильности означает, что агент может транспортировать себя с одной машины на другую. В общем случае можно сказать, что агент меняет свое положение в окружении (не меняя самого окружения).
Свойство гибкости означает, что действия агента не предписаны. Это, конечно, весьма относительное утверждение. Имеется в виду, что программа, заложенная в агента, предполагает выбор из многочисленных вариантов поведения. Такого рода выбор производится если не на каждом шагу, то достаточно часто, и зависит от выполнения или невыполнения различных условий. Выбор не является ни случайным, ни недетерминированным. Гибкость означает, что действия агента не примитивны, не легко предсказуемы.
Свойство индивидуальности означает наличие персональных свойств, данных, возможно, «эмоционального» состояния.
Систему, состоящую из нескольких взаимодействующих агентов, называют мультиагентной системой (МАС). Если мультиагентная система, в свою очередь, по отношению к ее окружению действует как (единый) агент, то естественно, составляющих ее агентов назвать подагентами (субагентами).
В мультагентной системе необязательно все агенты взаимодействуют (общаются) между собой. В крайнем случае, общения нет вообще. Такие системы назовем дискретными мультиагентными системами. Второй крайний случай – каждый агент общается с каждым. Такую систему назовем полносвязной мультиагентной системой.
Мультиагентная система, действующая как единый агент, должна характеризоваться и некоторой общей для всех субагентов целью и координацией действий по достижению этой цели.
Поскольку встречаются и другие ситуации, когда агенты не связаны столь тесно, то такие системы можно назвать обществами агентов. Отсутствие единой цели, однако, не отрицает возможного группового поведения агентов. Но оно является, скорее, эпизодическим, чем систематическим.
Важным отличием мультиагентной системы от программы или одного агента является то, что входящие в систему программные агенты (по крайней мере, некоторые) не были спроектированы специально для этой системы. Может быть, это – повторно используемые агенты, или агенты, разработанные для решения более универсальных задач. В этих случаях агенты имеют собственные цели, не совпадающие полностью с целями системы (организации), но совместимые с ними. Тем не менее, они могут быть полезны друг другу для решения стоящих перед ними задач и, поэтому, очень важным для них с этой точки зрения является свойство коммуникативности.
С организационной точки зрения существуют общие цели всего сообщества, и эти общие цели выражаются, прежде всего, в ролях (которые играют агенты) и нормах взаимодействия.
Исследования в области систем поддержки принятия решений (DSS) в последние годы все больше переходят от создания систем в виде традиционного «ящика с инструментами» (toolbox) к парадигме сотрудничества и интеграции независимых приложений. Быстро растущая область исследований интеллектуальных агентов и мультиагентных систем предлагает возможности создания более эффективных систем на основе единого подхода. Например, Р.Вахидов и Б.Фазлоллахи предлагают плюралистическую мультиагентную систему поддержки принятия решений. Слово «плюралистический» в названии подхода говорит о множественности, различности источников информации, точек зрения и перспектив, используемых в рамках одной системы. Агенты распределены по ролям в соответствии с различными фазами решения проблем. Они взаимодействуют с пользователем, окружением, друг с другом для улучшения процесса принятия решения.