การคำนวณควอนตัม (Quantum computing)
ในช่วงเดือนที่ผ่านมานี้ผมได้ยินคำว่า 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)

