Transfer Learning হলো একটি মেশিন লার্নিং কৌশল যেখানে একটি পূর্বে প্রশিক্ষিত মডেল (pre-trained model) ব্যবহার করা হয় নতুন সমস্যার জন্য, যেটি মূলত একটি ডিফারেন্ট (বা সমান্তরাল) ডেটাসেটে ট্রেনিং করা হয়েছে। এতে মডেলটি আগে শিখে নেওয়া জ্ঞান এবং বৈশিষ্ট্যগুলো নতুন কাজের জন্য ব্যবহার করা হয়, যা সাধারণত কম ডেটা বা কম কম্পিউটেশনাল শক্তি প্রয়োজন হয়।
Transfer Learning এর মাধ্যমে আমরা ভাল পারফরম্যান্স পেতে পারি এবং মডেল ট্রেনিংয়ের সময় অনেকটা কম সময় ও বাজারিক সম্পদ সাশ্রয় করতে পারি।
Transfer Learning এর প্রক্রিয়া
- পূর্বে প্রশিক্ষিত মডেল নির্বাচন: একটি মডেল নির্বাচন করা হয় যা ইতিমধ্যে বড় ডেটাসেট (যেমন, ImageNet) এ প্রশিক্ষিত, এবং এটি নতুন ডেটাসেটে টিউন করা হয়।
- ফিচার এক্সট্রাকশন: পূর্ববর্তী মডেলের লেয়ারগুলির মাধ্যমে ফিচার এক্সট্রাক্ট করা হয়।
- ফাইন টিউনিং (Fine-Tuning): মডেলের সর্বশেষ লেয়ার বা কিছু নির্দিষ্ট লেয়ার নতুন ডেটাসেটের জন্য প্রশিক্ষিত হয়।
উদাহরণ: Pre-trained CNN মডেল দিয়ে কুকুর ও বিড়াল শ্রেণীকরণ (Classifying Dogs and Cats)
এখানে আমরা Transfer Learning ব্যবহার করে একটি পূর্ব প্রশিক্ষিত কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) মডেল ব্যবহার করে কুকুর এবং বিড়াল ছবি শ্রেণীকরণ (classification) করবো।
ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করুন
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.applications import VGG16
from tensorflow.keras.preprocessing.image import ImageDataGenerator
ধাপ ২: পূর্ব প্রশিক্ষিত মডেল (VGG16) লোড করুন
এখানে আমরা VGG16 মডেলটি ব্যবহার করছি যা ImageNet ডেটাসেটে প্রশিক্ষিত।
# VGG16 মডেল লোড করা (ভালোভাবে প্রশিক্ষিত)
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# মডেলটি অপরিবর্তিত রাখুন
base_model.trainable = False
weights='imagenet': ImageNet ডেটাসেটে প্রশিক্ষিত মডেল ব্যবহার করা।include_top=False: মডেলের টপ লেয়ার বাদ দেয়া হয়, যাতে আমরা নিজের টপ লেয়ার (output layer) যোগ করতে পারি।input_shape=(224, 224, 3): ইনপুট চিত্রের আকার 224x224 পিক্সেল এবং RGB চ্যানেল।
ধাপ ৩: মডেলটি কাস্টমাইজ করুন
আমরা VGG16 এর উপরের লেয়ার ব্যবহার করব এবং একটি নতুন আউটপুট লেয়ার যোগ করব যা কুকুর এবং বিড়াল শ্রেণীভুক্ত করবে।
# নতুন মডেল তৈরি করা
model = Sequential()
# পূর্ব প্রশিক্ষিত VGG16 মডেল যোগ করা
model.add(base_model)
# ফ্ল্যাট লেয়ার যোগ করা
model.add(Flatten())
# সম্পূর্ণ সংযোগযুক্ত লেয়ার (Fully Connected Layer)
model.add(Dense(256, activation='relu'))
model.add(Dense(1, activation='sigmoid')) # কুকুর এবং বিড়াল দুইটি শ্রেণী
ধাপ ৪: মডেল কম্পাইল করা
এখন আমরা মডেলটি কম্পাইল করবো এবং binary crossentropy লস ফাংশন ব্যবহার করে কম্পাইল করবো, কারণ এটি বাইনারি শ্রেণীকরণের জন্য উপযুক্ত।
# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
ধাপ ৫: ডেটা প্রিপ্রসেসিং এবং জেনারেটর সেটআপ
এখানে আমরা ImageDataGenerator ব্যবহার করে চিত্র ডেটা প্রিপ্রসেস করবো এবং ডেটা অ্যাগমেন্টেশন (data augmentation) যোগ করব যাতে মডেলটি আরও ভালভাবে সাধারণীকৃত হতে পারে।
# ডেটা প্রিপ্রসেসিং
train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
# ট্রেনিং এবং টেস্ট ডেটা লোড করা
train_data = train_datagen.flow_from_directory('dataset/train', target_size=(224, 224), batch_size=32, class_mode='binary')
test_data = test_datagen.flow_from_directory('dataset/test', target_size=(224, 224), batch_size=32, class_mode='binary')
ধাপ ৬: মডেল ট্রেনিং
এখন আমরা মডেলটিকে ট্রেনিং ডেটা দিয়ে ট্রেন করব।
# মডেল ট্রেনিং
model.fit(train_data, epochs=10, validation_data=test_data)
ধাপ ৭: মডেল মূল্যায়ন (Evaluation)
টেস্ট ডেটা ব্যবহার করে মডেলের কার্যকারিতা মূল্যায়ন করা।
# মডেল মূল্যায়ন
loss, accuracy = model.evaluate(test_data)
print(f"Test accuracy: {accuracy * 100:.2f}%")
সারাংশ
এটি Transfer Learning এর একটি উদাহরণ ছিল, যেখানে আমরা VGG16 মডেল ব্যবহার করেছি যা ImageNet ডেটাসেটে প্রশিক্ষিত এবং তারপর আমরা এটিকে কাস্টম ডেটাসেটে (কুকুর এবং বিড়াল ছবি) শ্রেণীকরণ করতে ফাইন টিউন করেছি। এই পদ্ধতিটি দ্রুত মডেল প্রশিক্ষণ করতে সহায়ক এবং যখন কম ডেটা থাকে তখন এটি অত্যন্ত কার্যকরী।
Transfer Learning ব্যবহার করে পূর্ব প্রশিক্ষিত মডেলগুলি পুনরায় ব্যবহার করে নতুন সমস্যা সমাধান করা সহজ হয়, এবং এতে কম্পিউটেশনাল খরচও কমে।
Read more