Как обратное распространение такое же (или нет), как обратное автоматическое дифференцирование?
Страница Википедии для обратного распространения имеет следующее утверждение:
Алгоритм обратного распространения для вычисления градиента был повторно открыт несколько раз и является частным случаем более общего метода, называемого автоматическим дифференцированием в режиме обратного накопления.
Может кто-то объяснить это, выразить это с точки зрения непрофессионала? Какая функция дифференцируется? Что такое "особый случай"? Используются ли сами сопряженные значения или конечный градиент?
1 ответ
В обучении нейронной сети мы хотим найти набор весов w
это минимизирует ошибку E(N(w,x)-y)
, (x
это учебный вклад, y
это результат обучения, N
это сеть и E
какая-то функция ошибок).
Стандартный способ сделать такую оптимизацию, это градиентный спуск, который использует производную сети, N'
сказать. Мы могли бы представить сеть как матричный продукт и сделать это вручную с помощью матричного исчисления, но мы также можем написать (автоматические) алгоритмы.
Обратное распространение - это особый такой алгоритм, который имеет определенные преимущества. Например, он позволяет легко брать производную только по выбранной выборке весов, что необходимо для стохастического градиентного спуска. В нем также указывается, как сохраняется прямая связь (фактические сетевые значения), чтобы они были легко доступны для расчета необходимых производных.
Вы должны быть в состоянии найти точный код для конкретного алгоритма в учебниках, а также в Интернете.
"Какая функция дифференцируется? Что такое" особый случай "?"
Наиболее важное различие между обратным распространением и AD в обратном режиме состоит в том, что AD в обратном режиме вычисляет вектор-якобианов произведение векторной функции из R^n -> R^m, в то время как обратное распространение вычисляет градиент скалярной функции из R^n -> R. Обратное распространение, таким образом, является частным случаем AD в обратном режиме для скалярных функций.
Когда мы обучаем нейронные сети, у нас всегда есть скалярная функция потерь, поэтому мы всегда используем обратное распространение. Это дифференцируемая функция. Поскольку обратное распространение является подмножеством AD в обратном режиме, мы также используем AD в обратном режиме при обучении нейронной сети.
"Используются ли сами сопряженные значения или окончательный градиент?"
Сопряженная переменная - это градиент функции потерь по отношению к этой переменной. Когда мы проводим обучение нейронной сети, мы используем градиенты параметров (например, веса, смещения и т. Д.) Относительно потерь для обновления параметров. Таким образом, мы используем сопряжения, но только сопряжения параметров (которые эквивалентны градиенту параметров).