Pengenalan kepada Pembelajaran Mesin Kuantum
Gambaran keseluruhan dan motivasi​
Sebelum memulakan, sila lengkapkan kaji selidik pra-kursus yang ringkas ini, yang penting untuk membantu memperbaiki tawaran kandungan dan pengalaman pengguna kami.
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.
Selamat datang ke pembelajaran mesin kuantum!
Video di bawah akan memberikan pengenalan ringkas yang dilengkapi oleh teks di bawah.
Untuk mengimbas kembali dan menambah video secara ringkas:
- Kita telah melihat masalah diselesaikan untuk pertama kalinya pada komputer kuantum, dan kemudian orang ramai mendapati cara untuk melakukannya pada superkomputer klasik. Kitaran pengkomputeran klasik dan kuantum yang menolak satu sama lain ke had mereka ini kemungkinan akan berterusan untuk beberapa tahun lagi.
- Terdapat masalah tertentu di mana pengkomputeran kuantum boleh mempunyai kelebihan yang terbukti berbanding pengkomputeran klasik, memandangkan kemajuan dalam bidang seperti pengurangan ralat dan bilangan Qubit yang tersedia. Tetapi ini masih merupakan masa penerokaan, mencari set data yang sesuai untuk kuantum dan peta ciri kuantum yang berguna.
- Pembelajaran mesin kuantum (QML) adalah salah satu daripada banyak bidang menarik di mana pengkomputeran kuantum boleh menambah atau melengkapi aliran kerja klasik yang sedia ada.
Pembelajaran mesin (ML) menggunakan algoritma pada set data, jadi QML mungkin secara munasabah termasuk mekanik kuantum sama ada dalam bahagian data atau algoritma, atau kedua-duanya. Semua kemungkinan ini berpotensi menarik. Tetapi kita akan kebanyakannya membatasi diri kepada perbincangan algoritma kuantum yang digunakan pada data klasik. Salah satu sebabnya adalah bahawa masalah ML dengan data klasik sudah begitu dikaji dengan baik dan tersedia secara meluas. Terdapat minat yang luas dalam menyelesaikan masalah yang bermula dengan data klasik. Sebab lain adalah kekurangan QRAM. Tanpa kemampuan untuk menyimpan sejumlah besar data kuantum dalam jangka masa yang agak panjang, kaedah yang bermula dengan data kuantum masih agak jauh dari kebolehgunaan kepada industri. Ia juga tidak jelas bagaimana untuk "mengakses secara kuantum" data klasik dengan cara yang cekap. Dua jenis ML yang sangat diminati adalah pembelajaran terkawal, di mana anda melatih algoritma menggunakan set data berlabel, dan pembelajaran tanpa pengawasan, di mana algoritma cuba belajar tentang taburan dari sampel tanpa label. Algoritma tanpa pengawasan mungkin, sebagai contoh, belajar cara menjana sampel baru dari taburan yang sama, atau cara mengelompokkan sampel ke dalam kumpulan dengan ciri-ciri yang serupa.

Imej kiri menunjukkan dua kategori data berlabel seperti dalam pembelajaran terkawal. Dalam kes ini, kategori-kategori boleh dipisahkan secara linear. Imej kanan menunjukkan kelompok data. Dalam tugas pembelajaran tanpa pengawasan, data ini pada mulanya tidak akan berlabel dan algoritma akan mengkaji taburannya, mungkin mencari kelompok. Untuk tujuan menggambarkan contoh kelompok yang mungkin dikenal pasti oleh algoritma, titik-titik data kini telah dilabel. Perbezaan utama antara keduanya adalah bahawa proses pembelajaran terkawal bermula dengan data yang sudah berlabel dan proses pembelajaran tanpa pengawasan bermula dengan data tanpa label, walaupun data dilabel pada akhirnya.
Mereka yang mempunyai latar belakang dalam pembelajaran mesin sudah tahu bahawa banyak kaedah penyelesaian melibatkan pemetaan data ke ruang berdimensi lebih tinggi. Ini terutamanya dikaji dengan baik dalam konteks kernel. Sebagai peringatan ringkas, kadang-kadang data boleh dipisahkan ke dalam kategori oleh garis, satah, atau hiperplan (kita akan selalu berkata "hiperplan" sahaja untuk keringkasan), dalam bilangan dimensi yang sama dengan data yang diberikan. Ini ditunjukkan dalam imej pertama di atas. Pada masa lain, data mungkin tidak boleh dipisahkan oleh hiperplan dalam dimensi-dimensi itu, seperti yang ditunjukkan dalam imej kedua. Tetapi masih boleh ada struktur pada data yang boleh dieksploitasi dalam pemetaan ke dimensi yang lebih tinggi, yang kemudian meninggalkan data boleh dipisahkan dalam ruang berdimensi tinggi itu. Ini diilustrasikan dalam pemetaan data 2D dengan simetri bulat ke dalam ruang 3D di mana titik-titik data disusun sepanjang permukaan paraboloid.

Matlamat umum dalam QML adalah mencari pemetaan dari set ciri berdimensi rendah ke ruang berdimensi lebih tinggi, yang memisahkan titik-titik data kita dengan berkesan supaya kita boleh menggunakan pemetaan untuk mengklasifikasikan titik data baru. Tetapi ini bukan tugas yang mudah, dan sebarang perbincangan tentang potensi kegunaan pengkomputeran kuantum dalam pembelajaran mesin mesti disertai dengan amaran yang sesuai. Khususnya, kita mesti menangani nuansa dalam pemilihan set data dan cabaran dalam mencapai skala utiliti. Kita juga mesti beralih dari cuba mengatasi algoritma ML klasik pada data yang sudah dikendalikan dengan cekap dan baik oleh algoritma klasik dan memfokuskan semula perbincangan untuk menyiasat peta ciri baru yang mungkin berguna.
Mengurus jangkaan​
Banyak set data yang digunakan dalam aplikasi QML yang diterangkan dalam kesusasteraan adalah "ciri kejuruteraan", bermakna set data dipilih atau dijana khusus untuk menunjukkan kes penggunaan yang sempit di mana pengkomputeran kuantum berguna. Jika ini kelihatan seperti penipuan maka kita salah faham tentang tugas yang ada. Bukan benar bahawa beberapa peta ciri kuantum membolehkan kita menyelesaikan semua atau banyak tugas pengelasan dengan lebih cekap atau berskala berbanding algoritma pembelajaran mesin klasik. Sebaliknya, beberapa peta ciri kuantum (bukan semua) berkelakuan berbeza daripada peta ciri klasik. Tugas yang ada kemudiannya adalah untuk meneroka Circuit kuantum dalam konteks struktur data yang kompleks. Beberapa soalan khusus untuk ditangani adalah:
- Apakah Circuit kuantum yang paling mungkin berkelakuan dengan cara baru, berbanding alternatif klasik?
- Adakah terdapat masalah dunia sebenar yang melibatkan data dengan sifat yang paling baik diterokai menggunakan Circuit kuantum baru yang sedemikian?
- Adakah Circuit kuantum ini berskala pada komputer kuantum jangka dekat?
Penjelasan yang tidak mencukupi​
Seseorang sering menemui penjelasan yang disederhanakan tentang bagaimana pengkomputeran kuantum boleh menjadi berkuasa. Ia berbunyi seperti ini:
Sama seperti komputer klasik menggunakan bit maklumat, komputer kuantum menggunakan Qubit. Diberikan bilangan bit, katakan 4, komputer klasik boleh mengambil mana-mana satu daripada keadaan yang mungkin, manakala komputer kuantum boleh wujud dalam superposisi semua 16 keadaan serentak, dan operasi boleh dilakukan pada keseluruhan superposisi ini. Dalam beberapa kes, ini secara semula jadi membolehkan kita mereka bentuk algoritma pembelajaran yang berpotensi menarik berdasarkan pemetaan ke ruang berdimensi lebih tinggi.
Ini adalah pernyataan yang benar, tetapi ia tidak mencukupi, dan sedikit mengelirukan seperti yang akan kita jelaskan. Seseorang juga melihat perbezaan antara pekali kompleks dan nyata yang ditekankan, seperti dalam:
Sistem klasik probabilistik di mana sistem boleh diterangkan sebagai mempunyai kebarangkalian tertentu untuk berada dalam keadaan berbeza, boleh diterangkan seperti berikut.
Dalam sistem sedemikian, pekali , , , dan seterusnya hanya boleh bermakna jika ia adalah nombor nyata positif. Keadaan dalam komputer kuantum diterangkan oleh amplitud kebarangkalian yang boleh menjadi nombor kompleks.
Pernyataan di atas telah dibuat dengan sangat berhati-hati supaya ia benar (banyak pernyataan yang kelihatan serupa pada permukaan adalah tidak betul). Tetapi pernyataan yang betul ini bukan penjelasan tentang kuasa pengkomputeran kuantum dalam pembelajaran mesin. Untuk satu perkara, sebarang aplikasi pengkomputeran kuantum kepada pembelajaran mesin akan melibatkan pengukuran dan kita tidak boleh mengukur Qubit untuk berada dalam pelbagai keadaan serentak. Kita boleh menyediakan Qubit dalam superposisi seperti tetapi pengukuran akan menghasilkan sama ada atau . Jadi sekurang-kurangnya, cerita tentang peningkatan dimensi ini tidak lengkap. Lebih-lebih lagi, dalam konteks kernel, dimensi yang meningkat dalam pengkomputeran kuantum tidak boleh menjadi syarat yang mencukupi untuk kuasa pengiraan berbanding alternatif klasik, kerana kernel Gaussian adalah berdimensi tak terhingga. Terdapat kehalusan di sana, dalam erti kata peta ciri Gaussian hanya digunakan bersama "helah kernel" yang mengelak keperluan untuk mengira vektor yang dipetakan berdimensi tak terhingga. Tetapi perkara itu tetap:
Dimensi tinggi keadaan kuantum yang berkait bukan keselarian eksponen, dan bukan syarat yang mencukupi untuk peningkatan kuasa dalam pembelajaran mesin.
Dalam pelajaran-pelajaran yang berikut, kita membentangkan aliran kerja untuk menggabungkan Circuit kuantum ke dalam tugas pembelajaran mesin, dan kita melakukan ini dengan tujuan eksplisit memudahkan penerokaan kuasa pengkomputeran kuantum. Tiada peta ciri atau algoritma dalam kursus ini dikemukakan sebagai jalan pintas untuk hasil pembelajaran mesin yang lebih baik bagi masalah umum, kerana tiada peta ciri atau algoritma sedemikian wujud. Sebaliknya, kita menyajikan pelbagai alat kuantum untuk digunakan dalam penerokaan pengkomputeran kuantum yang berguna.
Dekuantisasi​
Dekuantisasi merujuk kepada penggantian algoritma kuantum tertentu dengan algoritma klasik yang berprestasi serupa dengan algoritma kuantum untuk set tugas tertentu, biasanya termasuk penskalaan. Mengikut beberapa definisi, algoritma klasik seharusnya berprestasi hanya lebih perlahan secara polinomial berbanding algoritma kuantum.
Beberapa algoritma pembelajaran mesin kuantum (QML) yang pada mulanya difikir memberikan laju yang signifikan berbanding algoritma klasik telah didekuantisasikan dalam beberapa tahun kebelakangan ini. Proses dekuantisasi ini telah membawa kepada wawasan penting tentang kelebihan dan had potensi pendekatan kuantum kepada pembelajaran mesin.
Salah satu keputusan dekuantisasi yang paling ketara datang dari kerja Ewin Tang tentang sistem cadangan. Tang menemui algoritma klasik yang boleh melaksanakan tugas cadangan pada kelajuan yang sebelum ini difikirkan hanya boleh dicapai oleh komputer kuantum. Penemuan ini mencabar andaian bahawa algoritma kuantum mempunyai kelebihan eksponen untuk masalah ini. Kerja terkini oleh Shin et al. telah memberi tumpuan kepada mengenal pasti syarat pada kebolehkuantisasian kelas fungsi model pembelajaran mesin kuantum variasi.
Satu pendekatan umum kepada dekuantisasi (walaupun bukan satu-satunya helah) adalah melalui pertimbangan overhead pemuatan data. Iaitu, mana-mana algoritma kuantum yang digunakan pada data klasik akan mempunyai langkah di mana data klasik dikodkan ke dalam komputer kuantum. Jika algoritma kuantum mengandaikan titik permulaan di mana data kuantum sudah tersedia, maka seseorang secara berkesan menyembunyikan masa yang diperlukan untuk pengekodan. Terdapat konteks di mana mengandaikan data kuantum mungkin munasabah, tetapi banyak aplikasi yang diminati akan bermula dengan data klasik. Beberapa kes dekuantisasi telah menunjukkan bahawa apabila masa pengekodan ini dimasukkan, dan apabila pemuatan data klasik boleh dilakukan dengan cekap, algoritma kuantum tidak lagi mengatasi rakan sejawat klasiknya.
Walaupun algoritma tidak boleh didekuantisasikan, itu tidak bermakna ia lebih cekap atau berskala berbanding semua algoritma klasik. Sebagai contoh yang melampau dan dibuat-buat: bayangkan algoritma untuk memilih elemen j terbesar daripada set bersaiz k. Seseorang boleh menulis algoritma kuantum yang menggunakan algoritma Shor untuk memfaktorkan setiap k elemen kepada faktor perdana, dan kemudian menentukan elemen terbesar menggunakan faktor perdana. Algoritma sedemikian mungkin tidak boleh didekuantisasikan, tetapi jauh lebih tidak cekap berbanding algoritma klasik untuk mencapai pemilihan elemen terbesar yang sama (walaupun bukan bahagian pemfaktoran yang tidak perlu).
Bukti kewujudan​
Pada 2021, penyelidik IBM Quantum® Yunchao Liu, Srinivasan Arunachalam, dan Kristan Temme menerbitkan kertas dalam Nature, A rigorous and robust quantum speed-up in supervised machine learning. Konsisten dengan amaran di atas, masalah pengelasan dipilih dengan teliti untuk kerja ini yang (1) diketahui sukar secara klasik, dan (2) sesuai untuk algoritma kuantum menunjukkan laju.
Kertas itu menangani pengelasan data berdasarkan logaritma diskrit. Untuk memetik kertas tersebut, "Untuk nombor perdana besar dan penjana dari , adalah konjektur yang dipercayai secara meluas bahawa tiada algoritma klasik boleh mengira pada input , dalam masa polinomial dalam , bilangan bit yang diperlukan untuk mewakili ." Sebaliknya, algoritma Shor diketahui menyelesaikan masalah log diskrit dalam masa polinomial. Pilihan masalah ini dengan itu memenuhi kriteria di atas secara serentak: kesukaran klasik (tidak mungkin didekuantisasikan), dan diketahui sesuai untuk algoritma kuantum.
Melalui pilihan masalah pengelasan yang bijak ini, para pengarang dapat menunjukkan laju eksponen menggunakan kaedah kernel kuantum (dirangkumkan secara ringkas di bawah dan dibincangkan dalam pelajaran kemudian) yang bersifat hujung-ke-hujung dan teguh. Di sini, "hujung-ke-hujung" merujuk kepada andaian tentang bermula dengan data klasik; para pengarang dalam kes ini memang memasukkan masa untuk pengekodan data. Di sini, "teguh" merujuk kepada fakta bahawa data yang hendak diklasifikasikan dipisahkan dengan jidar yang lebar menggunakan algoritma kuantum, supaya kejayaan pengelasan adalah teguh terhadap pertimbangan dunia sebenar seperti ralat persampelan terhingga.
Semua ini bermaksud bahawa masalah memang wujud di mana kernel kuantum boleh menghasilkan laju eksponen. Tetapi keadaan sains semasa adalah bahawa masalah sedemikian dipilih berdasarkan pemerhatian atau justifikasi teori bahawa ia seharusnya sesuai dengan algoritma kuantum. Adalah tidak realistik untuk mengharapkan laju kuantum untuk tugas pembelajaran mesin yang komputer klasik sudah lakukan dengan cukup baik.
Mengenal pasti kes-kes ideal sedemikian untuk penerokaan utiliti kuantum adalah tanggungjawab yang besar bagi pelajar dalam kursus ini. Dan ia bukan tugas yang boleh dilaksanakan dalam kursus seperti ini. Penerokaan itu adalah tugas untuk Rangkaian IBM Quantum secara keseluruhan, terdiri daripada penyelidik seperti anda sendiri. Kursus ini akan menunjukkan aliran kerja QML dan strategi pengekodan supaya anda boleh mula meneroka utiliti kuantum dalam bidang kepakaran subjek anda.
Kami harap pengenalan ini telah menjelaskan beberapa perkara tentang pembelajaran mesin kuantum:
- Algoritma kuantum boleh menawarkan laju eksponen berbanding algoritma klasik untuk masalah yang sangat spesifik yang sukar secara klasik, dan sesuai dengan algoritma kuantum.
- Dimensi tinggi keadaan yang berkait dalam pengkomputeran kuantum penting, tetapi ia tidak mencukupi hanya untuk mendapatkan kelebihan berbanding algoritma klasik.
- Mencari masalah yang sesuai dengan algoritma kuantum adalah tugas yang sangat sukar, dan satu yang sebahagian besarnya akan jatuh kepada pelajar dalam kursus ini.
Soalan semak masuk​
Apakah yang membezakan keadaan kuantum daripada keadaan klasik?
Jawapan:
Banyak. Terutamanya: pekali kompleks, dan superposisi dengan salinan tunggal. Terdapat banyak perbezaan lain yang akan dibincangkan dalam pelajaran-pelajaran akan datang, termasuk keberkaitan dan interferens.
Benar atau Palsu? Keadaan kuantum yang sangat berkait membolehkan kita menyelesaikan kebanyakan masalah pembelajaran mesin dengan lebih cekap pada komputer kuantum.
Jawapan:
Palsu. Kebanyakan masalah pembelajaran mesin diselesaikan dengan sangat cekap oleh algoritma klasik dan algoritma kuantum tidak mungkin menawarkan sebarang laju yang ketara. Matlamat dalam QML adalah mencari set data dengan ciri yang diterangkan dengan baik oleh keadaan kuantum dan/atau mencari pemetaan ciri data yang mengoptimumkan ketepatan model.
Matlamat pembelajaran kursus​
Dengan menyelesaikan kursus ini, anda boleh dijangka membina kemahiran dan kecekapan teras berikut. Pelajar akan dapat:
-
Menerangkan apa itu QML dan di mana kuantum berhubung dengan pembelajaran mesin klasik.
-
Menggunakan perbendaharaan kata kuantum dan istilah utama kepada aliran kerja ML.
-
Mengenal pasti komponen utama aliran kerja QML (pelbagai jenis).
-
Mengenal pasti jenis-jenis QML yang berbeza dan membezakan antara mereka.
-
Melaksanakan kaedah kernel kuantum dan pengelas kuantum variasi menggunakan primitif Qiskit Runtime dan mengikuti corak Qiskit.
-
Mengenal pasti di mana QML paling menjanjikan dan di mana tidak.
-
Menyesuaikan contoh masalah kepada set data mereka sendiri.
-
Sedar tentang isu dalam QML seperti masa latihan, hingar, dan ralat berganda dalam pembacaan pelbagai keadaan.
-
Membuat cadangan di mana QML mungkin memberi manfaat kepada organisasi mereka.
Struktur kursus​
Kursus ini terdiri daripada beberapa pelajaran. Setiap pelajaran mempunyai beberapa soalan semak masuk sepanjang teks, supaya anda boleh mengamalkan kemahiran baru atau menyemak kefahaman anda semasa berjalan. Ini tidak diwajibkan.
Di penghujung kursus, terdapat kuiz 20 item. Anda mesti mendapat sekurang-kurangnya 70% dalam kuiz ini untuk mendapatkan lencana Pembelajaran Mesin Kuantum anda, melalui Credly. Jika anda mendapat sekurang-kurangnya 70%, lencana anda akan dihantar secara automatik melalui e-mel kepada anda, tidak lama selepas itu. Anda hanya boleh menghantar kuiz dua kali. Selepas penghantaran pertama, anda akan berpeluang untuk mencuba semula soalan yang anda terlepas. Selepas penghantaran kedua, markah anda adalah muktamad. Lihat kuiz untuk maklumat lanjut.
Struktur kursus adalah seperti berikut:
- Pelajaran 1: Pengenalan dan gambaran keseluruhan
- Pelajaran 2: Imbas kembali pembelajaran mesin
- Pelajaran 3: Pengekodan data
- Pelajaran 4: Kaedah kernel kuantum dan mesin vektor sokongan
- Pelajaran 5: Pengelas kuantum variasi / rangkaian neural
- Peperiksaan untuk lencana
Jalankan kod QML pertama anda​
Selalunya membantu untuk melihat ke mana kita akan pergi, sebelum memecahnya kepada kepingan, dan menyelami latar belakang. Sel kod di bawah menjalankan contoh mudah kaedah kernel kuantum. Khususnya, satu elemen matriks kernel tunggal dikira. Pengguna baru kepada kaedah kernel atau kernel kuantum tidak perlu terasa terintimidasi oleh ini; beberapa pelajaran dalam kursus ini akan dikhaskan untuk menghuraikan dengan tepat apa yang sedang dilakukan dalam sel-sel ini.
Dengan kod ini kita secara serentak memperkenalkan corak Qiskit: rangka kerja untuk mendekati pengkomputeran kuantum pada skala utiliti. Rangka kerja ini terdiri daripada empat langkah yang sangat umum dan boleh digunakan pada kebanyakan masalah (walaupun dalam beberapa aliran kerja, langkah-langkah tertentu mungkin diulang beberapa kali).
Corak Qiskit:​
- Langkah 1: Petakan input klasik kepada masalah kuantum
- Langkah 2: Optimumkan masalah untuk pelaksanaan kuantum
- Langkah 3: Laksanakan menggunakan Primitif Qiskit Runtime
- Langkah 4: Menganalisis / pemprosesan selepas
Dalam sel-sel di bawah, kita hanya menawarkan penjelasan ringkas tentang pelbagai langkah, cukup untuk anda mencari pelajaran yang sesuai untuk belajar lebih lanjut.
# 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
Walaupun anda tidak perlu memahami semua langkah di atas, kita harus cuba memahami output, supaya kita tahu mengapa kita melakukan ini. Banyak proses dalam pembelajaran mesin menggunakan hasil darab dalam sebagai sebahagian daripada pengelasan perduaan (antara perkara lain). Mekanik kuantum mempunyai hubungan yang jelas dengan ini, kerana kebarangkalian mengukur pelbagai keadaan diberikan oleh hasil darab dalam dengan keadaan awal melalui hasil darab dalam: . Jadi apa yang telah kita lakukan di atas adalah mencipta Circuit kuantum yang mengandungi ciri-ciri dua titik data kita, dan memetakannya ke dalam ruang vektor kuantum, kemudian menganggarkan hasil darab dalam dalam ruang itu melalui membuat pengukuran. Ini adalah contoh penganggaran kernel kuantum. Perhatikan kita hanya melaksanakan proses ini untuk dua titik data (ke-14 dan ke-19). Jika kita melakukan ini untuk semua pasangan yang mungkin, kita boleh mengambil output (dalam kes ini nombor 0.821...) dan mengisi matriks hasil yang menerangkan pertindihan antara semua titik dalam set data latihan. Inilah "matriks kernel".
Semak kefahaman anda​
Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segi tiga untuk mendedahkan penyelesaian.
Dalam proses di atas, kita mengira entri matriks kernel untuk titik data ke-14 dan ke-19. Nilai apakah yang patut kita peroleh jika kita menggunakan titik data yang sama dua kali, di sini (seperti ke-14 dan ke-14 lagi)? Dengan kata lain, apakah yang patut menjadi entri pepenjuru dalam matriks kernel? Jawab soalan ini tanpa hingar, tetapi perhatikan bahawa penyelewengan dari jawapan anda adalah mungkin dengan adanya hingar.
Jawapan:
Pepenjuru seharusnya 1.0. Proses ini seharusnya mengira hasil darab dalam ternormal sebuah vektor dengan dirinya sendiri, yang mesti sentiasa menjadi satu.