Lewati ke konten utama

Ansaetze dan variational form

Di inti semua algoritma variasional terletak ide kunci untuk menganalisis perbedaan antara keadaan-keadaan, yang secara nyaman terhubung melalui pemetaan yang berperilaku baik (misalnya, kontinu, terdiferensialkan) dari sekumpulan parameter atau variabel — karenanya namanya.

Pertama, kita akan menjelajahi cara membangun parameterized circuit dengan tangan. Kita akan menggunakan circuit-circuit ini untuk mendefinisikan variational form yang merepresentasikan kumpulan keadaan berparameter untuk dijelajahi oleh algoritma variasional kita. Kemudian, kita akan membangun ansatz kita dengan menerapkan variational form ini pada reference state kita.

Kita juga akan menjelajahi cara menyeimbangkan kecepatan versus akurasi saat menjelajahi ruang pencarian ini.

Diagram yang menunjukkan komponen kunci dari diskusi ansatz, termasuk heuristic ansaetze dan problem-specific ansaetze.

Parameterized Quantum Circuit

Algoritma variasional beroperasi dengan menjelajahi dan membandingkan berbagai keadaan kuantum ψ(θ)|\psi(\vec{\theta})\rangle, yang bergantung pada himpunan terbatas kk parameter θ=(θ0,,θk1)\vec{\theta} = (\theta^0, \ldots, \theta^{k-1}). Keadaan-keadaan ini dapat disiapkan menggunakan parameterized quantum circuit, di mana gate didefinisikan dengan parameter yang dapat disetel. Dimungkinkan untuk membuat parameterized circuit ini tanpa mengikat sudut spesifik terlebih dahulu:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit rustworkx
from qiskit.circuit import QuantumCircuit, Parameter

theta = Parameter("θ")

qc = QuantumCircuit(3)
qc.rx(theta, 0)
qc.cx(0, 1)
qc.x(2)

qc.draw("mpl")

Output of the previous code cell

from math import pi

angle_list = [pi / 3, pi / 2]
circuits = [qc.assign_parameters({theta: angle}) for angle in angle_list]

for circuit in circuits:
display(circuit.draw("mpl"))

Output of the previous code cell

Output of the previous code cell

Variational Form dan Ansatz

Untuk mengiterasi secara optimal dari reference state ρ|\rho\rangle ke keadaan target ψ(θ)|\psi(\vec\theta)\rangle, kita perlu mendefinisikan variational form UV(θ)U_V(\vec{\theta}) yang merepresentasikan kumpulan keadaan berparameter untuk dijelajahi oleh algoritma variasional kita:

0URUR0=ρUV(θ)UA(θ)0=UV(θ)UR0=UV(θ)ρ=ψ(θ)\begin{aligned} |0\rangle \xrightarrow{U_R} U_R|0\rangle & = |\rho\rangle \xrightarrow{U_V(\vec{\theta})} U_A(\vec{\theta})|0\rangle \\[1mm] & = U_V(\vec{\theta})U_R|0\rangle \\[1mm] & = U_V(\vec{\theta})|\rho\rangle \\[1mm] & = |\psi(\vec{\theta})\rangle \\[1mm] \end{aligned}

Perhatikan bahwa keadaan berparameter bergantung pada reference state ρ|\rho\rangle, yang tidak bergantung pada parameter mana pun, dan variational form UV(θ)U_V(\vec{\theta}), yang selalu bergantung pada parameter. Kita menyebut kombinasi dari dua bagian ini sebagai ansatz: UA(θ):=UV(θ)URU_A(\vec\theta) := U_V(\vec\theta)U_R.

