주 콘텐츠로 건너뛰기
이 프로젝트는 베타 단계입니다. 버그를 발견하셨나요? GitHub 이슈 만들기. 질문이나 아이디어가 있으신가요? Discussions에서 질문하기 — 피드백을 기다립니다!
이 페이지의 번역 품질은 어떻습니까?

잡음과 오류

이 레슨에서는 양자 잡음과 오류를 소개하며, 그 다양한 원인을 다루고 고전적 오류와의 유사점을 짚어봅니다. 발생할 수 있는 오류의 유형을 이해하고 양자 채널을 이용해 잡음을 모델링하는 능력은 이후 레슨을 이해하는 데 매우 중요합니다. 실제로 대부분의 오류 처리 방법은 우리가 줄이거나 정정하고자 하는 잡음 또는 오류의 유형에 대해 어느 정도 알고 있어야 합니다.

이 동영상은 잡음과 오류에 대한 개요를 제공하며 몇 가지 계산 결과를 언급합니다. 아래 본문은 더 자세한 내용을 다루며 Qiskit을 사용해 몇 가지 유형의 오류를 살펴봅니다.

원인​

고전적 잡음과 오류​

양자 오류와 잡음을 이해하기 위해, 먼저 고전적인 유사물부터 살펴봅시다. 고전 컴퓨터에서는 다양한 원인으로 오류가 발생하는데, 여기에는 여러 가지 불필요한 전하 축적 메커니즘, 단일 이벤트 업셋(single-event upset), 그리고 느린 재료 열화 등이 포함됩니다. 이러한 메커니즘 중 일부(전부는 아님)는 양자 컴퓨팅에도 유사한 형태로 존재하며, 양자 오류와 잡음을 이해하는 데 중요한 역할을 합니다. 이 중 몇 가지를 간략히 살펴본 뒤 양자적 유사물로 넘어가겠습니다.

열 잡음:

컴퓨터 부품의 온도가 올라가면 원자와 전하 운반체의 열운동이 재료의 저항률을 변화시킵니다(대개 증가시킵니다). 이는 회로의 저항이 변할 수 있음을 의미합니다. 드물기는 하지만, 이로 인해 트랜지스터에서 의도치 않은 논리 전이가 발생할 수 있습니다. 사소한 변동은 피할 수 없지만, 부품을 적절히 냉각하는 것이 이러한 영향을 방지하는 핵심입니다.

열 손상 및 열화:

재료가 반복적으로 가열되고 냉각되면 전도성 원소(금속)가 매우 느리게 이동할 수 있습니다. 최선의 경우에도 회로 소자의 저항이나 정전용량(또는 둘 다)이 변하여 회로 동작의 타이밍이 부정확해집니다. 최악의 경우에는 단락이나 완전한 고장으로 이어집니다. 이 경우에도 적절한 온도 관리가 이러한 열화를 방지하는 핵심입니다.

방사선 유발 효과(단일 이벤트 업셋, SEU):

때때로 고에너지 입자가 프로세서 내부의 원자를 이온화시켜 의도치 않은 전하를 만들어낼 수 있습니다. 잘못된 위치와 잘못된 시점에 이런 일이 발생하면 논리 오류로 이어질 수 있습니다. 이러한 고에너지 입자(전자기 방사선과 중성자 포함)의 원천은 대개 상층 대기에서 일어나는 고에너지 상호작용입니다. 따라서 이러한 업셋은 우주를 포함한 고고도 환경에서 더 흔하게 발생합니다. 이는 오류 정정 코드와 방사선 내성 설계를 통해 해결됩니다.

전자기 간섭:

오류는 전원선 스위칭, 무선 송신기, 또는 다른 시스템 구성 요소에서 나오는 외부 전자기(EM) 장에 의해서도 발생할 수 있습니다. 이는 앞서 설명한 고에너지 방사선과는 다릅니다. 여기서는 시간에 따라 변하는 미약한 EM 장이 컴퓨팅 구성 요소에 전류와 전압을 유도합니다(한 사건에서 특정 원자를 이온화시키는 것과는 다릅니다). 장의 시간 의존성이 유도 전압을 결정하는 요인이기 때문에, 이러한 유형의 간섭은 고주파 시스템에서 특히 중요합니다. 이러한 오류는 차폐와 접지 등을 통해 완화할 수 있습니다.

배선 간 크로스토크:

인접한 도체 사이의 용량성 또는 유도성 결합, 특히 나노스케일 집적 회로에서의 결합은 의도치 않은 신호를 유발할 수 있습니다. 이는 전자기 간섭과 관련이 있지만, 문제가 되는 장의 원천이 컴퓨터 회로 내부의 다른 구성 요소라는 점에서 다릅니다. 서로 매우 가까이 있는 두 전선을 생각해 보세요. 전선 A에 갑작스러운 전이(전압 변화)가 일어나면 인접한 전선 B에 전류를 유도할 수 있습니다. 정확한 방향과 크기는 회로 배치에 따라 달라지며, 전하의 결맞은 순수한 흐름일 수도 있고 전하의 맴돌이 전류(eddy current)에 가까운 것일 수도 있습니다. 하지만 어떤 경우에는 이것이 원치 않는 논리 전이로 이어질 수 있습니다. 이러한 크로스토크 효과는 최적의 배치 간격, 차폐, 그리고 제어된 신호 상승 시간을 통해 완화할 수 있습니다.

이것이 완전한 목록은 아니지만, 양자 컴퓨팅과의 유사점을 살펴보기 시작하기에는 충분합니다. 위에서 설명한 모든 유형의 원치 않는 상호작용에서, 잡음이 논리 오류로 나타나는 형태는 오직 0이 1로, 또는 1이 0으로 바뀌는 것뿐이라는 점에 주목하세요. 이는 고전 비트의 상태 공간에서 허용되는 유일한 형태입니다.

양자 잡음과 오류​

양자 컴퓨팅에서는 잡음과 오류가 함께 논의되는 경우가 많지만, 둘의 차이를 인식하는 것이 중요합니다. 양자 잡음은 큐비트와 양자 시스템에 영향을 미치는 근본적인 물리적 교란을 가리킵니다. 여기에는 환경으로부터의 원치 않는 상호작용이나 변동, 불완전한 제어, 또는 양자 상태가 이상적인 상태에서 벗어나게 만드는 하드웨어 결함이 모두 포함됩니다. 양자 오류는 이러한 양자 잡음의 결과로 나타나는 양자 정보의 구체적인 편차나 결함입니다. 양자 오류는 잡음이 측정 가능하거나 조작상 드러나는 형태이며, 여기에는 비트 반전, 위상 반전, 진폭 감쇠 등이 포함됩니다. 잡음과 오류는 모두 연속적인 방식으로 발생할 수 있습니다. 예를 들어 양자 게이트에 사용되는 장이 0.1%, 0.15%, 또는 그 밖의 어떤 비율만큼 어긋날 수 있습니다. 이는 큐비트의 위상이 마찬가지로 어떤 연속적인 양만큼 잘못되는 결과를 낳을 수 있습니다. 하지만 실제로, 특히 오류 정정에서는 오류를 마치 이산적인 것처럼 다루는 경우가 흔하다는 것을 알게 될 것입니다. 즉 누적된 효과를 이산적인 비트 반전이나 단일 위상 회전으로 묶어서 처리합니다. 이는 오류를 정정하고 특성화하는 데 유용하지만, 큐비트에 미치는 잡음의 영향이 오로지 이산적인 오류 집합만으로 이루어진다는 것을 의미하지는 않습니다.

양자 컴퓨터에 영향을 미치는 잡음의 유형은 다양합니다. 어떤 것은 여러 유형의 오류를 일으킬 수 있는 반면, 다른 것은 특정한 오류 양상과 짝을 이룹니다. 완전한 목록을 나열하는 것은 이 레슨의 목적을 벗어나므로, 여기서는 이 코스의 나머지 부분과 관련이 있는 일부 목록을 소개하며, 그중 일부는 고전 컴퓨팅 잡음과 유사점이 있습니다.

Thermal:

큐비트의 두 계산 기저 상태 ∣0⟩|0\rangle과 ∣1⟩|1\rangle은 매우 작은 에너지 차이로 분리되어 있습니다. 정확한 값은 물론 양자 하드웨어에 따라 다릅니다. IBM Quantum®에서 사용하는 것과 같은 고체 상태(고정 주파수 트랜스몬) 큐비트의 경우, 이 상태들 사이의 에너지 간격은 약 10−2410^{-24} J, 즉 수 마이크로전자볼트 정도입니다. 이 에너지 척도는 E=hfE=hf를 통해 주파수와 관련지을 수도 있고, 특성 온도와 관련지을 수도 있습니다. 온도는 시료 내 입자들의 평균 운동 에너지와 관련이 있으므로, 볼츠만 상수를 사용하면 평균적인 입자가 전이를 일으킬 만큼 충분한 에너지를 가지는 온도를 추정할 수 있습니다.

E≈kBT→T E/kB≈10−24 J ×1.381×10−23 J/K≈100mK.E\approx k_BT \rightarrow T~E/k_B \approx 10^{-24}\text{ J } \times 1.381 \times 10^{−23}\text{ J/K}\approx 100 \text{mK}.

열적 상호작용이 하나의 큐비트 계산 기저 상태에서 다른 상태로의 전이를 일으킬 가능성을 줄이려면, 큐비트의 온도를 100 mK보다 상당히 낮게, 이상적으로는 15-25 mK에 가깝게 유지해야 합니다. 이러한 임계값을 크게 초과하는 온도 상승은 상태 점유가 완전히 무작위해지고 양자 정보가 전부 손실되는 결과를 낳습니다.

이는 고전 컴퓨터에서 발생할 수 있는 열 오류와 유사합니다. 둘 다 열적 기원을 가진다는 점에서는 같지만, 온도 척도는 당연히 다르며 정보 손실의 메커니즘도 다릅니다.

크로스토크와 간섭:

양자 컴퓨팅에서 크로스토크란 큐비트나 제어선 사이의 원치 않는 결합이나 간섭을 가리키며, 특정 큐비트를 대상으로 한 조작이나 신호가 의도치 않게 다른 큐비트에 영향을 미치는 것을 말합니다. 이는 이상적으로는 독립적이어야 할 큐비트들 사이의 오류나 상관관계로 나타납니다.

IBM®에서 사용하는 것과 같은 초전도 큐비트 아키텍처에서는 마이크로파 제어 신호가 인접 큐비트로 누설되거나, 판독 공진기 사이에 의도치 않은 결합이 생기거나, 큐비트 루프 사이에 자속 크로스토크가 발생하여 크로스토크가 일어날 수 있습니다.

크로스토크를 최소화하는 많은 접근법은 큐비트 간격이나 인접 큐비트가 서로 다른 동작 주파수를 갖도록 하는 것과 같이 양자 컴퓨터 설계 자체에 반영되어 있습니다. 크로스토크 오류를 완화하기 위한 소프트웨어적 접근법도 있으며, 이는 이후 레슨에서 다룰 예정입니다.

불완전한 게이트 연산:

큐비트에 대한 연산은 유한한 정밀도를 가지며 잡음이나 다른 부정확성의 원천에 영향을 받을 수 있는 하드웨어를 사용하여 수행됩니다. 특히 특정 지속 시간과 특정 방향을 가진 마이크로파 펄스가 회전 게이트를 구현하는 데 사용됩니다. 예를 들어 어떤 마이크로파 펄스가 XX 축을 중심으로 0.30 라디안만큼 회전시키도록 되어 있다고 합시다. 방향에는 유한한 정밀도가 있어 회전축에 약간의 부정확성이 생깁니다. 또한 펄스 주파수와 그 지속 시간 사이에는 언제나 근본적인 트레이드오프가 존재합니다. 매우 긴 펄스는 사실상 단일 주파수에 가까운 정현파 형태의 거동을 보일 수 있습니다. 짧은 펄스를 만들려면 여러 주파수의 중첩이 필요합니다. 이는 에너지-시간 불확정성 관계의 근본에 있는 것과 동일한 트레이드오프이지만, 게이트 정밀도가 아직 이러한 근본적인 한계에 부딪히고 있는 것은 아니므로 개선의 여지가 있습니다.

양자 고유 잡음:

이 마지막 유형의 잡음은 다른 것들과는 상당히 다릅니다. 이는 오류 때문이 아니라 양자역학 자체의 본성 때문에 생깁니다. 양자 상태 ∣ψ⟩|\psi\rangle에 있는 큐비트를 측정하면 고유 상태(∣0⟩|0\rangle 또는 ∣1⟩|1\rangle)로 붕괴한다고 합시다. 고정 주파수 트랜스몬 시스템에서는 큐비트가 분산적으로(dispersively) 마이크로파 공진기와 결합되어 있으며, 이 공진기의 공진 주파수는 큐비트 상태에 따라 약간씩 달라집니다. 마이크로파 탐침 펄스가 공진기를 통과하며, 출력 신호는 상태에 따른 위상 이동과 진폭 변화를 얻습니다. 이 신호는 이후 증폭되어 고전 전자 장치를 이용해 측정됩니다.

양자 수준에서 이 측정 신호는 유한한 평균 광자 수를 가진 결맞은 마이크로파 장에 실려 있습니다. 전자기장의 양자적 성질로 인해 장의 쿼드러처(quadrature)는 본질적인 요동을 나타냅니다. 이러한 요동은 기술적 결함과는 무관하며 이상적인 결맞은 상태에서도 발생합니다. 평균 광자 수 NN을 늘리면 측정 신호는 커지지만, 근본적인 잡음 수준은 유한하게 남아 있으므로 결과들 사이의 구별 가능성은 N\sqrt{N}에 비례해서만 개선됩니다.

따라서 큐비트가 완벽하게 준비되고 측정 사슬이 이상적이라 하더라도, 주어진 큐비트 상태에 대응하는 판독 신호는 하나의 고정된 값이 아니라 결과를 얼마나 잘 구별할 수 있는지를 제한하는 분포입니다. 이 겹침은 측정 과정 자체에 내재된 근본적인 불확실성의 원천을 나타냅니다. 실제로는 증폭기 등에서 오는 기술적 잡음이 흔히 지배적이지만, 이러한 본질적인 양자 잡음은 판독 충실도의 하한을 결정합니다.

불확실성은 오류가 아닙니다:

이러한 잡음의 원천들은 모두 양자 상태 측정에 내재된 근본적인 불확실성과는 다릅니다. 대조를 위해, 우리가 다음과 같은 양자 상태의 큐비트를 가지고 있다고 합시다.

∣ψ⟩=45∣0⟩+35∣1⟩.|\psi\rangle = \frac{4}{5}|0\rangle+\frac{3}{5}|1\rangle.

이 상태는 ∣0⟩|0\rangle 상태로 측정될 확률이 64%이고 ∣1⟩|1\rangle 상태로 측정될 확률이 36%입니다. 하지만 단 한 번의 측정은 ∣0⟩|0\rangle 또는 ∣1⟩|1\rangle 중 하나만을 내놓을 뿐이므로—단 한 번의 측정만으로는 측정 전 상태에 대해 거의 아무것도 알 수 없습니다. 상태에 대한 자세한 정보를 얻으려면 많은 측정이 필요합니다. 10번의 측정 중 6~7번은 ∣0⟩|0\rangle을 낼 것으로 기대할 수 있습니다. 하지만 처음 10번의 측정이 모두 우연히 ∣0⟩|0\rangle을 낸다고 해도 그다지 놀랄 일은 아닙니다(공정한 동전을 던져 "앞면"이 열 번 연속 나오는 것처럼, 흔치는 않지만 충분히 있을 수 있는 일입니다). 만약 측정을 1000번 반복했는데 항상 ∣0⟩|0\rangle이 나온다면, 그것은 정말로 놀라운 일일 것입니다.

