Apple CreatML- ը ընդդեմ Kaggle- ի

Վերջերս WWDC- ի ընթացքում Apple- ը ներկայացրեց իր նորագույն գործիքը ՝ կոչված CreatML: Որպես ML- ի խանդավառություն, ես իսկապես տպավորված էի այն բանի վրա, ինչ ես տեսել եմ նվիրված նստաշրջանում (703), այնպես որ ես կարծում էի, որ արժե ուսումնասիրել, թե որքանով է այն իրական:

1. Մի խոսքով, ՍտեղծեքML (կարող եք բաց թողնել, եթե դիտել եք WWDC ներկայացումը):

Ստեղծել ML- ը նոր շրջանակ է, որը նախատեսված է հեշտությամբ և արագ կառուցել մեքենայական ուսուցման մոդելներ ՝ օգտագործելով Swift և Xcode: Ինչ վերաբերում է այժմ, այն ի վիճակի է աշխատել 3 տեսակի տվյալների ՝ պատկերների, տեքստի և աղյուսակային տվյալների: Աշխատանքային հոսքն իսկապես պարզ է, պարզապես անհրաժեշտ է մատուցել դասընթացների տվյալների շարք, գրել մի քանի տող կոդ և մոգություն է պատահում, փոքր CoreML մոդելը պատրաստ է օգտագործել ձեր հավելվածում: Apple- ը խոստանում է զգալիորեն կրճատել դասընթացների ժամանակը, որը 10,000 պատկերների դեպքում պետք է հաշվել րոպեներով (ինչպես միշտ Apple- ը խուսափում է մանրամասներ տրամադրելուց): Դասընթացն այնքան արագ է, քանի որ (պատկերի դասակարգչի դեպքում) Apple- ը օգտագործում է փոխանցման ուսուցում: Մենք չգիտենք, թե որն է հիմքը նյարդային ցանցը, բայց շնորհանդեսի ընթացքում Inception-v3- ը նշվեց որպես պատկերների դասակարգման գեղարվեստական ​​լուծման օրինակ:

2. WWDC Դեմո ներկայացում մի խոսքով (կարող եք բաց թողնել, եթե դիտել եք WWDC ներկայացումը):

WWDC- ի ընթացքում ներկաները ցույց տվեցին, թե որքան հեշտությամբ կարող ենք կառուցել տարբեր մոդելներ, առաջինը պատկերի դասակարգիչն էր, որը կառուցված էր միայն մի քանի տողի կոդերի միջոցով.

Երկրորդ օրինակը շատ նման էր, տեքստի դասակարգիչը որոշեց, թե արդյոք տեքստը դրական է կամ բացասական, քանի որ, պատկերների դեպքում, ընդամենը մի քանի տող կոդ էր բավականացնում այն ​​պատրաստելու համար.

Ինչ վերաբերում է ինձ, ապա ամենահետաքրքիր ցուցադրությունը վերջինն էր ՝ ներկայացնելով աղյուսակավոր տվյալներ: Այս դեպքում CreatML- ն օգտագործում է տվյալների նոր ձևաչափ, որը կոչվում է MLDataTable, առաջին հայացքից այն պարզապես փաթաթված է նորմալ տվյալների մատրիցի համար, բարեբախտաբար ներկառուցված CSV և JSON վերլուծիչ է:

Աղյուսակային տվյալների առկայության դեպքում CreatML- ն առաջարկում է 2 ուղի ՝ հեշտ մեկը և մի փոքր ավելի բարդ: Սկզբում նայեք տան գների բանաձևը պարզելու ամենապարզ ձևին, այն գրեթե նույնն է թվում, ինչպես նախորդ նախորդ օրինակները.

Աղյուսակային տվյալների հետ կապված խնդիրները կարող են լուծվել (կախված դեպքից) `օգտագործելով կամ MLRegressor- ը` ռեգրեսիոն խնդիրների համար, և MLC- դասակարգիչը `դասակարգման համար: Բայց սա իրականում բոլորովին էլ հետաքրքիր չէ, բայց աղյուսակային տվյալների վրա աշխատելիս կարող եք ձեռքով որոշել, թե դասակարգման / հետընթացի ինչ մեթոդ է կիրառվելու, քանի որ CreatML աջակցման զույգը, որն առավել հաճախ օգտագործվում է արդյունաբերության մեջ.

3. ՍտեղծեքML իրական կյանքի խնդիրներում

Դեմո ծրագրերը միշտ հնարավորինս պարզ են, ինչը նրանց հեշտացնում է հասկանալը և դա լավ է: Այնուամենայնիվ, մեքենայական ուսուցման դեպքում, այն փաստը, որ ինչ-որ բան աշխատում է պարզ օրինակով, իրականում չի ենթադրում, որ այն կաշխատի ավելի բարդ մեկի հետ: ՍտեղծելML թիրախային օգտագործողները մշակողներ են, այլ ոչ թե ML փորձագետներ կամ տվյալների գիտնականներ, ուստի ես որոշեցի վարվել միջին ML նորեկի նման, խորը վերլուծություններ չկատարել տվյալների մասին, պարզապես դրվագներ դարձրեք CreatML- ին և թույլ տվեք դա անել մոգությունը: Ես որոշեցի օգտագործել Kaggle մրցումները որպես հենանիշ, այնուհետև համեմատել մոդելի որակը այն, ինչին հասել է Kagglers- ը, ես նաև ուզում էի ստուգել, ​​թե որքան արագ է CreatML- ը: Շատ դեպքերում, հաջողակ մոդելի բանալին տվյալների ընկալումն ու նախամշակումն է, եթե ծրագրավորողը պարզապես ներմուծի CSV և գործարկի MLRegressor- ը `բարդ խնդրի համար բարձրորակ արդյունքներ ակնկալելով ... նա կարող է իսկապես հիասթափվել արդյունավետությունից: Դրա համար ես որոշեցի ընտրել օրինակներ, որոնք մոտ են իրական կյանքի խնդիրներին, բայց ոչ շատ բարդ, քանի որ դա անիմաստ կլիներ առանց տվյալների մշակման:

Իմ Macbook Pro կազմաձևումը որպես տեղեկանք.

