TensorFlow Lattice (TFL)

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

מושגים

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

סריג

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

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

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

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

כִּיוּל

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

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

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

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

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

הרכבים

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

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

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

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

למה TensorFlow סריג?

אתה יכול למצוא מבוא קצר ל- TensorFlow Lattice בפוסט זה של בלוג TF .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ניירות

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

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