Apple CreateML vs Kaggle

Sa panahon ng kamakailang WWDC Apple ay ipinakita ang kanilang pinakabagong tool na tinatawag na CreateML. Bilang isang mahilig sa ML ay talagang nabigla ako sa nakita ko sa nakalaang sesyon (703), kaya naisip ko na sulit na siyasatin kung gaano kalakas ito.

1. Lumikha angMoML ng isang maikling salita (maaari mong laktawan kung napanood mo ang pagtatanghal ng WWDC).

Lumikha ng ML ay isang bagong balangkas na idinisenyo upang matulungan ang mga developer ng madali at mabilis na bumuo ng mga modelo ng pag-aaral ng machine gamit ang Swift at Xcode. Tulad ng sa ngayon nagagawa nitong gumana sa 3 mga uri ng data: mga imahe, teksto at data ng tabular. Ang daloy ng trabaho ay talagang simple, kailangan mo lamang na maghatid ng set ng data ng pagsasanay, magsulat ng ilang mga linya ng code at nangyayari ang magic, ang maliit na modelo ng CoreML ay handa na magamit sa iyong app. Nangako ang Apple na makabuluhang bawasan ang oras ng pagsasanay, na kung sakaling 10,000 mga imahe ay dapat mabilang sa ilang minuto (tulad ng laging iniiwasan ng Apple ang pagbibigay ng mga detalye). Mabilis ang pagsasanay, dahil (sa kaso ng classifier ng imahe) Ginagamit ng Apple ang Transfer Learning. Hindi namin alam kung ano ang batayan ng Neural Network, ngunit sa panahon ng pagtatanghal Ang Pagsisimula-v3 ay binanggit bilang isang halimbawa ng estado ng art solution para sa pag-uuri ng imahe.

2. Ang pagtatanghal ng WWDC Demo sa isang maikling salita (maaari mong laktawan kung napanood mo ang pagtatanghal ng WWDC).

Sa panahon ng WWDC, ipinakita ng mga nagtatanghal kung gaano kadali kaming makapagtatayo ng iba't ibang mga modelo, una ay ang classifier ng imahe, na binuo gamit lamang ang mga linya ng code:

Ang pangalawang halimbawa ay halos magkatulad, ang Pag-aaral ng Textifier na nagpapasya kung positibo o negatibo ang teksto, tulad ng sa kaso ng imahe, tanging ang mga linya ng code ay sapat upang sanayin ito:

Tulad ng para sa akin, ang pinaka-kagiliw-giliw na demo ay ang huling isa, na nagtatanghal ng trabaho na may data ng tabular. Sa kasong ito ang Gumagamit ng Gumawa ng bagong data format, na tinatawag na MLDataTable, sa una ay tumingin lamang ito ng isang pambalot para sa normal na data matrix, sa kabutihang palad ay naka-built in sa CSV at JSON parser.

Sa kaso ng data ng tabular ay nag-aalok angMMMM ng 2 mga landas: madali ang isa at medyo mas sopistikado. Sa una ay tingnan ang pinakasimpleng paraan upang makahanap ng pormula ng presyo ng bahay, mukhang halos kapareho ito ng parehong mga nakaraang halimbawa:

Maaaring malutas ang mga problema sa data ng Tabular (depende sa kaso) gamit ang alinman sa MLRegressor para sa mga problema sa regression at MLClassifier para sa pag-uuri. Ngunit hindi iyon lahat ay talagang kawili-wili, habang nagtatrabaho sa data ng tabular, maaari mong manu-manong magpasya kung anong paraan ng pag-uuri / muling pagkakaugnay ang gagamitin, dahil ang suporta ng CouML na suportadong karaniwang ginagamit sa industriya:

3. Lumikha ngMM sa totoong mga problema sa buhay

Ang mga demo ng app ay laging simple hangga't maaari, ginagawang madali itong maunawaan at ok lang iyon. Gayunpaman sa kaso ng Pag-aaral ng Makina, ang katotohanan na ang isang bagay ay gumagana sa simpleng halimbawa, ay hindi talaga nagpapahiwatig na gagana ito sa isang mas sopistikadong. Ang mga gumagamit ng target na CreateML ay mga tagagawa, hindi mga eksperto sa ML o mga siyentipiko ng data, kaya't napagpasyahan kong kumilos tulad ng isang average na new new ML, huwag suriin ang data, ilagay lamang ang mga set sa CreateML at hayaan itong gawin ang mahika. Napagpasyahan kong gamitin ang mga kumpetisyon sa Kaggle bilang isang benchmark, at pagkatapos ay ihambing ang kalidad ng modelo sa nakamit ng Kaggler, nais ko ring suriin kung gaano kabilis ang CreateML. Sa maraming mga kaso, ang susi sa modelo ng sucessfull ay ang pag-unawa ng data at paghahanda, kung mai-import lamang ng developer ang CSV at tatakbo ang MLRegressor na inaasahan ang mataas na kalidad ng mga resulta para sa sopistikadong problema ... maaaring talagang bigo siya sa epekto. Dahil dito napagpasyahan kong pumili ng mga halimbawa, na malapit sa mga problema sa totoong buhay ngunit hindi masyadong kumplikado, dahil magiging walang kabuluhan ito nang walang preprocessing ng data.

Ang aking Macbook Pro config bilang isang sanggunian:

