[ML] Tipologie di Machine Learning

machine Learning - promezio

Tra uno snippet di codice e l’altro un po’ di teoria non può far male quindi oltre ai soliti articoli iniziamo con qualche nozione e qualche esempio pratico in tema machine learning e artificial intelligence; ovvero i temi caldi del momento.

Insegnare ad una macchina ad esaminare dati e trarne conclusioni è uno degli obiettivi più ardui che l’uomo si è proposto. La cognizione/coscienza  nell’intelligenza artificiale può essere considerata marginale (ed è ancora lontana dall’essere realizzata) ma gli algoritmi di analisi analitica degli input con previsioni statistiche sui possibili output è alla base della maggior parte delle tecnologie di intelligenza artificiale oggi in uso.

Machine learning è sinonimo di apprendimento automatico, ovvero si tenta di dare alla macchina la capacità di osservare una serie di dati allo scopo di individuare relazioni e collegamenti utili all’interpretazione degli stessi. In altre parole questo significa che con il giusto algoritmo un computer sarà in grado di analizzare un flusso di dati grezzi e utilizzarli per prendere delle decisionipredire risultati o per estrapolarene informazioni rilevanti.

Qualche applicazione pratica? Riconoscimento della voce, riconoscimento di soggetti o pattern nelle immagini, videogame con personaggi autonomi, sistemi di sicurezza che analizzano grandi quantità di machine data, statistiche in grado di anticipare risultati (sportivi, finanziari, metereologici, ecc.) . . . praticamente campi applicativi infiniti.

Fondamentalmente possiamo distinguere tre diverse tipologie di machine learning che proverò a catalogare nel seguito. Parliamo del supervised learning, dell’unsupervised learning e del reinforcement learning.

 

SUPERVISED LEARNING

L’algoritmo esamina una serie di training data ovvero un vettore di dati in input con relativi output generando una funziona in grado di metterli in relazione e quindi di prevedere i futuri valori di output per input compatibili. Per fare un’esempio pratico proviamo ad immagine uno scenario nel quale bisogna valutare la tipologia di un prodotto. Per semplificare i training case sono soltanto due:

  • Colore uniforme -> prodotto A
  • Colore disomogeneo ->prodotto B

Analizzando i training data l’algoritmo genererà una funzione in grado di riconoscere sia il prodotto A che il prodotto B da un’analisi visiva del colore.

 

UNSUPERVISED LEARNING

L’algoritmo tenta di individuare anomalie, incongruenze o altre strutture statisticamente rilevabili. In questo caso si utilizzano queste rilevazioni come trigger per generare eventi prestabiliti. Come scenario di test immaginiamo un sistema di rilevazione minacce per la sicurezza informatica che analizza il flusso di accessi ad un server. In questo caso su migliaia di dati possono essere individuati anomalie che corrispondono a tentativi di accessi indesiderati o di attacchi mirati a minare la stabilità del servizio.

 

REINFORCEMENT LEARNING

In questo caso l’algoritmo si interfaccia con un sistema in grado di fornire stimoli a seconda delle scelte e delle decisioni che verranno prese nel corso delle elaborazioni. In questo caso non sono necessari training data perché è lo stesso algoritmo a generare i dati che userà per le scelte successive. Anche in questo caso un esempio pratico chiarirà meglio il concetto. Immaginiamo un’aspirapolvere robotizzata che deve orientarsi all’interno della stanza da spazzare. In questo caso l’input proverrà dai sensori di prossimità di cui è dotata mentre l’output atteso è una mappa completa degli ostacoli da evitare e del perimetro della stanza stessa. Ad ogni ostacolo segnalato il robot avrà un’elemento in più per mappare i perimetri dell’ambiente e di conseguenza dopo una serie di ispezioni casuali riuscirà ad ottenere un numero di informazioni utili sufficiente allo scopo.

Sembrano concetti semplici? Spero di si perché questo significa che sono riuscito a fornire una descrizione valida. Naturalmente in ambito applicativo le cose sono più complesse ma . . . questo è un ottimo punto di partenza.