воскресенье, 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. Если у вас есть положительный (или отрицательный) опыт использования агентных платформ, поделитесь, пожалуйста, с нами!!!