এই বই কী নিয়ে

What this book is about

Neural network এখন পর্যন্ত উদ্ভাবিত সবচেয়ে সুন্দর programming paradigm-এর একটি। প্রচলিত programming পদ্ধতিতে আমরা computer-কে বলে দিই কী করতে হবে — বড় সমস্যাকে অনেকগুলো ছোট, নিখুঁতভাবে সংজ্ঞায়িত কাজে ভেঙে দিই, যা computer সহজেই করতে পারে। বিপরীতে, একটা neural network-এ আমরা computer-কে বলি না কীভাবে সমস্যাটা সমাধান করতে হবে। বরং সে observational data থেকে শিখে নেয়, হাতে থাকা সমস্যার নিজস্ব সমাধান নিজেই খুঁজে বের করে।

Data থেকে স্বয়ংক্রিয়ভাবে শেখা শুনতে আশাব্যঞ্জক। তবে ২০০৬ সালের আগ পর্যন্ত কয়েকটি বিশেষ সমস্যা ছাড়া, প্রচলিত পদ্ধতিকে ছাড়িয়ে যেতে পারে এমনভাবে neural network train করার উপায় আমরা জানতাম না। ২০০৬ সালে যা বদলে গেল তা হলো — তথাকথিত deep neural network-এ শেখার কৌশল আবিষ্কার। এই কৌশলগুলোই এখন deep learning নামে পরিচিত। এরা আরও বিকশিত হয়েছে, এবং আজ deep neural network ও deep learning computer vision, speech recognition ও natural language processing-এর অনেক গুরুত্বপূর্ণ সমস্যায় অসাধারণ কর্মক্ষমতা অর্জন করেছে। Google, Microsoft, Facebook-এর মতো প্রতিষ্ঠান এগুলো বড় পরিসরে ব্যবহার করছে।

এই বইয়ের উদ্দেশ্য হলো তোমাকে neural network-এর মূল ধারণাগুলো — deep learning-এর আধুনিক কৌশল সহ — আয়ত্ত করতে সাহায্য করা। বইটি শেষ করার পর তুমি এমন code লিখে ফেলবে যা neural network ও deep learning ব্যবহার করে জটিল pattern recognition সমস্যা সমাধান করে। আর নিজের ভাবা সমস্যায় neural network ও deep learning প্রয়োগ করার একটা ভিত্তিও তোমার তৈরি হবে।

নীতি-কেন্দ্রিক approach

এই বইয়ের পেছনের একটা দৃঢ় বিশ্বাস হলো — অনেক ধারণার একটা লম্বা তালিকা সম্পর্কে ঝাপসা ধারণা পাওয়ার চেয়ে neural network ও deep learning-এর মূল নীতিগুলোর একটা শক্ত বোঝাপড়া অর্জন করা ভালো। মূল ধারণাগুলো ভালোভাবে বুঝে ফেললে নতুন material দ্রুত বুঝে নিতে পারবে। Programming-এর ভাষায় ভাবো — এটা যেন একটা নতুন language-এর মূল syntax, library ও data structure আয়ত্ত করা। তখনও তুমি হয়তো পুরো language-এর সামান্য অংশই "জানো" — অনেক language-এর বিশাল standard library থাকে — কিন্তু নতুন library ও data structure দ্রুত ও সহজে বুঝে নিতে পারবে।

এর মানে এই বই জোর দিয়েই কোনো নির্দিষ্ট neural network library ব্যবহারের tutorial নয়। তুমি যদি মূলত একটা library-র খুঁটিনাটি শিখতে চাও, তাহলে এই বই পোড়ো না! যে library শিখতে চাও সেটা খুঁজে নাও, আর তার tutorial ও documentation ধরে এগোও। তবে সাবধান। এতে তাৎক্ষণিক সমস্যা-সমাধানের সুবিধা থাকলেও, neural network-এ আসলে কী ঘটছে তা যদি বুঝতে চাও, বহু বছর পরেও প্রাসঙ্গিক থাকবে এমন অন্তর্দৃষ্টি যদি চাও, তবে কোনো জনপ্রিয় library শেখাই যথেষ্ট নয়। Neural network কীভাবে কাজ করে তার পেছনের টেকসই, দীর্ঘস্থায়ী অন্তর্দৃষ্টি তোমাকে বুঝতে হবে। প্রযুক্তি আসে, প্রযুক্তি যায়, কিন্তু অন্তর্দৃষ্টি চিরন্তন।

