|
||||
|
||||
קוד המקור לא נמצא בזכרון המחשב בזמן שהתוכנית רצה. במקרה של תוכנה בשפה גבוהה, התוכנה לא יכולה לקרוא אפילו את הגרסה המהודרת מהזיכרון. שלא לדבר על מורכבויות של תוכנה מבוזרת בהקשר זה. |
|
||||
|
||||
עזוב אותך מ"תוכנה מבוזרת" ושאר הפרטים הטכניים של היישום. כל מערכת חישובית (ללא מגבלות זכרון, אבל זה לא פרט מהותי) אקוויוולנטית למכונת טיורינג. למכונת טיורינג בוודאי יש נגישות לקוד. הכל רשום על הסרט. ולמעשה, גם לתוכנת מחשב תמיד אפשר להוסיף את הפונקציונליות המאפשרת לה לקרוא את עצמה מהזכרון, מהקובץ, מהארד דיסק או מכל מקום בו קודדת אותה. מה זה משנה בכלל? |
|
||||
|
||||
ודאי שזה משנה: זהו עירוב רמות. סביר מאוד שתוכנה נבונה לא תהיה בעלת גישה לשכבות הנמוכות המרכיבות אותה. סביר שהיא תסבול מבעיות זכרון (כלומר, תשכח דברים מדי פעם, לא תוכל לאחזר פירטי מידע שונים באותה מהירות שהיא מצליחה להזכר בפרטי מידע אחרים, ואף תסבול משגיאות בזכרון – תזכור דברים לא נכונים; זאת משום שעיבוד המידע לצרכי שמירתו עשוי להיות lossy). ואם הקוד משנה את עצמו תוך-כדי ריצה (בהחלט אפשרות), קריאה מהדיסק תניב תוצאה לא רלוונטית, וקריאה מהזכרון תניב תוצאה לא עקבית (המידע השתנה בין תחילת הקריאה לסופה, וקבלנו תמונה מעורבלת). לטעון שהיא "יכולה לקרוא את עצמה מהדיסק" שקול לטענה שאתה יכול "לקרוא את עצמך מסריקת CT". כן, אתה יכול להתבונן בסריקת CT של המוח (או בפלט של מיפוי מתקדם יותר) ולדעת "זה אני", אבל זו ממש לא חישה ישירה, ואין כל סיבה שבעולם לחשוב שלתוכנה תבונית כן תהיה חישה ישירה; גם היא עשויה להרהר, "אבל האם זה *באמת* אני"? כמובן, אתה עשוי לטעון שאני מדבר שטויות משום שתוכנה, בהגדרה (לדעתך), לא יכולה "לחוש" כלום, אבל זוהי הנחת המבוקש. |
|
||||
|
||||
אתה מתעקש להסיט את הדיון לפרטים טכניים שלא רלוונטים לסוגיה העקרונית. הנח שמדובר ב"בינה" מלאכותית שהישום שלה הוא במכונת טיורינג. במכונת טיורינג אוניברסלית אין הפרדה בין חלק הזכרון (כלומר, הסרט) שמקודד את הקלט והחלק שמקודד את התוכנית (טבלת הפעולה), ולכן יש לה גישה לשניהם. האם ישום כזה ייתכן לדעתך? לא שיש בעייה אמיתית עם הטיעון גם כשמדובר במחשב ממש. אם אין לתוכנה גישה לזכרון, פשוט תוסיף לה פונקציה שמקנה לה גישה כזו. מה הבעיה? וקוד שמשנה את עצמו לא ישנה כלום, משום שהתכנית מוגדרת על פי המצב בתחילת ההרצה. פשוט צריך לשמור עותק מהתכנית במצבה ההתחלתי לפני שמבצעים כל דבר אחר. כמובן, שאני מניח שהמחשב לא עושה עיבוד lossy, אבל זו הנחה סבירה בדיון עקרוני. ניסיון להצדיק קיום בינה חישובית על סמך בעיות חומרה נראה לי ממש האחזות בקש. אגב, אפשר להקנות לתוכנית "ידע" של הקוד של עצמה גם ללא שום גישה לזכרון המכיל את הקוד. יש תרגיל כזה: לכתוב תוכנית המדפיסה את עצמה (בלי לקרוא מקובץ). אתה מוזמן לנסות. |
|
||||
|
||||
במכונת טיורינג יש גם ''טבלת פעולה'' שהיא לא חלק מהסרט. אתה יכול להתיחס לטבלת הפעולה בצירוף עם המצב הנוכחי כאל זיכרון. |
|
||||
|
||||
במכונת טיורינג *אוניברסלית* טבלת הפעולה היא חלק מהסרט. אבל למה להסתבך? אם יש תוכנית המדפיסה את עצמה (אפילו בלי לקרוא את עצמה מקובץ) אז לתוכנית יש גישה לקוד של עצמה. |
|
||||
|
||||
עיבוד lossy עשוי להיות *הכרחי* במערכת תבונית: הקלט הוא כמות אדירה של מידע, והמערכת שומרת רק חלקים ממנו, באופן סלקטיבי. אופן סלקטיבי-סטטיסטית יכול להוביל לשמירת מידע שגוי: לא בשל תקלות או בעיות חומרה, אלא מתוך בחירה תכנונית (ע"ע אלגוריתמים בלמידה חישובית, קידוד מידע אופטי וכיוצ"ב). כלומר, ההנחה שלך – שהעיבוד אינו lossy – אינה "הנחה סבירה בדיון עקרוני" כלל וכלל. הדוגמא היחידה שיש לנו למכונה חושבת – המוח האנושי – בפירוש שומרת מידע באופן lossy, מאוד אפילו. אתה מתעקש להתעלם מריבוי הרמות במערכת ממוחשבת. להקנות לתוכנה מודעת "פונקציה שמקנה לה גישה לזכרון" שקול להוספה, עבור אדם, של חוש המודיע לו מה קצב היריה של ניורון נתון. אדם בעם חוש כזה יוכל "לסרוק" את כל המוח שלו מתחילתו ועד סופו, ולקבל מידע על כל ניורון וניורון. *אבל הניורונים ממשיכים לפעול בזמן שהוא עושה זאת*, והתמונה משתנה תוך-כדי סריקתה, מה גם שבהגדרה, המידע שהוא מקבל מהניורונים צריך להשמר בזכרון... מבוסס ניורונים. כמובן שהוא לא יוכל לקלוט ולהבין תמונה שלמה (... אלא אם העיבוד יהיה lossy. "באונה השמאלית הכל נראה בסדר", אם להקצין). אם תמשיך לדבוק ברמה הנמוכה ביותר דווקא: הנ"ל נכון גם לגבי מכונת טיורינג. אם המכונה רוצה להגיע למסקנה לגבי תוכן הסרט, היא צריכה *לשנות* את הסרט. ולשנות, אגב, גם את מצבה הפנימי, שהוא *אינו* חלק מהסרט והיא אינה מודעת לו, בדיוק כפי שאתה אינך מודע למצב המוח שלך. (אנא, אל תשוב ותגיד "מכונת טיורינג אינה מודעת למצבה כי מחשב לא יכול להיות מודע"; אתה מניח את המבוקש). ואם תגיד, "למחשב אפשר לכתוב פונקציה שמקפיאה את פעילותו, יוצרת dump של הזכרון כולו (לקובץ למשל), ואז ממשיכה את הפעילות" – אז נכון, המחשב ידע שזה האלגוריתם שלו-עצמו, אבל רק בגלל שאמרו לו את זה. זה שקול לחיבור אדם למכשיר סופר-CT שיספק לו תדפיס רב-כרכים המתאר במדויק את מצב המוח ברגע נתון, על כל מאה מיליארד הניורונים שבו, פלוס הבטחה שזה באמת המוח שלו. |
|
||||
|
||||
לא יכול להיות שהחישוב ה-lossy חיוני לתבונה חישובית, משום שמוכח שהיכולת החישובית של אלגוריתם סטטיסטי זהה לזו של אלגוריתם דטרמיניסטי. אם המוח פועל באופן חישובי והסתברותי אז אולי לא ניתן לבצע סימולציה של המוח שלך דווקא, אבל ניתן לסמלץ באופן דטרמיניסטי מוח טיפוסי. חוץ מזה, כאשר מדברים על בינה של מחשב, הרעש הסטטיסטי מיושם באמצעות פונקציות פסוודו-רנדומיות, כלומר עקרונית האלגוריתם הוא דטרמיניסטי לכל דבר. ה"תוכנית" של המוח היא מצבו ההתחלתי. אם "צילמת" אותו ברגע נתון ואכסנת את המצב בזכרון חיצוני כלשהו, אז אתה יכול לגשת לזיכרון ולבדוק אותו בכל רגע בלי בעיה. כמובן, ה"מערכת" במקרה זה היא המוח פלוס הזכרון החיצוני. אז מה? במקרה של מכונת טיורינג אפשר לתכנן אותה כך שהפעולה הראשונה שלה תהיה להדפיס על הסרט את טבלת הפעולה, וזו תהיה זמינה לכל אנליזה לאחר מכן. זה אקווילנטי לתוכנית שהזכרתי בתגובה קודמת, אשר מדפיסה את עצמה. אני מציע לך לנסות לכתוב תכנית כזו ולהווכח שמדובר בעניין טכני פתיר לחלוטין. זה תרגיל די מאלף. ולמעשה, כל מה שכתבת לא רלוונטי פרט לפיסקה האחרונה. נכון שהמחשב יכיר את האלגוריתם של עצמו "בגלל שאמרו לו את זה" אבל זה נכון לכל מה שהמחשב יודע. המחשב יודע ש1+1=2 בגלל ש"אמרו לו את זה". לפי הגישה הביהוויוריסטית (שלך, לא שלי!) לא משנה בכלל מה מקורות המידע ומה קורה "בפנים" אלא רק מה המחשב עושה בפועל - מבחן התוצאה. המחשב יכול לבחון את הקוד של עצמו, ומשתמש בעובדה (הנכונה!) שזה הקוד של עצמו. מה הבעייה עם זה? |
|
||||
|
||||
<דמיין כאן אנחת כאב של מישהו שנמאס לו לחזור על עצמו> אף אחד לא מדבר על "רעש סטטיסטי" ועל איבוד מידע רנדומי. מדובר באיבוד מידע מכוון – בחירה אלגוריתמית של מה חשוב לזכור ומה לא, שמירה סלקטיבית של חלקים מהמידע. ביצירת תמונת JPEG אין שום גורם אקראי, אבל האלגוריתם הוא lossy. כן, הוא גם דטרמיניסטי, אבל זה לא קשור בכלל לנושא הדיון. גם אתה יודע כי 1+1=2 "כי אמרו לך את זה", אבל בהמשך הבנת את זה. אתה (כרגיל) מערבב בין רמת החומרה של המחשב (שלא "יודעת" כלום, אבל יכולה לחשב את 1+1 ממש כפי שהניורונים בראשך יכולים לבצע סכום של קצב היריה של ניורוני הקלט שלהם) לבין הרמה המודעת של מחשב תבוני, שיודעת כי 1+1=2 בהתחלה כי אמרו לה את זה, ואח"כ כי תבין את זה. (אל תגיד "היא לא תבין". אל תניח את המבוקש). |
|
||||
|
||||
<דמיין כאן אנחת כאב של מישהו שנמאס לו לחזור על עצמו> אתה מזכיר לי מישהו שטוען שניתן לבנות פרפטום-מובילה. מסבירים לו שמכונה כזו סותרת את חוקי התרמודינמיקה, ובתגובה הוא אומר: לא, משתמשים בגלגליות המותקנות על שרשרת המחוברת לשסתום הידראולי המופעל באמצעות שדה מגנטי. זה פותר את העניין! כל התחום של חקר חישוביות מבוסס על תזת צ'רצ'-טיורינג לפיה כל מערכת חישובית חזקה דיה אקוויוולנטית למכונת טיורינג (ולכל מערכת חישובית חזקה דיה אחרת). זה בכלל לא משנה אם הישום הוא סטטיסטי, lossy, כתוב ב-שפת-על, בשפת מכונה, מבוזר, מקבילי, מבוסס על מערכת של גלגלי שיניים או על מליארד סינים המאותתים זה לזה בדגלים. כל אלו יתנו את אותה תוצאה *בדיוק*. אז שיהיה lossy. מה זה משנה? זה עדיין חישובי. עדיין ניתן לעשות אותו דבר במכונת טיורינג, או בבייסיק, או במאטלאב, או בעובדים זרים מסין. ההתעקשות על דיון בישום זה בסך הכל מיסוך עשן שאיננו רלוונטי וגורם לשנינו להאנח בתסכול. התוכנה מכירה את הקוד של עצמה כי כך היא בנויה (ואם היא לא בנויה כך מראש, ניתן להוסיף תכונה זו בקלות). כמו שתוכנה יכולה לשנות את הקוד של עצמה, היא יכולה לקרוא ולזהות אותו. לא צריך להסביר לתוכנה כלום, רק להוסיף עוד כמה שורות קוד. האם טענתך ששורות הקוד האלו יגרמו ל"בינה" המלכותית להתפוצץ ולעלות בלהבות? |
|
||||
|
||||
הבעיה עם זה היא ש"הקוד של עצמו" משתנה ללא הרף, כך שהמחשב שבודק אם זה הקוד של עצמו משנה את הקוד של עצמו תוך כדי בדיקה בגלל עצם הבדיקה (אם תרצה, הוא "לומד" משהו חדש) ולכן אינו עוצר או שהוא נותן תשובה שגויה. גם המתמטיקאי א.ע. נתקל בבעיה דומה כשניסה לענות לך על השאלה, וזאת הסיבה שלא קיבלת תשובה ושהמניות של גוגל נפלו. תוכל, אולי, לטעון שאפשר להגיד למחשב לכבות את פונקציית הלמידה בזמן ביצוע הבדיקה, אבל זה יהיה יעיל כמו להגיד לך "שכח את מה שאמרתי". הקוד של המחשב לא מאפשר לכבות את הפונקציה הזאת אלא במצב תרדמת שבו כל הפונקציונליות שלו נעלמת. כל פעילות תבונית מקושרת מעצם טיבה עם שינוי התוכנה (איך אני יודע? מהתבוננות במכונות טיורינג תבוניות בסביבה הקרובה שלי). התנגדות אפשרית אחרת היא להגיד שניתן למחשב קוד שישתנה אף הוא תוך כדי בדיקה במקביל לשינוי במחשב הבודק, כלומר לא קוד "מת" אלא מחשב מראָה, ושני המשובטים יבדקו זה את זה הדדית ובו-זמנית. אני חושב שיש רכיבים (פסאודו) רנדומליים שמפילים את האפשרות הזאת. שטויות? בסדר, שכח את מה שאמרתי. |
|
||||
|
||||
למכונת טיורינג אין גישה לעצמה - מערכת המצבים שלה וכו' הם מעבר להישג ידה. אתה יכול להעביר לה כקלט דבר שאתה, מבחוץ, יודע שהוא קידוד כלשהו שלה, אבל לה עצמה אין שום דרך לוודא את זה. |
חזרה לעמוד הראשי | המאמר המלא |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |