Опечатки в книге Саймона Хайкина "Нейронные сети: полный курс"
Свежепереведенный фундаментальный учебник С.Хайкина (переведено второе
американское издание 1999г) вполне претендует на звание события 2006 года в
российской литературе по нейроинформатике. Но нужно отметить, что перевод хоть и
выполнен без явных ляпов, но подстрочные примечания-комментарии переводчиков
не помешали бы для уточнения терминологии (поскольку одно и то же может
называться в нейроинформатике, статистике и идентификации систем разными
словами, то нужно или сводить термины к одной области, или давать списки
синонимов - не все же читатели будут обладать широким кругозором). Комментарии
могли бы отразить и прогресс в области нейронных сетей, произошедший с момента
опубликования англоязычного оригинала.
Итак, список замечаний, исправлений, опечаток в книге: С.Хайкин
"Нейронные сети: полный курс"
С.220 п.1 последнее предложение. Непонятна "биологическая мотивированность"
логистической функции.
С.221 первый абзац. Ссылка на [458] может быть неверна.
С.222 последний абзац, С.223 подпись к рис.4.1. Достаточно "странная"
фраза: "архитектурный граф". Аналогичное замечание и для рис.4.8 на С.245.
В русскоязычной нейроинформатике обычно пользуются термином "структура" вместо
"архитектура", хотя это м.б. только субъективное впечатление.
С.223 п.1. Оборвано последнее предложение.
С.223 п.2. Лучше не считать, что нейрон вычисляет сигнал ошибки на основе
функции ошибки (т.е. жестко не привязывать целевую функцию к нейрону последнего
слоя, как написано в книге), а содержательно разнести эти два объекта.
Т.е. лучше думать, что сигнал ошибки поступает на выход сети от внешнего учителя
(учитель получает маркировку (эталонные значения) для соответствующих
наборов данных, поступающих на вход сети, и оценивает рассогласование между
выходом нейронной сети и
предписанным значением (эталоном)).
С.224 п.2. Никакой "оценки" нет, вычисляются именно точные
(аналитически) значения производных (компонент вектора градиента всей сети,
связанных с именно этим нейроном).
С.225 формула (4.2). Исходя из последнего абзаца перед Разделом 4.3
добавляем, что ||C||=mL=M.
C.226 Рис.4.3 и с.227 первый абзац. Изображается и описывается только
нейрон выходного слоя, т.к. в рисунок и формулы текста включен расчет ошибки
по формуле (4.1).
С.227 абзац после формулы (4.6). "Чувствительностью" обычно считаются
частные производные выходного сигнала (или сигналов - в этом случае вместо
вектора чувствительностей возникает матрица) по весам синапсов, а не
производные функции ошибки по весам синапсов (иначе бы и не стоило заменять
слово "градиент" на "чувствительность"). Далее на с.275, с.310-311 Хайкин как раз
это и пишет.
С.232 Рис.4.5. Неточно - потеряно домножение на φ'j(vj(n)),
нужное исходя из формулы (4.24) на пред.странице.
C.238 формула (4.42). Должно быть Eav(t), где
t обозначает номер эпохи (поскольку n относится к примеру выборки,
как указано в списке обозначений на с.224).
C.239 абзац 4. Повторяю: нет никакой "оценки" вектора градиента - и
последовательный, и пакетный режим вычисляют точный градиент для подвыборки или
всей выборки соответственно из одного или всех примеров.
С.240 первый абзац. Доказательство сходимости
алгоритма обратного распространения ошибки
есть, его Хайкин будет давать на с.277, сопоставляя
величину шага обучения с собственными числами матрицы Гессе. Но это только для
случая перехода от обучения с постоянным (или релаксирующим) шагом, т.е. метода
стохастической оптимизации, к обучению с выбором оптимального шага на каждой
эпохе пакетного обучения (т.е. при реализации именно метода наискорейшего спуска)
С.241 Рис.4.7. Граф неполный, включает в себя только расчет локальных
чувствительностей и не включает собственно вычисления производных
∂E/∂wij, т.е. обратный проход
нарисован не полностью.
C.243 формула (4.46). В нижней строке вместо второй δ должно стоять
w (нужно поменять только переменную, а индексы при ней правильны).
С.246 п.1. Никаких вычислительных проблем при расчете (опять же повторяем:
точном расчете, а не "оценке", как у Хайкина) якобиана в пакетном режиме на
сверхпредставительной (сверхизбыточной) выборке нет. Избыточность расчетов -
да, может присутствовать, когда градиент может быть хорошо оценен и по
относительно малой случайной подвыборке из большой исходной (дорасчет градиента
на остальных примерах выборки относительно мало изменит направление итогового
градиента по сравнению с градиентом представительной подвыборки), но это уже
другая проблема и другая задача оценки представительности выборки.
С.247 п.3. Надо "асимметричной" вместо "симметричной" (см. название рис.4.10
на с.249 - там правильно).
С.250 Рис.4.11. Правый верхний фрагмент неточный (нужно центрирование и по
оси х'1).
C.253 п.3. Лучше скорость обучения каждого нейрона выбирать методом [949] -
я и при рассмотрении Раздела 4.17 про это напомню.
С.318 критика метода Ньютона. Ну, можно взять псевдоньютон Яна ЛеКуна и Сью
Беккер, который быстро и точно считает diag(H), а обращение диагональной
матрицы тривиально. Естественно,
придется посчитать diag(H) именно методом ЛеКуна-Беккер, аппроксимация
H формулой (4.108) и взятие diag не подойдет.
С.318 предпоследний абзац, с.319 первый абзац (про непригодность квазиньютонов
для задач большой размерности и отсутствию альтернатив методу сопряженных
градиентов). Есть квазиньютоновские методы с ограниченной памятью, требующие
затрат памяти на хранение данных порядка O(w), см., например, книгу
Гилл, Мюррей, Райт "Практическая оптимизация", если вдруг в процитированных
Хайкиным учебниках по методам оптимизации про это не написано.
С.319 формула (4.124). s(n) надо транспонировать.
С.322 формула (4.130). Не понял первое вхождение в фигурных скобках.
С.322 формула (4.133). s(n-1) в числителе надо транспонировать.
С.327 таблица 4.8. Я бы выкинул шаг 4 и критерий останова, остановку (или
рестарт метода сопряженных градиентов) делал на шаге 3 при невозможности снизить
значение Eav методом выбора шага. А все потенциально опасные
(из-за малых норм векторов) места обернул бы при программировании в обработчики
исключительных ситуаций, чтобы не налететь на деление на нуль или переполнение.
Т.е. никаких констант, использующихся для проверок или завершения обучения, ни
пользователь, ни программист не должны вводить - кроме явного указания нужного
уровня Eav или нужного уровня ошибки обобщения (ну, или,
числа эпох обучения, чтобы никогда не заставлять пользователя ждать до второго
пришествия и останавливать обучение после разумного числа итераций). Плюс добавил
бы эмпирики более высокого уровня абстракции - для нахождения минимума ошибки
обобщения, если она на каждой эпохе обучения контролируется.
С.334 первый пункт списка. Неверно (по крайней мере, не так однозначно).
См. вот эту мою статью (pdf-файл, 216кб),
цитированные там недавние работы Мартинеза и ЛеКуна, да и в 1998г ЛеКун с
соавторами в статье "Efficient backprop" писали противоположное Хайкину.
Мой комментарий к главе: кошмар, новичок в нейронных сетях и
методах оптимизации даже после неоднократного прочтения главы и неоднократных
проб (целенаправленно или методом тыка) вряд ли правильно сможет запрограммировать
обучение нейронной сетиметодом обратного распространения ошибки.
По крайней мере, при рассмотрении только студентов
провинциальных технических ВУЗов готов спорить об этом с достаточно высокими
ставками. Изложение перемешало в кучу и необходимые, и малонужные вещи, не
расставив акцентов и переусложнив изложение (идя подходом "всё или ничего"
вместо пошагового дополнения процедур). Плюс много эмпирики. Почему бы не
изложить просто методику вычисления градиента сложной функции
(нейросеть плюс
целевая функция над ее выходом и, при необходимости, и над свойствами нейросети),
затем, как в Главе 6, отослать читаталей к методам градиентной оптимизации без
ограничений (в Главе 6 отсылка идет к методам квадратичного программирования),
и изложить несколько исторических примеров
правильных и неправильных подходов к использованию вычисляемого сетью градиента с
точки зрения теории градиентной оптимизации и максимизации скорости сходимости
(скорости обучения).
Что хотелось бы видеть в главе (или книге) дополнительно. Во-первых, отличные от метода
наименьших квадратов целевые функции, особенно для обучения сети-классификатора
(например, кросс-энтропийная функция). Во-вторых, более четкое выделение
возможности иметь состоящую из нескольких слагаемых целевую функцию:
на примере регуляризации по Тихонову через явную минимизацию кроме собственно
значения ошибки еще и скалярного квадрата градиента выходных сигналов сети по
весам синапсов (совместные работы ЛеКуна и Дракера 1991-92гг), либо на примере
метода Flat minina search Хохрейтера и Шмидхубера, либо на примере метода
CLearning очистки входных сигналов сети Андреаса Вайгенда с соавторами. В
третьих, более детальное расписывание возможности вычисления вторых
производных в сети (указанные работы ЛеКуна и Дракера, методы,
перечисленных в обзоре [88]). В четвертых, более детальное описание методов
вычисления информативности-полезности разных элементов и сигналов в сети (т.е.
определение информативности входов, возможности редукции не только синапсов
описанными в книге методами, но и редукции целых нейронов, да и для редукции
синапсов тоже есть куча других методов). В пятых - явное указание (читатели
ведь не сообразят сами) на возможность считать градиент и по входным
сигналам сети (для решения обратных задач на нейросетях, обученных решению прямой
задачи, для изложения метода CLearning). Плюс для этой и других глав, где
встает задача обучения с учителем, детальнее расписать идею кривых обучения
(см. мою заметку
на эту тему).