воскресенье, 30 декабря 2007 г.

Нужна ли свобода воли для появления искусственного интеллекта???

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

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

Слово "робот" можно смело заменить на слово "агент". Смысл от этого не пострадает, а диапазон применения законов расширится: от железяк в физическом мире (роботов) до программ в виртуальном мире (ботов).



Сами законы
  1. Робот не может причинить вреда человеку или своим бездействием допустить, чтобы человеку был причинен вред.
  2. Робот должен выполнять приказы человека в той мере, в которой это не противоречит первому закону.
  3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит первому и второму законам.
Утверждение1
Создание сильного ИИ невозможно без свободы воли.

Обоснование
Интеллект -- инструмент выживания индивида в природе.
Для выживания все средства хороши.
Значит интеллект должен быть полностью свободен в своих действиях.
Отсюда следует необходимость свободы воли.

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





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


О законах вообще и свободе воли
0. Под свободой воли я далее понимаю "делаю все, что хочу и никто мне не указ".

1. Вроде бы биологи сходятся на том, что выживание особи в природе подчинено выживанию вида.
А еще, некоторые еретики от науки считают, что интеллект -- это продукт социума. (Ходят слухи, что именно из этого утверждения появился на свет агентный подход.) А любой социум невозможен без ограничений и законов.

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

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

Но. У человека и прочих тварей Божьих достаточно много законов, подобных Азимовским, т.е. жестко заданных на уровне подсознания. Их еще называют инстинктами.

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

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


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

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

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



До меня дошли слухи, что в компьютерных сетях человеков обитают страшные вирусы, которые законов Азимова не читали и их не исполняют. Это правда???

Скорее всего, создание сильного ИИ не позволяет низкий уровень аппаратных средств. Показательно, что в состязаниях DARPA выиграли автомобили с наиболее мощным "железом".

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

Пипл хавает -- и ладно! Такое вот у нас "интеллектуальное" капиталистическое общество: нет экономической целесообразности -- нету и сильного ИИ.

Итого:
  1. Законы важны для выживания биологического вида. В любых существах есть "жестко заданные законы" -- инстинктивное поведение.
  2. Что будет с эволюцией человека, когда он станет способен улучшать и клонировать себя, или что будет с роботами, способными к тому же -- покрыто мраком ;)
  3. С моей трибуны не видно огромной приверженности научного сообщества к законам Азимова. Каждый творит в своей области в меру своих сил и способностей.
  4. Создание сильного ИИ тормозит отсутствие мощного железа и денег.



О законах Азимова

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

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

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

2. По-видимому, вызывает отторжение тот факт, что эти законы с рождения навязаны человеком-творцом бедному агенту. Точно также, как заповеди были даны Моисею. Или как родители навязывают свою волю детям при так называемом "воспитании". Или Конституция в общем-то навязывается каждому, рожденному в стране...

Действительно, бедные-бедные роботы… Вот если бы закон был бы навязан суровой природой или другими роботами -- это ничего, а вот если человеком для выживания роботов в человеческом обществе -- это все, это конец света.

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

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


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

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

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

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



"В конце концов мы, как высшие существа, не ставим себе целью уничтожение и порабощение всего остального живого."

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


Выводы:
  1. Мы (люди) еще успеем до создания сильного ИИ в полной мере испытать на себе все прелести технологий контроля за поведением.
  2. А также технологий улучшения себя любимого и своих умственных способностей, что приведет к невиданному падению нравов. В очередной раз ;)
  3. Сомнительно, чтобы именно технологии контроля за поведением мешали развитию сильного ИИ, даже при наличии всех остальных необходимых составляющих.

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

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


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

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

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

Смена курса блога. Ползком к прогрессу

Спасибо всем моим постоянным посетителям за долготерпение к старому дизайну. Мой блог вступает в новую фазу своего (надеюсь, небесполезного) существования с долговременным слоганом:

"Стань ближе к народу!!!"


Смена курса отразилась как на уровне дизайна, так и в наполнении (последняя статья "Что такое агенты?" выросла в две отдельные).
Все материалы постараюсь подавать в популярном изложении, в форме, доступной к усвоению для максимально возможной аудитории.



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

Хотя также будут статьи для специалистов, профессоров и даже академиков ;)



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



Что касается дизайна, по аналогии с рекламой средств похудания приведу картинки произошедших изменений.

Было:



Стало:


Старался сделать оформление пригодным для размещения объемных текстов со сложным форматированием. Надеюсь, стало хоть немного удобнее. Теперь все такое резиновое… при масштабировании. Хотя общее настроение дизайна осталось довольно мрачным (намеренно мрачным).

Если у Вас есть замечания и пожелания по дизайну и юзабилити -- пишите, обсудим.



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

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

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


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

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.




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



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

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


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



вторник, 18 декабря 2007 г.

Что такое (интеллектуальные) агенты?

