매트릭스 엔트로피의 제한된 최적화 문제


10

(Shannon) 행렬 엔트로피 에서 제한된 최적화 문제가 있습니다. 행렬 는 형식의 랭크 1 행렬의 합으로 쓸 수 있습니다 여기서 는 주어진 정규화 된 벡터입니다. 랭크 1 행렬의 계수는 우리가 최적화하는 미지수이며 0보다 크고 1까지 합산해야합니다.(sum(entr(eig(A))))A[viviT]vi

CVX와 유사한 구문에서 문제는 다음과 같습니다. 주어진 변수c(n)

minimizesum(entr(eig(A)))

subject toA=civiviTci=1ci0
.

이것을 효율적으로 해결하는 방법에 대한 아이디어가 있습니까? 나는 그것이 아마도 SDP (Semi-definite Programming) 문제로 캐스팅 될 수 없다는 것을 이미 알고 있습니다.

답변:


8

편집 : 동료가 아래의 방법이 엔트로피 기능에 특화된 다음 논문의 일반적인 방법의 예라고 알려줍니다.

Overton, Michael L. 및 Robert S. Womersley. "대칭 행렬의 고유 값을 최적화하기위한 2 차 미분." 매트릭스 분석 및 응용에 관한 SIAM Journal 16.3 (1995) : 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf

개요

이 게시물에서 나는 최적화 문제가 잘 제기되고 불평등 제약이 솔루션에서 비활성이라는 것을 보여준 다음 엔트로피 함수의 첫 번째와 두 번째 Frechet 파생 상품을 계산 한 다음 등식 제약이 제거 된 문제에 대한 뉴턴의 방법을 제안합니다. 마지막으로 Matlab 코드 및 수치 결과가 제공됩니다.

최적화 문제의 자세

첫째, 양의 정한 행렬의 합은 양의 정한입니다. 따라서 의 경우 순위 1 행렬의 합 는 양의 한정입니다. 세트 가 전체 순위이면 고유 값 이 양수이므로 고유 값의 로그를 가져올 수 있습니다. 따라서 목적 함수는 실행 가능한 세트의 내부에 잘 정의되어 있습니다.A ( c ) : = N i = 1 c i v i v T i v i Aci>0

A(c):=i=1NciviviT
viA

둘째, 으로 는 순위를 잃으므로 가장 작은 고유 값은 0이됩니다. 즉, 은 입니다. 의 미분은 지기 때문에 실행 가능한 세트의 경계에 접근하는 연속적으로 더 좋고 더 나은 점을 가질 수 없습니다. 따라서 문제가 잘 정의되어 있으며 불평등 제약 조건 도 비활성화되어 있습니다.A A σ m i n ( A ( c ) ) 0 c i0 σ log ( σ ) σ 0 c i0ci0AAσmin(A(c))0ci0σlog(σ)σ0ci0

엔트로피 함수의 Frechet 파생 상품

실행 가능한 영역의 내부에서 엔트로피 기능은 모든 곳에서 분화 가능한 Frechet이며 고유 값이 반복되지 않는 곳에서는 두 번 분화 할 수 있습니다. 뉴턴의 방법을 수행하려면 행렬의 고유 값에 따라 행렬 엔트로피의 미분 값을 계산해야합니다. 이를 위해서는 행렬의 변화와 관련하여 행렬의 고유 값 분해에 대한 감도를 계산해야합니다.

고유 값 분해가 인 행렬 경우 원래 행렬의 변화에 ​​대한 고유 값 행렬의 미분은 이며 고유 벡터 행렬의 미분 은 여기서 는 Hadamard 곱 입니다. 계수 행렬 AA=UΛUT

dΛ=I(UTdAU),
dU=UC(dA),
C={uiTdAujλjλi,i=j0,i=j

이러한 공식은 고유 값 방정식 를 차별화하여 파생되며 공식은 고유 값이 고유 할 때마다 유지됩니다. 고유 값이 반복 될 때 의 수식 은 고유하지 않은 고유 벡터가 신중하게 선택되는 한 확장 가능한 분리 불연속성을 갖습니다. 이에 대한 자세한 내용은 다음 프레젠테이션용지를 참조하십시오 .AU=ΛUdΛ

그런 다음

d2Λ=d(I(UTdA1U))=I(dU2TdA1U+UTdA1dU2)=2I(dU2TdA1U).

고유 값 행렬의 첫 번째 미분 값이 반복 고유 값에서 연속적으로 만들어 질 수 있지만, 는 에 의존하므로 의존 하므로 고유 값이 서로를 향해 변성됨에 ​​따라 폭발하기 때문에 두 번째 미분 값은 불가능 합니다. 그러나 진정한 솔루션이 고유 값을 반복하지 않는 한 괜찮습니다. 수치 실험은 이것이 일반적인 의 경우라고 제안 하지만, 현재로서는 증거가 없습니다. 엔트로피를 최대화하면 일반적으로 가능한 경우 고유 값을 더 가깝게 만들려고하기 때문에 이해하는 것이 중요합니다.d2ΛdU2Cvi

평등 제약 제거

첫 번째 계수 에 대해서만 작업 하고 마지막 계수를 설정 하여 제약 조건 을 제거 할 수 있습니다.i=1Nci=1N1

cN=1i=1N1ci.

전반적으로, 약 4 페이지의 행렬 계산 후, 제 1 계수 의 변화에 ​​대한 목적 함수의 감소 된 제 1 및 제 2 도함수는 다음과 같이 주어진다. 여기서 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).

