Konsep Dasar dan Pentingnya Quantum Computing untuk Machine Learning / Artificial Intelligence
Berikut ini saya akan coba jelaskan dasar-dasar Quantum Computing, dengan pendekatan praktek langsung menggunakan Matlab atau Octave.
Buat teman-teman yang awam dengan konsep matematika (seperti saya), cara ini lebih menyenangkan dan mudah dipahami.
Namun, kalau teman-teman familier dengan notasi matematika, langsung baca dari textbook saja (Quantum Computing for Computer Scientists).
Yanofsky, N. S., & Mannucci, M. A. (2008). Quantum computing for computer scientists. Cambridge University Press.
download pdf dari materi ini = KonsepDasarQuantumComputing
Pengantar Singkat untuk Quantum Computing dan pentingnya dalam ML/AI.
Beberapa istilah konsep dasar pada komputasi kuantum: Qubit, Gates, Circuit, Measurement …
Apa sih pentingnya komputasi quantum dalam AI / ML?
Tren penelitian yang baru muncul akhir-akhir ini: Machine Learning + Komputasi Quantum = Quantum Machine Learning.
Mengapa? Lebih cepat, kinerja generalisasi yang lebih baik, dll …
Classical Computer Bit vs Quantum Computing Qubit.
Bit adalah unit informasi yang menggambarkan sistem komputer klasik (2 jenis status = biner 0 atau 1).
Bit kuantum atau qubit adalah unit informasi yang menggambarkan sistem kuantum.
State dari sebuah quantum bit bisa jadi |0>, atau |1>, atau |0> DAN |1> secara bersamaan (superposisi).
Qubit dapat direpresentasikan menggunakan notasi ket |Ψ> atau matriks 2×1 dengan bilangan kompleks.
Contoh 2 Qubits (status qubit pertama adalah |0> dan qubit kedua adalah |1>)
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] qubits_01 = kron(qubit_0, qubit_1)
Entanglement: “spooky action at a distance”.
Dua partikel dapat terhubung sedemikian rupa sehingga tindakan yang dilakukan pada salah satu dari mereka dapat memiliki efek langsung pada partikel lainnya (yang berjarak jauh satu sama lain).
Jika kita mengukur qubit pertama dan ditemukan dalam keadaan |1> maka kita secara otomatis tahu bahwa keadaan dari qubit kedua adalah |1>.
Demikian pula, jika kita mengukur qubit pertama dan menemukannya dalam keadaan |0> maka kita tahu qubit kedua juga dalam keadaan |0>.
Gerbang Logikal Klasik: Not, And, Or, …
Gerbang logika klasik adalah cara memanipulasi bit.
Tidak semua gerbang logika dapat bekerja di komputer kuantum.
Di dunia kuantum, semua operasi (kecuali pengukuran) harus REVERSIBLE dan diwakili oleh matriks UNITARY.
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] NOT_gate = [0 1; 1 0] identity = NOT_gate * NOT_gate' not0 = NOT_gate * qubit_0 not1 = NOT_gate * qubit_1
Quantum Gates: controlled-NOT gate.
Gerbang kuantum adalah operator yang bekerja pada qubit.
Jika |x> = |0>, maka output |y> akan sama dengan input.
Jika |x> = |1>, maka output |y> akan menjadi kebalikannya.
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] CNOT_gate = [1 0 0 0; 0 1 0 0; 0 0 0 1; 0 0 1 0] qubits_00 = kron(qubit_0, qubit_0) caseNoFlip = CNOT_gate * qubits_00 qubits_10 = kron(qubit_1, qubit_0) caseFlip = CNOT_gate * qubits_10
Penjelasan: 2 input dengan status 1 dan 0, setelah kita terapkan gerbang CNOT, outputnya adalah status 1 dan 1 (qubit kedua dibalik).
Quantum Gates: Toffoli gate.
Gate ini mirip dengan controlled-NOT gate, tetapi dengan DUA bit kontrol.
Bit bawah FLIPS (terbalik) hanya ketika KEDUA dari dua bit teratas dalam keadaan |1>.
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] Toffoli_gate = [1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 1 0] qubits_000 = kron(qubit_0, kron(qubit_0, qubit_0)) caseNoFlip = Toffoli_gate * qubits_000 qubits_110 = kron(qubit_1, kron(qubit_1, qubit_0)) caseFlip = Toffoli_gate * qubits_110
Quantum Gates: Fredkin gate
JIKA kontrol |x> adalah |0>,
maka |y’> = |y> dan |z’> = |z> (nilainya tetap sama).
JIKA kontrol |x> adalah |1>,
maka hasilnya ditukar: |y’> = |z> dan |z’> = |y>.
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] Fredkin_gate = [1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 1 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 1; ] qubits_010 = kron(qubit_0, kron(qubit_1, qubit_0)) caseNoReversed = Fredkin_gate * qubits_010 qubits_110 = kron(qubit_1, kron(qubit_1, qubit_0)) caseWithReversed = Fredkin_gate * qubits_110
Penjelasan: Input= 010. setelah Fredkin gate, Output= 010 (tidak ada perubahan); Input = 110. Setelah kami menerapkan gerbang Fredkin, Output = 101
(karena x = 1, output y = input z, dan output z = input y)
Quantum Gates: Measurement.
Ketika kita mengukur sesuatu pada tingkat kuantum, objek kuantum yang telah kita ukur tidak lagi berada dalam keadaan superposisi, melainkan ia runtuh menjadi satu keadaan klasik tunggal (bit).
Kode program Matlab/Octave:
V = [5+3i; 6i] norm_v = norm(V) meas_v = V / norm_v prob_state_0 = abs(meas_v(1)^2) prob_state_1 = abs(meas_v(2)^2)
Quantum Gate untuk IF-THEN statement: controlled-U atau cU
Jika (qu)bit tertentu bernilai |1>, maka operasi tertentu akan dilakukan, jika tidak maka operasi tidak akan dilakukan.
Quantum Circuit.
Kombinasi gerbang operasi sekuensial dan paralel akan disebut sebagai sirkuit.
Rekomendasi buku saya untuk mempelajari Quantum Computing dari awal (bagi mereka yang awam Matematika, sama seperti saya):
– Quantum Computing for Computer Scientists (by Mirco A. Mannucci and Noson S. Yanofsky)
– Quantum Physics for Babies; Quantum Entanglement for Babies; Quantum Information for Babies; Quantum Computing for Babies; …
Quantum Circuit: Operasi Parallel & Sequential
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] NOT_gate = [0 1; 1 0] seq_NotNotGate = NOT_gate * NOT_gate state0 = seq_NotNotGate * qubit_0 state1 = seq_NotNotGate * qubit_1
Penjelasan: Not * Not = Identity matrix
Kode program Matlab/Octave:
qubit_0 = [1; 0] qubit_1 = [0; 1] qubits_00 = kron(qubit_0, qubit_0) qubits_11 = kron(qubit_1, qubit_1) NOT_gate = [0 1; 1 0] par_NotGate = kron(NOT_gate, NOT_gate) state00 = par_NotGate * qubits_11 state11 = par_NotGate * qubits_00
Penjelasan: dengan 2 input berstatus 0 dan 0, setelah kita menerapkan masing-masing dengan gerbang NOT, outputnya adalah qubit dengan status 1 dan 1.
Geometry of Complex Number.
Bilangan kompleks adalah magnitudo (panjang atau modulus) dan fase (Angle θ).
Kode program Matlab/Octave:
complex = 1 + i a = 1 b = 1 modulus_p = sqrt( a^2 + b^2 ) angle_theta = atan( b / a ) angle_theta_deg = rad2deg( angle_theta ) eulerformula_left = exp( i * angle_theta ) eulerformula_right = cos(angle_theta) + ( i * sin(angle_theta) ) minusone = exp( i * pi ) minusone = exp( i * deg2rad(180) ) one = exp( 2 * i * pi ) one = exp( 2 * i * deg2rad(180) )