← Torna ai documenti

Come funziona l'intelligenza artificiale

web Elaborato Creato il 2025-10-26
Modifica

Metadati

Hash
baffb05abb82d0f3...
Data Pubblicazione
2025-01-01
Lingua
it
Ultimo Aggiornamento
2025-10-26 09:14

Sintesi Breve

Riassunto generato da Gemini (max 200 parole)

L'intelligenza artificiale si articola principalmente in due approcci: simbolico, basato su regole logiche, e sub-simbolico, rappresentato dalle reti neurali. Queste ultime, tramite apprendimento per rinforzo e retropropagazione, superano le capacità umane in diversi ambiti, sebbene la loro logica interna rimanga opaca. Le reti neurali profonde, composte da strati di neuroni interconnessi, vengono addestrate tramite un processo di apprendimento supervisionato che modifica i pesi delle connessioni in base alla correttezza delle risposte. Questo processo, ripetuto su grandi quantità di dati, permette alla rete di generalizzare e riconoscere schemi complessi. Algoritmi genetici possono ottimizzare la struttura delle reti. Nonostante le loro capacità, le reti neurali operano a livello sub-simbolico, rendendo impossibile ricostruire il loro processo decisionale. L'articolo si propone di analizzare i limiti intrinseci dell'IA attuale, le differenze rispetto all'intelligenza umana e i rischi connessi al suo sviluppo, soprattutto in caso di sistemi con intelligenza pari o superiore a quella umana.

Trascrizione Estesa

Testo rielaborato e formattato da Gemini

