Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Apprendimento strutturato neurale: formazione con segnali strutturati

Neural Structured Learning (NSL) è un nuovo paradigma di apprendimento per la formazione di reti neurali sfruttando segnali strutturati oltre a input di funzionalità. La struttura può essere esplicita come rappresentata da un grafico o implicita come indotta dalla perturbazione contraddittoria.

I segnali strutturati sono comunemente usati per rappresentare relazioni o somiglianze tra campioni che possono essere etichettati o senza etichetta. Pertanto, sfruttare questi segnali durante l'allenamento della rete neurale sfrutta sia i dati etichettati che quelli senza etichetta, il che può migliorare l'accuratezza del modello, in particolare quando la quantità di dati etichettati è relativamente piccola . Inoltre, i modelli addestrati con campioni generati dall'aggiunta di perturbazioni avversarie hanno dimostrato di essere robusti contro gli attacchi dannosi , progettati per fuorviare la previsione o la classificazione di un modello.

NSL si occupa in generale dell'apprendimento dei grafi neurali e dell'apprendimento contraddittorio . Il framework NSL in TensorFlow fornisce le seguenti API e strumenti di facile utilizzo per gli sviluppatori per addestrare modelli con segnali strutturati:

  • API di Keras per consentire l'addestramento con grafici (struttura esplicita) e perturbazioni del contraddittorio (struttura implicita).
  • Operazioni e funzioni TF per consentire l'addestramento con la struttura quando si utilizzano API TensorFlow di livello inferiore
  • Strumenti per creare grafici e costruire input di grafici per la formazione

L'incorporazione di segnali strutturati viene eseguita solo durante l'allenamento. Pertanto, le prestazioni del flusso di lavoro di servizio / inferenza rimangono invariate. Maggiori informazioni sull'apprendimento strutturato neurale sono disponibili nella descrizione del nostro quadro . Per iniziare, consulta la nostra guida all'installazione e per un'introduzione pratica a NSL, dai un'occhiata ai nostri tutorial.

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})