Masalah Optimasi yang Dibatasi dalam Matriks Entropi

10

Saya memiliki masalah optimisasi kendala dalam entropi (Shannon) matriks . Matriks A dapat ditulis sebagai jumlah dari matriks peringkat 1 dari formulir [ v i(sum(entr(eig(A))))A mana v[viviT] adalah vektor dinormalisasi yang diberikan. Koefisien dari matriks peringkat satu adalah tidak diketahui di mana kami mengoptimalkan dan mereka harus lebih besar dari nol dan jumlah hingga 1.vi

Dalam sintaks seperti CVX masalahnya berjalan sebagai berikut: diberikan variabel c(n)

minimizesum(entr(eig(A)))

.

subject toA=civiviTci=1ci0

Apakah ada yang punya ide bagaimana menyelesaikan ini secara efisien? Saya sudah tahu itu mungkin tidak bisa dilemparkan sebagai masalah pemrograman semi-pasti (SDP).

Kering
sumber

Jawaban:

8

Sunting: Seorang kolega memberi tahu saya bahwa metode saya di bawah ini adalah contoh dari metode umum dalam makalah berikut, ketika dikhususkan untuk fungsi entropi,

Overton, Michael L., dan Robert S. Womersley. "Derivatif kedua untuk mengoptimalkan nilai eigen dari matriks simetris." Jurnal SIAM tentang Analisis dan Aplikasi Matriks 16.3 (1995): 697-718. http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf

Gambaran

Dalam posting ini saya menunjukkan bahwa masalah optimisasi diajukan dengan baik dan bahwa kendala ketimpangan tidak aktif pada solusi, kemudian menghitung turunan Frechet pertama dan kedua dari fungsi entropi, kemudian mengusulkan metode Newton pada masalah dengan kendala kesetaraan dihilangkan. Akhirnya, kode Matlab dan hasil numerik disajikan.

Posisi yang baik dari masalah optimasi

Pertama, jumlah matriks definit positif positif yang pasti, jadi untuk , jumlah dari peringkat-1 matriks A ( c ) : = N Σ i = 1 c i v i v T i positif pasti. Jika himpunan v i adalah peringkat penuh, maka nilai eigen dari A adalah positif, sehingga logaritma dari nilai eigen dapat diambil. Dengan demikian fungsi objektif didefinisikan dengan baik pada interior set yang layak.csaya>0

SEBUAH(c): =saya=1NcsayavsayavsayaT
vsayaSEBUAH

Kedua, seperti apa pun , A kehilangan peringkat sehingga nilai eigen terkecil dari A menjadi nol. Yaitu, σ m i n ( A ( c ) ) 0 sebagai c i0 . Karena turunan - σ log ( σ ) meledak sebagai σ 0csaya0SEBUAHSEBUAHσmsayan(SEBUAH(c))0csaya0-σcatatan(σ)σ0 , seseorang tidak dapat memiliki urutan poin yang lebih baik dan lebih baik mendekati batas set yang layak. Dengan demikian masalahnya didefinisikan dengan baik dan lebih jauh lagi kendala ketimpangan tidak aktif.csaya0

Turunan frechet dari fungsi entropi

Di bagian dalam wilayah yang layak, fungsi entropi adalah Frechet yang dapat dibedakan di mana-mana, dan dua kali Frechet dapat dibedakan di mana pun nilai eigennya tidak diulang. Untuk melakukan metode Newton, kita perlu menghitung turunan dari entropi matriks, yang tergantung pada nilai eigen matriks. Ini membutuhkan kepekaan penghitungan dekomposisi nilai eigen dari matriks sehubungan dengan perubahan dalam matriks.

Ingat bahwa untuk matriks dengan dekomposisi nilai eigen A = USEBUAH , turunan dari matriks nilai eigen sehubungan dengan perubahan dalam matriks asli adalah, d Λ = I ( U T d A U ) , dan turunan dari matriks vektor eigen adalah, d U = U C ( d A ) , di mana adalahproduk Hadamard, dengan koefisien matriks C = { uSEBUAH=UΛUT

dΛ=saya(UTdSEBUAHU),
dU=UC(dSEBUAH),
C={kamusayaTdSEBUAHkamujλj-λsaya,saya=j0,saya=j

Rumus seperti itu diperoleh dengan membedakan persamaan nilai eigen , dan formula itu berlaku setiap kali nilai eigennya berbeda. Ketika ada nilai eigen berulang, rumus untuk d Λ memiliki diskontinuitas yang dapat dilepas yang dapat diperpanjang selama vektor eigen tidak unik dipilih dengan hati-hati. Untuk detail tentang ini, lihat presentasi dan makalah berikut .SEBUAHU=ΛUdΛ

Derivatif kedua kemudian ditemukan dengan membedakan lagi,

d2Λ=d(saya(UTdSEBUAH1U))=saya(dU2TdSEBUAH1U+UTdSEBUAH1dU2)=2saya(dU2TdSEBUAH1U).

d2ΛdU2Cvsaya

Menghilangkan kendala kesetaraan

Kita dapat menghilangkan batasan saya=1Ncsaya=1N-1

cN=1-saya=1N-1csaya.

Secara keseluruhan, setelah sekitar 4 halaman perhitungan matriks, turunan pertama dan kedua dari fungsi objektif sehubungan dengan perubahan dalam koefisien pertama diberikan oleh, d f = d C T 1 M T [ I ( V T UN-1

df=dC1TM.T[saya(VTUBUTV)]
ddf=dC1TM.T[saya(VT[2dU2BSebuahUT+UBbUT]V)],
M.=[111-1-1...-1],

BSebuah=dsayaSebuahg(1+catatanλ1,1+catatanλ2,...,1+catatanλN),

Bb=dsayaSebuahg(d2λ1λ1,...,d2λNλN).

Metode Newton setelah menghilangkan kendala

Karena kendala ketimpangan tidak aktif, kami hanya mulai pada set yang layak dan menjalankan trust-region atau pencarian baris intonact newton-CG untuk konvergensi kuadrat ke maxima interior.

Metode ini adalah sebagai berikut, (tidak termasuk perincian pencarian wilayah / kepercayaan)

  1. c~=[1/N,1/N,...,1/N]
  2. Bangun koefisien terakhir, c=[c~,1-saya=1N-1csaya]
  3. SEBUAH=sayacsayavsayavsayaT
  4. UΛSEBUAH
  5. G=M.T[saya(VTUBUTV)]
  6. HG=halhalHHδc~dU2BSebuahBb
    M.T[saya(VT[2dU2BSebuahUT+UBbUT]V)]
  7. c~c~-hal
  8. Goto 2.

Hasil

vsayaN=100vsaya

>> N = 100;
>> V = randn (N, N);
>> untuk k = 1: NV (:, k) = V (:, k) / norm (V (:, k)); akhir
>> maxEntropyMatrix (V);
Iterasi Newton = 1, norma (grad f) = 0.67748
Iterasi Newton = 2, norma (grad f) = 0,03644
Iterasi Newton = 3, norma (grad f) = 0,0012167
Iterasi Newton = 4, norma (grad f) = 1.3239e-06
Iterasi Newton = 5, norma (grad f) = 7.7114e-13

Untuk melihat bahwa titik optimal yang dihitung sebenarnya adalah maksimum, berikut adalah grafik tentang bagaimana perubahan entropi ketika titik optimal terganggu secara acak. Semua gangguan membuat entropi berkurang. masukkan deskripsi gambar di sini

Kode matlab

Fungsi All in 1 untuk meminimalkan entropi (baru ditambahkan ke posting ini): https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m

Nick Algeria
sumber
Terima kasih banyak! Saya menyelesaikannya dengan sederhana dengan gradient asscent sendiri, tetapi ini mungkin lebih dapat diandalkan. Fakta bahwa v harus memiliki peringkat penuh dalam file matlab adalah satu-satunya hal yang menggangguku.
Kering
@NickAlger Tautan yang disediakan tidak berfungsi, bolehkah saya meminta Anda untuk melihatnya?
Pencipta
@Creator memperbarui tautan dalam pos! github.com/NickAlger/various_scripts/blob/master/…
Nick Alger
@NickAlger Apakah ada kendala pada matriks yang dapat dioperasikan algoritma? Apakah algoritma ini baik untuk matriks dengan elemen kompleks? Dalam kasus saya SVD gagal setelah beberapa waktu karena matriks memiliki Nan.
Pencipta
Saya tidak berpikir bilangan kompleks seharusnya menjadi masalah. Salah satu batasan metode ini adalah solusi optimal tidak dapat mengulangi nilai eigen, yang saya duga adalah apa yang terjadi di sini. Dalam hal ini metode konvergen ke sesuatu yang membaginya dengan nol dalam persamaan C. Anda dapat mencoba sedikit mengganggu input secara acak dan melihat apakah itu membantu. Ada cara untuk mengatasinya dalam makalah Overton yang dirujuk di atas, tetapi kode saya tidak semaju itu.
Nick Alger