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.cio> 0
A ( c ) : = ∑i = 1NcioviovTio
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 i → 0 . 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 disuguaglianzacio→ 0UNUNσm i n( A ( c ) ) → 0cio→ 0- σlog( σ)σ→ 0 sono inattivi.cio≥ 0
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 = { uUNA = UΛ UT
dΛ = I∘ ( UTdA U) ,
dU= UC( dA ) ,
∘C= { uTiodA ujλj- λio,0 ,i = ji = 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 .A U= Λ UdΛ
La seconda derivata viene quindi trovata differenziando di nuovo,
d2Λ= d( Io∘ ( UTdUN1U) )= I∘ ( dUT2dUN1U+ UTdUN1dU2)= 2 I∘ ( dUT2dUN1U) .
d2ΛdU2Cvio
Eliminare il vincolo di uguaglianza
ΣNi = 1cio= 1N- 1
cN= 1 - ∑i = 1N- 1cio.
N- 1
df= dCT1MT[ Io∘ ( VTUB UTV) ]
ddf= dCT1MT[ Io∘ ( VT[ 2 dU2Bun'UT+ UBBUT] V) ] ,
M= ⎡⎣⎢⎢⎢⎢⎢⎢⎢1- 11- 1⋱...1- 1⎤⎦⎥⎥⎥⎥⎥⎥⎥,
Bun'= d i a g ( 1 + logλ1, 1 + registroλ2, … , 1 + registroλN) ,
BB= d i a 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)
- c~= [ 1 / N, 1 / N, ... , 1 / N]
- c = [ c~, 1 - ∑N- 1i = 1cio]
- A = ∑iocioviovTio
- UΛUN
- G = MT[ Io∘ ( VTUB UTV) ]
- HG = ppHHδc~dU2Bun'BB
MT[ Io∘ ( VT[ 2 dU2Bun'UT+ UBBUT] V) ]
- c~← c~- p
- 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.
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