Variational Quantum Eigensolver (VQE) สไตล์เด็กคอม

คำนวน Ground state energy ด้วย Variational Quantum Eigensolver

Natchapol Patamawisut
3 min readJul 25, 2021

วิชาเคมี ที่เราเรียนกันมาตั้งแต่ประถมนั้น เป็นหนึ่งในศาสตร์ที่คาดว่า เราสามารถนำ Quantum computing เข้าไปจับได้ในหลาย ๆ งานเนื่องจากคุณสมบัติทาง Quantum ทำให้เราสามารถจำลองลักษณะทางธรรมชาติที่เกิดขึ้นในระดับเล็ก ๆ ได้แม่นยำมากกว่าแบบจำลองที่ทำบนระบบแบบเดิม

ซึ่งงานที่จะมาพูดถึงในวันนี้คือ การจำลอง Molecule ของ Hydrogen atom ด้วย Quantum algorithm

โดย Algorithm ที่ใช้ มีชื่อว่า Variational Quantum Eigensolver (VQE)

Variational Quantum Eigensolver (VQE)

ถ้าพูดถึง Variational algorithm ใน Quantum จะเป็นลักษณะของ Algorithm ที่มีตัวแปรแฝงอยู่ใน Algorithm นั้น และ เราสามารถ Update ค่าตัวแปรนั้น เพื่อทำให้ได้ผลลัพท์ของ Algorithm ที่ดีขึ้น

ซึ่งในปัจจุบันมี Variational algorithm อยู่มากมาย เช่น

  • Variational Quantum Eigensolver (VQE)
  • Quantum Adiabatic Optimization Algorithm (QAOA)
  • Quantum Neural Networks (QNN)
  • Quantum Support Vector Machines (QSVM)
  • Variational Quantum Classifier (VQC)

โดยแต่ละตัวก็ใช้สำหรับงานที่ต่างกันออกไป

ในส่วนของ VQE เป็น Algorithm ที่ทำงาน เพื่อ Optimize ผลจาก Ansatz ให้ได้ผลลัพท์เป็น Minimum eigenvalue ของ Hamiltonian ที่เรากำหนด ซึ่งในโจทย์การจำลอง Molecule ของ Hydrogen atom ตัว Minimum eigenvalue ที่ได้จะเป็น Ground state energy ของ Hamiltonian นั้น ๆ

Hamiltonian

ถ้ามองภาพง่าย ๆ Hamiltonian ก็คือโจทย์ ที่เราทำการ Encode ให้อยู่ในรูป Combination ของ Quantum operator เช่น

ตัวอย่าง Hamiltonian ของโจทย์การหา Ground state energy หรือ Minimum eigenvalue ของ H2

ซึ่งเราสามารถลดรูปให้อยู่ใน Operator ลักษณะนี้ได้

Ansatz

คือ Variational quantum circuit ที่เรากำหนดมา เพื่อใช้ประมาณค่า Eigenvector ของ Hamiltonian ซึ่งเราสามารถกำหนด Ansatz ได้หลายรูปแบบด้วยกัน เช่น EfficientSU2

qiskit.circuit.library.EfficientSU2 — Qiskit 0.28.0 documentation

Objective function

ในส่วนของ Objective function ที่ใช้จะเป็น Expectation ของของ Hamiltonian ซึ่งจุดประสงค์ของ Objective function นี้คือ ให้เรา Minimize ให้ค่าของ Eigenvalue มีค่าน้อยที่สุด เพื่อให้ได้เป็น Minimum eigenvalue หรือ Ground state energy นั้นเอง

Optimization

The Variational Quantum Eigensolver (VQE) — OpenQEMIST 0.2.0 documentation (1qbit.com)

ในขั้นตอน Optimization ทั้งหมดจะมีขั้นตอนดังภาพ คือ

  1. Initialize parameters θ
  2. ใช้ θ เป็น Parameter ของ Gate ใน Ansatz
  3. ทำการ run เพื่อหา State ผลลัพท์จาก Ansatz และ Hamiltonian
  4. นำ State ผลลัพท์ มาหา Eigenvalue ด้วย Objective function
  5. นำผลลัพท์จาก Objective function ไปผ่าน Classical optimizer
  6. ทำการ Update ค่าที่ได้จาก Optimizer ไปที่ θ
  7. ทำซ้ำ Step 2–6

Implementation

ในครั้งนี้ผมใช้ Qiskit เป็น Library สำหรับการ Implement โดยจะมีการทำงานดังนี้

  • กำหนด Hamiltonian

ในขั้นตอนแรกจะทำการกำหนด Hamiltonian หรือโจทย์ที่เราต้องการ

hamiltonian  = (-1.052373245772859 * I ^ I) + \(0.39793742484318045 * I ^ Z) + \(-0.39793742484318045 * Z ^ I) + \(-0.01128010425623538 * Z ^ Z) + \(0.18093119978423156 * X ^ X)
  • กำหนด Ansatz

ตัว Antsatz นี้จะใช้เป็น EfficientSU2 ขนาด 2 qubits

ansatz = EfficientSU2(num_qubits, reps=2, entanglement='linear', insert_barriers=True)print(ansatz)
  • กำหนด Optimizer

ในที่นี้จะใช้ Simultaneous Perturbation Stochastic Approximation (SPSA) optimizer

optimizer = SPSA(maxiter = 1000)
  • กำหนด VQE

โดยตัว VQE นี้เราสามารถกำหนด Parameter ที่เกี่ยวข้องได้ เช่น Ansatz circuit, Optimizer ที่ต้องการใช้, ค่า θ เริ่มต้น รวมถึง Callback เพื่อทำ Monitoring ผลลัพท์ระหว่างการ Optimize model

local_vqe = VQE(ansatz=ansatz,optimizer=optimizer,initial_point=initial_point,quantum_instance=QasmSimulatorPy(),callback=callback)
  • Run VQE
local_result = local_vqe.compute_minimum_eigenvalue(hamiltonian)

จะพบว่า ค่า Energy สามารถลู่เข้าได้

  • Evaluate

สามารถดูผลลัพท์สุดท้ายของ VQE ได้ด้วยคำสั่ง

local_result.__dict__

--

--

Natchapol Patamawisut

Studying Computer Engineering at King Mongkut's University of Technology Thonburi