পাঠ ০৩ · ৩৫-এর মধ্যে · মডিউল ২
Home / AI Courses / Math for AI & ML / ভেক্টর — সংজ্ঞা ও অপারেশন

ভেক্টর — সংজ্ঞা, নোটেশন ও অপারেশন

Vectors — definition, notation, operations
৯ মিনিট পড়া শুরু · Beginner NumPy কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • ভেক্টরের কঠোর গাণিতিক সংজ্ঞা এবং পাঠ ০২-এর নোটেশন কীভাবে এখানে প্রয়োগ হয়
  • যোগ, বিয়োগ ও স্কেলার গুণ — হাতে এবং NumPy-তে
  • স্ট্যান্ডার্ড বেসিস ভেক্টর $\mathbf{e}_i$ কী এবং কেন গুরুত্বপূর্ণ
  • জ্যামিতিক অন্তর্দৃষ্টি (তীর) থেকে $n$-মাত্রার বীজগাণিতিক সাধারণীকরণ পর্যন্ত

১ · ভেক্টর কী — সংজ্ঞা

একটি ভেক্টর হলো সংখ্যার একটি সাজানো তালিকা। $n$-মাত্রার একটি ভেক্টর $\mathbf{x}$-কে লেখা হয়:

$$\mathbf{x} = (x_1, x_2, \dots, x_n), \qquad \mathbf{x}\in\mathbb{R}^n$$

পাঠ ০২-এর কনভেনশন অনুযায়ী পুরো ভেক্টর $\mathbf{x}$ বোল্ড, কিন্তু প্রতিটি উপাদান $x_i$ সাধারণ ইটালিক — কারণ প্রতিটি $x_i$ নিজে একটি স্কেলার। ডিফল্টভাবে আমরা ভেক্টরকে কলাম ভেক্টর হিসেবে ধরি (উপর থেকে নিচে সাজানো); প্রয়োজনে রো-আকারে লেখার সময় ট্রান্সপোজ ব্যবহার করি: $\mathbf{x}^T=(x_1,\dots,x_n)$ পাশাপাশি সাজানো।

ML-এ ভেক্টর মানে হতে পারে — একটি বাড়ির বৈশিষ্ট্য (আয়তন, রুম সংখ্যা, বয়স), একটি শব্দের embedding (৩০০ বা ৭৬৮টি সংখ্যা), অথবা একটি ছবির প্রতিটি পিক্সেলের মান একসাথে সাজানো। প্রতিটি ক্ষেত্রেই "ভেক্টর" শব্দটার গাণিতিক অর্থ একই — শুধু সংখ্যার একটি তালিকা, নির্দিষ্ট ক্রমে সাজানো।

২ · ভেক্টর যোগ ও বিয়োগ — উপাদান-ভিত্তিক

দুটি একই-মাত্রার ভেক্টর $\mathbf{u},\mathbf{v}\in\mathbb{R}^n$ যোগ করতে হলে, একই অবস্থানের উপাদানগুলো নিজেদের মধ্যে যোগ করা হয়:

$$\mathbf{u} + \mathbf{v} = (u_1+v_1,\ u_2+v_2,\ \dots,\ u_n+v_n)$$

যেমন $\mathbf{u}=(1,2,3)$ এবং $\mathbf{v}=(4,-1,2)$ হলে:

$$\mathbf{u}+\mathbf{v} = (1+4,\ 2+(-1),\ 3+2) = (5,\ 1,\ 5)$$

বিয়োগও একইভাবে উপাদান-ভিত্তিক: $\mathbf{u}-\mathbf{v}=(u_1-v_1,\dots,u_n-v_n)$। একটি বিশেষ ভেক্টর হলো শূন্য ভেক্টর $\mathbf{0}=(0,0,\dots,0)$ — যেকোনো ভেক্টরের সাথে যোগ করলে সেই ভেক্টরই অপরিবর্তিত থাকে ($\mathbf{u}+\mathbf{0}=\mathbf{u}$), ঠিক যেমন স্কেলারদের ক্ষেত্রে $0$ কাজ করে।

দুটি ভেক্টর যোগ/বিয়োগ করা যায় শুধু তখনই যখন তাদের মাত্রা (dimension) একই হয়। $\mathbb{R}^3$-এর একটি ভেক্টরের সাথে $\mathbb{R}^5$-এর ভেক্টর যোগ করা গাণিতিকভাবে সংজ্ঞায়িত নয় — NumPy-তেও এটি চেষ্টা করলে shape mismatch error আসবে।

৩ · স্কেলার গুণ

একটি ভেক্টরকে একটি স্কেলার $c$ দিয়ে গুণ করলে প্রতিটি উপাদান একই হারে বড় বা ছোট হয়:

$$c\,\mathbf{x} = (c x_1,\ c x_2,\ \dots,\ c x_n)$$

যদি $c>1$ হয়, ভেক্টরটি "লম্বা" হয় (একই দিকে); $0দিক সম্পূর্ণ উল্টে যায় (বিপরীতমুখী হয়ে যায়)। যেমন $\mathbf{x}=(2,4,6)$ হলে $-1\cdot\mathbf{x}=(-2,-4,-6)$ — একই তীর, শুধু বিপরীত দিকে নির্দেশ করছে। বিয়োগ আসলে স্কেলার গুণ ও যোগের সমন্বয়: $\mathbf{u}-\mathbf{v}=\mathbf{u}+(-1)\mathbf{v}$।

৪ · স্ট্যান্ডার্ড বেসিস ভেক্টর $\mathbf{e}_i$

$\mathbb{R}^n$-এর স্ট্যান্ডার্ড বেসিস ভেক্টর $\mathbf{e}_i$ হলো এমন একটি ভেক্টর যার $i$-তম উপাদান $1$ এবং বাকি সব উপাদান $0$। যেমন $\mathbb{R}^3$-এ:

$$\mathbf{e}_1=(1,0,0),\quad \mathbf{e}_2=(0,1,0),\quad \mathbf{e}_3=(0,0,1)$$

এই ভেক্টরগুলোর বিশেষত্ব হলো — যেকোনো ভেক্টর $\mathbf{x}=(x_1,x_2,x_3)$-কে এদের স্কেলার গুণ ও যোগফল হিসেবে লেখা যায়:

$$\mathbf{x} = x_1\mathbf{e}_1 + x_2\mathbf{e}_2 + x_3\mathbf{e}_3$$

অর্থাৎ প্রতিটি উপাদান আসলে বলছে "এই দিকে কতটা যেতে হবে"। এই ধারণাটাই পরে পাঠ ০৬-এ স্প্যান ও বেসিসSpan & Basisকিছু ভেক্টরের সব সম্ভাব্য লিনিয়ার কম্বিনেশনের সেট এবং একটি ন্যূনতম, ইন্ডিপেন্ডেন্ট স্প্যানিং সেট। পাঠ ০৬-এ সম্পূর্ণ কভার হবে।-এর সাধারণ সংজ্ঞায় রূপ নেবে।

৫ · জ্যামিতিক অন্তর্দৃষ্টি — তীর থেকে $n$-মাত্রা পর্যন্ত

২D-তে একটি ভেক্টর $(x_1,x_2)$-কে সহজেই কল্পনা করা যায় — মূলবিন্দু (origin) থেকে বিন্দু $(x_1,x_2)$ পর্যন্ত একটি তীর, যার একটি দৈর্ঘ্য ও একটি দিক আছে। ৩D-তেও একই ধারণা কাজ করে, শুধু একটি তৃতীয় অক্ষ যোগ হয়। ভেক্টর যোগ জ্যামিতিকভাবে মানে "একটি তীরের শেষ বিন্দু থেকে আরেকটি তীর শুরু করা" (parallelogram rule)।

সমস্যা হলো, ML-এ ভেক্টরগুলো প্রায়ই $n=768$ বা তারও বেশি মাত্রার হয় — এমন কিছু আঁকা অসম্ভব, এবং মানুষের মস্তিষ্কও ৩-এর বেশি মাত্রা কল্পনা করতে পারে না। কিন্তু সুখবর হলো — গাণিতিক সংজ্ঞা (যোগ, বিয়োগ, স্কেলার গুণ) $n$-এর মান নির্বিশেষে ঠিক একইভাবে কাজ করে। আমরা যা "দেখতে" পাই না তা নিয়েও ঠিক একই নিয়মে গণনা চালিয়ে যেতে পারি — এটাই বীজগণিতের শক্তি, এবং এই কারণেই আমরা জ্যামিতিক অন্তর্দৃষ্টি হারানো ছাড়াই উচ্চ-মাত্রার ডেটা নিয়ে কাজ করতে পারি।

