Программирование искусственного интеллекта в приложениях

AI_book.jpg

Прочитал книгу М. Тима Джонса «Программирование искусственного интеллекта в приложениях», которая в оригинале называется «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.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 13, средняя оценка: 4,92)
Загрузка...

комментариев 10

  1. Штерн:

    Я вот новичок в этом деле… Мне можно прочесть? Или я не пойму ничего??

  2. Jenyay:

    Штерн
    Думаю, что стоит почитать. Написано там все очень доходчиво.

  3. Jenyay’s blog » Blog Archive » Нейрокомпьютеры:

    […] кноги Тима Джонса, про которую я недавно писал, захотелось почитать что-то подобное про […]

  4. didico:

    Где можно скачать книгу ??? Купить не реально…

  5. Jenyay:

    didico,

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

  6. Историк:

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

  7. Jenyay:

    > Задачу о ферзях мы на первом курсе решали. Это простая классическая задача.

    Ага, но на ней хорошо показывать разные алгоритмы.

    > нейронные сети, даже сегодня остаються академической забавой 🙂

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

  8. Громкоговоритель:

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

  9. Владимир:

    Мне всегда было интересно, в играх типа Age of Emperies тоже применяется искусственный интеллект, или там просто формальная логика действий?

  10. Jenyay:

    Формально, из-за того, что настоящий искусственный интеллект не изобрели, то формальная логика есть во всех этих алгоритмах.

Leave a comment

Subscribe without commenting