Langkau ke kandungan utama

Penyelesai eigen kuantum variasi (VQE)

Pelajaran ini akan memperkenalkan penyelesai eigen kuantum variasi, menjelaskan kepentingannya sebagai algoritma asas dalam pengkomputeran kuantum, dan juga meneroka kekuatan dan kelemahannya. VQE sendiri, tanpa kaedah augmentasi, tidak mungkin mencukupi untuk pengiraan kuantum berskala utiliti moden. Ia tetap penting sebagai kaedah hibrid klasik-kuantum arketaip, dan ia adalah asas penting yang banyak algoritma lebih lanjut dibina di atasnya.

Video ini memberi gambaran keseluruhan VQE dan faktor-faktor yang mempengaruhi kecekapannya. Teks di bawah menambahkan lebih banyak perincian dan melaksanakan VQE menggunakan Qiskit.

1. Apakah VQE?

Penyelesai eigen kuantum variasi ialah algoritma yang menggunakan pengkomputeran klasik dan kuantum secara bersama untuk melaksanakan satu tugas. Terdapat 4 komponen utama pengiraan VQE:

  • Operator: Selalunya Hamiltonian, yang kita panggil HH, yang menggambarkan sifat sistem yang ingin anda optimumkan. Cara lain untuk menyatakannya ialah anda mencari vektor eigen operator ini yang sepadan dengan nilai eigen minimum. Kita sering memanggil vektor eigen itu "keadaan tanah".
  • "Ansatz" (perkataan Jerman bermakna "pendekatan"): ini ialah litar kuantum yang menyediakan keadaan kuantum yang menganggarkan vektor eigen yang anda cari. Sebenarnya ansatz adalah keluarga litar kuantum, kerana beberapa gate dalam ansatz adalah berparameter, iaitu, mereka diberi parameter yang boleh kita ubah. Keluarga litar kuantum ini boleh menyediakan keluarga keadaan kuantum yang menganggarkan keadaan tanah.
  • Estimator: cara untuk menganggar nilai jangkaan operator HH ke atas keadaan kuantum variasi semasa. Kadang-kadang apa yang kita pedulikan ialah hanya nilai jangkaan ini, yang kita panggil fungsi kos. Kadang-kadang, kita peduli tentang fungsi yang lebih rumit yang masih boleh ditulis bermula daripada satu atau lebih nilai jangkaan.
  • Pengoptimum klasik: algoritma yang mengubah parameter untuk cuba meminimumkan fungsi kos.

Mari kita lihat setiap komponen ini dengan lebih mendalam.

1.1 Operator (Hamiltonian)

Teras masalah VQE ialah operator yang menggambarkan sistem yang diminati. Kita akan mengandaikan di sini bahawa nilai eigen terendah dan vektor eigen yang sepadan bagi operator ini berguna untuk beberapa tujuan saintifik atau perniagaan. Contohnya mungkin termasuk Hamiltonian kimia yang menggambarkan molekul, sedemikian sehingga nilai eigen terendah operator itu sepadan dengan tenaga keadaan tanah molekul, dan keadaan eigen yang sepadan menggambarkan geometri atau konfigurasi elektron molekul. Atau operator boleh menggambarkan kos proses tertentu yang perlu dioptimumkan, dan keadaan eigen boleh sepadan dengan laluan atau amalan. Dalam beberapa bidang, seperti fizik, "Hamiltonian" hampir selalu merujuk kepada operator yang menggambarkan tenaga sistem fizikal. Tetapi dalam pengkomputeran kuantum, adalah biasa untuk melihat operator kuantum yang menggambarkan masalah perniagaan atau logistik juga dirujuk sebagai "Hamiltonian". Kita akan menggunakan konvensyen itu di sini.

Imej orbital atom dan imej rangkaian banyak nod dan sambungan antara mereka.

Memetakan masalah fizikal atau pengoptimuman kepada Qubit biasanya merupakan tugas yang tidak trivial, tetapi perincian tersebut bukan fokus kursus ini. Perbincangan umum tentang pemetaan masalah kepada operator kuantum boleh didapati dalam Pengkomputeran kuantum dalam praktik. Pandangan lebih terperinci tentang pemetaan masalah kimia ke dalam operator kuantum boleh didapati dalam Kimia Kuantum dengan VQE.

Untuk tujuan kursus ini, kita akan mengandaikan bentuk Hamiltonian adalah diketahui. Sebagai contoh, Hamiltonian untuk molekul hidrogen mudah (di bawah andaian ruang aktif tertentu, dan menggunakan pemetaan Jordan-Wigner) ialah:

# 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 bahawa dalam Hamiltonian di atas, terdapat sebutan seperti ZZII dan YYYY yang tidak berkomut antara satu sama lain. Iaitu, untuk menilai ZZII, kita perlu mengukur operator Pauli Z pada Qubit 3 (antara pengukuran lain). Tetapi untuk menilai YYYY, kita perlu mengukur operator Pauli Y pada Qubit yang sama, Qubit 3. Terdapat hubungan ketidakpastian antara operator Y dan Z pada Qubit yang sama; kita tidak boleh mengukur kedua-dua operator itu pada masa yang sama. Kita akan mengulang perkara ini di bawah, dan memang sepanjang kursus. Hamiltonian di atas ialah operator matriks 16×1616\times 16. Mendiagonalisasikan operator untuk mencari nilai eigen tenaga terendah tidak sukar.

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

Penyelesai eigen klasik brute-force tidak boleh berskala untuk menggambarkan tenaga atau geometri sistem atom yang sangat besar, seperti ubat-ubatan atau protein. VQE adalah salah satu percubaan awal untuk memanfaatkan pengkomputeran kuantum dalam masalah ini.

Kita akan menemui Hamiltonian dalam pelajaran ini yang jauh lebih besar daripada yang di atas. Tetapi adalah membazir untuk menolak had kemampuan VQE, sebelum kita memperkenalkan beberapa alat yang lebih lanjut yang boleh menambah atau menggantikan VQE, kemudian dalam kursus ini.

1.2 Ansatz

Perkataan "ansatz" adalah Jerman untuk "pendekatan". Kata jamak yang betul dalam bahasa Jerman ialah "ansätze", walaupun seseorang sering melihat "ansatzes" atau "ansatze". Dalam konteks VQE, ansatz ialah litar kuantum yang anda gunakan untuk mencipta fungsi gelombang berbilang-Qubit yang paling hampir dengan keadaan tanah sistem yang anda kaji, dan yang dengan itu menghasilkan nilai jangkaan terendah bagi operator anda. Litar kuantum ini akan mengandungi parameter variasi (sering dikumpulkan bersama dalam vektor pemboleh ubah θ\vec{\theta}).

Imej litar kuantum dengan parameter variasi berlabel "theta".

Set nilai awal θ0\vec{\theta_0} parameter variasi dipilih. Kita akan memanggil operasi unitari ansatz pada litar Uvar(θ0)U_{\text{var}}(\vec{\theta_0}). Secara lalai, semua Qubit dalam komputer kuantum IBM® dimulakan kepada keadaan 0|0\rangle. Apabila litar dijalankan, keadaan Qubit akan menjadi

ψ(θ0)=Uvar(θ0)0N|\psi(\vec{\theta_0})\rangle=U_{\text{var}}(\vec{\theta_0})|0\rangle^{\otimes N}

Jika kita hanya memerlukan tenaga terendah (menggunakan bahasa sistem fizikal), kita boleh menganggarnya hanya dengan mengukur tenaga berkali-kali dan mengambil yang terendah. Tetapi kita biasanya juga mahukan konfigurasi yang menghasilkan tenaga atau nilai eigen terendah itu. Jadi langkah seterusnya ialah anggaran nilai jangkaan Hamiltonian, yang dicapai melalui pengukuran kuantum. Banyak yang masuk ke dalam itu. Tetapi kita boleh memahami proses ini secara kualitatif dengan menyedari bahawa kebarangkalian PjP_j mengukur tenaga EjE_j (sekali lagi menggunakan bahasa sistem fizikal) berkaitan dengan nilai jangkaan oleh:

