سخنرانی ها ، جلسات محصول ، کارگاه ها و موارد دیگر را از لیست پخش Google I / O مشاهده کنید

یادگیری ساختاری عصبی: آموزش با سیگنالهای ساخت یافته

Neural Structured Learning (NSL) الگوی جدید یادگیری برای آموزش شبکه های عصبی با استفاده از سیگنال های ساخت یافته علاوه بر ورودی های ویژگی است. ساختار می تواند صریح باشد همانطور که توسط یک نمودار نشان داده شده است یا ضمنی است که ناشی از اغتشاش خصمانه است.

سیگنال های ساختاری معمولاً برای نشان دادن روابط یا شباهت در بین نمونه هایی که ممکن است دارای برچسب یا بدون برچسب باشند استفاده می شود. بنابراین ، استفاده از این سیگنال ها در حین آموزش شبکه عصبی هم داده های دارای برچسب و هم بدون برچسب را نشان می دهد ، که می تواند دقت مدل را بهبود بخشد ، به ویژه هنگامی که مقدار داده های دارای برچسب نسبتاً کم است . علاوه بر این ، نشان داده شده است که مدلهای آموزش دیده با نمونه هایی که با افزودن آشفتگی خصمانه ایجاد می شوند ، در برابر حملات مخرب ، که برای گمراه کردن پیش بینی یا طبقه بندی یک مدل طراحی شده اند ، قوی هستند.

عام NSL به عصبی یادگیری نمودار و همچنین خصمانه آموزش . چارچوب NSL در TensorFlow API ها و ابزارهای زیر را برای استفاده آسان برای توسعه دهندگان فراهم می کند تا مدل هایی با سیگنال های ساخت یافته را آموزش دهند:

  • Keras API برای امکان آموزش با نمودارها (ساختار صریح) و اغتشاشات خصمانه (ساختار ضمنی).
  • عملکردها و عملکردهای 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})