Saat kita membangun ansatz kita untuk merepresentasikan kumpulan keadaan berparameter untuk dijelajahi oleh algoritma variasional kita, kita menyadari masalah penting: dimensionalitas. Sistem nn-qubit (yaitu, ruang Hilbert) memiliki sejumlah besar keadaan kuantum yang berbeda dalam ruang konfigurasi. Kita akan memerlukan sejumlah parameter yang tidak praktis untuk menjelajahinya sepenuhnya. Secara kuantitatif, dimensionalitasnya adalah D=22nD = 2^{2n}. Memperburuk keadaan, kompleksitas runtime dari algoritma pencarian, dan yang serupa, tumbuh secara eksponensial dengan dimensionalitas ini, fenomena yang sering disebut dalam literatur sebagai kutukan dimensionalitas.

Untuk mengatasi kemunduran ini, adalah praktik umum untuk menerapkan beberapa batasan yang wajar pada variational form sehingga hanya keadaan yang paling relevan yang dijelajahi. Menemukan ansatz yang terpotong secara efisien adalah area penelitian aktif, tetapi kita akan membahas dua desain umum.

Heuristic ansaetze dan trade-off

Jika kamu tidak memiliki informasi tentang masalah khususmu yang dapat membantu membatasi dimensionalitas, kamu bisa mencoba keluarga circuit berparameter sembarang dengan kurang dari 22n2^{2n} parameter. Namun ada beberapa trade-off yang perlu dipertimbangkan:

  • Kecepatan: Dengan mengurangi ruang pencarian, algoritma dapat berjalan lebih cepat.
  • Akurasi: Mengurangi ruang dapat berisiko mengecualikan solusi aktual dari masalah, yang menghasilkan solusi suboptimal.
  • Kebisingan: Circuit yang lebih dalam terpengaruh oleh kebisingan, sehingga kita perlu bereksperimen dengan konektivitas, gate, dan fidelitas gate ansatz kita.

Ada trade-off fundamental antara kualitas (atau bahkan kemampuan penyelesaian) dan kecepatan: semakin banyak parameter, semakin besar kemungkinan kamu menemukan hasil yang tepat, tetapi semakin lama waktu yang dibutuhkan untuk menjalankan algoritma.

N-local circuit

Salah satu contoh heuristic ansaetze yang paling banyak digunakan adalah N-local circuits, karena beberapa alasan:

  • Implementasi yang efisien: Ansatz N-local biasanya terdiri dari gate lokal sederhana yang dapat diimplementasikan secara efisien pada komputer kuantum, menggunakan sejumlah kecil qubit fisik. Ini membuatnya lebih mudah untuk membangun dan mengoptimalkan quantum circuit.
  • Menangkap korelasi penting: Ansatz N-local dapat menangkap korelasi penting antara qubit dalam sistem kuantum, bahkan dengan sejumlah kecil gate. Ini karena gate lokal dapat bekerja pada qubit yang berdekatan dan menciptakan keterikatan di antara mereka, yang dapat penting untuk mensimulasikan sistem kuantum yang kompleks.

Circuit ini terdiri dari lapisan rotasi dan keterikatan yang diulang secara bergantian satu atau lebih kali sebagai berikut:

  • Setiap lapisan dibentuk oleh gate berukuran paling banyak NN, di mana NN harus lebih rendah dari jumlah qubit.
  • Untuk lapisan rotasi, gate ditumpuk di atas satu sama lain. Kita dapat menggunakan operasi rotasi standar, seperti RX atau CRZ.
  • Untuk lapisan keterikatan, kita dapat menggunakan gate seperti gate Toffoli atau CX dengan strategi keterikatan.
  • Kedua jenis lapisan dapat diparameterisasi atau tidak, tetapi setidaknya salah satunya harus mengandung parameter. Jika tidak, tanpa setidaknya satu parameter, tidak akan ada variasi!
  • Opsional, lapisan rotasi tambahan ditambahkan ke akhir circuit.

Misalnya, mari kita buat circuit NLocal lima-qubit dengan blok rotasi yang dibentuk oleh gate RX dan CRZ, blok keterikatan yang dibentuk oleh gate Toffoli yang bekerja pada qubit [0,1,2][0,1,2], [0,2,3][0,2,3], [4,2,1][4,2,1] dan [3,1,0][3,1,0] dan 22 repetisi dari setiap lapisan.

