Pubblicato il

WordCamp 2017 a Roma

Ho avuto il piacere di partecipare come speaker al WordCamp Rome, evento di rilievo nazionale della community WordPress. Ho incontrato vecchie conoscenze che continuano a partecipare all’ecosistema WP, ne ho fatte di nuove e sono rimasto colpito sia dalle energie positive che dalla impeccabile organizzazione.

L’aspetto che rende la community di WP una delle più interessanti sul territorio è la sua diversità. Basta dare un’occhiata all’agenda per vedere come si sia parlato non solo di codice e di open source, ma anche di marketing, social, imprenditoria.
Un altro indizio di diversità è dato dalla presenza di donne, la cui partecipazione al mondo tech è sempre più necessaria, oltre che di una fascia di età piuttosto ampia (dai 20 ai 60 credo).

WordPress a un occhio tecnico può non sembrare granchè, anche perchè ha sulle spalle più di 10 anni di sviluppo incrementale. Eppure ha tenuto botta alla comunicazione machine to machine con la REST API. A breve avremo una rinnovata esperienza di scrittura grazie all’editor Gutenberg, costruito con la libreria React. Notevole che proprio grazie al peso politico di WordPress, Facebook abbia ricevuto la spinta definitiva a cambiare la licenza di React.

WordPress è richiesto e supportato da una comunità internazionale di volontari delle più diverse estrazioni, porta la minestra in casa per centinaia di migliaia di freelance e agenzie web, è uno dei punti di ingresso dei ragazzi per il mondo della programmazione. E’ la dimostrazione lampante che la tecnologia è al servizio delle persone, e queste persone vivono in un mondo reale fatto di relazioni, emozioni, sogni.
Troppo spesso da tecnici abbiamo una visione tecnocentrica: la lezione più importante che ho imparato dalla comunità di WordPress, e che tento di tenere viva nel lavoro che faccio nella data science, è che la tecnologia è solo uno strumento.

WordPress è un simbolo di civiltà.

In questa edizione del WordCamp c’era anche un Pollo, il nostro caro Mr Watzlawick. Abbiamo invitato gli sviluppatori WP a formarsi sui motori di raccomandazione, con un esempio di come si trasforma un testo in vettore, per poter poi essere dato in pasto agli algoritmi di machine learning. Ecco il codice e qui a seguire le slide:

Ci sono tante persone che vorrei ringraziare, sono i loro sforzi che rendono possibili eventi così inclusivi. Grazie davvero. Menzioni speciali:

  • La conduzione di Eugenio Petullà e i valori che è in grado di comunicare
  • La tenacia con cui Andrea Volpini sostiene i linked data
  • Tra le presentazioni che mi hanno colpito di più:
    • Luca Sartoni, che ha offerto consigli per sviluppare la carriera e il marketing ripercorrendo i suoi stessi errori
    • Matteo Cassese, la versione italiana di Don Draper, che ha evidenziato gli elementi essenziali di una campagna media sul web
    • Antonio Schiavone, che diffonde il tema dell’accessibilità web
    • Francesca Marano per la descrizione ad alto livello della community e delle sue criticità

Concludo con un invito a PARTECIPARE, non solo utilizzando WordPress, ma anche portando le chiappette ai MeetUp che sono organizzati periodicamente in tutta Italia (questo è quello romano). Partecipare inizialmente come pubblico, invitando conoscenti interessati, e magari proporre delle talk per raccontare alla community le proprie esperienze. Sarete bene accolti.

Credits: foto riprese da qui.

Pubblicato il

Quale matematica serve per il machine learning?

Ecco la matematica minima essenziale per capirci qualcosa nel mondo del machine learning:

  1. Algebra lineare: spazi a tante dimensioni che contengono punti, che corrispondono agli esempi da cui la macchina impara
  2. Calcolo infinitesimale: strumenti di ottimizzazione per fare in modo che la macchina modifichi i propri parametri interni per una prestazione sempre migliore
  3. Probabilità: per aiutare la macchina a gestire l’incertezza
  4. Teoria dei grafi: per tratare entità e relazioni tra entità all’interno di una rete

Guarda il video per intuizioni visive su tutti questi temi, per un po’ di incoraggiamento e soprattutto per ammirare la bellezza mediterranea di Pollo.

Pubblicato il

Python vs. R

 

