איך ליצור את הבינה המלאכותית שלנו

28/03/22

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

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

זהה את הבעיה

זה אולי נראה מוזר אבל אם אתה רוצה לבנות AI אתה צריך לזהות את הבעיה שאתה רוצה לפתור היטב. 

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

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

לגבי הנתונים...

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

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

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

נתונים לא מובנים, לעומת זאת, הם וידאו, תמונות, אודיו... הרבה יותר קשה לעיבוד.

האלגוריתם

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

אנו יכולים לחלק אלגוריתמים לשתי קטגוריות הנקראות "למידה מפוקחת" ו"למידה ללא פיקוח". 

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

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

רכבת AI

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

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

שפת תכנות ופלטפורמה

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

השפות בהן ניתן להשתמש הן רבות אך הנפוצות ביותר הן Python ו-R מכיוון שכבר יש להן ספריות רבות מוכנות לשימוש המפשטות את כתיבת הקוד. לבסוף, יש צורך לבחור את הפלטפורמה שתאפשר לנו לבנות את ה-AI שלנו. ישנן פלטפורמות שונות שעוזרות במימוש הפרויקט שלנו, ביניהן למשל TensorFlow היא פלטפורמת קוד פתוח המאפשרת לעשות בדיקות מבלי לבזבז כלום, או Numpy, Keras, Pandas, sikit-learn, Matplotlib, Seaborn וכדומה. , הפנורמה ממש רחבה.

כל מה שנשאר זה לנסות...

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

אלסנדרו רוגלו

(אני מודה לכל החברים של SICYNT שייעצו לי ועזרו לי לשפר את המאמר)

מידע נוסף:

המהפכה הדיגיטלית החדשה, למידה עמוקה - הגנה מקוונת

שיטות שלב אחר שלב לבנות מערכת AI משלך היום | בלוג upGrad

מה זה נתונים מובנים? - GeeksforGeeks

מהי למידה מפוקחת? | IBM

סוגי אלגוריתמים של בינה מלאכותית שכדאי להכיר [מדריך שלם] | בלוג upGrad

למידה ללא פיקוח עבור סייבר (hmgstrategy.com)