„Apple CreateML vs Kaggle“

Neseniai vykusiame WWDC „Apple“ pristatė savo naujausią įrankį pavadinimu „CreateML“. Kaip ML entuziastas buvau tikrai sužavėtas tuo, ką mačiau tam skirtoje sesijoje (703), todėl maniau, kad vertėtų ištirti, koks jis iš tikrųjų galingas.

1. SukurkiteMLML trumpai (galite praleisti, jei žiūrėjote WWDC pristatymą).

Sukurti ML yra nauja sistema, skirta padėti kūrėjams lengvai ir greitai sukurti mašinų mokymosi modelius naudojant „Swift“ ir „Xcode“. Šiuo metu jis gali dirbti su 3 tipų duomenimis: vaizdais, tekstu ir lentelių duomenimis. Darbo eiga yra tikrai paprasta, jums tereikia pateikti mokymo duomenų rinkinį, parašyti kelias kodo eilutes ir įvyksta magija, mažas „CoreML“ modelis yra paruoštas naudoti jūsų programoje. „Apple“ žada žymiai sutrumpinti mokymo laiką, kuris 10 000 vaizdų turėtų būti skaičiuojamas minutėmis (kaip visada „Apple“ vengia pateikti detales). Mokymai vyksta taip greitai, nes (atvaizdų klasifikatoriaus atveju) „Apple“ naudoja „Transfer Learning“. Nežinome, kas yra neuroninis tinklas, tačiau pristatymo metu „Inception-v3“ buvo paminėta kaip moderniausio vaizdo klasifikavimo sprendimo pavyzdys.

2. WWDC demonstracinis pristatymas trumpai (galite praleisti, jei žiūrėjote WWDC pristatymą).

WWDC metu pranešėjai parodė, kaip lengvai galime sukurti įvairius modelius, pirmiausia buvo vaizdų klasifikatorius, sukurtas naudojant tik kelias kodo eilutes:

Antrasis pavyzdys buvo labai panašus. Teksto klasifikatorius nusprendžia, ar tekstas teigiamas, ar neigiamas, kaip ir paveikslėlyje, norint jį išmokyti, pakako tik kelių kodo eilučių:

Kalbant apie mane, įdomiausias demonstracinis demonstravimas buvo paskutinis, pristatant darbą su lentelių duomenimis. Šiuo atveju „CreateML“ naudoja naują duomenų formatą, vadinamą „MLDataTable“. Iš pradžių atrodo, kad tai yra tik įprastos duomenų matricos aplankas, laimei, įmontuota CSV ir JSON analizatoriai.

Lentelių duomenų atveju „CreateML“ siūlo 2 kelius: lengvą ir šiek tiek sudėtingesnį. Iš pradžių pažvelkite į paprasčiausią būdo, kaip surasti būsto kainą, formulę, ji atrodo beveik tokia pati kaip abu ankstesni pavyzdžiai:

Lentelių duomenų problemos gali būti išspręstos (atsižvelgiant į atvejį), naudojant MLRegressor regresijos problemoms ir MLClassifier klasifikacijai. Tačiau tai dar ne viskas, kas išties įdomu. Dirbdami su lentelių duomenimis galite rankiniu būdu nuspręsti, koks klasifikavimo / regresijos metodas bus naudojamas, nes dažniausiai pramonėje naudojama „CreateML“ palaikymo pora:

3. SukurkiteML realiojo gyvenimo problemose

Demonstracinės programos visada yra kuo paprastesnės, jas lengva suprasti ir viskas gerai. Tačiau mašininio mokymosi atveju faktas, kad kažkas veikia su paprastu pavyzdžiu, dar nereiškia, kad jis veiks su sudėtingesniu. „CreateML“ tiksliniai vartotojai yra kūrėjai, o ne ML ekspertai ar duomenų mokslininkai, todėl nusprendžiau elgtis kaip vidutinis ML naujokas, ne giliai analizuoti duomenų, tiesiog sudėti rinkinius į „CreateML“ ir leisti tai padaryti stebuklingai. Aš nusprendžiau naudoti „Kaggle“ varžybas kaip etaloną ir palyginti modelio kokybę su tuo, ką pasiekė „Kagglers“, taip pat norėjau patikrinti, ar spartus yra „CreateML“. Daugeliu atvejų sėkmingo modelio raktas yra duomenų supratimas ir išankstinis apdorojimas, jei kūrėjas tiesiog importuos CSV ir paleis „MLRegressor“, tikėdamasis aukštos kokybės rezultatų dėl sudėtingos problemos ... jis gali būti tikrai nusivylęs efektu. Todėl nusprendžiau pasirinkti pavyzdžius, kurie yra artimi realios gyvenimo problemoms, bet nėra labai sudėtingi, nes be išankstinio duomenų apdorojimo tai būtų beprasmiška.

Mano „MacBook Pro“ konfigūracija kaip nuoroda:

Pradėjau bandydamas vaizdų klasifikatorių. Bandymui naudojau „Augalų sodinukų klasifikaciją“ (https://www.kaggle.com/c/plant-seedlings-classification), kurios tikslas yra nustatyti daigai rūšis pagal atvaizdą. Duomenų rinkinys yra žymiai didesnis nei pateiktas demonstracijoje, jame yra daugiau nei 4300 vaizdų, aš paleidžiu kodą naudodamas tik 2 kodo eilutes, rezultatas matomas žemiau:

Mane tikrai sužavėjo rezultatas. Tipiškam kūrėjo nešiojamajam kompiuteriui prireikė 5 minučių, kad būtų galima išmokyti gana gerą modelį, naudojant 1,7 GB mokymo duomenis. Ar yra koks nors geresnis būdas sukurti „Proof of Concept“ modelį ir įdiegti į veikiančią „iOS“ / „MacOS“ programą norint patikrinti idėją? Aš taip nemanau. Apple, tu tikrai gerai padarei. Taip pat įdomu pastebėti, kad „CreateML“ automatiškai sukuria patvirtinimo rinkinį iš pateikto kaip mokymas, todėl kūrėjui nereikia šių duomenų dalinti rankiniu būdu - tai vienas mažas žingsnis proceso supaprastinimui.

Gerai, ne visi ketina kurti „Not Hotdog“ programą, todėl pažvelkime į dar vieną labai įprastą mašininio mokymosi atvejį - „Lentelių duomenys“ ir regresijos / klasifikavimo problemas. Šiuo atveju aš pradėjau nuo „Titaniko išgyvenimo pradžios“ (https://www.kaggle.com/c/titanic), šio konkurso tikslas yra nustatyti, ar konkretus keleivis išgyvens susidūrimą su ledkalniu, remiantis tokiais duomenimis kaip amžius, lytis , bilieto rūšis, denis ir kt.

Aš atsisiunčiau CSV failą, sukūriau MLClassifier, paspaudžiau atkūrimą ir…

Gerai, kad jis neveikia, „CreateML“ reikia visiškai švarių duomenų. Tai nėra didelė problema, aš galiu pašalinti eilutes su tuščiais stulpeliais, naudodamas kelias Python eilutes, tačiau tai sumažina mokymo duomenų kiekį nuo 891 pavyzdžių iki tik 183, bet bent jau veikia. Kito bėgimo metu „xCode“ informavo mane, kad: „Ypatybės“ bilietas nėra tipo (skaitinis, eilutė, masyvo ar žodyno). \ N “, todėl numečiau šį stulpelį ir pagaliau gavau darbinį modelį:

Dar kartą esu sužavėtas rezultatu, duomenys buvo palyginti nesunkūs, tačiau tai artima tam, su kuo daugeliui kūrėjų gali susidurti įprastose programose. „CreateML“ veikia greitai, efektyviai.

Antrasis bandymas buvo konkursas „Restorano pajamų prognozavimas“ (https://www.kaggle.com/c/restaurant-revenue-prediction/data), kurio tikslas yra įvertinti restorano pajamas konkrečiais metais, naudojant atidarymo datą, miestas, restorano tipas ir pan. Tą patį, kaip ir „Titaniko“ atveju, aš tiesiog atsisiunčiau duomenis ir paleidžiu žaidimų aikštelę:

Šiuo atveju „CreateML“ nusprendė naudoti „Boosted Tree Regressor“ ir dėl to MSE yra dar mažesnė nei ta, kuri laimėjo konkursą prieš 3 metus. Žinoma, to priežastis gali būti tai, kad lyderių lentelės yra kuriamos remiantis duomenimis, kurie nėra vieši, tačiau vis tiek „CreateML“ sugebėjo sukurti labai gerą, tikriausiai net palyginamą su laimėtu modeliu per kelias sekundes. Būtent to reikia daugumai kūrėjų.

4. „CreateML“ privalumai ir trūkumai

Argumentai už:

  • šiuo metu tai lengviausias būdas sukurti ML modelius „iOS“ / „MacOS“, ypač „Proof Of Concept“ programoms arba tiems, kurie dirba su gana paprastais duomenimis
  • „CreateML“ atveria ML pasaulį tūkstančiams „iOS“ / „MacOS“ kūrėjų
  • yra labai efektyvus ir lengvai naudojamas

Minusai:

  • labai nedaug būdų, kaip suderinti ir suderinti galutinį modelį
  • nėra viešų žinių, koks modelis naudojamas vaizdams klasifikuoti
  • jokių duomenų išankstinio apdorojimo įrankių (tačiau akivaizdu, kad „Apple“ tikslą nustato ne duomenų mokslininkai, o programinės įrangos kūrėjai)

5. Mano nuomonė

Panašu, kad „CreateML“ yra puikus įrankis, ypač kūrėjams, kurie iš viso neveikė su mašininiu mokymu, jis yra greitas, gana efektyvus ir labai lengvai pradedamas. Jei esate „iOS“ / „MacOS“ kūrėjas, tiesiog pamėginkite.

6. Atviras klausimas

Ar didelių ML modelių vaizdo klasifikavimo problemą slepia tik tai, kad visi svoriai yra kaupiami „iOS“ / „MacOS“ ir „CreateML“ sukuria „CoreML“ modelį, kuriame yra tik paskutinio, permokyto („Inception-V3“) sluoksnio svoriai?