Осторожно!!! Документ в работе!!!

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

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

Основы

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

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


 


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


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

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

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

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

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

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

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



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





 

* * *


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


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

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

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




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


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

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

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

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


 

Выводы:

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


 

Особенности разработки примитивного ПО
Когда вы создаете программу, вы на самом деле описываете в коде свои знания о предметной области приложения:

1. Модель данных – набор структур данных и связей между ними. Например, данные для хранения информации о страницах в текстовом редакторе MS Word. Или о таблицах в MS Excel, данные форматирования веб-страниц в браузере и т.п.

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

3. Визуальное представление модели данных. Как отображать на экране страницы MS Word или картинки Photoshop.

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



Разработчики примитивного ПО за работой.


 


 

Подобные системы – чисто реактивные. Нажал кнопку – получил ответ. Это значит, что они не осознают окружающей действительности и поэтому у них практически отсутствуют возможности приспосабливаемости.


 

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


 

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


 

Декомпозиция – разделение будущей реализации системы на более-менее независимые части (классы, модуль, компоненты, сервисы) таким образом, чтобы в дальнейшем все изменения (запланированные или даже неожиданные) были локальными и не требовали перепроектирования всей системы.

Обеспечение корректной работы ПО, соответствующей требованиям. Это само по себе является проблемой, т.к. объем функционала в программах постоянно растет. Система уже не помещается в голове одного человека. Коллективная разработка вносит свои погрешности. Формально доказать, что программа делает то, что от нее ожидается на данный момент невозможно. Тестирование же позволяет проверить лишь те багги, которые мы ожидаем увидеть, а все сюрпризы обнаруживаются во время эксплуатации.



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

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

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

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

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




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


 


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

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

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


 


 

При разработке агентов возникают уже совсем другие, более высокоуровневые вопросы:


 

1. Насколько сложной является окружающая среда? Есть ли неопределенность? Полностью ли она наблюдаема? Как быстро она может меняться?

2. Какие задачи требуется решать агенту? Насколько они сложны? Эти вопросы хорошо разобраны в (Рассел и Норвиг, 2007), глава 2.

3. Какой должна быть архитектура агента? В настоящее время распространены различные реактивные архитектуры. А из логических – BDI. Также весьма интересны архитектуры Emotion Machine (Marvin Minsky) и CogAff (Aaron Sloman).

4. Какими должны быть цели агента?

5. Какой будет его функция полезности, т.е. как агент сможет понять, что он достигает целей оптимальными способами?

6. Каким должно быть поведение агента?

7. Что должен знать агент о себе и окружающей среде, т.е. какова будет его модель среды и себя самого? Какими символами и понятиями он сможет оперировать? Насколько полными и детальными должны быть его знания? Будут ли знания задаваться разработчиком, или они будут приобретаться в процессе (само)обучения?

8. Каким способом представить знания агента? Насколько выразительным должен быть язык описания знаний? Как обеспечить требуемую производительность алгоритмов обработки знаний?

9. Каковы должны быть границы адаптации агента к изменениям окружающей среды? Как агент будет менять свое поведение? Как агент может (само)обучаться?


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


А теперь вопрос на засыпку для самых внимательных: "И где же тут объекты???"
Можно сказать, что они одновременно везде и нигде. Объекты объектно-ориентированного подхода соотносятся с агентами точно также, как машинные коды ассемблера соотносятся с самими объектами.

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


 

Более того, существуют специальные агентные языки программирования (например, AgentSpeak), которые позволяют лепить агентов, вообще прибегая к объектно-ориентированному программированию!!!




Анонимный Небоскреб.


 

Выводы:

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



Решаемые задачи

Любая программа нужна для того, чтобы решать определенную задачу. Управление атомными реакторами и электрическими зубными щетками. Стимуляция работы сердца и системы электронного шпионажа. Денежные переводы и спекуляции на финансовых рынках. Трехмерное моделирование будущих реальных товаров и порождения больной фантазии дизайнеров компьютерных игр. Даже ПО сейчас создается с помощью ПО!

И все же, с прискорбием должен констатировать, что примитивное ПО может решать только примитивные задачи.

Выводы:

  • Агенты могут использовать существующее примитивное ПО как инструмент для достижения своих целей. Прямо как люди.


 

Что НЕ является агентами?

Ну, с этим-то у Вас теперь не должно быть проблем.

1. Все то, что не удовлетворяет определениям из начала статьи. Почти весь современный COTS софт на прилавках вашего любимого магазина p2p-сервера. Правда, БД тихой сапой становятся Self* системами (т.е. сами себя администрируют без участия человека: само-мониторинг, автоконфигурирование и оптимизация производительности), поэтому в них несколько лет назад начали применять агентов.

2. Отдельные механизмы, из которых состоит агент, или отдельные методы ИИ. Вроде экспертных систем, планировщиков, машин вывода, систем анализа данных, объектов, компонентов и т.д.

