ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

التعلم المنظم العصبي: التدريب باستخدام الإشارات المنظمة

التعلم المنظم العصبي (NSL) هو نموذج تعليمي جديد لتدريب الشبكات العصبية من خلال الاستفادة من الإشارات المنظمة بالإضافة إلى مدخلات الميزات. يمكن أن يكون الهيكل صريحًا على النحو الذي يمثله رسم بياني أو ضمنيًا ناتجًا عن اضطراب الخصومة.

تُستخدم الإشارات المنظمة بشكل شائع لتمثيل العلاقات أو التشابه بين العينات التي يمكن تمييزها أو عدم تسميتها. لذلك ، فإن الاستفادة من هذه الإشارات أثناء تدريب الشبكة العصبية يسخر البيانات المصنفة وغير المصنفة على حد سواء ، مما يمكن أن يحسن دقة النموذج ، خاصة عندما تكون كمية البيانات المصنفة صغيرة نسبيًا . بالإضافة إلى ذلك ، فقد ثبت أن النماذج التي تم تدريبها على العينات التي تم إنشاؤها عن طريق إضافة اضطراب الخصومة قوية ضد الهجمات الخبيثة ، والتي تم تصميمها لتضليل توقعات النموذج أو تصنيفه.

يعمم NSL لتعلم الرسم البياني العصبي وكذلك تعلم الخصومة . يوفر إطار عمل NSL في TensorFlow واجهات برمجة التطبيقات والأدوات التالية سهلة الاستخدام للمطورين لتدريب النماذج باستخدام الإشارات المنظمة:

  • واجهات برمجة تطبيقات Keras لتمكين التدريب باستخدام الرسوم البيانية (البنية الصريحة) والاضطرابات العدائية (البنية الضمنية).
  • وظائف ووظائف TF لتمكين التدريب بالهيكل عند استخدام واجهات برمجة تطبيقات TensorFlow ذات المستوى الأدنى
  • أدوات لبناء الرسوم البيانية وبناء مدخلات الرسم البياني للتدريب

يتم دمج الإشارات المنظمة فقط أثناء التدريب. لذلك ، يظل أداء سير عمل العرض / الاستدلال دون تغيير. يمكن العثور على مزيد من المعلومات حول التعلم المنظم العصبي في وصف إطار عملنا. للبدء ، يرجى الاطلاع على دليل التثبيت الخاص بنا ، وللحصول على مقدمة عملية لـ NSL ، تحقق من دروسنا.

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