Lewati ke konten utama

Reference state

Dalam pelajaran ini, kita akan mengeksplorasi bagaimana kita bisa menginisialisasi sistem kita dengan sebuah reference state untuk membantu algoritma variasional kita konvergen lebih cepat. Pertama, kita akan belajar cara membuat reference state secara manual, kemudian mengeksplorasi beberapa opsi standar yang bisa digunakan dalam algoritma variasional.

Diagram opsi untuk reference state termasuk default, spesifik-aplikasi, dan kuantum.

State default

Sebuah reference state mengacu pada titik awal tetap awal untuk masalah kita. Untuk mempersiapkan reference state, kita perlu menerapkan uniter URU_R yang sesuai dan non-terparameter di awal Circuit kuantum kita, sehingga ρ=UR0|\rho\rangle = U_R |0\rangle. Jika kamu memiliki tebakan atau data dari solusi optimal yang sudah ada, algoritma variasional kemungkinan besar akan konvergen lebih cepat jika kamu menggunakannya sebagai titik awal.

Reference state paling sederhana adalah state default, di mana kita menggunakan state awal dari Circuit kuantum nn-Qubit: 0n|0\rangle^{\otimes n}. Untuk state default, operator uniter kita URIU_R \equiv I. Karena kesederhanaannya, state default adalah reference state yang valid dan digunakan dalam banyak skenario.

Reference state klasik

Misalkan kamu memiliki sistem tiga-Qubit dan ingin memulai dalam state 001|001\rangle alih-alih state default 000|000\rangle. Ini adalah contoh reference state murni klasik, dan untuk membuatnya, kamu cukup menerapkan Gate X ke qubit 00 (mengikuti pengurutan qubit Qiskit), karena 001=X0000|001\rangle = X_0 |000\rangle.

Dalam kasus ini, operator uniter kita adalah URX0U_R \equiv X_0, yang menghasilkan reference state ρ001|\rho\rangle \equiv |001\rangle.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.x(0)

qc.draw("mpl")

Output dari sel kode sebelumnya

Reference state kuantum

Misalkan kamu bertujuan untuk memulai dengan state yang lebih kompleks yang melibatkan superposisi dan/atau entanglement, seperti 12(100+111)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

Untuk mendapatkan state ini dari 000|000\rangle, salah satu pendekatannya adalah menggunakan Gate Hadamard pada qubit 00 (H0H_0), sebuah Gate CNOT (CX) dengan qubit 00 sebagai qubit kontrol dan qubit 11 sebagai qubit target (CNOT01CNOT_{01}), dan akhirnya Gate XX yang diterapkan ke qubit 22 (X2X_2).

Dalam skenario ini, operator uniter kita adalah URX2CNOT01H0000U_{R} \equiv X_2CNOT_{01}H_0|000\rangle, dan reference state kita adalah ρ12(100+111)|\rho\rangle \equiv \frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

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

qc.draw("mpl")

Output dari sel kode sebelumnya

Membuat Reference State menggunakan Circuit template

Kita juga bisa menggunakan berbagai Circuit template, seperti TwoLocal yang memungkinkan ekspresi beberapa parameter yang bisa diatur dan entanglement dengan mudah. Kita akan membahas Circuit template ini secara lebih detail di pelajaran berikutnya, tetapi kita bisa menggunakannya untuk reference state kita jika kita mengikat parameter-parameternya:

from qiskit.circuit.library import TwoLocal
from math import pi

reference_circuit = TwoLocal(2, "rx", "cz", entanglement="linear", reps=1)
theta_list = [pi / 2, pi / 3, pi / 3, pi / 2]

reference_circuit = reference_circuit.assign_parameters(theta_list)

reference_circuit.decompose().draw("mpl")

Output dari sel kode sebelumnya

Reference state spesifik-aplikasi

Pembelajaran mesin kuantum

Dalam konteks pengklasifikasi kuantum variasional (VQC), data pelatihan dikodekan ke dalam state kuantum dengan Circuit terparameter yang dikenal sebagai feature map, di mana setiap nilai parameter mewakili titik data dari dataset pelatihan. zz_feature_map adalah jenis Circuit terparameter yang bisa digunakan untuk meneruskan titik data kita (xx) ke feature map ini.

from qiskit.circuit.library import zz_feature_map

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)
zz_feature_map_reference.decompose().draw("mpl")

Output dari sel kode sebelumnya

Ringkasan

Dengan pelajaran ini, kamu telah belajar cara menginisialisasi sistem menggunakan:

  • Reference state default
  • Reference state klasik
  • Reference state kuantum
  • Reference state spesifik-aplikasi

Beban kerja variasional tingkat tinggi kita terlihat seperti ini:

Diagram Circuit dari operator uniter yang mempersiapkan reference state.

Sementara reference state adalah titik awal tetap yang telah ditetapkan, kita bisa menggunakan sebuah variational form untuk mendefinisikan sebuah ansatz untuk merepresentasikan kumpulan state terparameter bagi algoritma variasional kita untuk dieksplorasi.