Apple CreateML vs Kaggle

Durante il recente WWDC, Apple ha presentato il suo nuovo strumento chiamato CreateML. Come appassionato di ML sono rimasto davvero colpito da ciò che ho visto in una sessione dedicata (703), quindi ho pensato che valesse la pena indagare su quanto sia davvero potente.

1. CreateML in breve (puoi saltare se hai guardato la presentazione del WWDC).

Crea ML è un nuovo framework progettato per aiutare gli sviluppatori a creare facilmente e rapidamente modelli di machine learning utilizzando Swift e Xcode. Per ora è in grado di lavorare con 3 tipi di dati: immagini, testo e dati tabulari. Il flusso di lavoro è davvero semplice, devi solo fornire una serie di dati di allenamento, scrivere poche righe di codice e succede la magia, il piccolo modello CoreML è pronto per essere utilizzato nella tua app. Apple promette di ridurre significativamente i tempi di allenamento, che in caso di 10.000 immagini dovrebbero essere contate in pochi minuti (come sempre Apple evita di fornire dettagli). La formazione è così veloce, perché (nel caso del classificatore di immagini) Apple utilizza Transfer Learning. Non sappiamo quale sia la rete neurale, ma durante la presentazione Inception-v3 è stato menzionato come esempio di soluzione all'avanguardia per la classificazione delle immagini.

2. Presentazione della demo del WWDC in breve (puoi saltare se hai guardato la presentazione del WWDC).

Durante il WWDC, i presentatori hanno mostrato quanto facilmente possiamo costruire diversi modelli, prima era il classificatore di immagini, costruito usando solo un paio di righe di codice:

Il secondo esempio è stato molto simile, il Classificatore di testo ha deciso se il testo è positivo o negativo, come nel caso dell'immagine, erano sufficienti solo poche righe di codice per addestrarlo:

Per quanto mi riguarda, la demo più interessante è stata l'ultima, presentando lavoro con dati tabulari. In questo caso, CreateML sta utilizzando un nuovo formato di dati, chiamato MLDataTable, a prima vista è solo un wrapper per la normale matrice di dati, per fortuna ha un parser CSV e JSON incorporato.

In caso di dati tabulari, CreateML offre 2 percorsi: uno semplice e un po 'più sofisticato. All'inizio dai un'occhiata al modo più semplice per trovare la formula del prezzo della casa, sembra quasi la stessa di entrambi gli esempi precedenti:

Problemi di dati tabulari potrebbero essere risolti (a seconda del caso) utilizzando MLRegressor per problemi di regressione e MLClassifier per la classificazione. Ma non è tutto ciò che è veramente interessante, mentre si lavora su dati tabulari, è possibile decidere manualmente quale metodo di classificazione / regressione verrà utilizzato, in quanto la coppia di supporto CreateML più comunemente utilizzata nel settore:

3. CreateML nei problemi della vita reale

Le app demo sono sempre il più semplice possibile, le rende facili da capire e va bene. Tuttavia, nel caso di Machine Learning, il fatto che qualcosa stia funzionando con un semplice esempio, non implica davvero che funzionerà con uno più sofisticato. Gli utenti target di CreateML sono sviluppatori, non esperti di ML o data scientist, quindi ho deciso di comportarmi come un principiante medio di ML, non analizzare a fondo i dati, basta inserire i set in CreateML e lasciarlo fare la magia. Ho deciso di utilizzare le competizioni Kaggle come punto di riferimento e quindi confrontare la qualità del modello con ciò che Kagglers ha raggiunto, volevo anche verificare la velocità di CreateML. In molti casi, la chiave del modello di successo è la comprensione e la preelaborazione dei dati, se lo sviluppatore importerà semplicemente CSV ed eseguirà MLRegressor aspettandosi risultati di alta qualità per problemi sofisticati ... potrebbe essere davvero deluso dall'effetto. Per questo motivo ho deciso di scegliere degli esempi, che sono vicini ai problemi della vita reale ma non molto complessi, poiché ciò sarebbe inutile senza la preelaborazione dei dati.

La mia configurazione di Macbook Pro come riferimento:

