как обратное распространение совпадает (или нет) с обратным автоматическим дифференцированием?

На странице Википедии, посвященной обратному распространению, есть следующее утверждение:

Алгоритм обратного распространения для вычисления градиента неоднократно открывался заново и является частным случаем более общего метода, называемого автоматическим дифференцированием в режиме обратного накопления.

Может ли кто-нибудь объяснить это, по-человечески? Какая функция дифференцируется? Что такое "особый случай"? Используются ли сами сопряженные значения или окончательный градиент?


person Brannon    schedule 06.05.2014    source источник


Ответы (2)


"Какая функция дифференцируется? Что такое "особый случай"?"

Наиболее важное различие между обратным распространением и AD обратного режима заключается в том, что AD обратного режима вычисляет векторно-якобианское произведение векторной функции из R ^ n -> R ^ m, а обратное распространение вычисляет градиент скалярной функции из R ^ n -> R. Таким образом, обратное распространение является частным случаем AD обратного режима для скалярных функций.

Когда мы обучаем нейронные сети, у нас всегда есть скалярная функция потерь, поэтому мы всегда используем обратное распространение ошибки. Это дифференцируемая функция. Поскольку обратное распространение является подмножеством AD обратного режима, мы также используем AD обратного режима при обучении нейронной сети.

"Используются ли сами присоединенные значения или окончательный градиент?"

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

person Nick McGreivy    schedule 28.01.2020

В обучении нейронной сети мы хотим найти набор весов w, который минимизирует ошибку E(N(w,x)-y). (x — входные данные обучения, y — выходные данные обучения, N — сеть, а E — некоторая функция ошибок).

Стандартный способ сделать подобную оптимизацию — это градиентный спуск, который использует производную сети, скажем, N'. Мы могли бы представить сеть в виде матричного произведения и сделать это вручную с помощью матричного исчисления, но мы также можем написать (автоматические) алгоритмы.

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

Вы должны быть в состоянии найти точный код для конкретного алгоритма в учебниках, а также в Интернете.

person Thomas Ahle    schedule 21.05.2014