
Anche se negli ultimi anni abbiamo assistito a un uso pervasivo delle reti neurali in molti ambiti, la loro rappresentazione concettuale rimane confinata a pochi grafici statici, generati frettolosamente dall'IA stessa, che meritano appena la sufficienza. Probabilmente, il fattore tempo, in un'era in cui il tempo deve essere denaro, ha giocato un ruolo determinante in questa scelta grafica ormai universalmente accettata.
Il mio pensiero di assestamento, in questo caso, è durato un po' più del solito e mi ha fatto immaginare un “porting sacrilego” del codice utilizzato per i test già descritti in questo blog nell'ambiente 3D di Blender in modo da creare una sorta di ologramma dei neuroni e dei loro collegamenti sinaptici, che si attivano e disattivano dinamicamente.
La cosa straordinaria di questo esperimento è che il codice Python necessario per creare la classe derivata di un'architettura composta da tre layer, con rispettivamente 8, 16 e 2 neuroni, si è integrato perfettamente nell'ecosistema degli oggetti della libreria Blender.
L'attivazione dei neuroni del primo layer nell'animazione avviene con probabilità adattiva, cioè che aumenta con il tempo trascorso dall'ultima attivazione.
Quelli dei layer successivi si attivano se ricevono l'input da almeno un neurone del layer precedente. L'intensità della colorazione delle connessioni è indicativa della rilevanza dell'informazione trasferita.
Il risultato è un effetto dinamico e realistico che descrive il modo in cui l'elaborazione numerica avanza attraverso la rete neurale. Anche per questa simulazione l'accelerazione fornita dai CUDA core della mia scheda grafica è stata determinante.
Un ringraziamento particolare va alle curve di Bézier, senza le quali le sinapsi si sarebbero intersecate in un groviglio irrealistico di tubicini.
Termino con una riflessione maligna: è forse proprio per questo effetto “geometria dell'impossibile” che non si vedono troppi esempi simili al mio nel web.