רשת עצבית מלאכותית

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

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

רקע[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – רשת עצבית

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

שרטוט 1: רשת עצבית טיפוסית .

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

שרטוט 2: נוירון ביולוגי .
שרטוט 3: כיצד נוירון מעבד מידע .

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

מבנה של רשתות עצביות[עריכת קוד מקור | עריכה]

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

רשת נוירונים מאופיינת על ידי:

  • אופן החיבור בין הנוירונים ברשת
  • השיטה הקובעת את משקלי החיבורים בין הנוירונים
  • פונקציית האקטיבציה

מבנה הרשת והשכבות[עריכת קוד מקור | עריכה]

רשתות נוירונים מורכבות ממספר רב של יחידות עיבוד פשוטות הנקראות נוירונים, אשר מחוברות באופן היררכי ומובנות בשכבות. השכבה הראשונה נועדה לקלוט מידע לרשת, השכבה האמצעית ידועה כשכבה החבויה (במודלים שונים עשויים להיות מאחת כזו), ולבסוף השכבה האחרונה אשר נועדה להחזיר את המידע המעובד כפלט. הצמתים בכל שכבה מחוברים באופן מלא לצמתים בשכבות הסמוכות באמצעות חיבור ישיר בין הנוירונים, כאשר לכל קשר קיים משקל מסוים. המשקל בכל קשר קובע עד כמה רלוונטי המידע שעובר דרכו, והאם על הרשת להשתמש בו על מנת לפתור את הבעיה. כל צומת בשכבת הקלט (השכבה הראשונה) מייצג תכונה שונה מהמבנה, ושכבת הפלטים מייצגת את הפתרון של הבעיה. בשכבה האמצעית והחיצונית קיימים "ערכי סף" הניתנים לכיול במערכת ממוחשבת, וקובעים את חשיבות הקשרים השונים.‏[1]

תהליך הלימוד[עריכת קוד מקור | עריכה]

תהליך הלמידה מתבצע על ידי "תגמול" "וענישה" של קשרים שונים ועל ידי חשיפת רשת הנוירונים לדוגמאות רבות. "תגמול" ו"ענישה" של הקשרים מתבצע על ידי שינוי המשקל של אותו הקשר, כך שכל קשר ש"מתוגמל" משקלו יגדל וכל קשר ש"נענש" משקלו ירד, כמובן תהליך זה משפיע במידה רבה על תהליך העיבוד ברשת הנוירונים ולקבלת תוצאה שונה. כל נוירון בשכבה הראשונה מתעדכן בנתון רלוונטי הנקרא קלט, ולאחר תהליך עיבוד בשכבות הביניים כל נוירון בשכבה האחרונה מיצר פלט הנקרא פתרון. כל אחד מן הנוירונים יכול להשפיע במידה מסוימת על המידע או על תהליך העיבוד שיתבצע בתא אחר בשל הקשרים הקיימים ברשת. פעולת החשיבה נעשית על ידי הזנת נתוני קלט לנוירונים שבשכבה העליונה, והעברת הנתונים בין הנוירונים ובמורד השכבות, עד שנוצר מערך של נתוני פלט בנוירונים שבשכבה התחתונה. נתוני הפלט מהווים מערך של פתרונות הרשת לנתוני הקלט. מדוגמה לדוגמה מתעדכנים "ערכי הסף" של הנוירונים שבמערכת, כך שהפלט יהיה אופטימאלי. הערכים המתמטיים של ערכי הסף יכוילו, כך שכל קשר שצריך היה לאשרו יאושר, וכל קשר שצריך היה לדחותו יידחה. מעתה ואילך, אפשר לצפות שהרשת תקבל החלטות לאשר או לדחות באופן שמבטא בצורה מלאה את הניסיון הנצבר בתהליך הלמידה.‏[1] יכולתה של רשת הנוירונים מושתתת על יכולתה לספק דיוק מקסימלי לכל פונקציה קיימת כאשר דיוק זה יכול להתבצע על ידי הגברת מורכבות הרשת והגדלת מספר השכבות החבויות.‏[2]

היסטוריה[עריכת קוד מקור | עריכה]

בשנת 1943 פרסמו שני חוקרים (McCulloch and Pitts) מאמר[3], שהיווה בסיס להתפתחותו של מדע הרשתות העצביות. המאמר הציע מודל פשוט של פעולת הנוירון, שעליו מבוססות הרשתות המלאכותיות עד היום.

שרטוט 4: נוירון מלאכותי בסיסי

שרטוט 4 מדגים ארבעה נתוני קלט, המסומנים ב: i1 עד i4. אלו מייצגים את הדנדריטים ויכולים להיות מחוברים לעולם החיצון או לנוירונים אחרים. לקלט "משקל" יחסי, המבוטא על ידי משקולות המסומנות ב: w1 עד w4. משקולות אלו מייצגות את עוצמת הקשרים בין הדנדריטים של נוירון אחד לגוף התא בנוירון אמתי שני. במציאות יכול כמובן להיות כל מספר של נתוני קלט. המערכת פועלת באופן המתואר להלן. ראשית, כל נתון נשקל על ידי הכפלתו במשקולת המתאימה לו, כאשר התוצאה הסופית מתקבלת מחיבור כל הנתונים השקולים יחד:

סכום = (i1 x w1) + (i2 x w2) + (i3 x w3) + (i4 x w4).

אם סכום זה (המהווה במובן הביולוגי את הגירוי הכולל המגיע לנוירון) גבוה מסף ידוע כלשהו, הנוירון מעביר פלט "1"; אם לא, הפלט הוא "0".

נניח כי הסף הוא 0.5:

אם סכום > 0.5, אז פלט = 1.

אם סכום < 0.5, אז פלט = 0.

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

נחַשֵב את הפלט של הנוירון בשרטוט בהתאם להנחה כי ערך הסף הוא 0.5::

סכום = 0.1x 0.5) + (0.5 x 0.2) + (0.3 x 0.1) = 0.18).

