고전 데이터는 어떻게 양자가 될까? (QML Encoding부터 VQC까지 정리)
jay
2026년 3월 20일 17:43
목차
최근 연구실에서 양자 커널과 관련된 연구를 진행하고 있다. 양자 역학 등 양자에 대해서 많은 것들을 알고 있지 않아, 어려움이 따르지만 Low Level 단에서 부터 하나씩 파악하며 정복해나가려고 한다.
양자 머신러닝은 단순히 코드를 돌리는 것이 아니라, 고전 데이터를 양자 공간으로 쏘아올린 뒤, 다시 고전적인 정답으로 끌어내리는 과정이다. 그 과정에 대해서 데이터가 어떠한 변화를 거치는 지 확인해보고자 한다.
우선, 내가 궁금했던 점은 아래와 같았다.
- 어떻게 고전 데이터가 양자 상태로 바뀌면서 그 성질을 온전히 가지고 갈 수 있을까?
- 양자로 그 성질을 잘 보존한채로 옮겼다고 쳤을 때, 어떻게 Feature들 간의 연관관계를 알 수 있을까?
- 그게 단순히, Feature들 간의 내적으로만 하는거라면, 고전 데이터 환경에서도 충분히 가능할텐데, 그 원리가 무엇일까?
- 각 데이터를 양자화 시켰을 때, 각 Feature들 간의 얽힘을 어떻게 확인할 수 있을까?
- 데이터를 양자 상태로 바꾸면서, 어쩔 수 없이 주기성 문제, 혹은 대칭성 문제를 겪게 될 것인데, 이 문제는 어떻게 해결하는 것일까?
중요한 질문이라고 생각이 되지만, QML을 연구하면 당연하게 알아야되는 질문일 것이라는 것을 질문만 읽어보아도 알 수 있을 것이다.
그래서 매우 간단하고 직관적인 데이터 셋을 이용해서 하나씩 확인하고자 했다.
1. 데이터 준비.
우선, 직관적으로 어느정도의 경향성을 데이터를 활용하였다.
⇒ https://www.kaggle.com/datasets/saeedomranpour/weight-height
Feature로는 Height, Weight가 있고, Target 변수는 Gender이다.
이를 그래프로 나타냈을 때는 아래와 같이 나온다.

