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

Продолжительность: 14 секунд.
Градиентный спуск в 2D

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

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

Градиентный спуск обычно приписывают Огюстену-Луи Коши , который впервые предложил его в 1847 году. [2] Жак Адамар независимо предложил аналогичный метод в 1907 году. [3] [4] Его свойства сходимости для задач нелинейной оптимизации были впервые изучены Хаскеллом Карри в 1944 году: [5] этот метод становится все более хорошо изученным и используется в последующие десятилетия. [6] [7]

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

Описание [ править ]

Иллюстрация градиентного спуска на серии наборов уровней

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

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

Имеем монотонную последовательность

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

к локальному минимуму можно Гарантировать сходимость при определенных предположениях на функцию (например, выпуклый и Липшиц ) и конкретный выбор . К ним относятся последовательность

как и в методе Барзилаи-Борвейна , [8] [9] или последовательность удовлетворяющие условиям Вульфа (которые можно найти с помощью поиска по строке ). Когда функция является выпуклым , все локальные минимумы также являются глобальными минимумами, поэтому в этом случае градиентный спуск может сходиться к глобальному решению.

Этот процесс иллюстрируется на соседней картинке. Здесь, предполагается, что она определена на плоскости и ее график имеет форму чаши . Синие кривые — это контурные линии , то есть области, на которых значение является постоянным. Красная стрелка, начинающаяся в определенной точке, показывает направление отрицательного градиента в этой точке. Обратите внимание, что (отрицательный) градиент в точке ортогонален контурной линии, проходящей через эту точку. Мы видим, что градиентный спуск приводит нас ко дну чаши, то есть к точке, где значение функции является минимальным.

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

Туман в горах

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

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

Выбор размера шага и направления спуска [ править ]

Поскольку использование размера шага слишком маленький размер замедлит сближение, а слишком большое значение приведет к перерегулированию и расхождению, поэтому необходимо найти хорошую настройку является важной практической проблемой. Филип Вулф также выступал за использование на практике «умного выбора направления [спуска]». [10] Хотя использование направления, которое отклоняется от направления самого крутого спуска, может показаться нелогичным, идея состоит в том, что меньший уклон можно компенсировать, сохраняя его на гораздо большем расстоянии.

Чтобы рассуждать об этом математически, рассмотрим направление и размер шага и рассмотрим более общее обновление:

.

Поиск хороших настроек и требует некоторого размышления. Прежде всего, нам бы хотелось, чтобы направление обновления было направлено вниз. Математически, позволяя обозначаем угол между и , для этого требуется Более того, нам нужно больше информации о целевой функции, которую мы оптимизируем. При достаточно слабом предположении, что непрерывно дифференцируема, мы можем доказать, что: [11]

( 1 )

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

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

  • Откажитесь от преимуществ умного направления спуска, установив и воспользуйтесь поиском по строке , чтобы найти подходящий размер шага , например тот, который удовлетворяет условиям Вульфа . Более экономичный способ выбора скорости обучения — поиск по строке с возвратом — метод, который имеет как хорошие теоретические гарантии, так и экспериментальные результаты. Обратите внимание, что не нужно выбирать быть градиентом; любое направление, имеющее положительное произведение пересечения с градиентом, приведет к уменьшению значения функции (при достаточно малом значении ).
  • Предполагая, что дважды дифференцируема, используйте его гессиан оценить Затем выберите и путем оптимизации неравенства ( 1 ).
  • Предполагая, что является Липшицем , используйте его константу Липшица связывать Затем выберите и путем оптимизации неравенства ( 1 ).
  • Создайте собственную модель для . Затем выберите и путем оптимизации неравенства ( 1 ).
  • При более сильных предположениях на функцию такие как выпуклость более продвинутые методы . , могут быть возможны

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

Решение линейной системы [ править ]

Алгоритм наискорейшего спуска, примененный к фильтру Винера [12]

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

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

так что

Для общей вещественной матрицы , линейный метод наименьших квадратов определяет

В традиционных линейных методах наименьших квадратов на самом деле и этом случае используется евклидова норма, в

, Минимизация поиска линии нахождение локально оптимального размера шага на каждой итерации могут быть выполнены аналитически для квадратичных функций и явные формулы для локально оптимальных известны. [6] [13]