Nagsimula ako sa pagsubok sa Image Classifier, para sa pagsubok na ginamit ko ang "Pag-uuri ng Mga Binhi ng Mga Binhi" (https://www.kaggle.com/c/plant-seedlings-classification), na layunin ay upang matukoy ang mga species ng isang punla mula sa isang imahe. Ang Dataset ay higit na malaki kaysa sa ipinakita sa demo, naglalaman ito ng higit sa 4300 mga imahe, pinapatakbo ko ang code gamit ang 2 linya lamang ng code, ang resulta ay makikita sa ibaba:

Talagang humanga ako sa resulta, tumagal ng 5 minuto sa isang tipikal na laptop ng developer upang sanayin ang isang magandang magandang modelo, gamit ang 1.7GB ng data ng pagsasanay. Mayroon bang mas mahusay na paraan upang makabuo ng modelo ng Proof of Concept at ilagay sa gumaganang iOS / macOS app upang mapatunayan ang isang ideya? Hindi ko iniisip ito. Apple, gumawa ka ng isang mahusay na trabaho, talaga. Ang kapansin-pansin din na mapapansin, ay ang CreateML ay awtomatikong lumilikha ng pagpapatunay na itinakda mula sa isang ibinigay bilang isang pagsasanay, kaya hindi kailangang hatiin ng developer ang data na ito, isang maliit na hakbang upang gawing simple ang proseso.

Ok, hindi lahat ay gagawa ng app na "Hindi Hotdog", kaya tingnan natin ang isa pang pangkaraniwang kaso sa pag-aaral ng machine, "Tabular Data" at mga problema sa pag-urong / pag-uuri. Sa kasong ito nagsimula ako sa "Pagsisimula ng Titanic Survivals" (https://www.kaggle.com/c/titanic), ang layunin ng kumpetisyon na ito ay upang malaman kung ang partikular na pasahero ay makakaligtas sa banggaan ng iceberg batay sa data tulad ng edad, kasarian , uri ng tiket, kubyerta, atbp.

Nag-download ako ng CSV file, nilikha MLClassifier, pinindot na pag-play at ...

Ok, hindi ito gumagana, Kailangang ganap na linisin ng data ang CreateML. Iyon ay hindi isang malaking problema, maaari kong alisin ang mga hilera na walang laman na mga haligi gamit ang mga pares ng Python, gayunpaman na binabawasan ang dami ng data ng pagsasanay mula sa 891 mga halimbawa hanggang 183 lamang, ngunit hindi bababa sa gumagana ito. Sa susunod na pagtakbo ay ipinaalam sa akin ng xCode na: "Ang Feature \ 'Ticket \' ay hindi ng uri (numero, string, array, o diksyunaryo). \ N" kaya binaba ko ang haligi na ito at sa wakas ay nakuha ko ang gumaganang modelo:

Muli, napahanga ako sa resulta, medyo madali ang data, ngunit malapit ito sa kung ano ang maaaring harapin ng mga developer sa karaniwang mga apps. Gumagana ang CreateML, mabilis at mahusay ito.

Pangalawang pagtatangka ay ang kumpetisyon ng "Revenue Prvenue ng Restaurant" (https://www.kaggle.com/c/restaurant-revenue-prediction/data), kung saan ang layunin ay upang matantya ang kita ng restawran sa isang naibigay na taon, gamit ang petsa ng pagbubukas, lungsod, uri ng restawran atbp Pareho sa kaso ng Titanic, na-download ko lang ang data at magpatakbo ng palaruan:

Sa kasong ito, nagpasya ang Gumawa na gumamit ng Boosted Tree Regressor at bilang isang resulta ay mas mababa ang MSE kaysa sa kung saan nanalo ng kumpetisyon 3 taon na ang nakalilipas. Siyempre ang dahilan para sa iyon ay maaaring ang katunayan na ang mga leaderboard ay nilikha batay sa data na hindi pampubliko, ngunit gayon pa man, ang Gumawa ay makagawa ng napakahusay, marahil kahit na maihahambing sa nanalong modelo sa ilang segundo. Ito ang kailangan ng karamihan sa mga nag-develop.

4. Mga kalamangan at kahinaan ng LumikhaML

Mga kalamangan:

  • sa kasalukuyan ito ang pinakamadaling paraan upang makabuo ng mga modelo ng ML para sa iOS / macOS, lalo na para sa Proof Of Concept apps, o sa mga nagtatrabaho sa medyo simpleng data
  • Binubuksan ng CreateML ang mundo ng ML sa libu-libong mga developer ng iOS / macOS
  • ay napaka mabisa at madaling gamitin

Cons:

  • napakakaunting mga paraan upang tune at debug panghuling modelo
  • walang kaalaman sa publiko kung anong modelo ang ginamit upang maiuri ang mga imahe
  • walang mga tool sa paghahanda ng data (ngunit malinaw iyon, ang target ng Apple ay hindi mga siyentipiko ng data, ngunit ang mga developer ng software)

5. Ang aking opinyon

Mukhang talagang mahusay na tool ang CreateML, lalo na para sa mga nag-develop, na hindi gumana sa Pag-aaral ng Machine, ito ay mabilis, medyo mahusay at napakadaling magsimula. Kung ikaw ay isang developer ng iOS / macOS, subukang subukan lamang ito.

6. Buksan ang tanong

Ang problema ba ng mga malalaking modelo ng ML para sa pag-uuri ng imahe na nakatago lamang sa pamamagitan ng katotohanan na ang lahat ng mga timbang ay nakaimbak sa loob ng iOS / macOS at nagtatayo ang CreateML ng modelo ng CoreML na naglalaman lamang ng mga timbang para sa huling, retrained layer ng (Pagsisimula-V3)?