לא טכני

בטיחות ב AI – אימון סוכנים מבוקר אנשים

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

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

1) לא יפגע רובוט לרעה בבן אדם, ולא יניח, במחדל, שאדם ייפגע.

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

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

 

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

 

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

 

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

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

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

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

למעשה OpenAI’s Safety Team היא שעומדת מאחורי מחקר זה כי כאמור אם נותנים מטרת על רחוקה ונותנים לתהליך האימון לרוץ לבד, קשה לנבא מה יקרה. שיטות אלו יותר מבוקרות, לעיתים יותר יעילות ועשויות למנוע אסונות.

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

במאמר הם מציגים גם אימון של סוכן המשחק במשחקי אטארי מגוונים:

אימון סוכן לשחק משחקי אטארי

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

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

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

ספורט ה DataSciense: נא להכיר את Kaggle!

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

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

Data Sciense עוסק בלהסיק תובנות ממידע.

Machine Learning עוסק בפיתוח אלגוריתמים ושיטות שמאפשרים למחשב ללמוד.

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

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

הכירו את “Kaggle“: שהוקמה באוסטרליה ב 2010 ונרכשה ב 2017 ע”י גוגל (אך שמרה על השם והמיתוג שלה) והינה פלטפורמת לתחרויות בין אלגוריתמאים ואנשי DataSciense ו Machine Learning. התחרויות פתוחות לציבור הרחב בחינם וחלקן מזכות בפרסים שיכולים להגיע עד מיליון וחצי דולר.

אתר Kaggle לא רק מאפשר להתחרות אלא גם מעודד שקיפות ועזרה מהקהילה, ז”א שאפשר ללמוד מבלוגים של המומחים הגדולים ואפשר להעלות קוד ולקבל עליו פידבקים ממומחים אחרים.

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

תודה kaggle

לצורך המחשה אציג כמה מהתחרויות:

שיפור הדיוק של Department of Homeland Security בזיהוי איום שווי פרסים של 1,500,000$

שיפור הדיוק של הערכת מחירי בתים Zillow שווי פרסים של 1,200,000$

זיהוי גרעין התא (לקידום הרפואה) שווי פרסים של 100,000$

ניבוי תגובת השוק לרכישות גדולות שווי פרסים של 10,000$

זיהוי שיימינג ברשתות חברתיות שווי פרסים של 10,000$

ניבוי גישות מיחשוב הדרושות לעובד חדש שווי פרסים של 5,000$

זיהוי זן ציפור על בסיס הקלטות שמע שווי פרסים של 1,800$

ניבוי אנרגיה סולארית על בסיס נתוני מזג אוויר שווי פרסים של 1,000$

ניבוי מכירות של חנויות פרס לא כספי אלא הזדמנות לעבוד ב Walmart

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

זה מה שהוא מספר (בתמציתיות) לגבי שלבי העבודה הקלאסיים:

1) לנתח את ה Data מכל כיוון אפשרי

להציג בכל מיני דרכים, להבין כל משתנה, להבין איך נאספו הנתונים…

2) לבנות פיצ’רים

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

3) בחירת המודל

Random Forest היה מאוד פופולארי ואז היה מעבר ל Gradient Boosting Machine

אם כי בחירת המודל לא חשוב כמו ששלב 2 חשוב.

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

מה רואים בתמונה ? המסע שהחל ב-Alexnet והגיע עד רשתות הקפסולות

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

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

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

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

מאז 2012 התחום לא מפסיק להתפתח ולהפתיע, אם נישאר בעולם התמונה, ב 2013 זכתה רשת נוירונים עמוקה בשם ZF  Netעם 89% הצלחה, אחריה ב 2014 VGG עם 93% הצלחה,  אחריה ב 2015 GoogleNet של גוגל עם 94% הצלחה, אחריה ResNet של מיקרוסופט עם 97% הצלחה, ומשם הדברים עוד התפתחו והרעיונות השתלבו כמו Inception v4 או Inception-resnet.

אבל איך זה שאלגוריתם מקבל 3072 מספרים (למשל תמונה ממאגר התמונות CIFAR10  שהינה בגודל 32X32 פיקסלים וכל פיקסל צבעוני ולכן מתואר ע”י שלוש מספרים: 32323=3072) ומחזיר מספר בין 1 ל עשר שמציין מה רואים בתמונה (מטוס, רכב, ציפור, חתול, וכו…).

תודה ל CIFAR

הרי אותה רשת נוירונים עמוקה הינה אוסף (מיליונים) של פעולות אריתמטיות פשוטות ומוכרות לכולנו שמסודרות בסדר מסוים. משפט אחרון זה אולי נשמע הפשטה לא סבירה למי שלא מכיר, אבל זה באמת מה שיש ברשתות CNN= Convolutional Neural Network:

