מה זה בעצם Attention Mask - ולמה הוא חשוב?

תוכן עניינים

מה זה בעצם Attention Mask - ולמה הוא חשוב?

כשאנחנו מדברים על מודלי Transformer, המילה “attention” נשמעת בכל מקום - אבל מאחורי הקלעים יש רכיב קטן אך קריטי בשם attention_mask, שבלעדיו המודל פשוט לא היה מבין איפה להסתכל.

אז מה זה Attention Mask?

כשמודל מקבל רצף של טוקנים (מילים, חלקי מילים, או תווים), הוא “מסתכל” על כולם במקביל, ומחשב לכל טוקן עד כמה עליו לשים לב לטוקנים האחרים.

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

כאן נכנס ה-attention_mask: זהו מפת סינון שאומרת למודל:

“אל תשים לב לחלקים האלה - הם לא אמיתיים.”

איך זה נראה בפועל?

ה-mask הוא פשוט מערך של אפסים ואחדים:

  • 1 - הטוקן הזה רלוונטי.
  • 0 - להתעלם ממנו.

לדוגמה: אם הקלט הוא [Hello, world, <PAD>, <PAD>], אז ה-mask יהיה [1, 1, 0, 0].

כשהמודל מחשב את ה-attention, הוא מעניש (או מאפס) את הצומתים שבהם המסכה היא 0, כך שהחישוב מתרכז רק במידע האמיתי.

למה זה חשוב ב-Inference Optimization?

בשלב ה-inference, כל חישוב עולה בזמן ובאנרגיה. אם לא נשתמש ב-mask, המודל יבצע חישובים מיותרים על padding - מה שמעלה latency ומבזבז משאבים.

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

בשורה התחתונה

Attention Mask הוא לא “תוספת קטנה” אלא רכיב יסודי: הוא זה שמאפשר למודל להבין מה חלק מהרצף שווה תשומת לב - ומה לא.

בלי ה-mask, המודל רואה את כל הקלט כחשוב באותה מידה, וזה כמו לנסות להבין משפט - כשלא מבחינים בין מילה אמיתית לבין רווחים מיותרים.

תגובות