Editar: um colega me informou que meu método abaixo é uma instância do método geral no artigo a seguir, quando especializado na função entropia,
Overton, Michael L. e Robert S. Womersley. "Segundas derivadas para otimizar valores próprios de matrizes simétricas." Jornal SIAM sobre Análise e Aplicações de Matrizes 16.3 (1995): 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf
visão global
Neste post, mostro que o problema de otimização está bem colocado e que as restrições de desigualdade estão inativas na solução; depois, calculamos o primeiro e o segundo derivados de Frechet da função entropia; em seguida, proponho o método de Newton para o problema com a restrição de igualdade eliminada. Finalmente, o código Matlab e os resultados numéricos são apresentados.
Boa postura do problema de otimização
Primeiro, a soma de matrizes definidas positivas é definida positiva, de modo que para , a soma de rank-1 matrizes
A ( c ) : = N Σ i = 1 c i v i v o t i
é definida positiva. Se o conjunto de v i é a classificação completa, os autovalores de A são positivos, de modo que os logaritmos dos autovalores podem ser obtidos. Assim, a função objetivo é bem definida no interior do conjunto viável.ci>0
A(c):=∑i=1NcivivTi
viA
ci→0AAσmin(A(c))→0ci→0−σlog(σ)σ→0ci≥0
Derivados de Frechet da função entropia
No interior da região viável, a função de entropia é Frechet diferenciável em todos os lugares e duas vezes Frechet diferenciável onde quer que os autovalores não sejam repetidos. Para fazer o método de Newton, precisamos calcular derivadas da entropia da matriz, que depende dos valores próprios da matriz. Isso requer sensibilidades computacionais da decomposição de autovalor de uma matriz em relação a alterações na matriz.
AA=UΛUT
dΛ=I∘(UTdAU),
dU=UC(dA),
∘C={uTidAujλj−λi,0,i=ji=j
AU=ΛUdΛ
d2Λ=d(I∘(UTdA1U))=I∘(dUT2dA1U+UTdA1dU2)=2I∘(dUT2dA1U).
d2ΛdU2Cvi
Eliminando a restrição de igualdade
∑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 após eliminar a restrição
Como as restrições de desigualdade são inativas, simplesmente começamos no conjunto viável e executamos a região de confiança ou a pesquisa de linhas inexata newton-CG para convergência quadrática aos máximos interiores.
O método é o seguinte, (não incluindo detalhes da pesquisa de região de confiança / linha)
- 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
- Vá para 2.
Resultados
viN=100vi
>> N = 100;
>> V = padrão (N, N);
>> para k = 1: NV (:, k) = V (:, k) / norma (V (:, k)); fim
>> maxEntropyMatrix (V);
Iteração de Newton = 1, norma (grad f) = 0,67748
Iteração de Newton = 2, norma (grad f) = 0,03644
Iteração de Newton = 3, norma (grad f) = 0.0012167
Iteração de Newton = 4, norma (grad f) = 1.3239e-06
Iteração de Newton = 5, norma (grad f) = 7.7114e-13
Para ver que o ponto ótimo calculado é de fato o máximo, aqui está um gráfico de como a entropia muda quando o ponto ótimo é perturbado aleatoriamente. Todas as perturbações fazem a entropia diminuir.
Código Matlab
Função tudo em 1 para minimizar a entropia (adicionada recentemente a esta postagem):
https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m