Backpropagation
Chain rule — взятие производной сложной функции:
Алгоритм:
- Выполняется прямой проход, вычисляются все промежуточные значения функций (от слоя к слою), промежуточные значения сохраняются.
-
Выполняется обратный проход, вычисляются частные производные функции потерь по параметрам в каждом слое. Производная на выходном (n) слое будет простой, а при взятии частной производной по параметрам предыдущего слоя (n-1), мы получим производную сложной функции, часть которой будет уже вычисленной производной выходного (n) слоя. Так мы идем от последнего слоя к первому, дифференцируя лосс по параметрам на каждом слое и сохраняя эти вычисленные производные для вычисления производных в следующих слоях.
Высчитываем производную в узле (производная функции ошибки по выходу узла) далее эту производную используем для вычисления градиента по параметрам слоя (частные производные функции ошибки по параметрам) и для вычисления производных по входам узла (передача градиента для последующего вычисления градиентов параметров), далее повторяем со следующим слоем (чат с chatgpt про пример backpropagation) - Обновляем параметры с помощью вычисленных градиентов:
Матричное вычисление градиентов в бекпроп: