การคำนวณควอนตัม (Quantum computing)

Sanparith Marukatat
Sep 2, 2018 · 1 min read

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

หน่วยพื้นฐานของข้อมูลในคอมพิวเตอร์ปัจจุบันคือ “บิต” ที่มีค่าเป็น 0 หรือ 1 ในทางปฏิบัติเรากำหนดค่าของบิตบนเครื่องคอมพิวเตอร์ได้ด้วยวงจรตรรกะ (logic circuit) ที่สร้างจากอุปกรณ์อิเล็กทรอนิกส์ เช่น ทรานซิสเตอร์ หรือ ไดโอด อุปกรณ์เหล่านี้สามารถกักอิเล็กตรอนหรือปล่อยให้มันไหลผ่านได้ ทำให้เกิดค่า 0 หรือ 1 ตามที่ต้องการ หลักการทำงานของคอมพิวเตอร์ควอนตัม (quantum computer) นั้นคือแทนที่จะทำงานกับอิเล็กตรอนตรง ๆ เราจะทำงานกับคุณสมบัติหรือสถานะของมันแทน หรืออาจจะเป็นสถานะของอนุภาคอื่นก็ได้

ฟิสิกส์ควอนตัมนั้นถูกพัฒนาขึ้นมาเพื่ออธิบายพฤติกรรมของอนุภาคพื้นฐานต่าง ๆ หลักของควอนตัมนั้นต่างจากหลักของฟิสิกส์ดั้งเดิมหลายด้าน เช่นหากเราพิจารณา “สปิน (spin)” ของอิเล็กตรอน ในมุมมองฟิสิกส์ดั้งเดิมเราก็จะคาดให้อิเล็กตรอนนั้นมีสปิน “ขึ้น” หรือ “ลง” ในมุมมองควอนตัมค่าสปินของอิเล็กตรอนนั้นไม่ได้มีค่าตายตัวแต่ถูกอธิบายด้วยฟังก์ชันความน่าจะเป็น อิเล็กตรอนหนึ่ง ๆ มีทั้งสปินขึ้นและลงพร้อม ๆ กัน แต่ด้วยความน่าจะเป็นต่างกัน เราเรียกว่ามันอยู่ในสถานะ superposition เมื่อเราทำการวัดหรือเมื่อมันถูกรบกวนจากอนุภาคอื่น ฟังก์ชันความน่าจะเป็นของมันจะ “ฟุบ (collapse)” ลง และทำให้เราวัดค่าได้ค่าเดียวคือ 0 หรือ 1 เท่านั้น ค่าที่ได้หลังการฟุบนั้นขึ้นกับฟังก์ชันความน่าจะเป็นของสถานะ superposition ของอิเล็กตรอนนั่นเอง

หลักของ superposition นี้ถูกนำไปใช้ในการสร้าง “คิวบิต (qubit)” ที่เป็นหน่วยพื้นฐานของเครื่องคอมพิวเตอร์ควอนตัม การประมวลผลคิวบิตหนึ่ง ๆ นั้นเหมือนกับเราทำงานกับค่าทั้ง 2 ค่าที่เป็นไปได้พร้อม ๆ กัน เราอาจมองการประมวลผลบนคิวบิตเหมือนการประมวลผลแบบขนานบนคอมพิวเตอร์ในปัจจุบัน แต่จริง ๆ แล้วมันพิลึกกว่านั้น เพื่อให้เห็นภาพผมขอยืมตัวอย่างจากปาฐกถาของ ดร.ดาริโอ จิล จาก IBM Research สมมติว่าเรามีไพ่คว่ำอยู่ 4 ใบ เป็น K 3 ใบ Q 1 ใบ ถ้าเราต้องการหา Q เราก็ต้องทำการพลิกดูทีละใบ การคำนวณควอนตัมที่ใช้คิวบิตนั้นสามารถหา Q ได้ในการประมวลผลเพียงครั้งเดียว ตัวอย่างนี้สื่อว่าคอมพิวเตอร์ควอนตัมนั้นไม่ใช่แค่คอมพิวเตอร์ที่เร็วขึ้นแต่มันอาศัยหลักการคำนวณที่ต่างออกไปโดยสิ้นเชิง ปัญหาในการสร้างคอมพิวเตอร์ควอนตัมคือสถานะ superposition ของอนุภาคนี้สลายได้ง่ายเมื่อมันถูกรบกวนจากอนุภาคอื่น ดังนั้นการสร้างคอมพิวเตอร์ควอนตัมจึงทำได้ยากมาก ในปัจจุบันบริษัทยักษ์ใหญ่อย่าง Google IBM และ Intel ต่างก็แข่งกันสร้างคอมพิวเตอร์ควอนตัมที่มีจำนวนคิวบิตมากขึ้นเรื่อย ๆ

นอกจากความยากในเชิงฮาร์ดแวร์แล้วการออกแบบโปรแกรมควอนตัมก็ยังยากด้วย หนึ่งในปัญหาหลักคือการวัดไม่ทำให้เราทราบสถานะ superposition ของคิวบิต เราสามารถมองเรื่อง superposition นี้เหมือนกับเหรียญที่กำลังหมุนอยู่ นั่นคือมันมีโอกาสออกได้ทั้งหัวและก้อย หากเหรียญที่เราหมุนนั้นเบ้ ความน่าจะเป็นที่จะออกหัวหรือก้อยก็จะไม่เท่ากัน การวัดคือการเอามือตบเหรียญลงไป เราก็จะรู้ว่ามันออกหัวหรือก้อย แต่เมื่อตบลงไปแล้ว ปัญหาของควอนตัมคือเราไม่สามารถนำเหรียญนั้นกลับมาหมุนใหม่ได้ เราจึงไม่สามารถประมาณความเบ้ของเหรียญจากการหมุนหลาย ๆ ครั้งได้ ข้อจำกัดนี้แปลว่าหากเราเก็บข้อมูลในรูปคิวบิตแล้ว เราไม่สามารถสำเนาสถานะของมันไว้ในคิวบิตหลาย ๆ อันได้ (ข้อนี้กลับถือว่าดีสำหรับงานด้านความปลอดภัยสารสนเทศ) หรือ เราไม่สามารถใช้คำสั่งวนซ้ำหรือลูป (loop) ได้ เพราะการตรวจสอบข้อแม้การหยุดต้องทำการวัด เป็นต้น การเขียนโปรแกรมควอนตัมจึงยังอยู่ในรูปแบบพื้นฐาน เช่น ในรูปวงจรตรรกะควอนตัม หรือภาษาแอสแซมบลีควอนตัม

