Salve Giuseppe,
On Mon, 9 Sep 2024 09:50:41 +0200 Giuseppe Attardi wrote:
> Che significa “software programmato statisticamente”?
Un software (ovvero una sequenza di byte eseguibili da una macchina con
una architettura nota in fase di compilazione) programmato attraverso
tecniche statistiche, ovvero basate sull'elaborazione di grandi
quantitativi di dati selezionati allo scopo.
> Una rete neurale è realizzata con programmi come altri utilizzando
> algoritmi di ottimizzazione, con un processo di fit dei parametri del
> modello rispetto ai dati per minimizzare una funzione di loss.
Esatto, ottimo esempio.
Con il termine "rete neurale artificiale" si con-fondono due software
diversi programmati con tecniche diverse:
- la macchina virtuale caratterizzata dall'architettura di interesse
(la topologia della rete), tipicamente scritta in R, Python, C etc...
- il software che quella macchina virtuale esegue, espresso come
matrici numeriche, programmato appunto attraverso tecniche
statistiche e compilato per quella specifica macchina virtuale
Si tratta di software distinti, anche quando usati insieme.
Il primo software (la macchina virtuale) viene eseguito dall'hardware
(che può essere a sua volta virtuale, ovviamente), mentre il secondo
(il cosiddetto "modello" della "rete neurale artificiale") viene
eseguito dal primo.
I sorgenti del primo vengono scritti.
I sorgenti del secondo vengono selezionati.
Cambiano le tecniche di programmazione e compilazione, ma rimangono
sorgenti di software compilati per essere eseguiti dalle rispettive
architetture di interesse.
> Un modello statistico sarebbe quello costruito a partire da un
> campione statistico rappresentativo, selezionato appunto su basi
> statistiche.
Infatti!
Proprio il software programmato statisticamente a partire dai dataset
sorgente non è un modello statistico, è sbagliato chiamarlo "modello".
Altrimenti finisce che i giuristi lo confondono con il data mining.
> Ciò non vale per i LLM che usano tutti i dati disponibili,
> considerandoli la realtà stessa e non la loro rappresentazione.
Gli LLM non hanno alcuna consapevolezza dell'esistenza della realtà.
Dunque non possono "considerare" i dati come la realtà.
Gli LLM sono programmati compilando i dati SCELTI da chi li programma.
La scelta dei contenuti da includere nel dataset è l'aspetto
predominante del processo di programmazione statistica.
> Quanto a “imparare”, è discutibile usare termini antropomorfi
> riguardo alle macchine, ma per intenderci si può dire che fanno
> qualcosa che si avvicina al nostro concetto di apprendere, ossia
> saper usare quanto visto in precedenza in situazioni nuove.
No.
La calcolatrice non conosce l'aritmetica, anche se riesce a produrre in
output una configurazione di cristalli liquidi che la tua mente può
interpretare come somme che non le sono mai state sottoposte in passato.
Una calcolatrice non sa cosa sia un numero più di quanto
un LLM non sappia cosa sia un testo.
Chi l'ha programmata non le ha insegnato l'aritmetica e lei non l'ha
appresa, per nessuna definizione ragionevole di "apprendimento".
Chi l'ha programmata ha codificato la _propria_ conoscenza della
aritmetica in una serie di circuiti che ne _riproducono_ le regole
sulle rappresentazioni elettriche fornite in input.
Allo stesso modo, non c'è alcuna relazione fra il processo di
programmazione statistica di una macchina in grado di ridurre
vettori e l'apprendimento di un essere umano.
Entrambi i processi sono iterativi e producono un cambiamento nel ente
che li subisce, non hanno null'altro in comune.
Se dicessi in una conferenza che la frutta "apprende" come comportarsi
da marmellata, tutti riderebbero fragorosamente. :-D
Dire che un software "apprende" come comportarsi è altrettanto
ridicolo, ma hubris, ignoranza e soldi convincono troppe persone
a non ridere quando sentono parlare di "machine learning".
Così rimangono solo bambini e buffoni a ricordare che il re è nudo...
e i software si programmano.
¯\_(ツ)_/¯
E sì, è vero: è davvero un lavoro estenuante! ;-)
Giacomo