ללמד מחשב ללמוד כמו שאנחנו לומדים – על פי מה שלמדתי – חלק ב'

ללמד מחשב ללמוד כמו שאנחנו לומדים – על פי מה שלמדתי – חלק ב'

Print Friendly, PDF & Email

בפוסט הקודם דיברנו על כך שכל דבר שאנו חווים, חשים או חושבים למעשה מתורגם בניאוקורטקס למערכי ביטים גדולים כאשר רק אחוזים בודדים מהם אכן מלאים. אותם מערכים, המכונים על ידי Numenta בשם SDR (ראשי תיבות של Sparse Distributed Representation), מקודדים למעשה מאפיינים סמנטיים לגבי האובייקט המקודד – זאת בשונה מאופן האחסון הרגיל במחשבים כיום שהוא ברובו שרירותי. בנוסף, הצגנו את ה-Scalar Encoder שהוא למעשה צורת קידוד פשוטה יחסית למספרים בטווח נתון באמצעות ה-HTM.

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

במקרה של תאריך, על מנת לייצג את חותמות זמן (Timestamps), רכיב ה-Date Encoder מייצג בנפרד מספר מאפיינים סמנטיים לגבי התאריך ומחבר אותם לייצוג אחד. למשל, אם ניקח את התאריך 8/6/2016 – 14:44 ונתרגם אותו ל-SDR באמצעות ה-Date Encoder, מה שנקבל יהיה משהו כזה:

ייצוג של היום בשבוע (זה יום רביעי – בגלל שמדובר בערך באמצע השבוע הביטים הפעילים נמצאים בערך באמצע הייצוג):

ייצוג של האם מדובר בסוף שבוע:

ייצוג של הזמן ביממה (השעה 14:44 היא אחרי אמצע היום ולכן הביטים הפעילים נמצאים אחרי אמצע הייצוג):

ייצוג של הזמן בשנה (חודש יוני זה באמצע השנה):

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

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

בנוסף, כדאי לדעת ש-NuPic מאפשרת גם לך ליצור Encoders חדשים אשר יאפשרו למערכת של NuPic לבצע את כל מה שהיא מסוגלת לעשות גם עבור סוגי Data נוספים. אם תחליט/י ליצור Encoders משלך, חשוב לשים לב למספר מאפיינים חשובים של Encoders בכלל:

1. ה-Encoder צריך לשמר את המאפיינים הסמנטיים של המידע שאותו הוא הופך ל-SDR. במילים אחרות, שני קלטים דומים צריכים לייצר SDR דומה (עם דירוג חפיפה גבוה) ושני קלטים שונים מאד צריכים לייצר SDR שונה מאד.
2. אותו הקלט צריך תמיד להחזיר את אותו הפלט.
3. ה-Encoder צריך תמיד להחזיר מערך SDR באותו הגודל ללא תלות בקלטים.
4. ה-Encoder צריך תמיד להחזיר מערכי SDR באותה רמת דחיסות (Sparsity) ללא תלות בקלטים.

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

השאר תגובה