মেশিন লার্নিং, এই টার্মটা খুবই জনপ্রিয়। অনেকেই এটার অর্থ কি সেটা জানে। অনেকে জানে না, কিন্ত নাম শুনেছে। আমি অনেককে দেখেছি মনে করে এটা বোধহয় যন্ত্রপাতি কিভাবে কাজ করে এটা জানার জন্য কোন কোর্স। আবার অনেকে মনে করে এটা বোধহয় এসেম্বলি ল্যাঙ্গুয়েজ এর সাথে সম্পৃক্ত কোন কিছু।
খুব সহজ করে যদি বলতে যাই কিংবা খুঁজতে যাই, তাহলে কিন্তু আমরা নামের মধ্যেই অর্থ পেয়ে যেতে পারি। মেশিন লার্নিং হচ্ছে কোন মেশিনকে লার্ন করানো, শেখানো। এখন প্রশ্ন হচ্ছে কি শেখাবো? আর মেশিন বলতেই বা কি বোঝানো হচ্ছে?
উত্তর হলো, এখানে মেশিন হচ্ছে মূলত কম্পিউটার, আর মেশিনকে আমরা শিখাবো কিভাবে আসলে কিভাবে নিজে নিজে চিন্তা করতে হয়।
সাধারণত আমরা যখন কম্পিউটার নিয়ে কোন কাজ করি, সেটা মুভি দেখা হোক, গান শোনা হোক, গেম খেলা হোক, প্রতিটা জিনিস কিন্তু আমাদের কম্পিউটারকে বলে দিতে হয়, তাইনা? আমরা যখন কোন মুভি ফাইলের উপরে ডাবল ক্লিক করি, তার মানে আমরা আসলে চাই কম্পিউটার যেন ওই মুভিটা আমাদের জন্য চালিয়ে দেয়। কম্পিউটার কিন্তু কখনই নিজে থেকে বুঝে নিবে না যে তুমি এখন মুভি দেখার মুডে আছো, তাই সে কখনই অটোমেটিক মুভি চালিয়ে দিবে না। তোমাকে নিজে বসে মুভি ফাইলে ক্লিক করে কম্পিউটারকে বলে দিতে হবে যে মুভিটি চালিয়ে দাও।
আমাদের কম্পিউটারে করা অন্যান্য কাজগুলোও কিন্ত একইভাবে ঘটে যদি আমরা একটু চিন্তা করে দেখি।
এখন, ব্যাপারটা কিরকম হবে যদি তুমি শুধু কম্পিউটারের সামনে বসে কম্পিউটারটি চালু করো, এবং সেই কম্পিউটার নিজে নিজে কতগুলো কাজ করে ফেলে –
- সে ওয়েবক্যাম দিয়ে তোমার চেহারার বেশ কিছু ছবি নেয়
- সেই ছবি এনালাইসিস করে (আমরা এটাকে বলবো Image Processing) সে নিজেই নিজে বুঝে নিবে তোমার মন-মেজাজ এখন কিরকম
- তোমার মন-মেজাজের উপরে ভিত্তি করে সে নিজে নিজেই কোন মুভি/গান চালিয়ে দিবে। তোমার মেজাজ খারাপ থাকলে কোন রোমান্টিক মুভি চালাবে, যদি মেজাজ ভালো থাকে তাহলে হয়তো তোমাকে Fast and Furious 8 বা অন্য কোন একশন মুভি চালিয়ে দিতে পারে।
একটু চিন্তা করো তো, কেমন হবে এই ব্যাপারটা? যদি ধরতে পেরে থাকো আসলে কি ঘটলো এখানে, তাহলে তুমি মেশিন লার্নিং এর মূল ভাবনাটা ধরতে পেরেছো অনেকখানিই। আমাদের মেশিন লার্নিং এর মাধ্যমে টার্গেট এটাই থাকে যেন আমরা কম্পিউটারকে একটু নিজে নিজে চিন্তা করতে শেখাতে পারি। যদি আমরা সাধারণভাবে চিন্তা করে দেখি, কম্পিউটার আসলে খুবই বলদ টাইপের একটা যন্ত্র। ওর কিন্তু নিজে নিজে কিছুই করার ক্ষমতা নেই। ওর ক্ষমতা একটাই, ওকে যদি কিছু বলে দেয়া হয় সেই সেটা খুব সূচারূভাবে অনেকক্ষণ ধরে একটা কোনরকম ভুল ছাড়া করে যেতে পারবে। এখন ওর এই গুণটার সাথে যদি কিছু চিন্তাভাবনা করার ক্ষমতা জুড়ে দেয়া যায় তাহলে চিন্তা করতে পারো সেটা আমাদের জন্য কতখানি লাভজনক হবে?
এখন আমাদের এই ভয়াবহ রকমের গাধা টাইপ যন্ত্র কম্পিউটারকে যদি চিন্তা-ভাবনা করায় একটু হাতেক্ষড়ি দিতে হয়, তাহলে অবশ্যই আমাদের মেশিন লার্নিং এর আশ্রয় নিতে হবে। মেশিন লার্নিং এর কিছু এলগোরিদম আছে, যেগুলো কম্পিউটারকে ভালো মত শিখিয়ে-পড়িয়ে নিলে সে একদম মুনি-ঋষিদের মত ভবিষ্যত বলে দিতে পারবে। বিভিন্ন জিনিসপাতিকে একটা থেকে আরেকটা আলাদা করতে পারবে।
কম্পিউটারকে শেখানোর দুটি খুব জনপ্রিয় পদ্ধতি আছে মেশিন লার্নিং-এঃ
- Supervised Learning
- Unsupervised Learning
আরেকটি আছে Reinforcement Learning, সেটায় আমরা পরে যাবো।
Supervised/Unsupervised Learning কি জিনিস? এটা যদি বুঝতে যাই, আবারো দেখবো নামের ভেতরেই অর্থ লুকিয়ে আছে। তোমাকে কেউ কোন কিছুতে Supervise করা মানে কি, তোমাকে কিভাবে কাজ করতে হবে, সেটা প্রথমে তোমাকে শিখিয়ে পড়িয়ে নিবে, ট্রেনিং এর মত দিবে, এর পর তুমি নিজে নিজেই কাজ করতে পারবে। এটাই সুপারভাইজড লার্নিং। আর Unsupervised কি হবে তাহলে? তুমি নিজে নিজে সব কিছু আশে পাশে দেখে টক্কর খেতে খেতে শিখে নিবে, কেউ হাতে ধরে শিখিয়ে-পরিয়ে দিবে না। মোটামুটি সোজাভাবে বলতে গেলে এই হলো কথা।
আমরা মোটামুটি এই কোর্সে চেষ্টা করবো কিছু মেশিন লার্নিং এলগোরিদম দেখতে। আমরা খুব বেশী ম্যাথম্যাটিকাল ব্যাপার-স্যাপার কিংবা থিওরি তে যাবো না। আমাদের টার্গেট হবে প্রতিটা এলগোরিদমের বেসিক কনসেপ্টটুকু বুঝে নিয়ে এর পর এটা রিয়েল লাইফে / প্রোজেক্টে কোথায় এবং কিভাবে এপ্লাই করতে হয় সেটা শেখার।
কি কি এলগোরিদম প্রাথমিকভাবে দেখার চেষ্টা করবো সেটার জন্য এই চার্টটা দেখা যেতে পারে –
আমরা কোড-টোড করার জন্য মূলত ব্যবহার করবো পাইথন। তাই যাদের পাইথনে দুর্বলতা আছে, কিংবা একেবারেই জানা নেই, তারা মোটামুটি পাইথনের বেসিক Syntax গুলো একটু দেখে নিতে পারো ইন্টারনেটের বিভিন্ন রিসোর্স থেকে। আমরা কোড করার জন্য IPython Notebook ব্যবহার করবো, তাই যারা এটার সাথে পরিচিত না, একটু ঘাটাঘাটি করে নিতে পারো। এর পরের পোস্টে খুব ছোট একটা প্রাথমিক টিউটোরিয়াল দিবো যে কিভাবে আসলে Ipython Notebook ইন্সটল করে পাইথন এর কাজ করা যায়।
কেউ চাইলে পাইথন ডাউনলোড করে নিতে পারো এই লিংক থেকে – https://www.continuum.io/downloads
সেই সাথে আমরা পাইথনে মেশিন লার্নিং এর জন্য SciKit-Learn নামে একটা লাইব্রেরী ব্যবহার করবো। কেউ চাইলে ঢু মেরে আসতে পারো এই লিঙ্কে – http://scikit-learn.org/stable/
পরিশেষে, আমি নিজেও মেশিন লার্নিং খুব আহামরি পারি না। শিখছি এখনও। যতটুকু যা শিখবো, সেটাই চেষ্টা করবো সবার কাছে এখানে উপস্থাপন করার। অনেক দিন ধরেই ইচ্ছে ছিলো বাংলায় মেশিন লার্নিং নিয়ে কিছু কাজ করবো যাতে এই প্রায় দুর্বোধ্য কিন্ত খুবই প্রয়োজনীয় কনসেপ্টগুলো আমাদের ছাত্র-ছাত্রীরা সহজে বুঝে শিখে এপ্লাই করতে পারে।
কন্টেন্ট ডেভেলপমেন্টের জন্য যে কোন প্রকার সাজেশন/মতামত/সাহায্য সাদরে আমন্ত্রিত।
কারও কোন প্রশ্ন থাকলে কমেন্টে করতে পারো। চেষ্টা করবো উত্তর দেয়ার। কিংবা আমাকে মেইল করতে পারো – nafisneehal@iut-dhaka.edu
পরবর্তী পোস্টের লিঙ্ক – মেশিন লার্নিং এ হাতে খড়ি – পর্ব ২ (পূর্ব প্রস্তুতি)
copy.
0 comments:
Post a Comment