Apple CreateML לעומת Kaggle

במהלך ה- WWDC האחרון Apple הציגה את הכלי החדש ביותר שנקרא CreateML. כחובב ML התרשמתי ממש ממה שראיתי בפגישה ייעודית (703), כך שחשבתי שכדאי לחקור כמה זה באמת חזק.

1. צור HTML על קצה המזלג (אתה יכול לדלג אם צפית במצגת WWDC).

Create ML היא מסגרת חדשה המיועדת לסייע למפתחים לבנות בקלות ובמהירות מודלים של למידת מכונה באמצעות Swift ו- Xcode. נכון לעכשיו הוא מסוגל לעבוד עם 3 סוגים של נתונים: תמונות, טקסט ונתונים טבלאים. זרימת העבודה ממש פשוטה, אתה רק צריך לספק קבוצה של נתוני הדרכה, לכתוב מספר שורות קוד וקסם קורה, מודל CoreML קטן מוכן לשימוש באפליקציה שלך. אפל מבטיחה להפחית משמעותית את זמן האימונים, שבמקרה של 10,000 תמונות יש לספור תוך דקות (כמו תמיד אפל נמנעת מלמסור פרטים). ההדרכה כל כך מהירה, מכיוון (במקרה של מסווג תמונות) אפל משתמשת בהעברת למידה. איננו יודעים מה הבסיס של רשת עצבית, אך במהלך המצגת הוזכר Inception-v3 כדוגמה לפיתרון האיכותי לסיווג תמונות.

2. מצגת הדגמת WWDC על קצה המזלג (אתה יכול לדלג אם צפית במצגת WWDC).

במהלך ה- WWDC הראו המגישים באיזו קלות אנו יכולים לבנות דגמים שונים, הראשון היה מסווג תמונות, שנבנה רק בשורות קוד אחד:

הדוגמה השנייה הייתה דומה מאוד, כשמסווג טקסטים החליט אם הטקסט חיובי או שלילי, כמו במקרה תמונה, רק מספר שורות קוד הספיקו כדי להכשיר אותו:

באשר לי, ההדגמה המעניינת ביותר הייתה האחרונה, שהציגה עבודה עם נתונים טבלאים. במקרה זה CreateML משתמש בפורמט נתונים חדש, שנקרא MLDataTable, במבט ראשון זה רק עטיפה למטריקס נתונים רגיל, למרבה המזל יש ניתוח מובנה של CSV ו- JSON.

במקרה של נתונים טבלאים, CreateML מציעה 2 נתיבים: קל אחד וקצת יותר מתוחכם. בהתחלה תסתכל על הדרך הפשוטה ביותר למצוא נוסחת מחיר דירה, היא נראית כמעט זהה לשתי הדוגמאות הקודמות:

עלולות להיפתר בעיות נתונים טבלאיות (תלוי במקרה) באמצעות MLRegressor לבעיות רגרסיה ו- MLClassifier לסיווג. אבל זה לא כל מה שמעניין באמת, תוך כדי עבודה על נתונים טבלאים, אתה יכול להחליט ידנית באיזו שיטת סיווג / רגרסיה ישמשו, כזוג התמיכה של CreateML הנפוץ ביותר בתעשייה:

3. צור HTML בבעיות בחיים האמיתיים

יישומי הדגמה הם תמיד פשוטים ככל האפשר, זה מקל עליהם להבין וזה בסדר. עם זאת, במקרה של למידת מכונה, העובדה שמשהו עובד בדוגמה פשוטה, לא ממש מרמזת שהוא יעבוד עם דוגמה מתוחכמת יותר. משתמשי היעד של CreateML הם מפתחים, לא מומחי ML או מדעני נתונים, ולכן החלטתי להתנהג כמו חידוש ממוצע של ML, אל תנתח נתונים באופן עמוק, פשוט הכניס סטים ל- CreateML ותן לו לעשות את הקסם. החלטתי להשתמש בתחרויות Kaggle כנדרט, ואז להשוות את איכות הדגם למה שהשיג Kagglers, רציתי גם לבדוק כמה מהר הוא CreateML. במקרים רבים המפתח לדגם ההצלחה הוא הבנת נתונים וטיפול בעיבוד מוקדם, אם המפתח רק יבוא CSV ויפעיל MLRegressor בציפייה לתוצאות באיכות גבוהה לבעיה מתוחכמת ... הוא עשוי להיות מאוכזב באמת מההשפעה. בגלל זה החלטתי לבחור דוגמאות, שקרובות לבעיות בחיים האמיתיים אך לא מורכבים במיוחד, מכיוון שזה יהיה חסר טעם ללא עיבוד מראש של נתונים.

תצורת ה- Macbook Pro שלי כהפניה:

