Large language model — מודלי שפה גדולים

From Systems analysis Wiki
Jump to navigation Jump to search

מודל שפה גדול (large language model, LLM) — הוא סוג של מודל Machine Learning, המיושם באמצעות רשת נוירונים עמוקה בעלת מספר רב של פרמטרים (בדרך כלל מיליארדים ויותר), שאומנה על כמויות גדולות של נתוני טקסט. «גדול» בהקשר זה מתייחס הן לסדר הגודל של הפרמטרים והן לנפח קורפוס האימון, אשר במערכות מודרניות מגיע למספר פטה-בייט וטריליוני token. מודלי LLM מאומנים בעיקר בשיטת למידה עצמית או למחצה עצמית (self-/semi-supervised), על ידי חיזוי ה-token הבא ברצף, ובכך רוכשים את ההתפלגויות הסטטיסטיות של השפה. גידול בפרמטרים, בנתונים ובצעדי החישוב מוביל לשיפור צפוי באיכות, כפי שמאשרים scaling laws.

לאחר הופעת BERT (2017) ובמיוחד GPT-3 (2020), גישת LLM הפכה לדומיננטית בעיבוד שפה טבעית. מודלים מודרניים (GPT-4o,‏ Claude 3,‏ Gemini 1.5,‏ LLaMA 3 ואחרים) מסוגלים, ללא כוונון ייעודי, לכתוב טקסטים וקוד תוכנה, לתרגם, לסכם, לענות על שאלות ולבנות שרשראות היסק; גרסאות מולטי-מודאליות מנתחות תמונה, קול ווידאו. ההתאמה למשימה יישומית נעשית באמצעות fine-tuning עדין או הנדסת הנחיות (prompt engineering,‏ in-context learning). יחד עם הישגיהם, מודלי LLM יורשים את ההטיות ושגיאות הנתונים המקוריים, נוטים ל«הזיות» ודורשים משאבי חישוב גדולים, ולכן המחקר כיום מתמקד ביישור התנהגות, סינון קורפוסים וארכיטקטורות יעילות אנרגטית.

ארכיטקטורה

במודלי LLM מודרניים נעשה שימוש כמעט תמיד בארכיטקטורת Transformer (טרנספורמר) — רשת עם מנגנון self-attention. מודל הטרנספורמר הוצע לראשונה במאמר Attention is All You Need של מפתחי Google בשנת 2017.

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

רכיב הקידוד של הטרנספורמר מורכב ממספר שכבות-מקודדים זהות; רכיב הפענוח בנוי בדומה. הטרנספורמר עצמו הוא רצף של מודלי attention, הממירים את רצף הווקטורים המקורי לרצף חדש שבו כל אלמנט לוקח בחשבון את ההקשר של האחרים. ה-encoder יוצר ייצוגים נסתרים של נתוני הקלט תוך שמירת מידע על הקשרים בין האלמנטים. ה-decoder על בסיס הייצוגים הנסתרים יוצר רצף חדש של embedding עבור ה-token של הפלט. לאחר מכן, על בסיס ה-embedding הללו, מודל השפה מייצר את אלמנטי הפלט הסופיים.

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

טרנספורמרים משמשים בשלוש תצורות עיקריות, שכל אחת מהן משתמשת ב-encoder וב-decoder באופן שונה ומכוונת לתחום משימות משלה:

  • Encoder-טרנספורמרים (דו-כיווניים) לומדים לשחזר קטעי טקסט שהוסתרו בכוונה, ולכן מתאימים היטב למשימות «הבנה» — סיווג, חילוץ עובדות, חיפוש סמנטי.
  • Decoder-טרנספורמרים (אוטורגרסיביים) מאופטמים לחיזוי ה-token הבא ומשמשים במקומות שבהם נדרש פלט זורם: סוכני דיאלוג, השלמה אוטומטית של קוד, יצירה יצירתית.
  • סכמות מלאות «encoder + decoder» משלבות את שני הגישות: ה-encoder בונה ייצוג של כל טקסט הקלט, וה-decoder, בהסתמך עליו, מגבש את התוצאה שלב אחר שלב. תצורה זו יעילה במיוחד לתרגום מכונה, סיכום ומערכות שאלות-תשובות.

טוקניזציה

טוקניזציה — שלב ראשוני מרכזי בעיבוד טקסט במודלי שפה גדולים. בשלב זה מחרוזת רציפה של תווים מפוצלת ליחידות נפרדות — token. הטוקניזציה מבצעת את משימת המרת רצף התווים לרצף של אלמנטים מובנים המאפשרים עבודה יעילה של הרשת הנוירונית.

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

טוקניזציה מאפשרת:

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

לפיצול הטקסט משתמשים באלגוריתמים תת-מילוניים, שהנפוצים ביניהם הם Byte Pair Encoding (BPE), WordPiece ו-UnigramLM. כל אחד מהם בונה מילון מן הקטעים השכיחים ביותר בקורפוס ומשתמש בו לפילוח רצוף של כל טקסט קלט.

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

  • המרת token למזהים: כל token ממופה למדד מספרי ייחודי על בסיס מילון token שנבנה מראש. ה-token הטקסטואליים מוחלפים במזהים מספריים ייחודיים (ID). כל ID הוא מספר ה-token במילון שנבנה מראש, דבר המאפשר לרשת הנוירונית לעבוד עם מספרים במקום מילים.
  • המרת מזהים ל-embedding: עבור כל מזהה token מחולץ או מחושב הווקטור בממד קבוע המתאים לו — embedding. ייצוג מספרי רב-ממדי זה מחליף את ה-ID ומכיל כבר מידע על המשמעות והתכונות ההקשריות של ה-token. כל ה-embedding הם באותו אורך לנוחות העיבוד.
  • הוספת קידודים מיקומיים: מכיוון שארכיטקטורת Transformer כשלעצמה אינה לוקחת בחשבון את הסדר של האלמנטים, ל-embedding מתווספים קידודים מיקומיים (positional encodings), המספקים מידע על מיקום ה-token ברצף. במילים אחרות, בזכות זה המודל «יודע» איזה token מגיע ראשון, שני, שלישי וכן הלאה במשפט.
  • יצירת מטריצות קלט: הפלט הוא מטריצה בממד [длина последовательности × размерность эмбеддинга], המשמשת כייצוג ראשוני של הטקסט ומועברת כקלט לרשת הנוירונית, ובפרט לבלוקי ה-self-attention של ה-Transformer. כל שורה במטריצה זו מתאימה ל-token אחד, והווקטור הכלול בה נושא הן את משמעותו הסמנטית (embedding) והן מידע על מיקומו בטקסט (קידוד מיקומי).
Текст → Токены → Идентификаторы → Эмбеддинги + Позиционные кодировки → Вход в модель

מנגנון ה-attention

מנגנון ה-attention (attention mechanism) — מרכיב מרכזי בארכיטקטורת Transformer, המאפשר להתחשב בתלויות בין token ללא קשר למרחק ביניהם ברצף. לאחר שטקסט הקלט הומר לרצף וקטורים, רצף זה מוזן למרכיב המרכזי של הטרנספורמר — בלוק ה-attention (attention block).

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

בשפה טבעית, משמעות מילה או ביטוי אינה נקבעת בבידוד — היא תלויה בהקשר, כלומר במילים ובמבנים האחרים שבסביבה. ברשתות נוירונים טקסט מקודד דרך ייצוגים וקטוריים — embedding, המשקפים באופן מספרי את התכונות הלקסיקליות והתחביריות של ה-token. ללא מנגנון attention ישיר (כמו ב-Transformer), מידע הקשרי היה אובד למרחקים גדולים (כמו במודלים פשוטים), או מועבר ברצפיות, דבר שפחות יעיל ללכידת קשרים רחוקים. אולם בשפה טבעית משמעות המילה או הבניה התחבירית היא דינמית, ויש להתאים את פרשנותה בהתאם להקשר. מנגנון ה-attention מבצע הקשרה של ייצוגים וקטוריים, כלומר' (או פשוט :):

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


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

Входные векторы токенов (с позициями) → Механизм Внимания (Взаимодействие векторов) → Контекстуализированные векторы токенов (Векторы обогащенные информацией о связях с другими токенами)

מימוש טכני של מנגנון ה-attention

