양자 회로에 데이터 불러오기

Hyunggyu Min
Korea Quantum Computing
9 min readMar 9, 2023

이번 글은 양자 컴퓨팅을 활용해서 데이터를 처리하기 위한 가장 첫번째 단계인 data encoding 단계에 대한 내용입니다. 이 글은 상당히 기술적인 글로, 양자 컴퓨팅에서 등장하는 기본적인 개념에 대해서 익숙해지셔야 효과적으로 이해하실 수 있을 것 같아요. [링크]의 글을 참고하시면 좋을 것 같네요.

양자 컴퓨팅은 큐빗에 게이트를 적용시켜 그 결과를 확인(측정)함으로써 여러가지 계산을 할 수 있습니다.

결국 양자 알고리즘을 짠다는 것은 큐빗들의 경로에 어떤 게이트를 어떻게 배치할 지에 대한 설계도, 즉 양자 회로를 구성하는 것이라고 말할 수 있죠.

이러한 양자 알고리즘 중에서는 특별한 인풋 데이터 없이, 양자 simulation을 통해 결과를 예측하는 알고리즘도 존재하지만, 실제 데이터를 양자 알고리즘의 인풋으로 넣고, 계산 결과를 아웃풋으로 반환하는 데이터 분석 모형(혹은 데이터 분석기)으로서의 양자 알고리즘도 존재합니다. 이렇게 양자 알고리즘이 어떤 함수의 역할을 하기 위해서는 데이터 인풋을 양자회로 안에 집어넣는것이 필수적이죠. 이를 Data Encoding 혹은 State Preparation이라고 합니다.

이러한 경우, 양자 알고리즘을 대략적으로 표현한다면 아래의 그림과 같이 표현할 수 있는데요. 양자 알고리즘은 Data encoding — 큐빗 조작 (Qubit manipulation) — Measure의 3단계로 구분된다고 할 수 있습니다.

이번 포스팅에서는 양자 데이터 사이언스에서 사용하는 여러가지 데이터 인코딩 방법을 설명하려고 합니다.

1. Basis Encoding

첫번째는 베이시스 인코딩 (Basis encoding) 기법 입니다. 입력하고자 하는 데이터가 총 2의 k 제곱개의 이항 범주형(Binary) 특성(feature) 혹은 변수를 가지고 있는 데이터라고 생각해봅시다. 예를 들어 테이블로 표현하면 아래와 같이 쓸 수 있습니다.

베이시스 인코딩 기법은 이 각각의 범주형 변수를 베이시스에 담아서 표현하는 기법입니다.

자세히 살펴보시면 1011은 반복이 되고 있습니다. 따라서 이들은 다른 함수들에 비해서 가중치를 2배로 가집니다. 위의 인코딩 기법을 일반화하면 아래와 같이 쓸 수 있습니다.

결과적으로 베이시스 인코딩 기법은 주어진 데이터를 요약(aggregate)해서 빈도 (빈도를 전체 데이터의 개수로 나눠주면, 확률분포가 됩니다.)를 구한 뒤에 데이터를 큐빗에 인코딩 하는 기법이라고 말할 수 있습니다. 하나의 변수를 여러개의 큐빗을 사용해서 표현함으로써, 높은 cardinality를 가지는 범주형 변수를 표현할 수도 있고, 이를 좀더 확장하면, 연속형 변수를 근사해서 표현할 수도 있습니다.

이렇 듯 베이시스 인코딩은 요약된 데이터를 한번에 인코딩 하는 기법인 반면, 앞으로 설명할 데이터 인코딩 기법들은 단일 샘플을 인코딩하는 방법입니다.

2. Amplitude Encoding

Amplitude Encoding 기법은 벡터 형태의 단일 샘플을 그대로 인코딩 하는 기법입니다. 예를 들어 아래와 같은 데이터가 있다고 가정해봅시다.