ψ(θ0)Hψ(θ0)\langle \psi(\vec{\theta_0}) |H|\psi (\vec{\theta_0}) \rangle

Kebarangkalian PjP_j juga berkaitan dengan pertindihan antara keadaan eigen ϕj|\phi_j\rangle dan keadaan semasa sistem ψ(θ0)|\psi(\vec{\theta_0})\rangle:

Pj=ϕjψ(θ0)2=ϕjUvar(θ0)0N2P_j=|\langle \phi_j|\psi(\vec{\theta_0})\rangle|^2 = |\langle \phi_j|U_{\text{var}}(\vec{\theta_0})|0\rangle^{\otimes N}|^2

Jadi dengan membuat banyak pengukuran operator Pauli yang membentuk Hamiltonian kita, kita boleh menganggar nilai jangkaan Hamiltonian dalam keadaan semasa sistem ψ(θ0)|\psi(\vec{\theta_0})\rangle. Langkah seterusnya ialah mengubah parameter θ\vec{\theta} dan cuba mendekati keadaan (tanah) bertenaga terendah sistem. Kerana parameter variasi dalam ansatz, seseorang kadang-kadang mendengarnya dirujuk sebagai bentuk variasi.

Sebelum kita beralih ke proses variasi itu, perhatikan bahawa sering berguna untuk memulakan keadaan anda dari keadaan "tekaan yang baik". Kamu mungkin tahu cukup tentang sistem anda untuk membuat tekaan awal yang lebih baik daripada 0N|0\rangle^{\otimes N}. Sebagai contoh, adalah biasa untuk memulakan Qubit kepada keadaan Hartree-Fock dalam aplikasi kimia. Tekaan permulaan yang tidak mengandungi sebarang parameter variasi ini dipanggil keadaan rujukan. Mari kita panggil litar kuantum yang digunakan untuk mencipta keadaan rujukan UrefU_{ref}. Setiap kali penting untuk membezakan keadaan rujukan daripada ansatz yang selebihnya, gunakan: Uansatz(θ)=Uvar(θ)Uref.U_{\text{ansatz}}(\vec{\theta}) =U_{\text{var}}(\vec{\theta})U_{\text{ref}}. Secara setara

ψref=Uref0Nψansatz(θ)=Uvar(θ)ψref=Uvar(θ)Uref0N.\begin{aligned} |\psi_{\text{ref}}\rangle&=U_{\text{ref}}|0\rangle^{\otimes N}\\ |\psi_{\text{ansatz}}(\vec{\theta})\rangle&=U_{var}(\vec{\theta})|\psi_{\text{ref}}\rangle = U_{\text{var}}(\vec{\theta})U_{\text{ref}}|0\rangle^{\otimes N}. \end{aligned}

1.3 Estimator

Kita memerlukan cara untuk menganggar nilai jangkaan Hamiltonian kita dalam keadaan variasi tertentu ψ(θ)|\psi(\vec{\theta})\rangle. Jika kita boleh mengukur operator penuh HH secara langsung, ini semudah membuat banyak (katakan NN) pengukuran dan merata-ratakan nilai yang diukur:

ψ(θ)Hψ(θ)N1Nj=1NEj\langle \psi(\vec{\theta})|H|\psi(\vec{\theta})\rangle _N \approx \frac{1}{N}\sum_{j=1}^N {E_j}

Di sini, simbol \approx mengingatkan kita bahawa nilai jangkaan ini hanya akan tepat dengan betul pada had apabila NN\rightarrow \infty. Tetapi dengan ribuan pengukuran dibuat pada litar, ralat pensampelan nilai jangkaan adalah agak rendah. Terdapat pertimbangan lain seperti hingar yang menjadi isu untuk pengiraan yang sangat tepat.

Namun, secara umum tidak mungkin untuk mengukur HH sekaligus. HH mungkin mengandungi pelbagai operator Pauli X, Y, dan Z yang tidak berkomut. Jadi Hamiltonian mesti dipecahkan kepada kumpulan operator yang boleh diukur secara serentak, dan setiap kumpulan sedemikian mesti dianggar secara berasingan, dan hasilnya digabungkan untuk mendapatkan nilai jangkaan. Kita akan menyemak semula ini dengan lebih terperinci dalam pelajaran seterusnya, apabila kita membincangkan penskalaan pendekatan klasik dan kuantum. Kerumitan dalam pengukuran ini adalah salah satu sebab kenapa kita memerlukan kod yang sangat cekap untuk menjalankan anggaran sedemikian. Dalam pelajaran ini dan seterusnya, kita akan menggunakan primitif Qiskit Runtime yang dipanggil Estimator untuk tujuan ini.

1.4 Pengoptimum klasik

Pengoptimum klasik ialah sebarang algoritma klasik yang direka untuk mencari ekstrem fungsi sasaran (biasanya minimum). Mereka mencari dalam ruang parameter yang mungkin untuk mencari set yang meminimumkan beberapa fungsi yang diminati. Ia boleh dikategorikan secara luas kepada kaedah berasaskan kecerunan, yang menggunakan maklumat kecerunan, dan kaedah bebas kecerunan, yang beroperasi sebagai pengoptimum kotak hitam. Pilihan pengoptimum klasik boleh memberi kesan yang besar kepada prestasi algoritma, terutamanya dalam kehadiran hingar dalam perkakasan kuantum. Pengoptimum popular dalam bidang ini termasuk Adam, AMSGrad, dan SPSA, yang telah menunjukkan keputusan yang menjanjikan dalam persekitaran berhingar. Pengoptimum yang lebih tradisional termasuk COBYLA dan SLSQP.

Aliran kerja biasa (ditunjukkan dalam Bahagian 3.3) ialah menggunakan salah satu algoritma ini sebagai kaedah dalam fungsi minimizer seperti fungsi minimize scipy. Ini mengambil argumen-argumen berikut:

  • Beberapa fungsi yang perlu diminimumkan. Ini sering kali nilai jangkaan tenaga. Tetapi ini secara umum dirujuk sebagai "fungsi kos".
  • Satu set parameter dari mana pencarian bermula. Sering dipanggil x0x_0 atau θ0\theta_0.
  • Argumen, termasuk argumen fungsi kos. Dalam pengkomputeran kuantum dengan Qiskit, argumen ini akan merangkumi ansatz, Hamiltonian, dan Estimator, yang dibincangkan lebih lanjut dalam subseksyen seterusnya.
  • 'kaedah' minimisasi. Ini merujuk kepada algoritma spesifik yang digunakan untuk mencari ruang parameter. Di sinilah kita akan menentukan, sebagai contoh, COBYLA atau SLSQP.
  • Pilihan. Pilihan yang tersedia mungkin berbeza mengikut kaedah. Tetapi contoh yang hampir semua kaedah akan merangkumi ialah bilangan maksimum iterasi pengoptimum sebelum menghentikan pencarian: 'maxiter'.

Imej yang menunjukkan garis melengkung yang mewakili tenaga dengan beberapa titik di mana nilai sedang diuji untuk mencari minimum.

Pada setiap langkah iteratif, nilai jangkaan Hamiltonian dianggar dengan membuat banyak pengukuran. Tenaga yang dianggar ini dikembalikan oleh fungsi kos, dan minimizer mengemas kini maklumat yang ia ada tentang landskap tenaga. Apa yang dilakukan pengoptimum untuk memilih langkah seterusnya berbeza dari kaedah ke kaedah. Sesetengahnya menggunakan kecerunan dan memilih arah penurunan tercerun. Yang lain mungkin mengambil kira hingar dan mungkin memerlukan bahawa kos menurun dengan margin yang besar sebelum menerima bahawa tenaga sebenar menurun dalam 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 variasi

