Azienda di machine learning, cosa c'è di così speciale?
Machine learning è il sotto-campo dell’intelligenza artificiale che si occupa della progettazione e dello sviluppo di algoritmi che consentono ai computer di migliorare le loro prestazioni nel tempo basandosi su dati, come dati dai sensori o database. Wikipedia
Dieci anni fa, le aziende di machine learning erano praticamente inesistenti, o diciamo, marginali al massimo. Il motivo principale di quella situazione era semplicemente che non c’erano molti algoritmi che funzionavano effettivamente e che fornivano valore aziendale in quel periodo. La traduzione automatica, ad esempio, è ancora appena funzionante e molto lontana dall’essere utilizzabile nella maggior parte delle aziende.
Lokad si inserisce nel vasto campo del machine learning, con un interesse specifico per l’apprendimento statistico. Personalmente, lavoro nel campo del machine learning da quasi un decennio e ancora mi sorprende vedere quanto le cose siano profondamente diverse in questo campo rispetto al tipico mondo del software shrinkwrap. Il machine learning è un mondo del software a sé stante.
Il progresso scientifico su aree che sembravano intelligenza artificiale è stato lento, molto lento rispetto alla maggior parte delle altre aree del software. Ma un fatto che è troppo poco conosciuto è anche che il progresso scientifico è stato costante; e, al giorno d’oggi, ci sono parecchie aziende di machine learning di successo:
- Filtro antispam intelligente: accidenti, akismet ha bloccato più di 71.000 commenti di spam sul mio blog, con praticamente zero falsi positivi che posso notare.
- Riconoscimento vocale: Dragon Dictate sta facendo un lavoro davvero impressionante dopo pochi minuti di taratura dell’utente.
- Riconoscimento della scrittura a mano e persino riconoscimento delle equazioni sono integrati in Windows 7.
Il machine learning è diventato mainstream.
1. Il prodotto cambia ma l’interfaccia utente rimane
Per la maggior parte delle aziende di software, portare qualcosa di nuovo agli occhi del cliente è IL modo per ottenere ricavi ricorrenti. Il SaaS sta cambiando lentamente questo aspetto finanziario, ma ancora, per la maggior parte dei prodotti SaaS, l’evoluzione comporta cambiamenti molto tangibili nell’interfaccia utente.
Al contrario, nel machine learning, lo sviluppo di solito non significa aggiungere nuove funzionalità. La maggior parte dell’evoluzione avviene in profondità con pochissimi o nessun cambiamento visibile. La ricerca di Google - probabilmente il prodotto di machine learning di maggior successo - è notoriamente semplice ed è stata così per un decennio ormai. Ultimamente, è stata aggiunta la personalizzazione del ranking basata sulle preferenze dell’utente, ma questo cambiamento è avvenuto quasi 10 anni dopo il lancio e immagino che sia ancora passato inosservato alla maggior parte degli utenti.
Eppure, non significa che le persone di Google siano state inattive negli ultimi 10 anni. Anzi, le squadre di Google hanno migliorato freneticamente la loro tecnologia vincendo battaglia dopo battaglia contro gli spammer del web che ora stanno usando trucchi molto intelligenti.
2. Dieci ordini di grandezza in termini di prestazioni
Quando si tratta di prestazioni del software, le operazioni usuali shrinkwrap avvengono entro 100 ms. Ad esempio, sospetto che i tempi di calcolo usuali, lato server, necessari per generare un’applicazione di pagina web variano da 5 ms per le app più ottimizzate a 500 ms per le più lente. Essere più lenti di così e i tuoi utenti rinunceranno a visitare il tuo sito web. Anche se è difficile da verificare, sospetto che questa gamma di prestazioni sia valida per il 99% delle applicazioni web.
Ma quando si tratta di machine learning, i costi computazionali tipici variano di più di 10 ordini di grandezza, da millisecondi a settimane.
Al giorno d’oggi, il prezzo di 1 mese di CPU a 2Ghz è sceso a $10 e mi aspetto che questo prezzo scenda sotto $1 nei prossimi 5 anni. Inoltre, un mese di CPU può essere compresso in poche ore di tempo effettivo attraverso la parallelizzazione su larga scala. Per la maggior parte degli algoritmi di machine learning, l’accuratezza può essere migliorata dedicando più CPU al compito in questione.
Pertanto, guadagnare l'1% di accuratezza con un investimento di 1 mese di CPU ($10) può essere estremamente redditizio, ma quel tipo di ragionamento è semplicemente pazzia per la maggior parte, se non per tutte, le aree del software al di fuori del machine learning.
3. Sfide di scalabilità hardcore
Scalare un Web2.0 come ad esempio Twitter è sicuramente una sfida, ma alla fine il 90% della soluzione risiede in una singola tecnica: la memorizzazione nella cache in memoria degli elementi più frequentemente visualizzati.
Al contrario, scalare gli algoritmi di machine learning è di solito un compito terrificante. A Google ci sono voluti diversi anni per riuscire a eseguire la diagonalizzazione di matrici sparse su larga scala (PageRank); e l’algebra lineare non è certamente l’area più impegnativa della matematica quando si tratta di problemi di machine learning.
Il problema principale del machine learning è che il modo più efficiente per migliorare la precisione consiste nell’aggiungere più dati di input. Ad esempio, se si desidera migliorare la precisione del filtro antispam, è possibile cercare di migliorare l’algoritmo, ma è anche possibile utilizzare un database di input più ampio in cui le email sono già contrassegnate come spam o non spam. In realtà, finché si dispone di una potenza di elaborazione sufficiente, è spesso molto più facile migliorare la precisione attraverso dati di input più ampi che attraverso algoritmi più intelligenti.
Tuttavia, gestire grandi quantità di dati nel machine learning è un problema complicato perché non è possibile partizionare i dati in modo ingenuo. La partizione ingenua equivale a scartare i dati di input e a eseguire calcoli “locali” che non sfruttano tutti i dati disponibili. In sintesi: il machine learning ha bisogno di modi molto intelligenti per distribuire i suoi algoritmi.
4. Il feedback degli utenti di solito è completamente sbagliato
Le persone intelligenti consigliano di fare dei test di usabilità in corridoio. Questo vale anche per qualsiasi interfaccia utente che si metta sul proprio prodotto di machine learning, ma quando si tratta di migliorare il nucleo della propria tecnologia, il feedback degli utenti è praticamente inutile se non addirittura dannoso se effettivamente implementato.
Il problema principale è che, nel machine learning, la maggior parte dei comportamenti “buoni / corretti / attesi” è sfortunatamente controintuitiva. Ad esempio, da Lokad, una lamentela frequente dei clienti è che forniamo previsioni piatte che vengono percepite come errate. Eppure, queste previsioni piatte sono solo nell’interesse di quei clienti, perché si rivelano più accurate.
Anche se sono esperto di filtraggio dello spam, sono abbastanza sicuro che il 99% dei suggerimenti che mi vengono in mente e che invio alle persone di Akismet sarebbero solo spazzatura per loro, semplicemente perché la sfida nel filtraggio dello spam non è “come filtro lo spam”, ma “come filtro lo spam senza filtrare le email legittime”. E sì, le persone di Pfizer hanno il diritto di discutere tramite email dei composti di citrato di sildenafil senza che tutte le loro email vengano filtrate.
5. Ma i dati degli utenti contengono la verità
I dati di prova e gli scenario non hanno molto senso nel machine learning. I dati reali si rivelano sorprendenti in molti modi imprevisti. Lavorando in questo campo da 10 anni, ogni nuovo set di dati che ho mai esaminato è stato sorprendente in molti modi. È completamente inutile lavorare sui propri dati inventati. Senza dati reali dei clienti a disposizione, non si può fare nulla nel machine learning.
Questo particolare aspetto porta spesso a un problema del tipo “uovo o gallina” nel machine learning: se si desidera iniziare a ottimizzare la visualizzazione degli annunci contestuali, è necessario avere molti inserzionisti e editori. Tuttavia, senza molti inserzionisti e editori, non si può perfezionare la propria tecnologia e di conseguenza non si può convincere molti inserzionisti e editori a unirsi.
6. Ottimizzazione vs. Matematica, Evoluzione vs. Rivoluzione
Le persone intelligenti consigliano che riscrivere da zero è il tipo di errore strategico che spesso uccide le aziende di software. Tuttavia, nel machine learning, riscrivere da zero è spesso l’unico modo per salvare la propria azienda.
Alla fine degli anni ‘90, Altavista, il motore di ricerca leader, non ha dedicato il tempo per riscrivere la propria tecnologia di ranking basata sulle folli idee matematiche basate sulla diagonalizzazione su larga scala. Di conseguenza, sono stati sopraffatti da una piccola azienda (Google) guidata da un gruppo di persone inesperte.
L’ottimizzazione e il miglioramento incrementale sono il cuore dell’ingegneria del software classica, e questo vale anche per il machine learning - la maggior parte delle volte. Ottenere il prossimo punto percentuale di precisione viene spesso raggiunto mediante un’ottimizzazione e un perfezionamento accurato di un algoritmo esistente, progettando tonnellate di meccanismi di reportistica ad hoc nel processo per ottenere una comprensione più approfondita del comportamento dell’algoritmo.
Tuttavia, ogni nuovo punto percentuale di precisione in questo modo ti costa dieci volte più sforzi rispetto al precedente; e dopo un paio di mesi o anni, la tua tecnologia è semplicemente bloccata in un vicolo cieco.
È qui che entra in gioco la matematica hardcore. La matematica è fondamentale per passare alla prossima fase di prestazioni, il tipo di salto in cui si ottiene un miglioramento del 10% che sembrava nemmeno possibile con l’approccio precedente. Poi, provare nuove teorie è come giocare alla roulette: nella maggior parte dei casi, si perde e la nuova teoria non porta miglioramenti aggiuntivi.
Alla fine, fare progressi nel machine learning significa molto spesso provare approcci destinati a fallire con una probabilità elevata. Ma ogni tanto qualcosa effettivamente funziona e la tecnologia fa un balzo in avanti.