این صفحه به‌وسیله ‏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})