Apple CreateML va Kaggle

Yaqinda o'tkazilgan WWDC davomida Apple o'zining eng yangi vositasi - CreateML deb nomlangan. ML ishqibozi sifatida men bag'ishlangan sessiyada ko'rgan narsalarimdan juda ta'sirlandim (703), shuning uchun men uning haqiqatan ham qanchalik kuchli ekanligini o'rganishim kerak deb o'yladim.

1. Qisqa qilib aytgandaML yaratish (agar siz WWDC taqdimotini ko'rsangiz, uni o'tkazib yuborishingiz mumkin).

Create ML - bu ishlab chiquvchilarga Swift va Xcode-dan foydalanib, mashinalarni o'rganish modellarini osongina va tezda yaratishga yordam beradigan yangi ramka. Hozirgi vaqtda u 3 turdagi ma'lumotlar bilan ishlashga qodir: rasmlar, matnli va jadvalli ma'lumotlar. Ish jarayoni juda sodda, siz faqat ma'lumotlarga ega bo'lishingiz, kodlarning bir nechta satrlarini yozishingiz va sehrli voqealar sodir bo'lishi kerak, kichik CoreML modeli sizning ilovangizda foydalanishga tayyor. Apple mashg'ulotlar vaqtini sezilarli darajada qisqartirishga va'da qilmoqda, bu 10000 rasmni bir necha daqiqada hisoblash kerak (har doimgidek Apple tafsilotlarni bermaydi). Trening juda tez, chunki (rasm tasniflagichida) Apple Transfer Learning dasturidan foydalanadi. Neural Network asos nima ekanligini bilmaymiz, lekin taqdimot paytida Inception-v3 tasvirni tasniflash uchun zamonaviy echimning namunasi sifatida aytib o'tildi.

2. WWDC Demo taqdimotini qisqacha aytganda (agar siz WWDC taqdimotini tomosha qilgan bo'lsangiz, o'tkazib yuborishingiz mumkin).

WWDC paytida, taqdimotchilar biz turli xil modellarni osongina yaratishimiz mumkinligini ko'rsatdilar, birinchi navbatda, faqat ikkita kodli chiziqlar yordamida qurilgan rasm tasniflagichi:

Ikkinchi misol juda o'xshash edi, Matn tasniflagichi musbat yoki manfiymi yoki yo'qmi, masalan, rasmda bo'lgani kabi, uni tayyorlash uchun faqat ikkita kod kodi kifoya qildi:

Menga kelsak, jadval jadvallari bilan ishlashni namoyish etadigan eng qiziq namoyish bo'ldi. Bu holda CreateML MLDataTable deb nomlangan yangi ma'lumot formatidan foydalanadi, birinchi qarashda oddiy matritsa uchun o'rash bo'ladi, baxtiga o'rnatilgan CSV va JSON skript.

Jadval ma'lumotlari bo'lsa, CreateML ikkita yo'lni taklif qiladi: oson va biroz murakkabroq. Avvaliga uy narxlari formulasini topishning eng oddiy usulini ko'rib chiqing, bu avvalgi misollar bilan deyarli bir xil:

Jadvaldagi ma'lumotlar bilan bog'liq muammolar (registrga bog'liq holda) regressiya muammolari uchun MLRegressor va tasniflash uchun MLClassifier yordamida echilishi mumkin. Ammo bu juda ham qiziq narsa emas, jadval jadvallarida ishlayotib, tasniflash / regressiya usulini qo'lda tanlashingiz mumkin, chunki sanoatda eng ko'p ishlatiladigan CreateML qo'llab-quvvatlaydigan juftlik:

3. Haqiqiy hayotdagi muammolarda CreateML

Demo-ilovalar har doim imkon qadar sodda, bu ularni tushunishni osonlashtiradi va yaxshi. Biroq, "Machine Learning" ga kelsak, biror narsa oddiy misol bilan ishlayotganligi haqiqatan ham u yanada murakkabroq ishlashini anglatmaydi. CreateML-ning maqsadli foydalanuvchilari - ML mutaxassislari yoki ma'lumotlar olimi emas, balki ishlab chiquvchilar, shuning uchun men o'rtacha ML yangilariga o'xshab harakat qilishni, ma'lumotlarni chuqur tahlil qilmaslikni, shunchaki CreateML-ga to'plamlarni qo'yib, sehr qilishga imkon berishga qaror qildim. Men Kaggle musobaqalarini mezon sifatida ishlatishga qaror qildim va keyin modelning sifatini Kagglers erishgan natijalar bilan taqqosladim, shuningdek, CreateML qanchalik tezligini tekshirishni xohladim. Ko'pgina hollarda, muvaffaqiyatli modellashtirishning kaliti bu ma'lumotlarni tushunish va qayta ishlashdir, agar ishlab chiqaruvchi shunchaki CSV-ni import qilsa va murakkab muammolar uchun yuqori sifatli natijalarni kutib, MLRegressor-ni ishlatsa ... u ta'siridan chindan ham ko'ngli qolishi mumkin. Shu sababli men haqiqiy hayot muammolariga yaqin bo'lgan, ammo juda murakkab bo'lmagan misollarni tanlashga qaror qildim, chunki bu ma'lumotlarni qayta ishlashsiz foydasiz bo'ladi.

Ma'lumot sifatida mening Macbook Pro konfiguratsiya:

Men Tasnif klassifikatorini sinovdan o'tkazishni boshladim, sinov uchun men "O'simliklar ko'chatlarini tasniflash" (https://www.kaggle.com/c/plant-seedlings-classification) dan foydalanganman, uning maqsadi rasmdagi fide turini aniqlashdir. Ma'lumotlar to'plami demoda namoyish qilinganidan ancha katta, unda 4300 dan ortiq rasm mavjud, men kodni faqat 2 satrdan foydalanib ishlataman, natijasi quyida ko'rinadi:

Natija menga juda ta'sirlandi, 1.7GB o'quv ma'lumotlarini ishlatib, juda yaxshi modelni tayyorlash uchun odatdagi ishlab chiqaruvchi noutbukda 5 daqiqa vaqt ketdi. Fikrni tasdiqlash uchun Proof of Concept modelini yaratish va ishlaydigan iOS / macOS ilovasiga kiritishning yaxshiroq yo'li bormi? Menimcha, bunday emas. Apple, haqiqatan ham juda yaxshi ish qildingiz. Shunisi e'tiborga loyiq tomoni shundaki, CreateML avtomatik ravishda tekshirish sifatida taqdim qilingan vositadan validatsiya to'plamini yaratadi, shuning uchun ishlab chiqaruvchi ushbu ma'lumotlarni qo'lda tarqatishi shart emas, jarayonni soddalashtirish uchun bitta kichik qadam.

Ha, hamma ham "Not Hotdog" ilovasini qurmoqchi emas, shuning uchun mashinada o'rganish, "Tabular ma'lumotlari" va regressiya / tasniflash bilan bog'liq boshqa keng tarqalgan holatlarga e'tibor qarataylik. Bu holda, men "Titanik jonli hayotini boshlash" (https://www.kaggle.com/c/titanic) bilan boshladim, ushbu musobaqaning maqsadi yoshi, jinsi kabi ma'lumotlarga asoslanib, aysberg bilan to'qnashuvdan omon qolish-bo'lmasligini aniqlashdir. , chipta turi, pastki va boshqalar.

Men CSV faylini yuklab oldim, MLClassifier yaratdim, o'yinni bosish va ...

Ok ishlamayapti, yaratuvchiga toza ma'lumot kerak. Bu katta muammo emas, men Python-ning ikkita satridan foydalanib, bo'sh ustunlar bilan qatorlarni olib tashlashim mumkin, ammo bu 891 misoldan 183-ga qadar o'quv ma'lumotlarini faqat 183-ga qisqartiradi, lekin hech bo'lmaganda ishlamoqda. Keyingi ish paytida xCode menga: "Xususiyat \" bilet turi emas (raqamli, satr, qator yoki lug'at). \ N "shu sababli men bu ustunni tashladim va nihoyat ishchi modelini oldim:

Yana bir bor natijadan taassurotga tushdim, ma'lumotlar juda oson edi, ammo odatiy ilovalarda ko'plab ishlab chiqaruvchilar duch keladigan narsaga yaqin. CreateML tez va samarali ishlaydi.

Ikkinchi urinish: "Restoran daromadlarini bashorat qilish" tanlovi (https://www.kaggle.com/c/restaurant-revenue-prediction/data), bu erda restoranning ochilish kunidan foydalangan holda, ma'lum yilda restoranning daromadini hisoblash, shahar, restoran turi va hk. Titanikda bo'lgani kabi, men ma'lumotni yuklab oldim va o'yin maydonchasini ishga tushirdim:

Bunday holda, CreateML Boosted Tree Regressor-ni ishlatishga qaror qildi va natijada MSE 3 yil oldingi tanlovda g'olib bo'lganidan ham pastroq bo'ldi. Albatta buning sababi shundaki, peshqadamlar taxtasi ommaviy bo'lmagan ma'lumotlarga asoslanib yaratilgan, lekin baribir, CreateML juda yaxshi qura oldi, ehtimol bir necha soniya ichida g'olib model bilan taqqoslanishi mumkin. Bu ko'pchilik ishlab chiqaruvchilarga kerak.

4. CreateML-ning ijobiy va salbiy tomonlari

Taroziga soling:

  • hozirda iOS / macOS uchun ML modellarini yaratishning eng oson usuli, ayniqsa Proof Of Concept ilovalari yoki nisbatan oddiy ma'lumotlar bilan ishlaydiganlar uchun
  • CreateML ML olamini minglab iOS / macOS dasturchilariga ochadi
  • juda samarali va ulardan foydalanish oson

Kamchiliklari:

  • yakuniy modelni sozlash va disk raskadrovka qilishning juda kam usullari
  • Rasmlarni tasniflashda qaysi modeldan foydalanilayotgani to'g'risida jamoatchilik bilmaydi
  • ma'lumotlarni qayta ishlash vositalari yo'q (ammo aniqki, Apple maqsadi ma'lumotlar olimi emas, balki dasturiy ta'minotni ishlab chiquvchilar).

5. Mening fikrim

Ko'rinishidan, CreateML haqiqatan ham juda yaxshi vositadir, ayniqsa Machine Learning-ni umuman ishlamagan ishlab chiquvchilar uchun bu juda tez, juda samarali va boshlash juda oson. Agar siz iOS / macOS dasturchisi bo'lsangiz, uni sinab ko'ring.

6. Ochiq savol

Tasvirlarni tasniflash uchun katta ML modellaridagi muammo barcha og'irliklar iOS / macOS-da saqlanib, CoreML modelini yaratgan (Inception-V3) ning oxirgi, qayta ishlangan qatlamiga mo'ljallangan og'irliklarni o'z ichiga oladimi?