Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Нейронное структурированное обучение: обучение со структурированными сигналами

Нейронное структурированное обучение (NSL) - это новая парадигма обучения для обучения нейронных сетей путем использования структурированных сигналов в дополнение к входам функций. Структура может быть явной, представленной графом, или неявной, вызванной состязательным возмущением.

Структурированные сигналы обычно используются для представления отношений или сходства между выборками, которые могут быть помечены или немаркированы. Следовательно, использование этих сигналов во время обучения нейронной сети использует как помеченные, так и немеченые данные, что может повысить точность модели, особенно когда объем помеченных данных относительно невелик . Кроме того, было показано, что модели, обученные с помощью образцов, созданных путем добавления состязательного возмущения, устойчивы к злонамеренным атакам , которые призваны ввести в заблуждение прогноз или классификацию модели.

NSL обобщает в Neural Graph Learning и Adversarial Learning . Платформа 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})