이러면 단일 샘플은 x = [25,67,180,3]’와 같이 벡터로 표기할 수 있습니다. 우선 원 데이터인 x¹을 자신의 norm으로 나누어서 표준화를 해줘서 벡터의 모든 원소가 0과 1 사이의 값을 갖도록 합니다. 큐빗의 amplitude가 0과 1 사이의 값을 가지는 점에 착안하여, 이 값들을 각 state의 amplitude로 사용합니다.

만약 피쳐의 개수가 2의 k 제곱개라면 총 k개의 큐빗을 필요로 합니다. 이때 양자컴퓨터는 한번에 하나의 샘플을 처리하기 때문에 f(xi) = yi와 같이 함수의 형태의 알고리즘을 만들때 적합합니다.

양자 컴퓨터에 데이터를 인코딩 시킬때는 회전(Rotation) 게이트를 주로 사용합니다. 예를 들어 Ry(t) 게이트는 다음과 같이 작용합니다.

만약에 2개의 범주를 가지는 이항 변수 x를 양자회로에 인코딩할 때, t값으로 arc cos (xi1)을 대입하면, 해당 큐빗의 amplitude를 통해 xi 값을 인코딩할 수 있습니다. 최종 큐빗의 상태는 다음과 같습니다.

위에서 설명한 베이시스 인코딩과 Amplitude 인코딩은 모두 이러한 프로세스를 이용해서 진행합니다. 그런데 이를 집어넣기 위해서는 결국엔 arc cos 함수를 계산하고 게이트를 적절하게 설계해야하는 추가적인 과정이 필요합니다.

아래에서 설명할 커널 인코딩은 이러한 추가적인 프로세스를 회피하기 위해 만들어진 코딩기법이라고 생각할 수 있습니다.

3. Kernel Encoding

순수하게 예측만을 위한 데이터 사이언스 모델링에서는 인풋 데이터 x가 굳이 그대로 들어갈 필요는 없습니다. 제곱을 해준 뒤에 넣어도 되고, cos 함수를 해준 뒤에 넣어도 됩니다. 물론 정보를 완전히 날려버리는 변형도 있지만 대부분의 경우에는 인풋 데이터를 변형해줘도 어차피 이를 이용해서 모델링을 하는 과정에서 데이터가 변형이 되기 때문에 모델의 성능을 크게 저해하지는 않습니다.

심지어, 몇몇 기법의 경우 인풋 데이터를 일부로 여러가지 형태로 변형을 한 후 이들을 모두 사용해서 좀 더 성능이 좋은 모델을 만들기도 합니다. 예를들어 인풋 데이터를 거듭제곱하여 만들어낸 x,x²,x³,x⁴,…의 변수를 한꺼번에 사용해서 좋은 성능을 내고자 하는 시도는 데이터의 비선형적인 특성을 반영하기 위해 거치는 통계학에서는 아주 일반적인 시도입니다. 이러한 개념과 전략을 확장해서 만든 기법이 데이터 사이언스에서 일반적으로 말하는 커널 방법이라고도 말할 수 있습니다. 결론적으로 말하면, 데이터를 굳이 날것 그대로 살려서 넣을 필요는 없다는 의미입니다.

커널 인코딩은 인풋 데이터를 그대로 살리는 것을 고집하기 보다는 모델링에 도움이 되게끔만 인코딩 해주자는 철학입니다. 가장 널리 쓰이는 기법 중 하나는 zzfeature map입니다.

위의 회로에서 배치된 게이트와 데이터들은 사실은 그렇게 엄밀한 의미를 가지고 있지는 않습니다. 그러나 경험적으로 위와 같이 데이터를 인코딩하는 것이 오히려 모델링에 더 도움이 되는 것으로 알려져 있습니다.

Supervised learning with quantum enhanced feature spaces

4. Hamiltonian Encoding

Hamiltonian 이라는 것은 물리학에서 입자의 움직임을 기술한 행렬 형태의 함수를 의미합니다. 양자컴퓨터에서는 게이트로 이해할 수 있습니다.