Dalam konteks ini prinsip variasi sangat penting; ia menyatakan bahawa tiada fungsi gelombang variasi yang boleh menghasilkan nilai jangkaan tenaga (atau kos) yang lebih rendah daripada yang dihasilkan oleh fungsi gelombang keadaan tanah. Secara matematik,

Evar=ψvarHψvarEmin=ψ0Hψ0E_\text{var}=\langle \psi_\text{var}|H|\psi_\text{var}\rangle \geq E_\text{min}=\langle \psi_\text{0}|H|\psi_\text{0}\rangle

Ini mudah disahkan jika kita memperhatikan bahawa set semua keadaan eigen {ψ0,ψ1,ψ2,...ψn}\{|\psi_0\rangle, |\psi_1\rangle, |\psi_2\rangle, ...|\psi_n \rangle\} dari HH membentuk asas lengkap untuk ruang Hilbert. Dengan kata lain, sebarang keadaan dan khususnya ψvar|\psi_\text{var}\rangle boleh ditulis sebagai jumlah berbobot (ternormal) keadaan eigen HH ini:

ψvar=i=0nciψi|\psi_\text{var}\rangle=\sum_{i=0}^n c_i |\psi_i\rangle

di mana cic_i ialah pemalar yang perlu ditentukan, dan i=0ci2=1\sum_{i=0} |c_i|^2 = 1. Kita tinggalkan ini sebagai latihan untuk pembaca. Tetapi perhatikan implikasinya: keadaan variasi yang menghasilkan nilai jangkaan tenaga terendah adalah anggaran terbaik keadaan tanah sebenar.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segi tiga untuk mendedahkan penyelesaiannya.

Sahkan secara matematik bahawa EvarE0E_\text{var}\geq E_0 untuk sebarang keadaan variasi ψvar|\psi_\text{var}\rangle.

Jawapan:

Menggunakan pengembangan keadaan variasi yang diberikan dari segi keadaan eigen tenaga,

ψvar=i=0nciψi,|\psi_\text{var}\rangle=\sum_{i=0}^n c_i |\psi_i\rangle,

kita boleh menulis nilai jangkaan tenaga variasi sebagai

Evar=ψvarHψvar=(i=0nciψi)H(j=0ncjψj)=(i=0nciψi)(j=0ncjEjψj)=i,j=0ncicjEjψiψj=i,j=0ncicjEjδi,j=i=0nci2Ei.\begin{aligned} E_\text{var}&=\langle \psi_\text{var}|H|\psi_\text{var}\rangle =\left(\sum_{i=0}^n c^*_i \langle \psi_i|\right)H\left(\sum_{j=0}^n c_j |\psi_j\rangle\right)\\ &=\left(\sum_{i=0}^n c^*_i \langle \psi_i|\right)\left(\sum_{j=0}^n c_j E_j|\psi_j\rangle\right)\\ &=\sum_{i,j=0}^n c^*_i c_j E_j \langle \psi_i|\psi_j\rangle\\ &=\sum_{i,j=0}^n c^*_i c_j E_j \delta_{i,j}\\ &=\sum_{i=0}^n |c_i|^2 E_i. \end{aligned}

Untuk semua pekali 0ci210\leq|c_i|^2\leq 1. Jadi kita boleh menulis

Evar=i=0nci2Eii=0nci2E0=E0i=0nci2=E0(1)EvarE0\begin{aligned} E_\text{var}&=\sum_{i=0}^n |c_i|^2 E_i\geq \sum_{i=0}^n |c_i|^2 E_0 = E_0 \sum_{i=0}^n |c_i|^2 = E_0(1) \\ E_\text{var}&\geq E_0 \end{aligned}

2. Perbandingan dengan aliran kerja klasik

Katakan kita berminat dengan matriks dengan N baris dan N lajur. Andaikan matriks anda sangat besar sehingga diagonalisasi tepat bukan pilihan. Andaikan lebih lanjut bahawa anda tahu cukup tentang masalah anda bahawa anda boleh membuat beberapa tekaan tentang struktur keseluruhan keadaan eigen sasaran, dan anda ingin menyelidiki keadaan yang serupa dengan tekaan awal anda untuk melihat sama ada kos/tenaga anda boleh dikurangkan lagi. Ini adalah pendekatan variasi, dan ia adalah satu kaedah yang digunakan apabila diagonalisasi tepat bukan pilihan.

2.1 Aliran kerja klasik

Menggunakan komputer klasik, ini akan berfungsi seperti berikut:

  • Buat keadaan tekaan, dengan beberapa parameter θi\vec{\theta}_i yang akan anda ubah: ψ(θi)|\psi(\vec{\theta}_i)\rangle. Walaupun tekaan awal ini boleh rawak, itu tidak dinasihatkan. Kita mahu menggunakan pengetahuan tentang masalah yang dihadapi untuk menyesuaikan tekaan kita sebanyak mungkin.
  • Kira nilai jangkaan operator dengan sistem dalam keadaan itu: ψ(θi)Hψ(θi)\langle\psi(\vec{\theta}_i)|H|\psi(\vec{\theta}_i)\rangle
  • Ubah parameter variasi dan ulangi: θiθi+1\vec{\theta}_i\rightarrow \vec{\theta}_{i+1}.
  • Gunakan maklumat terkumpul tentang landskap keadaan yang mungkin dalam subruang variasi anda untuk membuat tekaan yang semakin baik dan mendekati keadaan sasaran. Prinsip variasi menjamin bahawa keadaan variasi kita tidak boleh menghasilkan nilai eigen yang lebih rendah daripada keadaan tanah sasaran. Jadi semakin rendah nilai jangkaan semakin baik anggaran kita bagi keadaan tanah:
minθ{Evar,i=ψ(θi)Hψ(θi)}E0\min_{\vec{\theta}} \{ E_{\text{var},i} = \langle\psi(\vec{\theta_i})|H|\psi(\vec{\theta_i})\rangle \} \geq E_0

Mari kita periksa kesukaran setiap langkah dalam pendekatan ini. Menetapkan atau mengemas kini parameter adalah mudah dari segi pengkomputeran; kesukaran di sana adalah dalam memilih parameter awal yang berguna dan bermotivasi secara fizikal. Menggunakan maklumat terkumpul dari iterasi sebelumnya untuk mengemas kini parameter dengan cara yang mendekati keadaan tanah adalah tidak trivial. Tetapi algoritma pengoptimuman klasik wujud yang melakukan ini dengan cukup cekap. Pengoptimuman klasik ini hanya mahal kerana ia mungkin memerlukan banyak iterasi; dalam kes terburuk, bilangan iterasi mungkin berskala secara eksponen dengan N. Langkah tunggal yang paling mahal dari segi pengkomputeran hampir pasti adalah mengira nilai jangkaan matriks anda menggunakan keadaan yang diberikan ψ(θi)|\psi(\vec{\theta_i})\rangle: ψ(θi)Hψ(θi).\langle\psi(\vec{\theta_i})|H|\psi(\vec{\theta_i})\rangle.

Matriks N×NN\times N mesti bertindak ke atas vektor NN-elemen, yang sepadan dengan: O(N2)O(N^2) operasi pendaraban dalam kes terburuk. Ini mesti dilakukan pada setiap iterasi parameter. Untuk matriks yang sangat besar, ini mempunyai kos pengkomputeran yang tinggi.

2.2 Aliran kerja kuantum dan kumpulan Pauli berkomut

