תלמידים סינתטיים: איך בודקים אלגוריתם לימוד לפני שתלמיד אמיתי פוגש אותו
לפני כל שינוי במנוע האדפטיבי, לומדים מדומים עם יכולת ידועה מראש עוברים דרך הצינור האמיתי. התכנסות משני הכיוונים, רצועת ה-85%, ניחושים שלא נספרים, וזרעים קבועים.
לפני שאנחנו משנים שורה אחת באלגוריתם שבוחר לכם את השאלה הבאה, כמה תלמידים כבר פתרו איתו מאות שאלות. אף אחד מהם לא קיים.
הם תלמידים סינתטיים (Synthetic Students): לומדים מדומים שיש להם דבר אחד שלאף תלמיד אמיתי אין, יכולת "אמיתית" שידועה לנו מראש. הם עוברים בדיוק באותו צינור שהתלמיד האמיתי עובר בו, ובסוף אנחנו שואלים שאלה פשוטה: האם המנוע גילה מה שאנחנו כבר יודעים? אם התשובה שלילית, השינוי לא יוצא לאף תלמיד בקורס.
זה המאמר על איך בונים את הבדיקה הזו, למה היא הדבר הכי חשוב שעשינו למנוע האדפטיבי של הפסיכומטרי, ומה היא לא יכולה לבדוק.
מה זה "תלמיד סינתטי", ואיך הוא עוזר לבדוק אלגוריתם לימוד אדפטיבי?
תלמיד סינתטי הוא סימולציה של לומד עם יכולת אמיתית ידועה מראש, שעונה על שאלות בהסתברות שנגזרת מהפער בין היכולת שלו לקושי השאלה. אנחנו מריצים אותו דרך המנוע האמיתי (בחירת שאלות, עדכון דירוג, מבחני ביניים) ובודקים אם הדירוג מתכנס ליכולת הידועה, אם אחוז ההצלחה נשאר ליד היעד, ואם ניחושים מהירים לא מזיזים כלום. זו בדיקת קבלה אוטומטית שרצה לפני כל שינוי.
מה המדע אומר: כלי מדידה בודקים על אנשים שלא קיימים
הרעיון לא שלנו, והוא ותיק מאיתנו בעשרות שנים. בתורת התגובה לפריט (Item Response Theory, IRT), התיאוריה שמאחורי מבחנים כמו הפסיכומטרי, השיטה הסטנדרטית לבדוק מודל היא סימולציית מונטה קרלו: מייצרים נבחנים עם יכולת ידועה, נותנים להם "לענות" על פריטים, ובודקים אם המודל משחזר את מה שהוזן. הארוול ועמיתיו (Harwell et al., 1996) סיכמו את הפרקטיקה הזו ואת התנאים שבהם היא אמינה: כמה חזרות צריך, איך מדווחים על שונות, ומתי תוצאה "יפה" היא בעצם רעש.
במבחנים אדפטיביים ממוחשבים (Computerized Adaptive Testing, CAT) הסימולציה היא לא רק כלי מחקר אלא שלב חובה לפני הפעלה. ספר היסוד של ויינר (Wainer, 2000) והאסופה של ון דר לינדן וגלאס (van der Linden & Glas, 2010) מקדישים פרקים שלמים לשאלות שאפשר לענות עליהן רק בסימולציה: כמה פריטים צריך עד שהמדידה מדויקת מספיק, האם פריטים מסוימים נחשפים יותר מדי (Item Exposure), ומה קורה לנבחן שיכולתו בקצוות ההתפלגות.
המנוע שלנו לא משתמש ב-IRT קלאסי אלא בדירוג בסגנון אלו (Elo), השיטה שנולדה בשחמט ואומצה למערכות למידה. קלינקנברג ועמיתיו (Klinkenberg et al., 2011) הראו ב"גן המתמטיקה" ההולנדי שאפשר לאמוד יכולת של תלמיד וקושי של פריט "תוך כדי תנועה", בלי שלב כיול נפרד. פלאנק (Pelánek, 2016) סקר את היישומים החינוכיים של אלו וגם את החולשות הידועות: רגישות לדירוג ההתחלתי, לקצב העדכון, ולסדר שבו הפריטים מגיעים. כל אחת מהחולשות האלה היא בדיוק מה שסימולציה יודעת לחשוף.
ויש עוד ענף מחקר שהכרחי לנו: התנהגות ניחוש מהיר (Rapid Guessing). וייז וקונג (Wise & Kong, 2005) הראו שזמן התגובה מסגיר אם הנבחן באמת ניסה: תשובה שניתנה מהר מדי מכדי לקרוא את השאלה אינה מדידה של ידע, והשארתה במודל מעוותת אותו. וייז (Wise, 2017) סיכם עשור של עבודה על זיהוי הניחושים האלה והטיפול בהם. אצלנו זה הפך לבדיקת קבלה.
ולבסוף, היעד שהסימולטור בודק מולו: כלל ה-85% של וילסון ועמיתיו (Wilson et al., 2019), שלפיו למידה מהירה ביותר מתרחשת כשהלומד מצליח ברוב המשימות אבל לא בכולן. כתבנו על זה בהרחבה במאמר על כלל ה-85%; כאן הוא משמש כמדד: אם התלמיד הסינתטי ברמה מתאימה לא מגיע לאזור הזה, המנוע לא עושה את עבודתו.
מה בנינו: ארבע בדיקות קבלה, ותלמיד שלא מנחש
הסימולטור שלנו הוא קובץ בדיקה שרץ אוטומטית עם כל שינוי בקוד. הוא לא מדמה את המנוע; הוא מריץ את המנוע. אותה פונקציה שמרכיבה סשן לתלמיד אמיתי מרכיבה אותו לתלמיד הסינתטי, מתוך אותו מאגר שאלות אמיתי, ואותו מנגנון שמעדכן את הדירוג אחרי כל תשובה מעדכן גם כאן. שני דברים בלבד מזויפים: התלמיד, וזמן החשיבה שלו.
התלמיד הסינתטי מוגדר על ידי יכולת אחת, בכל ממדי המנוע. כשהוא פוגש שאלה, הוא לא "יודע" את התשובה; הוא עונה נכון בהסתברות שנגזרת מהפער בין היכולת שלו לקושי השאלה, בדיוק לפי אותה נוסחה שהמנוע עצמו משתמש בה כדי לחזות הצלחה. תלמיד חזק טועה לפעמים בשאלה קלה, ותלמיד חלש פותר לפעמים שאלה קשה. כמו בחיים.
על התלמיד הזה רצות ארבע משפחות של בדיקות קבלה (Acceptance Tests):
- התכנסות משני הכיוונים. תלמיד חזק, שיכולתו גבוהה מנקודת ההתחלה של כל תלמיד חדש, צריך לטפס מעליה בבירור אחרי כמה סשנים. תלמיד חלש צריך להתייצב מתחתיה. ובשני המקרים הדירוג לא "בורח": יש תקרה ורצפה סבירות שהוא לא חוצה. בדיקה שבודקת רק תלמידים חזקים מפספסת חצי מהבאגים.
- המודל נרגע. לכל ממד יש מדד אי-ודאות שמתחיל גבוה ויורד ככל שמצטברות ראיות. אחרי מספיק תשובות בממד, אי-הוודאות חייבת לרדת מתחת לסף. אם היא לא יורדת, המנוע "לומד" בלי להיות בטוח בשום דבר, וכל תשובה בודדת תמשיך לטלטל אותו.
- ההצלחה נשארת ליד היעד. תלמיד ברמת המנוע (לא חזק, לא חלש) צריך לסיים עם אחוז הצלחה חי ברצועה בריאה סביב כלל ה-85%. לא בדיוק 85: הרכב הסשן מכיל אקראיות מכוונת, ולכן הבדיקה ממוצעת על כמה זרעים ובודקת רצועה, לא נקודה.
- ניחוש מהיר אינו ראיה. סשן שלם שנענה נכון, אבל בקצב שבו אי אפשר לקרוא את השאלה, חייב להשאיר את כל הדירוגים בנקודת ההתחלה ואת מונה הניסיונות על אפס. מה שכן זז הוא מונה "ניתוק", שהאפליקציה מגיבה אליו אחרת: לא בדירוג, אלא בשיחה.
ויש בדיקה חמישית, שהיא הסיפור השלם מקצה לקצה: מחזור החיים של מבחן ביניים (Checkpoint). תלמיד סינתטי חזק מתרגל בממד אחד על שאלות ברמת המבחן, בלי שאנחנו "מזריקים" לו דירוג. המוכנות למבחן הביניים חייבת לצמוח מהתרגול עצמו. כשהיא מגיעה, המערכת בונה את המבחן, התלמיד עובר אותו, הממד מסומן כנשלט, השאלות ששימשו בו "נשרפות" (לא יופיעו שוב בתרגול), והמבחן עצמו פורש. אם אחד מהצעדים לא קורה בדיוק פעם אחת, הבדיקה נכשלת.
למה זרעים קבועים
התלמיד הסינתטי מנחש בעזרת מחולל מספרים אקראיים עם זרע (Seed) קבוע. אותו זרע נותן את אותן תשובות, בכל הרצה, בכל מחשב. זה חשוב משתי סיבות. הראשונה: כשבדיקה נכשלת, אפשר להריץ אותה שוב ולראות בדיוק את אותו כישלון, במקום "לפעמים זה נופל". השנייה: כשמשנים את המנוע, ההבדל בתוצאה נובע מהשינוי, לא מרעש. האקראיות היחידה שנשארת היא של המנוע עצמו (איזו שאלה מתוך הרמה המתאימה תיבחר), ולכן הטענות בבדיקות הן כיווניות: "עלה", "ירד", "ברצועה". אף פעם לא "בדיוק המספר הזה".
עוד החלטה קטנה עם השלכה גדולה: בסימולציה כל השלבים בקורס פתוחים. אנחנו רוצים לבדוק את האלגוריתם, לא את מנגנון הפתיחה ההדרגתית של החומר. כל אחד מהם נבדק בנפרד.
מה ראינו קודם: לפני הסימולטור, שינוי במנוע נבדק כמו שרוב הצוותים בודקים: מפתח פותר עשרים שאלות ומסתכל אם המספרים "נראים הגיוניים". הבעיה היא שמפתח שיודע את התשובות אינו תלמיד. הוא לא מנחש, לא מתעייף, ותמיד נמצא באותה רמה. בדיקה כזו עונה על "האם זה עובד לי", ולא על "האם זה מתכנס לתלמיד שרחוק ממני ברמה, מלמעלה או מלמטה". הבאג הקלאסי של מנועי אלו, דירוג שממשיך לנוע גם כשהתלמיד כבר יציב, בלתי נראה לגמרי בבדיקה ידנית. הוא נראה מיד כשמריצים תלמיד ברמה קבועה לאורך כמה סשנים.
| שיטת בדיקה | מה היא תופסת | מה היא מפספסת | אצלנו |
|---|---|---|---|
| בדיקה ידנית ("נראה הגיוני") | שגיאות בולטות בממשק | התכנסות, רמות שונות מהבודק, ניחושים | רק לממשק |
| בדיקות יחידה על הנוסחה | חישוב בודד נכון | התנהגות של מאות עדכונים ברצף | כן, לכל רכיב בנפרד |
| תלמידים סינתטיים | התכנסות, רצועת הצלחה, ניחושים, מחזור מבחני ביניים | בני אדם אמיתיים: שעמום, חרדה, למידה בין הסשנים | שער קבלה לכל שינוי |
| טלמטריה מתלמידים אמיתיים | מה שקורה באמת | מגיעה מאוחר, ומנוע שבור כבר פגע במישהו | אחרי השער, לא במקומו |
טעויות נפוצות בסימולציית לומדים
- לבדוק רק כיוון אחד. מנוע שמטפס יפה לתלמיד חזק יכול להיתקע לתלמיד חלש בנקודת ההתחלה. תמיד שני קצוות ואמצע.
- לטעון מספר מדויק. "הדירוג צריך להיות בדיוק כך וכך" היא בדיקה שנשברת מכל שינוי לגיטימי בהרכב הסשן. טענות כיווניות ורצועות שורדות.
- תלמיד שעונה מיד. אם זמן החשיבה בסימולציה אפסי, מסנן הניחושים המהירים יבלע את כל התשובות והבדיקה "תעבור" על כלום. התלמיד הסינתטי שלנו חושב זמן סביר.
- מאגר שאלות מזויף. סימולציה על פריטים מומצאים בהתפלגות נוחה לא אומרת דבר על מאגר אמיתי עם חורים ברמות מסוימות. מריצים על השאלות האמיתיות.
- בלי זרע. בדיקה שנופלת "לפעמים" היא בדיקה שמכבים. זרע קבוע הופך כל כישלון לניתן לשחזור.
- להתייחס לסימולציה כהוכחה. תלמיד סינתטי לא משתעמם, לא נלחץ ולא לומד בין הסשנים. הסימולציה היא תנאי הכרחי לשחרור, לא תנאי מספיק. אחריה מגיעה הטלמטריה האמיתית, בזהירות.
מה זה אומר עליכם, התלמידים האמיתיים
- ענו בקצב טבעי. תשובה מהירה מדי לא נספרת, גם אם היא נכונה. לחיצות מהירות לא "מקדמות" אתכם; הן רק אומרות למערכת שאתם לא שם.
- טעות אחת מזיזה פחות ממה שנדמה. המודל מעדכן לפי הצטברות ראיות ולפי מידת הביטחון שלו. ככל שהוא מכיר אתכם יותר, כך תשובה בודדת משפיעה פחות.
- השבוע הראשון הוא כיול. בהתחלה המנוע לא בטוח, ולכן זז מהר. זה לא "המערכת חושבת שאני חלש". זו המערכת שמחפשת אתכם משני הכיוונים.
- מבחן ביניים מופיע כשאתם מוכנים. לא בתאריך קבוע ולא אחרי מספר שאלות קבוע. הוא צומח מהתרגול, בדיוק כמו אצל התלמיד הסינתטי.
כל שינוי במנוע האדפטיבי של קורס פסיכומטרי בזינוק עובר את שער הקבלה הזה לפני שהוא מגיע לתלמיד אחד. על אותה משפחה של אלגוריתמי דירוג בנוי גם מנוע המילים של קורס אמירנט, והעיקרון זהה: קודם מוודאים שהמנוע מוצא את התלמיד, ורק אז נותנים לו תלמיד אמיתי. להמשך קריאה: איך נבחרת השאלה הבאה שלכם (כלל ה-85%), למה אין אצלנו מבחן מיון בכניסה, ותקציב השאלות מהמבחנים האמיתיים. כל המאמרים: המעבדה של זינוק.
שאלות ותשובות
מה זה תלמיד סינתטי?
לומד מדומה שיש לו יכולת "אמיתית" ידועה מראש, ושעונה על כל שאלה נכון בהסתברות שנגזרת מהפער בין היכולת שלו לקושי השאלה. הוא עובר דרך אותו מנוע ואותו מאגר שאלות של תלמיד אמיתי, ולכן אפשר לבדוק אם המנוע מגלה את מה שאנחנו כבר יודעים עליו.
למה לא לבדוק את האלגוריתם ישירות על תלמידים אמיתיים?
כי מנוע שבור פוגע במי שפוגש אותו, והטלמטריה מגיעה מאוחר מדי. הסימולציה היא שער: שינוי שנכשל בה לא יוצא לאף תלמיד. אחרי שעבר, הטלמטריה האמיתית מאמתת אותו בזהירות. זו גם הפרקטיקה המקובלת במבחנים אדפטיביים ממוחשבים, שבהם מריצים סימולציות לפני כל הפעלה.
מה בדיוק בודקים בסימולציה?
ארבע משפחות של בדיקות קבלה: התכנסות משני הכיוונים (תלמיד חזק עולה, חלש יורד, אף אחד לא "בורח"), ירידה באי-הוודאות של המודל, אחוז הצלחה ברצועה בריאה סביב כלל ה-85%, וניחושים מהירים שלא מזיזים שום דירוג. בנוסף, מחזור חיים שלם של מבחן ביניים, מהמוכנות ועד הפרישה.
למה משתמשים בזרע קבוע ולא באקראיות אמיתית?
כדי שכל כישלון יהיה ניתן לשחזור. אותו זרע נותן את אותן תשובות בכל הרצה, ולכן הבדל בתוצאה נובע מהשינוי במנוע ולא מרעש. האקראיות היחידה שנשארת היא בבחירת השאלות עצמן, ולכן הבדיקות טוענות טענות כיווניות ורצועות, לא מספרים מדויקים.
האם ניחוש מהיר באפליקציה נחשב?
לא. תשובה שניתנה מהר מדי מכדי לקרוא את השאלה מסוננת ואינה מזיזה את הדירוג, גם אם היא נכונה. מחקרי זמן התגובה (וייז וקונג, 2005) מראים שתשובות כאלה אינן מדידה של ידע. במקום זאת המערכת מזהה ניתוק ומגיבה אליו בשיחה, לא בדירוג.
מה סימולציה לא יכולה לבדוק?
בני אדם. תלמיד סינתטי לא משתעמם, לא נלחץ, ולא לומד בין הסשנים. לכן הסימולציה היא תנאי הכרחי לשחרור ולא תנאי מספיק: אחריה מגיע ניטור של תלמידים אמיתיים, בהדרגה.
מקורות
- Harwell, Stone, Hsu & Kirisci (1996). Monte Carlo studies in item response theory. doi.org/10.1177/014662169602000201
- Howard Wainer (ed.) (2000). Computerized Adaptive Testing: A Primer. doi.org/10.4324/9781410605931
- van der Linden & Glas (eds.) (2010). Elements of Adaptive Testing. doi.org/10.1007/978-0-387-85461-8
- Klinkenberg, Straatemeier & van der Maas (2011). Computer adaptive practice of Maths ability using a new item response model. doi.org/10.1016/j.compedu.2011.02.003
- Radek Pelánek (2016). Applications of the Elo rating system in adaptive educational systems. doi.org/10.1016/j.compedu.2016.03.017
- Wise & Kong (2005). Response time effort: A new measure of examinee motivation in computer-based tests. doi.org/10.1207/s15324818ame1802_2
- Steven L. Wise (2017). Rapid-guessing behavior: Its identification, interpretation, and implications. doi.org/10.1111/emip.12165
- Wilson, Shenhav, Straccia & Cohen (2019). The Eighty Five Percent Rule for optimal learning. doi.org/10.1038/s41467-019-12552-4
