Connect with us

ืขืœื™ื™ืช NLP ืขื ืžื•ื“ืœื™ื ืฉืœ Transformer | ื ื™ืชื•ื— ืžืงื™ืฃ ืฉืœ T5, BERT ื•-GPT

ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช

ืขืœื™ื™ืช NLP ืขื ืžื•ื“ืœื™ื ืฉืœ Transformer | ื ื™ืชื•ื— ืžืงื™ืฃ ืฉืœ T5, BERT ื•-GPT

mm
Guide on NLP

עיבוד שפה טבעית (NLP) חווה את הפריצות הדרמטיות ביותר בשנים האחרונות, בעיקר בזכות ארכיטקטורת ה-Transformer. פריצות אלו לא רק שיפרו את היכולות של מכונות להבין וליצר שפה אנושית, אלא גם הגדירו מחדש את הנוף של מגוון רחב של יישומים, ממנועי חיפוש ועד AI שיחתי.

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

טכניקות NLP מוקדמות: היסודות לפני Transformers

הטמעת מילים: מ-One-Hot ל-Word2Vec

בגישות NLP מסורתיות, ייצוג המילים היה לעיתים קרובות מילולי וחסר כל צורה של הבנה סמנטית או תחבירית. קידוד One-Hot הוא דוגמה מובהקת למגבלה הזו.

קידוד One-Hot הוא תהליך שבו משתנים קטגוריים מומרים לייצוג וקטורי בינארי, שבו רק סיבית אחת “חמה” (מוגדרת ל-1) וכל השאר “קרות” (מוגדרות ל-0). בהקשר של NLP, כל מילה באוצר מילים מיוצגת על ידי וקטורים One-Hot, שבהם כל וקטור הוא בגודל של האוצר, וכל מילה מיוצגת על ידי וקטור עם כל 0 ו-1 אחד במיקום המתאים למילה ברשימת האוצר.

דוגמה לקידוד One-Hot

נניח שיש לנו אוצר מילים זעיר עם חמש מילים בלבד: [“מלך”, “מלכה”, “גבר”, “אישה”, “ילד”]. וקטורי ה-One-Hot עבור כל מילה יראו כך:

  • “מלך” -> [1, 0, 0, 0, 0]
  • “מלכה” -> [0, 1, 0, 0, 0]
  • “גבר” -> [0, 0, 1, 0, 0]
  • “אישה” -> [0, 0, 0, 1, 0]
  • “ילד” -> [0, 0, 0, 0, 1]

ייצוג מתמטי

אם נסמן V כגודל האוצר שלנו ו-wi כווקטור ה-One-Hot של המילה ה-i, הייצוג המתמטי של wi היה:

wi=[0,0,,1,,0,0] where the i-th position is 1 and all other positions are 0.where the i-th position is 1 and all other positions are 0.

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

המצאת הטמעות מילים, במיוחד Word2Vec, הייתה רגע מכריע ב-NLP. Word2Vec, שפותח על ידי צוות ב-Google בהובלת טומאש מיקולוב ב-2013, ייצג מילים במרחב וקטורי צפוף, תופס מידע סמנטי ותחבירי על המילים על בסיס ההקשר שלהן בתוך קורפוס גדול של טקסט.

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

למשל, נניח שאימנו מודל Word2Vec ועכשיו מייצגים מילים במרחב 3-ממדי (שבדרך כלל יהיה גבוה יותר, אך מופחת כאן לצורך פשטות). ההטמעות (שהן בדרך כלל רב-ממדיות, אך מופחתות כאן) עשויות להיראות כך:

  • “מלך” -> [0.2, 0.1, 0.9]
  • “מלכה” -> [0.21, 0.13, 0.85]
  • “גבר” -> [0.4, 0.3, 0.2]
  • “אישה” -> [0.41, 0.33, 0.27]
  • “ילד” -> [0.5, 0.5, 0.1]

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

ייצוג מתמטי

אם נייצג את ההטמעה של Word2Vec של מילה כ-vw, ומרחב ההטמעות שלנו הוא d ממדים, אז vw יכול להיות מיוצג כ:

vw=[v1,v2,,vd] where each vi is a floating-point number representing a feature of the word in the embedding space.

יחסים סמנטיים

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

vector(“מלך”) – vector(“גבר”) + vector(“אישה”)≈vector(“מלכה”)vector(“מלך”) – vector(“גבר”) + vector(“אישה”)vector(“מלכה”)

זה אפשרי מכיוון ש-Word2Vec מסתגל את וקטורי המילים במהלך האימון כך שמילים שחולקות הקשרים משותפים בקורפוס יוצבו בקרבה במרחב הווקטורי.

Word2Vec משתמש בשתי ארכיטקטורות עיקריות ליצירת ייצוג מפוזר של מילים: Continuous Bag-of-Words (CBOW) ו-Skip-Gram. CBOW מנבא מילת יעד ממילים הקשר, בעוד Skip-Gram עושה את ההפוך, מנבא מילים הקשר ממילת יעד. זה איפשר למכונות להתחיל להבין שימוש ומשמעות של מילים בדרך מורכבת יותר.

