Konsep Dasar dan Pentingnya Quantum Computing untuk Machine Learning / Artificial Intelligence

Spread the love

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) )

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.