Apprendimento supervisionato: capiamo come identificare una classe.

Il modo migliore per parlare di apprendimento supervisionato è quello individuare un caso semplice, ovvero l’apprendimento di una classe dai suoi esempi positivi e negativi, e successivamente generalizzare per di più classi. Come ultimo step per trattare l’apprendimento supervisionato bisogna parlare di regressione, dove gli output sono continui.

Diciamo che vogliamo imparare la classe C che identifica tutte le “auto familiari“. Abbiamo una serie di esempi di auto e abbiamo un gruppo di persone a cui mostriamo queste auto. Le persone guardano le auto per etichettarle; per esempi positivi intendiamo le auto che credono siano auto di famiglia mentre per esempi negativi le altre auto che credono non siano auto familiari. 

L’apprendimento della classe consiste nel trovare una descrizione che sia condivisa da tutti gli esempi positivi e da nessuno degli esempi negativi.

Così facendo, possiamo fare una previsione: data un’auto che non abbiamo visto prima, verificando con la descrizione appresa, potremo dire se si tratta di un’auto di famiglia oppure no. Oppure possiamo estrarre della conoscenza e l’obiettivo potrebbe essere quello di capire cosa le persone si aspettano da un’auto di famiglia.

Dopo alcune discussioni con esperti del settore, diciamo che si arriva alla conclusione che tra tutte le caratteristiche che può avere un’auto, le caratteristiche che separano un’auto di famiglia dalle altre auto sono il prezzo e la potenza del motore.

Questi due attributi sono gli input per il riconoscitore di classe. 

Nota: Stiamo considerando gli altri attributi come irrilevanti.

Sebbene si possa pensare ad altri attributi come il numero di posti a sedere e il colore che potrebbero essere importanti per distinguere tra i tipi di auto, prenderemo in considerazione solo il prezzo e la potenza del motore per mantenere questo esempio semplice.

image

Ogni punto identificato dalla coppia (prezzo, motore) corrisponde ad un’auto di esempio. Il simbolo “+” denota un esempio positivo della classe mentre con “-” identifichiamo un esempio negativo ovvero un’auto non appartenente alla classe delle auto di famiglia.

Indichiamo il prezzo come primo attributo di input e la potenza del motore come secondo attributo (ad es. volume del motore in centimetri cubi), quindi rappresentiamo ciascuna auto utilizzando due valori numerici.

la sua etichetta ne denota il tipo.

Ogni auto è rappresentata da una tale coppia ordinata (x,r) e il training set contiene N di questi esempi

dove t rappresenta diversi esempi nell’insieme; non rappresenta il tempo o un ordine del genere

I nostri dati di allenamento possono ora essere tracciati nello spazio-bidimensionale :

dove ogni istanza t è un punto dati di coordinate

e il suo tipo, cioè positivo o negativo, è dato da

Dopo ulteriori analisi dei dati, potremmo avere motivo di ritenere che, affinché un’auto sia un’auto di famiglia, il suo prezzo e la potenza del motore dovrebbero rientrare in un determinato intervallo:

L’equazione assume quindi che C sia un rettangolo nello spazio bidimensionale di (Potenza Motore , Prezzo)

Inoltre, l’equazione, fissa l’ipotesi con cui descrivere C, cioè come l’insieme dei rettangoli.

L’ipotesi di classe, quindi, è corretta se per un input x, se e solo se h(x) = 1 per x positivo.

Supponiamo di avere un insieme di dati di addestramento X che è un sottoinsieme di tutti i possibili input, l’errore dell’ipotesi h dato il set di addestramento X è:

L’ ipotesi di classe H è l’insieme dei possibili rettangoli. Ogni quadrupla

definisce un‘ ipotesi H e quello che a noi serve è capire quali sono i valori migliori della quadrupla In altre parole, dobbiamo trovare i valori di questi 4 parametri partendo dall’insieme di dati di addestramento tale che:

il rettangolo risultante possa includere solo esempi positivi ed escludere quelli negativi.

L’output di un algoritmo di Reinforcement Learning è una sequenza di azioni.

