Apple CreateML proti Kaggle

Med nedavnim WWDC je Apple predstavil svoje najnovejše orodje, imenovano CreateML. Kot navdušenec nad ML-jem sem bil navdušen nad tem, kar sem videl na namenski seji (703), zato sem mislil, da bi bilo vredno raziskati, kako močan je v resnici.

1. Na kratko ustvariteML (lahko preskočite, če ste gledali predstavitev WWDC).

Create ML je nov okvir, zasnovan tako, da pomaga razvijalcem enostavno in hitro graditi modele strojnega učenja z uporabo Swift in Xcode. Zaenkrat lahko deluje s 3 vrstami podatkov: slikami, besedilom in tabelarnimi podatki. Delovni potek je zelo preprost, dostaviti morate samo podatke o vadbi, napišite nekaj vrstic kode in čarovnija se zgodi, majhen CoreML model je pripravljen za uporabo v vaši aplikaciji. Apple obljublja, da bo znatno skrajšal čas treninga, kar je v primeru 10.000 slik treba šteti v minutah (kot se vedno Apple izogiba zagotavljanju podrobnosti). Trening je tako hiter, ker (v primeru razvrščevalca slik) Apple uporablja Transfer Learning. Ne vemo, kaj je osnova Nevronske mreže, toda med predstavitvijo je bil Inception-v3 omenjen kot primer najsodobnejše rešitve za razvrščanje slik.

2. Demo predstavitev WWDC na kratko (lahko preskočite, če ste gledali predstavitev WWDC).

Med WWDC so predstavniki pokazali, kako enostavno lahko sestavimo različne modele, najprej je bil klasifikator slike, zgrajen z uporabo le nekaj vrstic kode:

Drugi primer je bil zelo podoben. Klasifikator besedila je odločil, ali je besedilo pozitivno ali negativno, kot v primeru slike je bilo dovolj samo nekaj vrstic kode, da ga usposobimo:

Kar se mene tiče, je bil najzanimivejši demo zadnji, ki je predstavil delo s tabelarnimi podatki. V tem primeru CreateML uporablja nov podatkovni format, imenovan MLDataTable, na prvi pogled je le ovoj za normalno matrico podatkov, na srečo imata vgrajena razčlenjevalnika CSV in JSON.

V primeru tabelarnih podatkov CreateML ponuja 2 poti: enostavna in nekoliko bolj izpopolnjena. Najprej si oglejte najpreprostejši način iskanja formule cene stanovanj, ki je videti skoraj enako kot oba prejšnja primera:

Težave s podatki lahko rešimo (odvisno od primera) z uporabo MLRegressorja za regresijske težave in MLClassifier za razvrstitev. Vendar to ni vse, kar je resnično zanimivo, medtem ko delate na tabelarnih podatkih, se lahko ročno odločite, kateri način razvrščanja / regresije se bo uporabil kot podporni par CreateML, ki se najpogosteje uporablja v industriji:

3. UstvariteML v resničnih življenjskih težavah

Demo aplikacije so vedno čim bolj preproste, omogočajo preprosto razumevanje in to je v redu. Vendar v primeru strojnega učenja dejstvo, da nekaj deluje s preprostim primerom, v resnici ne pomeni, da bo delovalo s bolj sofisticiranim. Ciljni uporabniki CreateML so razvijalci, ne strokovnjaki za ML ali podatkovni znanstveniki, zato sem se odločil, da se obnašam kot povprečen novinec ML, ne poglobljeno analizirajte podatkov, samo dajte sklope v CreateML in pustite, da naredijo čarovnijo. Odločil sem se, da bom uporabil Kaggle tekmovanja kot merilo, nato pa primerjal kakovost modela s tistim, kar so dosegli Kagglers, prav tako sem želel preveriti, kako hiter je CreateML. V številnih primerih je ključ do uspešnega modela razumevanje podatkov in predhodna obdelava podatkov, če bo razvijalci samo uvozil CSV in pognal MLRegressor in pričakoval visokokakovostne rezultate za prefinjene težave ... morda bo resnično razočaran nad učinkom. Zaradi tega sem se odločil, da bom izbral primere, ki so blizu resničnim življenjskim težavam, vendar niso zelo zapleteni, saj bi bilo brez predobdelave podatkov nesmiselno.

Moja konfiguracija Macbook Pro kot referenca:

Začel sem s preizkušanjem klasifikatorja slik, za testiranje sem uporabil razvrstitev rastlinskih sadik (https://www.kaggle.com/c/plant-seedlings-classification), katere cilj je določiti vrste sadike na sliki. Nabor podatkov je bistveno večji od tistega, predstavljenega na predstavitvenem računalniku, vsebuje več kot 4300 slik, kodo zaženem z uporabo le dveh vrstic kode, rezultat je viden spodaj:

Nad rezultatom sem bil res navdušen, trajalo je 5 minut, da je na tipičnem prenosniškem prenosniku treniral precej dober model z uporabo 1,7 GB podatkov o vadbi. Ali obstaja kakšen boljši način za izdelavo modela Proof of Concept in vključitev v delujočo aplikacijo za iOS / macOS za preverjanje ideje? Mislim, da ne. Apple, res si odlično opravil. Zanimivo je tudi, da CreateML samodejno ustvari nabor za preverjanje veljavnosti iz tistega, ki je priložen vadbi, zato razvijalcem ni treba ročno razdeliti teh podatkov, kar je majhen korak za poenostavitev postopka.

Ok, ne bodo vsi ustvarili aplikacije "Not Hotdog", zato si oglejmo še en zelo pogost primer strojnega učenja, "Tabelarični podatki" in regresijske / klasifikacijske težave. V tem primeru sem začel z "Kako začeti preživeti Titanic" (https://www.kaggle.com/c/titanic), cilj tega tekmovanja je ugotoviti, ali bo določen potnik preživel trk z ledeno goro na podlagi podatkov, kot so starost, spol , vrsta vozovnice, krova itd.

Prenesel sem datoteko CSV, ustvaril MLClassifier, pritisnil play in…

Ok, ne deluje, CreateML potrebuje popolnoma čiste podatke. To ni velika težava, z nekaj vrsticami Pythona lahko odstranim vrstice s praznimi stolpci, vendar zmanjša količino podatkov o vadbi iz 891 primerov na samo 183, vendar vsaj deluje. Med naslednjo vožnjo mi je xCode sporočil, da: "Feature \ Ticket \" ni vrste (numerični, niz, niz ali slovar). \ N ", zato sem spustil ta stolpec in končno dobil delujoč model:

Še enkrat sem navdušen nad rezultatom, podatki so bili razmeroma enostavni, vendar so blizu tistega, s čimer se lahko srečajo številni razvijalci v običajnih aplikacijah. CreateML deluje, je hiter in učinkovit.

Drugi poskus je bilo tekmovanje »Napoved prihodkov od restavracij« (https://www.kaggle.com/c/restaurant-revenue-prediction/data), kjer je cilj oceniti prihode restavracije v določenem letu na datum otvoritve, mesto, vrsta restavracije itd. Tako kot v primeru Titanika, sem pravkar prenesla podatke in zagnala igrišče:

V tem primeru se je CreateML odločil, da bo uporabil regresor Boosted Tree, zato je MSE še nižji od tistega, ki je pred 3 leti zmagal v konkurenci. Razlog za to je seveda lahko dejstvo, da so lestvice vodilnih ustvarjene na podlagi podatkov, ki niso javni, a kljub temu je CreateML lahko v nekaj sekundah zgradil zelo dober, verjetno celo primerljiv z zmagovalnim modelom. To je tisto, kar potrebuje večina razvijalcev.

4. Prednosti in slabosti CreateML

Prednosti:

  • trenutno je najlažji način izdelave ML modelov za iOS / macOS, zlasti za aplikacije Proof Of Concept ali tiste, ki delajo s sorazmerno preprostimi podatki
  • CreateML odpira svet ML za tisoče razvijalcev iOS / macOS
  • je zelo učinkovit in enostaven za uporabo

Slabosti:

  • zelo malo načinov za nastavitev in odpravljanje napak končnega modela
  • ni javnosti znano, kateri model se uporablja za razvrščanje slik
  • ni orodij za predobdelavo podatkov (toda to je očitno, da Apple niso ciljni podatki, temveč razvijalci programske opreme)

5. Moje mnenje

Zdi se, da je CreateML res odlično orodje, zlasti za razvijalce, ki sploh niso sodelovali s strojnim učenjem, je hitro, dokaj učinkovito in izjemno enostavno začeti. Če ste razvijalec iOS / macOS, ga samo poskusite.

6. Odprto vprašanje

Ali je problem velikih modelov ML za razvrščanje slik ravno prikrival dejstvo, da so vse uteži shranjene znotraj iOS / macOS in CreateML gradi model CoreML, ki vsebuje samo uteži za zadnjo, prekvalificirano plast (Inception-V3)?