Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Uczenie strukturalne neuronowe: szkolenie z sygnałami strukturalnymi

Neural Structured Learning (NSL) to nowy paradygmat uczenia się do szkolenia sieci neuronowych poprzez wykorzystanie sygnałów strukturalnych oprócz danych wejściowych funkcji. Struktura może być jawna, jak przedstawia wykres, lub niejawna, jako wywołana zaburzeniami przeciwnymi.

Sygnały strukturalne są powszechnie używane do reprezentowania relacji lub podobieństwa między próbkami, które mogą być oznaczone lub nie. Dlatego wykorzystanie tych sygnałów podczas uczenia sieci neuronowej wykorzystuje zarówno dane oznaczone, jak i nieoznaczone, co może poprawić dokładność modelu, szczególnie gdy ilość oznaczonych danych jest stosunkowo niewielka . Ponadto modele wytrenowane na podstawie próbek, które są generowane przez dodanie niekorzystnych perturbacji, okazały się odporne na złośliwe ataki , których celem jest wprowadzenie w błąd przewidywań lub klasyfikacji modelu.

NSL uogólnia na Neural Graph Learning, jak również Adversarial Learning . Struktura NSL w TensorFlow zapewnia następujące łatwe w użyciu interfejsy API i narzędzia dla programistów do trenowania modeli z sygnałami strukturalnymi:

  • Interfejsy API Keras umożliwiające trenowanie z wykorzystaniem wykresów (struktura jawna) i perturbacje przeciwstawne (struktura niejawna).
  • Operacje i funkcje TF umożliwiające szkolenie ze strukturą podczas korzystania z interfejsów API TensorFlow niższego poziomu
  • Narzędzia do tworzenia wykresów i konstruowania danych wejściowych na potrzeby treningu

Włączanie ustrukturyzowanych sygnałów odbywa się tylko podczas szkolenia. Tak więc wydajność przepływu pracy udostępniania / wnioskowania pozostaje niezmieniona. Więcej informacji na temat uczenia się neuronowego można znaleźć w naszym opisie struktury . Aby rozpocząć, zapoznaj się z naszym przewodnikiem instalacji , a praktyczne wprowadzenie do NSL, sprawdź nasze samouczki.

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