Langkau ke kandungan utama

Ansaetze dan bentuk variasi

Inti kepada semua algoritma variasi ialah idea utama menganalisis perbezaan antara keadaan, yang dihubungkan secara mudah melalui pemetaan bersifat baik (contohnya, selanjar, boleh dibezakan) daripada satu set parameter atau pemboleh ubah — itulah sebabnya ia dinamakan sedemikian.

Pertama, kita akan terokai cara membina litar berparameter secara manual. Kita akan gunakan litar ini untuk mentakrifkan bentuk variasi yang mewakili koleksi keadaan berparameter untuk diteroka oleh algoritma variasi kita. Kemudian, kita akan bina ansatz dengan menggunakan bentuk variasi ini pada keadaan rujukan kita.

Kita juga akan terokai cara mengimbangi antara kelajuan dan ketepatan semasa menerokai ruang carian ini.

Gambar rajah menunjukkan komponen utama perbincangan ansatz, termasuk heuristic ansaetze dan ansaetze khusus masalah.

Litar Kuantum Berparameter

Algoritma variasi beroperasi dengan menerokai dan membandingkan julat keadaan kuantum ψ(θ)|\psi(\vec{\theta})\rangle, yang bergantung pada set terhingga kk parameter θ=(θ0,,θk1)\vec{\theta} = (\theta^0, \ldots, \theta^{k-1}). Keadaan-keadaan ini boleh disediakan menggunakan litar kuantum berparameter, di mana gate-gate ditakrifkan dengan parameter yang boleh dilaras. Ia mungkin untuk mencipta litar berparameter ini tanpa mengikat sudut tertentu 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

Bentuk Variasi dan Ansatz

Untuk mengoptimumkan secara berulang daripada keadaan rujukan ρ|\rho\rangle ke keadaan sasaran ψ(θ)|\psi(\vec\theta)\rangle, kita perlu mentakrifkan bentuk variasi UV(θ)U_V(\vec{\theta}) yang mewakili koleksi keadaan berparameter untuk diteroka oleh algoritma variasi 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}

Perlu diingat bahawa keadaan berparameter bergantung pada kedua-dua keadaan rujukan ρ|\rho\rangle, yang tidak bergantung pada sebarang parameter, dan bentuk variasi UV(θ)U_V(\vec{\theta}), yang sentiasa bergantung pada parameter. Kita merujuk kepada gabungan dua bahagian ini sebagai ansatz: UA(θ):=UV(θ)URU_A(\vec\theta) := U_V(\vec\theta)U_R.

Semasa kita membina ansatz untuk mewakili koleksi keadaan berparameter bagi algoritma variasi kita, kita menyedari satu isu penting: dimensi. Sistem nn-Qubit (iaitu, ruang Hilbert) mempunyai bilangan keadaan kuantum yang sangat banyak dalam ruang konfigurasi. Kita memerlukan bilangan parameter yang sangat besar untuk menerokai keseluruhannya. Secara kuantitatif, dimensinya ialah D=22nD = 2^{2n}. Lebih teruk lagi, kerumitan masa operasi algoritma carian, dan yang seumpamanya, berkembang secara eksponen dengan dimensi ini, satu fenomena yang sering dirujuk dalam literatur sebagai kutukan dimensi.

Untuk mengatasi masalah ini, adalah amalan biasa untuk mengenakan beberapa kekangan yang munasabah pada bentuk variasi supaya hanya keadaan yang paling relevan sahaja diteroka. Mencari ansatz terpotong yang cekap adalah bidang penyelidikan yang aktif, tetapi kita akan membincangkan dua reka bentuk yang biasa digunakan.

Heuristic ansaetze dan pertukaran

Jika kamu tidak mempunyai sebarang maklumat tentang masalah tertentu yang boleh membantu mengehadkan dimensi, kamu boleh mencuba satu keluarga litar berparameter sewenang-wenangnya dengan kurang daripada 22n2^{2n} parameter. Walau bagaimanapun, terdapat beberapa pertukaran yang perlu dipertimbangkan:

  • Kelajuan: Dengan mengurangkan ruang carian, algoritma boleh berjalan lebih cepat.
  • Ketepatan: Mengurangkan ruang boleh berisiko mengecualikan penyelesaian sebenar kepada masalah, yang membawa kepada penyelesaian yang tidak optimum.
  • Hingar: Litar yang lebih dalam terjejas oleh hingar, jadi kita perlu bereksperimen dengan sambungan, gate-gate, dan kesetiaan gate ansatz kita.

Terdapat pertukaran asas antara kualiti (atau bahkan kebolehselesaian) dan kelajuan: lebih banyak parameter, lebih besar kemungkinan kamu akan menemui hasil yang tepat, tetapi lebih lama masa yang diperlukan untuk menjalankan algoritma.

Litar N-lokal

Salah satu contoh heuristic ansaetze yang paling banyak digunakan ialah litar N-lokal, atas beberapa sebab:

  • Pelaksanaan yang cekap: Ansatz N-lokal biasanya terdiri daripada gate-gate lokal yang mudah dan boleh dilaksanakan dengan cekap pada komputer kuantum, menggunakan bilangan Qubit fizikal yang kecil. Ini memudahkan pembinaan dan pengoptimuman litar kuantum.
  • Menangkap korelasi penting: Ansatz N-lokal boleh menangkap korelasi penting antara Qubit-Qubit dalam sistem kuantum, walaupun dengan bilangan gate yang kecil. Ini kerana gate-gate lokal boleh bertindak pada Qubit-Qubit bersebelahan dan mencipta keterikatan antara mereka, yang boleh menjadi penting untuk mensimulasikan sistem kuantum yang kompleks.

Litar-litar ini terdiri daripada lapisan putaran dan lapisan keterikatan yang diulang secara berselang-seli satu atau lebih kali seperti berikut:

  • Setiap lapisan dibentuk oleh gate-gate bersaiz paling banyak NN, di mana NN mesti lebih rendah daripada bilangan Qubit.
  • Untuk lapisan putaran, gate-gate ditindih di atas antara satu sama lain. Kita boleh menggunakan operasi putaran standard, seperti RX atau CRZ.
  • Untuk lapisan keterikatan, kita boleh menggunakan gate-gate seperti gate Toffoli atau CX dengan strategi keterikatan.
  • Kedua-dua jenis lapisan boleh berparameter atau tidak, tetapi sekurang-kurangnya satu daripadanya perlu mengandungi parameter. Jika tidak, tanpa sekurang-kurangnya satu parameter, tidak akan ada sebarang variasi!
  • Secara pilihan, lapisan putaran tambahan ditambah pada penghujung litar.

Sebagai contoh, mari kita cipta litar NLocal lima-Qubit dengan blok putaran yang dibentuk oleh gate-gate RX dan CRZ, blok keterikatan yang dibentuk oleh gate Toffoli yang bertindak 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 pengulangan bagi 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 ialah gate Toffoli, yang bertindak pada tiga Qubit, menjadikan litar tersebut 33-lokal. Jenis litar NN-lokal yang paling kerap digunakan ialah litar 22-lokal dengan gate putaran satu-Qubit dan gate keterikatan 22-Qubit.

Mari kita cipta litar 22-lokal menggunakan kelas TwoLocal Qiskit. Sintaksnya sama dengan NLocal, tetapi ada beberapa perbezaan. Contohnya, kebanyakan gate, seperti RX, RZ, dan CNOT, boleh dihantar sebagai rentetan tanpa mengimport gate-gate atau mencipta contoh 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 kes ini, kita menggunakan taburan keterikatan linear, di mana setiap Qubit diikat dengan Qubit seterusnya. Untuk mengetahui strategi lain, rujuk dokumentasi TwoLocal.

Efficient SU2

