Variational quantum eigensolver (VQE)
Pelajaran ini akan memperkenalkan variational quantum eigensolver, menjelaskan pentingnya algoritma ini sebagai fondasi dalam komputasi kuantum, serta mengeksplorasi kelebihan dan kelemahannya. VQE sendiri, tanpa metode pendukung, kemungkinan besar tidak cukup untuk komputasi kuantum skala utilitas modern. Meskipun begitu, algoritma ini tetap penting sebagai metode hibrida klasik-kuantum yang khas, dan merupakan fondasi penting bagi banyak algoritma yang lebih canggih.
Video ini memberikan gambaran umum tentang VQE dan faktor-faktor yang mempengaruhi efisiensinya. Teks di bawah ini menambahkan detail lebih lanjut dan mengimplementasikan VQE menggunakan Qiskit.
1. Apa itu VQE?
Variational quantum eigensolver adalah algoritma yang menggunakan komputasi klasik dan kuantum secara bersamaan untuk menyelesaikan suatu tugas. Ada 4 komponen utama dalam perhitungan VQE:
- Sebuah operator: Biasanya sebuah Hamiltonian, yang akan kita sebut , yang menggambarkan suatu properti sistem yang ingin kamu optimalkan. Cara lain untuk menyebutnya adalah bahwa kamu mencari eigenvector dari operator ini yang bersesuaian dengan eigenvalue minimum. Eigenvector ini sering disebut "ground state".
- "Ansatz" (kata dalam bahasa Jerman yang berarti "pendekatan"): ini adalah Circuit kuantum yang mempersiapkan keadaan kuantum yang mendekati eigenvector yang dicari. Sebenarnya ansatz adalah sebuah keluarga Circuit kuantum, karena beberapa Gate dalam ansatz diparametrikan, yaitu diberi parameter yang bisa kita variasikan. Keluarga Circuit kuantum ini bisa mempersiapkan keluarga keadaan kuantum yang mendekati ground state.
- Sebuah Estimator: cara untuk mengestimasi nilai ekspektasi dari operator atas keadaan kuantum variasional saat ini. Terkadang yang benar-benar kita pedulikan hanyalah nilai ekspektasi ini, yang kita sebut fungsi biaya. Terkadang, kita peduli pada fungsi yang lebih kompleks yang masih bisa ditulis dari satu atau lebih nilai ekspektasi.
- Optimizer klasik: algoritma yang memvariasikan parameter untuk mencoba meminimalkan fungsi biaya.
Yuk kita lihat setiap komponen ini lebih dalam.
1.1 Operator (Hamiltonian)
Inti dari masalah VQE adalah operator yang menggambarkan sistem yang diminati. Kita asumsikan di sini bahwa eigenvalue terendah dan eigenvector yang bersesuaian dari operator ini berguna untuk tujuan ilmiah atau bisnis tertentu. Contohnya bisa berupa Hamiltonian kimia yang menggambarkan molekul, sehingga eigenvalue terendah dari operator bersesuaian dengan energi ground state molekul tersebut, dan eigenstate yang bersesuaian menggambarkan geometri atau konfigurasi elektron molekul. Atau operator bisa menggambarkan biaya dari proses tertentu yang akan dioptimalkan, dan eigenstate-nya bisa bersesuaian dengan rute atau praktik. Di beberapa bidang, seperti fisika, "Hamiltonian" hampir selalu merujuk pada operator yang menggambarkan energi sistem fisika. Tapi dalam komputasi kuantum, umum untuk melihat operator kuantum yang menggambarkan masalah bisnis atau logistik juga disebut "Hamiltonian". Kita akan mengadopsi konvensi tersebut di sini.

