<aside> ℹ️ מידע על העמוד

https://www.youtube.com/watch?v=LWMzyfvuehA&ab_channel=StanfordOnline

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

Untitled

הרעיון של Attention הוא למצוא פתרון לבעיית צוואר הבקבוק. הרעיון הוא בכל שלב בדיקודר, ליצור קישור ישיר direct connection לאנקודר כדי למקד אותו בחלק מסוים של משפט הקלט. זאת שיטה שמאפשרת להפיק מידע יותר איכותי ויותר גמיש ממשפט הקלט כדי להשיג תרגום איכותי. הוכח כי Attention משפר משמעותית את הביצועים של מודלי NMT. השיטה גורמת למודל להיות יותר human-like – אפשר להסתכל על משפט הקלט תוך כדי התרגום, במקום להצטרך לזכור את כולו. בנוסף לפתרון בעיית צוואר הבקבוק, attention עוזרת גם עם בעיית הגרדיאנטים הנעלמים, ומספקת מעין קיצור דרך למצבים חבויים רחוקים. כמו כן, השיטה מספקת מובן מסוים של interpretability בכך שהיא מספקת התפלגות שמאפשרת לנו לראות באילו מילים הדיקודר מתמקד בתהליך התרגום, מה שמאפשר לנו ממש לקבל alignment שהרשת לומדת בעצמה, מבלי שהיינו צריכים לאמן alignment system (כמו שהיינו עושים אם היינו בונים מודל SMT).

הרעיון הכללי הוא כזה – מתחילים עם אנקודר באותו אופן כמו ברשת RNN רגילה, ונייצר באמצעות המצב החבוי שלה את טוקן ההתחלה של המשפט המתורגם (המצב החבוי הראשון של הדיקודר, בטורקיז בתמונה). בנוסף, משתמשים בייצוג החבוי הזה כדי להסתכל ישירות על השורש ולקבל ממנו מידע. כלומר, משווים בין המצב החבוי הראשון של הדיקודר עם המצב החבוי של האנקודר בכל נקודה בזמן, ונשתמש במכפלה פנימית ביניהם כדי ליצור attention score (שהוא למעשה סוג של similarity score). משתמשים ב-softmax על ה-attention scores שחישבנו כדי להפוך אותן לוקטור התפלגות. משתמשים בהסתברות של כל אחת מהנקודות בזמן (השלבים של האנקודר, או מילים במשפט המקור) כדי לקבל וקטור attention output שמייצג ממוצע משוקלל של כמה קשב אנחנו רוצים לתת לכל אחת מהמילים במשפט הקלט. לאחר מכן, אנחנו לוקחים  את הוקטור שקיבלנו ולוקחים סכום ממושקל שלו עם המצבים החבויים של האנקודר. זה ישמש אותנו באמצעות softmax כדי לחזות את כל אחת מהמילים במשפט המתורגם. לפעמים ניקח את ה-attention output מהצעד הקודם ובנוסף נזין אותו לדיקודר (ביחד עם הקלט הרגיל שלו).

Untitled

הגדרה פורמלית

וריאציות נוספות של attention

מה שמשותף לכל הוריאציות של attention הוא שישנם מספר ערכים values המסומנים $h_1, \ldots, h_N \in \mathbb{R}^{d_1}$ וכמו כן שאילתא query המסומנת $s \in \mathbb{R}^{d_2}$. כמו כן, בכל הגרסאות מה שנעשה זה: