Apple CreateML vs Kaggle

Son WWDC ərzində Apple yeni yaradılan CreateML adlı bir vasitəsini təqdim etdi. Bir ML həvəskarı olaraq, xüsusi sessiyada gördüklərimə heyran oldum (703), buna görə də bunun nə qədər güclü olduğunu araşdırmaq lazım olduğunu düşündüm.

1. Bir nəticə iləMLML yaradın (WWDC təqdimatını izlədinizsə ata bilərsiniz).

Yarat ML, inkişaf etdiricilərə Swift və Xcode istifadə edərək asanlıqla və tez bir zamanda maşın öyrənmə modellərini qurmağa kömək edən yeni bir çərçivədir. Hal-hazırda 3 növ məlumatla işləmək mümkündür: şəkillər, mətn və cədvəlli məlumatlar. İş axını həqiqətən sadədir, sadəcə təlim məlumatlarını çatdırmalı, bir neçə sətir kod yazmalı və sehr baş verər, kiçik CoreML modeli tətbiqinizdə istifadə etməyə hazırdır. Apple, məşq vaxtını əhəmiyyətli dərəcədə azaltmağı vəd edir, bu da 10000 görüntünün bir neçə dəqiqədə sayılması lazımdır (həmişə olduğu kimi Apple da detal verməkdən yayınır). Təlim o qədər sürətlidir, çünki (şəkil təsnifatçısı olduqda) Apple Transfer Learning istifadə edir. Neyron Şəbəkəsinin nə olduğunu bilmirik, lakin təqdimat zamanı Inception-v3 təsvir təsnifatı üçün bədii həll yolunun nümunəsi kimi qeyd edildi.

2. WWDC Demo təqdimatını bir sözlə (WWDC təqdimatını izlədinizsə ata bilərsiniz).

WWDC zamanı aparıcılar fərqli modelləri necə asanlıqla qura biləcəyimizi göstərdilər, əvvəlcə yalnız cüt şifrə xətlərindən istifadə edərək qurulmuş görüntü təsnifatı oldu:

İkinci nümunə çox oxşardı, Mətn Təsnifatçısı, mətnin müsbət və ya mənfi olub-olmadığını qərara aldı, görüntüdə olduğu kimi, onu öyrətmək üçün yalnız iki cüt sətir kifayət etdi:

Mənə gəldikdə, ən maraqlı demo, cədvəl məlumatları ilə iş təqdim edən son idi. Bu vəziyyətdə CreateML MLDataTable adlanan yeni məlumat formatından istifadə edir, ilk baxışdan normal məlumat matrisi üçün sadəcə bir bükücüdür, xoşbəxtlikdən quraşdırılmış CSV və JSON analizatorudur.

Cədvəlli məlumatların yaranması vəziyyətində CreateML 2 yolu təklif edir: asan biri və bir az daha mürəkkəb. Əvvəlcə evin qiymət düsturunu tapmaq üçün ən sadə yola nəzər yetirin, əvvəlki misallarla eyni görünür:

Cədvəlli məlumat problemləri reqressiya problemləri üçün MLRegressor və təsnifat üçün MLClassifier istifadə edərək həll edilə bilər. Ancaq bu, həqiqətən maraqlı olan şey deyil, cədvəlli məlumatlar üzərində işləyərkən sənayedə ən çox istifadə olunan CreateML dəstək cütü olaraq təsnifat / reqressiya metodunun hansı üsulla istifadə ediləcəyini özünüz qərar verə bilərsiniz.

3. Real həyatda problemlər yaradın

Demo tətbiqləri həmişə mümkün qədər sadədir, onları başa düşməyi asanlaşdırır və yaxşıdır. Ancaq Maşın Öyrənmə vəziyyətində bir şeyin sadə nümunə ilə işləməsi, həqiqətən daha mürəkkəb birisi ilə işləyəcəyini ifadə etmir. CreateML hədəf istifadəçiləri ML mütəxəssisləri və ya məlumat alimləri deyil, inkişaf etdiricilərdir, buna görə orta ML yenisi kimi davranmağı, məlumatları dərindən analiz etməməyi, yalnız CreateML-ə dəstlər qoymağı və sehr yaratmağı qərara aldım. Kaggle yarışlarını bir meyar olaraq istifadə etmək qərarına gəldim və sonra modelin keyfiyyətini Kagglers-in qazandıqları ilə müqayisə etdim, həmçinin CreateML-in nə qədər sürətli olduğunu yoxlamaq istədim. Çox hallarda müvəffəqiyyətli modelin açarı məlumatları dərk etmək və əvvəlcədən işləmə deməkdir, əgər geliştirici yalnız CSV idxal edərsə və mürəkkəb problem üçün yüksək keyfiyyətli nəticələr gözləyən MLRegressor işləsə ... o, həqiqətən təsirdən məyus ola bilər. Buna görə real həyat problemlərinə yaxın, lakin çox mürəkkəb olmayan nümunələri seçməyə qərar verdim, çünki məlumatların işlənməsi olmadan mənasız olardı.

My Macbook Pro bir istinad olaraq konfiqurasiya:

Təsvirdən bir fidan növünü təyin etmək məqsədi daşıyan "Bitki fidanlarının təsnifatı" nı (https://www.kaggle.com/c/plant-seedlings-classification) istifadə etmək üçün Təsvir Təsnifatçısını sınamağa başladım. Dataset, nümayişdə göstəriləndən daha böyükdür, 4300-dən çox şəkil var, kodun yalnız 2 satırını istifadə edərək çalışıram, nəticə aşağıda görünür:

Nəticədən çox təsirləndim, 1.7GB təlim məlumatlarından istifadə edərək olduqca yaxşı bir model hazırlamaq üçün tipik bir geliştirici noutbukda 5 dəqiqə çəkdi. Proof of Concept modelini qurmaq və bir fikri yoxlamaq üçün iOS / macOS tətbiqinə qoymaq üçün daha yaxşı bir yol varmı? Mən belə düşünmürəm. Apple, həqiqətən əla bir iş gördünüz. Diqqəti çəkmək üçün maraqlı olan odur ki, CreateML avtomatik olaraq bir təlim olaraq təqdim ediləndən etibarlı bir yoxlama dəsti yaradır, buna görə geliştirici bu məlumatları əl ilə bölməyə məcbur etmir, prosesi asanlaşdırmaq üçün bir addım atdı.

Yaxşı, hamı "Not Hotdog" tətbiqini qurmaq niyyətində deyil, buna görə də maşın öyrənməsində, "Tabular məlumatları" və reqressiya / təsnifat problemlərində daha çox görülən bir işə nəzər salaq. Bu vəziyyətdə, "Başlanğıc Titanik Survivals" (https://www.kaggle.com/c/titanic) ilə başladım, bu yarışın məqsədi yaşı, cinsi kimi məlumatlara görə aysberqlə toqquşmadan sağ qalacağını müəyyən etməkdir. , bilet növü, göyərtə və s.

CSV faylı yüklədim, MLClassifier yaratdım, oyuna basdım və…

Ok işləmir, CreateML mükəmməl təmiz məlumatlara ehtiyac duyur. Bu, elə də böyük bir problem deyil, Python’un bir neçə sətirindən istifadə edərək boş sütunları olan sətirləri silə bilərəm, bununla birlikdə təlim məlumatlarının həcmini 891 nümunədən cəmi 183-ə endirirəm, amma heç olmasa işləyir. Növbəti qaçış zamanı xCode mənə bildirdi: "Xüsusiyyət \ 'Bilet \' tip deyil (rəqəmli, sətir, serial və ya lüğət). \ N" buna görə də bu sütunu atdım və nəhayət iş modelini aldım:

Nəticə məni bir daha təəccübləndirdi, məlumatlar nisbətən asan idi, amma tipik tətbiqlərdə çox sayda inkişaf etdiricinin üzləşə biləcəyinə yaxındır. CreateML işləyir, sürətli və səmərəlidir.

İkinci cəhd, "Restoranın Gəlirini Öncədən Mübarizə" yarışması oldu (https://www.kaggle.com/c/restaurant-revenue-prediction/data), hədəfi açıldığı tarixdən istifadə edərək müəyyən bir ildə restoranın gəlirlərini hesablamaqdır. şəhər, restoran növü və s. Titanic vəziyyətində olduğu kimi, yalnız məlumatları yüklədim və oyun meydançasını işlədim:

Bu vəziyyətdə CreateML, gücləndirilmiş ağac reqressorundan istifadə etmək qərarına gəldi və nəticədə MSE 3 il əvvəl rəqabət qazananlardan daha da aşağı oldu. Əlbətdə bunun səbəbi, lider lövhələrin açıq olmayan məlumatlara əsasən qurulması ola bilər, amma yenə də CreateML çox yaxşı qura bildi, yəqin ki, hətta bir neçə saniyədə qazanan modellə müqayisə edilə bilər. Ən çox inkişaf etdiricinin ehtiyacı budur.

4. CreateML-in müsbət və mənfi tərəfləri

Pros:

  • hal-hazırda iOS / macOS üçün ML modelləri qurmağın ən asan yoludur, xüsusilə Proof Of Concept tətbiqetmələri və ya nisbətən sadə məlumatlarla işləyənlər üçün
  • CreateML, minlərlə iOS / macOS inkişaf etdiricisi üçün ML dünyasını açır
  • çox səmərəli və istifadəsi asandır

Eksiler:

  • son modeli tənzimləmək və ayırd etmək üçün çox az yol
  • Görüntüləri təsnif etmək üçün hansı modelin istifadə olunduğunu heç bir ictimaiyyət bilmir
  • məlumatları əvvəlcədən işləmə vasitələri yoxdur (lakin aydındır ki, Apple hədəfi məlumat alimləri deyil, proqram təminatçılarıdır)

5. Mənim fikrim

Görünür ki, CreateML həqiqətən əla vasitədir, xüsusən də Maşın Öyrənməsi ilə işləməyən inkişaf etdiricilər üçün sürətli, olduqca səmərəli və başlaması çox asandır. Bir iOS / macOS geliştiricisisinizsə, cəhd edin.

6. Açıq sual

Təsvir təsnifatı üçün böyük ML modellərinin problemi, bütün çəkilərin iOS / macOS daxilində saxlanıldığını və CreateML'in (Inception-V3) ən son, yenidən hazırlanmış təbəqəsi üçün yalnız çəkilərdən ibarət CoreML modelini qurması ilə gizlidirmi?