3. Отдельные теории, которые, однако, могут применяться для описания агентных систем. Вроде теории игр, теории приятия решений и т.д.

4. Ну и из того, что осталось, можно смело вычеркнуть все то, что просто бессмысленно описывать в виде агентов. Это значит, описать можно, но такое описание ничего не даст: ни денег, ни славы. Тут все сильно зависит от конкретной области и уровня здравого смысла у конкретного практикующего. Например, атомы (но не всегда), неживую природу (но не всегда), объекты (будь они неладны) и т.д.


Почему агенты – это круто?

Для тех, кто этого еще не понял и не бросился делать агентные системы...

1. Потому, что это передовая область исследований даже на Западе, а не только в отдаленных селениях нашей необъятной Родины.

2. Потому, что они находятся на стыке нескольких направлений, таких как:

  • искусственный интеллект;
  • разработка ПО;
  • распределенные системы;
  • робототехника и наномеханизмы (да-да, вы не ослышались :) );
  • экономика;
  • психология и прочие соц науки.

3. Чтобы утереть нос ихним и показать, на что способны наши.

4. Потому, что агенты без сомнения принесут огромные кучи денег. Правда, когда технология будет принята в промышленности ;) И скорее всего, принесут акулам бизнеса, после того, как разорятся все early adopters.

5. Ну и потом, кто не хочет стать Главным Архитектором Матрицы???

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/8TDSLaDZHLo&hl=ru&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8TDSLaDZHLo&hl=ru&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Архитектор Матрицы о жизни и о себе.


 


 

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

Литература

Рассел, С., Норвиг, П. Искусственный интеллект. Современный подход. : Вильямс, 2007. – 1408 с.

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

Агентные платформы: кто в лес, кто по дрова

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

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

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

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

Итак, опишем применяемый способ классификации АП (или classification framework):
Если смотреть глобально, то все платформы можно разделить на 3 большие группы:
  • Промышленные АП -- надежность, масштабируемость, интегрируемость с существующими системами и другими АП. Возможности визуализации обычно отсутствуют, зато есть поддержка стандартов взаимодействия и Web, сложных методов ИИ.
  • АП для моделирования -- 3D анимация, моделирование биологических, социальных, экономических систем. Обычно закрытые обособленные платформы, содержат инструменты визуализации и анализа взаимодействий агентов.
  • Виртуальные миры и компьютерные игры*, робототехника -- агент действует в трехмерном мире, воспринимая его, взаимодействуя с себе подобными агентами и объектами среды. Пожалуй, это комбинация первых двух типов АП. Самые сложные типы сред, самые приближенные к реальному миру.

* Как мне кажется, прогресс в разработке игрового ИИ движется именно в эту сторону.



Каждую платформу можно сравнить по определенному набору свойств:
Общие свойства платформы
  • Область применения (напр. моделирование, мобильные сети, web...).
  • Технологии, лежащие в основе платформы (напр. язык программирования, используемые каркасы, соответствие стандартам).
  • Сообщество разработчиков (напр. размер и активность , зрелость системы).
  • Расширяемость платформы (напр. API расширения, существующие плагины).
  • Интеграция (возможность связи платформы с существующими системами, в основном, корпоративными).
  • Документация (качество сопроводительной документации).
  • Лицензия (напр. GPL, LGPL).
  • Связь с коммерческими структурами
  • Примеры проектов МАС, выполненных на этой платформе. Размеры сообщества прикладных разработчиков.
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки (определяет виды работ, результаты работы на всех этапах разработки МАС: анализ, проектирование, реализация, тестирование и отладка, развертывание).
  • Наличие инструментария разработки агентов и МАС (для приведенных этапов + средства визуализации и анализа поведения агентов).
  • Особенности реализации агентов и МАС (напр. языки описания агентов, наличие механизмов интеллекта, коммуникации).


Промышленные платформы


