Evolutionary Algorithms

אסטרטגיה אבולוציונית

מיועד ל- מתחילים (כתבה קצת טכנית)

נכתב על ידי Nevo Agmon

הקדמה

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

מטרה

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

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

אז איך זה עובד?

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

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

קצת יותר פרטים

עכשיו כשהבנו באופן בסיסי איך עובד האלגוריתם נתאר אותו בצורה קצת יותר מתמטית (אם לא בא לכם אפשר לקפוץ ישר לחלק הבא). נסמן ב -θ את המדיניות, F תהיה הפונקציה שמעריכה את ביצועי המדיניות על העולם, λ מייצגת את גודל האוכלוסיה ו -μ מייצגת את גודל המטא-אוכלוסיה. נאתחל את המדיניות בערכים רנדומליים ובכל שלב המוטציה תהיה הוספת דגימה אקראית מהסתברות נורמלית כפול גודל צעד הלימוד שנסמנו σ (ניתן לחשוב עליו כ Learning Rate). על מנת לחשב את מדיניות הבסיס החדשה עבור האיטרציה הבאה נבצע ממוצע משוכלל של μ הצאצאים הטובים ביותר, צעד זה מתבצע ע״י שימוש בפרמטר  wi שהוא סקלר המתפקד כמעיין נרמול. נכפיל את הממוצע בצעד  הלימוד σ ונחבר זאת למדיניות הבסיס של הצעד הנוכחי. כעת יש בידינו את כל החלקים הדרושים ע״מ להבין את האלגוריתם המלא:

https://arxiv.org/pdf/1802.08842.pdf

למה זה טוב?

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

1 – האלגוריתם אינו מוטה כמעט להשפעות המתכנת כך שיש לו חופש גדול יותר להתפתח.

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

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

דוגמא לביצועי האלגוריתם ניתן לראות בוידאו הבא:

בוידאו רואים שחקן של משחק המחשב Qbert שאומן למשך 5 שעות בלבד בשימוש באוכלוסיה בגודל 400 ופיתח שיטת משחק מעניינת מאוד .ראשית ניתן לראות ב 6:24 שהשחקן קופץ ממקום למקום ומחכה שהיריב יזוז  לכיוונו כדי שיוכל לנצח במשחק כלומר השחקן למד ״להטעות״ את היריב .ולאחר מכן ב 6:27 ניתן לראות באג שהשחקן גילה במשחק שלא היה ידוע עד כה שמאפשר לשחקן לקבל אינסוף נקודות במשחק.

קישורים

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

Posted by Nevo Agmon in deep

אינטליגנציה מלאכותית גנרית או איך אלגוריתם מפתח אלגוריתם ?

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי תמיר נווה

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

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

רשת נוירונים

 רשת נוירונים לדוגמא

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

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

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

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

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

שתי גישות קיימות למחקר זה: אלגוריתמים גנטיים או אבולציוניים (evolutionary algorithms) ו- למידה חיזוקית (reinforcement learning). בשתי גישות אלו החוקרים מנסים למצוא דרך אוטומטית שתעצב ארכיטקטורת רשת שתפתור את בעיית סיווג התמונה בין השאר במאגר התמונות CIFAR. CIFAR הינו מאגר של 60,000 תמונות צבעוניות קטנות בגודל 32X32 פיקסלים עם 10 מחלקות שונות (CIFAR10) או עם 100 מחלקות שונות (CIFAR100), מאגר זה נועד לצרכי מחקר ופיתוח אלגוריתמי סיווג (classification) של תמונות.

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

רשת נוירונים שפותחה ע"י אלגוריתמם גנטי

רשתות נוירונים שפותחו ע”י אלגוריתמם גנטי תודה ל https://arxiv.org/pdf/1703.01041.pdf

בלמידה חיזוקית Reinforcement learning לעומת זאת, משתמשים בייצוג של ארכיטקטורת רשת כמחרוזת תווים באורך לא קבוע (מחרוזת שמכילה את כל המידע של הרשת: גדלי הפילטרים, ה strides, וכו’) ובאמצעות Recurrent neural network מייצרים מחרוזת טובה יותר ויותר על בסיס תגמול שנובע מביצועי הרשת על מאגר תמונות כלשהוא. האימון נעשה בשיטת Policy gradients ולבסוף מתקבלות ארכיטקטורות רשת שפותרות את הבעיות שרשתות שעוצבו ע”י בני אדם פותרות אותן ברמה לא פחות טובה (מבחינת דיוק ומהירות). ניתן למשל לראות בתרשים ארכיטקטורת רשת שאומנו על מאגר הטקסט Penn Treebank (מאגר המשמש לניתוח שפה) כאשר הרשת השמאלית פותחה ע”י חוקרים אנושיים והימנית פותחה ע”י למידה חיזוקית.

רשת נוירונים שפותחה ע"י בני אנוש או על ידי אלגוריתם

רשתות נוירונים שפותחו ע”י בני אנוש או על ידי אלגוריתם תודה ל https://arxiv.org/pdf/1611.01578.pdf

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

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

Posted by תמיר נווה in deep