Il termine Machine Learning, assieme all’Intelligenza Artificiale è ormai entrato nella bocca di tutti anche se non sempre con perfetta chiarezza o cognizione di causa: a volte presentato come una scatola nera che magicamente rende i computer intelligenti, altre volte come uno dei tanti linguaggi di programmazione e altre volte ancora come un settore dell’Informatica. In questo articolo, dopo aver dato una breve definizione di cosa effettivamente sia il Machine Learning, ci occuperemo però di un aspetto che spesso è sconosciuto ai più e cioè di quali siano le tre tipologie in cui si suddivide.
Nonostante il termine Machine Learning sia stato coniato nel 1959 dallo scienziato americano Arthur Lee Samuel, pioniere nel campo dell’Intelligenza Artificiale, la definizione attualmente più citata è quella fornita da un altro americano, Tom Michael Mitchell, direttore del dipartimento Machine Learning della Carnegie Mellon University:
“Si dice che un programma apprende dall’esperienza E con riferimento a alcune classi di compiti T e con misurazione della performance P, se le sue performance nel compito T, come misurato da P, migliorano con l’esperienza E.”
Con Machine Learning, in italiano apprendimento automatico, ci si riferisce quindi a sistemi in grado di apprendere dall’esperienza fondandosi però in linea di principio, come descritto dallo stesso Arthur Lee Samuel, sulla base di due distinti approcci che permettono di distinguere l’apprendimento automatico in altrettante sottocategorie del Machine Learning a seconda del fatto che si diano al computer esempi completi da utilizzare come indicazione per eseguire il compito richiesto oppure che si lasci lavorare il software senza alcun ‘aiuto’.
Vediamo ora la prima tecnica di Machine Learning e cioè l’apprendimento supervisionato. L’obiettivo di questo approccio è quello di costruire un modello partendo da dei dati di addestramento classificati, con i quali si cerca di fare previsioni su dati non disponibili o futuri. Con supervisione si intende quindi che nell’insieme dei campioni disponibili (o dataset), i segnali di output desiderati sono già noti poiché precedentemente classificati. In questo tipo di apprendimento si cerca dunque di consentire alla macchina di elaborare automaticamente ipotesi di valori di uscita sulla base di una serie di esempi ideali, costituiti da coppie di input e di output, che gli vengono inizialmente forniti.
Un esempio pratico, che useremo per tutte le tecniche in analisi, lo fornisce il programmatore Adam Geitgey e ha come protagonista un software che deve stimare correttamente il prezzo delle case. Per addestrarlo, come spiegato precedentemente, gli vengono forniti un numero sufficiente di esempi in cui sono riportati, per ogni casa, alcuni parametri fondamentali quali i metri quadrati, il numero di stanze, la posizione in cui si trova (quartiere di lusso, quartiere degradato, per famiglie etc.) e ovviamente il prezzo finale. Una volta ricevute tutte queste informazioni, il computer inizierà a cercare la combinazione che gli consenta di arrivare al prezzo esatto. Quando il software avrà trovato i valori da applicare correttamente ai singoli elementi per ottenere il prezzo corretto, il lavoro potrà dirsi completato e la macchina sarà capace di stimare il valore di una casa. Prendiamo ora in analisi un’altra tecnica di Machine Learning, ovvero l’apprendimento non supervisionato. In questo caso, a differenza del precedente, al sistema vengono forniti solo set di dati non strutturati, senza indicazione del risultato desiderato e alla macchina viene quindi chiesto di estrarre una regola che raggruppi i casi presentati secondo caratteristiche che ricava dai dati stessi. Restando all’interno dell’esempio delle case il sistema sarebbe in grado di scoprire che in un quartiere universitario vengono venduti facilmente i monolocali o i bilocali, mentre nell’hinterland vanno per la maggiore le case con giardino.
Giungiamo così all’ultimo esempio relativo alle tecniche di apprendimento automatico e cioè quello cosiddetto per rinforzo. In questo caso il sistema deve interagire con un ambiente dinamico (che gli consente di avere i dati di input) e raggiungere un obiettivo (al raggiungimento del quale riceve una ricompensa), imparando anche dagli errori (identificati medianti “punizioni”). Il comportamento, così come le prestazioni del sistema sono determinate da una routine di apprendimento basata su ricompensa e punizione. Con un modello del genere, il computer impara per esempio a battere un avversario in un gioco o a guidare un veicolo concentrando gli sforzi sullo svolgimento di un determinato compito e mirando a raggiungere il massimo valore della ricompensa; in altre parole, il sistema impara effettuando delle azioni, come guidare, e dagli errori commessi migliorando le prestazioni proprio in funzione dei risultati raggiunti in precedenza.
Commenti recenti