নিউরাল স্ট্রাকচার্ড লার্নিং: স্ট্রাকচার্ড সিগন্যাল সহ প্রশিক্ষণ

নিউরাল স্ট্রাকচার্ড লার্নিং (NSL) হল একটি নতুন শিক্ষার দৃষ্টান্ত যা ফিচার ইনপুট ছাড়াও স্ট্রাকচার্ড সিগন্যাল ব্যবহার করে নিউরাল নেটওয়ার্ককে প্রশিক্ষিত করার জন্য। গঠন একটি গ্রাফ দ্বারা উপস্থাপিত হিসাবে সুস্পষ্ট বা প্রতিকূল বিশৃঙ্খলা দ্বারা প্ররোচিত হিসাবে অন্তর্নিহিত হতে পারে।

স্ট্রাকচার্ড সিগন্যালগুলি সাধারণত লেবেলযুক্ত বা আনলেবেলযুক্ত নমুনার মধ্যে সম্পর্ক বা সাদৃশ্য উপস্থাপন করতে ব্যবহৃত হয়। অতএব, নিউরাল নেটওয়ার্ক প্রশিক্ষণের সময় এই সংকেতগুলিকে ব্যবহার করা লেবেলযুক্ত এবং লেবেলবিহীন উভয় ডেটাই ব্যবহার করে, যা মডেলের নির্ভুলতা উন্নত করতে পারে, বিশেষ করে যখন লেবেলযুক্ত ডেটার পরিমাণ তুলনামূলকভাবে কম হয় । উপরন্তু, নমুনাগুলির সাথে প্রশিক্ষিত মডেলগুলি যেগুলি প্রতিকূল বিভ্রান্তি যোগ করে তৈরি করা হয় সেগুলি দূষিত আক্রমণগুলির বিরুদ্ধে শক্তিশালী বলে দেখানো হয়েছে, যা একটি মডেলের ভবিষ্যদ্বাণী বা শ্রেণীবিভাগকে বিভ্রান্ত করার জন্য ডিজাইন করা হয়েছে৷

এনএসএল নিউরাল গ্রাফ লার্নিং এবং অ্যাডভারসারিয়াল লার্নিং -কে সাধারণীকরণ করে। TensorFlow-এ NSL ফ্রেমওয়ার্ক নিম্নলিখিত সহজে ব্যবহারযোগ্য API এবং টুলস সরবরাহ করে যা ডেভেলপারদের কাঠামোবদ্ধ সংকেত সহ মডেলগুলিকে প্রশিক্ষণ দিতে পারে:

  • কেরাস এপিআই গ্রাফ (স্পষ্ট কাঠামো) এবং প্রতিকূল বিভ্রান্তি (অন্তর্নিহিত কাঠামো) সহ প্রশিক্ষণ সক্ষম করতে।
  • নিম্ন-স্তরের TensorFlow API ব্যবহার করার সময় কাঠামোর সাথে প্রশিক্ষণ সক্ষম করার জন্য TF অপারেশন এবং ফাংশন
  • প্রশিক্ষণের জন্য গ্রাফ তৈরি এবং গ্রাফ ইনপুট নির্মাণের সরঞ্জাম

কাঠামোগত সংকেত অন্তর্ভুক্ত করা শুধুমাত্র প্রশিক্ষণের সময় করা হয়। সুতরাং, পরিবেশন/অনুমান কার্যপ্রবাহের কর্মক্ষমতা অপরিবর্তিত থাকে। নিউরাল স্ট্রাকচার্ড লার্নিং সম্পর্কে আরও তথ্য আমাদের কাঠামোর বিবরণে পাওয়া যাবে। শুরু করার জন্য, অনুগ্রহ করে আমাদের ইনস্টল গাইড দেখুন এবং 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})