Se ho capito la domanda, si, e' successo questo.
Tra il '70 e l'80 tutta la ricerca sull'IA e sulle reti neurali si e' raffreddata. Diversi motivi, (piu' o meno)
- poca potenza di calcolo
- complessita' nella realizzazione sistemi esperti basati su regole
- difficolta' ad implementare 'sistemi di ragionamento simbolico'
- per le NN, impossibilita' di rappresentare la funzione binaria XOR con il solo 'percetrone'. Sembra una funzione banale ;-)
- difficolta a reperire dati
.
Tra gli '80 e '90 e' successo che:
- si e' trovato il modo per reppresentare la funzione XOR, usando piu' layer e funzioni 'non lineari' come 'attivatore'
- al che si e' potuto dimostrare che una NN e' un 'approssimatore universale', cioe' e' in grado di approssimare QUALUNQUE funzione possibile ed immaginabile
- incremento della potenza di calcolo
- trovato il modo intelligente di addestrare una NN (il backpropagation)
- incremento esponenziale della quantita' di dati disponibili, anche a fronte della diffusione di Internet.
.
il punto 1. e' facile da capire: in una dimensione, il percetrone non e' altro che l'equazione di una retta. Una funzione 'non' lineare che si usa e' la 'arcotangente' l'inverso della funzione tangente in trigonometria. Quindi, una NN in una dimensione, composta da un solo layer, non e' altro che la funzione
y=arctan(a + bx)
'a' e 'b' sono i pesi da 'imparare'.
Un'altro punto di svolta e' stato il trovare il modo di calcolare la 'derivata prima' della 'funzione' NN in modo automatico.
Tieni presente che una NN e' COMPOSIZIONE di FUNZIONI DERIVABILI.
Quindi e' UNA FUNZIONE DERIVABILE, almeno fino alla derivata prima.
Ora, calcolare la derivata prima di una funzione in un milione di dimensioni e composta da decine/centinaia di funzioni 'a mano' e' 'umanamente impossibile' (a suo tempo lo si faceva).
MA, implementando la derivazione simbolica in modo intelligente, va da se che lo puo' fare un 'algoritmo', e lo puo' fare su qualunque dimensione.
Ora, hai tutto quello che ti serve per trovare il 'minimo di una funzione':
la funzione, la sua derivata.
Per trovare il minimo, dato un punto, e' banale: BASTA andare verso il basso!Perche' il minimo?
banale: i tuoi dati sono il risultato di una funzione che non conosci.
una NN e' una funzione 'parametrica' dove i parametri sono da imparare.
All'inizio metti dei valori a caso, tanto chissene.
Ed ora il compito e' cercare per quali parametri la funzione parametrica rappresentata dalla NN approssima meglio i tuoi dati.
Tieni presente che la funzione rappresentata dalla NN potrebbe avere una forma TOTALMENTE DIFFERENTE dalla orma della funzione che ha generato i dati.
Per capire: i tuoi dati rappresentano un sedia. La NN rappresenta un pallone di raggio variabile. Soluzione: il pallone che meglio rappresenta la sedia.
Tu penserai: ma e' stupido!.
Il problema e' che in un milione di dimensioni, tu non hai idea di quale sia la reale forma dei tuoi dati. E quindi butti li una NN e speri. Un'altro butta la una NN di forma leggermente diversa e potrebbe fare di meglio, ma anche di peggio ;-)
Poi:
- maggiore potenza di calcolo,
- maggior quantitag di dati,
- la genialata del concetto di 'embedding' che permette di rappresentare il testo in modo numerico, ma anche tutto il resto
- aumento aumento della complessita della NN, data dall'aumento della potenza di calcolo
- il calcolo parallelo massivo su desktop (CUDA)
.
ed hai gli ingedienti che ti hsnno portato ad oggi.
Il transformer, cuore di tutti gli LLM, e' del 2018. Spannometricamente e' una serie di enormi matricione 128000x128000 (all' inizio erano 512x512).
Va da se che trovare i pesi ottimi di 16 MILIARDI x numero di matricione, parametri, NON LO FAI con il contenuto di un Topolino e non lo fai sul PC di casa.
;-)
.
spannometricamente
(un po' come ChatGPT che ti dice che le sue risposte POTREBBERO non essere affidabili ;-))