제약 조건을 제거한 후 뉴턴의 방법

불평등 제약 조건이 비활성 상태이므로 실행 가능한 세트에서 시작하여 내부 최대 값에 대한 2 차 수렴을 위해 트러스트 영역 또는 라인 검색 부정확 한 뉴턴 CG를 실행합니다.

방법은 다음과 같습니다 (신뢰 영역 / 행 검색 세부 사항은 포함하지 않음)

  1. 시작 .c~=[1/N,1/N,,1/N]
  2. 마지막 계수 .c=[c~,1i=1N1ci]
  3. 구축 .A=iciviviT
  4. 고유 벡터 와 고유 값 of 찾습니다 .UΛA
  5. 구배 합니다.G=MT[I(VTUBUTV)]
  6. 해결 에 대한 공액 구배 비아 (적용하는 기능 만 아닌 실제 같이 필요하다). 벡터에 적용 찾아 , 및 다음 식으로 밀봉 (P) H H δ ~ C D U 2 B B B M T [ I ( V T [ 2 D U 2 B U T + U B B U T ] V ) ]HG=ppHHδc~dU2BaBb
    MT[I(VT[2dU2BaUT+UBbUT]V)]
  7. 설정 .c~c~p
  8. 고토 2.

결과

랜덤 경우 steplength에 대한 linesearch를 사용하면 메소드가 매우 빠르게 수렴됩니다. 예를 들어, (100 ) 인 다음 결과 가 일반적입니다.이 방법은 2 차적으로 수렴됩니다. N = 100 v iviN=100vi

>> N = 100;
>> V = 랜드 (N, N);
>>에 대한 k = 1 : NV (:, k) = V (:, k) / norm (V (:, k)); 종료
>> maxEntropyMatrix (V);
뉴턴 반복 = 1, 규범 (grad f) = 0.67748
뉴턴 반복 = 2, 규범 (grad f) = 0.03644
뉴턴 반복 = 3, 규범 (grad f) = 0.0012167
뉴턴 반복 = 4, 규범 (grad f) = 1.3239e-06
뉴턴 반복 = 5, 규범 (grad f) = 7.7114e-13

계산 된 최적 지점이 실제로 최대 값임을 확인하기 위해 최적 지점이 임의로 교란 될 때 엔트로피가 어떻게 변하는 지에 대한 그래프가 있습니다. 모든 섭동은 엔트로피를 감소시킵니다. 여기에 이미지 설명을 입력하십시오

MATLAB 코드

엔트로피를 최소화하는 1 개의 기능 (이 게시물에 새로 추가) : https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m


대단히 감사합니다! 그라디언트 어 센트를 사용하여 간단하게 해결했지만 더 신뢰할 수 있습니다. matlab 파일에서 v가 최대 순위 여야한다는 사실이 나를 귀찮게하는 유일한 것입니다.
건조

@NickAlger 제공된 링크가 작동하지 않습니다. 살펴봐도 될까요?
창조자

@Creator가 게시물의 링크를 업데이트했습니다! github.com/NickAlger/various_scripts/blob/master/…
Nick Alger

@NickAlger 알고리즘이 작동 할 수있는 매트릭스에 제약이 있습니까? 이 요소는 복잡한 요소가있는 행렬에 적합합니까? 필자의 경우 SVD는 행렬에 Nan이 있기 때문에 얼마 후 실패합니다.
창조자

나는 복잡한 숫자가 문제가 될 것이라고 생각하지 않습니다. 이 방법의 한 가지 한계는 최적의 솔루션이 고유 값을 반복 할 수 없다는 것입니다. 이 경우,이 방법은 C 방정식에서 0으로 나누어지는 것으로 수렴됩니다. 무작위로 입력을 교란 시켜서 도움이되는지 확인할 수 있습니다. 위에서 언급 한 Overton 용지 에서이 문제를 해결할 수있는 방법이 있지만 내 코드는 그렇게 발전하지 않았습니다.
Nick Alger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.