L'IA debole, anche chiamata IA ristretta, è focalizzata su un compito specifico (ad esempio, il riconoscimento di oggetti).
Risolve una classe di problemi specifici attraverso alcune capacità cognitive.
Esempi: recommendation systems, assistenti virtuali, ecc.
Nel 2015-16 DeepMind sviluppa AlphaGo, un programma che batte il campione umano di Go, un famosissimo gioco da tavolo cinese.
Documentario: https://www.youtube.com/watch?v=WXuK6gekU1Y.
L’IA forte è un tipo di intelligenza artificiale le cui capacità imitano le proprietà adattive e generalizzabili del cervello umano, comprese il ragionamento, la pianificazione e l’intuizione.
Conosciuta anche come IA Generale (AGI), per ora è pura speculazione.
Articolo di Vox sui rapporti tra IA e religione: https://www.vox.com/the-highlight/23779413/silicon-valleys-ai-religion-transhumanism-longtermism-ea.
Nel 2011 Watson sconfigge campioni umani nel gioco televisivo statunitense Jeopardy.
Video: https://www.youtube.com/watch?v=P18EdAKuC1U.
“Customizzabile” per diverse applicazioni specifiche:
Le AI simboliche rappresentano la conoscenza tramite simboli ben distinti (parole, numeri, segni, etc.) che hanno un significato preciso, secondo regole definite.
Es. un programma che "ragiona" su come risolvere un problema di logica (come "Se piove, allora prendo l'ombrello") lavora usando sequenze di simboli come "piovere", "prendere" e "ombrello" e segue regole di inferenza logica ("Se X, allora Y") per prendere una decisione.
Un sistema esperto di medicina potrebbe usare simboli come "febbre", "tosse", "mal di testa" per fare diagnosi, applicando regole logiche per determinare quale malattia potrebbe corrispondere a questi sintomi.
Vantaggi:
Svantaggi:
Le IA sub-simboliche non rappresentano la conoscenza con simboli visibili o comprensibili dall'uomo (come "mela", "albero", "rosso"), ma la distribuiscono attraverso le connessioni tra elementi che processano le informazioni che la costituiscono (come i neuroni in un cervello umano).
In altre parole, la conoscenza è codificata in modo implicito attraverso pattern di attivazione.
In un cervello, ogni neurone e la sua connessione ad altri neuroni rappresentano in modo molto più astratto la conoscenza.
Una rete neurale "impara" a riconoscere pattern, ma non lo fa in modo esplicito con simboli: non ha un concetto formale di "mela" in termini simbolici, ma riconosce pattern di dati che, per esempio, corrispondono ad una mela in una foto.
Vantaggi:
Svantaggi:
IA che impara dai dati e fa previsioni sulla base di quello che ha imparato, in assenza di istruzioni esplicite (cioé simboliche).
Le cellule del cervello umano, i neuroni, formano una rete complessa e altamente interconnessa.
Inviano segnali elettrici l'uno all'altro per elaborare informazioni provenienti dal mondo esterno.
Analogamente, una rete neurale artificiale è fatta di neuroni artificiali che prendono dati esterni come input e producono un risultato.
Il modello più semplice di neurone artificiale è il percettrone, proposto da Rosenblatt nel 1958.
Consiste in: uno o più input (dati in entrata); un'unità di calcolo; e un output (dati in uscita).
Il percettrone riceve degli input (numeri), li soppesa, somma i risultati e decide se dare come output un 1 o uno 0 in base ad una soglia predefinita.
Ogni dato ha un certo valore numerico (x1, x2, x3, ecc.).
Il valore di ogni dato di input viene moltiplicato con un peso (un altro valore numerico, generalmente tra 0 e 1, che ne rappresenta l'importanza rispetto al risultato finale).
Tutti i valori pesati vengono sommati insieme, producendo un unico numero (una somma pesata).
Questa somma pesata viene passata attraverso una funzione di attivazione, che decide se il percettrone si "attiva" (come un neurone che si accende).
Un esempio è la funzione a gradino: se la somma è maggiore di una certa soglia, l'output sarà 1 (si, vero, positivo, ecc.); se è minore della soglia, l'output sarà 0 (no, falso, negativo, ecc.).
Il percettrone, in origine, era pensato per prendere input binari (0 e 1) e generare output binari (0 e 1).
Molto utile per decisioni semplici.
Dobbiamo decisere se andare ad un concerto.
Di solito, dobbiamo considerare una serie di fattori: l’artista è bravo? Il tempo è buono?
Per prendere questa decisione, decidiamo di usare un percettrone.
I fattori da considerare sono i dati di input, ad ognuno dei quali possiamo assegnare un valore binario (0 equivale a “NO”, 1 equivale a “SI”).
Ognuno di questi fattori, però, ha per noi un’importanza diversa.
Quindi, ad ogni input assegnamo anche un peso numerico che rappresenti questa importanza (dove 0 è “importanza nulla” e 1 è “importanza essenziale”).
Ora, diciamo che:
E diciamo che la nostra soglia da considerare per prendere la decisione sia 1.5: sotto la soglia, l’output è 0 (“non vado al concerto”); sopra la soglia, l’output è 1 (“vado al concerto”).
Moltiplichiamo ogni input per il peso che gli abbiamo assegnato:
Sommandoli, otteniamo: 0.7 + 0 + 0.5 + 0 + 0.4 = 1.6
La somma dei valori pesati è 1.6, e la soglia che abbiamo stabilito è 1.5.
Dato che 1.6 > 1.5, l’output è 1, quindi andrò al concerto.
Nota: il criterio per stabilire la soglia dipende dal dominio del problema e dalle preferenze di chi sviluppa. Si tratta di una decisione arbitraria effettuata su basi empiriche (esperienza), su dati (in un processo di addestramento), ecc.
Nota ancora più importante: abbiamo completamente ignorato il concetto di bias, un aggiustamento che ci permette di spostare la soglia di decisione in maniera più flessibile ed adattabile a seconda della situazione.

Sono composte da gruppi di neuroni artificiali organizzati in livelli.
Ogni neurone in un livello fa un calcolo sui dati che riceve e poi decide se attivarsi o meno, sulla base degli elementi che abbiamo già visto.

Ogni neurone rappresenta una piccola parte di un concetto, un suo microtratto.
Non ha senso guardare un singolo neurone e pensare che rappresenti qualcosa di definito come "gatto", "cane", "mela", "rosso", "peso", "10cm".
I neuroni nei primi strati potrebbero identificare caratteristiche di base come bordi, angoli e forme semplici.
I neuroni in strati più profondi potrebbero combinare queste informazioni per identificare forme più complesse, come occhi, orecchie o il corpo di un animale.
Infine, gli strati finali della rete neurale potrebbero combinare tutte queste informazioni per decidere se l'immagine rappresenta un "gatto" o un "cane".
Anche se noi progettiamo la rete, i neuroni nei livelli nascosti non sono “programmati” per compiere operazioni specifiche come accade in un programma tradizionale.
Invece, attraverso il processo di addestramento, i pesi dei neuroni vengono aggiustati in modo che la rete impari a riconoscere pattern nei dati.
Ogni neurone nei layer nascosti impara a rappresentare una piccola parte di un concetto. Tuttavia, questi pattern non sono immediatamente interpretabili.
Non sappiamo esattamente cosa ogni neurone sta “vedendo”, ma piuttosto possiamo osservare come il risultato finale si adatti correttamente al nostro obiettivo.
Prendiamo l'immagine di una foglia. Vogliamo capire se la foglia è sana o malata. Decidiamo di utilizzare una rete neurale.
L'immagine è fatta di pixel, e ogni pixel ha un valore numerico che rappresenta il colore del pixel stesso. Quindi, un'immagine può essere convertita in un insieme strutturato di valori numerici.
Una volta che l'immagine è trasformata in numeri, questi numeri vengono passati come input alla rete neurale.
La rete neurale ha livelli nascosti (strati intermedi) che si occupano di elaborare e trasformare questi numeri in informazioni più utili.
Ogni neurone nei layer nascosti prende i numeri in ingresso (che sono i pixel dell'immagine), li combina con i pesi (numeri che determinano quanto ogni input è importante), e poi applica una funzione di attivazione per determinare se quel neurone deve attivarsi o meno.
I layer nascosti quindi trasformano questi numeri di input in rappresentazioni più astratte.
Ad esempio, mentre nel primo strato la rete potrebbe rilevare semplici caratteristiche come i bordi della foglia, nei layer successivi la rete potrebbe iniziare a riconoscere caratteristiche più complesse come la forma della foglia o eventuali macchie che indicano la presenza di malattie.
L'output finale viene prodotto dal livello di output, che di solito è un singolo neurone (o più neuroni, a seconda del tipo di classificazione).
Nel caso della classificazione della foglia come sana o malata, l'output sarà una probabilità tra 0 e 1, che indica quanto è probabile che l'immagine della foglia sia sana (ad esempio, 0.8 = 80% di probabilità che la foglia sia sana).
L’apprendimento è un processo iterativo che consiste nell’ottimizzazione progressiva dei parametri che definiscono il modello di IA, attraverso la misurazione ciclica dell’errore tra il risultato prodotto e il risultato atteso.

L’addestramento consiste nel provare, fare errori, e correggerli tramite la retropropagazione, un meccanismo per cui la rete regola i vari pesi tra neuroni per migliorare il proprio risultato.
L’addestramento è poi seguito da una fase successiva di testing, in cui la rete svolge l’attività per cui è stata addestrata su nuovi dati che non aveva mai visto prima.
In fase di addestramento, vengono forniti i dati su cui allenarsi (es. immagini da classificare a seconda che contengano gatti oppre cani) e anche la risposta corretta (es. a tutte le immagini di cani, viene associata l’etichetta "cane"; a tutte le immagini di gatti, viene associata l’etichetta "gatto").
In fase di apprendimento della rete, vengono forniti solo dati senza la risposta corretta.
L'IA individua da sola regolarità statistiche presenti nei dati (es. la conformazione del muso, la dimensione, i colori, ecc.) e li raggruppa in cluster omogenei sulla base di queste regolarità.
In fase di apprendimento, l’IA apprende a compiere delle azioni in un ambiente al fine di massimizzare una ricompensa cumulativa nel tempo.
L’IA esegue azioni e riceve feedback sotto forma di ricompense o penalizzazioni. L’obiettivo dell’agente è imparare a scegliere le azioni che massimizzano la ricompensa complessiva nel lungo periodo.
Una IA impara a giocare a Pokémon: https://www.youtube.com/watch?v=DcYLT37ImBY.
Una IA impara a camminare: https://www.youtube.com/watch?v=L_4BPjLBF4E.