Метод проксимального градиента
Метод проксимального градиента[1] — это обобщение проецирования, используемое для решения недифференцируемых задач выпуклого программирования.
Много интересных задач можно сформулировать как задачи выпуклого программирования вида
где — выпуклые функции, определённые как отображения , где некоторые из функций недифференцируемы, что исключает обычные техники гладкой оптимизации, такие как метод наискорейшего спуска или метод сопряжённых градиентов и др., вместо них могут быть использованы проксимальные градиентные методы. Эти методы работают путём расщепления, так что функции используются индивидуально, что позволяет разработать более просто реализуемые алгоритмы. Они называются проксимальными (англ. proximal, ближайший), поскольку каждая негладкая функция среди вовлекается в процесс через оператор близости. Итерационный алгоритм мягкой пороговой фильтрации[2], проекция Ландвебера, проекция градиента, попеременные проекции, метод чередующихся направлений мультипликаторов[англ.], метод чередующихся расщеплений Брэгмана являются частными случаями проксимальных алгоритмов[3]. Для рассмотрения проксимальных градиентных методов со стороны статистической теории обучения и приложений к этой теории см. статью Методы проксимального градиента для машинного обучения[англ.].
Обозначения и терминология
Пусть , -мерное евклидово пространство, будет областью определения функции . Предположим, что является непустым выпуклым подмножеством множества . Тогда индикаторная функция множества определяется как
- -норма определяется как
Расстояние от до определяется как
Если замкнуто и выпукло, проекцией в множество является единственная точка , такая что .
Субдифференциал функции в точке задаётся выражением
Проецирование в выпуклые множества
Одним из широко используемых выпуклых алгоритмов оптимизации является проецирование в выпуклые множества. Этот алгоритм используется для обнаружения/синтезирования сигнала, удовлетворяющего одновременно нескольким выпуклым ограничениям. Пусть будет индикаторной функцией на непустом замкнутом выпуклом множестве , моделирующей ограничение. Это сводит задачу к задаче выпуклой осуществимости (достижимости), в которой нужно найти решение, содержащееся в пересечении всех выпуклых множеств . В методe проецирования в выпуклые множества каждое множество ассоциируется с его проектором . Таким образом, на каждой итерации пересчитывается по формуле
Однако за пределами таких задач проекторы не подходят и требуются операторы более общего вида. Среди различных существующих обобщений понятия выпуклого проектора операторы близости лучше всего подходят для таких целей.
Определение
Оператор близости[англ.] выпуклой функции в точке определяется как единственное решение
и обозначается как .
Заметим, что в случае, когда является индикаторной функцией некоторого выпуклого множества
что показывает, что оператор близости действительно является обобщением проектора.
Оператор близости функции описывается включением
Если дифференцируема, то уравнение выше сводится к
Примеры
Частными случаями проксимальных градиентных методов являются
- проекция Ландвебера
- Попеременное проецирование
- метод чередующихся направлений мультипликаторов[англ.]
См. также
- Выпуклое программирование
- Алгоритм Франк — Вульфа
- Проксимальный оператор[англ.]
Примечания
Литература
- Daubechies I., Defrise M., De Mol C. An iterative thresholding algorithm for linear inverse problems with a sparsity constraint // Communications on Pure and Applied Mathematics. — 2004. — Т. 57, вып. 11. — doi:10.1002/cpa.20042. — . — arXiv:math/0307152.
- Rockafellar R. T. Convex analysis. — Princeton: Princeton University Press, 1970.
- Patrick L. Combettes, Jean-Christophe Pesquet. Springer's Fixed-Point Algorithms for Inverse Problems in Science and Engineering. — 2011. — Т. 49. — С. 185–212.
Ссылки
- Stephen Boyd, Lieven Vandenberghe, Convex optimization
- EE364a: Convex Optimization I и EE364b: Convex Optimization II, Страницы стэнфордского курса
- EE227A: Lieven Vandenberghe Notes Лекция 18
- ProximalOperators.jl: Пакет на языке Julia, реализующий проксимальные операторы.
- ProximalAlgorithms.jl: Пакет на языке Julia, реализующий алгоритмы, основанные на операторах близости, включая проксимальный градиентный метод.
- Proximity Operator repository: набор операторов близости, реализованных в Matlab и на языке Python.