דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

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

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

  • ממשקי API של Keras לאפשר אימונים עם גרפים (מבנה מפורש) והפרעות שליליות (מבנה מרומז).
  • אופציות ופונקציות TF המאפשרות אימונים עם מבנה בעת שימוש בממשקי API TensorFlow ברמה נמוכה יותר
  • כלים לבניית גרפים ובניית תשומות גרף לאימונים

שילוב אותות מובנים נעשה רק במהלך אימונים. לכן, ביצועי זרימת העבודה של ההגשה / ההסקה נותרו ללא שינוי. מידע נוסף על למידה מובנית עצבית ניתן למצוא בתיאור המסגרת שלנו. כדי להתחיל, עיין במדריך ההתקנה שלנו, וכדי להציג מבוא מעשי ל- 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})