行列エントロピーの制約付き最適化問題


10

(シャノン)マトリックスエントロピーに制約付き最適化問題があります。行列Aは、形式[ v iのランク1行列の合計として記述できます。(sum(entr(eig(A))))Aここで、 v iは所定の正規化ベクトルです。ランク1行列の係数は、最適化の対象となる未知数であり、それらはゼロより大きく、合計が1でなければなりません。[viviT]vi

CVXのような構文では、問題は次のようになります。与えられた変数c(n)

minimizesum(entr(eig(A)))

subject toA=civiviTci=1ci0

これを効率的に解決する方法についてのアイデアはありますか?私はそれがおそらく半確定プログラミング(SDP)問題としてキャストできないことをすでに知っています。

回答:


8

編集:同僚は、エントロピー関数に特化した場合、以下の私の方法は次の論文の一般的な方法のインスタンスであると私に知らせました

Overton、Michael L.、およびRobert S. Womersley。「対称行列の固有値を最適化するための2次導関数。」SIAM Journal on Matrix Analysis and Applications 16.3(1995):697-718。http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf

概観

この投稿では、最適化問題が適切に提起されており、不等式制約が解で無効であることを示し、次にエントロピー関数の1次および2次フレシェ微分を計算し、等価制約が削除された問題に関するニュートン法を提案します。最後に、Matlabコードと数値結果が表示されます。

最適化問題の適切性

最初に、正定行列の合計は正定であるため、場合、ランク1行列の合計 A c = N i = 1 c i v i v T i は正定です。v iのセットがフルランクの場合、Aの固有値は正なので、固有値の対数をとることができます。したがって、目的関数は実行可能セットの内部で明確に定義されています。ci>0

A(c):=i=1NciviviT
viA

第二に、任意のci0最小の固有値のでランクを失いAはゼロになります。すなわち、σ M I NA C 0のようなC I0。派生以来- σ ログσがとして吹くまでσ 0、1は、実現可能な集合の境界に近づいて連続的に良くポイントのシーケンスを持つことはできません。したがって、問題は明確に定義されており、さらに不等式制約AAσmin(A(c))0ci0σlog(σ)σ0非アクティブです。ci0

エントロピー関数のフレシェ微分

実行可能領域の内部では、エントロピー関数はどこでもフレシェ微分可能であり、固有値が繰り返されない場合はどこでも2倍フレシェ微分可能です。ニュートン法を実行するには、行列の固有値に依存する行列エントロピーの導関数を計算する必要があります。これには、行列の変化に関する行列の固有値分解の感度を計算する必要があります。

リコール行列の場合との固有値分解を伴うA = U Λ U Tであり、元の行列の変化に対する固有値行列の誘導体、 AA=UΛUT および誘導体固有ベクトル行列は、 d U = U C d A )です ここで、アダマール積で、係数行列 C = { u

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.

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を実行します。

方法は次のとおりです(trust-region / line検索の詳細は含まれません)。

  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. 後藤2。

結果

viN=100vi

>> N = 100;
>> V = randn(N、N);
>> for k = 1:NV(:、k)= V(:、k)/ norm(V(:、k)); 終わり
>> maxEntropyMatrix(V);
ニュートン反復= 1、norm(grad f)= 0.67748
ニュートン反復= 2、norm(grad f)= 0.03644
ニュートン反復= 3、norm(grad f)= 0.0012167
ニュートン反復= 4、norm(grad f)= 1.3239e-06
ニュートン反復= 5、norm(grad f)= 7.7114e-13

計算された最適点が実際に最大であることを確認するために、最適点がランダムに摂動されたときのエントロピーの変化のグラフを次に示します。すべての摂動はエントロピーを減少させます。 ここに画像の説明を入力してください

Matlabコード

エントロピーを最小化するオールインワン機能(この投稿に新しく追加):https : //github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m


どうもありがとうございました!私は簡単なグラデーションの上り坂で自分で解決しましたが、これはおそらくより信頼性があります。vがmatlabファイルでフルランクでなければならないという事実は、私を悩ます唯一のものです。
ドリス

@NickAlger提供されたリンクは機能していません。見てもらうようにお願いできますか?
クリエイター

@クリエイターが投稿でリンクを更新しました!github.com/NickAlger/various_scripts/blob/master/…–
Nick Alger、

@NickAlgerアルゴリズムが操作できる行列に制約はありますか?このアルゴリズムは、複雑な要素を含む行列に適していますか?私の場合、マトリックスにNanがあるため、しばらくするとSVDが失敗します。
クリエイター

複素数は問題にならないと思います。この方法の1つの制限は、最適解が固有値を繰り返すことはできないということです。これは、ここで何が起こっているのかと推測しています。この場合、メソッドはC方程式でゼロで除算されるものに収束します。入力を少しランダムに摂動して、それが役立つかどうかを確認できます。上で参照したOvertonの論文でこれを回避する方法はありますが、私のコードはそれほど進んでいません。
Nick Alger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.