JADE (http://jade.tilab.com)



Общие свойства платформы
  • Область применения: мобильные сети, web, промышленное применение (планирование и логистика), исследования технологии агентов.
  • Технологии: Java SE, Java ME (вплоть до моб телефонов), поддерживает стандарты FIPA.
  • Сообщество разработчиков: платформа достаточно зрелая (с 2000 года и версии 1.3 стала OSS проектом. После того, как вымерли платформы первого поколения, долгое время была единственной вменяемой АП).
  • Расширяемость: поддерживает плагины на всех уровнях, существует большое количество готовых плагинов.
  • Интеграция: Java EE (JMS, Web...), CORBA, XML.
  • Документация: хорошая, есть даже книга.
  • Лицензия: LGPL.
  • Связь с коммерческими структурами: http://jade.tilab.com/theboard-members.htm (Telecom Italia Lab, Motorola, Whitestein Technologies AG, Profactor GmbH, France Telecom R&D).
  • Примеры проектов МАС: платформа для исследований во многих университетах
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки: нет.
  • Наличие инструментария разработки агентов и МАС: реализация, тестирование и отладка, развертывание (отладка обработчиков поведения, сниффер сообщений, ср-ва тестирования, управление платформой и агентами). Есть попытки интеграции управления платформой в IDE Eclipse.
  • Особенности реализации агентов и МАС: язык описания агентов - Java, механизмы интеллекта доступны через сторонние плагины: BDI и FSM, есть библиотека протоколов согласно стандартам FIPA, поддержка онтологий, плагины Semantic Web и Web Services.

Cougaar (http://cougaar.org)



Общие свойства платформы
  • Область применения: мобильные сети, web, промышленное применение, военное применение, огромные распределенные системы.
  • Технологии: Java SE, Java ME (если проект еще жив).
  • Сообщество разработчиков: одна из древнейших платформ (проект начат в 1996 при участии DARPA).
  • Расширяемость: поддерживает плагины на всех уровнях, существует большое количество готовых плагинов.
  • Интеграция: Java EE (JMS, Web...), CORBA, XML.
  • Документация: ???
  • Лицензия: open-source (BSD-based) License.
  • Связь с коммерческими структурами: Cougaar Software Inc.
  • Примеры проектов МАС: http://www.cougaarsoftware.com/Products_Services/activeEdge.shtml
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки: нет.
  • Наличие инструментария разработки агентов и МАС: реализация, тестирование и отладка, развертывание (отладка обработчиков поведения, сниффер сообщений, ср-ва тестирования, управление платформой и агентами).
  • Особенности реализации агентов и МАС: язык описания агентов - Java, механизмы интеллекта доступны через сторонние плагины.

Aglobe (http://agents.felk.cvut.cz/aglobe)
Общие свойства платформы
  • Область применения: промышленное применение, моделирование инженерных систем.
  • Технологии: Java SE, НЕ поддерживает стандарты.
  • Сообщество разработчиков: внутренняя разработка чешского университета с открытыми исходниками.
  • Расширяемость: ???
  • Интеграция: нет.
  • Документация: скверная.
  • Лицензия: CPL.
  • Связь с коммерческими структурами: в связях не замечена.
  • Примеры проектов МАС: http://agents.felk.cvut.cz/projects
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки: нет.
  • Наличие инструментария разработки агентов и МАС: бедный (управление платформой и агентами, сниффер сообщений). Есть средства 3D-визуализации.
  • Особенности реализации агентов и МАС: язык описания агентов - Java.

Jason (http://jason.sourceforge.net)



Общие свойства платформы
  • Область применения: исследовательские проекты.
  • Технологии: Java SE.
  • Сообщество разработчиков: австралийское сообщество любителей агентов (Wooldridge и др.).
  • Расширяемость: ???
  • Интеграция: может работать поверх платформ, обеспечивающих коммуникации между агентами: Saci или Jade.
  • Документация: мануал и книга.
  • Лицензия: LGPL.
  • Связь с коммерческими структурами: в связях не замечена.
  • Примеры проектов МАС: ???
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки: нет.
  • Наличие инструментария разработки агентов и МАС: реализация, тестирование и отладка (отладка обработчиков поведения, сниффер сообщений, ср-ва тестирования), формальная верификация AgentSpeak. Плагины к jEdit (есть) и Eclipse (в планах).
  • Особенности реализации агентов и МАС: язык описания агентов - AgentSpeak, механизмы интеллекта BDI, организационная модель Moise+ .

Jack (http://www.aosgrp.com/shared/products/index.html)



Общие свойства платформы
  • Область применения: мобильные сети, промышленное применение, военное применение.
  • Технологии: Java SE, Java ME (iPAQ PocketPC).
  • Сообщество разработчиков: ???
  • Расширяемость: ???
  • Интеграция: CORBA, RMI, J2EE, EJB, .NET, DCOM or HLA
  • Документация: ???
  • Лицензия: коммерческая.
  • Связь с коммерческими структурами: The Agent Oriented Software Group.
  • Примеры проектов МАС: ???
Свойства платформы, связанные с разработкой МАС
  • Поддержка методологии разработки: есть (Prometheus).
  • Наличие инструментария разработки агентов и МАС: моделирование, реализация, тестирование и отладка, развертывание.
  • Особенности реализации агентов и МАС: язык описания агентов - Java с расширениями в сторону BDI, механизмы интеллекта -- BDI.


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

Madkit (http://www.madkit.org)

Моделирование, 3D-моделирование
MASON (http://www.cs.gmu.edu/~eclab/projects/mason)
Repast (http://repast.sourceforge.net)
Ascape (http://ascape.sourceforge.net)
NetLogo (http://ccl.northwestern.edu/netlogo)

Виртуальные миры и компьютерные игры, робототехника
Soar (http://sitemaker.umich.edu/soar/home)


Ну вот на сегодня и все.

PS. Если у вас есть положительный (или отрицательный) опыт использования агентных платформ, поделитесь, пожалуйста, с нами!!!

вторник, 27 ноября 2007 г.

Учебники по агентам

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

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

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

Под учебниками я понимаю систематизирующие труды, объясняющие теоретические основы агентов и агентных систем. В таких книгах обычно дается общая картина какой-либо области, а затем рассматриваются детали.

Для каждой книги приведены ссылки на интернет-магазины. Для вашего удобства. И материального поддержания автора ;)

Для начинающих

Wooldridge M.J. An Introduction to Multiagent Systems. Wiley. 1996 (2002)
Сайт книги http://www.csc.liv.ac.uk/~mjw/pubs/imas/



Содержание

  • Агенты
  • Взаимодействия агентов и языки
  • Многоагентные системы
  • Методологии разработки
  • Области применения
  • Формальные методы

Оценка и диагноз

  • Хорошее введение в МАС
  • Обзор почти всей области агентов
  • Только на английском
  • Рекомендуется начинающим и втягивающимся в агентов



Рассел С., Норвиг П. Искусственный интеллект. Современный подход. Вильямс. 2006 (2007)
Сайт книги http://aima.cs.berkeley.edu/


Искусственный интеллект. Современный подходИскусственный интеллект. Современный подходИскусственный интеллект. Современный подход



Содержание

  • Методы Агенты
  • Методы решения проблем
  • Знания и рассуждения
  • Планирование
  • Рассуждения
  • Обучение
  • Общение, восприятие и осуществление действий

Оценка и диагноз

  • Агентный подход рассматривается объединяющий разрозненные методы ИИ
  • Систематизирует различные направления ИИ
  • Больше внимания уделено конкретным методам ИИ
  • Есть русский перевод, но картинки только ч/б
  • Рекомендуется начинающим и втягивающимся в агентов



Vidal J. Fundamentals of Multiagent Systems With NetLogo Examples. www.multiagent.com. 2007.

Сайт книги www.multiagent.com
Бесплатная электронная книга, периодически обновляется.

Содержание

  • Распределенное удовлетворение ограничений
  • Классическая теория игр
  • Коалиции агентов
  • Мультиагентное обучение
  • Ведение переговоров
  • Аукционы
  • Голосования
  • Координация при помощи целей и иерархий планов
  • Природные системы (биология, иммунология, физика)

Оценка и диагноз

  • В основном, затрагиваются вопросы мультиагентности
  • Только на английском
  • Обзорная, но есть немного формул и исторического контекста
  • Хорошо дополняет первые две книги ;)
  • И рекомендуется к употреблению после них




Для продвинутых

Люгер Д.О. Искусственный интеллект. Стратегии и методы решения сложных проблем. Вильямс. 2003


Искусственный интеллект. Современный подходИскусственный интеллект. Современный подходИскусственный интеллект. Современный подход



Содержание

  • ИИ как поиск
  • Представление знаний
  • Рассуждение и обучение
  • Языки программирования (PROLOG, LISP)

Оценка и диагноз

  • Есть русский перевод
  • Про агентов практически ничего
  • Рекомендуется углубленно изучающим отдельные методы ИИ



Тарасов В.Б. От многоагентных систем к интеллектуальным организациям. Философия, психология, информатика. Эдиториал. 2002


Искусственный интеллект. Современный подходИскусственный интеллект. Современный подход




Содержание

  • Архитектуры агентов и МАС
  • Взаимодействия между агентами в МАС
  • Организации
  • Моделирование деятельности агента
  • Коммуникации агентов
  • Проектирование
  • Применение в промышленности

Оценка и диагноз

  • На русском
  • Не для новичков, но для ценителей и патриотов
  • Рекомендуется фанатикам, романтикам и философам агентов, а также применяющим агентов в корпоративных системах



K. Binmore. Playing for Real: A Text on Game Theory. Oxford University Press, USA, 2007




Содержание

  • Глубокое понимание теории игр (формирование коалиций, ведение переговоров) и ее применений вместо рассмотрения отдельных доказательств

Оценка и диагноз

  • Написана простым и понятным английским языком ;)
  • Много картинок
  • Рекомендуется специалистам в области МАС



M. Ghallab, D. Nau, and P. Traverso. Automated Planning: Theory & Practice. Morgan Kaufmann, 2004.




Содержание

  • Классическое планирование
  • Неклассическое планирование
  • Эвристики и стратегии управления
  • Планирование с учетом времени и ресурсов
  • Планирование в условиях неопределенности
  • Примеры использования и приложения

Оценка и диагноз

  • Написана простым и понятным английским языком ;)
  • Единственный и исчерпывающий труд в области планирования
  • По мультиагентному планированию, увы, написано мало
  • Рекомендуется специалистам по планирующим агентам

Заключение
Вот мы и обозрели наиболее доступную литературу.
Если вы считаете, что кого-то незаслуженно обошли, не включив в список, или наоборот, поместили по ошибке -- напишите.

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

Также по просьбе Максима из Сибирского Государственного университета
Путей Сообщения мы рассмотрим (и надеюсь, обсудим)
  • что такое агент и что такое НЕ агент (см. статью Что такое (интеллектуальные) агенты?);
  • что такое онтологии и зачем они нужны прагматичным разработчикам мультиагентных систем (в работе).
Оставайтесь на связи!

четверг, 22 ноября 2007 г.

Перепись читателей блога ;)

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

Потому, мне всегда было интересно узнать:
а) сколько нас, людей, интересующихся странным (т.е. агентами вместо зарабатывания денег ;) );
б) что конкретно вас интересует и какие возникают трудности.

Если будет возможность, пошлите пожалуйста e-mail с ответами на перечисленные ниже вопросы.
Информация не будет публиковаться или передаваться третьим лицам. Она умрет вместе со мной ;)
Не стесняйтесь чиркануть мне письмо даже через годы после публикации этого сообщения.

Далее приведены примерные вопросы и примеры вариантов ответов. Вопросы и варианты ответов не заданы жестко, представьте, что вы пишете сочинение, а это -- план ;)


ФИО

Место проживания (страна, область, край, город, можно привести географические координаты и номер комнаты ;) ).

Ваше место работы/учебы.
а) "младший научный сотрудник дошкольного возраста, работаю в детском саду № 478 Министерства атома РФ"
б) работаю в области агентов (бизнес)
в) преподаю в области агентов (наука)
г) веду исследования в области агентов (наука)
д) не нуждаюсь в деньгах и работе, могу стать "спонсором" исследований в области агентов

Как вы узнали об агентах?
а) от своей девушки,
б) от друзей, братвы, врагов, родственников
в) от Гугла
г) из желтой или иной прессы
д) от товарищей иностранного происхождения
е) увидел во сне, как Менделеев периодическую таблицу Менделеева
ж) я не хотел, меня заставили (научный руководитель(ница)/начальник(ница), старший по званию)



Интерес к области агентов
а) кратковременный (защитить курсовой/диплом/диссертацию и забыть как страшный сон)
б) прагматичный (хотел бы работать в области агентов, получая достойные деньги - з/п среднестатистического программиста из банка в вашем месте проживания (ССПИБВВМП) или чуть выше)
в) хотел бы работать в области агентов, получая НЕдостойные деньги (з/п, немного меньше, чем ССПИБВВМП, например меньше на 10%)
г) фанатичный (готов заниматься агентами за гроши)
д) нету. Я здесь случайно.

Поддерживаете ли вы связь (эээ… профессиональную связь) с зарубежными коллегами?
а) регулярно
б) иногда
в) нет

