Немного про коническую двойственность

в 18:51, , рубрики: двойственность, двойственные задачи, математика, машинное обучение

При изучении теоретических курсов по машинному обучению (мат. экономике, оптимизации, финансам и т.д.) часто встречается понятие «двойственной задачи».

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

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

Дальше матан…

Как обычно строят двойственные задачи?

Пусть дана некоторая задача оптимизации:

$$display$$min_{xin R^n} f(x)\ f_i(x) leq 0, quad 1 leq i leq k\ h_i(x) = 0, 1leq i leq m$$display$$

Двойственная задача строится по следующей схеме:

  • Построить Лагранжиан

$$display$$L(x, lambda, mu) = f(x)+sum_{i=1}^klambda_i f_i(x)+sum_{i=1}^m mu_i h_i(x)$$display$$

  • Построить двойственную функцию

$$display$$g(lambda, mu) = inf_x L(x, lambda, mu) $$display$$

  • Получить двойственную задачу

$$display$$max_{lambda, mu}g(lambda, mu)\ lambda geq 0 $$display$$

Главная сложность в этой схеме зашита в шаге поиска $inline$inf_x L(x, lambda, mu)$inline$.

Если задача не является выпуклой, то это гроб — в общем случае она не решается за полиномиальное время (если $inline$Pneq NP$inline$) и такие задачи в этой статье мы затрагивать в дальнейшем не будем.

Допустим, что задача выпуклая, что тогда?

Если задача гладкая, то можно воспользоваться условием оптимальности первого порядка $inline$nabla_x L(x, lambda, mu)=0$inline$. Из этого условия, если все Ок, получается вывести или $inline$x(lambda, mu) = arg min_x L(x, lambda, mu)$inline$ и $inline$g(lambda, mu) = L(x(lambda, mu), lambda, mu)$inline$ или напрямую функцию $inline$g(lambda, mu)$inline$.

Если задача негладкая, то можно было бы воспользоваться аналогом условия первого порядка $inline$0 in partial_x L(x, lambda, mu)$inline$ (здесь $inline$partial_x L(x, lambda, mu)$inline$ обозначает субдифференциал функции $inline$L(x, lambda, mu)$inline$), однако эта процедура, как правило, намного сложнее.

Иногда существует эквивалентная «гладкая» задача оптимизации и можно построить двойственную для нее. Но за улучшение структуры (из негладкой в гладкую) как правило всегда приходится платить увеличением размерности.

Коническая двойственность

Есть достаточно много задач оптимизации (примеры ниже), допускающих следующее представление:

$$display$$min_{xin R^n} c^Tx\ Ax+b in K$$display$$

где $inline$A$inline$ — матрица, $inline$b$inline$ — вектор, $inline$K$inline$ — невырожденный выпуклый конус.

В таком случае двойственная задача может быть построена по следующей схеме:

Двойственная задача строится по следующей схеме:

  • Построить Лагранжиан

$$display$$L(x, lambda) = c^Tx+ lambda^T (Ax+b)$$display$$

  • Построить двойственную функцию

$$display$$g(lambda) = inf_x L(x, lambda) = begin{cases} lambda^T b, quad c+A^Tlambda = 0\ -infty, quad c+A^Tlambda neq 0 end{cases} $$display$$

  • Получить двойственную задачу

$$display$$max_{lambda} b^Tlambda\ c+A^Tlambda=0\ - lambda in K^* $$display$$

где сопряженный конус $inline$K^*$inline$ для конуса $inline$K$inline$ определяется как $inline$K^* = left {y in R^k| z^T y geq 0, quad forall z in K right }$inline$.

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

Пример

Допустим, нам нужно построить двойственную задачу оптимизации для задачи:

$$display$$min_{x in R^n}|x|_2+|x|_1\ Ax geq b$$display$$

Первое, что можно заметить: целевую функцию всегда можно сделать линейной!

Вернее, всегда есть эквивалентная задача с линейной целевой функцией:

$$display$$min_{x in R^n, y in R, z in R}y+z\ |x|_2 leq y\ |x|_1 leq z\ Ax geq b$$display$$

Вот сейчас нужно использовать немного тайного знания: множества

$$display$$K_1 = { (x,t) in R^ntimes R| quad |x|_1 leq t}$$display$$

и

$$display$$K_2 = { (x,t) in R^ntimes R| quad |x|_2 leq t}$$display$$

являются выпуклыми конусами.

Таким образом мы приходим к эквивалентной записи задачи:

$$display$$min_{xin R^n, yin R, zin R} y+z\ I_{n+1}begin{pmatrix} x\ yend{pmatrix}+0_{n+1}in K_2\ I_{n+1}begin{pmatrix} x\ zend{pmatrix}+0_{n+1}in K_1\ Ax-b in R_+^k $$display$$

Теперь мы можем сразу выписать двойственную задачу:

$$display$$max_{lambda, mu, nu}-b^Tnu\ lambda_i+mu_i+[A^Tnu]_i=0, quad 1 leq i leq n\ lambda_{n+1}+1=0\ mu_{n+1}+1 = 0\ -lambda in K_2^*(=K_2)\ -mu in K_1^*(=K_{infty})\ -nu in R^k_+$$display$$

или, если немного упростить,

$$display$$max_{lambda, mu, nu} -b^Tnu\ lambda+mu+A^Tnu = 0\ |lambda|_2 leq 1\ |mu|_{infty}leq 1\ -nu in R^k_+$$display$$

Ссылки для дальнейшего изучения:

Автор: YuraDorn

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js