หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การออกแบบควอนตัม TensorFlow

TensorFlow Quantum (TFQ) ถูกออกแบบมาสำหรับปัญหาการเรียนรู้ของเครื่องควอนตัมยุค NISQ มันนำการคำนวณพื้นฐานเชิงควอนตัมเช่นการสร้างวงจรควอนตัมไปสู่ระบบนิเวศ TensorFlow แบบจำลองและการดำเนินการที่สร้างขึ้นด้วย TensorFlow ใช้พื้นฐานเหล่านี้เพื่อสร้างระบบลูกผสมแบบควอนตัมที่ทรงพลัง

การใช้ TFQ นักวิจัยสามารถสร้างกราฟ TensorFlow โดยใช้ชุดข้อมูลควอนตัมแบบจำลองควอนตัมและพารามิเตอร์ควบคุมแบบดั้งเดิม สิ่งเหล่านี้ล้วนแสดงเป็นเทนเซอร์ในกราฟการคำนวณเดียว ผลของการวัดควอนตัมซึ่งนำไปสู่เหตุการณ์ความน่าจะเป็นแบบดั้งเดิมนั้นได้มาจาก TensorFlow ops การฝึกอบรมเสร็จสิ้นด้วย Keras API มาตรฐาน โมดูล tfq.datasets ช่วยให้นักวิจัยทดลองชุดข้อมูลควอนตัมใหม่และน่าสนใจ

Cirq

Cirq เป็นกรอบการเขียนโปรแกรมเชิงปริมาณจาก Google มันให้การดำเนินงานพื้นฐานทั้งหมดเช่น qubits, ประตู, วงจรและการวัดเพื่อสร้างแก้ไขและเรียกใช้วงจรควอนตัมบนคอมพิวเตอร์ควอนตัมหรือคอมพิวเตอร์ควอนตัมจำลอง TensorFlow Quantum ใช้ Cirq primitives เหล่านี้เพื่อขยาย TensorFlow สำหรับการคำนวณแบบกลุ่มการสร้างแบบจำลองและการคำนวณแบบไล่ระดับสี เพื่อให้มีประสิทธิภาพด้วย TensorFlow Quantum เป็นความคิดที่ดีที่จะมีผลบังคับใช้กับ Cirq

TensorFlow ควอนตัมดั้งเดิม

TensorFlow Quantum ใช้ส่วนประกอบที่จำเป็นในการรวม TensorFlow เข้ากับฮาร์ดแวร์คอมพิวเตอร์ควอนตัม ด้วยเหตุนี้ TFQ แนะนำสองประเภทข้อมูลพื้นฐาน:

  • วงจรควอนตัม : นี่หมายถึงวงจรควอนตัมที่กำหนดของ Cirq ( cirq.Circuit ) ภายใน TensorFlow สร้างวงจรที่มีขนาดแตกต่างกันคล้ายกับชุดของดาต้าพอยน์มูลค่าจริงที่แตกต่างกัน
  • ผลรวมของ Pauli : แสดงการรวมเชิงเส้นของผลิตภัณฑ์เทนเซอร์ของตัวดำเนินการ Pauli ที่กำหนดไว้ใน Cirq ( cirq.PauliSum ) เช่นวงจรสร้างชุดของตัวดำเนินการขนาดแตกต่างกัน

ตัวเลือกพื้นฐาน

การใช้วงจรดั้งเดิมควอนตัมภายใน tf.Tensor , TensorFlow Quantum ใช้ ops ที่ประมวลผลวงจรเหล่านี้และสร้างผลลัพธ์ที่มีความหมาย

TensorFlow ops ถูกเขียนใน C ++ ที่ปรับให้เหมาะสม ops ตัวอย่างเหล่านี้จากวงจรคำนวณค่าความคาดหวังและส่งออกสถานะที่สร้างโดยวงจรที่กำหนด การเขียนตัวเลือกที่ยืดหยุ่นและมีประสิทธิภาพมีความท้าทาย:

  1. วงจรมีขนาดไม่เท่ากัน สำหรับวงจรจำลองคุณไม่สามารถสร้างการดำเนินการแบบสแตติก (เช่น tf.matmul หรือ tf.add ) จากนั้นแทนที่ตัวเลขที่แตกต่างกันสำหรับวงจรที่มีขนาดแตกต่างกัน ตัวเลือกเหล่านี้จะต้องอนุญาตให้มีขนาดแบบไดนามิกที่กราฟการคำนวณ TensorFlow ขนาดคงที่ไม่อนุญาต
  2. ข้อมูลควอนตัมสามารถเหนี่ยวนำให้เกิดโครงสร้างวงจรที่แตกต่างกันโดยสิ้นเชิง นี่เป็นอีกเหตุผลหนึ่งที่สนับสนุนขนาดแบบไดนามิกใน TFQ ops ข้อมูลควอนตัมสามารถแสดงถึงการเปลี่ยนแปลงเชิงโครงสร้างของสถานะควอนตัมพื้นฐานที่แสดงโดยการดัดแปลงวงจรต้นฉบับ เนื่องจากดาต้าพอยน์ใหม่ถูกสลับเข้าและออกที่รันไทม์กราฟการคำนวณ TensorFlow ไม่สามารถแก้ไขได้หลังจากสร้างขึ้นดังนั้นจึงจำเป็นต้องมีการสนับสนุนโครงสร้างที่แตกต่างกันเหล่านี้
  3. cirq.Circuits คล้ายกับกราฟการคำนวณที่เป็นชุดของการดำเนินการและบางคนอาจมีสัญลักษณ์ / ตัวยึดตำแหน่ง มันเป็นสิ่งสำคัญที่จะทำให้สิ่งนี้เข้ากันได้กับ TensorFlow มากที่สุด