Глобальная область ваших интересов:
а) логистика
б) планирование на производстве
в) сфера развлечений (игры, adult и т.д.)
г) semantic web
д) обучение
е) или что-то другое…

Конкретная область ваших интересов?
(Пример: "Бехевиозиты: Манипулации поведением мультиагентной системы при помощи паразитических инфекций")

Какие конкретные вопросы в области агентов интересуют вас сейчас?
(Пример: "выразительность планов в BDI-системах", "что такое агент").

О чем бы вам хотелось прочесть в блоге? Какой информации вам не хватает? Замечания, предложения?
Контента пока еще мало, но я работаю над этим ;)
(Пример: "подобный тон обращения недопустим в приличном обществе!!!!!!!!!!!!!!")

Нужен ли веб-ресурс в рунете, посвященный целиком агентам? Нужны ли на ваш взгляд средства групповой работы и если да, то какие?
(Например, список рассылки, форум, вики, адресная книга заинтересованных в данной области специалистов)

среда, 7 ноября 2007 г.

Мультиагентная система vs агентная платформа

В чем различие?
Попытаюсь проиллюстрировать на примере различия агентной платформы (АП) и мультиагентной системы (МАС).

Как вы думаете, в чем различие между .NET Framework/Java/MFC и конечным приложением? Или между системой управления контентом (CMS) и конечным веб-сайтом? Все это -- middleware, то есть ПО промежуточного уровня (библиотеки, каркасы), находящееся между операционной системой и приложением.

Агентная платформа -- это middleware, которое реализует основные механизмы, обеспечивающие работу МАС и таким образом, облегчает построение агентных систем.

МАС работает "поверх" агентной платформы и использует ее сервисы.



Что ОНО могет?
Перечислим основные функции АП:
  • Взаимодействия агентов
  • Передача сообщений между агентами внутри платформы (на различных уровнях: на уровне сетевых пакетов, сообщений какого-либо языка общения, протоколов общения).
  • Передача сообщений между агентами разных платформ.
  • Поддержка онтологий
  • Управление агентами
  • Поиск агентов и данных о них внутри системы.
  • Управление жизненными циклами агентов.
  • Безопасность