Например, для вещественной симметричной и положительно определенной матрицы , простой алгоритм может быть следующим: [6]

Чтобы не умножать на дважды за итерацию,мы отмечаем, что подразумевает , что дает традиционный алгоритм, [14]

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

Решение нелинейной системы [ править ]

Градиентный спуск также можно использовать для решения системы нелинейных уравнений . Ниже приведен пример, показывающий, как использовать градиентный спуск для решения трех неизвестных переменных: x 1 , x 2 и x 3 . В этом примере показана одна итерация градиентного спуска.

Рассмотрим нелинейную систему уравнений

Введем ассоциированную функцию

где

Теперь можно определить целевую функцию

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

Мы знаем, что

где матрица Якобиана дается

Мы рассчитываем:

Таким образом

и

Анимация, показывающая первые 83 итерации градиентного спуска, примененные к этому примеру. Поверхности – изоповерхности это по текущему предположению , а стрелки показывают направление спуска. Из-за небольшого и постоянного размера шага сходимость происходит медленно.

Теперь подходящий должно быть найдено такое, что

Это можно сделать с помощью любого из множества алгоритмов поиска строк . Можно также просто догадаться что дает

Оценка целевой функции по этому значению дает

Снижение с к значению следующего шага

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

Комментарии [ править ]

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

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

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

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

методы, основанные на методе Ньютона и обращении гессиана с использованием методов сопряженных градиентов . Лучшими альтернативами могут быть [17] [18] Как правило, такие методы сходятся за меньшее количество итераций, но стоимость каждой итерации выше. Примером может служить метод BFGS , который заключается в вычислении на каждом шаге матрицы, на которую умножается вектор градиента, чтобы перейти в «лучшее» направление, в сочетании с более сложным алгоритмом поиска линии , чтобы найти «лучшее» значение Для чрезвычайно больших задач, где преобладают проблемы с памятью компьютера, метод ограниченной памяти, такой как L-BFGS вместо BFGS или метода наикрутейшего спуска следует использовать .

Хотя иногда можно заменить алгоритм локального поиска градиентным спуском , градиентный спуск не относится к тому же семейству: хотя это итеративный метод локальной оптимизации , он полагается на градиент целевой функции , а не на явное исследование пространства решений. .

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

Модификации [ править ]

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

Методы быстрого градиента [ править ]

Юрий Нестеров был предложен [20] простая модификация, которая обеспечивает более быструю сходимость для выпуклых задач и с тех пор получила дальнейшее обобщение. Для гладких задач без ограничений этот метод называется методом быстрого градиента (FGM) или методом ускоренного градиента (AGM). В частности, если дифференцируемая функция является выпуклым и является липшицевым , и не предполагается, что , сильно выпукло то ошибка в целевом значении, генерируемая на каждом шаге методом градиентного спуска будет ограничено . При использовании метода ускорения Нестерова погрешность уменьшается при . [21] [22] Известно, что ставка по убыванию функции стоимости оптимальна для методов оптимизации первого порядка. Тем не менее, есть возможность улучшить алгоритм за счет уменьшения постоянного коэффициента. Оптимизированный градиентный метод (OGM) [23] уменьшает эту константу в два раза и является оптимальным методом первого порядка для крупномасштабных задач. [24]

Для ограниченных или негладких задач FGM Нестерова называется методом быстрого проксимального градиента (FPGM), ускорением метода проксимального градиента .

или шара Метод импульса тяжелого

Пытаясь разорвать зигзагообразную схему градиентного спуска, метод импульса или тяжелого шара использует термин импульса по аналогии со скольжением тяжелого шара по поверхности значений минимизируемой функции: [6] или к движению массы в ньютоновской динамике через вязкую среду в консервативном силовом поле. [25] Градиентный спуск с импульсом запоминает обновление решения на каждой итерации и определяет следующее обновление как линейную комбинацию градиента и предыдущего обновления. Для неограниченной квадратичной минимизации теоретическая граница скорости сходимости метода тяжелого шара асимптотически такая же, как и для оптимального метода сопряженных градиентов . [6]

