주 콘텐츠로 건너뛰기

오류의 이산화

지금까지는 9-Qubit Shor 코드의 맥락에서 XX 오류와 ZZ 오류를 고려했으며, 이 절에서는 임의의 오류를 고려할 것입니다. 우리가 발견하게 될 것은, 그러한 오류를 다루기 위해 지금까지 논의한 것과 다른 무엇을 할 필요가 없다는 점입니다. XX 오류, ZZ 오류, 또는 두 가지 모두를 정정할 수 있는 능력은 임의의 오류를 정정할 수 있는 능력을 의미합니다. 이 현상은 때때로 오류의 이산화라고 불립니다.

유니타리 qubit 오류

먼저 단일 qubit 유니타리 오류부터 시작해 봅시다. 예를 들어, 그러한 오류는 Bloch 구면의 매우 작은 회전에 대응할 수 있으며, 완벽하지 않은 Gate로 인해 발생한 오류를 나타낼 수도 있습니다. 또는 qubit에 대한 임의의 다른 유니타리 연산일 수도 있으며, 반드시 항등원에 가까운 것일 필요는 없습니다.

그러한 오류를 정정하는 것은 어려워 보일 수 있습니다. 결국, 이러한 종류의 가능한 오류는 무한히 많으며, 각 오류를 정확히 식별하고 되돌릴 수 있다는 것은 상상하기 어렵습니다. 그러나 비트 플립, 위상 플립, 또는 둘 다를 정정할 수 있는 한, 이 레슨의 앞부분에서 설명한 절차를 사용하여 임의의 단일 qubit 유니타리 오류를 성공적으로 정정할 수 있습니다.

왜 이것이 사실인지 보기 위해, 먼저 단일 qubit에 대한 오류를 나타내는 임의의 2×22 \times 2 유니타리 행렬 UU가 네 개의 Pauli 행렬(항등 행렬 포함)의 선형 결합으로 표현될 수 있음을 인식해 봅시다.

U=αI+βX+γY+δZU = \alpha \mathbb{I} + \beta X + \gamma Y + \delta Z

앞으로 보게 되겠지만, 오류 검출 회로가 실행될 때, 신드롬 비트를 제공하는 측정은 인코딩의 상태를 확률적으로 붕괴시켜, 네 개의 Pauli 행렬 중 하나가 나타내는 오류(또는 오류 없음)가 발생한 상태로 만듭니다. (UU가 유니타리라는 사실로부터 숫자 α,\alpha, β,\beta, γ,\gamma, δ\deltaα2+β2+γ2+δ2=1\vert\alpha\vert^2 + \vert\beta\vert^2 + \vert\gamma\vert^2 + \vert\delta\vert^2 = 1을 만족해야 함이 따라 나오며, 실제로 α2,\vert\alpha\vert^2, β2,\vert\beta\vert^2, γ2,\vert\gamma\vert^2, δ2\vert\delta\vert^2의 값들은 해당 Pauli 오류가 발생한 상태로 인코딩된 상태가 붕괴할 확률입니다.)

이 작동 방식을 더 자세히 설명하기 위해, 주어진 qubit 유니타리 연산이 어느 qubit에 작용하는지를 표시하는 데 아래 첨자를 사용하는 것이 편리할 것입니다. 예를 들어, Shor 코드에 사용되는 9개의 qubit에 번호를 매기는 데 Qiskit의 qubit 번호 규약 (Q8,Q7,,Q0)(\mathsf{Q}_8,\mathsf{Q}_7,\ldots,\mathsf{Q}_0)을 사용하면, 단일 qubit에 대한 다양한 유니타리 연산에 대해 다음과 같은 표현을 가집니다. 각 경우에 유니타리 행렬을 다른 모든 qubit의 항등 행렬과 텐서 곱합니다.

X0=IIIIIIIIXZ4=IIIIZIIIIU7=IUIIIIIII\begin{aligned} X_0 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes X \\[1.5mm] Z_4 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes Z \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \\[1.5mm] U_7 & = \mathbb{I} \otimes U \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \end{aligned}

따라서 특히, 주어진 qubit 유니타리 연산 UU에 대해, qubit kk에 적용된 UU의 작용을 다음 공식으로 지정할 수 있으며, 이는 이전 공식과 유사하지만 각 행렬이 qubit kk에 적용된 연산을 나타낸다는 점이 다릅니다.

