השגות על שיעור 15 בינה מלאכותית
שלום הרב,
צפיתי בשיעור 15 על בינה מלאכותית ביוטיוב (ונהניתי 🙂 ויש לי כמה השגות (בתור חוקר בתחום), אם זה בסדר:
- נקודה טרמינולוגית: בשיעור אמרת למישהו שרשתות נוירונים קטנות אינן מודלים (ושמודלים הם מודלי שפה גדולים). זה לא מדויק — מודלי שפה גדולים הם תת־קבוצה של רשתות נוירונים, שהן בעצמן תת־קבוצה של מודלים. "מודל" הוא באופן כללי מה שלמדנו מהנתונים בלמידת מכונה.
- לגבי ההבדל בין מודלי שפה גדולים ל"סתם רשתות נוירונים" (נניח רשת שמבדילה בין כלבים לחתולים), יש שני הבדלים עיקריים:
א. שפה — המודלים מנסים למדל את התפלגות השפה מתוך דאטה האימון שלהם. שפה שימושית כי אפשר להביע בה המון בעיות, אבל המודל עדיין למד התפלגות מסוימת ולא כל התפלגות אפשרית. למשל, אם ניתן לו מקטע DNA, ובהנחה שלא התאמן על DNA, הוא ככל הנראה ייכשל.
ב. גדולים — למודלים האלה המון פרמטרים, המאפשרים להם למדל פונקציות מורכבות מאוד. אבל קיימים גם מודלי שפה קטנים, ומנגד מודלים גדולים להתפלגויות אחרות כמו וידאו, DNA ואודיו.
לגבי "כלליות", אנחנו מתייחסים בעצם למכלול הבעיות שמעניינות בני אדם. מודל אחד יכול למדל התפלגות מורכבת יותר מאחר ובכל זאת להיחשב פחות כללי, כי השני פותר מגוון רחב יותר של בעיות שמעניינות אותנו. למשל, יש מודלים מתמטיים שעובדים ב-LEAN ומוצאים הוכחות מרשימות מאוד, אבל עושים "רק" מתמטיקה ולכן יחשבו פחות כלליים גם אם מתמטיקה מורכבת יותר משפה אנושית במונחי אנטרופיה.
- הרב אמר שאינו בטוח אם אפשר לכתוב רשת נוירונים בתוכנה רגילה. למעשה, רשת נוירונים היא בעצמה תוכנה רגילה: בסוף הכול מתורגם לפעולות חישוביות בקוד בינארי במעבד. קונספטואלית קשה לכתוב בעצמנו רשת גדולה, אבל בקורסים בתחום אפילו כותבים רשתות פשוטות מאפס.
יתרה מזאת, עם הרבה מאמץ יכולתי עקרונית לכתוב תוכנה שמזהה את סבתי בין אנשים אחרים. הייתי מתחיל בתמונות שלה מול אחרים ומחפש מה מייחד אותה: צורת הראש, קמטים, שיער וכו'.
אח"כ צריך להגיע מהפיקסלים לתכונות האלה. כדי למדוד את הראש צריך להפרידו מהרקע; אפשר להתחיל מכך שפנים נמצאות בטווחי צבע מסוימים ואחידות יחסית בצבען, בעוד רקעים לרוב מגוונים ורועשים יותר. לאחר שמצאתי את אזור הפנים, אפשר לחפש אף לפי קווי מתאר וצללים במרכזן, קמטים לפי קווים כהים ביחס לעור שסביבם, ובדומה לכך לחלץ מרקם שיער, צורת ראש וכו'. ככל שאוסיף קורלציות ודוגמאות חיוביות ושליליות, המודל ישתפר.
אבל יש כאן שתי נקודות. ראשית, אם בניתי את ההפרדה על "סבתא שלי מול אנשים אחרים", תמונת "זבל" עלולה להדליק במקרה את הקורלציות. למשל, "מזהה האף" יכול להגיב לקווים מוצללים ושבורים שאינם אף, אך עומדים בקריטריונים שבניתי.
דבר דומה קורה ברשתות נוירונים עם מידע מחוץ להתפלגות האימון (out of distribution). אם הרשת ראתה רק "אנשים מול סבתא שלי", אין הבטחה שתתנהג בהיגיון על דברים שונים ממה שראתה באימון(כלומר על תמונות של כלבים למשל).
שנית, גם אם הייתי מציג לרב את הקוד שלי עם כל הקורלציות, כנראה היה קשה להבין מה הוא עושה בלי שאספר. קל וחומר ברשת נוירונים, שבה לא אני בחרתי את הקורלציות — הן נוצרו ב-gradient descent, בלי שאדם החליט "כאן נחפש אף" או "כאן קמט". לכן גם האינטואיציות שלנו פחות עוזרות להבין מה קורה בפנים.
אבל אין כאן קסם: זו פונקציה חישובית רגילה. עקרונית אפשר לממש אותו חישוב בתנאי if ולוגיקה בוליאנית (למשל NAND, שמספיק לבניית כל פונקציה בוליאנית). אילו הייתי כותב תוכנה שעושה בדיוק את חישוב הרשת, אולי היינו מתפלאים איך חשבתי עליה — אבל היא עדיין הייתה תוכנת מחשב רגילה.
- לגבי AGI: אחת ההגדרות השימושיות למודל "כללי" היא מודל שיוכל לבצע מגוון רחב מאוד של פעילויות בעלות ערך כלכלי ברמה שאינה פחותה מעובד אנושי.
זה לא אומר שיוכל לפתור כל שאלה. ידוע שקיימות בעיות שאינן ניתנות לפתרון בזמן פולינומי ודורשות משאבים גדולים יותר. לא משנה כמה נשפר את המשקולות, כל עוד המודל לא עושה מספיק חישובים בינאריים אין לא איך לפתור אותה.
מקווה שהייתי ברור לפחות חלקית 🙂
לגלות עוד מהאתר הרב מיכאל אברהם
Subscribe to get the latest posts sent to your email.
קודם תודה על הפנייה המפורטת וההערות החשובות. כפי שאמרתי איני מומחה בתחום ולכן אך צפוי שיהיו לי אי דיוקים. כמובן שמטרת השיעורים אינה להעביר קורס טכני במדעי המחשב, אלא להשתמש ברקע הטכני כפלטפורמה לבירור השאלות הפילוסופיות והמושגיות. לכן מה שחשוב לי הוא רק התמונה העקרונית ולא הפרטים.
אתייחס לנקודות שהעלית אחת לאחת:
1. לגבי הטרמינולוגיה ("מודל", רשתות נוירונים ו-LLMs):
ברמה הפורמלית של מדעי המחשב ההערה שלך מוצדקת לחלוטין: כל פונקציה הנלמדת מנתונים בלמידת מכונה נקראת "מודל", ורשתות נוירונים (ומודלי שפה בתוכן) הן תת-קבוצות שלו. כשהבחנתי בשיעור ובכתביי בין "תוכנה קלאסית", "רשת נוירונים רגילה/ייעודית" לבין "מודל שפה גדול" (LLM), לא התכוונתי לקבוע טקסונומיה קשיחה של מדעי המחשב, אלא להבחין בין שני דפוסים תפקודיים ופילוסופיים: רשת נוירונים ייעודית שאומנה למשימה מוגדרת (כמו זיהוי פנים) לעומת מודל שפה שמנצל את התווך של השפה האנושית כדי לשמש כ"מכונה אוניברסלית" לפתרון בעיות שונות ומגוונות.
2. לגבי ההבדל בין LLM לרשת נוירונים ייעודית וסוגיית ה"כלליות":
אני מסכים לגמרי עם התיאור שלך. מודלי שפה גדולים מאומנים למדל את ההתפלגות הסטטיסטית של טקסטים מתוך קורפוס האימון. כפי שכתבתי בטוריי (למשל בטור 695 – אדם ומכונה תושיע ה': ב. רשתות נוירונים ובטור 696 – אדם ומכונה תושיע ה': ג. על טעויות, שקרים ועבודת המידות של מכונות), היכולת המרשימה שלהם לפתור מגוון בעיות נובעת מפתרון גאוני: השפה האנושית כוללת בתוכה ייצוג של כמעט כל ידע ובעיה אנושית, ולכן ניבוי הטוקן הבא על קורפוס אנושי עצום יוצר סימולציה רחבה של פתרון בעיות.
עם זאת, בדיוק כפי שהערת, כאשר מציגים למודל קלט מחוץ להתפלגות שלו (למשל מקטע DNA שלא אומן עליו) או כשנדרשת הסקה סימבולית חמורה (כמו בחישוב מתמטי מדויק במספרים גדולים), נחשפת העובדה שהמודל אינו פועל על בסיס הבנה סמנטית או אלגוריתם דטרמיניסטי פנימי, אלא על קורלציות סטטיסטיות אד-הוק. הדוגמה שהבאת על מודלים ב-LEAN מדגימה זאת היטב: מודל ממוקד תחום יכול להיות מורכב מאוד מבחינת חישוב, אך הוא ייחשב פחות "כללי" במבחן הביצועים האנושי מפני שהשפה הטבעית היא המתווך הכללי ביותר של התרבות האנושית. בהמשך אתייחס גם למגבלות של המודלים הללו (כמו למשל בחיבור מספרים. למה צריך להגיע לפענוח DNA?).
3. לגבי כתיבת רשת נוירונים בתוכנה רגילה וזיהוי פנים:
ברור שהרשת ממומשת על ידי תוכנה. וכי אמרתי אחרת?! לכן גם מובן מאליו שיש תוכנה שמבצעת את כל מה שמודל עושה. התוכנה היא המודל עצמו. לא על כך דיברתי. אני מדבר על תוכנה שמקבלת תוכנית קלסית סימבולית.
גם לגבי זיהוי הפנים, הסברתי די בפירוט שעקרונית זה אפשרי עם אי דיוקים משמעותיים. הזכרתי את משפטי הדגימה.
4. לגבי Gradient Descent, מידע מחוץ להתפלגות (OOD) וסמנטיקה:
לא הבנתי את הערה. אמרתי אחרת?! ברור שאימון למשימה אחת לא נותן יכולות למשימות אחרות?
5. לגבי AGI ומותר האדם:
העמימות בהגדרת AGI משקפת בדיוק את טענתי. אין בו שום דבר שונה ממודל שפה גדול למעט עניין כמותי.
לגלות עוד מהאתר הרב מיכאל אברהם
Subscribe to get the latest posts sent to your email.
תודה רבה על התשובה.
אני רואה שהיו לי כמה אי־הבנות לגבי עמדת הרב. בשיעור הרב הציג שני אופנים להסביר את תהליך הזיהוי של רשת נוירונים: אחד "רציונליסטי", והשני כמעין הבחנה בלתי־אמצעית. מכאן הבנתי שהרב מציע ברצינות שההחלטה ברשת עצמה יכולה להיעשות באופן בלתי־אמצעי ולא באמצעות שלבי חישוב פנימיים. לכן בסעיפים 3–4 ניסיתי להסביר כיצד גם תהליך שנראה לנו בלתי־מובן יכול עקרונית להיות מורכב כולו משלבי חישוב. כעת אני מבין שלא לכך התכוון הרב.
לגבי ההבחנה בין DNA לחיבור מספרים, עדיין נדמה לי שיש הבדל חשוב: בעיה בדאטה לעומת בעיה בהכללה.
כפי שהרב ציין, בלמידת מכונה אנחנו מחפשים היפותזה שמכלילה מעבר לדוגמאות האימון. אם המודל למד חוק פשוט ככל האפשר שמסביר את הנתונים, נצפה שיצליח גם בדוגמאות חדשות(זה נושא שנקרא PAC-LEARNABILITY והוא דומה עקרונית לתער של אוקהם).
לכן כישלון בחיבור מספרים ארוכים הוא, לפחות עקרונית, כשל מהסוג השני והוא ככל הנראה נובע ממורכבות יתר ברשת. המודל ראה המון מופעים של חיבור בדאטה, אבל ייתכן שבמקום ללמוד ייצוג שמממש את אלגוריתם החיבור הכללי, הוא למד קורלציות או אסטרטגיה שעובדות היטב בתחום האימון ונשברות, למשל, באורכים גדולים יותר.
ב-DNA, לעומת זאת (בהנחה שלא היה קורפוס משמעותי של DNA באימון), הבעיה קודמת לכך: המידע שמגדיר את ההתפלגות הזאת פשוט לא ניתן למודל. השפה האנושית באינטרנט אינה מכילה בהכרח את המבנה הסטטיסטי של רצפי DNA. לכן גם אם נמצא את ההיפותזה הפשוטה ביותר שמסבירה באופן מושלם את קורפוס האימון, אין סיבה שהיא תכיל את חוקי ההתפלגות של DNA. בחיבור החוקיות הרלוונטית מופיעה פעמים רבות בדאטה והשאלה היא האם המודל הכליל ממנה נכון; ב-DNA, תחת ההנחה הנ"ל, החוקיות עצמה כלל לא ניתנה לו ללמידה.
לגבי הנקודה הסמנטית, נדמה לי שעדיין לא הבנתי עד הסוף את עמדת הרב. מהשיעור ומהתשובה קיבלתי את הרושם שהרב מבחין לא רק בין אדם למכונה, אלא גם בין תוכנה קלאסית־סימבולית לבין רשת נוירונים: שבתוכנה סימבולית יש במובן כלשהו אלגוריתם או סמנטיקה, ואילו הרשת פועלת באמצעות קורלציות סטטיסטיות אד־הוק.
אם זו אכן הטענה, כאן נמצאת ההשגה שלי. איני רואה הבדל עקרוני כזה מבחינה חישובית. נניח שיש לי תוכנה סימבולית שמחברת מספרים. אפשר לממש אותה כמעגל של שערים לוגיים, ועקרונית אפשר לבנות גם רשת נוירונים שמממשת בדיוק אותה פונקציה (נוירונים עם פונקציות אקטיבציה מתאימות יכולים לממש שערים לוגיים). במקרה כזה קשה לי לומר שהתוכנה הראשונה "אלגוריתמית" או "סמנטית", ואילו השנייה היא רק אוסף קורלציות — הרי שתיהן מבצעות אותו חישוב.
אולי כוונת הרב היא להבדל אחר: בתוכנה סימבולית האדם קובע מראש מה מייצגים הסמלים ומהן הפעולות, ואילו ברשת נוירונים הייצוגים הפנימיים נוצרים בתהליך האימון ואיננו מעניקים להם מראש משמעות. זה בהחלט הבדל, אבל אז נדמה לי שהוא נוגע למקור הייצוג וליכולת שלנו לפרש אותו, ולא לשאלה האם החישוב עצמו יכול לייצג מבנים סמנטיים או אלגוריתמיים.
לכן אשמח להבין מה בדיוק הרב מייחס לתוכנה סימבולית שאין עקרונית לרשת נוירונים: האם הטענה היא שיש לתוכנה הסימבולית עצמה סמנטיקה, או רק שהסמנטיקה שלה שקופה לנו מפני שהמתכנת הוא שקבע אותה?
ובכל זאת, גם אם מניחים שאין לרשת "הבנה" במובן המנטלי, נראה לי שלא נכון לזהות קורלציות עם אד־הוקיות. אם רשת לזיהוי פנים מפתחת ייצוג שמגיב לקמטים, אף או מבנה פנים, אלו אמנם קשרים סטטיסטיים, אבל הם תופסים מבנים אמיתיים ורלוונטיים למשימה.
במקרה הקיצוני רשת יכולה ללמוד ממש אלגוריתם שמכליל מעבר לדוגמאות האימון. תופעת grokking קשורה בדיוק לנקודה הזאת: במקרים מסוימים רשת שכבר התאימה היטב את דאטה האימון עוברת מאוחר יותר להכללה טובה בהרבה, ולעיתים הדבר מלווה בלמידת מבנה אלגוריתמי פשוט וכללי יותר של הבעיה. במקרה כזה הקשרים הפנימיים אינם סתם קורלציות אד־הוק, אלא יכולים לממש את החוקיות שמייצרת את הנתונים. האם לכך יש גם "משמעות" במובן המנטלי — זו כבר שאלה נפרדת.
עוד נקודה לגבי ההבחנה בין "רשת ייעודית" לבין מודל שפה כ"מכונה אוניברסלית" לפתרון בעיות שונות ומגוונות: נדמה לי שגם כאן ההבדל הוא בסופו של דבר רציף ולא קטגוריאלי. גם למודל שפה יש משימת אימון בודדת ומוגדרת מאוד: בהינתן רצף טוקנים, לחזות את הטוקן הבא. אלא שההתפלגות שעליה הוא מאומן עצומה ומורכבת, והשפה עצמה מקודדת מגוון אדיר של ידע ופעילות אנושית.
אני גם לא בטוח שמספר ה"משימות" יכול ליצור כאן הבחנה עקרונית, בגלל בעיה מיראולוגית: החלוקה של פעילות לתת־משימות תלויה באופן שבו אנחנו בוחרים לפרק את השלם לחלקיו. אפשר לומר שמודל זיהוי תמונות מבצע אלף משימות — "זהה כיסא", "זהה שולחן", "זהה כלב" וכו' — ואפשר לאחד את כולן ולומר שהוא מבצע משימה אחת: "זיהוי עצמים". באותה מידה אפשר לומר ש-LLM מבצע משימה אחת בלבד, "חזה את הטוקן הבא", או לפרק את אותה משימה לאינספור תתי־משימות לפי סוג הטקסט והבעיה. לכן מספר המשימות אינו נראה לי תכונה אובייקטיבית טובה של המודל.
נדמה לי שההבדל הטכני המעניין יותר הוא במורכבות ההתפלגות שהמודל נדרש לייצג ובקיבולת הדרושה לשם כך. עבור התפלגות פשוטה יחסית תספיק בדרך כלל רשת קטנה, ואילו ייצוג של התפלגות מורכבת מאוד ידרוש קיבולת גדולה יותר. במובן הזה ההבדל אינו בהכרח בין "משימה אחת" ל"הרבה משימות", אלא בין בעיית למידה פשוטה יותר לבעיה מורכבת יותר.
וזה גם מתחבר למה שהרב כתב לגבי AGI: אם ההבדל בינו לבין LLM הוא כמותי, נדמה לי שאותו דבר נכון במידה רבה כבר לגבי המעבר מרשת ייעודית ל-LLM. ככל שההתפלגות שאותה אנחנו דורשים מהמודל לייצג נעשית מורכבת יותר, נדרשת בדרך כלל קיבולת גדולה יותר. השפה היא תווך מוצלח במיוחד משום שההתפלגות שלה משקפת חלק עצום מהידע והפעילות האנושיים, ולכן מודל שמצליח למדל אותה היטב נראה לנו "כללי". אבל איני רואה כאן גבול עקרוני בין סוגי המכונות אלא רצף של מורכבות וקיבולת.
קשה לי עם האורך והשילוב של כמה נקודות שונות באותו דיון (שאפילו לא ממוספרות).
לגבי ההבחנה שלך בין כישלון בחיבור (כשל בהכללה/מורכבות) לבין כישלון ברצפי DNA (היעדר דאטה בתפוצה). הטיעון שלי לגבי חיבור מספרים אינו רק עניין של סיבוכיות, אלא ראיה לכך שמודלי שפה אינם פועלים על בסיס אלגוריתם חיבור אמיתי.
מודל שפה אינו מבצע חיבור על ידי הפעלת כלל אלגוריתמי, אלא מנבא סטטיסטית את הטוקן הבא מתוך קורפוס האימון האנושי. כשהמספרים גדלים והתרגיל הספציפי אינו מופיע בנתונים, המודל נשבר – מפני שאין לו שום תפיסה או הבנה של משמעות פעולת החיבור.
לגבי יכולת ההכללה והתער של אוקהאם (PAC-learnability): לפי טיעון "העקיבה אחר כלל" של ויטגנשטיין ועקרון ה-No Free Lunch, מתוך כל אוסף סופי של נתונים ישנן אינספור דרכי הכללה שקולות מבחינה מתמטית. שום נתון עירום אינו מכתיב הכללה "נכונה" אחת. הסיבה שרשת נוירונים מכלילה באופן שנראה לנו "טבעי" או "נכון" אינה נובעת מתכונה פנימית אובייקטיבית של הרשת, אלא מכך שאנחנו מכניסים את הסמנטיקה והאינטואיציות האנושיות בדלת האחורית: דרך הגדרת הארכיטקטורה, פונקציות המחיר/השגיאה, קריטריוני הפשטות (כמו ריבועים מינימליים), וכמובן דרך תיוג הדוגמאות והחומר האנושי שבו אומנה.
לשאלתך מה אני מייחס לתוכנה סימבולית שאין לרשת נוירונים, תשובתי היא: לתוכנה סימבולית כשלעצמה אין שום סמנטיקה פנימית!
גם תוכנה קלאסית וגם רשת נוירונים פועלות במישור הסינטקטי בלבד (הזרמת זרמים חשמליים, מניפולציות של סמלים, כפל מטריצות). לשתיהן אין שמץ של הבנה, מודעות או רובד מנטלי פנימי, כפי שמוכיח ניסוי החדר הסיני של סרל. אם כן, מהו ההבדל בין השתיים?
* בתוכנה קלאסית (סימבולית): המתכנת האנושי הוא שפתר את הבעיה וגזר את האלגוריתם. הוא ניסח במפורש את הכללים והכניס אותם לקוד. המחשב אינו מבין את הכללים הללו; הוא רק מוציא אותם לפועל באופן מכני, בעוד הסמנטיקה קיימת אך ורק בתודעתו של המתכנת.
* ברשת נוירונים (ורשתות שפה): המתכנת אינו מנסח את הכלל האלגוריתמי במפורש, אלא בונה מערכת ומאמן אותה דרך דוגמאות ומשובים להגיע להתאמה מתמטית (פונקציה) בין קלט לפלט.
בשני המקרים, המשמעות והסמנטיקה אינן מוכלות בתוך המכונה אלא מוזרקות אליה מבחוץ על ידי האדם – בתוכנה קלאסית במישרין דרך הקוד, ובבינה מלאכותית בעקיפין דרך נתוני האימון, הפידבקים, פונקציית המטרה ואמצעי עזר כמו אמבדינג וטרנספורמרים. המכונה נשארת גולם עיוור שמבצע חישוב סינטקטי, והאינטרפרטציה וההבנה נעשות כולן אצל המשתמש האנושי.
אתה מעיר שייצוג פנימי או תופעות כמו grokking מראים שהרשת לומדת מבנה אלגוריתמי ולא סתם קורלציות אד-הוק. גם כאשר רשת נוירונים עוברת (כמו ב-grokking) משינון להכללה מתמטית שקופה ופשוטה, היא בסך הכל התכנסה למישור משקלים שמממש פונקציה מתמטית מסוימת.
מציאת פונקציה מתמטית שממפה קלט לפלט אינה "הבנה מנטלית". רשת לזיהוי פנים אינה "יודעת" מהו סוס, מהן פנים או מהם קמטים; אין ברשת שום המשגה מושגית. מדובר בתהליך מתמטי עיוור המקשר בין סדרות מספרים. גם אם הפונקציה שהתקבלה היא אלגוריתם מתמטי נקי (כמו חיבור מודולרי), המכונה אינה "מבינה" את האלגוריתם הזה. היא רק מריצה מעגל חישובי שמוציא פלט מספרי. אתה יכול לשער שבתוך המכונה (הקופסה השחורה) יש מעגלים שניתן לזהות אותם עם השלבים השונים שהיו מרכיבים אלגוריתם אנושי בתוכנה קלסית. זו השערה חסרת בסיס. אמנם מצאו פה ושם מעגלים שניתן לזהות אותם עם שלבי חשיבה שלנו, אבל זה רק חלק קטן מהשלבים ובנוסף הזיהוי הזה נעשה רק אצלנו.
השאר תגובה
Please login or Register to submit your answer