LE RETI NEURALI

UN'INTRODUZIONE

I computer possono pensare?

Il test di Turing

I CAPTCHA

Completely Automated Public Turing test to tell Computers and Humans Apart

Neuroni (naturali)

Neuroni (artificiali)

p_i: \mathrm{ potenza\ del\ segnale\ inviato\ da\ } u_i
X=f_1p_1+f_2p_2+\cdots+f_kp_k : \mathrm{ potenza\ del\ segnale\ ricevuto\ da\ } v

Funzione di attivazione

Un esempio

int bisector(double x, double y) {
    return x>y?1:0;
}

La rete neurale più semplice

La rete neurale iniziale

Forze e soglia scelte a caso

La rete ci "azzecca"

p_{i_1} = 0.8 \qquad p_{i_2} = 0.3
X = 0.14\cdot 0.8 + 0.73\cdot 0.3
\ = 0.112+0.219 = 0.331
0.331 > 0.16 \Rightarrow \mathrm{ output\ } 1

La rete sbaglia

p_{i_1} = 0.3 \qquad p_{i_2} = 0.1
X = 0.14\cdot 0.3 + 0.73\cdot 0.1
\ = 0.042+0.073 = 0.115
0.115 < 0.16 \Rightarrow \mathrm{ output\ } 0

Ridurre l'errore

X = f_{i_1,o}p_{i_1}+f_{i_2,o}p_{i_2}
X > b \Rightarrow 1
X < b \Rightarrow 0

Possiamo aumentare le forze e diminuire la soglia

f_{i_r,o} = f_{i_r,o}+\eta p_{i_r}
b = b-\eta

\(\eta\): tasso di correzione

La nuova rete con \(\eta=0.1\)

f_{i_2,o} = 0.73+0.1\cdot 0.1 = 0.73+0.01 = 0.74
b_{o} = 0.16-0.1 = 0.06
f_{i_1,o} = 0.14+0.1\cdot 0.3 = 0.14+0.03 = 0.17
p_{i_1} = 0.3 \qquad p_{i_2} = 0.1
X = 0.17\cdot 0.3 + 0.74\cdot 0.1
0.125 > 0.06 \Rightarrow \mathrm{ output\ } 1
= 0.051+0.074 = 0.125
p_{i_1} = 0.3 \qquad p_{i_2} = 0.1

Riassumendo

Feedforward

Backpropagation

Apprendimento

Apprendimento

Reti neurali a più livelli

Esempio classico

Riconoscimento di cifre scritte a mano:

784 neuroni di input

15 neuroni nascosti

10 neuroni di output

Deep learning

Deep learning

Alcuni risultati recenti

Alcune riflessioni

Alcune riflessioni