אלגוריתם
🆕 את הערך הזה אפשר לקרוא גם בגרסה לגיל 12 או בגרסה למנהלים.
הגדרה
אלגוריתם הוא סדרת כללים או שלבים מוגדרים היטב שמחשב עוקב אחריהם כדי לפתור בעיה או לבצע משימה.
💡 דוגמה
מתכון לעוגה הוא אלגוריתם: שלבים מוגדרים שמובילים לתוצאה. ו"האלגוריתם של אינסטגרם" הוא בפועל מערכת שמחליטה מה תראו בפיד.
מה זה אלגוריתם: מתכון, לא קסם
אלגוריתם הוא רשימת הוראות מדויקת לביצוע משימה, כזו שאפשר לעקוב אחריה בלי לחשוב. מתכון לעוגה הוא אלגוריתם. הוראות ההרכבה של רהיט הן אלגוריתם. גם השיטה שלמדנו בבית הספר לחיבור מספרים בטור, ספרה אחרי ספרה עם נשא, היא אלגוריתם לכל דבר.
כדי שרשימת הוראות תיחשב אלגוריתם היא צריכה לעמוד בכמה תנאים. כל צעד חייב להיות חד-משמעי, בלי מקום לפרשנות. חייב להיות ברור באיזה סדר מבצעים. חייבים להיות קלט מוגדר ופלט מוגדר. והתהליך חייב להסתיים אחרי מספר סופי של צעדים — הוראה כמו להמשיך לערבב, בלי תנאי עצירה, פוסלת את המתכון כאלגוריתם.
זה המושג הבסיסי ביותר במדעי המחשב, והוא קדם לבינה מלאכותית בהרבה מאוד שנים. כל תוכנה שרצה על כל מכשיר בנויה בסופו של דבר מאלגוריתמים, בין אם היא לומדת משהו ובין אם לא. כשמדברים היום על אלגוריתמים בהקשר של AI, מדובר בשכלול של הרעיון הוותיק הזה, לא בהחלפה שלו.
מאל-ח׳ואריזמי עד תוכנית המחשב הראשונה
המילה נגזרת משמו של מוחמד אבן מוסא אל-ח׳ואריזמי, מתמטיקאי פרסי בן המאה התשיעית. ספרו על החשבון בספרות ההודיות תורגם ללטינית במאה השתים-עשרה תחת השם אלגוריתמי, וכך הפך שמו האישי למונח כללי. משמו של ספר אחר שלו הגיעה, באותו אופן, גם המילה אלגברה.
הצעד הבא נעשה במאה התשע-עשרה. ב-1843 פרסמה אדה לאבלייס תרגום של מאמר על המכונה האנליטית של צ׳ארלס באבג׳, והוסיפה לו סדרת הערות משלה. האחרונה שבהן, המכונה Note G, תיארה שיטה שלב אחר שלב לחישוב סדרת מספרי ברנולי על אותה מכונה, והיא נחשבת באופן מסורתי לתוכנית המחשב הראשונה שפורסמה אי פעם.
באבג׳ עצמו סיפר לימים שהוא זה שסיפק את הנוסחאות, ושלאבלייס החזירה לו אותן לתיקון אחרי שאיתרה בהן טעות חמורה. המכונה האנליטית מעולם לא נבנתה בפועל, כך שהאלגוריתם הזה קדם במאה שנים למחשב שיכול היה להריץ אותו.
למה יש אלגוריתם טוב ואלגוריתם גרוע
שני אלגוריתמים יכולים לפתור בדיוק את אותה בעיה ולהחזיר בדיוק את אותה תשובה, ובכל זאת אחד מהם יהיה שימושי והשני חסר תועלת. ההבדל הוא ביעילות: כמה צעדים נדרשים ככל שהקלט גדל.
דוגמה קלאסית היא חיפוש שם בספר טלפונים. אפשר לעבור שורה אחרי שורה מההתחלה, ואז, אם יש מיליון שמות, במקרה הגרוע יידרשו מיליון צעדים. ואפשר לפתוח באמצע, לבדוק אם השם המבוקש נמצא לפני או אחרי, ולהמשיך רק בחצי הרלוונטי — ואז לחזור על אותו צעד בדיוק. בשיטה השנייה מיליון שמות נגמרים בכעשרים צעדים בלבד.
ההבדל הזה הוא ההבדל בין תוכנה שמגיבה מיד לתוכנה שנתקעת. המדד שבו משתמשים כדי לתאר אותו נקרא סיבוכיות זמן, והוא אינו מודד שניות אלא את קצב הגידול במספר הצעדים ככל שהקלט גדל — כי זה מה שקובע אם האלגוריתם ימשיך לעבוד גם על נתונים גדולים פי אלף.
אלגוריתם קלאסי מול מודל שלומד בעצמו
כאן נמצא ההבדל שהכי חשוב להבין כשמדברים על AI. באלגוריתם קלאסי מתכנת כותב את הכללים במפורש. אפשר לפתוח את הקוד, לקרוא כל שורה, ולהסביר בדיוק למה התקבלה תוצאה מסוימת. אותו קלט יפיק תמיד אותו פלט.
במודל למידת מכונה (Machine Learning) הכללים לא נכתבו בידי אף אחד. הם התגבשו מעצמם מתוך דוגמאות, והם שמורים כמיליארדי מספרים שאין להם משמעות קריאה. אפשר לבדוק מה המודל עשה, אבל קשה מאוד להסביר למה — וזה בדיוק מקור האתגר של ההסברתיות במערכות AI.
הגבול בין השניים דווקא מיטשטש. ב-2023 פרסמה DeepMind בכתב העת Nature את AlphaDev, מערכת שאומנה בלמידת חיזוק וגילתה שגרות מיון קצרות לרצפים בני שלושה עד חמישה איברים — אבני הבניין שבתוך ספריית המיון — מהירות ממה שנמצא עד אז. השגרות האלה שולבו בפועל בספריית המיון התקנית של פרויקט LLVM, שבשימוש נרחב בתעשייה. במילים אחרות: מודל לומד שכתב שגרת קוד קלאסית, מהודקת יותר מזו שכתבו בני-אדם לפניו.
האלגוריתמים שמאמנים את הבינה המלאכותית
כדאי לשים לב שגם AI עצמו בנוי מאלגוריתמים קלאסיים. הם פשוט נמצאים שכבה אחת מתחת למה שהמשתמש רואה.
תהליך האימון של רשת נוירונים מופעל בידי שני אלגוריתמים מוגדרים היטב, שנכתבו בידי בני-אדם ולא נלמדו מדבר. הראשון, התפשטות לאחור (Backpropagation), מחשב עבור כל פרמטר במודל כמה הוא תרם לטעות בתשובה. השני, ירידת גרדיאנט (Gradient Descent), משתמש בחישוב הזה כדי להזיז כל פרמטר צעד קטן בכיוון שמקטין את הטעות.
שני הכללים מוגדרים במלואם, אין בהם דבר מסתורי, ואפשר לכתוב את שניהם על דף אחד. האקראיות היחידה באימון היא בבחירת הדוגמאות ובסדר שבו הן מוגשות, לא בכלל העדכון עצמו. מה שאינו צפוי מראש הוא רק התוצאה: אילו ערכים הפרמטרים יקבלו בסוף, ואילו יכולות יצוצו מהם.
זו הסיבה שהניסוח שלפיו הבינה המלאכותית מחליטה בעצמה מטעה. האלגוריתם שמעדכן את המודל ידוע ומדויק לחלוטין. מה שאינו ידוע מראש הוא מה יצא ממנו בסוף.
כשאלגוריתם מחליט עלינו: שקיפות ורגולציה
בשיח היומיומי, האלגוריתם משמש כשם כולל לכל מנגנון החלטה אוטומטי: מה יופיע בפיד, איזה סרטון יוצע אחר כך, מי יקבל הלוואה. השימוש הזה רחב מהמובן הטכני, ולעיתים קרובות מדובר במערכת AI לומדת ולא באלגוריתם קלאסי בכלל. אבל הוא מצביע על שאלה אמיתית: מי בעצם יודע לפי מה ההחלטה התקבלה.
הרגולציה האירופית כבר מתייחסת לזה במפורש. תקנת השירותים הדיגיטליים של האיחוד האירופי מחייבת בסעיף 27 פלטפורמות מקוונות שמפעילות מערכת המלצות (למעט עסקים זעירים וקטנים) לפרט בתנאי השימוש שלהן, בשפה ברורה, מהם הפרמטרים המרכזיים שקובעים מה יוצג למשתמש ומדוע הם חשובים.
סעיף 38 מרחיב את החובה לפלטפורמות ולמנועי החיפוש הגדולים במיוחד: הם מחויבים להציע לכל מערכת המלצות שלהם לפחות אפשרות אחת שאינה מבוססת על פרופיל אישי של המשתמש. כלומר, הפלטפורמה חייבת להעמיד לרשות המשתמש פיד שאינו נבנה לפי מה שנאסף עליו — וזו דרישה משפטית, לא הצעה שהיא יכולה לוותר עליה.
גרסה פשוטה של הערך, לגיל 12. כל מה שכתוב כאן מופיע גם בערך המלא.
אלגוריתם הוא רשימת הוראות מדויקת לביצוע משימה. כל כך מדויקת, שאפשר לעקוב אחריה בלי לחשוב בכלל. מתכון לעוגה הוא אלגוריתם. גם השיטה שלמדתם בבית-הספר לחבר מספרים בטור, ספרה אחרי ספרה עם נשא, היא אלגוריתם.
לא כל רשימת הוראות נחשבת אלגוריתם. כל צעד צריך להיות חד-משמעי, בלי מקום לפרשנות. הסדר צריך להיות ברור. צריך להיות ברור מה נכנס בהתחלה ומה יוצא בסוף. והתהליך חייב להיגמר: הוראה כמו "להמשיך לערבב", בלי לומר מתי לעצור, פוסלת את המתכון.
שני אלגוריתמים יכולים להגיע לאותה תשובה בדיוק, ובכל זאת אחד מהם טוב בהרבה. זה קצת כמו המשחק "נחשו את המספר": אפשר לנחש אחד, שתיים, שלוש, ואפשר לשאול "גדול או קטן מהאמצע?" ולהמשיך רק בחצי הנכון. ככה מחפשים שם ברשימה ממוינת של מיליון שמות: במקום עד מיליון צעדים, כעשרים צעדים בלבד.
המילה עצמה ותיקה בהרבה מהמחשב. היא באה משמו של אל-ח'ואריזמי, מתמטיקאי פרסי מהמאה התשיעית.
ומה עם בינה מלאכותית? באלגוריתם רגיל, מתכנת כותב כל כלל בעצמו, ואותו קלט נותן תמיד אותה תוצאה. במודל של למידת מכונה (Machine Learning), כלומר מודל שלומד מדוגמאות, הכללים לא נכתבו בידי אף אחד. הם התגבשו מתוך הדוגמאות. אבל גם שם עובדים אלגוריתמים רגילים, שמעדכנים את המודל בזמן האימון. אז כשמישהו אומר "האלגוריתם בחר לי את הסרטון הבא", כדאי לדעת: לרוב מדובר במערכת המלצות שלמדה מדוגמאות, ולא במתכון אחד שמישהו כתב.
מה המושג אומר לארגון ולעסק. כל עובדה כאן מופיעה גם בערך המלא.
אלגוריתם הוא סדרת צעדים מוגדרת היטב לביצוע משימה: קלט מוגדר, סדר ברור, פלט מוגדר, וסוף מובטח. כל תוכנה שהארגון מפעיל בנויה מאלגוריתמים, בין אם יש בה בינה מלאכותית ובין אם לא.
ההבחנה שחשובה למנהל היא בין שני סוגי מערכות שבשיח היומיומי נקראות שתיהן "האלגוריתם". באלגוריתם קלאסי מתכנת כתב את הכללים במפורש: אפשר לפתוח את הקוד, לקרוא אותו ולהסביר למה התקבלה תוצאה מסוימת, ואותו קלט יפיק תמיד אותו פלט. במודל למידת מכונה הכללים התגבשו מתוך נתוני אימון, הם שמורים כמיליארדי מספרים שאין להם משמעות קריאה, וההתנהגות סטטיסטית ולא מובטחת מראש. אפשר לבדוק מה המודל עשה; קשה מאוד להסביר למה. כשמערכת מחליטה מה יוצג ללקוח או מי יקבל הלוואה, מהסוג שלה נגזרות היכולת להסביר החלטה, לשחזר אותה ולתקן אותה.
לכל סוג יתרון ומחיר. כלל כתוב מטפל רק במקרה שמישהו חשב עליו מראש. מודל לומד מכליל למקרה חדש מתוך דוגמאות דומות שראה באימון, אבל משלם על כך בשקיפות. וחשוב לדעת שהגבול אינו חד: גם מודל לומד מאומן באמצעות אלגוריתמים קלאסיים ומדויקים לחלוטין. מה שאינו ידוע מראש הוא רק התוצאה שלהם. לכן הניסוח "המערכת החליטה בעצמה" מטעה.
גם בין אלגוריתמים קלאסיים יש הבדל עסקי ממשי. שניים מהם יכולים להחזיר אותה תשובה, ואחד מהם עדיין ייתקע כשהנתונים יגדלו. המדד לכך, סיבוכיות זמן, אינו מודד שניות אלא את קצב הגידול במספר הצעדים ככל שהקלט גדל. זה מה שקובע אם מערכת שעובדת היטב בפיילוט תמשיך לעבוד גם על היקף הנתונים האמיתי.
שאלות שכדאי לשאול ספק, צוות או יועץ:
- האם הכללים במערכת נכתבו במפורש, או שהמערכת למדה אותם מנתונים?
- אם נזין אותו קלט פעמיים, האם נקבל בדיוק אותה תוצאה?
- עבור החלטה מסוימת שהמערכת קיבלה, האם תוכלו להסביר למה היא התקבלה?
- מה קורה במקרה שלא נצפה מראש: יש לו כלל כתוב, או שהמערכת מכלילה מדוגמאות דומות?
- איך גדל מספר הצעדים, ולכן זמן התגובה, כשכמות הנתונים גדלה?
📬 הגיליון השבועי של Wiki-AI
פעם בשבוע, ביום ראשון: שלושת הדברים החשובים שקרו בעולם הבינה המלאכותית, בעברית פשוטה, וערכים חדשים באנציקלופדיה. לגיליונות
| אלגוריתם קלאסי | מודל למידת מכונה | |
|---|---|---|
| מקור הכללים | נכתבו במפורש בידי מתכנת | התגבשו מעצמם מתוך נתוני אימון |
| צפיות התוצאה | אותו קלט מפיק תמיד אותו פלט | התנהגות סטטיסטית, לא מובטחת מראש |
| הסבר לתוצאה | אפשר לקרוא את הקוד ולהסביר | קשה מאוד, לעיתים בלתי אפשרי |
| מקרה שלא נצפה מראש | מטופל רק אם נכתב לו כלל | מוכלל מדוגמאות דומות שנראו באימון |
שאלות נפוצות ❓
מה זה אלגוריתם בשפה פשוטה?
רשימת הוראות מדויקת לביצוע משימה, שאפשר לעקוב אחריה בלי לחשוב, כמו מתכון. כל צעד חד-משמעי, והתהליך חייב להסתיים.
מאיפה הגיעה המילה אלגוריתם?
משמו של אל-ח׳ואריזמי, מתמטיקאי פרסי בן המאה התשיעית. ספרו תורגם ללטינית תחת השם אלגוריתמי, ומשם השם נדבק למושג.
האם בינה מלאכותית היא אלגוריתם?
לא בדיוק. תהליך האימון מופעל באלגוריתמים קלאסיים, אבל כללי ההחלטה של המודל עצמו נלמדו מנתונים ולא נכתבו בידי אדם.
למה אומרים האלגוריתם על רשתות חברתיות?
זה כינוי רווח למערכת שמחליטה מה יוצג בפיד. בפועל מדובר לרוב במערכת המלצות לומדת, ולא באלגוריתם קלאסי אחד ומוגדר.