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
A ( c ) : = ¢i = 1NcsayavsayavTsaya
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 i → 0 . Karena turunan - σ log ( σ ) meledak sebagai σ → 0csaya→ 0SEBUAHSEBUAHσm i n( A ( c ) ) → 0csaya→ 0- σ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.csaya≥ 0
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 = { uA = UΛ UT
dΛ = Saya∘ ( UTdA U) ,
dU= UC( dA ) ,
∘C= { uTsayadA kamujλj- λsaya,0 ,i = ji = 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 .A U= Λ UdΛ
Derivatif kedua kemudian ditemukan dengan membedakan lagi,
d2Λ= d( Saya∘ ( UTdSEBUAH1U) )= Saya∘ ( dUT2dSEBUAH1U+ UTdSEBUAH1dU2)= 2 I∘ ( dUT2dSEBUAH1U) .
d2ΛdU2Cvsaya
Menghilangkan kendala kesetaraan
Kita dapat menghilangkan batasan ∑Ni = 1csaya= 1N- 1
cN= 1 - ∑i = 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= dCT1M.T[ Saya∘ ( VTUB UTV) ]
ddf= dCT1M.T[ Saya∘ ( VT[ 2 dU2BSebuahUT+ UBbUT] V) ] ,
M.= ⎡⎣⎢⎢⎢⎢⎢⎢⎢1- 11- 1⋱...1- 1⎤⎦⎥⎥⎥⎥⎥⎥⎥,
BSebuah= d i a g ( 1 + logλ1, 1 + logλ2, … , 1 + logλN) ,
Bb= d i a g ( 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)
- c~= [ 1 / N, 1 / N, … , 1 / N]
- Bangun koefisien terakhir, c = [ c~, 1 - ∑N- 1i = 1csaya]
- A = ∑sayacsayavsayavTsaya
- UΛSEBUAH
- G = MT[ Saya∘ ( VTUB UTV) ]
- HG = phalHHδc~dU2BSebuahBb
M.T[ Saya∘ ( VT[ 2 dU2BSebuahUT+ UBbUT] V) ]
- c~← c~- hal
- 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.
Kode matlab
Fungsi All in 1 untuk meminimalkan entropi (baru ditambahkan ke posting ini):
https://github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m