নিউরাল নেটওয়ার্ক বেসিকস (Neural Network Basics)
ভাবুন তো, কোনো কারখানার অ্যাসেম্বলি লাইনের (assembly line) কথা। এর একপ্রান্ত দিয়ে স্টিল বা লোহার পাত, রাবার, কাচের মতো কাঁচামালগুলো (raw materials) আসে। এরแรก স্টেশনে (station), কর্মীরা এগুলোকে কেটে নির্দিষ্ট আকার বা শেইপ (shape) দেয়। দ্বিতীয় স্টেশনে, অন্যরা জিনিসগুলোকে একসাথে জোড়া লাগায়। তৃতীয়টিতে বসে, কেউ হয়তো সেগুলোতে রঙ করে এবং পলিশ করে। আর একেবারে শেষ প্রান্ত দিয়ে একটি সম্পূর্ণ প্রস্তুত বা তৈরি করা গাড়ি বের হয়ে আসে।
একটি নিউরাল নেটওয়ার্কও (neural network) ঠিক এই একই নিয়মে কাজ করে। এর ইনপুট স্তরে (input layer) একেবারে র বা কাঁচা ডেটাগুলো (raw data) প্রবেশ করে। এরপর সেগুলো এক বা একাধিক হিডেন লেয়ার (hidden layers) বা লুকায়িত স্তরগুলোর মধ্য দিয়ে যায়, যেখানে প্রতিটি স্তরই ডেটাগুলোর ওপর দরকারি কোনো না কোনো কাজ করে বা এগুলোকে পরিবর্তন করে। সবশেষে, আউটপুট লেয়ার (output layer) বা একেবারে শেষ স্তরটি সম্পূর্ণ প্রস্তুত ফলাফল বা প্রেডিকশন (prediction) তৈরি করে।
এখানকার প্রতিটি স্টেশনের একেকজন ওই "কর্মী" আসলে কী? এটিই হলো মূলত একেকটি নিউরন (neuron) — যা হলো অতি ক্ষুদ্র বা ছোট একেকটি পারসেপ্ট্রন (perceptron), যেগুলো মূলত গুণ করে, যোগ করে এবং সবশেষে এর ওপর একটি অ্যাক্টিভেশন ফাংশন (activation function) প্রয়োগ করে কাজ করে।
৩টি ভিন্ন ধরণের লেয়ার বা স্তর (The three types of layers)
ইনপুট লেয়ার (Input layer)
এটি মূলত আপনার কাঁচা ডেটা (raw data)। আপনি যদি একটি ২৮x২৮ (28x28) পিক্সেলের (pixel) কোনো ছবিকে ক্লাসিফাই (classify) বা শ্রেণীবদ্ধ করতে চান, তবে আপনার ইনপুট লেয়ারে মোট ৭৮৪টি নিউরন (প্রতি পিক্সেলের জন্য একটি করে) থাকবে। এগুলো মূলত নিজেদের মধ্যে কোনো হিসাব-নিকাশ করে না — বরং এরা শুধুমাত্র এই ডেটাগুলোকে সামনের দিকে পরের স্তরে পাঠিয়ে দেয়।
হিডেন লেয়ার (Hidden layers)
এখান থেকেই মূলত আসল জাদু শুরু হয়। একটি হিডেন বা লুকানো লেয়ারের প্রতিটি নিউরন:
- আগের লেয়ারের বা স্তরের প্রতিটি নিউরন থেকেই ইনপুট ভ্যালু বা মান গ্রহণ করে
- তার প্রত্যেকটিকে একটি নির্দিষ্ট গুণাঙ্ক বা ওজন (weight) দিয়ে গুণ করে
- এরপর সেই মানগুলোকে একসাথে যোগ করে এবং সবশেষে এর সাথে একটি বায়াস (bias) যুক্ত করে
- আর সবশেষে এই ফলাফলটিকে একটি অ্যাক্টিভেশন ফাংশন (activation function)-এর মধ্য দিয়ে পাঠিয়ে দেয়
এখানে প্রথম হিডেন লেয়ারটি হয়তো এর ধার বা প্রান্তগুলো (edges) শনাক্ত করা শিখতে পারে। আর এর দ্বিতীয় লেয়ারটি হয়তো ওই প্রান্তগুলোকে একসাথে যুক্ত করে কোনো নির্দিষ্ট আকার বা শেইপ (shapes) তৈরি করতে পারে। একইভাবে তৃতীয় স্তরটি হয়তো সেই আকারগুলোকে "বিড়ালের কান" বা "কুকুরের নাক" হিসেবে চিনতে বা শনাক্ত করতে পারবে। এখানকার প্রতিটি স্তর মূলত তার আগের স্তরের ওপরে ভিত্তি করেই কাজ করে এবং এই ডেটাগুলোর অ্যাবস্ট্রাক্ট ফিচারগুলো (abstract features) বা মূল বৈশিষ্ট্যগুলোকে ধাপে ধাপে আরও ভালোভাবে শিখে নেয়।
আউটপুট লেয়ার (Output layer)
এটিই হলো এখানকার একেবারে শেষ স্তর যা আপনাকে চূড়ান্ত উত্তরটি (answer) বা ফলাফলটি দেয়। ক্লাসিফিকেশনের (classification) ক্ষেত্রে, আপনার কাছে হয়তো প্রতিটি ক্লাসের জন্য আলাদা আলাদা একেকটি নিউরন (যেমন: বিড়াল, কুকুর, পাখি ইত্যাদি) থাকতে পারে, আর এর মাঝে যে নিউরনটি সবচেয়ে বেশি সক্রিয় বা ফায়ার (fires strongest) করবে, সেটিই হবে আপনার কাঙ্ক্ষিত উত্তর বা প্রেডিকশন।
এটিকে কেন "ডিপ (deep)" লার্নিং বলা হয়? (Why "deep" learning?)
দুই বা ততোধিক হিডেন লেয়ার (hidden layers) থাকা কোনো নেটওয়ার্ককেই মূলত "ডিপ (deep)" বা গভীর নিউরাল নেটওয়ার্ক বলা হয়। এর আসল মানে আসলে এটাই — "ডিপ (deep)" বলতে মূলত এখানে "আরও বেশি স্তর বা লেয়ার থাকা"-কেই বোঝানো হয়।
কিন্তু এতগুলো স্তর কেন দরকার হয়? ব্যাপারটিকে এভাবে চিন্তা করুন। শুধুমাত্র একটি হিডেন লেয়ার (hidden layer) দিয়ে একটি নেটওয়ার্ক হয়তো সাধারণ বা খুব সিম্পল (simple) কিছু প্যাটার্ন শিখতে পারবে। কিন্তু অনেকগুলো স্তর পরপর জোড়া লাগানোর ফলে, এটি সাধারণ প্যাটার্নগুলোকে একত্রিত করে অনেক বেশি জটিল বা কমপ্লেক্স (complex) কোনো প্যাটার্নে রূপ দিতে পারে:
- প্রথম স্তর (Layer 1): এটি বিভিন্ন প্রান্তগুলো (edges) (যেমন: অনুভূমিক, উলম্ব, বা কোণাকুণি রেখা) শনাক্ত করতে পারে
- দ্বিতীয় স্তর (Layer 2): এটি এই প্রান্তগুলোকে একত্রিত করে বিভিন্ন টেক্সচার এবং আকার বা শেইপ (shapes) (যেমন: বৃত্ত, কোণা) তৈরি করে
- তৃতীয় স্তর (Layer 3): এই স্তরটি বিভিন্ন আকারগুলোকে একত্রিত করে বিভিন্ন অংশ বা পার্টস (parts) (যেমন: চোখ, নাক, চাকা) তৈরি করে
- চতুর্থ স্তর (Layer 4): আর এই স্তরটি সবশেষে বিভিন্ন অংশগুলোকে একত্রিত করে সম্পূর্ণ নতুন কোনো বস্তু বা অবজেক্ট (objects) (যেমন: মানুষের চেহারা, গাড়ি, বিড়াল) তৈরি করে যাচাই করে
এখানকার প্রতিটি স্তরই মূলত অ্যাবস্ট্রাকশনের (abstraction) একেকটি লেভেল হিসেবে কাজ করে। আপনি যত গভীরে বা ভেতরে যাবেন, এই ফিচার বা বৈশিষ্ট্যগুলো ঠিক ততটাই অত্যাধুনিক ও সোফিস্টিকেটেড (sophisticated) হতে থাকবে।
কোডে একদম শুরু থেকে একটি ছোট নিউরাল নেটওয়ার্ক (A Tiny Neural Network from Scratch)
Key Metrics
ছোট কুইজ
পড়া চালিয়ে যান