התחלתי בבדיקת מסווג תמונה, לבדיקה השתמשתי ב"סיווג שתילי שתילים "(https://www.kaggle.com/c/plant-seedlings-classification), המטרה היא לקבוע את המין של שתיל מתמונה. מערך הנתונים גדול משמעותית מזה שמוצג בהדגמה, הוא מכיל למעלה מ 4300 תמונות, אני מריץ את הקוד בשתי שורות קוד בלבד, התוצאה נראית למטה:

ממש התרשמתי מהתוצאה, לקח 5 דקות במחשב נייד למפתחים טיפוסי להכשיר מודל די טוב, תוך שימוש בנתוני הדרכה של 1.7 ג'יגה-בייט. האם יש דרך טובה יותר לבנות מודל Proof of Concept ולהכניס אפליקציית iOS / macOS לעבודה כדי לאמת רעיון? אני לא חושב כך. אפל, עשית עבודה נהדרת, באמת. מה שמעניין גם לשים לב הוא ש- CreateML מייצרת אוטומטית ערכת אימות מזו המסופקת כהדרכה, כך שהמפתח לא צריך לפצל נתונים אלה באופן ידני, צעד קטן אחד כדי לפשט את התהליך.

אוקיי, לא כולם מתכוונים לבנות אפליקציית "Not Hotdog", אז בואו נסתכל על מקרה אחר מאוד שכיח בלימוד מכונות, "נתונים טבלאיים" ובעיות רגרסיה / סיווג. במקרה זה התחלתי עם "התחלת הישרדות טיטניק" (https://www.kaggle.com/c/titanic), מטרת התחרות הזו היא לקבוע אם נוסע מסוים ישרוד התנגשות עם קרחון על בסיס נתונים כמו גיל, מין , סוג הכרטיס, הסיפון וכו '.

הורדתי קובץ CSV, יצרתי MLClassifier, לחץ על הפעלה ו ...

אוקיי, זה לא עובד, CreateML זקוק לנתונים נקיים לחלוטין. זו לא בעיה גדולה, אני יכול להסיר שורות עם עמודות ריקות באמצעות שורות זוגיות של פייתון, עם זאת זה מצמצם את כמות נתוני האימונים מ- 891 דוגמאות ל -183 בלבד, אבל לפחות זה עובד. במהלך ההפעלה הבאה הודיע ​​לי xCode כי: "התכונה \ 'כרטיס \' אינה מסוג (מספרי, מחרוזת, מערך או מילון). \ N" אז השמטתי את העמודה הזו ולבסוף קיבלתי מודל עובד:

שוב, אני מתרשם מהתוצאה, הנתונים היו יחסית קלים, אבל הם קרובים לאיזה מפתחים עשויים להתמודד אפליקציות טיפוסיות. CreateML עובד, זה מהיר ויעיל.

הניסיון השני היה תחרות "חיזוי הכנסות מסעדה" (https://www.kaggle.com/c/restaurant-revenue-prediction/data), כאשר המטרה היא להעריך את הכנסות המסעדה בשנה נתונה, באמצעות תאריך הפתיחה, עיר, סוג מסעדה וכו '. זהה למקרה של טיטאניק, פשוט הורדתי את הנתונים והפעלתי מגרש משחקים:

במקרה זה CreateML החליטה להשתמש ב- Boosted Tree Regressor וכתוצאה מכך MSE הוא אפילו נמוך יותר מזה שזכה בתחרות לפני 3 שנים. כמובן שהסיבה לכך עשויה להיות העובדה שמנהיגים מובילים מבוססים על נתונים שאינם פומביים, אך עדיין, CreateML הצליחה לבנות טוב מאוד, ככל הנראה אפילו בהשוואה לדגם המנצח תוך שניות ספורות. זה מה שרוב המפתחים צריכים.

4. היתרונות והחסרונות של CreateML

יתרונות:

  • נכון לעכשיו זו הדרך הקלה ביותר לבנות דגמי ML עבור iOS / macOS, במיוחד עבור אפליקציות Proof Of Concept, או כאלה העובדים עם נתונים פשוטים יחסית
  • CreateML פותח עולם ML בפני אלפי מפתחים של iOS / macOS
  • יעיל מאוד ונוח לשימוש

חסרונות:

  • מעט מאוד דרכים להתאים ולבחור את המודל הסופי
  • אין שום ידיעה ציבורית באיזה מודל משתמשים לסיווג תמונות
  • אין כלים לעיבוד נתונים מראש (אך זה ברור, יעד של אפל אינם מדעני נתונים, אלא מפתחי תוכנה)

5. דעתי

נראה ש- CreateML הוא באמת כלי נהדר, במיוחד עבור מפתחים שלא עבדו בכלל עם Machine Learning, זה מהיר, די יעיל וקל מאוד להתחיל איתו. אם אתה מפתח iOS / macOS, נסה זאת.

6. שאלה פתוחה

האם הבעיה של דגמי ML גדולים לסיווג תמונות מסתתרת רק מהעובדה שכל המשקולות מאוחסנות ב- iOS / macOS ו- CreateML בונה מודל CoreML המכיל רק משקולות לשכבה האחרונה וההכשרה מחדש של (Inception-V3)?