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

Reply via email to