In alcune applicazioni l’output è rappresentato da una sequenza di azioni, in tal caso una singola azione non è importante, ciò che conta è la policy ovvero la sequenza di azioni corrette per raggiungere l’ obiettivo:  un’azione è buona se fa parte di una buona politica.

In tal caso, il programma di Machine Learning dovrebbe essere in grado di valutare la bontà delle politiche e imparare dalle buone sequenze di azioni passate per essere in grado di generare una politica efficace.

Tali metodi di rinforzo dell’apprendimento sono chiamati algoritmi di apprendimento per rinforzo.

Un buon esempio è il gioco in cui una singola mossa di per sé non è così importante; è la sequenza di mosse giuste che è buona.

Una mossa è buona se fa parte di una buona politica di gioco.

Il gioco è una ricerca importante sia nell’intelligenza artificiale che nell’apprendimento automatico.

Questo perché i giochi sono facili da descrivere e, allo stesso tempo, sono piuttosto difficili da giocare bene.

Un gioco come gli scacchi ha un numero limitato di regole ma è molto complesso a causa del gran numero di mosse possibili in ogni stato e grande numero di mosse che un gioco contiene.

Una volta che abbiamo buoni algoritmi che possono imparare a giocare bene, possiamo applicarli anche ad applicazioni con utilità economica più evidente.

Un robot che naviga in un ambiente alla ricerca di una posizione obiettivo è un’altra area di applicazione dell’apprendimento per rinforzo.

In qualsiasi momento, il robot può muoversi in una delle numerose direzioni. Dopo una serie di prove, dovrebbe apprendere la corretta sequenza di azioni per raggiungere lo stato finale da uno stato iniziale, facendo questo il più rapidamente possibile e senza colpire nessuno degli ostacoli.

Un fattore che rende più difficile l’apprendimento per rinforzo è quando il sistema ha informazioni sensoriali inaffidabili e parziali. Ad esempio, un robot dotato di videocamera ha informazioni incomplete e quindi in qualsiasi momento si trova in uno stato parzialmente osservabile e dovrebbe decidere tenendo conto di questa incertezza ; ad esempio, potrebbe non conoscere la sua posizione esatta in una stanza, ma solo che c’è un muro alla sua sinistra. Un’attività può anche richiedere un’operazione simultanea di più agenti che dovrebbero interagire e cooperare per raggiungere un obiettivo comune.

Un esempio è una squadra di robot che giocano a calcio.

Tecniche di Apprendimento non supervisionato con clustering.

Nell’apprendimento supervisionato, l’obiettivo è apprendere un collegamento tra input e output grazie ai valori corretti (Training Set o dati di addestramento) forniti da un supervisore.

Nell’apprendimento non supervisionato, non esiste tale supervisore per cui abbiamo solo dati di input e l’obiettivo è quello di trovare una regolarità nell’input.  

C’è una struttura nello spazio di input tale che alcuni pattern (o gruppi) si verificano più spesso di altri e vogliamo identificarli al fine di vedere cosa succede generalmente e cosa no in determinate circostanze.

In statistica, questo si chiama stima della densità.

Un metodo per la stima della densità si chiama clustering il cui obiettivo è appunto quello di trovare cluster o raggruppamenti di input.

Vediamo un esempio di applicazione di clustering per l’apprendimento non supervisionato:

  • Nel caso di un’azienda i dati dei clienti contengono sia le informazioni demografiche che le transazioni, e si potrebbe voler vedere la distribuzione del profilo dei clienti, per identificare il tipo di clienti che è maggiormente presente. In tal caso, un modello di clustering raggruppa clienti simili in base ai loro attributi nello stesso gruppo, fornendo all’azienda raggruppamenti naturali dei suoi clienti, questo è chiamato segmentazione dei clienti. Una volta trovati tali gruppi, l’azienda può decidere strategie, ad esempio, servizi e prodotti, specifici per diversi gruppi, questo è noto come gestione delle relazioni con i clienti. Tale raggruppamento consente anche di identificare quelli che sono “outlier”, cioè quelli che sono diversi dagli altri clienti, il che può implicare una nicchia di mercato che può essere ulteriormente sfruttata dall’azienda.
  • Nel clustering di documenti, lo scopo è raggruppare documenti simili. Ad esempio, le notizie possono essere suddivise in quelle relative a politica, sport, moda, arte e così via. Comunemente, un documento è rappresentato come un insieme di parole, ovvero, predefiniamo un lessico di N parole e ogni documento è un vettore binario N-dimensionale il cui elemento i è 1 se la parola i appare nel documento parole come “Di”, “e” e così via, che non sono informativi, non vengono utilizzati. I documenti vengono quindi raggruppati in base al numero di parole condivise. Ovviamente qui è fondamentale come viene scelto il lessico.

