為什麼不能簡單地複製一個量子位元
傳統電腦用蠻力冗餘來處理錯誤。擔心某個位元會翻轉?那就存三份。如果你讀到 0、0、1,就按多數表決,相信那個 0。簡單、便宜,而且管用,因為複製一個傳統位元是免費的,讀取它也不會擾動它。
對一個 量子位元 來說,這兩點都不成立。一個量子位元處於 疊加態 |psi> = alpha|0> + beta|1>,而 不可複製定理 證明了不存在任何能複製未知量子態的操作。你根本沒辦法做備份。而且即便你能做到,讀取一個量子位元會觸發 測量:疊加態塌縮為單一的 0 或 1,而那對脆弱的振幅 alpha 和 beta 也就永遠消失了。
錯誤本身也比傳統位元翻轉更微妙。一個量子位元可能遭遇位元翻轉(|0> 變成 |1>,和傳統情形一樣),但也可能遭遇相位翻轉(beta 的符號翻轉,這在傳統裡沒有對應物),或者在緩慢漂移過程中遭遇這兩者的任意連續混合。退相干 是這種量子資訊洩漏到環境中的統稱,它給你的計算何時分崩離析定下了時鐘。
邏輯量子位元與實體量子位元
核心思路是不再把任何單個硬體量子位元當作你的資訊單元。取而代之,你用許多不完美的實體量子位元搭出一個 [[logical-qubit|邏輯量子位元]],並藉助 糾纏 把量子資訊分散到它們全體之上。沒有任何單個實體量子位元握有答案,所以任何單個實體量子位元出故障都沒辦法摧毀它。
這堂堂正正地繞開了不可複製。你並沒有把態 |psi> 複製到多個地方。你是在把一個邏輯態編碼進整組量子位元共享的糾纏態裡,資訊存活於量子位元之間的關聯之中,而不在它們中的任何一個裡。這是一種根本不同、並且物理上允許的操作。
回報來自 容錯 與 閾值定理:如果你的實體量子位元足夠好(低於某個錯誤率閾值),那麼每個邏輯量子位元用上更多實體量子位元會讓邏輯錯誤率下降,而不是上升。在閾值以下,更多硬體給你換來更高的可靠性。在閾值以上,更多硬體只會給雜訊更多可乘之機,整個方案就會失敗。
在不測量資料的情況下偵測錯誤
這就是第二堵牆的破解之道。你從不直接測量資料量子位元。取而代之,你測量的是穩定子:一組量子位元經過精心挑選的聯合性質,它揭示*是否發生了錯誤*,卻不洩露*被編碼的態是什麼*。
訣竅在於宇稱(奇偶性)。問「這兩個量子位元相同還是不同?」,是一個你無需知道任何一個的具體取值就能回答的問題。你用 CNOT 閘把資料量子位元連到一個額外的輔助(ancilla)量子位元上,讓這個輔助位元拾取它們的合併宇稱,然後你只測量這個輔助位元。資料依舊留在疊加態裡;出來的只有那個被稱為症狀(syndrome)的錯誤訊號。
from qiskit import QuantumCircuit # 2 data qubits + 1 ancilla that reads their parity qc = QuantumCircuit(3, 1) # entangle the ancilla (q2) with the parity of q0 and q1 qc.cx(0, 2) qc.cx(1, 2) # measure ONLY the ancilla -> tells us if q0,q1 differ, # without revealing either qubit's actual state qc.measure(2, 0)
還有一個微妙的額外好處:儘管量子位元的錯誤是連續的,測量穩定子這一動作會把它們離散化。這次測量迫使量子位元「拿定主意」,到底是被位元翻轉、還是相位翻轉、還是什麼都沒發生擊中了,從而把雜亂的連續統塌縮成一個離散的錯誤,之後你就能用一個乾淨的糾正閘來修復它。你一遍又一遍地測量症狀,再由一個叫做解碼器的傳統演算法推斷出錯誤最可能在哪裡。
表面碼
領先的實用方案是[[surface-code|表面碼]]。它的吸引力在於幾何結構:它把量子位元排布在一個平坦的二維網格上,並且只測量相鄰量子位元之間的穩定子。這種局域的、最近鄰的結構,正好是真實的超導及類似硬體實際能連得起來的,這也是它主導當前路線圖的原因。
D --- A --- D --- A --- D | | | | | A --- D --- A --- D --- A | | | | | D --- A --- D --- A --- D | | | | | A --- D --- A --- D --- A | | | | | D --- A --- D --- A --- D D = data qubit A = ancilla (stabilizer measurement)
錯誤表現為前後不一致的症狀測量結果,而一條被翻轉的量子位元鏈會透過點亮其兩個端點處的輔助位元來宣告自己的存在。解碼器讀取這張跨越許多測量輪次的端點點亮圖,推斷出最可能的錯誤鏈並將其撤銷。把網格做得更大(更大的「碼距」),邏輯 保真度 就會提高,因為現在一個未被察覺的邏輯錯誤,需要一條更長、可能性更低的實體錯誤鏈才能矇混過關。
開銷的現實
現在講誠實的部分。所有這些保護都極其昂貴。具體估算會隨目標和硬體不同而變化,但單單一個有用且受到良好保護的邏輯量子位元,可能就要動用 1,000 個實體量子位元 這個量級,要求苛刻的應用還會把這個數字推得更高。這大約 1000:1 的開銷,正是量子計算遠比那些量子位元數量的頭條標題所暗示的要難得多的核心原因。
這正是為什麼我們把當下稱為 [[nisq|NISQ]] 時代:含雜訊中等規模量子(Noisy Intermediate-Scale Quantum)。今天的機器有幾十到幾百個實體量子位元,且沒有完整的糾錯,所以 退相干 把它們限制在短而淺的電路上,過了這個限度雜訊就會淹沒答案。要運行 Shor 演算法 來破解真實的加密,需要在糾錯支撐下的數百萬個實體量子位元,一台至今尚不存在的容錯機器。
這一切都不意味著糾錯正在失敗。實驗已經跨過了一個真正的里程碑:表明把碼做得更大會讓邏輯量子位元*變得更好*,閾值行為正如理論所預言的那樣起作用。這是貨真價實、來之不易的進展。但從「一個勝過其組成部件的邏輯量子位元」,到一個能改變世界的演算法所需要的成千上萬個乾淨的邏輯量子位元,中間還有一條漫長的工程之路,而對這道鴻溝保持誠實,正是本文的全部要點。