딱 데이터의 분포를 확인해보면 잘 분리하면 80프로 이상은 나오겠는데? 라는 생각이 든다.
그걸 1차 목표로 진행을 했다.
2. 데이터 인코딩
1. 데이터 압축 단계
원본 데이터를 그대로 큐비트에 넣게되면 문제가 생긴다.
각 데이터를 양자 상태로 인코딩 할 때는 회전을 넣어서 인코딩을 시켜준다. ⇒ 회전을 준다는 말은 라디안만큼의 주기를 갖는다는 것이다.
만약 170cm라는 데이터를 그대로 넣는다고 하면, 수십바퀴가 회전하게 된다.
이는 정보손실이 발생되게 되고, 무조건 Scaler가 필요한 작업임을 알 수 있다.
그래서 MinMaxScaler를 활용해서, 전체 데이터를 0~1 사이로 압축을 했다.
그러면 데이터가 주기성을 가지지 않게 되고, 모든 데이터는 한 바퀴를 돌지않게 되는 고유한 각도를 보장받게 된다. ⇒ 이는 데이터의 성질이 고유성을 지닌 채로 압축이 되었다고 볼 수 있다.
2. 양자 공간으로 매핑
데이터를 압축했다면 큐비트에 올려놓는 과정이 필요하다.
Qiskit에서는 zz_feature_map 이라는 메소드를 활용해서 이 작업을 수행한다. 내부적으로는 아래의 3개의 단계를 거치게 된다.
- Gate 통과 (하다마드 게이트)
- 우선, 큐비트에 H 게이트를 통과시켜 0과 1이 정확히 반반씩 섞인 중첩 상태로 만든다. ⇒ 블로흐 구면에서 큐비트를 적도로 내려 모든 basis 상태에 동일한 진폭을 갖는 superposition 생성을 의미한다.
- 1차원 위상 매핑
- 각 큐비트가 Scaling 된 데이터에 맞추어 회전하는 단계이다. 0~1 사이로 압축을 했기 때문에 각 큐비트들은 360도를 넘지 않는 고유한 각도를 가지게 된다.
- 키와 몸무게로 비유하자면, “키가 니까 나는 30도 돌게. 너는 몸무게가 이니까 50도 돌아.”와 같이 각 큐비트가 각 입력값에 따라서 Z축 기준으로 위상 회전을 하며, 독립적으로 동작한다.
- 비선형 얽힘 (
ZZ Entanglement)- 키와 몸무게를 담은 각 큐비트를 CNOT 게이트로 묶은 뒤에 이라는 함수를 위상 각도에 추가하는 단계이다.
- 키와 몸무게로 비유하자면, 너는 키가 0.9이고, 몸무게가 0.1이라고 했을 때, 의 결과가 나오게 되고, 약 13.6 라디안에 해당하는 위상 값이 각 상태(|00⟩, |01⟩, |10⟩, |11⟩)에 서로 다르게 적용된다.
- 이 과정은 각 큐비트에 독립적으로 작용하는 연산으로 분해될 수 없기 때문에, 결과적으로 두 큐비트 사이에 얽힘(entanglement)이 생성된다.
3. 양자 공간에서의 경계면 긋기
각 데이터들이 얽혀있는 공간을 만들었으니, 성별을 가를 수 있는 경계면을 그어야한다.
이 역할을 하는 것이 Qiskit의 RealAmplitudes 회로이다.
RealAmplitudes는 아래의 두 가지 방법으로 되어있다.
- 회전 게이트
- 각 큐비트에 대해서 진폭을 변화시키는 역할을 한다.
해당 연산은 Y축을 기준으로 회전을 한다. - 큐비트에 위상으로 저장된 정보가 해당 과정에서 간섭을 일으키는 것이고, 확률 분포로 변환되는 과정이다.
- 각 큐비트에 대해서 진폭을 변화시키는 역할을 한다.
- CNOT 게이트
- CNOT 게이트는 큐비트 간의 얽힘을 시키는 과정이다.
- 단순한 선형 분리가 아닌, 비선형적인 경계를 만들 수 있도록 한다.
해당 과정을 확인해보면, ZZ Entanglement 과정에서 이미 얽힘을 이용했는데, 왜 또 얽힘을 사용하는지에 대한 의문이 들었었다.
ZZ는 데이터를 얽힘 형태로 인코딩하는 과정이고, CNOT은 그 얽힘을 활용하여 학습 가능한 구조로 변환하는 과정이라고 생각하면 편하다.
4. 측정 및 고전 최적화의 반복
양자 회로만으로는 모델이 스스로 학습을 할 수가 없다. 그래서, 양자 측정과 고전 최적화 알고리즘이 결합된 구조가 필요하다.
- 양자 측정
RealAmplitudes를 통과한 양자 상태를 여러 번 측정하여, 각 basis 상태의 발생빈도를 통계적으로 추정한다.- 이를 바탕으로 남성일 확률과 여성일 확률과 같은 예측값을 얻는다.
- 손실 함수 계산
- 측정으로 얻은 예측 결과와 실제 정답을 비교해서 Loss를 구한다.
- 고전 최적화
- 고전 컴퓨터의 최적화 알고리즘이 Loss를 입력으로 받아, 를 어떻게 조정할 지 결정한다.
- 예를 들어, 은 조금 증가시키고, 는 조금 감소시켜보자 와 같이 결정한다.
- 고전 컴퓨터의 최적화 알고리즘이 Loss를 입력으로 받아, 를 어떻게 조정할 지 결정한다.
- 반복
- 위의 과정을 반복하면서 점점 Loss를 줄이는 방향으로 가 업데이트가 된다.

위의 최종 과정이 변분 양자 분류기(VQC)의 학습과정이다.
정리
– 고전 데이터는 scaling을 통해 주기성 문제를 해결한다
– ZZ Feature Map은 feature 간 비선형 관계를 양자 얽힘으로 표현한다
– RealAmplitudes는 해당 구조 위에서 학습 가능한 decision boundary를 만든다
– QML은 결국 “양자 + 고전 최적화”의 hybrid 구조이다
You might also like
Comments (2)
Leave a Reply
Or login to comment with your account.
minho
Guest쩝
jay
Admin쩝..