Этот метод используется при стохастическом градиентном спуске и как расширение алгоритмов обратного распространения ошибки, используемых для обучения искусственных нейронных сетей . [26] [27] В направлении обновления стохастический градиентный спуск добавляет стохастическое свойство. Веса можно использовать для вычисления производных.

Расширения [ править ]

Градиентный спуск можно расширить для обработки ограничений , включив проекцию на набор ограничений. Этот метод возможен только в том случае, если проекцию можно эффективно вычислить на компьютере. При соответствующих предположениях этот метод сходится. Этот метод является частным случаем алгоритма вперед-назад для монотонных включений (включающего выпуклое программирование и вариационные неравенства ). [28]

Градиентный спуск — это частный случай зеркального спуска, используется квадрат Евклидова расстояния в котором в качестве заданного расхождения Брегмана . [29]

Теоретические свойства [ править ]

Свойства градиентного спуска зависят от свойств целевой функции и используемого варианта градиентного спуска (например, если поиска линии используется шаг ). Сделанные предположения влияют на скорость сходимости и другие свойства, которые можно доказать для градиентного спуска. [30] Например, если предполагается, что цель сильно выпуклая и липшицевая , то градиентный спуск сходится линейно с фиксированным размером шага. [1] Более мягкие предположения приводят либо к более слабым гарантиям сходимости, либо требуют более сложного выбора размера шага. [30]

