Dissento. > On 9 Sep 2024, at 11:10, [email protected] wrote: > > From: Giacomo Tesio <[email protected]> > ..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.