지금까지는 데이터에서 하나의 행(혹은 벡터),이 하나의 관측치가 되는 경우를 이야기했지만, 몇몇 경우에 데이터가 벡터의 형태가 아닌 행렬의 형태로 입력해야 할 때가 있습니다. QAOA와 같은 조합최적화 문제에서의 입력이 그 예입니다. 물론, 이 경우에도 단순하게 데이터를 입력할 수 있는 것은 아닙니다. 예를 들어 Q라는 행렬을 회로에 입력하고 싶다고 생각해봅시다. 다음과 같은 사항이 고려되어야 합니다.

  1. Q가 Unitary Matrix가 아니라면 게이트로 활용할 수 없음
  2. Q를 직접적으로 인코딩할 수는 없고 rotation gate를 이용하여 간접적으로 인코딩해야함.

이 두가지 문제는 다음과 같이 풀 수 있습니다.

  1. exp(iQ)를 이용하면 Q의 대부분의 성질을 유지하면서 Unitary Matrix로 만들 수 있음 (exp(iQ)exp(-iQ) = exp(0) = 1)
  2. Q는 X,Y,Z 게이트의 선형결합으로 분해할 수 있음. (Q = aX+bY+cZ)
  3. 파울리 게이트의 로테이션 게이트는 다음과 같은 등호를 만족함. (exp(aiX) = Rx(a))

따라서 이 사실들을 조합하면 아래와 같은 결과를 얻어 낼 수 있습니다.

즉, 임의의 해밀토니안을 인코딩하기 위해서는 파울리게이트의 계수를 알아낸 뒤 이를 각 로테이션 게이트에 넣음으로써 진행 할수 있습니다. 전술했듯, 이러한 인코딩 기법은 Quantum Annealing, QAOA 등의 조합최적화에서 널리 사용되고 있습니다.

인코딩 기법을 정리하면 다음과 같습니다.

  1. Basis Encoding — 데이터를 통해 추정한 분포를 인코딩하는 기법
  2. Amplitude Encoding — 단일 샘플의 벡터를 그대로 인코딩 하는 기법
  3. Kernel Encoding — 단일 샘플의 벡터를 커널에 넣어서 인코딩 하는 기법
  4. Hamiltonian Encoding — 주어진 데이터를 통해 문제에 맞는 해밀토니안으로 바꾼 뒤 인코딩 하는 기법

이 인코딩 기법들은 양자 알고리즘의 목적에 따라서 달리 사용되는 기법들이라고 할 수 있습니다.

그런데 이 데이터 인코딩 문제는 사소한 문제가 아닙니다. 학계에서는 양자 컴퓨팅 업계에 AI Winter와도 유사한 Quantum Winter가 찾아올 것이라고 예상하고 있습니다. 이는 양자 알고리즘이 계속해서 발전하면서 실용화가 되다가 아직 풀지 못한 몇가지 난점에 부딪히면서 연구 및 상업화가 크게 얼어붙을 것이라는 의미입니다. 이 몇가지 난점 중 하나가 바로 데이터 인코딩 문제입니다.

아무리 양자 컴퓨터가 Exponential하게 큰 메모리 공간을 가지고 있을지라도 이 공간을 활용하기 위해서는 결국 Exponential한 크기의 인코딩 게이트가 필요하기 때문입니다. 따라서 데이터를 인코딩할때는 최대한 효율적으로 적은 게이트를 쓸 수 있게 하는것이 핵심입니다. 이에 대해서는 추후에 다뤄보도록 하겠습니다.

참고 : M. Shuld, F. Peruccione [2018] Supervised Learning with Quantum Computers

KQC는 상용 양자 알고리즘 및 소프트웨어의 연구/개발을 학계와 업계의 협업을 통해 진행하고 있는 회사입니다. 새로운 기술과 영역에 도전하고 싶은 데이터 사이언티스트는 물론 양자 컴퓨팅을 활용하고자 하는 기업들의 연락을 기다립니다.

https://www.kqchub.com/contactus를 방문하셔서 form을 작성하시거나, info@kqchub.com으로 연락주세요.

--

--