আগের পাঠগুলোতে সাধারণ পরিভাষায় মেশিন লার্নিং বর্ণনা করা হয়েছিল। এই পাঠে মেশিন লার্নিং যে প্রকৃত বিভাগে পড়ে তা আলোচনা করা হবে — ধারণাগতভাবে, ভারী গণিত ছাড়াই।
মডেলটি লেবেল করা তথ্যে প্রশিক্ষিত হয় — ইনপুট আর সঠিক আউটপুটের জোড়া — আর একটিকে অন্যটির সাথে ম্যাপ করতে শেখে। এটি দুই ধরনের সমস্যায় ভাগ হয়:
| ধরন | আউটপুট কী | উদাহরণ |
|---|---|---|
| ক্লাসিফিকেশন | একটি ক্যাটাগরি | স্প্যাম নাকি স্প্যাম নয়; বিড়াল নাকি কুকুর; রোগ আছে নাকি নেই |
| রিগ্রেশন | একটি সংখ্যা | একটি বাড়ির দাম পূর্বাভাস; ডেলিভারির সময় পূর্বাভাস; পড়ার ঘণ্টা থেকে পরীক্ষার নম্বর পূর্বাভাস |
একটি ক্লাসিক শিক্ষণীয় উদাহরণ হলো টাইটানিক বেঁচে থাকার ডেটাসেট — বয়স, লিঙ্গ, আর টিকিটের ক্লাসের উপর ভিত্তি করে কে বেঁচে গিয়েছিল তা পূর্বাভাস দেওয়া। এটি একটি ভালো উদাহরণ ঠিক এই কারণে যে আপনার ইতিমধ্যে যাচাই করার মতো অন্তর্দৃষ্টি আছে ("নারী আর শিশু আগে" — তথ্য কি আসলে এটি নিশ্চিত করে?)।
এবার কোনো লেবেল নেই — মডেলটি নিজেই তথ্যে লুকানো কাঠামো খুঁজে বের করে।
একটি AI এজেন্ট ট্রায়াল আর এরর দিয়ে শেখে — একটি পরিবেশে কাজ করে আর ফলাফলের ভিত্তিতে পুরস্কার বা শাস্তি পায়। এভাবেই সিস্টেম অতিমানবীয় স্তরে গেম খেলতে শেখে, কিছু রোবট হাঁটতে শেখে, আর সুপারিশ সিস্টেম শেখে কোন কনটেন্ট কাউকে ব্যস্ত রাখে।
তথ্য সাধারণত একটি ট্রেনিং সেট (মডেল আসলে যা থেকে শেখে) আর একটি আলাদা টেস্ট সেট-এ ভাগ করা হয় যা প্রশিক্ষণের সময় এটি কখনো দেখে না — মডেলটি আসলে সাধারণ প্যাটার্ন শিখেছে নাকি শুধু ট্রেনিং উদাহরণ মুখস্থ করেছে তা পরে পরীক্ষা করতে ব্যবহৃত হয়।
ট্রেনিং যে দুইভাবে ভুল হতে পারে
ওভারফিটিং হলো যখন একটি মডেল ট্রেনিং তথ্যে দারুণ পারফর্ম করে কিন্তু নতুন তথ্যে খারাপ করে — এটি অন্তর্নিহিত প্যাটার্ন শেখার বদলে নির্দিষ্ট বিষয় মুখস্থ করেছে, ঠিক এমন একজন শিক্ষার্থীর মতো যে বিষয়টা বোঝার বদলে গত বছরের পরীক্ষার প্রশ্নের উত্তর মুখস্থ করে। আন্ডারফিটিং বিপরীত সমস্যা: মডেলটি প্যাটার্ন ধরার জন্য খুবই সরল, ট্রেনিং আর টেস্ট দুটো তথ্যেই খারাপ পারফর্ম করে।
একটি নিউরাল নেটওয়ার্ক সরল গাণিতিক ইউনিটের ("নিউরন") স্তরে সাজানো থাকে। তথ্য প্রথম স্তরে প্রবেশ করে, এক বা একাধিক "হিডেন" স্তর দিয়ে যায় যা এটিকে ক্রমবর্ধমান বিমূর্ত উপায়ে একত্র করে, আর একটি চূড়ান্ত স্তর আউটপুট তৈরি করে — একটি ক্যাটাগরি, একটি সংখ্যা, বা প্রতিটি সম্ভাব্য উত্তরের একটি সম্ভাবনা। প্রতিটি নিউরনের ভেতরের গণিত বোঝার দরকার নেই একটি কার্যকর মানসিক মডেল রাখতে: সাধারণত বেশি স্তর আর বেশি নিউরন একটি নেটওয়ার্ককে আরও জটিল প্যাটার্ন শিখতে দেয়, প্রশিক্ষণের জন্য বেশি তথ্য আর বেশি কম্পিউটিং শক্তির প্রয়োজনের বিনিময়ে।
এটি দেখার জন্য সত্যিই সবচেয়ে সন্তোষজনক জিনিসগুলোর একটি: একটি বাস্তব নিউরাল নেটওয়ার্ক, লাইভ প্রশিক্ষিত, ফ্রি, একটি ব্রাউজারে।
import tensorflow as tf
from tensorflow import keras
# ১০টি ক্যাটাগরি জুড়ে ৬০,০০০ লেবেল করা ছবি লোড করুন
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # পিক্সেল মান স্কেল করুন
model = keras.Sequential([
keras.layers.Flatten(input_shape=(32, 32, 3)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dropout(0.2), # ওভারফিটিং কমাতে সাহায্য করে
keras.layers.Dense(10, activation='softmax'),
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(x_train, y_train, epochs=10, validation_split=0.1)
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {test_acc*100:.1f}%")প্রশিক্ষণ চলার সময় নির্ভুলতার সংখ্যাটি লক্ষ্য করুন: এটি সাধারণত তথ্যের প্রথম পাসের পর প্রায় ৩৫% থেকে শুরু হয় আর দশম পাসের মধ্যে প্রায় ৫৫%-এ পৌঁছায়। এটি হয়তো প্রভাবশালী মনে না-ও হতে পারে, কিন্তু ১০টি ক্যাটাগরি জুড়ে র্যান্ডম অনুমান মাত্র প্রায় ১০% স্কোর করত — আর এটি কোনো উন্নত কৌশল ছাড়াই সত্যিই একটি সরল নেটওয়ার্ক।
এখন আপনি একটি ক্ষেত্র হিসেবে মেশিন লার্নিং-এর আকৃতি বোঝেন। পরের পাঠে এই পুরো অংশ যে নির্দিষ্ট প্রযুক্তির দিকে গড়ে উঠছিল তাতে গভীরে যাওয়া হবে: লার্জ ল্যাঙ্গুয়েজ মডেল আর RAG, প্রকৃত গভীরতায়।