בקטע הזה נסביר על כמה דרכים לקבלת הטמעות, וגם איך להפוך הטמעות סטטיות להטמעות לפי הקשר.
שיטות לצמצום המאפיינים
יש הרבה שיטות מתמטיות שמאפשרות לתעד את המבנים החשובים של מרחב בעל ממדים גבוהים במרחב בעל ממדים נמוכים. באופן תיאורטי, אפשר להשתמש בכל אחת מהטכניקות האלה כדי ליצור הטמעה למערכת של למידת מכונה.
לדוגמה, ניתוח גורמים ראשיים (PCA) שימש ליצירת הטמעות של מילים. כשנותנים ל-PCA קבוצה של מופעים כמו וקטורים של תיקיית מילים, המערכת מנסה למצוא מאפיינים עם מתאם גבוה שאפשר לכווץ למאפיין יחיד.
אימון הטמעה כחלק מרשת נוירונים
אפשר ליצור הטמעה בזמן אימון של רשת נוירונים למשימה היעד. הגישה הזו מאפשרת לכם לקבל הטמעה מותאמת אישית במיוחד למערכת שלכם, אבל ייתכן שהיא תימשך יותר זמן מאשר אימון ההטמעה בנפרד.
באופן כללי, אפשר ליצור שכבה מוסתרת בגודל d ברשת העצבית, שתיקרא שכבת הטמעה. הערך d מייצג גם את מספר הצמתים בשכבה המוסתרת וגם את מספר המאפיינים במרחב הטמעה. אפשר לשלב את שכבת ההטמעה הזו עם כל התכונות והשכבות המוסתרות האחרות. כמו בכל רשת עצבית עמוקה, הפרמטרים יותאמו במהלך האימון כדי למזער את האובדן בצמתים בשכבת הפלט של הרשת.
נחזור לדוגמה להמלצה על אוכל. המטרה שלנו היא לחזות ארוחות חדשות שהמשתמשים יאהבו על סמך הארוחות האהובות עליהם כרגע. ראשית, נוכל לאסוף נתונים נוספים על חמשת המאכלים המועדפים על המשתמשים. לאחר מכן, נוכל ליצור מודל של המשימה הזו כבעיה של למידה בפיקוח. הגדרנו ארבעה מתוך חמשת המזונות המובילים האלה כנתוני מאפיינים, ואז הקצינו באופן אקראי את המזון החמישי בתור התווית החיובית שהמודל שלנו שואף לחזות, וביצענו אופטימיזציה של התחזיות של המודל באמצעות פונקציית אובדן softmax.
במהלך האימון, מודל רשת העצבים ילמד את המשקלים האופטימליים של הצמתים בשכבה החבויה הראשונה, שמשמש כשכבת הטמעה (embedding). לדוגמה, אם המודל מכיל שלושה צמתים בשכבה החבויה הראשונה, יכול להיות שהוא יקבע ששלושת המאפיינים הרלוונטיים ביותר של מוצרי מזון הם 'כריך', 'קינוח' ו'נוזל'. באיור 12 מוצג ערך הקלט המקודד ב-one-hot של 'נקניק', שהומר לוקטור תלת-ממדי.
![איור 12. רשת עצבית לקידוד one-hot של נקניקיה. השכבה הראשונה היא שכבת קלט עם 5 צמתים, לכל אחד מהם מצורף סמל של האוכל שהוא מייצג (בורשט, נקניקייה, סלט, … ושווארמה). הערכים של הצמתים האלה הם [0, 1, 0, …, 0], בהתאמה, והם מייצגים את הקידוד של 'hot dog' ב-one-hot. שכבת הקלט מחוברת לשכבת הטמעה (embedding) עם 3 צמתים, שהערכים של הצמתים הם 2.98, -0.75 ו-0, בהתאמה. שכבת ההטמעה מחוברת לשכבה מוסתרת עם 5 צמתים, שמחוברת לאחר מכן לשכבת פלט עם 5 צמתים.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?hl=he)
hot dog
שמשמש כקלט לרשת עצבית עמוקה. שכבת הטמעה מתרגמת את הקידוד של one-hot לווקטור ההטמעה התלת-ממדי [2.98, -0.75, 0]
.
במהלך האימון, המשקלים של שכבת ההטמעה יעברו אופטימיזציה כך שוקטור ההטמעה של דוגמאות דומות יהיו קרובים יותר זה לזה. כפי שציינתי קודם, סביר להניח שהמאפיינים שבהם מודל בפועל בוחר להטמעות שלו לא יהיו אינטואיטיביים או מובנים כמו בדוגמה הזו.
הטמעות לפי הקשר
אחת מהמגבלות של וקטור הטמעה סטטי word2vec
היא שלמילים יכולות להיות משמעויות שונות בהקשרים שונים. המילה 'כן' מבטאת דבר אחד בפני עצמה, אבל ההפך בביטוי 'כן, ממש'. 'פוסט' יכול להיות 'דואר', 'לשלוח בדואר', 'גב של עגיל', 'סמל בסוף מרוץ סוסים', 'פוסט-פרודקשן', 'עמודה', 'להציב הודעה', 'להציב שומר או חייל' או 'אחרי', בין אפשרויות אחרות.
עם זאת, בהטמעות סטטיות, כל מילה מיוצגת בנקודה אחת במרחב הווקטור, גם אם יש לה מגוון משמעויות.
בתרגיל הקודם, גילינו את המגבלות של הטמעות סטטיות של המילה orange,שיכולה לציין צבע או סוג של פרי. כשמשתמשים בהטמעה סטטית אחת בלבד, הערך orange תמיד יהיה קרוב יותר לצבעים אחרים מאשר ל-juice כשמתאמנים על מערך הנתונים word2vec
.
הטמעות לפי הקשר פותחו כדי לטפל במגבלה הזו. הטמעות (embeddings) לפי הקשר מאפשרות לייצג מילה באמצעות כמה הטמעות שמשלבות מידע על המילים שמסביב וגם על המילה עצמה. למילה Orange תהיה הטמעה שונה לכל משפט ייחודי שמכיל את המילה במערך הנתונים.
שיטות מסוימות ליצירת הטמעות הקשריות, כמו ELMo, משתמשות בהטמעה הסטטית של דוגמה, כמו הווקטור word2vec
של מילה במשפט, ומעבירות אותה טרנספורמציה באמצעות פונקציה שמשלבת מידע על המילים שמסביב לה. כך נוצרת הטמעה לפי הקשר.
כאן מפורט מידע על הטמעות לפי הקשר
- במודלים של ELMo באופן ספציפי, הטמעת המידע הסטטי נצברת עם הטמעות מידע שנלקחו משכבות אחרות, שמקודדות קריאות של המשפט מקדימה לאחור ומאחורה קדימה.
- מודלים של BERT מסתירים חלק מהרצף שהמודל מקבל כקלט.
- מודלים של Transformer משתמשים בשכבת תשומת לב עצמית כדי לתת משקל לרלוונטיות של המילים האחרות ברצף לכל מילה בנפרד. הם גם מוסיפים את העמודה הרלוונטית ממטריצה של הטמעת מידע (embedding) מיקומי (ראו קידוד מיקומי) לכל הטמעת מידע של טוקן שנלמדה קודם, רכיב אחר רכיב, כדי ליצור את הטמעת הקלט שמוזנת לשאר חלקי המודל לצורך הסקת מסקנות. הטמעת הקלט הזו, ייחודית לכל רצף טקסטואלי ייחודי, היא הטמעה לפי הקשר.
המודלים שמתוארים למעלה הם מודלים של שפה, אבל הטמעות לפי הקשר שימושיות במשימות גנרטיביות אחרות, כמו תמונות. הטמעה של ערכי ה-RGB של הפיקסלים בתמונה של סוס מספקת יותר מידע למודל כשהיא משולבת עם מטריצת מיקום שמייצגת כל פיקסל ועם קידוד מסוים של הפיקסלים הסמוכים, ויוצרת הטמעות לפי הקשר, בהשוואה להטמעות הסטטיות המקוריות של ערכי ה-RGB בלבד.