প্র‍্যাক্টিক্যাল মেশিন লার্নিং : পার্ট - ১
project photo
author photo
Biggo RouthFeb 3, 2023

ভূমিকা

তোমরা মেশিন লার্নিং এর থিওরি নিয়ে ইংলিশ বাংলা হিন্দি অনেক লেখালেখিই খুঁজে পাবে। বাংলায় থিওরেটিকাল অনেক লেখালেখি আছে বলা খুব একটা ভুল হবে না কিন্তু রিয়েল লাইফ ইম্পলিমেন্টেশন দিয়ে গুছানো খুব কম কন্টেন্টই আছে বাংলায় আর হিন্দির কথা বলতে পারি না আর সেটা জানাও আমাদের চিন্তাভাবনার অন্তর্ভুক্ত না। তো প্র‍্যকটিক্যালি বা হাতে-কলমে মেশিন লার্নিং আয়ত্ত করার উদ্দেশ্য নিয়ে মূলত আমাদের এই ব্লগটি সাজানো। এবার প্রশ্ন হচ্ছে যে এই ব্লগটি কাদের জন্য? যারা এই ফিল্ডে নতুন তাদের জন্য এই ব্লগটি উত্তম একটি হাতেখড়ি ধরা যায়। আর যারা মেশিন লার্নিং এর সাথে ইতিমধ্যে "হাই-হ্যালো" করে ফেলেছো তোমরা যাতে আরও প্র‍্যাক্টিক্যালি জিনিসগুলো শিখার মাধ্যমে রিয়েল-লাইফ প্রব্লেম সলভ করার দক্ষতা অর্জন করতে পারো এই বিষয়টা আমাদের ব্লগের অন্যতম উদ্দেশ্য।

তাহলে চলো শুরু করা যাক। প্রথমেই জেনে নেই এই মেশিন লার্নিং বলতে বোঝায়টা আসলে কি!

মেশিন লার্নিং কি?

আমাদের যাদের প্রোগ্রামিং নিয়ে ধারনা আছে, আমরা জানি যে প্রোগ্রাম হলো কোনো একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য কম্পিউটারকে দেওয়া কিছু নির্দেশনা যা কম্পিউটার এক্সিকিউট করে কাঙ্খিত ফলাফলটি আমাদের আউটপুট হিসেবে দেখায়। একটু খেয়াল করে দেখলে বোঝতে পারবে এখানে কম্পিউটারকে যা বলা হচ্ছে কম্পিউটার কিন্তু তাই করে দিচ্ছে, এর বাইরে নিজে থেকে কিছু করছে না বা করার সামর্থ্য নেই বা বলা যায় ইন্টেলিজেঞ্জ নেই।

আচ্ছা এখন যদি আমরা এমন কোনো ম্যাজিক করি যার মাধ্যমে কম্পিউটার নিজের একটি বুদ্ধিমত্তা অর্জন করে, তাহলে বলো তো কেমন হবে বিষয়টা? তখন বারবার কোড না লিখে কম্পিউটারের বুদ্ধিকে কাজে লাগিয়ে অনেক বড় বড় কাজই কম্পিউটারকে দিয়ে আদায় করিয়ে নেয়া যাবে। তার মানে, কম্পিউটারকে শিখিয়ে পড়িয়ে শিক্ষিত বানানো যাতে কম্পিউটার নিজ থেকেই পরিস্থিতির উপর ভিত্তি করে ডিসিশন নিতে পারে অথবা কোনো কিছুর রেজাল্ট ধারনা করতে পারে। আর এই যে কম্পিউটার নিজ থেকে শিখে বা লার্ন করে একটি নিজ বুদ্ধিমত্তা অর্জন করে সেটিই আসলে মেশিন লার্নিং। শুদ্ধ ভাষায় বললে, মেশিন লার্নিং হচ্ছে আর্টিফিশিয়াল ইন্টেলিজেন্স এর একটি শাখা যেখানে মেশিনকে বিভিন্ন ডেটা দিয়ে লার্ন করানো হয় কোনো ধরনের হার্ডকোড না করে এবং যাতে সে নিজ এনভায়রনমেন্ট থেকে এক্সপ্যারিয়েন্স নিয়ে ওই কাজে আরও অ্যাকুরেট হতে পারে। মেশিন লার্নিং মূলত আর্টিফিশিয়াল ইন্টেলিজেন্স অর্জন করারই একটি উপায়।