Introduzione alla Regressione ed alle differenze con la Classificazione.

Supponiamo di voler realizzare un sistema in grado di prevedere il prezzo di un’auto usata con un sistema di apprendimento automatico.

Gli input sono gli attributi dell’auto (marca, anno, cilindrata, chilometraggio e altre informazioni) che riteniamo influenzino il valore di un’auto mentre l’output è il prezzo dell’auto.

Nota: I problemi in cui l’output è un numero sono problemi di regressione.

Siano X gli attributi dell’auto e Y il prezzo dell’auto.

Rilevando le transazioni passate, possiamo raccogliere dati di addestramento e con un programma di Machine Learning e possiamo adattare una funzione a questi dati per apprendere Y in funzione di X.

Un esempio è dato nella seguente figura dove la funzione adattata è della forma:

y = wx + w0 per opportuni valori di w e w0.

Modello e training set di previsione del prezzo di auto usate

Nota: L’immagine mostra un set di dati di addestramento delle auto usate. Per semplicità, il chilometraggio viene preso come unico attributo di input e viene utilizzato un modello lineare.

Sia la regressione che la classificazione sono problemi di apprendimento supervisionato in cui c’è un input, X, un output Y.

Il compito è imparare la mappatura dall’input all’output. L’approccio nell’apprendimento automatico consiste nell’ assumere un modello definito e un insieme di parametri:

y = g(x|θ)

dove g(·) è il modello e θ sono i suoi parametri.

Ma tra Classificazione e Regressione vi sono due differenze importanti relative all’output y e al modello g(·):

  1. In un problema di classificazione y è un codice di classe mentre in un problema di regressione è un valore numerico.
  2. In un problema di classificazione g(·) è la funzione discriminante che separa le istanze di classi diverse mentre in un problema di regressione è la funzione di regressione.

Il programma di machine learning ottimizza i parametri, in modo tale che l’errore di approssimazione sia ridotto al minimo, ovvero le nostre stime siano il più vicino possibile ai valori corretti forniti nell’addestramento. Ad esempio, nella figura 1.2, il modello è lineare e w e w0 sono i parametri ottimizzati per il miglior adattamento al training set.

Nei casi in cui il modello lineare è troppo restrittivo, si può usare ad esempio un modello quadratico  o un polinomio di ordine superiore, o qualsiasi altra funzione non lineare dell’input, questa volta ottimizzando i suoi parametri per il miglior adattamento.

Applicazioni di Pattern Recognition: scopriamo cosa accomuna il riconoscimento dei caratteri, il riconoscimento facciale, la diagnosi medica e le traduzioni.

L’ applicazione più semplice di Pattern Recognition consiste nel riconoscimento ottico dei caratteri partendo dalle loro immagini.

In questo esempio vi sono più classi, e precisamente tanti quanti sono i caratteri che vorremmo riconoscere.

Particolarmente interessante è il caso in cui i caratteri sono scritti a mano, in quanto le persone hanno stili di scrittura diversi: i caratteri possono essere scritti piccoli o grandi, inclinati, con una penna o una matita, e ci sono molte possibili immagini corrispondenti allo stesso carattere.

Sebbene la scrittura sia un’invenzione umana, non disponiamo di alcun sistema affidabile quanto un lettore umano, e non abbiamo una descrizione formale, ad esempio, di “A” che copra tutte le lettere “A” e nessuna delle non “A”.

In questo scenario, prendiamo campioni dagli scrittori (set di addestramento) e impariamo una definizione (regola) di “A” e delle “non A” da questi esempi. Anche se non sappiamo cosa rende un’immagine una “A”, siamo certi che tutte quelle “A” distinte hanno qualcosa in comune, che è ciò che vogliamo estrarre dagli esempi. Sappiamo che l’immagine di un carattere non è solo una raccolta di punti casuali, è una raccolta di tratti con una regolarità che possiamo catturare con un programma di Machine Learning.

