Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Sinirsel Yapılandırılmış Öğrenme: Yapılandırılmış Sinyaller ile Eğitim

Sinirsel Yapılandırılmış Öğrenme (NSL) , özellik girişlerine ek olarak yapılandırılmış sinyalleri kullanarak sinir ağlarını eğitmek için yeni bir öğrenme paradigmasıdır. Yapı, bir grafikle temsil edildiği gibi açık veya çatışmalı tedirginlikten kaynaklanan örtük olabilir.

Yapılandırılmış sinyaller, genellikle etiketlenmiş veya etiketlenmemiş örnekler arasındaki ilişkileri veya benzerliği temsil etmek için kullanılır. Bu nedenle, sinir ağı eğitimi sırasında bu sinyallerden yararlanmak, hem etiketli hem de etiketlenmemiş verileri kullanır ve bu, özellikle etiketli veri miktarı nispeten küçük olduğunda model doğruluğunu artırabilir. Ek olarak, bir modelin tahminini veya sınıflandırmasını yanıltmak için tasarlanmış kötü niyetli saldırılara karşı , düşmanca tedirginlik eklenerek oluşturulan örneklerle eğitilen modellerin güçlü olduğu gösterilmiştir.

NSL, Sinirsel Grafik Öğrenmeye ve Tartışmalı Öğrenmeye genelleştirir. TensorFlow'daki NSL çerçevesi, geliştiricilere yapılandırılmış sinyallerle modelleri eğitmek için aşağıdaki kullanımı kolay API'leri ve araçları sağlar:

  • Keras API'leri , grafiklerle (açık yapı) ve ters karışıklıklar (örtük yapı) ile eğitim sağlar.
  • Daha düşük seviyeli TensorFlow API'lerini kullanırken yapıyla eğitim sağlamak için TF işlemleri ve işlevleri
  • Eğitim için grafikler oluşturmak ve grafik girdileri oluşturmak için araçlar

Yapılandırılmış sinyalleri dahil etmek yalnızca eğitim sırasında yapılır. Dolayısıyla, sunum / çıkarım iş akışının performansı değişmeden kalır. Sinirsel yapılandırılmış öğrenme hakkında daha fazla bilgi çerçeve açıklamamızda bulunabilir . Başlamak için lütfen kurulum kılavuzumuza bakın ve NSL'ye pratik bir giriş için eğiticilerimize göz atın .

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