Координатный спуск

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Описание[править | править код]

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

,

итерация определяет из путём итеративного решения задач оптимизации от одной переменной

[2]

для каждой переменной вектора для от 1 до .

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

При осуществлении линейного поиска на каждой итерации получаем

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

Процесс работы алгоритма продемонстрирован ниже.

Дифференцируемый случай[править | править код]

В случае непрерывной дифференцируемости функции F алгоритм координатного спуска можно изложить кратко как[1]:

  • Выбираем начальный вектор x.
  • Пока не будет достигнут уровень сходимости или не будет сделано фиксированное число итерации:
    • Выбираем индекс i из промежутка от 1 до n.
    • Выбираем размер шага α.
    • Заменяем на .

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

Ограничения[править | править код]

Координатный спуск имеет две проблемы. Одна из них заключается в наличии негладкой функции от нескольких переменных. Рисунок показывает, что итерации координатного спуска могут упереться в нестационарную точку, если кривые уровня функции не гладкие. Предположим, что алгоритм оказался в точке (-2, -2). Тогда имеется два направления, параллельные осям, по которым следовало бы делать очередной шаг. Они показаны красными стрелками. Однако любой шаг в этих двух направлениях приведёт к росту значения функции (предполагается, что решается задача минимизации), так что алгоритм не сделает ни одного шага, хотя два шага вместе привели бы алгоритм ближе к оптимуму. Хотя данный пример показывает, что координатный спуск не обязательно приводит к оптимальному решению, можно показать формальную сходимость при нормальных условиях[3].

Другая проблема – трудности в распараллеливании. Поскольку природа координатного спуска заключается в цикле по направлениям и минимизации функции по каждому координатному направлению, координатный спуск не является очевидным кандидатом для распараллеливания. Недавние исследования показали, что распараллеливание можно использовать для координатного спуска при некоторых специальных приёмах[4][5][6].

Приложения[править | править код]

Алгоритмы координатного спуска популярны ввиду их простоты, но то же свойство побуждает исследователей игнорировать их в пользу более интересных (более сложных) методов[1]. Ранние приложения оптимизации методом координатного спуска были в области компьютерной томографии[7], где метод показал быструю сходимость[8] и был использован для реконструкции изображений многослойной спиральной компьютерной томографии[9]. Алгоритм циклического координатного спуска был применён в предсказании протеиновой структуры[10]. Более того, рос интерес к применению координатного спуска с появлением задач большого размера в машинном обучении, где координатный спуск, как было показано, конкуррентен с другими методами, когда применяется к таким задачам, как обучение линейным методом опорных векторов[11] (см. LIBLINEAR[en]) и неотрицательное матричное разложение[12]. Методы привлекательны для задач, когда вычисление градиента невыполнимо, возможно потому, что требуемые данные распределены по компьютерным сетям[13].

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

Примечания[править | править код]

  1. 1 2 3 4 Wright, 2015, с. 3–34.
  2. Архивированная копия. Дата обращения: 6 февраля 2022. Архивировано 6 февраля 2022 года.
  3. Spall, 2012, с. 187–208.
  4. Zheng, Saquib, Sauer, Bouman, 2000, с. 1745–1759.
  5. Fessler, Ficaro, Clinthorne, Lange, 1997, с. 166–175.
  6. Wang, Sabne, Kisner, 2016, с. 2:1–2:12.
  7. Sauer, Bouman, 1993, с. 534–548.
  8. Yu, Thibault, Bouman, Sauer, 2011, с. 161–175.
  9. Thibault, Sauer, Bouman, Hsieh, 2007, с. 4526–4544.
  10. Canutescu, Dunbrack, 2003, с. 963–72.
  11. Hsieh, Chang, Lin, Keerthi, 2008, с. 408.
  12. Hsieh, Dhillon, 2011, с. 1064.
  13. Nesterov, 2012, с. 341–362.

Литература[править | править код]