Обратное распространение и градиентный спуск — это два разных метода, которые образуют мощную комбинацию в процессе обучения нейронных сетей. Давайте попробуем интуитивно понять, как это работает.

Нейронные сети обучаются путем прямого распространения, используя веса, смещения и нелинейные функции активации для вычисления предсказания y` на основе входных данных x, которые должны как можно точнее соответствовать истинным выходным данным y. Функция стоимости количественно определяет разницу между выходом y и прогнозом y`. Существует несколько различных функций потерь, и какую из них вы выберете, зависит от типа проблемы машинного обучения, с которой вы сталкиваетесь.

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

Градиент = dC/dw

Вес w может не быть напрямую связан с функцией стоимости, поэтому нам нужно их дифференцировать через промежуточные функции, такие как функции активации. Таким образом, частные производные функции стоимости влияют на веса и погрешности конечной модели. В конечном итоге мы хотим найти минимальное значение функции стоимости.

Шаги для градиентного спуска

  1. Произвольно инициализируйте значения.
  2. Обновите значения веса.

3. Повторяйте до тех пор, пока наклон не станет равным 0.

Существуют различные типы алгоритмов градиентного спуска:

  1. Стохастический градиентный спуск. В процессе обучения модели мы используем только один конкретный пример из нашего набора данных на каждой итерации.
  2. Пакетный градиентный спуск. В процессе обучения модели мы оптимизируем функцию потерь, используя среднее значение всех отдельных потерь во всем нашем наборе данных. Это дорого в вычислительном отношении.
  3. Мини-пакетный градиентный спуск — он вычисляет градиенты на небольших наборах экземпляров, называемых мини-пакетами. Мини-пакетный градиентный спуск быстрее, чем пакетный градиентный спуск, поскольку для каждого шага обучения используется меньшее количество обучающих примеров.

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

Название «обратное распространение» буквально происходит от «распространения ошибок обратно в сеть». Путем распространения ошибок в обратном направлении по сети частная производная градиента последнего слоя (самого близкого слоя к выходному слою) используется для вычисления градиента второго слоя к последнему. Распространение ошибок по слоям и использование частной производной градиента от предыдущего слоя в текущем слое происходит до первого слоя, т.е. слоя, ближайшего к входному слою.