따라서 유한한 횟수의 측정에 기반한 양자 상태에 대한 우리의 지식에는 불확실성이 존재합니다. 측정을 반복할수록 측정 전 양자 상태에 대한 우리의 지식은 향상되지만, 결코 완벽해지지는 않습니다. 어떤 사람은 구어적으로 모든 양자 측정 결과에는 항상 어떤 근본적인 "오류"가 있다고 말할 수도 있습니다. 하지만 이는 "오류"라는 용어의 다른 쓰임이며, 통계적 불확실성이라고 표현하는 것이 더 적절합니다. 여러 번의 측정을 통해 양자 상태에 대한 지식을 점점 늘려가는 과정을 양자 상태 토모그래피라고 합니다. 다만 양자 상태 토모그래피는 Z 축을 따른 측정에만 국한되지 않으며, 일반적으로는 진폭과 상대 위상을 결정하기 위해 (X, Y, Z와 같은) 직교하는 축을 따른 측정을 가리킵니다. 이 과정에 대해 더 알고 싶다면 John Watrous의 General Formulation of Quantum Information 코스에 있는 이 섹션을 참고하거나, 실제 구현을 보고 싶다면 Utility-Scale Quantum Computing 코스의 이 텔레포테이션 레슨을 참고하세요.

오류와 그 누적 관찰하기​

이 섹션에서는 실제 양자 컴퓨터를 사용하여 다양한 조건에서 양자 오류와 그 누적을 관찰합니다. 실제로는 다양한 양자 오류의 원천이 대개 동시에 존재합니다. 여러 유형의 오류를 어느 정도 분리된 형태로 관찰하려면 그러한 분리를 위해 설계된 회로가 필요합니다. 실제 양자 컴퓨팅 응용에 사용되는 회로는 훨씬 더 복잡해 보일 것입니다.

에너지 완화 오류부터 시작해 봅시다.

에너지 완화(T1T_1) 오류​

열 잡음에 대한 앞선 논의를 떠올려 보면, 0이 아닌 어떤 온도에서든 양자 시스템이 에너지 고유 상태 사이를 전이할 확률이 존재합니다. 완화(∣1⟩→∣0⟩|1\rangle \rightarrow |0\rangle)는 (온도와 무관한) 자발 방출에 의해 주도되기 때문에 지배적으로 일어나는 반면, 낮은 온도는 경쟁하는 여기 과정을 억제합니다. 큐비트가 유휴 상태로 오래 머무를수록 이러한 전이를 겪을 시간이 더 많아집니다. ∣1⟩|1\rangle 상태로 준비된 큐비트가 시간 tt가 지난 후에도 ∣1⟩|1\rangle 상태로 남아 있을 확률은 다음과 같이 주어집니다.

p=e−t/T1p = e^{-t/T_1}

여기서 시간 T1T_1은 실험적으로 결정되는 특성 시간으로, 큐비트마다 다르며 시간이 지남에 따라 약간씩 변할 수도 있습니다. IBM® 양자 컴퓨터는 정기적으로 벤치마킹되므로, IBM 양자 컴퓨터의 큐비트에 대해 나열된 T1T_1 시간은 정확하고 최신 값이어야 합니다. T1T_1 값이 크다는 것은 큐비트가 준비된 상태에 (평균적으로) 더 오래 머무른다는 의미입니다. 일반적인 T1T_1 값은 아키텍처마다 다르며, IBM 양자 컴퓨터의 큐비트는 흔히 200-300 μs\mu s 정도의 T1T_1 시간을 가지고, 최신 값은 Compute resources 페이지에서 확인할 수 있습니다.

특성 시간 T2T_2는 다른 것을 측정합니다: 바로 위상 정보의 손실입니다. 이에 대해서는 나중에 다시 다루겠습니다.

에너지 완화 오류를 관찰하기 위해, 우리는 큐비트를 ∣1⟩|1\rangle 상태로 준비한 다음 의도적으로 오랜 시간 동안 유휴 상태로 둘 것입니다. 이는 인위적인 부분입니다. 실제 양자 워크플로에서는 다른 큐비트에서 작업이 진행되는 동안 몇몇 큐비트가 오랫동안 유휴 상태로 남아 있을 수 있으므로, 이러한 유휴 시간이 몇 번 존재하는 것 자체는 결코 인위적이지 않습니다.

몇 가지 패키지를 가져오고 가장 덜 바쁜 백엔드를 선택하는 것부터 시작해 봅시다.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"cycler": "cycler", "matplotlib": "matplotlib", "numpy": "numpy", "qiskit": "qiskit", "qiskit_aer": "qiskit-aer", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
import numpy as np
import matplotlib.pyplot as plt

# If your credentials are already saved locally
service = QiskitRuntimeService()

# To load an unsaved instance, uncomment the line below
# service = QiskitRuntimeService(channel = "ibm_quantum_platform", instance = "your crn here")

# To select the least-busy backend:
# backend = service.least_busy(simulator=False, operational=True)

# To specify the backend by name:
backend = service.backend("ibm_boston")

props = backend.properties()
print(backend)
<IBMBackend('ibm_boston')>

이제 작업할 큐비트를 선택하겠습니다. 이번 예시에서는 0번 큐비트입니다. T1T_1과 T2T_2를 포함하여 이 큐비트의 속성을 직접 가져올 수 있습니다.

qubit_idx = 0
qubit_props = props.qubit_property(qubit_idx)

t1 = qubit_props["T1"][0] # * 1e6 # Convert seconds to µs
t2 = qubit_props["T2"][0] # * 1e6 # Convert seconds to µs

# print(f"Qubit {qubit_idx}: T1={t1} µs, T2={t2} µs")
print(f"Qubit {qubit_idx}: T1={t1} s, T2={t2} s")
Qubit 0: T1=0.0002737016180018049 s, T2=0.00042784777605680494 s

T1T_1을 마이크로초 단위로 아는 것은 중요하지만, 그것이 무엇을 의미하는지 직관적으로 느끼기는 어려울 수 있습니다. 어쨌든 양자 컴퓨터에서의 게이트 연산은 매우 빠릅니다. 진짜 궁금한 것은 그 시간 동안 양자 컴퓨터로 얼마나 많은 일을 할 수 있는가입니다. 이를 위해 T1T_1을 양자 컴퓨팅에서 사용되는 다른 시간 척도와 관련지어 보는 것이 유용합니다—특히 다음과 같은 척도들입니다.

  • 샘플링 시간 dtdt - 양자 컴퓨터에서 제어 프로세스를 구현할 수 있는 가장 작은 클록 틱 단위입니다.

  • 단일 큐비트 게이트 시간 - 단일 큐비트에 게이트 연산을 구현하는 데 필요한 시간입니다. 이는 단일 값이 아니라 게이트 유형에 따라 달라지는 값의 범위입니다.

  • 두 큐비트 게이트 시간 - 인접한 두 큐비트에 게이트 연산을 구현하는 데 필요한 시간입니다. 이 또한 값의 범위를 가질 수 있지만, 일반적으로 단일 큐비트 게이트보다 약 한 자릿수 정도 더 깁니다.

우리 백엔드의 dtdt를 확인하고, 게이트 시간에 대해 있을 법한 범위를 표시해 봅시다.

print(f"Using backend: {backend.name}")

# Access the backend target
target = backend.target

def get_gate_times(target, gate_name):
results = []

if gate_name not in target:
return results # gate not supported

# target[gate_name] is a dict: {(qubits): InstructionProperties}
for qubits, props in target[gate_name].items():
if props.duration is not None:
results.append({"qubits": qubits, "duration_ns": props.duration * 1e9})

return results

# Query some gates
for gate in ["cz", "x"]:
times = get_gate_times(target, gate)

print(f"\nGate: {gate}")
if times:
for entry in times[:5]:
print(f" Qubits {entry['qubits']}: {entry['duration_ns']:.2f} ns")
else:
print(" Not available on this backend")
Using backend: ibm_boston

Gate: cz
Qubits (0, 1): 68.00 ns
Qubits (1, 0): 68.00 ns
Qubits (1, 2): 68.00 ns
Qubits (2, 1): 68.00 ns
Qubits (2, 3): 88.00 ns

Gate: x
Qubits (0,): 32.00 ns
Qubits (1,): 32.00 ns
Qubits (2,): 32.00 ns
Qubits (3,): 32.00 ns
Qubits (4,): 32.00 ns

이러한 게이트 시간은 백엔드마다 다릅니다. 여기서는 ibm_boston에서 가져온 68 ns의 두 큐비트 게이트 시간을 하드코딩하겠습니다.

dt = backend.configuration().dt
two_q_gate_time = 68e-9
print("The sampling time is : ", dt)
print("dts per T_1 : ", t1 / dt)
print("2-qubit characteristic time : ", two_q_gate_time)
print("The sampling time intervals per two-qubit gate : ", two_q_gate_time / dt)
print("2-qubit gates per T_1 : ", t1 / two_q_gate_time)
The sampling time is : 4e-09
dts per T_1 : 68425.40450045122
2-qubit characteristic time : 6.8e-08
The sampling time intervals per two-qubit gate : 17.0
2-qubit gates per T_1 : 4025.0237941441897

여기서는 다른 오류 원천이나 그에 대한 억제 또는 완화가 전혀 고려되지 않았다는 점을 유의하세요. T1T_1 오류가 양자 시스템에서 작용하는 유일한 오류는 아니므로, 이 수치들에 대해 지나치게 신경 쓸 필요는 없습니다. 이는 단지 어떠한 억제도 없는 상태에서 T1T_1 오류가 지배적이 되기 전까지 대략 수천 번의 두 큐비트 게이트를 그럴듯하게 구현할 수 있다는 의미일 뿐입니다. 다른 오류들은 대개 훨씬 얕은 깊이에서 지배적이 되며, 반대로 T1T_1 오류는 신호를 완전히 지워버리는 데 필요한 시간보다 훨씬 짧은 시간에도 여전히 억제할 만한 가치가 있을 수 있습니다.

먼저 잡음 모델을 사용하는 시뮬레이터로 시작한 다음, 그 결과를 실제 하드웨어와 비교할 것입니다.

from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, thermal_relaxation_error
from qiskit import QuantumCircuit
from qiskit.quantum_info import Pauli
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_aer.primitives import EstimatorV2

pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)

두 큐비트 게이트 시간에 대한 상한 추정치에 해당하는 시간 간격을 우리의 측정을 위한 시간 단계로 정의해 봅시다. 그런 다음 이 시간 단계의 배수로 50개의 회로를 구성할 것입니다. 이렇게 하면 80개의 두 큐비트 게이트를 구현하는 것과 비슷한 시간 척도에서 어떤 일이 일어나는지 볼 수 있습니다. 여기서는 정밀도가 중요하지 않으므로 소수의 샷만 사용하겠습니다.

n_points = 50 # We will show 50 steps
delay_unit = 80 # The delay in units of two-qubit-time from above
shots = 100

열 완화 오류를 명시적으로 포함하는 시뮬레이터용 잡음 모델을 만듭니다.

# Create noise model with thermal relaxation for delays
noise_model = NoiseModel()
error = thermal_relaxation_error(
t1, t2, two_q_gate_time * delay_unit
) # error model characterized by times in ns
noise_model.add_all_qubit_quantum_error(error, ["delay"])

sim = AerSimulator(noise_model=noise_model)

이제 회로와 관측량을 만들겠습니다. 이들은 매우 단순합니다. 회로는 단순히 큐비트를 ∣1⟩|1\rangle 상태로 준비하고, 위에서 정의한 특성 게이트 시간과 dtdt를 사용해 점점 길어지는 지연 시간을 구현하는 것으로 구성됩니다. 관측량은 단순히 ZZ인데, 우리가 알고 싶은 것은 큐비트가 ∣1⟩|1\rangle에 계속 머물러 있는지, 아니면 ∣0⟩|0\rangle으로 감쇠했는지이기 때문입니다. 시뮬레이터에서는 트랜스파일이 항상 필요한 것은 아니지만, 나중에 실제 백엔드에서 사용하기 위해 여기서 미리 회로를 트랜스파일하겠습니다.

observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times_sim = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
for j in range(i):
qc.delay(delay_unit * two_q_gate_time, 0, "s")
j = j + 1
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times_sim.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)

시뮬레이터를 사용해 작업을 실행합니다.

pubs = list(zip(circuits, obs))

# Create AerSimulator with noise model as backend
simulator = AerSimulator(noise_model=noise_model)

# Create SamplerV2 from the AerSimulator backend
estimator = EstimatorV2.from_backend(simulator)

# Run the sampler on the circuit, specify shots
job = estimator.run(pubs)
result = job.result()

마지막으로 결과를 그래프로 나타냅니다.

# Optional: color palette similar to 'mpl', style = 'clifford'

from cycler import cycler

plt.rcParams["axes.prop_cycle"] = cycler(
color=[
"#4C78A8", # muted blue
"#72B7B2", # teal
"#54A24B", # green
"#9C89CC", # purple
"#B279A2", # mauve
]
)

# Everything else stays at Matplotlib defaults

# Example data: assume result is a list of objects with structure result[i].data.evs.item()
# and delay_times is already defined as a list of floats.

# Extract y-values
y_sim_values = [(1 - r.data.evs.item()) / 2 for r in result]

# Use delay_times as x-values
x_sim_values = delay_times_sim

# Create the plot
plt.figure(figsize=(8, 5))
plt.plot(x_sim_values, y_sim_values, marker="o", linestyle="-", label="EV Data")

plt.xlabel("Idle Time (s)")
plt.ylabel("Probability of measuring |1>")
plt.title("T1 Decay")
plt.grid(True)
plt.show()

Output of the previous code cell

지수적 감쇠가 뚜렷하게 나타나며, 이 시간 동안 ∣1⟩|1\rangle 상태에 있을 확률이 40% 바로 아래까지 떨어집니다. 이는 모델과 정확히 일치한다는 점에 주목하세요: p=e−t/t1p = e^{-t/t_1}이며, 여기서 우리는 최대 tt를 t1t_1과 같은 자릿수로 선택했습니다. 앞서 t1t_1이 대략 60번의 게이트(또는 그 정도의 자릿수)에 해당한다고 했으며, 여기서 tt는 60번의 게이트에 해당합니다. 따라서

p→e−0.25 ms/0.267 ms≈0.392p \rightarrow e^{-0.25 \text{ ms}/0.267\text{ ms}} \approx 0.392

이제 동일한 회로를 실제 양자 컴퓨터에서 실행해 봅시다. 더 적은 수의 작업으로 동일한 지연 구간을 다루기 위해, 지연 단위를 늘리고 지점의 수를 줄이겠습니다.

# This took 27 s on ibm_boston

from qiskit_ibm_runtime import EstimatorV2

# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)

# Use the same time parameters and shots
n_points = 10
delay_unit = 400
shots = 100

# Measure Pauli Z's as your observables
observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
qc.delay(delay_unit * two_q_gate_time * i, 0, "s")
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)

pubs = list(zip(circuits, obs))
estimator = EstimatorV2(mode=backend)
job = estimator.run(pubs=pubs)
result = job.result()

# To print the job id for later retrieval of data
# job_id = job.job_id()
# print(f"Job ID: {job_id}")

이제 결과를 그래프로 나타냅니다.

fig, ax = plt.subplots()

# Convert from the expectation value of Z to the probability of a transition
y_real_values = [(1 - r.data.evs.item()) / 2 for r in result]

# Use delay_times as x-values
x_real_values = delay_times

# Exponential decay to match theoretical model
t_smooth = np.linspace(0, x_sim_values[19], 100) # Smooth x-range covering your data
y_decay = np.exp(-t_smooth / (t1)) # y = exp(-t/t1)
ax.plot(t_smooth, y_decay, "k--", linewidth=1, label=f"Perfect Decay (t1={t1:3f} s)")