Quale linguaggio scegliere per avvicinarsi alla data science, all’intelligenza artificiale e al machine learning?

Nel video mettiamo a confronto, con l’aiuto di Pollo, i linguaggi Python e R. Prendiamo in considerazione tre principi:

  1. Completezza. Quale linguaggio offre più possibilità?
  2. Interoperabilità. Sarà facile integrare quello che costruiamo nelle architetture software esistenti?
  3. Vendibilità. Quanto sono utilizzabili le competenze in Python o R nel mondo del lavoro?

Chi vincera?

 

.

Pubblicato il

Come funzionano i suggerimenti Netflix e Amazon?

Come fanno Netflix o Amazon a darci suggerimenti rilevanti su quello che ci piacerebbe leggere, vedere, comprare?

Nel video parliamo del filtro collaborativo, il motore di raccomandazione più utilizzato. Partiamo dal ragionamento di base con un esempio sui film e di come può essere visto in termini geometrici e di teoria dei grafi.

.

 

Pubblicato il

Il machine learning funziona?

 

Per chi si avvicina o vuole investire nel Machine Learning vale la pena di chiedersi: funziona?
Nel video facciamo l’esempio di un classificatore di notizie di giornali, in grado di distinguere se una data notizia parla di Sport, Cronaca o Politica. Poi mostriamo nel pratico come si misura la sua accuratezza e cosa si può fare per aumentarla aiutandoci con la matrice di confusione.

Concetti chiave:

  • Possibilità di quantificare le prestazioni di  un modello
  • Analisi dettagliata dell’errore
  • Sviluppo ciclico nell’IA così come nel software classico
  • Validazione come best practice nella data science
Pubblicato il

3 spunti per chi si avvicina al Machine Learning

  1. Il machine learning è uno strumento per l’automazione (occhio a non confondere come il fine)
  2. Il machine learning è una forma di ottimizzazione (no perfezione, ma un miglioraento misurabile)
  3. Il machine learning è una forma di software che va fatto interagire con altri software o operatori umani (difficile che serva a qualcosa di per sè)
Pubblicato il

Linked Data a RomaJS

Dopo la presentazione sul machine learning, è stato un piacere ritornare al meetup RomaJS per discutere di Linked Data. Ecco le slide piene di link utili:

Claudio Mantuano è intervenuto con una demo per mostrare come sia possibile saltare da un dominio di conoscenza all’altro navigando la Linked Open Data cloud. Qui il codice sorgente.

I novizi dei linked data – ma esperti di JS – hanno avuto modo di scoprire questa visionaria tecnologia, mentre noi praticanti abbiamo fatto il punto della situazione e ottenuto feedback preziosissimi. Nodi essenziali del confronto:

  • Lo stack tecnologico dei linked data è promettente ma immaturo, con triplestore e librerie pronti alla produzione ma mancanti di documentazione, tutorial e supporto dalla community. C’è ancora tanto da lavorare – e divertirsi.
  • Anche non volendo adottare questo stack, i ricchi dataset rilasciati in formato Linked sono meritevoli di essere esplorati e integrati in un setup tradizionale.
  • All’intersezione tra Linked Data e Javascript ci sono due standard da tenere d’occhio:
    • JSON-LD: per trasformare una REST API in una REST API linkata.
    • RDF-JS: uno sforzo dal basso per rappresentare  nello stesso modo Linked Data in tutte le librerie JS.

Tutto questo è avvenuto nel contesto della community di RomaJS. Un ringraziamento speciale agli organizzatori e agli appassionati di Javascript che si sono uniti all’incontro.

Pubblicato il

3 domande sul machine learning

I colleghi di Dataninja mi hanno posto 3 domande sul machine learning. Eccole:

Cos’è il machine learning?

Gran parte di ciò che fanno le macchine è dovuto a programmi espliciti, scritti da un programmatore che elenca istruzione per istruzione come deve essere svolto un compito. Il machine learning è un insieme di tecniche che permettono di addestrare le macchine per esempi invece che per comandi espliciti.
A grandi linee funziona così: passiamo gli esempi (dati) ad un “algoritmo di addestramento”, che è un programma in grado di estrarre i pattern statistici dai dati e di comprimerli in un “modello”, ossia un ulteriore piccolo programma che rappresenta il dominio di riferimento e che è in grado di fare predizioni e rispondere a domande.

data2model

A cosa serve?

Serve ad automatizzare il lavoro, renderlo meno faticoso e ripetitivo. Vediamo spesso il machine learning impiegato nei motori di raccomandazione (es. i suggerimenti di Amazon), sentiment analysis (es. categorizzare i Tweet), robotica (es. il Roomba), ma è presente ormai in tutti i processi industriali e commerciali. E’ uno strato in più nel già vasto ecosistema digitale in cui viviamo, che ha lo scopo di rendere le nostre vite più facili per mezzo di macchine intelligenti.
E’ importante tenere a mente che la base di tutto sono i dati. Le multinazionali del digitale sono in grado di costruire e mettere al nostro servizio intelligenza artificiale avanzata perchè noi offriamo loro un flusso continuo di dati personali.

Perchè se ne parla tanto adesso?

Gli algoritmi di machine learning più utilizzati vengono dagli anni ’80 e ’90 del secolo scorso, ma per funzionare bene hanno bisogno di tanti dati, i quali sono esplosi in quantità e qualità solo negli ultimi tempi, grazie alla digitalizzazione trasversale di tutti i processi della nostra società. Tanto più è difficile fare ordine, filtrare e rendere utili i dati che produciamo, tanto più abbiamo bisogno che le macchine facciano il lavoro sporco, limitando l’intervento umano alle decisioni importanti.
Il potenziale trasformativo del machine learning ha anche dei lati oscuri, ossia la sostituzione del lavoro umano, l’erosione della privacy, l’accentramento di potere, e la progressiva responsabilizzazione delle macchine. Prevedo che nei prossimi tempi se ne parlerà sempre di più al di fuori del recinto della tecnologia, nel dibattito politico e sociale.

Pubblicato il

Quanto costa il machine learning?

L’esplosione di dati e potenza di calcolo a cui stiamo assistendo apre opportunità imprenditoriali. Molti hanno compreso la possibilità di condurre le proprie attività con decisioni basate sui dati, ma al momento di passare alla pratica è difficile capire cosa vuol dire “big data”, “machine learning”, “deep learning” e “data science”. Qual è l’utilità di queste tecnologie e quanto costano?

Se non hai ancora un’idea chiara di cosa è il Machine Learning  leggi qui. La figura che segue esprime i concetti di base: una quantità di dati viene trattata con un algoritmo, che con questi è in grado di addestrare un modello. Il modello è un piccolo programma che contiene le invarianze statistiche (o pattern) estratte dai dati, ed è in grado di generalizzare e rispondere a domande sui dati stessi (e sul mondo che questi rappresentano).

data2model

Vediamo le fasi coinvolte nella costruzione di un modello di machine learning, cercando di stimare i costi di ogni passaggio. Chi è familiare con lo sviluppo di software troverà delle similarità con le pratiche AGILE, poichè da un punto di vista industriale l’intelligenza artificiale non è altro che un tipo avanzato di software. Come per il software appunto, le soluzioni preconfezionate hanno un costo basso ma non soddisfano esigenze specifiche, mentre vale il contrario per le soluzioni custom.

Le principali fasi per lo sviluppo di un modello di machine learning sono:

  1. requisiti
  2. dati
  3. modello
  4. produzione

Si noti che per problemi difficili o cambi dei requisiti in corsa, l’intero processo può essere ripetuto più volte.

1 – Requisiti

La raccolta dei requisisti serve a capire cosa si vuole ottenere dal modello. Più le idee sono chiare su cosa si vuole, più ci si allinea velocemente e si passa all’azione. Esempi di richieste chiare sono:

  • classificare recensioni in positive o negative
  • dire se nelle immagini ci sono o meno dei gatti
  • raccomandare libri in un e-commerce

Più dettagliata è la richiesta, più il preventivo del consulente/agenzia sarà accurato. Il costo di questa fase va da 0 (per chi ha le idee chiare e le ha già documentate) a qualche centinaio di euro. In caso sia necessario integrare l’algoritmo in un setup tecnologico complesso il costo può salire alle migliaia.

Da un punto di vista strategico questo passaggio è il più importante, perchè più energie si dedicano alla comunicazione e mutua comprensione tra le parti, più il progetto ha possibilità di riuscire. A partire da una chiara definizione del problema da risolvere e delle esigenze a cui rispondere, si può passare al trattamento dei dati.

2 – Dati

