BERT (מודל שפה)

מודל **BERT (Bidirectional Encoder Representations from Transformers**) הוא מודל שפה שהוצג באוקטובר 2018 על ידי חוקרים ב-Google. המודל לומד לייצג טקסט כרצף של וקטורים באמצעות למידה עצמית-מונחית (self-supervised learning). הוא מתבסס על ארכיטקטורת טרנספורמר הכוללת מקודד בלבד (encoder-only).

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

מודל BERT מאומן באמצעות שני תהליכי למידה: חיזוי מילים מוסתרות (masked token prediction) וחיזוי המשפט הבא (next sentence prediction). כתוצאה מתהליך האימון הזה, BERT לומד ייצוגים סמויים והקשריים של מילים בהתאם להקשר שבו הן מופיעות, בדומה למודלים כמו ELMo  ו-GPT-2 .

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

BERT הוטמע במקור בשפה האנגלית בשני גודלי מודל:

BERT BASE (110 מיליון פרמטרים) ו־BERT LARGE (340 מיליון פרמטרים). שני המודלים אומנו על Toronto BookCorpus (800 מיליון מילים) ועל הוויקיפדיה האנגלית (2,500 מיליון מילים). משקלי המודל פורסמו לציבור ב־GitHub. ב-11 במרץ 2020, שוחררו 24 גרסאות קטנות יותר של המודל, הקטן ביותר הוא BERT TINY, הכולל 4 מיליון פרמטרים בלבד.

## ארכיטקטורה
ממוזער|330x330 פיקסלים| דיאגרמה סכמטית ברמה גבוהה של BERT. הוא קולט טקסט, מסמל אותו לרצף של טוקנים, מוסיף טוקנים מיוחדים אופציונליים ומחיל מקודד טרנספורמר. ניתן להשתמש במצבים המוסתרים של השכבה האחרונה כהטמעות מילים בהקשר.
BERT מבוסס על ארכיטקטורת טרנספורמר "מקודד בלבד". ברמה גבוהה יותר, BERT מורכב מ-4 מודולים:
* Tokenizer: מודול זה ממיר פיסת טקסט באנגלית לרצף של מספרים שלמים ("טוקנים" - "אסימונים").
* Embedding – הטמעה: מודול זה ממיר את רצף הטוקנים (האסימונים) למערך של וקטורים בעלי ערך ממשי המייצגים את הטוקנים (האסימונים). המטרה היא להמיר את סוגי הטוקנים (האסימונים) הבדידים למרחב אוקלידי בעל ממדים נמוכים יותר.
* Encoder – מקודד: מערך של בלוקי Transformer המשתמשים במנגנון תשומת לב עצמית (self-attention), אך ללא מיסוך סיבתי (causal masking).
* Task head – ראש משימה: מודול זה ממיר את וקטורי הייצוג הסופיים בחזרה לטוקנים (האסימונים) המקודדים בצורת one-hot על ידי יצירת התפלגות הסתברות צפויה על סוגי הטוקנים (האסימונים). ניתן לראותו כמעין מפענח פשוט (decoder), שמפענח את הייצוג הסמוי לסוגי טוקנים (אסימונים).

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

### הטמעה
סעיף זה מתאר את ההטמעה בשימוש על ידי BERT BASE. אופן הטמעת הדגם השני, BERT LARGE, דומה, רק גדול יותר.