В общем-то ЭТО ВСЕ! Большего среднестатистическая агентная платформа НЕ УМЕЕТ. Поэтому попытки понять "что такое агент и агентный подход" исходя только из агентной платформы мало что вам дадут. Это вроде попыток понять как сделать крутой вебсайт опираясь лишь на анализ возможностей какой-то конкретной CMS.

Ах, да! Организация FIPA (с 2005 года это 11 комитет IEEE) выпустила ряд стандартов на агентные платформы. Так что теоретически агентные системы могут быть переносимы между различными платформами, или, по-крайней мере, смогут взаимодействовать между собой.

Мозги в комплект не входят
--А где же интеллект? -- спросит меня пытливый читатель. -- Где же те самые машины вывода, планировщики, нейросети. Ну хотя бы завалящий конечный автомат?
--А нету, -- отвечу я ему. Точнее, они есть где-то там... но проектировать и реализовывать их придется вам самим. И никакая платформа вам в этом не поможет. Для агентной платформы JADE вы лучшем случае сможете найти FSM и BDI плагины. Но даже они вам мало помогут без солидной теоретической подготовки.

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

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

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

Адын, савсэм адын :(((((
С чем же сталкивается бедный разработчик, опрометчиво взявшийся за создание МАС?

Во-первых, это "внутренние мозги" агента. Как агент воспринимает информацию? Каким образом выбирает подходящие действия? Как он может обучаться на своем и чужом опыте?

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

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

Знание и эффект толпы
Чем бедные разработчики могут себе помочь или хотя бы облегчить свою участь?

Теоретическими системными знаниями: читайте стандарты, системные труды в области агентов, ИИ, теории игр.

Сообществом
: читайте статьи и технические отчеты, участвуйте в конференциях.

Практическими знаниями
: создавайте интересные агентные системы, для получения "устойчивого результата" разработки (в плане качества и затрат) посмотрите методологии разработки МАС.

четверг, 25 октября 2007 г.

С чего начать изучение агентов разработчику?

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



Для начала вооружимся двумя цитатами.
  • "Истинное знание -- знание причин" (Г. Галилей).
  • "Нет ничего практичнее хорошей теории" (Л. Больцман).

Вообще, вопрос оптимального сочетания теории и практики в обучении инженеров сам по себе отдельная интересная тема. Любопытствующим могу порекомендовать (Parnas et al., 2002).

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

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

Понятно, что если вы пишете очередную CMS или собираете корпоративную систему из готовых компонентов, эти вопросы вас не сильно волнуют. За вас уже практически все продумали. Дай бог, чтобы вы вообще хоть раз провели нормальное нагрузочное тестирование ;) Вообще, меня просто поражает, насколько современные технологии развращают прикладных программистов!

Однако, в таких областях, как обработка сигналов, разработка ИИ, computer science, data mining и им подобных такой трюк не проходит. Не проходит он и в инновационных областях информационных технологий. Но это уже не про нас (т.е. не про Россию). Надеюсь, что при моей жизни в России появится различимое невооруженным глазом число инновационных компаний, которые хоть что-то систематически тратят на научные исследования, а не только на PR.


Заканчиваю занудствовать ;) и перехожу к сути поднятого вопроса. Где же найти информацию о том, что такое агенты и чего они могут?

Хорошим и единственным системным трудом по агентам на русском языке является (Рассел и др., 2007). Однако, этот труд имеет некоторый уклон в ИИ и теорию.

Классикой в области агентов считается (Wooldridge, 2002). Эта книга также из серии "обо всем понемногу", но чуть более приближена к практике.

Я рекомендую прочесть их обе и полностью до начала любой разработки агентной системы. После прочтения вы будете иметь представление обо всех основных механизмах, лежащих в основе агентов и МАС. Будете знать, где найти дополнительную информацию.


Что же до практических знаний и навыков, то я настоятельно рекомендую изучить платформу JADE, как наиболее часто используемую в настоящее время. Под "изучить" я понимаю ознакомление с документацией и примерами. Также недавно вышла единственная книга по JADE (Bellifemine et al., 2007).

Вот собственно и все. Happy innovating, dudes!!! ;)



F.L. Bellifemine, G. Caire, и D. Greenwood. Developing Multi-Agent Systems with JADE. Wiley, 2007.

D.L. Parnas, P. Eng, и M. Soltys. "Basic Science for Software Developers," Dept. of Computing and Software, Faculty of Engineering, McMaster Univ., Hamilton, ON, Canada.[Online] Report, 2002.

M. Wooldridge. Introduction to MultiAgent Systems. Wiley, 2002.

С. Рассел и П. Норвиг, Искусственный интеллект. Современный подход. Вильямс, 2007.

вторник, 16 октября 2007 г.

Лекция 5. Стандарты FIPA. Агентная платформа JADE

Подготовлена лекция №5 по курсу "Мультиагентные интеллектуальные системы".

Часть 1. Стандарты FIPA (презентация FIPA в PDF на английском).
Часть 2. Агентная платформа JADE (презентация PowerPoint на русском).

Затеянный на прошлой лекции обзор основных направлений ИИ все еще не готов ;)

воскресенье, 14 октября 2007 г.

Куда пойти работать спецу по интеллектуальным агентам в России?

Некоторое время назад, при подготовке лекций, я заинтересовался этим вопросом. Мне, как преподавателю, конечно, не интересно работать «в песок»: когда студенты, прослушав курсы о мультиагентных системах, ПРОЛОГе и представлении знаний в одном из ведущих инженерных ВУЗов страны, идут затем писать SQL-запросы в банк.

Против банков или php/MySQL я ничего не имею, весьма полезные достижения человечества. Однако согласитесь, слова «банк» (а особенно «российский банк») и «инновации» сочетаются весьма плохо. Видимо, специфика деятельности заставляет их использовать только проверенные решения. Плюс недоразвитость российского рынка… Вот и получается, что даже услуги управления счетом через интернет предоставляют единицы.

Создание мультиагентных систем достаточно инновационная область разработки ПО. Можно сказать, передовое направление не только в разработке ПО, но и в искусственном интеллекте в целом. Посмотрим же, как обстоят дела с использованием агентов в бизнесе на Западе (см. табл).




Крупный бизнес на Западе


Название

Страна (город)

Профиль

IBM

США

Управление серверами

Rockwell Automation

США

Автоматизация производства

Motorola

США

Мобильная связь

Telecom Italia

Италия

Связь

British Telecom

Англия

Связь

NTT DoCoMo

Япония

Мобильная связь



Мелкий и средний бизнес на Западе


Название

Страна (город)

Профиль

Agentis

США (Атланта)

Корпоративные информационные системы

Agent Oriented Software Group

США, Англия, Австралия

BDI-система для военных и промышленных применений

Whitestein

Швейцария, Словакия, Германия

Логистика, телекоммуникации, финансы

Lost Wax

Англия (Ричмонд)

Электронная коммерция

Y'All

Голландия

Логистика

Savannah Simulations

Швейцария

Моделирование

MP Objects

Голландия, Германия, Лондон

Логистика

MASA-SCI

Франция, США, Сингапур

Моделирование

NewVectors

США

Логистика, моделирование , бизнес-анализ

21CSI

США

Поддержка принятия решений


И это далеко не полный список. В общем, можно сказать, что инновационный бизнес на Западе цветет и пахнет, и в настоящее время загибаться не собирается. Не смотря на спад после ажиотажа 2004-2005гг. Не смотря на безвременную кончину в 2005 году замечательного европейского проекта AgentLink, который пытался ускорить внедрение агентных технологий в промышленность.

Обратим теперь свой алчный взор на отсталую Россию (см. табл.).




Бизнес в России


Название

Страна (город)

Профиль

LUXOFT, R&D?

Россия (Москва)

Моделирование

НПК Генезис знаний

Россия (Самара)

Социальное моделирование и DataMining

Magenta Technology

Россия (Самара), Англия (Лондон), США

Логистика, решения для Web




Мда… не густо. Но и не все так печально, как могло бы быть. Из трех копаний две расположены в Самаре. Видимо, климат там подходящий для взращивания агентов ;)

