Problema di ottimizzazione vincolata nell'entropia della matrice


10

Ho un problema di ottimizzazione vincolato nell'entropia della matrice (Shannon) . La matrice può essere scritta come la somma delle matrici di rango 1 della forma dove è un dato vettore normalizzato. I coefficienti delle matrici di rango uno sono le incognite in cui ottimizziamo e devono essere maggiori di zero e sommare fino a 1. A [ v i(Sum(entr(eiog(UN))))UNv i[viovioT]vio

In una sintassi simile a CVX il problema si presenta come segue: data variabilec(n)

minimizzareSum(entr(eiog(UN)))

soggetto aUN=ΣcioviovioTΣcio=1cio0
.

Qualcuno ha idea di come risolverlo in modo efficiente? So già che probabilmente non può essere lanciato come un problema di programmazione semi-definita (SDP).

Risposte:


8

Modifica: un collega mi ha informato che il mio metodo di seguito è un'istanza del metodo generale nel seguente documento, quando è specializzato nella funzione entropia,

Overton, Michael L. e Robert S. Womersley. "Secondo derivati ​​per l'ottimizzazione degli autovalori delle matrici simmetriche." SIAM Journal on Matrix Analysis and Applications 16.3 (1995): 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf

Panoramica

In questo post mostro che il problema dell'ottimizzazione è ben posto e che i vincoli di disuguaglianza sono inattivi alla soluzione, quindi calcolo i derivati ​​Frechet primo e secondo della funzione entropia, quindi propongo il metodo di Newton sul problema con il vincolo di uguaglianza eliminato. Infine, vengono presentati il ​​codice Matlab e i risultati numerici.

Buona posizione del problema di ottimizzazione

In primo luogo, la somma delle matrici definite positive è definita positiva, quindi per , la somma di rango-1 matrici A ( c ) : = N Σ i = 1 c i V i V T i è definita positiva. Se l'insieme di v i è rango pieno, quindi autovalori di A sono positivi, quindi i logaritmi degli autovalori possono essere prese. Pertanto la funzione obiettivo è ben definita all'interno dell'insieme fattibile.ci>0

UN(c): =Σio=1NcioviovioT
vioUN

In secondo luogo, come qualsiasi , A perde il rango, quindi l'autovalore più piccolo di A va a zero. Vale a dire, σ m i n ( A ( c ) ) 0 come c i0 . Poiché la derivata di - σ log ( σ ) esplode come σ 0 , non si può avere una sequenza di punti sempre migliori e migliori che si avvicinano al limite dell'insieme fattibile. Quindi il problema è ben definito e inoltre i vincoli di disuguaglianzacio0UNUNσmion(UN(c))0cio0-σlog(σ)σ0 sono inattivi.cio0

Derivati ​​di Frechet della funzione entropia

All'interno della regione possibile la funzione entropica è Frechet differenziabile ovunque, e due volte Frechet differenziabile ovunque gli autovalori non vengano ripetuti. Per eseguire il metodo di Newton, dobbiamo calcolare le derivate dell'entropia della matrice, che dipende dagli autovalori della matrice. Ciò richiede la sensibilità al calcolo della decomposizione degli autovalori di una matrice rispetto ai cambiamenti nella matrice.

Ricordiamo che per una matrice con autovalore decomposizione A = U Λ U T , la derivata della autovalore matrice rispetto alle variazioni nella matrice originale, d Λ = I ( U T d A U ) , e la derivata della la matrice dell'autovettore è, d U = U C ( d A ) , dove è il prodotto Hadamard , con la matrice del coefficiente C = { uUNUN=UΛUT

dΛ=io(UTdUNU),
dU=UC(dUN),
C={uioTdUNujλj-λio,io=j0,io=j

Tali formule sono derivate differenziando l'equazione degli autovalori e le formule valgono ogni volta che gli autovalori sono distinti. Quando ci sono autovalori ripetuti, la formula per d Λ ha una discontinuità rimovibile che può essere estesa fino a quando gli autovettori non unici vengono scelti con cura. Per dettagli al riguardo, consultare la seguente presentazione e il documento .UNU=ΛUdΛ

La seconda derivata viene quindi trovata differenziando di nuovo,

d2Λ=d(io(UTdUN1U))=io(dU2TdUN1U+UTdUN1dU2)=2io(dU2TdUN1U).

d2ΛdU2Cvio

Eliminare il vincolo di uguaglianza

Σio=1Ncio=1N-1

cN=1-Σio=1N-1cio.

N-1

df=dC1TMT[io(VTUBUTV)]
ddf=dC1TMT[io(VT[2dU2Bun'UT+UBBUT]V)],
M=[111-1-1...-1],

Bun'=dioun'g(1+logλ1,1+logλ2,...,1+logλN),

BB=dioun'g(d2λ1λ1,...,d2λNλN).

Il metodo di Newton dopo aver eliminato il vincolo

Poiché i vincoli di disuguaglianza sono inattivi, iniziamo semplicemente nell'insieme fattibile ed eseguiamo la regione di fiducia o la ricerca di linea inesatta Newton-CG per la convergenza quadratica ai massimi interni.

Il metodo è il seguente, (esclusi i dettagli di ricerca area di fiducia / linea)

  1. c~=[1/N,1/N,...,1/N]
  2. c=[c~,1-Σio=1N-1cio]
  3. UN=ΣiocioviovioT
  4. UΛUN
  5. sol=MT[io(VTUBUTV)]
  6. Hsol=ppHHδc~dU2Bun'BB
    MT[io(VT[2dU2Bun'UT+UBBUT]V)]
  7. c~c~-p
  8. Vai a 2.

risultati

vioN=100vio

>> N = 100;
>> V = randn (N, N);
>> per k = 1: NV (:, k) = V (:, k) / norma (V (:, k)); fine
>> maxEntropyMatrix (V);
Iterazione di Newton = 1, norma (grad f) = 0.67748
Iterazione di Newton = 2, norma (grad f) = 0,03644
Iterazione di Newton = 3, norma (grad f) = 0,0012167
Iterazione di Newton = 4, norma (grad f) = 1.3239e-06
Iterazione di Newton = 5, norma (grad f) = 7.7114e-13

Per vedere che il punto ottimale calcolato è in realtà il massimo, ecco un grafico di come l'entropia cambia quando il punto ottimale viene perturbato in modo casuale. Tutte le perturbazioni fanno diminuire l'entropia. inserisci qui la descrizione dell'immagine

Codice Matlab

Funzione All in 1 per ridurre al minimo l'entropia (appena aggiunta a questo post): https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m


Grazie mille! L'ho risolto con semplice con l'ascent gradiente me stesso, ma questo è probabilmente più affidabile. Il fatto che v debba essere di rango completo nel file matlab è l'unica cosa che mi disturba.
Asciuga il

@NickAlger Il link fornito non funziona, posso chiederti di dare un'occhiata?
Creatore


@NickAlger Esiste un vincolo sulla matrice che l'algoritmo può operare? Questo algoritmo va bene per la matrice con elementi complessi? Nel mio caso l'SVD fallisce dopo qualche tempo poiché la matrice ha Nan.
Creatore

Non penso che numeri complessi debbano essere un problema. Una limitazione del metodo è che la soluzione ottimale non può avere autovalori ripetuti, che suppongo sia ciò che sta accadendo qui. In questo caso il metodo converge in qualcosa che si divide per zero nell'equazione C. Puoi provare a disturbare un po 'in modo casuale gli ingressi e vedere se questo aiuta le cose. C'è un modo per aggirare questo problema nel documento di Overton sopra citato, ma il mio codice non è così avanzato.
Nick Alger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.