# Add simulator values
ax.scatter(x_sim_values, y_sim_values, label="Simulator", alpha=0.7)

# Add real QC values
ax.scatter(x_real_values, y_real_values, label="Real", alpha=0.7)

# Add labels and plot
ax.set_xlabel("Idle Time (s)")
ax.set_ylabel("Probability of measuring |1>")
ax.legend()
ax.set_title("T1 Decay")
ax.grid(True)

plt.show()

Output of the previous code cell

보시다시피 시간에 따른 ∣1⟩|1\rangle 상태의 감쇠는 이론(그리고 T1T_1의 정의)과 일치합니다. 또한 이 경우 시뮬레이터는 실제 양자 컴퓨터의 거동을 상당히 잘 재현합니다. 이 상태의 감쇠와 관련하여 기억해 둘 몇 가지 사항은 다음과 같습니다.

  • 우리는 측정을 비현실적일 만큼 오랜 시간 동안 인위적으로 지연시켰습니다. 이러한 지연은 수천 개의 두 큐비트 게이트로 이루어질 수 있는 극도로 깊은 회로의 시간 척도에 해당합니다. 이는 오로지 열 잡음의 효과가 존재한다는 것을 보여주기 위한 것이었습니다. 실제 문제에 적용되는 실제 회로에서는 다른 큐비트에서 연산이 수행되는 동안 일부 큐비트가 에너지 완화 오류가 문제가 될 만큼 충분히 오래 유휴 상태로 있을 수 있지만—완전한 T1T_1에 도달하기 전에 다른 오류들이 지배적이 될 것입니다.
  • 어떠한 오류 완화나 억제 기법도 사용되지 않았습니다. 이 코스에서 배우게 될 기법들을 사용하면 이 감쇠 곡선을 바꿀 수 있습니다.
  • 여기서는 100샷만 사용했는데, 이는 오직 그러한 효과가 존재함을 보여주기 위한 것이었기 때문에 이례적으로 적은 수치입니다. 실제 응용에서는 1,000샷 이상을 사용하게 될 가능성이 높습니다.

오류에 대한 이 첫 번째 시각화는 지연(그리고 ∣1⟩|1\rangle을 준비하기 위한 단일 X 게이트)을 제외하면 거의 어떠한 게이트도 필요로 하지 않았습니다. 이제 게이트 오류에 초점을 맞춘 또 다른 예시를 살펴봅시다.

게이트 오류와 그 누적​

양자 게이트를 적용할 때, 예를 들어 XX 게이트를 적용할 때, 이론적으로 이 게이트는 양자 상태를 블로흐 구 위에서 XX 축을 중심으로 π\pi 라디안만큼 회전시켜, α∣0⟩+β∣1⟩\alpha |0\rangle + \beta |1\rangle을 다음을 통해 α∣1⟩+β∣0⟩\alpha |1\rangle + \beta |0\rangle로 매핑합니다

X∣ψ⟩=RX(π)∣ψ⟩=(cos⁡(θ/2)−isin⁡(θ/2)−isin⁡(θ/2)cos⁡(θ/2))(αβ)=(0110)(αβ)=(βα)\begin{aligned} X|\psi\rangle & = R_X(\pi) |\psi\rangle\\ & = \begin{pmatrix} \cos{(\theta/2)} & -i \sin{(\theta/2)} \\ -i \sin{(\theta/2)} & \cos{(\theta/2)} \end{pmatrix}\begin{pmatrix} \alpha \\ \beta \end{pmatrix}\\ & = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}\begin{pmatrix} \alpha \\ \beta \end{pmatrix}\\ & =\begin{pmatrix} \beta \\ \alpha \end{pmatrix}\\ \end{aligned}

하지만 실제 게이트는 불완전합니다. 방향이 불완전하게 정렬되어(정확히 X 축을 중심으로 회전하지 않아) 있을 수도 있고, 의도한 것보다 약간 더 크거나 작은 회전을 일으킬 수도 있습니다. 게이트 오류를 작은 각도 ϵ\epsilon만큼의 순수한 과잉/과소 회전으로 모델링해 봅시다.

Xϵ∣ψ⟩=RX(π+ϵ)∣ψ⟩=(cos⁡(θ+ϵ/2)−isin⁡(θ+ϵ/2)−isin⁡(θ+ϵ/2)cos⁡(θ+ϵ/2))(αβ)≈(ϵ1−ϵ2/21−ϵ2/2ϵ)(αβ)=(ϵα+(1−ϵ2/2)β(1−ϵ2/2)α+ϵβ)\begin{aligned} X_\epsilon|\psi\rangle & = R_X(\pi+\epsilon) |\psi\rangle\\ & = \begin{pmatrix} \cos{(\theta+\epsilon/2)} & -i \sin{(\theta+\epsilon/2)} \\ -i \sin{(\theta+\epsilon/2)} & \cos{(\theta+\epsilon/2)} \end{pmatrix}\begin{pmatrix} \alpha \\ \beta \end{pmatrix}\\ & \approx \begin{pmatrix} \epsilon & 1-\epsilon^2/2 \\ 1-\epsilon^2/2 & \epsilon \end{pmatrix}\begin{pmatrix} \alpha \\ \beta \end{pmatrix}\\ & =\begin{pmatrix} \epsilon \alpha+(1-\epsilon^2/2)\beta \\ (1-\epsilon^2/2)\alpha+\epsilon \beta \end{pmatrix}\\ \end{aligned}

불완전한 게이트를 여러 번 적용하면 작은 오류 ϵ\epsilon이 누적될 수 있습니다. 때로는 이러한 여러 오류가 매번 같은 방향으로 상태를 이동시키기도 하는데(이를 "결맞음 누적(coherent accumulation)"이라고 하며, 아래에서 다시 다룰 것입니다), 실제 X 게이트를 큐비트에 여러 번 적용했을 때 어떤 일이 일어나는지 살펴봅시다.

# This took 78 s on penguino1

from qiskit_ibm_runtime import EstimatorV2

# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)

# Use the same bit flips
max_depth = 60
circuits = []
observables = []

for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))

pubs = list(zip(circuits, observables))

estimator = EstimatorV2(mode=backend)
results = estimator.run(pubs=pubs).result()
real_expectations = [pub_res.data.evs for pub_res in results]
# from qiskit_ibm_runtime import QiskitRuntimeService

# service = QiskitRuntimeService() # uses stored IBM Quantum account
# job_id = "d5immof67pic7386l8eg"

# job = service.job(job_id) # retrieve the job
# results = job.result() # this is your .result() object
# Convert from the expectation value of Z to the probability of a transition
# y_real_values = [(1-r.data.evs.item())/2 for r in results]

# Create the plot
plt.figure(figsize=(8, 5))
# plt.plot(range(max_depth + 1), y_real_values, 'o-')
# plt.plot(x_real_values, y_real_values, marker='o', linestyle='-', color='blue', label='EV Data')
plt.plot(
range(max_depth + 1),
real_expectations,
marker="o",
linestyle="-",
color="blue",
label="EV Data",
)

plt.xlabel("Number of Flip-Back Cycles")
plt.ylabel("Expectation ⟨Z⟩")
plt.title("Accumulated Gate Noise Effects on Flips")
plt.grid(True)
plt.show()

Output of the previous code cell

기대값은 예상대로 1.0 부근에서 시작해 감쇠하지만, 단순히 0으로 감쇠하지는 않습니다! 값이 음수가 됩니다. 만약 이것이 열적 잡음이나 무작위 상호작용이었다면 ∣1⟩|1\rangle이 ∣0⟩|0\rangle보다 측정될 가능성이 더 높아지지는 않을 것입니다. 이 오류는 분명히 다릅니다. 그리고 이는 앞서 논의한 과잉/과소 회전과 맥락이 일치합니다. 서로 상쇄되어야 할 각 회전 쌍이 실제로는 작은 각도만큼 회전한 채로 끝난다면, 그러한 반복이 많아질수록 상태가 ∣0⟩|0\rangle에서 ∣1⟩|1\rangle 쪽으로 서서히 회전하게 됩니다.

여기서 보여드린 오류 누적이 실제 워크플로에서 이렇게 깔끔하게 진행될 가능성은 낮습니다. 우선, 오류가 결맞게 누적되도록 하기 위해 오류 완화 기능을 명시적으로 끄고 동일한 반복적 게이트 시퀀스를 수행했습니다. 이는 오로지 이러한 오류가 존재함을 보여주기 위한 것입니다. 잡음 처리 기법(예: Pauli 트윌링)을 사용하면 오류가 누적되는 방식에 영향을 줄 수 있으며, 종종 전체 오류를 더 낮출 수 있습니다.

이 오류에 대한 우리의 모델이 실험 데이터를 얼마나 잘 설명하는지 잡음 모델을 명시적으로 구성하고 시뮬레이터를 사용해 확인할 수 있습니다. 아래 모델에서는 0.025 라디안에 해당하는 오류를 명시적으로 반영했습니다. 이 값에 특별한 의미가 있는 것은 아니며, 실험을 합리적으로 설명할 때까지 오류 값을 조정하면 됩니다.

from qiskit_aer.noise import NoiseModel, coherent_unitary_error
from qiskit_aer import AerSimulator
import numpy as np

# For your SINGLE-QUBIT test on qubit 0, just override X error specifically
noise_model = NoiseModel.from_backend(backend, gate_error=True, thermal_relaxation=True)

theta_error = 0.025 # model over-rotation error around 0.01-0.03 radians
U_over = np.array(
[
[np.cos(theta_error / 2), -1j * np.sin(theta_error / 2)],
[-1j * np.sin(theta_error / 2), np.cos(theta_error / 2)],
]
)

unitary_error = coherent_unitary_error(U_over)
# Target ONLY qubit 0 (your circuit) - no warning!
noise_model.add_quantum_error(unitary_error, ["x"], [0])

simulator = AerSimulator(noise_model=noise_model)
WARNING: quantum error already exists for instruction "x" on qubits (0,) , appending additional error.
max_depth = 60
circuits = []
observables = []

for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))

pubs = list(zip(circuits, observables))

estimator = EstimatorV2.from_backend(simulator)
results = estimator.run(pubs).result()
expectations = [pub_res.data.evs for pub_res in results] # no [0], use value directly

이제 실제 곡선과 시뮬레이션한 곡선을 함께 그려 봅시다.

fig, ax = plt.subplots()

# Add simulator values
ax.scatter(range(max_depth + 1), expectations, c="blue", label="Simulator", alpha=0.7)

# Add real QC values
ax.scatter(range(max_depth + 1), real_expectations, c="red", label="Real", alpha=0.7)

# Add labels and plot
ax.set_xlabel("Number of Flip-Back Cycles")
ax.set_ylabel("Expectation ⟨Z⟩")
ax.set_title("Accumulated Gate Noise Effects on Flips")
ax.legend()
ax.grid(True)

plt.show()

Output of the previous code cell

실제 회로에서의 오류는 과잉/과소 회전 오류 모델로 상당히 잘 설명되었습니다. 서로 다른 종류의 잡음과 오류는 분명히 다르게 누적되며 양자 회로의 충실도에 극적으로 다른 영향을 미칩니다. 따라서 지금까지보다 더 공식적으로 발생할 수 있는 오류를 분류하고 특성화하는 것이 매우 중요해집니다.

양자 오류 특성화하기​

우리는 이미 양자 잡음의 몇 가지 원인을 설명했으며, 오류를 일으키는 잡음의 범주에 따라 오류를 분류할 수도 있습니다. 하지만 오류 정정 및 완화에 유용한, 서로 다른 범주의 양자 오류가 있을 수 있습니다. 예를 들어, 오류를 정정하거나 완화하려면 오류가 어느 시점에서 발생하는지, 그리고 오류가 어떻게 누적되는지 알아야 합니다. 오류가 어디서(어떤 과정에서) 발생하는지를 명시할 때 중요한 범주 중 하나는 상태 준비 및 측정 오류(줄여서 SPAM 오류)입니다. 여기서 “상태 준비”라는 용어는 상태를 측정을 위해 준비하는 과정에서 이루어지는 모든 것을 의미하지 않습니다. 오히려 큐비트의 초기화, 즉 알고리즘 실행을 위한 큐비트의 “준비”를 가리키며, 따라서 이 SPAM 범주는 알고리즘 실행 중의 게이트 오류와 같은 것들은 제외합니다.

또 다른 중요한 구분은 오류가 결맞은(coherent) 것인지 결맞지 않은(incoherent) 것인지입니다. 간단히 요약하면(아래에서 더 자세히 논의합니다), 결맞음 오류는 일반적으로 유니터리 연산으로 모델링되며 상태의 순도를 보존합니다. 결맞지 않음 오류는 비유니터리 양자 채널로 모델링되며 일반적으로 상태의 순도를 감소시킵니다. 결맞지 않음 오류는 양자 정보의 손실을 일으키는 열적 상호작용으로 시각화하기 쉽지만, 실제로는 환경과의 임의의 결합에 의해 발생할 수도 있습니다. 결맞음 오류의 예로, RY 게이트를 구현할 때 펄스 방향에 불완전함이 있어서 RY(θ)RY(\theta) 게이트가 실제로는 RY(θ)⋅RX(ϵ)RY(\theta) \cdot RX(\epsilon)을 일으킨다고 가정해 봅시다. 이러한 불완전함은 항상 같은 방향으로 X 축을 중심으로 한 잘못된 회전을 일으킬 것입니다. 이것이 결맞음 오류입니다.

SPAM 오류에는 체계적인 제어 결함과 같은 결맞음 오류와 광자 손실, 열적 효과와 같은 결맞지 않음 오류가 혼합되어 있다는 점에 유의하세요. 여러 단계와 오류 원인이 관여하기 때문에, SPAM 오류는 결맞음 오류와 결맞지 않음 오류의 조합으로 설명하는 것이 가장 적절합니다.

SPAM 오류​

이름에서 알 수 있듯이, SPAM 오류는 양자 실험의 두 가지 뚜렷한 단계, 즉 초기 준비와 판독/측정 단계에서 발생합니다. 상태 준비 오류는 하드웨어가 큐비트를 원하는 시작 상태(∣0⟩|0\rangle, IBM 양자 컴퓨터의 경우)로 안정적으로 초기화하지 못할 때 발생합니다. 원인은 다음과 같습니다.

  • 열적 여기(실제 큐비트는 완벽하게 냉각되지 않으며 때때로 ∣0⟩|0\rangle 대신 ∣1⟩|1\rangle에서 시작할 수 있습니다)
  • 초전도 큐비트의 공진기 내 잔여 광자 또는 잡음
  • 큐비트가 재설정되는 정확도에 영향을 미치는 교정값의 드리프트

측정 오류는 측정 장치가 큐비트 상태를 잘못 식별할 때, 즉 판독 과정 중에 발생합니다. 원인은 다음을 포함합니다.

  • 판독 증폭기 잡음으로 인해 ∣0⟩|0\rangle과 ∣1⟩|1\rangle 사이에 혼동이 발생함

  • 판독 중 큐비트 이완(예를 들어, ∣1⟩|1\rangle 상태의 큐비트가 측정 직전이나 도중에 ∣0⟩|0\rangle로 감쇠함)

  • 판독 라인 간 혼선: 한 큐비트를 읽는 것이 인접한 큐비트의 판독값에 약간의 영향을 미침

  • IBM 공진기 기반 측정 시스템에서의 불완전한 판별 임계값

SPAM 오류는 주로 결맞지 않은 오류입니다. 준비 오류는 여기 상태와 바닥 상태의 무작위 혼합처럼 작동합니다. 측정 오류는 고전적인 혼동처럼 동작합니다. 확률 pp로 ∣0⟩|0\rangle이 ∣1⟩|1\rangle로 보고되거나 그 반대가 발생합니다. 이는 (게이트 교정 오류로 인해 체계적인 위상 이동을 일으키는 것과 같은) 결맞음 유니터리 오류와는 다릅니다. SPAM 오류는 오히려 무작위 고전 잡음과 비슷하지만, 드물게 판독에서 결맞음 편향이 존재할 수도 있습니다.