ถึงแม้ว่าการเขียนโปรแกรมควอนตัมในปัจจุบันยังมีข้อจำกัดเมื่อเทียบกับการเขียนโปรแกรมทั่วไป ผลที่ได้ที่ได้นั้นนับว่าคุ้มมาก เช่น อัลกอริทึมการแยกตัวประกอบจำนวนเฉพาะของชอร์ (Shor’s algorithm) ที่สามารถแยกตัวประกอบเฉพาะได้ในเวลาเสี้ยววินาทีในขณะที่คอมพิวเตอร์ในปัจจุบันต้องใช้เวลานับล้านปี (แต่เรายังไม่มีคอมพิวเตอร์ควอนตัมที่มีจำนวนคิวบิตพอให้ใช้งานได้) หรืออัลกอริทึมการค้นคืนสิ่งของของโกรเวอร์ (Grover’s algorithm) ที่ก็เร็วกว่าอัลกอริทึมปัจจุบันหลายเท่าเช่นกัน สำหรับงานด้านเอไอ เมื่อเราสามารถค้นคืนข้อมูลได้เร็วเราก็สามารถประยุกต์ใช้แนวความคิดของ “เพื่อนบ้านใกล้สุด (nearest neighbors)” ในการรู้จำสิ่งของได้ แต่การขยายวงจรควอนตัมของโกรเวอร์ให้รองรับกรณีทั่วไปนั้นยังดูเป็นสิ่งที่ยากอยู่ สำหรับแบบจำลองอื่น เช่น โครงข่ายประสาทเทียม ก็มีการเสนอแนวความคิดแบบควอนตัม แต่แนวความคิดเหล่านี้ก็ยังดูห่างไกลจากโครงสร้างโปรแกรมควอนตัมในปัจจุบัน

อีกแนวคิดหนึ่งในการใช้ประโยชน์จากหลักควอนตัมคือในกระบวนการสอนระบบเอไอ ลองนึกถึงการสำรวจปล่องถ้ำหลวงเพื่อช่วยทีมหมูป่า ปล่องแต่ละปล่องก็คือคำตอบที่เป็นไปได้ทั้งนั้น เพื่อสำรวจความเป็นไปได้นี้เราก็ต้องมุดลงปล่องไปดู ปัญหาของการสอนเอไอคือเรามักจะติดอยู่ในปล่องใดปล่องหนึ่ง โดยอาจจะไม่ใช่ปล่องที่ลึกที่สุดก็ได้ ในเชิงควอนตัมปัญหานี้แก้ได้โดยการ “เดินผ่านอุโมงค์ควอนตัม (quantum tunnelling)” เพื่อทะลุผนังข้ามไปสำรวจปล่องข้างเคียง แนวความคิดนี้นำไปสู่การสร้างคอมพิวเตอร์ควอนตัมอีกแบบโดยบริษัท D-Wave Systems จากแคนาดา ซึ่งมีจำนวนคิวบิตสูงถึง 2,000 อัน แต่ยังมีข้อถกเถียงกันในเรื่องความเร็วของเครื่องนี้อยู่

โดยรวมแล้วเราอยู่ในยุคเริ่มต้นของการคำนวณควอนตัม เหมือนกับช่วงกลางทศวรรษ 90 เป็นยุคเริ่มต้นของอินเทอร์เน็ต ยังมีปัญหาเบื้องต้นที่ต้องแก้อีก เช่น การพัฒนาภาษาระดับสูงสำหรับการเขียนโปรแกรมควอนตัม หรือการกำหนดมาตรฐานอุปกรณ์ฮาร์ดแวร์ควอนตัม ก่อนจะถึงยุคของการใช้งานการคำนวณควอนตัมเพื่อธุรกิจหรือเพื่องานวิจัยวิทยาศาสตร์ด้านอื่น ๆ อย่างเต็มรูปแบบ ในอีก 5 ถึง 10 ปี

ปล 1. มีคนแก้ตรงคำอธิบายเรื่องอุปกรณ์อิเล็กทรอนิกส์ให้ว่า “อุปกรณ์ไหลผ่านได้” ซึ่งผมอ่านแล้วก็งง กำลังสงสัยว่าที่คนชอบบอกว่านักวิจัยคุยไม่รู้เรื่องนี่เพราะ editor ป่าว 555

ปล 2. หลังจากเขียน draft แรกจบไปก็ไปเจอ tool ชื่อ Qiskit ที่มี tutorial น่าสน มีพวก quantum k-means, quantum SVM ด้วย สงสัยต้องไปลองเล่นบ้างแล้ว https://github.com/Qiskit/qiskit-tutorial/wiki/Table-of-Contents-(as-of-August-9,-2018)

NECTEC

Knowledge Sharing from NECTEC

Written by

NECTEC

Knowledge Sharing from NECTEC

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade