কৃত্রিম বুদ্ধিমত্তার সহজপাঠ : মেশিন লার্নিং পরিচিতি : পর্ব:-১

আগের পর্বে  (কৃত্রিম বুদ্ধিমত্তার সহজপাঠ : মেশিন লার্নিং পরিচিতি : পর্ব:-০) আমরা মেশিন লার্নিং এর সুপারভাইজড লার্নিং এবং আনসুপারভাইজড লার্নিং নিয়ে জেনেছিলাম। আমরা কিছু উদাহরণ এবং গল্পের মাধ্যমে জেনেছিলাম কিভাবে মেশিন শিখতে পারে।


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


১৯৫৯ সালে মেশিন লার্নিং এর সংগা দিতে গিয়ে Arthur Samuel বলেন,

Field of study that gives computers the ability to learn without being explicitely programmed.

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

আমি বলেছিলাম এই কাজটি কিন্তু মি. ক হাজার হাজার লাইন কোড লিখেও করতে পারতো। কিন্তু সমস্যা হচ্ছে সে আগে থেকে যা যা বলে দিতো কম্পিউটার শুধু সেইটুকুই করতো দিনশেষে তার কম্পিউটার কিন্তু কিছুই শিখতে পারতো না।

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

টমমাইকেল বলেছিলেন-

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

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

আপনার বাচ্চা ভূল করে ছোটটিকে বিড়াল এবং বড়টিকে কুকুর বললো। এরপর আপনি তাকে বললেন তুমি ভূল চিহ্নিত করেছো আসলে বড়টি বিড়াল এবং ছোটটি কুকুর। এরপর সে এদের দুইজনের Unique ( অনন্য) ফিচার গুলোর দিকে লক্ষ করবে এবং বুঝতে চেষ্টা করবে।

এর পর ধরুন একরকম একটা ছবি দিলেন

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

এবার বাচ্চাটির জায়গায় মেশিনকে চিন্তা করুন। ধরুন মেশিন বা কম্পিউটার ১০০০ বার বিড়াল সনাক্ত করতে বলা হলো । এখানে

E = ১০০০ বার বিড়াল শনাক্ত করার কাজ করলো এটাই তার Experience

T = সনাক্তকরণই তার Task

P = কতবার সে সঠিকভাবে বিড়াল শনাক্ত করলো সেটাই তার Performance

এখন কম্পিউটার বা মেশিনের যদি Experience বাড়ার সাথে তার বিড়াল সনাক্তকরণ এর হার বেড়ে যায় তাহলেই আমরা বলতে পারবো আসলেই আমাদের মেশিন শিখতে পেরেছে।

মানে একটি কম্পিউটার প্রোগ্রাম যদি বার বার একটি কাজ করতে করতে যদি তার পারফরমেন্স এর উন্নতি ঘটায় তাহলে আমরা বলতে পারবো প্রোগ্রামটি সত্যিকার অর্থেই তার অভিজ্ঞতা থেকে শিখেছে।আর এই কাজটি  explicitely program দিয়ে করা অসম্ভব।

সুপারভাইজড লার্নিং দুই প্রকার

  1. ক্লাসিফিকেশন এপ্রোচ (Classification Approach)
  2. রিগ্রেশন এপ্রোচ ( Regression Approach)

Classification 

ক্লাসিফিকেশন এর ধারণা এর নাম থেকেই পাওয়া যায়। মানে আমরা বিভিন্ন ক্যাটাগরি তে ভাগ করে কম্পিউটারকে শিখাবো। 

কম্পিউটার এর বিড়াল সনাক্তকরণ ছিলো মূলত ক্লাসিফিকেশন। সে মূলত দুটি ক্যাটাগরিতে ডেটা সেটকে ভাগ করবে।  এক ছবিটি বিড়ালের এবং দুই ছবিটি বিড়ালের নয়।

আপনার কম্পিউটার  মেইল স্পাম কিনা সেটা বের করার জন্যেও কিন্তু এই ক্লাসিফিকেশন এপ্রোচ ব্যবহার করে। এভাবে ডেটাকে দুটি ভাগে ভাগ করার ফলে যে চলক বা Variable এর সৃষ্টি হবে আমরা তাকে বলবো Dummy Variable বা Binary Variable। এটিই হবে আমাদের অউটপুট। মানে আমাদের আউটপুটটি হবে বিচ্ছিন্ন চলক বা Discreet Variable বা এটি সবসময় পূর্ণসংখ্যা গ্রহণ করবে কোন দশমিক মান গ্রহণ করবে না।