פעולות חיבור, פעולות כפל ופעולת תנאי (אם מספר גדול מסף מסויים אז תחזיר כך אחרת תחזיר כך)

האם זה כל מה שצריך כדי לתרגם תמונה למספר שמייצג מה רואים בתמונה ?

אין פה שום מתמטיקה כבדה ומסובכת ?

התשובה המאכזבת היא שלא, אין כאן!

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

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

אז בכל זאת מה עושות אותן מיליוני הפעולות האריתמטיות הללו בכדי לזהות מה רואים בתמונות ?

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

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

והנה עוד סרטון שסוקר כלי ויזואליזציה נוסף כללי יותר ועם הסברים:

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

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

https://hackernoon.com/capsule-networks-are-shaking-up-ai-heres-how-to-use-them-c233a0971952 מיקומים יחסיים של מאפיינים בתמונה

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

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

דווקא הוא זה שלאחרונה יצא נגד CNN והביא לקהילה בשורה חדשה.

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

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

נביאי הרכב האוטונומיים עומדים למבחן

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

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

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

 

 

Year Company
2020 Nvidia
2020 Audi
2020 NuTonomy
2019 Delphi & MobilEye
2021 Ford
2019 Volkswagen
2020 GM
2021 BMW
2020 Toyota
2021 Tesla
2025 US Secretary of Transportation
2030 UBER
2024 Jaguar and Land-Rover
2025 Daimler
2020 Nissan

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

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

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

תודה ל Texas Instruments

ההיסטוריה המדעית מלאה ניסיונות לאוטומטיזציה של רכבים עוד מהמאה הקודמת, למשל ALVINN הינו פרויקט אמבולנס צבאי אוטונומי מבוסס רשת נוירונים בת שתי שכבות מאוניברסיטת Carnegie Mellon משנת 1989:

https://www.youtube.com/watch?v=ilP4aPDTBPE

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

תודה לאנבידיה

ז”א הרשת מבינה מה חשוב בתמונה (שולי הכביש) ומה לא רלוונטי כרגע לצורך השליטה בהגה.

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

לאחר שאימנו את האלגוריתם עם רשת CNN=Convolutional Neural Network בת תשע שכבות, בחנו אותו על סימולציה שמציגה לאלגוריתם וידאו של אותה מצלמה קידמית שנבנה בצורה סינתטית על בסיס וידאו אמיתי (ז”א לקחו פריימים אמיתיים שצילמו והסיטו אותם כך שייראה שיש סטייה מהמסלול). בריצת הסימולציה אפשרו לנהג  (אנושי) לתקן את ההיגוי כשצריך. כדי לבחון עד כמה האלגוריתם בשל לחיים האמיתיים הגדירו מדד לרמת האוטונומיות שמבוסס על מספר הפעמים שבו הייתה התערבות אנושית לנהיגה, וכשהאלגוריתם נהיה מספיק אוטונומי (מינימום התערבויות בסימולטור) יצאו לנסיעת מבחן אמיתית, ראו את התוצאה:

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

הכוכב הבא – תכנית הריאליטי של האלגוריתם GAN

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

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

נתחיל בשאלה:

מי מזהה את השחקן הזה ובאיזה סרט הוא שיחק ?

תודה לאנבידיה

לא משנה מה עניתם, פשוט טעיתם!

התמונה הזו הינה תוצאה של אלגוריתם של אנבידיה המבוסס על GAN=Generative Adversarial Network שאומן על Database של סלבריטאים ומייצר סלבריטאים בקצב יותר גבוה מכל תכנית ריאליטי שיש כיום.

ז”א אין באמת אדם כזה במציאות אלא זו תמונה שנוצרה ע”י אלגוריתם שלמד טוב מאוד איך נראים תמונות של סלבריטאים ויצר (ג’ינרט) יש מאין תמונה חדשה שכזו!

רוצים להכיר עוד סלבריטאים שכאלו ?

הטירוף שנקרא GAN החל ב 2014 במאמר של Ian Goodfellow שהראה דרך מקורית וייחודית למודלים גנרטיביים Generative Models. מודלים גנרטיביים הינם אלגוריתמים שיוצרים data יש מאין, בין אם תמונות, וידאו, צלילים, קטעי מוסיקה או דיבור, טקסט או כל סוג אחר של מידע.

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

תודה ל Gan Zoo

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

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

ז”א במקרה שלנו רשת ה Generator הבלתי מאומנת תוציא בהתחלה תמונות של רעש לבן (ז”א תוציא תמונות שבוודאי לא אמיתיות) והרשת Discriminator שניתן לה תמונות לבחינה תחזיר בהתחלה תשובה מקרית (תמונה אוטנטית\תמונה לא אוטנטית ללא קשר למהי באמת התמונה הנבחנת).

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

