Diagonalisasi Krylov kuantum
Dalam pelajaran tentang diagonalisasi Krylov kuantum (KQD) ini, kita akan menjawab pertanyaan berikut:
- Apa itu metode Krylov, secara umum?
- Kenapa metode Krylov bekerja dan dalam kondisi apa?
- Bagaimana komputasi kuantum berperan?
Bagian kuantum dari perhitungan ini sebagian besar didasarkan pada karya dalam Ref [1].
Video di bawah ini memberikan gambaran umum tentang metode Krylov dalam komputasi klasik, memotivasi penggunaannya, dan menjelaskan bagaimana komputasi kuantum dapat berperan dalam alur kerja tersebut. Teks berikutnya memberikan detail lebih lanjut dan mengimplementasikan metode Krylov secara klasik maupun menggunakan komputer kuantum.
1. Pengenalan metode Krylovβ
Metode subruang Krylov bisa merujuk pada salah satu dari beberapa metode yang dibangun di sekitar apa yang disebut subruang Krylov. Ulasan lengkap tentang ini berada di luar cakupan pelajaran ini, tapi Ref [2-4] semuanya bisa memberikan latar belakang yang jauh lebih banyak. Di sini, kita akan fokus pada apa itu subruang Krylov, bagaimana dan mengapa berguna dalam memecahkan masalah nilai eigen, dan akhirnya bagaimana bisa diimplementasikan pada komputer kuantum. Definisi: Diberikan matriks simetris dan semi-definit positif , ruang Krylov dari orde adalah ruang yang dibentangkan oleh vektor-vektor yang diperoleh dengan mengalikan pangkat-pangkat lebih tinggi dari matriks , hingga , dengan vektor referensi .
Meskipun vektor-vektor di atas membentangkan apa yang kita sebut subruang Krylov, tidak ada alasan untuk berasumsi bahwa mereka akan ortogonal. Kita sering menggunakan proses ortonormalisasi iteratif yang mirip dengan ortogonalisasi Gram-Schmidt. Di sini prosesnya sedikit berbeda karena setiap vektor baru dibuat ortogonal terhadap yang lain saat dihasilkan. Dalam konteks ini disebut iterasi Arnoldi. Dimulai dari vektor awal , kita menghasilkan vektor berikutnya , lalu memastikan bahwa vektor kedua ini ortogonal terhadap yang pertama dengan mengurangi proyeksinya pada . Yaitu
Sekarang mudah untuk melihat bahwa karena
Kita lakukan hal yang sama untuk vektor berikutnya, memastikannya ortogonal terhadap kedua vektor sebelumnya:
Jika kita ulangi proses ini untuk semua vektor, kita punya basis ortonormal lengkap untuk subruang Krylov. Perhatikan bahwa proses ortogonalisasi di sini akan menghasilkan nol begitu , karena vektor ortogonal tentu membentangkan ruang penuh. Proses ini juga akan menghasilkan nol jika suatu vektor merupakan vektor eigen dari karena semua vektor selanjutnya akan menjadi kelipatan dari vektor tersebut.
1.1 Contoh sederhana: Krylov dengan tanganβ
Mari kita telusuri pembangkitan subruang Krylov pada matriks yang sangat kecil, sehingga kita bisa melihat prosesnya. Kita mulai dengan matriks awal yang menjadi perhatian kita:
Untuk contoh kecil ini, kita dapat menentukan vektor eigen dan nilai eigen dengan mudah bahkan dengan tangan. Kita tampilkan solusi numeriknya di sini.
# Added by doQumentation β required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy sympy
# One might use linalg.eigh here, but later matrices may not be Hermitian. So we use linalg.eig in this lesson.
import numpy as np
A = np.array([[4, -1, 0], [-1, 4, -1], [0, -1, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
The eigenvalues are [2.58578644 4. 5.41421356]
The eigenvectors are [[ 5.00000000e-01 -7.07106781e-01 5.00000000e-01]
[ 7.07106781e-01 1.37464400e-16 -7.07106781e-01]
[ 5.00000000e-01 7.07106781e-01 5.00000000e-01]]
Kita catat di sini untuk perbandingan nanti:
Kita ingin mempelajari bagaimana proses ini bekerja (atau gagal) seiring kita meningkatkan dimensi subruang Krylov kita, . Untuk itu, kita akan menerapkan proses ini:
- Buat subruang dari ruang vektor penuh dimulai dengan vektor yang dipilih secara acak (sebut jika sudah dinormalisasi, seperti di atas).
- Proyeksikan matriks penuh ke subruang tersebut, dan cari nilai eigen dari matriks yang diproyeksikan .
- Perbesar ukuran subruang dengan menghasilkan lebih banyak vektor, pastikan mereka ortonormal, menggunakan proses yang mirip dengan ortogonalisasi Gram-Schmidt.
- Proyeksikan ke subruang yang lebih besar dan cari nilai eigen dari matriks yang dihasilkan, .
- Ulangi ini sampai nilai eigen konvergen (atau dalam kasus mainan ini, sampai kamu telah menghasilkan vektor yang membentangkan ruang vektor penuh dari matriks asli ).
Implementasi normal dari metode Krylov tidak perlu memecahkan masalah nilai eigen untuk matriks yang diproyeksikan pada setiap subruang Krylov saat dibangun. Kamu bisa membangun subruang dengan dimensi yang diinginkan, memproyeksikan matriks ke subruang tersebut, dan mendiagonalisasi matriks yang diproyeksikan. Memproyeksikan dan mendiagonalisasi pada setiap dimensi subruang hanya dilakukan untuk memeriksa konvergensi.
Dimensi :β
Kita pilih vektor acak, katakanlah
Jika belum dinormalisasi, normalisasikan.
Kita sekarang memproyeksikan matriks kita ke subruang dari satu vektor ini:
Ini adalah proyeksi matriks kita ke subruang Krylov kita ketika hanya berisi satu vektor, . Nilai eigen dari matriks ini secara trivial adalah 4. Kita bisa menganggap ini sebagai estimasi zeroth-order dari nilai eigen (dalam hal ini hanya satu) dari . Meskipun itu adalah estimasi yang buruk, itu berada dalam orde besaran yang benar.
Dimensi :β
Kita sekarang menghasilkan vektor berikutnya dalam subruang kita melalui operasi dengan pada vektor sebelumnya:
Sekarang kita kurangi proyeksi vektor ini ke vektor sebelumnya untuk memastikan ortogonalitas.
Jika belum dinormalisasi, normalisasikan. Dalam hal ini, vektor sudah dinormalisasi, jadi
Kita sekarang memproyeksikan matriks A kita ke subruang dari dua vektor ini:
Kita masih dihadapkan dengan masalah menentukan nilai eigen dari matriks ini. Tapi matriks ini sedikit lebih kecil dari matriks penuh. Dalam masalah yang melibatkan matriks yang sangat besar, bekerja dengan subruang yang lebih kecil ini bisa sangat menguntungkan.
Meskipun ini masih bukan estimasi yang baik, ini lebih baik dari estimasi zeroth order. Kita akan melakukan ini satu iterasi lagi, untuk memastikan prosesnya jelas. Namun, ini meremehkan tujuan metode ini, karena kita akan berakhir mendiagonalisasi matriks 3x3 pada iterasi berikutnya, yang berarti kita belum menghemat waktu atau daya komputasi.
Dimensi :β
Kita sekarang menghasilkan vektor berikutnya dalam subruang kita melalui operasi dengan A pada vektor sebelumnya:
Sekarang kita kurangi proyeksi vektor ini ke kedua vektor sebelumnya untuk memastikan ortogonalitas.
Jika belum dinormalisasi, normalisasikan. Dalam hal ini, vektor sudah dinormalisasi, jadi
Kita sekarang memproyeksikan matriks kita ke subruang dari vektor-vektor ini:
Kita sekarang menentukan nilai eigennya:
Nilai eigen ini persis dengan nilai eigen dari matriks asli . Ini harus demikian, karena kita telah memperluas subruang Krylov kita hingga membentangkan seluruh ruang vektor dari matriks asli .
Dalam contoh ini, metode Krylov mungkin tidak terlihat lebih mudah dari diagonalisasi langsung. Memang, seperti yang akan kita lihat di bagian berikutnya, metode Krylov hanya menguntungkan di atas dimensi matriks tertentu; ini dimaksudkan untuk membantu kita memecahkan masalah nilai eigen/vektor eigen dari matriks yang sangat besar.

Ini adalah satu-satunya contoh yang akan kita tunjukkan dikerjakan "dengan tangan", tapi bagian 2 di bawah menunjukkan contoh komputasional.
Klarifikasi istilahβ
Kesalahpahaman umum adalah bahwa hanya ada satu subruang Krylov untuk masalah tertentu. Tapi tentu saja, karena ada banyak vektor awal yang bisa diterapkan matriks kita, ada banyak subruang Krylov yang mungkin. Kita hanya akan menggunakan frasa "the Krylov subspace" untuk merujuk pada subruang Krylov tertentu yang sudah didefinisikan untuk contoh tertentu. Untuk pendekatan pemecahan masalah umum, kita akan merujuk ke "a Krylov subspace". Klarifikasi terakhir adalah bahwa valid untuk merujuk ke "Krylov space". Sering terlihat disebut "Krylov subspace" karena penggunaannya dalam konteks memproyeksikan matriks dari ruang awal ke dalam subruang. Mengikuti konteks tersebut, kita akan sebagian besar menyebutnya sebagai subruang di sini.
Periksa pemahamanmuβ
Baca pertanyaan di bawah ini, pikirkan jawabanmu, lalu klik segitiga untuk mengungkap setiap solusi.
Jelaskan mengapa tidak (a) berguna, dan (b) mungkin untuk memperluas dimensi subruang Krylov melampaui dimensi dari matriks yang menjadi perhatian.
Jawaban:
(a) Karena kita menortonormalisasi vektor-vektor saat kita membuatnya, sekumpulan vektor tersebut akan membentuk basis lengkap, artinya kombinasi linear dari mereka bisa digunakan untuk membuat vektor apa pun dalam ruang tersebut. (b) Proses ortogonalisasi terdiri dari mengurangi proyeksi vektor baru ke semua vektor sebelumnya. Jika semua vektor sebelumnya membentangkan ruang vektor penuh, maka mengurangi proyeksi ke subruang penuh akan selalu meninggalkan kita dengan vektor nol.
Misalkan seorang rekan peneliti sedang mendemonstrasikan metode Krylov yang diterapkan pada matriks mainan kecil untuk beberapa kolega. Rekan peneliti ini berencana menggunakan matriks dan vektor awal:
dan
Apakah ada yang salah dengan ini? Bagaimana kamu akan menyarankan kolegamu?
Jawaban:
Kolegamu secara tidak sengaja memilih vektor eigen sebagai vektor awalnya. Mengoperasikan matriks pada vektor awal hanya akan mengembalikan vektor yang sama, diskalakan oleh nilai eigen. Ini tidak akan menghasilkan subruang dengan dimensi yang bertambah. Sarankan kolegamu untuk memilih vektor awal yang berbeda, pastikan itu bukan vektor eigen.
Terapkan metode Krylov pada matriks di bawah ini, pilih vektor awal baru yang sesuai. Tuliskan estimasi nilai eigen minimum pada orde ke-0 dan ke-1 dari subruang Krylov kamu.
Jawaban:
Ada banyak kemungkinan jawaban tergantung pada pilihan vektor awal. Kita akan memilih:
Untuk mendapatkan kita terapkan sekali ke , lalu buat ortogonal terhadap
Pada orde ke-0, proyeksi ke subruang Krylov kita adalah
Pada orde ke-1, proyeksi ke subruang Krylov ini adalah
Ini bisa dilakukan dengan tangan, tapi paling mudah menggunakan numpy:
import numpy as np
vstar = np.array([[1/np.sqrt(3),1/np.sqrt(3),1/np.sqrt(3)],[-1/np.sqrt(6),np.sqrt(2/3),-1/np.sqrt(6)]]
)
A = np.array([[1, 1, 0],
[1, 1, 1],
[0, 1, 1]])
v = np.array([[1/np.sqrt(3),-1/np.sqrt(6)],[1/np.sqrt(3),np.sqrt(2/3)],[1/np.sqrt(3),-1/np.sqrt(6)]])
proj = vstar@A@v
print(proj)
eigenvalues, eigenvectors = np.linalg.eig(proj)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
outputs:
[[ 2.33333333 0.47140452]
[ 0.47140452 -0.33333333]]
The eigenvalues are [ 2.41421356 -0.41421356]
The eigenvectors are [[ 0.98559856 -0.16910198]
[ 0.16910198 0.98559856]]
Estimasi nilai eigen minimum adalah -0.414.
1.2 Jenis-jenis metode Krylovβ
"Metode subruang Krylov" bisa merujuk pada salah satu dari beberapa teknik iteratif yang digunakan untuk memecahkan sistem linear besar dan masalah nilai eigen. Yang semuanya memiliki kesamaan adalah mereka membangun solusi perkiraan dari subruang Krylov
di mana adalah tebakan awal (lihat Ref [5]). Mereka berbeda dalam cara memilih perkiraan terbaik dari subruang ini, menyeimbangkan faktor seperti laju konvergensi, penggunaan memori, dan biaya komputasi keseluruhan. Fokus pelajaran ini adalah memanfaatkan komputasi kuantum dalam konteks metode subruang Krylov; pembahasan mendalam tentang metode-metode ini berada di luar cakupannya. Definisi singkat di bawah ini hanya untuk konteks dan mencakup beberapa referensi untuk menyelidiki metode-metode ini lebih lanjut.
Metode gradien konjugat (CG): Metode ini digunakan untuk memecahkan sistem linear simetris dan definit positif[6]. Ini meminimalkan A-norm dari galat pada setiap iterasi, membuatnya sangat efektif untuk sistem yang muncul dari PDE eliptik yang terdiskretisasi[7]. Kita akan menggunakan pendekatan ini di bagian berikutnya untuk memotivasi mengapa subruang Krylov akan menjadi subruang yang efektif untuk menyelidiki solusi yang lebih baik dari sistem linear.
Metode residual minimal tergeneralisasi (GMRES): Ini dirancang untuk memecahkan sistem linear non-simetris umum. Ini meminimalkan norma residual di atas ruang Krylov pada setiap iterasi, membuatnya kuat tapi berpotensi intensif memori untuk sistem besar[7].
Metode residual minimal (MINRES): Metode ini digunakan untuk memecahkan sistem linear indefinit simetris. Ini mirip dengan GMRES tapi memanfaatkan simetri matriks untuk mengurangi biaya komputasi[8].
Pendekatan lain yang perlu diperhatikan termasuk metode ortogonalisasi penuh (FOM), yang terkait erat dengan metode Arnoldi untuk masalah nilai eigen, metode gradien konjugat bi (BiCG), dan metode reduksi dimensi terinduksi (IDR).
1.3 Mengapa metode subruang Krylov bekerjaβ
Di sini kita akan memotivasi bahwa metode subruang Krylov harus menjadi cara efisien untuk mendekati nilai eigen matriks melalui penyempurnaan iteratif dari aproksimasi vektor eigen, melalui lensa penurunan terjal. Kita akan berargumen bahwa diberikan tebakan awal tentang keadaan dasar, ruang koreksi berturut-turut terhadap tebakan awal yang menghasilkan konvergensi tercepat adalah subruang Krylov. Kita berhenti sebelum pembuktian konvergensi yang ketat.
Asumsikan matriks yang menjadi perhatian kita bersifat simetris dan definit positif. Ini membuat argumen kita paling relevan dengan metode CG di atas. Kita tidak membuat asumsi tentang sparsitas di sini; juga tidak mengklaim bahwa harus bersifat Hermitian (yang diperlukan jika itu adalah Hamiltonian).
Kita biasanya ingin memecahkan masalah dengan bentuk
Seseorang mungkin membayangkan bahwa di mana adalah konstanta, seperti dalam masalah nilai eigen. Tapi pernyataan masalah kita tetap lebih umum untuk saat ini.
Kita mulai dengan vektor yang merupakan solusi perkiraan. Meskipun ada paralel antara tebakan