양자 오류 수정 소개
이 문서에서는 양자 오류 수정의 기본 사항, 양자 오류 유형 및 몇 가지 일반적인 양자 오류 수정 코드에 대해 설명합니다. 또한 3큐비트 코드를 사용하여 오류를 수정하는 방법의 예제도 제공합니다.
양자 오류 수정이란?
QEC(양자 오류 수정)는 양자 정보를 오류로부터 보호할 수 있는 기술입니다. 효율적인 양자 알고리즘은 노이즈에 민감한 대규모 양자 컴퓨터를 사용하기 때문에 오류 수정은 양자 컴퓨터에서 특히 중요합니다.
양자 오류 수정의 기본 원칙은 지정된 양의 정보를 인코딩하는 데 사용되는 비트 수가 증가한다는 것입니다. 이 중복성을 사용하면 코드에서 오류를 감지하고 수정할 수 있습니다.
양자 컴퓨터의 오류 비율은 일반적으로 양자 시스템 빌드 및 운영과 관련된 문제로 인해 기존 컴퓨터의 오류보다 높습니다. 양자 게이트의 노이즈, 분리 및 결함으로 인해 양자 계산에 오류가 발생할 수 있습니다. 현재 양자 컴퓨터의 오류 비율은 1%에서 0.1% 사이입니다. 즉, 100~1000개의 양자 게이트 작업 중 평균 1개에서 오류가 발생합니다.
양자 오류 유형
양자 오류에는 비트 대칭 이동 및 위상 대칭 이동의 두 가지 기본 유형이 있습니다.
비트 대칭 이동 오류는 큐비트가 변경되거나 그 반대로 변경 $\ket{0}$ $\ket{1}$ 되면 발생합니다. 비트 대칭 이동 오류는 \sigma_x 및 \sigma_x 큐비트 상태를 $매핑하기 때문에 \sigma_x={1}$\ket{\ket{0} 오류라고$도 합니다.\ket{0}$\ket{={1}$$ 이 오류는 클래식 비트 대칭 이동 오류와 유사합니다.
위상 대칭 이동 오류는 큐비트가 해당 단계를 변경할 때 발생합니다. 큐비트 상태를 \sigma_z$ 및 $\sigma_z 매핑하기 때문에 \sigma_z \ket{0}={0}$\ket{오류\ket{1}$라고$도 합니다.\ket{{1}= $ 이 유형의 오류에는 클래식 아날로그가 없습니다.
양자 컴퓨팅에서 양자 오류는 비트 대칭 이동, 위상 대칭 이동 또는 둘 다의 조합으로 나타날 수 있습니다.
양자 오류 수정은 어떻게 작동하나요?
양자 오류 수정 코드는 양자 정보를 물리적 큐비트라고 하는 더 큰 큐비트 집합으로 인코딩하여 작동합니다. 물리적 큐비트의 조인트 상태는 논리 큐비트를 나타냅니다.
물리적 큐비트는 양자 게이트의 분리 및 결함으로 인해 오류가 발생합니다. 코드는 코드의 일부 큐비트를 측정하여 오류를 감지하고 수정할 수 있도록 설계되었습니다.
예를 들어 단일 큐비트 메시지를 $\ket{0}$보내려고 합니다. 세 개의 실제 큐비트를 사용하여 메시지를 인코딩할 수 있으며, $\ket{000}$이를 코드워드라고 합니다. 이 오류 수정 코드는 메시지가 세 번 반복되므로 반복 코드입니다.
이제 받는 사람이 받는 상태가 $\ket{010}$되도록 전송 중에 단일 비트 대칭 이동 오류가 발생한다고 상상해 보십시오. 이 시나리오에서는 받는 사람이 의도한 메시지가 $\ket{000}$있다고 유추할 수 있습니다. 그러나 메시지에 두 개의 비트 대칭 이동 오류가 발생할 경우 받는 사람이 잘못된 메시지를 유추할 수 있습니다. 마지막으로, 원본 메시지가 $\ket{000}$ 되도록 $\ket{111}$세 비트를 모두 대칭 이동하면 수신자는 오류가 발생했음을 알 수 없습니다.
QEC 코드의 코드 거리는 한 코드 단어를 다른 코드 단어로 변경하는 최소 오류 수, 즉 검색할 수 없는 오류 수입니다. 코드 거리 $d$ 는 다음과 같이 정의할 수 있습니다.
$$d = 2t + 1$$
여기서 $t$ 는 코드가 수정할 수 있는 오류 수입니다. 예를 들어 3비트 코드는 하나의 비트 대칭 이동 오류를 감지하고 수정할 수 있으므로 $t = 1$이므로 코드 거리는 d = 3$입니다$.
이 예제에 사용된 3비트 코드와 같은 반복 코드는 비트 대칭 이동 오류만 수정할 수 있으며 위상 대칭 이동 오류는 수정할 수 없습니다. 두 가지 유형의 오류를 모두 수정하려면 보다 정교한 양자 오류 수정 코드가 필요합니다.
QEC 코드 형식
다양한 유형의 QEC 코드가 있으며 각각 고유한 속성과 장점이 있습니다. 몇 가지 일반적인 QEC 코드는 다음과 같습니다.
반복 코드: 단일 큐비트를 여러 번 반복하여 여러 큐비트로 인코딩하는 가장 간단한 양자 오류 수정 코드입니다. 반복 코드는 비트 대칭 이동 오류를 수정할 수 있지만 위상 대칭 이동 오류는 수정할 수 없습니다.
Shor 코드: Peter Shor가 개발한 첫 번째 양자 오류 수정 코드입니다. 하나의 논리적 큐비트를 9개의 실제 큐비트로 인코딩합니다. Shor 코드는 1비트 대칭 이동 오류 또는 한 단계 대칭 이동 오류를 수정할 수 있지만 두 유형의 오류를 동시에 수정할 수는 없습니다.
Steane 코드: 비트 대칭 이동 및 위상 대칭 이동 오류를 모두 수정할 수 있는 7큐비트 코드입니다. 내결함성이 있다는 장점이 있습니다. 즉, 오류 수정 프로세스 자체가 추가 오류를 발생시키는 것은 아닙니다.
Surface 코드: 큐비트의 2차원 격자를 사용하여 논리 큐비트를 인코딩하는 토폴로지 오류 수정 코드입니다. 높은 오류 수정 임계값을 가지며, 내결함성이 뛰어난 대규모 양자 컴퓨팅을 위한 가장 유망한 기술 중 하나로 간주됩니다. 표면 코드는 Azure Quantum 리소스 추정기에서 사용됩니다.
Hastings-Haah 코드: 이 양자 오류 수정 코드는 많은 정권에서 Majorana 큐비트의 표면 코드보다 더 나은 시공간 비용을 제공합니다. 게이트 기반 명령 집합의 경우 오버헤드가 커서 이 접근 방식이 표면 코드보다 효율성이 떨어집니다.
예: 3큐비트 코드
3큐비트 오류 수정 코드는 1비트 대칭 이동 오류를 감지하고 수정할 수 있는 간단한 반복 코드입니다. 큐비트를 세 번 반복하여 단일 논리 큐비트를 세 개의 실제 큐비트로 인코딩합니다.
팁
Q# 3큐비트 코드에 대한 코드 샘플을 확인합니다.
임의의 단일 큐비트 $\ket{\phi}=\alpha\ket{{0} + \beta\ket{1}$를 보내려고 하는 경우를 상상해 보십시오. 오류를 방지하려면 기본 상태를 $\ket{0}$ $\ket{1}$ 세 큐비트의 공동 상태로 인코딩합니다. 두 논리적 기본 상태는 $\ket{0_L}=\ket{000}$ 1_L.$\ket{}=\ket{111}$
따라서 단일 큐비트 $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ 는 다음과 같이 인코딩됩니다.
$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$
3큐비트 코드의 단계를 세분화해 보겠습니다.
큐비트 준비
먼저 단일 큐비트 +\beta\ket{1}$를 세 큐비트의 $\ket{\phi}=\alpha\ket{{0} 공동 상태로 인코딩합니다.
다음으로, 상태에서 $\ket{0}$두 개의 추가 큐비트를 준비합니다. 따라서 세 큐비트의 전역 상태는 (\alpha\ket{0}+\beta\ket{1})\ket{0}\ket{0}={000}\alpha\ket{ + \beta\ket{${100}입니다.$
마지막으로, 두 개의 CNOT 작업을 적용하여 단일 큐비트를 3개의 큐비트의 공동 상태로 인코딩합니다. 첫 번째 CNOT는 첫 번째 큐비트를 제어로 사용하고 두 번째 큐비트에서 작동하여 + \beta\ket{110}$를 생성합니다 $\alpha\ket{000} . 두 번째 CNOT는 첫 번째 큐비트를 제어로 사용하고 세 번째 큐비트에서 작동합니다. 이제 세 큐비트의 상태가 +\beta\ket{111}$입니다 $\alpha\ket{000} .
큐비트 보내기
세 개의 큐비트를 모두 보냅니다. 1비트 대칭 이동 오류만 발생할 수 있다고 가정하면 수신된 큐비트는 다음 상태 중 하나입니다.
State(상태) | Error |
---|---|
$\alpha\ket{000} + \beta\ket{111}$ | 오류 없음 |
$\alpha\ket{100} + \beta\ket{011}$ | 큐비트 1 |
$\alpha\ket{010} + \beta\ket{101}$ | 큐비트 2 |
$\alpha\ket{001} + \beta\ket{110}$ | 큐비트 3 |
보조 큐비트 추가
먼저 상태에서 $\ket{00}$준비된 두 개의 큐비트를 더 소개합니다. 이 보조 큐비트 쌍은 논리 상태에 대한 정보를 직접 측정하거나 가져오지 않고 오류 정보를 추출하는 데 사용됩니다.
다음으로, 네 가지 CNOT 작업을 수행합니다. 첫 번째 및 두 번째 작업은 첫 번째 및 두 번째 수신 큐비트를 제어로 사용하고 첫 번째 보조 큐비트에서 작동하며, 마지막 두 작업은 수신된 첫 번째 및 세 번째 큐비트를 제어로 사용하고 두 번째 보조 비트에서 작동합니다. 이제 5개 큐비트의 총 상태는 다음과 같습니다.
State(상태) | Error |
---|---|
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ | 오류 없음 |
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ | 큐비트 1 |
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ | 큐비트 2 |
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ | 큐비트 3 |
오류 증후군 검색
오류 정보를 검색하려면 계산 기준 상태에서 $\ket{0}$ 두 개의 보조 큐비트를 측정하고 $\ket{1}$. 이렇게 하면 수신된 큐비트의 오류를 진단하는 데 도움이 되므로 오류 증후군이라고 하는 관절 상태를 복구합니다.
이제 수신된 3개의 큐비트가 있는 4가지 가능한 상태 중 어느 것을 알 수 있습니다. 수정 작업을 적용하여 오류를 수정할 수 있습니다. 이 경우 비트 대칭 이동 오류를 처리하므로 수정은 $큐비트의 하나(또는 없음)에 적용된 \sigma_x$ 작업입니다.
예를 들어 오류 증후군인 $\ket{00}$경우 수신된 큐비트는 원래 보낸 상태인 +{111}$\beta\ket{ 상태에 $\alpha\ket{{000} 있습니다. 오류 증후군이$\ket{11}$면 수신된 큐비트가 상태 $\alpha{100}\ket{+ b\ket{{011}$에 있습니다. 첫 번째 큐비트에는 비트 대칭 이동 오류가 있습니다. 첫 번째 큐비트에 \sigma_x$ 연산을 적용하여 $수정할 수 있습니다.
오류 증후군 | 축소 상태 | 보정 |
---|---|---|
$\ket{00}$ | $\alpha\ket{000} + \beta\ket{111}$ | 아무 작업도 수행하지 않음 |
$\ket{01}$ | $\alpha\ket{100} + \beta\ket{011}$ | 큐비트 3에 \sigma_x$ 적용 $ |
$\ket{10}$ | $\alpha\ket{010} + \beta\ket{101}$ | 큐비트 2에 \sigma_x$ 적용 $ |
$\ket{11}$ | $\alpha\ket{001} + \beta\ket{110}$ | 큐비트 1에 \sigma_x$ 적용 $ |
원래 큐비트 추출
마지막으로 원래 전송하려는 단일 큐비트를 추출하려면 두 개의 CNOT 연산을 적용합니다. 하나는 첫 번째 큐비트를 제어로 사용하고 두 번째 큐비트에서 작동하고 다른 하나는 첫 번째 큐비트를 제어로 사용하고 세 번째 큐비트에서 작동합니다.
첫 번째 큐비트의 상태는 전송하려는 원래 큐비트인 +$\alpha\ket{0}\beta\ket{1}$입니다.
Important
QEC 코드는 계 $\alpha$ 수에 $\beta$대한 정보를 얻지 못하므로 계산 상태의 중첩은 수정 중에 그대로 유지됩니다.