Ho iniziato con il test del Classificatore di immagini, per testare ho usato la "Classificazione delle piantine di piante" (https://www.kaggle.com/c/plant-seedlings-classification), il cui obiettivo è determinare la specie di una piantina da un'immagine. Il set di dati è significativamente più grande di quello presentato nella demo, contiene oltre 4300 immagini, eseguo il codice usando solo 2 righe di codice, il risultato è visibile sotto:

Sono stato davvero colpito dal risultato, ci sono voluti 5 minuti su un tipico laptop sviluppatore per addestrare un modello abbastanza buono, utilizzando 1,7 GB di dati di allenamento. Esiste un modo migliore per creare il modello Proof of Concept e metterlo in funzione nell'app iOS / macOS per verificare un'idea? Io non la penso così. Apple, hai fatto davvero un ottimo lavoro. Inoltre, è interessante notare che CreateML sta creando automaticamente un set di validazione da quello fornito come formazione, quindi lo sviluppatore non deve dividere questi dati manualmente, un piccolo passo per semplificare il processo.

Ok, non tutti costruiranno l'app "Non Hot Dog", quindi diamo un'occhiata a un altro caso molto comune di apprendimento automatico, "Dati tabulari" e problemi di regressione / classificazione. In questo caso ho iniziato con "Getting Started Titanic Survivals" (https://www.kaggle.com/c/titanic), l'obiettivo di questa competizione è determinare se un particolare passeggero sopravviverà alla collisione con un iceberg in base a dati come età, sesso , tipo di biglietto, mazzo, ecc.

Ho scaricato il file CSV, creato MLClassifier, premuto play e ...

Ok, non funziona, CreateML necessita di dati perfettamente puliti. Questo non è un grosso problema, posso rimuovere le righe con colonne vuote usando un paio di righe di Python, tuttavia ciò riduce la quantità di dati di allenamento da 891 esempi a solo 183, ma almeno funziona. Durante la prossima esecuzione xCode mi ha informato che: "Feature \" Ticket \ "non è di tipo (numerico, stringa, array o dizionario). \ N", quindi ho lasciato cadere questa colonna e finalmente ho ottenuto il modello funzionante:

Ancora una volta, sono rimasto impressionato dal risultato, i dati sono stati relativamente facili, ma si avvicinano a ciò che molti sviluppatori potrebbero dover affrontare nelle app tipiche. CreateML funziona, è veloce ed efficiente.

Il secondo tentativo è stato il concorso "Restaurant Revenue Prediction" (https://www.kaggle.com/c/restaurant-revenue-prediction/data), in cui l'obiettivo è stimare le entrate del ristorante in un determinato anno, utilizzando la data di apertura, città, tipo di ristorante ecc. Come nel caso di Titanic, ho appena scaricato i dati ed eseguito il parco giochi:

In questo caso, CreateML ha deciso di utilizzare Boosted Tree Regressor e, di conseguenza, MSE è persino inferiore a quello che ha vinto la competizione 3 anni fa. Ovviamente la ragione potrebbe essere il fatto che le classifiche sono create sulla base di dati che non sono pubblici, ma CreateML è stato in grado di costruire molto bene, probabilmente persino comparabile con il modello vincente in un paio di secondi. Questo è ciò di cui la maggior parte degli sviluppatori ha bisogno.

4. Pro e contro di CreateML

Professionisti:

  • al momento è il modo più semplice per creare modelli ML per iOS / macOS, in particolare per le app Proof Of Concept o per chi lavora con dati relativamente semplici
  • CreateML apre il mondo ML a migliaia di sviluppatori iOS / macOS
  • è molto efficiente e facile da usare

Contro:

  • pochissimi modi per ottimizzare ed eseguire il debug del modello finale
  • nessuna conoscenza pubblica quale modello viene utilizzato per classificare le immagini
  • nessuno strumento di preelaborazione dei dati (ma questo è ovvio, il target Apple non è data scientist, ma sviluppatori di software)

5. La mia opinione

Sembra che CreateML sia davvero un ottimo strumento, soprattutto per gli sviluppatori, che non hanno funzionato affatto con Machine Learning, è veloce, abbastanza efficiente ed estremamente facile da iniziare. Se sei uno sviluppatore iOS / macOS, provalo.

6. Domanda aperta

Il problema dei grandi modelli ML per la classificazione delle immagini è solo nascosto dal fatto che tutti i pesi sono archiviati in iOS / macOS e CreateML costruisce il modello CoreML contenente solo pesi per l'ultimo strato riqualificato di (Inception-V3)?