<aside> ℹ️ מידע על העמוד
https://www.youtube.com/watch?v=wzfWHP6SXxY
משימת תרגום מכונה Machine Translation היא המשימה בה מתרגמים משפט x משפה כלשהי (שפת המקור source) למשפט y בשפה אחרת (שפת היעד target).
בתחילת שנות ה-50 הוצגו מערכות ראשונות לתרגום – האמריקאים השתמשו בהם כדי לתרגם טקסט מרוסית לאנגלית בזמן המלחמה הקרה (שלא היו מוצלחות במיוחד ורצו על מחשבים מאוד פרימיטיביים). המערכות האלו היו מערכות rule-based שלא הצליחו לקלוט את המורכבות בשפה. בין 1990 ל-2010 בוצעו נסיונות רבים לביצוע תרגום בשיטות סטטיסטיות. הרעיון המרכזי הוא לבנות מודל הסתברותי מבוסס דאטא, שיוכל לחזות את התרגום הנכון. לדוגמא, אם אנחנו רוצים לתרגם מצרפתית לאנגלית, אנחנו רוצים למצוא את המשפט הכי טוב באנגלית y בהנתן משפט בצרפתית x, כלומר למצוא את $\operatorname{argmax}_y P(y \mid x)$, או אם נשתמש בחוק בייס אפשר לפרק את הבעיה לשני מרכיבים אותם אפשר ללמוד בנפרד - $\operatorname{argmax}_y P(x \mid y) P(y)$. הביטוי השמאלי מייצג מודל תרגום translation model – שממדל איך מילים וביטויים אמורים להיות מתורגמים (fidelity) ולומד מדאטא מקבילי parallel המקשר בין שתי השפות. הביטוי הימני מייצג מודל שפה language model, שממדל איך להשתמש בצורה נכונה בשפה שמתרגמים אליה (fluency), ולומד מדאטא monolingual (ששייך רק לשפה אליה אנחנו רוצים לתרגם).
איך יוצרים את מודל התרגום P(x|y)? מתחילים בלמצוא כמות גדולה של דאטא מקבילי בין שתי השפות (כלומר, זוגות של משפטים שתורגמו אנושית מצרפתית לעברית או הפוך). דוגמאות נפוצות למאגרי מידע מקבילי הם פרוטוקולים פרלמנטריים ממדינות שדוברות יותר משפה אחת (למשל קנדה, הונג קונג ומספר מדינות באירופה).
לאחר מכן, מפרקים את הבעיה ע"י הגדרת המשתנה החבוי latent variable המסומן a שמייצג alignment (כלומר קשר הדדי ברמת המילה הבודדת בין משפט המקור x ומשפט היעד y, כלומר איזו מילה במשפט היעד מייצגת איזה מילה במשפט המקור) באופן הבא - P(x,a∣y). עם זאת, חשוב לזכור כי יש הבדלים טיפולוגיים בין שפות שמובילים לכך שמשימת ה-alignment תהיה מאוד מורכבת עבורן (למשל, סדר המילים מאוד שונה במשפט, או שיש מילים שאין להן תרגום ישיר). יש כל מיני קונפיגורציות alignment שעשויות להווצר:
לומדים את P(x|y) בתור קומבינציה של הרבה משתנים, בין היתר ההסתברות ששתי מילים ספציפיות יתאימו זו לזו aligned, ההסתברות שלשתי מילים ספציפיות יהיה fertility מסוים (שהוא מספר המילים ה-corresponding) ועוד. חשוב לזכור שה-alignments הם משתנים חבויים latent variables, כלומר הם לא מופיעים מפורשות בדאטא, וצריך להשתמש באלגוריתמים לומדים כדי ללמוד את הפרמטרים וההסתברויות שלהם.
איך בוחרים מיהו $argmax_y$? הפתרון הנאיבי יהיה למספר כל משפט y אפשרי ולחשב עבורו את ההסתברות הזו, אבל הפתרון הזה יותר מידי יקר חישובית. לכן, נרצה להשתמש בהנחות אי תלות independence assumptions מאוד חזקות במודל, ולהשתמש בתכנון דינמי כדי למצור פתרונות אופטימליים (למשל, באמצעות שימוש באלגוריתם Viterbi). התהליך הזה מכונה decoding.
בכל שלב נבחר אופציה אחרת לתרגום של מילה בודדת / ביטוי ונמשיך משם ע"י בחירת התרגום הסביר ביותר בכל שלב:
בשנת 2014 בוצע נסיון ראשון לשימוש ברשת נוירונים גדולה כדי לבצע תרגום מכונה (זה אחרי ש-Google translate כבר פורסם, שהשתמש בשיטות סטטיסטיות ולא ברשת נוירונים באותו שלב). באותו זמן זה היה תחום מחקר שוליים, אבל תוך שנתיים זו כבר הפעה לשיטה המובילה ביותר בתחום התרגום – ב-2016 Google עברה להשתמש בתרגום מבוסס רשתות נוירונים (ולא בתרגום סטטיסטי) במודלי התרגום שלה, וב-2018 כל שירותי התרגום וגופי המחקר המובילים (ובכלל כך Microsoft ו-Facebook) עברו גם הם לשיטות האלו. כלומר, מודלי SMT (מודלים סטטיסטיים) שדרשו מאוד מנהדסים והרבה מאוד שנים כדי לייצר אותם, הוחלפו במודליNMT (מודלים מבוססים רשתות נוירונים) שיכלו להיות מאומנים ע"י קבוצה קטנה של מהנדסים תוך חודשים ספורים בלבד.
Neural Machine Translation (NMT) היא דרך לבצע תרגום מכונה מקצה לקצה באמצעות רשת נוירונים בודדת. רשתות נוירונים מהסוג הזה נקראות sequence-2sequence או seq2seq, והן מורכבות משתי רשתות RNN שאחת מהן בתפקיד encoder (מקודדת את משפט המקור) ואחת מהן בתפקיד decoder (שהיא למעשה מודל שפה), שלוקחת את הייצוג של משפט המקור שהוציא ה-encoder ומייצרת משפט בשפת היעד.
שיטות של seq2seq הן מאוד ורסטיליות, ומשמשות למשימות NLP נוספות כמו סיכום summarization, גנרוט דיאלוגים (האנקודר יקודד את מה שמי שמדברים איתו אמר, והדיקודר ייצר תשובה), פרסינג ועוד.
מודלי seq2seq הם דוגמא ל-conditional language model, שהם מודלי שפה (במובן שהם חוזים את המילה הבאה במשפט היעד y) שהם מותנים (במובן שהפרדיקציה מותנית גם במשפט הקלט x). למעשה, NMT מחשב את: