One-Hot-Encode – নিউরাল নেটওয়ার্ক

আমরা আগেই দেখেছি কিভাবে একটা মডেল ট্রেইন করতে হয়। ট্রেইনের সময় আমরা সাধারণত ডেটা এবং ঐ ডেটার লেবেল ব্যবহার করে থাকি। আমাদের মডেলে আমরা ডেটা হিসেবে ইমেজ এবং লেবেল হিসেব বিড়াল এবং কুকুর পাস করেছিলাম। লেবেল হিসেবে আমরা কি আদৌ কোন স্ট্রিং ব্যবহার করতে পারি? না। আমরা কখনোই কোন স্ট্রিং পাস করতে পারিনা। বিড়ালের ক্ষেত্রে আমরা ০ এবং কুকুরের ক্ষেত্রে ১ ব্যবহার করেছিলাম। আউটপুট লেয়ারে আমাদের মাত্র ১ টি নিউরন ছিল। এটা যদি .৫ এর কম হয় তাহলে বিড়াল নাহলে কুকুর। এটাকে আমরা বাইনারি হিসেবে ধরে নিয়েছিলাম এবং লস হিসেবে ”binary crossentropy” ব্যবহার করেছিলাম।

এখন প্রশ্ন হচ্ছে, যদি ২ টার বেশি লেবেল থাকে তাহলে আমরা কি করবো? ধরুন, বিড়াল কুকুরের পাশাপাশি আপনাকে বাঘের ছবিও ক্লাসিফাই করতে বলা হলো। তাহলে কি করবেন? তখন তো আর বাইনারি হিসেবে ব্যবহার করতে পারবেন না। তখনই এই ওয়ান-হট-এনকোডের ব্যবহার চলে আসে।

ওয়ান-হট-এনকোড কিঃ সাধারণভাবে বলতে গেলে ইন্টেজার এর ভেক্টর যার লেংথ হবে লেবেল সংখ্যার সমান। তারমানে যদি লেবেল সংখ্যা ৩ হয় তাহলে এর লেংথও ৩ হবে। এর আরেকটা বেশিষ্ট্য হচ্ছে যে প্রতিটা ক্লাস/লেবেল একেকটা ইনডেক্স কে নির্দেষ করে এবং ঐ লেবেলের জন্য ঐ নির্দিষ্ট ইনডেক্স এর ভ্যালু বাদে বাকি সব গুলোর ভ্যালু ০ থাকবে।

উদাহরণস্বরূপ চলুন ধরে নেই আমাদেরকে ৩ টা লেবেল ক্ল্যাসিফাই করতে হবে। বিড়াল, কুকুর এবং বাঘ। তাহলে আমাদের ওয়ান-হট-ভেক্টর এর সাইজ হবে ৩। [০,০,০]

এখন ধরে নেই বিড়াল এই ভেক্টরের প্রথম ইনডেক্স নির্দেশ করে। তাহলে বিড়ালের ওয়ান-হট-এনকোডেড ভেক্টর হবেঃ [1, 0, 0]

একই ভাবে কুকুর যদি দ্বিতীয় ইনডেক্স নির্দেশ করে তাহলে কুকুরের এনকোডেড ভেক্টর হবেঃ [0, 1, 0]

বাঘ তাহলে তৃতীয় ইনডেক্স নির্দেশ করবে এবং এর ভেক্টর হবেঃ [0, 0, 1]

আমাদের লেবেল এর সাইজ ৩। তাহলে আমরা এটাও অনুমান করে বলে দিতে পারি যে আমাদের মডেলের আউটপুট লেয়ারে ৩টা নিউরন থাকবে। এবং যেই ইনডেক্স এর নিউরন এর ভ্যালু সর্বোচ্চ থাকবে সেটাই আমাদের প্রেডিক্টেড লেবেল থাকবে। ধরে নেই যে আমাদের মডেল কোন একটা ইমেজ এর জন্য আউটপুট দিলো [0.78, 0.12, 0.1] । প্রথম ইনডেক্স এর ভ্যালু সর্বোচ্চ। তাহলে আমাদের প্রেডিক্টেড লেবেল হবে বিড়াল।

মনে ভয় হতে পারে যে এত কষ্ট করে মডেল বানাবো আবার এত কোড লিখব ইনপুট আউটপুট প্রসেস করার জন্য। না, অনেক সহজ উপায় আছে এটা করার জন্য। লাইব্রেরি ব্যবহার করে খুব সহজে এক লাইনের কোডেই এগুলো করা সম্ভব। আগামী পর্বে আমি কোড লিখে দেখাবো কিভাবে উপরের বর্ণিত কাজগুলো করতে পারবেন। এর জন্য numpy অনেক কাজে আসবে। এখনো না numpy ইনস্টল না করে থাকলে এখানের বর্ণনা দেখে এখনি ইনস্টল করে নিন।


Leave a Reply

Your email address will not be published. Required fields are marked *