Apple CreateML супраць Kaggle

Падчас нядаўняй WWDC Apple прадставіла свой найноўшы інструмент пад назвай CreateML. Як энтузіяст ML, я быў вельмі ўражаны тым, што я бачыў на спецыяльнай сесіі (703), таму я падумаў, што варта даследаваць, наколькі ён на самай справе.

1. СтварыцеML у двух словах (вы можаце прапусціць, калі вы паглядзелі прэзентацыю WWDC).

Стварэнне ML - гэта новая аснова, распрацаваная з мэтай дапамагчы распрацоўшчыкам лёгка і хутка будаваць мадэлі машыннага навучання з выкарыстаннем Swift і Xcode. На сённяшні дзень ён здольны працаваць з 3 тыпамі дадзеных: малюнкамі, тэкставымі і таблічнымі дадзенымі. Працэс працы сапраўды просты, трэба проста даставіць набор дадзеных аб навучанні, напісаць некалькі радкоў кода і магіі здарыцца, маленькая мадэль CoreML гатовая да выкарыстання ў вашым дадатку. Apple абяцае значна скараціць час трэніровак, што ў выпадку 10 000 малюнкаў трэба палічыць за хвіліны (як заўсёды Apple пазбягае прадастаўлення падрабязнасцей). Навучанне ідзе настолькі хутка, таму што (у выпадку класіфікатара малюнкаў) Apple выкарыстоўвае Transfer Learning. Мы не ведаем, што такое нейронавая сетка, але падчас прэзентацыі Inception-v3 згадвалася як прыклад сучаснага рашэння для класіфікацыі малюнкаў.

2. Дэманстрацыя WWDC у двух словах (вы можаце прапусціць, калі вы паглядзелі прэзентацыю WWDC).

Падчас WWDC, вядучыя паказалі, як лёгка мы можам будаваць розныя мадэлі, спачатку быў класіфікатар малюнкаў, пабудаваны з дапамогай некалькіх радкоў кода:

Другі прыклад быў вельмі падобны: Text Classifier вырашыў, ці з'яўляецца тэкст станоўчым ці адмоўным, як і ў выпадку выявы, для яго навучання было дастаткова некалькіх радкоў кода:

Па мне, самая цікавая дэма была апошняй, якая прадставіла працу з таблічнымі дадзенымі. У гэтым выпадку CreateML выкарыстоўвае новы фармат дадзеных, званы MLDataTable, на першы погляд гэта проста абгортка для звычайнай матрыцы дадзеных, на шчасце, ёсць убудаваны аналізатар CSV і JSON.

У выпадку таблічных дадзеных CreateML прапануе 2 шляху: лёгкі і крыху больш складаны. Спачатку паглядзіце на самы просты спосаб знайсці формулу коштаў на жыллё, яна выглядае амаль гэтак жа, як і ў папярэдніх прыкладах:

Таблічныя праблемы з дадзенымі могуць быць вырашаны (у залежнасці ад выпадку), выкарыстоўваючы альбо MLRegressor для праблем рэгрэсіі, і MLClassifier для класіфікацыі. Але гэта не ўсё, што сапраўды цікава, працуючы над таблічнымі дадзенымі, вы можаце ўручную вызначыць, які метад класіфікацыі / рэгрэсіі будзе выкарыстоўвацца ў якасці пары падтрымкі CreateML, якая найбольш часта выкарыстоўваецца ў прамысловасці:

3. СтварэннеML у праблемах рэальнага жыцця

Дэманстрацыйныя прыкладанні заўсёды максімальна простыя, іх лёгка зразумець, і гэта нармальна. Аднак у выпадку машыннага навучання факт, што нешта працуе на простым прыкладзе, на самай справе не азначае, што ён будзе працаваць з больш дасканалым. Мэтавыя карыстальнікі CreateML - гэта распрацоўшчыкі, а не эксперты па ML і навукоўцы дадзеных, таму я вырашыў паводзіць сябе як звычайны пачатковец ML, не трэба глыбока аналізаваць дадзеныя, проста ўкладвайце наборы ў CreateML і дазваляйце ім рабіць магію. Я вырашыў выкарыстоўваць спаборніцтвы Kaggle як арыенцір, а потым параўнаць якасць мадэлі з тым, што дасягнулі Kagglers, я таксама хацеў праверыць, наколькі хутка CreateML. У многіх выпадках ключавым для паспяховай мадэлі з'яўляецца разуменне і папярэдняя апрацоўка дадзеных, калі распрацоўшчык проста імпартуе CSV і запусціць MLRegressor, чакаючы высокіх якасных вынікаў для складанай праблемы ... ён можа быць вельмі расчараваны эфектам. З-за гэтага я вырашыў выбраць прыклады, блізкія да рэальных жыццёвых праблем, але не вельмі складаныя, бо без папярэдняй апрацоўкі дадзеных гэта бессэнсоўна.

Налада канфігурацыі майго Macbook Pro:

Я пачаў з тэставання класіфікатара малюнкаў, для тэсціравання я выкарыстаў "Класіфікацыю расады раслін" (https://www.kaggle.com/c/plant-seedlings-classification), мэтай якой з'яўляецца вызначэнне выгляду высадка па малюнку. Набор дадзеных значна большы, чым той, які прадстаўлены на дэма, ён змяшчае больш за 4300 малюнкаў, і я запускаю код, выкарыстоўваючы толькі 2 радкі кода, вынік бачны ніжэй:

Я быў вельмі ўражаны вынікам: на звычайны ноўтбук для распрацоўшчыкаў спатрэбілася 5 хвілін, каб навучыць даволі добрую мадэль, выкарыстоўваючы навучальныя дадзеныя 1,7 Гб. Ці ёсць лепшы спосаб стварыць мадэль Proof of Concept і ўключыць у працоўнае прыкладанне iOS / macOS для праверкі ідэі? Я не думаю, што так. Apple, вы зрабілі вялікую працу, сапраўды. Што таксама цікава заўважыць, гэта тое, што CreateML аўтаматычна стварае набор праверкі з таго, які прадастаўляецца ў якасці трэнінгу, таму распрацоўшчыку не трэба падзяляць гэтыя дадзеныя ўручную, і адзін невялікі крок для спрашчэння працэсу.

Добра, не ўсе будуць ствараць прыкладанне "Not Hotdog", таму давайце разгледзім яшчэ адзін вельмі распаўсюджаны выпадак машыннага навучання, "Таблічныя дадзеныя" і праблемы рэгрэсіі / класіфікацыі. У гэтым выпадку я пачаў з "Пачаткам выжывання тытаніка" (https://www.kaggle.com/c/titanic), мэтай гэтага спаборніцтва з'яўляецца вызначыць, ці зможа канкрэтны пасажыр перажыць сутыкненне з айсбергам на аснове дадзеных, такіх як узрост, пол. , тып білета, насціл і г.д.

Я загрузіў файл CSV, стварыў MLClassifier, націснуў прайграць і ...

Добра, гэта не працуе, CreateML мае патрэбу ў ідэальна чыстых дадзеных. Гэта не вялікая праблема, я магу выдаляць радкі з пустымі слупкамі, выкарыстоўваючы пару радкоў Python, аднак гэта зніжае колькасць дадзеных пра навучанне з 891 прыкладаў да толькі 183, але, па меншай меры, гэта працуе. Падчас наступнага запуску xCode паведаміў мне, што: "Функцыя" Білет \ "не мае тыпу (лікавы, радок, масіў ці слоўнік). \ N", таму я кінуў гэты слупок і, нарэшце, атрымаў працу:

У чарговы раз мяне ўразіў вынік: дадзеныя былі адносна простымі, але яны блізкія да таго, з чым можа сутыкнуцца шмат распрацоўшчыкаў у звычайных дадатках. CreateML працуе, гэта хутка і эфектыўна.

Другой спробай быў конкурс "Прагназаванне даходаў ад рэстаранаў" (https://www.kaggle.com/c/restaurant-revenue-prediction/data), дзе мэтай з'яўляецца ацэнка прыбытку рэстарана ў дадзеным годзе, выкарыстоўваючы дату адкрыцця, горад, тып рэстарана і г.д. Гэтак жа, як і ў выпадку з "Тытанікам", я проста загрузіў дадзеныя і запусціў гульнявую пляцоўку:

У гэтым выпадку CreateML вырашыў выкарыстаць рэгрэсар Boosted Tree, і ў выніку MSE яшчэ ніжэйшы за той, які выйграў канкурэнцыю 3 гады таму. Зразумела, прычынай гэтага можа стаць той факт, што лідэры створаны на аснове дадзеных, якія не з'яўляюцца агульнадаступнымі, але ўсё ж, CreateML быў здольны стварыць вельмі добрую, напэўна, нават супастаўную з выйгрышнай мадэллю за пару секунд. Гэта тое, што трэба большасці распрацоўшчыкаў.

4. Плюсы і мінусы CreateML

Плюсы:

  • У цяперашні час гэта найпросты спосаб стварэння мадэляў ML для iOS / macOS, асабліва для прыкладанняў Proof Of Concept або тых, хто працуе з адносна простымі дадзенымі
  • CreateML адкрывае свет ML тысячам распрацоўнікаў iOS / macOS
  • вельмі эфектыўны і просты ў выкарыстанні

Мінусы:

  • вельмі мала спосабаў наладзіць і адладзіць канчатковую мадэль
  • няма грамадскага ведама, якая мадэль выкарыстоўваецца для класіфікацыі малюнкаў
  • адсутнічаюць інструменты папярэдняй апрацоўкі дадзеных (але гэта відавочна, што кампанія Apple - не навукоўцы, а распрацоўшчыкі праграмнага забеспячэння)

5. Маё меркаванне

Падобна, што CreateML - гэта сапраўды выдатны інструмент, асабліва для распрацоўшчыкаў, якія наогул не працавалі з машынным навучаннем, гэта хутка, даволі эфектыўна і вельмі лёгка пачаць. Калі вы распрацоўшчык iOS / macOS, проста паспрабуйце.

6. Адкрытае пытанне

Хіба праблема вялікіх мадэляў ML для класіфікацыі малюнкаў проста хаваецца ад таго, што ўсе вагі захоўваюцца ў iOS / macOS, а CreateML будуе мадэль CoreML, якая змяшчае толькі вагі для апошняга, перавучанага пласта (Inception-V3)?