from qiskit.circuit.library import NLocal, CCXGate, CRZGate, RXGate
from qiskit.circuit import Parameter

theta = Parameter("θ")
ansatz = NLocal(
num_qubits=5,
rotation_blocks=[RXGate(theta), CRZGate(theta)],
entanglement_blocks=CCXGate(),
entanglement=[[0, 1, 2], [0, 2, 3], [4, 2, 1], [3, 1, 0]],
reps=2,
insert_barriers=True,
)
ansatz.decompose().draw("mpl")

Output of the previous code cell

Dalam contoh di atas, gate terbesar adalah gate Toffoli, yang bekerja pada tiga qubit, membuat circuit menjadi 33-local. Jenis circuit NN-local yang paling umum digunakan adalah circuit 22-local dengan gate rotasi qubit tunggal dan gate keterikatan 22-qubit.

Mari kita buat circuit 22-local menggunakan kelas TwoLocal Qiskit. Sintaksnya sama dengan NLocal, tetapi ada beberapa perbedaan. Misalnya, sebagian besar gate, seperti RX, RZ, dan CNOT, dapat dilewatkan sebagai string tanpa mengimpor gate atau membuat instance Parameter.

from qiskit.circuit.library import TwoLocal

ansatz = TwoLocal(
num_qubits=5,
rotation_blocks=["rx", "rz"],
entanglement_blocks="cx",
entanglement="linear",
reps=2,
insert_barriers=True,
)
ansatz.decompose().draw("mpl")

Output of the previous code cell

Dalam kasus ini, kita menggunakan distribusi keterikatan linear, di mana setiap qubit terjerat dengan berikutnya. Untuk mempelajari tentang strategi lain, lihat dokumentasi TwoLocal.

Efficient SU2

efficient_su2 adalah circuit yang efisien secara perangkat keras yang terdiri dari lapisan operasi qubit tunggal yang merentangkan SU(2) dan keterikatan CX. Ini adalah pola heuristik yang dapat digunakan untuk menyiapkan trial wave function untuk algoritma kuantum variasional atau sebagai circuit klasifikasi untuk machine learning.

from qiskit.circuit.library import efficient_su2

ansatz = efficient_su2(4, su2_gates=["rx", "y"], entanglement="linear", reps=1)
ansatz.decompose().draw("mpl")

Output of the previous code cell

Problem-specific ansaetze

Sementara heuristic dan hardware efficient ansaetze membantu kita memecahkan masalah dengan cara yang naif, kita dapat menggunakan pengetahuan spesifik masalah untuk membatasi ruang pencarian circuit kita ke jenis tertentu. Ini akan membantu kita mendapatkan kecepatan tanpa kehilangan akurasi dalam proses pencarian kita.

Optimisasi

Dalam masalah max-cut, kita ingin mempartisi node grafik dengan cara yang memaksimalkan jumlah tepi antara node dalam kelompok yang berbeda. Partisi max-cut yang diinginkan untuk grafik di bawah ini jelas: node ke-0 di sebelah kiri harus dipisahkan dari node lainnya di sebelah kanan oleh potongan.

import rustworkx as rx
from rustworkx.visualization import mpl_draw

n = 4
G = rx.PyGraph()
G.add_nodes_from(range(n))
# The edge syntax is (start, end, weight)
edges = [(0, 1, 1.0), (0, 2, 1.0), (0, 3, 1.0), (1, 2, 1.0), (2, 3, 1.0)]
G.add_edges_from(edges)

mpl_draw(
G, pos=rx.shell_layout(G), with_labels=True, edge_labels=str, node_color="#1192E8"
)

Output of the previous code cell

Untuk memanfaatkan algoritma QAOA untuk masalah max-cut, kita memerlukan Hamiltonian Pauli yang mengkodekan biaya sedemikian sehingga nilai ekspektasi minimum dari operator bersesuaian dengan jumlah maksimum tepi antara node dalam dua kelompok yang berbeda.

