Технология автоматического дифференцирования в современных компьютерных системах устроена на основе графа вычислений. github.com www.braintools.ru Этот граф состоит из узлов, каждый из которых представляет собой операнд, полученный в результате определённой операции. www.braintools.ru В графе представлены связи между всеми узлами, которые участвовали в получении значения функции ошибки. www.braintools.ru
Основная идея алгоритма: www.braintools.ru
- Сначала вычисляется значение производной самого последнего операнда относительно значения функции ошибки. www.braintools.ru Для значения функции ошибки оно равно 1, так как это производная функции ошибки относительно самой себя. www.braintools.ru
- Далее это значение производной используется для вычисления производной операндов, которые участвовали в создании значения функции ошибки. www.braintools.ru Это происходит по цепному правилу. www.braintools.ru
- Далее алгоритм повторяется для родительских узлов, до тех пор, пока не будут обработаны все узлы в графе. www.braintools.ru
Существуют два типа дифференцирования: github.com
- Прямое. github.com Вычисляются производные всех вершин по всем входам, что может быть неэффективно. github.com
- Обратное. github.com Вычисляется производная выходной вершины по всем вершинам в обратном порядке, что требует меньше вычислений. github.com
Автоматическое дифференцирование используется, например, в машинном обучении, где оно применяется к исходным функциям определённого класса, заданным как многослойные нейронные сети с весами на связях в качестве параметров. www.mes-conference.ru