Apple CreatML vs Kaggle

طی WWDC اخیر ، اپل جدیدترین ابزار خود را با نام CreatML ارائه داد. من به عنوان یک علاقه مندان به ML واقعاً تحت تأثیر آنچه که من در جلسه اختصاصی دیده ام (703) بود ، بنابراین فکر کردم ارزش این را دارد که بررسی کنیم که واقعاً چقدر قدرتمند است.

1. CreatML را به طور خلاصه ایجاد کنید (در صورت تماشای ارائه WWDC می توانید از آن پرش کنید).

ایجاد ML یک چارچوب جدید است که برای کمک به توسعه دهندگان به راحتی و به سرعت می تواند مدل های یادگیری ماشین را با استفاده از Swift و Xcode بسازد. در حال حاضر قادر به کار با 3 نوع داده است: تصاویر ، متن و داده های جدولی. گردش کار بسیار ساده است ، شما فقط باید مجموعه ای از داده های آموزشی را تحویل بگیرید ، چند خط کد بنویسید و جادو اتفاق می افتد ، مدل CoreML کوچک آماده است تا در برنامه شما استفاده شود. اپل قول می دهد زمان آموزش را به میزان قابل توجهی کاهش دهد ، که در صورت وجود 10،000 تصویر باید در عرض چند دقیقه شمارش شود (مثل همیشه اپل از ارائه جزئیات خودداری می کند). آموزش بسیار سریع است ، زیرا (در صورت طبقه بندی تصویر) اپل از Transfer Learning استفاده می کند. ما نمی دانیم که شبکه عصبی پایه چیست ، اما در طول ارائه به Inception-v3 به عنوان نمونه ای از راه حل هنری برای طبقه بندی تصویر اشاره شد.

2. ارائه نسخه ی نمایشی WWDC به طور خلاصه (در صورت تماشای ارائه WWDC می توانید از آن پرش کنید).

در طول WWDC ، ارائه دهندگان نشان دادند که چگونه می توانیم مدل های مختلفی را بسازیم ، اولین بار طبقه بندی کننده تصویر بود که فقط با استفاده از چند خط کد ساخته شده است:

مثال دوم بسیار مشابه بود ، طبقه بندیگر متن تصمیم می گیرد که متن مثبت یا منفی باشد ، زیرا در مورد تصویر ، فقط دو خط کد برای آموزش آن کافی است:

در مورد من ، جالب ترین نسخه آزمایشی آخرین مورد بود که کار با داده های جدولی ارائه کرد. در این حالت CreatML از قالب جدید داده استفاده می کند ، به نام MLDataTable ، در ابتدا به نظر می رسد که این فقط یک بسته بندی برای ماتریس داده های عادی است ، خوشبختانه CSV و JSON را تجزیه کرده است.

در صورت داده های جداول ، CreatML 2 مسیر را ارائه می دهد: آسان و کمی پیچیده تر. در ابتدا به ساده ترین روش برای یافتن فرمول قیمت خانه نگاهی بیندازید ، تقریباً شبیه به هر دو مثال قبلی است:

مشکلات داده های قرص ممکن است با استفاده از MLRegressor برای مشکلات رگرسیون و MLClassifier برای طبقه بندی برطرف شود (بسته به مورد). اما این همه چیز جالب نیست ، در حالی که روی داده های جدولی کار می کنید ، می توانید به طور دستی تصمیم بگیرید که از چه روشی برای طبقه بندی / رگرسیون استفاده خواهد شد ، به عنوان زوج پشتیبانی CreatML که معمولاً در صنعت استفاده می شود:

3. ایجاد مشکلات در زندگی واقعی

برنامه های نسخه ی نمایشی همیشه به ساده ترین شکل ممکن است ، درک آنها را آسان می کند و این درست است. اما در مورد Machine Learning ، این واقعیت که چیزی با مثال ساده کار می کند ، به معنای واقعی این معنی نیست که با یک پیشرفته تر کار کند. کاربران هدف CreatML توسعه دهنده ها هستند ، نه کارشناسان 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 کار کنید؟ من فکر نمی کنم اپل ، شما واقعاً کار بزرگی انجام دادید. نکته جالب توجه این است که CreatML به طور خودکار مجموعه ای از اعتبارسنجی را از مجموعه ارائه شده به عنوان آموزش ایجاد می کند ، بنابراین توسعه دهنده نیازی به تقسیم این داده ها به صورت دستی ندارد ، یک قدم کوچک برای ساده کردن روند.

