пятница, 21 декабря 2007 г.

Кому и зачем нужны агенты?

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

Чем дальше в лес, тем толще партизаны.


Для разных групп людей агенты означают совершенно разные вещи.

1. Для специалистов по ИИ и прочих господ ученых агенты -- это исследовательский инструмент. Исторически сложилось, что агенты в основном применяются в трех областях.

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

Теоретический инструмент построения социального интеллекта: интеллект, как продукт взаимодействия отдельных элементов социума, emergent intelligence (возникающий интеллект). Сложное поведение системы, появляющееся из суммы простых поведений примитивных существ - emergent behavior (возникающее сложное поведение).

Теоретический инструмент интеграции разрозненных методов ИИ в одном существе (в роботе, в программном боте). Например, даже в простой задаче по созданию "самодвижущегося автомобиля" нужно решить целый ряд проблем и связать вместе несколько отдельных методов ИИ. Знатоки английского могут почерпнуть немало любопытного о создании мозгов автомобиля, принимавшего участие в DARPA Grand Challenge 2005.




Winning The DARPA Grand Challenge 2005. Руководитель команды, победившей в конкурсе, рассказывает о технических деталях.


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

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




Архитектура реальной корпоративной системы. Rational Software Developer Conference. IBM, 2006.



Сейчас наиболее крупными архитектурными единицами ПО можно считать компоненты (модули OSGi, сборки .NET, компоненты COM) и сервисы (и веб-сервисы в частности). Компоненты (или сервисы) -- это по-сути "черные ящики" с четко описанными внешними интерфейсами для конфигурирования, расширения функциональности, для работы с ними в нормальном режиме.

Но в любом случае, разделение системы на компоненты -- это деление по функциональности: тот сервис реализует полнотекстовый поиск, а этот -- частотный анализ текста...

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

С точки зрения выразительных средств, теория агентов предлагает более "высокоуровневые" понятия для описания программной системы, такие как:

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

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



Серебряная пуля.



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

3. Для конечного пользователя и отделов маркетинга технология станет все больше и больше похожа на магию ;)

Это не я такой умный, это Артур Кларк.


«Любая достаточно продвинутая технология неотличима от магии». Clarke, A. C. Profiles Of The Future: An Inquiry into the Limits of the Possible. : Phoenix, 2000.




Гарри Поттер -- великий технолог современности.



Появятся системы, все более и более ориентированные на человека, способные:

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


Но все это только первый шаг… шаг на пути к Сингулярности...



1 комментарий:

  1. Спасибо вам большое за ваши статьи, очень помогли на старте освоения мультиагентных систем.

    ОтветитьУдалить