হাতে-কলমে approach

একটা সুনির্দিষ্ট সমস্যায় আঘাত করে আমরা neural network ও deep learning-এর মূল নীতিগুলো শিখব: computer-কে হাতে লেখা সংখ্যা চেনানোর সমস্যা। প্রচলিত programming পদ্ধতিতে এই সমস্যা সমাধান করা অত্যন্ত কঠিন। অথচ, যেমন দেখব, এটা একটা সরল neural network দিয়ে বেশ ভালোভাবেই সমাধান করা যায় — মাত্র কয়েক দশ লাইন code আর কোনো বিশেষ library ছাড়াই। তাছাড়া আমরা program-টিকে বহু iteration ধরে উন্নত করব, ক্রমশ neural network ও deep learning-এর আরও আরও মূল ধারণা এতে যুক্ত করব।

এই হাতে-কলমে approach-এর মানে হলো বইটি পড়তে তোমার কিছু programming অভিজ্ঞতা লাগবে। তবে পেশাদার programmer হতে হবে না। আমি code লিখেছি Python (version 2.7)-এ, যা তুমি Python-এ program না করলেও সামান্য চেষ্টায় বুঝে নিতে পারবে। বই জুড়ে আমরা একটা ছোট neural network library গড়ে তুলব, যা দিয়ে তুমি পরীক্ষা-নিরীক্ষা করতে ও বোঝাপড়া গড়তে পারবে। সব code download-এর জন্য পাওয়া যাবে।

একই প্রসঙ্গে, বইটি পড়ার গাণিতিক চাহিদাও মাঝারি। বেশিরভাগ অধ্যায়ে কিছু গণিত আছে, তবে সাধারণত তা প্রাথমিক algebra ও function-এর plot, যা বেশিরভাগ পাঠকের জন্যই ঠিক থাকবে বলে আশা করি। মাঝে মাঝে আমি আরও উন্নত গণিত ব্যবহার করি, তবে material এমনভাবে সাজিয়েছি যাতে কিছু গাণিতিক খুঁটিনাটি এড়িয়ে গেলেও তুমি অনুসরণ করতে পারো। যে অধ্যায়ে ভারী গণিত বেশি ব্যবহৃত হয়েছে তা হলো Chapter 2, যেখানে সামান্য multivariable calculus ও linear algebra লাগে। এগুলো পরিচিত না হলে, Chapter 2-এর শুরুতেই আমি গণিতটা কীভাবে সামলাতে হবে তা নিয়ে আলোচনা করেছি। সত্যিই খুব কঠিন মনে হলে, তুমি সরাসরি অধ্যায়ের মূল ফলাফলের সারাংশে চলে যেতে পারো। যাই হোক, শুরুতেই এ নিয়ে দুশ্চিন্তার কিছু নেই।

একটা বই একসাথে নীতি-কেন্দ্রিক ও হাতে-কলমে — দুটোই হতে চায়, এমন বিরল। কিন্তু আমার বিশ্বাস, neural network-এর মৌলিক ধারণাগুলো গড়ে তুললেই তুমি সবচেয়ে ভালো শিখবে। আমরা শুধু বিমূর্ত তত্ত্ব নয়, জীবন্ত code গড়ে তুলব — এমন code যা তুমি ঘেঁটে দেখতে ও সম্প্রসারণ করতে পারবে। এভাবে তুমি তত্ত্ব ও বাস্তব — উভয় দিক থেকেই মৌলিক বিষয়গুলো বুঝবে, এবং নিজের জ্ঞান আরও বাড়ানোর জন্য প্রস্তুত থাকবে।