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

Таким образом, обучение модели в основном решает это уравнение:

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

Все это основано на простом правиле цепочки дифференцирования:

Например, у нас есть простая функция с 2 узлами (операция):

Допустим, у нас есть 3 переменные x = -2, y = 5, z = -4, результат будет f = -12, а наша цель для обучения - -13. Простая потеря = f-цель = 1.

Теперь нам нужно распространить нашу ошибку (1) обратно на x, y, z. Для этого нам потребуется вычислить частные производные для каждой функции (операции):

И наша цепочка:

Давайте создадим простой пример Autograd

Здесь мы построим простой пример автоматического дифференцирования из приведенных выше формул.

Теперь посмотрим, что будет

Проверка с помощью PyTorch Autograd

Как видите, мы получили те же градиенты, что и в нашем простом решении Autograd.

Построим нейронные сети и решим 2 простые задачи.

Для простоты мы не будем использовать здесь Autograd и будем решать производную для каждого слоя.

Запуск простой точечной интерполяции

Классификация MNIST с помощью нашей настраиваемой сети

Теперь давайте решим некоторую задачу классификации набора данных MNIST. Мы будем использовать некоторые утилиты PyTorch, чтобы упростить задачу.

И это все. Не забывайте, что вы можете запустить этот код в Google Colab

Служба поддержки

Станьте покровителем и поддержите наше сообщество, чтобы оно делало больше интересных статей и руководств

Хотите стать экспертом в области компьютерного зрения и обнаружения объектов?

Подпишитесь на новый практический курс