Sekarang bayangkan mengalihkan bahagian pengiraan ini kepada komputer kuantum. Daripada mengira nilai jangkaan ini, anda menganggarnya dengan menyediakan keadaan ψ(θi)|\psi(\vec{\theta_i})\rangle pada komputer kuantum menggunakan ansatz variasi anda, dan kemudian membuat pengukuran.

Itu mungkin terdengar lebih mudah daripada sebenarnya. HH secara umum tidak mudah diukur. Sebagai contoh ia mungkin terdiri daripada banyak operator Pauli X, Y, dan Z yang tidak berkomut. Tetapi HH boleh ditulis sebagai gabungan linear sebutan, hαh_\alpha, masing-masing mudah diukur (sebagai contoh, operator Pauli atau kumpulan operator Pauli berkomut qubit-demi-qubit). Nilai jangkaan HH ke atas beberapa keadaan Ψ|\Psi\rangle ialah jumlah berbobot nilai jangkaan sebutan konstituen hαh_\alpha. Ungkapan ini berlaku untuk sebarang keadaan Ψ|\Psi⟩, tetapi kita akan menggunakannya khusus dengan keadaan variasi kita ψ(θi)|\psi(\theta_i)\rangle.

H=α=1TcαhαH = \sum_{\alpha = 1}^T{c_\alpha h_\alpha}

di mana hαh_\alpha ialah rentetan Pauli seperti IZZX…XIYX, atau beberapa rentetan sedemikian yang berkomut antara satu sama lain. Jadi penerangan nilai jangkaan yang lebih hampir dengan realiti pengukuran pada komputer kuantum ialah

ΨHΨ=αcαΨhαΨ.\langle \Psi |H|\Psi \rangle =\sum_{\alpha} c_\alpha \langle \Psi | h_\alpha|\Psi \rangle.

Dan dalam konteks fungsi gelombang variasi kita:

ψ(θi)Hψ(θi)=αcαψ(θi)hαψ(θi)\langle \psi(\vec{\theta}_i) |H|\psi(\vec{\theta}_i) \rangle =\sum_{\alpha} c_\alpha \langle \psi(\vec{\theta}_i) | h_\alpha|\psi(\vec{\theta}_i) \rangle

Setiap sebutan hαh_\alpha boleh diukur MM kali menghasilkan sampel pengukuran sαjs_{\alpha j} dengan j=1Mj=1…M dan mengembalikan nilai jangkaan μα\mu_\alpha dan sisihan piawai σα\sigma_\alpha. Kita boleh menjumlahkan sebutan ini dan menyebarkan ralat melalui jumlah untuk mendapatkan nilai jangkaan keseluruhan μ\mu dan sisihan piawai σ\sigma.

ψ(θi)hαψ(θi)μα±σαMμα=1Mjsα,jσα2=1M1j(sα,jμα)2ψ(θi)Hψ(θi)μ±σμ=αcαμασ2=αcα2σα2M\begin{aligned} \langle \psi(\vec{\theta}_i) |h_\alpha|\psi(\vec{\theta}_i) \rangle &\simeq \mu _\alpha \pm \frac{\sigma_\alpha}{\sqrt{M}} &\qquad \mu_\alpha &=\frac{1}{M}\sum_j s_{\alpha,j} &\qquad \sigma^2_\alpha &=\frac{1}{M-1}\sum_j (s_{\alpha,j}-\mu_\alpha)^2\\ \langle \psi(\vec{\theta}_i) |H|\psi(\vec{\theta}_i) \rangle &\simeq \mu \pm \sigma &\qquad \mu &= \sum_\alpha c_\alpha \mu_\alpha &\qquad \sigma^2&=\sum_\alpha c^2_\alpha \frac{\sigma^2_\alpha }{M} \end{aligned}

Ini tidak memerlukan pendaraban berskala besar, mahupun sebarang proses yang semestinya berskala seperti N2N^2. Sebaliknya ia memerlukan pelbagai pengukuran pada komputer kuantum. Jika anda tidak memerlukan terlalu banyak daripada itu, pendekatan ini boleh menjadi cekap. Dan itulah bahagian kuantum VQE.

Tetapi mari kita bincangkan sebab kenapa ini mungkin tidak cekap. Satu sebab untuk banyak pengukuran ialah untuk mengurangkan ketidakpastian statistik dalam anggaran anda, untuk pengiraan kepresisian sangat tinggi. Sebab lain ialah bilangan rentetan Pauli yang diperlukan untuk merentangi keseluruhan matriks anda. Kerana matriks Pauli (tambah identiti: X, Y, Z, dan I) merentangi ruang semua operator bagi dimensi yang diberikan, kita dijamin bahawa kita boleh menulis matriks yang diminati sebagai jumlah berbobot operator Pauli, seperti yang kita lakukan sebelum ini.

H=α=1TcαhαH = \sum_{\alpha = 1}^T{c_\alpha h_\alpha}

di mana hαh_\alpha ialah rentetan Pauli yang bertindak pada semua Qubit yang menggambarkan sistem anda seperti IZZX…XIYX, atau beberapa rentetan sedemikian yang berkomut antara satu sama lain. Ingat bahawa Qiskit menggunakan notasi little endian, di mana operator Pauli ke-nn dari kanan bertindak pada Qubit ke-nn. Jadi kita boleh mengukur operator kita dengan mengukur siri operator Pauli.

Tetapi kita tidak boleh mengukur semua operator Pauli tersebut serentak. Operator Pauli (kecuali I) tidak berkomut antara satu sama lain jika mereka dikaitkan dengan Qubit yang sama. Sebagai contoh, kita boleh mengukur IZIZ dan ZZXZ serentak, kerana kita boleh mengukur I dan Z serentak untuk Qubit ke-3, dan kita boleh mengetahui I dan X serentak untuk Qubit ke-1. Tetapi kita tidak boleh mengukur ZZZZ dan ZZZX serentak, kerana Z dan X tidak berkomut, dan keduanya bertindak pada Qubit ke-0.

Jadual rentetan Pauli yang berbeza, ada yang berkomut dan ada yang tidak.

Jadi kita mengurai matriks HH kita kepada jumlah Pauli yang bertindak pada Qubit yang berbeza. Beberapa elemen jumlah itu boleh diukur sekaligus; kita memanggil ini kumpulan Pauli berkomut. Bergantung pada berapa banyak sebutan yang tidak berkomut, kita mungkin memerlukan banyak kumpulan sedemikian. Panggil bilangan kumpulan rentetan Pauli berkomut sedemikian NGCPN_\text{GCP}. Jika NGCPN_\text{GCP} kecil, ini mungkin berfungsi dengan baik. Jika HH mempunyai jutaan kumpulan, ini tidak akan berguna.

Proses yang diperlukan untuk anggaran nilai jangkaan dikumpulkan bersama dalam primitif Qiskit Runtime yang dipanggil Estimator. Untuk mengetahui lebih lanjut tentang Estimator, lihat rujukan API dalam Dokumentasi IBM Quantum®. Seseorang boleh hanya menggunakan Estimator secara langsung, tetapi Estimator mengembalikan jauh lebih daripada sekadar nilai eigen tenaga terendah. Sebagai contoh, ia juga mengembalikan maklumat tentang ralat piawai ensembel. Oleh itu, dalam konteks masalah minimisasi, seseorang sering melihat Estimator di dalam fungsi kos. Untuk mengetahui lebih lanjut tentang input dan output Estimator lihat panduan ini dalam Dokumentasi IBM Quantum.

Anda merekodkan nilai jangkaan (atau fungsi kos) untuk set parameter θi\vec{\theta_i} yang digunakan dalam keadaan anda, dan kemudian anda mengemas kini parameter. Dari masa ke masa, anda boleh menggunakan nilai jangkaan atau nilai fungsi kos yang telah anda anggarkan untuk menganggar kecerunan fungsi kos dalam subruang keadaan yang disampel oleh ansatz anda. Pengoptimum klasik berasaskan kecerunan dan bebas kecerunan wujud. Kedua-duanya menghadapi potensi isu keterolatihan, seperti pelbagai minimum setempat, dan kawasan luas ruang parameter dengan kecerunan hampir sifar, dipanggil dataran tandus.