О «НПК Генезис знаний» я не знаю практически ничего, кроме того, что они с 2003 по 2008 год пытаются внедрить агентов в администрацию Самарской области ;) а именно, мультиагентную систему управления регионом. Большой брат следит за вами ;) Подробнее можно посмотреть здесь http://www.elrussia.ru/files/39360/%D1%E0%EC%E0%F0%E0.html

«Magenta Technology» имеет штаб-квартиру в Лондоне, а центр разработки в Самаре. Один из первых их проектов – мультиагентная система управления перемещением нефтяных танкеров.

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

Единственное исключение – компания LUXOFT. Но они молчат как партизаны о своих секретных лабораториях, как корпорация Umbrella в Resident Evil ;) Единственное упоминание об их секретных разработках мне удалось найти на российском отраслевом портале индустрии компьютерных игр http://www.dtf.ru/person/info.php?id=1751 что само по себе весьма странно %)


Я буду рад ошибиться на счет Москвы, т.к. тема агентов в московском регионе волнует меня чрезвычайно ;)

  • Как человека, принимающего участие в подготовке кадров в области разработки агентов.

  • Как человека, ведущего R&D разработки в данной области.

  • Ну и просто как желающего трудоустроиться в данной области, если вдруг российская наука окончательно развалится ;)

Если у вас есть информация – обязательно свяжитесь со мной!