דגמי רצף: RNNs ו-LSTMs

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

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

רשתות LSTM (Long Short-Term Memory), שהוצגו על ידי Sepp Hochreiter ו-Jürgen Schmidhuber ב-1997, פתרו את הבעיה הזו עם ארכיטקטורה מתוחכמת יותר. LSTMs הן בעלות שערים ששולטים בזרימת המידע: שער כניסה, שער “שכחה” ושער יציאה. שערים אלו קובעים מה מידע נשמר, מעודכן או מושמט, מה שמאפשר לרשת לשמור על תלות ארוכת טווח ומשמעותית משפר את הביצועים במגוון רחב של משימות NLP.

ארכיטקטורת ה-Transformer

נוף ה-NLP עבר שינוי דרמטי עם הופעת המודל ה-Transformer במאמר המכונן “Attention is All You Need” מאת Vaswani ואח’ ב-2017. ארכיטקטורת ה-Transformer סוטה מעיבוד רציף של RNNs ו-LSTMs ומשתמשת במנגנון הקרוי ‘self-attention’ כדי לשקול את ההשפעה של חלקים שונים של נתוני הקלט.

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

מקודד ומפענח ב-Transformers:

במודל ה-Transformer המקורי, כפי שתואר במאמר “Attention is All You Need” מאת Vaswani ואח’, הארכיטקטורה מחולקת לשני חלקים עיקריים: המקודד (Encoder) והמפענח (Decoder). שני החלקים האלו מורכבים משכבות שיש להן מבנה כללי דומה אך משרתים מטרות שונות.

מקודד:

  • תפקיד: תפקידו של המקודד הוא לעבד את נתוני הקלט וליצור ייצוג התופס את היחסים בין האיברים (כגון מילים במשפט). חלק זה של ה-Transformer לא יוצר תוכן חדש; הוא רק מעביר את הקלט למצב שהמפענח יכול להשתמש בו.
  • פונקציונליות: כל שכבה של המקודד מכילה מנגנונים של self-attention ורשתות נוירונים קדמיות. מנגנון ה-self-attention מאפשר לכל מיקום במקודד להתייחס לכל המיקומים בשכבה הקודמת של המקודד—כך, הוא יכול ללמוד את ההקשר סביב כל מילה.
  • הטמעות הקשריות: פלט המקודד הוא סדרה של וקטורים המייצגים את רצף הקלט במרחב בעל ממד גבוה. וקטורים אלו מכונים לעיתים “הטמעות הקשריות” מכיוון שהם קודדים לא רק את המילים היחידות אלא גם את ההקשר שלהן בתוך המשפט.

מפענח:

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

ื‘ื™ืœื™ืชื™ ืืช ื—ืžืฉ ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช ื‘ื˜ื‘ื™ืœื” ื‘ืขื•ืœื ื”ืžืจืชืง ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื” ื•ืœืžื™ื“ื” ืขืžื•ืงื”. ืชืฉื•ืงืชื™ ื•ืžื•ืžื—ื™ื•ืชื™ ื”ื•ื‘ื™ืœื• ืื•ืชื™ ืœืชืจื•ื ืœื™ื•ืชืจ ืž-50 ืคืจื•ื™ืงื˜ื™ื ืฉื•ื ื™ื ืฉืœ ื”ื ื“ืกืช ืชื•ื›ื ื”, ืขื ื“ื’ืฉ ืžื™ื•ื—ื“ ืขืœ AI/ML. ืกืงืจื ื•ืชื™ ื”ืžืชืžืฉื›ืช ื’ื ื”ื•ื‘ื™ืœื” ืื•ืชื™ ืœืขื‘ืจ ืขื™ื‘ื•ื“ ืฉืคื” ื˜ื‘ืขื™ืช, ืชื—ื•ื ืฉืื ื™ ืฉื•ืืฃ ืœื—ืงื•ืจ ืขื•ื“.

ื’ื™ืœื•ื™ ื ืื•ืช ืœืžืคืจืกืžื™ื: Unite.AI ืžื—ื•ื™ื‘ืช ืœืกื˜ื ื“ืจื˜ื™ื ืžืขืจื›ืชื™ื™ื ืžื—ืžื™ืจื™ื ื›ื“ื™ ืœืกืคืง ืœืงื•ืจืื™ื ืžื™ื“ืข ื•ื—ื“ืฉื•ืช ืžื“ื•ื™ืงื™ื. ื™ื™ืชื›ืŸ ืฉื ืงื‘ืœ ืชื’ืžื•ืœ ื›ืืฉืจ ืชืœื—ืฆื• ืขืœ ืงื™ืฉื•ืจื™ื ืœืžื•ืฆืจื™ื ืฉืกืงืจื ื•.