ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Basic of Quantum Computing(1) - 양자컴퓨팅의 단일 큐비트 시스템에 필요한 선형대수학 기초
    양자컴퓨팅/회로 이론 2022. 12. 28. 08:05

    모바일에서 접속할 경우 티스토리 앱이나 모바일 버전 웹 주소로 들어올 경우 수식이 깨지는거 같습니다. 폰에서 수식이 깨질 경우 모바일 버전이 아닌 일반 버전 주소로 접속해 주세요
    들어가며

    안녕하세요! 오늘은 양자컴퓨팅에서 선형대수학이 어떻게 사용되는지에 대한 기본 개념에 대해 이야기 해 보려고 합니다. 양자컴퓨터는 기존 컴퓨터보다 이론적으로 1억배 빠르게 '특정' 연산들을 수행할 수 있다고 소개가 되곤 하는데요. 그 비밀은 바로 기존 0과 1을 한번에 하나씩만 표현할 수 있는 Bit라고 불리우는 계산 단위 대신 0과 1을 동시에 표현할 수 있는 Qubit이라는 단위를 사용하는 것에 있습니다. '0과 1이 동시에 존재 한다.' 물리학자들은 이를 0과 1이 Superposition(중첩) 상태에 있다라고 이야기를 합니다. 중첩과 더불어 양자컴퓨팅을 특별하게 만들어주는 양자역학적 성질인 Entanglement(얽힘) 상태는 하나의 큐비트가 0과 1 중 하나로 '결정'(관측) 되는 동시에 그와 얽힌 다른 큐비트의 상태 역시 결정된다는 특징이 있습니다. 양자컴퓨터는 중첩과 얽힘을 이용하여 기존 컴퓨터로는 풀 수 없던 문제들을 풀어낼 수 있는 것이죠. 현재 미국과 중국을 필두로 양자컴퓨터 개발 경쟁에 불이 붙고 있지만 양자컴퓨터의 Qubit을 물리적으로 구현하는 것은 절대 쉬운 일이 아닙니다. 중첩과 얽힘 현상을 이용해 의미있는 계산을 하기 위해서는 매우 까다로운 물리적 조건을 만족시키는 하드웨어를 제작해야 하죠. Qubit를 물리적으로 구현하는 것은 매우 어렵지만 수학적으로 표현 하는 것은 Linear Algebra(선형대수학)을 이용한다면 간단한 작업이죠. 이번 글에서는 선형대수학의 기본 원리나 개념에 대해 자세히 다루지는 않을 것입니다. 그보단 선형대수를 이용한 양자컴퓨터에서의 큐비트 상태 표현 방법에 대해 초점을 맞출것입니다. 자세한 선형대수학 지식은 다른 블로그나 인터넷 자료를 참고하거나 언젠가(?) 올라올 아기 물개의 Basic of Linear Algebra시리즈를 기대해 주세요.
    해당 글의 내용과 관련 하여 고전컴퓨터에서 양자컴퓨팅을 시뮬레이션 할 수 있는 소프트웨어를 개발했던 내용으로 pycon korea 2022에서 발표를 진행한 경험이 있습니다. 해당 글과 관련이 깊은 영상이니 시청하고 오시는 것도 추천 드립니다. (발표에 사용한 소스코드 주소: https://github.com/remontree/Quself)

    파이콘 2022에서 발표한 넘파이를 이용한 양자컴퓨팅 시뮬레이션 영상입니다.

    큐비트의 표현 방법
    Bit와 Qubit의 가장 큰 차이라 함은 한번에 표현 가능한 정보의 개수 차이일 것입니다. 하나의 Bit로는 한번에 0 또는 1 중 하나의 값만 표현 가능하지만 Qubit의 경우 0과 1을 동시에 표현 할 수 있습니다. n개의 bit는 한번에 1개의 값을 표현한다면 n개의 Qubit으로는 한번에 $2^n$개의 값을 표현 할 수 있다는 뜻이죠.

    Bit가 0 또는 1을 표현할 때는 Scalar로 표현합니다. 쉽게 생각하면 0은 그냥 0, 1은 1로 표현을 한다는 것이죠. 하지만 Qubit는 0또는 1을 표현할 때 Vector을 이용합니다. 특히 0과 1은 각각 Standard Unit Vector $i$와 $j$로 표현합니다. 좀더 직관적으로 표현하면 다음과 같습니다.
    $$0 : \begin{bmatrix}1 \\ 0\end{bmatrix} , 1 : \begin{bmatrix}0 \\ 1\end{bmatrix}$$


    Dirac notation 혹은 Bracket notation(디랙 표기법 혹은 브라켓 표기법)
    양자역학에서 벡터를 표기하는 일종의 약속인 디랙 표기법(브라켓 표기법과 같은 말입니다.)은 물리학자 폴 디랙이 제안한 표기 방법으로 각각 브라와 켓이라는 기호를 사용하고 다음과 같이 표현 합니다.
    $$|v> = \begin{pmatrix}v_1 \\v_2\\v_3\end{pmatrix}$$ $$<v| = \begin{pmatrix}v_1^* & v_2^* & v_3^* \\ \end{pmatrix}$$
    위의 식에서 보는 것과 같이 열 벡터를 $|v>$와 같이 표기하고 이를 '켓'이라고 부릅니다. '브라'는 $<v|$와 같이 표기하며 $(|v>^*)^T$와 같습니다. 즉 켓의 각 원소들의 켤레를 Transpose(전치)시켜준 행 벡터라고 할 수 있습니다. 여기서 켤레를 취해 주는 이유는 양자역학에서 브라와 켓의 원소들은 전부 Complex Number(복소수)이기 때문입니다.

    브라와 켓의 Inner Product(내적)
    브라와 켓은 각각 행벡터와 열벡터 이므로 두 벡터를 내적 할 수 있습니다. $\mathbb{C}^3$에서의 브라u와 켓v이 있다고 할때 두 벡터의 내적은 다음과 같이 표현합니다.
    $$<u|v>=\begin{pmatrix}u_1^*& u_2^* & u_3^* \\\end{pmatrix} \begin{pmatrix}v_1\\v_2\\v_3\end{pmatrix} = u_1^*v_1 + u_2^*v_2 + u_3^*v_3$$

    Orthonormal basis(정규직교기저)의 내적
    $|a>$와 $|b>$가 서로 정규직교기저일 경우 $<a|a> = 1, <b|b> = 1, <a|b> = 0, <b|a> = 0$ 의 결과가 나옵니다. 참고로 자기 자신은 자신과 정규직교기저입니다. 정규직교기저에 대해 깊게 고민하기 보단 여기서는 자기 자신을 내적하면 그 결과가 1이다. 정도만 기억하고 있으면 될 것 같습니다.


    디랙 표기법을 이용한 Qubit 1개의 상태 표현하는 방법
    이제 드디어 Qubit의 상태를 숫자로 표현 할 수 있는 단계에 도착했습니다. Qubit에서 0과 1을 각각 standard unit vector를 이용해 표현한다고 이야기 했었는데요 이를 디랙표기법을 이용하면 0과 1의 상태를 나타내는 벡터를 각각 $|0>, |1>$로 표현 할 수 있습니다.
    $$|0> = \begin{bmatrix}1 \\ 0\end{bmatrix} , |1> = \begin{bmatrix}0 \\ 1\end{bmatrix}$$
    여기서 Qubit의 중요한 특징 중 하나인 Superposition(중첩)을 어떻게 표현해야 하는지에 알아 봅시다. 양자역학에서 두 상태가 중첩되어 있다는 이야기는 좀더 풀어 쓰면 다음과 같이 이야기 할 수 있습니다.

    양자역학에서 두개 이상의 상태는 관측 이전에는 서로 확률적으로 중첩되어 존재 하다가 관측과 동시에 하나의 값으로 결정된다.


    즉, 여러 상태가 관찰자가 관찰 하기 전에는 확률적으로 서로 동시에 존재한다는 이야기 입니다. 예를 들어 a와 b의 상태가 각각 60%와 40%의 확률로 중첩되어 있으면 두 상태가 동시에 존재하다가 관찰자가 a와 b중 어떤 상태인지 '측정'하게 되면 a가 60%확률로 관찰 되고 b가 40%의 확률로 관찰 된다는 이야기가 됩니다. 큐비트에서는 0과 1의 상태가 확률적으로 존재한다고 표현할 수 있을 것입니다. 하나의 Qubit의 상태를 나타내는 벡터를 $|\psi >$로 표현합니다. 기호 $\psi$는 시간에 따른 특정 위치에서 입자가 발견될 확률을 나타내는 파동 함수를 나타내는 기호로 프사이라고 읽습니다. 그리고 $|\psi >$는 $|0>$과 $|1>$의 linear combination(일차결합)으로 표현 할 수 있을 것 입니다. |0>과 |1>의 coefficient를 각각 $\alpha ,\beta$라 한다면 큐비트의 상태는 다음과 같이 표현 할 수 있습니다.
    $$|\psi > = \alpha |0> + \beta |1> = \alpha \begin{pmatrix}1\\0\end{pmatrix}+\beta \begin{pmatrix}0\\1\end{pmatrix} = \begin{pmatrix}\alpha\\\beta \end{pmatrix}$$
    $\alpha$와 $\beta$가 의미하는 바는 무엇일까요? $|\psi >$를 내적하면 그 답이 보입니다. ($|\psi >$의 norm을 구해도 동일한 결과가 나옵니다.)
    $$<\psi|\psi > = \begin{pmatrix}\alpha ^* & \beta ^*\\\end{pmatrix}\begin{pmatrix}\alpha\\\beta \end{pmatrix} = \alpha ^*\alpha +\beta ^*\beta = |\alpha|^2 + |\beta|^2 = 1$$
    |0>과 |1>의 coefficient $\alpha$와 $\beta$를 각각 절댓값을 취한 후 제곱하여 더해주니 값이 1이 나왔다는 점에 주목해 봅시다. 어떤 값들의 합이 1이라고 한다면 우리는 그것을 확률로써 해석할 수 있지 않을까요? 눈치채신 분들도 있겠지만 네 맞습니다. 저희는 드디어 $\alpha$와 $\beta$는 각각 하나의 Qubit에서 0의 상태와 1의 상태가 나올 확률과 관련있다는 사실을 알아낸 것입니다. 이것을 보른의 규칙이라고 합니다.

    보른의 규칙
    $|\psi > = \alpha |0> + \beta |1>$에 대해 $|\alpha|^2+|\beta|^2 = 1$


    Bloch Sphere(블로흐 구)

    블로흐구

    양자 컴퓨팅에 관심이 있고 Qubit이 어떻게 작동하는지 관심이 있다면 위 그림을 한번씩 보았을 것입니다. 이 그림은 하나의 Qubit에 대한 상태를 구의 형태로 표현한 것으로 Bloch Spherer(블로흐구)라고 부릅니다. 이 구는 반지름이 1인 구로 $|\psi >$ 벡터가 가르키고 있는 곳이 현재 Qubit의 양자 상태입니다. 그림에서 보면 $\Theta$와 $\Phi $ 라는 변수가 있는데 해당 값 만큼 |0>의 벡터를 회전 시키면 현재의 양자 상태를 나타내는 벡터 $|\psi >$를 표현 할 수 있습니다. 그럼 저 $\Theta$와 $\Phi $ 값은 어떻게 나오는 것일까요? 사실 양자 상태 $|\psi >$는 몇몇 수학적 테크닉을 통해 다음과 같이 표현 할 수 있습니다.
    $$|\psi > = \alpha |0> + \beta |1> = cos\frac{\Theta }{2}|0> + sin\frac{\Theta }{2}e^{i\Phi }|1>$$
    $\Theta$와 $\Phi $는 바로 이 식에서 나온 값 들인 것입니다. 위 식이 유도 되는 과정은 Euler Formula(오일러 공식)Polar Coordinate(극좌표)를 이용해 유도 할 수 있습니다. 유도 과정이 조금 귀찮으니 증명은 관심 있는 사람만 읽어도 좋을 것 같습니다.

    Proof
    $|\psi > = \alpha |0> + \beta |1>$ 에서 $\alpha$ 와 $\beta$는 복소수입니다. 복소수 $\alpha$의 실수부와 허수부를 극좌표와 오일러공식을 이용해 나타내면 $\alpha$ = $r_a cos\Phi_a$ + $i r_a sin \Phi_a$ = $r_a e^{i \Phi_a}$이고 $\beta$도 마찬가지로 $\beta$ = $r_b cos\Phi_b$ + $i r_b sin \Phi_b$ = $r_b e^{i \Phi_b}$로 나타낼 수 있습니다.
    즉 $|\psi > = \alpha |0> + \beta |1>$ = $r_a e^{i \Phi_a}|0>+r_b e^{i \Phi_b}|1>$ 입니다. $|\psi >$에 $1\cdot e^{-i\Phi _a}$를 곱하게 되면 $r_a|0> + r_b e^{\Phi_b-\Phi_a}|1>$을 얻을 수 있습니다. $\Phi_b-\Phi_a$를 $\Phi$라 하면 $
    r_a|0> + r_b e^{\Phi}|1>$입니다. $r_a$와 $r_b$의 관계를 피타고라스 정리를 이용해 풀게 되면 $|\psi > = cos\frac{\Theta }{2}|0> + sin\frac{\Theta }{2}e^{i\Phi }|1>$ 이 최종적으로 증명 됩니다.


    Quantum Gates
    우리가 큐비트 하나의 양자 상태를 벡터로 표현하고 그것을 블로흐구를 통해 시각화도 해 보았습니만 이를 가지고 "계산"이라는 것을 하려면 우리가 원하는 방향으로 양자 상태를 나타내는 벡터를 움직일 수 있어야 할 것입니다.

    위 사진 처럼 0을 나타내던 상태를 1로 바꾸고자 합니다. 그리고 우리는 양자 상태가 벡터로 표현되는 것을 알고 있습니다. 우리는 행렬을 이용하여 벡터의 크기와 방향을 바꿀 수 있다는 것을 알고 있습니다. Linear Transformation(선형변환)을 이용하는 것이지요.

    양자 상태를 변환 시키는 행렬을 Quantum Gate 혹은 Operator라고 합니다. 단일 Qubit (Qubit 1개)의 상태를 변환 시키는데 사용되는 양자 게이트는 모두 2x2 행렬의 형태를 가지고 있습니다. 그 중 중첩을 만드는데 매우 중요한 역할을 하는 Hadamard Gate(이하 H게이트) 에 대해 소개하겠습니다.
    H게이트는 다음과 같은 형태를 띄고 있습니다.
    $$H = \frac{1}{\sqrt{2}}\begin{pmatrix}1& 1 \\1& -1\\\end{pmatrix}$$
    이를 |0>에 곱하면 다음과 같은 일이 생깁니다.
    $$\frac{1}{\sqrt{2}}\begin{pmatrix}1& 1 \\1& -1\\\end{pmatrix}\begin{pmatrix}1 \\0\end{pmatrix} = \begin{pmatrix}
    \frac{1}{\sqrt{2}} \\\frac{1}{\sqrt{2}}\end{pmatrix} = \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\0\end{pmatrix}+\frac{1}{\sqrt{2}}\begin{pmatrix}0 \\1\end{pmatrix}$$

    $\frac{1}{\sqrt{2}}$의 절댓값의 제곱은 $\frac{1}{2}$이므로 |0>에 H게이트를 적용하면 0과 1의 상태가 50%의 확률로 중첩된 상태를 만들 수 있는 것입니다.
    이 외에도 다양한 단일 양자 게이트들이 존재하며 이 외에도 여러개의 Qubit에 적용할 수 있는 다중 양자 게이트들도 존재 합니다. 다중 Qubit 시스템에 대해서는 다음에 자세히 다루겠습니다.

    다양한 양자 게이트들

    위 사진은 다양한 양자 게이트들의 종류를 보여주고 있으며 어떻게 표시하는지 나타내고 있습니다. 보시는 사진 처럼 양자 게이트들을 이용해 양자 회로를 작성 할 수 있으며 이 회로를 적절히 작성함으로써 양자 알고리즘 등을 수행할 수 있습니다. 단일 Qubit에서 양자 회로는 다음과 같이 그릴 수 있습니다.

    이 회로는 $\psi$의 상태를 지닌 Qubit에 순서대로 x,y,h게이트를 적용하라는 의미로 해석이 가능합니다.


    마무리하며
    이번 글에서는 하나의 Qubit의 연산에 필요한 여러 수학적 기초, 특히 선형대수적 기초에 대해 다루어보았습니다. 다음 글에서는 2개 이상의 Qubit 시스템 계산에 필요한 지식 배경에 대해 소개하겠습니다. 감사합니다.

    댓글

Designed by Tistory.