efficient_su2 ialah litar yang cekap dari segi perkakasan yang terdiri daripada lapisan operasi satu-Qubit yang merentangi SU(2) dan keterikatan CX. Ini adalah corak heuristik yang boleh digunakan untuk menyediakan fungsi gelombang percubaan bagi algoritma kuantum variasi atau sebagai Circuit pengelasan untuk pembelajaran mesin.

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

Ansaetze khusus masalah

Walaupun heuristic ansaetze dan ansaetze cekap perkakasan membantu kita menyelesaikan masalah secara naif, kita boleh menggunakan pengetahuan khusus masalah untuk mengehadkan ruang carian litar kita kepada jenis tertentu. Ini akan membantu kita mendapatkan kelajuan tanpa kehilangan ketepatan dalam proses carian kita.

Pengoptimuman

Dalam masalah max-cut, kita ingin membahagikan nod graf dengan cara yang memaksimumkan bilangan tepi antara nod dalam kumpulan yang berbeza. Pembahagian max-cut yang dikehendaki untuk graf di bawah adalah jelas: nod ke-0 di sebelah kiri harus dipisahkan dari baki nod di sebelah kanan oleh satu 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 menggunakan algoritma QAOA bagi masalah max-cut, kita memerlukan Hamiltonian Pauli yang mengekodkan kos sedemikian rupa sehingga nilai jangkaan minimum operator sepadan dengan bilangan maksimum tepi antara nod dalam dua kumpulan yang berbeza.

Untuk contoh mudah ini, operatornya ialah gabungan linear bagi sebutan dengan operator Z pada nod yang dihubungkan oleh tepi (ingat bahawa Qubit ke-0 berada paling jauh ke kanan): ZZII+IZZI+ZIIZ+IZIZ+IIZZZZII + IZZI + ZIIZ + IZIZ + IIZZ. Setelah operator dibina, ansatz untuk algoritma QAOA boleh dengan mudah dibina menggunakan Circuit QAOAAnsatz dari perpustakaan Circuit 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

Imej sebelumnya menggambarkan ansatz dalam gate asas untuk kejelasan. Walau bagaimanapun, ia boleh dinyatakan dalam pelbagai peringkat penguraian dengan mengubah argumen reps atau dengan melukis litar tanpa kaedah decompose. Sebagai contoh, representasi berikut secara langsung menunjukkan struktur QAOA dengan nilai reps lalai, iaitu reps=1.

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

Output of the previous code cell

Pembelajaran Mesin Kuantum

Dalam pembelajaran mesin, aplikasi yang biasa ialah pengelasan data ke dalam dua atau lebih kategori. Ini melibatkan pengekodkan titik data ke dalam peta ciri yang memetakan vektor ciri klasik ke dalam ruang Hilbert kuantum. Membina peta ciri kuantum berdasarkan litar kuantum berparameter yang sukar untuk disimulasikan secara klasik adalah langkah penting ke arah mendapatkan kelebihan potensial berbanding pendekatan pembelajaran mesin klasik dan merupakan bidang penyelidikan semasa yang aktif.

zz_feature_map boleh digunakan untuk mencipta litar berparameter. Kita boleh memasukkan titik data kita ke dalam peta ciri (xx) dan bentuk variasi berasingan untuk memasukkan pemberat 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 telah belajar cara mentakrifkan ruang carian kamu dengan bentuk variasi:

  • Sediakan keadaan dengan litar kuantum berparameter, di mana gate-gate ditakrifkan dengan parameter yang boleh dilaras
  • Cara membina ansaetze yang mengimbangi antara kelajuan dan ketepatan
  • Heuristic ansaetze
  • Ansaetze khusus masalah

Beban kerja variasi peringkat tinggi kita kelihatan seperti berikut:

Gambar rajah litar menunjukkan dua uniti: satu menyediakan keadaan rujukan dan satu lagi menyediakan ansatz.

Bagi setiap parameter variasi θ\vec\theta, keadaan kuantum yang berbeza akan dihasilkan. Untuk mencari parameter yang optimum, kita perlu mentakrifkan fungsi kos khusus masalah untuk mengemas kini parameter ansatz kita secara berulang.

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 Mac 2026