כיוון ש-0.18 קטן מ-0.5, הפלט = 0.

שרטוט 5: דוגמה מפורטת

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

שרטוט 6: שימוש בנוירון לזיהוי תבנית

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

רקע היסטורי[עריכת קוד מקור | עריכה]

הרשתות העצביות הלכו התפתחו מאז הימים בהם הציעו מקלוך ופיטס את קיומן. אולם, בשנת 1969 פרסמו מינסקי ופפרט (Minsky and Papert) את ספרם "תפיסות" (“Perceptions”), שבו תקפו את הרעיונות העומדים מאחורי הרשתות העצביות. הספר הציג פגם בנוירון הבסיסי. הבעיה הייתה זו: לא משנה אילו משקולות נשים על הקלט, לא נוכל ליצור את השער הלוגי Exclusive OR) XOR) כמוצג בשרטוט 7. טיעון זה וטיעונים נוספים שהוצגו בספר, עיכבו את המשך התפתחותן של הרשתות העצביות במשך שנים רבות. חוקרים רבים נטשו את התחום בחשבם כי אם הנוירון לא יכול לבצע משימה פשוטה זו, אין טעם בהמשך המחקר.

שרטוט 7: נוירון יחיד אינו יכול לדַמוֹת שער XOR .

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

שרטוט 8: רשת עצבית רב-שכבתית

בכל זאת, למרות שהפתרון היה ידוע, רק בשנים 1983-1982 התעורר שוב העניין במחקר הרשתות העצביות. בזמן זה, "אלגוריתם הצעידה לאחור" זכה לפרסום נרחב.

הנוירונים ברשת עובדים בצורה זהה בדיוק לזו שתוארה קודם, נדגים זאת בעזרת ניורוני סיגמואיד (ראה שרטוט 9):

Painty15.png
שרטוט 9: דוגמה לרשת עצבית .

מבנה רשת עצבית ופונקציית סיגמואיד[עריכת קוד מקור | עריכה]

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

שכבת הכניסה (Input Layer) - לכל תא בשכבה זו כניסה אחת. וקטור הכניסות הנו הקלט לרשת.

שכבה מוסתרת (Hidden Layer) - לכל תא בשכבה זו מספר כניסות, כמספר תאי הכניסה (Fully Connected ).