উপমা একটি মুদি-বাজারের রসিদকে ভাবুন — "৩টি ডিম, ২ কেজি চাল, ১ লিটার তেল" — এটাও একটা ভেক্টর, যদিও এর কোনো "তীর" নেই যা আঁকা যায়। দুটি রসিদ যোগ করা মানে একই আইটেমের পরিমাণ যোগ করা, ঠিক ভেক্টর যোগের মতোই। এই "তালিকা হিসেবে ভেক্টর" দৃষ্টিভঙ্গিটাই উচ্চ-মাত্রার ML ডেটার জন্য বেশি কার্যকর, তীরের ছবির চেয়ে।

৬ · কোড দিয়ে দেখুন — NumPy-তে ভেক্টর অপারেশন

নিচে ভেক্টর যোগ, বিয়োগ, স্কেলার গুণ এবং একটি স্ট্যান্ডার্ড বেসিস ভেক্টর দিয়ে পুনর্গঠন — সবগুলো NumPy দিয়ে দেখানো হলো।

Python · NumPy
import numpy as np

u = np.array([1.0, 2.0, 3.0])
v = np.array([4.0, -1.0, 2.0])

print("u + v =", u + v)        # উপাদান-ভিত্তিক যোগ -> [5. 1. 5.]
print("u - v =", u - v)        # উপাদান-ভিত্তিক বিয়োগ -> [-3.  3.  1.]
print("3 * u =", 3 * u)        # স্কেলার গুণ -> [3. 6. 9.]
print("-1 * u =", -1 * u)      # দিক উল্টে যায় -> [-1. -2. -3.]

# স্ট্যান্ডার্ড বেসিস ভেক্টর দিয়ে u পুনর্গঠন
e1 = np.array([1.0, 0.0, 0.0])
e2 = np.array([0.0, 1.0, 0.0])
e3 = np.array([0.0, 0.0, 1.0])
u_rebuilt = u[0]*e1 + u[1]*e2 + u[2]*e3
print("u rebuilt from e1,e2,e3:", u_rebuilt)

    
মূল কথা · Key takeaway

NumPy-তে +, - ও * অপারেটর ভেক্টরের উপাদান-ভিত্তিক সংজ্ঞা অনুযায়ীই কাজ করে — কোনো লুপ লেখার দরকার নেই। এই একই আচরণ পরে ম্যাট্রিক্সেও (পাঠ ০৭) সম্প্রসারিত হবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি শব্দের embedding-কে ৭৬৮-মাত্রার "ভেক্টর" বলা হয় — অথচ আমরা সেটা কল্পনায় তীর হিসেবে আঁকতে পারি না। তাহলে "ভেক্টর" শব্দটা এখানে কী অর্থ বহন করে?

"ভেক্টর" শব্দটার মূল অর্থ জ্যামিতিক তীর নয় — এটি একটি বীজগাণিতিক বস্তু যার উপর যোগ, বিয়োগ ও স্কেলার গুণ সংজ্ঞায়িত। ২D/৩D-তে এই সংজ্ঞাগুলো তীর দিয়ে দৃশ্যায়ন করা সহজ বলেই আমরা সেই ছবিটা শিখি, কিন্তু সংজ্ঞাটা $n=768$-এর জন্যও ঠিক একইভাবে প্রযোজ্য — শুধু আমরা সেটা আঁকতে পারি না। ML-এ "ভেক্টর" মানে আসলে "সংখ্যার একটি তালিকা যার উপর এই বীজগাণিতিক নিয়মগুলো খাটে", তীরের ছবি না থাকলেও।

প্র ০২ বিন্দু $(3,4)$ আর ভেক্টর $(3,4)$ — এই দুটো কি একই জিনিস?

