|
אחת הבעיות השימושיות בתחום הראיה החישובית היא בעיית זיהוי אובייקטים, ובפרט, בעיית זיהוי תווים ( OCR ). בעיית זיהוי התווים שנראית לנו פשוטה ממבט ראשון, הינה למעשה בעיה שקשה לפתור בעזרת גישות המחשוב הסטנדרטיות ( Hard Computing ). למרות זאת, זיהוי תווים אוטומטי חיוני בתחומים שונים, כגון סיווג דברי דואר, זיהוי המחאות במערכת הבנקאית, מיצוי טקסט מתוך מסמכים סרוקים וכו'. הגישה לפתרון בעיית זיהוי התווים שתוצג כאן היא שימוש ברשת עצבית מלאכותית – אחת הגישות המוצלחות ביותר בבעיות של זיהוי תבניות. מטרת הפרויקט הזה היא להדגים את יתרונה של גישת "החישוב הרך" ( Soft Computing ) בבעיות זיהוי תבניות ואובייקטים.
בניגוד גמור למחשבים בארכיטקטורת ואן-נוימן,
המוח מתמודד מצוין עם דרישות כגון חוסר רגישות לרעש, יכולת הכללה, לימוד מניסיון,
אסוציאציה, זיהוי תבניות, רגישות קטנה לכשל מקומי וכו'. הסיבה לכך היא העובדה
שבניגוד ליחידת חישוב אחת מהירה ומדויקת, המוח משתמש בהרבה "מעבדים"
איטיים ולא אמינים שפועלים במקביל. יתרונות אלו של המוח היוו השראה לעיצוב הרשתות
העצביות המלאכותיות ( ANN ) הראשונות כבר בשנת 1943 , ע"י McCulloch & Pitts . הANN הוא מודל מפושט של
המערכת העצבית הטבעית. הרשת מורכבת ממערך שכבות של יחידות החישוב הבסיסיות –
הנוירונים המלאכותיים:
בדומה לנוירון הטבעי, ישנם קלטים
רבים ( Dendrites
) ופלט יחיד ( Axon ) בנוירון המלאכותי. המשקולות על הקלטים מדמות רמות
תגובה שונות בסינפסות. הקלטים לנוירון מסוכמים בסכום משוקלל, ואם התוצאה עוברת ערך
סף מסוים, הקלט מועבר ליציאה. תצורת הרשת המקובלת ביותר היא Feed
Forward – זאת
אומרת, שכבות של נוירונים עם חיבור של כולם עם כולם בין שכבות צמודות. השכבות שבין
שכבת הקלט לשכבת הפלט נקראות שכבות חבויות. בהינתן רשת בה כוונו המשקולות, חישוב
על ידה מתבצע ע"י הזנת הקלטים לשכבת הקלט וקבלת התוצאה שחלחלה ברשת לשכבת
הפלט. מספר נוירונים רב מידי בשכבות החבויות יכול לגרום להתמקצעות יתר ( Overfitting ) על סדרת הלימוד. ישנה חשיבות לכך שפונקצית הסף ביציאה מהנוירון תהיה לא
ליניארית כידי לפתור בעיות ברמת קושי גבוהה בעזרת הרשת.
המשקולות שעל הקשרים בין
הנוירונים ( המשקולות הסינופטיות ) הן אלה שאוגרות את הידע של הרשת במודל המפושט, לכן
אלגוריתמי הלימוד השונים מבצעים את כוונון המשקולות לערכים שנותנים תוצאות חישוב
טובות עבור מערך דוגמאות הלימוד. משימה זאת אינה פשוטה בגלל השכבות החבויות. אחד
מאלגוריתמי הלימוד המקובלים ביותר הוא אלגוריתם "החלחול לאחור" ( Back-Propagation). זהו אלגוריתם ללימוד מוכוון
( Supervised Learning ). הוא מעביר את הקלט הלימוד במורד רשת עם משקולות אקראיים, משווה את הקלט המתקבל לקלט
הרצוי בכך שהוא מחשב את הטעות עבור כל נוירון פלט. הרעיון העיקרי של BP הוא
שהטעויות מחלחלות חזרה במעלה הרשת כך שמתבצעים כיוונוני משקלות בעזרת אלגוריתם Gradient descent שמנסה להקטין את הטעויות בפלט. אם תיקוני המשקולות נעשים שיעור
מספיק קטן, גדלים הסיכויים להתכנסות של הרשת לטעות מינימאלית. אומנם תתכן התכנסות
למינימום מקומי בלבד, אך למעשה השיטה נותנת תוצאות טובות כיוון שניתן להפעילה שוב
עם משקולות התחלתיות שונות. למרות שהלימוד בשיטה זו יכול להיות איטי, השימוש ברשת
אחרי הלימוד הוא מהיר מאוד.
המערכת לזיהוי תווים שבניתי נועדה
לזהות תמונות של אותיות בגודל 12x16
פיקסלים. היא משתמשת ברשת עצבית בתצורת Feed Forward בעלת שתי שכבות חבויות של
נוירונים, כאשר המשתמש יכול לקבוע את מספר הנוירונים בכל שכבה חבויה. אלגוריתם
אימון הרשת הוא Back-Propagation, כפי שתואר קודם. מספר נוירוני הקלט הוא 192, אחד
עבור כל פיקסל בתמונת הקלט. מספר נוירוני הקלט הוא 10, אחד לכל אות. לשם אימון
הרשת יש ללחוץ על "Start training" ולהמתין עד שערך הטעות ירד מתחת ל- 0.003 בערך. את האימון ניתן לעצור בעזרת הכפתור "Stop training".
לאחר האימון ניתן לבדוק את הרשת בשני אופנים: לבדוק על אחת מדוגמאות האימון
ע"י לחיצה על "test A" למשל, או לערוך בדיקה עם תמונת אות שהמשתמש
יצר ע"י לחיצה על כפתור "test". תוצאות הבדיקות
יופיעו בצורת נורית דולקת מתחת לאות שזוהתה. בגלל טבעה, רשת הנוירונים מגיבה יותר
טוב לקלטים עמומים ( Fuzzy ) לכן מומלץ להשתמש בפילטר
ההחלקה "blur". הערך "training epochs" מייצג את מספר המחזורי
האימון עם כל סט האימון.
מהרצת המערכת מספר פעמים ניתן להיווכח שרשת הנוירונים לומדת מאופן הדרגתי
את סט האימון. ניתן להבחין גם שאם אין התמקצעות יתר, המערכת מסוגלת להכליל את
הנלמד. למשל גם אם מזינים אות A מעוותת המערכת מסווגת אותה בצורה נכונה. כחלק
מההכללה מקבלים גם יכולת להתמודד עם רעש. למשל אם נוסיף ונמחק פיקסלים אקראיים
בתמונת הבדיקה, הרשת תתמודד עם הרעש בצורה טובה. רגישות קטנה לכשל מקומי – אם
ניישם את הרשת בחומרה עם נוירונים עצמאיים, ניתן יהיה לראות שפגיעה בחלק מהם לא
תגרום לכשל כללי של המערכת. יתרונות אלה ואחרים מדגימים את עליונות גישת ה- "Soft Computing"
בכל הנוגע לזיהוי תבניות בכלל וזיהוי אובייקטים בפרט. אך למודלים העצביים הנוכחיים
ישנם גם כמה חסרונות, כגון זמן לימוד ממושך והצורך להזין פרמטרים מתאימים (מס'
נוירונים, קצב לימוד וכד'). לדעתי יש צורך לפתח מודל רשת נוירונים ואלגוריתמי
אימון יותר קרובים למציאות בטבע, אך לשם כך יש צורך להבין יותר טוב באיזה אופן
אוגר המוח את הידע, וכיצד לומד.