שכבת המוצא (Output Layer) - לכל תא בשכבה זו מספר כניסות, כמספר תאי השכבה המוסתרת (Fully Connected). וקטור מוצאי התאים בשכבה זו הוא וקטור המוצא של הרשת.

שרטוט 10: מערך השכבות בתצורת "Feed Forward"

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

הפונקציה אותה מממש כל תא הנה פונקציית סיגמואיד המתוארת בשרטוט 11:

שרטוט 11: Sigmoid Unit

הביטויים המפורשים הם:

שרטוט 9:

אם כן, הרשת בה השתמשנו הנה רשת בעלת שלוש שכבות, בכל שכבה מספר תאים כשכל תא מממש Sigmoid unit.

אלגוריתם ללימוד הרשת[עריכת קוד מקור | עריכה]

המשקולות שעל הקשרים בין הנוירונים (המשקולות הסינופטיות) הן אלה שאוגרות את הידע של הרשת במודל המפושט, לכן אלגוריתמי הלימוד השונים מבצעים את כוונון המשקולות לערכים שנותנים תוצאות חישוב טובות עבור מערך דוגמאות הלימוד. משימה זאת אינה פשוטה בגלל השכבות החבויות. אחד מאלגוריתמי הלימוד המקובלים ביותר הוא אלגוריתם "חלחול לאחור" (Back-Propagation). זהו אלגוריתם ללימוד מוכוון (Supervised Learning). הוא מעביר את הקלט הלימוד במורד רשת עם משקולות אקראיים, משווה את הקלט המתקבל לקלט הרצוי בכך שהוא מחשב את הטעות עבור כל נוירון פלט. הרעיון העיקרי של BP הוא שהטעויות מחלחלות חזרה במעלה הרשת כך שמתבצעים כוונוני משקלות בעזרת אלגוריתם Gradient descent שמנסה להקטין את הטעויות בפלט. אם תיקוני המשקולות נעשים שיעור מספיק קטן, גדלים הסיכויים להתכנסות של הרשת לטעות מינימלית. אומנם תיתכן התכנסות למינימום מקומי בלבד, אך למעשה השיטה נותנת תוצאות טובות כיוון שניתן להפעילה שוב עם משקולות התחלתיות שונות. למרות שהלימוד בשיטה זו יכול להיות איטי, השימוש ברשת אחרי הלימוד הוא מהיר מאוד.

אלגוריתם Gradient Descent[עריכת קוד מקור | עריכה]

את הרשת מאמנים על ידי עדכון המשקולות wi. הרשת מוזנת בווקטור כניסה מסוים ונבחן מוצאה. בהתאם למוצא הדרוש עבור וקטור כניסה זה מעדכנים את המשקולות. אנו נדון רק באפשרות של עדכון המשקולות על מנת לצמצם את השגיאה הריבועית בין מוצא הרשת למוצא הדרוש. הניסוח המתמטי ל Gradient Descent הנו:

Painty10.png

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

אלגוריתם חלחול לאחור (Back-Propagation)[עריכת קוד מקור | עריכה]

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

תהליך "הלימוד"[עריכת קוד מקור | עריכה]

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

  1. אם הפלט נכון, אל תעשה כלום.
  2. אם הפלט גבוה אך אמור להיות נמוך, הנמך את המשקולות הקשורות לנתוני הקלט הגבוהים.
  3. אם הפלט נמוך אך אמור להיות גבוה, הגבה את המשקולות הקשורות לנתוני הקלט הנמוכים.

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

Painty18.png

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

שרטוט 12: הנוירון הבינארי ונוירון הסיגמואיד.

יישומים[עריכת קוד מקור | עריכה]