Se stiamo leggendo un testo, un fattore di cui possiamo avvalerci è la ridondanza nei linguaggi umani. Una parola è una sequenza di caratteri e i caratteri successivi non sono indipendenti ma sono vincolati dalle parole della lingua. Questo ha il vantaggio che anche se non siamo in grado di riconoscere un carattere, possiamo comunque leggere la parola. Tali dipendenze contestuali possono verificarsi anche a livelli superiori, tra parole e frasi, attraverso la sintassi e la semantica della lingua. Esistono algoritmi di apprendimento automatico per apprendere sequenze e modellare tali dipendenze.

Riconoscimento Facciale

Il riconoscimento facciale è un problema più complesso rispetto al riconoscimento dei caratteri, in questo caso l’input è un’immagine e le classi sono persone da riconoscere, e il programma di apprendimento dovrebbe imparare ad associare le immagini dei volti alle identità.

Ma perché il riconoscimento facciale è più difficile rispetto al riconoscimento dei caratteri?

  • Nel riconoscimento facciale ci sono più classi, l’immagine in ingresso è più grande e un viso è tridimensionale, le differenze di posa e illuminazione causano cambiamenti significativi nell’immagine. Inoltre, potrebbe anche esserci l’eliminazione o la modifica di alcuni dettagli del volto; ad esempio, gli occhiali possono nascondere gli occhi e le sopracciglia e la barba può nascondere il mento.

Diagnosi Medica

Nella diagnosi medica, gli input sono le informazioni rilevanti che abbiamo sul paziente e le classi sono le malattie. Gli input contengono l’età, il sesso, l’anamnesi del paziente e i sintomi attuali.

Alcuni test potrebbero non essere stati applicati al paziente, e quindi questi input mancherebbero. I test richiedono tempo, possono essere costosi e possono disturbare il paziente; quindi, potrebbero non essere applicati a meno che non forniscano informazioni preziose. Nel caso di una diagnosi medica, un errore di decisione può portare a un trattamento sbagliato o nullo, e in caso di dubbio è preferibile che il classificatore rifiuti e rimandi la decisione a un esperto umano.

Riconoscimento vocale

Nel riconoscimento vocale, l’input è acustico e le classi sono parole che possono essere pronunciate, questa volta l’associazione da apprendere è da un segnale acustico a una parola di una lingua.

Persone diverse, a causa delle differenze di età, sesso o accento, pronunciano la stessa parola in modo diverso, il che rende il riconoscimento vocale piuttosto difficile, e alcune parole sono più lunghe di altre. Le informazioni acustiche aiutano solo fino a un certo punto e, come nel riconoscimento ottico dei caratteri, l’integrazione di un “modello linguistico” è fondamentale nel riconoscimento vocale e il modo migliore per elaborare un modello linguistico è di nuovo imparandolo da un ampio set di dati di esempio.

Traduzione

Dopo decenni di ricerca sulle regole di traduzione codificate a mano, è diventato evidente di recente che la tecnica più promettente consiste nel fornire un numero molto elevato di coppie di esempio di testi tradotti e fare in modo che un programma individui automaticamente le regole per mappare una stringa di caratteri su un’altra.

Biometria

La biometria è il riconoscimento o l’autenticazione di persone utilizzando le loro caratteristiche fisiologiche e/o comportamentali che richiede un’integrazione di input provenienti da diverse modalità. Esempi di caratteristiche fisiologiche sono le immagini del viso, delle impronte digitali, dell’iride e del palmo; esempi di caratteristiche comportamentali sono le dinamiche di firma, voce, andatura e colpo di chiave.

A differenza delle consuete procedure di identificazione – foto, firma stampata o password – quando ci sono molti input diversi (non correlati), le falsificazioni (spoofing) sarebbero più difficili e il sistema sarebbe più accurato, si spera senza troppi inconvenienti per gli utenti.