המבנה הפנימי של מנגנון ה-attention כולל מספר צעדי חישוב ומרכיבים מרכזיים. עבור כל וקטור קלט נוצרים שלושה וקטורים: Query (שאילתה), Key (מפתח) ו-Value (ערך). על בסיס האינטראקציה ביניהם מחושבים משקולות ה-attention, המשמשים לאחר מכן לקבלת ייצוגים וקטוריים מעודכנים ומהוקשרים. גישה נפוצה היא שימוש בארכיטקטורת Multi-Head Attention לעיבוד מקבילי של המידע.

Query (שאילתה), Key (מפתח), Value (ערך)

בבסיס חישוב מנגנון ה-attention עומדת המרת כל וקטור קלט (שהוא סכום ה-embedding של ה-token וקידודו המיקומי) לשלושה ייצוגים וקטוריים שונים: Query (Q), Key (K) ו-Value (V).

מבחינה קונספטואלית, שלושת הווקטורים הללו ממלאים את התפקידים הבאים במנגנון ה-attention:

  • Query (שאילתה): מייצג את וקטור ה-token הנוכחי, המיזם את תהליך חיפוש המידע הרלוונטי ברצף. ניתן לראות בו «שאלה» או «בדיקה» המשמשת להערכת חשיבותם של token אחרים ביחס לנוכחי.
  • Key (מפתח): משמש כמזהה או «תווית» המתארת היבט של תוכן כל token. וקטור ה-Query (Q) של ה-token הנוכחי מושווה לכל וקטורי ה-Key (K) ברצף (כולל שלו עצמו) לקביעת מידת ההתאמה או הרלוונטיות שלהם.
  • Value (ערך): מכיל את המידע הממשי או הייצוג המשויך לכל token, שיועבר הלאה. לאחר חישוב משקולות ה-attention על בסיס האינטראקציה בין Query לבין Key, משקולות אלה מוחלים על וקטורי ה-Value ליצירת הייצוג הממוצע הסופי המשוקלל, שהוא הפלט של מנגנון ה-attention עבור token זה.

אימון מודלי שפה גדולים

אימון LLM מתרחש בעיקר בשני שלבים:

  1. פרה-אימון (Pretraining) בשלב זה המודל מאומן על קורפוסי טקסט גדולים ולא מתויגים בשיטת self-supervised learning. המשימה היא חיזוי ה-token הבא ברצף (אוטורגרסיה) או שחזור קטעים שהוסתרו (אימון מסוכך). הפרה-אימון מאפשר למודל לרכוש דפוסים סטטיסטיים נרחבים של שפה, דקדוק, עובדות על העולם וצורות בסיסיות של היסק.
  2. כוונון עדין (Fine-tuning) לאחר הפרה-אימון המודל מאומן נוסף על נתונים מיוחדים לביצוע משימות ספציפיות, כגון יצירת תשובות, סיווג טקסטים או ביצוע הוראות. גישות מודרניות כוללות:
    • Fine-tuning על dataset מתויגים (supervised fine-tuning).
    • למידת חיזוק עם משוב אנושי (RLHF, reinforcement learning from human feedback) לתיקון התנהגות המודל בהתאם למדדי איכות, בטיחות ושימושיות.

בעיות ומגבלות

למרות ההתקדמות המרשימה, למודלי שפה גדולים (LLM) מודרניים יש מספר בעיות ומגבלות:


I. מגבלות חישוביות וארכיטקטוניות

  1. עלויות חישוב גבוהות: אימון ותפעול של LLM דורשים כוח חישוב, זמן ואנרגיה משמעותיים, הגוררים עלויות כלכליות ואקולוגיות גבוהות. בנוסף, האופי האוטורגרסיבי של הייצור (יצירה רציפה של token) מגביל את המקביליות ומאט את מהירות ה-inference בהשוואה לגישות לא-אוטורגרסיביות.
  2. מגבלת אורך ה-context: לארכיטקטורת Transformer יש תלות ריבועית של עלויות החישוב ודרישות הזיכרון באורך הרצף. הדבר מאלץ לקבוע מגבלה קבועה (חלון context) על נפח הטקסט שהמודל יכול לעבד בו-זמנית, מה שגורם לקיצוץ מסמכים ארוכים ולאובדן מידע מחוץ לחלון.


II. בעיות אמינות ודיוק הייצור

  1. הזיות: ייצור מידע שגוי עובדתית אך נשמע מהימן. הדבר קשור להיעדר הבנה ממשית של העולם במודל, להסתמכות על דפוסים סטטיסטיים בנתונים ולחוסר יכולת לאמת טענות שנוצרו.
  2. הצטברות שגיאות (Error Propagation): תהליך שבו שגיאות שנעשו בשלבים מוקדמים של הייצור מתחזקות ומובילות לעלייה באי-דיוקים בשלבים הבאים, מה שמפחית את האיכות הכוללת ועקביות הטקסט.
  3. קומפוזיציונליות מוגבלת: קשיים במשימות הדורשות היסק לוגי רב-שלבי או חישובים מדויקים (למשל, כפל של מספרים רב-ספרתיים, פתרון חידות). דיוק המודלים במשימות כאלה יורד בחדות עם עלייה בסיבוכיות עקב האופי האוטורגרסיבי של הייצור.
  4. חזרות: נטייה לחזור שוב ושוב על מילים או ביטויים, הפוגעת במידת המידע וקריאות הטקסט. קשורה לתכונות האימון ואלגוריתמי ה-decoding (בחירת ה-token הבא).
  5. קללת ה-Reversal (Reversal Curse): חוסר יכולת המודל להכליל ידע באופן אוטומטי בכיוון ההפוך: לאחר שלמד על הטענה «A הוא B», המודל לעתים קרובות אינו מסוגל להסיק «B הוא A».
  6. פשרה «יצירתיות-דיוק»: הצורך לאזן בין ייצור תשובות מגוונות ומקוריות לבין שמירה על דיוק עובדתי. שיפור היבט אחד פוגע לעתים קרובות ביבט האחר — למשל, יצירתיות גבוהה עשויה להתאם לעלייה בהזיות.

III. בעיות אינטראקציה וניהול:

  1. ניהול נמוך: הקושי לשלוט במדויק בסגנון, בטון, בתוכן הטקסט המיוצר או בעמידה בהוראות מורכבות. הניהול תלוי מאוד באיכות הוראות הקלט («prompt») ובשיטות ה-fine-tuning.
  2. רגישות לניסוח: שינויים קלים בשאילתת הקלט (prompt) עלולים להוביל לתשובות שונות באופן משמעותי, אפילו אם הסמנטיקה של השאילתה נשמרת. הדבר מקשה על קבלת תוצאות יציבות וצפויות.


IV. היבטים אתיים וחברתיים:

  1. בעיות הטיה והוגנות: מודלים עלולים לשחזר ולהגביר סטריאוטיפים חברתיים, הטיות או רעילות הקיימים בנתוני האימון. הבטחת הוגנות ובטיחות המודלים היא משימה מורכבת.
  2. בעיית היישור (LLM Alignment): בעיה כללית יותר הכוללת את הסעיף הקודם. זוהי משימת הבטחת התאמת התנהגות המודל לערכים אנושיים, לכוונות ולנורמות אתיות. היא כוללת מאבק בהטיה, בהזיות, בייצור תוכן מזיק ובשיפור הניהול.
  3. סיכוני שימוש זדוני: האפשרות להשתמש במודלי LLM ליצירה והפצה המונית של מידע כוזב, דיוג, ספאם, קוד זדוני או יצירת טקסטים מזויפים משכנעים, המהווים איום על האבטחה המידעית והאישית ומערערים את האמון בחברה.

קישורים:

  • «מודל שפה גדול» // ויקיפדיה (גרסה רוסית)
  • Large Language Model // Wikipedia (English version)
  • Grand Modèle de Langage // Wikipédia (Version française)
  • Sprachmodell // Wikipedia (Deutsche version)
  • Naveed H. ואחרים. // A Comprehensive Overview of Large Language Models // arXiv:2307.06435, 2023

ספרות

  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Brown, T. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.
  • Hoffmann, J. et al. (2022). Training Compute-Optimal Large Language Models. arXiv:2203.15556.
  • Ouyang, L. et al. (2022). Training Language Models to Follow Instructions with Human Feedback. arXiv:2203.02155.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Bubeck, S. et al. (2023). Sparks of Artificial General Intelligence: Early Experiments with GPT-4. arXiv:2303.12712.
  • OpenAI. (2023). GPT-4 Technical Report. arXiv:2303.08774.
  • Touvron, H. et al. (2024). The Llama 3 Herd of Models. arXiv:2407.21783.