אותו משחק בין הרשתות הינו אימון הדדי, שכשמצליח מסתיים בנקודת איזון כמו בפתרון המינימקס Minimax של משחק סכום אפס Zero sum game מתורת המשחקים.

בתרשים זה ניתן לראות איך מאמנים את הרשתות:

תיאור של אלגוריתם האימון של אלגוריתם GAN

רשת ה Discriminator מקבלת הן תמונות אמיתיות והן תמונות שיצרה רשת ה Generator.

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

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

מתעניין בהדרכה יותר טכנית ומעמיקה על הנושא ובעברית ?

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

על מה עבדו Google Brain בשנה שעברה ?

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

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

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

בכתבה זו אסקור כמה מנושאי המחקר היותר מעניינים עליהם עבדו ב Google Brain בשנת 2017 על פי הבלוג שלהם.

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

https://ai.google/research/pubs/pub45826

Speech Understanding and Generation – שיפור היכולות של זיהוי ושל יצירה של קול אנושי. בפרט בעיית המרת טקסט לדיבור Text to Speech בה חלה פריצת דרך כשמערכת Tacotron  (תרשים המציג את הארכיטקטורה למטה) מדברת מתוך טקסט כלשהוא באופן כזה שעובר את מבחן טיורינג, ז”א שלא ניתן להבדיל אם בן אנוש או מחשב מקריא את הטקסט. האזינו להדגמה כאן!

https://arxiv.org/abs/1712.05884

בתחום Privacy and Security –

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

https://arxiv.org/pdf/1610.05755.pdf

Understanding Machine Learning Systems –

הרבה מחקר נעשה כדי להבין איך רשתות למידה עמוקה עובדות, איך לפרש אותן ואיך להנגיש אותן בצורה ברורה לקהילה. בהקשר זה התאגדו Google, OpenAI, DeepMind, YC Research והשיקו מגזין אונליין בשם Distill שנועד לעזור לאנשים להבין למידת מכונה. האתר גם מספק כלים ויזואליים להמחשה של אלגוריתמים – שווה להכיר!

Posted by תמיר נווה 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

כמה זמן דרוש כדי לאלף אלגוריתם ?

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

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

מתי נראה הרבה רובוטים שעובדים במפעלים, משרתים אותנו בבתי קפה, מנקים לנו את הבית ואת הרחוב או מחליפים הרבה בעלי מקצוע אחרים ? נראה שלא ממש בקרוב! אחד הקשיים הוא כמות הזמן שיש לאמן את הרובוטים על כל משימה. התחום המבטיח בהקשר זה הינו Reinforcment learning או בעברית למידה חיזוקית. תחום זה הינו ענף ב machine learning – למידת מכונה שקיבל השראה מפסיכולוגיה התנהגותית. בעולם זה יש סוכן (רובוט\מכונית\תוכנה) שפועל בסביבה כלשהיא ומקבל מידע או חש את סביבתו. למשל אם מדובר במכונית אוטונומית אזי היא מקבלת תמונות היקפיות, חיישני תאוצה ולעיתים תמונת מכ”ם והיא יכולה לפעול בסביבה (בכביש) שזה אומר ללחוץ על הגז או הברקס או לסובב את ההגה:
אם למשל מדובר באלגוריתם שמטרתו לשחק במשחק האטארי המפורסם Breakout (פריצה) אזי האלגוריתם מקבל את תמונת המסך והפעולות שיכול לעשות הינן להזיז ימינה או שמאלה את השולחן:
בגישת ה reinforcement learning  על כל פעולה שמבצע הסוכן הוא מקבל תגמול (שהינו ערך מספרי) שמייצג עד כמה הפעולה הייתה חיונית או לא חיונית להשגת המטרה ובהתאם לכך הסוכן מעדכן את המדיניות שלו עבור הפעולות הבאות. קצת כמו לאלף כלב… מהפיכת הלמידה העמוקה הראתה לעולם שאימון עמוק (ז”א מודלים גדולים במיוחד) עם database גדול במיוחד מצליח באופן מפתיע איפה שגישות קלאסיות נכשלות. על אף שתחום ה reinforcement learning ותיק, בגילגוליו הראשונים החל בשנות החמישים אך כמו הרבה תחומים, החיבור שלו עם הלמידה העמוקה (deep reinforcement learning) נראה מבטיח מאוד לחוקרים רבים. כמה זמן צריך להתאמן על דוגמאות צעצוע ? לפי המאמר של openAi משך הזמן שדרוש לאמן אלגוריתם Rainbow DQN  עד שמשחק במשחקי אטארי טוב לפחות כמו בן אדם הינו 83 שעות משחק. דוגמה אחרת הינה לאמן למשימות בסימולציה MuJoCo שם כמות האימונים נעה בין מאות אלפים לעשרות מיליוני צעדים. MuJoCo  הינו מנוע המדמה את חוקי הפיסיקה שנועד לעזור למחקר בתחום הרובוטיקה. זה בעצם חוסך ניסויים ברובוטים פיסיים באמצעות סימולציה וירטואלית. למשל משימות כגון לגרום לרובוט ללכת, לעלות במדרגות, לתמרן בין מכשולים וכו…
לפי המאמר של Deepmind נדרשו מעל 100 שעות אימון מקבילי כדי להגיע לביצועים שניתן לראות בסרטון. אלו דוגמאות יחסית פשוטות, כמה זמן צריך להתאמן על דוגמאות מהעולם הפיסי ? נראה שהתשובה לא ברורה לגמרי אבל מדובר בהרבה מאוד, אולי הרבה יותר נתונים ממה שסביר לאסוף. אם נסתכל על פעולות פיסיות פשוטות כמו פתיחת דלת, הרמת חפץ או הזזה של חפץ:
נראה שלמשל להרמת חפצים על הרובוט לבצע לפחות 800,000 חזרות (של ניסוי וטעייה) וזה יביא אותו רק לבשלות חלקית כי אם הסביבה קצת משתנה הוא פחות יצליח. ולגבי משימות קצת יותר מורכבות עם תנאי סביבה משתנים, כמו למשל נהיגה אוטונומית, עוד ב 2015 דיבר אלון מאסק מנכ”ל טסלה על בערך מיליון מיילים של נהיגה מבוקרת (נהג אוטומטי בפיקוח נהג אנושי) ליום שמתווספים לאינטליגנציה המשותפת של האלגוריתם נהיגה אוטונומי.  ב 2016 כבר דיברו צבירה של 780 מיליון מיילים של נהיגה וקצב אגירת המידע גדל למיליון מיילים כל עשר שעות. אז תקציבים לאימון אלגוריתמים של נהיגה אוטונומית לא חסרים בעולם וזה אכן מתקרב, אך פעולות אחרות אנחנו עוד לא רואים הרבה. לסיכום הרובוטים עדיין מתנהגים כמו כלבים קשים לאילוף, או שאנחנו עוד לא למדנו את אומנות האילוף היעיל!
Posted by תמיר נווה in deep

שיעור #5 – מדדי הצלחה

מלל השיעור

 

תיקון טעות בהקלטת הפרק, אמרתי ש precision-recall מבלבל… 🙂

Precision של מחלקת התפוחים – הינו מספר הפעמים שסיווג האלגוריתם תמונות תפוחים כתפוח לחלק למספר הפעמים שסיווג האלגוריתם תמונות תפוחים כתפוח ועוד מספר הפעמים שסיווג האלגוריתם תמונות תפוחים כבננות. מדוע מדד זה לא מספיק, כי הרי גם אלגוריתם טיפש שתמיד מחליט שזה תפוח יקבל ציון 100% ב precision. (כל 60 תמונות התפוחים יגיד שזה תפוח, אבל זה לא אלגוריתם מוצלח בכלל כי גם על 40 בננות אומר שזה תפוח)

לכן המושג המשלים שלו הינו Recall.

Recall של מחלקת התפוחים – הינו מספר הפעמים שסיווג האלגוריתם תמונות תפוחים כתפוחים לחלק ללמספר הפעמים שסיווג האלגוריתם תמונות תפוחים כתפוחים ועוד מספר הפעמים שסיווג האלגוריתם תמונות בננות כתפוחים. (שימו לב שגם precision וגם recall הם אותו המונה לחלק למכנה אחר)

אותו אלגוריתם טיפש שתמיד מסווג תפוח יקבל ציון recall 60%.

Posted by תמיר נווה in מהי למידת מכונה, קורסים

שיעור #13 – תרגיל מסכם שני, הכוונה לפתרון ופתרון

הורד פתרון

 

Posted by תמיר נווה in פייתון, קורסים

שיעור #12 – תרגיל ראשון: הכוונה לפתרון ואז פתרון

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import random

ax = plt.axes()

for n in range(10):
 x = random.random()
 y = random.random()
 r = random.random()
 g = random.random()
 b = random.random()
 for circle_rad in range(0,10):
  p1 = patches.Circle((x, y), circle_rad/10, facecolor=(r,g,b))
  ax.add_patch(p1)
  plt.pause(.00000001)

Posted by תמיר נווה in פייתון, קורסים

שיעור #11 – תרגיל מסכם ראשון

import matplotlib.pyplot as plt
import matplotlib.patches as patches

ax = plt.axes()
p1 = patches.Circle((0.2, 0.3), 0.1, facecolor=(1, 0, 0))
p2 = patches.Rectangle((0.6, 0.6), 0.2, 0.1, facecolor=(1, 1, 0))

ax.add_patch(p1)
ax.add_patch(p2)

plt.pause(0.5)
ax.cla()

Posted by תמיר נווה in פייתון, קורסים