בדל מהו מקודד אוטומטי? - Unite.AI
צור קשר
כיתת אמן בינה מלאכותית:

AI 101

מהו מקודד אוטומטי?

mm
מְעוּדכָּן on

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

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

מהו מקודד אוטומטי?

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

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

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

ארכיטקטורת מקודד אוטומטי

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

צילום: Michela Massi דרך Wikimedia Commons, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

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

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

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

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

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

תכונות של מקודד אוטומטי

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

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

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

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

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

סוגי מקודדים אוטומטיים

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

דליל

צילום: Michela Massi באמצעות Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

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

חוזה

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

קונבולוציה

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

הכחשה

תמונה: MAL באמצעות Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

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

וריאציונלי

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

 

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

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

אפליקציות מקודד אוטומטי

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

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

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

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

בלוגר ומתכנת עם התמחות ב למידת מכונה ו למידה עמוקה נושאים. דניאל מקווה לעזור לאחרים להשתמש בכוח של AI למען טוב חברתי.