Chapter 18 of 18
The reference glossary for every term you'll meet next
প্রতিটা ক্ষেত্রই নিজস্ব শব্দভাণ্ডার তৈরি করে, আর machine learning-এ বিশেষভাবে একটা বড় শব্দভাণ্ডার জমা হয়েছে — কিছুটা গণিত থেকে, কিছুটা কম্পিউটার হার্ডওয়্যার থেকে, কিছুটা কোনো রিসার্চ পেপার প্রথম যে টার্মটা জনপ্রিয় করেছিল সেখান থেকে। এই চ্যাপ্টারটা একটা রেফারেন্স: একটা মাত্র জায়গা যেখানে সেই টার্মগুলো খুঁজে দেখা যায় যা আসল পেপার, ডকুমেন্টেশন, বা মডেল কোড পড়া শুরু করলে সবসময়ই দেখা যায়, যাদের অনেকগুলোই এই কোর্সে আগে দেখানো আইডিয়ার উপর সরাসরি ভিত্তি করে তৈরি। একবার পুরোটা সরাসরি পড়ুন, তারপর যখনই অন্য কোথাও কোনো টার্ম আটকে দেয় তখন নির্দিষ্ট এন্ট্রিতে ফিরে আসুন।
একটা tensor হলো deep learning যে ডেটা কন্টেইনারগুলো নিয়ে কাজ করে তাদের সাধারণ নাম — একটা মাত্র সংখ্যা, সংখ্যার একটা লিস্ট, সংখ্যার একটা গ্রিড, বা এর চেয়েও বেশি মাত্রাসহ যেকোনো কিছু। একটা tensor নিছক "কিছু সংখ্যক মাত্রাসহ সংখ্যার একটা কন্টেইনার"; একটা নেটওয়ার্কের মধ্য দিয়ে প্রবাহিত প্রতিটা ইনপুট, প্রতিটা weight ম্যাট্রিক্স (Weights & Biases চ্যাপ্টার থেকে), আর প্রতিটা activation (Forward Propagation চ্যাপ্টার থেকে) tensor হিসেবেই সংরক্ষিত হয়।
একটা tensor-এর shape বর্ণনা করে এর প্রতিটা মাত্রা বরাবর ঠিক কতগুলো উপাদান আছে, (32, 3, 224, 224)-এর মতো একটা টুপল হিসেবে লেখা। একটা tensor-এর shape জানা এটা আসলে কী প্রতিনিধিত্ব করে তা বোঝার জন্য অপরিহার্য — সেই উদাহরণ shape-টার মানে হতে পারে "৩২টা ছবি, প্রতিটাতে ৩টা রঙের চ্যানেল, প্রতিটা ২২৪ পিক্সেল উঁচু আর ২২৪ পিক্সেল চওড়া।"
এই চারটা টার্ম tensor-কে তাদের কতগুলো মাত্রা আছে তা দিয়ে নাম দেয়। একটা scalar হলো একটা মাত্র সংখ্যা শূন্য মাত্রাসহ (Loss Functions চ্যাপ্টার থেকে একটা loss মানের মতো)। একটা vector হলো সংখ্যার একটা এক-মাত্রিক লিস্ট (একটা নিউরনে খাওয়ানো weight-এর মতো)। একটা matrix হলো সংখ্যার একটা দুই-মাত্রিক গ্রিড (একটা পুরো লেয়ারকে পরেরটার সাথে যুক্ত করা weight-এর মতো)। একটা tensor, এই সংকীর্ণ ব্যবহারে, তিন বা তার বেশি মাত্রাসহ যেকোনো কিছু বোঝায় — সাধারণ টার্মটা এই চারটা ক্ষেত্রকেই কভার করে, কিন্তু মানুষ প্রায়ই "tensor" শব্দটা বিশেষভাবে উচ্চতর-মাত্রিকগুলোর জন্যই ব্যবহার করে।
একটা tensor-এর rank (একে এর মাত্রার সংখ্যাও বলা হয়) হলো এর ভেতরে একটা মাত্র উপাদান নির্দেশ করতে কতগুলো ইনডেক্স দরকার। একটা scalar-এর rank ০, একটা vector-এর rank ১, একটা matrix-এর rank ২, আর একটা রঙিন ইমেজ ব্যাচের সাধারণত rank ৪। Rank shape থেকে একটা আলাদা কনসেপ্ট — rank বলে কতগুলো মাত্রা আছে, shape বলে প্রতিটা কতটা বড়।
Channels হলো ইমেজ-জাতীয় ডেটার একটা নির্দিষ্ট মাত্রা যা প্রতিটা স্প্যাশিয়াল পজিশনে তথ্যের আলাদা "লেয়ার" প্রতিনিধিত্ব করে। একটা স্ট্যান্ডার্ড রঙিন ছবিতে ৩টা চ্যানেল থাকে — লাল, সবুজ, নীল — যেখানে প্রতিটা পিক্সেল পজিশন প্রতি চ্যানেলে একটা ইনটেনসিটি মান রাখে। ছবি প্রসেস করা Deep নেটওয়ার্ক প্রায়ই ভেতরে অনেক বেশি চ্যানেল ব্যবহার করে, প্রতিটা ভিন্ন ধরনের প্যাটার্ন সনাক্ত করতে শেখে।
Batch size হলো একটা forward pass আর একটা weight আপডেটের জন্য একসাথে গ্রুপ করা উদাহরণ সংখ্যা, ঠিক Batch, Mini-Batch, Iteration & Epoch চ্যাপ্টারে দেখানো হয়েছে। ৩২-এর একটা batch size মানে ৩২টা উদাহরণ একসাথে প্রসেস হয়, তাদের gradient গড় করা হয়, weight একবার আপডেট হওয়ার আগে।
একটা মডেলের input shape হলো এটা একটা মাত্র উদাহরণের জন্য (বা একটা মাত্র batch-এর জন্য) ঠিক যে tensor shape পাওয়ার আশা করে, কোনো প্রসেসিং শুরু হওয়ার আগে। (28, 28, 1) গ্রেস্কেল ছবির জন্য বানানো একটা মডেল ব্যর্থ হবে বা অর্থহীন কিছু তৈরি করবে যদি ভিন্ন-shape-এর একটা tensor দেওয়া হয় — input shape সঠিকভাবে মেলানো একটা মডেল ব্যবহার করার সময় সবচেয়ে সাধারণ ব্যবহারিক প্রয়োজনীয়তাগুলোর একটা।
একটা মডেলের output shape হলো এর শেষ লেয়ার যে ঠিক tensor shape তৈরি করে, যার অর্থ কাজের উপর নির্ভর করে — Forward Propagation চ্যাপ্টারের Prediction সেকশনে দেখানো হয়েছে, একটা ১০-ক্লাস classifier সাধারণত একটা output shape-এ শেষ হয় যা ১০-এ শেষ হয়, প্রতিটা ক্লাসের জন্য একটা মান।
Sequence length হলো একটা ক্রমানুসারী ইনপুটে ইন্ডিভিজুয়াল ধাপ বা উপাদানের সংখ্যা — একটা বাক্যে শব্দের সংখ্যা, বা একটা সেন্সর রিডিংয়ে সময় ধাপের সংখ্যা। ইমেজ মাত্রার মতো না, sequence length প্রায়ই একটা উদাহরণ থেকে আরেকটাতে বদলায়, যা অনেক sequence-প্রসেসিং আর্কিটেকচারকে স্পষ্টভাবে সামলাতে হয়।
একটা embedding হলো সংখ্যার একটা শেখা vector যা বিচ্ছিন্ন কিছু প্রতিনিধিত্ব করে — যেমন একটা শব্দ, একটা ক্যাটাগরি, বা একটা আইটেম — এমনভাবে যা তাদের মধ্যে অর্থপূর্ণ সম্পর্ক ধরে। একই রকম অর্থের শব্দ সংখ্যাগতভাবে কাছাকাছি embedding vector পায়, এমন একটা রিপ্রেজেন্টেশন যা মডেল ট্রেনিংয়ের সময় শেখে, কোনো মানুষ হাতে ডিজাইন করে না।
Embedding dimension হলো প্রতিটা বিচ্ছিন্ন আইটেম প্রতিনিধিত্ব করতে ব্যবহৃত vector-এর দৈর্ঘ্য — ৩০০-এর একটা embedding dimension মানে প্রতিটা শব্দ (বা ক্যাটাগরি, বা আইটেম) ঠিক ৩০০টা সংখ্যা দিয়ে প্রতিনিধিত্ব করা। একটা বড় embedding dimension বেশি সূক্ষ্মতা ধরতে পারে, বিনিময়ে সংরক্ষণ আর ট্রেন করার জন্য বেশি প্যারামিটার (এই চ্যাপ্টারের পরের দিকে দেখানো) লাগে।
একটা feature map হলো একটা convolutional লেয়ার (এই চ্যাপ্টারের পরের দিকে দেখানো) যে আউটপুট তৈরি করে — সংখ্যার একটা গ্রিড যা দেখায় ইনপুটের কোথায় একটা নির্দিষ্ট শেখা প্যাটার্ন সনাক্ত হয়েছে। প্রতিটা feature map একটা নির্দিষ্ট ধরনের প্যাটার্ন হাইলাইট করে, যেমন একটা প্রান্ত বা একটা টেক্সচার, ইনপুটের প্রতিটা স্প্যাশিয়াল পজিশন জুড়ে।
একটা kernel (যাকে filter-ও বলা হয়) হলো শেখার-যোগ্য weight-এর একটা ছোট গ্রিড যা একটা feature map তৈরি করতে একটা ইনপুট জুড়ে স্লাইড করে, একটা convolution লেয়ারের মূল মেকানিজম। একটা ৩×৩ kernel, উদাহরণস্বরূপ, একবারে ইনপুটের একটা ছোট ৩×৩ প্যাচ দেখে, একটা ওয়েটেড সাম হিসাব করে — অনেকটা Weights & Biases চ্যাপ্টারের ওয়েটেড সামের মতোই, শুধু স্থানীয়ভাবে প্রয়োগ করা আর পুরো ইনপুট জুড়ে পুনরাবৃত্তি করা।
Stride হলো একটা kernel ইনপুট জুড়ে স্লাইড করার সময় প্রতিটা প্রয়োগের মধ্যে কতগুলো পজিশন সরে। একটা stride ১ kernel-কে একবারে একটা পজিশন সরায়, একটা বড়, বিস্তারিত feature map তৈরি করে; একটা stride ২ প্রতিটা দ্বিতীয় পজিশন এড়িয়ে যায়, একটা ছোট feature map তৈরি করে যা ইনপুটকে বেশি স্থূলভাবে কভার করে।
Padding একটা kernel এর মধ্য দিয়ে স্লাইড করার আগে ইনপুটের সীমানার চারপাশে অতিরিক্ত মান (সাধারণত শূন্য) যোগ করে, বেশিরভাগ সময় আউটপুট feature map-এর সাইজ নিয়ন্ত্রণ করতে। Padding ছাড়া, প্রান্তের কাছে প্রয়োগ করা একটা kernel স্বাভাবিকভাবেই ইনপুটের চেয়ে ছোট একটা আউটপুট তৈরি করে; padding এটা ক্ষতিপূরণ দেয়, কখনো কখনো আউটপুটকে ইনপুটের সমান সাইজে রাখে।
একটা নিউরনের receptive field হলো মূল ইনপুটের সেই অংশ যা আসলে এর মান প্রভাবিত করে, একবার এর আগের সব লেয়ার হিসাবে নিলে। নেটওয়ার্কের শুরুর দিকের একটা নিউরনের একটা ছোট receptive field থাকে, সরাসরি ইনপুটের শুধু একটা ছোট প্যাচ দেখে; নেটওয়ার্কের গভীরে একটা নিউরনের receptive field পুরো ইনপুট কভার করতে পারে, কারণ একটা বিস্তৃত এলাকা থেকে তথ্য অনেক আগের লেয়ারের মধ্য দিয়ে মিলিত হয়েছে।
একটা hidden layer হলো নেটওয়ার্কের যেকোনো লেয়ার যা ইনপুট আর আউটপুটের মাঝে বসে থাকে — "hidden" নিছক কারণ এর মান সরাসরি মডেলের ইনপুট বা এর চূড়ান্ত প্রেডিকশন হিসেবে পর্যবেক্ষণ করা হয় না, ঠিক যেমনটা পুরো Forward Propagation আর Backpropagation চ্যাপ্টার জুড়ে দেখানো হয়েছে।
একটা hidden state হলো অভ্যন্তরীণ, বিকশিত হতে থাকা মেমরি যা একটা sequence-প্রসেসিং নেটওয়ার্ক (যেমন একটা recurrent নেটওয়ার্ক) এক ধাপ থেকে পরের ধাপে বহন করে, sequence-এ এখন পর্যন্ত এটা যা দেখেছে তার প্রাসঙ্গিক সবকিছু সারাংশ করে। একটা সাধারণ hidden layer-এর আউটপুটের মতো না, একটা hidden state স্পষ্টভাবে সময় ধাপ জুড়ে সামনে পাঠানো হয়, শুধু লেয়ার জুড়ে সামনে না।
একটা cell state হলো নির্দিষ্ট কিছু recurrent আর্কিটেকচারের (যেমন LSTM) ভেতরে ব্যবহৃত এক ধরনের দীর্ঘমেয়াদী মেমরি, একটা সাধারণ hidden state যতটা অনুমতি দিত তার চেয়ে কম ক্ষয়ের সাথে অনেক সময় ধাপ জুড়ে তথ্য বহন করার জন্য ডিজাইন করা। এটা hidden state-এর পাশাপাশি কাজ করে, কিন্তু সাধারণত বেশি রক্ষণশীলভাবে আপডেট হয়, বিশেষভাবে দীর্ঘ-পরিসরের তথ্য সংরক্ষণ করতে।
Logits হলো একটা মডেলের কাঁচা, নন-নরমালাইজড আউটপুট স্কোর, sigmoid বা softmax-এর মতো কোনো অ্যাক্টিভেশন ফাংশন (Forward Propagation চ্যাপ্টার থেকে) প্রয়োগ হয়ে এদের প্রোবাবিলিটিতে পরিণত করার আগে। Logits যেকোনো real সংখ্যা হতে পারে, পজিটিভ বা নেগেটিভ — এরা শুধু উপযুক্ত আউটপুট অ্যাক্টিভেশনের মধ্য দিয়ে যাওয়ার পরই প্রোবাবিলিটি হিসেবে ব্যাখ্যাযোগ্য হয়ে ওঠে।
Softmax, Forward Propagation আর Loss Functions চ্যাপ্টারে দেখানো হয়েছে, হলো সেই অ্যাক্টিভেশন ফাংশন যা logits-এর একটা সেটকে একটা প্রোবাবিলিটি ডিস্ট্রিবিউশনে পরিণত করে — প্রতিটা আউটপুট ০ আর ১-এর মধ্যে একটা সংখ্যা হয়ে যায়, আর এরা সবগুলো একসাথে ঠিক ১-এ যোগ হয়। এটা multi-class classification-এর জন্য স্ট্যান্ডার্ড আউটপুট অ্যাক্টিভেশন।
একটা sigmoid output একটা মাত্র logit-কে ০ আর ১-এর মধ্যে একটা মানে চেপে ফেলে, binary classification-এ পজিটিভ ক্লাসের প্রোবাবিলিটি হিসেবে ব্যাখ্যা করা, ঠিক Forward Propagation চ্যাপ্টারের Prediction সেকশনে দেখানো হয়েছে। Softmax-এর মতো না, sigmoid-এর একাধিক ক্লাস জুড়ে সমন্বয় করার দরকার নেই — প্রতিটা sigmoid আউটপুট একাই দাঁড়িয়ে থাকে।
একটা probability score হলো একটা নির্দিষ্ট আউটকাম কতটা সম্ভাব্য তার একটা সাংখ্যিক অনুমান, সাধারণত একটা sigmoid বা softmax আউটপুট লেয়ার থেকে তৈরি। "বিড়াল"-এর জন্য ০.৮৭-এর একটা probability score মানে মডেলটা অনুমান করে ইনপুটটা বিড়াল হওয়ার ৮৭% সম্ভাবনা আছে, একটা নিশ্চিত সত্য না।
একটা confidence score probability score-এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত, কিন্তু শব্দটা প্রায়ই একটু বেশি শিথিলভাবে ব্যবহৃত হয় বর্ণনা করতে একটা মডেল তার শীর্ষ প্রেডিকশনকে কতটা জোরালোভাবে সমর্থন করে, সেই সংখ্যাটা গাণিতিকভাবে ক্যালিব্রেটেড একটা প্রোবাবিলিটি কিনা তা নির্বিশেষে। একটা উচ্চ confidence score ইঙ্গিত দেয় মডেলটা "নিশ্চিত", কিন্তু একটা মডেলের confidence আর এর আসল সঠিকতা স্বয়ংক্রিয়ভাবে একই জিনিস না।
একটা prediction হলো একটা নির্দিষ্ট ইনপুটের জন্য একটা মডেল যে আউটপুট তৈরি করে তার সাধারণ টার্ম — একটা সংখ্যা, একটা ক্যাটাগরি, একটা প্রোবাবিলিটি ডিস্ট্রিবিউশন, যেকোনো কিছু। Classification হলো বিশেষভাবে একটা ইনপুট নির্দিষ্ট সংখ্যক ক্যাটাগরির কোনটার সেটা প্রেডিক্ট করার কাজ, Decision Boundaries চ্যাপ্টারে দেখানো হয়েছে — প্রতিটা classification আউটপুট একটা prediction, কিন্তু প্রতিটা prediction একটা classification না (একটা regression আউটপুট, এই চ্যাপ্টারের পরের দিকে দেখানো, এটাও একটা prediction)।
Ground truth হলো একটা নির্দিষ্ট উদাহরণের আসল, সঠিক উত্তর — সেই সত্যিকারের লেবেল যা একটা training বা evaluation উদাহরণকে ট্যাগ করা হয়েছিল, loss হিসাব করতে ব্যবহৃত (Loss Functions চ্যাপ্টার থেকে) আর একটা মডেলের প্রেডিকশন কতটা সঠিক বা ভুল তা মাপতে।
একটা label হলো একটা নির্দিষ্ট উদাহরণের সাথে যুক্ত সুনির্দিষ্ট ground-truth উত্তর — "এই ছবির label হলো বিড়াল।" একটা class হলো সাধারণ ক্যাটাগরিগুলোর একটা যাদের মধ্যে থেকে একটা মডেল পুরো ডেটাসেট জুড়ে বেছে নিচ্ছে — "বিড়াল" হলো মডেলটা প্রেডিক্ট করতে পারে এমন বেশ কয়েকটা সম্ভাব্য class-এর একটা। প্রতিটা উদাহরণের label একটা নির্দিষ্ট class, কিন্তু "class" সাধারণভাবে ক্যাটাগরি বোঝায়, কোনো একটা উদাহরণের উত্তর না।
Binary classification-এ ঠিক দুইটা সম্ভাব্য class জড়িত, Decision Boundaries চ্যাপ্টারে দেখানো হয়েছে। Multi-class classification-এ তিন বা তার বেশি class জড়িত, যেখানে প্রতিটা উদাহরণ ঠিক এদের একটার। Multi-label classification একটা মাত্র উদাহরণকে একসাথে একাধিক class-এর হতে দেয় — একটা নিউজ আর্টিকেল একসাথে "রাজনীতি" আর "অর্থনীতি" দুটোতেই ট্যাগ করা, Decision Boundaries চ্যাপ্টারেও এই পার্থক্যটা উল্লেখ করা হয়েছিল।
Regression, Decision Boundaries চ্যাপ্টারের Classification Intuition সেকশনে দেখানো হয়েছে, হলো একটা ক্যাটাগরির বদলে একটা কন্টিনিউয়াস সাংখ্যিক মান প্রেডিক্ট করার কাজ — একটা দাম, একটা তাপমাত্রা, একটা সময়কাল — Loss Functions চ্যাপ্টারের MSE বা MAE-এর মতো loss function ব্যবহার করে, classification loss-এর বদলে।
Activation, Forward Propagation চ্যাপ্টারে বিস্তারিত দেখানো হয়েছে, দুটোই বোঝায় — একটা নিউরনের ওয়েটেড সামে প্রয়োগ করা non-linear ফাংশন (যেমন ReLU বা sigmoid), আর, অনানুষ্ঠানিকভাবে, ফলাফল আউটপুট মান নিজেই যা পরের লেয়ারে পাঠানো হয়।
একটা node (বা neuron) হলো একটা লেয়ারের ভেতরের মৌলিক গণনামূলক ইউনিট — এটা তার ইনপুটের একটা ওয়েটেড সাম হিসাব করে প্লাস একটা bias, তারপর একটা অ্যাক্টিভেশন ফাংশন প্রয়োগ করে, ঠিক Weights & Biases আর Forward Propagation চ্যাপ্টারে দেখানো হয়েছে। একটা লেয়ার নিছক নিউরনের একটা গ্রুপ যারা একই ইনপুটে পাশাপাশি কাজ করে।
একটা layer হলো নিউরনের একটা গ্রুপ যারা একই ইনপুট একসাথে প্রসেস করে আর তাদের মিলিত আউটপুট একটা ইউনিট হিসেবে সামনে পাঠায় — Forward Propagation চ্যাপ্টারে দেখানো লেয়ার-বাই-লেয়ার হিসাবের মৌলিক বিল্ডিং ব্লক।
একটা dense layer (যাকে fully-connected layer-ও বলা হয়) হলো এমন একটা লেয়ার যেখানে প্রতিটা নিউরন আগের লেয়ার থেকে আসা প্রতিটা মানের সাথে যুক্ত। এটা ডিফল্ট, সাধারণ-উদ্দেশ্যের ধরনের লেয়ার যা Weights & Biases আর Forward Propagation চ্যাপ্টার জুড়ে ব্যবহৃত, নিচের বেশি বিশেষায়িত লেয়ার টাইপের বিপরীতে।
একটা convolution layer একটা ইনপুট জুড়ে kernel (এই চ্যাপ্টারের আগে দেখানো) প্রয়োগ করে, এমন feature map তৈরি করে যা প্রান্ত বা টেক্সচারের মতো স্থানীয় প্যাটার্ন সনাক্ত করে, একটা dense layer যেভাবে প্রতিটা ইনপুট মানের সাথে যুক্ত হয় সেভাবে না। Convolution layer ইমেজ-জাতীয় ডেটার জন্য ডিজাইন করা নেটওয়ার্কের মূল বিল্ডিং ব্লক।
একটা pooling layer ছোট অঞ্চলগুলোকে একটা মাত্র মানে সারাংশ করে একটা feature map-এর সাইজ কমায় — max pooling প্রতিটা অঞ্চলের সবচেয়ে বড় মান রাখে, average pooling গড় রাখে। Pooling নেটওয়ার্কের মধ্য দিয়ে প্রবাহিত ডেটা সংকুচিত করে আর ফলাফল ফিচারগুলোকে সঠিক পিক্সেল পজিশনের প্রতি কম সংবেদনশীল করতে সাহায্য করে।
একটা flatten layer একটা মাল্টি-ডাইমেনশনাল tensor-কে (যেমন feature map-এর একটা গ্রিড) একটা মাত্র এক-মাত্রিক vector-এ রিশেপ করে, সাধারণত convolutional layer আর dense layer-এর মধ্যে সেতু বাঁধতে ব্যবহৃত, কারণ dense layer একটা মাল্টি-ডাইমেনশনাল গ্রিডের বদলে ইনপুটের একটা সমতল vector আশা করে।
একটা residual connection একটা লেয়ারের ইনপুট সরাসরি এর আউটপুটে যোগ করে, লেয়ারটা নিজে যে রূপান্তর করে তার পাশাপাশি, তাই লেয়ারটার শুধু পার্থক্যটা (মূল থেকে "residual") শিখতে হয় এর ইনপুট থেকে, পুরো আউটপুট শূন্য থেকে পুনর্গঠনের বদলে। এটা খুব deep নেটওয়ার্ক ট্রেন করা অনেক সহজ করে দেয়, কারণ আগের লেয়ার থেকে কার্যকর তথ্য বেশিরভাগ অপরিবর্তিতভাবে সামনে প্রবাহিত হতে পারে।
একটা skip connection হলো এমন যেকোনো কানেকশনের সাধারণ টার্ম যা এক বা একাধিক লেয়ার লাফিয়ে পার হয়, নেটওয়ার্কের একটা আগের বিন্দু থেকে সরাসরি একটা পরের বিন্দুতে তথ্য বহন করে। একটা residual connection হলো skip connection-এর সবচেয়ে সাধারণ নির্দিষ্ট ধরন।
Attention হলো একটা মেকানিজম যা একটা মডেলকে গতিশীলভাবে ঠিক করতে দেয়, তার আউটপুটের প্রতিটা অংশের জন্য, ইনপুটের কোন অংশগুলো ফোকাস করার জন্য সবচেয়ে প্রাসঙ্গিক — ইনপুটের প্রতিটা পজিশনকে সমানভাবে দেখার বদলে। সব তথ্য একটা মাত্র ফিক্সড-সাইজের সারাংশের মধ্য দিয়ে জোর করে পাঠানোর বদলে, attention মডেলকে নির্দিষ্ট যে ইনপুটগুলো হাতের কাজের জন্য সবচেয়ে গুরুত্বপূর্ণ সেগুলোর দিকে ফিরে তাকাতে দেয়।
Self-attention হলো একটা মাত্র sequence-এর ভেতরে প্রয়োগ করা attention, যেখানে প্রতিটা উপাদান একই sequence-এর প্রতিটা অন্য উপাদানের প্রতি মনোযোগ দেয় এমন একটা রিপ্রেজেন্টেশন তৈরি করতে যা সম্পূর্ণ আশেপাশের প্রসঙ্গ হিসাবে নেয়। এটা টেক্সট আর অন্যান্য ক্রমানুসারী ডেটার জন্য আধুনিক আর্কিটেকচারের অন্তর্নিহিত মেকানিজম, একটা শব্দের রিপ্রেজেন্টেশনকে একই বাক্যের প্রতিটা অন্য শব্দ দিয়ে সরাসরি আকৃতি দিতে দেয়।
একটা attention head হলো attention মেকানিজমের একটা স্বাধীন ইনস্ট্যান্স, "কীসের উপর ফোকাস করতে হবে" তার নিজস্ব ভার্সন হিসাব করে। মডেলগুলো সাধারণত একসাথে সমান্তরালে বেশ কয়েকটা attention head ব্যবহার করে (multi-head attention), বিভিন্ন head-কে একই ইনপুটের মধ্যে বিভিন্ন ধরনের সম্পর্কে বিশেষায়িত হতে দিয়ে।
একটা token হলো একটা sequence মডেল যে মৌলিক বিচ্ছিন্ন ইউনিট প্রসেস করে — প্রায়ই একটা শব্দ, একটা শব্দের অংশ, বা একটা অক্ষর, মডেলে খাওয়ানোর আগে ইনপুট টেক্সট কীভাবে ভাগ করা হয়েছিল তার উপর নির্ভর করে। প্রতিটা token সাধারণত আরও প্রসেসিংয়ের আগে একটা embedding-এ (এই চ্যাপ্টারের আগে দেখানো) ম্যাপ করা হয়।
একটা মডেলের vocabulary হলো token-এর সম্পূর্ণ, ফিক্সড সেট যা এটা প্রতিনিধিত্ব করতে জানে — এই সেটের বাইরে যেকোনো কিছু হয় পরিচিত token-এ ভেঙে ফেলতে হয় বা একটা স্পেশাল "unknown" প্লেসহোল্ডারে ম্যাপ করতে হয়। Vocabulary সাইজ সরাসরি একটা মডেলের কতগুলো embedding vector সংরক্ষণ করতে হবে তা প্রভাবিত করে।
একটা মডেলের context window হলো এটা ইনপুট প্রসেস করার সময় একবারে যে সর্বোচ্চ sequence length হিসাবে নিতে পারে — সেই উইন্ডোর বাইরে যেকোনো কিছু সেই নির্দিষ্ট হিসাবের সময় মডেলের কাছে দৃশ্যমান না। একটা বড় context window একটা মডেলকে বেশি আশেপাশের তথ্য বিবেচনা করতে দেয়, বিনিময়ে বেশি হিসাব লাগে।
একটা sequence হলো এমন যেকোনো ক্রমানুসারী সংগ্রহ যেখানে ক্রম অর্থ বহন করে — একটা বাক্য (token-এর একটা sequence), একটা টাইম সিরিজ (পরিমাপের একটা sequence), বা একটা ভিডিও (ফ্রেমের একটা sequence)। Sequence length, এই চ্যাপ্টারের আগে দেখানো, বর্ণনা করে একটা নির্দিষ্ট sequence-এ কতগুলো উপাদান আছে।
Masking হলো একটা টেকনিক যা একটা হিসাবের সময় একটা মডেল থেকে একটা sequence-এর নির্দিষ্ট পজিশন স্পষ্টভাবে লুকিয়ে ফেলে — উদাহরণস্বরূপ, একটা মডেলকে ভবিষ্যতের token "দেখা" থেকে আটকানো যা এখনো অ্যাক্সেস পাওয়ার কথা না, বা একটা batch-এর মধ্যে sequence একই দৈর্ঘ্যের করার জন্য যোগ করা padding পজিশন উপেক্ষা করা।
একটা encoder হলো এমন একটা কম্পোনেন্ট যা একটা কাঁচা ইনপুট নেয় আর এটাকে একটা ভিন্ন, সাধারণত বেশি কার্যকর, অভ্যন্তরীণ রিপ্রেজেন্টেশনে সংকুচিত বা রূপান্তরিত করে — কাঁচা ডেটাকে এমন একটা রূপে পরিণত করে যা হাতের কাজের জন্য এর গুরুত্বপূর্ণ গঠন ধরে।
একটা decoder হলো এমন একটা কম্পোনেন্ট যা একটা অভ্যন্তরীণ রিপ্রেজেন্টেশন নেয় (প্রায়ই একটা encoder যা তৈরি করেছে) আর এটাকে আবার একটা ব্যবহারযোগ্য আউটপুটে পরিণত করে — যেমন একটা বাক্যের অর্থের একটা সংকুচিত রিপ্রেজেন্টেশন থেকে শব্দের একটা sequence তৈরি করা।
একটা encoder–decoder architecture দুটো অংশই মেলায়: একটা encoder যা ইনপুটকে একটা অভ্যন্তরীণ রিপ্রেজেন্টেশনে সংকুচিত করে, আর একটা decoder যা সেই রিপ্রেজেন্টেশন থেকে একটা আউটপুট তৈরি করে। এই কাঠামো অনুবাদের মতো কাজে সাধারণ, যেখানে ইনপুট আর আউটপুট দুটোই sequence কিন্তু একই দৈর্ঘ্যের বা এমনকি একই ভাষার হওয়ার দরকার নেই।
একটা checkpoint হলো ট্রেনিংয়ের একটা নির্দিষ্ট বিন্দুতে একটা মডেলের weight-এর (আর প্রায়ই অন্যান্য ট্রেনিং স্টেট) একটা সংরক্ষিত স্ন্যাপশট, ট্রেনিং থামানো আর আবার শুরু করা যায়, বা একটা মডেলের একটা নির্দিষ্ট ট্রেন করা ভার্সন পরে শূন্য থেকে পুনরায় ট্রেন না করেই লোড করা যায়।
একটা pretrained model হলো এমন একটা মডেল যা আরও ব্যবহার বা অভিযোজিত হওয়ার আগে ইতিমধ্যে কোনো ডেটাসেটে (প্রায়ই বড়, সাধারণ-উদ্দেশ্যের) ট্রেন করা হয়েছে। র্যান্ডম শুরুর weight-এর বদলে (Weights & Biases চ্যাপ্টারে দেখানো) একটা pretrained model থেকে শুরু করা একটা নতুন কাজের জন্য কতটা অতিরিক্ত ট্রেনিং দরকার তা নাটকীয়ভাবে কমাতে পারে।
একটা fine-tuned model হলো এমন একটা pretrained model যা একটা নতুন, বেশি নির্দিষ্ট ডেটাসেট বা কাজে অতিরিক্ত, সাধারণত ছোট, ট্রেনিংয়ের মধ্য দিয়ে গেছে, শূন্য থেকে শুরু করার বদলে এর বিদ্যমান weight অ্যাডজাস্ট করে। Fine-tuning একটা pretrained model ইতিমধ্যেই যে সাধারণ প্যাটার্ন শিখেছে সেটা ব্যবহার করে, এটাকে আরও বিশেষায়িত করে।
একটা foundation model হলো একটা বড় মডেল যা একটা বিস্তৃত, বৈচিত্র্যময় ডেটাসেটে প্রি-ট্রেন করা, একটা সাধারণ-উদ্দেশ্যের শুরুর বিন্দু হিসেবে কাজ করার উদ্দেশ্যে যা অনেক ভিন্ন ভিন্ন ডাউনস্ট্রিম কাজের জন্য fine-tune বা অভিযোজিত করা যায়, শুরু থেকেই একটা সংকীর্ণ উদ্দেশ্যের জন্য বানানোর বদলে।
একটা pipeline হলো প্রসেসিং ধাপের একটা সংজ্ঞায়িত সিকোয়েন্স যার মধ্য দিয়ে ডেটা ক্রমানুসারে যায় — উদাহরণস্বরূপ, কাঁচা ডেটা পরিষ্কার করা, ফিচার বের করা, একটা মডেলে খাওয়ানো, আর আউটপুট পোস্ট-প্রসেস করা — একটা মাত্র সংযুক্ত ইউনিট হিসেবে বিবেচিত আর প্রায়ই চালানো।
একটা workflow হলো একটা প্রজেক্টে জড়িত টাস্ক আর সিদ্ধান্তের বিস্তৃত সিকোয়েন্স, যার একটা টেকনিক্যাল pipeline প্রায়ই শুধু একটা অংশ — ডেটা সংগ্রহ, এক্সপেরিমেন্টেশন, রিভিউ, আর ডিপ্লয়মেন্টের মতো জিনিসসহ, শুধু স্বয়ংক্রিয় ডেটা-প্রসেসিং ধাপ না।
একটা experiment, একটা machine learning প্রসঙ্গে, হলো একটা নির্দিষ্ট সিদ্ধান্তের সেটের অধীনে একটা মডেল ট্রেন বা মূল্যায়ন করার একটা নির্দিষ্ট, ট্র্যাক-করার-যোগ্য চেষ্টা — একটা নির্দিষ্ট আর্কিটেকচার, hyperparameter (Parameters vs Hyperparameters চ্যাপ্টার থেকে), আর ডেটাসেট — সাধারণত রেকর্ড করা হয় যাতে এর ফলাফল পরে অন্য experiment-এর সাথে তুলনা করা যায়।
একটা baseline হলো একটা সহজ, বানানো সহজ রেফারেন্স মডেল বা পদ্ধতি যা একটা ন্যূনতম মান হিসেবে ব্যবহৃত হয় যা যেকোনো বেশি পরিশীলিত পদ্ধতির পার হতে পারা উচিত। একটা baseline "সবসময় majority ক্লাস প্রেডিক্ট করো"-র মতো সহজ হতে পারে (Class Imbalance চ্যাপ্টার থেকে মনে করুন) — যদি একটা জটিল মডেল এটাকে পারফরম্যান্সে হারাতে না পারে, সম্ভবত কিছু ভুল আছে।
একটা benchmark হলো একটা স্ট্যান্ডার্ডাইজড ডেটাসেট আর মূল্যায়ন প্রক্রিয়া যা বিভিন্ন মডেল বা পদ্ধতিকে সমান শর্তে তুলনা করতে ব্যবহৃত, গবেষক আর প্র্যাকটিশনারদের অর্থপূর্ণ, তুলনাযোগ্য ফলাফল দাবি করতে দেয়, প্রত্যেকে ভিন্ন, অসামঞ্জস্যপূর্ণ শর্তে পারফরম্যান্স রিপোর্ট করার বদলে।
একটা ablation study হলো এমন একটা experiment যা একটা সময়ে মডেল বা পদ্ধতির একটা নির্দিষ্ট কম্পোনেন্ট সিস্টেমেটিকভাবে সরিয়ে বা নিষ্ক্রিয় করে, ঠিক কতটা সেই কম্পোনেন্ট সামগ্রিক পারফরম্যান্সে অবদান রাখে তা মাপতে — শুধু একটা পুরো জটিল সিস্টেমের সামগ্রিক ফলাফল পর্যবেক্ষণ করার বদলে কারণ আর প্রভাব আলাদা করে।
একটা random seed হলো একটা শুরুর মান যা একটা প্রোগ্রাম যে "র্যান্ডম" সংখ্যা তৈরি করে তার সঠিক সিকোয়েন্স নির্ধারণ করে — ট্রেনিংয়ের র্যান্ডমনেস জড়িত প্রতিটা ধাপ (যেমন Weights & Biases চ্যাপ্টারে উল্লেখিত র্যান্ডম weight ইনিশিয়ালাইজেশন, বা Batch, Mini-Batch, Iteration & Epoch চ্যাপ্টারের শাফলিং) একই seed ফিক্স করে ঠিক ঠিক পুনরাবৃত্তি করা যায়।
Deterministic training হলো এমন একটা ট্রেনিং সেটআপ যেখানে, একই কোড, ডেটা, আর random seed দিয়ে, প্রতিটা রান বিট-ফর-বিট অভিন্ন ফলাফল তৈরি করে। এটা ডিবাগিংয়ের জন্য আর যাচাই করার জন্য দরকারি যে কোডের একটা বদল আসলেই ফলাফলে বদল ঘটিয়েছে, শুধু র্যান্ডম বৈচিত্র্য না।
Reproducibility হলো বিস্তৃত ক্ষমতা যে অন্য কেউ (বা একই ব্যক্তি, পরে) একটা বর্ণনা করা experiment থেকে একই বা সমতুল্য ফলাফল পেতে পারে — deterministic training জড়িত, কিন্তু ব্যবহৃত সঠিক ডেটা, কোড, আর সেটিং ডকুমেন্ট করার উপরও নির্ভর করে, কারণ এমনকি ছোট আনডকুমেন্টেড পার্থক্যও ভিন্ন ফলাফল তৈরি করতে পারে।
Inference হলো একটা ইতিমধ্যে ট্রেন করা মডেল ব্যবহার করে নতুন ইনপুটে প্রেডিকশন করার প্রক্রিয়া — এটা ঠিক Forward Propagation চ্যাপ্টারের forward propagation ধাপ, কোনো ট্রেনিং বা weight আপডেট এর পাশাপাশি না ঘটিয়ে চালানো।
Latency হলো একটা সিঙ্গেল inference সম্পূর্ণ হতে কতটা সময় লাগে, একটা ইনপুট পাওয়া থেকে একটা আউটপুট তৈরি করা পর্যন্ত — সাধারণত মিলিসেকেন্ডে মাপা হয়, আর প্রায়ই লাইভ ভিডিও প্রসেসিং বা ভয়েস অ্যাসিস্ট্যান্টের মতো রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য একটা গুরুত্বপূর্ণ সীমাবদ্ধতা।
Throughput হলো একটা সিস্টেম প্রতি একক সময়ে কতগুলো inference (বা কতটা ডেটা) প্রসেস করতে পারে — উদাহরণস্বরূপ, প্রতি সেকেন্ডে ছবি। Latency-এর মতো না, যা একটা মাত্র রিকোয়েস্টের গতি নিয়ে ভাবে, throughput মোট প্রসেসিং ক্যাপাসিটি নিয়ে ভাবে, আর দুটো কখনো কখনো ভিন্ন, এমনকি বিরোধী উপায়ে উন্নত করা যায়।
FLOPs (floating-point operations) একটা মডেল একটা ইনপুট প্রসেস করতে যে মৌলিক গাণিতিক অপারেশন করে, যেমন যোগ আর গুণ, তার মোট সংখ্যা গোনে। এটা একটা মডেলের কম্পিউটেশনাল খরচ অনুমান করার একটা সাধারণ উপায়, এটা যে নির্দিষ্ট হার্ডওয়্যারে চলে তা থেকে স্বাধীন।
একটা মডেলের parameter count হলো এর ভেতরে থাকা weight আর bias-এর মোট সংখ্যা (Weights & Biases চ্যাপ্টার থেকে) — সবকিছু যা ট্রেনিংয়ের সময় শেখা আর অ্যাডজাস্ট করা হয়। আধুনিক বড় মডেলের parameter count কোটি কোটিতে হতে পারে, সরাসরি মেমরি ফুটপ্রিন্ট আর কম্পিউটেশনাল খরচ দুটোই প্রভাবিত করে।
Model size সাধারণত বোঝায় একটা মডেলের সংরক্ষিত weight আসলে কতটা স্টোরেজ স্পেস নেয়, সাধারণত মেগাবাইট বা গিগাবাইটে মাপা। এটা parameter count-এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত, কিন্তু এটাও নির্ভর করে প্রতিটা প্যারামিটার কতটা সুনির্দিষ্টভাবে সংরক্ষিত (দেখুন FP32, FP16 & BF16, এই চ্যাপ্টারের পরের দিকে দেখানো)।
একটা মডেলের memory footprint হলো এটা আসলে চালানোর সময় যত মোট মেমরি দরকার — শুধু সংরক্ষিত weight না, বরং একটা forward pass-এর সময় দরকার হওয়া ইন্টারমিডিয়েট অ্যাক্টিভেশন আর অন্যান্য ডেটাও সহ — যা সাধারণত মডেলের একা সংরক্ষিত ফাইল সাইজের চেয়ে বড়।
Quantization হলো একটা মডেলের weight আর অ্যাক্টিভেশন সংরক্ষণ করতে ব্যবহৃত সাংখ্যিক প্রিসিশন কমানোর টেকনিক — উদাহরণস্বরূপ, ৩২-বিট সংখ্যা থেকে ৮-বিট সংখ্যায় রূপান্তর করা — মডেল সাইজ সংকুচিত করে আর প্রায়ই inference দ্রুত করে, সাধারণত সঠিকতার একটা ছোট খরচে।
Pruning হলো এমন weight (বা পুরো নিউরন) চিহ্নিত করে সরানোর টেকনিক যা একটা মডেলের আউটপুটে সামান্যই অবদান রাখে, মডেলের সাইজ আর কম্পিউটেশনাল খরচ কমায় যতটা সম্ভব এর আসল পারফরম্যান্স সংরক্ষণ করার চেষ্টা করে।
Knowledge distillation একটা ছোট "student" মডেলকে একটা বড়, ইতিমধ্যে-ট্রেন করা "teacher" মডেলের আচরণ অনুকরণ করতে ট্রেন করে, teacher-এর পারফরম্যান্সের বেশিরভাগ একটা অনেক বেশি কমপ্যাক্ট, দ্রুত প্যাকেজে ধরার লক্ষ্যে।
Edge AI বোঝায় স্থানীয় ডিভাইসে সরাসরি AI মডেল চালানো — ফোন, ক্যামেরা, সেন্সর — প্রসেসিংয়ের জন্য একটা দূরবর্তী সার্ভারে ডেটা পাঠানোর বদলে। এতে সাধারণত ছোট, বেশি দক্ষ মডেল দরকার হয়, এটাই ঠিক কেন quantization আর pruning-এর মতো টেকনিক এই সেটিংয়ের জন্য গুরুত্বপূর্ণ।
On-device AI মূলত edge AI-এর সমার্থক, বিশেষভাবে জোর দেয় যে inference শেষ-ব্যবহারকারীর নিজের ডিভাইসেই ঘটে অন্য কোথাও না, প্রায়ই গোপনীয়তা, latency, বা ইন্টারনেট সংযোগ ছাড়া কাজ করার কারণে।
Cloud inference হলো বিপরীত সেটআপ: ইনপুট ডেটা একটা নেটওয়ার্কের মধ্য দিয়ে একটা দূরবর্তী সার্ভারে পাঠানো হয়, যেখানে একটা (প্রায়ই অনেক বড়) মডেল এটা প্রসেস করে আর একটা প্রেডিকশন ফেরত পাঠায়। এটা একটা স্থানীয় ডিভাইস যা চালাতে পারত তার চেয়ে অনেক বড় মডেলের সুযোগ দেয়, বিনিময়ে নেটওয়ার্ক latency আর সংযোগের উপর নির্ভরতা।
একটা GPU (Graphics Processing Unit) হলো এক ধরনের কম্পিউটার চিপ যা মূলত গ্রাফিক্স রেন্ডার করার জন্য ডিজাইন করা, কিন্তু ব্যতিক্রমীভাবে বড়-স্কেল সমান্তরাল গণিতের জন্য উপযুক্ত — বিশেষ করে matrix multiplication — যার উপর নিউরাল নেটওয়ার্ক ট্রেনিং আর inference ভারীভাবে নির্ভর করে।
একটা TPU (Tensor Processing Unit) হলো machine learning কাজে সাধারণ tensor অপারেশনের জন্য বিশেষভাবে ডিজাইন করা একটা চিপ, Google-এর তৈরি, একটা সাধারণ-উদ্দেশ্যের GPU-এর চেয়ে এই উদ্দেশ্যের জন্য আরও সংকীর্ণভাবে অপ্টিমাইজ করা।
একটা NPU (Neural Processing Unit) হলো একটা চিপ, প্রায়ই ফোন আর অন্যান্য edge ডিভাইসে সরাসরি বিল্ট-ইন, বিশেষভাবে কম বিদ্যুৎ খরচে নিউরাল নেটওয়ার্ক inference কার্যকরভাবে চালানোর জন্য ডিজাইন করা — ব্যবহারিক edge AI-এর একটা মূল সক্ষমকারী।
CUDA হলো NVIDIA-র সফটওয়্যার প্ল্যাটফর্ম যা প্রোগ্রামগুলোকে সরাসরি NVIDIA GPU-তে সাধারণ-উদ্দেশ্যের হিসাব চালাতে দেয়, বেশিরভাগ deep learning ফ্রেমওয়ার্ক ট্রেনিং আর inference-এর জন্য GPU হার্ডওয়্যার আসলে ব্যবহার করতে যে অন্তর্নিহিত লেয়ারের উপর নির্ভর করে তা তৈরি করে।
Mixed precision ট্রেনিং বেশিরভাগ হিসাবের জন্য কম-প্রিসিশন সংখ্যা ফরম্যাট (যেমন FP16, পরে দেখানো) ব্যবহার করে মেমরি বাঁচাতে আর গতি বাড়াতে, যখন বেছে বেছে নির্দিষ্ট হিসাব বেশি প্রিসিশনে রাখে যেখানে সঠিকতা অন্যথায় খুব বেশি ক্ষতিগ্রস্ত হতো।
এগুলো একটা মডেলের ভেতরে সংখ্যা সংরক্ষণ করতে ব্যবহৃত ভিন্ন সাংখ্যিক ফরম্যাট। FP32 (৩২-বিট ফ্লোটিং পয়েন্ট) হলো ঐতিহ্যবাহী, উচ্চ-প্রিসিশন ডিফল্ট। FP16 (১৬-বিট ফ্লোটিং পয়েন্ট) অর্ধেক মেমরি ব্যবহার করে আর দ্রুত হিসাব করে, বিনিময়ে একটা ছোট প্রতিনিধিত্বযোগ্য রেঞ্জ আর কম প্রিসিশন। BF16 (bfloat16)-ও ১৬ বিট ব্যবহার করে কিন্তু FP32-এর বিস্তৃত রেঞ্জ রাখে বেশি সূক্ষ্ম প্রিসিশন ত্যাগ করার সময়, প্রায়ই এটাকে সাধারণ FP16-এর চেয়ে ট্রেনিংয়ের জন্য বেশি স্থিতিশীল করে।
ONNX (Open Neural Network Exchange) হলো ট্রেন করা মডেল প্রতিনিধিত্ব করার একটা ওপেন ফাইল ফরম্যাট এমনভাবে যা এরা মূলত যে ফ্রেমওয়ার্কে ট্রেন করা হয়েছিল তার সাথে বাঁধা না, একটা টুলে ট্রেন করা একটা মডেলকে এক্সপোর্ট করে একটা ভিন্ন টুলে চালাতে দেয়।
TensorRT হলো NVIDIA-র টুলকিট বিশেষভাবে NVIDIA GPU-তে দ্রুত inference-এর জন্য ট্রেন করা মডেল অপ্টিমাইজ করতে — deployment-এর জন্য অতিরিক্ত গতি বের করতে quantization আর layer fusion-এর মতো টেকনিক স্বয়ংক্রিয়ভাবে প্রয়োগ করে।
Dataset versioning হলো একটা নির্দিষ্ট experiment বা মডেলের জন্য ঠিক কোন ভার্সনের ডেটাসেট ব্যবহার হয়েছিল তা ট্র্যাক করার প্র্যাকটিস, কোডের জন্য version control-এর ডেটা সমতুল্য — reproducibility-এর জন্য অপরিহার্য, কারণ ট্রেনিং ডেটার ছোট বদলও একটা মডেলের আচরণ বদলে দিতে পারে।
Data drift হলো যখন একটা ডিপ্লয় করা মডেল যে ইনপুট ডেটা পায় তার পরিসংখ্যানগত বৈশিষ্ট্য সময়ের সাথে সাথে এটা মূলত যে ডেটায় ট্রেন হয়েছিল তার তুলনায় বদলায় — উদাহরণস্বরূপ, একটা জালিয়াতি সনাক্তকরণ মডেল নতুন খরচের প্যাটার্নের মুখোমুখি হচ্ছে যা এটা ট্রেন হওয়ার সময় ছিল না।
Concept drift একটা সম্পর্কিত কিন্তু আলাদা সমস্যা: ইনপুট আর সঠিক আউটপুটের মধ্যে সম্পর্ক সময়ের সাথে বদলায়, এমনকি ইনপুটগুলো পরিসংখ্যানগতভাবে একই রকম দেখালেও — একই কাস্টমার আচরণ যা আগে কম ঝুঁকি নির্দেশ করত পরিস্থিতি বদলানোর সাথে সাথে বেশি ঝুঁকি নির্দেশ করতে পারে।
Distribution shift হলো সাধারণ ছাতা টার্ম যা data drift আর concept drift দুটোই কভার করে — এমন যেকোনো পরিস্থিতি যেখানে deployment-এর পরে একটা মডেল যে ডেটার মুখোমুখি হয় সেটা আর যে ডিস্ট্রিবিউশনে এটা ট্রেন হয়েছিল তার সাথে মেলে না, যেভাবেই হোক না কেন।
একটা out-of-distribution ইনপুট হলো এমন একটা যা একটা মডেলের training data-তে প্রতিনিধিত্ব করা যেকোনো কিছুর চেয়ে যথেষ্ট ভিন্ন — শুধু কুকুর আর বিড়ালের ছবিতে ট্রেন করা একটা মডেল একটা গাড়ির ছবি দিলে একটা out-of-distribution ইনপুটের মুখোমুখি হচ্ছে, আর সেই ক্ষেত্রে এর প্রেডিকশনকে একটা in-distribution প্রেডিকশনের মতো বিশ্বাস করা উচিত না।
Explainability (কখনো কখনো XAI, "explainable AI"-এর জন্য) হলো একটা মডেলের ইন্ডিভিজুয়াল প্রেডিকশন একজন মানুষের কাছে বোধগম্য করার বিস্তৃত প্রচেষ্টা — "এই নির্দিষ্ট ইনপুটের জন্য মডেলটা কেন এটা প্রেডিক্ট করেছে?" এমনভাবে উত্তর দেওয়া যা মানুষ আসলে অনুসরণ করতে পারে।
Interpretability explainability-এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত, কিন্তু সাধারণত বেশি নির্দিষ্টভাবে বোঝায় একটা মডেলের অভ্যন্তরীণ গঠন ডিজাইন অনুসারে কতটা বোধগম্য — একটা সহজ linear মডেল (Decision Boundaries চ্যাপ্টারেরগুলোর মতো) স্বভাবগতভাবে লক্ষ লক্ষ প্যারামিটারসহ একটা deep নেটওয়ার্কের চেয়ে বেশি interpretable, পরে প্রয়োগ করা যেকোনো অতিরিক্ত ব্যাখ্যা টুল নির্বিশেষে।
এই ক্ষেত্র জুড়ে সবসময় দেখা acronym-এর একটা দ্রুত-রেফারেন্স তালিকা:
| Acronym | পূর্ণরূপ | এটা কী বোঝায় |
|---|---|---|
| ML | Machine Learning | ডেটা থেকে প্যাটার্ন শেখা সিস্টেম, AI, ML & DL চ্যাপ্টারে পরিচয় করানো হয়েছে |
| DL | Deep Learning | Deep নিউরাল নেটওয়ার্ক ব্যবহার করা machine learning, AI, ML & DL চ্যাপ্টার থেকেও |
| CV | Computer Vision | ছবি আর ভিডিও বোঝার উপর ফোকাস করা সাব-ফিল্ড |
| NLP | Natural Language Processing | মানুষের ভাষা বোঝা আর তৈরি করার উপর ফোকাস করা সাব-ফিল্ড |
| RL | Reinforcement Learning | ট্রায়াল-অ্যান্ড-এরর পুরস্কারের মাধ্যমে শেখা, Types of Machine Learning চ্যাপ্টারে দেখানো |
| LLM | Large Language Model | বিশাল পরিমাণ টেক্সটে ট্রেন করা একটা বড়, সাধারণত transformer-ভিত্তিক মডেল |
| VLM | Vision-Language Model | ছবি আর টেক্সট একসাথে বুঝতে ট্রেন করা একটা মডেল |
| ASR | Automatic Speech Recognition | কথ্য অডিওকে টেক্সটে রূপান্তর করা |
| TTS | Text-to-Speech | টেক্সটকে কথ্য অডিওতে রূপান্তর করা |
| OCR | Optical Character Recognition | ছবি থেকে টেক্সট বের করা, যেমন স্ক্যান করা ডকুমেন্ট |
| GAN | Generative Adversarial Network | বাস্তবসম্মত ডেটা তৈরি করতে একে অপরের বিরুদ্ধে ট্রেন করা নেটওয়ার্কের একটা জোড়া |
| VAE | Variational Autoencoder | ডেটার একটা সংকুচিত, স্ট্রাকচার্ড রিপ্রেজেন্টেশন শেখা একটা জেনারেটিভ মডেল |
| GNN | Graph Neural Network | গ্রাফ হিসেবে স্ট্রাকচার্ড ডেটা প্রসেস করার জন্য ডিজাইন করা একটা নেটওয়ার্ক, যেমন সোশ্যাল নেটওয়ার্ক বা অণু |