воскресенье, 3 мая 2009 г.

Новый "сайт по агентам и не только" открылся

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

Этот тренд замечательно охарактеризовал Филип К. Дик: в романе "Убик" у него окружающий мир медленно превращается в дерьмо :)


Но не все в нашем мире становится со временем только хуже. Вокруг кризис, а мы -- развиваемся. Агентам после Нового Года вдруг стало тесно в формате блога, поэтому мы открываем специализированный транс-национальный мега-портал :) по агентам на основе технологии wiki.

Прошу любить и жаловать:

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

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

Планируются 3 основных раздела:
  • Информация по агентам -- собственные оригинальные материалы на русском: от основ агентного подхода и до объяснения самых современных методов.
  • Наше образование -- материалы курсов по агентам, ИИ и разработке ПО.
  • Наши проекты -- информация о ведущихся проектах и разработках.


Ups! I did it again! :)

понедельник, 27 апреля 2009 г.

Болезни российских публикаций по агентам

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

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

Определенец
Типичный симптом данного заболевания – подмена существующего понятия "агент" своим собственным определением. Обычно в тексте это выглядит так: «понятие агента до сих пор четко не определено, поэтому я [Вася Пупкин из деревни Гадюкино] придумал свое собственное определение [а все эти ваши Хоары, Норвиги, Вулдриджи тут и рядом не стояли]».

Агентом часто считают какой-либо из решателей задач: классический планировщик, машину вывода Prolog, простейший алгоритм поиска и т.д.

Тут моя въедливая и склочная вторая субличность обычно ехидно замечает, что, мол, раз он, автор, считает, что:


Г-жа Новодворская, 24.09.04 (фотожаба?).


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

Тем более что определения есть. Все-таки, прошло более 10-ти лет достаточно интенсивных исследований в области агентов (а по некоторым источникам -- даже 20-ти лет)…

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



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

Скромнее надо быть, голубчики мои, скромнее! Тут надо понимать, что западные коллеги все легкодоступное золотишко с поверхности уже подсобрали. За столько-то лет... Вглубь нужно копать, дорогие мои, вглубь.

Г-н Х. Колумб с друзьями несут свет истины голым туземцам-американцам.


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


Матросы революции. Кадр из х/ф "Адмиралъ".


В результате, мы, как правило, получаем нулевую научную ценность такой весьма поверхностной работы. Конечно, по мировым меркам.

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

Посему, пострадавшему рекомендуется ознакомиться со свежей зарубежной периодикой по применению агентов в его области. В качестве вакцины.
  • Google Scholar самый крупный поисковик отдельных научных статей.
  • Плюс профильные журналы ведущих издательств: ACM, IEEE, Springer, Kluwer и т.д. по списку доступа вашего ВУЗа.
  • А также материалы профильных конференций.

пятница, 27 марта 2009 г.

Психоистория или математическая история?

Давеча присутствовал на докладе г-на Малинецкого (зам. директора по научной работе НИИ им. Келдыша) и спешу поделиться впечатлениями.


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

Интернет, конечно, уравнивает в правах блондинку и академика... все они могут "вещать". На тему кризиса, сисек-писек-фишек... Но в этом блоге досужей болтовне не место. Только адекватная и более-менее объективная информация.

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

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


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

АкадемияАкадемия на краю гибелиТранторианская империя

Не хватает только роботов. Но и они уже на подходе :)

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

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

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

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

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

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

В обществе царит материализм, индивидуализм и наблюдается полное отсутствие энтузиастов и мечтателей.

В науке и технике сейчас поколение тех, кому за 60. Достойной смены для них нет.

При обсуждении вариантов дальнейшего развития был приведен пример со сценарием восстановления Южной Кореи тоталитарными методами, как один из возможных. Страну победившей коррупции за несколько лет грамотного управления "довели" до такого состояния, что люди в очереди выстраивались, чтобы отдать свои фамильные драгоценности и помочь родной стране!

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

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

Как думаете, куда я попал:
  • В чей-то ночной кошмар?
  • В фантастический мир?
  • Или это все-таки реальность?


ЗЫ. Антиправительственных и революционных идей высказано не было.

вторник, 10 марта 2009 г.

Агенты, объекты, реализация

На уровне реализации агент - это обычно объект или функция, или программа, которая:

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

Чаще всего, разработчиков агентов не волнует, как именно это реализовано.

Как происходит передача сообщений между агентами? Можно использовать push или pull... можно устроить p2p обмен пакетами или через центральный узел...

Как реализовано выделение агенту процессорного времени? Можно жестко выделить на каждого агента поток, можно завести в менеджере пул потоков и выделять процессорное время агентам по очереди.

Как агент получает информацию о событиях среды и передает в среду действия? А Бог его знает


Сложность построения агентной системы НЕ В ЭТОМ! Спецы по агентам считают, что весь этот функционал у них уже есть.

Агенты - это более высокий уровень абстракции. Нельзя однозначно приравнять агента и объект. Агентами можно считать взаимодействующие daemon'ы в unix, написанные на чисто процедурном языке. И веб-сервисы с прикрученным интеллектом. И отдельные "умные" потоки в программе. И семейку роботов-терминаторов, продающих людей на органы.

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

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

Однако, теоретические модели, методы, средства агентного подхода никак не связаны с объектно-ориентированным программированием.

вторник, 3 марта 2009 г.

Машина мыслить... может!

От людей, не работающих в области ИИ, я часто слышу такие слова:

"Машина основывается на имеющихся данных и только. Пусть количество этих данных будет великО, а качество -- сложнО...

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

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

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


Ах, да! Еще вы можете кусочки чужих решений всовывать в свои решения :) Прямо как в LEGO!

Если это ваш идеал (как разработчика) -- не стоит читать остаток статьи. Не тратьте время, не тревожьте душу! Ступайте и плодите такой софт себе на здоровье! Кришна вам в помощь.

А с оставшимися мы продолжим дальше.


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


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

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

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

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


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

Бот может перестраивать последовательности действий по убиению врагов в зависимости от их действий.

Или разбивать целое на подзадачи.

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


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

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

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


А затем появились агенты и все стало еще веселее :)