On 9 Sep 2024, at 22:35, nexa-request@server-nexa.polito.it wrote:
Ad esempio, per programmare una Vector Reducing Machine (quella che tu chiami "rete neurale artificiale") la cui topologia permette di mappare una matrice N-dimensionale verso una M-dimensionale
- si raccoglie il dataset sorgente
- ne si codifica gli elementi come vettori numerici attraverso una analisi statistica Dipende dai dati, alcuni sono già vettori numerici di per sé come nel caso di immagini o suoni campionati. Nel caso dei testi si fa una tokenizzazione (ad esempio con le regole di Porter) e si costruisce un dizionario per assegnare un id numerico a ciascuno, poi il vettore degli embedding viene costruito dalla rete stessa. Nessuno di questi lo chiamerei un’analisi statistica.
- si riduce la dimensionalità del dataset sorgente (selezionando e/o sintetizzando le feature da utilizzare attraverso tecniche statistiche) fino ad ottenere le N dimensioni da utilizzare in input (e le M dimensioni con cui confrontare l'output)
- si carica nella VRM un programma che può essere
- casuale quando si inizializzano le matrici per la prima volta
- noto, se si decide di partire da un eseguibile "pre-trained" Si può riassumere dicendo che una rete neurale calcola una funzione f(theta, x) = y, dove theta sono i parametri del modello, che vengono stimati con l’apprendimento. Il codice che calcola f fa uso di theta, ma non è theta che esegue alcun calcolo e non può essere chiamato software. Si può cambiare theta e la funzione calcolata sarà diversa. Essendo f parametrica, si può fornire theta a parte e si può fare fine-tuning del modello, a patto di disporre del software di apprendimento. Ossia non bastano i dati (theta) per modificare f. Theta è del tutto inutile senza f. Si può dire che ci sono infiniti modi di “eseguire” theta, ma se non hai quello giusto non puoi farci nulla. …
I parametri del modello (i contenuti delle matrici), vengono calcolati attraverso l’ottimizzazione della loss function sui dati di apprendimento (sempre dati sono).
La distinzione fra software e dato non ha fondamento informatico.
L’architettura Von Neuman distingue tra istruzioni e dati: le prime sono caricate nella CPU, i secondi nella ALU. Semmai le istruzioni, che sono conservate in memoria, possono essere trattate come dati, in programmi che si automodificano, ma rimangono istruzioni, se caricate nella CPU. —