양자 머신 러닝 소개
개요 및 동기
시작하기 전에, 콘텐츠 제공 및 사용자 경험 개선에 도움이 되는 짧은 사전 코스 설문 조사를 완료해 주세요.
Note: This survey is provided by IBM Quantum and relates to the original English content. To give feedback on doQumentation's website, translations, or code execution, please open a GitHub issue.
양자 머신 러닝에 오신 것을 환영합니다!
아래 영상은 아래 텍스트를 보완하는 간략한 소개를 제공합니다.
영상을 간략히 요약하고 보완하면 다음과 같습니다:
- 양자 컴퓨터에서 처음으로 어떤 문제가 해결된 후, 이후에 사람들이 고전 슈퍼컴퓨터에서 이를 수행하는 방법을 찾는 사례를 보았습니다. 고전 컴퓨팅과 양자 컴퓨팅이 서로의 한계를 밀어붙이는 이러한 사이클은 앞으로 몇 년간 계속될 가능성이 높습니다.
- 오류 감소 및 사용 가능한 Qubit 수 증가와 같은 분야의 발전이 이루어진다면, 양자 컴퓨팅이 고전 컴퓨팅에 비해 증명 가능한 이점을 가질 수 있는 특정 문제들이 있습니다. 하지만 지금은 여전히 탐색의 시간으로, 양자에 적합한 데이터셋과 유용한 양자 특징 맵을 찾고 있습니다.
- 양자 머신 러닝(QML)은 양자 컴퓨팅이 기존 고전 워크플로우를 보완하거나 강화할 수 있는 여러 흥미로운 분야 중 하나입니다.
머신 러닝(ML)은 데이터셋에 알고리즘을 적용하므로, QML은 데이터 또는 알고리즘 측면, 혹은 양쪽 모두에 양자 역학을 포함할 수 있습니다. 이러한 모든 가능성은 잠재적으로 흥미롭습니다. 하지만 우리는 주로 고전 데이터에 적용되는 양자 알고리즘에 대한 논의로 제한할 것입니다. 그 이유 중 하나는 고전 데이터를 가진 ML 문제들이 이미 매우 잘 연구되어 있고 광범위하게 이용 가능하기 때문입니다. 고전 데이터로 시작하는 문제를 해결하는 데 폭넓은 관심이 있습니다. 또 다른 이유는 QRAM의 부재입니다. 비교적 긴 시간 동안 대용량 양자 데이터를 저장하는 능력 없이는, 양자 데이터로 시작하는 방 법은 산업 적용 가능성에서 아직 꽤 멀리 있습니다. 또한 고전 데이터에 효율적인 방식으로 "양자적으로 접근"하는 방법도 불명확합니다. 특별히 관심을 갖는 두 가지 ML 유형은 레이블이 있는 데이터셋을 사용하여 알고리즘을 훈련하는 지도 학습과, 알고리즘이 레이블이 없는 샘플로부터 분포에 대해 학습하려는 비지도 학습입니다. 비지도 알고리즘은 예를 들어 동일한 분포에서 새로운 샘플을 생성하는 방법이나, 샘플을 유사한 특성을 가진 그룹으로 클러스터링하는 방법을 학습할 수 있습니다.

왼쪽 이미지는 지도 학습에서처럼 레이블이 있는 두 가지 범주의 데이터를 보여줍니다. 이 경우 범주는 선형적으로 분리 가능합니다. 오른쪽 이미지는 데이터 클러스터를 보여줍니다. 비지도 학습 작업에서 이 데이터는 처음에는 레이블이 없으며 알고리즘이 분포를 연구하여 클러스터를 찾을 것입니다. 알고리즘이 식별할 수 있는 예시 클러스터를 시각화하기 위해 데이터 포인트에 레이블이 붙었습니다. 두 방식의 핵심 차이점은 지도 학습 프로세스는 이미 레이블이 있는 데이터로 시작하고, 비지도 프로세스는 레이블이 없는 데이터로 시작한다는 것입니다(데이터가 마지막에 레이블이 붙더라도).
머신 러닝에 배경 지식이 있는 분들은 많은 솔루션 방법들이 데이터를 더 높은 차원의 공간으로 매핑하는 것을 포함한다는 것을 이미 알고 있을 것입니다. 이는 특히 커널의 맥락에서 잘 탐구되어 있습니다. 간단히 상기하자면, 데이터가 주어진 것과 동일한 차원에서 선, 평면, 또는 초평면(간결함을 위해 "초평면"이라고 통칭하겠습니다)으로 범주로 분리 가능한 경우가 있습니다. 이는 위의 첫 번째 이미지에 나타나 있습니다. 다른 경우에는 두 번째 이미지에서처럼 해당 차원의 초평면으로 데이터를 분리할 수 없을 수 있습니다. 그러나 데이터에 더 높은 차원으로의 매핑에서 활용할 수 있는 구조가 있을 수 있으며, 이 경우 그 더 높은 차원의 공간에서 데이터가 분리 가능하게 됩니다. 이는 원형 대칭을 가진 2D 데이터를 데이터 포인트가 포물면을 따라 배열되는 3D 공간으로 매핑하는 것에 예시되어 있습니다.

QML의 공통적인 목표는 낮은 차원의 특징 집합에서 더 높은 차원의 공간으로의 매핑을 찾아 데이터 포인트를 효과적으로 분리하여 새로운 데이터 포인트를 분류하는 데 매핑을 사용할 수 있도록 하는 것입니다. 하지만 이는 쉬운 작업이 아니며, 머신 러닝에서 양자 컴퓨팅의 잠재적 유용성에 관한 모든 논의는 적절한 주의 사항을 동반해야 합니다. 특히 데이터셋 선택의 미묘함과 유틸리티 규모 달성의 어려움을 다루어야 합니다. 또한 고전 알고리즘이 이미 효율적으로 잘 처리하는 데이터에서 고전 ML 알고리즘을 능가하려는 시도에서 벗어나, 유용할 수 있는 새로운 특징 맵을 탐색하는 논의로 전환해야 합니다.
기대치 관리
QML 응 용 프로그램에 관한 문헌에서 사용되는 많은 데이터셋은 "특징 엔지니어링"된 것으로, 즉 양자 컴퓨팅이 유용한 좁은 사용 사례를 보여주기 위해 데이터셋을 선택하거나 생성한다는 의미입니다. 이것이 속임수처럼 보인다면 우리는 당면한 과제를 오해하고 있는 것입니다. 일부 양자 특징 맵이 우리가 모든 또는 많은 분류 작업을 고전 머신 러닝 알고리즘보다 더 효율적으로 또는 확장 가능하게 해결할 수 있게 한다는 것은 사실이 아닙니다. 오히려 일부 양자 특징 맵(전부가 아닌)은 고전 특징 맵과 다르게 동작합니다. 그러면 당면한 과제는 복잡한 데이터 구조의 맥락에서 양자 Circuit을 탐색하는 것입니다. 다루어야 할 몇 가지 구체적인 질문은:
- 어떤 양자 Circuit이 고전 대안과 비교하여 새로운 방식으로 동작할 가능성이 가장 높은가?
- 이러한 새로운 양자 Circuit을 사용하여 가장 잘 탐색할 수 있는 특성을 가진 데이터가 포함된 실제 문제가 있는가?
- 이러한 양자 Circuit은 근미래 양자 컴퓨터에서 확장 가능한가?
불충분한 설명
양자 컴퓨팅이 강력할 수 있는 방법에 대한 단순화된 설명을 종종 접하게 됩니다. 그 내용은 대략 이렇습니다:
고전 컴퓨터가 비트 정보를 사용하는 것처럼, 양자 컴퓨터는 Qubit을 사용합니다. 예를 들어 4개의 비트가 주어졌을 때, 고전 컴퓨터는 개의 가능한 상태 중 하나를 취할 수 있는 반면, 양자 컴퓨터는 16개의 모든 상태를 동시에 중첩하여 존재할 수 있으며, 이 전체 중첩에 대해 연산이 수행될 수 있습니다. 어떤 경우에는, 이것이 자연스럽게 더 높은 차원의 공간으로의 매핑에 기반한 잠재적으로 흥미로운 학습 알고리즘을 설계할 수 있게 합니다.
이것은 사실이지만 불충분하며, 우리가 설명할 것처럼 약간 오해를 불러일으킵니다. 또한 복소수와 실수 계수 간의 차이가 강조되는 것을 볼 수 있습니다:
시스템이 다른 상태에 있을 특정 확률을 가지고 있다고 설명될 수 있는 확률론적 고전 시스템은 다음과 같이 설명될 수 있습니다.
이러한 시스템에서 계수 , , 등은 양의 실수일 때만 의미 있을 수 있습니다. 양자 컴퓨터의 상태는 복소수가 될 수 있는 확률 진폭으로 설명됩니다.
위의 진술들은 사실이 되도록 매우 신중하게 작성되었습니다(표면적으로 유사한 많은 진술들은 잘못되었습니다). 하지만 이 올바른 진술들은 머신 러닝에서 양자 컴퓨팅의 힘에 대한 설명이 아닙니다. 한 가지 이유는 머신 러닝에 대한 양자 컴퓨팅의 모든 응용은 측정을 포함하며 우리는 한 번에 여러 상태에 있는 Qubit을 측정할 수 없습니다. Qubit을 와 같은 중첩으로 준비할 수 있지만 측정은 또는 을 산출할 것입니다. 따라서 최소한, 차원성 증가에 관한 이 이야기는 불완전합니다. 또한 커널의 맥락에서, 양자 컴퓨팅에서의 증가된 차원은 고전 대안에 대한 계산 능력의 충분 조건이 될 수 없습니다. 가우시안 커널은 무한 차원이기 때문입니다. 무한 차원 매핑 벡터를 계산할 필요성을 우회하는 "커널 트릭"과 함께만 가우시안 특징 맵이 사용된다는 미묘한 점이 있습니다. 하지만 요점은 여전히 남아 있습니다:
얽힌 양자 상태의 고차원성은 지수적 병렬성이 아니며, 머신 러닝에서 증가된 능력을 위한 충분 조건이 아닙니다.
이어지는 레슨에서 우리는 양자 Circuit을 머신 러닝 작업에 통합하는 워크플로우를 제시하며, 이는 양자 컴퓨팅의 능력 탐색을 용이하게 하려는 명시적인 목적으로 진행합니다. 이 코스의 어떤 특징 맵이나 알고리즘도 일반적인 문제에 대해 더 나은 머신 러닝 결과로의 빠른 경로로 제시되지 않습니다. 그러한 특징 맵이나 알고리즘은 존재하지 않기 때문입니다. 오히려 우리는 유용한 양자 컴퓨팅 탐색에 사용할 수 있는 광범위한 양자 도구들을 제시합니다.
양자화 해제
양자화 해제(Dequantization)는 주어진 양자 알고리즘을 특정 작업 집합(일반적으로 확장성 포함)에 대해 양자 알고리즘과 유사하게 수행하는 고전 알고리즘으로 대체하는 것을 말합니다. 일부 정의에 따르면 고전 알고리즘은 양자 알고리즘보다 다항식적으로만 느리게 수행해야 합니다.
처음에 고전 알고리즘에 비해 상당한 속도 향상을 제공한다고 생각되었던 여러 양자 머신 러닝(QML) 알고리즘들이 최근 몇 년간 양자화 해제되었습니다. 이 양자화 해제 과정은 머신 러닝에 대한 양자 접근 방식의 잠재적 이점과 한계에 대한 중요한 통찰로 이어졌습니다.
가장 주목할 만한 양자화 해제 결과 중 하나는 Ewin Tang의 추천 시스템에 관한 연구에서 나왔습니다. Tang은 이전에 양자 컴퓨터만이 달성할 수 있다고 생각되었던 속도로 추천 작업을 수행할 수 있는 고전 알고리즘을 발견했습니다. 이 발견은 이 문제에 대해 양자 알고리즘이 지수적 이점을 가진다는 가정에 도전했습니다. Shin et al.의 더 최근 연구는 변분 양자 머신 러닝 모델의 함수 클래스의 양자화 해제 가능성에 대한 조건을 식별하는 데 초점을 맞추고 있습니다.
양자화 해제에 대한 일반적인 접근 방식 중 하나(유일한 방법은 아니지만)는 데이터 로딩 오버헤드를 고려하는 것입니다. 즉, 고전 데이터에 적용되는 양자 알고리즘은 고전 데이터가 양자 컴퓨터로 인코딩되는 단계를 포함합니다. 양자 알고리즘이 이미 양자 데이터를 사용할 수 있는 시작점을 가정한다면, 인코딩에 필요한 시간을 사실상 숨기는 것입니다. 양자 데이터를 가정하는 것이 합리적인 맥락도 있지만, 관심 있는 많은 응용 프로그램은 고전 데이터로 시작할 것입니다. 일부 양자화 해제 사례에서는 이 인코딩 시간이 포함되고 고전 데이터 로딩이 효율적으로 수행될 수 있을 때, 양자 알고리즘이 더 이상 고전 알고리즘보다 뛰어나지 않음을 보여주었습니다.
알고리즘이 양자화 해제될 수 없더라도, 그것이 모든 고전 알고리즘보다 더 효율적이거나 확장 가능하다는 의미는 아닙니다. 극단적이고 인위적인 예로: 크기 k의 집합에서 가장 큰 j개의 요소를 선택하는 알고리즘을 상상해 보세요. Shor 알고리즘을 사용하여 k개의 각 요소를 소인수로 인수분해한 다음, 소인수를 사용하여 가장 큰 요소를 결정하는 양자 알고리즘을 작성할 수 있습니다. 이러한 알고리즘은 양자화 해제될 수 없을 가능성이 높지만, 가장 큰 요소를 선택하는 고전 알고리즘보다 훨씬 덜 효율적입니다(불필요한 인수분해 부분은 제외하고).
존재 증명
2021년 IBM Quantum®의 연구원 Yunchao Liu, Srinivasan Arunachalam, 그리고 Kristan Temme는 Nature에 지도 머신 러닝에서의 엄격하고 견고한 양자 속도 향상이라는 논문을 발표했습니다. 위의 주의 사항과 일관되게, 이 연구를 위해 (1) 고전적으로 어렵다고 알려져 있고, (2) 양자 알고리즘이 속도 향상을 보여주기에 적합한 분류 문제가 신중하게 선택되었습니다.
이 논문은 이산 로그에 기반한 데이터 분류를 다룹니다. 논문을 인용하면, "큰 소수 와 의 생성자 에 대해, 고전 알고리즘이 를 표현하는 데 필요한 비트 수 에서 다항식 시간으로 입력 에 대해 를 계산할 수 없다는 것은 널리 믿어지는 추측입니다." 반면에, Shor 알고리즘은 다항식 시간에 이산 로그 문제를 해결하는 것으로 알려져 있습니다. 따라서 이 문제의 선택은 위의 기준을 동시에 충족합니다: 고전적 어려움(양자화 해제될 가능성이 낮음), 그리고 양자 알고리즘에 적합하다고 알려져 있음.
이러한 분류 문제의 현명한 선택을 통해 저자들은 양자 커널 방법(아래에 간략히 스케치되고 이후 레슨에서 논의됨)을 사용하여 종단간(end-to-end)이고 견고한 지수적 속도 향상을 보여줄 수 있었습니다. 여기서 "종단간"은 고전 데이터로 시작하는 것에 대한 가정을 말하며, 이 경우 저자들은 데이터 인코딩 시간을 포함합니다. 여기서 "견고한"은 분류할 데이터가 양자 알고리즘을 사용하여 넓은 마진으로 분리되어, 유한 샘플링 오류와 같은 실제 세계의 고려 사항에 대해 분류 성공이 견고하다는 것을 말합니다.
이 모든 것은 양자 커널이 지수적 속도 향상을 제공할 수 있는 문제들이 존재한다는 것을 말하고 있습니다. 하지만 과학의 현재 상태는 그러한 문제들이 양자 알고리즘에 적합해야 한다는 관찰이나 이론적 근거에 기반하여 선택된다는 것입니다. 고전 컴퓨터가 이미 잘 수행하는 머신 러닝 작업에 대해 양자 속도 향상을 기대하는 것은 현실적이지 않습니다.
이 코스의 학습자들에게 양자 유틸리티 탐색을 위한 이상적인 사례를 식별하는 것은 엄청난 책임입니다. 그리고 이것은 이러한 코스에서 완수될 수 있는 과제가 아닙니다. 그 탐색은 여러분과 같은 연구자들로 구성된 IBM Quantum 네트워크 전체의 과제입니다. 이 코스는 여러분이 자신의 전문 분야에서 양자 유틸리티를 탐색하기 시작할 수 있도록 QML 워크플로우와 인코딩 전략을 시연할 것입니다.
이 소개가 양자 머신 러닝에 대해 몇 가지를 명확히 했길 바랍니다:
- 양자 알고리즘은 고전적으로 어렵고 양자 알고리즘에 잘 맞는 매우 특정한 문제에 대해 고전 알고리즘보다 지수적 속도 향상을 제공할 수 있습니다.
- 양자 컴퓨팅에서 얽힌 상태의 고차원성은 중요하지만, 단순히 고전 알고리즘에 비해 이점을 얻기에는 충분하지 않습니다.
- 양자 알고리즘에 잘 맞는 문제를 찾는 것은 매우 어려운 작업이며, 이는 대부분 이 코스의 학습자들에게 달려 있습니다.
중간 점검 질문
양자 상태를 고전 상태와 다르게 만드는 것은 무엇인가요?
답변:
많은 것들이 있습니다. 특히: 복소수 계수, 그리고 단일 복사본을 가진 중첩입니다. 얽힘과 간섭을 포함하여 향후 레슨에서 논의될 많은 다른 차이점들이 있습니다.
참 또는 거짓? 고도로 얽힌 양자 상태는 우리가 양자 컴퓨터에서 대부분의 머신 러닝 문제를 더 효율적으로 해결할 수 있게 합니다.
답변:
거짓입니다. 대부분의 머신 러닝 문제는 고전 알고리즘에 의해 매우 효율적으로 해결되며 양자 알고리즘이 상당한 속도 향상을 제공할 가능성은 낮습니다. QML의 목표는 양자 상태로 잘 설명되는 특징을 가진 데이터셋을 찾고/또는 모델의 정확도를 최적화하는 데이터 특징의 매핑을 찾는 것입니다.
코스 학습 목표
이 코스를 완료함으로써 다음과 같은 핵심 기술과 역량을 쌓을 것으로 기대할 수 있습니다. 학습자들은 다음을 할 수 있게 됩니다:
-
QML이 무엇인지, 그리고 양자가 고전 머신 러닝과 어떻게 연결되는지 설명할 수 있습니다.
-
ML 워크플로우에 양자 어휘와 핵심 용어를 적용할 수 있습니다.
-
QML 워크플로우의 핵심 구성 요소(다양한 유형)를 식별할 수 있습니다.
-
다양한 유형의 QML을 식별하고 구분할 수 있습니다.
-
Qiskit 패턴을 따르고 Qiskit Runtime 프리미티브를 사용하여 양자 커널 방법과 변분 양자 분류기를 구현할 수 있습니다.
-
QML이 가장 유망한 곳과 그렇지 않은 곳을 식별할 수 있습니다.
-
예제 문제를 자신의 데이터셋에 맞게 조정할 수 있습니다.
-
훈련 시간, 노이즈, 다중 상태 판독에서의 복합 오류와 같은 QML의 문제들을 인식할 수 있습니다.
-
QML이 자신의 조직에 이익이 될 수 있는 곳에 대한 권장 사항을 제시할 수 있습니다.
코스 구조
이 코스는 여러 레슨으로 구성되어 있습니다. 각 레슨에는 텍스트 전반에 걸쳐 여러 중간 점검 질문이 있어, 진행하면서 새로운 기술을 연습하거나 이해도를 확인할 수 있습니다. 이는 필수 사항이 아닙니다.
코스 마지막에는 20문항 퀴즈가 있습니다. Credly를 통해 양자 머신 러닝 배지를 획득하려면 이 퀴즈에서 최소 70% 이상을 득점해야 합니다. 70% 이상을 득점하면 이후 곧 배지가 자동으로 이메일 로 발송됩니다. 퀴즈는 두 번만 제출할 수 있습니다. 첫 번째 제출 후, 틀린 문제에 대해 두 번째 시도할 기회가 있습니다. 두 번째 제출 후에는 점수가 최종적입니다. 자세한 내용은 퀴즈를 참조하세요.
코스 구조는 다음과 같습니다:
- 레슨 1: 소개 및 개요
- 레슨 2: 머신 러닝 복습
- 레슨 3: 데이터 인코딩
- 레슨 4: 양자 커널 방법 및 지지 벡터 머신
- 레슨 5: 변분 양자 분류기 / 신경망
- 배지를 위한 시험
첫 번째 QML 코드 실행
종종 배경을 살펴보고 조각으로 분해하기 전에 목표를 먼저 파악하는 것이 도움이 됩니다. 아래 코드 셀은 양자 커널 방법의 간단한 예시를 수행합니다. 구체적으로, 단일 커널 행렬 요소가 계산됩니다. 커널 방법이나 양자 커널에 익숙하지 않은 사용자들은 이것에 당황하지 않아도 됩니다. 이 코스의 여러 레슨에서 이 셀에서 수행되는 것을 정확히 해부하는 데 할애될 것입니다.
이 코드를 통해 우리는 동시에 Qiskit 패턴을 소개합니다: 유틸리티 규모에서 양자 컴퓨팅에 접근하기 위한 프레임워크입니다. 이 프레임워크는 매우 일반적이고 대부분의 문제에 적용될 수 있는 네 가지 단계로 구성됩니다(일부 워크스트림에서는 특정 단계가 여러 번 반복될 수 있습니다).
Qiskit 패턴:
- 1단계: 고전 입력을 양자 문제로 매핑
- 2단계: 양자 실행을 위한 문제 최적화
- 3단계: Qiskit Runtime 프리미티브를 사용하여 실행
- 4단계: 분석 / 후처리
아래 셀에서 우리는 각 단계에 대해 간략한 설명만 제공합니다. 더 자세히 알아볼 수 있는 적절한 레슨을 찾기에 충분한 정도만입니다.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy pandas qiskit
# 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 Qiskit Runtime 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 Qiskit Runtime 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_shots
--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
위의 모든 단계를 이해할 필요는 없지만, 출력 결과를 이해하려고 노력해야 합니다. 그래야 우리가 왜 이것을 하는지 알 수 있습니다. 머신 러닝의 많은 프로세스는 이진 분류(그 외에도)의 일환으로 내적을 사용합니다. 양자 역학은 이것과 명백한 연결이 있습니다. 다양한 상태 를 측정할 확률이 내적을 통해 초기 상태 로 주어지기 때문입니다: . 따라서 우리가 위에서 한 것은 두 데이터 포인트의 특징을 포함하는 양자 Circuit을 만들고, 이를 양자 벡터의 공간으로 매핑한 다음, 측정을 통해 해당 공간에서의 내적을 추정하는 것입니다. 이것이 양자 커널 추정의 예입니다. 우리는 두 데이터 포인트(14번째와 19번째)에 대해서만 이 프로세스를 구현했습니다. 가능한 모든 쌍에 대해 이것을 수행한다면, 출력(이 경우 0.821... 값)을 가져와서 훈련 데이터셋의 모든 포인트 간의 겹침을 설명하는 결과 행렬을 채울 수 있습니다. 이것이 "커널 행렬"입니다.
이해도 확인
아래 질문을 읽고, 답을 생각한 다음, 삼각형을 클릭하여 답을 확인하세요.
위의 프로세스에서 14번째와 19번째 데이터 포인트에 대한 커널 행렬 항목을 계산했습니다. 동일한 데이터 포인트를 두 번 사용하면(예: 14번째와 14번째를 다시) 어떤 값을 얻어야 할까요? 다시 말해, 커널 행렬의 대각선 항목은 무엇이어야 할까요? 노이즈가 없는 상황에서 이 질문에 답하되, 노이즈가 있는 경우 답변에서 편차가 가능하다는 점을 유의하세요.
답변:
대각선은 1.0이어야 합니다. 이 프로세스는 벡터와 자신의 정규화된 내적을 계산하는 것으로, 항상 1이어야 합니다.