সংখ্যাগুলো একই, কিন্তু ধারণাগতভাবে সামান্য ভিন্ন। একটি বিন্দু স্পেসের একটি নির্দিষ্ট অবস্থান বোঝায়। একটি ভেক্টর সাধারণত মূলবিন্দু (origin) থেকে সেই বিন্দু পর্যন্ত স্থানান্তর (displacement) বোঝায় — এর একটি দৈর্ঘ্য ও দিক আছে, কিন্তু এটি "কোথায় শুরু হলো" তার উপর নির্ভর করে না। ব্যবহারিক ML-এ আমরা প্রায় সবসময় এই দুটোকে অভিন্ন হিসেবে ব্যবহার করি (মূলবিন্দু থেকে বিন্দু পর্যন্ত ভেক্টর) — কিন্তু পার্থক্যটা মনে রাখা ভালো, বিশেষত যখন পরে ট্রান্সফর্মেশন (পাঠ ০৮) নিয়ে কাজ করবেন।

প্র ০৩ ভেক্টর যোগ কি সবসময় কমুটেটিভ, অর্থাৎ $\mathbf{u}+\mathbf{v}=\mathbf{v}+\mathbf{u}$ সবসময় সত্য?

হ্যাঁ, সবসময়। যেহেতু ভেক্টর যোগ উপাদান-ভিত্তিক সাধারণ সংখ্যার যোগ, এবং সাধারণ সংখ্যার যোগ কমুটেটিভ ($u_i+v_i=v_i+u_i$), তাই প্রতিটি উপাদানের জন্য এটি সত্য হওয়ায় পুরো ভেক্টরের জন্যও সত্য। এই ধর্মটা এত স্বাভাবিক মনে হয় যে সহজে ভুলে যাওয়া যায় — কিন্তু পরে যখন ম্যাট্রিক্স গুণ শিখবেন (পাঠ ০৭), দেখবেন সেখানে $\mathbf{AB}\neq\mathbf{BA}$ সাধারণত সত্য — অর্থাৎ কমুটেটিভিটি সব অপারেশনের জন্মগত ধর্ম নয়।

অনুশীলন

  1. হাতে হিসাব করুন: $\mathbf{u}=(2,-3,5)$ এবং $\mathbf{v}=(-1,4,2)$ হলে $\mathbf{u}+\mathbf{v}$, $\mathbf{u}-\mathbf{v}$ এবং $2\mathbf{u}$ বের করুন, তারপর কোড দিয়ে যাচাই করুন।

    $\mathbf{u}+\mathbf{v}=(2-1,\,-3+4,\,5+2)=(1,1,7)$। $\mathbf{u}-\mathbf{v}=(2-(-1),\,-3-4,\,5-2)=(3,-7,3)$। $2\mathbf{u}=(4,-6,10)$।

  2. প্রকাশ করুন: ভেক্টর $\mathbf{x}=(5,3)$-কে $\mathbb{R}^2$-এর স্ট্যান্ডার্ড বেসিস ভেক্টর $\mathbf{e}_1,\mathbf{e}_2$-এর লিনিয়ার কম্বিনেশন হিসেবে লিখুন।

    $\mathbf{x} = 5\mathbf{e}_1 + 3\mathbf{e}_2$, কারণ $5(1,0)+3(0,1)=(5,0)+(0,3)=(5,3)$। এটাই পাঠ ০৬-এ "লিনিয়ার কম্বিনেশন" ও "স্প্যান"-এর মূল ভিত্তি হয়ে উঠবে।

  3. ব্যাখ্যা করুন: কেন $\mathbf{u}\in\mathbb{R}^2$ এবং $\mathbf{v}\in\mathbb{R}^3$ যোগ করা যায় না, শুধু গাণিতিক সংজ্ঞা ব্যবহার করে যুক্তি দিন।

    ভেক্টর যোগের সংজ্ঞা উপাদান-ভিত্তিক — $i$-তম উপাদানের সাথে $i$-তম উপাদান যোগ হয়। কিন্তু $\mathbf{u}$-এর মাত্র ২টি উপাদান আছে, আর $\mathbf{v}$-এর ৩টি — তাই তৃতীয় উপাদানের জন্য কোনো জোড়া নেই। তাই এই যোগফল সংজ্ঞায়িতই নয়; NumPy-তে চেষ্টা করলে ValueError: operands could not be broadcast together এই ধরনের ত্রুটি আসবে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
এই কোর্সের নোটেশন ও পড়ার পদ্ধতি