আপনারা অনেকেই মেশিন লার্নিং সম্পর্কে শুনে থাকবেন এবং আপনি যদি জেনে না থাকেন যে মেশিন লার্নিং কি, তাহলে এই আর্টিকেলের মাধ্যমে মেশিন লার্নিং সম্পর্কে আপনি জানতে পারবেন এটি কী এবং কীভাবে কাজ করে। সুতরাং এই নিবন্ধটি সম্পূর্ণ পড়ুন যাতে আপনি মেশিন লার্নিং সম্পর্কে ভালভাবে জানতে পারেন।
মেশিন লার্নিংয়ের এমন অনেক সুবিধা রয়েছে যা আমরা আমাদের দৈনন্দিন কাজে ব্যবহার করি। তাই আজ আমি ভাবলাম মেশিন লার্নিং কী এবং এটি কীভাবে কাজ করে সে সম্পর্কে আপনাকে তথ্য সরবরাহ করব , যা আপনার পক্ষে এটিকে আরও ভালভাবে বুঝতে সাহায্য করবে। তাহলে চলুন দেরি না করে শুরু করা যাক এবং জেনে নেওয়া যাক মেশিন লার্নিং কি?
মেশিন লার্নিং হল কম্পিউটার প্রোগ্রামিংয়ের এমন একটি কৌশল যাতে একটি কম্পিউটার প্রোগ্রাম এমনভাবে ডিজাইন করা হয় যাতে সেই প্রোগ্রামটি নিজের থেকে নতুন জিনিস শিখতে পারে এবং প্রয়োজনের সময় নিজেই সিদ্ধান্ত নিতে পারে। কম্পিউটার ক্ষেত্রের এই কৌশলটিকে মেশিন লার্নিং বলা হয়। যেহেতু মেশিন লার্নিং নিজেই মেশিন লার্নিং করে থাকে। তাই এতে যেকোন অ্যাপ্লিকেশন বা সফটওয়্যার এমনভাবে তৈরি করা হয় যে এটি তার প্রোগ্রামে কোনো ধরনের হস্তক্ষেপ ছাড়াই নতুন জিনিস শিখতে পারে এবং সময় পেলে সেই ডেটা সম্পর্কিত তথ্যের পূর্বাভাস দিতে পারে বা আউটপুট দিতে পারে। এই শিক্ষায় ডেটার পর্যবেক্ষণ থেকে শুরু হয়, উদাহরণস্বরূপ সরাসরি অভিজ্ঞতা, বা নির্দেশনা, ডেটাতে প্যাটার্নগুলি খুঁজে পেতে এবং ভবিষ্যতে আরও ভাল সিদ্ধান্ত নেওয়া সহজ করে তোলে।
Supervised machine learning
এই ধরণের অ্যালগরিদমে, মেশিনটি তার অতীতে যা শিখেছে তা নতুন ডেটাতে প্রয়োগ করে, যাতে তারা লেবেলযুক্ত উদাহরণ ব্যবহার করে যাতে তারা ভবিষ্যতের ঘটনাগুলির পূর্বাভাস দিতে পারে। একটি পরিচিত প্রশিক্ষণ ডেটাসেট বিশ্লেষণ করে, এই শেখার অ্যালগরিদম এক ধরনের অনুমানকৃত ফাংশন তৈরি করে যা সহজেই আউটপুট মান সম্পর্কে ভবিষ্যদ্বাণী করতে পারে। সিস্টেম তাদের পর্যাপ্ত প্রশিক্ষণ দেওয়ার জন্য যে কোনও নতুন ইনপুটের লক্ষ্য সরবরাহ করতে পারে। এই লার্নিং অ্যালগরিদম ফলিত আউটপুটকে সঠিক, উদ্দেশ্যপ্রণোদিত আউটপুটের সাথে তুলনা করে এবং ত্রুটি খুঁজে বের করে যাতে তারা সেই অনুযায়ী মডেলটিকে পরিবর্তন করতে পারে।
Unsupervised machine learning
মেশিন লার্নিংয়ের এই অ্যালগরিদমে, ডেটাসেট সম্পূর্ণরূপে লেবেল করা হয় না যাতে আউটপুট সম্পূর্ণরূপে নিশ্চিত না হয়। এই অ্যালগরিদমটি বড় ডেটাসেট থেকে লুকানো ডেটা বের করতে ব্যবহৃত হয়। আনসুপারভাইজড লার্নিং-এ, মেশিন নিজেই ডেটা থেকে নতুন প্যাটার্ন এবং সম্পর্ক খুঁজে পেতে থাকে। এবং তার ডেটাসেটে পরিবর্তন করতে থাকে। মেশিনটি শেখার জন্য এতে খুব কম তথ্য দেওয়া হয় এবং এটি একই ডেটা থেকে অনেক কিছু শিখতে থাকে।
Semi-supervised machine learning
এই অ্যালগরিদমটি তত্ত্বাবধান করা এবং তত্ত্বাবধানহীন শিক্ষা উভয়ের মধ্যে পড়ে। যেহেতু তারা প্রশিক্ষণের জন্য লেবেলযুক্ত এবং লেবেলবিহীন উভয় ডেটাই ব্যবহার করে – সাধারণত অল্প পরিমাণে লেবেলযুক্ত ডেটা এবং প্রচুর পরিমাণে লেবেলবিহীন ডেটা ব্যবহার করা হয়। যে সিস্টেমগুলি এই পদ্ধতিটি ব্যবহার করে তারা খুব সহজেই শেখার সঠিকতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে। সাধারণত, আধা-তত্ত্বাবধানে শিক্ষা বেছে নেওয়া হয় যখন অর্জিত লেবেলযুক্ত ডেটার জন্য দক্ষ এবং প্রাসঙ্গিক সংস্থানগুলির প্রয়োজন হয় যাতে এটি তাদের প্রশিক্ষণ দিতে পারে এবং তাদের কাছ থেকে শিখতে পারে। অন্যথায়, লেবেলবিহীন ডেটা অর্জনের জন্য অতিরিক্ত সম্পদের প্রয়োজন হয় না।
Reinforcement machine learning
এই অ্যালগরিদমগুলি বেশ আলাদা এবং আজকের উন্নত প্রযুক্তিতে এগুলি সবচেয়ে বেশি ব্যবহার করা হচ্ছে। এগুলি এমনভাবে স্বনির্ভর অ্যালগরিদম যা তাদের নিজের থেকে সম্পূর্ণ ভিন্ন সিদ্ধান্ত নিতে সক্ষম। এই জাতীয় প্রোগ্রামগুলি অনেক ভুল করে এবং তাদের ভুল এবং অভিজ্ঞতা দিয়ে তাদের প্রোগ্রামগুলিকে উন্নত করতে থাকে।
রিইনফোর্সমেন্ট লার্নিং বেশ জটিল, যা প্রয়োজনে তৈরি করা সফ্টওয়্যারকেও পরিবর্তন করতে পারে। এর একটি উদাহরণ Auto Driving car হিসাবে বিবেচনা করা যেতে পারে যা সর্বদা নতুন এলাকায় যায় এবং সর্বদা বিভিন্ন জিনিস দেখে এবং বেছে থাকে।
তাই এর ডাটাবেসও পরিবর্তন হতে থাকে। উদাহরণস্বরূপ, যদি একটি মেশিন লার্নিং ভিত্তিক গাড়ি থাকে, যা চলার সময় রাস্তায় একটি বোর্ডের সাথে মারামারি করে, তবে এটি তার অ্যালগরিদমে একটি প্রতিক্রিয়া পাঠাবে যে ড্রাইভিং করার সময় বোর্ডটিকে সংরক্ষণ করতে হবে। মানে যন্ত্র তার মধ্যে সম্পূর্ণ নতুন জিনিস শিখে এবং পরিস্থিতি অনুযায়ী তার প্রয়োগ করে।
ছবি: সনাতন প্রোগ্রামিং আর মেশিন লার্নিং এর মধ্যে পার্থক্য
কৃত্তিম বুদ্ধিমত্তার একটা ভাগ হচ্ছে মেশিন লার্নিং। এটা এমন একটা অ্যাপ্লিকেশন যা কয়েকটা জিনিস করে:
১. আপনার সিস্টেমকে একটা দক্ষতা দেয় নিজে থেকে শেখার
২. সিস্টেমের শেখাটা আসে “অভিজ্ঞতা” অর্থাৎ পুরানো ডাটা থেকে
৩. এই শেখাটা কিন্তু আলাদা করে তাকে “প্রোগ্রামিং” করে দেয়া হয়নি
একটু ঘুরপাক খেয়ে আসি অন্যভাবে। এই ‘মেশিন লার্নিং’ নিয়ে। আবারো বলছি – কি জিনিস এটা? মানুষ যাই আবিস্কার করেছে, তা করেছে প্রকৃতির সৃষ্টিকে দেখে। বাঁজপাখির ওড়া দেখে উড়ুক্কুযান, বাদুড় দেখে সাবমেরিনের ‘সোনার’ – আরো কতো কি! তবে, মানুষ মানেই অলস। ** আমার মতো কিছুটা। অন্যকে দিয়ে কাজ করাতে ওস্তাদ। তক্কে তক্কে ছিলো বটে। যন্ত্রকে দিয়ে কাজ করানো নিয়ে। মানুষ ‘ইন্সট্রাকশন’ দেয়, যন্ত্র কাজ করে। ঠিক আছে সবই। যেমন – প্রোগ্রাম লেখে মানুষ, কাজ করে বেকুব যন্ত্র। তো, প্রোগ্রাম লেখাও তো কষ্টের। কি করা যায়?
মানুষ তাকালো নিজের দিকে। আচ্ছা, নিজে শেখে কিভাবে? অবশ্যই অভিজ্ঞতা থেকে। যেমন, ছোটবেলা থেকে দেখে এসেছি নীল চোখের গুলটু মার্কা ছোট্ট প্রাণীটা আসলে বিড়াল। বাচ্চা বয়সে প্রথম প্রথম ওই বিড়াল দেখে ভয় পেলেও মা শিখিয়েছেন জিনিসটা কি। বইয়ের ছবি দেখিয়ে। শত বিড়ালের শত ধরণের আকৃতি/ছবি দেখে মাথায় ঢুকে গেছে একটা জিনিস। যে রঙেরই হোক, শুয়ে বা দাড়িয়ে থাকুক – সেটা বিড়াল। এটাই অভিজ্ঞতা অর্জন। মানুষের জন্য।
তো, অভিজ্ঞতা দেয়া যায় কিভাবে? মানে যন্ত্রকে? ঠিক বলেছেন। ডাটা দিয়ে। একটা দুটো নয়, ঘটে যাওয়া হাজারো ডাটা দিয়ে। ‘বিড়াল’ লিখুন বাংলায়। গুগল ইমেজে। ঠিক ঠিক খুঁজে নিয়ে আসবে কালো, সাদা, শোয়া, দাড়ানো, দাত ক্যালানো বিড়াল। বাংলায় লিখুন ‘কালো বিড়াল’, খুঁজে নিয়ে আসবে কালো সব নীল চোখা বিড়াল। আরে, শিখলো কিভাবে? শিখিয়েছে মানুষ, যেভাবে শেখে নিজে। হাজারো বিড়ালের ‘ক্যারিক্যাচার’ ছবি দেখিয়ে যন্ত্রকে বলা হয়েছে এটাই বিড়াল। শিখবে না মানে? ওর বাপ শিখবে। এটাই ‘ট্রেনিং’ ডাটা। যন্ত্রের জন্য। আরো পোক্ত করতে দেখানো হলো দেশী বিদেশী বিড়ালের ছবি। মিলিয়নে মিলিয়নে। ভুল হবার নয় আর। দেখলেই হলো খাটের নিচের অন্ধকারে থাকা বিড়ালের চোখ? বলে দেবে ঠিক ঠিক।