תודה שהתכווננת ל-Google I/O. צפה בכל ההפעלות לפי דרישה צפה לפי דרישה

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 Blog .

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

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

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

באמצעות סריג עדין, אתה יכול לקבל פונקציות מורכבות באופן שרירותי עם שכבת סריג אחת. שימוש בשכבות מרובות של מכיילים וסריג לרוב עובד יפה בפועל ויכול להתאים או לעלות על דגמי 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 המלאים לפרטים.