דף זה תורגם על ידי 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})