Apple CreateML vs Kaggle

Hiljutise WWDC ajal tutvustas Apple oma uusimat tööriista nimega CreateML. ML-i entusiastina avaldas mulle spetsiaalset seanssi (703) nähtust muljet, seega arvasin, et tasub uurida, kui võimas see tegelikult on.

1. Looge LühidaltML (kui WWDC esitlust vaatasite, võite selle vahele jätta).

Loo ML on uus raamistik, mis on loodud selleks, et aidata arendajatel hõlpsalt ja kiiresti masinõppe mudeleid Swifti ja Xcode'i abil luua. Praeguseks on see võimeline töötama 3 tüüpi andmetega: piltide, teksti ja tabelitega. Töövoog on tõesti lihtne, peate lihtsalt edastama treeningandmete komplekti, kirjutama paar rida koode ja maagia juhtub, väike CoreML-mudel on teie rakenduses kasutamiseks valmis. Apple lubab oluliselt vähendada koolituse aega, mis 10 000 pildi puhul tuleks arvestada minutitega (nagu Apple väldib alati detailide esitamist). Koolitus on nii kiire, sest (pildiklassifikaatori korral) kasutab Apple Transfer Learning'i. Me ei tea, mis närvivõrgustik põhineb, kuid esitluse ajal mainiti pilti klassifitseerimise nüüdisaegse lahenduse näitena Inception-v3.

2. WWDC demoesitlus lühidalt (võite selle vahele jätta, kui vaatasite WWDC-esitlust).

WWDC ajal näitasid saatejuhid, kui hõlpsalt saame erinevaid mudeleid üles ehitada. Esiteks oli piltide klassifikaator, mis ehitati ainult paar koodirea abil:

Teine näide oli väga sarnane, tekstiklassifikaator otsustas, kas tekst on positiivne või negatiivne, nagu pildi puhul, selle treenimiseks piisas vaid paarist koodiridast:

Minu jaoks oli kõige huvitavam demo viimane, tutvustades tööd tabeliandmetega. Sel juhul kasutab CreateML uut andmevormingut nimega MLDataTable. Esmapilgul on see lihtsalt tavalise andmemaatriksi ümbris, õnneks on sisseehitatud CSV ja JSON-parser.

Tabeliandmete korral pakub CreateML kahte teed: lihtne ja natuke keerukam. Alguses uurige lihtsamat viisi majahinna valemi leidmiseks, see näeb välja peaaegu sama kui mõlemad eelmised näited:

Tabeliandmete probleemid võib lahendada (olenevalt juhtumist), kasutades regressiooniprobleemide jaoks kas MLRegressor ja klassifitseerimiseks MLClassifier. Kuid see pole veel kõik, mis tegelikult huvitav, tabeliandmete kallal töötades saate käsitsi otsustada, millist klassifitseerimise / regressiooni meetodit kasutatakse, kuna tööstuses kõige sagedamini kasutatav CreateML-i tugipaar:

3. LoogeML tegeliku elu probleemides

Demorakendused on alati võimalikult lihtsad, see muudab need hõlpsasti arusaadavaks ja see on ok. Masinõppe puhul ei tähenda see, et midagi töötab lihtsa näitega, tegelikult seda, et see toimiks keerukamaga. CreateML-i sihtkasutajad on arendajad, mitte ML-i eksperdid ega andmeteadlased, nii et otsustasin käituda nagu keskmine ML-i algaja, ärge analüüsige andmeid sügavuti, pange lihtsalt komplektid CreateML-i ja laske sellel võluda. Otsustasin kasutada võrdlusalusena Kaggle võistlusi ja võrrelda seejärel mudeli kvaliteeti sellega, mida Kagglers saavutas, samuti tahtsin kontrollida, kui kiire on CreateML. Paljudel juhtudel on eduka mudeli võtmeks andmete mõistmine ja eeltöötlus, kui arendaja impordib lihtsalt CSV-faili ja käivitab MLRegressori, oodates keeruka probleemi jaoks kvaliteetseid tulemusi ... võib efekt olla tõesti pettunud. Seetõttu otsustasin valida näited, mis on küll reaalse elu probleemidele lähedased, kuid pole eriti keerukad, kuna see oleks andmete eeltöötlemiseta mõttetu.

Minu MacBook Pro konfiguratsioon viitena:

