ডিজিট রিকগনাইজারঃ সিম্পল মেশিন লার্নিং প্রবলেম
ডিজিট রিকগনাইজার মেশিন লার্নিং এর সিম্পল একটি প্রবলেম, যেটি মূলত সুপারভাইসড লার্নিং কারন ডিজিট রিকগনাইজার প্রবলেম এর ডাটাসেট হচ্ছে লেবেলড ডাটা। ডিজিট রিকগনাইজার মডেল এর জন্য MNIST ডাটাসেট নিয়ে কাজ যায়, যেটি খুব সহজেই ক্যাগল ও অন্য আরও সোর্স থেকে পেয়ে যাব। এছাড়াও MNIST ডাটাসেট Tensorflow ও Keras ফ্রেমওয়ার্কের সাহায্যে সরাসরি এক্সেস বা ডাউনলোড করে ব্যবহার করা যায়।
প্রথমে, Tensorflow ইম্পোর্ট করে keras লাইব্রেরীর প্রিলোডেড ডাটাসেট থেকে MNIST ডাটাসেট লোড করে নিতে হবে।
Data Visualization- কাজ শুরুর আগে ডাটার প্রকৃতি ও অবস্থা নির্ধারণ করে নিতে হবে, কারন ডাটার প্রকৃতিই প্রবলেমটির ধরন এবং সমাধানের পথ বেছে নিতে সাহায্য করবে।
MNIST ডাটাসেট হল ডিজিট (0-9) এর ইমেজের ডাটাসেট, ডাটাসেটে 0 থেকে 9 পর্যন্ত ডিজিট গুলোর মোট 7000 ইমেজ আছে। যার 6000 ট্রেনিং ইমেজ ও 1000 টেস্টিং ইমেজ। MNIST ডাটাসেট হল লেবেলড ডাটাসেট অর্থাৎ ডাটাসেটের প্রত্যেকটি ইমেজের পরিপ্রেক্ষেতে এর লেবেল দেয়া আছে, মানে ডিজিটের ইমেজটি কোন ডিজিটের লেবেল করা আছে। সেক্ষেত্রে এই প্রবলেমটি ক্লাসিফিকেশন প্রবলেম, যেখানে এমন মেশিন লার্নিং মডেল তৈরি করতে হবে যা ইনপুট টেস্ট ইমেজটিকে ক্লাসিফাই করবে যে ইমেজটি কোন ডিজিটের। MNIST ডাটাসেটের ইমেজগুলো 28X28 pixel এর এবং সাদাকালো বা Grayscale, যদি ট্রেনিং ও টেস্টিং ডাটার স্ট্রাকচার দিকে লক্ষ্য করা হয়।
দেখা যাচ্ছে যে, ট্রেনিং ইমেজ সংখ্যা 6000, টেস্টিং ইমেজ সংখ্যা 1000 এবং ডাটাসেটের ইমেজ গুলোর dimension 28X28.
এখন matplotlib ইম্পোর্ট করে যেকোন একটি ডাটাকে কিছু সিম্পল কমান্ড করে ভিজ্যুলাইজ করে দেখা যায়।
উপরের কোডটুকু রান করে 1555 ইনডেক্স এর ইমেজটি ভিজ্যুলাইজ করা যাচ্ছে।
Data Visualization- Keras লাইব্রেরীর utils প্যাকেজের normalize ফাংশনের সাহায্যে সহজেই ট্রেনিং ও টেস্টিং ডাটাকে নরমালাইজ করা যায়, নরমালাইজড ডাটা মেশিন লার্নিং মডেল এর পারফরমেন্স ও অ্যাকুরেসি বৃদ্ধি করে।
প্রবলেম সল্ভ করার জন্য keras এর sequencial মেশিন লার্নিং মডেল ব্যবহার করে এবং Flatten and Dense layers অ্যাড করা হয়েছে। Flatten layer হল ইনপুট layer যেটি ডাটার dimension কে flat করে, যা মাল্টি dimension ডাটাকে সিঙ্গেল dimension নিয়ে আসে Flatten layer. এরপর দুইটি hidden dense layer এর সাহায্যে মডেলটিকে লার্ন করা হয়, প্রত্যেকটি dense layer ইউনিট 128 বিশিষ্ট এবং layer এর activation ফাংশন হিসাবে ডিফল্ট অপশন টি ব্যবহার করা হয়েছে। সবশেষে dense layer টি 10 ইউনিট বিশিষ্ট, যেহেতু ডাটা আউটপুট বা লেবেল 10.
মডেলটি ডিজাইন করার পর, মডেল compilation-টাইমে optimizer হিসাবে adam, ডাটা loss কাউন্ট করা হয়েছে sparse_categorical_crossentropy এর সাহায্যে।
মডেলটিকে fit করার parameter হিসাবে ট্রেনিং ডাটা, ডাটার লেবেল এবং epochs = 5 সেট করা হয়েছে।
মেশিন লার্নিং মডেলটি 98% এর উপরে অ্যাকুরেসি পেয়েছে ট্রেনিং ডাটার উপর।
টেস্টিং ডাটা দিয়ে মডেলটি evaluate করে 96% পর্যন্ত অ্যাকুরেসি পাওয়া গেসে এবং .09% ডাটা লস হয়েছে। সিম্পল এই প্রবলেমটির ক্ষেত্রে রেজাল্ট ভালই পাওয়া গেসে।
টেস্টিং এর জন্য 1000 টি ইমেজের মধ্যে 432 ইনডেক্সের ডিজিট টিকে ডিজিট রিকগনাইজার মেশিন লার্নিং মডেল 4 বলে প্রেডিক্ট করেছে।
Matplotlib এর মাধ্যমে 432 ইনডেক্সের ডাটাটিকে ভিজ্যুলাইজ করে দেখা যায় মডেল সঠিক প্রেডিক্টসন করেছে।