Программирование искусственного интеллекта в приложениях
Прочитал книгу М. Тима Джонса «Программирование искусственного интеллекта в приложениях», которая в оригинале называется «AI Application Programming». Оказалось, что это очень даже интересная книжка, посвященная так называемому «слабому искусственному интеллекту», то есть алгоритмам и технологиям, которые уже сейчас используют в приложениях.
Все описываемые алгоритмы очень хорошо объясняются. Сначала алгоритм описывается буквально на пальцах, затем строится блок-схема последовательности действий, после чего приводится пример одной или нескольких итераций алгоритма на конкретных данных. После этого идет пример законченной программы, использующей описываемый алгоритм. Причем кроме подробных комментариев в тексте программы, работа каждой функции объясняется словами. Программы написаны на языке C (не C++) и изначально рассчитаны на Unix, поэтому для компиляции под Windows придется использовать CygWin, или подправлять исходники, чтобы программа компилировалась без CygWin. После описания программы в конце каждой главы кратко описываются пути улучшения алгоритма и ссылки по данной теме на литературу и сайты в интернете.
Кратко опишу про какие технологии и алгоритмы рассказывается в этой книге и на каких примерах.
Содержательная часть начинается с алгоритма отжига для поиска глобальных экстремумов функции. В качестве примера рассматривается задача N ферзей, когда необходимо на шахматной доске размера N x N разместить N ферзей так, чтобы ни один из них не угрожал другому.
Затем идет глава, посвященная алгоритму кластеризации ART1, с помощью которого можно разделять данные на отдельные группы (кластеры) по принципу аналогии. Для примера используется программа для виртуального магазина, которая в зависимости от покупок предыдущих посетителей советует что купить следующим дополнительно к уже набранным товарам.
После этого описывается алгоритм муравья для нахождения кратчайшего пути. В качестве примера используется известная задача коммивояжера.
Кратко рассказывается про нейронные сети на примере обучения героя компьютерной игры тому как вести себя в зависимости от окружающей обстановки.
Рассматриваются основные понятия генетических алгоритмов. В качестве примера используется программа, которая по входным данным и результату функции должна угадать правильный порядок действий из ограниченного числа операций со стеком внутри функции.
Описывается моделирование искусственной жизни. Для примера используется программа, моделирующая поведение хищников и травоядных, причем по мере выполнения программы они изменяют свое поведение, чтобы как можно дольше остаться живыми. Здесь также используются простые нейронные сети.
Одна из глав называется «Введение в системы, основанные на правилах». В этой главе рассматривалась программа, использующая логический вывод из правил, описываемых в текстовом виде в специальном формате.
Еще одна глава посвящена нечеткой логике, с качестве примера здесь используется программа, имитирующая зарядку аккумуляторов в зависимости от напряжения на них и температуры самих аккумуляторов.
Следующая глава посвящена моделям (цепям) Маркова или моделям состояний. Программа, которая предлагается в качестве примера анализирует текст из входного файла на предмет того с какой вероятностью одно слово следует за другим, после чего создает случайные предложения, которые по стилю должны напоминать анализируемый текст.
Последняя глава из содержательной части посвящена так называемым агентам, или как у нас больше принято говорить — ботам. В качестве примера описывается программа, анализирующая новостные каналы по протоколу NNTP. В этой главе нет особо хитрых алгоритмов, здесь самым интересным может быть пример программы для работы с протоколами NNTP и HTTP через сокеты, причем сокеты используются и в качестве клиента, и в качестве сервера.
Как я уже говорил книжка очень интересная, все, что там описывается, написано понятным языком. Основной недостаток книги — ее объем, всего 300 страниц, и это при том, что про одни только нейронные сети встречаются талмуды под тысячу страниц. Правда, это немного компенсируется ссылками на сайты (разумеется, англоязычные) и говорится в какую сторону можно копать дальше. Кроме того в первых главах были непонятки с примерами, на которых объяснялись алгоритмы до программы, не то я что-то не так понял, не то в них были ошибки. Да и обидно за опечатки, когда в программе вместо — пишут ==.
А еще обидно за то, что эта книга вышла аж в 2006 году тиражом всего 1000 экземпляров, но она еще до сих пор лежит в некоторых книжных магазинах. Хотя, если честно, я бы на нее тоже не обратил внимания, если бы не увидел на обложке родные моему сердцу генетические алгоритмы. 🙂
Итого, я бы книге поставил твердую 5, как говорится must read.
PS. В книге перед каждым примером пишут, что исходные тексты можно скачать с сайта издательства «ДМК Пресс» www.dmk.ru, но сейчас сайт издательства переехал по адресу www.dmk-press.ru, поэтому исходники можно скачать с этой страницы.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Я вот новичок в этом деле… Мне можно прочесть? Или я не пойму ничего??
3 августа 2008, 1:17 ппШтерн
3 августа 2008, 1:22 ппДумаю, что стоит почитать. Написано там все очень доходчиво.
Jenyay’s blog » Blog Archive » Нейрокомпьютеры:
[…] кноги Тима Джонса, про которую я недавно писал, захотелось почитать что-то подобное про […]
28 сентября 2008, 9:00 ппГде можно скачать книгу ??? Купить не реально…
25 января 2009, 6:32 ппdidico,
Где можно скачать на русском языке я не знаю (не видел), наверное лучше поискать на английском языке, хотя на первых страницах гугла попадаются одни битые ссылки. Хотя эта ссылка вроде рабочая.
25 января 2009, 6:54 ппЗадачу о ферзях мы на первом курсе решали. Это простая классическая задача. А нейронные сети, даже сегодня остаються академической забавой 🙂
12 апреля 2009, 3:59 пп> Задачу о ферзях мы на первом курсе решали. Это простая классическая задача.
Ага, но на ней хорошо показывать разные алгоритмы.
> нейронные сети, даже сегодня остаються академической забавой 🙂
В общем-то, практическое использование у них есть, но чаще всего можно найти более качественный алгоритм под конкретную задачу. Ведь по сути НС без обратных связей — это обычная аппроксимация функции.
12 апреля 2009, 9:19 ппДайте прямую ссылочку где ее можно скачать. А то читать в бумажном виде, лично мне, не удобно. Да и тратить деньги не хочется. Да уж такой я курвесный. А судя по вашему резюме книга как раз для новичков.
20 марта 2010, 12:15 ппМне всегда было интересно, в играх типа Age of Emperies тоже применяется искусственный интеллект, или там просто формальная логика действий?
14 мая 2011, 12:44 ппФормально, из-за того, что настоящий искусственный интеллект не изобрели, то формальная логика есть во всех этих алгоритмах.
17 мая 2011, 7:08 дп