ניתן ליישם רשתות עצביות בחומרה אנלוגית או דיגיטלית - ראו דיאגרמת בלוקים של יישום אנלוגי בשרטוט 13. שלושה מגברים פשוטים נותנים את המשקל לקלט. אם אנו רוצים שהמערכת תלמד בזמן אמת, המגברים צריכים להיות בעלי הגברה דיגיטלית אלקטרונית. הפלט מסוכם, והסַף מופעל על ידי מַשוֶוה - Comparator. מעגל מסוג זה נבנה בעזרת רכיבים בדידים דוגמת מגברים אופטיים - Op Amps - כחלק ממעגל משולב. החיסרון בגישה זו הוא הצורך ברכיבים רבים, במידה שבמערכת נוירונים רבים. בדרך זהה ניתן לייצר מעגלים דיגיטליים: מגברי המשקולות יוחלפו במכפילים דיגיטליים, מגבר הסכום יוחלף בסוֹכֵם, והמשווה יוחלף במפענח, שיעביר אות אם פלט הסוכם יהיה גבוה מערך סף קבוע. בדומה לרשתות האנלוגיות, גם הרשתות הדיגיטליות בזבזניות מבחינת מקום ומשאבים, כיוון שהן נשענות על מכפילים בינאריים, שהם לרוב מעגלים גדולים ומורכבים.

שרטוט 13: יישום נוירון בחומרה

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

מימוש רשת עצבית בתוכנה[עריכת קוד מקור | עריכה]

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

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

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

[Weights[layer_number, neuron_number, connection_number (מספר שכבה, מספר נוירון, מספר חיבור).

הפלט (כמו גם הקלט) מכל נוירון במערך דו-ממדי עם הפרמטרים הבאים הוא:

[Output[ layer_number, neuron_number (מספר שכבה ומספר נוירון).

מימוש בדרך זו ייתן רשת דומה לזו המוצגת בשרטוט 14.

שרטוט 14: אחסון המשקולות ברשת טיפוסית

נשים לב כי השדות (O(1,1 ו-(O(1,2 הם קלט הרשת, והשדה (O(3,1 הוא הפלט.

נוכל לגרום למחשב לחשב את הפלט מרשת כזו על ידי אלגוריתם פשוט:

  1. התחל את כל המשקולות ושדות הפלט - השדות O ו-W להיות אפס.
  2. קבע את הקלט - שדות (O(1,1 ו- (O(1,2 - לערכים הרצויים כאשר שכבה 1 היא הקלט.
  3. קבע את המשקולות הרצויות לרשת.
  4. חשב את הפלט מהרשת (בדומה לרשימה 1).
רשימה 1: חישוב פלט הרשת .

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

Weight[neuron_number_is_coming_from, neuron_number_is_going_to]

Output[neuron_number]

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

שרטוט 15: קוד גמיש יותר לרשת

במקרה זה (O(1), O(2 הם הקלט ו- (O(5 הוא הפלט.

האלגוריתם לחישוב הפלט יהיה הפעם:

  1. התחל את כל המשקולות ושדות הפלט - השדות O וW- - להיות אפס.
  2. קבע את הקלט - שדות (O(1 ו- (O(2- לערכים הרצויים.
  3. קבע את המשקולות הרצויות לרשת שאתה רוצה.
  4. חשב את הפלט מהרשת (בדומה לרשימה 2).
רשימה 2: תכנות פלט חלופי .

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

יתרונות וחסרונות בשימוש ברשתות נוירונים[עריכת קוד מקור | עריכה]

יתרונות:

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

חסרונות:

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

ראו גם[עריכת קוד מקור | עריכה]

לקריאה נוספת[עריכת קוד מקור | עריכה]

  • Supervised learning in multilayer feedforward networks - "backpropagation", Bruno A. Olshausen, 1998.
  • Neural Networks for Pattern Recognition , Bishop, C.M., 1996
  • Elektor Electronics 1/2003 C.McLeod and G.Maxwell
  • Davies, F., & Moutinho, L., & Curry ,B., (1996). ATM user attitudes: a neural network analysis. Journal of Marketing Intelligence & Planning , 14(2), 26-32.

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ 1.0 1.1 Milam, 1999[דרושה הבהרה]
  2. ^ Davies, F., & Moutinho, L., & Curry ,B., (1996). ATM user attitudes: a neural network analysis. Journal of Marketing Intelligence & Planning , 14(2), 26-32.
  3. ^ McCulloch, Warren; Walter Pitts (1943). "A Logical Calculus of Ideas Immanent in Nervous Activity". Bulletin of Mathematical Biophysics 5 (4): 115–133. doi:10.1007/BF02478259.