Dua imej garis melengkung dengan nilai minimum. Dalam satu, titik diperiksa secara rawak dalam pencarian minimum, dalam yang lain kecerunan dianggar dengan melukis garis antara dua titik bersebelahan.

2.3 Faktor yang menentukan kos pengkomputeran

VQE tidak akan menyelesaikan semua masalah kimia kuantum yang paling sukar anda. Tidak. Tetapi menjadi lebih baik dalam semua pengiraan bukan poinnya. Kita telah mengalihkan apa yang menentukan kos pengkomputeran.

Jadual perbandingan pendekatan variasi klasik dan kuantum. Kedua-duanya memerlukan tekaan awal yang baik. Secara klasik, kos berskala seperti dimensi matriks anda kuasa dua, dan dalam pendekatan kuantum ia bergantung pada berapa banyak kumpulan operator Pauli berkomut yang ada.

Kita telah beralih dari proses yang kerumitannya hanya bergantung pada dimensi matriks kepada satu yang bergantung pada ketepatan yang diperlukan dan bilangan operator Pauli yang tidak berkomut yang membentuk matriks. Bahagian terakhir tidak mempunyai analogi dalam pengkomputeran klasik.

Berdasarkan kebergantungan ini, untuk matriks jarang, atau matriks yang melibatkan sedikit rentetan Pauli yang tidak berkomut, proses ini mungkin berguna. Ini berlaku untuk sistem spin yang berinteraksi, sebagai contoh. Untuk matriks padat, ia mungkin kurang berguna. Kita tahu sebagai contoh bahawa sistem kimia sering mempunyai Hamiltonian yang melibatkan ratusan, ribuan, bahkan jutaan rentetan Pauli. Terdapat kerja menarik yang telah dilakukan untuk mengurangkan bilangan sebutan ini. Tetapi sistem kimia mungkin lebih sesuai untuk beberapa algoritma lain yang akan kita bincangkan dalam kursus ini.

Uji kefahaman anda

Baca soalan-soalan di bawah, fikirkan jawapan anda, kemudian klik segi tiga untuk mendedahkan penyelesaian.

Pertimbangkan Hamiltonian pada empat Qubit yang mengandungi sebutan:

IIXX, IIXZ, IIZZ, IZXZ, IXXZ, ZZXZ, XZXZ, ZIXZ, ZZZZ, XXXX

Anda ingin mengisih sebutan ini ke dalam kumpulan supaya semua sebutan dalam satu kumpulan boleh diukur serentak. Apakah bilangan kumpulan terkecil yang boleh anda buat supaya semua sebutan diambil kira?

Jawapan:

Ia boleh dilakukan dalam 5 kumpulan. Perhatikan bahawa penyelesaian sedemikian biasanya tidak unik.

IIXX, XXXX

IIXZ, IZXZ, ZZXZ

IIZZ, ZZZZ

IXXZ, ZIXZ

XZXZ

Yang manakah anda jangka biasanya menyukarkan kimia kuantum dengan VQE: bilangan sebutan dalam Hamiltonian, mencari ansatz yang baik?

Jawapan:

Ternyata terdapat ansatz yang sangat dioptimumkan untuk konteks kimia. Bilangan sebutan dalam Hamiltonian, dan seterusnya bilangan pengukuran yang diperlukan biasanya menyebabkan lebih banyak masalah.

3. Contoh Hamiltonian

Mari kita amalkan algoritma ini menggunakan matriks Hamiltonian kecil supaya kita dapat melihat apa yang berlaku pada setiap langkah. Kita akan menggunakan rangka kerja corak Qiskit:

-Langkah 1: Petakan masalah kepada litar kuantum dan operator -Langkah 2: Optimumkan untuk perkakasan sasaran -Langkah 3: Laksanakan pada perkakasan sasaran -Langkah 4: Pasca-proses keputusan

3.1 Langkah 1: Petakan masalah kepada litar kuantum dan operator

Kita akan menggunakan yang ditakrifkan di atas dari konteks kimia. Kita mulakan dengan beberapa import umum.

# General imports
import numpy as np

# SciPy minimizer routine
from scipy.optimize import minimize

# Plotting functions
import matplotlib.pyplot as plt

Sekali lagi, kita mengandaikan Hamiltonian yang diminati adalah diketahui. Kita akan menggunakan Hamiltonian yang sangat kecil di sini, kerana kaedah lain yang dibincangkan dalam kursus ini akan lebih cekap dalam menyelesaikan masalah yang lebih besar.

from qiskit.quantum_info import SparsePauliOp
import numpy as np

hamiltonian = SparsePauliOp.from_list(
[("YZ", 0.3980), ("ZI", -0.3980), ("ZZ", -0.0113), ("XX", 0.1810)]
)

A = np.array(hamiltonian)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print("The ground state energy is ", min(eigenvalues))
The ground state energy is  -0.702930394459531

Terdapat banyak pilihan ansatz yang telah disiapkan dalam Qiskit. Kita akan menggunakan efficient_su2.

# Pre-defined ansatz circuit and operator class for Hamiltonian
from qiskit.circuit.library import efficient_su2

# Note that it is more common to place initial 'h' gates outside the ansatz. Here we specifically wanted this layer structure.
ansatz = efficient_su2(
hamiltonian.num_qubits, su2_gates=["h", "rz", "y"], entanglement="circular", reps=1
)

num_params = ansatz.num_parameters
print("This circuit has ", num_params, "parameters")

ansatz.decompose().draw("mpl", style="iqp")
This circuit has  4 parameters

Output of the previous code cell

Ansatz yang berbeza akan mempunyai struktur belitan dan gate putaran yang berbeza. Yang ditunjukkan di sini menggunakan gate CNOT untuk belitan, dan kedua-dua gate Y dan gate RZ berparameter untuk putaran. Perhatikan saiz ruang parameter ini; ia bermakna kita mesti meminimumkan fungsi kos ke atas 4 pemboleh ubah (parameter untuk gate RZ). Ini boleh ditingkatkan, tetapi tidak tanpa had. Menjalankan masalah yang serupa pada 4 Qubit, menggunakan lalai 3 reps untuk efficient_su2 menghasilkan 16 parameter variasi. Ansätze yang berbeza akan mempunyai struktur entanglement dan gate putaran yang berbeza. Yang ditunjukkan di sini menggunakan gate CNOT untuk entanglement, serta gate Y dan gate RZ terparameter untuk putaran. Perhatikan saiz ruang parameter ini; bermakna kita perlu meminimumkan fungsi kos merentasi 4 pembolehubah (parameter untuk gate RZ). Ini boleh diskalakan, tetapi tidak tanpa had. Menjalankan masalah serupa pada 4 Qubit, menggunakan lalai 3 ulangan untuk efficient_su2 menghasilkan 16 parameter variasi.

3.2 Langkah 2: Optimumkan untuk perkakasan sasaran

Ansatz ditulis menggunakan gate yang biasa, tetapi Circuit kita mesti ditranspilasi untuk menggunakan gate asas yang boleh dilaksanakan pada setiap komputer kuantum. Kita pilih Backend yang paling tidak sibuk.

# runtime imports
from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import EstimatorV2 as Estimator

# To run on hardware, select the backend with the fewest number of jobs in the queue
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

print(backend)
<IBMBackend('ibm_torino')>

Kita kini boleh mentranspilasi Circuit kita untuk perkakasan ini dan memvisualisasikan ansatz yang telah ditranspilasi.

from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