สำหรับเหตุผลด้านประสิทธิภาพ Eigen (ไลบรารี C ++ ที่ใช้ใน TensorFlow ops) ไม่เหมาะสำหรับการจำลองวงจรควอนตัม แต่ตัวจำลองวงจรที่ใช้ในการ ทดลองควอนตัม มฤตยูจะถูกใช้เป็นตัวตรวจสอบและขยายเป็นพื้นฐานของ TFQ ops (ทั้งหมดเขียนด้วยคำแนะนำ AVX2 และ SSE) Ops ที่มีลายเซ็นการทำงานเหมือนกันถูกสร้างขึ้นโดยใช้คอมพิวเตอร์ควอนตัมทางกายภาพ การสลับระหว่างคอมพิวเตอร์ควอนตัมแบบจำลองและแบบฟิสิคัลเป็นเรื่องง่ายเหมือนการเปลี่ยนรหัสบรรทัดเดียว ops เหล่านี้อยู่ใน circuit_execution_ops.py

ชั้น

เลเยอร์ TensorFlow Quantum เปิดเผยการสุ่มตัวอย่างความคาดหวังและการคำนวณสถานะแก่ผู้พัฒนาโดยใช้ส่วนต่อประสาน tf.keras.layers.Layer สะดวกในการสร้างเลเยอร์วงจรสำหรับพารามิเตอร์การควบคุมแบบคลาสสิกหรือสำหรับการอ่านข้อมูล นอกจากนี้คุณสามารถสร้างเลเยอร์ที่มีระดับสูงของความซับซ้อนที่รองรับวงจรแบทช์ค่าพารามิเตอร์การควบคุมแบทช์และดำเนินการการอ่านค่าแบทช์ ดู tfq.layers.Sample สำหรับตัวอย่าง

ความแตกต่าง

ซึ่งแตกต่างจากการใช้งานของ TensorFlow หลายอย่างที่สังเกตได้ในวงจรควอนตัมไม่มีสูตรสำหรับการไล่ระดับสีที่ค่อนข้างง่ายต่อการคำนวณ นี่เป็นเพราะคอมพิวเตอร์คลาสสิคสามารถอ่านตัวอย่างจากวงจรที่ทำงานบนคอมพิวเตอร์ควอนตัมเท่านั้น

เพื่อแก้ไขปัญหานี้โมดูล tfq.differentiators มีเทคนิคการสร้างความแตกต่างมาตรฐานหลายประการ ผู้ใช้ยังสามารถกำหนดวิธีการของตนเองในการคำนวณการไล่ระดับสีทั้งในการตั้งค่า "โลกแห่งความจริง" ของการคำนวณความคาดหวังจากตัวอย่างและโลกที่แน่นอนในการวิเคราะห์ วิธีการที่แตกต่างกัน จำกัด มักจะเร็วที่สุด (เวลานาฬิกาแขวน) ในสภาพแวดล้อมการวิเคราะห์ / แน่นอน ในขณะที่ช้าลง (เวลาของนาฬิกาแขวนผนัง) วิธีการที่ใช้ประโยชน์ได้มากกว่าเช่น การเปลี่ยนพารามิเตอร์ หรือ วิธีการสุ่ม มักจะมีประสิทธิภาพมากกว่า tfq.differentiators.Differentiator ถูกสร้างอินสแตนซ์และเชื่อมต่อกับ op ที่มีอยู่ด้วย generate_differentiable_op หรือส่งผ่านไปยังตัวสร้างของ tfq.layers.Expectation หรือ tfq.layers.SampledExpectation ในการใช้โปรแกรมสร้างความแตกต่างที่กำหนดเองให้สืบทอดจากคลาส tfq.differentiators.Differentiator ในการกำหนดการดำเนินการไล่ระดับสีสำหรับการสุ่มตัวอย่างหรือการคำนวณเวกเตอร์สถานะให้ใช้ tf.custom_gradient

ชุดข้อมูล

เมื่อการคำนวณควอนตัมเติบโตขึ้นข้อมูลควอนตัมและการรวมตัวแบบต่างๆจะเกิดขึ้นทำให้การเปรียบเทียบเชิงโครงสร้างยากขึ้น โมดูล tfq.datasets ใช้เป็นแหล่งข้อมูลสำหรับงานการเรียนรู้ของเครื่องควอนตัม มันช่วยให้มั่นใจการเปรียบเทียบแบบโครงสร้างสำหรับรุ่นและประสิทธิภาพ

หวังว่าด้วยการมีส่วนร่วมของชุมชนขนาดใหญ่โมดูล tfq.datasets จะเติบโตขึ้นเพื่อให้การวิจัยมีความโปร่งใสและทำซ้ำได้มากขึ้น ปัญหา curated อย่างระมัดระวังใน: การควบคุมควอนตัม, การจำลอง fermionic, การจำแนกใกล้ช่วงการเปลี่ยนภาพ, การตรวจจับควอนตัม ฯลฯ เป็นผู้สมัครที่ดีทั้งหมดนอกเหนือจาก tfq.datasets ในการเสนอชุดข้อมูลใหม่เปิด ปัญหา GitHub