Presupponente che sappia cosa sia un "sistema complesso" e nello stesso modo quali siano i principi su cui si basa il motore che alimenta una AI (chiamarla AI mi da sempre un certo ribaltamento dello stomaco) quello che mi piacerebbe sentire dagli "esperti" o sedicenti tali una descrizione più concreta senza fiumi o dighe che strabordano. Tale che l'utente medio possa pensare effettivamente quali trasformazioni accadono a monte e a valle della generazione di un testo grammaticalmente probabilmente corretto ma semanticamente vuoto. Ogni spiegazione a quanto pare si adorna di "estressioni poetiche" più o meno ermetiche infarcite di un gergo mutuato ricorsivamente di cui a prima vista l'unica reazione è il "ma che vordì?". Al di là dell'effetto "huao!" delle risposte c'è un meccanismo le cui basi sono abbastanza vecchie. Ora, continuo ad insistere che una buona diffusione di questi meccanismi senza scadere nell'esoterismo possa essere solo un bene per l'utente che forse (ripeto forse) potrebbe affrontare la materia in maniera più efficace. Starà poi a lui decidere per sé. Parlare di AI sembra una dissertazione sull'esistenza di dio dove alla base si deve porre l'atto di fede. Siccome nella AI, essendo un prodotto umano e una macchina techicamente finita, non può esserci atto di fede a meno di non volerci paragonare a dio, la discussione dovrebbe essere portata su un livello meno filosofeggiante. Lasciamo come informatici la filosofia ai filosofi e occupiamoci di mantenere una informazione materialmente corretta. Il filosofo fa di mestiere la "chiacchiera" e si occupa del prodotto più che della produzione. Cerchiamo di agevolare anche i loro "voli pindarici" facendo sì che si incartino meno. Sia Nardelli che Tesio (con cui ogni tanto mi scorno sulle "definizioni" ma con cui in fondo vado abbastanza d'accordo) non dicono cose errate o discutibili. Di base quello è. Che poi esistano più livelli o strati di applicazione di questi meccanismi è pur vero, certe trasformazioni non bastano per avere un livello di output così elevato come oggi è. Questo non toglie però che ci sia una base attuale che rende domande del tipo: la macchina capisce? Inutili se non controproducenti.
Giusto per provare, ho chiesto al Buon Claudio se in queste affermazioni ci fossero delle imprecisioni (perdonate la lunghezza del testo, ma ritenevo non giusto generare un link pubblico condiviso): ---------- Vorrei sapere se queste affermazioni sono giuste e nel caso non lo siano quali sono gli errori: ``` Certo che conosciamo nei minimi dettagli gli algoritmi per allenare e fare inferenza con le DNN (backpropagation, gradient descent, ecc.), ma siccome il risultato dipende da milioni di interazioni tra i neuroni della rete, non abbiamo un modo semplice di spiegare il risultato. Non possiamo applicare il metodo riduzionista a questi modelli, per ricondurne il funzionamento a quello delle parti di cui è composto e alle regole che queste utilizzano. Come nei sistemi complessi di Giorgio Parisi, questi modelli esibiscono un comportamento emergente:: 1. Le DNN utilizzano funzioni di attivazione complesse e non lineari che creano trasformazioni difficili da mappare direttamente a un algoritmo interpretabile. 2. La "conoscenza" all'interno di una rete neurale è distribuita su miliardi di parametri. Tracciare il percorso decisionale per una singola previsione è di fatto impossibile. 3. A differenza del software tradizionale, l'apprendimento profondo estrae da solo le caratteristiche su cui opera. Scopre relazioni nascoste e complesse nei dati a vari livelli di astrazione che non sono direttamente interpretabili. ``` La risposta del Buon Claudio: ## Analisi delle affermazioni Il ragionamento di fondo è corretto nel suo spirito, ma contiene alcune imprecisioni e affermazioni troppo assolute. Ecco un'analisi punto per punto. --- ### Premessa generale ✅ (con sfumature) > *"Conosciamo nei minimi dettagli gli algoritmi… ma non abbiamo un modo semplice di spiegare il risultato"* Sostanzialmente corretto. Tuttavia dire "milioni di interazioni" è già impreciso: i moderni LLM hanno **miliardi** di parametri, non milioni. --- ### Sul metodo riduzionista ⚠️ Parzialmente errato > *"Non possiamo applicare il metodo riduzionista a questi modelli"* Questa è un'**affermazione troppo forte**. Il campo della **mechanistic interpretability** (Anthropic, DeepMind, ecc.) è esattamente un approccio riduzionista applicato alle reti neurali: si studiano singoli neuroni, circuiti, layer, per ricondurne il comportamento a componenti più semplici. Ha già prodotto risultati concreti (es. identificazione di "curve detector neurons" nelle CNN, o di circuiti per l'aritmetica nei transformer). Non è che *non si può* fare, è che è *difficile e incompleto*. --- ### Sul riferimento a Giorgio Parisi ⚠️ Analogia imprecisa > *"Come nei sistemi complessi di Giorgio Parisi"* L'analogia è suggestiva ma **approssimativa**. Parisi ha vinto il Nobel per i sistemi fisici disordinati come i **vetri di spin** (*spin glasses*), caratterizzati da frustrazioni geometriche e stati metastabili. Le DNN condividono alcune proprietà formali (alta dimensionalità, paesaggi di energia complessi), ma non sono lo stesso tipo di sistema. Citare Parisi qui suona come un appiglio di autorità più che una connessione rigorosa. Il concetto di **emergenza** è corretto in sé, ma non è necessario Parisi per giustificarlo. --- ### Punto 1 ❌ Errore fattuale > *"Le DNN utilizzano funzioni di attivazione complesse e non lineari"* Questo è **sbagliato per quanto riguarda la complessità**. Le funzioni di attivazione più usate sono spesso **banalmente semplici**: - **ReLU**: `f(x) = max(0, x)` — più semplice di così non si può - **Sigmoid**, **tanh**: funzioni elementari ben note La **non-linearità** è corretta ed è il punto chiave. Ma la complessità non viene dalla complessità delle singole funzioni di attivazione: emerge dalla loro **composizione in profondità** su milioni/miliardi di parametri. L'affermazione così formulata confonde causa ed effetto. --- ### Punto 2 ⚠️ Parzialmente esagerato > *"Tracciare il percorso decisionale per una singola previsione è di fatto impossibile"* È **troppo categorico**. Esistono tecniche consolidate per farlo, almeno parzialmente: - **Attention visualization** nei transformer - **Saliency maps** e **Grad-CAM** nelle CNN - **Activation patching** e **causal tracing** - **LIME**, **SHAP** per l'interpretabilità locale Il problema non è che sia impossibile, ma che sia **incompleto e non sempre affidabile**. La ricerca di interpretabilità è un campo attivo proprio perché qualcosa si riesce a fare. --- ### Punto 3 ✅ Quasi corretto (con una sfumatura) > *"Le caratteristiche estratte non sono direttamente interpretabili"* Vero in generale, ma **non universalmente**. Nei primi layer delle CNN, per esempio, si trovano regolarmente filtri interpretabili (rilevatori di bordi, frequenze, pattern Gabor-like) che assomigliano molto a quelli trovati nel sistema visivo biologico. L'interpretabilità decresce con la profondità, ma non è assente fin dall'inizio. --- ## Riepilogo degli errori principali | Affermazione | Problema | |---|---| | Metodo riduzionista inapplicabile | Troppo assoluto: la mechanistic interpretability è proprio un approccio riduzionista | | Riferimento a Parisi | Analogia suggestiva ma non rigorosa | | Funzioni di attivazione "complesse" | Sbagliato: ReLU è semplicissima; la complessità è nella composizione | | Percorso decisionale "impossibile" da tracciare | Troppo forte: esistono molte tecniche di interpretabilità parziale | | Caratteristiche mai interpretabili | Generalizzazione eccessiva: i primi layer delle CNN mostrano feature interpretabili | ---------- A questo punto da "utente normale" di chi mi dovrei fidare? Il "metodo riduzionista" si può applicare oppure no? Riguardo a: Del resto c’è una semplice controprova: se sapessimo scrivere del codice tradizionale in grado di fare ciò che fanno i LLM, perché nessuno è riuscito a farlo? La comunità di AI ci ha provato per 50 anni senza riuscirci. Il Buon Claudio dice: ``` L'argomento ha un'intuizione valida, ma ha alcune imprecisioni che vale la pena evidenziare. **Cosa c'è di giusto** L'idea di fondo è corretta: l'AI simbolica (regole scritte a mano, ontologie, sistemi esperti) ha dominato per decenni e non è riuscita a replicare la comprensione del linguaggio naturale. Questo fallimento storico è reale e significativo. **Cosa non torna** 1. **I LLM *sono* codice tradizionale.** Sono implementati in PyTorch/CUDA, girano su CPU/GPU, usano. La distinzione non è "codice vs non-codice", ma **codice con regole esplicite** vs **codice che apprende parametri dai dati**. 2. **"50 anni senza riuscirci" è una semplificazione.** Il deep learning esiste dagli anni '80 (backpropagation di Rumelhart, 1986). I LLM non sono una rottura improvvisa, ma il risultato di decenni di progressi incrementali: più dati, più potenza di calcolo, architetture migliori (Transformer, 2017). 3. **La controprova non è logicamente stringente.** "Nessuno ci è riuscito prima" non dimostra che fosse impossibile, dimostra solo che non si erano ancora trovati i mezzi giusti (scala, dati, architettura). **Come riformularlo meglio** > *L'approccio simbolico — scrivere esplicitamente regole per ogni comportamento — si è dimostrato insufficiente per catturare la complessità del linguaggio. I LLM hanno risolto il problema in modo radicalmente diverso: invece di codificare regole, apprendono pattern statistici da enormi quantità di testo.* Questa versione è più precisa e altrettanto efficace come argomento. ``` Come sarebbe a dire che sono: "operazioni matematiche standard (moltiplicazioni tra matrici, ecc.)"? Non c'erano sistemi complessi impossibili da definire? Come sempre, scusate l'impertinenza delle domande. -- massimo