ansatz_isa = pm.run(ansatz)

ansatz_isa.draw(output="mpl", idle_wires=False, style="iqp")

Output of the previous code cell

Perhatikan bahawa gate yang digunakan telah berubah, dan Qubit dalam Circuit abstrak kita telah dipetakan kepada Qubit bernombor berbeza pada komputer kuantum. Kita mesti memetakan Hamiltonian kita secara identik agar keputusan kita bermakna.

hamiltonian_isa = hamiltonian.apply_layout(layout=ansatz_isa.layout)

3.3 Langkah 3: Laksanakan pada perkakasan sasaran

3.3.1 Melaporkan nilai

Kita takrifkan fungsi kos di sini yang mengambil sebagai argumen struktur yang telah kita bina dalam langkah-langkah sebelumnya: parameter, ansatz, dan Hamiltonian. Ia juga menggunakan Estimator yang belum kita takrifkan lagi. Kita sertakan kod untuk menjejaki sejarah fungsi kos, supaya kita boleh menyemak tingkah laku penumpuan.

def cost_func(params, ansatz, hamiltonian, estimator):
"""Return estimate of energy from estimator

Parameters:
params (ndarray): Array of ansatz parameters
ansatz (QuantumCircuit): Parameterized ansatz circuit
hamiltonian (SparsePauliOp): Operator representation of Hamiltonian
estimator (EstimatorV2): Estimator primitive instance
cost_history_dict: Dictionary for storing intermediate results

Returns:
float: Energy estimate
"""
pub = (ansatz, [hamiltonian], [params])
result = estimator.run(pubs=[pub]).result()
energy = result[0].data.evs[0]

cost_history_dict["iters"] += 1
cost_history_dict["prev_vector"] = params
cost_history_dict["cost_history"].append(energy)
print(f"Iters. done: {cost_history_dict['iters']} [Current cost: {energy}]")

return energy

cost_history_dict = {
"prev_vector": None,
"iters": 0,
"cost_history": [],
}

Sangat menguntungkan jika anda boleh memilih nilai parameter awal berdasarkan pengetahuan tentang masalah yang dihadapi dan ciri-ciri keadaan sasaran. Kita tidak akan membuat sebarang andaian sedemikian dan akan menggunakan nilai rawak sebagai permulaan.

x0 = 2 * np.pi * np.random.random(num_params)
# This required 13 min, 20 s QPU time on an Eagle processor, 28 min total time.
with Session(backend=backend) as session:
estimator = Estimator(mode=session)
estimator.options.default_shots = 10000

res = minimize(
cost_func,
x0,
args=(ansatz_isa, hamiltonian_isa, estimator),
method="cobyla",
options={"maxiter": 50},
)
Iters. done: 1 [Current cost: 0.010575798722044727]
Iters. done: 2 [Current cost: 0.004040015974440895]
Iters. done: 3 [Current cost: 0.0020213258785942503]
Iters. done: 4 [Current cost: 0.18723082446726014]
Iters. done: 5 [Current cost: -0.2746792152068885]
Iters. done: 6 [Current cost: -0.3094547651648519]
Iters. done: 7 [Current cost: -0.05281985428356641]
Iters. done: 8 [Current cost: 0.00808560303514377]
Iters. done: 9 [Current cost: -0.0014821685303514388]
Iters. done: 10 [Current cost: -0.004759824281150161]
Iters. done: 11 [Current cost: 0.09942328705995292]
Iters. done: 12 [Current cost: 0.01092366214057508]
Iters. done: 13 [Current cost: 0.05017497496069776]
Iters. done: 14 [Current cost: 0.13028868414310696]
Iters. done: 15 [Current cost: 0.013747803514376994]
Iters. done: 16 [Current cost: 0.2583072432944498]
Iters. done: 17 [Current cost: -0.14422125655131562]
Iters. done: 18 [Current cost: -0.0004950150347678081]
Iters. done: 19 [Current cost: 0.00681082268370607]
Iters. done: 20 [Current cost: -0.0023377795527156544]
Iters. done: 21 [Current cost: 0.6027665591169237]
Iters. done: 22 [Current cost: 0.00596641373801917]
Iters. done: 23 [Current cost: -0.008318769968051117]
Iters. done: 24 [Current cost: -0.00026683306709265246]
Iters. done: 25 [Current cost: -0.007648222843450479]
Iters. done: 26 [Current cost: 0.004121086261980831]
Iters. done: 27 [Current cost: -0.004075019968051117]
Iters. done: 28 [Current cost: -0.004419369009584665]
Iters. done: 29 [Current cost: 0.213185460054037]
Iters. done: 30 [Current cost: -0.06505919572162797]
Iters. done: 31 [Current cost: -0.5334241316590271]
Iters. done: 32 [Current cost: 0.00218370607028754]
Iters. done: 33 [Current cost: 0.09579352143666908]
Iters. done: 34 [Current cost: -0.009274800319488819]
Iters. done: 35 [Current cost: -0.44395141360688106]
Iters. done: 36 [Current cost: 0.011747104632587858]
Iters. done: 37 [Current cost: -0.003344149361022364]
Iters. done: 38 [Current cost: 0.19138183916486304]
Iters. done: 39 [Current cost: 0.013513931813145209]

Kita boleh melihat output mentah.

res
message: Return from COBYLA because the trust region radius reaches its lower bound.
success: True
status: 0
fun: -0.5334241316590271
x: [ 1.024e+00 6.459e+00 3.625e+00 4.007e+00]
nfev: 39
maxcv: 0.0

3.4 Langkah 4: Pasca-proses keputusan

Jika prosedur tamat dengan betul, maka nilai dalam kamus kita sepatutnya sama dengan vektor penyelesaian dan jumlah penilaian fungsi masing-masing. Ini mudah untuk disahkan:

cost_history_dict
{'prev_vector': array([1.02397956, 6.45886604, 3.62479262, 4.00744128]),
'iters': 39,
'cost_history': [np.float64(0.010575798722044727),
np.float64(0.004040015974440895),
np.float64(0.0020213258785942503),
np.float64(0.18723082446726014),
np.float64(-0.2746792152068885),
np.float64(-0.3094547651648519),
np.float64(-0.05281985428356641),
np.float64(0.00808560303514377),
np.float64(-0.0014821685303514388),
np.float64(-0.004759824281150161),
np.float64(0.09942328705995292),
np.float64(0.01092366214057508),
np.float64(0.05017497496069776),
np.float64(0.13028868414310696),
np.float64(0.013747803514376994),
np.float64(0.2583072432944498),
np.float64(-0.14422125655131562),
np.float64(-0.0004950150347678081),
np.float64(0.00681082268370607),
np.float64(-0.0023377795527156544),
np.float64(0.6027665591169237),
np.float64(0.00596641373801917),
np.float64(-0.008318769968051117),
np.float64(-0.00026683306709265246),
np.float64(-0.007648222843450479),
np.float64(0.004121086261980831),
np.float64(-0.004075019968051117),
np.float64(-0.004419369009584665),
np.float64(0.213185460054037),
np.float64(-0.06505919572162797),
np.float64(-0.5334241316590271),
np.float64(0.00218370607028754),
np.float64(0.09579352143666908),
np.float64(-0.009274800319488819),
np.float64(-0.44395141360688106),
np.float64(0.011747104632587858),
np.float64(-0.003344149361022364),
np.float64(0.19138183916486304),
np.float64(0.013513931813145209)]}
fig, ax = plt.subplots()
x = np.linspace(0, 10, 50)

# Define the constant function
constant = -0.7029
y_constant = np.full_like(x, constant)
ax.plot(
range(cost_history_dict["iters"]), cost_history_dict["cost_history"], label="VQE"
)
ax.set_xlabel("Iterations")
ax.set_ylabel("Cost")
ax.plot(y_constant, label="Target")
plt.legend()
plt.draw()

