Neural Structured Learning  |  TensorFlow (original) (raw)

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

למידה מובנית עצבית: אימון עם אותות מובנים

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

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

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

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

import tensorflow as tf import neural_structured_learning as nsl

Prepare data.

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0

Create a base model -- sequential, functional, or subclass.

model = tf.keras.Sequential([ tf.keras.Input((28, 28), name='feature'), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation=tf.nn.relu), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ])

Wrap the model with adversarial regularization.

adv_config = nsl.configs.make_adv_reg_config(multiplier=0.2, adv_step_size=0.05) adv_model = nsl.keras.AdversarialRegularization(model, adv_config=adv_config)

Compile, train, and evaluate.

adv_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) adv_model.fit({'feature': x_train, 'label': y_train}, batch_size=32, epochs=5) adv_model.evaluate({'feature': x_test, 'label': y_test})