SPAM 오류는 무작위 벤치마킹이나, 상태 준비와 측정이 전체 오류에서 큰 비중을 차지하는 얕은 깊이의 회로에서 문제가 될 수 있습니다. 매우 깊은 회로, 특히 2큐비트 게이트가 많은 회로에서는 그 영향이 상대적으로 적습니다.

수학적으로 SPAM 오류는 이상적인 분포 p⃗ideal\vec{p}_\text{ideal}와 행렬 AA를 통해 관련된 잡음이 섞인 분포 p⃗noisy\vec{p}_\text{noisy}를 만들어내는 것으로 설명할 수 있습니다.

p⃗noisy=Ap⃗ideal\vec{p}_\text{noisy} = A \vec{p}_\text{ideal}

여기서 pip_i는 비트열 ii를 측정할 확률이고, AijA_{ij}는 상태 ii로 준비되었어야 할 때 상태 jj를 얻을 확률입니다. Sampler에서 표본으로 추출한 비트열의 맥락을 떠올려 보세요. 측정된 상태 분포에는 많은 정확한 측정값이 포함되지만, 상태 준비를 위한 지시 사항이 실제로 관측된 상태와 일치하지 않는 측정값도 일부 포함됩니다. 이는 확률이 약간 어긋난다는 것을 의미합니다.

A two-part figure. On the left is a histogram showing the ideal and noisy measurement results. On the right is a reduced assignment matrix mapping probabilities from the noisy measured results to the ideal case.

위 그림에서 (a) 부분은 청록색으로 GHZ 상태의 이상적인 분포를, 보라색으로 실제 측정값을 보여줍니다. (b) 부분에서는 AA 행렬의 예시를 볼 수 있습니다. 각 큐비트가 0을 잘못 반환할 확률과 1을 잘못 반환할 확률이 반드시 같지는 않으므로, 이 행렬이 대각선을 기준으로 완벽하게 대칭이지는 않다는 점에 유의하세요. 실제로는 준비 오류와 판독 오류를 분리하기 어려운 경우가 많아, 종종 하나로 결합하여 다룹니다(그래서 SPAM이라는 용어가 흔히 쓰입니다).

이러한 SPAM 오류를 정정하는 한 가지 방법은 이상적인 측정 결과가 알려진 단순한 회로를 사용하고, 이를 SPAM 오류가 존재하는 상태에서 측정한 결과와 비교하는 것입니다. 이를 통해 더 복잡한 회로의 이상적인 결과를 역으로 추정할 수 있습니다. 일반적으로 엔트로피가 높은 상태의 경우 2N×2N2^N\times2^N개의 확률로 이루어진 행렬을 구성해야 할 수도 있지만, 덜 극단적인 경우에는 이러한 오류를 완화할 수 있습니다.

결맞음 오류와 결맞지 않음 오류​

__결맞음 오류__는 양자 상태에 대한 체계적이고 결정론적이며 유니터리한 잘못된 회전입니다. 이는 예측 가능한 방식으로 벗어나는 불완전한 양자 연산에서 발생합니다. 예를 들어 단일 큐비트 회전 게이트가 가하는 회전에서의 미세한 오류가 있으며, 여기에는 지속적으로 과잉 또는 과소 회전을 일으키는 교정 드리프트로 인한 오류도 포함됩니다. 수학적으로, 실제 회전 게이트, 이를테면 RX~(θ)\tilde{R_X}(\theta)는 이상적인 회전 게이트에 약간의 추가 오류를 더한 것으로 쓸 수 있습니다.

RX~(θ)=RX(θ+ϵ)\tilde{R_X}(\theta) = R_X(\theta + \epsilon)

어떤 작은 과소 또는 과잉 회전 ϵ\epsilon에 대해서입니다. 다른 예로는 2큐비트 게이트가 원치 않는 작은 위상 이동을 더하는 경우와, 제어 펄스가 이상적인 형태에서 체계적으로 벗어나는 경우가 있습니다.

결맞음 오류의 핵심 특징은 결정론적이며 그 자체로 유니터리 게이트로 모델링될 수 있다는 점입니다. 이에 따라 결맞음 오류는 양자 상태의 순도를 보존합니다. 즉, 양자 정보가 손실되는 것이 아니라 단지 불완전하게 처리된 것입니다. 또 한 가지 주목할 중요한 점은, 결맞음 오류가 반복되면 보강적으로 간섭하며 때로는 게이트 수에 대해 이차적으로 증가한다는 것입니다.

이러한 오류는 때때로 예측 가능하며, 그래서 어느 정도까지는 교정을 통해 제거할 수 있습니다. 하지만 남아 있는 결맞음 오류는 빠르게 누적되어 이상적인 상태로부터의 골치 아픈 편차를 일으킬 수 있습니다. 이는 때때로 결맞음 오류를 의도적으로 “무작위화”하는 것이 유리하다는 것을 의미합니다. 이 절차와 그 유용성은 오류 완화 강의에서 다룰 것입니다.

왜 결맞음 오류가 골치 아픈가​

결맞음 오류는 무작위화되거나 정정되지 않으면 위험한 방식으로 “쌓여” 올바른 상태로부터 큰 편차를 만들어낼 수 있습니다.

__결맞지 않음 오류__는 확률적이고 무작위적이며 대개 비유니터리입니다. 이는 환경과의 상호작용이나 제어되지 않는 잡음원에서 발생합니다. 우리는 이미 몇 가지 예를 살펴보았습니다. 에너지 이완/T1T_1 붕괴는 결맞지 않음 오류입니다. 확률적 게이트 잡음, 열적 잡음, 측정 오류도 마찬가지입니다.

결맞지 않음 오류의 핵심 특징은 연산이 수행될 때마다 동일하지 않다는 것입니다. 이는 비유니터리이므로 결맞음 오류처럼 단순한 유니터리 양자 게이트로 모델링할 수 없습니다. 결맞지 않기 때문에, 이러한 오류는 일반적으로 일관된 과잉 회전처럼이 아니라 무작위 잡음처럼 선형적으로 누적됩니다.

결맞지 않음 오류는 큐비트가 정보를 돌이킬 수 없이 잃게 만듭니다(순도와 위상 정보의 손실).

그렇다면 어느 쪽이 더 나쁠까요? 양자 컴퓨팅의 대부분이 그렇듯, 상황에 따라 다릅니다. 요점은 결맞음 오류가 더 빠르고 비선형적으로 누적된다는 것(이는 나쁜 점)입니다. 하지만 어느 정도 교정을 통해 제거할 수 있고, 위상 정보를 제대로 추출하는 방법을 알아낼 수 있다면 시스템에 여전히 그 정보가 남아 있습니다. 결맞지 않음 오류는 선형적으로 누적되는데, 이는 두 가지 면에서 좋습니다. 결맞음 누적보다 느리고, 오류 완화 강의에서 다룰 제로 잡음 외삽법(ZNE) 같은 과정에서 결맞지 않음 오류의 영향이 어떻게 규모에 따라 변하는지 파악하기가 비교적 쉽습니다. 그러나 결맞지 않음 오류가 발생하면 양자 정보는 단순히 가려지는 것이 아니라 진정으로 손실됩니다.

밀도 행렬과 양자 채널​

다음 절에서는 결맞음 오류와 결맞지 않음 오류의 몇 가지 유형을 더 깊이 살펴보고, 양자 채널을 사용하여 이를 수학적으로 어떻게 모델링할 수 있는지 알아보겠습니다. 먼저 밀도 행렬과 양자 채널에 대한 간단한 복습이 필요합니다. 이에 대한 완전하고 엄밀한 다룸은 IBM Quantum Learning에 있는 John Watrous의 강좌 양자 정보의 일반적인 공식화를 참고하세요. 여기서의 다룸은 예시 중심이며 덜 형식적입니다.

__양자 채널__은 양자 시스템이 어떻게 진화하고, 상호작용하며, 잡음을 겪는지를 설명하는 가장 일반적인 방법입니다. 순수 상태와 유니터리 진화에 익숙하다면, 양자 채널은 자연스러운 다음 단계입니다.

표준 양자역학에서 “순수” 상태는 ∣ψ⟩|\psi\rangle로 씁니다. 여기서 “순수”는 상태 준비에 대한 정보나 지식의 순도를 가리키며, 결코 어떤 시스템의 고유 상태를 의미하지 않습니다. 큐비트 예시로, ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)은 순수 상태인데, 상대 진폭과 위상에 대해 완벽한 지식을 가지고 있기 때문입니다. 이러한 순수 상태의 시간에 따른 변화는 유니터리 연산자 UU에 의해 지배됩니다.

∣ψ⟩→U∣ψ⟩|\psi\rangle \rightarrow U|\psi\rangle

슈뢰딩거 방정식에 따르면, 여기서 U=e−iHt/ℏU = e^{-iHt/\hbar}이며, HH는 시스템의 해밀토니안이고 ℏ\hbar는 축소 플랑크 상수로, 흔히 “1로 설정”하거나 더 엄밀하게는 모든 에너지가 ℏ\hbar 단위로 주어지도록 해밀토니안에 흡수시킵니다.

유니터리 진화는 가역적이고, 결정론적이며, 고립되어 있습니다. 하지만 이는 실제 양자 시스템을 설명하기에는 부족합니다. 실제 양자 시스템에서는,

  • 측정을 수행하여 양자 상태를 시스템의 고유 상태로 붕괴시킵니다. 이는 명백히 비유니터리적입니다.
  • 시스템이 환경과 상호작용합니다. 이는 시스템이 진정으로 고립되어 있지 않다는 것을 의미하며, 환경을 무한히 추적할 수 없으므로 정보 손실에 해당합니다.
  • 실용적으로 말하면, 잡음이 상태를 훼손합니다. 그 밖에도 여러 가지가 있습니다.

유니터리 진화만으로는 이러한 과정을 설명할 수 없으므로, 양자 상태와 과정에 대한 더 일반적인 표현이 필요합니다. 혼합 상태는 양자 상태의 고전적 분포를 나타냅니다. 즉, 우리는 이미 양자 상태 ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)가 측정(고전 정보로 붕괴)될 때 ∣0⟩|0\rangle 상태로 측정될 확률이 50%, ∣1⟩|1\rangle로 측정될 확률이 50%라는 사실에 익숙합니다. 하지만 초기 양자 상태가 정확히 ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)일 확률이 100%라고 주장하는 것입니다. 이제 양자역학적 확률 위에 고전적 확률을 더하고자 합니다. 예를 들면 다음과 같습니다.

초기 양자 상태는 25%의 고전적 확률로 ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)로 준비되고, 75%의 고전적 확률로 ∣ψ⟩=12(∣0⟩−i∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle-i|1\rangle)로 준비됩니다(서로 다른 상대 위상에 유의하세요).

때로는 이것이 준비 과정에서의 명시적인 고전적 확률 때문일 수도 있고, 다른 때에는 우리가 무시하는 환경의 일부와의 얽힘 때문일 수도 있습니다. 어느 쪽이든, 양자역학적 상태의 이러한 고전적 분포를 설명할 도구가 필요하다는 것은 분명합니다. 순수 상태만으로는 이러한 가능성을 나타낼 수 없습니다. 그래서 __밀도 행렬__을 도입합니다.

혼합 상태는 밀도 연산자로 설명됩니다.

ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

여기서 ∣ψi⟩|\psi_i\rangle는 (반드시 어떤 특정 연산자의 고유 상태일 필요는 없는) 양자 상태이고, pip_i는 시스템이 상태 ∣ψi⟩|\psi_i\rangle로 준비될 고전적 확률입니다. 이는 양자 상태의 알려진 고전적 분포로부터 밀도 행렬을 구성하는 좋은 방법입니다. 반면, 양자 상태의 고전적 분포와 서로 다른 측정 결과의 양자역학적 확률이 모두 주어졌을 때, 측정이 특정 상태(∣0⟩|0\rangle, ∣1⟩|1\rangle, 또는 큐비트가 더 많을 때의 다른 상태 등)를 산출할 확률이 무엇인지 알고 싶을 수도 있습니다. 바로 이때 밀도 행렬이 특히 유용합니다. 이를 기저 {∣i⟩}\{|i\rangle\}로도 다음과 같이 쓸 수 있습니다.

ρ=∑i,jρij∣i⟩⟨j∣.\rho = \sum_{i,j} \rho_{ij} |i\rangle\langle j|.

여기서 대각 원소 ρii\rho_{ii}​는 확률입니다.

  • ρ00\rho_{00}​ = 큐비트가 ∣0⟩|0\rangle 상태에 있을 확률

  • ρ11\rho_{11}​ = 큐비트가 ∣1⟩|1\rangle 상태에 있을 확률

이들은 실수이며 음이 아니고 합이 1입니다.

비대각 원소 ρij,i≠j\rho_{ij}, i \neq j는 결맞음(coherence)입니다. 즉 위상 관계나 간섭 가능성을 나타내며, 일반적으로 그 상태에 얼마나 많은 양자역학적 정보가 담겨 있는지에 대응합니다. 이는 비공식적인 설명이지만, 실제로 어떤 의미인지 살펴봅시다.

예시​

순수 상태 ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)를 생각해 봅시다. (a) 어떠한 계산도 하지 않고 측정 확률과 위상 정보에 대해 무엇을 알 수 있나요? (b) 밀도 행렬을 구성하여 여러분의 직관을 확인해 보세요.

Solution:

(a) 이는 순수 상태이므로 ∣0⟩|0\rangle과 ∣1⟩|1\rangle 사이에 가능한 위상은 단 하나, +1뿐입니다. 이는 완벽한 위상 정보이므로, 밀도 행렬의 비대각 원소가 크리라고 예상할 수 있습니다. 비대각 원소에 대해 이보다 더 많은 직관이 있을 수도 있지만, 지금은 이 정도로 충분합니다. 나아가, 두 기저 상태의 진폭이 같으므로 ∣0⟩|0\rangle 또는 ∣1⟩|1\rangle을 측정할 확률이 각각 50%라고 예상할 수 있습니다. 따라서 대각 원소가 1/2이 되리라고 예상합니다. (b) 위의 정의를 사용하면

ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

pi≠0p_i \neq 0은 오직 상태 ∣ψ⟩|\psi\rangle에 대해서만 성립합니다. 따라서 다음과 같이 쓸 수 있습니다

ρ=1∣ψ⟩⟨ψ∣=12(∣0⟩+∣1⟩)(⟨0∣+⟨1∣)=12(1111).\begin{aligned} \rho & = 1 |\psi\rangle\langle\psi| \\ & = \frac{1}{2}(|0\rangle+|1\rangle)(\langle0|+\langle1|)\\ & =\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}. \end{aligned}

대각 원소는 예상대로 각각 1/21/2이며, 비대각 원소는 큽니다(합이 1입니다).

이제 위상 정보가 좋지 않을 때 어떤 일이 일어나는지 살펴봅시다.

예시​

비슷한 경우를 생각해 보되, 이번에는 상태 ∣ψ+⟩=12(∣0⟩+∣1⟩)|\psi_+\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)에 있을 고전적 확률이 50%, 상태 ∣ψ−⟩=12(∣0⟩−∣1⟩)|\psi_-\rangle = \frac{1}{\sqrt{2}}(|0\rangle-|1\rangle)에 있을 고전적 확률이 50%인 경우입니다. 같은 두 질문입니다. (a) 어떠한 계산도 하지 않고 측정 확률과 위상 정보에 대해 무엇을 알 수 있나요? (b) 밀도 행렬을 구성하여 여러분의 직관을 확인해 보세요.

