מחברים:
(1) Daniele Malitesta, Politecnico di Bari, איטליה ו[email protected] עם המחברים המקבילים: Daniele Malitesta ([email protected]) וג'וזפה גאסי ([email protected]);
(2) ג'וזפה גאסי, Politecnico di Bari, איטליה ו[email protected] עם המחברים המקבילים: Daniele Malitesta ([email protected]) וג'וזפה גאסי ([email protected]);
(3) קלאודיו פומו, Politecnico di Bari, איטליה ו- [email protected];
(4) Tommaso Di Noia, Politecnico di Bari, איטליה ו[email protected].
5 הדגמות ו-5.1 הדגמה 1: תכונות חזותיות + טקסטואליות
5.2 הדגמה 2: תכונות אודיו + פריטי טקסט
5.3 הדגמה 3: פריטים טקסטואליים/תכונות אינטראקציות 6
מסקנה ועבודה עתידית, תודות והתייחסויות
הארכיטקטורה של Ducho בנויה על שלושה מודולים עיקריים, כלומר, Dataset, Extractor ו-Runner, כאשר שני המודולים הראשונים מספקים יישומים שונים בהתאם למודאליות הספציפית (כלומר, אודיו, חזותי, טקסטואלי) שנלקחת בחשבון. אנו גם מזכירים ל-Configuration אחד בין שאר רכיבי העזר. הארכיטקטורה מתוכננת להיות מאוד מודולרית, אולי לשלב מודולים חדשים או להתאים אישית את הקיימים. בהמשך, אנו צוללים עמוק לתוך כל מודול/רכיב המתואר.
מודול ערכת הנתונים מנהל את הטעינה והעיבוד של נתוני הקלט שסופקו על ידי המשתמש. החל מסכימה משותפת כללית עבור כל האופנים הזמינים, מודול זה מספק שלושה יישומים נפרדים: מערכי נתונים אודיו, חזותיים וטקסטואליים . כגישה נפוצה בספרות, ערכות הנתונים האודיו והוויזואליות דורשות את הנתיב לתיקייה שממנה נטענים קבצי תמונה/שמע, בעוד שמערך הנתונים הטקסטואלי פועל באמצעות קובץ tsv הממפה את כל המאפיינים הטקסטואליים לכניסות.
ראוי לציון, ובאופן שונה מפתרונות קיימים אחרים, Ducho עשוי לטפל בכל אופן בשני אופנים, תלוי אם האופציה הספציפית מתארת את הפריטים (למשל, תיאורי מוצרים) או את האינטראקציות בין משתמשים ופריטים (למשל, ביקורות [1]). באופן קונקרטי, בעוד פריטים ממופים למזהים הייחודיים שלהם (שחולצים משם הקובץ או מקובץ tsv), האינטראקציות ממופים לזוג הפריטים המשתמש (שחולצים מקובץ tsv) שאליו הם מתייחסים. למרות ששלבי העיבוד והחילוץ המוקדם אינם משתנים ברמת הפריטים והאינטראקציות (ראה מאוחר יותר), אנו מאמינים שסכימה זו עשויה להתאים באופן מושלם למערכות ממליצים חדשניות עם מודעות רב-מודאליות עם אופנים המתארים כל סוג של מקור קלט (אפילו משתמשים ).
משימה חשובה נוספת עבור מודול ערכת הנתונים היא לטפל בשלב העיבוד המקדים של קלט הנתונים. בהתאם לאופן הספציפי המעורב, Ducho מציע את האפשרות:
• אודיו: טען את האודיו הקלט על ידי חילוץ צורת הגל וקצב הדגימה, ודגום אותו מחדש בהתאם לקצב הדגימה שעליו הוכשר המודל שהוכשר מראש;
• חזותי: המר תמונות קלט ל-RGB ושנה את גודלן/נרמל אותן כדי להתיישר עם מודל החילוץ שהוכשר מראש;
• טקסטואלי: (אופציונלי) נקה את טקסטי הקלט כדי להסיר או לשנות דפוסים טקסטואליים רועשים כגון סימני פיסוק וספרות
לאחר שלב החילוץ (ראה מאוחר יותר), מודול ערכת הנתונים אחראי סוף סוף על שמירת התכונות המולטי-מודאליות שנוצרו בפורמט מערך numpy בעקבות ערכת שמות הקבצים מהמיפוי הקודם.
מודול ה-Extract בונה מודל חילוץ מרשת מיומנת מראש ועובד על כל דגימת קלט טעון/מעובד מראש כדי לחלץ את התכונות הרב-מודאליות שלו. באופן דומה למודול מערך הנתונים, ה-Extractor מספק שלושה יישומים שונים עבור כל מודאליות, כלומר, מחלצי האודיו, החזותיים והטקסטואליים. Ducho חושף מגוון רחב של דגמים שעברו הכשרה מראש משלושה אחוריים עיקריים: TensorFlow, PyTorch ו-Transformers. השילובים הבאים של אופנים/גב זמינים כעת:
• אודיו: PyTorch (Torchaudio) ושוטרים;
• חזותי: Tensorflow ו- PyTorch (Torchvision);
• טקסטואלי: רובוטריקים (ו-SenenceTransformers).
כדי לבצע את חילוץ התכונה, Ducho לוקח כקלט את (רשימת) שכבות החילוץ עבור כל דגם מאומן מראש. מכיוון שכל קצה אחורי מטפל בחילוץ של שכבות נסתרות בתוך רשת בצורה שונה, אנו פועלים לפי ההנחיות המפורטות בתיעוד הרשמי, בהנחה שהמשתמש יפעל לפי אותה סכימת שמות/אינדקס של השכבות ויידע את המבנה של הדגם שנבחר מראש. הקורא המעוניין עשוי להתייחס ל-README[2] תחת התיקיה config/ ב- GitHub לקבלת הסבר ממצה כיצד להגדיר את שכבת החילוץ בכל הגדרה / הגדרה עורפית.
לבסוף, במקרה הטקסטואלי, המשתמש יכול גם לציין את המשימה הספציפית שעל המודל שהוכשר מראש צריך להתאמן עליה (למשל, ניתוח סנטימנטים), שכן כל רשת מאומנת מראש עשויה להגיע עם גרסאות שונות בהתאם לאסטרטגיית האימון.
מודול ה- Runner הוא המתזמר של Ducho, שמטרתו ליצור, להתקשר ולנהל את כל המודולים המתוארים. עם שיטות ה-API שלו, מודול זה יכול להפעיל את צינור החילוץ המלא (ראה מאוחר יותר) של אופציה אחת או כל השיטות המעורבות בו זמנית
מודול ה-Runner מותאם בנוחות באמצעות רכיב תצורה עזר המאחסן וחושף את כל הפרמטרים כדי להגדיר את צינור החילוץ. גם אם תצורת ברירת מחדל כבר זמינה למען המשתמש, Ducho מאפשר לעקוף חלק (או את כל) הפרמטרים שלה באמצעות קובץ תצורה חיצוני (בפורמט YAML) ו/או צמדי מפתח-ערך כארגומנטים של קלט אם מריצים את הסקריפטים משורת הפקודה. שוב, אנו מציעים לקוראים לעיין ב-README תחת התיקיה config/ ב- GitHub כדי להבין את הסכימה הכללית של קובץ התצורה של YAML.
מאמר זה זמין ב-arxiv תחת רישיון CC BY 4.0 DEED.