Попытаемся окончательно и бесповоротно разобраться в том, зачем агенты и мультиагентные системы нужны современному человечеству.
Чем дальше в лес, тем толще партизаны.
Для разных групп людей агенты означают совершенно разные вещи.
1. Для специалистов по ИИ и прочих господ ученых агенты -- это исследовательский инструмент. Исторически сложилось, что агенты в основном применяются в трех областях.
Теоретический инструмент распределенного решения задач. Разделение одной большой задачи на отдельные мелкие подзадачи, решение подзадач, интеграция результатов.
Теоретический инструмент построения социального интеллекта: интеллект, как продукт взаимодействия отдельных элементов социума, emergent intelligence (возникающий интеллект). Сложное поведение системы, появляющееся из суммы простых поведений примитивных существ - emergent behavior (возникающее сложное поведение).
Теоретический инструмент интеграции разрозненных методов ИИ в одном существе (в роботе, в программном боте). Например, даже в простой задаче по созданию "самодвижущегося автомобиля" нужно решить целый ряд проблем и связать вместе несколько отдельных методов ИИ. Знатоки английского могут почерпнуть немало любопытного о создании мозгов автомобиля, принимавшего участие в 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.
Появятся системы, все более и более ориентированные на человека, способные:
- накапливать и анализировать огромные объемы данных (в том числе и по поведению людей);
- предугадывать потребности;
- давать советы на основе воспринимаемой информации, не дожидаясь явного обращения за помощью;
- навязывать свое или чужое мнение;
- самостоятельно адаптироваться под конкретного пользователя;
- обучать на основе проактивного подхода (не просто пассивная передача информации и последующее тестирование, а адаптивное обучение);
- даже совсем тупые как пробка товарищи смогут пользоваться любой техникой.
Но все это только первый шаг… шаг на пути к Сингулярности...
Спасибо вам большое за ваши статьи, очень помогли на старте освоения мультиагентных систем.
ОтветитьУдалить