মেশিন লার্নিং এ হাতেখড়ি

মেশিন লার্নিং আর্টিফিসিয়াল ইন্টেলিজেন্স এর নতুন শাখা। এর আগে পর্যন্ত ‘কোন কিছু শেখা’ ছিল মানুষের বা প্রানীদের ইউনিক বৈশিষ্ট্য। শুধুমাত্র আমরাই দেখে বা পড়ে কোন কিছু শিখতে পারতাম। মেশিন লার্নিং টেকনলজির ফলে যন্ত্রও এখন এই গুনাবলির অধিকারী হতে পারে,কোন কিছু নিজে নিজে শিখতে পারে!

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

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

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

ক্লাসিফিকেশন এ এ্যালগরিদম গুলো কোন বৈশিষ্ট্য বা ধরন বা ডিকক্রিট ভ্যালু(০/১/২/৩) প্রিডিকশন করতে শেখায় অন্যদিকে রিগ্রেশন এ্যালগরিদম গুলো কোন ভ্যালু বা কন্টিনিউয়াস মান প্রিডিকশন করতে শেখায়।
আন সুপারভাইসড লার্নিং এ্যালগরিদম গুলোকে মূলত ক্লাস্টারিং এ্যালগরিদম বলে।এগুলো কোন নন লেবেলড ডাটাকে ক্লাস্টারিং করতে ব্যবহৃত হয়।

ক্লাসিফিকেশন এর কিছু কমন এ্যালগরিদম হল – এসভিএম (SVM),এ্যাভারেজড পারসেপশন , লজিস্টিক রিগ্রেশন , বায়াস পয়েন্ট মেশিন , ডিসিশন ফরেস্ট, বুস্টেড ডিসিশন ট্রি, ডিসিশন জংগল,লোকালি ডিপ এসভিএম, নিউরাল নেটওয়ার্ক ক্লাসিফিকেশন।
রিগ্রেশন এর কিছু কমন এ্যালগরিদম – লিনিয়ার রিগ্রেশন,অর্ডিনাল রিগ্রেশন , পয়সন রিগ্রেশন , ফাস্ট ফরেস্ট কোয়ান্টাইল রিগ্রেশন, বায়েসিয়ান লিনিয়ার রিগ্রেশন, নিউরাল নেটওয়ার্ক রিগ্রেশন,ডিসিশন ফরেস্ট রিগ্রেশন, বুস্টেড ডিসিশন ট্রি রিগ্রেশন।
ক্লাস্টারিং এ পরিচিত এ্যালগরিদম হল- কে মিনস ক্লাস্টারিং।

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

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