Editar: un colega me informó que mi método a continuación es una instancia del método general en el siguiente documento, cuando se especializa en la función de entropía,
Overton, Michael L. y Robert S. Womersley. "Segundas derivadas para optimizar valores propios de matrices simétricas". SIAM Journal on Matrix Analysis and Applications 16.3 (1995): 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf
Visión de conjunto
En esta publicación, muestro que el problema de optimización está bien planteado y que las restricciones de desigualdad están inactivas en la solución, luego calculo las derivadas de Frechet primera y segunda de la función de entropía, luego propongo el método de Newton sobre el problema con la restricción de igualdad eliminada. Finalmente, se presentan el código de Matlab y los resultados numéricos.
Bien planteado del problema de optimización
Primero, la suma de las matrices positivas definidas es positiva definida, entonces para , la suma de las matrices de rango 1
A ( c ) : = N ∑ i = 1 c i v i v T i
es positiva definida. Si el conjunto deci>0
A(c):=∑i=1NcivivTi
es rango completo, los valores propios de
A son positivos, por lo que se pueden tomar los logaritmos de los valores propios. Por lo tanto, la función objetivo está bien definida en el interior del conjunto factible.
viA
Segundo, como cualquier , A pierde el rango, por lo que el valor propio más pequeño de A va a cero. Es decir, σ m i n ( A ( c ) ) → 0ci→0AAσmin(A(c))→0 como . Dado que la derivada de - σ log ( σci→0 explota como σ → 0 , no se puede tener una secuencia de puntos sucesivamente mejores y mejores que se acerquen al límite del conjunto factible. Por lo tanto, el problema está bien definido y, además, las restricciones de desigualdad−σlog(σ)σ→0 están inactivos.ci≥0
Derivados de Frechet de la función entropía
En el interior de la región factible, la función de entropía es Frechet diferenciable en todas partes, y dos veces Frechet diferenciable donde no se repiten los valores propios. Para hacer el método de Newton, necesitamos calcular derivados de la entropía de la matriz, que depende de los valores propios de la matriz. Esto requiere calcular las sensibilidades de la descomposición del valor propio de una matriz con respecto a los cambios en la matriz.
Recuerde que para una matriz con descomposición de valor propio A = U Λ U T , la derivada de la matriz de valor propio con respecto a los cambios en la matriz original es,
d Λ = I ∘ ( U T d A U ) ,
y la derivada de la matriz de vectores propios es,
d U = U C ( d A ) ,
donde ∘ es el producto Hadamard , con la matriz de coeficientes
C = { uAA=UΛUT
dΛ=I∘(UTdAU),
dU=UC(dA),
∘C={uTidAujλj−λi,0,i=ji=j
Dichas fórmulas se derivan diferenciando la ecuación de valor propio , y las fórmulas se mantienen siempre que los valores propios son distintos. Cuando hay valores propios repetidos, la fórmula para dAU=ΛU tiene una discontinuidad removible que puede extenderse siempre que los vectores propios no únicos se elijan cuidadosamente. Para obtener detalles sobre esto, consulte la siguientepresentacióny eldocumento.dΛ
La segunda derivada se encuentra al diferenciar nuevamente,
d2Λ=d(I∘(UTdA1U))=I∘(dUT2dA1U+UTdA1dU2)=2I∘(dUT2dA1U).
d2ΛdU2Cvi
Eliminar la restricción de igualdad
∑Ni=1ci=1N−1
cN=1−∑i=1N−1ci.
N−1
df=dCT1MT[I∘(VTUBUTV)]
ddf=dCT1MT[I∘(VT[2dU2BaUT+UBbUT]V)],
M=⎡⎣⎢⎢⎢⎢⎢⎢⎢1−11−1⋱…1−1⎤⎦⎥⎥⎥⎥⎥⎥⎥,
Ba=diag(1+logλ1,1+logλ2,…,1+logλN),
Bb=diag(d2λ1λ1,…,d2λNλN).
Método de Newton después de eliminar la restricción
Dado que las restricciones de desigualdad están inactivas, simplemente comenzamos en el conjunto factible y ejecutamos la región de confianza o la búsqueda de línea newton-CG inexacta para la convergencia cuadrática a los máximos interiores.
El método es el siguiente, (sin incluir detalles de búsqueda de región / línea de confianza)
- c~=[1/N,1/N,…,1/N]
- c=[c~,1−∑N−1i=1ci]
- A=∑icivivTi
- UΛA
- G=MT[I∘(VTUBUTV)]
- HG=ppHHδc~dU2BaBb
MT[I∘(VT[2dU2BaUT+UBbUT]V)]
- c~←c~−p
- Ir a 2.
Resultados
viN=100vi
>> N = 100;
>> V = randn (N, N);
>> para k = 1: NV (:, k) = V (:, k) / norma (V (:, k)); final
>> maxEntropyMatrix (V);
Iteración de Newton = 1, norma (grad f) = 0.67748
Iteración de Newton = 2, norma (grad f) = 0.03644
Iteración de Newton = 3, norma (grad f) = 0.0012167
Iteración de Newton = 4, norma (grad f) = 1.3239e-06
Iteración de Newton = 5, norma (grad f) = 7.7114e-13
Para ver que el punto óptimo calculado es, de hecho, el máximo, aquí hay un gráfico de cómo cambia la entropía cuando el punto óptimo se perturba aleatoriamente. Todas las perturbaciones hacen que disminuya la entropía.
Código Matlab
Función todo en 1 para minimizar la entropía (recién agregado a esta publicación):
https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m