http://community.livejournal.com/chto_chitat/4052640.html
После кноги Тима Джонса, про которую я недавно писал, захотелось почитать что-то подобное про алгоритмы. Кроме того меня давно уже подбивало почитать поподробнее про нейронные сети. Где их я смогу применить для своих задач пока не знаю, но интересуют они меня давно.
И вот неожиданно попалась книга Л.Г. Комарцовой и А.В. Максимова в..Нейрокомпьютерыв.., изданная в МГТУ им. Баумана. Сначала, когда я взял в руки эту книжку в магазине, то не думал, что она меня заинтересует, предполагая по названию, что это будет что-то про реализаию персептронов в железе. Да и то, что книга предназначена для студентов сначала смутило, есть у меня одно предубеждение на счет институтских книжек, очень уж часто они оказываются слишком обобщенными и слишком теоретическими. После них остается какое-то странное ощущение, что вроде бы прочитал про описываемый предмет целую книгу, но как применить то, что там написано, непонятно.
К счастью, эта книжка оказалась приятным исключением. Все вопросы, которых касаются авторы, описаны очень доходчиво и подробно, приводятся много примеров. Готовых программ в этой книге нет, но зато каждый алгоритм описывается на псевдокоде. И я даже не ожидал, что эта книга будет во многих местах пересекаться с книгой Тима Джонса.
Начинается книга с того, что критикуется архитектура вычислительных систем фон Неймана в пользу параллельных архитектур, затем в качестве примера параллельной архитектуры приводится нейронная сеть, так как там нейроны могут работать параллельно и независимо друг от друга. Подробно описываются возможные реализации нейронов, их функции активации и различные топологии нейронных сетей, в том числе упоминаются и сети с обратными связями и двумерные нейронные сети.
Потом идет интересная глава, где для решения системы дифференциальных уравнений используется нейронная сеть, показано как с помощью разложения некоторых функций в ряд можно составлять топологии сетей для систем дифференциальных уравнений с разным количеством неизвестных. Возможно, такая задача для нейронных сетей все-равно, что забивание гвоздей микроскопом, но сама идея мне понравилась.
После этого начинаются главы, посвященные уже более привычным для нейронных сетей задач - распознавания и классификации объектов, а заодно и аппроксимации функции. Начинается все с нейронных сетей без обратных связей, п риводятся некоторые теоремы, касающиеся нейронных сетей и описываются алгоритмы обучения с учителем (а по сути методы оптимизации функции со многими переменными) - алгоритм обратного распространения ошибки, несколько градиентных методов обучения и кратко затрагивают неградиентные алгоритмы - метод Нелдера-Мида и метод случайного поиска. Здесь же приводятся некоторые соотношения, с помощью которых можно примерно выбрать количество нейронов в каждом слое, описывается проблема переобучения сети (до этого я даже не знал, что такая проблема существует) и рассказывается про алгоритмы, которые позволяют во время обучения изменять количество нейронов в каждом слое.
Отдельная глава посвящена генетическим алгоритмам, причем описывается все этапы алгоритма подробно, с возможными вариантами модификации. Здесь же упоминают различные способы кодирования решений, в том числе и код Грея, и описывают применение генетических алгоритмов к обучению нейронных сетей. В этой же главе алгоритм обучения, который использует одновременно генетический алгоритм и метод отжига, который тоже был описан в книге Тима Джонса.
Затем идет описание нейронных сетей с обратными связями. Начинается описание с однослойной сети Хопфилда с обратными связями, рассказывают про вероятностную сеть Больцмана, сеть Хемминга и некоторые другие. Приводятся примеры апроксимации двумерной функции при разной степени обучения.
Следующая глава посвящена сетям, предназначенным для разделения множества входных данных на классы и обучению сети без учителя. Здесь рассказывается про теорию адаптивного резонанса и алгоритм ART-1 - еще одно пересечение с Тимом Джонсом -, интересно было почитать про то, как тот же ал горитм используется для той же задачи, но реализуется в виде нейронной сети. Потом описываются еще некоторые типы нейронных сетей.
Отдельная глава посвящена нечеткой логике. Нечеткая логика опять же была и у Тима Джонса, но здесь уже она описывается с математической строгостью, вводятся все используемые операторы, их возможные реализации и грав\фичечкое представление. Тоже очень полезная глава. Затем описываются нейронные сети, которые используют нечеткую логику, и приводится алгоритм обучения нечеткого персептрона.
В отдельной главе описываются программы для эмуляции нейронных сетей. Эта глава, на мой взгляд, получилась самая неудачная из-за того, что описываются какие-то древние программы, в основном разработаные в самом МГТУ. Все-таки странно сейчас читать про то, что программа может работать с в..большими многомерными массивамив.., размер которых может быть до 64 КБ, а потом видеть скриншоты окон из Win 3.1x. Или при описании другой программы чита ть, что достаточно 486-й процессора, но лучше все-таки взять Pentium. Но в качестве примера того как можно организовать интерфейс или как организовать ввод и описание сетей, глава вполне сойдет, скриншотов там много.
А последняя глава посвящена элементной базе для построения нейронных сетей в железе. Здесь рассказывается про существующие микросхемы, особенно подробно про нашу Л1879ВМ1 (он же NeuroMatrix NM6403).
Итого, книжка на твердую 5 с минусом. Минус за главу с программами. Все-таки интересно было бы почитать, какие программы есть сейчас.Особенно хорошо эта книга читается после Тима Джонса про программирование искусственного интеллекта, потому что там он все алгоритмы описывает буквально на пальцах, а здесь они же описываются более строго и часто более подробно, с сбольшим количеством вариантов реализации.В общем, книга понравилась, не знаю буду ли я когда-нибудь использовать нейронные сети, но почитал про них с удовольствием.
Эта запись у меня в блоге | Оставить комментарий у меня в блоге
Читаем также
Шаг вперед и два назад