কেন বইটা লিখতে চাইলাম?

Everything should be made as simple as possible, but not simpler.

-- Einstein

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

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

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

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

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

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

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

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

তাহলে কি কথা রইলো?

ঠিক ধরেছেন। মেশিন লার্নিংকে ঠিকমতো ব্যবহার করতে শেখা।