Привет всем, я пытался получить ANN, который я кодировал для работы с алгоритмом обратного распространения.Я прочитал несколько статей по ним, но я заметил несколько расхождений.
Здесь, кажется, супер общий формат алгоритма:
- Введите ввод
- Получить вывод
- Ошибка вычисления
- Расчет изменения веса
- Повторять шаги 3 и 4, пока мы не достигнем уровня ввода
Но вотпроблема: веса должны быть обновлены в какой-то момент, очевидно.Тем не менее, поскольку мы возвращаемся к распространению, нам нужно использовать веса предыдущих слоев (я имею в виду те, что ближе к выходному слою) при расчете ошибки для слоев, расположенных ближе к входному слою.Но мы уже рассчитали изменение веса слоев ближе к выходному слою!Итак, когда мы используем эти весовые коэффициенты для вычисления ошибки для слоев, расположенных ближе к входу, используем ли мы их старые значения или их «обновленные значения»?
Другими словами, если бы мы поставили шагобновления весов в моем супер общем алгоритме, это было бы:
(немедленное обновление весов)
- Дать ввод
- Получить вывод
- Ошибка вычисления
- Расчет изменения весов
- Обновление этих весов
- Повторяйте шаги 3,4,5, пока мы не достигнем уровня ввода
ИЛИ
(с использованием "старых" значений весов)
- Дать ввод
- Получить вывод
- Ошибка вычисления
- Рассчитать изменение в весах
- Сохраните эти изменения в матрице, но пока не изменяйте эти веса
- Повторяйте шаги 3, 4, 5, пока мы не достигнем уровня ввода
- Обновите все веса сразу, используя наши сохраненные значения
В эта статья, которую я прочитал , в обоих abstrДействующие примеры (основанные на рисунках 3.3 и 3.4) говорят, что они должны использовать старые значения, а не обновлять их немедленно.Тем не менее, в своем «рабочем примере 3.1» они используют новые значения (даже если они говорят, что они используют старые значения) для расчета ошибки скрытого слоя.
Кроме того, в моей книге«Введение в машинное обучение Этема Алпайдина», хотя есть много абстрактных вещей, которые я еще не понимаю, он говорит: «Обратите внимание, что изменение веса первого слоя delta-w_hj использует вес второго слоя v_hПоэтому мы должны рассчитать изменения в обоих слоях и обновить весовые коэффициенты первого уровня, используя значение old весовых коэффициентов второго уровня, а затем обновить весовые коэффициенты второго уровня. "
Если честно, похоже, что они только что допустили ошибку, и все веса обновляются одновременно в конце, но я хочу быть уверенным.Мой ANN дает мне странные результаты, и я хочу быть уверен, что это не причина.
Кто-нибудь знает?
Спасибо!