Il Machine Learning viene utilizzato sia nei riconoscitori separati per queste diverse modalità sia nella combinazione delle loro decisioni per ottenere una decisione generale di accettazione/rifiuto, tenendo conto dell’affidabilità di queste diverse fonti. L’apprendimento di una regola dai dati consente anche l’estrazione della conoscenza.

Conclusioni

La regola è un semplice modello che spiega i dati e una volta appreso il discriminante che identifica una specifica classe, abbiamo la conoscenza delle proprietà di quella specifica classe che ci permette di distinguerla dalle altre.

L’apprendimento della regola consente anche la compressione in quanto adattando una regola ai dati, otteniamo una spiegazione più semplice dei dati, che richiede meno memoria e meno calcoli. Una volta che hai le regole di addizione, non è necessario ricordare la somma di ogni possibile coppia di numeri.

Effettuare previsioni mediante addestramento degli algoritmi di Classificazione.

Per Classificazione si intende un’attività che richiede l’uso di algoritmi di Machine Learning che apprendono come assegnare un’etichetta di classe agli esempi dal dominio del problema.

Facciamo un esempio pratico.

Un credito è una somma di denaro prestata da un istituto finanziario, ad esempio una banca, da restituire con gli interessi, generalmente a rate.

È importante che la banca sia in grado di prevedere in anticipo il rischio connesso ad un prestito, che è la probabilità che il cliente vada in default e non restituisca l’intero importo, sia per assicurarsi che la banca realizzi un profitto e anche per non infastidire un cliente con un prestito oltre la sua capacità finanziaria.

Nel credit scoring, la banca calcola il rischio dato l’importo del credito e le informazioni sul cliente. Le informazioni sul cliente includono dati a cui abbiamo accesso e sono rilevanti per il calcolo della sua capacità finanziaria, vale a dire, reddito, risparmi, garanzie reali, professione, età, storia finanziaria passata, ecc. La banca ha un registro dei prestiti passati contenente tali dati del cliente e se il prestito è stato rimborsato o meno. Da questi dati, lo scopo è quello di inferire una regola generale che codifica l’associazione tra gli attributi di un cliente e il suo rischio, ovvero il sistema di Machine Learning adatta un modello ai dati passati per poter calcolare il rischio per una nuova applicazione e quindi decide di accettare o rifiutarlo di conseguenza.

Questo è un esempio di problema di classificazione in cui sono presenti due classi:

  1. clienti a basso rischio
  2. clienti ad alto rischio.

Le informazioni su un cliente costituiscono l’input per il classificatore il cui compito è assegnare l’input a una delle due classi.

Dopo l’addestramento con i dati passati (training set), una regola di classificazione appresa può essere della forma:

IF (reddito > θ1 AND risparmi > θ2)

THEN

basso rischio

ELSE

alto rischio

per opportuni valori di θ1 e θ2 .

Questo è un esempio di discriminante; è una funzione che separa gli esempi di diverse previsioni. Avendo una regola come questa, l’applicazione principale è la previsione: una volta che abbiamo una regola che si adatta ai dati passati, se il futuro è simile al passato, allora possiamo fare previsioni corrette per nuove istanze.

Data una nuova applicazione con un certo reddito e risparmio, possiamo facilmente decidere se è a basso rischio o ad alto rischio. In alcuni casi, invece di fare un 0/1 (basso rischio/alto rischio), potremmo voler calcolare una probabilità, ovvero P(Y|X), dove X sono gli attributi del cliente e Y è rispettivamente 0 o 1 per il rischio basso o rischio alto.

  • P(Y=0/X=x) è la probabilità che il cliente X riesca a pagare
  • P(Y=1/X=x) è la probabilità che il cliente X NON riesca a pagare

Da questo punto di vista, possiamo vedere la classificazione come l’Apprendimento di un’Associazione da X a Y. Allora per un dato X = x, se abbiamo P(Y = 1|X = x) = 0.8, diciamo che il cliente ha un 80 percentuale di probabilità di essere ad alto rischio, o equivalentemente una probabilità del 20% di essere a basso rischio. Decidiamo quindi se accettare o rifiutare il prestito a seconda di t lui possibile guadagno e perdita.

Questo è un esempio di discriminante, è una funzione che separa gli esempi di diverse previsioni. Per una regola come questa, l’applicazione principale è la previsione: una volta che abbiamo una regola che si adatta ai dati passati, se il futuro è simile al passato, allora possiamo fare previsioni corrette per nuove istanze.

Segue una figura che mostra l’output di questa classificazione

Come funziona l’apprendimento associativo (Learning Association)?

L’Association Learning è una tecnica di Machine Learning e Data Mining basata su regole che trova importanti relazioni tra variabili o funzionalità in un set di dati.

Facciamo un esempio pratico.

Nel caso della vendita al dettaglio di una catena di supermercati, un’applicazione di Association Learning è l’analisi del paniere che consiste nel trovare associazioni tra i prodotti acquistati dai clienti: se le persone che acquistano X in genere acquistano anche Y e se c’è un cliente che acquista X e non compra Y, è un potenziale cliente Y.

Una volta trovati tali clienti, possiamo indirizzarli grazie al cross-selling all’acquisto di prodotti o servizi aggiuntivi correlati al prodotto precedentemente acquistato.

Nel trovare una regola di associazione, siamo interessati ad apprendere una probabilità condizionata della forma P(Y|X) dove Y è il prodotto su cui vorremmo condizionare X, che è il prodotto o l’insieme di prodotti che sappiamo che il cliente ha già acquistato.

Diciamo che, ripassando i nostri dati, calcoliamo che P(chips|birra) = 0,7, quindi possiamo definire la regola:

Il 70% dei clienti che acquistano birra acquista anche patatine.

Potremmo voler fare una distinzione tra i clienti e, a tal fine, stimare P(Y|X,D) dove D è l’insieme degli attributi del cliente, ad esempio sesso, età, stato civile e così via, supponendo di avere accesso a queste informazioni. Se si tratta di una libreria anziché di un supermercato, i prodotti possono essere libri o autori. Nel caso di un portale Web, gli articoli corrispondono a collegamenti a pagine Web e possiamo stimare i collegamenti che un utente potrebbe fare clic e utilizzare queste informazioni per scaricare tali pagine in anticipo per un accesso più rapido.

Estrarre conoscenza da database di grandi dimensioni con il Machine Learning.

L’applicazione di strategie di Machine Learning su database di grandi dimensioni si chiama Data Mining.

L’analogia è che da una miniera (database di grande dimensione) venga estratta una grande quantità di terra che porta con sé una piccola quantità di materiale molto prezioso; allo stesso modo, nel data mining, un grande volume di dati viene elaborato per costruire un modello semplice con un uso prezioso, ad esempio, con un’elevata precisione predittiva.

Il data mining (letteralmente dall’inglese estrazione di dati) è l’insieme di tecniche e metodologie che hanno per oggetto l’estrazione di informazioni utili da grandi quantità di dati (es. banche dati, datawarehouse, ecc.), attraverso metodi automatici o semi-automatici (es. apprendimento automatico) e l’utilizzo scientifico, aziendale, industriale o operativo delle stesse.

Gli scenari in cui le tecniche di Data Mining vengono utilizzate per adottare strategie basate sul Machine Learning sono abbondanti e possono riguardare:

  • Le banche finanziarie analizzano i loro dati passati per costruire modelli da utilizzare nelle richieste di credito, rilevamento delle frodi e mercato azionario.
  • Nella produzione, i modelli di apprendimento vengono utilizzati per l’ottimizzazione, il controllo e la risoluzione dei problemi.
  • In medicina, i programmi di apprendimento vengono utilizzati per la diagnosi medica.
  • Nelle telecomunicazioni, i modelli vengono analizzati per l’ottimizzazione della rete e per massimizzare la qualità del servizio.
  • Nella scienza, grandi quantità di dati in fisica, astronomia e biologia possono essere analizzati abbastanza velocemente dai computer.
  • Il World Wide Web è enorme, è in costante crescita e la ricerca di informazioni rilevanti non può essere eseguita manualmente.

L’apprendimento automatico ci aiuta anche a trovare soluzioni a molti problemi di visione, riconoscimento vocale e robotica. Prendiamo l’esempio del riconoscimento dei volti: questo è un compito che svolgiamo senza sforzo; ogni giorno riconosciamo familiari e amici guardando i loro volti o dalle loro fotografie, nonostante le differenze di posa, illuminazione, acconciatura e così via.

Ma lo facciamo inconsciamente e non siamo in grado di spiegare come lo facciamo. Poiché non siamo in grado di spiegare la nostra esperienza, non possiamo scrivere il programma per computer. Allo stesso tempo, sappiamo che un’immagine del viso non è solo un casuale raccolta di pixel; un viso ha una struttura. È simmetrico. Ci sono gli occhi, il naso, la bocca, situati in determinati punti del viso. Il viso di ogni persona è un modello composto da una particolare combinazione di questi.

Estraendo informazioni da un database di grandi dimensioni (data mining) che include immagini del viso di una specifica persona, potremmo utilizzare un programma di Machine Learning che cattura il modello specifico di quella persona e quindi riconosce controllando questo modello in una data immagine.

Questo è un esempio di riconoscimento del modello.

Come abbiamo appena visto, il Machine Learning oltre al Data Mining include anche metodologie e tecniche di intelligenza artificiale.

Infatti, per essere intelligente, un sistema che si trova in un ambiente in evoluzione dovrebbe avere la capacità di apprendere. Se il sistema può apprendere e adattarsi a tali cambiamenti, il progettista di sistema non deve prevedere e fornire soluzioni per tutte le possibili situazioni.

Il Machine Learning consiste nella programmazione di computer per ottimizzare un criterio di prestazione utilizzando dati di esempio o esperienze passate.

Abbiamo un modello definito mediante alcuni parametri e l’apprendimento è l’esecuzione di un programma per computer per ottimizzare i parametri del modello utilizzando i dati di addestramento o il passato esperienza.

Il modello può essere predittivo per fare previsioni in futuro, o descrittivo per acquisire conoscenze dai dati, o entrambi. Più nello specifico, Il Machine Learning utilizza la teoria della statistica nella costruzione di modelli matematici, perché il compito principale è fare inferenze da un campione.

Il ruolo dell’informatica, quindi, è duplice: in primo luogo, nella fase di training, abbiamo bisogno di algoritmi efficienti per archiviare ed elaborare l’enorme quantità di dati che generalmente abbiamo. In secondo luogo, una volta appreso un modello, anche la soluzione algoritmica per l’inferenza deve essere efficiente.

Dai dati alle previsioni: quando il Machine Learning ci aiuta ad estrarre automaticamente gli algoritmi.

Solitamente quando ci troviamo davanti ad un problema che vogliamo risolvere mediante l’utilizzo di un computer ci serve un algoritmo. Un algoritmo è una sequenza di istruzioni necessaria a trasformare l’input in output.

Ad esempio, se volessimo ordinare un insieme di numeri abbiamo bisogno di un algoritmo di ordinamento il cui input è la lista di numeri che si vuole ordinare e l’output consiste nella corrispondente lista ordinata. Per questo compito, possono esserci vari algoritmi (ad esempio Merge Sort, Bubble Sort, Insertion Sort  etc.) e potremmo essere interessati a trovare quello più efficiente, che richiede il numero minimo di istruzioni o memoria o entrambi.

Segue una figura dell’approccio classico alla risoluzione di un problema noto:

Approccio classico di elaborazione

Purtroppo, per alcune attività non disponiamo di un algoritmo come, ad esempio, per l’identificazione delle mail di spam. Sappiamo qual è l’input: un documento di posta elettronica che nel caso più semplice è un file di caratteri. Sappiamo quale sia l’output dovrebbe essere: un output si/no che indica se il messaggio è spam o no. Non sappiamo come trasformare l’input in output. A rendere più ardua l’attività di identificazione delle mail di spam vi è la possibilità che tutto quello che può essere considerato spam cambia nel tempo e da individuo a individuo.

Come possiamo compensare questa mancanza di conoscenza?

La risposta è nei dati.

Possiamo facilmente compilare migliaia di messaggi di esempio, alcuni dei quali sappiamo essere spam per “imparare” cosa costituisce spam da loro. In altre parole, vorremmo che la macchina estraesse automaticamente l’algoritmo per questo compito.

