Ragazzi, è da un bel po' che non mi faccio sentire e che non pubblico aggiornamenti sui miei progetti.
Il motivo? Negli ultimi mesi mi sono immerso completamente in una delle sfide più interessanti e complicate che abbia mai affrontato: la ricerca su nuovi modi di far apprendere le reti neurali.
E devo dire che, nonostante le difficoltà, stanno emergendo risultati davvero interessanti.
Tutto è cominciato con una domanda...
Possiamo costruire una rete neurale che non si limiti ad apprendere durante una fase di training, ma che possa continuare a crescere, adattarsi e acquisire nuove conoscenze nel tempo?
E soprattutto: possiamo trovare modi diversi di farla imparare?
Ho iniziato sperimentando diversi algoritmi di apprendimento, combinando approcci esistenti, modificandoli e provando anche idee completamente nuove.
Alcuni esperimenti sono stati disastrosi. Altri sembravano funzionare benissimo, almeno fino a quando non ho scoperto che c'era qualcosa di sbagliato. 😅
Ma proprio da questi tentativi sono emerse alcune delle scoperte più interessanti.
Una rete che può crescere e imparare
Una delle direzioni su cui sto lavorando è un'architettura neurale che possa crescere nella sua struttura, invece di rimanere necessariamente fissa.
L'idea è costruire un sistema in cui nuove capacità e conoscenze possano essere aggiunte progressivamente, cercando di conservare ciò che è già stato appreso.
Durante gli esperimenti ho osservato alcune proprietà davvero curiose nei meccanismi di apprendimento, soprattutto nel modo in cui differenti componenti possono contribuire a migliorare le predizioni e correggere gli errori.
Alcuni risultati mi hanno portato a cambiare completamente direzione. Altri hanno aperto possibilità che inizialmente non avevo nemmeno considerato.
Attenzione però: siamo ancora lontani da un'intelligenza artificiale generale.
Per adesso il sistema lavora principalmente sulla classificazione e sul riconoscimento di pattern. Non è un modello generativo e non è in grado di imparare qualsiasi cosa.
Ma per me questa è proprio la parte interessante: costruire e verificare i principi fondamentali, prima di tentare qualcosa di più ambizioso.
La ricerca è molto più lenta di quanto sembri
Una cosa che ho imparato è che avere un'idea è relativamente facile.
Dimostrare che funziona davvero è tutta un'altra storia.
Puoi passare giorni a progettare un esperimento, implementarlo, addestrare la rete, raccogliere risultati e convincerti di aver trovato qualcosa di importante.
Poi scopri un bug.
Magari un errore minuscolo nella propagazione dei segnali, nell'aggiornamento dei pesi, nella gestione dello stato o nella valutazione del modello.
Lo correggi, rilanci tutto e... i risultati cambiano completamente.
Quella che sembrava una scoperta straordinaria magari era soltanto un errore nel codice.
E devi ricominciare. Da zero.
E quando usi l'AI per scrivere codice?
Qui arriva la parte quasi comica.
Utilizzo molto gli strumenti AI per implementare idee, scrivere codice, preparare esperimenti e analizzare risultati.
Mi permettono di esplorare molte più possibilità di quante riuscirei a testare lavorando completamente da solo.
Ma c'è un problema enorme: un codice che funziona non è necessariamente un codice che implementa correttamente l'algoritmo che avevi immaginato.
A volte l'AI introduce piccoli errori logici. Altre volte modifica involontariamente un comportamento fondamentale, oppure costruisce un test che conferma un risultato senza verificarlo davvero.
E la cosa peggiore è che tutto può sembrare perfettamente funzionante.
Il training termina, i numeri migliorano, i test passano.
Poi inizi a controllare più in profondità e scopri che quel risultato non è valido.
Questo significa rivedere il codice, correggere gli esperimenti, verificare che il modello stia realmente imparando e rilanciare tutte le prove.
Ho imparato a essere molto più diffidente verso i risultati troppo belli.
Un esperimento che fallisce correttamente vale molto di più di un esperimento che riesce grazie a un bug.
Però qualcosa di interessante sta succedendo
Nonostante tutto, sono soddisfatto della direzione che sta prendendo questa ricerca.
Sto esplorando diversi meccanismi di apprendimento e sperimentando come farli lavorare insieme, invece di limitarmi a un unico algoritmo.
L'obiettivo non è semplicemente ottenere una percentuale più alta su un dataset.
Voglio capire come costruire una rete capace di apprendere in modo più flessibile, crescere quando necessario, riutilizzare quello che ha imparato e adattarsi a nuovi problemi.
Alcuni esperimenti hanno già mostrato comportamenti promettenti. Altri hanno evidenziato limiti importanti che devo ancora risolvere.
E probabilmente ci saranno ancora tantissimi tentativi falliti.
Ma è questo il bello della ricerca: a volte scopri qualcosa proprio mentre cerchi di dimostrare un'idea completamente diversa.
E adesso?
Per il momento continuerò a sperimentare.
Prima voglio ottenere una base solida, riproducibile e capace di superare test sempre più difficili. Solo dopo inizierò a esplorare seriamente capacità più generali e, in futuro, anche generative.
Non so ancora dove mi porterà tutto questo.
Magari alcune idee si riveleranno vicoli ciechi. Magari qualcuna diventerà qualcosa di davvero interessante.
Quello che so è che sto imparando tantissimo, non soltanto sull'intelligenza artificiale, ma anche su quanto sia difficile distinguere una vera scoperta da un risultato apparentemente convincente.
Insomma, non sono sparito. Sono semplicemente finito in un ciclo infinito di esperimenti, bug fixing, training e nuove idee. 😂
E per una volta, è un ciclo dal quale non ho nessuna fretta di uscire.
Presto spero di condividere qualche risultato concreto.
Stay curious. Keep experimenting. 🚀