Chapter 4 of 18
Vectors, matrices, derivatives, and gradient descent — everything LSTM needs
এই কোর্সে আপনি LSTM-এর যত সমীকরণ বা সূত্র দেখবেন, তার প্রতিটি মূলত পাঁচটি গাণিতিক অপারেশনের ওপর ভিত্তি করে তৈরি: ভেক্টর পাটিগণিত (vector arithmetic), ম্যাট্রিক্স গুণন (matrix multiplication), ডেরিভেটিভ (derivatives), চেইন রুল (chain rule) এবং গ্রেডিয়েন্ট ডিসেন্ট (gradient descent)। এই চ্যাপ্টারে আমরা এই প্রতিটি ধারণাকে একদম শূন্য থেকে তৈরি করব — প্রথমে এর পেছনের স্বজ্ঞাত ধারণা (intuition), এরপর গাণিতিক রূপ এবং শেষে একটি হাতে-কলমে সমাধান করা গাণিতিক উদাহরণ থাকবে। এখানকার কোনো অংশই বাদ দেওয়ার মতো নয় — LSTM Mathematics চ্যাপ্টারে এখানকার প্রতিটি টুল সরাসরি ব্যবহৃত হবে।
নিউরাল নেটওয়ার্ক মূলত বিভিন্ন গাণিতিক লেয়ারের মধ্য দিয়ে ডেটাকে বারবার রূপান্তরিত করে কাজ করে। এই ডেটা ধারণ করার পাত্র বা কন্টেইনারগুলো সাধারণত চার ধরণের ডাইমেনশন বা মাত্রার হয়ে থাকে:
| নাম | ডাইমেনশন বা মাত্রা | উদাহরণ | LSTM-এ এর ভূমিকা |
|---|---|---|---|
| স্কেলার (Scalar) | 0 | x = 5 | একটি একক গেটের অ্যাক্টিভেশন মান |
| ভেক্টর (Vector) | 1 | [1, 2, 3] | একটি নির্দিষ্ট টাইম স্টেপের ইনপুট ; হিডেন স্টেট |
| ম্যাট্রিক্স (Matrix) | 2 | [[1,2],[3,4]] | ওয়েট ম্যাট্রিক্সসমূহ যেমন: , , , |
| টেনসর (Tensor) | 3+ | (batch, time, features) | LSTM-এ পাঠানো সিকোয়েন্সের একটি পুরো ব্যাচ |
একটি স্কেলার হলো কোনো একজন ছাত্রের একটি নির্দিষ্ট পরীক্ষার নম্বর। একটি ভেক্টর হলো সেই ছাত্রের কয়েকটি পরীক্ষার নম্বরের তালিকা। একটি ম্যাট্রিক্স হলো পুরো ক্লাসের সব ছাত্রের সব পরীক্ষার নম্বরের টেবিল — যেখানে রো (rows) হলো ছাত্ররা এবং কলাম (columns) হলো পরীক্ষাগুলো। আর একটি টেনসর হলো আরও বড় কিছু — যেমন পুরো স্কুলের সকল ক্লাসের একাধিক সেমিস্টারের সব পরীক্ষার নম্বর একসাথে সাজানো একটি ৩ডি বা তার চেয়েও বেশি ডাইমেনশনের ব্লক।
এখানে: এবং হলো একই দৈর্ঘ্য -এর দুটি ভেক্টর।
স্বজ্ঞাত ধারণা: ডট প্রোডাক্ট পরিমাপ করে যে দুটি ভেক্টর একে অপরের সাথে কতটা "সম্মত" বা সামঞ্জস্যপূর্ণ। যদি দুটি ভেক্টরের মান বড় হয় এবং তাদের দিক বা সাইন একই হয়, তবে ডট প্রোডাক্টের মান অনেক বেশি বড় হয়; আর দিক বিপরীত হলে মান কমে যায়। একটি পারসেপট্রন তার ইনপুট ও ওয়েটের মধ্যে ঠিক এই হিসাবটিই করে থাকে: ।
গাণিতিক উদাহরণ: ধরি এবং :
ম্যাট্রিক্স গুণন হলো মূলত একসাথে অনেকগুলো ডট প্রোডাক্ট করার নিয়ম। যার সাইজ বা শেপ এবং যার শেপ , তাদের গুণফল -এর শেপ হবে এবং এর প্রতিটি মান হবে:
শেপের নিয়ম (Shape rule): ভেতরের ডাইমেনশন দুটি অবশ্যই মিলতে হবে — অর্থাৎ -এর কলাম সংখ্যা এবং -এর রো সংখ্যা সমান হতে হবে। আর গুণফলের চূড়ান্ত শেপ হবে বাইরের ডাইমেনশন দুটির সমান।
এই একটি মাত্র সাধারণ নিয়ম — ভেতরের ডাইমেনশন মেলাতে হবে — স্ক্র্যাচ থেকে LSTM ইমপ্লিমেন্ট করার সময় নতুনদের অধিকাংশ ভুলের মূল কারণ। আমরা LSTM Mathematics চ্যাপ্টারে অত্যন্ত মনোযোগ দিয়ে এই শেপ ট্র্যাকিং শিখবো।
গাণিতিক উদাহরণ:
যেহেতু হলো এবং হলো , তাই আমাদের গুণফল হবে আকারের:
একটি ডেন্স লেয়ারে যে হিসাবটি হয় — (যেখানে হলো লার্নড ওয়েট এবং হলো ইনপুট ভেক্টর) — এটি ঠিক এই ম্যাট্রিক্স গুণনের মতোই।
একটি ডেরিভেটিভ (derivative) পরিমাপ করে যে কোনো ফাংশনের ইনপুট সামান্য পরিবর্তন করলে তার আউটপুটে কতটা পরিবর্তন ঘটে — সহজ কথায় এটি একটি তাৎক্ষণিক ঢাল বা স্লোপ (slope)।
স্বজ্ঞাত ধারণা: যদি সময়ের সাপেক্ষে আপনার গাড়ির অবস্থান বা দূরত্ব প্রকাশ করে, তবে হবে গাড়ির গতিবেগ বা স্পিড। নিউরাল নেটওয়ার্কের ক্ষেত্রে, যদি হয় লস (loss) এবং যদি হয় কোনো ওয়েট (weight), তবে আমাদের বলে: "আমি যদি এই ওয়েটটিকে সামান্য বাড়িয়ে দিই, তবে লস কি বাড়বে নাকি কমবে, এবং ঠিক কতটা কমবে বা বাড়বে?" এই সংকেতটি ব্যবহার করেই ওয়েটগুলোকে আপডেট করা হয়।
অপরিহার্য ডেরিভেটিভ নিয়মসমূহ:
| নিয়ম | সূত্র (Formula) | উদাহরণ |
|---|---|---|
| পাওয়ার রুল (Power rule) | d/dx xⁿ = nxⁿ⁻¹ | d/dx x³ = 3x² |
| কনস্ট্যান্ট গুণফল | d/dx [c·f(x)] = c·f'(x) | d/dx 5x² = 10x |
| যোগের নিয়ম (Sum rule) | d/dx [f+g] = f'+g' | d/dx (x²+x) = 2x+1 |
| গুণের নিয়ম (Product rule) | d/dx [fg] = f'g + fg' | d/dx [x·sin x] = sin x + x·cos x |
চেইন রুল (chain rule) হলো নিউরাল নেটওয়ার্কের জন্য ক্যালকুলাসের সবচেয়ে গুরুত্বপূর্ণ ফলাফল, কারণ নেটওয়ার্কগুলো মূলত অনেকগুলো ছোট ছোট ফাংশন জুড়ে তৈরি করা একটি জটিল বা যৌগিক ফাংশন।
যদি এবং হয়, তবে:
স্বজ্ঞাত ধারণা: ধরুন আপনার বেতন নির্ভর করে আপনার পারফরম্যান্স রেটিংয়ের ওপর, যা আবার নির্ভর করে আপনার পড়ার বা পরিশ্রম করার ঘণ্টার ওপর। তাহলে প্রতি অতিরিক্ত ঘণ্টা পড়ার কারণে বেতনের পরিবর্তন = (প্রতি রেটিং পয়েন্টের জন্য বেতনের পরিবর্তন) × (প্রতি ঘণ্টার জন্য রেটিংয়ের পরিবর্তন)। আপনি শুধু স্থানীয় হারের পরিবর্তনের মানগুলো গুণ করছেন। এটিই হলো চেইন রুল — আর ঠিক এভাবেই এলএসটিএম-এর অনেকগুলো লেয়ার ও অসংখ্য টাইম স্টেপের মধ্য দিয়ে গ্রেডিয়েন্ট পেছনের দিকে প্রবাহিত হয়।
গাণিতিক উদাহরণ: -এর ডেরিভেটিভ বের করুন। ধরা যাক , তাই :
বিন্দুতে: ।
যখন কোনো ফাংশন একাধিক ভেরিয়েবলের ওপর নির্ভর করে, তখন একটি পার্শিয়াল ডেরিভেটিভ (partial derivative) অন্য সব ভেরিয়েবল স্থির রেখে কেবল একটি ভেরিয়েবলের সাপেক্ষে পরিবর্তন পরিমাপ করে।
উদাহরণ: -এর ক্ষেত্রে:
বিন্দুতে: , ।
গ্রেডিয়েন্ট (gradient) হলো মূলত সকল পার্শিয়াল ডেরিভেটিভের সমন্বয়ে গঠিত একটি ভেক্টর। এটি ফাংশনটির সবচেয়ে দ্রুত বৃদ্ধির দিক নির্দেশ করে। ফাংশনকে মিনিমাইজ বা কমাতে হলে আমাদের এর বিপরীত দিকে যেতে হবে।
এখানে: হলো প্যারামিটার (যেমন: কোনো ওয়েট), হলো লস (মডেলটি কতটা ভুল করছে), হলো গ্রেডিয়েন্ট (কোন দিকে গেলে লস বাড়ে), এবং (ইটা) হলো লার্নিং রেট (learning rate) — যা নির্দেশ করে আমরা কত বড় পদক্ষেপ নেব।
কল্পনা করুন, আপনি একটি কুয়াশাচ্ছন্ন পাহাড়ের চূড়ায় দাঁড়িয়ে আছেন এবং কোনো কিছু না দেখে কেবল পায়ের নিচের অনুভূতি দিয়ে সবচেয়ে নিচু উপত্যকায় নামতে চাচ্ছেন। প্রতিটি পদক্ষেপে আপনি আপনার পায়ের নিচে ঢাল কেমন তা অনুভব করছেন এবং ঢালু বা নিচের দিকে একটি ছোট পা ফেলছেন। লার্নিং রেট হলো আপনার পদক্ষেপের আকার বা সাইজ: পদক্ষেপ যদি খুব বড় হয়, তবে আপনি হয়তো উপত্যকাটি পার হয়ে ওপাশে চলে যাবেন; আর পদক্ষেপ খুব ছোট হলে উপত্যকায় পৌঁছাতে অনন্তকাল লেগে যাবে।
গাণিতিক উদাহরণ: , থেকে শুরু করে ফাংশনটি মিনিমাইজ করুন। যেহেতু :
| ধাপ | আপডেট নিয়ম | ||
|---|---|---|---|
| ০ | ০ | −৬ | |
| ১ | ০.৬ | −৪.৮ | |
| ২ | ১.০৮ | −৩.৮৪ |
-এর মান ধীরে ধীরে ৩-এর দিকে এগোচ্ছে (যা ফাংশনটির আসল মিনিমাম), এবং নিচের দিকে আসার সাথে সাথে গ্রেডিয়েন্ট ছোট হওয়ায় আপডেটের সাইজও ছোট হয়ে যাচ্ছে।
ব্যাকপ্রোপাগেশন (Backpropagation) হলো একটি নেটওয়ার্কের প্রতিটি ওয়েটের ওপর চেইন রুলকে খুব নিয়মতান্ত্রিকভাবে প্রয়োগ করা, যা একটি ব্যাকওয়ার্ড পাসে (backward pass) সম্পন্ন হয়।
গাণিতিক উদাহরণ: একটি অত্যন্ত ছোট ২-লেয়ার নেটওয়ার্ক: , , , । ধরি , , ।
ফরোয়ার্ড: , , ,
ব্যাকওয়ার্ড:
প্রতিটি লাইনে কিন্তু তার আগের লাইনের হিসাবের রেজাল্টটি আবার ব্যবহৃত হয়েছে — আর এই পুনর্ব্যবহারের কারণেই ব্যাকপ্রোপাগেশন অত্যন্ত দক্ষ: কোনো গ্রেডিয়েন্ট দ্বিতীয়বার হিসাব করার প্রয়োজন হয় না।
সাধারণ ব্যাকপ্রোপাগেশন বিভিন্ন লেয়ারের মধ্য দিয়ে পেছনের দিকে যায়। আর Backpropagation Through Time (BPTT) একই চেইন রুল প্রয়োগ করে, তবে এটি লেয়ারের বদলে বিভিন্ন টাইম স্টেপের (time steps) মধ্য দিয়ে পেছনের দিকে যায়, কারণ LSTM-এ একই ওয়েট প্রতিটি টাইম স্টেপে বারবার ব্যবহৃত হয়।
স্বজ্ঞাত ধারণা: ধরুন আপনি প্রতিদিনের কিছু সিদ্ধান্তের ভিত্তিতে একটি বড় ধরনের ভুল করেছেন এবং কোন সিদ্ধান্তের জন্য কতটুকু ভুল হয়েছে তা পেছনের দিকে গিয়ে বিচার করছেন। এখানে যেহেতু প্রতিদিন আপনি একই নীতি বা নিয়ম (একই ওয়েট) ব্যবহার করেছেন, তাই চূড়ান্ত ভুলের জন্য দায়ী ওয়েটের গ্রেডিয়েন্টটি কেবল একটি সিঙ্গেল দিনের জন্য হিসাব করলে হবে না, বরং প্রতিটি দিন ওই ওয়েটটি যতটা ভুল তৈরি করেছিল সবগুলোকে যোগ বা সঞ্চয় (accumulate) করতে হবে।
অনেকগুলো টাইম স্টেপ জুড়ে এই চেইন রুলের বারবার গুণফল হওয়ার কারণেই সাধারণ RNN-এ ভ্যানিশিং ও এক্সপ্লোডিং গ্রেডিয়েন্ট তৈরি হয় — আর ঠিক এই সমস্যা সমাধানের জন্যই LSTM-এর গেটেড সেল স্টেট ডিজাইন করা হয়েছিল।
LSTM-এর মধ্য দিয়ে ডেটা যাওয়ার প্রতিটি ফরোয়ার্ড পাসই হলো মূলত কিছু ম্যাট্রিক্স গুণন এবং ডট প্রোডাক্টের ক্রম। আর প্রতিটি ট্রেনিং স্টেপ হলো BPTT — যেখানে চেইন রুলের সাহায্যে শেয়ার্ড ওয়েট ম্যাট্রিক্সগুলোর গ্রেডিয়েন্ট টাইম স্টেপ জুড়ে সঞ্চয় করা হয়। LSTM Mathematics চ্যাপ্টারে আমরা এই প্রতিটি ধাপ সংখ্যার সাহায্যে নিখুঁতভাবে লিখে দেখাবো যাতে সূত্রের ভেতরের প্রতিটি প্রতীকের অর্থ ও উৎস আপনি সহজেই বুঝতে পারেন।