양자 Machine Learning 소개
개요 및 동기
퀀텀 머신 러닝에 오신 것을 환영합니다!
아래 동영상에서 간략한 소개와 함께 아래 텍스트가 보충되어 있습니다.
동영상을 간략하게 요약하고 보강합니다:
- 우리는 양자 컴퓨터에서 처음으로 문제가 해결되는 것을 보았고, 이후 사람들은 고전적인 슈퍼컴퓨터에서 이를 해결할 방법을 찾아냈습니다. 기존 컴퓨팅과 양자 컴퓨팅이 서로의 한계에 도전하는 이러한 주기는 몇 년 동안 계속될 것입니다.
- 오류 감소 및 사용 가능한 큐비트 수와 같은 분야의 발전을 고려할 때 양자 컴퓨팅이 기존 컴퓨팅에 비해 입증 가능한 이점을 가질 수 있는 특정 문제가 있습니다. 하지만 지금은 여전히 양자 지원 데이터 세트와 유용한 양자 특징 맵을 찾는 탐색의 시기입니다.
- 양자 머신 러닝(QML)은 양자 컴퓨팅이 기존의 기존 워크플로우를 보강하거나 보완할 수 있는 여러 흥미로운 분야 중 하나입니다.
머신 러닝(ML)은 데이터 세트에 알고리즘을 적용하므로, QML은 데이터 또는 알고리즘 측면 또는 양쪽 모두에 양자역학을 포함할 수 있습니다. 이 모든 가능성은 잠재적으로 흥미롭습니다. 하지만 여기서는 주로 기존 데이터에 적용된 양자 알고리즘에 대한 논의로 국한하겠습니다. 그 이유 중 하나는 클래식 데이터에 대한 ML 문제가 이미 잘 연구되어 있고 널리 사용 가능하다는 점입니다. 고전적인 데이터로 시작하는 문제 해결에 대한 광범위한 관심이 있습니다. 또 다른 이유는 QRAM이 부족하기 때문입니다. 비교적 긴 시간 동안 대량의 양자 데이터를 저장할 수 있는 능력이 없다면, 양자 데이터로 시작하는 방법은 산업에 적용하기에는 아직 멀었습니다. 또한 기존 데이터를 효율적인 방식으로 '양적으로 액세스'하는 방법도 불분명합니다. 특히 관심을 끄는 두 가지 유형의 ML은 레이블이 지정된 데이터 세트를 사용하여 알고리즘을 훈련하는 지도 학습과 레이블이 지정되지 않은 샘플에서 분포를 학습하는 비지도 학습입니다. 예를 들어, 비지도 알고리즘은 동일한 분포에서 새로운 샘플을 생성하는 방법이나 샘플을 유사한 특성을 가진 그룹으로 클러스터링하는 방법을 학습할 수 있습니다.
왼쪽 이미지는 지도 학습에서와 같이 라벨링된 데이터의 두 범주를 보여줍니다. 이 경우, 범주들은 선형적으로 분리 가능합니다. 오른쪽 이미지는 데이터 클러스터를 보여줍니다. 비지도 학습 작업에서는 이러한 데이터가 처음부터 라벨링되지 않으며, 알고리즘은 분포를 연구하여 클러스터를 탐색할 수 있습니다. 알고리즘이 식별할 수 있는 예시 클러스터를 시각화하기 위해 데이터 포인트에 레이블이 지정되었습니다. 두 방법의 핵심 차이점은 지도 학습 과정은 이미 라벨이 지정된 데이터로 시작하는 반면, 비지도 학습 과정은 라벨이 지정되지 않은 데이터로 시작한다는 점이다. 비록 최종적으로 데이터에 라벨이 지정되더라도 마찬가지이다.
머신러닝에 대한 배경 지식이 있는 분들은 이미 많은 솔루션 방법이 데이터를 고차원 공간에 매핑하는 것을 포함한다는 사실을 알고 계실 것입니다. 이는 특히 커널의 맥락에서 잘 살펴볼 수 있습니다. 간단히 상기시켜 드리자면, 때로는 데이터가 주어진 차원과 동일한 수의 선, 평면 또는 하이퍼플레인(간결함을 위해 간단히 '하이퍼플레인'이라고 표현합니다)으로 데이터를 카테고리로 구분할 수 있습니다. 이는 위의 첫 번째 이미지에 나와 있습니다. 두 번째 이미지와 같이 해당 차원에서 하이퍼평면으로 데이터를 분리할 수 없는 경우도 있습니다. 그러나 더 높은 차원으로 매핑할 때 활용할 수 있는 데이터 구조가 여전히 존재할 수 있으며, 그러면 그 높은 차원 공간에서 데이터를 분리할 수 있습니다. 이는 원 대칭인 2D 데이터를 포물선 표면을 따라 데이터 포인트가 배열된 3D 공간에 매핑하는 것으로 설명할 수 있습니다.
QML의 일반적인 목표는 저차원 특징 집합에서 고차원 공간으로 매핑을 찾아 데이터 요소를 효과적으로 분리하여 이 매핑을 사용하여 새로운 데이터 요소를 분류하는 것입니다. 그러나 이는 쉬운 일이 아니며, 머신러닝에서 양자 컴퓨팅의 잠재적 유용성에 대한 논의에는 반드시 적절한 주의 사항이 수반되어야 합니다. 특히 데이터 세트 선택의 미묘한 차이와 유틸리티 규모에 도달하는 데 따르는 어려움을 해결해야 합니다. 또한 기존 알고리즘이 이미 효율적이고 잘 처리하고 있는 데이터에 대해 기존 ML 알고리즘을 능가하는 성과를 내려는 시도에서 벗어나 유용할 수 있는 새로운 피처 맵을 조사하는 것으로 논의의 초점을 다시 맞춰야 합니다.
기대 관리
문헌에 설명된 QML 애플리케이션에 사용되는 많은 데이터 세트는 "기능 엔지니어링"된 것으로, 양자 컴퓨팅이 유용한 좁은 사용 사례를 보여주기 위해 특별히 선택되거나 생성된 데이터 세트입니다. 이것이 속임수처럼 보인다면 당면한 과제를 잘못 이해하고 있는 것입니다. 일부 양자 특징 맵을 사용하면 기존 머신러닝 알고리즘보다 모든 또는 많은 분류 작업을 더 효율적이거나 확장 가능하게 해결할 수 있습니다. 오히려 일부 양자 피처 맵(전부는 아님)은 기존 피처 맵과 다르게 작동합니다. 이제 당면한 과제는 복잡한 데이터 구조의 맥락에서 양자 회로를 탐구하는 것입니다. 해결해야 할 몇 가지 구체적인 질문은 다음과 같습니다:
- 기존 대안과 비교했을 때 새로운 방식으로 작동할 가능성이 가장 높은 양자 회로는 무엇인가요?
- 이러한 새로운 양자 회로를 사용하여 가장 잘 탐구할 수 있는 속성을 가진 데이터와 관련된 실제 문제가 있을까요?
- 이러한 양자 회로는 단기 양자 컴퓨터에서 확장할 수 있을까요?
설명 부족
양자 컴퓨팅이 얼마나 강력한지 단순하게 설명하는 경우가 종종 있습니다. 다음과 같이 진행됩니다:
기존 컴퓨터가 비트 정보를 사용하는 것처럼 양자 컴퓨터는 큐비트를 사용합니다. 비트 수가 4라고 가정할 때, 기존 컴퓨터는 가능한 상태 중 하나를 취할 수 있지만, 양자 컴퓨터는 16개의 모든 상태가 동시에 중첩된 상태로 존재할 수 있으며 이 중첩된 전체에 대해 연산을 수행할 수 있습니다. 경우에 따라서는 자연스럽게 고차원 공간에 대한 매핑을 기반으로 잠재적으로 흥미로운 학습 알고리즘을 설계할 수 있습니다.
이는 사실이지만, 앞으로 설명할 내용처럼 부적절하고 다소 오해의 소지가 있는 표현입니다. 또한 다음과 같이 복소 계수와 실제 계수의 차이가 강조되는 것을 볼 수 있습니다:
시스템이 서로 다른 상태에 있을 확률을 갖는 것으로 설명할 수 있는 확률론적 고전 시스템은 다음과 같이 설명할 수 있습니다.
이러한 시스템에서 계수 , , 등은 양의 실수인 경우에만 의미를 가질 수 있습니다. 양자 컴퓨터의 상태는 복소수일 수 있는 확률 진폭으로 설명됩니다.
위의 진술은 사실에 부합하도록 매우 신중하게 작성되었습니다(표면적으로 유사한 진술은 잘못된 경우가 많습니다). 하지만 이러한 설명은 머신 러닝에서 양자 컴퓨팅의 힘을 설명하는 것이 아닙니다. 우선, 머신 러닝에 양자 컴퓨팅을 적용하려면 측정이 필요하며 큐비트를 한 번에 여러 상태로 측정할 수는 없습니다. 큐비트를 과 같이 중첩하여 준비할 수 있지만 측정하면 또는 이 나오게 됩니다. 따라서 최소한 차원이 증가한다는 이 이야기는 불완전합니다. 또한 커널의 경우, 가우스 커널은 무한 차원이기 때문에 양자 컴퓨팅의 차원 증가는 기존 대안에 비해 계산 능력의 충분 조건이 될 수 없습니다. 가우스 피처 맵은 무한 차원 매핑 벡터를 계산할 필요가 없는 '커널 트릭'과 함께 사용할 때만 사용된다는 점에서 미묘한 차이가 있습니다. 하지만 요점은 여전히 남아 있습니다:
얽힌 양자 상태의 고차원성은 기하급수적 병렬성이 아니며 머신 러닝의 성능을 향상시키는 충분 조건이 아닙니다.
이어지는 강의에서는 양자 회로를 머신러닝 작업에 통합하는 워크플로우를 소개하며, 이는 양자 컴퓨팅의 성능을 쉽게 탐색할 수 있도록 하기 위한 명시적인 목적으로 진행됩니다. 이 과정에서는 일반적인 문제에 대해 더 나은 머신러닝 결과를 얻기 위한 빠른 경로로 기능 맵이나 알고리즘을 제시하지 않습니다. 왜냐하면 그러한 기능 맵이나 알고리즘은 존재하지 않기 때문입니다. 오히려 유용한 양자 컴퓨팅을 탐색하는 데 사용할 수 있는 다양한 양자 도구를 소개합니다.
탈양자화
양자화란 주어진 양자 알고리즘을 일반적으로 스케일링을 포함하여 주어진 작업 집합에 대해 양자 알고리즘과 유사하게 작동하는 기존 알고리즘으로 대체하는 것을 말합니다. 일부 정의에 따르면, 기존 알고리즘은 양자 알고리즘보다 다항식적으로 느리게만 작동해야 합니다.
처음에는 기존 알고리즘에 비해 상당한 속도 향상을 제공할 것으로 여겨졌던 몇몇 양자 머신 러닝(QML) 알고리즘이 최근 몇 년 동안 양자화되었습니다. 이러한 비양자화 과정을 통해 머신러닝에 대한 양자 접근법의 잠재적 장점과 한계에 대한 중요한 인사이트를 얻을 수 있었습니다.
가장 주목할 만한 양자화 해제 연구 성과 중 하나는 추천 시스템에 관한 Ewin Tang의 연구에서 나왔습니다. Tang은 이전에는 양자 컴퓨터로만 달성할 수 있다고 여겨졌던 속도로 추천 작업을 수행할 수 있는 고전 알고리즘을 발견했습니다. 이 발견은 양자 알고리즘이 이 문제에 대해 지수적인 이점을 가진다는 가정에 의문을 제기했다. Shin 등 연구진의 최근 연구는 변분 양자 기계 학습 모델의 함수 클래스가 비양자화될 수 있는 조건들을 규명하는 데 초점을 맞추고 있다.
비퀀트화에 대한 한 가지 일반적인 접근 방식(유일한 방법은 아니지만)은 데이터 로딩 오버헤드를 고려하는 것입니다. 즉, 기존 데이터에 적용되는 모든 양자 알고리즘에는 기존 데이터를 양자 컴퓨터로 인코딩하는 단계가 있습니다. 양자 알고리즘이 이미 양자 데이터를 사용할 수 있는 시작점을 가정하면 인코딩에 필요한 시간을 효과적으로 숨길 수 있습니다. 양자 데이터를 가정하는 것이 합리적일 수 있는 상황도 있지만, 관심 있는 많은 애플리케이션은 기존 데이터에서 시작될 것입니다. 일부 양자화 사례에 따르면 이 인코딩 시간이 포함되고 기존 데이터 로딩을 효율적으로 수행할 수 있는 경우 양자 알고리즘이 더 이상 기존 알고리즘을 능가하지 못하는 것으로 나타났습니다.
알고리즘을 수량화할 수 없다고 해서 모든 기존 알고리즘보다 더 효율적이거나 확장성이 뛰어나다는 의미는 아닙니다. 극단적이고 인위적인 예로, 크기 k의 집합에서 가장 큰 j개의 요소를 선택하는 알고리즘을 상상해 보세요. 쇼의 알고리즘을 사용하여 각 k 원소를 소인수로 인수분해한 다음 소인수를 사용하여 가장 큰 원소를 결정하는 양자 알고리즘을 작성할 수 있습니다. 이러한 알고리즘은 수량화할 수 없을 가능성이 높지만, 불필요한 인수분해 부분은 제외하더라도 동일한 최대 요소 선택을 수행하는 기존 알고리즘보다 효율성이 현저히 떨어집니다.
존재 증명
2021년, 캘리포니아 대학교 버클리( IBM Quantum® )의 연구원인 류윈차오(Yunchao Liu), 스리니바산 아루나찰람(Srinivasan Arunachalam), 크리스탄 템메(Kristan Temme)는 『네이처(Nature)』에 “지도 학습에서 엄격하고 견고한 양자 가속 (A rigorous and robust quantum speed-up in supervised machine learning)”이라는 제목의 논문을 발표했다. 위의 주의 사항에 따라, 본 연구에서는 (1) 고전적으로 어려운 것으로 알려져 있으며, (2) 양자 알고리즘이 속도 향상을 보여줄 수 있는 분류 문제를 신중하게 선정하였다.
이 논문에서는 이산 로그에 기반한 데이터 분류를 다룹니다. 논문을 인용하자면, "큰 소수 와 의 생성기 의 경우, 입력 에 대해 의 시간 다항식으로 을 표현하는 데 필요한 비트 수를 계산할 수 있는 고전적 알고리즘은 없다는 것이 널리 알려진 추측입니다."입니다 이와는 대조적으로 쇼의 알고리즘은 이산 로그 문제를 다항식 시간 내에 해결하는 것으로 알려져 있습니다. 따라서 이러한 문제 선택은 위의 기준인 고전적 경도(양자화될 가능성이 낮음)와 양자 알고리즘에 적합한 것으로 알려진 기준을 동시에 만족합니다.
이러한 현명한 분류 문제 선택을 통해 저자는 양자 커널 방법(아래에 간략하게 스케치하고 이후 강의에서 설명)을 사용하여 기하급수적인 속도 향상을 보여줄 수 있었고, 이는 엔드 투 엔드이며 견고합니다. 여기서 '엔드 투 엔드'는 기존 데이터로 시작한다는 가정을 의미하며, 이 경우 작성자는 데이터 인코딩 시간을 포함합니다. 여기서 '견고함'이란 양자 알고리즘을 사용하여 분류할 데이터가 넓은 간격으로 분리되어 있어 유한 샘플링 오차와 같은 실제 고려 사항에 대해 분류 성공률이 견고하다는 것을 의미합니다.
이 모든 것은 양자 커널이 기하급수적인 속도 향상을 가져올 수 있는 문제가 존재한다는 것을 의미합니다. 그러나 현재 과학의 수준은 이러한 문제가 양자 알고리즘에 적합해야 한다는 관찰 또는 이론적 근거에 따라 선택된다는 것입니다. 기존 컴퓨터가 이미 꽤 잘 수행하는 머신러닝 작업에서 비약적인 속도 향상을 기대하는 것은 현실적이지 않습니다.
양자 유용성 탐구를 위한 이상적인 사례를 찾아내는 것은 이 과정의 학습자에게 막중한 책임이 있습니다. 그리고 이런 과정으로 달성할 수 있는 작업은 아닙니다. 이러한 탐구는 여러분과 같은 연구자들로 구성된 IBM 퀀텀 네트워크 전체의 과제입니다. 이 과정에서는 QML 워크플로우와 인코딩 전략을 시연하여 자신의 전문 분야에서 퀀텀의 유용성을 탐색할 수 있도록 합니다.
이번 소개를 통해 퀀텀 머신 러닝에 대해 몇 가지 명확히 알 수 있었기를 바랍니다:
- 양자 알고리즘은 고전적으로 어렵고 양자 알고리즘에 적합한 매우 특정한 문제에 대해 기존 알고리즘에 비해 기하급수적인 속도 향상을 제공할 수 있습니다.
- 양자 컴퓨팅에서 얽힌 상태의 고차원성은 중요하지만, 단순히 기존 알고리즘보다 우위를 점하는 것만으로는 충분하지 않습니다.
- 양자 알고리즘에 적합한 문제를 찾는 것은 매우 어려운 작업이며, 이 과정의 학습자가 주로 해야 할 일입니다.
체크인 질문
양자 상태가 고전 상태와 다른 점은 무엇인가요?
그 정도로 출장 준비는 매우 중요합니다. 특히: 복소수 계수, 그리고 단일 복사본과의 중첩. 향후 강의에서 다룰 다른 차이점들도 많이 있는데, 여기에는 양자 얽힘과 간섭 현상도 포함됩니다.
참 또는 거짓? 고도로 얽힌 양자 상태는 대부분의 머신러닝 문제를 양자 컴퓨터에서 더 효율적으로 해결할 수 있게 해줍니다.
오해입니다. 대부분의 머신 러닝 문제는 기존 알고리즘으로 매우 효율적으로 해결되며, 양자 알고리즘은 실질적인 속도 향상을 제공하지 못할 가능성이 높습니다. QML의 목표는 양자 상태로 잘 설명되는 특징을 가진 데이터 세트를 찾거나 모델의 정확도를 최적화하는 데이터 특징의 매핑을 찾는 것입니다.
과정 학습 목표
이 과정을 이수하면 다음과 같은 핵심 기술과 역량을 쌓을 수 있습니다. 학습자가 할 수 있습니다:
-
QML이 무엇이며 퀀텀이 기존 머신 러닝과 어떻게 연결되는지 설명합니다.
-
퀀텀 어휘와 주요 용어를 ML 워크플로에 적용하세요.
-
QML 워크플로우의 주요 구성 요소(다양한 유형)를 식별합니다.
-
다양한 유형의 QML을 식별하고 이를 구분합니다.
-
IBM Quantum 의 기본 기능을 활용하고 Qiskit의 패턴을 따르며, 양자 커널 기법과 변분 양자 분류기를 구현합니다.
-
QML이 가장 유망한 분야와 그렇지 않은 분야를 파악하세요.
-
예제 문제를 자신의 데이터 집합에 맞게 조정합니다.
-
학습 시간, 노이즈, 다중 상태 판독의 복합 오류와 같은 QML의 문제에 유의하세요.
-
QML이 조직에 도움이 될 수 있는 부분에 대해 추천하세요.
과정 구조
이 강좌는 여러 강의로 구성되어 있습니다. 각 레슨에는 본문 곳곳에 여러 개의 확인 문제가 있어 새로운 기술을 연습하거나 진행하면서 이해도를 확인할 수 있습니다. 필수 항목은 아닙니다.
강좌 마지막에는 20문항으로 구성된 퀴즈가 있습니다. 이 퀴즈에서 70% 이상을 득점해야 퀀텀 배지( Machine Learning )를 받을 수 있습니다. 70% 이상의 점수를 받으면 곧바로 배지가 자동으로 이메일로 전송됩니다. 퀴즈는 두 번만 제출할 수 있습니다. 첫 번째 제출 후에는 놓친 문제에 다시 도전할 수 있는 기회가 주어집니다. 두 번째 제출이 끝나면 점수가 최종 확정됩니다. 자세한 내용은 퀴즈를 참조하세요.
코스 구조는 다음과 같습니다:
- 레슨 1: 소개 및 개요
- 레슨 2: 머신 러닝 요약
- 레슨 3: 데이터 인코딩
- 레슨 4: 양자 커널 메서드와 서포트 벡터 머신
- 레슨 5: 가변 양자 분류기/신경망
- 배지 시험
첫 번째 QML 코드를 실행하세요
목표를 세분화하여 배경을 자세히 살펴보기 전에 어디로 가고 있는지 확인하는 것이 도움이 되는 경우가 많습니다. 아래 코드 셀은 퀀텀 커널 메서드의 간단한 인스턴스를 실행합니다. 구체적으로, 단일 커널 행렬 요소가 계산됩니다. 커널 방식이나 퀀텀 커널을 처음 접하는 사용자도 겁먹지 마세요. 이 과정의 여러 강의에서는 이러한 셀에서 정확히 어떤 일이 일어나는지 분석하는 데 집중할 것입니다.
이 코드를 통해 유틸리티 규모에서 양자 컴퓨팅에 접근하기 위한 프레임워크인 키스킷 패턴을 동시에 소개합니다. 이 프레임워크는 매우 일반적인 4단계로 구성되어 있으며 대부분의 문제에 적용할 수 있습니다(일부 워크스트림에서는 특정 단계가 여러 번 반복될 수 있음).
Qiskit 패턴:
- 1단계: 기존 입력을 양자 문제에 매핑하기
- 2단계: 양자 실행을 위한 문제 최적화
- 3단계:
IBM Quantum기본 함수를 사용하여 실행하기 - 4단계: 분석/사후 처리
아래 셀에서는 다양한 단계에 대한 간략한 설명만 제공하며, 자세한 내용은 해당 강의를 찾아보시기 바랍니다.
# Import some qiskit packages required for setting up our quantum circuits.
from qiskit.circuit import Parameter, ParameterVector, QuantumCircuit
from qiskit.circuit.library import unitary_overlap
# Import StatevectorSampler as our sampler.
from qiskit.primitives import StatevectorSampler
# Step 1: Map classical inputs to a quantum problem:
# Start by getting some appropriate data.
# The data imported below consist of 128 rows or data points.
# Each row has 14 columns that correspond to data features, and a 15th column with a label (+/-1).
!wget https://raw.githubusercontent.com/qiskit-community/prototype-quantum-kernel-training/main/data/dataset_graph7.csv
# Import some required packages, and write a function to pull some
# training data out of the csv file you got above.
import pandas as pd
import numpy as np
def get_training_data():
"""Read the training data."""
df = pd.read_csv("dataset_graph7.csv", sep=",", header=None)
training_data = df.values[:20, :]
ind = np.argsort(training_data[:, -1])
X_train = training_data[ind][:, :-1]
return X_train
# Prepare training data
X_train = get_training_data()
# Empty kernel matrix
num_samples = np.shape(X_train)[0]
# Prepare feature map for computing overlap between two data points.
# This could be pre-built feature maps like ZZFeatureMap, or a custom quantum circuit,
# as shown here.
num_features = np.shape(X_train)[1]
num_qubits = int(num_features / 2)
entangler_map = [[0, 2], [3, 4], [2, 5], [1, 4], [2, 3], [4, 6]]
fm = QuantumCircuit(num_qubits)
training_param = Parameter("θ")
feature_params = ParameterVector("x", num_qubits * 2)
fm.ry(training_param, fm.qubits)
for cz in entangler_map:
fm.cz(cz[0], cz[1])
for i in range(num_qubits):
fm.rz(-2 * feature_params[2 * i + 1], i)
fm.rx(-2 * feature_params[2 * i], i)
# Pick two data points, here 14 and 19, and assign the features to the circuits as parameters.
x1 = 14
x2 = 19
unitary1 = fm.assign_parameters(list(X_train[x1]) + [np.pi / 2])
unitary2 = fm.assign_parameters(list(X_train[x2]) + [np.pi / 2])
# Create the overlap circuit
overlap_circ = unitary_overlap(unitary1, unitary2)
overlap_circ.measure_all()
overlap_circ.draw("mpl", scale=0.6, style="iqp")
# Step 2: Optimize problem for quantum execution
# Use IBM Quantum Compute Service to get the least busy backend for running on real quantum computers.
# from qiskit_ibm_runtime import QiskitRuntimeService
# service = QiskitRuntimeService(channel="ibm_quantum")
# backend = service.least_busy(
# operational=True, simulator=False, min_num_qubits=overlap_circ.num_qubits
# )
# Transpile the circuits optimally for the chosen backend using a pass manager.
# from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
# pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
# overlap_ibm = pm.run(overlap_circ)
# Step 3: Execute using IBM Quantum primitives
# Specify the number of shots to use.
num_shots = 10_000
## Evaluate the problem using statevector-based primitives from Qiskit
sampler = StatevectorSampler()
counts = (
sampler.run([overlap_circ], shots=num_shots).result()[0].data.meas.get_int_counts()
)
# Step 4: Analyze and post-processing
# Find the probability of 0.
counts.get(0, 0.0) / num_shotsOutput:
--2025-05-09 10:04:28-- https://raw.githubusercontent.com/qiskit-community/prototype-quantum-kernel-training/main/data/dataset_graph7.csv
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 49405 (48K) [text/plain]
Saving to: ‘dataset_graph7.csv.2’
dataset_graph7.csv. 100%[===================>] 48.25K --.-KB/s in 0.03s
2025-05-09 10:04:29 (1.37 MB/s) - ‘dataset_graph7.csv.2’ saved [49405/49405]
0.8199
위의 모든 단계를 이해할 필요는 없지만 결과물을 이해하여 왜 이 작업을 수행하는지 알 수 있도록 노력해야 합니다. 머신 러닝의 많은 프로세스는 (무엇보다도) 이진 분류의 일부로 내부 제품을 사용합니다. 양자역학은 다양한 상태 를 측정할 확률이 초기 상태 를 통해 내부 곱 에 의해 주어지기 때문에 이와 분명한 연관성을 가지고 있습니다. 따라서 위에서 수행한 작업은 두 데이터 포인트의 특징을 포함하는 양자 회로를 만들고 이를 양자 벡터의 공간에 매핑한 다음 측정을 통해 해당 공간에서 내적 곱을 추정하는 것입니다. 이것은 양자 커널 추정의 예입니다. 이 프로세스는 데이터 포인트 중 두 개(14일과 19일)에 대해서만 구현했습니다. 가능한 모든 쌍에 대해 이 작업을 수행하면 출력(이 경우 숫자 0.821...)을 가져올 수 있습니다 를 클릭하고 학습 데이터 세트의 모든 지점 간의 중첩을 설명하는 결과 행렬을 채웁니다. 이것이 바로 "커널 매트릭스"입니다.
이해도 점검
위의 프로세스에서 14번째와 19번째 데이터 포인트에 대한 커널 행렬 항목을 계산했습니다. 여기서 같은 데이터 요소를 두 번(예: 14번째와 다시 14번째) 사용하면 어떤 값을 얻어야 할까요? 다시 말해, 커널 행렬의 대각선 항목은 무엇이어야 할까요? 소음이 없을 때 이 질문에 답하되, 소음이 있는 경우 답과 편차가 있을 수 있다는 점에 유의하세요.
대각선은 1.0 이어야 합니다. 이 프로세스는 벡터와 벡터 자체의 정규화된 내적 곱을 계산해야 하며, 이 곱은 항상 1이어야 합니다.