การลดความผิดพลาดในการอ่านค่าสำหรับ Sampler primitive โดยใช้ M3
ประมาณการการใช้งาน: ไม่ถึงหนึ่งนาทีบนโปรเซสเซอร์ Heron r2 (หมายเหตุ: นี่เป็นเพียงการประมาณเท่านั้น เวลาที่ใช้จริงอาจแตกต่างกัน)
พื้นหลัง
ต่างจาก Estimator primitive ตรงที่ Sampler primitive ไม่มีการรองรับการลดความผิดพลาดในตัว วิธีการหลายอย่างที่ Estimator รองรับนั้นออกแบบมาเฉพาะสำหรับค่าความคาดหวัง จึงไม่สามารถนำมาใช้กับ Sampler primitive ได้ ข้อยกเว้นคือการลดความผิดพลาดในการอ่านค่า ซึ่งเป็นวิธีที่มีประสิทธิภาพสูงและนำมาใช้กับ Sampler primitive ได้เช่นกัน
M3 Qiskit addon นำเสนอวิธีที่มีประสิทธิภาพในการลดความผิดพลาดในการอ่านค่า บทช่วยสอนนี้จะอธิบายวิธีใช้ M3 Qiskit addon เพื่อลดความผิดพลาดในการอ่า นค่าสำหรับ Sampler primitive
ความผิดพลาดในการอ่านค่าคืออะไร?
ก่อนการวัดผล สถานะของ Qubit register จะถูกอธิบายด้วยซูเปอร์โพซิชันของ computational basis states หรือด้วย density matrix การวัด Qubit register ลงใน classical bit register จะดำเนินการเป็นสองขั้นตอน ขั้นตอนแรกคือการวัดเชิงควอนตัมที่แท้จริง ซึ่งหมายความว่าสถานะของ Qubit register จะถูกโปรเจกต์ไปยัง basis state เดียวที่ระบุด้วย สตริงของ และ ขั้นตอนที่สองคือการอ่านสตริงบิตที่ระบุ basis state นี้ แล้วเขียนลงในหน่วยความจำคอมพิวเตอร์แบบคลาสสิก เราเรียกขั้นตอนนี้ว่า readout ปรากฏว่าขั้นตอนที่สอง (readout) มีความผิดพลาดมากกว่าขั้นตอนแรก (การโปรเจกต์ไปยัง basis states) สิ่งนี้สมเหตุสมผลเมื่อนึกว่า readout ต้องตรวจจับ สถานะควอนตัมในระดับจุลภาค แล้วขยายมันขึ้นมาสู่ระดับมหภาค โดย readout resonator จะเชื่อมต่อกับ (transmon) Qubit ทำให้เกิดการเปลี่ยนความถี่เล็กน้อยมาก จากนั้นพัลส์ไมโครเวฟ จะสะท้อนออกจาก resonator แล้วได้รับการเปลี่ยนแปลงเล็กน้อยใน คุณสมบัติของมัน จากนั้นพัลส์ที่สะท้อนกลับมาจะถูกขยายและวิเคราะห์ นี่เป็นกระบวนการที่ละเอียดอ่อน และอยู่ภายใต้ความผิดพลาดหลายประเภท
ประเด็นสำคัญคือ แม้ทั้งการวัดเชิงควอนตัมและ readout จะเกิดความผิดพลาดได้ แต่ อย่างหลังเป็นต้นเหตุของความผิดพลาดหลัก ที่เรียกว่า readout error ซึ่งเป็นสิ่งที่เราโฟกัสในบทช่วยสอนนี้
พื้นหลังทางทฤษฎี
หาก sampled bitstring (ที่จัดเก็บในหน่วยความจำแบบคลาสสิก) แตกต่างจาก bitstring ที่ระบุ สถานะควอนตัมที่ถูกโปรเจกต์ เราเรียกว่าเกิด readout error ขึ้น ความผิดพลาดเหล่านี้พบว่าเป็นแบบสุ่มและไม่สัมพันธ์กันระหว่างแต่ละ sample การสร้างแบบจำลอง readout error ว่าเป็น noisy classical channel นั้นพบว่ามีประโยชน์มาก นั่นคือ สำหรับทุกคู่ของ bitstrings และ จะมีความน่าจะเป็นคงที่ที่ค่าจริงของ จะถูก อ่านผิดเป็น
โดยเฉพาะอย่างยิ่ง สำหรับทุกคู่ของ bitstrings จะมีความน่าจะเป็น (แบบเงื่อน ไข) ที่ จะถูกอ่าน เมื่อค่าจริงคือ นั่นคือ
โดยที่ คือจำนวนบิตใน readout register เพื่อให้ชัดเจน เราสมมติว่า เป็นจำนวนเต็มในระบบทศนิยมที่การแทนค่าทวิภาคของมันคือ bitstring ที่ใช้ระบุ computational basis states เราเรียกเมทริกซ์ขนาด ว่า assignment matrix สำหรับค่าจริงที่ คงที่ การบวกความน่าจะเป็นทุ กผลลัพธ์ที่มีสัญญาณรบกวน ต้องได้ นั่นคือ
เมทริกซ์ที่ไม่มีค่าลบและเป็นไปตาม (1) เรียกว่า left-stochastic เมทริกซ์ left-stochastic เรียกอีกอย่างว่า column-stochastic เพราะแต่ละคอลัมน์บวกได้ เราหาค่าประมาณของแต่ละสมาชิก จากการทดลองโดย เตรียม basis state ซ้ำๆ แล้วคำนวณความถี่ ของการปรากฏของ sampled bitstrings
หากการทดลองหนึ่งเกี่ยวข้องกับการประมาณการกระจายความน่าจะเป็นบน output bitstrings โดยการสุ่มซ้ำๆ เราสามารถใช้ เพื่อลด readout error ในระดับของการกระจาย ขั้นตอนแรกคือการรัน Circuit ที่สนใจซ้ำๆ หลายครั้ง เพื่อสร้าง histogram ของ sampled bitstrings histogram ที่ normalize แล้วคือการกระจายความน่าจะเป็นที่วัดได้บน bitstrings ที่เป็นไปได้ ซึ่งเราแทนด้วย ความน่าจะเป็น (ที่ประมาณ) ของการ sample bitstring เท่ากับผลรวมของ true bitstrings ทั้งหมด แต่ละอันถ่วงน้ำหนักด้วย ความน่าจะเป็นที่มันจะถูกเข้าใจผิดว่าเป็น ข้อความนี้ในรูปแบบเมทริกซ์คือ
โดยที่ คือการกระจายที่แท้จริง กล่าวอีกนัยหนึ่ง readout error มีผลคูณ การกระจายในอุดมคติของ bitstrings ด้วย assignment matrix เพื่อ สร้างการกระจายที่สังเกตได้ เราวัด และ แล้ว แต่ไม่มีทางเข้าถึง โดยตรง โดยหลักการ เราจะ ได้การกระจายที่แท้จริงของ bitstrings สำหรับ Circuit ของเรา โดยการแก้สมการ (2) หา เชิงตัวเลข
ก่อนที่จะไปต่อ มีข้อสังเกตสำคัญบางประการของแนวทางเบื้องต้นนี้
- ในทางปฏิบัติ สมการ (2) ไม่ได้แก้โดยการ invert ขั้นตอนวิธีพีชคณิตเชิงเส้นใน ไลบรารีซอฟต์แวร์ใช้วิธีที่มีเสถียรภาพ แม่นยำ และมีประสิทธิภาพมากกว่า
- เมื่อประมาณค่า เราสมมติว่ามีเฉพาะ readout error เกิดขึ้นเท่านั้น โดยเฉพาะอย่างยิ่ง เราสมมติว่าไม่มีความผิดพลาดในการเตรียมสถานะและการวัดเชิงควอนตัม — หรืออย่างน้อยก็ได้รับการแก้ไขแล้ว ในกรณีที่สมมติฐานนี้ดี จะแทน เฉพาะ readout error เท่านั้น แต่เมื่อเรา ใช้ เพื่อแก้ไขการกระจายที่วัดได้ บน bitstrings เราไม่ได้ตั้งสมมติฐานเช่นนั้น จริงๆ แล้ว เราคาดว่า Circuit ที่น่าสนใจ จะนำเข้าสัญญาณรบกวน เช่น gate errors การกระจาย "ที่แท้จริง" ยังคงรวมผลกระทบจากความผิดพลาดที่ไม่ได้รับการแก้ไขอื่นๆ
วิธีนี้แม้จะมีประโยชน์ในบางสถานการณ์ แต่ก็มีข้อจำกัดบางประการ
ทรัพยากรด้านพื้นที่และเวลาที่ต้องการในการประมาณค่า เพิ่มขึ้นแบบเอ็กซ์โพเนนเชียลตาม :
- การประมาณค่า และ ขึ้นอยู่กับความผิดพลาดทางสถิติจากการ sampling จำนวนจำกัด สัญญาณรบกวนนี้สามารถลดให้เล็กน้อยได้ตามต้องการ โดยแลกกับ shots มากขึ้น (จนถึงช่วงเวลาที่พารามิเตอร์ฮาร์ดแวร์เปลี่ยนแปลง ซึ่งส่งผลให้เกิดความผิดพลาดเชิงระบบใน ) อย่างไรก็ตาม หากไม่มีการสมมติฐานเกี่ยวกับ bitstrings ที่สังเกตได้ เมื่อทำการลดความผิดพลาด จำนวน shots ที่ต้องการเพื่อประมาณค่า จะเพิ่มขึ้น อย่างน้อยแบบเอ็กซ์โพเนนเชียลตาม
- คือเมทริกซ์ขนาด เมื่อ ปริมาณหน่วยความจำที่ต้องการในการจัดเก็บ จะมากกว่าหน่วยความจำที่มีในแล็ปท็อปประสิทธิภาพสูง
ข้อจำกัดเพิ่มเติม:
- การกระจายที่กู้คืนมา อาจมี ความน่าจะเป็นติดลบหนึ่งรายการขึ้นไป (ขณะที่ยังบวกได้หนึ่ง) วิธีแก้ทางหนึ่ง คือการ minimize โดยมีเงื่อนไขว่า แต่ละสมาชิกใน ต้องไม่ติดลบ อย่างไรก็ตาม runtime ของวิธีดังกล่าว ยาวนานกว่าการแก้สมการ (2) โดยตรงถึงหลายอันดับ
- ขั้นตอนการลดความผิดพลาดนี้ทำงานในระดับการกระจายความน่าจะเป็น บน bitstrings โดยเฉพาะอย่างยิ่ง มันไม่สามารถแก้ไขความผิดพลาดใน bitstring แต่ละตัวที่สังเกตได้
Qiskit M3 addon: การปรับขนาดสำหรับ bitstrings ที่ยาวขึ้น
การแก้สมการ (2) โดยใช้ขั้นตอนวิธีพีชคณิตเชิงเส้นมาตรฐานนั้นจำกัดอยู่ที่ bitstrings ที่ยาวไม่เกินประมาณ 10 บิต อย่างไรก็ตาม M3 สามารถจัดการกับ bitstrings ที่ยาวกว่ามากได้ คุณสมบัติสำคัญสองประการของ M3 ที่ทำใ ห้เป็นไปได้คือ:
- สหสัมพันธ์ใน readout error ลำดับที่สามขึ้นไประหว่างกลุ่มของบิต ถูกสมมติว่าไม่มีนัยสำคัญและละเว้น ในทางหลักการ หากแลกกับ shots มากขึ้น ก็สามารถประมาณสหสัมพันธ์ที่สูงกว่าได้เช่นกัน
- แทนที่จะสร้าง อย่างชัดเจน เราใช้เมทริกซ์ effective ที่มีขนาดเล็กกว่ามาก ซึ่งบันทึก ความน่าจะเป็นเฉพาะสำหรับ bitstrings ที่เก็บรวบรวมเมื่อสร้าง
ในระดับสูง ขั้นตอนการทำงานมีดังนี้
ขั้นแรก เราสร้าง building blocks ที่จะนำมาใช้สร้างคำอธิบาย effective ที่เรียบง่ายของ จากนั้น เราเรียกใช้ Circuit ที่สนใจซ้ำๆ และเก็บ bitstrings ที่ใช้ในการสร้าง ทั้ง และด้วยความช่วยเหลือจาก building blocks สร้าง effective
โดยละเอียดกว่านั้น:
-
Single-qubit assignment matrices จะถูกประมาณสำหรับแต่ละ Qubit เพื่อทำเช่นนี้ เราเตรียม Qubit register ในสถานะ all-zero แล้วในสถานะ all-one ซ้ำๆ และบันทึกความน่าจะเป็นสำหรับแต่ละ Qubit ที่จะถูกอ่านผิด
-
สหสัมพันธ์ลำดับที่สามขึ้นไปถูกสมมติว่าไม่มีนัยสำคัญและละเว้น
แทนที่เราสร้าง single-qubit assignment matrices จำนวน อัน และ two-qubit assignment matrices จำนวน อัน one- และ two-qubit assignment matrices เหล่านี้จะถูกจัดเก็บ ไว้ใช้ในภายหลัง
-
หลังจาก sampling Circuit ซ้ำๆ เพื่อสร้าง , เราสร้างการประมาณ effective ของ โดยใช้เฉพาะ bitstrings ที่ถูก sample เมื่อสร้าง เมทริกซ์ effective นี้ สร้างจาก single- และ two-qubit matrices ที่อธิบายไว้ในหัวข้อก่อนหน้า มิติเชิงเส้นของเมทริกซ์นี้อยู่ในระดับของจำนวน shots ที่ใช้สร้าง ซึ่งเล็กกว่า มิติ ของ assignment matrix เต็มๆ มาก
สำหรับรายละเอียดทางเทคนิคของ M3 คุณสามารถอ่านได้ใน Scalable Mitigation of Measurement Errors on Quantum Computers
การประยุกต์ใช้ M3 กับ quantum algorithm
เราจะนำ M3's readout mitigation มาใช้กับ hidden shift problem ซึ่ง hidden shift problem และปัญหาที่ใกล้เคียงกัน เช่น hidden subgroup problem ถูกคิดค้นขึ้นในบริบทของ fault-tolerant (แม่นยำกว่านั้น ก่อนที่ fault-tolerant QPUs จะถูกพิสูจน์ว่าเป็นไปได้!) แต่ก็ถูกศึกษาด้วย processor ที่มีอยู่เช่นกัน ตัวอย่างของ algorithmic exponential speedup ที่ได้รับสำหรับตัวแปรหนึ่งของ hidden shift problem บน 127-qubit IBM® QPUs สามารถหาได้ใน บทความนี้ (arXiv version)
ในส่วนต่อไป เลขคณิตทั้งหมดเป็น Boolean นั่นคือ สำหรับ การบวก คือฟังก์ชัน XOR เชิงตรรกะ ยิ่งไปกว่านั้น การคูณ (หรือ ) คือฟังก์ชัน AND เชิงตรรกะ สำหรับ , ถูกนิยามโดยการประยุกต์ XOR แบบ bitwise dot product ถูกนิยามโดย
Hadamard operator และ Fourier transform
ในการสร้าง quantum algorithms การใช้ Hadamard operator เป็น Fourier transform นั้นพบได้ทั่วไปมาก computational basis states บางครั้งเรียกว่า classical states ซึ่งมีความสัมพันธ์แบบหนึ่งต่อหนึ่ง กับ classical bitstrings -Qubit Hadamard operator บน classical states สามารถมองได้ว่าเป็น Fourier transform บน Boolean hypercube:
พิจารณาสถานะ ที่สอดคล้องกับ bitstring ที่คงที่ เมื่อประยุกต์ และใช้ , เราจะเห็นว่า Fourier transform ของ สามารถเขียนได้เป็น
Hadamard เป็น inverse ของตัวเอง นั่นคือ ดังนั้น inverse Fourier transform คือ operator เดิม โดยชัดเจน เรามี
Hidden shift problem
เราพิจารณาตัวอย่างง่ายๆ ของ hidden shift problem ปัญหาคือการระบุ constant shift ใน input ของฟังก์ชัน ฟังก์ชันที่เราพิจารณาคือ dot product ซึ่งเป็นสมาชิกที่ง่ายที่สุด ของฟังก์ชันกลุ่มใหญ่ที่ยอมรับ quantum speedup สำหรับ hidden shift problem ผ่านเทคนิคที่คล้ายกับที่นำเสนอด้านล่าง
ให้ เป็น bitstrings ที่มีความยาว เรานิยาม โดย
ให้ เป็น bitstrings ที่คงที่ยาว เรายังนิยาม โดย
โดยที่ และ เป็นพารามิเตอร์ที่ซ่อนอยู่ เราได้รับ black boxes สองอัน อันหนึ่ง implement และอีกอันหนึ่ง เราสมมติว่าเรารู้ว่ามันคำนวณฟังก์ชันที่นิยามข้างต้น ยกเว้นเราไม่รู้ ทั้ง และ เกมคือการหา hidden bitstrings (shifts) และ โดยการ query และ ชัดเจนว ่าหากเราเล่นเกมแบบ classical เราต้องการ queries เพื่อหา และ ตัวอย่างเช่น เราสามารถ query ด้วยทุกคู่ของสตริงที่มีองค์ประกอบหนึ่งของคู่เป็น all zeros และอีกองค์ประกอบหนึ่งมีเพียงองค์ประกอบเดียวที่ตั้งเป็น ในแต่ละ query เราจะเรียนรู้องค์ประกอบหนึ่งของ หรือ อย่างไรก็ตาม เราจะเห็นว่า หาก black boxes ถูก implement เป็น quantum circuits เราสามารถ หา และ ด้วย query เดียวต่อ และ
ในบริบทของ algorithmic complexity, black box เรียกว่า oracle นอกจากจะทึบแสงแล้ว oracle ยังมีคุณสมบัติที่รับ input และ ให้ output ทันที โดยไม่เพิ่มอะไรในงบประมาณความซับซ้อนของ algorithm ที่มันฝังอยู่ ในความเป็นจริง ในกรณีนี้ oracles ที่ implement และ จะเห็นว่ามีประสิทธิภาพ
Quantum circuits สำหรับ และ
เราต้องการส่วนประกอบต่อไปนี้เพื่อ implement และ เป็น quantum circuits
สำหรับ single-qubit classical states , โดยที่ , controlled- Gate สามารถเขียนได้เป็น
เราจะดำเนินการด้วย CZ gates หนึ่งอันบน และหนึ่งอันบน และต่อไปจนถึง เราเรียก operator นี้ว่า
คือเวอร์ชันควอนตัมของ :
เราต้องการ implement bitstring shift ด้วย เราแทน operator บน register ด้วย และในทำนองเดียวกันบน register operators เหล่านี้ใช้ ตรงที่บิตเดียวเป็น และ identity ตรงที่เป็น แล้วเรามี
black box ที่สอง ถูก implement โดย unitary ซึ่งได้จาก
เพื่อดูสิ่งนี้ เราประยุกต์ operators จากขวาไปซ้ายกับสถานะ ขั้นแรก
จากนั้น
สุดท้าย
ซึ่งก็คือเวอร์ชันควอนตัมของ
Hidden shift algorithm
ตอนนี้เราจะนำชิ้นส่วนต่างๆ มาประกอบกันเพื่อแก้ hidden shift problem เราเริ่มด้วยการใช้ Hadamards กับ registers ที่ initialize ไว้ที่สถานะ all-zero
จากนั้น เรา query oracle เพื่อได้
ในบรรทัดสุดท้าย เราละ constant global phase factor ออก และแทน equality จนถึง phase ด้วย จากนั้น การใช้ oracle จะนำตัวคูณอีก เข้ามา ซึ่งยกเลิกกับตัวที่มีอยู่แล้ว แล้วเรามี:
ขั้นตอนสุดท้ายคือการใช้ inverse Fourier transform, , ซึ่งได้ผลลัพธ์
Circuit เสร็จสมบูรณ์แล้ว ในกรณีที่ไม่มีสัญญาณรบกวน การ sampling quantum registers จะ คืนค่า bitstrings ด้วยความน่าจะเป็น
Boolean inner product เป็นตัวอย่างของฟังก์ชันที่เรียกว่า bent functions เราจะไม่นิยาม bent functions ที่นี่ แต่เพียงแต่สังเกตว่าพวกมัน "มีความต้านทานสูงสุดต่อการโจมตีที่พยายามใช้ประโยชน์จากการพึ่งพา ของ outputs ต่อ linear subspace ของ inputs" คำพูดนี้มาจากบทความ Quantum algorithms for highly non-linear Boolean functions ซึ่ง ให้ hidden shift algorithms ที่มีประสิทธิภาพสำหรับฟังก์ชัน bent หลายกลุ่ม algorithm ในบทช่วยสอนนี้ปรากฏในหัวข้อ 3.1 ของบทความ
ในกรณีทั่วไปยิ่งขึ้น Circuit สำหรับการหา hidden shift คือ