Untuk contoh sederhana ini, operatornya adalah kombinasi linear dari suku dengan operator Z pada node yang terhubung oleh tepi (ingat bahwa qubit ke-0 paling jauh ke kanan): ZZII+IZZI+ZIIZ+IZIZ+IIZZZZII + IZZI + ZIIZ + IZIZ + IIZZ. Setelah operator dibangun, ansatz untuk algoritma QAOA dapat dengan mudah dibangun menggunakan circuit QAOAAnsatz dari circuit library Qiskit.

# Pre-defined ansatz circuit, operator class and visualization tools
from qiskit.circuit.library import QAOAAnsatz
from qiskit.quantum_info import SparsePauliOp

# Problem to Hamiltonian operator
hamiltonian = SparsePauliOp.from_list(
[("ZZII", 1), ("IZZI", 1), ("ZIIZ", 1), ("IZIZ", 1), ("IIZZ", 1)]
)
# QAOA ansatz circuit
ansatz = QAOAAnsatz(hamiltonian, reps=2)
# Draw
ansatz.decompose(reps=3).draw("mpl")

Output of the previous code cell

Gambar sebelumnya mengilustrasikan ansatz dalam gate dasar untuk kejelasan. Namun, ini dapat diekspresikan dalam beberapa tingkat dekomposisi dengan mengubah argumen reps atau dengan menggambar circuit tanpa metode decompose. Misalnya, representasi berikut langsung menampilkan struktur QAOA dengan nilai reps default, yaitu reps=1.

ansatz.decompose(reps=2).draw("mpl")

Output of the previous code cell

Quantum Machine Learning

Dalam machine learning, aplikasi umum adalah klasifikasi data ke dalam dua atau lebih kategori. Ini melibatkan pengkodean datapoint ke dalam feature map yang memetakan vektor fitur klasik ke ruang Hilbert kuantum. Membangun quantum feature map berdasarkan parameterized quantum circuit yang sulit disimulasikan secara klasik adalah langkah penting menuju mendapatkan keunggulan potensial atas pendekatan machine learning klasik dan merupakan area penelitian aktif saat ini.

zz_feature_map dapat digunakan untuk membuat parameterized circuit. Kita dapat memasukkan datapoint kita ke feature map (xx) dan variational form terpisah untuk memasukkan bobot sebagai parameter (θ\theta).

from qiskit.circuit.library import zz_feature_map, TwoLocal

data = [0.1, 0.2]

zz_feature_map_reference = zz_feature_map(feature_dimension=2, reps=2)
zz_feature_map_reference = zz_feature_map_reference.assign_parameters(data)

variation_form = TwoLocal(2, ["ry", "rz"], "cz", reps=2)
vqc_ansatz = zz_feature_map_reference.compose(variation_form)
vqc_ansatz.decompose().draw("mpl")

Output of the previous code cell

Ringkasan

Dengan pelajaran ini, kamu mempelajari cara mendefinisikan ruang pencarianmu dengan variational form:

  • Siapkan keadaan dengan parameterized quantum circuit, di mana gate didefinisikan dengan parameter yang dapat disetel
  • Cara membangun ansaetze yang menyeimbangkan kecepatan vs akurasi
  • Heuristic ansaetze
  • Problem-specific ansaetze

Beban kerja variasional tingkat tinggi kita terlihat sebagai berikut:

Diagram circuit yang menunjukkan dua uniter: satu yang menyiapkan reference state dan yang lainnya menyiapkan ansatz.

Untuk setiap parameter variasional θ\vec\theta, keadaan kuantum yang berbeda akan dihasilkan. Untuk menemukan parameter optimal, kita perlu mendefinisikan fungsi biaya yang spesifik masalah untuk memperbarui parameter ansatz kita secara iteratif.

Source: IBM Quantum docs — updated 15 Jan 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 27 Mar 2026