I dati possono essere visti come l’ “esperienza” del modello. Se addestriamo il modello con tanta esperienza di qualità, questo risponderà meglio alle domande che faremo. Il motto “garbage in, garbage out” si presta bene al concetto. In tutti i casi in cui i dati non sono abbastanza in quantità o pulizia, è necessaria un’attività di preparazione dei dati. Potrebbe essere il caso di raccogliere più dati, comprarli da terze parti o integrare con open data. In ogni caso i dati devono essere ben puliti e strutturati.

E’ possibile che non sia veramente necessario il machine learning, quanto un audit sull’utilizzo ottimale dei propri dati. Ciò è legittimo e ha il grosso valore di offrire un inventario dei dati disponibili in azienda e delle loro possibili applicazioni (solo una di queste è il machine learning).

Il costo di questo passaggio è 0 per dati già pertinenti e puliti, altrimenti si va sulle centinaia di euro. Se la quantità dei dati è tale da necessitare l’utilizzo di un cluster (i famosi big data) il costo può andare sulle migliaia.

3 – Modello

Nonostante la copertura mediatica sul deep learning, i professionisti del settore sanno quanto sia rischioso affidarsi a soluzioni appena arrivate dalla ricerca. Giocare con le nuove tecniche è divertentissimo ma un cliente ha bisogno di risolvere il suo problema in tempi e costi ragionevoli. Dato che io non sono Geoffry Hinton e tu non sei Larry Page, non complichiamoci la vita e seguiamo un percorso lineare! I vecchi algoritmi si prestano a risolvere gran parte dei problemi perchè sono ben compresi e testati nel mondo reale.

Come punto di partenza è importante concordare su una misura di accuratezza del modello, per monitorare i progressi in modo oggettivo. Servono diversi giorni di lavoro per scegliere un algoritmo, addestrare il modello, testarlo e ripetere il ciclo. Il costo può essere dai 1000 euro in su, non è facile generalizzare più di questo. E’ però utile comprendere a fondo questo grafico:

model_improving

In breve, dice: “è facile raggiungere una buona accuratezza, ma dovremo lavorare sempre più duramente per migliorare. Il 100% di accuratezza è quasi impossibile”. Il grafico è derivato da una competizione su kaggle.com proposta da Crowdflower, a prova del fatto che a soffrire di questo plateau sono anche gli esperti di classe mondiale.

4 – Produzione

Una volta che l’algoritmo è testato e pronto per entrare in produzione, ci sono da gestire due attività:

  1. integrazione con il setup esistente. Il modello va inserito in un’architettura, ad esempio un CMS come WordPress, una app Android o un software Intranet. E’ possibile tenere il modello su un server e farlo rispondere alle richieste via REST API. In generale è una buona pratica disaccoppiare il più possibile, di modo che sia possibile il riutilizzo per altre piattaforme e un facile aggiornamento. Le architetture a Microservizi sono in questo senso un trend da seguire.
  2. aggiornare il modello. Potrebbe essere utile un riaddestramento, per imparare da nuovi dati e dare risposte più articolate.

Entrambi non sono obbligatori, quindi anche per questo passaggio il costo varia da 0 a qualche centinaio di euro, più gli update che possono avvenire a intervalli di tempo. L’importante è tenere conto di questi aspetti fin dalla fase di raccolta dei requisiti.

Conclusione

Quanto costa il machine learning? Tra 1000 e diverse migliaia di euro. Questa generalizzazione si presta a tante eccezioni e critiche, ma pone una base per discutere.

Il costo può diminuire drasticamente per i servizi cloud, che offrono algoritmi a tariffa mensile o in base all’utilizzo. Tale risparmio riflette comunque il fatto che gli algoritmi non sono personalizzati. Si trova una via di mezzo in marketplace emergenti come Algorithmia.

Il mercato di dati e algoritmi ha basse barriere all’ingresso e non è ancora strettamente regolato. Ci sono soldi da fare sia per chi capisce il valore di comprare intelligenza artificiale, sia per chi riesce a offrire loro delle soluzioni custom a prezzi ragionevoli.

Sono curioso di conoscere la tua opinione su questo tema, tramite un commento qui sotto, un tweet o un post.
In caso hai bisogno di aiuto su una o tutte le fasi descritte, contattami. Scrivo codice di intelligenza artificiale da più di 10 anni e ho tanta esperienza da condividere.