Kernel Kuantum
Pengenalan kernel kuantum
"Metode kernel kuantum" mengacu pada metode apa pun yang menggunakan komputer kuantum untuk mengestimasi sebuah kernel. Dalam konteks ini, "kernel" mengacu pada matriks kernel atau entri individual di dalamnya. Ingat bahwa pemetaan fitur adalah pemetaan dari ke di mana biasanya dan tujuan pemetaan ini adalah membuat kategori data dapat dipisahkan oleh sebuah hyperplane. Fungsi kernel mengambil vektor dalam ruang yang telah dipetakan fiturnya sebagai argumen dan mengembalikan hasil kali dalam mereka, yaitu dengan . Secara klasik, kita tertarik pada pemetaan fitur yang fungsi kernelnya mudah dievaluasi. Ini sering berarti menemukan fungsi kernel yang hasil kali dalamnya di ruang yang dipetakan fitur bisa ditulis dalam bentuk vektor data asli, tanpa perlu membangun dan . Dalam metode kernel kuantum, pemetaan fitur dilakukan oleh Circuit kuantum, dan kernel diestimasi menggunakan pengukuran pada Circuit tersebut beserta probabilitas pengukuran relatifnya.
Dalam pelajaran ini kita akan memeriksa kedalaman Circuit encoding yang sudah dikodekan sebelumnya yang menggunakan entanglement substansial dan membandingkannya dengan kedalaman Circuit yang kita kodekan sendiri. Ini bukan untuk mengadvokasi satu metode di atas yang lain. Kamu mungkin menemukan bahwa Circuit yang sudah dikodekan terlalu dalam, dan entanglement dalam Circuit yang dibuat sendiri tidak cukup untuk berguna. Lagi-lagi, ini ditunjukkan hanya untuk memungkinkan eksplorasi kamu.
Sebelum menelusuri estimasi matriks kernel secara detail, mari kita uraikan alur kerja menggunakan bahasa pola Qiskit.
Langkah 1: Pemetaan input klasik ke masalah kuantum
- Input: Dataset pelatihan
- Output: Circuit abstrak untuk menghitung entri matriks kernel
Dengan dataset yang ada, titik awalnya adalah mengkodekan data ke dalam Circuit kuantum. Dengan kata lain, kita perlu memetakan data kita ke dalam ruang Hilbert dari state komputer kuantum kita. Kita melakukan ini dengan membangun Circuit yang bergantung pada data. Ada banyak cara melakukan ini, dan pelajaran sebelumnya menguraikan sejumlah pilihan. Kamu bisa membangun Circuit sendiri untuk mengkodekan data, atau menggunakan peta fitur yang sudah jadi seperti zz_feature_map. Dalam pelajaran ini, kita akan melakukan keduanya.
Perlu diingat bahwa untuk menghitung satu elemen matriks kernel, kita perlu mengkodekan dua titik yang berbeda, sehingga kita bisa mengestimasi hasil kali dalamnya. Alur kerja kernel kuantum penuh tentu saja melibatkan banyak hasil kali dalam antara vektor data yang dipetakan, serta metode machine learning klasik. Namun langkah inti yang diiterasi adalah estimasi satu elemen matriks kernel. Untuk ini kita pilih Circuit kuantum yang bergantung pada data dan memetakan dua vektor data ke dalam ruang fitur.

Untuk tugas menghasilkan matriks kernel, kita sangat tertarik pada probabilitas mengukur state , di mana semua Qubit berada dalam state . Untuk memahami ini, pertimbangkan bahwa Circuit yang bertanggung jawab untuk encoding dan pemetaan satu vektor data dapat ditulis sebagai , dan yang bertanggung jawab untuk encoding dan pemetaan adalah , dan notasikan state yang dipetakan sebagai
State-state ini adalah pemetaan data ke dimensi yang lebih tinggi, sehingga entri kernel yang kita inginkan adalah hasil kali dalam
Jika kita mengoperasikan state awal default dengan kedua Circuit dan , probabilitas mengukur state adalah
Ini persis nilai yang kita inginkan (hingga ). Lapisan pengukuran Circuit kita akan mengembalikan probabilitas pengukuran (atau yang disebut "kuasi-probabilitas", jika metode mitigasi error tertentu digunakan). Probabilitas yang menjadi perhatian kita adalah probabilitas state nol, .
Langkah 2: Optimasi masalah untuk eksekusi kuantum
- Input: Circuit abstrak, belum dioptimalkan untuk Backend tertentu
- Output: Circuit target dan observable, dioptimalkan untuk QPU yang dipilih
Dalam langkah ini, kita akan menggunakan fungsi generate_preset_pass_manager dari Qiskit untuk menentukan rutinitas optimasi untuk Circuit kita sehubungan dengan komputer kuantum nyata yang kita rencanakan untuk menjalankan eksperimen. Kita mengatur optimization_level=3, yang berarti kita akan menggunakan pass manager preset yang memberikan tingkat optimasi tertinggi. Dalam konteks ini, "optimasi" mengacu pada pengoptimalan implementasi Circuit pada komputer kuantum nyata. Ini mencakup pertimbangan seperti memilih Qubit fisik yang sesuai dengan Qubit dalam Circuit kuantum abstrak yang akan meminimalkan kedalaman Gate, atau memilih Qubit fisik dengan tingkat error terendah yang tersedia. Ini tidak secara langsung terkait dengan optimasi masalah machine learning (seperti optimizer klasik seperti COBYLA).
Tergantung pada bagaimana kamu mengimplementasikan langkah 2, kamu mungkin harus mengoptimalkan Circuit lebih dari sekali, karena setiap pasang titik yang terlibat dalam elemen matriks menghasilkan Circuit berbeda yang perlu diukur.
Langkah 3: Eksekusi menggunakan Qiskit Runtime Primitives
- Input: Circuit target
- Output: Distribusi probabilitas
Gunakan primitive Sampler dari Qiskit Runtime untuk merekonstruksi distribusi probabilitas state yang dihasilkan dari sampling Circuit. Perhatikan bahwa kamu mungkin melihat ini disebut sebagai "distribusi kuasi-probabilitas", istilah yang berlaku di mana noise menjadi masalah dan ketika langkah-langkah tambahan diperkenalkan, seperti dalam mitigasi error. Dalam kasus seperti itu, jumlah semua probabilitas mungkin tidak persis sama dengan 1; oleh karena itu "kuasi-probabilitas".
Langkah 4: Post-processing, kembalikan hasil dalam format klasik
- Input: Distribusi probabilitas
- Output: Satu elemen matriks kernel, atau matriks kernel jika diulang
Hitung probabilitas mengukur