রিয়েল লাইফ কোনো কিছুর সাথে তুলনা করলে বিষয়টা আরও পরিষ্কার হবে -

একটি ২-৩ বছরের ছোট্ট বাচ্চাকে যেমনি একটি কুকুর দেখিয়ে শেখানো হয় যে এটি একটি কুকুর আর একটি বিড়াল দেখিয়ে বলা হয় এটি একটি বিড়াল। এভাবে সে কুকুরের ফেইস, নাক-মুখ-কান দেখতে কেমন, চাল-চলন কেমন এসব দেখে মনে রাখে এটা একটা কুকুর। এখন মোটামুটি তাকে বিভিন্ন ধরণের কুকুর দেখালে সে সহজেই বলে দিতে পারবে যে এটা একটি কুকুর আর একটি বিড়াল দেখালে সে বিড়ালের ক্যারাক্টারিস্টিক্সের উপর ভিত্তি করে বলে দিতে পারবে এটি একটি বিড়াল। মেশিন লর্নিং বলা যায় অনেকটা এমনি কাজ করে।

আরেকটু মেটেরিয়ালিস্টিক উদাহরণ দেখা যাক-

কম বেশি আমরা সবাই-ই ই-মেইল ব্যাবহার করি।তার মানে খুব স্বাভাবিক আমাদের অদরকারী অনেক মেইল ও আসে যাকে আমরা সচরাচর স্প্যাম মেইল বলে থাকি। এখন খেয়াল করো, আমরা যদি স্প্যাম ইমেইল কোনগুলো বা কোন বৈশিষ্ট থাকলে আমরা বলতে পারি এটা একটি স্প্যাম ইমেইল এটি স্পেসিফাই করা অনেকগুলো ডাটা নিয়ে যদি একটা ডাটাসেট কোনো মেশিন লর্নিং মডেলে ফিট করানো যায়, তাহলে মডেলটি কিন্তু স্প্যাম মেইলগুলো নিজ থেকে চিহ্নিত করে স্প্যাম ফোল্ডারে পাঠিয়ে দিবে এবং তোমাকে তোমার দরকারি মেইলগুলো আলাদা করে খুঁজতে হবে না। তাহলে দেখো, মেশিন লার্নিং ব্যবহার করে তোমরা তোমাদের খাটনি কতোটা কমিয়ে ফেলেছ।

আশা করি, মেশিন লার্নিং এর একটি বেসিক ধারণা তোমরা পেয়ে গিয়েছ। চলো এবার এই পথ ধরেই আস্তে আস্তে এগোতে থাকি।

এখন খুব স্বাভাবিক তোমাদের মাথায় একটা প্রশ্ন ঘুরাঘুরি করছে যে কিভাবে কাজ করে এই মেশিন লার্নিং আর কিভাবেই বা মডেলগুলো লার্ন করার মাধ্যমে এমন কাজগুলোকে স্বল্প সময়ে বেশ নিখুঁতভাবেই করে ফেলছে! প্যারা নাই! চলো বিষয়টা ক্লিয়ার করে ফেলি-

মেশিন লার্নিং কীভাবে কাজ করে?

বলা যায় মেশিন লার্নিং এর সবচেয়ে বড় এসেট হলো ডেটা। একটি নির্দিষ্ট কাজ করার জন্য যা যা ডেটা প্রয়োজন এসব ডেটাকে একটি ফরমেটেড ওয়ে-তে নেয়া হয় আর এই অনেকগুলো ডেটার ফরমেটেড এই রূপকেই বলে ডেটাসেট। আর এই ডেটাসেট এর সাথে তথা সেসব ডেটার সাথে পরিচয় করিয়ে দেওয়া হয় মেশিন লার্নিং মডেলের। মডেলগুলো এই ডেটাকেই কাজে লাগিয়ে লার্ন করে এবং পরবর্তীতে প্রেডিকশন বা ডিসিশন নেয়ার মতো কাজ করার ক্ষমতা অর্জন করে। ডেটাগুলোর প্যাটার্ন বা ফিচারগুলোর সাথে পরিচিত হয় মডেলগুলো এবং ভবিষ্যতে এরূপ ডেটা সম্পর্কিত নতুন ডেটা নিয়ে কোনো নির্দিষ্ট কাজ নিজ থেকেই করে দিতে পারে।

কি? মাথার উপর দিয়ে গেলো নাকি! চলো উদাহরণ দেখি এক দুইটা, তাহলে আশা করি ক্যাচ করতে পারবে -

ধরো আমাদের কাছে একটি খুবই সহজ সরল ডেটাসেট আছে যাতে দুইটা ফিচার বা প্যারামিটার আছে। একটি হলো স্পিড আর অন্যটি হলো রিস্ক। স্পিডের উপর ভিত্তি করে একটি গাড়ির এক্সিডেন্ট করার রিস্ক কতোটুকু হতে পারে মূলত এই জিনিসটাই আছে ডেটাসেটটিতে। একটি মেশিন লার্নিং মডেলে যদি এই ডেটাসেটটি ফিট করানো হয় অর্থাৎ মডেলকে যদি এই ডেটাগুলো দিয়ে শেখানো হয় যে স্পিড কতো হলে রিস্ক কত পারসেন্ট হবে তাহলে কিন্তু নতুন ডেটা দিয়ে যদি মডেলটিকে জিজ্ঞেস করা হয় যে স্পিড যদি এতো হয় তাহলে এর রিস্ক পারসেন্টেজ কতো, মডেলটি খুব সহজেই আউটপুট হেসেবে একটা ভ্যালু দিবে। এই ভ্যালুটা সে বের করেছে পূর্বের ডেটাগুলো হতে পাওয়া নোলেজকে কাজে লাগিয়ে। এইতো মেশিনকে লার্ন করাতে পেরেছ!

আরেকটা ভালো উদাহরণ দেখি চলো-

আমার বন্ধুদের Hilorang নামে একটি অনলাইন ক্লোথিং শপ আছে। তারা তাদের বিজনেসকে আরও এক ধাপ এগিয়ে নিয়ে যাওয়ার প্ল্যান করছে। তাই তাদের এখন কাস্টমারের পছন্দ জানা প্রয়োজন এবং কাস্টমারের চাহিদা অনুযায়ী প্রোডাকশন করার মাধ্যমে ভালো ফল পেতে পারে। এবার বলো তো তারা কী কোনো ভাবে এখানে মেশিন লার্নিং কে কাজে লাগাতে পারে? হ্যাঁ! অবশ্যই পারে।

কাস্টমারের ব্রাউজিং এবং শপিং হিস্ট্রি ইত্যাদি রিড করতে পারলে তাদের পছন্দ বা চাহিদা সম্পর্কে একটা ধারনা পাওয়া যাবে। তাহলে, কাস্টমারের কাছ থেকে এসব ব্রাউজিং এবং অনলাইন শপিং হিস্ট্রি বা ডেমোগ্রাফিক ইনফরমেশন ডেটা কালেক্ট করা যেতে পারে। তারপর এই ডেটাসেট দিয়ে মেশিন লার্নিং মডেলকে ট্রেইন করা যেতে পারে। তোমরা নিশ্চয়ই বোঝতে পারছো এবার কি হবে, তাই না? মডেলটি ডেটাসেটের ফিচারগুলো যেমন কাস্টমারের পূর্ববর্তী ট্রানজেকশনগুলো বা কে কোন ধরনের কাপড়ে ইন্টারেস্টেড এবং কোন প্রাইজ রেঞ্জের মধ্যে ওই কাস্টমার কাপড় চাচ্ছেন ইত্যাদি শিখে নিবে। বাহ! মডেল ট্রেইন করা হয়ে গিয়েছে। এবার নতুন কোনো কাস্টমার তাদের প্ল্যাটফর্মে আসলে তার পছন্দ মতো প্রোডাক্টগুলোই সে দেখতে পারবে কারন সে কোন ধরনের প্রোডাক্ট চাচ্ছে তা মডেল প্রেডিক্ট করে নিয়েছে। যেমন ধরো, একজন কাস্টমার তার পছন্দমতো ভালো হুডি(Hoodie) খুঁজতে ব্রাউজ করছে বা আগেও সে এইধরনের কাপড় তাদের প্ল্যাটফর্ম থেকে ক্রয় করেছে। মডেল কিন্তু অলরেডি বোঝে গিয়েছে যে ওই কাস্টমার হুডি খুঁজছে এবং তার চাহিদা মতোই তাকে প্রোডাক্ট দেখাবে।

Hilorang তো এখন অনেক টাকাপয়সা কামাবে যা বোঝা যাচ্ছে! কি বলো তোমরা?

আচ্ছা তাহলে তো আমরা মেশিন লার্নিং এর সাথে ভালোই পরিচিত হয়েছি। এবার মেশিন লার্নিং এর টাইপগুলো নিয়ে আলোচনা করা যাক -