Output of the previous code cell

IBM Quantum mempunyai tawaran peningkatan kemahiran lain yang berkaitan dengan VQE. Jika anda bersedia untuk mempraktikkan VQE, lihat tutorial kami: Anggaran tenaga keadaan tanah rantai Heisenberg dengan VQE. Jika anda ingin maklumat lanjut tentang membina Hamiltonian molekul, lihat pelajaran ini dalam kursus kami tentang Kimia kuantum dengan VQE. Jika anda berminat untuk memahami lebih mendalam bagaimana algoritma variasi seperti VQE berfungsi, kami mengesyorkan kursus Reka Bentuk Algoritma Variasi.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaian.

Dalam bahagian ini, kita mengira tenaga keadaan tanah dari Hamiltonian. Jika kita ingin mengaplikasikan ini untuk, katakan, menentukan geometri molekul, bagaimana kita akan melanjutkan ini?

Jawapan:

Kita perlu memperkenalkan pembolehubah untuk jarak antara atom, dan sudut antara ikatan. Kita perlu mengubah ini. Bagi setiap variasi ini, kita akan menghasilkan Hamiltonian baru (kerana operator yang menggambarkan tenaga sudah pasti bergantung pada geometri). Bagi setiap Hamiltonian tersebut yang dihasilkan dan dipetakan ke Qubit, kita perlu menjalankan pengoptimuman seperti yang dilakukan di atas. Daripada semua masalah pengoptimuman yang telah menumpu itu, geometri yang menghasilkan tenaga paling rendah adalah yang diterima pakai oleh alam semula jadi. Ini jauh lebih rumit daripada yang ditunjukkan di atas. Pengiraan sedemikian dilakukan untuk molekul paling mudah, H2\text{H}_2, di sini.

4. Hubungan VQE dengan kaedah lain

Dalam bahagian ini kita akan menyemak kelebihan dan kelemahan pendekatan VQE asal serta menunjukkan hubungannya dengan algoritma lain yang lebih terkini.

4.1 Kekuatan dan kelemahan VQE

Beberapa kekuatan telah pun dinyatakan. Ia termasuk:

  • Kesesuaian dengan perkakasan moden: Beberapa algoritma kuantum memerlukan kadar ralat yang jauh lebih rendah, menghampiri toleransi kesalahan berskala besar. VQE tidak; ia boleh dilaksanakan pada komputer kuantum semasa.
  • Circuit cetek: VQE sering menggunakan Circuit kuantum yang agak cetek. Ini menjadikan VQE kurang terdedah kepada ralat Gate yang terkumpul dan menjadikannya sesuai untuk banyak teknik pengurangan ralat. Sudah tentu, Circuit tidak selalunya cetek; ini bergantung pada ansatz yang digunakan.
  • Versatiliti: VQE boleh (pada prinsipnya) digunakan untuk mana-mana masalah yang boleh dirangka sebagai masalah nilai eigen/vektor eigen. Terdapat banyak kaveat yang menjadikan VQE tidak praktikal atau tidak menguntungkan untuk sesetengah masalah. Beberapa daripadanya diringkaskan di bawah.

Beberapa kelemahan VQE dan masalah yang menjadikannya tidak praktikal juga telah diterangkan di atas. Ini termasuk:

  • Sifat heuristik: VQE tidak menjamin penumpuan ke tenaga keadaan tanah yang betul, kerana prestasinya bergantung pada pilihan ansatz dan kaedah pengoptimuman[1-2]. Jika ansatz yang lemah dipilih yang tidak mempunyai entanglement yang diperlukan untuk keadaan tanah yang diinginkan, tiada pengoptimum klasik yang boleh mencapai keadaan tanah itu.
  • Parameter yang berpotensi banyak: Ansatz yang sangat ekspresif mungkin mempunyai begitu banyak parameter sehingga lelaran minimisasi memakan masa yang sangat lama.
  • Overhead pengukuran yang tinggi: Dalam VQE, Estimator digunakan untuk menganggar nilai jangkaan setiap sebutan dalam Hamiltonian. Kebanyakan Hamiltonian yang menarik akan mempunyai sebutan yang tidak boleh dianggar serentak. Ini boleh menjadikan VQE intensif sumber untuk sistem besar dengan Hamiltonian yang rumit[1].
  • Kesan bunyi: Apabila pengoptimum klasik sedang mencari minimum, pengiraan yang bising boleh mengelirukan dan menjauhkannya dari minimum sebenar atau melambatkan penumapaiannya. Satu penyelesaian yang mungkin adalah dengan memanfaatkan teknik pengurangan ralat dan penekanan ralat[2-3] terkini dari IBM.
  • Tanah tandus (Barren plateaus): Kawasan-kawasan dengan kecerunan yang menghilang[2-3] ini wujud walaupun tanpa bunyi, tetapi bunyi menjadikannya lebih menyusahkan kerana perubahan dalam nilai jangkaan akibat bunyi boleh lebih besar daripada perubahan akibat mengemas kini parameter dalam kawasan tandus ini.

4.2 Hubungan dengan pendekatan lain

Adapt-VQE

Algoritma ADAPT-VQE (Adaptive Derivative-Assembled Pseudo-Trotter Variational Quantum Eigensolver) adalah peningkatan kepada algoritma VQE asal, direka untuk meningkatkan kecekapan, ketepatan, dan kebolehskalaan untuk simulasi kuantum, terutamanya dalam kimia kuantum.

Algoritma VQE asal yang diterangkan sepanjang pelajaran ini menggunakan ansatz tetap yang telah ditakrifkan terlebih dahulu untuk menghampiri keadaan tanah sistem. Dalam kes kita, kita menggunakan efficient_su2, dengan satu ulangan, menggunakan gate putaran Y dan RZ. Walaupun parameter dalam gate RZ berubah, struktur ansatz ini dan gate yang digunakan tidak berubah.

ADAPT-VQE menangani had-had VQE melalui pembinaan ansatz yang adaptif. Berbanding memulakan dengan ansatz tetap, ADAPT-VQE membina ansatz secara dinamik secara berulang. Pada setiap langkah, ia memilih operator dari kumpulan yang telah ditakrifkan terlebih dahulu (seperti operator pekali fermionic) yang mempunyai kecerunan terbesar berkenaan tenaga. Ini memastikan hanya operator yang paling berkesan ditambah, menghasilkan ansatz yang padat dan cekap[4-6]. Pendekatan ini boleh memberi beberapa kesan yang bermanfaat:

  1. Kedalaman Circuit yang Berkurang: Dengan mengembangkan ansatz secara berperingkat dan hanya memberi tumpuan kepada operator yang diperlukan, ADAPT-VQE meminimumkan operasi Gate berbanding pendekatan VQE tradisional[5,7].
  2. Ketepatan yang Lebih Baik: Sifat adaptif membolehkan ADAPT-VQE memulihkan lebih banyak tenaga korelasi pada setiap langkah, menjadikannya sangat berkesan untuk sistem yang sangat berkorelasi di mana VQE tradisional bergelut[8,9].
  3. Kebolehskalaan dan Ketahanan Bunyi: Ansatz yang padat mengurangkan pengumpulan ralat Gate, mengurangkan overhead pengkomputeran, dan mengehadkan bilangan parameter variasi yang mesti diminimumkan.

ADAPT-VQE masih tidak sempurna. Dalam sesetengah kes ia boleh terperangkap atau diperlahankan oleh minimum tempatan, dan ia mungkin mengalami over-parameterization. Ia juga boleh agak intensif sumber, kerana ia memerlukan pengiraan kecerunan dan pengoptimuman parameter dengan banyak struktur Gate.

Anggaran fasa kuantum (QPE)

