הטמעות: איך ליצור הטמעות

בקטע הזה מתוארות כמה שיטות ליצירת הטמעות, וגם מוסבר איך להפוך הטמעות סטטיות להטמעות לפי הקשר.

שיטות להורדת ממד

יש הרבה שיטות מתמטיות שבעזרתן אפשר לייצג את המבנים החשובים של מרחב עם הרבה ממדים במרחב עם מעט ממדים. באופן תיאורטי, ניתן ליישם כל אחת מהשיטות האלה כדי ליצור הטמעה של מערכת למידת מכונה.

לדוגמה, כדי ליצור הטמעות מילים, נעשה שימוש בשיטה ניתוח רכיבים עיקריים (PCA). בהינתן קבוצת מופעים כמו וקטורים של מודל Bag of Words, בשיטת PCA המערכת מנסה למצוא ממדים שיש ביניהם מתאם גבוה, ושניתן להמיר אותם לממד יחיד.

אימון של הטמעה במסגרת רשת נוירונים

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

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

בהקשר של הדוגמה לגבי המלצות לאוכל, המטרה שלנו היא לחזות מה המנות החדשות שהמשתמשים יאהבו על סמך המנות שהם הכי אוהבים כרגע. קודם אנחנו יכולים לאסוף עוד נתונים לגבי 5 המאכלים שהמשתמש הכי אוהב. אחר כך נוכל לסווג את המשימה הזו כבעיית "למידה מפוקחת". נגדיר 4 מתוך 5 המאכלים האלה שהוא הכי אוהב בתור נתוני מאפיינים, ואת המאכל החמישי נגדיר באופן אקראי בתור התווית החיובית שהמודל שלנו צריך לחזות. בנוסף, נבצע אופטימיזציה לחיזויים של המודל באמצעות Softmax Loss.

במהלך האימון, מודל רשת הנוירונים ילמד מה המשקלים האופטימליים של הצמתים בשכבה הנסתרת הראשונה, המשמשת כשכבת ההטמעה. לדוגמה: אם המודל מכיל 3 צמתים בשכבה הנסתרת הראשונה, יכול להיות שהוא יקבע ש-3 הממדים הכי רלוונטיים של מאכלים הם סנדוויצ'יות, קינוחיות ונוזליות. באיור 12 רואים את ערך הקלט של hot dog בקידוד "חם-יחיד" (one-hot), שמומר לווקטור תלת-ממדי.

Figure 12. Neural net for one-hot encoding of hot dog. The first layer is an
    input layer with 5 nodes, each annotated with an icon of the food it
    represents (borscht, hot dog, salad, ..., and shawarma). These nodes have
    the values [0, 1, 0, ..., 0], respectively, representing the one-hot
    encoding of 'hot dog'. The input layer is connected to a 3-node embedding
    layer, whose nodes have the values 2.98, -0.75, and 0, respectively. The
    embedding layer is connected to a 5-node hidden layer, which is then
    connected to a 5-node output layer.
איור 12. קידוד "חם-יחיד" של הפריט hot dog שנשלח כקלט לרשת נוירונים עמוקה. שכבת הטמעה ממירה את הקידוד מסוג "חם-יחיד" לווקטור ההטמעה התלת-ממדי [2.98, -0.75, 0].

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

הטמעות לפי הקשר

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

אבל בהטמעות סטטיות, כל מילה מיוצגת על ידי נקודה אחת במרחב הווקטורי, למרות שיכולים להיות לה פירושים שונים. בתרגיל האחרון גיליתם את המגבלות של הטמעות סטטיות למילה orange שיכולה לציין צבע או סוג של פרי. כשיש רק הטמעה סטטית אחת, המילה orange תמיד תהיה קרובה יותר לצבעים אחרים מאשר למילה juice באימון על קבוצת הנתונים של word2vec.

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

בשיטות מסוימות ליצירת הטמעות לפי הקשר, למשל ELMo, המערכת עושה טרנספורמציה להטמעה הסטטית של דוגמה כמו הווקטור של word2vec למילה במשפט, באמצעות פונקציה שמכילה מידע על המילים שלפניה ואחריה. ככה נוצרת הטמעה לפי הקשר.

לחצו כאן כדי לקבל פרטים לגבי הטמעות לפי הקשר

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

המודלים שמתוארים למעלה הם מודלים של שפה, אבל אפשר ליישם הטמעות לפי הקשר גם במשימות אחרות של AI גנרטיבי, כמו יצירת תמונות. בהשוואה להטמעות הסטטיות המקוריות של ערכי ה-RGB בלבד, הטמעת ערכי הפיקסלים של ה-RGB בתמונה של סוס מספקת יותר מידע למודל כשמשלבים אותה עם מטריצה לפי מיקום שמייצגת כל פיקסל וגם קידוד של הפיקסלים הקרובים, כי ככה נוצרות הטמעות לפי הקשר.