Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Pembelajaran Terstruktur Neural: Pelatihan dengan Sinyal Terstruktur

Neural Structured Learning (NSL) adalah paradigma pembelajaran baru untuk melatih jaringan saraf dengan memanfaatkan sinyal terstruktur selain masukan fitur. Struktur dapat eksplisit seperti yang diwakili oleh grafik atau implisit seperti yang diinduksi oleh gangguan permusuhan.

Sinyal terstruktur biasanya digunakan untuk mewakili hubungan atau kesamaan di antara sampel yang mungkin diberi label atau tidak berlabel. Oleh karena itu, memanfaatkan sinyal ini selama pelatihan jaringan neural memanfaatkan data berlabel dan tidak berlabel, yang dapat meningkatkan keakuratan model, terutama bila jumlah data berlabel relatif kecil . Selain itu, model yang dilatih dengan sampel yang dihasilkan dengan menambahkan gangguan permusuhan telah terbukti kuat terhadap serangan jahat , yang dirancang untuk menyesatkan prediksi atau klasifikasi model.

NSL menggeneralisasi Pembelajaran Grafik Neural serta Pembelajaran Adversarial . Framework NSL di TensorFlow menyediakan API dan fitur yang mudah digunakan berikut bagi developer untuk melatih model dengan sinyal terstruktur:

  • Keras API untuk mengaktifkan pelatihan dengan grafik (struktur eksplisit) dan gangguan permusuhan (struktur implisit).
  • Operasi dan fungsi TF untuk mengaktifkan pelatihan dengan struktur saat menggunakan TensorFlow API level lebih rendah
  • Alat untuk membuat grafik dan membuat input grafik untuk pelatihan

Memasukkan sinyal terstruktur dilakukan hanya selama pelatihan. Jadi, performa alur kerja penyajian / inferensi tetap tidak berubah. Informasi lebih lanjut tentang pembelajaran terstruktur saraf dapat ditemukan dalam deskripsi kerangka kerja kami. Untuk memulai, silakan lihat panduan penginstalan kami, dan untuk pengenalan praktis tentang NSL, lihat tutorial kami .

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