এই কোর্সের নোটেশন ও পড়ার পদ্ধতি
এই পাঠে যা শিখবেন
- স্কেলার, ভেক্টর ও ম্যাট্রিক্স নোটেশনের মধ্যে পার্থক্য এক নজরে চিনতে পারা
- ট্রান্সপোজ, সমষ্টি ($\sum$), ফাংশন নোটেশন ($f:\mathbb{R}^n\to\mathbb{R}$) ও গ্রেডিয়েন্ট ($\nabla f$) পড়তে পারা
- প্রত্যাশা ও সম্ভাবনার নোটেশন এবং কোর্সজুড়ে ব্যবহৃত গ্রিক অক্ষরগুলোর অর্থ মনে রাখা
- NumPy-তে scalar/vector/matrix-এর shape কীভাবে এই নোটেশনের সাথে মেলে তা দেখা
১ · স্কেলার, ভেক্টর ও ম্যাট্রিক্স — নোটেশনের তিনটি স্তর
এই কোর্সের প্রতিটি সূত্র তিন ধরনের বস্তুর মধ্যে একটি নিয়ে কথা বলে — একটি একক সংখ্যা, সংখ্যার একটি তালিকা, অথবা সংখ্যার একটি গ্রিড। এই তিনটিকে আলাদা করার জন্য আমরা টাইপোগ্রাফি-কেই সংকেত হিসেবে ব্যবহার করব — একই অক্ষর ভিন্নভাবে লেখা হলে তার অর্থ সম্পূর্ণ ভিন্ন।
- স্কেলার (Scalar) — একটি একক সংখ্যা, সাধারণ ইটালিক ছোট হাতের অক্ষরে: $x$, $y$, $\lambda$, $b$।
- ভেক্টর (Vector) — সংখ্যার একটি সাজানো তালিকা, বোল্ড ছোট হাতের অক্ষরে: $\mathbf{x}$, $\mathbf{w}$। এর $i$-তম উপাদান লেখা হয় সাধারণ ইটালিকে: $x_i$।
- ম্যাট্রিক্স (Matrix) — সংখ্যার একটি আয়তাকার গ্রিড, বোল্ড বড় হাতের অক্ষরে: $\mathbf{A}$, $\mathbf{W}$। এর $(i,j)$-তম উপাদান লেখা হয় $A_{ij}$।
যেমন একটি ৩-মাত্রার ওজন ভেক্টর $\mathbf{w} = (w_1, w_2, w_3)$ — এখানে $\mathbf{w}$ বোল্ড কারণ এটি পুরো ভেক্টর, কিন্তু $w_1$ সাধারণ কারণ এটি একটি একক সংখ্যা (স্কেলার)। একটি $m\times n$ ম্যাট্রিক্স $\mathbf{A}$-এর মানে হলো এতে $m$টি সারি (row) ও $n$টি কলাম (column) আছে, এবং আমরা লিখি $\mathbf{A}\in\mathbb{R}^{m\times n}$।
সাধারণ ইটালিক = স্কেলার ($x$, $\lambda$, $\theta$) · বোল্ড ছোট হাতের = ভেক্টর ($\mathbf{x}$, $\mathbf{w}$) · বোল্ড বড় হাতের = ম্যাট্রিক্স ($\mathbf{A}$, $\mathbf{W}$)। এটি স্ট্যান্ডার্ড ML/DL সাহিত্যেও সবচেয়ে বেশি ব্যবহৃত কনভেনশন।
২ · ট্রান্সপোজ ও সমষ্টি (summation) নোটেশন
ট্রান্সপোজ — $\mathbf{x}^T$ চিহ্নের অর্থ একটি কলাম ভেক্টরকে রো ভেক্টরে রূপান্তর করা (অথবা উল্টো)। যখন দুটি ভেক্টর $\mathbf{w}$ ও $\mathbf{x}$-এর জন্য আমরা $\mathbf{w}^T\mathbf{x}$ লিখি, তার মানে ডট প্রোডাক্টDot Productদুটি ভেক্টরের উপাদান-ভিত্তিক গুণফলের যোগফল — পাঠ ০৪-এ সম্পূর্ণ কভার হবে। — পাঠ ০৪-এ এটি বিস্তারিতভাবে দেখব। ম্যাট্রিক্সের ক্ষেত্রে $\mathbf{A}^T$ মানে সারি ও কলাম অদলবদল: $(A^T)_{ij}=A_{ji}$।
সমষ্টি নোটেশন — গ্রিক অক্ষর $\Sigma$ (বড় সিগমা) দিয়ে যোগফল সংক্ষেপে লেখা হয়:
$$\sum_{i=1}^{n} x_i = x_1 + x_2 + \dots + x_n$$এই একটি চিহ্নই আমরা বারবার ব্যবহার করব — যেমন ডট প্রোডাক্ট $\mathbf{u}\cdot\mathbf{v}=\sum_i u_i v_i$, অথবা লস ফাংশন $\mathcal{L}=\frac1n\sum_i (\hat y_i - y_i)^2$। $\sum$ দেখলেই মনে রাখবেন — এটি শুধু "একে একে সবগুলো যোগ কর"।
৩ · ফাংশন নোটেশন ও গ্রেডিয়েন্ট
$f:\mathbb{R}^n\to\mathbb{R}$ — এই নোটেশনের অর্থ, $f$ একটি ফাংশন যা $n$-মাত্রার একটি ভেক্টর ইনপুট হিসেবে নেয় এবং একটি একক বাস্তব সংখ্যা (স্কেলার) আউটপুট দেয়। একটি নিউরাল নেটওয়ার্কের লস ফাংশন ঠিক এমনই — লক্ষ লক্ষ প্যারামিটার ইনপুট নিয়ে একটি সংখ্যা (কতটা ভুল) আউটপুট দেয়।
এমন ফাংশনের জন্য "ডেরিভেটিভ" আর একটি সংখ্যা নয় — এটি একটি ভেক্টর, যাকে বলা হয় গ্রেডিয়েন্ট এবং লেখা হয় $\nabla f$ (নাবলা চিহ্ন)। $\nabla f$-এর $i$-তম উপাদান হলো $f$-এর $i$-তম ইনপুটের সাপেক্ষে পার্শিয়াল ডেরিভেটিভPartial Derivativeএকাধিক ভেরিয়েবলের ফাংশনে একটি ভেরিয়েবলের সাপেক্ষে ডেরিভেটিভ, বাকিগুলোকে ধ্রুবক ধরে। পাঠ ১৪-এ সম্পূর্ণ কভার হবে। — অর্থাৎ $\partial f/\partial x_i$। এই নোটেশনের সম্পূর্ণ সংজ্ঞা ও ডেরিভেশন আসবে পাঠ ১৪-এ; এখন শুধু চিহ্নটা চিনে রাখুন।
৪ · প্রত্যাশা, সম্ভাবনা ও গ্রিক অক্ষর
সম্ভাবনা তত্ত্বের দুটি চিহ্ন এই কোর্সে বারবার আসবে: $P(\cdot)$ — কোনো ঘটনার সম্ভাবনা (যেমন $P(A)$), এবং $\mathbb{E}[\cdot]$ — প্রত্যাশা (Expectation), অর্থাৎ কোনো র্যান্ডম ভেরিয়েবলের গড় মান (যেমন $\mathbb{E}[X]$)। এদের সম্পূর্ণ সংজ্ঞা ও গণনা আসবে মডিউল ৬-এ (পাঠ ২৪-২৮)।
নিচের গ্রিক অক্ষরগুলো এই কোর্সে নির্দিষ্ট, স্থায়ী অর্থে ব্যবহৃত হবে — একবার এই টেবিল দেখে নিলে পরবর্তী পাঠে এগুলো দেখে থমকে যেতে হবে না:
| চিহ্ন | অর্থ | কোথায় ব্যবহৃত হবে |
|---|---|---|
| $\theta$ (থিটা) | মডেলের প্যারামিটার (সাধারণভাবে) | M6-M7, MLE/MAP |
| $\sigma$ (সিগমা) | স্ট্যান্ডার্ড ডেভিয়েশন | M6, গাউসিয়ান বিতরণ |
| $\mu$ (মিউ) | গড় (mean) | M6, গাউসিয়ান বিতরণ |
| $\lambda$ (ল্যামডা) | আইগেনভ্যালু অথবা রেগুলারাইজেশন-এর মাত্রা | M3 (পাঠ ১০), M7 (পাঠ ৩২) |
| $\eta$ (ইটা) | লার্নিং রেট | M4-M5, গ্রেডিয়েন্ট ডিসেন্ট |
৫ · কোড দিয়ে দেখুন — নোটেশন বনাম NumPy shape
গণিতের নোটেশন আর কোডের ডেটা স্ট্রাকচার সরাসরি মিলে যায়। নিচে দেখুন স্কেলার, ভেক্টর ও ম্যাট্রিক্স NumPy-তে কেমন দেখতে — এবং ট্রান্সপোজ কীভাবে shape বদলে দেয়।
import numpy as np
# স্কেলার — একটি একক সংখ্যা
x = 5.0
# ভেক্টর — সংখ্যার তালিকা, বোল্ড w দিয়ে বোঝানো হয়
w = np.array([0.2, -0.5, 0.1])
# ম্যাট্রিক্স — সংখ্যার গ্রিড, বোল্ড বড় হাতের A দিয়ে বোঝানো হয়
A = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
print("scalar x:", x)
print("vector w, shape:", w.shape) # (3,) -> ৩-মাত্রার ভেক্টর
print("matrix A, shape:", A.shape) # (3, 2) -> ৩ সারি, ২ কলাম
# ট্রান্সপোজ: A^T -> সারি ও কলাম অদলবদল
print("A^T, shape:", A.T.shape) # (2, 3)
NumPy-তে একটি 1D array-এর shape (n,) একটি ভেক্টরের সাথে মেলে, আর 2D array-এর shape
(m, n) একটি $m\times n$ ম্যাট্রিক্সের সাথে মেলে। কোনো সূত্র লেখার সময় শেপ মেলাতে না পারলে,
সবার আগে এই নোটেশন টেবিলে ফিরে আসুন।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ বিভিন্ন বই বা পেপারে নোটেশন ভিন্ন ভিন্ন কেন হয়? এটা কি সমস্যা তৈরি করে না?
গণিতের নোটেশন কোনো একক প্রমিত মান (universal standard) নয় — এটি প্রতিটি লেখক বা গবেষণা-সম্প্রদায়ের নিজস্ব প্রথা। যেমন কেউ ভেক্টরের জন্য তীরচিহ্ন ব্যবহার করেন, কেউ বোল্ড; কেউ dimension-কে $n$ বলেন, কেউ $d$। এটি প্রথমে বিভ্রান্তিকর মনে হতে পারে, কিন্তু বাস্তবে সমস্যা হয় না — কারণ প্রতিটি ভালো পেপার/বই শুরুতেই তার নিজস্ব নোটেশন সংজ্ঞায়িত করে দেয় (ঠিক যেমন এই পাঠ করছে)। অভ্যাস হয়ে গেলে নতুন কনভেনশনে মানিয়ে নেওয়া কয়েক মিনিটের কাজ।
প্র ০২ ভেক্টরকে বোল্ড লেখা মানে কি এটা সবসময় একটা "কলাম" ভেক্টর?
ডিফল্টভাবে, বেশিরভাগ ML সাহিত্যে (এবং এই কোর্সে) $\mathbf{x}$ লিখলে একে কলাম ভেক্টর ধরা হয় — অর্থাৎ উপর-নিচ সাজানো, একটি $n\times 1$ ম্যাট্রিক্সের মতো। তাই $\mathbf{x}^T$ লিখলে সেটা রো ভেক্টর ($1\times n$) হয়ে যায়। এই পার্থক্যটা গুরুত্বপূর্ণ হয়ে ওঠে যখন আমরা $\mathbf{w}^T\mathbf{x}$-এর মতো এক্সপ্রেশন লিখি — shape না মিললে ম্যাট্রিক্স গুণ সংজ্ঞায়িতই হয় না (এটা বিস্তারিত দেখব পাঠ ০৭-এ)।
প্র ০৩ গ্রেডিয়েন্ট ($\nabla f$) আর ডেরিভেটিভ ($f'$) কি একই জিনিস?
ধারণাগতভাবে হ্যাঁ — দুটোই বলে ফাংশনটি কতটা ও কোন দিকে বদলাচ্ছে। কিন্তু টাইপে ভিন্ন: একটি একক-ভেরিয়েবল ফাংশন $f(x)$-এর ডেরিভেটিভ $f'(x)$ একটি স্কেলার। কিন্তু $n$টি ইনপুট নেওয়া ফাংশন $f(\mathbf{x})$-এর "ডেরিভেটিভ" $n$টি সংখ্যার একটি ভেক্টর হতে বাধ্য — কারণ প্রতিটি ইনপুটের জন্য আলাদা একটি পার্শিয়াল ডেরিভেটিভ থাকে। এই ভেক্টরটাকেই বলা হয় গ্রেডিয়েন্ট। তাই গ্রেডিয়েন্ট আসলে ডেরিভেটিভের ধারণারই বহু-ভেরিয়েবল সাধারণীকরণ — সম্পূর্ণ বিস্তারিত পাঠ ১৪-এ।
অনুশীলন
-
চিহ্নিত করুন: নিচের প্রতিটি $\mathbf{w}^T\mathbf{x}$, $\mathbf{A}$, $b$, $\nabla f$ — কোনটি স্কেলার, কোনটি ভেক্টর, আর কোনটি ম্যাট্রিক্স?
$\mathbf{w}^T\mathbf{x}$ — এটি একটি ডট প্রোডাক্টের ফলাফল, তাই স্কেলার (একটি সংখ্যা)। $\mathbf{A}$ — বোল্ড বড় হাতের, তাই ম্যাট্রিক্স। $b$ — সাধারণ ইটালিক, তাই স্কেলার। $\nabla f$ — গ্রেডিয়েন্ট সবসময় একটি ভেক্টর (প্রতিটি ইনপুটের জন্য একটি পার্শিয়াল ডেরিভেটিভ)।
-
হাতে হিসাব করুন: $\mathbf{x}=(2,4,6)$ হলে $\sum_{i=1}^{3} x_i$ কত? তারপর কোড সেলে
x = np.array([2,4,6])লিখেx.sum()দিয়ে মিলিয়ে দেখুন।$\sum_{i=1}^{3} x_i = 2+4+6 = 12$। NumPy-তে
x.sum()অথবাnp.sum(x)একই ফলাফল ১২.০ দেবে। -
শনাক্ত করুন: একটি রিসার্চ পেপারে দেখলেন লেখক $\theta$ ব্যবহার করছেন কোনো নির্দিষ্ট সংজ্ঞা ছাড়াই। এই কোর্সের কনভেনশন অনুযায়ী এর সম্ভাব্য অর্থ কী হতে পারে?
এই কোর্সের কনভেনশনে $\theta$ সাধারণত মডেলের প্যারামিটার (parameters) বোঝাতে ব্যবহৃত হয় — যেমন একটি নিউরাল নেটওয়ার্কের সব ওজন ও বায়াস একসাথে। তবে বাস্তবে পেপার পড়ার সময় সবসময় লেখকের নিজস্ব সংজ্ঞা খুঁজে নেওয়া উচিত (প্র ০১-এর উত্তর দ্রষ্টব্য)।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ · ভেক্টর — সংজ্ঞা, নোটেশন ও অপারেশন পাঠ ০৩ এই নোটেশন ব্যবহার করে এখন আমরা ভেক্টরের সম্পূর্ণ সংজ্ঞা ও অপারেশন শুরু করব।
- AI Foundations কোর্স স্বজ্ঞা দরকার হলে ফিরে দেখুন নোটেশনের পেছনের ধারণাগুলো (ভেক্টর, গ্রেডিয়েন্ট, সম্ভাবনা) স্বজ্ঞার স্তরে আবার দেখতে চাইলে এখানে ফিরুন।
- সব AI Courses দেখুন ABCL TECH AI Foundations, Python for AI, Machine Learning, Deep Learning, Math for AI ও আরও অনেক কিছু — সব এক জায়গায়।