양자컴퓨팅 (Quantum Computing)
편집하기 (부분)
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
= 게이트 기반 양자 컴퓨터 (Gate-based Quantum Computer) = == 양자 게이트 (Quantum Gate) 개요 == 양자 컴퓨팅을 할 때 크게 두 가지 방향이 있다. 첫 번째 방식은 [[양자 시스템]]을 초기화 시킨 다음 해밀토니안을 제어를 해서 원하는 문제의 답을 높은 확률로 줄 수 있는 [[양자 상태]]를 만드는 것이다. 이 때 사용하는 양자 상태는 0 또는 1 상태만 사용하는 것이 아니고, 해밀토니안이 연속적으로 변하기 때문에 본질적으로 [[양자 정보]]는 아날로그이다. 이러한 방식을 아날로그 양자 컴퓨팅이라 하고 단열 양자 컴퓨팅, [[양자 어닐링]] 등을 포함한다. 두 번째 방식은 오늘날의 컴퓨터 에서의 접근 방법처럼 문제를 가장 기초적인 연산인 게이트 단위로 나눠서 해결하는 것이다. 이러한 방식은 게이트 기반 양자 컴퓨팅이라 불린다. [[File:기술백서_전체수정_6차_10.jpg|thumb|300px| 하나의 큐비트의 양자 상태를 Bloch sphere에 표현한 예시. 참고문헌 <ref name=NASEM>National Academies of Sciences, Engineering, and Medicine, ''Quantum computing: Progress and prospects''. (The National Academies Press, 2019). doi:[https://doi.org/10.17226/25196 10.17226/25196].</ref>의 그림을 재구성함. ]] 기존 컴퓨터에서는 반도체 소자가 증폭기 및 스위치 역할을 할 수 있고, 반도체 제작 기술이 발달하면서<ref>https://ko.wikipedia.org/wiki/집적_회로</ref>, 하나의 집적 회로에 수 억 개의 게이트를 넣을 수 있게 되었다. 각각의 게이트의 출력들은 0 또는 1의 값을 나타내는 전기 신호로 전선을 통해 다른 게이트의 입력으로 들어간다. 게이트를 공정을 통해 만들 때의 오차, 칩 안에서 한 부분이 다른 부분들로부터 받는 영향 등으로 신호에 잡음이 생기게 되는데, 디지털 논리 게이트는 이러한 잡음이 있더라도 게이트의 논리 연산에는 영향을 받지 않을 정도로 잡음에 둔감하고, 전기 신호가 많은 수의 게이트를 통과하더라도 실제 출력 결과의 논리식은 의도한 것과 같도록 오류 정정을 할 수가 있다. 따라서 이 경우 신호를 여러 게이트들로 계속 전달시키는 것이 가능하다. 반면에 [[양자 신호]]는 아날로그 신호로 잡음에 민감하기 때문에 기존 컴퓨터 칩을 설계할 때와는 다른 방식을 사용한다. 설계를 할 때 크게 고려를 하는 부분은 양자 신호에 가해지는 잡음을 최소화하는 것이다. 따라서 일반적으로 양자 신호를 게이트에 통과시키며 전달하기보다는 양자 정보를 가지는 [[큐비트]]를 두고 큐비트의 양자 상태를 의도한대로 변화시키도록 시스템을 설계한다. 기존 컴퓨터에서는 0과 1을 이용해 정보를 나타내기 때문에 게이트 연산을 표현하기 위해서 논리 게이트 추상화를 사용했지만 양자 컴퓨터에서 사용하는 양자 상태는 0 또는 1 하나로 나타내는 상태가 아니기 때문에 게이트 연산을 나타내기 위해서도 다른 추상화를 사용한다. 하나의 양자 게이트는 레이저와 전자기장 같은 물리적 변화의 적용을 통해 하나 또는 여러 개의 큐비트의 해밀토니안을 특정 시간만큼 바꾸어 원하는 양자 상태의 변환을 만드는 것으로 구현된다. 이러한 기초적인 단계의 연산은 기존 컴퓨터의 논리 게이트에 대응되기 때문에 이러한 방식을 사용한 양자 컴퓨터를 디지털 양자 컴퓨터라고 부른다. 양자 게이트는 양자 역학의 법칙을 따른다. 첫 번째로 양자 게이트는 에너지를 방출하지 않는다. 이것은 시스템에서 외부로 열이 빠져나가지 않는다는 것을 의미하고, 양자 상태가 외부의 영향으로 [[결맞음]]을 잃지 않는다는 것을 말한다. 이러한 경우 하나의 입력 양자 상태에 양자 게이트를 적용하여 출력된 양자 상태를 얻었을 때, 반대로 출력된 양자 상태에 반대의 양자 게이트를 적용해 기존의 입력한 양자 상태를 얻을 수 있고, 이를 가역 게이트(reversible gate)라 한다. 두 번째로 연산을 하는 동안 가능한 양자 상태들의 진폭의 크기의 제곱의 합은 1이다. $$n$$개의 큐비트의 양자 상태를 $$2^{n}$$ 차원의 복소수 벡터로 나타내면 크기가 1인 벡터가 된다. 모든 양자 게이트는 상태 벡터의 크기를 1로 보존하면서 다른 상태의 벡터로 회전시키는 연산이다. 큐비트의 수가 증가할수록 차원의 크기는 지수적으로 증가하지만 벡터의 크기는 여전히 1이다. 벡터의 크기를 보존하며 변화시키는 연산을 $$2^{n} \times 2^{n}$$ 크기의 행렬로 표현한 것을 유니타리(unitary) 행렬이라 한다. 기존의 논리 게이트에서 구현하는 것처럼 양자 게이트를 구현할 때, 많은 수의 입력을 한꺼번에 받는 게이트를 만드는 것 대신 적은 수의 입력을 간단한 게이트들을 여러개 적절히 구성하여 최종적으로 많은 수의 입력을 받는 게이트를 구현한다. 일반적으로 최소 단위로 사용하는 양자 게이트의 입력 큐비트 수는 세 개 이하이다. 그 중 예를 하나 들면 하다마드 게이트(Hadamard gate)는 |0⟩ 상태를 입력으로 받아서 $$\frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle$$을 출력하고 |1⟩ 상태를 입력으로 받아서 $$\frac{1}{\sqrt{2}}\left| 0 \right\rangle - \frac{1}{\sqrt{2}}|1\rangle$$을 출력한다. 2-큐비트 CNOT 게이트는 XOR 논리 연산을 한다. T 게이트, Hadamard 게이트, CNOT 게이트 만을 이용해서 다른 모든 유니타리(unitary) 게이트를 만들 수 있는데 이러한 게이트 조합을 범용(universal) 게이트라 한다. 양자 게이트는 가역(reversible) 연산이고 유니타리(unitary) 행렬로 나타낼 수 있는데 반해, 일반적인 양자 상태 측정은 원래의 양자 상태를 붕괴(collapse)시키기 때문에 가역적 작용이 아니다. $$n$$개의 큐비트의 양자 상태는 $$2^{n} $$차원의 양자 상태이므로 이를 측정하면 $$n$$개의 비트를 얻는다.<ref name=NASEM /> [[File:기술백서_전체수정_6차_11.jpg|none|thumb|800px|자주 사용되는 양자 게이트. 참고문헌 <ref>https://en.wikipedia.org/wiki/Quantum_logic_gate</ref>의 그림을 재구성함. |center]] == 양자 오류 정정 (Quantum Error Correction) == === 개요 === [[File:기술백서 전체수정 12.jpg|thumb|200px|Transmon 큐비트를 이용한 양자 오류 정정 회로. 참고문헌 <ref name=Kelly />의 그림을 재구성함. ]] [[양자 컴퓨터]]를 이용한 의미 있는 연산을 수행하기 위해서는 연산 과정 도중에 [[큐비트]]의 상태가 일정하게 유지되어야 한다. 하지만 큐비트의 [[양자 상태]]는 주변 환경에서 발생한 열이나 잡음에 취약하기 때문에 쉽게 변하며, 이러한 오류를 정정하기 위한 기술이 추가적으로 필요하다. 이러한 오류를 해결하기 위해 고전 컴퓨터의 경우 RAID 시스템과 같이 저장된 정보를 여럿 복제하여 함께 저장하는 방식을 택하고 있으며, 오류가 발생했을 때 정보의 복사본들을 비교하여 오류를 찾아내고 정정할 수 있다. 하지만 큐비트의 양자 상태는 복제 불가능성 정리(no-cloning theorem)에 의해 동일한 여러 개의 상태로 복제할 수 없으며, 오류 확인을 위해 양자 상태를 측정할 경우 원래의 상태가 붕괴된다.<ref name=Nielsen>M. A. Nielsen, & I. L. Chuang, Quantum computation and quantum information (Cambridge University Press, 2002)</ref> 따라서 이러한 근본적 한계로 인해 고전 오류 정정 방식과는 근본적으로 다른 접근이 필요하다. 최초의 양자 오류 정정 기술인 Shor code<ref name=Shor>Peter W. Shor, Scheme for reducing decoherence in quantum computer memory, Physical Review A <b>52</b>, R2493(R) (1995). doi:[https://doi.org/10.1103/PhysRevA.52.R2493 10.1103/PhysRevA.52.R2493].</ref> 이후로 Steane code<ref name=Steane>Andrew M. Steane, Error correcting codes in quantum theory, Physical Review Letters <b>77</b>, 793 (1996). doi:[https://doi.org/10.1103/PhysRevLett.77.793 10.1103/PhysRevLett.77.793].</ref>, Stabilizer code<ref name=Gottesman>D. Gottesman, Stabilizer codes and quantum error correction, [https://arxiv.org/abs/quant-ph/9705052 arXiv:quant-ph/9705052] (1997).</ref><ref name=Kelly>J. Kelly ''et al.'', State preservation by repetitive error detection in a superconducting quantum circuit, Nature <b> 519</b>, 66 (2015). doi:[https://doi.org/10.1038/nature14270 10.1038/nature14270].</ref> 등 다양한 양자 오류 정정 기술들이 제안되었으며 현재에도 Surface code<ref name=Floler>A. G. Fowler, M. Mariantoni, J. M. Martinis & A. N. Cleland, Surface codes: Towards practical large-scale quantum computation, Physical Review A <b>86</b>, 032324 (2013). doi:[https://doi.org/10.1103/PhysRevA.86.032324 10.1103/PhysRevA.86.032324].</ref>를 비롯한 다양한 기술들이 활발히 연구되고 있다. 본 내용에서는 양자 오류 정정 기술의 가장 기초적인 형태인 Shor code에 초점을 맞추어 기술하였다. === 3-큐비트 비트 플립 코드 (3-qubit bit flip code) === 3-큐비트 비트 플립 코드(3-qubit bit flip code)는 한 큐비트의 비트가 뒤집히는 오류를 정정하기 위하여 두 개의 보조 큐비트를 추가적으로 활용하는 오류 정정 코드이다. 고전 비트 플립 오류와 유사하나 큐비트의 상태를 복제하는 것이 불가능하므로 대신 큐비트들 간의 [[양자 얽힘]]을 활용하여 오류를 정정한다. 한 큐비트의 비트가 뒤집히는 오류를 정정하기 위해서 큐비트의 초기 상태가 $$\left| \psi \right\rangle= \alpha\left| 0 \right\rangle + \beta|1\rangle$$일 때, $$\left| 0 \right\rangle$$ 상태로 초기화된 두 큐비트를 준비한다. 세 큐비트들이 처음 두 개의 CNOT 게이트들을 통과하게 되면 모두 양자 얽힘이 있게 되며 세 큐비트의 상태는 다음과 같은 [[GHZ 상태]]로 표현된다. [[File:기술백서 전체수정 13.jpg|thumb|300px|3-큐비트 비트 플립 코드의 회로도. 참고문헌 <ref name=wikipedia>https://en.wikipedia.org/wiki/Quantum_error_correction</ref>의 그림을 재구성함. ]] \[\left| \psi \right\rangle_{\text{tot}}= \alpha\left| 000 \right\rangle + \beta|111\rangle\] 만약 첫 번째 큐비트가 오류로 인해 뒤집혔다고 가정하면 오류가 발생한 후 세 큐비트의 상태는 다음과 같다. \[\left| \psi \right\rangle_{\text{error}}= \alpha\left| 100 \right\rangle + \beta|011\rangle\] 이후 오류를 정정하기 위한 두 개의 CNOT 게이트와 Toffoli 게이트를 지나게 되면 세 큐비트의 상태는 얽힘이 없는 곱 상태(product state)로 나타나게 된다. \[\left| \psi \right\rangle_{\text{tot}}= (\alpha\left| 0 \right\rangle + \beta|1\rangle) \otimes |1\rangle \otimes |1\rangle\] 하지만 오류 정정을 위해 추가한 두 큐비트에는 관심이 없기 때문에 무시할 수 있고, 오류가 발생한 큐비트는 원래의 상태로 다시 돌아옴을 확인할 수 있다. 두 번째, 세 번째 큐비트가 오류로 뒤집힌 경우에도 마찬가지로 오류가 정정된다. 이와 같이 큐비트의 상태를 붕괴시키지 않고도 [[양자 게이트]]들을 활용하여 오류를 정정할 수 있다. 하지만 3-큐비트 비트 플립 코드에서 만약 두 개 이상의 큐비트가 오류로 인해 뒤집힐 경우 오류를 정정하는 것이 불가능하며, 이러한 경우의 오류를 해결하기 위해서는 더 많은 보조 큐비트가 필요하다. === 3-큐비트 위상 플립 코드 (3-qubit phase flip code) === [[File:기술백서_전체수정_14.jpg|thumb|300px|3-큐비트 위상 플립 코드의 회로도. 참고문헌 <ref name=wikipedia />의 그림을 재구성함. ]] 3-큐비트 위상 플립 코드(3-qubit phase flip code)는 한 큐비트의 위상이 바뀌는 오류를 정정하기 위하여 두 개의 보조 큐비트를 추가적으로 활용하는 오류 정정 코드이다. 기본적으로 [[3-큐비트 비트 플립 코드]]와 기본적인 원리는 동일하며 다만 큐비트의 기저를 하다마드 기저(Hadamard basis)로 바꾼 후 오류를 정정한다. 한 큐비트의 위상이 뒤집히는 오류를 정정하기 위하여 큐비트의 초기 상태가 $$\left| \psi \right\rangle= \alpha\left| 0 \right\rangle + \beta|1\rangle$$일 때, $$\left| 0 \right\rangle$$ 상태로 초기화된 두 큐비트를 준비한다. 세 큐비트들이 처음 두 개의 CNOT 게이트와 하다마드 게이트를 통과하게 되면 큐비트의 상태는 다음과 같이 하다마드 기저에서 얽힘이 있는 상태로 표현된다. \[\left| \psi \right\rangle_{\text{tot}}= \alpha\left| + + + \right\rangle + \beta| - - - \rangle\] \[| + \rangle= \frac{1}{\sqrt{2}}(\left| 0 \right\rangle + |1\rangle), | - \rangle =\frac{1}{\sqrt{2}}(\left| 0 \right\rangle - |1\rangle)\] 만약 첫 번째 큐비트의 위상이 오류로 인해 뒤집혔다고 가정하면 오류가 발생한 후 세 큐비트의 상태는 다음과 같다. \[\left| \psi \right\rangle_{\text{error}}= \alpha\left| - + + \right\rangle + \beta| + - - \rangle\] 이후 오류를 정정하기 위해 Hadamard 게이트, 두 개의 CNOT 게이트와 Toffoli 게이트를 지나게 되면 세 큐비트의 상태는 얽힘이 없는 곱 상태로 나타나게 된다. \[\left| \psi \right\rangle_{\text{tot}}= (\alpha\left| 0 \right\rangle + \beta|1\rangle) \otimes |1\rangle \otimes |1\rangle\] 두 번째, 세 번째 큐비트가 오류로 뒤집힌 경우에도 마찬가지로 오류가 정정된다. 근본적으로 하다마드 게이트를 통해 큐비트의 기저만 바꾸어 준 것이기 때문에 모든 성질이 [[3-큐비트 비트 플립 코드]]와 동일하다. 3-큐비트 위상 플립 코드도 마찬가지로 두 개 이상의 큐비트에 오류가 있을 경우 오류를 정정하는 것이 불가능하며, 이러한 경우의 오류를 해결하기 위해서는 더 많은 보조 큐비트가 필요하다. === Shor 코드 === Shor 코드는 한 큐비트의 오류를 정정하기 위하여 여덟 개의 보조 큐비트를 추가적으로 활용하는 오류 정정 코드이며, 2015년 Peter Shor<ref name=Shor />에 의해 최초로 소개되었다. Shor 코드는 [[3-큐비트 비트 플립 코드]]와 [[3-큐비트 위상 플립 코드]]가 합쳐져 있는 형태로 파울리 행렬(Pauli matrix)의 형태로 표현되는 일반적인 단일 큐비트 오류를 정정할 수 있다. Shor 코드에서는 오류를 보정하고자 하는 큐비트와 $$\left| 0 \right\rangle$$ 상태로 초기화된 여덟 개의 큐비트를 추가적으로 준비한다. 아홉 개의 큐비트는 양자 얽힘이 있는 상태에 따라 각각 세 그룹으로 나뉜다. 이 때 첫 번째, 네 번째, 일곱 번째 큐비트는 원래 큐비트의 위상 오류 보정을 위해 사용되며, 연속되는 큐비트 세 개씩 묶인 각 세 그룹은 해당하는 큐비트의 비트 오류 보정을 위해 사용된다. [[File:기술백서_전체수정_15.jpg|center|thumb|500px|Shor 코드의 양자 회로도. 참고문헌 <ref name=wikipedia />의 그림을 재구성함. ]] === 게이트 충실도 (Gate Fidelity) === 현재 성능면에서 대표적인 시스템으로 꼽을 수 있는 [[이온 트랩]]의 경우, 순수하게 게이트 충실도 성능 측면에서는 미국 NIST에서 마이크로파 기반 단일 큐비트 게이트의 충실도 99.9999%를 얻었고, 레이저 기반 [[2-큐비트 게이트]] 충실도 99.92%를 얻은 바 있다.<ref name=Gaebler>J. P. Gaebler ''et al.'', High-fidelity universal gate set for Be 9+ ion qubits, Physical Review Letters <b>117</b>, 060505 (2016). doi:[https://doi.org/10.1103/PhysRevLett.117.060505 10.1103/PhysRevLett.117.060505].</ref> 이후 실제 양자컴퓨터 개발을 위한 시스템에서 벤치마킹으로 얻은 충실도의 경우, IonQ에서 개발 중인 이온 트랩 기반 11-큐비트 양자 컴퓨터가 대표적인데, 이 시스템에서는 단일 큐비트 게이트의 충실도는 평균 99.5%, 2-큐비트 게이트 충실도는 평균 97.5%로 나타났다.<ref name=Wright>K. Wright ''et al.'', Benchmarking an 11-qubit quantum computer, Nature Communications <b>10</b>, 5464 (2019). doi:[https://doi.org/10.1038/s41467-019-13534-2 10.1038/s41467-019-13534-2].</ref> 한편 확장성 측면에서 주목을 받고 있는 [[초전도 큐비트]]의 경우, 2019년 구글이 양자 컴퓨터 [[시카모어|시카모어(Sycamore)]]를 이용하여 유사 무작위 양자회로(pseudo-random quantum circuit)에서의 [[양자 우위]]를 보이는 실험에서 게이트 충실도를 발표하였는데, 단일 게이트를 각각 따로 할 때(isolated)인 경우 단일 큐비트 게이트에 대해 0.15%, 2-큐비트 게이트에 대해 0.36%의 오류율을 얻었고, 여러 개의 게이트를 같이 하는 경우(simultaneous)에는 각각 0.16%, 0.62%의 오류율을 얻었다고 보고했다.<ref name=Arute>F. Arute ''et al.'', Quantum supremacy using a programmable superconducting processor, Nature <b>574</b>, 505 (2019). doi:[https://doi.org/10.1038/s41586-019-1666-5 10.1038/s41586-019-1666-5].</ref> 양자 컴퓨터가 실용화되기 위해서는 수많은 게이트들을 적용했을 때에도 신뢰할 수 있을만한 결과값이 나와야 하고, 이를 위해서는 게이트 충실도가 현재보다 더 100%에 가까울 필요가 있으므로 게이트 충실도를 향상시키는 것은 여전히 하드웨어 개발에 있어서 중요한 요소로 다루어지고 있다. [[File:기술백서 전체수정_74.jpg|center|thumb|730px|IonQ의 이온 트랩 기반 양자 컴퓨팅 시스템의 2-큐비트 게이트 충실도를 각 큐비트 조합에 대해 나타낸 것. 참고문헌 <ref name=Wright>K. Wright ''et al.'', Benchmarking an 11-qubit quantum computer, Nature Communications <b>10</b>, 5464 (2019). doi:[https://doi.org/10.1038/s41467-019-13534-2 10.1038/s41467-019-13534-2].</ref>의 그림을 재구성함. ]] [[분류:게이트 기반 양자 컴퓨팅 | ]]
요약:
한국양자정보학회 위키에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
한국양자정보학회 위키:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
계정 만들기
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보