মনে করুন আপনি Pineapples দেওয়া আছে এমন Pizza  অনেক পছন্দ করেন। এখন আপনি জানতে চান আপনার এলাকার কোন বয়সের মানুষ আসলে  Pineapples দেওয়া আছে এমন Pizza পছন্দ করেন। আপনি ডেটা কালেক্ট করলেন।

যারা  Pineapples দেওয়া আছে এমন Pizza পছন্দ করেন ১ দিয়ে চিহ্নিত করলেন এবং যারা করেন না তাদের ক্ষেত্রে ০ দিয়ে চিহ্নিত করলেন। এই যে ১ এবং ০ দিয়ে যে চলক বা variabe তৈরী করলেন এটাই একটা Dummy variable বা Binary variable হিসেবে কাজ করবে।

Dummy variable একটি Statistical Concept ( Machine Learning এর পরিসংখ্যান এর ব্যবহার নিয়ে একটি আলাদা পর্ব করবো সেখানে Dummy Variable নিয়ে বিস্তারিত বলবো)মনে করুন আপনার ডেটা অনেকটা এরকম

ডেটা থেকে দেখা যাচ্ছে যাদের বয়স একটু বেশি গড়ে তারাই Pineapples দেওয়া আছে এমন Pizza পছন্দ করেন না। এবার মনে করুন একজনের বয়স ২২ বছর তাহলে কি তিনি Pineapples দেওয়া আছে এমন Pizza পছন্দ করবেন কি না।

এটা যদি আপনাকে জিজ্ঞেস করা হয় তাহলে আপনি অবশ্যই বলবেন তার পছন্দ করার সম্ভাবনাই বেশি। কম্পিউটার ঠিক একইভাবে ক্লাসিফিকেশন করে সিদ্ধান্ত নেয়।

এটাতো গেলো একটা মাত্র চলকের সাপেক্ষে সিদ্ধান্ত নেওয়া। একের অধিক চলকও থাকতে পারে।


মনে করুন আপনার কাছে একটি ডেটা আছে যেখানে টিউমারের আকার,রোগীর বয়স এবং তার সাথে বলা আছে ঐ আকারের টিউমারটি প্রাণঘাতী (Malignant) কিনা।এখন মেশিন কিভাবে ক্লাসিফিকেশন করে সিদ্ধান্ত নিবে?

ধরুন ডেটাকে আপনি Scatter Plot এ সাজিয়ে এরকম একটা ছবি পেলেন। 


এখানে আমরা একটা প্যাটার্ন দেখতে পাচ্ছি। এদেরকে আমরা একটি সরলরেখা টেনে আলাদা করতে পারি।

এই সরলরেখাটিকে আমরা বলবো Decision Boundary।  মানে এর ভিত্তিতে আমরা সিদ্ধান্ত নিবো আসলে কোন টিউমার প্রাণঘাতী (Malignant) আর কোনটি Benign বা প্রাণঘাতী  নয়।

Scatter Plot টি খেয়াল করলে দেখতে পাবেন একটি পয়েন্ট Begin কিন্তু পড়েছে Malignant এর ক্যাটাগরিতে আবার একটি পয়েন্ট Malignant কিন্তু পড়েছেন Benige ক্যাটাগরিতে-

এই সমস্যা কিভাবে সমাধান করা যায় এবং কিভাবে Accurate Decision Boundary পাওয়া যায় তা নিয়ে পরের কোন পর্বে আলোচনা করবো। 

আমরা যে পদ্ধতিতে কাজ করলাম একে বলে  Logistic Regression.( Regression নাম হলেও এই এলগোরিদম মূলত Classification এর কাজ করে)। এই এলগোরিদম কিভাবে কাজ করে সেটিও পরের কোন পর্বে আলোচনা করবো।


পরের পর্বে আমরা আলোচনা করবো সুপারভাইজড মেশিন লার্নিং  এর  Regression Approach নিয়ে।

ধন্যবাদ সবাইকে। কোন প্রশ্ন থাকলে সংকোচ না করে কমেন্টস করতে পারেন।

Comments are closed.