สถานะอ้างอิง
ในบทเรียนนี้ เราจะสำรวจวิธีที่เราสามารถกำหนดค่าเริ่มต้นของระบบด้วย reference state เพื่อช่วยให้อัลกอริทึม variational ของเรา converge เร็วขึ้น ก่อนอื่น เราจะเรียนรู้วิธีสร้าง reference state ด้วยมือ จากนั้นสำรวจตัวเลือกมาตรฐานหลายอย่างที่สามารถใช้ในอัลกอริทึม variational
สถานะดีฟอลต์
Reference state หมายถึงจุดเริ่มต้นที่คงที่สำหรับปัญหาของเรา ในการเตรียม reference state เราต้องใช้ unitary ที่ไม่มีพารามิเตอร์ที่เหมาะสมที่จุดเริ่มต้นของ Circuit ควอนตัมของเรา เช่นว่า หากคุณมีการเดาที่มีเหตุผลหรือจุดข้อมูลจากวิธีแก้ปัญหาที่เหมาะสมที่สุดที่มีอยู่ อัลกอริทึม variational มักจะ converge เร็วขึ้นหากคุณใช้สิ่งนั้นเป็นจุดเริ่มต้น
reference state ที่ง่ายที่สุดคือสถานะดีฟอลต์ ซึ่งเราใช้สถานะเริ่มต้นของ Circuit ควอนตัม -Qubit: สำหรับสถานะดีฟอลต์ ตัวดำเนินการ unitary ของเรา เนื่องจากความเรียบง่าย สถานะดีฟอลต์เป็น reference state ที่ถูกต้องซึ่งใช้ในหลายสถานการณ์
Classical reference state
สมมติว่าคุณมีระบบ 3 Qubit และต้องการเริ่มต้นในสถานะ แทนสถานะดีฟอลต์ นี่คือตัวอย่างของ reference state แบบคลาสสิกล้วน ๆ และในการสร้างมัน คุณเพียงแค่ต้องใช้ X gate กับ Qubit (ตามการเรียงลำดับ Qubit ของ Qiskit) เช่นว่า
ในกรณีนี้ ตัวดำเนินการ unitary ของเราคือ ซึ่งนำไปสู่ reference state
# 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")
Quantum reference state
สมมติว่าคุณต้องการเริ่มต้นด้วยสถานะที่ซับซ้อนกว่าซึ่งเกี่ยวข้องกับ superposition และ/หรือ entanglement เช่น
ในการได้สถานะนี้จาก วิธีหนึ่งคือใช้ Hadamard gate บน Qubit (), CNOT (CX) gate ที่มี Qubit เป็น control qubit และ Qubit เป็น target qubit () และสุดท้าย gate ที่ใช้กับ Qubit ()
ในสถานการณ์นี้ ตัวดำเนินการ unitary ของเราคือ และ reference state ของเราคือ
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
การสร้าง Reference States โดยใช้ template circuits
เราสามารถใช้ template circuits ต่าง ๆ เช่น TwoLocal ซึ่งช่วยให้แสดงพารามิเตอร์ที่ปรับได้หลายตัวและ entanglement ได้อย่างง่ายดาย เราจะครอบคลุม template circuits เหล่านี้ในรายละเอียดในบทเรียนถัดไป แต่เราสามารถใช้มันเป็น reference states ได้หากเราผูกพารามิเตอร์:
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")
Reference states เฉพาะแอปพลิเคชัน
Quantum machine learning
ในบริบทของ variational quantum classifier (VQC) ข้อมูลการฝึกจะถูกเข้ารหัสเข้าสู่สถานะควอนตัมด้วย Circuit แบบมีพารามิเตอร์ที่เรียกว่า feature map โดยค่าพารามิเตอร์แต่ละค่าแทนจุดข้อมูลจาก dataset การฝึก zz_feature_map เป็นประเภทของ Circuit แบบมีพารามิเตอร์ที่สามารถใช้ส่งข้อมูลของเรา () ไปยัง feature map นี้
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")
สรุป
ในบทเรียนนี้ คุณได้เรียนรู้วิธีกำหนดค่าเริ่มต้นของระบบโดยใช้:
- Reference state ดีฟอลต์
- Classical reference states
- Quantum reference states
- Reference states เฉพาะแอปพลิเคชัน
variational workload ระดับสูงของเราเป็นดังนี้:
ในขณะที่ reference states เป็นจุดเริ่มต้นคงที่ เราสามารถใช้ variational form เพื่อกำหนด ansatz เพื่อแทนชุดของสถานะแบบมีพารามิเตอร์สำหรับอัลกอริทึม variational ของเราในการสำรวจ