Uk=αIk+βXk+γYk+δZkU_k = \alpha \mathbb{I}_k + \beta X_k + \gamma Y_k + \delta Z_k

이제 ψ\vert\psi\rangle이 qubit 상태의 9-qubit 인코딩이라고 가정합시다. qubit kk에서 오류 UU가 발생하면, 상태 UkψU_k \vert\psi\rangle을 얻게 되는데, 이는 다음과 같이 ψ\vert\psi\rangle에 작용하는 Pauli 연산의 선형 결합으로 표현될 수 있습니다.

Ukψ=αψ+βXkψ+γYkψ+δZkψU_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + \gamma Y_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

이 시점에서 Y=iXZY = iXZ를 대입해 봅시다.

Ukψ=αψ+βXkψ+iγXkZkψ+δZkψU_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + i \gamma X_kZ_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

이제 앞서 설명한 오류 검출 및 정정 단계를 고려해 봅시다. 내부 코드의 세 가지 패리티 검사와 외부 코드의 측정 결과를 합쳐서 총 8비트로 구성된 단일 신드롬으로 생각할 수 있습니다. 이러한 신드롬 비트를 생성하는 실제 표준 기저 측정 직전에, 상태는 다음과 같은 형태를 가집니다.

αI syndromeψ+βXk syndromeXkψ+iγXkZk syndromeXkZkψ+δZk syndromeZkψ\begin{gathered} \alpha\,\vert \mathbb{I} \text{ syndrome}\rangle \otimes \vert\psi\rangle \\ + \beta\,\vert X_k \text{ syndrome}\rangle \otimes X_k\vert\psi\rangle \\ + i \gamma\,\vert X_k Z_k \text{ syndrome}\rangle \otimes X_k Z_k\vert\psi\rangle \\ + \delta\,\vert Z_k \text{ syndrome}\rangle \otimes Z_k\vert\psi\rangle \end{gathered}

분명히 말하자면, 이 시점에서 우리는 두 개의 시스템을 가지고 있습니다. 왼쪽 시스템은 신드롬을 얻기 위해 측정할 8개의 qubit이며, I syndrome,\vert \mathbb{I} \text{ syndrome}\rangle, Xk syndrome\vert X_k \text{ syndrome}\rangle 등은 해당 오류(또는 오류 없음)와 일치하는 8-qubit 표준 기저 상태를 가리킵니다. 오른쪽 시스템은 인코딩에 사용되는 9개의 qubit입니다.

이 두 시스템은 이제 (일반적으로) 상관관계를 가지며, 이것이 이 방법이 작동하는 핵심 이유입니다. 신드롬을 측정함으로써, 오른쪽 9개의 qubit의 상태는 측정된 신드롬과 일치하는 Pauli 오류가 qubit 중 하나에 적용된 상태로 효과적으로 붕괴합니다. 게다가 신드롬 자체는 오류를 되돌리고 원래의 인코딩 ψ\vert\psi\rangle을 복원할 수 있는 충분한 정보를 제공합니다.

특히, 신드롬 qubit을 측정하고 적절한 정정이 이루어지면, 밀도 행렬로 표현될 수 있는 상태를 얻게 됩니다.

ξψψ,\xi \otimes \vert\psi\rangle\langle\psi\vert,

여기서

ξ=α2I syndromeI syndrome+β2Xk syndromeXk syndrome+γ2XkZk syndromeXkZk syndrome+δ2Zk syndromeZk syndrome.\begin{aligned} \xi = & \vert\alpha\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[1mm] & + \vert\beta\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[1mm] & + \vert\gamma\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[1mm] & + \vert\delta\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert. \end{aligned}

결정적으로, 이것은 곱 상태입니다. 오른쪽 텐서 인자로서 원래의 손상되지 않은 인코딩을 가지고 있으며, 왼쪽에는 무작위 오류 신드롬을 설명하는 밀도 행렬 ξ\xi를 가지고 있습니다. 우리가 관심을 가지는 오른쪽 시스템과는 더 이상 어떠한 상관관계도 없습니다. 왜냐하면 오류가 정정되었기 때문입니다. 이 시점에서 신드롬 qubit을 버리거나 재설정하여 다시 사용할 수 있습니다. 이것이 오류에 의해 생성된 무작위성, 즉 엔트로피가 시스템에서 제거되는 방식입니다.

이것이 유니타리 오류라는 특수한 경우의 오류 이산화입니다. 본질적으로, 신드롬을 측정함으로써 오류를 Pauli 행렬로 설명되는 오류로 효과적으로 투영합니다.