মেশিন লার্নিং এর প্রকারভেদ

লার্নিং এর ধরনের উপর ভিত্তি করে মেশিন লার্নিং মূলত ৩ প্রকারের।

  • সুপারভাইজড লার্নিং (Supervised Learning)
  • আনসুপারভাইজড লার্নিং (Unsupervised Learning)
  • রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning)

একে একে দেখে নেয়া যাক এদের -

সুপারভাইজড লার্নিং (Supervised Learning):

সুপারভাইজেশন বলতে আমরা বুঝি কোনো কিছু শিখিয়ে বা দেখিয়ে দেয়া যাতে এই কাজটি পরবর্তীতে নিজে নিজে করতে পারা যায়, তাই না? তো বোঝতেই পারছো মেশিন লার্নিং এর দুনিয়ায় সুপারভাইজড লার্নিং মানে কি বোঝায়!

একটি মডেলকে বা অ্যালগরিদমকে যখন লেবেলড ডেটা দিয়ে লার্ন করানো হয় অর্থাৎ ডেটার ইনপুটের সাথে তার অ্যাকচুয়াল আউটপুট দেওয়া থাকে, তখন সেটা সুপারভাইজড লার্নিং টাইপের মডেল। এই পদ্ধতিতে অনেকগুলো ডেটা দিয়ে মডেলকে লার্ন করাতে হবে যাতে মডেলটি ভালোভাবে শিখতে পারে এবং যত ভালোভাবে শিখতে পারবে, নতুন ডেটার ক্ষেত্রে প্রেডিকশন ততো সঠিকভাবে নির্নয় করতে পারবে।

আশা করি বোঝতে পেরেছো। এবার তাহলে একটা উদাহরণ দেখে নেই -

ধরো আমরা বেশ অনেকগুলো বাড়ির কিছু ডেটা কালেক্ট করলাম, এই যেমন ধরো, বাড়িতে কয়টা রুম আছে, বাড়িটি কতো বড়(স্কোয়ার ফুটেজ) বা বাড়িটির লোকেশন ইত্যাদি এবং মেশিন লার্নিং মডেলকে এই ডেটাগুলো দিয়ে লার্ন করালাম।

মডেলটি এই ফিচারগুলো নিয়ে ইনপুট(ফিচারগুলো) এবং আউটপুটের(বাড়ির দাম) মধ্যে ম্যাপিং করে লার্ন করবে। এবার যখনই নতুন ফিচার দিয়ে মডেলকে বলা হবে যে এই বাড়ির প্রাইজ বলে দাও, তখন মডেলটি অনায়াসেই একটা প্রাইজ হিসাব করে আউটপুট হিসেবে আমাদের দিয়ে দিবে।

project photo

কি? মজার জিনিস না অনেক!

যেহেতু সুপারভাইজড লার্নিং এর কীর্তি কাহিনি বোঝতে পেরেছো, তাহলে আনসুপারভাইজড লার্নিং কি হতে পারে তার একটা আইডিয়া কিন্তু তোমাদের মাথায় চলে এসেছে।

আনসুপারভাইজড লার্নিং (Unsupervised Learning):

সুপারভাইজড লার্নিং এর ঠিক বিপরীতটাই হচ্ছে আনসুপারভাইজড লার্নিং। এখানে কোনো লেবেলড ডেটা দেওয়া হয় না অর্থাৎ মডেলকে নিজ থেকেই ইনপুট ডেটার প্যাটার্ন বা রিলেশন বোঝে নিতে হয় কারন ট্রেইনিং ডেটাসেটে কোনো এক্সপেক্টেড আউটপুট দেয়া থাকে না।

এটার জন্য বহুল প্রচলিত একটি উদাহরণ আছে, চলো দেখে ফেলি -

ধরো আমাদের ইনপুট ডেটাসেটে ৩ ধরনের ফলের ছবি দেওয়া আছে যেমন আপেল, কমলা, আম। আনসুপারভাইজড মডেল এক এক ধরনের ফলের ছবিকে এক একটি গ্রুপ তৈরি অর্থাৎ ক্লাস্টারিং করে ফেলবে ডেটাগুলোর ক্যারাক্টারিস্টিক্সের উপর ভিত্তি করে। ক্লাস্টারিং করার মাধ্যমে এই তিন ধরনের ফল তিনটি আলাদা ইন্সটেন্সে ভাগ হয়ে যাবে। আর এটাই আনসুপারভাইজড লার্নিং।

সিমিলারলি আরেকটা ডেটাসেটে ধরো বিভিন্ন ধরনের অবজেক্টের ছবি যেমন বিল্ডিং, কোনো ধরনের প্রাণী অথবা কোনো প্রাকৃতিক দৃশ্যের ছবি ইত্যাদি আছে ডেটা হিসেবে। এখন কে-মিনস ক্লাস্টারিং (একটি আনসুপারভাইজড লার্নিং মডেল, যা পরবর্তীতে আলোচনা করা হবে) এর মতো আনসুপারভাইজড অ্যালগরিদম প্রতিটি ছবির ফিচারগুলোকে(কালার, শেপ, টেক্সচার ইত্যাদি) রিড করার মাধ্যমে আলাদা আলাদা গ্রুপে ভাগ করে ফেলে। যেমন সব বিল্ডিং এর ছবি এক গ্রুপে বা সব পাখির ছবি এক গ্রুপে। এটিই আনসুপারভাইজড মেশিন লার্নিং এর কাজ করার ওয়ে।

project photo

সুপারভাউজড এবং আনসুপারভাইজড মেশিন লার্নিং কি বা তাদের কাজ করার ধরন কেমন তার একটা ধারনা তোমরা মোটামুটি ভালোভাবেই পেয়েছ। এবার আমাদের সাথে দেখা হবে রিইনফোর্সমেন্ট লার্নিং-এর।

রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning):

এই ধরনের মেশিন লার্নিং এ আসলে যে জিনিসটা হয় সেটা হলো, লার্নিং এজেন্ট এবং এনভায়রনমেন্টের মধ্যে ইন্টারেকশনের ফলে এবং রিওয়ার্ড অথবা পেনাল্টি ভিত্তিক ফিডব্যাক নেয়ার মাধ্যমে লার্নিং প্রসেসটা সম্পন্ন হয়। হ্যাঁ বোঝতে পারছি, এক দুইটা শব্দ দেখে হয়তো তোমাদের মাথায় আকাশ ভেঙে পড়েছে। এগুলা তেমন কিছু না। লার্নিং এজেন্ট মানে বলতে গেলে মডেলই বা যে টুল বা কম্পোনেন্টের মাধ্যমে মডেল এনভায়রনমেন্ট থেকে লার্ন করে। আর এনভায়রনমেন্ট হচ্ছে এক কথায় ওই নিদিষ্ট সিচুয়েশন বা পরিবেশ যা মডেল এক্সপেরিয়েন্স করে। একটা সেল্ফ ড্রাইভিং কার এর উতকৃষ্ট উদাহরণ। এই বিষয়গুলো সামনে আরও পরিষ্কার হবে। এখন আপাদত এতটুকু জানলেই হবে।

এবার একটা উদাহরণ নিয়ে কথা বলি -

চিন্তা করো তুমি কম্পিউটার প্রোগ্রামকে পেনাল্টি শট আউট গেইম খেলা শিখাচ্ছ। এখানে প্রোগ্রামটি হচ্ছে তোমার এজেন্ট আর গেইমটা হলো তার জন্য এনভায়রনমেন্ট আর গোল করা হচ্ছে রিওয়ার্ড। চলো শিখানো যাক। এজেন্টটি বলকে গোলপোস্টের দিকে ডানে অথবা বামে শট করাকে বলবো এক একটি একশন। এই একশন পারফর্ম করার মাধ্যমে রিওয়ার্ড পাবে, যেমন যদি গোল হয় তাহলে +১ আর যদি না হয় তাহলে -১। এভাবে সময়ের সাথে সাথে অনেকগুলো একশন নেয়ার মাধ্যমে এজেন্ট ডিসিশন নেয়া শিখে যায় যে কোন স্ট্যাট্যজি ফলো করলে বেশি রিওয়ার্ড অর্জন করা যাবে।

এই ঘটনাই হলো রিইনফোর্সমেন্ট লার্নিং।

project photo

বাহ! বলতে গেলে তোমরা বেসিক ধারনাটা বেশ ভালোভাবেই কোভার করে ফেলেছ। পরবর্তী পার্টগুলোতে আমরা আরও গভীরে ডুব দিবো। আর হ্যাঁ! আমরা অবশ্যই রিয়েল লাইফ ইম্পলিমেন্টেশন প্রসেসের মধ্য দিয়ে যাবো। সো চিল!