הטוקנייזר של BERT הוא WordPiece, שהיא אסטרטגיה לפירוק מילים לתת-מילים. גודל אוצר המילים של המודל הוא 30,000, וכל טוקן (אסימון) שלא מופיע באוצר המילים מוחלף ב - `[UNK]` ("לא ידוע").
ממוזער|284x284 פיקסלים| שלושת סוגי ההטמעה המשמשים את BERT: סוג טוקן, מיקום וסוג מקטע.
השכבה הראשונה היא שכבת ההטמעה, המכילה שלושה מרכיבים: הטמעת סוגי טוקנים (אסימונים), הטמעת מיקומים והטמעת סוגי מקטעים.
* סוג הטוקן (אסימון): סוג הטוקן (אסימון) הוא שכבת הטמעה סטנדרטית, הממירה וקטור one-hot לווקטור דחוס המבוסס על סוג האסימון.
* מיקום: הטמעות המיקום מבוססות על המיקום של הטוקן ברצף. BERT משתמש במיקומים מוחלטים, שבהם כל מיקום ברצף ממופה לווקטור בעל ערכים ממשיים. כל מימד בווקטור מורכב מפונקציה סינוסואידית  שלוקחת את המיקום ברצף כקלט.
* סוג המקטע: באמצעות אוצר מילים של 0 או 1 בלבד, שכבת הטמעה זו מייצרת וקטור צפוף על סמך האם הטוקן (האסימון) שייך למקטע הטקסט הראשון או למקטע הטקסט השני באותו קלט. במילים אחרות, טוקנים (אסימונים) מסוג 1 הם כל הטוקנים (האסימונים) המופיעים אחרי הטוקן (האסימון) המיוחד `[SEP]`.

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

### משפחת ארכיטקטורה
למחסנית המקודד של BERT יש 2 פרמטרים חופשיים: L, מספר השכבות, ו - H, הגודל הנסתר. תמיד יש H/64 ראשי תשומת לב עצמית, וגודל ההזנה/המסנן הוא תמיד 4H. על ידי שינוי של שני המספרים הללו, ניתן לקבל משפחת מודלים שלמה של BERT.

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

הסימון עבור מחסנית המקודד נכתב כ-L/H. לדוגמה, BERT BASE כתוב כ-12L/768H, BERT LARGE כ-24L/1024H, ו-BERT TINY כ-2L/128H.

## אימון המודל
### אימון מקדים (Pre-training)
BERT אומן מראש בו-זמנית על שתי משימות:

#### חיזוי מילים מוסתרות (Masked language modeling)
ממוזער| משימת דוגמנות השפה במסכה.
במודל של חיזוי בשיטת אסימונים מוסתרים, 15% מהאסימונים ייבחרו באופן אקראי למשימת חיזוי-מוסתר, ומטרת האימון היא לחזות את הטוקן (האסימון) המכוסה בהתחשב בהקשר שלו. בפירוט, הטוקן (האסימון) הנבחר:
* מוחלף באסימון-מסיכה `[MASK]` בסבירות של 80%,
* מוחלף באסימון מילה אקראית בסבירות של 10%,
* לא מוחלף בסבירות של 10%.

הסיבה שלא כל הטוקנים (האסימונים) הנבחרים מוסתרים היא כדי להימנע מבעיית שינוי במערך הנתונים (Dataset Shift). בעיה זו מתעוררת כאשר התפלגות הקלטים הנראים במהלך האימון שונה באופן משמעותי מההתפלגות בה נתקל המודל במהלך השימוש. מודל BERT מאומן עשוי להיות מיושם על ייצוג מילים (כמו Word2Vec), שבו הוא יופעל על משפטים שלא מכילים אסימונים `[MASK]`. בהמשך נמצא שתוצאות אימון מגוונות יותר הן בדרך כלל טובות יותר.

כדוגמה להמחשה, נחשב את המשפט "הכלב שלי חמוד". המשפט יחולק תחילה לטוקנים (אסימונים) כמו "הכלב 1 שלי 2 חמוד 3 ". לאחר מכן ייבחר אסימון (אות) אקראי במשפט. נניח שיהא זה השלישי, " 3 חמוד". בשלב הבא, יהיו שלוש אפשרויות:
* בסבירות של 80%, הטוקן (האסימון) שנבחר מוסתר, וכתוצאה מכך "הכלב 1 שלי 2 `[MASK]` 3 ";
* בסבירות של 10%, הטוקן (האסימון) שנבחר מוחלף באסימון אקראי שנדגם באופן אחיד, כגון "שמח", וכתוצאה מכך "כלב 1 שלי 2 שמח 3 ";
* בסבירות של 10%, שום דבר לא נעשה, וכתוצאה מכך "כלב 1 שלי 2 חמוד 3 ".

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