언뜻 보기에는 이렇게 임의의 유니타리 오류, 심지어 자체적으로는 거의 감지할 수 없을 정도로 미세한 오류까지 정정할 수 있다는 것이 너무 좋아서 사실이 아닌 것처럼 보일 수 있습니다. 그러나 여기서 중요한 점은 이것이 단일 qubit에 대한 유니타리 오류라는 것이며, 코드의 설계상 단일 qubit 연산은 인코딩된 논리 qubit의 상태를 바꿀 수 없다는 것입니다. 단지 상태를 유효한 인코딩의 부분 공간 밖으로 이동시킬 수 있을 뿐이며, 그러면 오류 검출이 상태를 붕괴시키고 정정이 원래의 상태로 되돌립니다.

임의의 qubit 오류

마지막으로, 반드시 유니타리일 필요는 없는 임의의 오류를 고려해 봅시다. 정확히 말하면, 임의의 qubit 채널 Φ\Phi로 설명되는 오류를 고려할 것입니다. 예를 들어, 이는 위상 감쇠 또는 탈분극 채널, 리셋 채널, 또는 우리가 전혀 생각해 본 적 없는 이상한 채널일 수도 있습니다.

첫 번째 단계는 Φ\Phi의 임의의 Kraus 표현을 고려하는 것입니다.

Φ(σ)=jAjσAj\Phi(\sigma) = \sum_j A_j \sigma A_j^{\dagger}

이것은 qubit 채널이므로, 각 AjA_j2×22\times 2 행렬이며, Pauli 행렬의 선형 결합으로 표현할 수 있습니다.

Aj=αjI+βjX+γjY+δjZA_j = \alpha_j \mathbb{I} + \beta_j X + \gamma_j Y + \delta_j Z

이를 통해 선택된 qubit kk에 대한 오류 Φ\Phi의 작용을 Pauli 행렬의 관점에서 다음과 같이 표현할 수 있습니다.

Φk(ψψ)=j(αjIk+βjXk+γjYk+δjZk)ψψ(αjIk+βjXk+γjYk+δjZk)\Phi_k \bigl( \vert\psi\rangle\langle\psi\vert\bigr) = \sum_j (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k) \vert\psi\rangle\langle\psi\vert (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k)^{\dagger}

요약하면, 단순히 모든 Kraus 행렬을 Pauli 행렬의 선형 결합으로 전개한 것입니다.

이제 오류 신드롬을 계산하고 측정한 후 드러난 오류를 정정하면, 유니타리 오류의 경우와 유사한 형태의 상태를 얻게 됩니다.

ξψψ,\xi \otimes \vert\psi\rangle\langle\psi\vert,

이번에는 다음과 같습니다.

ξ=j(αj2I syndromeI syndrome+βj2Xk syndromeXk syndrome+γj2XkZk syndromeXkZk syndrome+δj2Zk syndromeZk syndrome).\begin{aligned} \xi = & \sum_j \Bigl(\vert\alpha_j\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[-3mm] & \qquad + \vert\beta_j\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\gamma_j\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\delta_j\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert \Bigr). \end{aligned}

세부 사항은 조금 더 지저분하며 여기서는 보여주지 않습니다. 개념적으로 말하자면, 아이디어는 유니타리 경우와 동일합니다.

일반화

오류의 이산화는 여러 qubit에 대한 오류를 검출하고 정정할 수 있는 코드를 포함한 다른 양자 오류 정정 코드에도 일반화됩니다. 이러한 경우에 여러 qubit에 대한 오류는 Pauli 행렬의 텐서 곱으로 표현될 수 있으며, 이에 따라 서로 다른 신드롬은 단일 qubit이 아닌 여러 qubit에 수행될 수 있는 Pauli 연산 정정을 지정합니다.

다시 말해, 신드롬을 측정함으로써 오류는 Pauli 행렬의 텐서 곱으로 표현되는 이산적인 가능성의 집합으로 효과적으로 투영되거나 붕괴되며, 이러한 Pauli 오류를 정정함으로써 원래의 인코딩된 상태를 복원할 수 있습니다. 한편, 이 과정에서 생성된 무작위성은 신드롬 qubit으로 이동되어 버려지거나 재설정되며, 이에 따라 이 과정에서 생성된 무작위성이 인코딩을 저장하는 시스템에서 제거됩니다.