Ma possiamo utilizzare un approccio simile anche per l’ordinamento dei numeri?

Chiaramente non serve utilizzare un approccio basato sul Machine Learning per l’ordinamento dei numeri perché non c’è bisogno di imparare a ordinare i numeri.

Ci sono molte applicazioni per le quali non abbiamo un algoritmo ma dati di esempio.

Con i progressi della tecnologia informatica, attualmente abbiamo la capacità di archiviare ed elaborare grandi quantità di dati, nonché di accedervi da luoghi fisicamente distanti su una rete di computer.

La maggior parte dei dispositivi di acquisizione dati ora sono digitali e registrano dati in maniera affidabile.

Si pensi, ad esempio, a una catena di supermercati che ha centinaia di negozi in tutto un paese che vendono migliaia di merci a milioni di clienti. I terminali del punto vendita registrano i dettagli di ogni transazione: data, codice identificativo del cliente, merce acquistata e relativo importo, totale spesa e così via. In genere si tratta di gigabyte di dati ogni giorno. Quello che la catena di supermercati vuole è poter prevedere chi sono i probabili clienti di un prodotto Anche in questo caso, l’algoritmo per questo non è evidente, cambia nel tempo e per posizione geografica, i dati memorizzati diventano utili solo quando vengono analizzati e trasformati in informazioni di cui possiamo avvalerci, ad esempio, per fare previsioni.

Sappiamo che esiste un processo che spiega i dati che osserviamo, anche se non conosciamo i dettagli del processo alla base della generazione dei dati. Ad esempio, per il comportamento dei consumatori, sappiamo che non è completamente casuale. Quando comprano birra, comprano patatine, d’estate comprano il gelato.

Quello che possiamo affermare è che nei dati ci sono modelli.

Potremmo non essere in grado di identificare completamente il processo di previsione, ma è possibile costruire una buona e utile approssimazione. Tale approssimazione potrebbe non spiegare tutto, ma potrebbe comunque essere in grado di rendere conto di una parte dei dati.

Anche se l’identificazione del processo completo non dovesse essere possibile potremmo ancora rilevare determinati modelli o regolarità.

Tali modelli possono aiutarci a capire il processo, oppure possiamo usare quei modelli per fare previsioni: supponendo che il futuro, almeno il prossimo futuro, non sarà molto diverso dal passato in cui sono stati raccolti i dati di esempio, anche le previsioni future possono essere corrette.

Questo è l’obiettivo del Machine Learning.

Segue una figura dell’approccio basato sul Machine Learning:

Machine Learning: come prevedere analizzando i dati

Un cuore di Matematica per il Deep Learning ed il Machine Learning.

Il Deep Learning è una branca del Machine Learning che usa diversi strati di neuroni artificiali, al fine di risolvere problemi della vita reale.

Più dettagliatamente, con l’utilizzo di tale tecnica si eseguono task di machine learning (supervisionato e non supervisionato) e che sono relativi alle seguenti aree:

  1. Computer Vision
  2. Video Analysis
  3. Sentiment Analysis
  4. Pattern Recognition

Inoltre, è molto diffuso l’utilizzo del Deep Learning in Robotica, Sistemi di guida autonoma, e Sistemi di intelligenza artificiale.

Ma in cosa consiste il cuore del Deep Learning?

Come per ogni algoritmo di Machine Learning, il cuore degli algoritmi di Deep Learning è la matematica.

La conoscenza dei concetti fondamentali di matematica consente non solo di selezionare l’algoritmo giusto per uno specifico problema di apprendimento automatico (efficacia) ma di valutarne anche le performances (efficienza).

La matematica come materia è molto vasta, ma ci sono alcuni argomenti specifici che vengono utilizzati maggiormente sia nel Machine Learning che nel Deep Learning al fine di massimizzare i risultati da questi meravigliosi domini dell’Intelligenza Artificiale. Tali argomenti riguardano:

  1. Algebra Lineare
  2. Probabilità e Statistica
  3. Calcolo
  4. Ottimizzazione e formulazione di algoritmi di machine Learning

Segue una figura che mostra in che percentuale è partizionata l’importanza di tali argomenti: