תכנון אטומטי הוא תחום שמטרתו להקנות לרובוטים את היכולת לפתור בעיות מורכבות בעזרת פעולות בסיסיות, אפילו אם אלו בעיות שהרובוט נתקל בהן לראשונה! בפוסט נסביר על מורכבות התהליך, ועל החשיבות שלו למחשוב מודרני ולעולם האמיתי.
במרץ 2016 התרסק רובוט מחקר של סוכנות החלל האירופית על מאדים. מחקירה שנערכה בעקבות האירוע עלה שחלה תקלה באחד מחיישני הרובוט. למרות שהמחשב של הרובוט זיהה שהחיישן תקול, לא הייתה מתוכנתת בו האפשרות "לחשב מסלול מחדש". הרובוט הסתמך על הקריאה השגויה מהחיישן והפעיל את תרחיש הנחיתה גבוה מדי, מה שגרם לו להתרסק על המאדים. אם הרובוט היה נשלט ע"י בני אדם, סביר להניח שהיה נוחת בשלום גם ללא הנתונים מהחיישן הבעייתי. אבל מאדים רחוק מדי, ובגלל שאי אפשר לתקשר עם הרובוט בזמן סביר, הוא היה צריך לבצע את הנחיתה בעצמו. הרובוט לא תוכנן להתמודד עם מצבים שכאלה, לכן יש שאומרים שאם הרובוט היה מצויד בבינה מלאכותית המאפשרת תכנון פעולות, הוא היה מתכנן סדר פעולות חדש שלא מתבסס על החיישן ונוחת בשלום.
בינה מלאכותית היא הנסיון לגרום למחשבים לבצע מטלות שעד כה נחשבו ככאלו שרק בני אדם יכלו לבצע. כמו זיהוי פרצופים, או ניהול של מצב חרום לא צפוי. תחום זה כולל בין היתר ראייה ממוחשבת[1], למידת מכונה[2], עיבוד שפה[3], ואת נושא התכנון האינטיליגנטי[4] [5], עליו נדבר היום.
כדי להמחיש את הצורך בתחום הזה, תארו לעצמכם שאתם בעלים של מפעל דובוני צעצוע. הטרנדים הגלובליים העלו את הצורך העולמי בדובוני צעצוע ובשביל לייעל את ייצור הדובונים ולעמוד בדרישות הבאתם למפעל שלכם רובוט חדש מסוג נסטור 10. בתקופת החפיפה, נסטור למד היכן נמצאים פסי הייצור, המחסנים והמשרדים. הוא למד כיצד להרים מוצר וכיצד להניח אותו. בשלב זה, אתם סבורים כי נסטור הוא עובד לכל דבר, ואתם פונים אליו: "נסטור, קח שלושה ארגזים של דובי ורוד קטן למחסן א', והעבר עשר יחידות של דובי כחול גדול למחסן ב'. וגם משה מהדואר בקש שתאסוף את המכתבים מכל המשרדים ותרכז אותם אצלו", ולאחר מחשבה קלה "ואם תספיק את כל זה עד ארוחת הצהריים זה יהיה נחמד".
ונסטור המסכן? עומד מבולבל. הוא מבין מה זה "הרם", "סע ל-", "הנח ב-". אבל הוא לא יודע "לקחת" ולא מבין מה זה "לאסוף". לא בגלל שהוא לא מבין את השפה; את המילים עצמן הוא מבין מצויין. פשוט "קח" זו מטלה מסובכת המורכבת ממספר משימות: "הרם", "סע", "הנח". נסטור לא חכם מספיק. הוא מסוגל ללמוד לבצע משימות, אבל הוא לא יודע לתכנן את המשימות כך שיוכלו לבצע מטלות מורכבות יותר.
כמובן, אפשר ללמד את נסטור לבצע את כל אחד מהדברים האלו, אבל זה כבר לא יעיל במיוחד. אנחנו מצפים מהעובדים שלנו להיות מסוגלים לנתח את הסיטואציה ולהבין לבד איך לבצע מטלות חדשות.
חוקרי תכנון אינטיליגנטי עושים בדיוק את זה! הם עוסקים בהרכבת אלגוריתמים המאפשרים לרובוטים לתכנן בעצמם פעולות מורכבות. האלגוריתם מקבל כקלט את הגדרת העולם -- מיקומים, אובייקטים ופעולות בסיסיות -- את המצב הנוכחי ואת המצב שאליו אנחנו מעוניינים להגיע, ומחזיר לנו רצף של פעולות בסיסיות שיביא אותנו מהמצב המצוי למצב הרצוי.
לחלקכם זה בטח נשמע מוכר. זה מאוד מזכיר למשל את הדרך שבה מפות גוגל או ווייז מתכננים עבורכם מסלול נסיעה. אכן, תכנון מסלול הוא מקרה פרטי של תכנון. הגדרת העולם היא כל המידע הרלוונטי -- המיקום שלכם, המיקום של היעד, מפות הכבישים, העומס בתנועה וכו'. הפעולות היסודיות הן ההוראות שהתוכנה מחלקת לך -- סע ישר, צא ביציאה השניה, הצמד לימין. האלגוריתם לוקח את המידע ומתרגם אותו לסדרה של פעולות יסודיות שיביאו אתכם ליעדכם בשלום. כמובן שהמציאות יותר מורכבת מזה, תכנת הניווט יודעת להגיב לשינויים בזמן אמת, למצוא מסלול יעיל עד כמה שניתן, ועוד. זה מדגים איזה עומק ועושר יש לתחום המחקר הזה.
כשהתחיל תחום התכנון הכללי, הוא היה מוגבל לפעולות רגעיות, בעלות תוצאה מיידית. לדוגמה, הפעולה "הרם" הייתה לוקחת זמן קצר, ובסיומה המוצר היה בידיו של הרובוט[6]. הבעיות שהרובוטים היו יכולים לפתור היו בעיות פשוטות יחסית: סידור קוביות בסגנון משחק המחשב "סוקובאן", למשל. גם בעיות כאלו, למרות שלאדם הן יחסית פשוטות, עבור מחשב הן קשות לפתרון. למחשב לוקח זמן רב למצוא פתרון, בעיקר אם כמויות האובייקטים והפעולות הן גדולות. למרות זאת קיימים היום אלגוריתמים רבים שפותרים בעיות כאלה!
בשנים האחרונות התפתח התחום, והפעולות איתן הרובוטים מתמודדים כיום הן מסובכות יותר. ניתן לתאר איתן את העולם בצורה מדויקת יותר. הפעולות שאיתן מתמודדים החוקרים היום הן מהסוג הרציף, כלומר לא "הרם" "הורד" אלא יותר כמו במכונית "לחץ יותר/פחות על דוושת הגז"[7]. כאשר בעיה מכילה פעולות רציפות, גדל גם כוח החישוב שנדרש כדי למצוא תכנית מתאימה. אחד האתגרים הנוכחיים בתחום הוא מציאת אלגוריתם יעיל לתכנון פעולות רציפות בזמן חישוב סביר.
לתכנון אוטומטי שימושים רבים כבר היום: למשל, ברובוטים שעובדים עם קשישים, רובוטים שמנקים אחרי ילדים, משימות לווינים בחלל. אולי בקרוב נוכל לראות בבתים ומפעלים רובוטים מתכננים, שידעו "לאסוף" ו"להביא" בעצמם. חלקינו עובדים על זה.
מקורות:
על ראייה ממוחשבת
[1] https://techcrunch.com/2016/11/13/wtf-is-computer-vision/
על למידת מכונה
[2] https://medium.com/machine-learning-for-humans/why-machine-learning-matters-6164faf1df12
[3] על עיבוד ב"שפה טבעית"
https://machinelearningmastery.com/natural-language-processing/
על תכנון אוטומטי:
[4] Automated Planning, Theory and Practice
Malik Ghallab, Dana Nau and Paolo Traverso
ISBN: 978-1-55860-856-6
על תכנון של בינה מלאכותית
[5] https://www.youtube.com/watch?v=EeQcCs9SnhU
מבוא לבינה מלאכותית:
[6] http://www.primaryobjects.com/2015/11/06/artificial-intelligence-planning-with-strips-a-gentle-introduction/
על בעיות מורכבות יותר:
[7] Fox, M.; Long, D. (2003). "PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains" (PDF). Journal of Artificial Intelligence Research (JAIR). 20: 61–124