Blog.

Cos’è il Machine Learning | Semplice con esempi


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
machine-learning

machine-learning-cosa-è-guida-machine-learning-italiano-semplice-esempi-esempio

Per machine learning si suole riferirsi ad un campo di studi il cui intento è fornire ai computer l’abilità di imparare senza essere esplicitamente programmati.

Arthur Samuel, 1959.

La missione di oggi è semplice: fare chiarezza, e comprendere le basi teoriche del machine learning.

Non sarà semplice.

Molti concetti da interiorizzare, e concretizzare in qualcosa di visibile.

Ma insieme, io e te, porteremo a termine questa missione. Siamo pronti?

Ricorda, non lo facciamo perché è semplice. Lo facciamo perché è difficile.

Domande

La curiosità umana genera molte domande, utili a capire un nuovo argomento. In questo post risponderemo a:

  • Perché (è utile, e lo usiamo rispetto ad altre soluzioni)
  • Cosa (è il machine lerning)

Soluzione a nuovi problemi: il perché!

Prima di sviscerare la definizione che abbiamo letto poco fa, svilupperemo una comprensione intuitiva del machine learning e delle sue potenzialità.

Risponderemo al perché, e implicitamente ad un cosa intutitivo.

Un problema tradizionale: lampadina domotica

In camera mia ho una scheda Arduino, assimilabile ad un micro-computer, dotato di un sensore di luce ambientale.

Pretendo che la scheda accenda la luce, quando la luminosità è bassa.

Semplificando, il sensore genera un numero tra 0 (luce assente) e 1023 (luce del sole).

Usando il costrutto logico if/else definisco una regola molto semplice:

//controllo se il valore di luce è maggiore di 500
if(light_val > 500){
 //in questo caso spengo la luce
 digitalWrite(light, LOW);
}else{
 //altrimenti se il valore è minore o uguale a 500 la accendo
 digitalWrite(light, HIHG);
}

Con questo codice programmiamo esplicitamente il computer (la scheda Arduino) ad eseguire un task specifico: accendere o spegnere la luce.

Definito il problema (accendere la luce), abbiamo individuato i nostri dati (valore luce ambientale), che hanno un valore minimo e massimo definito (0, 1023) e stabilito una regola (luce > 500 spegni, altrimenti accendi) che produce un risultato (luce accesa, luce spenta)

Così abbiamo trovato la soluzione.

Un approccio del genere è possibile perché conosco la regola con la quale gestire il problema: il valore della luminosità ambientale determina l’accensione o spegnimento della luce.

E sopratutto perché i valori dei miei dati sono confinati in un intervallo preciso, quindi conosco tutti i possibili casi. Creo uno spartiacque (la soglia di 500) e il gioco è fatto.

Cosa succede però quando voglio risolvere un problema di cui non conosco le regole?

Un problema nuovo: previsioni di vendita

Mia madre è una fiorista, crea e vende composizioni floreali.

Spesso si trova a dover gettare fiori e piante ormai appassite o troppo deperite per essere vendute.

Questo succede perché cerca di trovare l’equilibrio tra l’avere abbastanza fiori per soddisfare la clientela ed evitare che le materie prime si rovinino perché invendute.

L’equilibrio però varia di mese in mese.

Gestire la domanda propondendo la giusta offerta, contenendo alcontempo le perdite è un difficile problema di managing.

Ora, i computer sono nati per semplificare le nostre vite.

Quindi perché non creare un programma che preveda le vendite stimate così da ridurre le perdite e massimizzare il profitto?

Definito il problema, troviamo la soluzione!

Che dati abbiamo?

  • tipologia di fiore (tempo di deperimento, costo)
  • stagione (temperatura, umidità, vacanze)
  • domanda (bouquet, corone di laurea, mazzi di rose, etc..)
  • […]

Ci troviamo difronte ad un bel problema.

Per distinguere i casi tra loro dovremmo definire un enorme numero di soglie, usando valori che non conosciamo, per stabilire delle regole che ignoriamo e sperare di risolvere il problema.

Inoltre, se mai dovesse esserci un caso che non abbiamo previsto, il programma non potrebbe prevedere le vendite di quel particolare fiore.

Prima abbiamo mangiato una bistecca con la forchetta, e ora stiamo consumando una zuppa con la stessa posata.

Ci serve un nuovo utensile, abbiamo bisogno del cucchiaio.

Un problema strano

Il nostro è un problema strano: non conosciamo la regola, ma presumiamo che esista.

Facciamolo risolvere al computer.

Usando la metafora di prima, il nostro cucchiaio è un sistema capace di apprendere da solo la regola che correla i dati delle vendite passate, per costruire un modello di realtà sulla base di risposte esistenti.

Questo modello di realtà sarà approssimativo, ma è proprio quello di cui abbiamo bisogno.

Il nostro intento è avere del margine di elasticità: quando affronteremo una situazione mai vista prima, sarà proprio questo modello approssimativo a trovare una soluzione.

Scriveremo il codice per leggere i dati ed elaborarli.

Ma sarà il computer a trovare la regola nascosta in quei dati. Infine un’altra parte di codice interrogherà il modello per chiedergli la venidta stimata in base a determinati valori.

Quindi è il computer che impara a risolvere un problema senza essere esplicitamente programmato per farlo.

E il flusso sarà simile a questo:

“E’ il 10 febbraio, la prossima settimana è previsto cielo sereno, ci sono 4 negozi nelle vicinanze, ho 10 ordini per mazzi da 3 rose, quante rose potrò vendere?”

“Elborazione…”

“Vendita stimata 230 rose”

Definizione: il cosa!

Ora svisceriamo la definizione di Arthur Samuel, pioniere nel campo delle Intelligenze Artificiali:

Per machine learning si suole riferirsi ad un campo di studi il cui intento è fornire ai computer l’abilità di imparare senza essere esplicitamente programmati.

Il machine learning è quindi un campo di studi perché coinvolge statistica, matematica e programmazione prendendo spunto da questi mondi per sviluppare nuovi strumenti.

Questi strumenti forniscono ai computer l’abilità di imparare sviluppando modelli di realtà, ovvero approssimazioni. Imparano nel senso che facciamo vedere loro il punto di partenza A e quello di arrivo B, affidando a loro la creazione del percorso.

Il percorso è generato autonomamente attarverso l’ausilio di algoritmi, quindi il sistema raggiunge un’obiettivo (collegare A e B) senza essere esplicitamente progammato.

Conclusione: le risposte del machine learning

Machine learning:

  • è un campo di studi che fornisce ai sistemi l’abilità di imparare senza essere esplicitamente programmati per farlo.
  • lo usiamo perché possiamo risolvere problemi troppo complessi per un approccio tradizionale o perché privi di un algoritmo conosciuto (è il cucchiaio per consumare la minestra)

Nei prossimi post ne capiremo il funzionamento e le tipologie. stay tuned!

Un caldo abbraccio, Andrea.

Taggeddata sciencemachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum