Un peu sur la dualité conique

Lorsque l'on étudie des cours théoriques en machine learning (mathématiques. Economie, optimisation, finance, etc.), la notion de «double problème» se retrouve souvent.

Les tâches doubles sont souvent utilisées pour obtenir des estimations inférieures (ou supérieures) pour la fonction cible dans les problèmes d'optimisation. De plus, pour presque toutes les déclarations significatives du problème d'optimisation, le double problème a une interprétation significative. Autrement dit, si vous êtes confronté à un problème d'optimisation important, son double est également très probablement important.

Dans cet article, je parlerai de la dualité conique. Cette façon de construire des tâches duales, à mon avis, est à juste titre privée d'attention ...

Matan suivant ...

Comment les tâches doubles sont-elles généralement construites?


Soit un problème d'optimisation donné:

 minx inRnf(x)fi(x) leq0, quad1 leqi leqkhi(x)=0,1 leqi leqm



La double tâche est construite selon le schéma suivant:

  • Construire Lagrangian

L(x, lambda, mu)=f(x)+ sumki=1 lambdaifi(x)+ summi=1 muihi(x)


  • Construire une double fonction

g( lambda, mu)= infxL(x, lambda, mu)


  • Obtenez une double tâche

 max lambda, mug( lambda, mu) lambda geq0



La principale difficulté de ce schéma est liée à l'étape de recherche  infxL(x, lambda, mu) .

Si le problème n'est pas convexe, alors c'est un cercueil - dans le cas général, il ne peut pas être résolu en temps polynomial (si P neqNP ) et de tels problèmes dans cet article, nous ne les aborderons pas à l'avenir.

Supposons que le problème soit convexe, alors quoi?

Si le problème est lisse, nous pouvons utiliser la condition d'optimalité de premier ordre  nablaxL(x, lambda, mu)=0 . De cette condition, si tout va bien, il s’avère déduire ou x( lambda, mu)= arg minxL(x, lambda, mu) et g( lambda, mu)=L(x( lambda, mu), lambda, mu) ou fonctionner directement g( lambda, mu) .

Si le problème n'est pas lisse, alors nous pourrions utiliser un analogue de la condition de premier ordre 0 in partialxL(x, lambda, mu) (ici  partialxL(x, lambda, mu) désigne un sous-différentiel d'une fonction L(x, lambda, mu) ), cependant, cette procédure est généralement beaucoup plus compliquée.

Parfois, il y a un problème d'optimisation «fluide» équivalent et on peut en construire un double. Mais pour l'amélioration de la structure (de non lisse à lisse), en règle générale, vous devez toujours payer une augmentation de dimension.

Dualité conique


Il existe plusieurs tâches d'optimisation (exemples ci-dessous) qui admettent la représentation suivante:

 minx inRncTxAx+b inK


A - matrice b - vecteur K - cône convexe non dégénéré.

Dans ce cas, la double tâche peut être construite selon le schéma suivant:

La double tâche est construite selon le schéma suivant:

  • Construire Lagrangian

L(x, lambda)=cTx+ lambdaT(Ax+b)


  • Construire une double fonction

g( lambda)= infxL(x, lambda)= begincases lambdaTb, quadc+AT lambda=0 infty, quadc+AT lambda neq0 endcases


  • Obtenez une double tâche

 max lambdabT lambdac+AT lambda=0 lambda inK


où est le cône conjugué K pour cône K défini comme K ^ * = \ left \ {y \ in R ^ k | z ^ T y \ geq 0, \ quad \ forall z \ in K \ right \} .

Comme nous le voyons, toute la complexité de la construction du double problème a été transférée à la construction du double cône. Mais la joie est qu'il existe un bon calcul pour construire des cônes doubles et très souvent un cône double peut être écrit immédiatement.

Exemple


Supposons que nous devons construire un problème d'optimisation double pour le problème:

 minx inRn |x |2+ |x |1Ax geqb



Ici  |x |1= sumni=1|xi| ,  |x |2= sqrt sumni=1x2i

La première chose que vous pouvez remarquer: la fonction objectif peut toujours être rendue linéaire!

Au contraire, il y a toujours un problème équivalent avec une fonction objectif linéaire:

 minx inRn,y inR,z inRy+z |x |2 leqy |x |1 leqzAxe geqb



Maintenant, vous devez utiliser un peu de connaissances secrètes: beaucoup

K_1 = \ {(x, t) \ in R ^ n \ times R | \ quad \ | x \ | _1 \ leq t \}

et

K_2 = \ {(x, t) \ in R ^ n \ times R | \ quad \ | x \ | _2 \ leq t \}

sont des cônes convexes.

Ainsi, nous arrivons à la notation équivalente du problème:

 minx inRn,y inR,z inRy+zIn+1 beginpmatrixxy endpmatrix+0n+1 inK2In+1 beginpmatrixxz endpmatrix+0n+1 inK1Axb inRk+



Maintenant, nous pouvons immédiatement écrire un double problème:

 max lambda, mu, nubT nu lambdai+ mui+[AT nu]i=0, quad1 leqi leqn lambdan+1+1=0 mun+1+1=0 lambda inK2(=K2) mu inK1(=K infty) nu dansRk+


ou, pour simplifier un peu,

 max lambda, mu, nubT nu lambda+ mu+AT nu=0 | lambda |2 leq1 | mu | infty leq1 nu dansRk+



 | mu | infty= maxi| mui| .

Liens pour une étude plus approfondie:

Source: https://habr.com/ru/post/fr431756/


All Articles