Pemetaan masalah fisika atau optimisasi ke qubit biasanya merupakan tugas yang tidak sepele, tetapi detail tersebut bukan fokus kursus ini. Diskusi umum tentang pemetaan masalah ke operator kuantum bisa ditemukan di Quantum computing in practice. Pandangan lebih detail tentang pemetaan masalah kimia ke operator kuantum bisa ditemukan di Quantum Chemistry with VQE.
Untuk tujuan kursus ini, kita akan mengasumsikan bahwa bentuk Hamiltonian sudah diketahui. Misalnya, Hamiltonian untuk molekul hidrogen sederhana (dengan asumsi active space tertentu, dan menggunakan Jordan-Wigner mapper) adalah:
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(
[
"IIII",
"IIIZ",
"IZII",
"IIZI",
"ZIII",
"IZIZ",
"IIZZ",
"ZIIZ",
"IZZI",
"ZZII",
"ZIZI",
"YYYY",
"XXYY",
"YYXX",
"XXXX",
],
coeffs=[
-0.09820182 + 0.0j,
-0.1740751 + 0.0j,
-0.1740751 + 0.0j,
0.2242933 + 0.0j,
0.2242933 + 0.0j,
0.16891402 + 0.0j,
0.1210099 + 0.0j,
0.16631441 + 0.0j,
0.16631441 + 0.0j,
0.1210099 + 0.0j,
0.17504456 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
],
)
Perhatikan bahwa dalam Hamiltonian di atas, ada suku-suku seperti ZZII dan YYYY yang tidak saling komutasi. Artinya, untuk mengevaluasi ZZII, kita perlu mengukur operator Pauli Z pada qubit ke-3 (di antara pengukuran lainnya). Tapi untuk mengevaluasi YYYY, kita perlu mengukur operator Pauli Y pada qubit yang sama, yaitu qubit ke-3. Ada relasi ketidakpastian antara operator Y dan Z pada qubit yang sama; kita tidak bisa mengukur kedua operator tersebut secara bersamaan. Kita akan membahas kembali poin ini di bawah, dan memang sepanjang kursus ini.
Hamiltonian di atas adalah operator matriks . Mendiagonalisasi operator untuk menemukan eigenvalue energi terendahnya tidak terlalu sulit.
import numpy as np
A = np.array(hamiltonian)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print("The ground state energy is ", min(eigenvalues), "hartrees")
The ground state energy is -1.1459778447627311 hartrees
Eigensolver klasik brute force tidak bisa diskalakan untuk menggambarkan energi atau geometri sistem atom yang sangat besar, seperti obat-obatan atau protein. VQE adalah salah satu upaya awal untuk memanfaatkan komputasi kuantum dalam masalah ini.
Kita akan menemukan Hamiltonian dalam pelajaran ini yang jauh lebih besar dari yang di atas. Tapi akan mubazir untuk mendorong batas-batas kemampuan VQE, sebelum kita memperkenalkan beberapa alat yang lebih canggih yang bisa memperkuat atau menggantikan VQE, nanti dalam kursus ini.
1.2 Ansatz
Kata "ansatz" dalam bahasa Jerman berarti "pendekatan". Bentuk jamul yang benar dalam bahasa Jerman adalah "ansätze", meski sering terlihat "ansatzes" atau "ansatze". Dalam konteks VQE, ansatz adalah Circuit kuantum yang digunakan untuk membuat fungsi gelombang multi-qubit yang paling mendekati ground state sistem yang sedang dipelajari, dan dengan demikian menghasilkan nilai ekspektasi terendah dari operator kamu. Circuit kuantum ini akan berisi parameter variasional (sering dikumpulkan dalam vektor variabel ).

Sebuah set nilai awal dari parameter variasional dipilih. Kita akan menyebut operasi unitary dari ansatz pada Circuit . Secara default, semua qubit dalam komputer kuantum IBM® diinisialisasi ke keadaan . Ketika Circuit dijalankan, keadaan qubit akan menjadi
Jika yang kita butuhkan hanyalah energi terendah (menggunakan bahasa sistem fisika), kita bisa mengestimasinya dengan cara sederhana mengukur energi berkali-kali dan mengambil yang terendah. Tapi kita biasanya juga menginginkan konfigurasi yang menghasilkan energi atau eigenvalue terendah tersebut. Jadi langkah selanjutnya adalah estimasi nilai ekspektasi dari Hamiltonian, yang dicapai melalui pengukuran kuantum. Banyak yang terlibat di sana. Tapi kita bisa memahami proses ini secara kualitatif dengan mencatat bahwa probabilitas mengukur energi (lagi-lagi menggunakan bahasa sistem fisika) terkait dengan nilai ekspektasi oleh:
Probabilitas juga terkait dengan overlap antara eigenstate dan keadaan sistem saat ini :
Jadi dengan membuat banyak pengukuran operator Pauli yang membentuk Hamiltonian kita, kita bisa mengestimasi nilai ekspektasi Hamiltonian dalam keadaan sistem saat ini . Langkah selanjutnya adalah memvariasikan parameter dan mencoba untuk lebih mendekati keadaan terendah-energi (ground) dari sistem. Karena parameter variasional dalam ansatz, kadang-kadang disebut sebagai variational form.
Sebelum kita melanjutkan ke proses variasional tersebut, perhatikan bahwa sering berguna untuk memulai keadaan kamu dari keadaan "tebakan awal yang baik". Kamu mungkin tahu cukup banyak tentang sistemmu untuk membuat tebakan awal yang lebih baik dari . Misalnya, umum untuk menginisialisasi qubit ke keadaan Hartree-Fock dalam aplikasi kimia. Tebakan awal yang tidak mengandung parameter variasional ini disebut reference state. Sebut Circuit kuantum yang digunakan untuk membuat reference state . Kapanpun penting untuk membedakan reference state dari sisa ansatz, gunakan: Atau secara ekuivalen
1.3 Estimator
Kita perlu cara untuk mengestimasi nilai ekspektasi Hamiltonian dalam keadaan variasional tertentu . Jika kita bisa mengukur langsung seluruh operator , ini akan sesederhana membuat banyak (katakanlah ) pengukuran dan merata-rata nilai yang diukur:
Di sini, simbol mengingatkan kita bahwa nilai ekspektasi ini hanya akan tepat dalam limit ketika . Tapi dengan ribuan pengukuran yang dilakukan pada Circuit, kesalahan sampling dari nilai ekspektasi cukup rendah. Ada pertimbangan lain seperti noise yang menjadi masalah untuk perhitungan yang sangat presisi.
Namun, umumnya tidak mungkin untuk mengukur sekaligus. mungkin mengandung banyak operator Pauli X, Y, dan Z yang tidak saling komutasi. Jadi Hamiltonian harus dipecah menjadi kelompok-kelompok operator yang bisa diukur secara bersamaan, dan setiap kelompok tersebut harus diestimasi secara terpisah, lalu hasilnya digabungkan untuk mendapatkan nilai ekspektasi. Kita akan membahas ini secara lebih detail di pelajaran berikutnya, ketika kita mendiskusikan skala pendekatan klasik dan kuantum. Kompleksitas dalam pengukuran ini adalah salah satu alasan kita membutuhkan kode yang sangat efisien untuk melakukan estimasi tersebut. Dalam pelajaran ini dan seterusnya, kita akan menggunakan primitif Qiskit Runtime yaitu Estimator untuk tujuan ini.
1.4 Optimizer klasik
Optimizer klasik adalah algoritma klasik apa pun yang dirancang untuk menemukan ekstrema dari fungsi target (biasanya minimum). Mereka menelusuri ruang parameter yang mungkin untuk menemukan set yang meminimalkan beberapa fungsi yang diminati. Secara umum bisa dikategorikan menjadi metode berbasis gradien, yang memanfaatkan informasi gradien, dan metode bebas gradien, yang beroperasi sebagai optimizer black-box. Pilihan optimizer klasik bisa secara signifikan mempengaruhi kinerja algoritma, terutama dengan adanya noise dalam hardware kuantum. Optimizer populer di bidang ini antara lain Adam, AMSGrad, dan SPSA, yang telah menunjukkan hasil yang menjanjikan dalam lingkungan yang noisy. Optimizer yang lebih tradisional termasuk COBYLA dan SLSQP.
Alur kerja umum (ditunjukkan dalam Bagian 3.3) adalah menggunakan salah satu algoritma ini sebagai metode di dalam minimizer seperti fungsi minimize dari scipy. Ini mengambil sebagai argumen:
- Beberapa fungsi yang akan diminimalkan. Ini sering berupa nilai ekspektasi energi. Tapi ini umumnya disebut sebagai "fungsi biaya".
- Sebuah set parameter dari mana pencarian dimulai. Sering disebut atau .
- Argumen, termasuk argumen fungsi biaya. Dalam komputasi kuantum dengan Qiskit, argumen-argumen ini akan mencakup ansatz, Hamiltonian, dan Estimator, yang dibahas lebih lanjut di subbagian berikutnya.
- Sebuah 'method' minimisasi. Ini merujuk pada algoritma spesifik yang digunakan untuk menelusuri ruang parameter. Di sinilah kita akan menentukan, misalnya, COBYLA atau SLSQP.
- Opsi. Opsi yang tersedia mungkin berbeda per metode. Tapi contoh yang hampir semua metode miliki adalah jumlah iterasi maksimum dari optimizer sebelum mengakhiri pencarian: 'maxiter'.

Pada setiap langkah iteratif, nilai ekspektasi Hamiltonian diestimasi dengan membuat banyak pengukuran. Energi yang diestimasi ini dikembalikan oleh fungsi biaya, dan minimizer memperbarui informasi yang dimilikinya tentang lanskap energi. Apa yang dilakukan optimizer untuk memilih langkah berikutnya bervariasi dari metode ke metode. Beberapa menggunakan gradien dan memilih arah penurunan tercuram. Yang lain mungkin memperhitungkan noise dan mungkin mengharuskan biaya turun dengan margin besar sebelum menerima bahwa energi sebenarnya turun ke arah tersebut.
# Example syntax for minimization
# from scipy.optimize import minimize
# res = minimize(cost_func, x0, args=(ansatz, hamiltonian, estimator), method="cobyla", options={'maxiter': 200})
1.5 Prinsip variasional
Dalam konteks ini prinsip variasional sangat penting; ia menyatakan bahwa tidak ada fungsi gelombang variasional yang bisa menghasilkan nilai ekspektasi energi (atau biaya) yang lebih rendah dari yang dihasilkan oleh fungsi gelombang ground state. Secara matematis,
Ini mudah diverifikasi jika kita perhatikan bahwa set semua eigenstate dari membentuk basis lengkap untuk ruang Hilbert. Dengan kata lain, setiap keadaan dan khususnya bisa ditulis sebagai jumlah berbobot (ternormalisasi) dari eigenstate-eigenstate ini:
di mana adalah konstanta yang akan ditentukan, dan . Kita serahkan ini sebagai latihan untuk pembaca. Tapi perhatikan implikasinya: keadaan variasional yang menghasilkan nilai ekspektasi energi terendah adalah estimasi terbaik dari ground state yang sebenarnya.
Uji pemahamanmu
Baca pertanyaan di bawah ini, pikirkan jawabanmu, lalu klik segitiga untuk melihat solusinya.
Verifikasi secara matematis bahwa untuk keadaan variasional mana pun.
Jawaban:
Menggunakan ekspansi keadaan variasional dalam hal eigenstate energi yang diberikan,
kita bisa menuliskan nilai ekspektasi energi variasional sebagai
Untuk semua koefisien . Sehingga kita bisa menulis
2. Perbandingan dengan alur kerja klasik
Katakanlah kita tertarik pada sebuah matriks dengan N baris dan N kolom. Misalkan matriksmu begitu besar sehingga diagonalisasi eksak bukan pilihan. Anggap lebih lanjut bahwa kamu tahu cukup tentang masalahmu untuk membuat beberapa tebakan tentang struktur keseluruhan dari eigenstate target, dan kamu ingin menguji keadaan yang mirip dengan tebakanmu untuk melihat apakah biaya/energimu bisa diturunkan lebih jauh. Ini adalah pendekatan variasional, dan merupakan salah satu metode yang digunakan ketika diagonalisasi eksak bukan pilihan.
2.1 Alur kerja klasik
Menggunakan komputer klasik, ini akan bekerja sebagai berikut:
- Buat keadaan tebakan, dengan beberapa parameter yang akan kamu variasikan: . Meskipun tebakan awal ini bisa acak, itu tidak disarankan. Kita ingin menggunakan pengetahuan tentang masalah yang ada untuk menyesuaikan tebakan kita sebisa mungkin.
- Hitung nilai ekspektasi operator dengan sistem dalam keadaan tersebut:
- Ubah parameter variasional dan ulangi: .
- Gunakan informasi yang terkumpul tentang lanskap keadaan yang mungkin dalam subruang variasionalmu untuk membuat tebakan yang semakin baik dan mendekati keadaan target. Prinsip variasional menjamin bahwa keadaan variasional kita tidak bisa menghasilkan eigenvalue yang lebih rendah dari eigenvalue ground state target. Jadi semakin rendah nilai ekspektasinya semakin baik aproksimasi ground state kita:
Mari kita periksa kesulitan setiap langkah dalam pendekatan ini. Mengatur atau memperbarui parameter secara komputasi mudah; kesulitannya ada pada pemilihan parameter awal yang berguna dan bermotivasi fisika. Menggunakan informasi yang terkumpul dari iterasi sebelumnya untuk memperbarui parameter sedemikian rupa sehingga kamu mendekati ground state tidaklah sepele. Tapi algoritma optimisasi klasik ada yang melakukan ini dengan cukup efisien. Optimisasi klasik ini hanya mahal karena mungkin membutuhkan banyak iterasi; dalam kasus terburuk, jumlah iterasi bisa bertambah secara eksponensial dengan N. Langkah tunggal yang paling mahal secara komputasi hampir pasti adalah menghitung nilai ekspektasi matriksmu menggunakan keadaan tertentu :
Matriks harus bekerja pada vektor -elemen, yang bersesuaian dengan: operasi perkalian dalam kasus terburuk. Ini harus dilakukan pada setiap iterasi parameter. Untuk matriks yang sangat besar, ini memiliki biaya komputasi yang tinggi.
2.2 Alur kerja kuantum dan kelompok Pauli yang komutasi
Sekarang bayangkan merelokasikan bagian perhitungan ini ke komputer kuantum. Alih-alih menghitung nilai ekspektasi ini, kamu mengestimasinya dengan mempersiapkan keadaan pada komputer kuantum menggunakan ansatz variasionalmu, lalu membuat pengukuran.
Itu mungkin terdengar lebih mudah dari kenyataannya. umumnya tidak mudah diukur. Misalnya bisa terdiri dari banyak operator Pauli X, Y, dan Z yang tidak saling komutasi. Tapi bisa ditulis sebagai kombinasi linear dari suku-suku, , yang masing-masing mudah diukur (misalnya, operator Pauli atau kelompok operator Pauli yang komutasi qubit-wise). Nilai ekspektasi atas beberapa keadaan adalah jumlah berbobot dari nilai ekspektasi suku-suku konstituen . Ekspresi ini berlaku untuk keadaan apa pun, tapi kita akan menggunakannya secara khusus dengan keadaan variasional