Azienda di machine learning, che cosa c'è di così speciale?
Apprendimento automatico è il sottocampo dell’intelligenza artificiale che si occupa della progettazione e dello sviluppo di algoritmi che permettono ai computer di migliorare le proprie prestazioni nel tempo basandosi sui dati, come quelli provenienti da sensori o database. Wikipedia
Dieci anni fa, le aziende di apprendimento automatico erano praticamente inesistenti, o al massimo marginali. La ragione principale di quella situazione era semplicemente che non esistevano molti algoritmi effettivamente funzionanti e in grado di fornire valore aziendale al tempo stesso. La traduzione automatica, per esempio, funziona a malapena ed è molto lontana dall’essere utilizzabile nella maggior parte delle aziende.
Lokad si colloca nel vasto campo dell’apprendimento automatico, con un interesse specifico per l’apprendimento statistico. Personalmente, lavoro in questo campo da quasi un decennio, ed è ancora sorprendente vedere quanto le cose siano profondamente diverse rispetto al tipico mondo del software confezionato. L’apprendimento automatico è un mondo software a sé stante.
Il progresso scientifico nelle aree che sembravano appartenere all’intelligenza artificiale è stato lento, molto lento rispetto alla maggior parte di altre aree del software. Ma un fatto poco noto è anche che il progresso scientifico è stato costante; e, ad oggi, ci sono parecchie aziende di apprendimento automatico di successo:
- Filtro antispam intelligente: accidenti, akismet ha catturato più di 71 000 commenti spam sul mio blog, con praticamente zero falsi positivi per quanto posso dire.
- Riconoscimento vocale: Dragon Dictate sta ora facendo un lavoro piuttosto impressionante dopo solo pochi minuti di messa a punto da parte dell’utente.
- Il riconoscimento della scrittura a mano e persino il riconoscimento di equazioni sono integrati in Windows 7.
L’apprendimento automatico è diventato mainstream.
1. Il prodotto cambia, ma l’interfaccia utente rimane invariata.
Per la maggior parte delle aziende di software, presentare qualcosa di nuovo agli occhi del cliente è IL modo per ottenere entrate ricorrenti. Il SaaS sta lentamente modificando questo aspetto finanziario, ma comunque, per la maggior parte dei prodotti SaaS, l’evoluzione comporta cambiamenti molto tangibili nell’interfaccia utente.
Al contrario, nell’apprendimento automatico, lo sviluppo di solito non significa aggiungere nuove funzionalità. La maggior parte dell’evoluzione avviene in profondità con cambiamenti superficiali molto pochi o nulli. Google Search - probabilmente il prodotto di apprendimento automatico di maggior successo - è notoriamente semplice, ed è stato così per ormai un decennio. Recentemente è stata aggiunta la personalizzazione del ranking basata sulle preferenze degli utenti, ma questo cambiamento è avvenuto quasi 10 anni dopo il lancio e, suppongo, passa ancora inosservato dalla maggior parte degli utenti.
Tuttavia, non significa che le persone di Google siano rimaste inattive negli ultimi 10 anni. Anzi, al contrario, i team di Google hanno migliorato furiosamente la loro tecnologia, vincendo scontro dopo scontro contro gli spammer del web che ora usano stratagemmi molto ingegnosi.
- Dieci ordini di grandezza in termini di prestazioni
Quando si tratta di prestazioni del software, le operazioni tipiche di software confezionato avvengono entro 100ms. Ad esempio, sospetto che i tempi di calcolo usuali, lato server, necessari per generare un’applicazione web varino da 5ms per le app più ottimizzate a 500ms per quelle più lente. Se fossero più lenti di così, i tuoi utenti smetterebbero di visitare il tuo sito. Sebbene sia difficile da verificare, sospetto che questo intervallo di prestazioni sia valido per il 99% delle applicazioni web.
Ma quando si tratta di apprendimento automatico, i costi computazionali tipici variano per più di 10 ordini di grandezza, da millisecondi a settimane.
Ad 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 reale attraverso la parallelizzazione su larga scala. Per la maggior parte degli algoritmi di apprendimento automatico, accuratezza può essere migliorata dedicando più CPU al compito in questione.
Quindi, ottenere l'1% in accuratezza con un investimento di 1 mese di CPU (10$) può essere estremamente redditizio, ma questo tipo di ragionamento è semplicemente follia per la maggior parte, se non per tutte, le aree software al di fuori dell’apprendimento automatico.
- Sfide estreme di scalabilità
Scalare un’applicazione Web2.0 come, ad esempio, Twitter è davvero una sfida, ma, in fin dei conti, il 90% della soluzione risiede in una singola tecnica: la cache in memoria degli elementi più visualizzati.
Al contrario, scalare gli algoritmi di apprendimento automatico è di solito un compito terribilmente complicato. A Google ci sono voluti diversi anni per riuscire a eseguire la diagonalizzazione di una matrice sparsa su larga scala (PageRank); e l’algebra lineare non è chiaramente l’area della matematica più impegnativa quando si tratta di problemi di apprendimento automatico.
Il problema fondamentale dell’apprendimento automatico è che il modo più efficiente per migliorare la tua accuratezza consiste nell’aggiungere più dati di input. Ad esempio, se vuoi migliorare l’accuratezza del tuo filtro antispam, puoi provare a migliorare il tuo algoritmo, ma puoi anche utilizzare un database di input più ampio in cui le email sono già contrassegnate come spam o non spam. In realtà, finché disponi di sufficiente potenza di calcolo, è spesso molto più facile migliorare l’accuratezza tramite dati di input più ampi piuttosto che con algoritmi più intelligenti.
Tuttavia, gestire grandi quantità di dati nell’apprendimento automatico è un problema complicato perché non puoi partizionare i dati in modo ingenuo. Una partizione ingenua equivale a scartare i dati di input ed eseguire calcoli locali che non sfruttano tutti i dati disponibili. In definitiva: l’apprendimento automatico ha bisogno di modi molto intelligenti per distribuire i suoi algoritmi.
- Il feedback degli utenti è solitamente completamente sbagliato
Le persone intelligenti consigliano di fare test di usabilità sul campo. Questo vale anche per qualunque interfaccia utente tu inserisca nel tuo prodotto di apprendimento automatico, ma quando si tratta di migliorare il cuore della tua tecnologia, il feedback degli utenti è virtualmente inutile se non addirittura dannoso se implementato.
Il problema principale è che, nell’apprendimento automatico, la maggior parte dei comportamenti buoni/corretti/attesi è purtroppo controintuitiva. Ad esempio, in Lokad, una lamentela frequente dei clienti è che forniamo previsioni piatte che sono percepite come errate. Tuttavia, queste previsioni piatte sono nel migliore interesse di quei clienti, perché risultano essere più accurate.
Pur avendo conoscenze sul filtro antispam, sono abbastanza sicuro che il 99% dei suggerimenti che propongo e invio ai responsabili di akismet sarebbe semplicemente spazzatura per loro, semplicemente perché la sfida nel filtro antispam non è come filtrare lo spam, ma come filtrare lo spam, senza bloccare le email legittime. E sì, le persone di Pfizer hanno il diritto di discutere via email dei composti a base di Sildenafil citrato senza che tutte le loro email vengano filtrate.
- Ma i dati degli utenti contengono la verità
I dati fittizi e gli scenari per lo più non hanno senso nell’apprendimento automatico. I dati reali risultano sorprendenti in molti modi inaspettati. Lavorando in questo campo da 10 anni ormai, ogni nuovo set di dati che ho analizzato è stato sorprendente in molti modi. È completamente inutile lavorare con dati inventati da te. Senza dati reali dei clienti a disposizione, non puoi fare nulla nell’apprendimento automatico.
Questo aspetto in particolare porta spesso al problema del pollo e dell’uovo nell’apprendimento automatico: se vuoi iniziare a ottimizzare la visualizzazione di pubblicità contestuali, hai bisogno di un gran numero di inserzionisti e editori. Tuttavia, senza un gran numero di inserzionisti e editori, non puoi perfezionare la tua tecnologia e, di conseguenza, non puoi convincere un gran numero di inserzionisti e editori a partecipare.
- Messa a punto 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, nell’apprendimento automatico, riscrivere da zero è spesso l’unico modo per salvare la tua azienda.
Verso la fine degli anni novanta, Altavista, il motore di ricerca leader, non si prese il tempo di riscrivere la propria tecnologia di ranking basandosi sulle idee matematiche folli relative alla diagonalizzazione su larga scala. Di conseguenza, sono stati sopraffatti da una piccola azienda (Google) guidata da un gruppo di persone inesperte.
La messa a punto e il miglioramento incrementale sono il cuore dell’ingegneria del software classica, e ciò vale anche per l’apprendimento automatico - nella maggior parte dei casi. Ottenere l’ennesimo percento di accuratezza si ottiene frequentemente ottimizzando e perfezionando finemente un algoritmo esistente, progettando innumerevoli meccanismi di reportistica ad hoc nel processo per ottenere approfondimenti sul comportamento dell’algoritmo.
Tuttavia, ogni nuovo percento di accuratezza in questo modo ti costa dieci volte più sforzi rispetto al precedente; e dopo un paio di mesi o anni la tua tecnologia resta bloccata in un vicolo cieco.
Ed è qui che entra in gioco la matematica fondamentale. La matematica è cruciale per saltare al prossimo stadio di prestazioni, quel tipo di salto in cui ottieni un miglioramento del 10% che sembrava addirittura impossibile con l’approccio precedente. Poi, provare nuove teorie è come giocare alla roulette: nella maggior parte dei casi, perdi, e la nuova teoria non porta alcun miglioramento aggiuntivo.
Alla fine, fare progressi nell’apprendimento automatico significa molto frequentemente provare approcci destinati a fallire con alta probabilità. Ma ogni tanto qualcosa funziona davvero e la tecnologia fa un balzo in avanti.