עזרה להגן על שונית המחסום הגדולה עם TensorFlow על Kaggle הצטרפו אתגר

TensorFlow Lattice (TFL)

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

מושגים

סעיף זה הוא גרסה פשוטה של התיאור מונוטונית מכויל אינטרפולציה ב'אנשי שולחנות , JMLR 2016.

סריג

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

הדוגמה הפשוטה הנ"ל היא פונקציה עם 2 תכונות קלט 4 פרמטרים:\(\theta=[0, 0.2, 0.4, 1]\), אשר הם הערכים של הפונקציה בפינות של המרחב קלט; שאר הפונקציה משולבת מפרמטרים אלה.

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

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

כִּיוּל

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

  • מחיר קפה, בטווח של 0 עד 20 דולר
  • מרחק למשתמש, בטווח של 0 עד 30 קילומטרים

אנחנו רוצים שהמודל שלנו ילמד את אושר המשתמש עם הצעה של בית קפה מקומי. מודלי TensorFlow סריג יכולים להשתמש בפונקציות ליניארי piecewise (עם tfl.layers.PWLCalibration ) לכייל לנרמל קלטת את תכונות המגוון המקובל על הסריג: 0.0 ל -1.0 למשל סריג מעל. להלן דוגמאות לפונקציות כיול עם 10 נקודות מפתח:

לרוב מומלץ להשתמש בקוונטילים של התכונות כנקודות מפתח לקלט. TensorFlow סריג אומד משומר יכול להגדיר את keypoints הקלט אוטומטית התכונה quantiles.

עבור תכונות קטגורים, TensorFlow סריג מספק כיול המחולקים לקטגוריות (עם tfl.layers.CategoricalCalibration ) עם תפוקה דומה תוחמת כדי להאכיל לתוך סריג.

הרכבים

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

הספרייה מספקת שתי וריאציות של הרכבים אלה:

  • סורגים זעירים אקראי (RTL): כל דגם משנה משתמשת משנה אקראית של תכונות (עם החלפה).

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

למה TensorFlow סריג?

ניתן למצוא מבוא קצר TensorFlow סריג זה פוסט בבלוג TF .

ניתנות לפירוש

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

דגמים מדויקים וגמישים

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

אילוצי צורה של שכל בריא

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

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

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

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

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

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

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

גמישות מבוקרת עם Regularizers

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

  • Laplacian Regularizer: יציאות של סריג / כיול קודקודים / keypoints מוסדר כלפי הערכים של השכנים שלהם. תוצאות זה פונקציה להחמיא.

  • הסי Regularizer: זה מעניש הנגזרת הראשונה של שכבת כיול PWL להפוך את הפונקציה ליניארית יותר.

  • קמטי Regularizer: זה מעניש נגזר השני של שכבת כיול PWL להימנע משינויים קיצוניים העקמומיות. זה הופך את הפונקציה לחלקה יותר.

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

מערבבים ומתאימים עם שכבות קרס אחרות

אתה יכול להשתמש בשכבות TF Lattice בשילוב עם שכבות Keras אחרות כדי לבנות מודלים מוגבלים חלקית או מסודרים. לדוגמה, ניתן להשתמש בשכבות כיול סריג או PWL בשכבה האחרונה של רשתות עמוקות יותר הכוללות הטמעות או שכבות Keras אחרות.

ניירות

הדרכות ומסמכי API

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