Что такое агенты?

Материал из Semantic Future
Перейти к: навигация, поиск
Публикация
Автор:

Иванов А.М. МГТУ им. Н.Э. Баумана, каф. ИУ-3

Тип публикации:

Обзор

Оригинал:

AgentLab

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

Начальный

Обсуждение:


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

Сначала я приведу основные идеологические положения из области агентов. Далее покажу агентов как результат эволюции существующего ПО.

Основы

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

Слово "интеллектуальные" часто стыдливо опускают, но Вас это не должно вводить в заблуждение относительно истинной природы агентов.

Рис.1. Могучий интеллект Симпсона видно даже невооруженным глазом


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

1. Агент - система, находящаяся в среде, действующая в среде и воспринимающая среду.

2. Агенты способны к независимым действиям, представляя интересы пользователя или владельца.

3. Многоагентная система (МАС) - система, содержащая агентов, взаимодействующих между собой.

4. Для успешного взаимодействия агенты должны уметь сотрудничать, координировать действия и вести переговоры.

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

6. И наконец, информация для практиков: агент может быть реализован только в виде программы (софтбот, бот) или иметь программно-аппаратную реализацию (робот).

Эти определения полностью самодостаточны. Если медитировать над ними длительное время, то можно вывести все современные достижения в области агентов, постичь Дао и даже впасть в Нирвану.

Рис.2. * * *

Несколькими днями ранее я на этом и закончил обсуждение особенностей агентов. Но... Сегодня Дао говорило со мной. И просило сжалиться над теми хронически занятыми беднягами, которые находятся в извечном круге производства-потребления, и разжевать им все по-полной. Что ж, прислушаюсь к этому призыву и напишу подробнее об отличии агентных программных систем от обычного примитивного ПО.

Агенты как эволюция примитивного ПО

Сестра, скальпель! Сестра, зажимы! Кто-нибудь! Дайте же мне, наконец, этот чертов топор!!!

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

Рис.3. Различные способы взаимодействия пользователя и программы


1. До Windows - были линейные программы: куча мелких утилит и консоль. Пользователь - программист, должен знать API (параметры командной строки) + скриптовый язык (шелл-скрипт). Это было царство обработки информации - подаем на вход данные и через часы/дни/месяцы получаем результат их обработки.

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

3. После Windows - агенты и их интеллектуальные интерфейсы. Система через естественные интерфейсы (речь, видео) сама узнает или уточняет у пользователя, что ему, бедному, нужно и сама пытается выполнить задачу, используя при этом те самые огромные количества накопленных "фич" и взаимодействуя с другими агентами. Пользователь вообще ничего не должен знать: все что нужно - расскажут и покажут, сделают за него. Это будет Царство Помощников (синонимы: Золотой Век, Святой Грааль, Серебряная Пуля Программирования, Сингулярность, Апокалипсис, Судный День).


Если вы "ниасилили" ничего вплоть до этого места, "патамучта многабукаф" - ничего. Щаз расталкую на пальцах, что такое агенты. Представьте, что вы голосом диктуете Ворду реферат (надеюсь, кто-то их еще пишет, а не копипейздит). А Ворд в это время стебётся над вашей грамматикой и предлагает более удачные варианты предложений, попутно шарясь в Гугле, энциклопедиях, базах рефератов, в анекдотах и на bash.org. Просекли фишку??? Это же просто чума!!!

Автономность То есть, самое главное свойство агентных систем с точки зрения массового потребителя - автономность!

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

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

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


Сейчас такие задачи есть в любой области деятельности: от бытовых задач до промышленности. Т.е. области, которые требуют одних лишь навыков, выполняются при помощи спинного мозга и которые вполне можно полностью автоматизировать уже на текущем технологическом уровне. Могу навскидку перечислить несколько:

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

Выводы агенты отличаются самым главным - способом взаимодействия с пользователем; агенты автономны - сами решают поставленные перед ними задачи.


"На лицо ужасные, страшные внутри, Не нужны такие нам люди-дикари". Народное

В агентах все совсем по-другому

Не думай об объекте, думай о наблюдателе!


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

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

3. Для достижения целей агент может совершать в среде определенные действия. Агент, конечно, может пытаться совершать действия наобум, методом "научного тыка". Авось, повезет, и цель будет достигнута. Но это полный перебор (в самом худшем случае) и потому очень неэффективно. Чтобы не искать вслепую, агент должен обладать знаниями о наборе своих возможных действий, необходимых условиях для их совершения и возможных последствиях.

Рис.4. Живой агент в среде своего обитания. На фото четко различимы сенсоры и эффекторы


Очень часто сложные проблемы нельзя решить с помощью жесткого раз навсегда заданного алгоритма. Например, в вашу «фирму по отмыванию денег от грязи» пришла налоговая инспекция. Очевидно, требуется некая хммм... гибкость поведения в зависимости от внешних обстоятельств.

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

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

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

Личные инструменты
Пространства имён
Варианты
Действия
Проект SF:
Деятельность:
Сообщество:
Хранилище знаний:
Гиды:
Руководства:
Инструменты