[Метод градиентного спуска], я понял!

машинное обучение
[Метод градиентного спуска], я понял!

«Это первый день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."

Сначала представь сцену со мной ?

Есть человек ?‍?, который застрял на горе и хочет спуститься с горы (нужно найти самую низкую точку горы, то есть долину). Однако в это время туман на горе был очень густым, что привело к плохой видимости. Поэтому путь вниз с горы определить невозможно, и он должен использовать информацию вокруг себя, чтобы найти путь вниз с горы и идти шаг за шагом ?.

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

☝ Это интуитивное понимание градиентного спуска.

Видно, что ядро ​​плавного спуска лежит вНайдите самое крутое направление в вашем текущем местоположениииОпределение количества шагов. В градиентном спуске эти две переменные имеют более причудливые имена:градиентиразмер шага.

Далее, позволь мне изучить тебя~?

Концепции и алгоритмы

Основной процесс градиентного спуска очень похож на сцену спуска с горы.

Во-первых, у нас есть дифференцируемая функция, представляющая гору. Наша цель — найти минимум этой функции, который является основанием горы. Согласно предположению предыдущего сценария, самый быстрый способ спуститься с горы — это найти самое крутое направление текущего положения, а затем спуститься в этом направлении, соответствующем функции, то есть найти градиент заданной точки, а затем двигайтесь в направлении, противоположном градиенту (Хотите знать, почему в противоположном направлении? Тогда оглянитесь назад~), вы можете заставить значение функции падать быстрее всего! Достигнув следующей точки, мы неоднократно находим самое крутое положение (нахождение градиента) и, наконец, достигаем локального минимума.

Это похоже на то, как мы спускаемся с горы. И нахождение градиента определяет самое крутое направление, которое является средством измерения направления в сцене.

1. Градиент

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

Как рассчитать градиент?

single-variable

одна переменная, вы можете напрямую вывести переменную, а полученный градиент является функцией положения, то есть каждое положение соответствует градиенту.

muti-variable

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

Нам нужно достичь подножия горы, и нам нужно наблюдать за самым крутым местом в это время на каждом шагу, а уклон подсказывает нам это направление. Направление градиента - это направление, в котором функция возрастает быстрее всего в данной точке, тогдаПротивоположное направление градиента — это направление, в котором функция быстрее всего спускается в данной точке, что нам и нужно и объясняет, почему в формуле перед градиентом стоит знак минус.

Это итерационная формула. Смысл этой формулы:f(θ(k))f(\theta^{(k)})это оθ\thetaФункция , наша текущая позицияθk\theta^{k}точка, перейти от этой точки кf(θ(k))f(\theta^{(k)})Минимальная точка , то есть до подножия горы.

Итак, сначала нам нужно определить направление прогресса, то есть обратную сторону градиента, а затем сделать шаг расстояния, который равенн\eta, после этого шага вы достигаетеθ(k+1)\theta^{(k+1)}эта точка!

2. Размер шага

Размер шага, который представляет собой переменную, используемую для управления расстоянием, пройденным каждым шагом. Выбор размера шага часто очень важен в градиентном спуске! Размер шага не может быть слишком большим или слишком маленьким.Если он слишком маленький, это может привести к тому, что прогулка будет слишком медленной для достижения самой низкой точки.Если он слишком большой, это приведет к тому, что самая низкая точка будет пропущена!

Посмотри на мой каштан, предположим, функцияf(x)=x2f(x)=x^2, то итерационная формула

Ниже приведеныТо же начальное положение, та же цель спуска, разные размеры шаговситуация ?

3. Подробный алгоритм

Вход: целевая функцияf(θ)f(\theta), размер шаган\eta, точность расчетаϵ\epsilon;

вывод:f(θ)f(\theta)точка минимумаθ*\theta^*.

  • (1) Выберите начальное значениеθ(0)\theta^{(0)}, наборk=0k=0;
  • (2) Расчетf(θ(k))f(\theta^{(k)});
  • (3) Рассчитать градиентf(θ(k))\nabla f(\theta^{(k)});
  • (4) Используя итерационную формулуθ(k+1)=θ(k)нf(θ(k))\theta^{(k+1)}=\theta^{(k)}-\eta \nabla f(\theta^{(k)})выполнить обновление параметров;

еслиf(θ(k+1))f(θ(k))<ϵ||f(\theta^{(k+1)})-f(\theta^{(k)})||<\epsilon, прекратите итерацию, пустьθ*=θ(k+1)\theta^*=\theta^{(k+1)}, выведите результат.

  • (5) В противном случае пустьk=k+1k=k+1, повернуть (3).

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