#### חיזוי המשפט הבא (Next sentence prediction)
ממוזער| משימת חיזוי המשפט הבא.
בהינתן שני קטעי טקסט, המודל חוזה אם שני המקטעים הופיעו ברצף בקורפוס האימון, ומפיק את אחת התויות `[IsNext]` או `[NotNext]`. הקטע הראשון מתחיל עם התו המיוחד `[CLS]` (מסמן "סיווג"). שני הקטעים מופרדים על ידי תו מיוחד `[SEP]` (מסמן "הפרדה"). לאחר עיבוד שני המקטעים, וקטור הפלט הראשון (הווקטור המייצג את `[CLS]`) מועבר לרשת עצבית נפרדת לצורך הסיווג הבינארי ל-`[IsNext]` ו-`[NotNext]`.
* לדוגמה, בהינתן " `[CLS]` הכלב שלי חמוד `[SEP]` הוא אוהב לשחק", המודל צריך להוציא `[IsNext]`.
* בהתחשב ב" `[CLS]` הכלב שלי חמוד `[SEP]` איך מגנטים עובדים" המודל צריך להוציא `[NotNext]`.

### כוונון המודל (Fine-tuning)
BERT נועד להיות מודל כללי מאומן מראש עבור יישומים שונים בעיבוד שפה טבעית. כלומר, לאחר האימון המקדים, ניתן לכוונן את BERT עם פחות משאבים על מערכי נתונים קטנים יותר, כדי לייעל את הביצועים שלו במשימות ספציפיות כגון הסקת מסקנות משפה טבעית, סיווג טקסט, וכן במשימות יצירת שפה מבוססות רצף כמו שאלות ותשובות ושיחה.

המאמר המקורי של BERT פרסם תוצאות המדגימות איך כמות קטנה של כוונון עדין (עבור BERT LARGE, שעה אחת על 1 Cloud TPU) אפשרה לו להשיג ביצועים מתקדמים יותר במספר משימות של הבנת שפה טבעית:
* ערכת משימות GLUE (הערכת הבנת שפה כללית) (המורכבת מ-9 משימות);
* SQuAD (Stanford Question Answering Dataset) v1.1 ו-v2.0;
* SWAG (מצבים עם דורות יריבים).

במאמר המקורי, כל הפרמטרים של BERT מכוונים עדין, ומומלץ, עבור יישומים במורד הזרם שהם סיווגי טקסט, הפלט ב הקלט `[CLS]` יוזן לשכבה ליניארית-softmax כדי לייצר את פלטי התווית.

### עלות
BERT הוכשר על BookCorpus (800 מיליון מילים) וגרסה מסוננת של ויקיפדיה האנגלית (2,500 מיליון מילים) ללא רשימות, טבלאות וכותרות.