См. также [ править ]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б Бойд, Стивен; Ванденберге, Ливен (8 марта 2004 г.). Выпуклая оптимизация . Издательство Кембриджского университета. ISBN  978-0-521-83378-3 .
  2. ^ Лемарешаль, К. (2012). «Коши и градиентный метод» (PDF) . Дополнительная документация по математике : 251–254.
  3. ^ Адамар, Жак (1908). «Диссертация по проблеме анализа равновесия закладных упругих пластин». Мемуары, представленные различными зарубежными учеными Академии наук Института Франции . 33 .
  4. ^ Курант, Р. (1943). «Вариационные методы решения задач равновесия и колебаний» . Бюллетень Американского математического общества . 49 (1): 1–23. дои : 10.1090/S0002-9904-1943-07818-4 .
  5. ^ Карри, Хаскелл Б. (1944). «Метод наискорейшего спуска для нелинейных задач минимизации» . Кварта. Прил. Математика . 2 (3): 258–261. дои : 10.1090/qam/10667 .
  6. Перейти обратно: Перейти обратно: а б с д и Поляк, Борис (1987). Введение в оптимизацию .
  7. Перейти обратно: Перейти обратно: а б Акилов, Г.П.; Канторович, Л.В. (1982). Функциональный анализ (2-е изд.). Пергамон Пресс. ISBN  0-08-023036-9 .
  8. ^ Барзилай, Джонатан; Борвейн, Джонатан М. (1988). «Методы двухточечного градиента размера шага». Журнал IMA численного анализа . 8 (1): 141–148. дои : 10.1093/иманум/8.1.141 .
  9. ^ Флетчер, Р. (2005). «О методе Барзилаи-Борвейна». Ин Ци, Л.; Тео, К.; Ян, X. (ред.). Оптимизация и управление с помощью приложений . Прикладная оптимизация. Том. 96. Бостон: Спрингер. стр. 235–256. ISBN  0-387-24254-6 .
  10. ^ Вулф, Филип (апрель 1969 г.). «Условия сходимости методов восхождения». Обзор СИАМ . 11 (2): 226–235. дои : 10.1137/1011036 .
  11. ^ Бернштейн, Джереми; Вахдат, Араш; Юэ, Исон; Лю, Мин-Ю (12 июня 2020 г.). «О расстоянии между двумя нейронными сетями и стабильности обучения». arXiv : 2002.03432 [ cs.LG ].
  12. ^ Хайкин, Саймон С. Теория адаптивного фильтра. Pearson Education India, 2008. – с. 108-142, 217-242
  13. ^ Саад, Юсеф (2003). Итерационные методы для разреженных линейных систем (2-е изд.). Филадельфия, Пенсильвания: Общество промышленной и прикладной математики. стр. 195 . ISBN  978-0-89871-534-7 .
  14. Перейти обратно: Перейти обратно: а б Бауместер, Хенрикус; Догерти, Эндрю; Князев, Андрей В. (2015). «Несимметричное предварительное условие для методов сопряженного градиента и наискорейшего спуска» . Procedia Информатика . 51 : 276–285. arXiv : 1212.6680 . дои : 10.1016/j.procs.2015.05.241 .
  15. ^ Альтшулер, Джейсон (Джейсон М.) (2018). Жадность, хеджирование и ускорение в выпуклой оптимизации (Диссертация). Массачусетский технологический институт.
  16. ^ Паршалл, Эллисон (11 августа 2023 г.). «Рискованные гигантские шаги могут быстрее решить проблемы оптимизации» . Журнал Кванта . Проверено 11 августа 2023 г.
  17. ^ Пресс, WH ; Теукольский, С.А. ; Феттерлинг, WT; Фланнери, BP (1992). Численные рецепты в C: Искусство научных вычислений (2-е изд.). Нью-Йорк: Издательство Кембриджского университета . ISBN  0-521-43108-5 .
  18. ^ Струц, Т. (2016). Подбор данных и неопределенность: практическое введение в метод наименьших квадратов и далее (2-е изд.). Спрингер Вьюег. ISBN  978-3-658-11455-8 .
  19. ^ Росс, международный мастер (июль 2019 г.). «Теория оптимального управления для нелинейной оптимизации» . Журнал вычислительной и прикладной математики . 354 : 39–51. дои : 10.1016/j.cam.2018.12.044 . S2CID   127649426 .
  20. ^ Нестеров, Юрий (2004). Вводные лекции по выпуклой оптимизации: базовый курс . Спрингер. ISBN  1-4020-7553-7 .
  21. ^ Ванденберге, Ливен (2019). «Методы быстрого градиента» (PDF) . Конспекты лекций по EE236C в Калифорнийском университете в Лос-Анджелесе .
  22. ^ Уокингтон, Ноэль Дж. (2023). «Метод Нестерова выпуклой оптимизации» . Обзор СИАМ . 65 (2): 539–562. дои : 10.1137/21M1390037 . ISSN   0036-1445 .
  23. ^ Ким, Д.; Фесслер, Дж. А. (2016). «Оптимизированные методы первого порядка для плавной выпуклой минимизации» . Математическое программирование . 151 (1–2): 81–107. arXiv : 1406.5468 . дои : 10.1007/s10107-015-0949-3 . ПМК   5067109 . ПМИД   27765996 . S2CID   207055414 .
  24. ^ Дрори, Йоэль (2017). «Точная информационная сложность плавной выпуклой минимизации». Журнал сложности . 39 : 1–16. arXiv : 1606.01424 . дои : 10.1016/j.jco.2016.11.001 . S2CID   205861966 .
  25. ^ Цянь, Нин (январь 1999 г.). «Об импульсе в алгоритмах обучения градиентному спуску». Нейронные сети . 12 (1): 145–151. CiteSeerX   10.1.1.57.5612 . дои : 10.1016/S0893-6080(98)00116-6 . ПМИД   12662723 . S2CID   2783597 .
  26. ^ «Импульс и адаптация скорости обучения» . Университет Уилламетт . Проверено 17 октября 2014 г.
  27. ^ Джеффри Хинтон ; Нитиш Шривастава; Кевин Сверски. «Метод импульса» . Курсера . Проверено 2 октября 2018 г. Часть серии лекций Coursera онлайн-курса «Нейронные сети для машинного обучения» . Архивировано 31 декабря 2016 г. в Wayback Machine .
  28. ^ Комбеттс, Польша; Песке, Ж.-К. (2011). «Методы проксимального разделения при обработке сигналов». В Баушке, Х.Х.; Бурачик, РС ; Комбеттс, Польша; Эльзер, В.; Люк, доктор медицинских наук; Волкович, Х. (ред.). Алгоритмы фиксированной точки для решения обратных задач в науке и технике . Нью-Йорк: Спрингер. стр. 185–212. arXiv : 0912.3522 . ISBN  978-1-4419-9568-1 .
  29. ^ «Алгоритм спуска зеркала» .
  30. Перейти обратно: Перейти обратно: а б Бубек, С. (2014). Теория выпуклой оптимизации машинного обучения. ArXiv, абс/1405.4980.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]