Problema de optimización restringida en Matrix Entropy

10

Tengo un problema de optimización restringido en la entropía de la matriz (Shannon) (sum(entr(eig(A)))) . La matriz A se puede escribir como la suma de las matrices de rango 1 de la forma [viviT] dondevi es un vector normalizado dado. Los coeficientes de las matrices de rango uno son las incógnitas en las que optimizamos y tienen que ser mayores que cero y sumar 1.

En una sintaxis similar a CVX, el problema es el siguiente: dada la variable c(n)

minimizesum(entr(eig(A)))

subject toUN=CyovyovyoTCyo=1Cyo0 0
.

¿Alguien tiene una idea de cómo resolver esto de manera eficiente? Ya sé que probablemente no se pueda lanzar como un problema de programación semi-definida (SDP).

Seca
fuente

Respuestas:

8

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=1NciviviT
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 ) ) 0ci0AAσmin(A(c))0 como . Dado que la derivada de - σ log ( σci0 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.ci0

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={uiTdAujλjλi,i=j0,i=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(dU2TdA1U+UTdA1dU2)=2I(dU2TdA1U).

d2ΛdU2Cvi

Eliminar la restricción de igualdad

i=1Nci=1N1

cN=1i=1N1ci.

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).

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)

  1. c~=[1/N,1/N,,1/N]
  2. c=[c~,1i=1N1ci]
  3. A=iciviviT
  4. UΛA
  5. G=MT[I(VTUBUTV)]
  6. HG=ppHHδc~dU2BaBb
    MT[I(VT[2dU2BaUT+UBbUT]V)]
  7. c~c~p
  8. 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. ingrese la descripción de la imagen aquí

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

Nick Alger
fuente
¡Muchas gracias! Lo resolví con simple con gradiente de asistencia, pero esto es probablemente más confiable. El hecho de que v tenga que ser de rango completo en el archivo matlab es lo único que me molesta.
seca el
@NickAlger El enlace proporcionado no funciona, ¿puedo solicitarle que eche un vistazo?
Creador
@Creator enlace actualizado en la publicación! github.com/NickAlger/various_scripts/blob/master/…
Nick Alger
@NickAlger ¿Hay una restricción en la matriz que el algoritmo puede operar? ¿Es este algoritmo adecuado para matrices con elementos complejos? En mi caso, la SVD falla después de un tiempo ya que la matriz tiene Nan.
Creador
No creo que los números complejos sean un problema. Una limitación del método es que la solución óptima no puede tener valores propios repetidos, lo que supongo es lo que está sucediendo aquí. En este caso, el método converge a algo que se divide por cero en la ecuación C. Puede intentar perturbar aleatoriamente las entradas un poco y ver si eso ayuda a las cosas. Hay una manera de evitar esto en el documento de Overton mencionado anteriormente, pero mi código no es tan avanzado.
Nick Alger