ארכיון

Posts Tagged ‘אינטליגנציה מלאכותית’

אז מה עושים שם באוניברסיטה? פרק 13: איך להשתפר בדמקה בשלושה צעדים פשוטים – על תכנות גנטי

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

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

עמית, אז מה אתם עושים שם?

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

איך עובד תכנות גנטי?

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

תוכל לתת דוגמא?

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

איור 1: למקרה שהגעתם מהחלל החיצון, לוח דמקה מוכן למשחק. האיור להמחשה בלבד! המקור: ויקיפדיה.

איך התוכנה מגדירה שחקן?

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

תוכל לתת דוגמא להבדלים באוכלוסיה?

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

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

איור 2: ביטוי אריתמטי המיוצג על ידי מבנה נתונים בצורת עץ. המקור: ויקיפדיה.

איך קובעים את זהות התוכנות הטובות ביותר?

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

למה אתה מתכוון? איך מיוצר הדור הבא?

ישנן שתי פעולות העוקבות אחרי תהליך הסלקציה ומטרתן לייצר שינוי באוכלוסיה. פעולה אחת נקראת מוטציה ובה נבחר באקראי תת-עץ מתוך העץ השלם המייצג את השחקן. אותו תת-עץ מוחלף בתת-עץ חדש. דוגמא למוטציה יכולה להיות החלפת תת-העץ x/11 מאיור 2, לתת-עץ שמבטא למשל x-5 (ראו איור 3). אנחנו בדרך כלל קובעים את הסיכוי למוטציה בעץ כך שבערך עשירית מהעצים יעברו מוטציה.

איור 3: העץ מאיור 2 לפני ואחרי מוטציה.

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

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

איור 4: תרשים זרימה המתאר את תהליך התכנות הגנטי.

אז מה עם הדמקה?

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

נשמע נפלא, האם יש פה 'אבל' איפשהו?

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

אז מה עושים?

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

כיצד היית מסכם את היתרונות של השיטה?

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

——————————————————————

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

זה הזמן לספר לכולם מה אתם עושים, אולי הפעם הם גם יבינו :-)

אז מה עושים שם באוניברסיטה? פרק 7: לאמן את פאקמן להבקיע גולים – על רובוטיקה אבולוציונית

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

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

שלומי, אז מה אתם עושים שם?

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

תמונה 1: רובוט עם הנעה דיפרנציאלית שפותח ב- Georgia Institute of Technology. המקור לתמונה: ויקיפדיה.

אז בוא נתחיל בשאלה מהם רובוטים?

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

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

תמונה 2: רומבה בנקודת העגינה. המקור לתמונה: ויקיפדיה.

אוקיי, אז מהי רובוטיקה אבולוציונית?

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

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

ומהי אופטימיזציה מרובת מטרות?

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

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

תמונה 3: צילום מסך של משחק פאקמן מהאתר הזה.

ואיך קושרים את ריבוי המטרות לאבולוציה?

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

אז מה ניתן לחקור עם כל הרובוטים האלה?

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

בחירת הרובוטים להרכבת הדור הבא נעשתה במחקר באחת משתי דרכים: או לפי הצלחה של רובוטים בודדים או לפי הצלחה קבוצתית. תוצאות המחקר הצביעו על כך שבמקרים שההצלחה נשפטה לפי קבוצה, התפתחה בין הרובוטים היכולת לאותת "חבר'ה, בואו לפה, יש כאן אוכל!". הרובוטים שפיתחו קשר בין איתות למיקום אוכל הם אלו שעברו לדורות הבאים. לעומת זאת, במקרים שבהם ההצלחה נשפטה לפי רובוטים בודדים, או שהאיתות לא התפתח למשהו בעל משמעות או שהוא התפתח לאות שמטרתו הולכת שולל, למשל איתות ליד הרעל, וזאת מכיוון שיש תחרות על משאבים.

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

ספר לי בקצרה על מה אתה עושה במחקר שלך.

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

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

————————————————————

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

זה הזמן לספר לכולם מה אתם עושים, אולי הפעם הם גם יבינו :-)

פרלוד ופוגה בנמלה מז'ור – המלצה לקריאה

היכן נמצאת המחשבה?

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

מהי הדרך הנכונה להבנת פעולתו של המוח? באיזו רזולוציה עלינו לבצע את המחקר? האם כדאי לחקור רמת פעילות בגזע המוח על ידי fMRI? האם כדאי לחקור ביטויים של גנים? ריכוזים של מולקולות כאלו ואחרות? מנגנונים תוך תאיים? פעילות של נוירונים בקליפת המוח?

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


עטיפת הספר 'גדל, אשר, באך'. המקור: אתר ההוצאה דביר.

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

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

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

רגע, רגע, אבל האם אתה ממליץ על הספר?

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

————————————————————————

לקריאה נוספת:

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

הרשימה הזאת מיותרת – מרובוטים מג'עג'עים ועד מדענים ממוחשבים

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

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

להרצאה

אתם עדיין פה? טוב, 55 דקות זה באמת הרבה זמן. בדיוק בשביל זה המציאו את הגרסה המקוצרת.

להרצאה המקוצרת

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


פרופ' הוד ליפסון. המקור: צילום מסך מההרצאה.

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

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

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

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


הרובוט שלומד מה הוא ואז לומד ללכת. המקור: צילום מסך מההרצאה.

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

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

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

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

———————————————————————-

[1] הערה למי שבקיא בפיזיקה: מלבד מציאת חוקי הדינמיקה של המערכת הפיזיקלית נוכל לדרוש מהמחשב למצוא מה לא משתנה במערכת וכך הוא יוכל להפיק את ההמילטוניאן, הלגרנג'יאן ושימור התנע.