ভেক্টর কী — তীর হিসেবে দেখা
এই পাঠে যা শিখবেন
- ভেক্টর কী — তিন ভিন্ন দৃষ্টিতে: তীর, সংখ্যার তালিকা, ও AI-এর ভাষায়
- ভেক্টরের যোগ ও স্কেলার গুণ — গাণিতিক ও জ্যামিতিক উভয়ভাবে
- ভেক্টরের দৈর্ঘ্য (norm) — একটি ভেক্টর কত "বড়"
- NumPy দিয়ে ভেক্টর — ব্রাউজারেই কোড চালান
১ · ভেক্টর তিন ভাবে দেখা যায়
AI-তে ভেক্টরVectorসংখ্যার একটি সাজানো তালিকা — দিক ও দৈর্ঘ্যসহ। AI-তে যেকোনো বস্তু (ছবি, শব্দ, ব্যবহারকারী) সংখ্যার তালিকা হিসেবে প্রকাশ করা হয়। সর্বত্র। একটি ছবি — হাজার হাজার পিক্সেলের ভেক্টর। একটি বাংলা শব্দ — শত শত সংখ্যার ভেক্টর (embeddingEmbeddingএকটি discrete বস্তু (শব্দ, ব্যবহারকারী, পণ্য) → একটি ঘন vector representation. এই vector-এ "সাদৃশ্য" geometric দূরত্ব হিসেবে encoded. Word2Vec (২০১৩), GloVe, BERT, OpenAI ada-002 — সবই embedding-এর evolution. আজকের সব semantic search, RAG, recommendation-এর ভিত্তি।)। ChatGPT-এর প্রতিটি অভ্যন্তরীণ "চিন্তা" — একটি ভেক্টর। তাই এই ধারণাটা ভালোভাবে বুঝতে হবে।
১) পদার্থবিজ্ঞান: তীর — দিক ও মাত্রাসহ।
২) কম্পিউটার বিজ্ঞান: সংখ্যার একটি সাজানো তালিকা।
৩) গণিত: এমন বস্তু যা যোগ ও স্কেলার-গুণ মেনে চলে।
আমরা প্রথম দু'টি দৃষ্টিকোণে কাজ করব — সবচেয়ে স্বজ্ঞাত।
২ · তীর হিসেবে ভেক্টর
ভাবুন গ্রাফ পেপারে একটি তীর — উৎস $(0, 0)$ থেকে গন্তব্য $(3, 2)$ পর্যন্ত। এটি একটি ভেক্টর। ভেক্টরের দু'টি বৈশিষ্ট্য — দিক (কোন দিকে যাচ্ছে) ও দৈর্ঘ্যMagnitudeএকটি ভেক্টর কত "বড়" — উৎস থেকে গন্তব্য পর্যন্ত দূরত্ব। পাইথাগোরাসের সূত্র দিয়ে হিসাব হয়। (কত দূর যাচ্ছে)।
আমরা একে লিখি $\mathbf{v} = (3, 2)$ — যেখানে ৩ হলো অনুভূমিক দূরত্ব ($x$), ২ হলো উল্লম্ব দূরত্ব ($y$)।
৩ · সংখ্যার তালিকা হিসেবে ভেক্টর
২-মাত্রিক ভেক্টর: $(3, 2)$। ৩-মাত্রিক ভেক্টর: $(3, 2, 5)$। AI-তে সাধারণত ১০০, ৭৬৮, ৩০৭২, এমনকি ১২,২৮৮-মাত্রিক ভেক্টর ব্যবহার হয়। এত মাত্রায় ছবি আঁকা যায় না — তাই আমরা শুধু সংখ্যার তালিকা হিসেবে কাজ করি।
একটি বাস্তব উদাহরণ: একজন ব্যবহারকারীকে কীভাবে AI-এর কাছে উপস্থাপন করব?
user = (বয়স, আয়, কেনাকাটার ফ্রিকোয়েন্সি, রেটিং গড়)
যেমন: user_a = (২৭, ৩৫০০০, ১২, ৪.৩)
এটি একটি ৪-মাত্রিক ভেক্টর। AI ভেক্টরে কাজ করে — তাই বাস্তব জগতের সব কিছুকেই ভেক্টরে রূপান্তর করা হয়।
৪ · ভেক্টর যোগ — গাণিতিক ও জ্যামিতিক
দু'টি ভেক্টর যোগ — উপাদান-উপাদান:
$$\mathbf{u} + \mathbf{v} = (u_1, u_2) + (v_1, v_2) = (u_1 + v_1, \; u_2 + v_2)$$
উদাহরণ: $(3, 2) + (1, 4) = (4, 6)$
জ্যামিতিক অর্থ: প্রথম ভেক্টর শেষে দ্বিতীয় ভেক্টর জোড়া দিন। যেখানে শেষ হলো — সেটাই যোগফল ভেক্টর। একে বলে head-to-tail পদ্ধতি।
৫ · স্কেলার গুণ — ভেক্টরকে বড়/ছোট করা
একটি সংখ্যা (স্কেলারScalarএকক একটি সংখ্যা — দিক নেই, শুধু মান। ভেক্টরের বিপরীত: ভেক্টর তালিকা, স্কেলার একটি মাত্র সংখ্যা যেমন ৫ বা ৩.১৪।) দিয়ে ভেক্টরকে গুণ করলে — প্রতিটি উপাদান গুণ হয়:
$$2 \cdot (3, 2) = (6, 4)$$
জ্যামিতিকভাবে — তীরটির দৈর্ঘ্য দ্বিগুণ হলো, দিক একই থাকল। ঋণাত্মক স্কেলার দিলে দিক উল্টে যায়।
৬ · ভেক্টরের দৈর্ঘ্য (Norm)
একটি ভেক্টর "কত বড়"? — NormNormভেক্টরের দৈর্ঘ্য পরিমাপের গাণিতিক উপায়। সবচেয়ে সাধারণ — L2 norm (পাইথাগোরাস)। AI-তে loss function ও regularization-এ ব্যবহৃত হয়। (পাইথাগোরাসের সূত্র) দিয়ে বের হয়:
$$\| \mathbf{v} \| = \sqrt{v_1^2 + v_2^2 + \ldots + v_n^2}$$
উদাহরণ: $(3, 4)$-এর দৈর্ঘ্য $= \sqrt{9 + 16} = \sqrt{25} = 5$
৭ · NumPy দিয়ে ভেক্টর — হাতে-কলমে
NumPy হলো Python-এর সবচেয়ে গুরুত্বপূর্ণ গণিত লাইব্রেরি। নিচের কোডটি চালান — ব্রাউজারেই Python চলবে।
import numpy as np
# দুটি ভেক্টর তৈরি
u = np.array([3, 2])
v = np.array([1, 4])
print("u =", u)
print("v =", v)
print("u + v =", u + v) # ভেক্টর যোগ
print("2 * u =", 2 * u) # স্কেলার গুণ
u + v = [4 6], 2 * u = [6 4] — ঠিক যা গণিতে শিখলেন।
৮ · দৈর্ঘ্য NumPy-তে
import numpy as np
# (3, 4) ভেক্টরের দৈর্ঘ্য
v = np.array([3, 4])
length = np.linalg.norm(v)
print(f"v = {v}")
print(f"|v| = {length}")
# একটি ১০-মাত্রিক random ভেক্টর
big_v = np.random.rand(10)
print(f"\n10D random ভেক্টরের দৈর্ঘ্য: {np.linalg.norm(big_v):.4f}")
np.linalg.norm() যেকোনো মাত্রায় কাজ করে — ২ থেকে ১০,০০০ পর্যন্ত। AI-তে এই function অসংখ্যবার ব্যবহৃত হয়।
৯ · AI-এ ভেক্টর কোথায় ব্যবহার হয়?
- Image: 224×224 RGB ছবি = $224 \times 224 \times 3 = 150{,}528$-মাত্রিক ভেক্টর।
- Word Embedding: "বাংলাদেশ" শব্দটি একটি ৭৬৮-মাত্রিক ভেক্টর (BERT-এ)।
- User profile: Daraz-এর প্রতিটি ব্যবহারকারী একটি ভেক্টর — কেনাকাটার ইতিহাস ও পছন্দ থেকে।
- Audio: ১ সেকেন্ড অডিও = ১৬,০০০ সংখ্যার ভেক্টর (16kHz sample rate)।
- Neuron activation: একটি neural networkNeural Networkমানুষের মস্তিষ্কের অনুকরণে তৈরি স্তরভিত্তিক গাণিতিক মডেল — প্রতিটি স্তরে ভেক্টর-ম্যাট্রিক্স অপারেশন। AI-র মূল ভিত্তি।-এর প্রতিটি স্তরে ছবি/লেখা একটি ভেক্টরে রূপান্তরিত হয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ "বিড়াল" ও "বেড়াল"-এর embedding-এর দূরত্ব কম। কিন্তু "king − man + woman ≈ queen" — এই বিখ্যাত word2vec property কাজ করে কেন? জ্যামিতিকভাবে কী ঘটছে?
এই property — Mikolov et al. (২০১৩)-র word2vec পেপারে — NLP-র সবচেয়ে চমকপ্রদ আবিষ্কারগুলোর একটি। এটি দেখাল যে শব্দের অর্থে structure আছে — শুধু সাদৃশ্য নয়।
জ্যামিতিকভাবে যা ঘটে:
- প্রতিটি শব্দ একটি high-dimensional space-এ point.
- "king" থেকে "man" বিয়োগ করলে একটি vector পাওয়া যায় — এটি "royalty" দিকে পয়েন্ট করে (gender component বাদ)।
- সেই "royalty" vector-এ "woman" যোগ করলে — পৌঁছায় "queen"-এর কাছে।
কেন এমন ঘটে?
- Word2Vec প্রশিক্ষিত হয় — "একই context-এ যে শব্দগুলো আসে, তারা কাছে থাকবে।"
- "man" ও "king" প্রায়ই একসাথে context-এ থাকে; "woman" ও "queen"-ও।
- এই pattern থেকে — gender axis ও royalty axis দু'টোই space-এ "শুদ্ধভাবে" আঁকা হয়।
- vector arithmetic = অর্থের axis-এ চলাচল।
আরও উদাহরণ:
- Paris − France + Italy ≈ Rome (capital relationship)
- walking − walk + swim ≈ swimming (verb tense)
- good − bad + sad ≈ happy (sentiment)
Caveat: আধুনিক LLM (BERT, GPT) embeddings এই property পুরোপুরি দেখায় না কারণ তাদের embedding context-dependent. কিন্তু classical Word2Vec-এ এটাই demonstrate করেছিল — language-এ semantic structure আছে এবং vector space তা capture করে।
মূল উপলব্ধি: "ভেক্টর = শুধু সংখ্যার তালিকা" — কিন্তু সঠিকভাবে train করলে — সেই সংখ্যার ভেতরে অর্থ encoded হয়। আজকের সব semantic search, RAG, recommendation এই property-র উপর দাঁড়িয়ে।
প্র ০২ একটি ছবি ১৫০,৫২৮-মাত্রিক ভেক্টর। মানুষ এই space "দেখতে" পারে না। তাহলে কীভাবে আমরা বুঝি ভেক্টর সঠিক, dimension reduction করি — t-SNE, PCA কী কাজ করে?
High-dimensional vector space — AI-র সবচেয়ে gripping চ্যালেঞ্জ। মানুষ ৩-D-র বেশি visualize পারে না। তবু আমরা ১০,০০০-D-তে কাজ করি।
মানুষ যেভাবে high-D বুঝে:
- Indirect proof: মডেল ছবি classify করতে পারলে — মানে ভেক্টরে "সঠিক" তথ্য এনকোডেড।
- Distance অনুপাত: "two cats" closer than "cat-dog" — এই কাঠামো check করা যায়।
- Probing tasks: বিশেষ test — "এই embedding কি plurality information ধরে রাখে?"
Dimensionality reduction — visualization:
- PCA (Principal Component Analysis): linear. যেদিকে variance সর্বোচ্চ — সেই directions বাছে। ৭৬৮-D → ২-D-এ project. দ্রুত, deterministic, কিন্তু non-linear structure miss.
- t-SNE (২০০৮, van der Maaten): non-linear. কাছের বিন্দু কাছে রাখে, দূর সম্পর্ক ছেড়ে দেয়। Local cluster সুন্দর দেখায় — কিন্তু global geometry বিকৃত। Hyperparameter (perplexity)-এর প্রতি sensitive.
- UMAP (২০১৮): t-SNE-এর successor. Local + global structure দু'টিই কিছুটা সংরক্ষণ। দ্রুত, scaling ভাল।
Visualization সাবধানতা:
- "t-SNE plot-এ দূরত্ব = original space-এ দূরত্ব" — এটা ভুল। শুধু relative grouping সঠিক।
- একই ডেটা — ভিন্ন seed-এ আলাদা plot. এটা artistic interpretation.
- Cluster shape, size, density — অনেকটাই hyperparameter-নির্ভর।
বিকল্প পদ্ধতি:
- Cosine similarityCosine Similarityদু'টি ভেক্টরের মধ্যে কোণের cosine — -১ থেকে ১ পর্যন্ত। ১ মানে একই দিক (সাদৃশ্যপূর্ণ), ০ মানে orthogonal, -১ মানে বিপরীত। semantic search ও NLP-তে অপরিহার্য। matrix: ১০,০০০ items pairwise compare — heatmap.
- Nearest neighbors: "এই vector-এর top-10 closest কে?" — semantic check.
- Linear probes: simple classifierClassifierএকটি মডেল যা input-কে শ্রেণিতে ভাগ করে — যেমন "বিড়াল" বনাম "কুকুর" বা "spam" বনাম "ham"। ML-এর সবচেয়ে সাধারণ task. টানিয়ে দেখা — কী property encoded.
- Mechanistic interpretability: Anthropic-এর সাম্প্রতিক কাজ — neurons-এ কী represent তা trace করা।
মূল উপলব্ধি: মানুষ high-D space "দেখতে" পারে না। তাই AI gymnastics — projection, probing, indirect verification. এটাই embedding research-এর core challenge — এবং আকর্ষণ।
প্র ০৩ "Curse of Dimensionality" কী? উচ্চ-মাত্রিক ভেক্টরে কী এমন বিপরীতমুখী ঘটে — যা ২-D intuition থেকে আশা করা যায় না?
Richard Bellman ১৯৬১-তে এই শব্দটি ব্যবহার করেন। High-D-এ অনেক জিনিস "অদ্ভুত" হয়ে যায় যা low-D intuition বিপরীত। AI/ML-এ এটি critical.
(১) দূরত্ব meaningless হয়ে যায়:
- ২-D-তে closest neighbor ও farthest neighbor-এর দূরত্ব significant ভিন্ন।
- ১,০০০-D-তে — random points-এর pairwise distances প্রায় সবই কাছাকাছি। "নিকটতম" আর "দূরতম"-এর পার্থক্য vanishingly small.
- ফলস্বরূপ — k-NN, clustering algorithms high-D-এ ভেঙে পড়ে।
(২) Volume বিস্ফোরণ:
- একটি unit cube-এর volume — ১। কিন্তু ১০-D unit cube-এর প্রায় সব volume কোণায়।
- একটি unit hypersphere ১০-D-এ — cube-এর volume-এর মাত্র ০.২৫% দখল করে।
- Random points প্রায় সবসময় edge-এ — center-এ rarely.
(৩) Sample size requirement:
- ২-D-তে একটি grid cover করতে ১০×১০ = ১০০ sample. ১০-D-এ ১০¹⁰।
- "Density estimation" exponentially harder.
- এই কারণেই DL-এর বিশাল ডেটা চাই — high-D space cover করতে।
(৪) Orthogonality সর্বত্র:
- ২-D-তে দু'টি random vectors পরস্পর কোণ ~৪৫°।
- ১,০০০-D-তে — দু'টি random vectors প্রায় সবসময় orthogonal (90°)।
- চমৎকার — অর্থাৎ random initialization-এ neurons "interfere" করে না।
(৫) Manifold hypothesis:
- Real data ১৫০,৫২৮-D ছবি space-এর সব পয়েন্ট নয়।
- "মুখ" ছবিগুলো একটি অনেক ছোট manifold-এ বাস করে — হয়তো ৫০-১০০-D.
- DL এই হিডেন low-D structure শেখে — এটাই representation learning.
প্রভাব AI-তে:
- Cosine similarity euclidean-এর চেয়ে preferred (dimension-invariant)।
- Regularization (L2, dropout) — high-D-এ overfitting রোধ।
- Embedding dimension carefully tuned — খুব বেশি বা কম দু'টোই খারাপ।
মূল উপলব্ধি: ২-D-র intuition high-D-এ misleading. AI-তে গণিত শুধু "লিখিত সূত্র" নয় — geometry-র গভীর বোধও দরকার। এই কারণেই linear algebra ML-এর মেরুদণ্ড।
প্র ০৪ আপনি Daraz-এর জন্য একটি গ্রাহক-ভেক্টর ডিজাইন করছেন। কোন ৫টি feature বাছবেন? কোন trade-off আছে — feature বেশি বনাম কম, নির্দিষ্ট বনাম generic?
Feature engineering — DL-এর আগের যুগে ML-এর কঠিনতম অংশ। এখনো production system-এ এটাই অর্ধেক কাজ।
৫টি ভাল feature (Daraz-এর জন্য):
- ৩০ দিনে ক্রয় সংখ্যা: activity level. তবে cap করুন (৫০-এ) — outlier-এর প্রতি sensitive.
- গড় order value (BDT): spending capacity. Log-transform করুন (skewed distribution)।
- Top-3 ক্যাটেগরির one-hot: "fashion, electronics, beauty" interest. Sparse কিন্তু interpretable.
- Days since last purchase: recency. 1/(1+days) — recency bias.
- Cart abandonment rate: commitment level. 0-1 ratio.
আরও যা যুক্ত করা যায়:
- Geographic (district, urban/rural)।
- Device (mobile vs desktop, iOS vs Android)।
- Payment method preference (COD vs digital)।
- Average rating given to products.
- Refund/return rate.
- Time-of-day shopping pattern.
Trade-offs:
(ক) বেশি feature বনাম কম:
- বেশি (১০০+): মডেল বেশি signal পায়, কিন্তু overfittingOverfittingমডেল training data মুখস্থ করে ফেলে — কিন্তু নতুন data-তে খারাপ পারফর্ম করে। সাধারণ সমাধান: regularization, dropout, বেশি data. risk. Curse of dimensionality. Training slow.
- কম (৫-১০): Interpretable, generalizable. কিন্তু important pattern miss করতে পারে।
- Sweet spot: সাধারণত ২০-৫০ + DL embedding (যেখানে embedding আরও ১০০-D auto-learn)।
(খ) Generic বনাম specific:
- Generic: "spending", "frequency" — সব business-এ portable. ছোট ডেটায় কাজ করে।
- Specific: "ঈদ-এ extra discount-এ buy করে কি?" — Daraz-এ অসাধারণ, অন্য business-এ অর্থহীন।
- Production-এ — domain-specific features key competitive advantage.
(গ) Static বনাম dynamic:
- Age, gender — static. সহজ।
- "Last 7 days behavior" — dynamic. প্রতিদিন update দরকার। Infrastructure cost.
- Best practice: দু'টোই — static profile + recent behavior.
(ঘ) Privacy concern:
- Religion infer করা ("ঈদ-এ active") — sensitive.
- Disability infer করা (search patterns) — privacy-violating.
- Data Protection Act-এর আলোকে — sensitive features সাবধানে।
মূল কথা: "Vector design" শুধু গাণিতিক না — business + ethics + infrastructure-এর সমন্বয়। যিনি এই trade-offs ভালো বুঝেন — তিনি ভালো ML engineer.
অনুশীলন
-
হিসাব করুন: $\mathbf{a} = (1, 2, 3)$ এবং $\mathbf{b} = (4, 5, 6)$।
- $\mathbf{a} + \mathbf{b}$ কত?
- $3 \mathbf{a}$ কত?
- $\| \mathbf{a} \|$ কত? (পাইথাগোরাসের ৩-মাত্রিক রূপ ব্যবহার করুন)
- $\mathbf{a} + \mathbf{b} = (1+4, 2+5, 3+6) = (5, 7, 9)$।
- $3\mathbf{a} = (3, 6, 9)$।
- $\|\mathbf{a}\| = \sqrt{1^2 + 2^2 + 3^2} = \sqrt{1+4+9} = \sqrt{14} \approx 3.742$।
-
NumPy-তে চেষ্টা: উপরের প্রশ্নের উত্তর NumPy দিয়ে যাচাই করুন।
import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) print(a + b) # [5 7 9] print(3 * a) # [3 6 9] print(np.linalg.norm(a)) # 3.7416... -
ভাবুন: বাংলাদেশের একটি দোকানের প্রতিটি গ্রাহককে আপনি কী কী সংখ্যা দিয়ে ভেক্টরে রূপান্তর করবেন? অন্তত ৫টি বৈশিষ্ট্য লিখুন।
প্র ০৪-এর উত্তরে বিস্তারিত আছে। সংক্ষেপে:
- ৩০ দিনের ক্রয় সংখ্যা
- গড় order value (BDT)
- top-3 ক্যাটেগরির one-hot
- days since last purchase
- cart abandonment rate
Trade-off মাথায় রাখুন: বেশি features = signal বেশি কিন্তু overfitting; generic vs domain-specific; privacy concerns.
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১২ · ম্যাট্রিক্স — সংখ্যার টেবিল পরবর্তী পাঠ অনেক ভেক্টর একসাথে = ম্যাট্রিক্স। AI-র সব transformation এতে।
- পাঠ ১০ · মডিউল ১ পর্যালোচনা আগের পাঠ গণিত শুরুর আগে কনফিউজ লাগলে — মডিউল ১-এ ফিরে যান।
- পাঠ ১৪ · Gradient এই পাঠের সাথে সম্পর্কিত Gradient নিজেই একটি ভেক্টর — যা loss কমানোর দিক দেখায়।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।