אימון BERT BASE על 4 TPU בענן (16 שבבי TPU בסך הכל) ארך 4 ימים, בעלות משוערת של 500 דולר. אימון BERT LARGE על 16 TPU בענן (סה"כ 64 שבבי TPU) ארך 4 ימים.

## פשר
מודלים של שפה כמו ELMo, GPT-2 ו-BERT, הולידו את המחקר של "BERTology", המנסה לפרש את מה שנלמד על ידי המודלים הללו. הביצועים שלהם במשימות הבנת השפה הטבעית הללו עדיין אינם מובנים היטב. מספר פרסומי מחקר בשנים 2018 ו-2019 התמקדו בחקירת הקשר מאחורי הפלט של BERT כתוצאה מרצפי קלט שנבחרו בקפידה, ניתוח של ייצוגים וקטורים פנימיים באמצעות בדיקה של מסווגים, והקשרים המיוצגים על ידי משקלי תשומת לב.

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

עם זאת, זה כרוך במחיר: עקב ארכיטקטורת מקודד בלבד חסרה מפענח, BERT לא יכול לקבל הנחיה ואינו יכול ליצור טקסט, בעוד מודלים דו-כיווניים באופן כללי אינם פועלים ביעילות ללא הצד הימני, ולכן קשה לבצע הנחיה. כדוגמה להמחשה, אם רוצים להשתמש ב-BERT כדי להמשיך בקטע משפט "היום, הלכתי אליו", אז בתמימות אפשר להסוות את כל הים כ"היום, הלכתי אל `[MASK]` `[MASK]` `[MASK]` ... `[MASK]`." כאשר המספר של `[MASK]` הוא אורך המשפט שאליו רוצים להאריך. עם זאת, זה מהווה שינוי במערך נתונים, שכן במהלך האימון, BERT מעולם לא ראה משפטים עם כל כך הרבה ים מוסווים. כתוצאה מכך, הביצועים שלו יורדים. טכניקות מתוחכמות יותר מאפשרות יצירת טקסט, אך בעלות חישובית גבוהה.

## היסטוריה
BERT פורסם במקור על ידי חוקרי גוגל ג'ייקוב דוולין, מינג-וויי צ'אנג, קנטון לי וקריסטינה טוטנובה. מקורו של העיצוב מייצוג הקשרי טרום-אימון, כולל למידת רצף בפיקוח למחצה, אימון מקדים גנרטיבי, ELMo, ו-ULMFit. שלא כמו דגמים קודמים, BERT הוא ייצוג דו-כיווני עמוק, ללא פיקוח, שהוכשר מראש באמצעות קורפוס טקסט רגיל בלבד. מודלים נטולי הקשר כגון word2vec או GloVe מייצרים ייצוג הטמעת מילה אחת עבור כל מילה באוצר המילים, בעוד BERT לוקח בחשבון את ההקשר לכל הופעה של מילה נתונה. לדוגמה, בעוד שלווקטור עבור "ריצה" יהיה אותו ייצוג וקטור של word2vec עבור שני המופעים שלו במשפטים "הוא מנהל חברה" ו"הוא רץ מרתון", BERT יספק הטבעה בהקשר שתהיה שונה לפי המשפט.

ב-25 באוקטובר 2019, גוגל הודיעה שהיא החלה ליישם מודלים של BERT עבור שאילתות חיפוש שפה האנגלית בארצות הברית. ב-9 בדצמבר 2019, דווח כי BERT אומצה על ידי חיפוש Google עבור למעלה מ-70 שפות. באוקטובר 2020, כמעט כל שאילתה מבוססת אנגלית עובדה על ידי מודל BERT.

## גרסאות
דגמי BERT היו משפיעים והיוו השראה לגרסאות רבות.

**RobERTa** (2019) היה שיפור הנדסי. הוא משמר את הארכיטקטורה של BERT (קצת יותר גדולה, ב-355 מיליון פרמטרים), אך משפר את ההכשרה שלו, משנה את הפרמטרים ההיפר-פרמטרים, מסיר את משימת החיזוי של המשפט הבא ומשתמש בגדלים גדולים בהרבה של מיני-אצווה.

**DistilBERT** (2019) מזקקת את BERT BASE למודל עם רק 60% מהפרמטרים שלו (66 מיליון), תוך שמירה על 95% מציוני המדדים שלו. באופן דומה, **TinyBERT** (2019) הוא דגם מזוקק עם רק 28% מהפרמטרים שלו.

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

**ELECTRA** (2020) יישמה את הרעיון של רשתות יריבות יצירתיות במשימת ה-MLM. במקום להסתיר ים, מודל שפה קטן מייצר תחליפים סבירים אקראיים, ורשת גדולה יותר מזהה את הים שהוחלפו. הדגם הקטן שואף להטעות את הדגם הגדול.

### דברטה
**DeBERTa** (2020) הוא וריאנט אדריכלי משמעותי, עם תשומת לב מפורקת. הרעיון המרכזי שלו הוא להתייחס לקידוד המיקום וה בנפרד לאורך מנגנון הקשב. במקום לשלב את הקידוד המיקום (x_{position}) וקידוד (x_{\text{token}}) לתוך וקטור קלט יחיד (x_{input} = x_{position} + x_{token}), DeBERTa שומר אותם נפרדים כטופל: ((x_{position}, x_{token}) ). לאחר מכן, בכל שכבת קשב עצמית, DeBERTa מחשב שלוש מטריצות קשב נפרדות, במקום את מטריצת הקשב הבודדת המשמשת ב-BERT: [note 1]

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

קידוד מיקום מוחלט כלול בשכבת הקשב העצמי הסופית כקלט נוסף.

## קישורים חיצוניים
* 

## הערות שוליים

קטגוריה:גוגל: תוכנה
קטגוריה:דפים עם תרגומים שלא נסקרו