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:
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)
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
où
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:
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
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=1x2iLa 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 inK1Ax−b inRk+
Maintenant, nous pouvons immédiatement écrire un double problème:
max lambda, mu, nu−bT nu lambdai+ mui+[AT nu]i=0, quad1 leqi leqn lambdan+1+1=0 mun+1+1=0− lambda inK∗2(=K2)− mu inK∗1(=K infty)− nu dansRk+
ou, pour simplifier un peu,
max lambda, mu, nu−bT nu lambda+ mu+AT nu=0 | lambda |2 leq1 | mu | infty leq1− nu dansRk+
où
| mu | infty= maxi| mui| .
Liens pour une étude plus approfondie: