Problème d'optimisation contraint dans l'entropie matricielle

10

J'ai un problème d'optimisation contraint dans l'entropie de la matrice (Shannon) . La matrice peut être écrite comme la somme des matrices de rang 1 de la forme où est un vecteur normalisé donné. Les coefficients des matrices de rang 1 sont les inconnues dans lesquelles nous optimisons et ils doivent être supérieurs à zéro et totaliser 1. A [ v i(sum(entr(eig(A))))Av i[viviT]vi

Dans une syntaxe de type CVX, le problème se présente comme suit: variable donnéec(n)

minimizesum(entr(eig(A)))

subject toA=civiviTci=1ci0
.

Quelqu'un at-il une idée de la façon de résoudre ce problème efficacement? Je sais déjà qu'il ne peut probablement pas être converti en problème de programmation semi-définie (SDP).

Sèche
la source

Réponses:

8

Edit: Un collègue m'a informé que ma méthode ci-dessous est une instance de la méthode générale dans l'article suivant, lorsqu'elle est spécialisée dans la fonction d'entropie,

Overton, Michael L. et Robert S. Womersley. "Dérivées secondes pour optimiser les valeurs propres des matrices symétriques." SIAM Journal on Matrix Analysis and Applications 16.3 (1995): 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf

Aperçu

Dans cet article, je montre que le problème d'optimisation est bien posé et que les contraintes d'inégalité sont inactives à la solution, puis calcule les première et deuxième dérivées de Frechet de la fonction d'entropie, puis propose la méthode de Newton sur le problème avec la contrainte d'égalité éliminée. Enfin, le code Matlab et les résultats numériques sont présentés.

Bien posé du problème d'optimisation

Premièrement, la somme des matrices définies positives est définie positive, donc pour , la somme des matrices de rang 1 est définie positive. Si l'ensemble de est de rang complet, les valeurs propres de sont positives, de sorte que les logarithmes des valeurs propres peuvent être pris. Ainsi, la fonction objectif est bien définie à l'intérieur de l'ensemble réalisable.A ( c ) : = N i = 1 c i v i v T i v i Aci>0

A(c):=i=1NciviviT
viA

Deuxièmement, comme tout , perd le rang, donc la plus petite valeur propre de passe à zéro. C'est-à-dire, comme . Puisque la dérivée de explose en tant que , on ne peut pas avoir une séquence de points successivement meilleurs et meilleurs approchant la frontière de l'ensemble faisable. Ainsi le problème est bien défini et de plus les contraintes d'inégalité sont inactives.A A σ m i n ( A ( c ) ) 0 c i0 - σ log ( σ ) σ 0 c i0ci0AAσmin(A(c))0ci0σlog(σ)σ0ci0

Dérivés de Frechet de la fonction d'entropie

À l'intérieur de la région réalisable, la fonction d'entropie est Frechet différenciable partout, et deux fois Frechet différenciable partout où les valeurs propres ne sont pas répétées. Pour faire la méthode de Newton, nous devons calculer les dérivées de l'entropie matricielle, qui dépend des valeurs propres de la matrice. Cela nécessite de calculer les sensibilités de la décomposition des valeurs propres d'une matrice par rapport aux changements dans la matrice.

Rappelons que pour une matrice avec décomposition de valeurs propres , la dérivée de la matrice de valeurs propres par rapport aux changements dans la matrice d'origine est, et la dérivée de la matrice de vecteur propre est, où est le produit de Hadamard , avec le coefficient matrice A = U Λ U T d Λ = I ( U T d A U ) , d U = U C ( d A ) , C = { u T i d A u jAA=UΛUT

dΛ=I(UTdAU),
dU=UC(dA),
C={uiTdAujλjλi,i=j0,i=j

Ces formules sont dérivées en différenciant l'équation des valeurs propres , et les formules sont valables chaque fois que les valeurs propres sont distinctes. Lorsqu'il y a des valeurs propres répétées, la formule de a une discontinuité amovible qui peut être étendue tant que les vecteurs propres non uniques sont choisis avec soin. Pour plus de détails à ce sujet, consultez la présentation et le document suivants .d ΛAU=ΛUdΛ

La dérivée seconde est alors trouvée en différenciant à nouveau,

d2Λ=d(I(UTdA1U))=I(dU2TdA1U+UTdA1dU2)=2I(dU2TdA1U).

Alors que la première dérivée de la matrice des valeurs propres peut être rendue continue à des valeurs propres répétées, la deuxième dérivée ne peut pas puisque dépend de , qui dépend de , qui explose lorsque les valeurs propres dégénèrent l'une vers l'autre. Cependant, tant que la vraie solution n'a pas de valeurs propres répétées, alors c'est OK. Des expériences numériques suggèrent que c'est le cas pour le générique , bien que je n'ai pas de preuve à ce stade. Ceci est vraiment important à comprendre, car la maximisation de l'entropie tenterait généralement de rapprocher les valeurs propres si possible.d U 2 C v id2ΛdU2Cvi

Éliminer la contrainte d'égalité

Nous pouvons éliminer la contrainte en travaillant uniquement sur les premiers coefficients et en réglant le dernier sur i=1Nci=1N1

cN=1i=1N1ci.

Globalement, après environ 4 pages de calculs matriciels, les dérivées premières et secondes réduites de la fonction objectif par rapport aux changements dans les premiers coefficients sont données par, où N1

df=dC1TMT[I(VTUBUTV)]
ddf=dC1TMT[I(VT[2dU2BaUT+UBbUT]V)],
M=[111111],

Ba=diag(1+logλ1,1+logλ2,,1+logλN),

Bb=diag(d2λ1λ1,,d2λNλN).

La méthode de Newton après élimination de la contrainte

Étant donné que les contraintes d'inégalité sont inactives, nous commençons simplement dans l'ensemble faisable et exécutons la région de confiance ou la recherche en ligne newton-CG inexacte pour la convergence quadratique vers les maxima intérieurs.

La méthode est la suivante (sans inclure les détails de la recherche par région de confiance / ligne)

  1. Commencez par .c~=[1/N,1/N,,1/N]
  2. Construisez le dernier coefficient, .c=[c~,1i=1N1ci]
  3. Construct .A=iciviviT
  4. Trouvez les vecteurs propres et les valeurs propres de .UΛA
  5. Construire le gradient .G=MT[I(VTUBUTV)]
  6. Résoudre pour via le gradient conjugué (seule la capacité d'appliquer est nécessaire, pas les entrées réelles). est appliqué au vecteur en trouvant , et puis en se à la formule, p H H δ ˜ c d U 2 B a B b M T [ I ( V T [ 2 d U 2 B a U T + U B b U T ] V ) ]HG=ppHHδc~dU2BaBb
    MT[I(VT[2dU2BaUT+UBbUT]V)]
  7. Définissez .c~c~p
  8. Aller à 2.

Résultats

Pour aléatoire , avec la recherche de ligne pour la longueur de pas, la méthode converge très rapidement. Par exemple, les résultats suivants avec (100 ) sont typiques - la méthode converge quadratique. N = 100 v iviN=100vi

>> N = 100;
>> V = randn (N, N);
>> pour k = 1: NV (:, k) = V (:, k) / norme (V (:, k)); fin
>> maxEntropyMatrix (V);
Itération de Newton = 1, norme (grad f) = 0,67748
Itération de Newton = 2, norme (grad f) = 0,03644
Itération de Newton = 3, norme (grad f) = 0,0012167
Itération de Newton = 4, norme (grad f) = 1,3239e-06
Itération de Newton = 5, norme (grad f) = 7.7114e-13

Pour voir que le point optimal calculé est en fait le maximum, voici un graphique de la façon dont l'entropie change lorsque le point optimal est perturbé de manière aléatoire. Toutes les perturbations font diminuer l'entropie. entrez la description de l'image ici

Code Matlab

Fonction tout en 1 pour minimiser l'entropie (nouvellement ajouté à ce message): https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m

Nick Alger
la source
Merci beaucoup! Je l'ai résolu avec un simple dégradé, mais c'est probablement plus fiable. Le fait que v doive être de plein rang dans le fichier matlab est la seule chose qui me dérange.
Sèche le
@NickAlger Le lien fourni ne fonctionne pas, puis-je vous demander de jeter un œil?
Créateur
@Creator a mis à jour le lien dans le post! github.com/NickAlger/various_scripts/blob/master/…
Nick Alger
@NickAlger Y a-t-il une contrainte sur la matrice que l'algorithme peut fonctionner? Cet algorithme convient-il aux matrices avec des éléments complexes? Dans mon cas, le SVD échoue après un certain temps car la matrice a Nan.
Créateur
Je ne pense pas que les nombres complexes devraient être un problème. Une limitation de la méthode est que la solution optimale ne peut pas avoir des valeurs propres répétées, ce qui, je suppose, est ce qui se passe ici. Dans ce cas, la méthode converge vers quelque chose qui se divise par zéro dans l'équation C. Vous pouvez essayer de perturber un peu les entrées au hasard et voir si cela aide les choses. Il existe un moyen de contourner ce problème dans le document Overton référencé ci-dessus, mais mon code n'est pas si avancé.
Nick Alger