خوب ، همه نمی خواهند برنامه "Not Hotdog" را بسازند ، بنابراین بیایید نگاهی به یک مورد بسیار رایج در یادگیری ماشین ، "داده های جدول" و مشکلات رگرسیون / طبقه بندی بپردازیم. در این مورد که من با "شروع کار با Survivals Titanic" شروع کردم (https://www.kaggle.com/c/titanic) ، هدف از این مسابقه این است که تعیین کنیم مسافر خاص در صورت برخورد بر روی یخ بر اساس داده هایی مانند سن ، جنس زنده بماند یا خیر. ، نوع بلیط ، دک و غیره

من فایل CSV را بارگیری کردم ، MLClassifier را ایجاد کردم ، بازی را فشار دادم و ...

خوب ، کار نمی کند ، CreatML نیاز به داده های کاملاً تمیز دارد. این یک مشکل بزرگ نیست ، من می توانم ردیف هایی را با ستون های خالی با استفاده از چند خط پایتون حذف کنم ، با این حال مقدار داده های آموزش را از 891 نمونه به تنها 183 کاهش می دهد ، اما حداقل کارایی دارد. در طول اجرای بعدی xCode به من اطلاع داد كه: "بلیط" ویژگی "از نوع (عددی ، رشته ، آرایه یا دیكشنری) نیست. \ n" بنابراین من این ستون را رها كردم و سرانجام مدل كار كردم:

بار دیگر ، من از نتیجه تحت تأثیر قرار می گیرم ، داده ها نسبتاً آسان بودند ، اما نزدیک به چیزی است که ممکن است بسیاری از برنامه نویسان در برنامه های معمولی با آن روبرو شوند. CreateML کار می کند ، سریع و کارآمد است.

تلاش دوم مسابقه "پیش بینی درآمد در رستوران" بود (https://www.kaggle.com/c/restaurant-revenue-prediction/data) ، که در آن هدف تخمین درآمد رستوران در یک سال معین ، با استفاده از تاریخ افتتاح ، شهر ، نوع رستوران و غیره. دقیقاً مانند مورد Titanic ، من داده ها را بارگیری کردم و زمین بازی را اجرا کردم:

در این حالت ، CreatML تصمیم به استفاده از رکچرور Boosted Tree و در نتیجه MSE حتی پایین تر از نمونه ای است که 3 سال پیش برنده رقابت شد. البته دلیل این امر ممکن است واقعیت این باشد که تابلوهای تبلیغاتی بر اساس داده هایی ایجاد می شوند که عمومی نیستند ، اما با این وجود ، CreatML توانست در چند ثانیه خیلی خوب ، احتمالاً حتی با مدل برنده قابل مقایسه باشد. این همان چیزی است که اکثر توسعه دهندگان به آن احتیاج دارند.

4- جوانب مثبت و منفی CreatML

طرفداران:

  • در حال حاضر این ساده ترین روش برای ساخت مدل های ML برای iOS / macOS است ، به خصوص برای برنامه های Proof Of Concept یا کسانی که با داده های نسبتاً ساده کار می کنند
  • CreateML جهان ML را برای هزاران برنامه نویس iOS / macOS باز می کند
  • بسیار کارآمد و آسان برای استفاده است

منفی:

  • روش های بسیار کمی برای تنظیم و اشکال زدایی مدل نهایی
  • هیچ دانش عمومی از چه مدلی برای طبقه بندی تصاویر استفاده نمی شود
  • هیچ ابزار پردازش داده ای وجود ندارد (اما این بدیهی است ، هدف اپل دانشمندان داده نیستند ، بلکه توسعه دهندگان نرم افزار هستند)

5- نظر من

به نظر می رسد که CreatML واقعاً ابزاری عالی است ، به خصوص برای توسعه دهندگان ، که اصلاً با Machine Learning کار نکردند ، شروع سریع ، بسیار کارآمد و بسیار آسان است. اگر شما یک توسعه دهنده iOS / macOS هستید ، فقط یکبار امتحان کنید.

6. سوال باز

آیا مشکل مدلهای بزرگ ML برای طبقه بندی تصویر فقط با این واقعیت پنهان شده است که تمام وزن ها در iOS / macOS ذخیره می شوند و CreateML ساخت مدل CoreML را شامل می شود که فقط وزن آخرین و آخرین لایه بازآموخته شده (Inception-V3) را دارد؟