Solution:

(a) 이전과 마찬가지로 두 기저 상태의 진폭이 같으므로, ∣0⟩|0\rangle 또는 ∣1⟩|1\rangle을 측정할 확률이 각각 50%라고 예상할 수 있습니다. 따라서 대각 원소가 1/2이 되리라고 예상합니다. 하지만 이번에는 ∣0⟩|0\rangle과 ∣1⟩|1\rangle 사이의 위상에 대해 서로 반대되는 두 가지 가능성, +1과 -1이 있으며, 각각이 동일하게 일어날 가능성이 있습니다. 서로 반대되는 두 위상이 동일하게 일어날 가능성이 있다면 위상 정보가 거의 또는 전혀 없으리라고 예상할 수 있습니다. 비대각 원소가 작으리라고 예상할 수 있습니다. (b) 다시 위의 정의를 사용하면

ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

pi≠0p_i \neq 0은 오직 두 상태 ∣ψ+⟩|\psi_+\rangle과 ∣ψ−⟩|\psi_-\rangle에 대해서만 성립합니다. 따라서 다음과 같이 쓸 수 있습니다

ρ=12∣ψ+⟩⟨ψ+∣+12∣ψ−⟩⟨ψ−∣=14(∣0⟩+∣1⟩)(⟨0∣+⟨1∣)+14(∣0⟩−∣1⟩)(⟨0∣−⟨1∣)=14(1111)+14(1−1−11)=12(1001).\begin{aligned} \rho & = \frac{1}{2} |\psi_+\rangle\langle\psi_+| + \frac{1}{2}|\psi_-\rangle\langle\psi_-| \\ & = \frac{1}{4}(|0\rangle+|1\rangle)(\langle0|+\langle1|)+\frac{1}{4}(|0\rangle-|1\rangle)(\langle0|-\langle1|)\\ & =\frac{1}{4}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}+\frac{1}{4}\begin{pmatrix} 1 & -1 \\ -1 & 1\end{pmatrix}\\ & =\frac{1}{2}\begin{pmatrix} 1 & 0 \\ 0 & 1\end{pmatrix}. \end{aligned}

비대각 원소는 예상대로 작으며, 사실 0입니다. 대각 원소는 여전히 각각 50%인데, 이는 혼합에 포함된 각 상태가 ∣0⟩|0\rangle과 ∣1⟩|1\rangle의 가중치가 동일했기 때문에 타당합니다.

이 구조는 큐비트 수가 늘어날수록 더 흥미로워집니다. 아래 질문들을 통해 이를 살펴보세요.

이해도 확인하기​

순수 벨 상태 ∣Φ+⟩=12(∣00⟩+∣11⟩)|\Phi_+\rangle = \frac{1}{\sqrt{2}}(|00\rangle+|11\rangle)의 밀도 행렬을 써 보세요.

정답
ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

pi≠0p_i \neq 0은 오직 상태 ∣Φ+⟩|\Phi_+\rangle에 대해서만 성립합니다. 따라서 다음과 같이 쓸 수 있습니다

ρ=1∣Φ+⟩⟨Φ+∣=12(∣00⟩+∣11⟩)(⟨00∣+⟨11∣)=12(1001000000001001).\begin{aligned} \rho & = 1 |\Phi_+\rangle\langle\Phi_+| \\ & = \frac{1}{2}(|00\rangle+|11\rangle)(\langle00|+\langle11|)\\ & =\frac{1}{2}\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}. \end{aligned}

∣Φ+⟩=12(∣00⟩+∣11⟩)|\Phi_\text{+}\rangle = \frac{1}{\sqrt{2}}(|00\rangle+|11\rangle)일 고전적 확률이 25%이고 ∣Ψ-⟩=12(∣01⟩−∣10⟩)|\Psi_\text{-}\rangle = \frac{1}{\sqrt{2}}(|01\rangle-|10\rangle)일 고전적 확률이 75%인 경우의 밀도 행렬을 써 보세요.

정답
ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

pi≠0p_i \neq 0은 오직 두 상태 ∣Φ+⟩|\Phi_+\rangle과 ∣Ψ−⟩|\Psi_-\rangle에 대해서만 성립합니다. 따라서 다음과 같이 쓸 수 있습니다

ρ=14∣Φ+⟩⟨Φ+∣+34∣Ψ−⟩⟨Ψ+∣=18(∣00⟩+∣11⟩)(⟨00∣+⟨11∣)+38(∣01⟩−∣10⟩)(⟨01∣−⟨10∣)=18(1001000000001001)+38(000001−100−1100000)=18(100103−300−3301001).\begin{aligned} \rho & = \frac{1}{4} |\Phi_+\rangle\langle\Phi_+| + \frac{3}{4}|\Psi_-\rangle\langle\Psi_+| \\ & = \frac{1}{8}(|00\rangle+|11\rangle)(\langle00|+\langle11|)+\frac{3}{8}(|01\rangle-|10\rangle)(\langle01|-\langle10|)\\ & =\frac{1}{8}\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}+\frac{3}{8}\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 1 & -1 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}\\ & =\frac{1}{8}\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 3 & -3 & 0 \\ 0 & -3 & 3 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}. \end{aligned}

이전 질문에서의 작업을 수정하여, ∣Φ+⟩=12(∣00⟩+∣11⟩)|\Phi_\text{+}\rangle = \frac{1}{\sqrt{2}}(|00\rangle+|11\rangle)일 고전적 확률이 50%이고 ∣Ψ-⟩=12(∣01⟩−∣10⟩)|\Psi_\text{-}\rangle = \frac{1}{\sqrt{2}}(|01\rangle-|10\rangle)일 고전적 확률이 50%인 경우의 밀도 행렬을 써 보세요. 어떤 위상 정보가 남아 있을지 예측해 보세요.

정답
ρ=∑ipi∣ψi⟩⟨ψi∣.\rho = \sum_i p_i |\psi_i\rangle\langle\psi_i|.

pi≠0p_i \neq 0은 오직 두 상태 ∣Φ+⟩|\Phi_+\rangle과 ∣Ψ−⟩|\Psi_-\rangle에 대해서만 성립합니다. 따라서 다음과 같이 쓸 수 있습니다

ρ=12∣Φ+⟩⟨Φ+∣+12∣Ψ−⟩⟨Ψ−∣=14(∣00⟩+∣11⟩)(⟨00∣+⟨11∣)+14(∣01⟩−∣10⟩)(⟨01∣−⟨10∣)=14(1001000000001001)+14(000001−100−1100000)=14(100101−100−1101001).\begin{aligned} \rho & = \frac{1}{2} |\Phi_+\rangle\langle\Phi_+| + \frac{1}{2}|\Psi_-\rangle\langle\Psi_-| \\ & = \frac{1}{4}(|00\rangle+|11\rangle)(\langle00|+\langle11|)+\frac{1}{4}(|01\rangle-|10\rangle)(\langle01|-\langle10|)\\ & =\frac{1}{4}\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}+\frac{1}{4}\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 1 & -1 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}\\ & =\frac{1}{4}\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 1 & -1 & 0 \\ 0 & -1 & 1 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}. \end{aligned}

대각 항들은 반드시 그래야 하듯이 합이 1입니다. 비대각 항들은 앞선 큐비트 하나짜리 예시에서와 달리 여기서는 상쇄되지 않습니다. 수식을 보면 그 이유를 알 수 있는데, 간단히 설명하면 이제 우리의 힐베르트 공간에 더 많은 상태가 있기 때문입니다. 첫 번째 벨 상태는 양의 상대 위상을, 두 번째는 음의 상대 위상을 가졌지만, 이 위상들은 서로 다른 기저 상태 사이에 있는 것입니다. 첫 번째 벨 상태는 ∣00⟩|00\rangle과 ∣11⟩|11\rangle 사이의 위상을 가졌고, 두 번째는 ∣01⟩|01\rangle과 ∣10⟩|10\rangle 사이의 상대 위상을 가졌습니다.

양자 채널​

__양자 채널__은 양자 상태에 대해 물리적으로 허용되는 가장 일반적인 변환입니다. 초기 밀도 행렬 ρ\rho를 다른 밀도 행렬로 옮깁니다.

ρ⟶Φ(ρ)\rho \quad \longrightarrow \Phi(\rho)

여기서 Φ(ρ)\Phi(\rho)는 밀도 행렬 ρ\rho에 작용하는 양자 채널 Φ\Phi를 의미하며, 벨 상태 ∣Φ+⟩|\Phi_+\rangle이나 ∣Φ−⟩|\Phi_-\rangle과 혼동해서는 안 됩니다.

양자 채널은 매우 일반적입니다. 여기에는 다음이 포함될 수 있습니다.

  • 유니터리 진화 Φ(ρ)=UρU†\Phi(\rho) = U\rho U^\dagger

  • 유니터리들의 확률적 혼합

  • Measurements

  • Decoherence

  • 진폭 감쇠(에너지 손실)

  • 위상 이완(위상 정보의 손실)

  • 환경과의 상호작용 그 밖에도 많은 것들이 있습니다.

양자 채널을 생각하는 한 가지 방법은, 유니터리가 순수 상태에 대해 하는 역할을 밀도 행렬에 대해 한다는 것입니다. 하지만 밀도 행렬의 일반성 덕분에 그에 대응하는 양자 채널은 훨씬 더 일반적이고 강력해질 수 있습니다.

양자 채널에 대한 유일한 제약 조건은 다음과 같아야 한다는 것입니다.

  1. 선형성 상태의 혼합은 일관되게 진화해야 합니다. Φ(pρ1+(1−p)ρ2)=pΦ(ρ1)+(1−p)Φ(ρ2)\Phi(p\rho_1 + (1-p)\rho_2) = p\Phi(\rho_1) + (1-p)\Phi(\rho_2)
  2. 완전 양성 시스템이 다른 무언가와 얽혀 있더라도 음의 확률을 만들어내서는 안 됩니다.
  3. 대각합 보존 확률의 합은 1이어야 합니다. 이들은 때때로 CPTP, 즉 완전 양의 대각합 보존(Completely Positive Trace-Preserving) 맵이라는 약어로 함께 묶입니다.

양자 채널에는 Stinespring, Kraus, Choi 표현 등 여러 표현 방식이 있습니다. 이는 양자 정보의 일반적인 공식화의 양자 채널에 관한 이 강의에서 자세히 다루며, 그곳에서 이 표현들이 서로 동등함도 보여줍니다. 여기서는 이러한 서로 다른 표현들을 자세히 다루지 않겠습니다. 이는 벡터를 세 가지 다른 좌표계를 사용해 설명하는 것과 유사하다고만 말해 두겠습니다. 각각은 서로 다른 측면을 강조하고 서로 다른 방식으로 직관을 형성할 수 있지만, 모두 올바른 답을 줍니다. __Kraus 표현__은 우리의 목적에 편리합니다. 행렬의 곱셈과 덧셈을 통해 채널의 작용을 표현하는 편리한 공식적 방법을 제공합니다. 특히, Kraus 표현은 다음과 같은 형태로 채널 Φ\Phi를 명시하는 것입니다.

Φ(ρ)=∑k=0N−1AkρAk†\Phi(\rho) = \sum_{k = 0}^{N-1} A_k \rho A_k^{\dagger}

여기서 A0,…,AN−1A_0,\ldots,A_{N-1}은 모두 같은 차원을 갖는 행렬로, 그 열은 입력 시스템 X\mathsf{X}의 고전적 상태에 대응하고, 그 행은 출력 시스템(X\mathsf{X}이든 다른 시스템 Y\mathsf{Y}이든)의 고전적 상태에 대응합니다. Φ\Phi가 유효한 채널이 되려면 이 행렬들이 다음 조건을 만족해야 합니다.

∑k=0N−1Ak†Ak=IX\sum_{k = 0}^{N-1} A_k^{\dagger} A_k = \mathbb{I}_{\mathsf{X}}

이러한 행렬들을 Kraus 행렬이라고 합니다. 이 공식화는 잡음 채널뿐만 아니라 측정을 포함한 일반적인 양자 과정과 채널에도 적용됩니다. 잡음과 오류의 맥락에서 이를 채널을 구성하는 데 어떻게 사용할 수 있는지 예를 통해 살펴봅시다.

완전 위상 이완 채널​

모든 위상 정보를 파괴하는 채널을 생각해 보고 이를 완전 위상 이완 채널이라고 부릅시다. 이는 채널이 다음과 같은 형태의 임의의 밀도 행렬을

ρi=(ρ11ρ12…ρ1nρ21ρ22⋱ρ2n⋮⋱⋱⋮ρn1ρn2…ρnn)\rho_i = \begin{pmatrix} \rho_{11} & \rho_{12} & \dots & \rho_{1n} \\ \rho_{21} & \rho_{22} & \ddots & \rho_{2n} \\ \vdots & \ddots & \ddots & \vdots \\ \rho_{n1} & \rho_{n2} & \dots & \rho_{nn} \end{pmatrix}

다음으로 매핑해야 함을 의미합니다

ρf=Φ(ρi)=(ρ110…00ρ22⋱0⋮⋱⋱⋮00…ρnn)\rho_f = \Phi(\rho_i) = \begin{pmatrix} \rho_{11} & 0 & \dots & 0 \\ 0 & \rho_{22} & \ddots & 0 \\ \vdots & \ddots & \ddots & \vdots \\ 0 & 0 & \dots & \rho_{nn} \end{pmatrix}

밀도 행렬이 이미 계산 기저로 쓰여 있다고 가정하면, ρij\rho_{ij}를 ⟨i∣ρ∣j⟩\langle i|\rho|j\rangle로 나타낼 수 있습니다. 이는 이 채널 작용을 수행할 수 있는 Kraus 행렬 집합을 시사합니다. Ak=∣k⟩⟨k∣A_k = |k\rangle\langle k|입니다. 이 전략을 큐비트 하나짜리 예시 사례에 적용해서 우리가 요구하는 대로 작동하는지 살펴봅시다.

A0=∣0⟩⟨0∣A_0 = \vert 0\rangle\langle 0\vert이고 A1=∣1⟩⟨1∣A_1 = \vert 1\rangle\langle 1\vert로 둡니다.

∑k=01AkρAk†=∣0⟩⟨0∣ρ∣0⟩⟨0∣+∣1⟩⟨1∣ρ∣1⟩⟨1∣\begin{aligned} \sum_{k = 0}^1 A_k \rho A_k^{\dagger} & = \vert 0\rangle\langle 0 \vert \rho \vert 0\rangle\langle 0 \vert + \vert 1\rangle\langle 1 \vert \rho \vert 1\rangle\langle 1 \vert \end{aligned}

⟨0∣ρ∣0⟩\langle 0 \vert \rho \vert 0\rangle는 하나의 숫자이므로, 벡터 ∣0⟩\vert 0\rangle를 그 옆으로 단순히 옮길 수 있습니다. 이는 두 번째 항에도 마찬가지로 적용됩니다. 우리는 다음을 얻습니다.

∑k=01AkρAk†=⟨0∣ρ∣0⟩ ∣0⟩⟨0∣+⟨1∣ρ∣1⟩ ∣1⟩⟨1∣=(⟨0∣ρ∣0⟩00⟨1∣ρ∣1⟩)\begin{aligned} \sum_{k = 0}^1 A_k \rho A_k^{\dagger}& = \langle 0 \vert \rho \vert 0\rangle \, \vert 0\rangle\langle 0 \vert + \langle 1 \vert \rho \vert 1\rangle \, \vert 1\rangle\langle 1 \vert \\[2mm] & = \begin{pmatrix} \langle 0 \vert \rho \vert 0 \rangle & 0 \\[1mm] 0 & \langle 1 \vert \rho \vert 1 \rangle \end{pmatrix} \end{aligned}

이 행렬들이 요구되는 조건을 만족한다는 점에 유의하세요.

∑k=01Ak†Ak=∣0⟩⟨0∣0⟩⟨0∣+∣1⟩⟨1∣1⟩⟨1∣=∣0⟩⟨0∣+∣1⟩⟨1∣=I\sum_{k = 0}^1 A_k^{\dagger} A_k = \vert 0\rangle\langle 0\vert 0\rangle\langle 0\vert + \vert 1\rangle\langle 1\vert 1\rangle\langle 1\vert = \vert 0\rangle\langle 0\vert + \vert 1\rangle\langle 1\vert = \mathbb{I}

이 크라우스(Kraus) 행렬의 선택이 유일하지 않다는 점에 주목할 필요가 있습니다.

채널로서의 노이즈 특성화​

이 절에서는 블로흐 구(Bloch sphere) 모델과 양자 채널의 수학을 사용하여 다양한 유형의 노이즈와 오류를 더 잘 이해해 보겠습니다.

결맞지 않은 오류​

결맞지 않은 오류로 돌아가서 특히 에너지 완화(energy relaxation) 오류를 살펴보겠습니다. 상태 ∣0⟩|0\rangle은 큐비트의 바닥 상태이고 상태 ∣1⟩|1\rangle은 약간 더 높은 에너지를 가진다는 것을 기억하세요. 때때로 양자 상태는 더 높은 에너지 준위에서 더 낮은 준위로 단순히 자발적으로 감쇠합니다. 자발 방출 과정은 풍부한 주제이며 양자장론적 처리 없이는 진정으로 이해될 수 없습니다. 하지만 그 직관은 우리 모두에게 매우 친숙합니다: 무작위 섭동은 바위가 언덕 아래로 굴러 내려가게 할 수는 있지만, 바위가 언덕 위로 굴러 올라가게 하지는 않습니다. 큐비트가 더 높은 에너지 상태에 머무르는 시간은 시간 T1T_1으로 특징지어집니다. 더 구체적으로, 상태 ∣1⟩|1\rangle으로 준비된 큐비트가 시간 tt 이후에도 그 상태에 머무를 확률은 e−t/T1e^{-t/T_1}입니다. 또는 동등하게, 시간 tt 이후 에너지 완화 오류가 발생할 확률 pp는 다음과 같습니다

p=1−e−t/T1p = 1-e^{-t/T_1}

이를 크라우스 표현(Kraus representation)의 양자 채널로 기술하려면 다음에 해당하는 크라우스 행렬이 필요합니다

  • ∣0⟩|0\rangle 상태를 변경하지 않고 그대로 둠
  • 어떤 확률 p로 ∣1⟩|1\rangle 상태를 ∣0⟩|0\rangle로 변경함

다음과 같이 정의해 보겠습니다

A0=1∣0⟩⟨0∣+1−p∣1⟩⟨1∣=(1001−p)A1=p∣0⟩⟨1∣=(0p00)\begin{aligned} A_0 & = 1|0\rangle\langle0| + \sqrt{1-p}|1\rangle\langle1|\\ & = \begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}\\ A_1 & = \sqrt{p}|0\rangle\langle1|\\ & = \begin{pmatrix} 0 & \sqrt{p} \\ 0 & 0\end{pmatrix} \end{aligned}

먼저, 이것이 밀도 행렬(density matrix)에 원하는 효과를 갖는지 확인해 봅시다. 순수 상태 ∣ψ⟩=12(∣0⟩+∣1⟩)|\psi\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)에 있는 시스템을 생각해 보십시오. 위의 예제에서 이 경우의 밀도 행렬이 다음과 같음을 확인했습니다

ρ=12(1111).\rho =\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}.

크라우스 행렬을 사용하여 에너지 완화 채널을 적용하면 새롭게 매핑된 밀도 행렬을 얻습니다:

Φ(ρ)=∑k=0N−1AkρAk†=A0ρA0†+A1ρA1†=(1001−p)12(1111)(1001−p)+(0p00)12(1111)(00p0)=12(1+p1−p1−p1−p)\begin{aligned} \Phi(\rho) & = \sum_{k = 0}^{N-1} A_k \rho A_k^{\dagger}\\ & = A_0 \rho A_0^{\dagger} + A_1 \rho A_1^{\dagger}\\ & = \begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}\begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}+\begin{pmatrix} 0 & \sqrt{p} \\ 0 & 0\end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}\begin{pmatrix} 0 & 0 \\ \sqrt{p} & 0\end{pmatrix}\\ & = \frac{1}{2}\begin{pmatrix} 1+p & \sqrt{1-p} \\ \sqrt{1-p} & 1-p\end{pmatrix} \end{aligned}

이것을 살펴보고 우리의 직관과 비교해 봅시다:

먼저, tt가 0에 접근할 때의 극한을 확인해 봅시다. 당연히 초기 밀도 행렬을 복원합니다:

Φ(ρ,t→0)=lim⁡p→012(1+p1−p1−p1−p)=12(1111).\Phi(\rho,t \rightarrow 0) = \lim_{p\rightarrow 0}{\frac{1}{2}\begin{pmatrix} 1+p & \sqrt{1-p} \\ \sqrt{1-p} & 1-p\end{pmatrix}} = {\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1\end{pmatrix}}.

시간이 지남에 따라 ∣0⟩|0\rangle 상태를 측정할 확률은 증가하고 ∣1⟩|1\rangle을 측정할 확률은 감소할 것으로 예상됩니다. 이것 역시 정확히 우리가 보는 바이며, 그 이유는

P∣0⟩=⟨0∣ρ∣0⟩=12(1+p)=1−12e−t/T1P∣1⟩=⟨1∣ρ∣1⟩=12(1−p)=12e−t/T1\begin{aligned} P_{|0\rangle} & = \langle 0 | \rho |0\rangle = \frac{1}{2}(1+p) = 1-\frac{1}{2}e^{-t/T_1}\\ P_{|1\rangle} & = \langle 1 | \rho |1\rangle = \frac{1}{2}(1-p) = \frac{1}{2}e^{-t/T_1} \end{aligned}

또한 ∣0⟩|0\rangle과 ∣1⟩|1\rangle을 측정할 확률의 합이 반드시 그래야 하듯 1이 됨을 자명하게 확인할 수 있습니다.

코히런스(coherence, 비대각) 항의 정확한 스케일링은 이 내용의 범위를 벗어납니다. 하지만 분명한 것은 초기에는 완벽한 위상 정보를 가지고 있고, 아주 오랜 시간이 지나면 시스템이 완전히 상태 ∣0⟩|0\rangle으로 완화되기 때문에 위상 정보가 전혀 남지 않는다는 것입니다. 따라서 코히런스 항은 아주 오랜 시간이 지나면 반드시 0으로 감쇠해야 합니다. 실제로,

lim⁡p→11−p=lim⁡t→∞e−t/T1=0\lim_{p\rightarrow 1}{\sqrt{1-p}} = \lim_{t\rightarrow \infty}{\sqrt{e^{-t/T_1}}} = 0

크라우스 행렬에 대한 많은 제약 조건은 이러한 직관적인 고찰을 통해 암묵적으로 확인됩니다. 채널(그리고 특히 크라우스 행렬)에 대한 제약 조건이 만족되는지는 엄밀하게 확인해야 하지만, 이는 독자를 위한 연습 문제로 남겨두겠습니다.

그래픽으로 표현하면, 이러한 유형의 채널은 블로흐 구를 사용하여 나타낼 수 있습니다. 순수 상태는 블로흐 구의 표면에 놓입니다. 혼합 상태는 구의 내부로 이동하며 단일 점에서 퍼져 나갑니다. 고전적 확률의 포함은 원점에서 혼합 상태 중 어느 하나까지의 절대 거리가 감소하는 것을 통해 나타나며, 단일 점에서 하나의 영역으로 퍼지는 것은 여러 가능한 상태의 혼합을 나타냅니다. 에너지 완화 채널의 특수한 경우, 무시할 수 없는 시간이 지난 후의 혼합 상태(밀도 행렬)는 아래 이미지처럼 보일 것입니다: ∣0⟩|0\rangle 극을 향해 위로 이동하고, ZZ 축을 따라, 그리고 XYXY 평면을 따라서도 (다만 ZZ 축을 따라서보다는 덜한 정도로) 수축된, 블로흐 구 내부의 한 영역입니다.

A Bloch sphere with a shaded region near the zero-state pole. The region is a shrunken oblate spheroid.

원근 렌더링에서 때때로 보이는 것처럼, 이 영역이 블로흐 구의 "캡(cap)"이 아니라는 점에 유의하세요. 영상에서 명확히 볼 수 있듯이, 이는 ∣0⟩|0\rangle 상태 쪽으로 수축되고 이동된 편평 타원체(oblate spheroid)입니다. 잡음 채널(그리고 일반적인 채널)은 물론 어떤 크기의 시스템에도 적용될 수 있습니다. 하지만 힐베르트 공간에서 상호 직교하는 상태의 수가 증가함에 따라 (블로흐 구처럼) 이를 시각적으로 표현하는 것은 어려워집니다.

이해도 확인​

위의 에너지 완화 채널에 사용된 크라우스 행렬이 항등 조건을 만족하는지 확인하십시오:

∑k=0N−1Ak†Ak=IX\sum_{k = 0}^{N-1} A_k^{\dagger} A_k = \mathbb{I}_{\mathsf{X}}
정답
∑k=0N−1Ak†Ak=A0†A0+A1†A1=(1001−p)(1001−p)+(00p0)(0p00)=(1001−p)+(000p)=I\begin{aligned} \sum_{k = 0}^{N-1} A_k^{\dagger} A_k & = A_0^\dagger A_0 + A_1^\dagger A_1\\ & = \begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}\begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-p}\end{pmatrix} + \begin{pmatrix} 0 & 0 \\ \sqrt{p} & 0\end{pmatrix}\begin{pmatrix} 0 & \sqrt{p} \\ 0 & 0\end{pmatrix}\\ & = \begin{pmatrix} 1 & 0 \\ 0 & 1-p\end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 0 & p\end{pmatrix}\\ & = \mathbb{I} \end{aligned}

이제 두 가지 유형의 결맞지 않은 잡음 채널을 더 소개하지만, 대부분의 해석과 검증은 연습 문제로 남겨두겠습니다. 다음은 __위상 이완 채널(dephasing channel)__로, 진폭은 보존하면서 위상 정보의 손실을 기술합니다. 전체 측정 확률에 여전히 고전적 확률과 양자역학적 확률이 모두 관여할 수 있지만, 위상 정보의 손실은 종종 양자 정보의 손실, 또는 시스템이 더 고전적으로 되는 것으로 설명됩니다.

에너지 완화가 특성 시간 T1T_1으로 기술된 것과 거의 같은 방식으로, 디페이징 오류는 두 번째 시간 매개변수 T2T_2로 기술됩니다. 시간 tt 이후 디페이징 오류가 발생할 확률은 다음과 같이 주어집니다

p=1−e−t/T2p = 1-e^{-t/T_2}

이 확률로 표현한, 단일 큐비트에 대한 디페이징 채널의 크라우스 행렬 집합은 다음과 같습니다:

A0=1−pI=(1−p001−p)A1=pZ=(p00−p)\begin{aligned} A_0 & = \sqrt{1-p}\mathbb{I}\\ & = \begin{pmatrix} \sqrt{1-p} & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}\\ A_1 & = \sqrt{p}Z\\ & = \begin{pmatrix} \sqrt{p} & 0 \\ 0 & -\sqrt{p}\end{pmatrix}\\ \end{aligned}

이 디페이징 채널의 결과는 아래 그림에서 블로흐 구를 사용하여 시각화되어 있습니다.

A Bloch sphere with a shaded region extending to both poles along the vertical z axis, but shrunken in the x-y plane. The region is again a shrunken oblate spheroid, but this time still centered on the origin and shrunken toward the z-axis.

진폭은 변경되지 않으므로 극(∣0⟩|0\rangle 또는 ∣1⟩|1\rangle)에 정확히 놓인 상태는 영향을 받지 않으며 음영 영역 안의 구 표면에 여전히 매핑됩니다. 하지만 위상 정보는 손실되며, 이는 XYXY 평면을 가로지르는 음영 영역의 수축에 해당합니다. 이를 이해하는 한 가지 방법은 다음과 같습니다: 가능한 모든 양자 상태는 여전히 잘 정의된 위상을 가질 수 있지만, 서로 다른 잘 정의된 위상을 가진 여러 상태를 발견할 고전적 확률이 존재하기 때문에, 어느 하나의 잘 정의된 위상에 대한 전체 확률은 감소합니다.

이해도 확인​

위에서 디페이징 채널에 대해 정의된 크라우스 행렬이 항등 조건을 만족하는지 확인하십시오:

∑k=0N−1Ak†Ak=IX\sum_{k = 0}^{N-1} A_k^{\dagger} A_k = \mathbb{I}_{\mathsf{X}}
정답
∑k=0N−1Ak†Ak=A0†A0+A1†A1=(1−p001−p)(1−p001−p)+(p00−p)(p0−p)=(1−p001−p)+(p00p)=I\begin{aligned} \sum_{k = 0}^{N-1} A_k^{\dagger} A_k & = A_0^\dagger A_0 + A_1^\dagger A_1\\ & = \begin{pmatrix} \sqrt{1-p} & 0 \\ 0 & \sqrt{1-p}\end{pmatrix}\begin{pmatrix} \sqrt{1-p} & 0 \\ 0 & \sqrt{1-p}\end{pmatrix} + \begin{pmatrix} \sqrt{p} & 0 \\ 0 & -\sqrt{p}\end{pmatrix}\begin{pmatrix} \sqrt{p} & \\ 0 & -\sqrt{p}\end{pmatrix}\\ & = \begin{pmatrix} 1-p & 0 \\ 0 & 1-p\end{pmatrix} + \begin{pmatrix} p & 0 \\ 0 & p\end{pmatrix}\\ & = \mathbb{I} \end{aligned}

∣0⟩|0\rangle과 ∣1⟩|1\rangle 사이에 잘 정의된 위상을 갖는, 원하는 단일 큐비트 순수 상태로 시작하십시오. 이를 밀도 행렬로 작성하십시오. 위에서 제안된 크라우스 연산자를 사용하여 디페이징 채널을 적용하십시오. 그 결과로 매핑된 밀도 행렬을 해석하십시오.

정답

상태 ∣ψ⟩=45∣0⟩−i35∣1⟩|\psi\rangle = \frac{4}{5}|0\rangle -i\frac{3}{5} |1\rangle를 선택해 봅시다. 해당하는 밀도 행렬 ρ\rho는

ρ=∑ipi∣ψi⟩⟨ψi∣=1(45∣0⟩−i35∣1⟩)(45∣0⟨+i35∣1⟨)=1625(1000)+12i25(0100)−12i25(0010)+925(0001)=125(1612i−12i9)\begin{aligned} \rho & = \sum_i p_i |\psi_i\rangle\langle\psi_i|\\ & = 1\left(\frac{4}{5}|0\rangle -i\frac{3}{5} |1\rangle\right) \left( \frac{4}{5}|0\langle +i\frac{3}{5} |1\langle\right)\\ & = \frac{16}{25}\begin{pmatrix} 1 & 0 \\ 0 & 0\end{pmatrix}+\frac{12i}{25}\begin{pmatrix} 0 & 1 \\ 0 & 0\end{pmatrix}-\frac{12i}{25}\begin{pmatrix} 0 & 0 \\ 1 & 0\end{pmatrix}+\frac{9}{25}\begin{pmatrix} 0 & 0 \\ 0 & 1\end{pmatrix}\\ & = \frac{1}{25}\begin{pmatrix} 16 & 12i \\ -12i & 9\end{pmatrix} \end{aligned}

