«Это первый день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
Сначала представь сцену со мной ?
Есть человек ??, который застрял на горе и хочет спуститься с горы (нужно найти самую низкую точку горы, то есть долину). Однако в это время туман на горе был очень густым, что привело к плохой видимости. Поэтому путь вниз с горы определить невозможно, и он должен использовать информацию вокруг себя, чтобы найти путь вниз с горы и идти шаг за шагом ?.
? В этот момент он может использовать алгоритм градиентного спуска, чтобы помочь себе спуститься с горы. Конкретно, каждый раз, когда он шел, он шел, чтобы найти самое крутое место в позиции, затем делал небольшой шаг, а затем на новой позиции, он продолжал находить самое крутое направление, а затем делал шаг вниз, просто маленький шаг. , Сделав небольшой шаг, можно плавно дойти до подножия горы?.
☝ Это интуитивное понимание градиентного спуска.
Видно, что ядро плавного спуска лежит вНайдите самое крутое направление в вашем текущем местоположениииОпределение количества шагов. В градиентном спуске эти две переменные имеют более причудливые имена:градиентиразмер шага.
Далее, позволь мне изучить тебя~?
Концепции и алгоритмы
Основной процесс градиентного спуска очень похож на сцену спуска с горы.
Во-первых, у нас есть дифференцируемая функция, представляющая гору. Наша цель — найти минимум этой функции, который является основанием горы. Согласно предположению предыдущего сценария, самый быстрый способ спуститься с горы — это найти самое крутое направление текущего положения, а затем спуститься в этом направлении, соответствующем функции, то есть найти градиент заданной точки, а затем двигайтесь в направлении, противоположном градиенту (Хотите знать, почему в противоположном направлении? Тогда оглянитесь назад~), вы можете заставить значение функции падать быстрее всего! Достигнув следующей точки, мы неоднократно находим самое крутое положение (нахождение градиента) и, наконец, достигаем локального минимума.
Это похоже на то, как мы спускаемся с горы. И нахождение градиента определяет самое крутое направление, которое является средством измерения направления в сцене.
1. Градиент
градиент, максимальная скорость изменения может быть получена в этом направлении, а направление текущей позиции является самым крутым при разговоре.
Как рассчитать градиент?
одна переменная, вы можете напрямую вывести переменную, а полученный градиент является функцией положения, то есть каждое положение соответствует градиенту.
многомерный, затем возьмите частные производные для каждой переменной отдельно, а затем объедините их вместе, чтобы получить многомерный вектор.
Нам нужно достичь подножия горы, и нам нужно наблюдать за самым крутым местом в это время на каждом шагу, а уклон подсказывает нам это направление. Направление градиента - это направление, в котором функция возрастает быстрее всего в данной точке, тогдаПротивоположное направление градиента — это направление, в котором функция быстрее всего спускается в данной точке, что нам и нужно и объясняет, почему в формуле перед градиентом стоит знак минус.
Это итерационная формула. Смысл этой формулы:это оФункция , наша текущая позицияточка, перейти от этой точки кМинимальная точка , то есть до подножия горы.
Итак, сначала нам нужно определить направление прогресса, то есть обратную сторону градиента, а затем сделать шаг расстояния, который равен, после этого шага вы достигаетеэта точка!
2. Размер шага
Размер шага, который представляет собой переменную, используемую для управления расстоянием, пройденным каждым шагом. Выбор размера шага часто очень важен в градиентном спуске! Размер шага не может быть слишком большим или слишком маленьким.Если он слишком маленький, это может привести к тому, что прогулка будет слишком медленной для достижения самой низкой точки.Если он слишком большой, это приведет к тому, что самая низкая точка будет пропущена!
Посмотри на мой каштан, предположим, функция, то итерационная формула
Ниже приведеныТо же начальное положение, та же цель спуска, разные размеры шаговситуация ?
3. Подробный алгоритм
Вход: целевая функция, размер шага, точность расчета;
вывод:точка минимума.
- (1) Выберите начальное значение, набор;
- (2) Расчет;
- (3) Рассчитать градиент;
- (4) Используя итерационную формулувыполнить обновление параметров;
если, прекратите итерацию, пусть, выведите результат.
- (5) В противном случае пусть, повернуть (3).
То есть продолжайте итерацию и обновление параметров до тех пор, пока не будет выполнено условие завершения.
Градиентный спуск для одномерных функций
Градиентный спуск для многомерных функций
Мы обнаружили, что она в основном близка к точке минимума функции
Для чего именно нужен градиентный спуск?
В машинном обучении, нейронных сетях и различных задачах математического моделирования вы всегда видите функцию потерь/функцию стоимости/функцию ошибки?
градиентный спускЭто найти значение независимой переменной, соответствующее минимальному значению функции (нижняя точка кривой соответствует значению x), и снова найти независимую переменную, а не значение функции ❕ Различное параметры алгоритма будут давать разные аппроксимирующие кривые, что также означает наличие разных ошибок. Градиентный спуск является наиболее часто используемым методом оптимизации функции потерь.Найти параметры, которые использует алгоритм для минимизации значения ошибки.
Семейство методов градиентного спуска
Концепция промывания мозгов:
- Гипотетическая функция: В обучении с учителем функция, используемая для подгонки входных выборок.
- Целевая функция/функция потерь/функция стоимости/функция ошибки: функция, используемая для измерения степени соответствия, чтобы оценить, насколько хорошо подходит модель. Минимизация функции потерь означает, что степень подгонки является наилучшей, а соответствующие параметры модели являются оптимальными параметрами.
Для простоты понимания,Возьмем в качестве примера линейную регрессию только с одной функцией., предполагая, что предполагаемая функция линейной регрессии (i=1,2,...m представляет количество выборок):
В линейной регрессии функция потерь обычно представляет собой квадрат разницы между выходными данными выборки и функцией гипотезы. Следовательно, соответствующая функция потерь среднеквадратичной ошибки здесь имеет вид:
1. Пакетный градиентный спуск (BGD)
Пакетный градиентный спуск — наиболее часто используемая форма градиентного спуска.Использовать все образцы для обновления при обновлении параметров.
(1) Для функции потерьНайдите частную производную (поставьте):
(2) Параметры обновляются каждую итерацию:
❗Из формулы видно, что здесь есть член суммирования при обновлении, то есть для каждого шага итерации необходимо использовать все данные в обучающей выборке для расчета и обработки всех выборок.
преимущество
(1) Одна итерация предназначена для расчета всех выборок, в это время матрица может использоваться для работы,распараллеливать.
(2) Направление, определяемое всем набором данных, может лучше представлять выборку, чтобы быть более точным в направлении экстремального значения.Когда целевая функция является выпуклой функцией, она должна бытьполучить глобальный оптимум.
недостаток
Когда количество выборок велико, на каждой итерации необходимо вычислять градиент всех выборок,медленнее тренироваться.
2. Стохастический градиентный спуск (SGD)
В отличие от пакетного градиентного спуска, стохастический градиентный спускПараметры обновляются с одной выборкой за итерацию, что ускоряет обучение.
Предыдущие шаги метода стохастического градиентного спуска такие же, как и в методе градиентного спуска, и используется та же функция потерь.Найдите частную производную (поставьте):
Разница в том, что ?Параметры обновляются каждую итерацию:
❗Из формулы видно, что здесь уже нет члена суммирования при обновлении, то есть для каждого шага итерации выбирается только одна выборка.
преимущество
Поскольку это не функция потерь для всех обучающих данных, а функция потерь на каждой итерации для определенных обучающих данных оптимизируется случайным образом, так что параметры каждого раундаСкорость обновления значительно ускорена.
недостаток
(1)Точность падает. Потому что метод стохастического градиентного спуска по-прежнему не может достичь линейной сходимости, даже когда целевая функция является сильно выпуклой функцией.
(2) может сходиться клокальный оптимум, потому что одна выборка не может отражать тенденцию всей выборки.
(3)Непросто реализовать параллельно.
3. Мини-пакетный градиентный спуск (MBGD)
Мини-пакетный градиентный спуск — это компромисс между стохастическим градиентным спуском и пакетным градиентным спуском, Идея такова:Обновите параметры с помощью выборок "batch_size" за итерацию. Общие настройкиbatch_size=10
,Количество образцовm=1000
. Конечно, по данным выборки значение этого batch_size можно скорректировать.
Соответствующая формула обновления:
преимущество
(1) Благодаря матричным операциям оптимизация параметров нейронной сети для пакета за один раз ненамного медленнее, чем для отдельных данных.
(2) Использование одной партии за раз может значительноУменьшите количество итераций, необходимых для сходимости, и может сделать сходящийся результат ближе к эффекту градиентного спуска.
(3)Возможно распараллеливание.
недостаток
(1) Неправильный выбор batch_size может вызвать некоторые проблемы.
использованная литература