오류 전파 제어
내결함성 양자 계산은 오류와 오류 정정 사이의 경주와도 같습니다. 오류의 수가 충분히 적으면 오류 정정이 성공적으로 오류를 정정하지만, 오류가 너무 많으면 오류 정정은 실패합니다.
이런 이유로, 내결함성 회로 구현에서 양자 계산을 수행하는 방식에 충분한 주의를 기울여 오류 전파를 제어해야 합니다. 즉, 한 Qubit에서 발생한 오류가 양자 회로의 Gate 동작을 통해 여러 Qubit으로 전파될 수 있으며, 이로 인해 오류의 수가 급격히 증가할 수 있습니다. 오류 전파를 제어하지 못하면 오류 정정 노력이 오류에 금방 압도되므로, 이는 무엇보다 중요한 문제입니다. 반면에 오류 전파를 통제할 수 있다면, 오류 정정이 오류를 따라잡을 수 있는 기회가 생기며, 충분히 높은 속도로 오류를 정정하여 양자 계산이 의도한 대로 작동할 수 있습니다.
이 문제에 대한 기술적 논의의 출발점은 이중 Qubit Gate(또는 더 일반적으로 다중 Qubit Gate)가 완벽하게 작동하더라도 오류를 전파할 수 있다는 인식입니다. 예를 들어, controlled-NOT Gate를 생각해 보겠습니다. controlled-NOT Gate가 수행되기 직전에 제어 Qubit에서 오류가 발생한다고 가정합니다. "양자 오류 정정" 단원에서 이미 살펴보았듯이, 이는 controlled-NOT이 수행된 후 두 Qubit 모두에서 오류가 발생하는 것과 동일합니다. 또한 controlled-NOT Gate 수행 전에 제어 Qubit이 아닌 대상 Qubit에 오류가 작용하는 경우도 마찬가지입니다.
이것이 오류 전파입니 다. controlled-NOT Gate 이전에 발생한 또는 오류의 위치가 좋지 않아, controlled-NOT Gate 이후에는 사실상 두 개의 오류로 바뀌기 때문입니다. 이는 controlled-NOT Gate가 완벽한 경우에도 발생하며, 주어진 controlled-NOT Gate 자체에도 노이즈가 있을 수 있다는 사실을 잊어서는 안 됩니다. 이는 두 Qubit에서 상관된 오류를 생성할 수 있습니다.
우려를 더하는 것은, 다음 그림이 시사하듯이 이후의 이중 Qubit Gate들이 이러한 오류를 더 멀리 전파할 수 있다는 사실입니다.
어떤 의미에서 이를 완전히 피할 수는 없습니다. 다중 Qubit Gate를 사용하는 한, 오류 전파의 가능성은 항상 존재합니다. 그러나 다음 소절에서 논의하겠지만, 이로 인한 피해를 제한하여 전파된 오류를 관리할 수 있는 조치를 취할 수 있습니다.
횡단적 Gate 구현
내결함성 양자 회로에서 오류 전파를 완화하는 가장 간단하고 알려진 방법은 Gate를 횡단적으로(transversally) 구현하는 것입니다. 이는 특정한 단순한 형태를 가진 가젯(gadget)으로 구축하는 것을 의미합니다. 구체적으로, 가젯은 연산들의 텐서 곱(또는 다시 말해, 깊이가 1인 양자 회로)이어야 하며, 각 연산은 접촉하는 각 코드 블록 내의 단일 Qubit 위치에만 작용할 수 있습니다. 이는 몇 가지 예시를 통해 가장 쉽게 설명할 수 있습니다.
횡단적 Gate 구현의 예시
다음 그림은 CNOT Gate의 횡단적 구현을 보여줍니다. (Qubit별로 CNOT을 수행하는 이 특정 구현은 CSS 코드에서만 작동하지만, 실제로 모든 CSS 코드에 대해 작동합니다.)
이 그림에는 두 개의 코드 블록이 있으며, 각 블록은 다섯 개의 Qubit으로 구성되어 있습니다(앞서 시사했듯이 더 많을 수도 있습니다). 오른쪽의 회로는 깊이가 1이며, 각 CNOT Gate는 각 블록 내의 단일 Qubit 위치에만 작용합니다. 첫 번째 CNOT의 제어와 대상은 모두 최상위 Qubit(즉, Qiskit 번호 매기 기 규칙에 따라 Qubit 0)이고, 두 번째 CNOT의 제어와 대상은 모두 위에서 두 번째 Qubit(즉, Qubit 1)이며, 이런 방식으로 계속됩니다. 따라서 이것이 횡단적 가젯입니다.
두 번째 예시 — 실제로는 예시들의 집합 — 로 임의의 Pauli Gate를 고려해 보겠습니다. Pauli Gate는 어떤 안정자 코드에서도 Pauli 연산으로 구성된 가젯을 구성하여 항상 횡단적으로 구현할 수 있습니다. 특히, 안정자 코드로 인코딩된 논리 Qubit에 대한 모든 Pauli 연산은 인코딩에 사용된 물리적 Qubit에 적절한 Pauli 연산을 선택하여 횡단적으로 구현할 수 있습니다. 이는 "안정자 형식" 단원에서 지나가며 언급된 사실과 일치합니다. 전역 위상을 제외하고, 안정자 코드의 모든 안정자 생성원과 가환하는 Pauli 연산은 해당 코드로 인코딩된 Qubit 또는 Qubit들에 대해 Pauli 연산처럼 작용합니다.
구체적인 예시로, 표준 기저 상태가 다음과 같이 인코딩될 수 있는 -Qubit Shor 코드를 고려해 보겠습니다.
이 코드로 인코딩된 논리 Qubit에 대한 Gate는 -Qubit Pauli 연산
으로 횡단적으로 구현할 수 있으며, 논리 Qubit에 대한 Gate는 -Qubit Pauli 연산
으로 횡단적으로 구현할 수 있습니다.
이 두 Pauli 연산 모두 무게가 이며, 이는 필요한 최소 무게입니다. (-Qubit Shor 코드는 거리가 이므로, 무게 이하의 비항등 Pauli 연산은 오류로 감지됩니다.)
세 번째 예시로, -Qubit Steane 코드(그리고 실제로 모든 색 코드)는 모든 Clifford Gate의 횡단적 구현을 허용합니다. CNOT Gate가 어떤 CSS 코드에서도 횡단적으로 구현되는지는 이미 살펴보았으므로, 이제 Gate와 Gate를 고려해야 합니다. Steane 코드의 개 Qubit 전체에 Hadamard Gate를 적용하면 인코딩된 논리 Qubit에 가 적용되는 것과 동일하며, 개 Qubit 전체에 Gate( Gate가 아님)를 적용하면 논리 Gate와 동일합니다.
횡단적 가젯에서의 오류 전파
횡단적 Gate 구현이 무엇인지 이제 알았으니, 오류 전파와의 연관성을 논의해 보겠습니다.
단일 Qubit Gate의 횡단적 구현의 경우, 가젯에는 단순히 단일 Qubit Gate들의 텐서 곱이 있으며, 이는 선택된 양자 오류 정정 코드의 물리적 Qubit 코드 블록에 작용합니다. 이러한 Gate들 중 어느 것이 실패하여 오류를 도입할 수 있지만, 다중 Qubit Gate가 관여하지 않기 때문에 오류의 전파는 발생하지 않습니다. 가젯이 적용된 직후 오류 정정이 수행되며, 가젯에 의해(또는 가젯이 수행되는 동안) 도입된 오류의 수가 충분히 적으면 오류가 정정됩니다. 따라서 결함 있는 Gate로 인해 도입되는 오류율이 충분히 낮다면, 오류 정정이 성공할 가능성이 높습니다.
반면에 이중 Qubit Gate 의 횡단적 구현의 경우, 오류 전파의 가능성이 있습니다 — 이미 살펴보았듯이 이를 피할 방법이 없습니다. 그러나 핵심은, 횡단적 가젯이 단일 코드 블록 내에서 오류 전파를 일으킬 수 없다는 것입니다.
예를 들어, CSS 코드에 대한 CNOT Gate의 위에서 설명한 횡단적 구현을 고려하면, 가젯이 수행되기 직전에 상단 코드 블록의 최상위 Qubit에서 오류가 발생할 수 있으며, 가젯 내의 첫 번째 CNOT이 해당 오류를 하단 블록의 최상위 Qubit으로 전파합니다. 그러나 두 개의 결과 오류는 이제 별도의 코드 블록에 있습니다. 따라서 코드가 오류를 정정할 수 있다고 가정하면, 가젯 이후에 수행되는 오류 정정 단계는 두 오류를 각각 정정합니다 — 각 코드 블록 내에서 단 하나의 오류만 발생하기 때문입니다. 반면에 오류 전파가 동일한 코드 블록 내에서 발생하면, 낮은 무게의 오류가 코드가 처리할 수 없는 높은 무게의 오류로 변할 수 있습니다.
횡단적 Gate의 비보편성
두 개의 서로 다른 안정자 코드에서, 특정 Gate가 한 코드로는 횡단적으로 구현할 수 있지만 다른 코드로는 불가능할 수 있습니다. 예를 들어, -Qubit Steane 코드를 사용하여 Gate를 횡단적으로 구현하는 것은 불가능하지만, 이것이 가능한 다른 코드들도 있습니다.
안타깝게도, 비자명한 양자 오류 정정 코드의 경우, 보편적인 Gate 집합을 횡단적으로 구현하는 것은 결코 가능하지 않습니다. 이 사실은 Eastin-Knill 정리로 알 려져 있습니다.
이 정리의 증명은 여기서 설명하지 않겠습니다. (복잡한 증명은 아니지만, 이 시리즈의 사전 요건에 포함되지 않는 Lie군과 Lie 대수의 기본 지식이 필요합니다.) 그러나 기본적인 아이디어는 직관적으로 전달할 수 있습니다. 비자명한 코드의 코드 공간 내에 무한한 횡단적 연산 패밀리가 머물 수는 없습니다. 왜냐하면 횡단적 연산의 미세한 차이는 코드가 오류로 감지하는 낮은 무게의 Pauli 연산으로 잘 근사되기 때문입니다.
요약하면, 횡단적 가젯은 Gate의 단순하고 본질적으로 내결함성이 있는 구현을 제공합니다. 그러나 합리적인 양자 오류 정정 코드 선택의 경우, 이 방식으로 구현할 수 있는 보편적 Gate 집합은 절대 존재하지 않으며, 따라서 대안적인 가젯을 사용해야 합니다.
매직 상태
비자명한 양자 오류 정정 코드 선택에 대해 보편적인 양자 Gate 집합을 횡단적으로 구현하는 것이 불가능하므로, Gate를 내결함성 있게 구현하는 다른 방법을 고려해야 합니다. 잘 알려진 한 가지 방법은 *매직 상태(magic states)*의 개념에 기반합니다. 이는 특정 Gate의 내결함성 구현을 가능하게 하는 Qubit의 양자 상태입니다.
매직 상태를 이용한 Gate 구현
Gate와 Gate를 고려하는 것부터 시작해 보겠습니다. 이들의 행렬 표현은 다음과 같습니다.
정의에 의해 는 Clifford 연산이지만, 는 그렇지 않습니다. Clifford Gate( Gate, Gate, CNOT Gate)로 구성된 회로만으로는 Gate를 구현할 수 없습니다.
그러나 상태
의 복사본이 있고, 표준 기저 측정 및 고전적으로 제어되는 Gate를 허용한다면, Clifford Gate로 구성된 회로로 (전역 위상까지) Gate를 구현할 수 있습니다. 특히, 다음 회로는 이를 수행하는 한 가지 방법을 보여줍니다. 여기서 보이는 현상은 양자 Gate 텔레포테이션의 다소 단순화된 예입니다.
이 회로가 올바르게 작동하는지 확인하기 위해, 먼저 입력에 대한 CNOT Gate의 동작을 계산할 수 있습니다.
따라서 측정은 동일한 확률로 결과 과 을 제공합니다. 결과가 이면 Gate가 수행되지 않고 출력 상태는 이며, 결과가 이면 Gate가 수행되고 출력 상태는 입니다.
상태 는 이 맥락에서 매직 상태라고 불리지만, 이것이 유일한 것은 아닙니다. 다른 상태들도 유사한 방식으로(아마도 다른 Gate와 다른 회로를 사용하여) 사용될 수 있을 때 매직 상태라고 불립니다. 예를 들어, 상태 를 상태 로 교환하고 위 회로의 Gate를 Gate로 교체하면 Gate가 구현됩니다 — 이는 Gate를 횡단적으로 구현할 수 없는 코드를 사용하는 내결함성 양자 계산에 잠재적으로 유용합니다.
매직 상태를 이용한 내결함성 가젯
매직 상태를 사용한 Gate 구현이 내결함성에 도움이 된다는 것이 명확하지 않을 수 있습니다. 위에서 설명한 Gate 구현의 경우, 예를 들어 매직 상태를 얻기 위해 상태에 Gate를 적용해야 하는 것처럼 보이며, 그런 다음 이를 사용하여 Gate를 구현합니다. 그렇다면 내결함성을 위해 이 접근법을 사용하는 장점은 무엇인가요?
다음 세 가지 핵심 포인트가 이 질문에 대한 답을 제공합니다.
-
매직 상태의 생성은 구현하려는 Gate를 특정 상태에 적용하는 것을 필요로 하지 않습니다. 예를 들어, Gate를 상태에 적용하는 것이 상태를 얻는 유일한 방법은 아닙니다.
-
매직 상태의 생성은 사용되는 계산과 별도로 수행될 수 있습니다. 이는 매직 상태 생성 과정에서 발생하는 오류가 수행되는 실제 계산으로 전파되지 않음을 의미합니다.
-
매직 상태를 사용하여 선택한 Gate를 구현하는 회로의 개별 Gate들이 내결함성 있게 구현될 수 있고 매직 상태의 가용성을 가정한다면, 선택한 Gate의 내결함성 구현을 얻을 수 있습니다.
다음 논의를 단순화하기 위해, Gate에 초점을 맞추겠습니다 — 이 방법론이 다른 Gate로 확장될 수 있음을 염두에 두면서. 매직 상태를 사용한 Gate의 내결함성 구현은 다음 그림이 제안하는 형태를 취합니다.
원래 Gate 회로의 Qubit은 이 다이어그램에서 논리 Qubit에 해당하며, 내결함성을 위해 사용하는 어떤 코드에 의해서든 인코딩됩니다. 따라서 다이어그램의 입력과 출력은 이러한 상태들의 인코딩으로 이해해야 합니다. 이는 특히, 실제로 매직 상태만 필요한 것이 아니라 인코딩된 매직 상태가 필요하다는 것을 의미합니다. 원래 Gate 회로의 Gate들은 내결함성이 있다고 가정하는 가젯으로 대체됩니다.
따라서 이 특정 그림은 CNOT Gate와 Gate에 대한 내결함성 가젯이 이미 있다고 시사합니다. 색 코드의 경우 이러한 가젯은 횡단적일 수 있으며, 표면 코드(또는 다른 CSS 코드)의 경우 CNOT은 횡단적으로 수행될 수 있지만, Gate 가젯 자체는 앞서 가능하다고 제안된 대로 매직 상태를 사용하여 구현될 수 있습니다. (이 그림은 또한 표준 기저 측정을 수행하기 위한 내결함성 가젯이 있다고 시사하는데, 이는 지금까지 무시해 왔습니다. 이는 실제로 일부 코드에서는 어려울 수 있지만, CSS 코드의 경우 각 물리적 Qubit을 측정한 후 고전적 후처리를 수행하는 문제입니다.)
따라서 인코딩된 매직 상태 가 있다고 가정하면, 이 구현은 내결함성이 있습니다. 그러나 이 상태의 인코딩을 어떻게 얻을지의 문제는 아직 해결되지 않았습니다. 인코딩된 매직 상태를 얻는(또는 더 정확하게는 개선하는) 한 가지 방법은 *매직 상태 증류(magic state distillation)*로 알려진 과정입니다. 다음 다이어그램은 이 과정이 최상위 수준에서 어떻게 보이는지를 보여줍니다.
간단히 설명하면, 노이즈가 있는 인코딩된 매직 상태의 집합이 *증류기(distiller)*라고 하는 특수한 유형의 회로에 입력됩니다. 출력 블록 중 하나를 제외한 나머지가 측정됩니다 — 즉, 논리적 Qubit이 표준 기저 측정으로 측정됩니다. 측정 결과 중 하나라도 이면, 과정이 실패한 것이므로 다시 시작해야 합니다. 그러나 모든 측정 결과가 이면, 상단 코드 블록의 결과 상태는 노이즈가 적은 인코딩된 매직 상태가 됩니다. 이 상태는 다른 네 개와 합류하여 또 다른 증류기의 입력이 되거나, 진정한 인코딩된 매직 상태에 충분히 가깝다고 판단되면 Gate를 구현하는 데 사용될 수 있습니다. 물론, 과정은 어딘가에서 시작해야 하며, 한 가지 가능성은 비내결함성 방식으로 준비하는 것입니다.
증류기 자체를 구축하는 다양한 알려진 방법이 있지만, 여기서는 설명하거나 분석하지 않겠습니다. 논리적 수준에서 일반적인 접근법은 — 놀랍고 다소 우연적으로 — 안정자 코드의 인코딩 회로를 역으로 실행하는 것입니다! 이는 오류 정정에 사용되는 안정자 코드와 다른 코드일 수 있습니다. 예를 들어, 오류 정정에는 표면 코드 또는 색 코드를 사용하면서, 매직 상태 증류를 위해 -Qubit 코드의 인코더를 역으로 실행하는 것이 가능합니다. 안정자 코드의 인코딩 회로는 Clifford Gate만 필요로 하므로, 증류기의 내결함성 구현이 단순해집니다. 실제로, 세부 사항은 사용되는 코드에 따라 달라집니다.
요약하면, 이 절은 매직 상태에 대한 매우 고수준의 논 의만을 제공하는 것을 목표로 했으며, 그 작동 방식에 대한 기본적인 아이디어만을 제공하려 했습니다. 이 방식으로 내결함성 있게 Gate를 구현하기 위해 매직 상태를 사용하는 오버헤드가 극도로 높을 것이며, 대부분의 작업이 증류 과정에 들어갈 것이라는 주장이 있습니다. 그러나 이것이 실제로 명확하지 않습니다 — 이러한 과정을 최적화하는 많은 잠재적인 방법들이 있습니다. 또한 횡단적으로 구현할 수 없는 Gate에 대해 내결함성 가젯을 구축하는 대안적인 접근법들도 있습니다. 예를 들어, *코드 변형(code deformation)*과 *코드 전환(code switching)*은 이러한 방식들과 관련된 키워드입니다 — 그리고 새로운 방법들이 계속 개발되고 개선되고 있습니다.
내결함성 오류 정정
주어진 양자 회로의 내결함성 구현에 필요한 다양한 가젯의 구현 외에도, 반드시 인식해야 할 또 다른 중요한 문제가 있습니다: 오류 정정 단계 자체의 구현입니다. 이는 양자 정보와 관련된 모든 것이 오류에 취약하다는 아이디어로 돌아갑니다 — 오류를 정정하기 위한 회로 자체도 포함하여.
예를 들어, 위상 추정을 사용하여 안정자 생성원을 비파괴적으로 측정하기 위해 "안정자 형식" 단원에서 설명한 회로 유형을 고려해 보겠습니다. 이 회로들은 작동하는 코드 블록 내에서 오류를 전파할 수 있기 때문에 명확히 내결함성이 없습니다. 이것이 다소 문제적으로 보일 수 있지만, 정정 중인 코드 블록 내에서 오류가 전파되지 않는 방식으로 내결함성 있게 오류 정정을 수행하는 여러 알려진 방법이 있습니다.
한 가지 방법은 Shor 오류 정정으로 알려져 있으며, Peter Shor이 처음 발견했습니다. 아이디어는 *고양이 상태(cat state)*를 사용하여 신드롬 측정을 수행하는 것으로, 고양이 상태는 다음 형태의 -Qubit 상태입니다.
여기서 과 은 길이 의 모두 0과 모두 1인 문자열을 나타냅니다. 예를 들어, 일 때 이는 상태이고 일 때 GHZ 상태이지만, 일반적으로 Shor 오류 정정은 측정되는 안정자 생성원의 무게가 인 이런 상태가 필요합니다.
예시로, 여기 표시된 회로는 형태의 안정자 생성원을 측정합니다.
이는 고양이 상태 자체의 구성을 필요로 하며, 오류와 잠재적으로 결함 있는 Gate의 존재 하에서 신뢰할 수 있게 작동하도록, 이 방법은 실제로 과정 중에 서로 다른 오류가 어디서 발생했는지에 대한 추론을 하기 위해 이와 같은 회로를 반복적으로 실행해야 합니다.
대안적인 방법은 Steane 오류 정정으로 알려져 있습니다. 이 방법은 다르게 작동하며 CSS 코드에서만 작동합니다. 아이디어는 실행하려는 회로의 인코딩된 양자 상태에서 실제로 신드롬 측정을 수행하는 것이 아니라, 오류를 작업 공간 시스템으로 의도적으로 전파한 다음 해당 시스템을 측정하고 고전적으로 오류를 감지하는 것입니다. 다음 회로 다이어그램은 오류와 오류를 각각 감지하기 위해 이를 어떻게 수행할 수 있는지를 보여줍니다.
Knill 오류 정정으로 알려진 관련 방법은 텔레포테이션을 사용하여 이 방법을 임의의 안정자 코드로 확장합니다.