La simulazione del modello quantistico

La simulazione del modello quantistico
La necessità di creare un modello di rete neurale quantistica nasce
direttamente dal progetto di interfaccia neurone-silicio per confrontare i
risultati teorici di evoluzione della rete con i risultati delle misurazioni
delle cellule staminali.
Questo confronto ci permetterà di capire, o di intuire, se i neuroni
hanno un comportamento quantistico oppure si comportano solo
classicamente.
Il nostro modello
La rete neurale quantistica è costituita da 8 qubit totalmente connessi
e inizializzati in modo random. Lo spazio di Hilbert su cui la rete opera è
La rete neurale quantistica con 8 bit
quindi di 28.
Lo stato iniziale della rete è definito dal prodotto tensoriale dei qubit
ed è un vettore unitario costituito da 28 elementi:
 ... 
 
 ... 
qbit1  qbit2  ...  qbit8   ...  }28
 
 ... 
 ... 
 
elementi
 0
 
1
 0
 
1 1  0  0
001            
 0  0 1  0
 0
 
 0
 0
 
Prodotto tensoriale di 3 qubit
La rete evolve in modo asincrono operando localmente di volta in
volta su una coppia di qubit scelti a caso, secondo la seguente
trasformazione unitaria:
00
 00   11
01
 01   10
10
 10   01
11
 11   00
Con α, β, δ, γ, parametri complessi. Negli stati
01
e
10
i parametri δ
e γ possono essere settati a seconda delle necessità ma sempre rispettando
il vincolo di unitarietà:
 
2
2
 
2
2
1
La matrice unitaria che opera la trasformazione sui due qubit scelti a
caso è una matrice di dimensione 22x 22:
T̂ =
La matrice
T̂
 0 0

0  
 0  

 0 0



0 
0 

 
si ottiene dalla combinazione lineare delle seguenti
quattro matrici insieme ai parametri α, β, δ, γ:
1 0

  
 0 0
0 1

B̂  
0
0


 0 0

Ĉ  
0 1
0 0

D̂  
1 0
T̂
=
(Â)  Â  (Â)  Ĉ  ( B̂)  B̂  (B̂)  D̂ 
 (D̂)  B̂  ( D̂)  D̂ - (Ĉ)  Â  (Ĉ)  Ĉ
Le matrici unitarie
 , B̂ , Ĉ , D̂ ,
operano ciascuna localmente su un
solo qubit, infatti la loro dimensione è di 21 x 21. Lo stato degli altri sei
qubit della rete rimane lo stesso, infatti su ognuno di essi opera localmente
la matrice identità.
1 0

Î  
0 1
La trasformazione globale dell’intera rete è una matrice 28 x 28
ottenuta moltiplicando tensorialmente coppie di matrici
matrici identità
Î ,
 , B̂ , Ĉ , D̂ ,
̂ ,
con 6
rispettando nel prodotto la posizione dei 2 neuroni che
interagiscono e combinando linearmente questi prodotti con i parametri α,
β, δ, γ.
Ad esempio la trasformazione globale di una rete costituita da 4 qubit
in cui è stata scelta la coppia di qubit (1,4) è la seguente:
̂ =
(Â)  Î  Î  Â  (Â)  Î  Î  Ĉ  ( B̂)  Î  Î  B̂  (B̂)  Î  Î  D̂ 
 (D̂)  Î  Î  B̂  ( D̂)  Î  Î  D̂ - (Ĉ)  Î  Î  Â  (Ĉ)  Î  Î  Ĉ
dove i primi quattro fattori del prodotto tensoriale corrispondono ai 4
qubit.
La sequenza di trasformazioni
̂  associate alle scelte casuali dei 2
i
qubit fa evolvere la rete in modo quantistico unitario:
   ˆ i 0
i
dove
0
è lo stato classico iniziale della rete, fino al momento in cui
avviene l’osservazione dello stato globale e il conseguente collasso della
funzione d’onda (evoluzione non unitaria). Quindi la rete assume uno degli
stati classici  j  con probabilità data dal modulo quadrato dell’ampiezza
cj
2
dello stato nella scomposizione lineare
  c j j
j
L’algoritmo
L’algoritmo che simula l’evoluzione della rete quantistica neurale è
il seguente:
Inizializzazione della rete
1) Inizializzazione degli 8 qubit.
2) Inizializzazione dei parametri α, β, δ, γ con α=1, β=0, δ = γ =
1
2
3) Prodotto tensoriale degli 8 qubit che definisce un vettore di
partenza di 28 componenti che rappresenta lo stato quantistico
iniziale della rete neurale.
Evoluzione quantistica della rete
4) Selezione random della coppia di qubit.
5) Calcolo della matrice unitaria
̂
che opera la trasformazione
globale della rete neurale in base alla coppia di qubit selezionata al
passo 4.
6) Calcolo del nuovo stato quantistico della rete ottenuto dal prodotto
scalare della matrice
̂
per il vettore di stato.
7) I passi 4, 5 e 6 vengono ripetuti N volte.
 a b   x   ax  by 

.   

 c d   y   cx  dy 
Prodotto scalare di una matrice per un vettore
Osservazione e collasso della funzione d’onda
8) Estrazione casuale dal vettore di stato della componente classica jesima con probabilità di estrazione |cj|2.
9) Aggiornamento del vettore di stato: la componente j-esima estratta
viene posta uguale a 1 e tutte le altre componenti del vettore
vengono poste a 0. Questo equivale a porre
10) Si ripetono i passi dal 4 al 9 per K volte.
 j.
L’implementazione del modello
L’algoritmo è stato implementato utilizzando il pacchetto software
Mathematica 4.0. Questo pacchetto ci ha permesso di evitare
l’implementazione di operazioni matriciali e quantistiche e di concentrarci
principalmente sullo sviluppo dell’algoritmo stesso.
Inizializzazione della rete
Evoluzione quantistica della rete
Osservazione e collasso della funzione d’onda
Alcuni output
Configurazione di partenza (a):
 0
q i    con i  1..8
1
Configurazione di partenza (b):
1
q i    con i  1..8
 0
Tutti i qubit sono impostati a 1 (a) e a 0 (b)
Il vettore che definisce lo stato iniziale (a) è: 11111111
Il vettore che definisce lo stato iniziale (b) è: 00000000
Output (a)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
Output (b)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
Configurazione di partenza:
1
q1  q3  q4  q5   
 0
 0
q2  q6  q7  q8   
1
Il vettore che definisce lo stato iniziale è: 01000111
Output
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
01010110
00010111
11110000
11110000
01000111
01101001
00111001
00111001
01101010
01111000
10111000
10101001
00101011
10010011
00100111
01100110
01000111
11000011
00011011
10100011
Configurazione di partenza:
1
q3  q5  q7   
 0
 0
q1  q2  q4  q6  q8   
1
Il vettore che definisce lo stato iniziale è: 11010101
Output
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
11010011
11101001
01110101
01110011
01101011
01011011
11001110
11011010
11110010
11010011
01110011
10101110
00101111
00101111
01100111
01100111
01101011
11000111
11001101
01100111
Ad ogni passo la rete viene fatta evolvere quantisticamente per N=10
volte prima dell’osservazione e quindi del collasso della funzione d’onda.
Il tutto viene ripetuto per K=20 volte. Quando i qubit assumo tutti lo stesso
valore, 0 o 1, la rete rimane in uno stato di equilibrio.