Di recente ho esaminato più a fondo una rete neurale Multi-Layer Perceptron (MLP) progettata per prevedere i risultati della moltiplicazione di numeri float nell'intervallo [0, 10).
Segue il report relativo a un addestramento con 12000 esempi e 80000 epoche.
Epoch [80000/80000], Loss: 0.0005
input // Val. generato // Val. vero
x = 1.00, y = 1.00 // 0.97 // 1
x = 4.50, y = 0 // -0.06 // 0
x = 2.00, y = 8.20 // 16.39 // 16.40
x = 125.00, y = 12.20 // 261 // 1525
Questo è stato il mio “pensiero di assestamento”.
Gli umani, tipicamente:
- iniziano memorizzando le tabelline;
- imparano strategie su come scomporre numeri grandi (24 x 3 = 20 x 3 + 4 x 3);
- associano la moltiplicazione all'addizione ripetuta;
- sviluppano scorciatoie mentali (x10 = sposta virgola, x5 = metà di x10);
- possono visualizzare la moltiplicazione in modo geometrico.
La rete neurale invece:
- non memorizza alcun risultato, ma individua pattern nei dati;
- non usa regole esplicite o strategie logiche;
- apprende attraverso migliaia di esempi e correzioni degli errori;
- costruisce una funzione matematica complessa distribuita tra parametri e neuroni.
Conclusione
La rete neurale non ha “compreso” il concetto di moltiplicazione, ma effettua solamente un mapping input-output
Dal confronto emerge che gli umani:
- sono più efficienti nell'apprendimento (servono meno esempi)
- possono generalizzare e moltiplicare tra loro numeri mai visti prima (nel mio test, fornendo in ingresso numeri più alti di quelli utilizzati per l'addestramento i risultati sono stati deludenti).
Inoltre, la rete neurale è effettivamente più veloce, ma meno precisa nei calcoli e, aspetto per me molto più importante, gli umani sono consapevoli di ciò che fanno (o almeno dovrebbero esserlo), mentre l'IA no, anche quando adotta un approccio “divide et impera” alla soluzione dei problemi.