L’IA "simbolica" processa i dati secondo regole logiche a noi comprensibili, ma proprio per questo non può superare le nostre capacità. Le reti neurali, invece, imparano autonomamente tramite meccanismi di rinforzo e retropropagazione, addestrandosi con migliaia di esempi e superando le capacità umane in molti settori. Tuttavia, la "logica" con cui risolvono i problemi resta per noi incomprensibile. Gli algoritmi genetici producono reti neurali sempre migliori, con metodi simili alla selezione naturale. Altri tipi di IA includono gli algoritmi probabilistici e quelli analogici. **Parole chiave:** * Intelligenza artificiale simbolica * Intelligenza artificiale sub-simbolica * Reti neurali profonde * Apprendimento per rinforzo e retropropagazione * Algoritmi genetici **Intelligenza artificiale simbolica** I primi sistemi di intelligenza artificiale (IA) nacquero alla fine degli anni '50 del Novecento. La strategia più diffusa consisteva nel far processare i dati secondo regole logiche, in modo simile al ragionamento umano: se il sistema parte dalle premesse "Se A allora B" e "Non B", conclude "Non A"; se parte da "Se A allora B" e "A", conclude "B", e così via. In questo modo, il sistema segue le stesse procedure di ragionamento che seguiamo noi e possiamo fornirgli dati e istruzioni in un codice a noi comprensibile, come faremmo con un'altra persona. Possiamo quindi chiedergli di raggiungere determinati obiettivi con i metodi che useremmo anche noi, come induzione, deduzione, ragionamento ipotetico, ecc. Ogni stato del sistema simboleggia qualcosa che possiamo comprendere, cioè ha lo stesso significato che avrebbe una nostra parola o frase; perciò, l'IA di questo tipo viene detta "IA simbolica" o "GOFAI" ("Good Old-Fashioned AI"). Il vantaggio di far lavorare la macchina al posto nostro è la sua velocità e automazione, grazie ai transistor che compiono i passaggi logici alla velocità della luce. In questo modo, può realizzare in poco tempo compiti che richiederebbero troppo tempo per noi, con un rischio di errori quasi inesistente. Tuttavia, la macchina non può andare molto al di là delle nostre istruzioni e per ogni nuovo compito dobbiamo fornirle nuove regole e istruzioni, cioè scrivere un nuovo programma. Inoltre, è impossibile fornire le regole per tutti i compiti possibili, specialmente se si tratta di imparare o scoprire cose che non conosciamo ancora. Per capire le regole, bisogna capire il linguaggio e conoscere le cose, ma i computer non lo fanno abbastanza e insegnarglielo sarebbe ancora più complicato. Negli anni '70 e '80 del secolo scorso, il premio Nobel Herbert Simon e i suoi colleghi scrissero programmi per fare scoperte scientifiche. Questi programmi sono riusciti a riscoprire molte leggi, come la legge dei gas ideali, la legge di Coulomb, la legge di Ohm, la terza legge di Keplero e molte altre, ma non ne hanno mai scoperte di nuove. Altri hanno programmato sistemi molto utili ed efficaci, come DENDRAL, per ricostruire la struttura molecolare dei composti organici in base alla loro spettrografia di massa, o come GOLEM, per riconoscere la struttura secondaria delle proteine a partire dalla loro struttura primaria, o MYCYN e ASSISTANT, per compiere diagnosi mediche. In sostanza, si trattava sempre di dire alla macchina cosa cercare, dove e come, oppure cosa fare e come; ma questa non poteva procedere autonomamente. **IA sub-simbolica o connessionista: le reti neurali** Fin dagli inizi era stata proposta anche un'idea diversa, ispirata alla struttura del cervello. Allora ebbe poca fortuna, ma negli anni Duemila ha avuto uno sviluppo straordinario e costituisce oggi la strategia di gran lunga prevalente. Nel ragionamento conscio compiamo un passo logico alla volta, con una catena lineare per cui da A si passa a B, da B a C, ecc., e monitoriamo tutto il percorso con l'introspezione. Lo stesso fa l'IA simbolica, con un processo algoritmico, dove ogni passo successivo è ben determinato e prevedibile. Invece, nel cervello molti neuroni sono attivi allo stesso tempo, ciascuno agisce su molti altri contemporaneamente e a sua volta riceve segnali da tanti altri. Così, un gran numero di passaggi viene compiuto parallelamente allo stesso tempo, in milionesimi di secondo, e tutto ciò sfugge completamente alla nostra consapevolezza, è opaco all'introspezione. La corteccia cerebrale è costituita da strati sovrapposti di neuroni: i neuroni degli strati inferiori ricevono i segnali dall'esterno e passano tali informazioni elementari ai neuroni degli strati superiori, che da esse elaborano informazioni via via più complesse. Sono stati creati sistemi di IA detti "reti neurali profonde", costituiti da elementi base organizzati tra loro in modo analogo ai neuroni e disposti in molti strati. Melanie Mitchell illustra il funzionamento di una rete neurale profonda di tipo convolutivo, quello oggi prevalente. Cerchiamo, pur semplificando al massimo, di coglierne gli aspetti essenziali: la figura 1 rappresenta schematicamente la struttura della rete, dove i pallini rappresentano i "neuroni", ossia i nodi o componenti elementari della rete. Gli strati qui sono cinque, ma nella realtà possono essere anche centinaia, e composti ciascuno da centinaia di neuroni. Supponiamo ora di voler addestrare questa rete a distinguere le immagini di cani da quelle di gatti o altro. Non si tratta affatto di cosa semplice, perché compiti che a noi umani sembrano facilissimi, come riconoscere e distinguere ciò che vediamo e udiamo, per l'IA sono invece assai difficili, molto più della soluzione di complessi problemi di matematica. Ci appaiono così facili solo perché non abbiamo un'idea del lavoro estremamente complesso che devono fare i nostri neuroni per riuscirci. Supponiamo anche, per semplicità, di avere un'immagine in bianco e nero. Fondamentalmente, essa sarà dunque composta di pixel (puntini) chiari o scuri, e questi costituiscono l'input che diamo al primo strato della rete (figura 2). Per riconoscere un'immagine bisognerà ricostruirne i contorni, perciò la suddividiamo in una griglia di piccoli quadrettini, e assegniamo ciascun quadrettino a un gruppetto di neuroni del primo strato (figura 3). Per esempio, il quadrettino n.1 sarà assegnato ai neuroni a1, b1 e c1, il quadrettino n.2 ai neuroni a2, b2 e c2, e così via. Nel cervello i neuroni compiono la loro funzione attivandosi o meno ("firing") in corrispondenza di certi stimoli, e trasmettendo così a loro volta un segnale ai neuroni collegati. Nella nostra rete i neuroni possono "sparare" più o meno forte (con valori tra 0 e 1) a seconda che lo stimolo a cui reagiscono sia più o meno forte. Siccome si tratta di ricostruire i contorni della figura, per ciascun quadretto i neuroni di tipo a spareranno se in esso i pixel costituiscono una linea di contrasto verticale, i neuroni di tipo b se costituiscono una linea orizzontale, e quelli di tipo c se costituiscono una linea obliqua. Essi spareranno con più forza se la linea di contrasto è più netta e più debolmente se è meno netta. Per esempio, un neurone sparerà con forza 0,9 per una linea di contrasto molto marcata, con forza 0,5 per una linea non molto marcata, con forza 0,1 se a mala pena la si distingue. Il neurone non spara affatto per le zone tutte bianche o tutte nere, dove non ci sono contrasti. Nel secondo strato ogni neurone riceve i messaggi di input dai neuroni del primo strato corrispondenti a un certo insieme di quadretti, ossia a una piccola area dell'immagine. In base ai segnali ricevuti dai neuroni del primo strato, esso si attiverà se in quella certa area risulta abbastanza probabile che le linee formino un certo contorno un po' più complesso. Ad esempio, taluni neuroni del secondo strato spareranno se rilevano una curva, altri se rilevano un angolo, altri una forma a T, ecc. Anche qui, lo sparo è più o meno forte a seconda di quanto al neurone appare "probabile" che ci sia la forma di sua competenza, e questa probabilità esso la "calcola" a partire dalla forza (ossia dalle probabilità) con cui i neuroni del primo strato gli comunicano i loro dati. Nel terzo strato ciascun neurone riceve gli input da un certo numero di neuroni del secondo strato, e in base ad essi deve segnalare se nell'area dell'immagine di sua competenza è presente una certa forma compiuta, come una testa, una zampa, o una coda. Anch'esso dà il segnale con una forza maggiore o minore, a seconda di quanto quella forma appare probabile in base ai responsi provenienti dal secondo strato. Nel quarto strato ciascun neurone ha competenza su tutta l'immagine, e con lo stesso metodo, in base agli input dello strato inferiore, deve assegnare una certa probabilità al fatto che si tratti di un cane oppure di un gatto. Il quinto strato, infine, è costituito dal modulo classificatore, che facendo la media delle probabilità indicate dai neuroni del quarto strato "dirà" con che probabilità si tratta di un cane o di un gatto. C'è tuttavia un problema: i neuroni come tali sono assolutamente ignoranti, non sanno cos'è un pixel, né cosa sono il chiaro e lo scuro, il verticale e l'orizzontale, una testa o gamba, un cane o un gatto. In altre parole, la rete dovrebbe essere in grado di riconoscere correttamente un numero potenzialmente infinito di immagini tutte diverse, ma noi non possiamo programmare ciascun neurone per rispondere esattamente a qualunque tipo di input. Per farlo dovremmo scrivere un complicatissimo programma per ciascuno di essi, come faremmo nell'IA simbolica. Ma questo è impossibile perché sono troppi, ci vorrebbe troppo tempo, e comunque non garantiremmo la precisione della risposta in tutti i casi possibili. Perciò il modo in cui i neuroni reagiscono ai loro input è impostato secondo criteri standard che Il modulo classificatore, infine, calcola la media delle probabilità indicate dai neuroni del quarto strato, determinando la probabilità che l'immagine rappresenti un cane o un gatto. Tuttavia, i neuroni sono "ignoranti": non riconoscono pixel, chiaro/scuro, linee verticali/orizzontali, teste, gambe, cani o gatti. La rete dovrebbe riconoscere un numero potenzialmente infinito di immagini diverse, ma non possiamo programmare ogni neurone per ogni input possibile. Sarebbe come scrivere un programma complesso per ciascuno, come nell'IA simbolica, il che è impossibile per via del numero elevato di neuroni e del tempo richiesto, senza garanzia di precisione. Pertanto, la reazione dei neuroni agli input è impostata secondo criteri standard, validi in generale ma non sempre corretti. Di conseguenza, non c'è garanzia che la risposta di una rete non addestrata sia vera o approssimativamente vera. In pratica, le prime risposte sono quasi casuali e spesso errate. Ad esempio, il classificatore potrebbe erroneamente identificare un gatto a causa di un orecchio di una certa forma o un muso corto, che in realtà appartengono a un cane dal muso schiacciato o a una piega del collo. Possiamo però addestrare la rete tramite apprendimento supervisionato: un addestratore umano confronta la risposta della rete con l'immagine. Se la risposta è corretta (ad esempio, "cane" con probabilità 0.9, e l'immagine è effettivamente un cane), il classificatore riceve un "premio", ovvero una conferma. Se è sbagliata, riceve una "punizione", ovvero una smentita. In caso di conferma, il classificatore "premia" i neuroni del quarto strato che lo hanno orientato verso la risposta corretta e "punisce" quelli che lo avrebbero orientato verso una risposta errata. Viceversa, in caso di smentita, "punisce" i neuroni che hanno suggerito la risposta sbagliata (ad esempio, quelli che hanno segnalato un muso corto o un certo tipo di orecchio) e "premia" gli altri. Il "premio" e la "punizione" consistono in questo: dopo aver classificato la prima immagine, alla rete viene chiesto di classificarne altre. Quando il classificatore calcola le nuove risposte, non dà lo stesso peso al responso di ciascun neurone del quarto strato, ma leggermente più peso ai segnali di quelli che l'hanno orientato verso la risposta corretta e meno peso a quelli che l'avrebbero orientato in direzione opposta. Ad esempio, darebbe meno peso ai neuroni che hanno indicato erroneamente un orecchio, ma anche a quelli che hanno segnalato correttamente un muso corto, in quanto la lunghezza del muso non è una discriminante abbastanza affidabile tra gatto e cane. Ad esempio, il neurone A potrebbe ricevere peso 1.3, il neurone B peso 0.8, il neurone C 0.7 e il neurone D 1.2. Supponiamo che al tentativo seguente A e D diano alta probabilità a un cane (0.9 e 0.8 rispettivamente), mentre B e C diano bassa probabilità (0.2 e 0.1). Il classificatore darà maggiore probabilità al cane, "fidandosi" maggiormente dei neuroni A e D. Non farebbe una media semplice, ma una media pesata: (0.9x1.3 + 0.2x0.8 + 0.1x0.7 + 0.8x1.2) / 4 = 0.59. Sia i premi che le punizioni vengono trasmessi "all'indietro" per retropropagazione: quando un neurone del quarto strato vede aumentare il proprio peso, a sua volta aumenta il peso dei neuroni del terzo strato che lo hanno spinto a dare la risposta premiata e diminuisce il peso di quelli che lo avrebbero spinto verso una risposta diversa. Se viene penalizzato, fa l'inverso. I neuroni del terzo strato si comportano allo stesso modo con quelli del secondo, e questi con quelli del primo. L'obiettivo è ridurre progressivamente i margini di errore a ogni livello ("discesa del gradiente"). La rete, tuttavia, procede sostanzialmente alla cieca e i pesi vengono aggiustati gradualmente, per tentativi ed errori. Può accadere che vengano premiati neuroni che hanno mandato un segnale sbagliato, ma che casualmente in quella circostanza ha rafforzato la risposta corretta, o viceversa. Pertanto, il risultato di un singolo tentativo non è molto indicativo dell'affidabilità della rete, e i pesi vanno corretti di poco alla volta, per avvicinarsi gradualmente alla valutazione più corretta senza rischiare errori maggiori. Ogni volta che viene proposta una nuova immagine, la rete la classifica seguendo lo stesso procedimento, ma in base ai nuovi pesi assegnati dopo il tentativo precedente. Il classificatore riceve di nuovo una conferma o una smentita dall'addestratore umano, e questa si propaga all'indietro modificando nuovamente i pesi su tutta la rete. Non è detto che dopo uno o due tentativi le capacità della rete migliorino molto; anzi, potrebbero addirittura peggiorare. Ma l'addestramento prevede l'esame di decine di migliaia di immagini, e alla lunga la rete diventerà progressivamente più affidabile. Naturalmente, la rete non deve imparare a classificare correttamente solo le immagini su cui viene addestrata, ma anche un numero potenzialmente infinito di immagini mai viste prima. Per far questo, pur apprendendo dagli esempi, generalizza un po' rispetto ai casi già visti, senza essere vincolata troppo rigidamente dai loro minimi dettagli (evitando l'"overfitting"). Alla fine, dopo essere stata confermata o corretta per decine di migliaia di volte, avrà aggiustato i pesi delle sue migliaia di neuroni in modo da dare la risposta giusta per tutte le immagini già viste, ma con altissima probabilità anche per qualunque immagine diversa vista per la prima volta. Se un giorno decidessimo di riciclare la rete per distinguere altre cose, ad esempio funghi porcini, dovremmo resettare tutti i pesi e ricominciare daccapo l'apprendimento per retropropagazione, esercitandola con altre decine di migliaia di foto di funghi porcini e non porcini. Il riconoscimento di immagini è solo un esempio dei tanti compiti diversi che possono essere svolti dalle reti neurali, che costituiscono il "motore" di tutte le applicazioni contemporanee dell'IA, da AlphaGo e AlphaFold, a ChatGPT, ai sistemi per dipingere, produrre musica, ecc. L'enorme numero di esempi necessari ad addestrare una rete spiega perché sia indispensabile disporre di sterminate raccolte di dati (i "big data"). Il tempo necessario non sarebbe un problema per le macchine, ma servono anche gli addestratori umani, ed anch'essi vanno reclutati in gran numero, e naturalmente la loro stessa costruzione è assai impegnativa. Tutto ciò è dunque assai costoso. Per le reti neurali parliamo di IA "sub-simbolica", perché non c'è nulla in esse che corrisponda a parole o concetti nostri, per esempio a simboli di un cane o di un gatto o delle loro parti. Esiste solo una selva di pesi diversi, cioè di disposizioni a reagire in modi diversi ma perfettamente adeguati a ciascuno degli infiniti compiti possibili. Ecco perché per chiunque, anche per gli esperti, è impossibile ricostruire la strategia di decisione che porta una rete a classificare le immagini, o a vincere a scacchi, a impostare correttamente una conversazione o ad assimilare nuovi contenuti. La rete ha imparato da sé nel senso che quelle disposizioni le ha sviluppate autonomamente (e automaticamente) durante l'addestramento, nel quale gli umani non hanno fatto altro che indicare se ciascuna risposta era giusta o no. Nel cervello i neuroni compiono la loro funzione attivandosi o meno ("sparando") in corrispondenza di certi stimoli, e trasmettendo così a loro volta un segnale ai neuroni collegati. Nella nostra rete i neuroni possono "sparare" più o meno forte (con valori tra 0 e 1) a seconda che lo stimolo a cui reagiscono sia più o meno forte. Siccome si tratta di ricostruire i contorni della figura, per ciascun quadretto i neuroni di tipo A spareranno se in esso i pixel costituiscono una linea di contrasto verticale, i neuroni di tipo B se costituiscono una linea orizzontale, e quelli di tipo C se costituiscono una linea obliqua. Essi spareranno con più forza se la linea di contrasto è più netta e più debolmente se è meno netta. Ad esempio, un neurone sparerà con forza 0.9 per una linea di contrasto molto marcata, con forza 0.5 per una linea non molto marcata, con forza 0.1 se a mala pena la si distingue. Il neurone non spara affatto per le zone tutte bianche o tutte nere, dove non ci sono contrasti. Nel secondo strato ogni neurone riceve i messaggi di input dai neuroni del primo strato corrispondenti a un certo insieme di quadretti, ossia a una piccola area dell'immagine. In base ai segnali ricevuti dai neuroni del primo strato, esso si attiverà se in quella certa area risulta abbastanza probabile che le linee formino un certo contorno un po' più complesso. Ad esempio, taluni neuroni del secondo strato spareranno se rilevano una curva, altri se rilevano un angolo, altri una forma a T, ecc. Anche qui, lo sparo è più o meno forte a seconda di quanto al neurone appare "probabile" che ci sia la forma di sua competenza, e questa probabilità esso la "calcola" a partire dalla forza (ossia dalle probabilità) con cui i neuroni del primo strato gli comunicano i loro dati. Nel terzo strato ciascun neurone riceve gli input da un certo numero di neuroni del secondo strato, e in base ad essi deve segnalare se nell'area dell'immagine di sua competenza è presente una certa forma compiuta, come una testa, una zampa, o una coda. Anch'esso dà il segnale con una forza maggiore o minore, a seconda di quanto quella forma appare probabile in base ai responsi provenienti dal secondo strato. Nel quarto strato ciascun neurone ha competenza su tutta l'immagine, e con lo stesso metodo, in base agli input dello strato inferiore, deve assegnare una certa probabilità al fatto che si tratti di un cane oppure di un gatto. Quando il classificatore indica erroneamente un gatto, l’addestratore lo smentisce, e il classificatore a sua volta "punisce" i neuroni che l’avevano fatto propendere per il gatto (come quelli che avevano segnalato un muso corto o un certo tipo di orecchio) e "premia" gli altri. Premio e punizione consistono in questo: dopo aver classificato la prima immagine, alla rete viene chiesto di classificarne altre. Quando il classificatore deve calcolare le nuove risposte, non dà lo stesso peso al responso di ciascun neurone del quarto strato, ma leggermente più peso ai segnali di quelli che l’avevano orientato verso la risposta corretta (alzando la probabilità di un cane) e un tantino meno peso a quelli che l’avrebbero orientato in direzione opposta (alzando la probabilità di un gatto). Nei casi ipotizzati prima, da quel momento in avanti darebbe meno peso ai neuroni che avevano indicato erroneamente un orecchio, ma anche a quelli che avevano segnalato correttamente un muso corto, in quanto la lunghezza del muso non è una discriminante abbastanza affidabile tra gatto e cane, e dunque i dati su di essa devono avere un peso limitato nella decisione. Per esempio, il neurone *a* potrebbe ricevere peso 1,3, il neurone *b* peso 0,8, il neurone *c* 0,7 e il neurone *d* 1,2. Supponiamo allora che al tentativo seguente sia *a* che *d* diano alta probabilità a un cane (diciamo, 0,9 e 0,8 rispettivamente), ed entrambi i neuroni *b* e *c* diano invece bassa probabilità a un cane (diciamo, 0,2 e 0,1). Allora il classificatore non darà uguale probabilità al cane e al gatto, ma probabilità un po’ maggiore al cane, “fidandosi” maggiormente dei neuroni *a* e *d*. Non farebbe cioè una media dei quattro responsi, ma una media pesata: (0,9x1,3 + 0,2x0,8 + 0,1x0,7 + 0,8x1,2):4 = 0,59. Sia i premi che le punizioni, poi, vengono trasmessi all’ingiù per retropropagazione: quando un neurone del quarto strato vede aumentare il proprio peso, a sua volta aumenta il peso di tutti quei neuroni del terzo strato il cui input l’aveva spinto a dare la risposta per cui è stato premiato, e diminuisce il peso di quelli il cui input andava in direzione opposta e gli avrebbe fatto calcolare una risposta diversa. Se invece viene penalizzato, fa l’inverso con quelli del terzo strato. Poi i neuroni del terzo strato si comportano nello stesso modo con quelli del secondo, e questi con quelli del primo. L’obiettivo è quello di ridurre progressivamente i margini di errore a ogni livello (la “discesa del gradiente”). La rete, tuttavia, procede sostanzialmente alla cieca e i pesi vengono aggiustati solo pian piano, per tentativi ed errori: può accadere che a un certo punto siano premiati neuroni che avevano mandato un segnale sbagliato, ma che casualmente in quella circostanza aveva rafforzato la risposta corretta, o viceversa. Perciò il risultato di un singolo tentativo non dice molto sull’affidabilità della rete, e i pesi vanno corretti ogni volta solo di poco, per avvicinarsi gradualmente alla valutazione più corretta senza rischiare errori maggiori. Ogni volta che alla rete viene proposta una nuova immagine, essa la classifica seguendo lo stesso procedimento, ma in base ai nuovi pesi assegnati dopo il tentativo precedente. Allora il classificatore riceve di nuovo una conferma o una smentita dall’addestratore umano, e questa si propaga all’indietro modificando nuovamente i pesi su tutta la rete come prima. Non è detto che dopo un solo tentativo o due le capacità della rete migliorino molto; anzi, dato il carattere probabilistico del processo, potrebbero addirittura produrre risposte peggiori. Ma l’addestramento prevede l’esame di decine di migliaia di immagini, e alla lunga, giro dopo giro, la rete diventerà progressivamente più affidabile. Naturalmente la rete non deve imparare a classificare correttamente solo le immagini sulle quali viene addestrata, ma anche un numero potenzialmente infinito di immagini mai viste prima. Per far questo, pur apprendendo man mano dagli esempi, essa è fatta in modo da rispondere, ogni volta, generalizzando un po’ rispetto ai casi già visti, senza esser vincolata troppo rigidamente da tutti i loro minimi dettagli (cioè senza commettere “overfitting”). Alla fine, comunque, dopo esser stata confermata o corretta da noi per 10 o 20 mila volte, avrà aggiustato i pesi delle sue migliaia di neuroni in modo da dare sicuramente la risposta giusta per tutte le immagini già viste in precedenza, ma con altissima probabilità anche per qualunque immagine diversa vista per la prima volta. Se un giorno decidessimo di riciclare la rete per distinguere altre cose, ad esempio funghi porcini, dovremmo resettare tutti i pesi e ricominciare daccapo l’apprendimento per retropropagazione, esercitandola con altre decine di migliaia di foto di funghi porcini e non porcini. Il riconoscimento di immagini è solo un esempio abbastanza semplice dei tanti compiti diversi che possono essere svolti dalle reti neurali, che in effetti costituiscono il “motore” di tutte le strabilianti applicazioni contemporanee dell’IA che ricordate in precedenza, da AlphaGo e AlphaFold, a ChatGPT, ai sistemi per dipingere, produrre musica, ecc. L’enorme numero di esempi necessari ad addestrare una rete spiega perché sia indispensabile disporre di sterminate raccolte di dati (i “big data”). Il tempo necessario non sarebbe un problema per le macchine, dato che esse procedono alla velocità della luce, ma servono anche gli addestratori umani, ed anch’essi vanno reclutati in gran numero, e naturalmente la loro stessa costruzione è assai impegnativa. Tutto ciò è dunque assai costoso. Per le reti neurali parliamo di IA “sub-simbolica”, perché non c’è nulla in esse che corrisponda a parole o concetti nostri, per esempio a simboli di un cane o di un gatto o delle loro parti. Esiste solo una selva di pesi diversi, cioè di disposizioni a reagire in modi diversi ma perfettamente adeguati a ciascuno degli infiniti compiti possibili. Ecco perché per chiunque, anche per gli esperti, è impossibile ricostruire la strategia di decisione che porta una rete a classificare le immagini, o a vincere a scacchi, a impostare correttamente una conversazione o ad assimilare nuovi contenuti. La rete ha imparato da sé nel senso che quelle disposizioni le ha sviluppate autonomamente (e automaticamente) durante l’addestramento, nel quale gli umani non hanno fatto altro che indicare se ciascuna risposta era giusta o no. ### Altre strategie di AI Oltre all’IA simbolica e alle reti neurali ci sono anche altre forme di IA: gli algoritmi genetici, quelli probabilisti e quelli analogisti. Ad esempio, gli algoritmi genetici funzionano così: invece di addestrare una sola rete se ne producono molte, e un algoritmo seleziona quelle di maggior successo; poi le ricombina tra loro introducendo anche casualmente certi caratteri nuovi (come avviene nella riproduzione genetica) creando così una nuova generazione di reti; poi ricombina queste ultime, le seleziona, nuovamente, ecc., producendo reti sempre più efficienti, proprio come nell’evoluzione per selezione naturale. Nell’articolo precedente abbiamo detto che l’intelligenza di questi sistemi non sta nei loro componenti materiali, ma nella meravigliosa architettura della loro organizzazione. Nell’IA simbolica chi li organizza è l’essere umano, esattamente come avviene per tutti i tipi di macchina, inclusi i computer. Ma gli umani non sono onniscienti e onnipotenti, e questo spiega i limiti della IA simbolica. Nel cervello umano la prodigiosa architettura che lo rende intelligente si è sviluppata con una evoluzione di milioni di anni guidata dalla selezione naturale: in pratica è l’ambiente che, rispondendo positivamente o negativamente alle strategie degli individui, li ha portati a elaborare le strategie più efficaci sviluppando le strutture cerebrali migliori. Con le reti neurali accade qualcosa di simile: al posto dell’ambiente è l’addestratore umano che conferma o corregge le risposte, ma poi è la rete stessa che progressivamente si auto-struttura nel modo più efficiente in base alle conferme o smentite che riceve. Alle spalle però, c’è di nuovo l’ingegnosità umana, che l’ha costruita in modo che da auto-strutturarsi così. È un po’ come se un bravo maestro insegnasse all’allievo a imparare: una volta appreso il metodo, l’allievo può imparare da solo, superando anche di molto il maestro. Negli algoritmi genetici, infine, l’allievo va anche oltre: non solo impara da sé molte cose nuove, ma riesce anche a produrre ed addestrare varie generazioni di nuovi allievi più dotati di lui e sempre più potenti. Nel prossimo articolo di questa serie ci soffermeremo tuttavia sui limiti dei sistemi di IA attualmente disponibili: osserveremo che da molti punti di vista essi non sono realmente intelligenti, almeno non quanto lo siamo noi e come lo siamo noi. In seguito, perciò, vedremo che essi comportano alcuni rischi, da cui dobbiamo guardarci. Ci chiederemo poi se invece un domani non si possa arrivare a sistemi intelligenti quanto noi o addirittura molto di più, e se essi non finirebbero per rappresentare, a loro volta, pericoli molto maggiori.

Cartelle

Cartelle in cui è catalogato il documento

Testo Estratto (Cache)

Testo grezzo estratto dalla sorgente

L’IA “simbolica” processa i dati secondo le nostre stesse regole logiche, e i suoi procedimenti ci sono comprensibili, ma proprio per questo non va qualitativamente oltre le nostre possibilità. Invece le reti neurali sanno imparare da sole grazie a meccanismi di rinforzo e retropropagazione, addestrandosi con decine di migliaia di esempi, come vediamo con un esempio semplificato. In questo modo superano nettamente le capacità umane in molti settori. Per noi è tuttavia impossibile capire la “logica” che seguono nel risolvere i loro problemi. Gli algoritmi genetici producono reti neurali sempre migliori con metodi simili alla selezione naturale. Altri tipi di IA sono gli algoritmi probabilisti e quelli analogisti1.
Parole chiave
Parole chiave
- Intelligenza artificiale simbolica
- Intelligenza artificiale sub-simbolica
- Reti neurali profonde
- Apprendimento per rinforzo e retropropagazione
- Algoritmi genetici.
Intelligenza artificiale simbolica
Fu sul finire degli anni ’50 del Novecento che si cominciò a lavorare ai primi embrionali sistemi di intelligenza artificiale (che chiameremo d’ora innanzi “IA”)2. Allora la strategia più seguita fu di far processare i dati secondo regole logiche, più o meno come facciamo noi nel nostro ragionamento, nel modo illustrato nell’articolo precedente3: se il sistema parte dalle premesse “Se A allora B” e “Non B”, esso conclude “Non A”. Se parte da “Se A allora B” e “A”, esso conclude “B”, e così via.
In questa maniera il sistema segue le stesse procedure di ragionamento che seguiamo noi e possiamo dargli dati e istruzioni in un codice a noi comprensibile, come le daremmo a un’altra persona. Perciò possiamo chiedergli di ottenere certi obiettivi coi metodi che anche noi useremmo, come appunto induzione, deduzione, ragionamento ipotetico ecc., come dicevamo in precedenza. Ogni stato del sistema simboleggia qualcosa che possiamo comprendere, cioè ha il medesimo significato che avrebbe qualche nostra parola o frase; perciò l’IA di questo tipo viene detta “IA simbolica”. Essendo quella più tradizionale, è detta anche “Gofai” (“good old -fashioned AI”, “buona IA di vecchio stampo”)4.
Il vantaggio di far lavorare la macchina al posto nostro è che essa è automatica ed estremamente veloce, dato che i transistors compiono i passaggi logici alla velocità della luce; perciò riesce a fare in poco tempo cose che a noi ne richiederebbero troppo per esser realizzabili; inoltre, il rischio di errori è quasi inesistente. In questo modo, però, la macchina non può andar molto al di là delle nostre istruzioni, e per ogni nuovo compito dobbiamo darle regole e istruzioni nuove, cioè scrivere un nuovo programma. Inoltre, è impossibile dare le regole per tutti gli
infiniti compiti che si possono render necessari, specialmente se si tratta di imparare o scoprire cose che non conosciamo ancora. In più, per capire le regole bisogna capire il linguaggio e conoscere le cose, ma i computer non lo capiscono e non le conoscono abbastanza, e insegnargliele sarebbe ancor più complicato.
Per esempio, negli anni ’70 e ’80 del secolo scorso il premio Nobel Herbert Simon e i suoi colleghi scrissero dei programmi per fare scoperte scientifiche. Quei programmi, in effetti, sono riusciti riscoprire molte leggi, come la legge dei gas ideali, la legge di Coulomb, la legge di Ohm, la terza legge di Keplero e molte altre. Però non ne hanno mai scoperte di nuove: non hanno fatto nessuna vera scoperta5.
Altri hanno programmato sistemi molto utili ed efficaci, come DENDRAL, per ricostruire la struttura molecolare dei composti organici in base alla loro spettrografia di massa, o come GOLEM, per riconoscere la struttura secondaria delle proteine a partire dalla loro struttura primaria, o MYCYN e ASSISTANT, per compiere diagnosi mediche6. In sostanza, tuttavia, si trattava sempre di dire alla macchina cosa cercare, dove e come, oppure cosa fare e come; ma questa non poteva procedere autonomamente.
In questa maniera il sistema segue le stesse procedure di ragionamento che seguiamo noi e possiamo dargli dati e istruzioni in un codice a noi comprensibile, come le daremmo a un’altra persona. Perciò possiamo chiedergli di ottenere certi obiettivi coi metodi che anche noi useremmo, come appunto induzione, deduzione, ragionamento ipotetico ecc., come dicevamo in precedenza. Ogni stato del sistema simboleggia qualcosa che possiamo comprendere, cioè ha il medesimo significato che avrebbe qualche nostra parola o frase; perciò l’IA di questo tipo viene detta “IA simbolica”. Essendo quella più tradizionale, è detta anche “Gofai” (“good old -fashioned AI”, “buona IA di vecchio stampo”)4.
Il vantaggio di far lavorare la macchina al posto nostro è che essa è automatica ed estremamente veloce, dato che i transistors compiono i passaggi logici alla velocità della luce; perciò riesce a fare in poco tempo cose che a noi ne richiederebbero troppo per esser realizzabili; inoltre, il rischio di errori è quasi inesistente. In questo modo, però, la macchina non può andar molto al di là delle nostre istruzioni, e per ogni nuovo compito dobbiamo darle regole e istruzioni nuove, cioè scrivere un nuovo programma. Inoltre, è impossibile dare le regole per tutti gli
infiniti compiti che si possono render necessari, specialmente se si tratta di imparare o scoprire cose che non conosciamo ancora. In più, per capire le regole bisogna capire il linguaggio e conoscere le cose, ma i computer non lo capiscono e non le conoscono abbastanza, e insegnargliele sarebbe ancor più complicato.
Per esempio, negli anni ’70 e ’80 del secolo scorso il premio Nobel Herbert Simon e i suoi colleghi scrissero dei programmi per fare scoperte scientifiche. Quei programmi, in effetti, sono riusciti riscoprire molte leggi, come la legge dei gas ideali, la legge di Coulomb, la legge di Ohm, la terza legge di Keplero e molte altre. Però non ne hanno mai scoperte di nuove: non hanno fatto nessuna vera scoperta5.
Altri hanno programmato sistemi molto utili ed efficaci, come DENDRAL, per ricostruire la struttura molecolare dei composti organici in base alla loro spettrografia di massa, o come GOLEM, per riconoscere la struttura secondaria delle proteine a partire dalla loro struttura primaria, o MYCYN e ASSISTANT, per compiere diagnosi mediche6. In sostanza, tuttavia, si trattava sempre di dire alla macchina cosa cercare, dove e come, oppure cosa fare e come; ma questa non poteva procedere autonomamente.
IA sub-simbolica o connessionista: le reti neurali
Fin dagli anzi era stata proposta anche un’idea diversa, ispirata alla struttura del cervello7. Allora essa ebbe poca fortuna, ma negli anni Duemila ha avuto uno sviluppo straordinario e costituisce oggi la strategia di gran lunga prevalente.
Nel ragionamento conscio noi compiamo un passo logico alla volta, con una catena lineare per cui da A si passa a B, da B a C, ecc., e monitoriamo tutto il percorso con l’introspezione. Lo stesso fa l’IA simbolica, con un processo algoritmico, dove ogni passo successivo è ben determinato e prevedibile. Invece nel cervello molti neuroni sono attivi allo stesso tempo, ciascuno agisce su molti altri contemporaneamente e a sua volta riceve segnali da tanti altri. Così un gran numero di passaggi viene compiuto parallelamente allo stesso tempo, in milionesimi di secondo, e tutto ciò sfugge completamente alla nostra consapevolezza, è opaco all’introspezione.
La corteccia cerebrale è costituita da strati sovrapposti di neuroni: i neuroni degli strati inferiori ricevono i segnali dall’esterno e passano tali informazioni elementari ai neuroni degli strati superiori, che da esse elaborano informazioni via via più complesse. Allora sono stati creati sistemi di IA detti “reti neurali profonde”, in quanto costituiti da elementi base organizzati tra loro in modo analogo ai neuroni e ugualmente disposti in molti strati.
Melanie Mitchell illustra il funzionamento di una rete neurale profonda di tipo convolutivo, quello oggi prevalente8. Cerchiamo allora, pur semplificando al massimo, di coglierne gli aspetti essenziali: la figura 1 rappresenta molto schematicamente la struttura della rete, dove i pallini rappresentano i “neuroni”, ossia i nodi o componenti elementari della rete. Gli strati qui sono cinque, ma nella realtà possono essere anche centinaia, e composti ciascuno da centinaia di neuroni. Supponiamo ora di voler addestrare questa rete a distinguere le immagini di cani da quelle di gatti o altro. Non si tratta affatto di cosa semplice, perché compiti che a noi umani sembrano facilissimi, come riconoscere e distinguere ciò che vediamo e udiamo, per l’IA sono invece assai difficili, molto più della soluzione di complessi problemi di matematica. Ci appaiono così facili solo perché non abbiamo un’idea del lavoro estremamente complesso che devono fare i nostri neuroni per riuscirci.
Nel ragionamento conscio noi compiamo un passo logico alla volta, con una catena lineare per cui da A si passa a B, da B a C, ecc., e monitoriamo tutto il percorso con l’introspezione. Lo stesso fa l’IA simbolica, con un processo algoritmico, dove ogni passo successivo è ben determinato e prevedibile. Invece nel cervello molti neuroni sono attivi allo stesso tempo, ciascuno agisce su molti altri contemporaneamente e a sua volta riceve segnali da tanti altri. Così un gran numero di passaggi viene compiuto parallelamente allo stesso tempo, in milionesimi di secondo, e tutto ciò sfugge completamente alla nostra consapevolezza, è opaco all’introspezione.
La corteccia cerebrale è costituita da strati sovrapposti di neuroni: i neuroni degli strati inferiori ricevono i segnali dall’esterno e passano tali informazioni elementari ai neuroni degli strati superiori, che da esse elaborano informazioni via via più complesse. Allora sono stati creati sistemi di IA detti “reti neurali profonde”, in quanto costituiti da elementi base organizzati tra loro in modo analogo ai neuroni e ugualmente disposti in molti strati.
Melanie Mitchell illustra il funzionamento di una rete neurale profonda di tipo convolutivo, quello oggi prevalente8. Cerchiamo allora, pur semplificando al massimo, di coglierne gli aspetti essenziali: la figura 1 rappresenta molto schematicamente la struttura della rete, dove i pallini rappresentano i “neuroni”, ossia i nodi o componenti elementari della rete. Gli strati qui sono cinque, ma nella realtà possono essere anche centinaia, e composti ciascuno da centinaia di neuroni. Supponiamo ora di voler addestrare questa rete a distinguere le immagini di cani da quelle di gatti o altro. Non si tratta affatto di cosa semplice, perché compiti che a noi umani sembrano facilissimi, come riconoscere e distinguere ciò che vediamo e udiamo, per l’IA sono invece assai difficili, molto più della soluzione di complessi problemi di matematica. Ci appaiono così facili solo perché non abbiamo un’idea del lavoro estremamente complesso che devono fare i nostri neuroni per riuscirci.
Supponiamo anche, per semplicità, di avere un’immagine in bianco e nero. Fondamentalmente, essa sarà dunque composta di pixel (puntini) chiari o scuri, e questi costituiscono l’input che diamo al primo strato della rete (figura 2). Per riconoscere un’immagine bisognerà ricostruirne i contorni, perciò la suddividiamo in una griglia di piccoli quadrettini, e assegniamo ciascun quadrettino a un gruppetto di neuroni del primo strato (figura 3). Per esempio, il quadrettino n.1 sarà assegnato ai neuroni a1 , b1 e c1 , il quadrettino n.2 ai neuroni a2 , b2 e c2 , e così via.
Nel cervello i neuroni compiono la loro funzione attivandosi o meno (in inglese si dice “firing ”, “sparando”) in corrispondenza di certi stimoli, e trasmettendo così a loro volta un segnale ai neuroni collegati. Nella nostra rete i neuroni possono “sparare” più o meno forte (con valori tra 0 e 1) a seconda che lo stimolo a cui reagiscono sia più o meno forte. Siccome si tratta di ricostruire i contorni della figura, per ciascun quadretto i neuroni di tipo a spareranno se in esso i pixel costituiscono una linea di contrasto verticale, i neuroni di tipo b se costituiscono una linea orizzontale, e quelli di tipo c se costituiscono una linea obliqua. Essi spareranno con più forza se la linea di contrasto è più netta e più debolmente se è meno netta. Per esempio, un neurone sparerà con forza 0,9 per una linea di contrasto molto marcata, con forza 0,5 per una linea non molto marcata, con forza 0,1 se a mala pena la si distingue. Il neurone non spara affatto per le zone tutte bianche o tutte nere, dove non ci sono contasti.
Nel secondo strato ogni neurone riceve i messaggi di input dai neuroni del primo strato corrispondenti a un certo insieme di quadretti, ossia a una piccola area dell’immagine. In base ai segnali ricevuti dai neuroni del primo strato, esso si attiverà se in quella certa area risulta abbastanza probabile che le linee formino un certo contorno un po’ più complesso. Ad esempio, taluni neuroni del secondo strato spareranno se rilevano una curva, altri se rilevano un angolo, altri una forma a T, ecc. Anche qui, lo sparo è più o meno forte a seconda di quanto al neurone appare “probabile” che ci sia la forma di sua competenza, e questa probabilità esso la “calcola” a partire dalla forza (ossia dalle probabilità) con cui i neuroni del primo strato gli comunicano i loro dati9.
Nel terzo strato ciascun neurone riceve gli input da un certo numero di neuroni del secondo strato, e in base ad essi deve segnalare se nell’area dell’immagine di sua competenza è presente una certa forma compiuta, come una testa, una zampa, o una coda. Anch’esso dà il segnale con una forza maggiore o minore, a seconda di quanto quella forma appare probabile in base ai responsi provenienti dal secondo strato. Nel quarto strato ciascun neurone ha competenza su tutta l’immagine, e con lo stesso metodo, in base agli input dello strato inferiore, deve assegnare una certa probabilità al fatto che si tratti di un cane oppure di un gatto. Il quinto strato, infine, è costituito dal modulo classificatore, che facendo la media delle probabilità indicate dai neuroni del quarto strato “dirà” con che probabilità si tratta di un cane o di un gatto10.
C’è tuttavia un problema: i neuroni come tali sono assolutamente ignoranti, non sanno cos’è un pixel, né cosa sono il chiaro e lo scuro, il verticale e l’orizzontale, una testa o gamba, un cane o un gatto. In altre parole, la rete dovrebbe essere in grado di riconoscere correttamente un numero potenzialmente infinito di immagini tutte diverse, ma noi non possiamo programmare ciascun neurone per rispondere esattamente a qualunque tipo di input. Per farlo dovremmo scrivere un complicatissimo programma per ciascuno di essi, come faremmo nell’IA simbolica. Ma questo è impossibile perché sono troppi, ci vorrebbe troppo tempo, e comunque non garantiremmo la precisione della risposta in tutti i casi possibili. Perciò il modo in cui i neuroni reagiscono ai loro imput è impostato secondo criteri standard che hanno una validità di massima, ma non garantiscono affatto che i neuroni “sparino” correttamente nei più diversi tipi di circostanza.
Non c’è dunque nemmeno alcuna garanzia che in una rete nuova, non ancora “addestrata”, la risposta finale data dal modulo classificatore sia vera o approssimativamente vera. In pratica, ai primi tentativi la risposta è quasi casuale e può risultare del tutto sbagliata. Ad esempio, potrebbe darsi che il modulo classificatore ritenga molto probabile che l’immagine rappresenti un gatto perché certi neuroni del quarto strato hanno segnalato un orecchio di una certa forma, o perché altri neuroni hanno segnalato un muso piuttosto corto; la risposta potrebbe però essere sbagliata, perché si tratta invece di un cane dal muso schiacciato, o perché quella che era stata “letta” come un orecchio era in realtà una piega del collo.
Possiamo però addestrare la rete ad autocorreggersi progressivamente tramite un apprendimento supervisionato : un addestratore umano confronterà la risposta della rete con l’immagine, e se è corretta o quasi (ad esempio se l’ha classificata come un “cane” con probabilità 0,9 ed è davvero un cane) darà al modulo classificatore un “premio”, ossia una conferma, se è sbagliata gli darà una piccola “punizione”, ossia una smentita. Ricevendo una conferma il modulo classificatore a sua volta “premierà” i neuroni del quarto strato i cui input lo avevano fatto propendere per un cane, e “punirà” quelli che l’avrebbero fatto propendere per un gatto. Viceversa, in casi come quelli appena immaginati in cui il classificatore aveva indicato erroneamente un gatto, l’addestratore lo smentirà, ed esso a sua volta “punirà” quelli che l’avevano fatto propendere per il gatto (come quelli che avevano segnalato un muso corto, o un certo tipo di orecchio) e “premierà” gli altri.
Premio e punizione consistono in questo: dopo aver classificato la prima immagine, alla rete viene chiesto di classificarne altre, e quando il classificatore deve calcolare le nuove risposte, non dà lo stesso peso al responso di ciascun neurone del quarto strato, ma leggermente più peso ai segnali di quelli che l’avevano orientato verso la riposta corretta (alzando la probabilità di un cane) e un tantino meno peso a quelli che l’avrebbero orientato in direzione opposta (alzando la probabilità di un gatto). Nei casi ipotizzati prima, da quel momento in avanti darebbe meno peso ai neuroni che avevano indicato erroneamente un orecchio, ma anche a quelli che avevano segnalato correttamente un muso corto, in quanto la lunghezza del muso non è una discriminante abbastanza affidabile tra gatto e cane, e dunque i dati su di essa devono avere un peso limitato nella decisione.
Per esempio, il neurone a potrebbe ricevere peso 1,3, il neurone b peso 0,8, il neurone c 0,7 e il neurone d 1,2. Supponiamo allora che al tentativo seguente sia a che d diano alta probabilità a un cane (diciamo, 0,9 e 0,8 rispettivamente), ed entrambi i neuroni b e c diano invece bassa probabilità a un cane (diciamo, 0,2 e 0,1). Allora il classificatore non darà ugual probabilità al cane e al gatto, ma probabilità un po’ maggiore al cane, “fidandosi” maggiormente dei neuroni a e d. Non farebbe cioè una media dei quattro responsi, ma una media pesata: (0,9x1,3 + 0,2x0,8 + 0,1x0,7 + 0,8x1,2):4 = 0,59.
Sia i premi che le punizioni, poi, vengono trasmessi all’in giù per retroproagazione : quando un neurone del quarto strato vede aumentare il proprio peso, a sua volta aumenta il peso di tutti quei neuroni del terzo strato il cui input l’aveva spinto a dare la risposta per cui è stato premiato, e diminuisce il peso di quelli il cui input andava in direzione opposta e gli avrebbe fatto calcolare una risposta diversa. Se invece viene penalizzato fa l’inverso con quelli del terzo strato. Poi i neuroni del terzo strato si comportano nello stesso modo con quelli del secondo, e questi con quelli del primo.
L’obiettivo è quello di ridurre progressivamente i margini di errore a ogni livello (la “discesa del gradiente”). La rete, tuttavia, procede sostanzialmente alla cieca e i pesi vengono aggiustati solo pian piano, per tentativi ed errori: può accadere che a un certo punto siano premiati neuroni che avevano mandato un segnale sbagliato, ma che casualmente in quella circostanza aveva rafforzato la risposta corretta, o viceversa. Perciò il risultato di un singolo tentativo non dice molto sull’affidabilità della rete, e i pesi vanno corretti ogni volta solo di poco, per avvicinarsi gradualmente alla valutazione più corretta senza rischiare errori maggiori.
Ogni volta che alla rete viene proposta una nuova immagine essa la classifica seguendo lo stesso procedimento, ma in base ai nuovi pesi assegnati dopo il tentativo precedente. Allora il classificatore riceve di nuovo una conferma o una smentita dall’addestratore umano, e questa si propaga all’indietro modificando nuovamente i pesi su tutta la rete come prima. Non è detto che dopo un solo tentativo o due le capacità della rete migliorino molto; anzi, dato il carattere probabilistico del processo, potrebbero addirittura produrre risposte peggiori. Ma l’addestramento prevede l’esame di decine di migliaia di immagini, e alla lunga, giro dopo giro, la rete diventerà progressivamente più affidabile.
Naturalmente la rete non deve imparare a classificare correttamente solo le immagini sulle quali viene addestrata, ma anche un numero potenzialmente infinito di immagini mai viste prima. Per far questo, pur apprendendo man mano dagli esempi, essa è fatta in modo da rispondere, ogni volta, generalizzando un po’ rispetto ai casi già visti, senza esser vincolata troppo rigidamente da tutti i loro minimi dettagli (cioè senza commettere “overfitting”). Alla fine, comunque, dopo esser stata confermata o corretta da noi per 10 o 20 mila volte, avrà aggiustato i pesi delle sue migliaia di neuroni in modo da dare sicuramente la risposta giusta per tutte le immagini già viste in precedenza, ma con altissima probabilità anche per qualunque immagine diversa vista per la prima volta.
Se un giorno decidessimo di riciclare la rete per distinguere altre cose, ad esempio funghi porcini, dovremmo resettare tutti i pesi e ricominciare daccapo l’apprendimento per retropropagazione, esercitandola con altre decine di migliaia di foto di funghi porcini e non porcini.
Il riconoscimento di immagini è solo un esempio abbastanza semplice dei tanti compiti diversi che possono essere svolti dalle reti neurali, che in effetti costituiscono il “motore” di tutte le strabilianti applicazioni contemporanee dell’IA che ricordate in precedenza, da AlphaGo e AlphaFold, a ChatGPT, ai sistemi per dipingere, produrre musica, ecc.
L’enorme numero di esempi necessari ad addestrare una rete spiega perché sia indispensabile disporre di sterminate raccolte di dati (i “big data”). Il tempo necessario non sarebbe un problema per le macchine, dato che esse procedono alla velocità della luce, ma servono anche gli addestratori umani, ed anch’essi vanno reclutati in gran numero, e naturalmente la loro stessa costruzione è assai impegnativa. Tutto ciò è dunque assai costoso.
Per le reti neurali parliamo di IA “sub-simbolica”, perché non c’è nulla in esse che corrisponda a parole o concetti nostri, per esempio a simboli di un cane o di un gatto o delle loro parti. Esiste solo una selva di pesi diversi, cioè di disposizioni a reagire in modi diversi ma perfettamente adeguati a ciascuno degli infiniti compiti possibili.
Ecco perché per chiunque, anche per gli esperti, è impossibile ricostruire la strategia di decisione che porta una rete a classificare le immagini, o a vincere a scacchi, a impostare correttamente una conversazione o ad assimilare nuovi contenuti. La rete ha imparato da sé nel senso che quelle disposizioni le ha sviluppate autonomamente (e automaticamente) durante l’addestramento, nel quale gli umani non hanno fatto altro che indicare se ciascuna risposta era giusta o no.
Nel cervello i neuroni compiono la loro funzione attivandosi o meno (in inglese si dice “firing ”, “sparando”) in corrispondenza di certi stimoli, e trasmettendo così a loro volta un segnale ai neuroni collegati. Nella nostra rete i neuroni possono “sparare” più o meno forte (con valori tra 0 e 1) a seconda che lo stimolo a cui reagiscono sia più o meno forte. Siccome si tratta di ricostruire i contorni della figura, per ciascun quadretto i neuroni di tipo a spareranno se in esso i pixel costituiscono una linea di contrasto verticale, i neuroni di tipo b se costituiscono una linea orizzontale, e quelli di tipo c se costituiscono una linea obliqua. Essi spareranno con più forza se la linea di contrasto è più netta e più debolmente se è meno netta. Per esempio, un neurone sparerà con forza 0,9 per una linea di contrasto molto marcata, con forza 0,5 per una linea non molto marcata, con forza 0,1 se a mala pena la si distingue. Il neurone non spara affatto per le zone tutte bianche o tutte nere, dove non ci sono contasti.
Nel secondo strato ogni neurone riceve i messaggi di input dai neuroni del primo strato corrispondenti a un certo insieme di quadretti, ossia a una piccola area dell’immagine. In base ai segnali ricevuti dai neuroni del primo strato, esso si attiverà se in quella certa area risulta abbastanza probabile che le linee formino un certo contorno un po’ più complesso. Ad esempio, taluni neuroni del secondo strato spareranno se rilevano una curva, altri se rilevano un angolo, altri una forma a T, ecc. Anche qui, lo sparo è più o meno forte a seconda di quanto al neurone appare “probabile” che ci sia la forma di sua competenza, e questa probabilità esso la “calcola” a partire dalla forza (ossia dalle probabilità) con cui i neuroni del primo strato gli comunicano i loro dati9.
Nel terzo strato ciascun neurone riceve gli input da un certo numero di neuroni del secondo strato, e in base ad essi deve segnalare se nell’area dell’immagine di sua competenza è presente una certa forma compiuta, come una testa, una zampa, o una coda. Anch’esso dà il segnale con una forza maggiore o minore, a seconda di quanto quella forma appare probabile in base ai responsi provenienti dal secondo strato. Nel quarto strato ciascun neurone ha competenza su tutta l’immagine, e con lo stesso metodo, in base agli input dello strato inferiore, deve assegnare una certa probabilità al fatto che si tratti di un cane oppure di un gatto. Il quinto strato, infine, è costituito dal modulo classificatore, che facendo la media delle probabilità indicate dai neuroni del quarto strato “dirà” con che probabilità si tratta di un cane o di un gatto10.
C’è tuttavia un problema: i neuroni come tali sono assolutamente ignoranti, non sanno cos’è un pixel, né cosa sono il chiaro e lo scuro, il verticale e l’orizzontale, una testa o gamba, un cane o un gatto. In altre parole, la rete dovrebbe essere in grado di riconoscere correttamente un numero potenzialmente infinito di immagini tutte diverse, ma noi non possiamo programmare ciascun neurone per rispondere esattamente a qualunque tipo di input. Per farlo dovremmo scrivere un complicatissimo programma per ciascuno di essi, come faremmo nell’IA simbolica. Ma questo è impossibile perché sono troppi, ci vorrebbe troppo tempo, e comunque non garantiremmo la precisione della risposta in tutti i casi possibili. Perciò il modo in cui i neuroni reagiscono ai loro imput è impostato secondo criteri standard che hanno una validità di massima, ma non garantiscono affatto che i neuroni “sparino” correttamente nei più diversi tipi di circostanza.
Non c’è dunque nemmeno alcuna garanzia che in una rete nuova, non ancora “addestrata”, la risposta finale data dal modulo classificatore sia vera o approssimativamente vera. In pratica, ai primi tentativi la risposta è quasi casuale e può risultare del tutto sbagliata. Ad esempio, potrebbe darsi che il modulo classificatore ritenga molto probabile che l’immagine rappresenti un gatto perché certi neuroni del quarto strato hanno segnalato un orecchio di una certa forma, o perché altri neuroni hanno segnalato un muso piuttosto corto; la risposta potrebbe però essere sbagliata, perché si tratta invece di un cane dal muso schiacciato, o perché quella che era stata “letta” come un orecchio era in realtà una piega del collo.
Possiamo però addestrare la rete ad autocorreggersi progressivamente tramite un apprendimento supervisionato : un addestratore umano confronterà la risposta della rete con l’immagine, e se è corretta o quasi (ad esempio se l’ha classificata come un “cane” con probabilità 0,9 ed è davvero un cane) darà al modulo classificatore un “premio”, ossia una conferma, se è sbagliata gli darà una piccola “punizione”, ossia una smentita. Ricevendo una conferma il modulo classificatore a sua volta “premierà” i neuroni del quarto strato i cui input lo avevano fatto propendere per un cane, e “punirà” quelli che l’avrebbero fatto propendere per un gatto. Viceversa, in casi come quelli appena immaginati in cui il classificatore aveva indicato erroneamente un gatto, l’addestratore lo smentirà, ed esso a sua volta “punirà” quelli che l’avevano fatto propendere per il gatto (come quelli che avevano segnalato un muso corto, o un certo tipo di orecchio) e “premierà” gli altri.
Premio e punizione consistono in questo: dopo aver classificato la prima immagine, alla rete viene chiesto di classificarne altre, e quando il classificatore deve calcolare le nuove risposte, non dà lo stesso peso al responso di ciascun neurone del quarto strato, ma leggermente più peso ai segnali di quelli che l’avevano orientato verso la riposta corretta (alzando la probabilità di un cane) e un tantino meno peso a quelli che l’avrebbero orientato in direzione opposta (alzando la probabilità di un gatto). Nei casi ipotizzati prima, da quel momento in avanti darebbe meno peso ai neuroni che avevano indicato erroneamente un orecchio, ma anche a quelli che avevano segnalato correttamente un muso corto, in quanto la lunghezza del muso non è una discriminante abbastanza affidabile tra gatto e cane, e dunque i dati su di essa devono avere un peso limitato nella decisione.
Per esempio, il neurone a potrebbe ricevere peso 1,3, il neurone b peso 0,8, il neurone c 0,7 e il neurone d 1,2. Supponiamo allora che al tentativo seguente sia a che d diano alta probabilità a un cane (diciamo, 0,9 e 0,8 rispettivamente), ed entrambi i neuroni b e c diano invece bassa probabilità a un cane (diciamo, 0,2 e 0,1). Allora il classificatore non darà ugual probabilità al cane e al gatto, ma probabilità un po’ maggiore al cane, “fidandosi” maggiormente dei neuroni a e d. Non farebbe cioè una media dei quattro responsi, ma una media pesata: (0,9x1,3 + 0,2x0,8 + 0,1x0,7 + 0,8x1,2):4 = 0,59.
Sia i premi che le punizioni, poi, vengono trasmessi all’in giù per retroproagazione : quando un neurone del quarto strato vede aumentare il proprio peso, a sua volta aumenta il peso di tutti quei neuroni del terzo strato il cui input l’aveva spinto a dare la risposta per cui è stato premiato, e diminuisce il peso di quelli il cui input andava in direzione opposta e gli avrebbe fatto calcolare una risposta diversa. Se invece viene penalizzato fa l’inverso con quelli del terzo strato. Poi i neuroni del terzo strato si comportano nello stesso modo con quelli del secondo, e questi con quelli del primo.
L’obiettivo è quello di ridurre progressivamente i margini di errore a ogni livello (la “discesa del gradiente”). La rete, tuttavia, procede sostanzialmente alla cieca e i pesi vengono aggiustati solo pian piano, per tentativi ed errori: può accadere che a un certo punto siano premiati neuroni che avevano mandato un segnale sbagliato, ma che casualmente in quella circostanza aveva rafforzato la risposta corretta, o viceversa. Perciò il risultato di un singolo tentativo non dice molto sull’affidabilità della rete, e i pesi vanno corretti ogni volta solo di poco, per avvicinarsi gradualmente alla valutazione più corretta senza rischiare errori maggiori.
Ogni volta che alla rete viene proposta una nuova immagine essa la classifica seguendo lo stesso procedimento, ma in base ai nuovi pesi assegnati dopo il tentativo precedente. Allora il classificatore riceve di nuovo una conferma o una smentita dall’addestratore umano, e questa si propaga all’indietro modificando nuovamente i pesi su tutta la rete come prima. Non è detto che dopo un solo tentativo o due le capacità della rete migliorino molto; anzi, dato il carattere probabilistico del processo, potrebbero addirittura produrre risposte peggiori. Ma l’addestramento prevede l’esame di decine di migliaia di immagini, e alla lunga, giro dopo giro, la rete diventerà progressivamente più affidabile.
Naturalmente la rete non deve imparare a classificare correttamente solo le immagini sulle quali viene addestrata, ma anche un numero potenzialmente infinito di immagini mai viste prima. Per far questo, pur apprendendo man mano dagli esempi, essa è fatta in modo da rispondere, ogni volta, generalizzando un po’ rispetto ai casi già visti, senza esser vincolata troppo rigidamente da tutti i loro minimi dettagli (cioè senza commettere “overfitting”). Alla fine, comunque, dopo esser stata confermata o corretta da noi per 10 o 20 mila volte, avrà aggiustato i pesi delle sue migliaia di neuroni in modo da dare sicuramente la risposta giusta per tutte le immagini già viste in precedenza, ma con altissima probabilità anche per qualunque immagine diversa vista per la prima volta.
Se un giorno decidessimo di riciclare la rete per distinguere altre cose, ad esempio funghi porcini, dovremmo resettare tutti i pesi e ricominciare daccapo l’apprendimento per retropropagazione, esercitandola con altre decine di migliaia di foto di funghi porcini e non porcini.
Il riconoscimento di immagini è solo un esempio abbastanza semplice dei tanti compiti diversi che possono essere svolti dalle reti neurali, che in effetti costituiscono il “motore” di tutte le strabilianti applicazioni contemporanee dell’IA che ricordate in precedenza, da AlphaGo e AlphaFold, a ChatGPT, ai sistemi per dipingere, produrre musica, ecc.
L’enorme numero di esempi necessari ad addestrare una rete spiega perché sia indispensabile disporre di sterminate raccolte di dati (i “big data”). Il tempo necessario non sarebbe un problema per le macchine, dato che esse procedono alla velocità della luce, ma servono anche gli addestratori umani, ed anch’essi vanno reclutati in gran numero, e naturalmente la loro stessa costruzione è assai impegnativa. Tutto ciò è dunque assai costoso.
Per le reti neurali parliamo di IA “sub-simbolica”, perché non c’è nulla in esse che corrisponda a parole o concetti nostri, per esempio a simboli di un cane o di un gatto o delle loro parti. Esiste solo una selva di pesi diversi, cioè di disposizioni a reagire in modi diversi ma perfettamente adeguati a ciascuno degli infiniti compiti possibili.
Ecco perché per chiunque, anche per gli esperti, è impossibile ricostruire la strategia di decisione che porta una rete a classificare le immagini, o a vincere a scacchi, a impostare correttamente una conversazione o ad assimilare nuovi contenuti. La rete ha imparato da sé nel senso che quelle disposizioni le ha sviluppate autonomamente (e automaticamente) durante l’addestramento, nel quale gli umani non hanno fatto altro che indicare se ciascuna risposta era giusta o no.
Altre strategie di AI
Oltre all’IA simbolica e alle reti neurali ci sono anche altre forme di IA: gli algoritmi genetici, quelli probabilisti e quelli analogisti11. Ad esempio, gli algoritmi genetici funzionano così: invece di addestrare una sola rete se ne producono molte, e un algoritmo seleziona quelle di maggior successo; poi le ricombina tra loro introducendo anche casualmente certi caratteri nuovi (come avviene nella riproduzione genetica) creando così una nuova generazione di reti; poi ricombina queste ultime, le seleziona, nuovamente, ecc., producendo reti sempre più efficienti, proprio come nell’evoluzione per selezione naturale12.
Nell’articolo precedente13 abbiamo detto che l’intelligenza di questi sistemi non sta nei loro componenti materiali, ma nella meravigliosa architettura della loro organizzazione. Nell’IA simbolica chi li organizza è l’essere umano, esattamente come avviene per tutti i tipi di macchina, inclusi i computer. Ma gli umani non sono onniscienti e onnipotenti, e questo spiega i limiti della IA simbolica. Nel cervello umano la prodigiosa architettura che lo rende intelligente si è sviluppata con una evoluzione di milioni di anni guidata dalla selezione naturale: in pratica è l’ambiente che, rispondendo positivamente o negativamente alle strategie degli individui, li ha portati a elaborare le strategie più efficaci sviluppando le strutture cerebrali migliori. Con le reti neurali accade qualcosa di simile: al posto dell’ambiente è l’addestratore umano che conferma o corregge le risposte, ma poi è la rete stessa che progressivamente si auto-struttura nel modo più efficiente in base alle conferme o smentite che riceve. Alle spalle però, c’è di nuovo l’ingegnosità umana, che l’ha costruita in modo che da auto-strutturarsi così.
È un po’ come se un bravo maestro insegnasse all’allievo a imparare: una volta appreso il metodo, l’allievo più imparare da solo, superando anche di molto il maestro. Negli algoritmi genetici, infine, l’allievo va anche oltre: non solo impara da sé molte cose nuove, ma riesce anche a produrre ed addestrare varie generazioni di nuovi allievi più dotati di lui e sempre più potenti.
Nel prossimo articolo di questa serie ci soffermeremo tuttavia sui limiti dei sistemi di IA attualmente disponibili: osserveremo che da molti punti di vista essi non sono realmente intelligenti, almeno non quanto lo siamo noi e come lo siamo noi. In seguito, perciò, vedremo che essi comportano alcuni rischi, da cui dobbiamo guardarci. Ci chiederemo poi se invece un domani non si possa arrivare a sistemi intelligenti quanto noi o addirittura molto di più, e se essi non finirebbero per rappresentare, a loro volta, pericoli molto maggiori14.
Leggi il successivo articoli:
Perché l’IA attuale non è intelligente
Pensiero critico
Nell’articolo precedente13 abbiamo detto che l’intelligenza di questi sistemi non sta nei loro componenti materiali, ma nella meravigliosa architettura della loro organizzazione. Nell’IA simbolica chi li organizza è l’essere umano, esattamente come avviene per tutti i tipi di macchina, inclusi i computer. Ma gli umani non sono onniscienti e onnipotenti, e questo spiega i limiti della IA simbolica. Nel cervello umano la prodigiosa architettura che lo rende intelligente si è sviluppata con una evoluzione di milioni di anni guidata dalla selezione naturale: in pratica è l’ambiente che, rispondendo positivamente o negativamente alle strategie degli individui, li ha portati a elaborare le strategie più efficaci sviluppando le strutture cerebrali migliori. Con le reti neurali accade qualcosa di simile: al posto dell’ambiente è l’addestratore umano che conferma o corregge le risposte, ma poi è la rete stessa che progressivamente si auto-struttura nel modo più efficiente in base alle conferme o smentite che riceve. Alle spalle però, c’è di nuovo l’ingegnosità umana, che l’ha costruita in modo che da auto-strutturarsi così.
È un po’ come se un bravo maestro insegnasse all’allievo a imparare: una volta appreso il metodo, l’allievo più imparare da solo, superando anche di molto il maestro. Negli algoritmi genetici, infine, l’allievo va anche oltre: non solo impara da sé molte cose nuove, ma riesce anche a produrre ed addestrare varie generazioni di nuovi allievi più dotati di lui e sempre più potenti.
Nel prossimo articolo di questa serie ci soffermeremo tuttavia sui limiti dei sistemi di IA attualmente disponibili: osserveremo che da molti punti di vista essi non sono realmente intelligenti, almeno non quanto lo siamo noi e come lo siamo noi. In seguito, perciò, vedremo che essi comportano alcuni rischi, da cui dobbiamo guardarci. Ci chiederemo poi se invece un domani non si possa arrivare a sistemi intelligenti quanto noi o addirittura molto di più, e se essi non finirebbero per rappresentare, a loro volta, pericoli molto maggiori14.
Leggi il successivo articoli:
Perché l’IA attuale non è intelligente
Pensiero critico
|
Questo articolo è tratto da NUOVA SECONDARIA
|

Rigenera Contenuti

Rielabora i contenuti con Gemini

Nota: La rigenerazione richiederà alcuni secondi e sovrascriverà i contenuti esistenti.