Dissento.
On 9 Sep 2024, at 11:10, nexa-request@server-nexa.polito.it wrote:
From: Giacomo Tesio <giacomo@tesio.it> ..l
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
La domanda era proprio cosa significa programmare con tecniche statistiche. Posso capire implementare formule statistiche, ma il codice è pur sempre scritto in un linguaggio di programmazione. Quanto ai due software, proprio non li vedo, c’è solo un software ed è la rete neurale, scritta in un linguaggio di programmaziine a scelta che gira, direttamente o compilato, su una macchina, virtuale o reale. Le matrici sono dati, non software, e non vengono eseguite. Il programma di ottimizzazione (backpropagation) li modifica, ma non sono loro ad eseguire calcoli.
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.
La rete neurale implementa il modello direttamente, non in due fasi.
I sorgenti del primo vengono scritti. I sorgenti del secondo vengono selezionati.
I sorgenti del secondo non esistono. I parametri del modello (i contrnuti delle matrici), vengono calcolati attraverso l’ottimizzazione della loss function sui dati di apprendimento (sempre dati sono).
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à.
Certo, intendevo chi li allena non usa tecniche statistiche perché non fa assunzioni statistiche sulla struttura dei dati da cui poter estrarre un campione rappresentativo: utilizza tutti i dati disponibili indistintamente.
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.
Non proprio, non viene fatta una scelta basata su criteri statistici. Per i LARGE LM si usano quanti più dati possibile, al massimo si fa una deduplicazione.
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.
Infatti una calcolatrice non impara: non saprebbe fare altre operazioni oltre a quelle per cui è stata programmata.
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.
A parte il fatto che ancora non ho capito cosa sia la “programmazione statistica”, una relazione si trova sempre.
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
Quale sarebbe l’analogia umana di un tale forma di apprendimento?
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.