Градиентный спуск для одномерных функций

单变量函数的梯度下降

Градиентный спуск для многомерных функций

多变量函数的梯度下降

Мы обнаружили, что она в основном близка к точке минимума функции

Для чего именно нужен градиентный спуск?

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

градиентный спускЭто найти значение независимой переменной, соответствующее минимальному значению функции (нижняя точка кривой соответствует значению x), и снова найти независимую переменную, а не значение функции ❕ Различное параметры алгоритма будут давать разные аппроксимирующие кривые, что также означает наличие разных ошибок. Градиентный спуск является наиболее часто используемым методом оптимизации функции потерь.Найти параметры, которые использует алгоритм для минимизации значения ошибки.

Семейство методов градиентного спуска

Концепция промывания мозгов:

  • Гипотетическая функция: В обучении с учителем функция, используемая для подгонки входных выборок.
  • Целевая функция/функция потерь/функция стоимости/функция ошибки: функция, используемая для измерения степени соответствия, чтобы оценить, насколько хорошо подходит модель. Минимизация функции потерь означает, что степень подгонки является наилучшей, а соответствующие параметры модели являются оптимальными параметрами.

Для простоты понимания,Возьмем в качестве примера линейную регрессию только с одной функцией., предполагая, что предполагаемая функция линейной регрессии (i=1,2,...m представляет количество выборок):

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

1. Пакетный градиентный спуск (BGD)

Пакетный градиентный спуск — наиболее часто используемая форма градиентного спуска.Использовать все образцы для обновления при обновлении параметров.

(1) Для функции потерьJ(θ0,θ1)J(θ_0,θ_1)Найдите частную производную (поставьтеx0(i)=1x_0^{(i)}=1):

(2) Параметры обновляются каждую итерацию:

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

преимущество

(1) Одна итерация предназначена для расчета всех выборок, в это время матрица может использоваться для работы,распараллеливать.
(2) Направление, определяемое всем набором данных, может лучше представлять выборку, чтобы быть более точным в направлении экстремального значения.Когда целевая функция является выпуклой функцией, она должна бытьполучить глобальный оптимум.

недостаток

Когда количество выборок велико, на каждой итерации необходимо вычислять градиент всех выборок,медленнее тренироваться.

2. Стохастический градиентный спуск (SGD)

В отличие от пакетного градиентного спуска, стохастический градиентный спускПараметры обновляются с одной выборкой за итерацию, что ускоряет обучение.

Предыдущие шаги метода стохастического градиентного спуска такие же, как и в методе градиентного спуска, и используется та же функция потерь.J(θ0,θ1)J(θ_0,θ_1)Найдите частную производную (поставьтеx0(i)=1x_0^{(i)}=1):

Разница в том, что ?Параметры обновляются каждую итерацию:

❗Из формулы видно, что здесь уже нет члена суммирования при обновлении, то есть для каждого шага итерации выбирается только одна выборка.

преимущество

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

недостаток

(1)Точность падает. Потому что метод стохастического градиентного спуска по-прежнему не может достичь линейной сходимости, даже когда целевая функция является сильно выпуклой функцией.
(2) может сходиться клокальный оптимум, потому что одна выборка не может отражать тенденцию всей выборки.
(3)Непросто реализовать параллельно.

3. Мини-пакетный градиентный спуск (MBGD)

Мини-пакетный градиентный спуск — это компромисс между стохастическим градиентным спуском и пакетным градиентным спуском, Идея такова:Обновите параметры с помощью выборок "batch_size" за итерацию. Общие настройкиbatch_size=10,Количество образцовm=1000. Конечно, по данным выборки значение этого batch_size можно скорректировать.

Соответствующая формула обновления:

преимущество

  (1) Благодаря матричным операциям оптимизация параметров нейронной сети для пакета за один раз ненамного медленнее, чем для отдельных данных.
   (2) Использование одной партии за раз может значительноУменьшите количество итераций, необходимых для сходимости, и может сделать сходящийся результат ближе к эффекту градиентного спуска.
   (3)Возможно распараллеливание.

недостаток

  (1) Неправильный выбор batch_size может вызвать некоторые проблемы.

использованная литература

Объясните глубокие вещи простым способом-Метод градиентного спуска и его реализация-Шестифутовая палатка

Краткое изложение градиентного спуска - Лю Цзяньпин Пинар