Структура агентов
Определение агента
Агент существует в определенной среде. По отношению к самому агенту, окружение, в котором он существует, является внешней средой.
Например, компьютерные агенты могут существовать в среде глобальной сети Интернет. И хотя мы можем на время отказаться от рассмотрения лишних и громоздких механизмов взаимодействия между агентами и сосредоточиться на внутренней структуре агента, в то же время мы не должны отказываться от его существования во внешней среде в целом при определении структуры агента.
Процессы взаимодействия с внешней средой не менее важны, чем процессы, протекающие внутри самой системы.
Рис.1 Взаимодействие агента с внешней средой
Несмотря на то, что в данном случае используется понятие «агент», в общем, любая программная система в той или иной степени может рассматриваться как агент. В то же время, большинство программных систем нацелены на взаимодействие с человеком либо со строго определенными информационными системами, поэтому они в чистом виде не являются агентами многоагентных систем. Если рассматривать такое взаимодействие сквозь призму агентных систем, то большинство программных систем можно определить как частный вид агента, реализующих коммуникацию через человеко-машинный интерфейс (HMI, Human machine interface). При этом построение жестко структурированных экранных и электронных интерфейсов характеризует системы как жестко коммуницирующие. Это результат того, что системы являются слабо адаптивными, имеющими статичную структуру данных, а их функциональность может изменяться только под воздействием ручных корректировок программистом.
Поскольку мы рассматриваем человеко-машинные системы, мы предполагаем взаимодействие машинных систем между собой, взаимодействие человека с машинными системами и, разумеется, взаимодействие людей между собой. Все они, таким образом, могут рассматриваться как единая коммуникативная среда. А, соответственно, мы можем рассматривать человека как агента. Разумеется, с точки зрения современных машинных систем, человек – это очень умный агент.
Агент отличается от жестко коммуницирующих систем тем, что агент самостоятельно может инициировать контакт с другим агентом либо, как частный случай, выбирать источник данных для получения данных. Например, хорошим примером агента являются индексирующие системы поисковых интернет-систем. Они обращаются к серверам с данными на основе собственных предпочтений и алгоритмов индексации данных.
Большинство программ можно рассматривать как частный случай агента в человеко-машинной среде. Одновременно с этим существует большое количество программных систем, взаимодействующих между собой автономно. Большинство из них являются агентами, хотя их нельзя назвать интеллектуальными агентами. В частности, агентами в машинной среде являются любые программные продукты, которые взаимодействуют между собой, используя любой возможный интерфейс. Будь это FTP-протокол для обмена файлами по сети, HTTP для передачи запросов и данных через web-среду, SMTP для обмена почтовыми сообщениями или UDP для обмена различными данными на низком уровне.
Для обмена данными между программными системами существует масса протоколов обмена данных, средств упаковки данных и структур данных. Например, XML как язык разметки, позволяющий упаковать в себя произвольную структуру данных; SOAP как транспортный протокол передачи упакованных данных (сообщений).
Также сформировался специализированный класс программ, называемых middleware (ПО промежуточного уровня) как промежуточный уровень в коммуникации между различными программами. Программное обеспечение этого класса позволяет получать, отправлять, преобразовывать и буферизировать данные между различными программами-источниками и программами-получателями. Вместе с middleware существует и класс программ, обозначающих ETL (extract, transform, load – выделение, трансформация, загрузка), которые делают подготовку данных при их передаче для некоторой программной системы.
Агент – автономная сущность, обладающая памятью, совершающая процессы обработки данных и позволяющая обмениваться информацией через каналы коммуникации.
Автономность является одной из важнейших характеристик агента. Помимо прочего, эта характеристика связана с понятием собственности, в том числе материальной собственности, как например, наличие собственных носителей данных. Собственность агента может быть связана с материальной сущностью агента, то есть все, что заключено в аппаратном обеспечении агента рассматривается как собственность. Кроме того, собственность может быть связана с хранимыми данными, специфическими правилами обработки данных, специфическими правилами и средствами коммуникации. Таким примером являются авторские права и ноу-хау.
Необходимо сказать несколько слов о целостности агента. Агент – это система с определенным набором составляющих компонентов. Без части составляющих, например, носителей данных, агент не может существовать или рассматриваться как агент.
Примерами агентов могут служить компьютеры, отдельные приложения, люди, группы людей. Для каждого из этих агентов характерны единый коммуникационный канал, а для группы людей – единая позиция для внешних коммуникаций, единая структура хранения данных и система обработки данных.
Составные части агента
Переместимся от макро-объектов, где агент представлялся как один из участников общего взаимодействия с другими агентами, к рассмотрению агента как основного объекта исследований. Вопросы коммуникации, взаимодействия в общей среде будут затронуты позже.
Агент как объект является самостоятельной и самодостаточной структурой. Для обеспечения своей деятельности агент должен включать в себя ряд составляющих элементов, описываемых ниже.
Рис.2 Составные части агента
Большинство программных продуктов включает в себя составляющую, связанную с структурированием и хранением данных, составляющую, связанную с обработкой данных, и интерфейсную часть с внешними системами или с пользователем.
Сравнивая структуру агента с аппаратными реализациями различных систем, можно сравнить его с компьютером. Так, в Intel x86-архитектуре присутствует процессор, который отвечает за выполнение команд и, соответственно, за обработку данных, память, хранящую данные и программный код. Архитектура разделяется на две подсистемы, которые обслуживаются двумя разными микросхемами окружения. Контроллер-концентратор памяти «Северный мост» (North Bridge) обеспечивает работу центрального процессора, оперативной памяти и видеоадаптера. Контроллер-концентратор ввода-вывода «Южный мост» (South Bridge) обеспечивает работу контроллеров ввода-вывода, интегрированных в материнскую плату, в том числе сети, внешние устройства и пр.
Центром агента является буфер данных. Он является аналогом быстрой памяти и используется для оперативной обработки выбранных данных из внутреннего хранилища данных, для последующего обновления хранилища данных и для целей коммуникации.
В качестве еще одной аналогии рассмотрим классическую трехзвенную архитектуру приложений: сервер баз данных – сервер приложений – клиент. Сервер баз данных хранит операционные данные, сервер приложений обрабатывает эти данные, клиент отображает данные. В сопоставлении с агентом, сервер баз данных – это хранилище данных, сервер приложений является блоком обработки, а вот клиент – это блок, связанный с коммуникацией, получением данных и формированием данных. Буфер данных агента существует на уровне сервера приложений.
Поскольку буфер данных является центром агента, рассмотрим его подробнее. А именно, почему он является центром, и зачем он нужен как таковой. Начнем с обработки данных. Данными невозможно оперировать непосредственно внутри хранилища данных (имеется ввиду интерактивные, коммуникативные операции), поскольку давно прошли те времена, когда данные запись за записью анализировались программой в базе данных, а затем они извлекались для последующих операций. Сейчас рутинная работа по выборке данных перенесена на уровень сервера баз данных. Мы даем задание системе управления базами данных выбрать, обновить, удалить, добавить данные, а система выбирает их для нас в наш промежуточный буфер либо обновляет данные в хранилище данных. Другими словами, все фактические операции производятся в буфере данных – туда выбирается ограниченная часть данных, которые нужны для обработки. Там формируются изменения в данных, которые затем транслируются (переносятся) в хранилище данных.
Для каналов коммуникации буфер данных играет другую роль. Дело в том, что каналы коммуникации не должны напрямую обращаться к данным во внутреннем хранилище данных, так же как коммуникационные каналы не должны иметь прямого влияния на хранилище данных. Это так, поскольку одним из основных принципов построения агента является его автономность, а, следовательно, и независимость от внешних факторов. В дополнение к этому мы обсуждали гетерогенность структур агента (см. главу «Агенты как черный ящик»), где мы предполагаем, что реализация агента может быть различной. При этом язык коммуникации с другими агентами остается единым в среде взаимодействия агентов. Таким образом, при формировании данных для внешней среды и для коммуникации с другими агентами, мы должны транслировать данные из внутренней структуры агента в структуру языка для взаимодействия с другими агентами. Такая трансляция является результатом обработки. И поэтому только результаты обработки (а не данные из хранилища данных) должны отправляться в выходные каналы агента.
Аналогичная ситуация с поступающей извне информацией. С одной стороны, агент должен транслировать входящую информацию во внутреннюю структуру данных, а с другой стороны агент также должен сделать определенные предварительные обработки, такие как оценка входящей информации на непротиворечивость (валидация информации). Первый вид обработки входящей информации соответствует гармонизации с внутренней структурой данных по форме, а второй вид обработки – это гармонизация по содержанию.
Воспроизведение агентов, априорная информация
Если мы рассматриваем мультиагентную систему как среду или сообщество, то агенты в этой среде должны быть подобны организмам – возникать и исчезать из среды и присоединяться и уходить из сообществ. А потому агенты должны иметь возможность совершать действия, характеризующие живые организмы, в том числе развитие и размножение.
Интеллектуальное (не физическое) развитие агента целиком связано с процессом обучения через коммуникацию, то есть через наблюдение и обучение. Развитие агента связано с внутренними механизмами и возможностями агента.
Размножение, то есть воспроизведение себе подобных агентов, используется как основная идея программ-вирусов, центральная задача которых максимально быстро распространиться и прикрепиться к другим программам на различных компьютерах.
В мультиагентных системах могут существовать различные подходы к воспроизведению. Некоторые мультиагентные системы (например, web-среда) определяют формат протокола взаимодействия агентов, например, протокол HTTP. Создание новых видов агентов не контролируется, основное требование – соответствие требованиям протоколам обмена данными. То есть реализация агента может быть создана с нуля или может быть создана через модификацию существующей реализации агента, например, агента с открытым исходным кодом. И, разумеется, воспроизводство нового агента – это использование некоторой реализации агента.
Другие мультиагентные системы предъявляют требования к конкретной реализации агента (например, Skype и другие системы обмена сообщениями). Протокол обмена данными между агентами является недокументированным, закрытым. А создание нового агента – это инсталляция агента на некотором компьютере в определенной среде (сети Интернет).
После установки некоторой реализации агента как программного продукта вы можете использовать его с данными, которые развертываются при установке. Второй вариант – это копирование данных из существующего агента. Копирование совершенно невозможно для живых существ, но в том-то и отличие информационных систем, что мы понимаем их внутреннее наполнение, а потому можем контролировать его и управлять им.
В корпоративных системах управления (ERP-системах) практикуются подобные копирования данных и настроек. Например, если компания внедряет систему в своих нескольких филиалах (дочерних компаниях), то обычно выбирается один из филиалов для пилотного проекта внедрения, а затем внедренная система развертывается (roll out) на другие филиалы. Филиалы могут располагаться в других странах и, соответственно, предъявлять требования к системе в зависимости от государственного регулирования и местных обычаев в этих странах. Различные филиалы могут иметь собственные бизнес-процессы или применять различный объем бизнес-процессов, а, следовательно, и использовать различный функционал в системе. Тем не менее, основные бизнес-процессы остаются едиными во всей компании, они позволяют получать единообразную отчетность, как финансовую, так и по различным натуральным показателям деятельности компании.
Развертывание настроек делается следующим образом:
1) Выделяются общие настройки для всей компании и, соответственно, для всех филиалов, где внедряется система. Эти настройки образуют так называемый корпоративный шаблон системы.
2) Выделяются общие данные всех инсталляций и/или компаний системы. Например, основная часть плана счетов (детализация плана счетов может зависеть от особенностей бизнеса каждого филиала), единые коды элементов запасов, единые коды глобальных поставщиков и заказчиков и пр. Такие данные обычно контролируются и управляются централизованно, и они образуют специализированную базу данных, называемую нормативно-справочной информацией (НСИ, MDM – Master Data Management).
3) Из базы данных пилотного филиала вычищаются настройки и данные, специфичные для этого конкретного филиала. Затем эти настройки и данные развертываются через копирование в другие филиалы.
Аналогичным образом данные из одного агента могут переноситься в другие агенты. То есть платформа для обработки данных и структуры данных остаются теми же самыми, что и в исходной системе, данные же и способы обработки данных переносятся ограниченно. Эти переносимые данные и способы обработки данных далее будут описаны как априорные данные.
Остается открытым вопрос, что включают в себя априорные данные. Ответ на этот вопрос целиком зависит от возможностей системы, её гибкости и специфичности данных. Априорные данные не должны влиять на дальнейшие возможности системы к обучению, к взаимодействию с другими системами, то есть не должны формировать ненужных шаблонов поведения системы. В смысле переноса предопределенных данных принцип «чем больше информации, тем лучше» не способствует развитию обучающихся систем, поскольку у системы, которая уже имеет определенный набор данных, не возникает потребности в её восполнении. А пересмотр и замещение базовых (в данном случае априорных) данных – гораздо более затяжной процесс, чем выстраивание системы и структуры собственных данных с нуля, так как агенту не требуется сомневаться в актуальности данных, а он при потребности в них видит их отсутствие, и добывает их.
Анализ агентов
Как я упоминал выше, агенты в общей картине мира представляют собой чёрный ящик. Подобно принципу инкапсуляции в объектно-ориентированном программировании, все входящие данные должны быть обработаны внутренними механизмами агента и через них помещены во внутреннюю память, а выходящие – сформированы внутренними механизмами агента. То есть прямая запись и чтение в/из внутренней памяти недопустимы: извне не должно быть прямого доступа к хранилищу данных агента.
Тем не менее, структуры данных агента, процедуры обработки данных агента и накопленные данные агента представляют интерес для нас с точки зрения получения очищенных данных. Под очищенными данными имеется ввиду информация с отсеченной интерфейсной частью сообщений и отфильтрованная от различных конвенций и правил, связанных с общепринятыми правилами коммуникации, в том числе и языком коммуникации. То есть мы предполагаем, что внутренняя структура данных агента должна быть выстроена в соответствии с нашими требованиями, как архитекторов агента. Таким образом, мы сможем понимать, как организованы данные и, в частности, сможем получить ответ на вопросы «почему», «зачем», как и другие аналитические вопросы. Внутренняя логика агента должна быть в состоянии дать ответ на этот вопрос.
Противопоставлением логическим агентам, дающим такую возможность, выступают нейронные сети. Нейронные сети могут давать оптимальные решения, однако нейронные сети основаны на адаптивных механизмах обучения и, соответственно, они могут дать количественные характеристики выходящим данным, но не качественные. А, соответственно, мы не сможем узнать у них ответ на ключевой вопрос «почему?».
Далее рассмотрим реализацию агента. Будем подразумевать, что реализуется именно агент, однако будет рассматривать его с точки зрения интеллектуальной системы.
Вариативность платформ и аппаратных реализаций
Фактически мы считаем, что агент – это программная система, работающая на некоторой платформе. Платформа для агента является совокупностью аппаратной и программной платформ (операционная система). Аппаратная платформа реализуется некоторой архитектурой (например, x86 или SPARC). Программная платформа реализуется некоторой операционной системой и библиотеками, например, MS Windows,.NET, ADO.NET.
Платформа является некоторой оболочкой, которая может характеризовать собственность по отношению к агенту и изолированность агента по отношению к внешней среде.
С развитием технологий виртуализации аппаратная платформа стала превращаться в размытое понятие. Аппаратный сервер заменило понятие «виртуальный сервер» или «виртуальная машина». То есть агент перестает ассоциироваться с конкретной аппаратной системой, поскольку может лишь делить один и тот же физический сервер с множеством других агентов. Через современные технологии виртуализации множество различных аппаратных средств могут быть объединены в единую аппаратную платформу с точки зрения программного обеспечения. Хранилище данных может быть размещено в «облаке», то есть с физической точки зрения это хранилище никак не принадлежит агенту.
Однако при различных аппаратных платформах и платформенных реализациях вообще, логические реализации агентов (алгоритмы, реализованные в агентах) могут быть одинаковыми, в том числе структуры данных, механизмы обучения, правила обработки данных (процессинг) и пр. С точки зрения целостности система является совокупностью реализаций, которые определены проектировщиком системы. С точки зрения собственности, в этом случае к составным частям системы можно подходить аналогично финансовому лизингу (финансовой аренде) в управлении финансами: а именно, если вы берете в аренду некоторое оборудование, закупаемое специально для Вашей компании, или которое может быть использовано только Вашей компанией, оно должно быть учтено на балансе вашей компании.
При вариативности платформы для универсальной модели, нет смысла держаться некоторого эталона внутри платформы. Как мы определились ранее, агент представляет собой «черный ящик» и никого не должно волновать, что скрыто внутри него. Если мы и хотим оценить правильность построения этого агента, то это следует делать через коммуникацию с агентом, подобно тому, как это определяется тестом Тьюринга.