이제 크라우스 연산자를 사용하여 이 밀도 행렬에 디페이징 채널을 적용합니다.

Φ(ρ)=∑k=0N−1AkρAk†=A0ρA0†+A1ρA1†=(1−p001−p)125(1612i−12i9)(1−p001−p)+(p00−p)125(1612i−12i9)(p0−p)=125(16(1−p)12i(1−p)−12i(1−p)9(1−p))+125(16p−12ip12ip9p)=125(1612i(1−2p)−12i(1−2p)9)\begin{aligned} \Phi(\rho) & = \sum_{k = 0}^{N-1} A_k \rho A_k^{\dagger}\\ & = A_0 \rho A_0^\dagger + A_1 \rho A_1^\dagger\\ & = \begin{pmatrix} \sqrt{1-p} & 0 \\ 0 & \sqrt{1-p}\end{pmatrix} \frac{1}{25}\begin{pmatrix} 16 & 12i \\ -12i & 9\end{pmatrix} \begin{pmatrix} \sqrt{1-p} & 0 \\ 0 & \sqrt{1-p}\end{pmatrix} + \begin{pmatrix} \sqrt{p} & 0 \\ 0 & -\sqrt{p}\end{pmatrix} \frac{1}{25}\begin{pmatrix} 16 & 12i \\ -12i & 9\end{pmatrix} \begin{pmatrix} \sqrt{p} & \\ 0 & -\sqrt{p}\end{pmatrix}\\ & = \frac{1}{25}\begin{pmatrix} 16(1-p) & 12i(1-p) \\ -12i(1-p) & 9(1-p)\end{pmatrix} + \frac{1}{25}\begin{pmatrix} 16p & -12ip \\ 12ip & 9p\end{pmatrix}\\ & = \frac{1}{25}\begin{pmatrix} 16 & 12i(1-2p) \\ -12i(1-2p) & 9\end{pmatrix} \end{aligned}

첫째, 대각 성분의 합이 반드시 그래야 하듯 실제로 1과 같음을 확인합니다. 둘째, 비대각 성분은 초기에 24/25의 합으로 컸으며, 이는 강한 결맞음을 나타냅니다. 위상 이완 오류의 확률 pp가 증가함에 따라 이 비대각 성분들이 감소한다는 점에 유의하세요. 이것 역시 우리의 예상과 일치합니다. 한 가지 미묘한 점: p→1p\rightarrow 1일 때 무슨 일이 일어나는지 주목하세요. 결맞음이 다시 강해집니다! 이는 처음에는 반직관적으로 보일 수 있는데, 위상 이완 오류의 확률이 높으면 위상이 흐트러져야 하는 것 아닐까요? 요점은, 위상 오류가 발생한다는 것을 100% 확신한다면, 위상에 대한 강한 정보를 다시 가지게 된다는 것입니다. 단지 위상이 뒤집혔을 뿐입니다. 이러한 통찰을 바탕으로, 최악의 위상 정보는 위상 오류가 발생할 확률이 50대50일 때에 해당할 것으로 예상할 수 있으며, 실제로 그렇다는 것을 확인하게 됩니다.

결맞지 않은 오류를 기술하는 잡음 채널의 마지막 예는 __파울리 잡음 채널(Pauli noise channel)__입니다. 이 채널은 독립적인 확률을 가진 세 가지 유형의 오류 발생을 기술합니다:

  • 확률 pxp_x로 발생하는 비트 반전 오류(X 오류)
  • 확률 pzp_z로 발생하는 위상 반전 오류(Z 오류)
  • 확률 pyp_y로 발생하는 X와 Z가 결합된 오류(Y 오류) 여기서 모든 jj에 대해 0≤pj≤10\leq p_j \leq 1입니다. 이로부터 오류가 전혀 발생하지 않을 확률은 pI=1−px−py−pzp_I = 1-p_x-p_y-p_z라는 결론이 따라옵니다.

이 채널의 크라우스 연산자는 다음과 같습니다:

A0=pIIA1=pXXA2=pYYA3=pZZ\begin{aligned} A_0 & = \sqrt{p_I}I\\ A_1 & = \sqrt{p_X}X\\ A_2 & = \sqrt{p_Y}Y\\ A_3 & = \sqrt{p_Z}Z \end{aligned}

파울리 노이즈 채널의 경우, 채널 자체를 직접 써 보는 것이 유익합니다:

Φ(ρ)=pIIρI+pXXρX+pYYρY+pZZρZ\Phi(\rho) = p_I I\rho I + p_X X\rho X+p_Y Y \rho Y + p_Z Z \rho Z

이 형태로부터 파울리 노이즈 채널이 각각 확률 pjp_j로 파울리 행렬 PjP_j의 작용에 해당하는 하나 이상의 오류를 구현한다는 것을 알 수 있습니다.

플립 확률의 다양한 조합은 서로 다른 시각화를 만들어냅니다. 여기서는 pX=pY=pZp_X = p_Y = p_Z인 특수한 경우, 즉 탈분극 채널(depolarizing channel)이라고도 불리는 경우를 시각화합니다.

A Bloch sphere with a shaded region shrunken uniformly toward the center.

가간섭 오류 모델링​

양자 채널은 결맞음 오류와 결맞지 않은 오류를 모두 나타낼 수 있지만, 실제로는 주로 결맞지 않은 오류에 사용됩니다. 결맞음 오류는 유니터리 오교정(miscalibration)으로 모델링하거나 분석을 쉽게 하기 위해 확률적 채널로 변환하는 것이 더 낫기 때문입니다. 이 절에서는 결맞음 오류에 더 적합한 접근 방식을 소개하겠습니다.

가간섭 오류는 원치 않는 유니타리 게이트로 모델링될 수 있습니다. 간단한 예로는 정렬이 어긋난 회전이나 과소/과대 회전이 있습니다. 아래 이미지에서는 원하는 XX 축 주위의 회전에 더해 작은 양 ϵ\epsilon만큼의 추가적인 YY 회전으로 정렬이 어긋난 회전을 보여줍니다. 과대 회전은 원하는 XX 회전에 더해 같은 축 주위의 추가적인 회전 XϵX_\epsilon으로 기술됩니다.

Small circuit diagrams showing that a gate error on a rotation could show up as misalignment (as in a slight erroneous rotation about Y when intending to rotate about X) or as over/under rotation (as in an erroneous extra rotation about X).

2큐비트 오류와 음영 라이트 콘​

단일 큐비트 게이트는 고립된 큐비트를 회전시킵니다. 2큐비트 게이트는 두 큐비트에 의존하는 논리를 구현하지만, 어느 큐비트도 직접 측정할 수 없습니다. 따라서 큐비트 사이의 상호작용을 켜야만 합니다. 이 상호작용은 우리가 얽힘을 만들 수 있는 이유이며, 잡음, 크로스토크, 그리고 교정의 어려움 중 상당 부분이 발생하는 지점이기도 합니다. 큐비트 사이의 이러한 상호작용은 또한 오류가 퍼지는 것을 가능하게 합니다. 한 큐비트에 어떤 오류가 있고 그 큐비트가 다른 타깃 큐비트에 대한 제어 큐비트 역할을 한다면, 오류가 타깃으로 전달될 수 있습니다. 이 레슨에서는 2큐비트 게이트가 오류율과 회로 내 오류 전파에 어떤 의미를 갖는지 살펴보겠습니다.

에코드 교차공명 게이트​

서로 다른 하드웨어 아키텍처와 게이트 계열은 이 상호작용을 서로 다른 방식으로 구현합니다. IBM 양자 컴퓨터는 하드웨어 네이티브 에코드 교차공명(ECR) 게이트를 사용하여 CZ나 CX 게이트와 같은 추상적인 2큐비트 게이트를 구현합니다. ECR 게이트는 마이크로파 구동을 사용하여 유효한 ZXZX 상호작용을 생성합니다. CNOT과 같은 관련 게이트는 단일 큐비트 회전을 추가하여 ZXZX로부터 만들어집니다.

서로 다른 큐비트는 서로 다른 공명 주파수(강하게 반응하는 주파수)를 갖습니다. 표준적인 연산은 이 공명 주파수를 사용하여 큐비트의 전이를 유도할 수 있습니다. 하지만 인접한 큐비트 T의 공명 주파수로 큐비트 C를 구동하면 어떤 일이 일어날까요? 인접한 큐비트는 고정된 용량성 또는 공진기 매개 상호작용으로 연결되어 있습니다. 이러한 결합 때문에, 큐비트 C에 대한 구동이 큐비트 T의 해밀토니안으로 "새어 들어갑니다." 이 유효 구동의 세기와 방향은 큐비트 C의 상태(∣0⟩|0\rangle 또는 ∣1⟩|1\rangle)에 따라 달라집니다. 여기서 큐비트 C는 제어이고 큐비트 T는 타깃입니다.

그 결과 제어 큐비트의 상태에 조건화된 유효한 타깃 큐비트 회전이 나타납니다. 수학적으로는:

Heff≈ΩZCXT+기타 항H_{eff} \approx \Omega Z_C X_T +\text{기타 항}

이 ZX 상호작용이 바로 CNOT을 만드는 데 필요한 것입니다. 하지만 다른 항들에는 일부 오류가 포함될 수 있으며, 거의 확실히 큐비트 C와 T 사이의 용량성 결합, 즉 ZZ 항을 포함하고 있을 것입니다.

HCR=Ω ZCXT⏟desired+α ICXT+β ZCIT+γ ICZT+δ ZCZT+…⏟undesired.H_\mathrm{CR} = \underbrace{\Omega \, Z_C X_T}_{\text{desired}} + \underbrace{\alpha\, I_C X_T + \beta\, Z_C I_T + \gamma\, I_C Z_T + \delta\, Z_C Z_T + \dots}_{\text{undesired}}.

이러한 추가 항들을 다음과 같은 방식으로 생각해 볼 수 있습니다:

  • IX = 타깃이 의도치 않게 구동됨

  • ZI = 제어 큐비트가 원치 않는 Z 회전을 얻음

  • IZ = 타깃 큐비트가 원치 않는 Z 회전을 얻음

  • ZZ = 정적인 상태 의존 위상 이동

  • others = 작은 XY, XX, 고차 상호작용

ECR 게이트는 단순히 제어된 회전에 제어 큐비트에 대해 신중하게 선택된 에코 펄스를 더한 것입니다. 이 에코는 ZX 상호작용을 보존하면서 많은 원치 않는 항들의 부호를 뒤집습니다. 이 과정은 IX와 ZI 오류를 상당히 잘 상쇄하며, 때로는 일부 고차 항도 상쇄합니다. 하지만 에코잉은 정적인 ZZ 결합을 상쇄할 수 없습니다. 이는 에코 펄스와 교환(commute)하기 때문입니다. 이 과정에서 상쇄되지 않는 다른 상호작용들도 있습니다: 일부 잔여 비선형성과 관전자 큐비트(spectator-qubit) 효과, 누설(leakage)과 장거리 구동 오염, 그리고 몇 가지 다른 것들 — 하지만 ZZ 항이 특히 중요합니다.

이 과정은 종종 단일 큐비트 게이트보다 한 자릿수(order of magnitude) 더 긴 구동 시간을 필요로 합니다. 더 긴 구동 시간, 해밀토니안에 남아 있는 지속적인 ZZ 항, 그리고 결합의 불완전함이 결합되어 2큐비트 게이트를 게이트 오류의 주된 원인으로 만듭니다. 또한 회로에서 인접하지 않은 큐비트 사이의 상호작용이 필요한 경우, 필요한 SWAP 게이트 역시 당연히 2큐비트 게이트라는 점에 유의하세요. 이것이 표준적인 깊이 관련 지표가 __2큐비트, 트랜스파일된 깊이__인 이유입니다. 우리는 2큐비트 게이트가 게이트 오류를 지배하기 때문에 주로 이에 신경 쓰며, 트랜스파일이 종종 SWAP 게이트의 형태로 많은 추가적인 2큐비트 게이트를 도입하기 때문에 트랜스파일된 회로를 살펴봐야 합니다.

이해도 확인​

우리가 주로 2큐비트 트랜스파일된 깊이에 신경 쓰는 이유를 설명하십시오. 하드웨어 제약 조건과 단일 큐비트 게이트 깊이가 훨씬 더 클 수 있다는 사실을 반드시 고려하십시오.

정답

2큐비트 게이트는 단일 큐비트 게이트보다 훨씬 높은 오류율을 갖습니다. 단일 큐비트 게이트도 완벽하지 않으므로, 단일 큐비트 깊이도 함께 고려하는 것이 유용한 경우가 있을 수 있습니다. 하지만 2큐비트 게이트 깊이가 회로의 오류 거동을 지배하는 경향이 있습니다. 우리는 트랜스파일된 회로를 고려해야 합니다. 현대의 양자 컴퓨터는 모든 큐비트 간 전결합(all-to-all) 연결성을 갖지 않습니다. IBM 양자 컴퓨터는 정사각 격자 또는 "헤비 헥스(heavy hex)" 격자를 사용하며, 이는 큐비트가 단일 2큐비트 게이트로 직접 결합할 수 있는 2, 3, 또는 4개의 가장 가까운 이웃을 갖는다는 것을 의미합니다. 인접하지 않은 다른 큐비트와의 얽힘은 2큐비트 SWAP 게이트를 사용하여 양자 컴퓨터 상에서 정보를 이동시켜야 합니다. 따라서 트랜스파일은 2큐비트 게이트 깊이를 증가시키는 경향이 있습니다. 얽힘이 많은 회로의 경우 이러한 증가는 매우 클 수 있습니다.

음영 라이트 콘​

단일 큐비트가 다른 모든 큐비트와 잘 고립되어 있다고 가정합시다. 그 큐비트의 오류는 다른 어떤 큐비트에도 오류를 일으키지 않을 것입니다. 하지만 큐비트가 다른 큐비트와 상호작용할 때, 오류가 전파될 수 있습니다. 오류가 전파되는 방식은 큐비트가 상호작용하는 방식에 따라 달라집니다. 아래 회로를 생각해 보세요. 회로 다이어그램에서 인접한 큐비트는 양자 칩에서도 인접해 있다고 가정합니다(즉, 설명된 상호작용을 용이하게 하기 위해 다른 큐비트로 정보를 스왑할 필요가 없습니다).

Four circuit diagrams showing how errors can propagate. If a qubit is not entangled with other qubits, an error is confined. Most qubits will be entangled with some others, and thus errors can propagate from one qubit to another.

이렇게 생각해 본 적이 없을 수도 있지만, 이는 일종의 시공간 다이어그램입니다. 양자 회로의 수직축은 공간에 배치된 서로 다른 큐비트를 나타냅니다. 수평축은 일련의 게이트가 적용되는 시간을 나타냅니다. 상대성 이론의 용어를 빌리면, 라이트 콘(light cone)은 인과적 상호작용을 통해 한 점으로부터 도달 가능한 시공간의 영역을 나타냅니다.

위 그림에서는 오류의 유형이 명시되어 있지 않습니다. 일부 오류는 2큐비트 게이트의 논리에 영향을 미치고 다른 오류는 그렇지 않기 때문에, 오류의 유형이 라이트 콘에 영향을 미친다는 것이 밝혀졌습니다. 이는 곧 다시 다루겠습니다. 지금은 노란색 선을 어떤 오류 유형이 확산될 수 있는 경로라고 생각하십시오. 예를 들어 그림의 (a) 부분에서, 큐비트 4의 RZ 게이트에 있는 단일 큐비트 오류는 그 하나의 큐비트에서만 시간상 앞으로 전파될 수 있음을 관찰하십시오. 큐비트 4는 다른 어떤 큐비트와도 얽혀 있지 않기 때문에 다른 큐비트로 퍼질 수 없습니다. 이는 큐비트 4가 이 회로에서 상당히 쓸모없다는 점, 그리고 실제로 전체 회로가 오직 교육적인 목적으로만 만들어졌다는 점을 짚고 넘어갈 좋은 시점입니다.