Alustasin pildiklassifikaatori testimisega, testimiseks kasutasin “Taimede seemikute klassifikatsiooni” (https://www.kaggle.com/c/plant-seedlings-classification), mille eesmärk on pildi järgi seemiku liik kindlaks teha. Andmekomplekt on märkimisväärselt suurem kui demos esitatud, see sisaldab üle 4300 pildi, ma käitan koodi ainult 2 koodirida kasutades, tulemus on nähtav allpool:

Mulle jättis tulemus muljetavaldava mulje, päris hea mudeli treenimiseks kulus tavalisel arendaja sülearvutil 5 minutit, kasutades 1,7 GB treeningandmeid. Kas on parem viis kontseptsiooni tõestamise mudeli ehitamiseks ja töötava iOS / macOS-i rakenduse kasutuselevõtmiseks idee kontrollimiseks? Ma ei usu. Apple, sa tegid tõesti suurepärast tööd. Huvitav on ka see, et CreateML loob koolitusel pakutavast valideerimise komplekti automaatselt, nii et arendaja ei pea neid andmeid käsitsi jagama - see on üks väike samm protsessi lihtsustamiseks.

Ok, mitte kõik ei kavatse ehitada rakendust “Ei Hotdog”, nii et vaatame veel ühte masinaõppes väga tavalist juhtumit “Tabeliandmed” ja regressiooni / klassifitseerimise probleeme. Sel juhul alustasin teemast “Titanicu ellujäämise alustamine” (https://www.kaggle.com/c/titanic), selle võistluse eesmärk on kindlaks teha, kas konkreetne reisija jääb jäämäega kokkupõrkele selliste andmete põhjal nagu vanus, sugu , pileti tüüp, tekk jne

Laadisin alla CSV-faili, lõin MLClassifikaatori, vajutasin esitust ja…

Ok, see ei tööta. CreateML vajab täiesti puhtaid andmeid. See pole suur probleem, ma saan tühjade veergudega ridu eemaldada, kasutades paari Pythoni rida, mis aga vähendab treeningandmete kogust 891 näitest vaid 183-ni, kuid vähemalt see töötab. Järgmise käigu ajal teatas xCode mulle, et: funktsioon \ "Pilet \" ei ole tüüpi (numbriline, string, massiiv või sõnastik). \ N ", nii et ma lasin selle veeru maha ja sain lõpuks töötava mudeli:

Taas on mulle tulemusega muljet avaldatud, andmed olid suhteliselt lihtsad, kuid see on lähedal sellele, mida paljud arendajad võivad tüüpilistes rakendustes silmitsi seista. CreateML töötab, see on kiire ja tõhus.

Teine katse oli konkurss “Restoranide tulude prognoosimine” (https://www.kaggle.com/c/restaurant-revenue-prediction/data), mille eesmärk on hinnata restorani tulusid antud aastal, kasutades avamiskuupäeva, linn, restorani tüüp jne. Nagu Titanicu puhul, laadisin lihtsalt andmed alla ja käisin mänguväljakut:

Sel juhul otsustas CreateML kasutada võimendatud puu regressorit ja selle tulemusel on MSE isegi madalam kui see, mis 3 aastat tagasi konkursi võitis. Muidugi võib selle põhjuseks olla asjaolu, et edetabelid luuakse andmete põhjal, mis pole avalikud, kuid siiski suutis CreateML ehitada väga head, arvatavasti isegi võrreldava võidumudeliga mõne sekundi jooksul. Just seda vajab enamik arendajaid.

4. CreateML-i plussid ja miinused

Plussid:

  • praegu on see lihtsaim viis ML-i mudelite loomiseks iOS-i / MacOS-i jaoks, eriti Proof Of Concept'i rakenduste jaoks või neile, kes töötavad suhteliselt lihtsate andmetega
  • CreateML avab ML-i maailma tuhandetele iOS / macOS arendajatele
  • on väga tõhus ja hõlpsasti kasutatav

Miinused:

  • väga vähe võimalusi lõpliku mudeli häälestamiseks ja silumiseks
  • puudub avalik teadmine, millist mudelit piltide klassifitseerimiseks kasutatakse
  • puuduvad andmete eeltöötlustööriistad (kuid see on ilmne, et Apple'i sihtmärk pole mitte andmeteadlased, vaid tarkvaraarendajad)

5. Minu arvamus

Paistab, et CreateML on tõesti suurepärane tööriist, eriti arendajatele, kes ei töötanud üldse masinõppega, see on kiire, üsna tõhus ja äärmiselt lihtne käivitada. Kui olete iOS / macOS arendaja, proovige seda lihtsalt proovida.

6. Lahtine küsimus

Kas suurte ML-i mudelite probleem piltide klassifitseerimiseks on lihtsalt varjatud tõsiasjaga, et kõiki kaalu hoitakse iOS / macOS-is ja CreateML ehitab CoreML-mudeli, mis sisaldab ainult viimase (ümberõpetatud) kihi (Inception-V3) kaalu?