মেশিন লার্নিং এর শুরুতে কি প্রোগ্রামিং/স্ট্যাটিসটিক্স/ম্যাথ জানতেই হবে?

সবকিছুর পেছনের দর্শনটা জানলে অনেককিছুই বোঝা সহজ হয়।

ছোট উত্তর, না। তবে, রাস্তায় না নামলে রাস্তা চিনবেন কিভাবে? আমার ফিলোসফি হচ্ছে, রাস্তায় নামুন, পথ না হারালে বুঝবেন কিভাবে ঠিক রাস্তায় আছি আমরা?

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

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

প্রথাগত প্রোগ্রামিংয়ে কি হয়? ধরুন, একটা প্রসেসকে অটোমেট করতে প্রোগ্রামিং করছেন আপনি। একটা রোবটকে বলছেন পয়েন্ট ‘ক’ থেকে পয়েন্ট ‘খ’তে যাবার জন্য। এর অর্থ হচ্ছে আপনাকে তার পুরো রাস্তার জিনিসটাকে বলে দিতে হবে পই পই করে। সামনের ৯০ ডিগ্রী ধরে ১০ কদম, এরপর ডানে ২০ কদম, এরপর ১৭০ ডিগ্রী ধরে ১৫ কদম গেলেই পৌঁছে যাবে পয়েন্ট ‘খ’তে। এর মাঝখানে কোথাও বাধা পেলে একটা এক্সিট কোড দিয়ে দাড়িয়ে যাবে। এখন পয়েন্ট ‘গ’তে যেতে বললে তার আগের ইন্সট্রাকশন ভ্যালিড থাকছে না।

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

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

আচ্ছা, প্রোগ্রামিং ছাড়া বোঝা যাবে তো? অবশ্যই বোঝা যাবে। অনেকে কি বলছে সেটা নিয়ে মাথা ঘামানোর দরকার নেই এ মুহুর্তে। আমি বলছি, না - একদম শুরুতে প্রোগ্রামিং দরকার নেই। দরকার মাইক্রোসফট এক্সেলের মতো একটা টুল। যেমন ‘আর’ প্যাকেজ। শিখতে ১ দিন লাগে। এটা নিয়ে একটা আলাদা পোস্ট লিখেছি আমি।

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

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

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

আমার কথাই ধরুন। শুরুতে মেশিন লার্নিং – আস্তে আস্তে নিউরাল নেটওয়ার্ক চালাতে শিখেছি। আস্তে আস্তে যখন সেই নেটওয়ার্ককে একটু ‘কাস্টমাইজেশন’ করছিলাম, তখন ভেতরে ঢুকছিলাম নিজের জানার জন্য। অনেক হাইপার-প্যারামিটার চালাতে গিয়ে অনেক অংক জেনে রাখলে মন শান্ত থাকে। যেমন, উদাহরণ হিসেবে বলা যায় - ২য় ডিগ্রী পলিনোমিয়াল। একটা ফিচার X হলে আরেকটা X এর বর্গ হবে। এর অর্থ হচ্ছে এর ভেতরের অংকটা জানার জন্য চলে গেলাম খান একাডেমিতে। পড়লাম। বুঝলাম। মন শান্ত হলো। এখন বলবেন - সেটাতো বুঝলাম, হাতেকলমে দেখতে হবে না? আর সেকারণে এতো গল্প।

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

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

আরেকটা জিনিস।

‘স্টার্টিং ইজ হাফ দ্য ব্যাটেল’।

শুরু করছেন কখন? শেখার জন্য ‘পারফেক্ট’ দিন আসবে না কখনোই! শুরু করতে হবে আজই।

এবং শুরুটা কোথায়?

চোখ রাখুন এখানে

বাংলায় ডিপ লার্নিংয়ের একমাত্র বই

ডিপ লার্নিং এর বাংলা বই

পাইথন প্রোগ্রামিং পাইথন ডিপ লার্নিং ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং

পাবেন এখানে