QPE serupa dalam tujuan dengan VQE, tetapi sangat berbeza dalam pelaksanaan. QPE memerlukan komputer kuantum toleran kesalahan kerana Circuit kuantumnya yang umumnya dalam dan tahap koherensi tinggi yang diperlukan. Setelah QPE dapat dilaksanakan, ia akan lebih tepat daripada VQE. Satu cara untuk menerangkan perbezaannya adalah melalui ketepatan sebagai fungsi kedalaman Circuit. QPE mencapai ketepatan ϵ\epsilon dengan kedalaman Circuit yang berskala sebagai O(1/ϵ)O(1/\epsilon) [10]. VQE memerlukan O(1/ϵ2)O(1/\epsilon^2) sampel untuk mencapai ketepatan yang sama[10,11].

Krylov, SQD, QSCI, dan lain-lain dalam kursus ini

VQE membantu mewujudkan algoritma kuantum yang masih bergantung pada komputer klasik, bukan hanya untuk mengendalikan komputer kuantum, tetapi untuk bahagian-bahagian besar algoritma. Beberapa algoritma sedemikian menjadi fokus selebihnya kursus ini. Di sini, kita memberi penjelasan ringkas tentang beberapa daripadanya, sekadar untuk membandingkan dan membezakannya dengan VQE. Ia akan diterangkan dengan lebih terperinci dalam pelajaran-pelajaran berikutnya.

Diagonalisasi kuantum Krylov (KQD)

Kaedah subruang Krylov adalah cara memproyeksikan matriks ke subruang untuk mengurangkan dimensinya dan menjadikannya lebih mudah diurus, sambil mengekalkan ciri-ciri yang paling penting. Satu helah dalam kaedah ini adalah untuk menjana subruang yang mengekalkan ciri-ciri ini; ternyata menjana subruang ini berkait rapat dengan kaedah yang telah mantap pada komputer kuantum yang dipanggil Trotterisasi.

Terdapat beberapa varian kaedah Krylov kuantum, tetapi secara amnya pendekatannya adalah:

  • Gunakan komputer kuantum untuk menjana subruang (subruang Krylov) melalui Trotterisasi
  • Proyeksikan matriks yang diminati ke subruang Krylov tersebut
  • Diagonalisasikan Hamiltonian yang telah diproyeksikan menggunakan komputer klasik

Diagonalisasi kuantum berasaskan sampel (SQD)

Diagonalisasi kuantum berasaskan sampel (SQD) berkaitan dengan kaedah Krylov dalam erti kata ia juga cuba mengurangkan dimensi matriks yang akan didiagonalisasikan sambil mengekalkan ciri-ciri utama. SQD melakukan ini dengan cara berikut:

  • Mulakan dengan tekaan awal untuk keadaan tanah anda dan sediakan sistem dalam keadaan tanah tersebut.
  • Gunakan Sampler untuk mengambil sampel bitstring yang membentuk keadaan ini.
  • Gunakan koleksi keadaan asas pengiraan dari Sampler sebagai subruang untuk memproyeksikan matriks yang diminati.
  • Diagonalisasikan matriks yang lebih kecil dan diproyeksikan menggunakan komputer klasik.

Ini berkaitan dengan VQE dalam erti kata ia memanfaatkan pengkomputeran klasik dan kuantum untuk komponen algoritma yang besar. Keduanya juga berkongsi keperluan bahawa kita menyediakan tekaan awal atau ansatz yang baik. Tetapi pembahagian kerja antara komputer klasik dan kuantum dalam SQD lebih menyerupai kaedah Krylov.

Malah, kaedah Krylov dan SQD baru-baru ini telah digabungkan ke dalam kaedah diagonalisasi kuantum Krylov berasaskan sampel (SKQD) [12].

Interaksi konfigurasi subruang kuantum

Interaksi Konfigurasi Terpilih Kuantum (QSCI)[13] adalah algoritma yang menghasilkan keadaan tanah hampiran Hamiltonian dengan mengambil sampel fungsi gelombang percubaan untuk mengenal pasti keadaan asas pengiraan yang signifikan bagi menjana subruang untuk diagonalisasi klasik. Kedua-dua SQD dan QSCI menggunakan komputer kuantum untuk membina subruang yang dikurangkan. Kekuatan tambahan QSCI terletak pada penyediaan keadaannya, terutamanya dalam konteks masalah kimia. Ia memanfaatkan pelbagai strategi seperti menggunakan keadaan yang telah berevolusi masa [14] dan set ansätze yang diilhamkan kimia. Dengan memberi tumpuan pada penyediaan keadaan yang cekap, QSCI mengurangkan kos pengkomputeran kuantum untuk Hamiltonian kimia sambil mengekalkan ketepatan tinggi dan memanfaatkan ketahanan bunyi dari teknik pensampelan keadaan kuantum [15]. QSCI juga menyediakan teknik pembinaan adaptif yang memberikan lebih banyak ansätze untuk hasil yang lebih baik.

Aliran kerja lalai QSCI untuk masalah kimia adalah seperti berikut:

  • Bina Hamiltonian molekul menggunakan perisian pilihan anda (seperti SciPy).
  • Sediakan algoritma QSCI dengan memilih keadaan awal yang sesuai dan ansatz yang diilhamkan kimia dengan set parameter yang dipilih terlebih dahulu.
  • Ambil sampel keadaan asas yang signifikan dan diagonalisasikan Hamiltonian menggunakan komputer klasik untuk mendapatkan tenaga keadaan tanah.
  • Selalunya seseorang menggunakan pemulihan konfigurasi [16] dan pasca-pilihan simetri [15] sebagai teknik pasca-pemprosesan.
  • Secara pilihan, aliran kerja QSCI adaptif mempunyai gelung pengoptimuman tambahan dari langkah 2 ke langkah 3, dengan menggunakan lebih banyak ansätze dengan keadaan awal rawak.

Uji kefahaman anda

Baca soalan-soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaian.

Apakah persamaan VQE dengan semua kaedah lain yang disenaraikan di atas (kecuali QPE yang tidak diterangkan secara terperinci)?

Jawapan:

Semua melibatkan keadaan percubaan atau fungsi gelombang dalam beberapa bentuk. Semua berfungsi paling baik apabila tekaan awal untuk keadaan percubaan ini sangat baik.

Jawapan lain yang betul adalah bahawa semuanya paling mudah dilaksanakan apabila Hamiltonian mudah diukur (boleh disusun ke dalam kumpulan operator Pauli yang bertukar yang agak sedikit).

Apakah persamaan VQE dengan tiada satu pun daripada kaedah lain yang disenaraikan di atas?

Jawapan:

Pengoptimum klasik. Tiada satu pun yang lain menggunakan algoritma pengoptimuman klasik untuk memilih parameter variasi.

Rujukan

[2] https://en.wikipedia.org/wiki/Variational_quantum_eigensolver

[3] https://journals.aps.org/prapplied/abstract/10.1103/PhysRevApplied.19.024047

[4] https://arxiv.org/abs/2111.05176

[6] https://inquanto.quantinuum.com/tutorials/InQ_tut_fe4n2_2.html

[7] https://www.nature.com/articles/s41467-019-10988-2

[8] https://arxiv.org/abs/2210.15438

[9] https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.6.013254

[10] https://arxiv.org/html/2403.09624v1

[11] https://www.nature.com/articles/s42005-023-01312-y

[13] https://arxiv.org/abs/1802.00171

[14] https://arxiv.org/abs/2103.08505

[15] https://arxiv.org/html/2501.09702v1

[16] https://quri-sdk.qunasys.com/docs/examples/quri-algo-vm/qsci/

[17] https://arxiv.org/abs/2412.13839

[18] https://arxiv.org/abs/2302.11320v1

Source: IBM Quantum docs — updated 27 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 26 Mac 2026