Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Neuronales strukturiertes Lernen: Training mit strukturierten Signalen

Neuronales strukturiertes Lernen (NSL) ist ein neues Lernparadigma zum Trainieren neuronaler Netze durch Nutzung strukturierter Signale zusätzlich zu Merkmalseingaben. Die Struktur kann explizit sein, wie durch einen Graphen dargestellt, oder implizit, wie durch eine gegnerische Störung induziert.

Strukturierte Signale werden üblicherweise verwendet, um Beziehungen oder Ähnlichkeiten zwischen Proben darzustellen, die markiert oder nicht markiert sein können. Die Nutzung dieser Signale während des Trainings für neuronale Netze nutzt daher sowohl markierte als auch unbeschriftete Daten, was die Modellgenauigkeit verbessern kann, insbesondere wenn die Menge der markierten Daten relativ gering ist . Darüber hinaus hat sich gezeigt, dass Modelle, die mit Stichproben trainiert wurden, die durch Hinzufügen von gegnerischen Störungen erzeugt wurden, robust gegen böswillige Angriffe sind , die die Vorhersage oder Klassifizierung eines Modells irreführen sollen.

NSL verallgemeinert sich sowohl auf das Lernen neuronaler Graphen als auch auf das kontroverse Lernen . Das NSL-Framework in TensorFlow bietet Entwicklern die folgenden benutzerfreundlichen APIs und Tools zum Trainieren von Modellen mit strukturierten Signalen:

  • Keras-APIs für das Training mit Diagrammen (explizite Struktur) und kontroversen Störungen (implizite Struktur).
  • TF-Operationen und -Funktionen , um das Training mit Struktur bei Verwendung von TensorFlow-APIs niedrigerer Ebene zu ermöglichen
  • Tools zum Erstellen von Diagrammen und Erstellen von Diagrammeingaben für das Training

Das Einbeziehen strukturierter Signale erfolgt nur während des Trainings. Die Leistung des Serving- / Inferenz-Workflows bleibt also unverändert. Weitere Informationen zum neuronalen strukturierten Lernen finden Sie in unserer Framework-Beschreibung . Informationen zum Einstieg finden Sie in unserer Installationsanleitung. Eine praktische Einführung in NSL finden Sie in unseren Tutorials.

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