하지만 큐비트 0의 Z 게이트에서의 오류(반드시 Z 오류일 필요는 없고, 그 위치에서의 어떤 오류든)는 큐비트 0을 제어로, 큐비트 1을 타깃으로 사용하는 마지막 CNOT을 통해 다른 큐비트, 즉 큐비트 1로 전파될 수 있습니다. 이는 (b) 부분에 나타나 있습니다. 예상할 수 있듯이, 회로 앞부분의 오류일수록 더 많은 큐비트에 걸쳐 전파될 기회가 더 자주 생깁니다. (c) 부분은 큐비트 0의 초기 상태 준비에서의 오류가 고립되어 있는 큐비트 4를 제외한 모든 큐비트로 퍼질 수 있음을 보여줍니다.

이 설정은 오류가 시간상 앞으로 전파되어 측정에 어떻게 영향을 미치는지를 보여줍니다. 하지만 역질문도 검토해 볼 수 있습니다: 특정 단일 큐비트 측정에 대해, 회로의 어느 부분이 그 측정에 오류를 기여했을 수 있는가? 이 경우 단순히 측정 또는 관심 있는 다른 지점에서 시작하여 (d) 부분에 나타난 것처럼 얽히는 회로를 따라 (시간상) 회로를 거꾸로 거슬러 올라가면 됩니다. 오류가 발생할 수 있는 몇 개의 무작위로 선택된 지점도 함께 나타나 있습니다.

위 그림에서 오류는 ECR 게이트를 통해 큐비트 사이에 퍼지지만, 비슷한 논의는 다른 2큐비트 게이트에도 적용될 수 있습니다. 이 게이트들은 제어와 타깃을 가집니다. 제어에서의 오류가 게이트의 논리에 영향을 미쳐 타깃에서 오류를 일으킬 수 있다는 것은 명확합니다. 하지만 그 반대 방향은 어떨까요? 타깃에서의 오류가 제어 큐비트로 전파될 수 있을까요? ECR 게이트의 제어와 타깃 사이의 결합은 순수하게 이상적인 ZX 유형만은 아니며, 원치 않는 ZZ 결합도 갖는다는 것을 기억하십시오.

타깃에서의 오류가 ZZ 결합과 교환(commute)한다면, 이는 제어 큐비트로 전파될 수 없습니다. 이는 작동 중인 물리적 메커니즘을 통해 확인할 수 있습니다. 이를 확인하는 빠른 방법은, 오류 EE가 ZZZZ와 교환한다면 결과에 영향을 주지 않고 그 순서를 바꿀 수 있다는 것입니다. 하지만 ZZZZ 결합 직전에 발생하는 EE가 ZZZZ 결합 이후에 작용하는 것과 동일하다면, 이는 제어에 영향을 줄 수 없습니다. 후자의 경우 오류가 시간상 거꾸로 이동해야 하기 때문입니다. 오류가 ZZ 결합과 교환하지 않는다면, 실제로 타깃에서 제어로 다시 전파될 수 있습니다. 따라서 ECR 게이트의 경우, Z 오류는 타깃에서 제어로 전파될 수 없지만, X 또는 Y 오류는 전파될 수 있습니다.

이해도 확인​

위 그림의 (d) 부분에서, 큐비트 0과 1 사이의 수직선을 살펴보십시오. 일부 오류가 그 선을 가로질러 퍼질 수 있다는 것이 맞습니까? 다시 말하지만, 이는 오류 유형에 따라 달라질 수 있으며, 아직 이에 대해 논의하지 않았습니다. 문제는 그 수직선으로 나타난 것처럼 전파될 수 있는 오류가 존재하는가입니다. 설명하십시오.

정답

네, 맞습니다. 측정으로부터 거꾸로 라이트 콘을 그릴 때, 무언가가 타깃에서 제어로 이동한다고 주장하는 것처럼 느껴질 수 있습니다. 하지만 다이어그램의 실제 의미는, 오류가 제어(큐비트 0)에서 타깃(큐비트 1)으로 이동하여 관심 지점에서 오류를 일으킬 수 있었다는 것입니다. 오류 유형에 따라 달라진다는 것이 당신의 직관이라면, 그것은 전적으로 맞습니다. 이는 다음 절에서 부분적으로 다뤄집니다.

위 다이어그램에 있는 회로의 오류 없는 버전으로 시작하여, 큐비트 2에 작용하는 첫 번째 아다마르(Hadamard) 게이트의 오류가 잠재적으로 퍼지는 것을 추적하십시오. 오류가 (a) 위상 플립인 경우와 (b) 비트 플립인 경우, 회로 끝까지 영향을 받을 수 있는 모든 큐비트를 나열하십시오. 힌트: 각 큐비트의 정보가 어떻게 사용되는지 생각해 보십시오.

정답

(a) 큐비트 3이 영향을 받을 수 있으며, 당연히 큐비트 2 자체도 영향을 받을 수 있습니다. 그 외에는 없습니다! 큐비트 0과 1을 나열했다면, 큐비트 2는 큐비트 1과 얽히게 하는 ECR의 타깃이라는 점에 유의하세요. 그 게이트에서 큐비트 1에는 변화가 일어나지 않습니다. (b) 큐비트 0-3이 영향을 받을 수 있습니다. 비트 반전 또는 X형 오류는 ECR 게이트의 ZZ 결합과 교환하지 않으므로 타깃에서 제어로 전파될 수 있습니다.

오류 전파​

이전 절에서는 공식적인 정의를 내리지 않고 오류 전파에 대해 논의했습니다. 이제부터는 다음과 같습니다:

회로 UU의 논리적 페이로드 중 일부보다 먼저 발생하는 오류 EE에 대해, 오류 전파는 UU 이전이 아니라 이후에 적용되었을 때 동일한 잘못된 결과를 재현하는 동등한 연산자 E′E'를 찾는 것을 의미합니다.

An error E propagates through a unitary U as E′=UEU†\boxed{ \text{An error } E \text{ propagates through a unitary } U \text{ as } E' = U E U^\dagger } U E ∣ψ⟩=E′ U ∣ψ⟩\boxed{ U\,E\,|\psi\rangle = E'\,U\,|\psi\rangle }

이전 절의 오류 전파 이미지는 오류가 CNOT 게이트를 가로질러 제어 큐비트에서 타깃 큐비트로 퍼질 수 있음을 시사했습니다. 이것이 언제 참인지 확인하는 한 가지 방법은, 얽힘 이전의 제어 또는 타깃에서의 오류를 고려하고, 그 연산자가 CNOT 게이트와 교환하는지 확인하는 것입니다. 두 연산자가 교환한다면, 역순으로 적용해도 차이가 없으며, 이는 오류가 다른 큐비트에 아무런 영향을 주지 않고 CNOT을 단순히 "지나칠 수" 있음을 의미합니다. 이는 사람들이 오류 전파에 접근하는 가장 일반적인 방법이며, 다음과 같은 규칙을 낳습니다:

제어를 큐비트 0, 타깃을 큐비트 1이라고 합시다. 제어와 타깃 큐비트에서의 X 오류와 Z 오류(XcX_c, ZcZ_c, XtX_t, ZtZ_t)를 각각 고려하십시오. 이 오류들을 CNOT0→1\text{CNOT}_{0\to1} 너머로 옮기면 오류는 다음과 같이 됩니다:

Xc→XcXtZc→ZcXt→XtZt→ZcZt\begin{aligned} X_c &\to X_c X_t\\ Z_c &\to Z_c\\ X_t &\to X_t\\ Z_t &\to Z_c Z_t \end{aligned}

위 내용은 증명 없이 서술한 것입니다. 하지만 이 강의의 저자처럼 슈뢰딩거 그림(Schr"odinger picture)을 선호한다면, 임의의 제어 및 타깃 상태를 적어놓고, 오류를 적용한 다음 CNOT을 적용하여 최종 상태를 살펴볼 수도 있습니다. 그 최종 상태를 오류가 없는 경우와 비교하면, CNOT 이후에 적용되었을 때 오류 상태를 만들어낼 오류 조합이 무엇인지 알 수 있으며, 특히 오류 작용이 한 큐비트에서 다른 큐비트로 퍼졌는지 여부도 확인할 수 있습니다.

제어 초기 상태타깃 초기 상태오류최종 상태CNOT 이후 오류 동등물
α∣0⟩+β∣1⟩\alpha\vert 0\rangle+\beta \vert 1\rangleγ∣0⟩+δ∣1⟩\gamma \vert 0\rangle+\delta \vert 1\rangle없음αγ∣00⟩+αδ∣10⟩+βγ∣11⟩+βδ∣01⟩\alpha\gamma \vert 00\rangle+\alpha\delta \vert 10\rangle + \beta\gamma \vert 11\rangle +\beta\delta \vert 01\rangle해당 없음
α∣0⟩+β∣1⟩\alpha\vert 0\rangle+\beta \vert 1\rangleγ∣0⟩+δ∣1⟩\gamma \vert 0\rangle+\delta \vert 1\rangle제어에 Xαγ∣11⟩+αδ∣01⟩+βγ∣10⟩+βδ∣00⟩\alpha\gamma \vert 11\rangle+\alpha\delta \vert 01\rangle + \beta\gamma \vert 10\rangle +\beta\delta \vert 00\rangleXcXtX_c X_t
α∣0⟩+β∣1⟩\alpha\vert 0\rangle+\beta \vert 1\rangleγ∣0⟩+δ∣1⟩\gamma \vert 0\rangle+\delta \vert 1\rangle제어에 Zαγ∣00⟩+αδ∣10⟩−βγ∣11⟩−βδ∣01⟩\alpha\gamma \vert 00\rangle+\alpha\delta \vert 10\rangle - \beta\gamma \vert 11\rangle -\beta\delta \vert 01\rangleZcZ_c
α∣0⟩+β∣1⟩\alpha\vert 0\rangle+\beta \vert 1\rangleγ∣0⟩+δ∣1⟩\gamma \vert 0\rangle+\delta \vert 1\rangle타깃에 Xαγ∣10⟩+αδ∣00⟩+βγ∣01⟩+βδ∣11⟩\alpha\gamma \vert 10\rangle+\alpha\delta \vert 00\rangle + \beta\gamma \vert 01\rangle +\beta\delta \vert 11\rangleXtX_t
α∣0⟩+β∣1⟩\alpha\vert 0\rangle+\beta \vert 1\rangleγ∣0⟩+δ∣1⟩\gamma \vert 0\rangle+\delta \vert 1\rangle타깃에 Zαγ∣00⟩−αδ∣10⟩+βγ∣11⟩−βδ∣01⟩\alpha\gamma \vert 00\rangle-\alpha\delta \vert 10\rangle + \beta\gamma \vert 11\rangle -\beta\delta \vert 01\rangleZcZtZ_c Z_t

다소 놀랍게도, 타깃에서의 Z 오류는 실제로 제어로 다시 전파되는 오류를 일으킵니다!

짐작할 수 있듯이, 이러한 오류 연산자의 전파를 회로를 통해 앞으로 추적하는 것(또는 동등하게, 측정될 연산자를 거꾸로 전파하는 것)은 복잡합니다. Qiskit에는 이를 용이하게 하는 도구가 있으며, 이는 현대적 워크플로에 관한 6강에서 배우게 됩니다.

Shaded Lightcones라는 Qiskit 애드온이 있습니다. 음영 라이트 콘(shaded lightcones, SLC) 애드온은 파울리 전파(Pauli propagation)를 사용하여 회로의 어느 부분이 실제로 타깃 관측 가능량(observable)에 영향을 미칠 수 있는지 식별함으로써 양자 회로에서의 오류 전파를 분석합니다. 이는 주로 오류 완화를 더 효율적으로 만들기 위해, 특히 확률적 오류 상쇄(probabilistic error cancellation, PEC) 워크플로를 위해 설계되었습니다. 여기서는 이 도구를 간략히만 살펴보고, 향후 강의에서 오류 완화 기법의 맥락에서 더 폭넓게 활용하겠습니다. 이는 파울리 연산자 전파를 사용하여 서로 다른 유형의 오류 전파를 매핑하며, X, Y, Z 유형 오류에 대한 라이트 콘을 생성합니다.

음영 라이트 콘(Shaded lightcone, SLC)은 한 단계 더 나아가, 고전 시뮬레이션을 사용하여 회로 전체에서 오류에 대한 민감도를 더욱 엄격하게 제한합니다. 이는 QPU 시간의 일부를 CPU 시간과 맞바꾸는 것이며, 편향(bias)을 재정규화하는 데 필요한 샘플링 오버헤드를 줄여줍니다. 고정된 컷오프 대신, 회로 내 각각의 잠재적 오류에는 해당 오류에 대한 관측량(observable)의 민감도를 상한으로 제한하는 등급화된 "음영(shade)"이 할당됩니다. 이러한 정교한 특성화를 통해 분산을 줄이면서 PEC를 더 효율적이고 표적화된 방식으로 적용할 수 있으며, 동시에 사용자가 관측량 추정의 편향을 제어 가능하게 조정할 수 있습니다. 자세한 내용은 Lightcone shading for classically accelerated quantum error mitigation을 참조하세요.

여기서는 전체 워크플로를 제시하지 않습니다. 대신, 이 워크플로가 회로를 어떻게 다루는지 도식적으로만 보여드리겠습니다.

A ten-qubit quantum circuit that has been transpiled and has many entangling and rotation layers.

이 워크플로는 회로를 노이즈 동작을 학습하는 데 유용한 "박스(box)"들로 분리합니다.

The same ten-qubit quantum circuit as in the previous figure, but now similar layers have been &quot;boxed&quot;, meaning they have been outlined in a red box.

마지막으로, 연산자 전파(operator propagation)와 노이즈 학습을 사용하여 회로 전체에 걸친 오류 취약성의 음영 맵(shaded map)을 생성합니다.

An error susceptibility map is shown for errors of various types.

출력에서 색상이 지정된 각 박스는 특정 시점의 특정 큐비트에 해당합니다. 가장 어두운(보라색) 박스는 오류가 관심 있는 측정으로 전파될 수 없는 큐비트와 레이어를 나타냅니다. 가장 밝은(노란색) 박스는 오류가 관심 있는 측정에 강한 영향을 미칠 수 있는 큐비트와 레이어에 해당합니다.

각 맵의 오른쪽에 있는 보라색 영역에 주목하세요. 측정과 같은 레이어에 있지만 다른 큐비트에서 발생한 오류는 여기 표시된 회로 연결성을 통해서는 측정에 영향을 줄 수 없습니다. 마찬가지로, 시간상 한 레이어 뒤(왼쪽으로 한 레이어)에서 발생한 오류는 얽힘 레이어의 구조 때문에 다음 단계에서 인접한 큐비트로만 전파될 수 있으며, 이런 식으로 계속됩니다. 따라서 관심 있는 측정에 관여하는 큐비트 수가 상대적으로 적을 때는 오른쪽의 원뿔 모양이 일반적으로 나타납니다.

이해도 확인​

음영 라이트 콘 맵은 트랜스파일(transpilation) 전과 후 중 언제 만드는 것이 더 좋다고 생각하시나요? 그 이유는 무엇인가요?

정답

트랜스파일 이후에 수행해야 합니다. 이러한 서로 다른 맵이 유용하려면, 회로에서 인접한 큐비트가 실제 양자 칩에서도 인접한 큐비트에 대응하도록 보장해야 합니다. 그렇지 않으면 회로 다이어그램에서 인접한 큐비트에 작용하는 것으로 표시된 얽힘 게이트가 SWAP 게이트와 더 복잡한 회로 구조를 필요로 하게 됩니다.