L’apprendimento automatico (o machine learning) è una branca dell’intelligenza artificiale, la quale si occupa di sviluppare algoritmi in grado di imparare autonomamente dai dati, senza essere esplicitamente programmati per eseguire determinate attività.
La storia dell’apprendimento automatico inizia nel 1950, quando il famoso matematico Alan Turing pubblicò un paper intitolato “Computing Machinery and Intelligence“, in cui si chiedeva se fosse possibile costruire una macchina che potesse essere considerata intelligente.
Ben 6 anni più tardi, il matematico John McCarthy coniò il termine “intelligenza artificiale”.
Tutto questo avvenne durante il Dartmouth Conference, ossia un workshop che ebbe come tema centrale la possibilità di sviluppare una macchina in grado di eseguire compiti che richiedevano intelligenza umana.
In seguito a questo seminario, l’espressione “intelligenza artificiale”, diventò quindi il nome ufficiale di questa disciplina.
Da lì in avanti, si ebbero già i primi segnali di sviluppo in questo campo.
Infatti, nel 1959, Arthur Samuel, un ingegnere informatico, sviluppò un programma di intelligenza artificiale per il gioco della dama.
Questi, era in grado di imparare autonomamente a giocare sempre meglio, per cui possiamo senza dubbio annoverarlo come uno dei primi esempi di applicazione dell’apprendimento automatico.
Gli sviluppi dell’apprendimento automatico
Negli anni ’60 e ’70, l’apprendimento automatico divenne sempre più importante, con lo sviluppo delle reti neurali: ossia modelli di intelligenza artificiale ispirati alla struttura del cervello umano: composta dunque da una serie di “neuroni” interconnessi tra di loro, i quali possono elaborare e trasmettere informazioni.
Infatti, nel 1982, il matematico ed informatico John Hopfield sviluppò una rete neurale chiamata “rete di Hopfield”, la quale venne utilizzata inizialmente per risolvere problemi di ottimizzazione nei campi della matematica e dell’informatica.
La rete di Hopfield
La rete di Hopfield è una rete neurale feedforward, il che significa che le informazioni vengono trasmesse solo in una direzione, dall’ingresso verso l’uscita.
La rete di Hopfield è stata sviluppata per risolvere problemi di ottimizzazione, ovvero per trovare la soluzione ottimale ad un problema, data una serie di restrizioni.
Sebbene questa rete neurale venne utilizzata inizialmente nei campi della matematica e dell’informatica, al giorno d’oggi viene adoperata anche in altri campi, quali ad esempio il riconoscimento delle immagini, il riconoscimento delle parole ed il riconoscimento delle emozioni.
I vantaggi dell’utilizzo della rete di Hopfield
I vantaggi connessi all’utilizzo della rete di Hopfield includono dunque la sua capacità di trovare soluzioni ottimali a problemi di ottimizzazione, la sua capacità di imparare autonomamente dai dati e la sua capacità di adattarsi ai cambiamenti nel tempo.
Tuttavia, la rete di Hopfield ha anche alcune limitazioni, tra la necessità di una buona mole di dati di training per poter funzionare correttamente.
Inoltre, essa presenta qualche difficoltà nel trattare e gestire grandi quantità di dati.
Detto ciò, la rete di Hopfield viene tutt’ora utilizzata nei contesti elencati nel paragrafo precedente.
Le caratteristiche della rete di Hopfield
Una delle principali caratteristiche della rete di Hopfield è la sua capacità di “ricordare” un insieme di stati preimpostati, che vengono chiamati “pattern” o “modelli”.
Questi stati, possono essere rappresentati come vettori di valori binari (0 o 1) ed utilizzati per risolvere problemi di ottimizzazione o per la risoluzione di equazioni.
Le reti di Hopfield sono anche note per la loro capacità di convergere verso uno stato stabile, anche se vengono forniti in input dati rumore o stati di partenza non coerenti.
Pertanto, questa caratteristica le rende particolarmente adatte per il riconoscimento di pattern o per la risoluzione di problemi di ottimizzazione in cui è importante trovare una conclusione stabile.
L’evoluzione della rete di Hopfield
Sebbene ancora oggi le reti di Hopfield vengano utilizzate in diversi campi, sono state sviluppate anche altre tipologie di reti neurali artificiali, come le reti neurali profonde (deep neural networks), le quali hanno spesso dimostrato di avere prestazioni migliori in determinati contesti applicativi.
Reti di Hopfield vs reti neurali profonde
Le reti di Hopfield e le reti neurali profonde (deep neural networks) sono entrambe tipologie di reti neurali artificiali, ovvero sistemi in grado di “imparare” dai dati, in modo simile al funzionamento del cervello umano.
Tuttavia, vi sono alcune differenze significative tra queste 2 tipologie di reti neurali, ossia:
- Struttura: le reti di Hopfield sono reti neurali a singolo strato, ovvero sono composte da un unico insieme di unità di calcolo (chiamate “neuroni” o “nodi”). Al contrario, le reti neurali profonde sono composte da più strati di neuroni e possono avere centinaia o addirittura migliaia di strati. Ciò le rende particolarmente adatte per risolvere problemi complessi che richiedono una capacità di elaborazione non indifferente
- Apprendimento: le reti di Hopfield sono basate su un tipo di apprendimento noto come “auto-organizzazione”, ovvero imparano a “ricordare” un insieme di stati preimpostati (chiamati “pattern” o “modelli”) e possono convergere verso uno stato stabile anche se vengono forniti in input dati rumore o stati di partenza non coerenti. Al contrario, le reti neurali profonde utilizzano un tipo di apprendimento noto come “apprendimento per gradiente”, che consiste nell’aggiustare i pesi dei collegamenti tra i neuroni in base all’errore commesso dal modello durante l’addestramento. Ciò le rende particolarmente adatte per risolvere problemi di regressione o di classificazione.
- Applicazioni: le reti di Hopfield sono state sviluppate negli anni ’80 ed utilizzate principalmente per il riconoscimento delle parole, il riconoscimento delle forme e l’elaborazione delle immagini. Al contrario, le reti neurali profonde sono state sviluppate negli ultimi anni, al fine di essere utilizzate anche in altri contesti, come la traduzione automatica, il marketing, la finanza e la medicina.
Qual è l’obiettivo principale dell’apprendimento automatico?
L’obiettivo principale dell’apprendimento automatico è quello di creare modelli che possano prevedere o classificare nuovi dati in base a ciò che hanno appreso dai dati di addestramento.
Fra le diverse tipologie di apprendimento automatico, troviamo:
- L’apprendimento supervisionato: in questo tipo di apprendimento, i dati di addestramento sono etichettati, per cui il modello deve “imparare” a prevedere l’etichetta corretta per i nuovi dati. Ad esempio, un modello di apprendimento supervisionato potrebbe essere utilizzato per classificare email come spam o no spam, in base a caratteristiche come il mittente o il contenuto del messaggio
- L’apprendimento non supervisionato: in questo tipo di apprendimento, i dati di addestramento non sono etichettati, indi per cui il modello deve “imparare” a rilevare pattern e strutture nel dataset. Ad esempio, un modello di apprendimento non supervisionato potrebbe essere utilizzato per rilevare cluster di dati simili all’interno di un dataset
- L’apprendimento semi-supervisionato: in questo tipo di apprendimento, alcuni dati di addestramento sono etichettati mentre altri no. Questo tipo di approccio viene spesso utilizzato quando i dati etichettati sono scarsi o costosi da ottenere
I vantaggi connessi all’apprendimento automatico
Ci sono molti vantaggi connessi all’utilizzo dell’apprendimento automatico.
In primo luogo, questa tecnologia permette di eseguire compiti ripetitivi in modo più efficiente e preciso rispetto all’uomo.
Inoltre, l’apprendimento automatico è in grado di analizzare notevoli quantità di dati in maniera estremamente veloce, estraendo informazioni e modelli che potrebbero essere difficili da individuare manualmente.
Infine, un ulteriore vantaggio connesso al machine learning è che gli algoritmi utilizzati in questa disciplina possono continuare ad imparare nel tempo, adattandosi continuamente ai cambiamenti dei dati e/o delle condizioni.
Gli algoritmi più usati nel campo dall’apprendimento automatico
Gli algoritmi di apprendimento automatico possono essere suddivisi in diverse categorie, in base alla loro struttura ed al modo in cui funzionano.
Pertanto, elenchiamo di seguito alcune delle categorie più comuni di algoritmi di apprendimento automatico:
- Regressione: gli algoritmi di regressione vengono utilizzati per prevedere una variabile continua, come un prezzo o una quantità. Esempi comuni di algoritmi di regressione sono la regressione lineare e la regressione logistica
- Classificazione: gli algoritmi di classificazione vengono utilizzati per prevedere una variabile categorica, come una classe o una etichetta. Esempi comuni di algoritmi di classificazione sono l’albero decisionale, il support vector machine (SVM) e il k-nearest neighbor (k-NN)
- Clustering: gli algoritmi di clustering vengono utilizzati per raggruppare insiemi di dati in modo che gli elementi all’interno di un gruppo siano simili tra di loro e diversi da quelli degli altri gruppi. Esempi comuni di algoritmi di clustering sono il k-means e l’algoritmo di agglomerazione gerarchica
- Rete neurale: le reti neurali sono un tipo di algoritmo di apprendimento automatico basato sulla struttura del cervello umano. Sono spesso utilizzate per risolvere problemi di classificazione e regressione. Esempi di reti neurali sono la rete neurale feedforward e la rete neurale ricorrente
- Apprendimento profondo: l’apprendimento profondo è una sottocategoria dell’apprendimento automatico che utilizza reti neurali molto complesse per eseguire il training su grandi quantità di dati. Esempi di algoritmi di apprendimento profondo sono la rete neurale convolutionale (CNN) e la rete neurale a più strati (MLP)
Questi sono solo alcuni degli algoritmi di apprendimento automatico più comuni.
Ve ne sono, tuttavia, molti altri: ognuno dei quali adatto a risolvere problemi specifici.
In quali casi le reti neurali potrebbero non essere la scelta più adeguata per un problema di machine learning?
Per rispondere a questa domanda, elenchiamo di seguito alcuni esempi di utilizzo di machine learning in cui potrebbe essere più appropriato utilizzare un metodo di apprendimento diverso dalle reti neurali:
- Problemi di classificazione binaria con un numero molto elevato di features: in questi casi, potrebbe essere più efficace utilizzare un modello di regressione logistica, che è in grado di gestire un elevato numero di features senza richiedere la stessa quantità di risorse computazionali delle reti neurali
- Problemi di regressione con un numero limitato di dati: in questi casi, potrebbe essere più efficace utilizzare un modello di regressione lineare, poiché richiede meno dati per essere addestrato rispetto alle reti neurali
- Problemi di clustering con grandi quantità di dati: in questi casi, potrebbe essere più efficace utilizzare un algoritmo di clustering come k-means, che è in grado di gestire grandi quantità di dati in modo efficiente
- Problemi di ottimizzazione con vincoli di tipo lineare: in questi casi, potrebbe essere più efficace utilizzare un algoritmo di ottimizzazione lineare come l’algoritmo simplex, poiché è in grado di gestire vincoli di tipo lineare in modo efficiente
- Problemi di predizione temporale con dati stazionari: in questi casi, potrebbe essere più efficace utilizzare un modello di previsione stazionario come l’ARIMA, che è in grado di gestire dati stazionari in modo efficiente
Reti neurali, machine learning ed intelligenza artificiale sono la stessa cosa?
Reti neurali, apprendimento automatico (machine learning) ed intelligenza artificiale (AI) sono 3 concetti spesso confusi tra di loro, ma in realtà si riferiscono a cose leggermente diverse.
Di seguito una breve spiegazione circa le differenze che intercorrono tra le stesse:
- Reti neurali: le reti neurali sono sistemi di calcolo ispirati al cervello umano, composti da unità di calcolo (chiamate “neuroni” o “nodi”) e da collegamenti tra queste unità. Le reti neurali possono “imparare” dai dati in modo simile a come il cervello umano impara, modificando i pesi dei collegamenti tra i neuroni in base all’errore commesso durante l’addestramento. Le reti neurali possono essere utilizzate in molti ambiti, come il riconoscimento delle parole, il riconoscimento delle forme, la traduzione automatica, il marketing, la finanza e la medicina.
- Apprendimento automatico (machine learning): l’apprendimento automatico (machine learning) è un campo dell’informatica che si occupa dello sviluppo di algoritmi e metodi in grado di “imparare” dai dati, senza essere esplicitamente programmati per eseguire determinate attività. Vi sono diverse tipologie di apprendimento automatico, come l’apprendimento supervisionato, l’apprendimento non supervisionato e l’apprendimento semi-supervisionato. L’apprendimento automatico, essendo basato sulle reti neurali, viene utilizzato nei contesti sopramenzionati.
- Intelligenza artificiale (AI): l’intelligenza artificiale (AI) è un termine che si riferisce alla creazione di sistemi in grado di eseguire attività che richiederebbero intelligenza umana, come il ragionamento, il problem solving o il linguaggio. L’AI può essere divisa in 2 categorie: l’AI debole, la quale si concentra sull’esecuzione di una specifica attività e l’AI forte, che si riferisce all’intelligenza umana in generale. L’apprendimento automatico e le reti neurali sono 2 tipologie di AI debole, mentre l’AI forte include sistemi in grado di svolgere qualsiasi attività che un essere umano è in grado di compiere.