Chapter 1 of 18
The memory problem that gave birth to LSTM
কল্পনা করুন, আপনি একটি রহস্য উপন্যাস (mystery novel) পড়ছেন, কিন্তু আপনার মেমরি বা স্মৃতিশক্তি এতটাই দুর্বল যে একটি শব্দ পড়ার সাথে সাথেই তার আগের পাতাগুলোর সব কথা ভুলে যাচ্ছেন। শেষ চ্যাপ্টারে পৌঁছানোর পর আপনার পক্ষে কি কোনোভাবেই বোঝা সম্ভব হবে যে গোয়েন্দা কাকে সন্দেহ করছিল, কী কী ক্লু পাওয়া গেছে, অথবা উপন্যাসটি আসলে কার গল্প ছিল? টেকনিক্যালি হয়তো আপনি প্রতিটি শব্দ আলাদা আলাদা করে "পড়ছেন", কিন্তু বাস্তবে আপনি কিছুই বুঝতে পারছেন না।
ঠিক এই সমস্যাটিই শুরুর দিকের Neural Network-গুলোর ক্ষেত্রে হতো যখন তাদের এমন কোনো ডেটা দেওয়া হতো যা সময়ের সাথে সাথে পরিবর্তিত হয় — যেমন কোনো বাক্য (sentences), গান বা মিউজিক (music), শেয়ার বাজারের দর (stock prices), সেন্সর রিডিং, ডিএনএ সিকোয়েন্স (DNA sequences) কিংবা ভিডিও। যে নেটওয়ার্ক প্রতিবার কেবল একটি শব্দ বা ভিডিওর একটি ফ্রেম প্রসেস করে, তার এমন একটা ব্যবস্থার প্রয়োজন যা আগের তথ্যগুলোকে সামনে বয়ে নিয়ে যেতে পারে। সহজ কথায়, তার একটি মেমরি বা স্মৃতির প্রয়োজন। আর Long Short-Term Memory বা সংক্ষেপে LSTM হলো মূলত Neural Network-এর জন্য অত্যন্ত চমৎকারভাবে ডিজাইন করা একটি মেমরি সিস্টেম (memory system)।
একটি দীর্ঘ কথোপকথন শোনার সময় আপনার নিজের মেমরি কীভাবে কাজ করে তা একটু ভাবুন। আপনি কিন্তু সামনের মানুষের বলা প্রতিটি শব্দ হুবহু মুখস্থ রাখেন না। বরং আপনি আপনার মাথায় একটি সংক্ষিপ্ত সারসংক্ষেপ (compressed summary) ধরে রাখেন — যেমন: "আমরা একটা ট্যুর দেওয়ার প্ল্যান করছি, বাজেট একটু টাইট, সাম ফ্লাই করতে চায়, আর অ্যালেক্স চায় ড্রাইভ করতে"। এরপর নতুন কোনো তথ্য আসলে আপনি সেই সামারি বা সংক্ষেপটিকে আপডেট করে নেন এবং যে তথ্যগুলোর আর কোনো গুরুত্ব নেই (যেমন দশ মিনিট আগে বলা কোনো জোক বা কৌতুক) সেগুলোকে আলতো করে মাথা থেকে ঝেড়ে ফেলেন।
এটি একটি রানিং সামারি ধরে রাখে যাকে আমরা বলি সেল স্টেট (cell state) এবং এটি সম্পূর্ণ নিজের অভিজ্ঞতার (data) ওপর ভিত্তি করে শিখে নেয় যে ঠিক কোন তথ্যটি ধরে রাখতে হবে, কোনটি ফেলে দিতে হবে এবং প্রতিটি মুহূর্তে আউটপুট হিসেবে ঠিক কী প্রকাশ করতে হবে। এই বেছে বেছে তথ্য আপডেট করার দক্ষতাই LSTM-কে তার আগের সব সিকোয়েন্সিয়াল মডেল (sequential models) থেকে আলাদা করে তোলে।
LSTM-এর কার্যকারিতা ভালোভাবে বুঝতে হলে আপনাকে প্রথমে সেই দুটি সমস্যা সম্পর্কে জানতে হবে যা দূর করতে এর জন্ম হয়েছিল:
ফিডফরোয়ার্ড নেটওয়ার্ক (Feedforward networks) — কোনো মেমরিই নেই
এরা একটি নির্দিষ্ট সাইজের ইনপুট নেয় এবং একটি আউটপুট তৈরি করে। এদেরকে একটি বাক্য দিলে এরা বুঝতেই পারে না যে ৫ নম্বর শব্দটি ৪ নম্বর শব্দটির পরে এসেছে। প্রতিটি উদাহরণ বা ডেটা এরা সম্পূর্ণ স্বাধীনভাবে বা বিচ্ছিন্নভাবে প্রসেস করে।
সাধারণ আরএনএন (Simple RNNs) — মেমরি যা খুব দ্রুত ফিকে হয়ে যায়
এরা এক টাইম স্টেপ (time step) থেকে পরের টাইম স্টেপে একটি হিডেন স্টেট (hidden state) পাঠায়, যা দেখতে চমৎকার মনে হয়। কিন্তু বাস্তবে মাত্র কয়েকটা স্টেপ পরেই এদের মেমরি পুরোপুরি ধুয়ে-মুছে সাফ হয়ে যায় — যাকে বলা হয় ভ্যানিশিং গ্রেডিয়েন্ট (vanishing gradient) সমস্যা। চ্যাপ্টার ৫-এ আমরা এর গাণিতিক কারণটি বিস্তারিত দেখব।
এলএসটিএম (LSTM) — দীর্ঘস্থায়ী মেমরি যা টিকে থাকে
১৯৯৭ সালে Hochreiter এবং Schmidhuber প্রথম LSTM-এর ধারণা নিয়ে আসেন। এটিকে বিশেষভাবে ডিজাইন করা হয়েছিল যাতে নেটওয়ার্কের মেমরি শত শত বা হাজার হাজার টাইম স্টেপ পর্যন্ত টিকে থাকতে পারে, এবং একই সাথে সাধারণ গ্রেডিয়েন্ট-ভিত্তিক লার্নিং (gradient-based learning) দিয়ে একে সহজেই ট্রেন করা যায়।
LSTM-এর মূল ডিজাইন ট্রিকটি অত্যন্ত চমৎকার ও মার্জিত: একটি সাধারণ RNN যেমন প্রতিটি সিঙ্গেল স্টেপে তথ্যের ওপর এক ধরণের জোরপূর্বক স্কোয়াশিং (information-destroying/squashing) বা পরিবর্তন ঘটায়, LSTM তা না করে মেমরির জন্য একটি আলাদা ডেডিকেটেড হাইওয়ে বা পথ তৈরি করে দেয় — যাকে বলা হয় সেল স্টেট (cell state)। তথ্য এই সেল স্টেটের ওপর দিয়ে খুব আলতোভাবে যাতায়াত করে এবং এর ওপর কেবল অত্যন্ত হিসাব করা, প্রয়োজনমাফিক এবং শেখা কিছু পরিবর্তনই প্রয়োগ করা হয়।
বিষয়টি এভাবে ভাবুন: একটি দীর্ঘ লাইনে দাঁড়িয়ে থাকা মানুষের মধ্য দিয়ে মুখে মুখে ফিসফিস করে কোনো বার্তা শেষ মাথা পর্যন্ত পৌঁছানোর চেষ্টা করা (যেখানে বার্তাটি সম্পূর্ণ বদলে যাওয়ার সম্ভাবনা থাকে), বনাম একটি কাগজে বার্তাটি লিখে লাইনের এক মাথা থেকে অন্য মাথায় পাঠিয়ে দেওয়া যেখানে প্রয়োজন ছাড়া কেউ সেই লেখাটিতে কোনো হাত দেবে না। এই কাগজের টুকরোটিই হলো আমাদের LSTM-এর সেল স্টেট।
LSTM কেবল গবেষণাগারের কোনো খেলনা নয় — এটি এমন প্রতিটি ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়ে আসছে যেখানে তথ্যের সিকোয়েন্স বা ক্রম গুরুত্বপূর্ণ:
ভাষা (Language)
টাইপ করার সময় পরবর্তী শব্দের অনুমান (next-word prediction), এক ভাষা থেকে অন্য ভাষায় অনুবাদ (machine translation), রিভিউ বা কমেন্ট বিশ্লেষণ (sentiment analysis)।
টাইম সিরিজ (Time Series)
বিদ্যুতের চাহিদা, শেয়ার বাজারের দর কিংবা কয়েক দিন পরের আবহাওয়ার পূর্বাভাস দেওয়া।
কথা বা স্পিচ (Speech)
কথা বলা অডিওকে টেক্সটে রূপান্তর করা — যা আমাদের ভয়েস অ্যাসিস্ট্যান্টদের (voice assistants) মেরুদণ্ড।
জীববিজ্ঞান (Biology)
ডিএনএ (DNA) এবং প্রোটিন সিকোয়েন্সের গঠন ও কাজ প্রেডিক্ট করার জন্য মডেলিং করা।
রোবোটিক্স ও ওয়্যারেবলস (Robotics & Wearables)
অ্যাক্সেলোমিটার রিডিংয়ের ডেটা স্ট্রিম থেকে মানুষের অ্যাক্টিভিটি বা নড়াচড়া শনাক্ত করা।
প্রতিটি টাইম স্টেপে, একটি LSTM সেল তিনটি জিনিস গ্রহণ করে: নতুন ইনপুট, আগের স্টেপের শর্ট-টার্ম মেমরি বা হিডেন স্টেট () এবং আগের স্টেপের লং-টার্ম মেমরি বা সেল স্টেট ()। Outer layer বা সেলের ভেতরে এটি চারটি ছোট কাজ করে, যার প্রতিটি নিয়ন্ত্রিত হয় একটি গেট (gate) দ্বারা:
ফরগেট গেট (Forget Gate)
লং-টার্ম মেমরি বা সেল স্টেট থেকে কোন তথ্যটি বাদ দিতে হবে তা ঠিক করা।
ইনপুট গেট (Input Gate)
নতুন তথ্যের কোন অংশটি মনে রাখা প্রয়োজন তা ঠিক করা।
সেল আপডেট (Cell Update)
আগের সিদ্ধান্তগুলোর ওপর ভিত্তি করে সেল স্টেটকে আপডেট করা।
আউটপুট গেট (Output Gate)
আপডেটেড মেমরির কোন অংশটি এই মুহূর্তে আউটপুট হিসেবে প্রকাশ করা হবে তা ঠিক করা।
মূল আইডিয়াটি ঠিক এটাই। পরের চ্যাপ্টারগুলোতে আমরা এই চারটি কাজের প্রতিটির পুঙ্খানুপুঙ্খ ব্যাখ্যা দেখব — স্বজ্ঞাত ধারণা (intuition), সমীকরণ (equations), হাতে-কলমে সমাধান করা গাণিতিক উদাহরণ, ডায়াগ্রাম এবং কোড সহ। আপাতত শুধু নিচের বাক্যটি মনে রাখুন, কারণ বাকি সবকিছুই আসলে এর বিস্তারিত রূপ:
একটি LSTM সেল ডেটা থেকে নিজে নিজেই শিখে নেয় যে কোনো সিকোয়েন্স পড়ার সময় ঠিক কীভাবে বেছে বেছে তথ্য মনে রাখতে হবে, আপডেট করতে হবে এবং ভুলে যেতে হবে।
পূর্বশর্ত: বেসিক পাইথন (Python) — ভেরিয়েবল, ফাংশন, লুপ, এবং লিস্ট। এছাড়া আর কিছুই নয়।
কোনো পূর্বশর্ত নেই: নিউরাল নেটওয়ার্ক, লিনিয়ার অ্যালজেব্রা, ক্যালকুলাস কিংবা সম্ভাব্যতা (probability) সম্পর্কে আগে থেকে কোনো আইডিয়া না থাকলেও চলবে। Mathematical Toolkit চ্যাপ্টারে আমরা প্রতিটি প্রয়োজনীয় গাণিতিক ধারণা একদম শূন্য থেকে গড়ে তুলব।
LSTM-এর সমীকরণগুলোতে প্রতিনিয়ত ম্যাট্রিক্স অপারেশন এবং চেইন রুল (chain rule) ব্যবহার করা হয়। LSTM Mathematics চ্যাপ্টারের গাণিতিক উদাহরণগুলো সরাসরি আগের করা উদাহরণের ওপর নির্ভরশীল। তাই সেখানে ১০ মিনিট বাড়তি সময় দিলে পরবর্তীতে আপনার ঘণ্টার পর ঘণ্টা বিভ্রান্তি বেঁচে যাবে।
| পার্ট | আপনি যা শিখবেন |
|---|---|
| ভিত্তিপ্রস্তর (Ch. 1–2) | এআই (AI), এমএল (ML) এবং ডিপ লার্নিং কী, এবং সিকোয়েন্সিয়াল ডেটা কেন সাধারণ ডেটার চেয়ে আলাদা |
| সিকোয়েন্স লার্নিং (Ch. 3) | টোকেন, এমবেডিং, স্লাইডিং উইন্ডো এবং সিকোয়েন্স প্রবলেমের গঠনসমূহ |
| ম্যাথ টুলকিট (Ch. 4) | ভেক্টর, ম্যাট্রিক্স, ডেরিভেটিভ, গ্রেডিয়েন্ট ডিসেন্ট — LSTM-এ ব্যবহৃত সব গণিত |
| RNN থেকে LSTM (Ch. 5–7) | সাধারণ RNN এবং কেন তারা ব্যর্থ হয়; এরপর পূর্ণাঙ্গ LSTM সেল এবং এর ভেতরের গণিত |
| LSTM তৈরি করা (Ch. 8–9) | NumPy ব্যবহার করে একদম স্ক্র্যাচ থেকে LSTM তৈরি করা, এরপর TensorFlow/Keras-এ মডেল তৈরি |
| ডেটা ও মূল্যায়ন (Ch. 10–12) | বাস্তব ডেটা প্রস্তুত করা, মডেলের কোয়ালিটি মাপা, হাইপারপ্যারামিটার টিউনিং |
| অ্যাডভান্সড ও প্রজেক্টস (Ch. 13–15) | Bidirectional LSTM, Seq2Seq, attention, GRUs, Transformers এবং ৬টি বাস্তব প্রজেক্ট |
| রেফারেন্স (Ch. 16–18) | গুরুত্বপূর্ণ গবেষণাপত্র (papers), ইন্টারভিউ প্রস্তুতি এবং পাইথন/NumPy রিফ্রেসার |
প্রতিবার যখন আপনার ফোন আপনার মুখের কথাকে টেক্সটে রূপান্তর করে, কোনো অনুবাদ অ্যাপ একটি অনুচ্ছেদ অনুবাদ করে, কিংবা কোনো পূর্বাভাস মডেল আগামীকালের বিদ্যুতের চাহিদা প্রেডিক্ট করে — ব্যাকগ্রাউন্ডে একটি LSTM (অথবা এর কোনো ক্লোজড ভ্যারিয়েন্ট) কাজ করে যাচ্ছে। সিকোয়েন্সিয়াল ডেটা কেন কঠিন তা বোঝা থেকে শুরু করে নিজে নিজে রান করার মতো প্রোডাকশন-গ্রেড প্রজেক্ট তৈরি করা পর্যন্ত আমরা এই কোর্সে সবকিছু খুব চমৎকারভাবে ধাপে ধাপে শিখবো।