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

Страница Википедии для обратного распространения имеет следующее утверждение:

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

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

1 ответ

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам