Вступление

Вся цель оптимизации - минимизировать функцию затрат. Мы узнаем больше об оптимизации в следующих разделах статьи.

Пакетный градиентный спуск

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

В основном преимущества, когда есть прямая траектория к минимуму, и у нее есть объективная оценка градиентов и фиксированная скорость обучения во время обучения. Недостаток, когда мы используем векторную реализацию, потому что нам приходится снова и снова проходить весь обучающий набор. Обучение происходит, когда мы просматриваем все данные, даже если некоторые примеры являются восстановительными и не вносят вклад в обновление.

Стохастический градиентный спуск

Здесь, в отличие от Branch Gradient Descent, мы обновляем параметры в каждом примере, поэтому обучение происходит на каждом примере. Таким образом, он сходится быстрее, чем пакетный градиентный спуск, потому что веса обновляются чаще. Здесь происходит множество колебаний, что приводит к более высокой дисперсии обновлений. Эти шумные обновления помогают находить новые и лучшие локальные минимумы. Из-за частых колебаний он будет постоянно выходить за пределы желаемых точных минимумов.

Давайте разберемся с градиентным спуском на примерах.

Пример 1

Узнаем: как мы достигнем точки минимальной стоимости.

Возьмем функцию стоимости f (x) и градиент df (x), указанные ниже.

Наша цель - найти минимальную стоимость. Итак, давайте продифференцируем и равняемся 0. Производная равна 2x + 1. Таким образом, минимум происходит при x = -0,5. Давайте разберемся в этом с помощью приведенных ниже графиков. Диапазон X взят от -3 до 3.

Мы можем построить кривую и производную. Здесь мы уже знаем, что двойная производная положительна. Теперь, используя градиентный спуск, мы можем запустить его минимум 500 раз, и если он достигнет минимума раньше 50 раз, он остановится.

На приведенных ниже рисунках видно, как очки движутся к минимальной стоимости, поскольку мы начали с x = -1 / 2, мы получили минимальную стоимость. Поскольку мы начали с x = 3, а скорость обучения была 0, мы запросили точность 0,0001. На последнем рисунке мы можем увидеть градиентный спуск крупным планом.

Пример 2

Узнаем: что произойдет, если будет более одного минимума.

Узнаем: важна ли отправная точка?

Узнаем: имеет ли значение скорость обучения?

Узнаем: ограничение градиентного спуска.

Возьмем функцию стоимости f (x) и градиент df (x), указанные ниже.

Наша цель - найти минимальную стоимость. Давайте разберемся в этом с помощью приведенных ниже графиков. Диапазон X взят от -2 до 2.

Как видно из рисунка выше, у нас есть два минимума для функции стоимости. Наклон функции стоимости равен нулю в 3 точках.

Важна ли начальная точка для потомка градиента?

да. На графиках ниже показано, что мы приближаемся к разным минимумам в зависимости от начальной позиции. Теперь давайте начнем с x = 1. Мы видим, что мы подошли к правому минимуму.

Теперь давайте начнем с x = -1. Мы видим, что мы подошли к левым минимумам.

По приведенным выше рисункам мы можем ясно сказать, что начальная позиция, которую мы начинаем, определяет минимумы, к которым мы сходимся. Когда мы внимательно смотрим на вышеизложенное, мы видим, что наклон равен нулю в 3 точках. Когда мы начинаем с X = 0, мы видим, что останавливаемся на первой итерации, поскольку наклон при X = 0 равен 0, но на самом деле это не минимум.

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

Важна ли скорость обучения для потомка градиента?

Я сделал картинку, чтобы объяснить влияние скорости обучения на подход градиентного спуска. Изображение объясняет, что происходит при разной скорости обучения.

Розовая линия соответствует самой высокой скорости обучения, зеленая - самой низкой скорости обучения, а синяя - промежуточной между розовой и зеленой скоростью обучения. Из приведенного ниже графика видно, что высокая скорость обучения сходится быстро, тогда как низкая скорость обучения сходится очень медленно.

Градиентный спуск с нейронной сетью