Ես սկսեցի փորձարկել պատկերի դասակարգիչը, փորձարկելու համար օգտագործեցի «Բույսերի սածիլների դասակարգումը» (https://www.kaggle.com/c/plant-seedlings- դասակարգում), որի նպատակն է նկարագրից պարզել սածիլի տեսակները: Տվյալների հավաքածուն զգալիորեն ավելի մեծ է, քան ցուցադրականում ներկայացվածը, այն պարունակում է ավելի քան 4300 պատկեր, ես վարում եմ ծածկագիրը ՝ օգտագործելով ընդամենը 2 տող կոդ, արդյունքը երևում է ստորև.

Ինձ շատ տպավորեց արդյունքը, 5 րոպե տևեց սովորական ծրագրավորող նոութբուքի վրա, որպեսզի պատրաստեմ բավականին լավ մոդել ՝ օգտագործելով 1.7 ԳԲ դասընթացային տվյալներ: Կա՞ արդյոք ավելի լավ եղանակ ՝ գաղափար հաստատելու համար Proof of Concept մոդելի կառուցման և գործարկելու iOS / macOS ծրագիրը: Ես այդպես չեմ կարծում: Apple, դուք իսկապես շատ լավ աշխատանք եք կատարել: Հետաքրքիր է նաև այն, որ CreatML- ն ինքնաբերաբար ստեղծում է վավերացման հավաքածու, որը տրված է որպես դասընթաց, ուստի մշակողը պարտադիր չէ այս տվյալները ձեռքով բաժանել, գործընթացը փոքրացնելու համար մեկ փոքր քայլ է:

Լավ, ոչ բոլորն են պատրաստվում կառուցել «Not Hotdog» հավելված, այնպես որ եկեք քննենք մեքենայական ուսուցման ևս մեկ շատ սովորական դեպք ՝ «Աղյուսակային տվյալներ» և ռեգրեսիայի / դասակարգման խնդիրներ: Այս դեպքում ես սկսեցի «Սկսել Titanic Survivals» - ը (https://www.kaggle.com/c/titanic), այս մրցույթի նպատակն է որոշել, թե արդյոք հատուկ ուղևորը գոյատևելու է բախումից սառցաբեկորով բախում ՝ հիմնվելով այնպիսի տվյալների վրա, ինչպիսիք են տարիքը, սեռը , տոմսի տեսակը, տախտակամածը և այլն:

Ներբեռնեցի CSV ֆայլ, ստեղծեցի MLClassifier, սեղմված նվագարկիչ և…

Լավ, այն չի աշխատում, CreatML- ին անհրաժեշտ են կատարելապես մաքուր տվյալներ: Դա մեծ խնդիր չէ, ես կարող եմ հեռացնել տողերը դատարկ սյուներով `օգտագործելով Python- ի մի քանի տող, սակայն դա 891 օրինակից իջեցնում է վերապատրաստման տվյալների քանակը միայն 183-ին, բայց գոնե այն աշխատում է: Հաջորդ փուլի ընթացքում xCode- ն ինձ տեղեկացրեց, որ «Խաղարկային \" տոմսը \ "տիպը չէ (թվային, լարային, զանգված կամ բառարան): \ n", այնպես որ ես գցեցի այս սյունակը և վերջապես ստացա աշխատանքային մոդել:

Եվս մեկ անգամ տպավորված եմ արդյունքից, տվյալները համեմատաբար հեշտ էին, բայց մոտ է այն ծրագրին, որը կարող է բախվել ծրագրավորողների մեծ մասի: CreatML- ն աշխատում է, այն արագ և արդյունավետ է:

Երկրորդ փորձը «Ռեստորանի եկամուտների կանխատեսում» մրցույթն էր (https://www.kaggle.com/c/restaurant-re եկ-prediction/data), որտեղ նպատակն է գնահատել ռեստորանի եկամուտները տվյալ տարում ՝ օգտագործելով բացման ամսաթիվը, քաղաք, ռեստորանի տեսակը և այլն: Նույնը, ինչպես Titanic- ի դեպքում, ես պարզապես ներբեռնեցի տվյալները և գործի խաղահրապարակ:

Այս դեպքում CreatML- ը որոշեց օգտագործել Boosted Tree Regressor- ը, և արդյունքում ՓՄՁ-ն նույնիսկ ցածր է, քան 3 տարի առաջ մրցում շահածը: Իհարկե դրա համար կարող է լինել այն փաստը, որ ցուցատախտակները ստեղծվում են տվյալների հիման վրա, որոնք հանրային չեն, բայց, այնուամենայնիվ, CreatML- ն կարողացավ կառուցել շատ լավ, հավանաբար, նույնիսկ համեմատելի շահող մոդելի հետ մի քանի վայրկյանում: Դա այն է, ինչ պետք է մշակողների մեծամասնությանը:

4. CreatML- ի կողմնակիցներն ու դեմքերը

Կողմ:

  • ներկայումս դա ամենադյուրին միջոցն է ML մոդելներ ստեղծելու համար iOS / macOS- ի համար, հատկապես Proof Of Concept հավելվածների կամ համեմատաբար պարզ տվյալների հետ աշխատողների համար
  • CreatML- ն ML աշխարհը բացում է iOS / macOS հազարավոր մշակողների համար
  • շատ արդյունավետ և հեշտ օգտագործման համար

Դեմ:

  • վերջնական մոդելի մեղմացման և կարգաբերման շատ քիչ եղանակներ
  • ոչ մի հանրային գիտելիք, թե ինչ մոդելն է օգտագործվում պատկերները դասակարգելու համար
  • տվյալների վերամշակման գործիքներ չկան (բայց դա ակնհայտ է, որ Apple- ի թիրախը ոչ թե տվյալների գիտնականներն են, այլ ծրագրավորողները)

5. Իմ կարծիքը

Կարծես CreatML- ը իսկապես հիանալի գործիք է, հատկապես մշակողների համար, ովքեր ընդհանրապես չեն աշխատել մեքենայական ուսուցման հետ, այն արագ, բավականին արդյունավետ և ծայրաստիճան հեշտ է: Եթե ​​դուք iOS / macOS- ի մշակող եք, պարզապես փորձեք:

6. Բաց հարց

Արդյո՞ք պատկերի դասակարգման մեծ ML մոդելների խնդիրն ուղղակի թաքնված է այն փաստով, որ բոլոր կշիռները պահվում են iOS / macOS- ի շրջանակներում, և CreatML- ը ստեղծում է CoreML մոդելը, որը պարունակում է միայն կշիռներ (Inception-V3) վերջին, վերապատրաստված շերտի համար: