ছোটবেলায় কাগজে আঁকা একটি বর্গকে যদি টেনে লম্বা করেন, ঘুরিয়ে দেন, কিংবা আয়নায় উল্টে দেন — প্রতিটি action একটি linear transformation। AI-তে neural network-এর প্রতিটি layer ঠিক এই কাজই করে — input space-কে এমনভাবে "বাঁকিয়ে-ঘুরিয়ে" দেয় যাতে শেষ পর্যন্ত pattern সহজে আলাদা করা যায়।
Linear Transformation কী?
একটি function T : ℝⁿ → ℝᵐ linear, যদি দুটি শর্ত মানে:
প্রতিটি linear transformation একটি matrix দিয়ে লেখা যায়:
৫টি Geometric Transformation
1. Scaling
2. Rotation (angle θ)
3. Reflection (x-axis)
4. Shear
5. Projection (onto x-axis)
Composition = Matrix Multiplication
দুটি transformation পরপর প্রয়োগ করলে — সমতুল্য matrix = দুটির গুণফল:
Rank, Null Space, Column Space
- Column space: A-র column-গুলোর span — output কোন subspace-এ পড়বে।
- Rank: independent column-এর সংখ্যা = output-এর "actual" মাত্রা।
- Null space: যেসব x-এ Ax = 0 — transformation যেগুলোকে "মুছে" দেয়।
- Rank-nullity theorem: rank(A) + nullity(A) = n।
Eigenvector-এর সাথে সংযোগ
Eigenvector = সেই বিশেষ direction যেগুলো transformation-এ ঘোরে না, শুধু stretch/shrink হয়। তাই একটি linear transformation বোঝার সহজ উপায় — তার eigen-direction গুলোতে কী হচ্ছে দেখা।
Python (NumPy + matplotlib intuition)
import numpy as np
# 1) Define a unit square (4 corners as columns)
square = np.array([[0, 1, 1, 0],
[0, 0, 1, 1]])
# 2) Scaling by 2
S = np.array([[2, 0], [0, 2]])
# 3) Rotation by 45 degrees
theta = np.pi / 4
R = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
# 4) Shear
H = np.array([[1, 0.5], [0, 1]])
# Apply transformations
print("scaled corners:\n", S @ square)
print("rotated corners:\n", R @ square)
print("sheared corners:\n", H @ square)
# Composition: first rotate, then scale
combined = S @ R # equivalent matrix
print("combined corners:\n", combined @ square)
# Rank & null space inspection
A = np.array([[1.0, 2.0], [2.0, 4.0]]) # rank-1 (rows are dependent)
print("rank:", np.linalg.matrix_rank(A)) # 1
# Null space: any x with x2 = -x1/2 maps to 0
x = np.array([2.0, -1.0])
print("A x =", A @ x) # ~ [0, 0]AI/ML সংযোগ
- Dense layer = linear transformation + bias + non-linear activation।
- Embedding layer = discrete token → continuous vector space-এ projection।
- PCA = data-কে নতুন (eigen) basis-এ rotate করে dimension কমানো।
- Whitening = data-এর covariance-কে Identity-তে transform করা।
- Convolution = locally-applied linear transformation, weight shared।
- Non-linearity-র গুরুত্ব: শুধু linear layer stack করলে পুরোটাই একটি linear transformation হয়ে যায় — তাই ReLU/sigmoid দরকার।
Common Mistakes
- Affine ≠ Linear — Ax + b linear নয় (origin শূন্যে যায় না)। কিন্তু "homogeneous coordinate"-এ linear।
- Composition order ভুলে যাওয়া।
- Singular (rank-deficient) matrix-কে invert করার চেষ্টা।
Practice Tasks
- 90° rotation matrix বানান এবং [1, 0] কোথায় যায় verify করুন।
- [[1, 1], [0, 1]]-এর rank ও null space বের করুন।
- Rotation আগে নাকি scaling আগে — দুই order-এ একটি square transform করে পার্থক্য দেখান।
Assignment
matplotlib দিয়ে একটি unit square আঁকুন। তারপর scale, rotate, shear, reflect — প্রতিটির পর shape কেমন হয় subplot-এ দেখান। সবশেষে দুটি transformation compose করে দেখান order বদলালে আকার বদলে যাচ্ছে।
Interview Questions
- Linear transformation-এর দুই শর্ত কী?
- Affine ও linear-এর পার্থক্য?
- Non-linearity ছাড়া deep network কেন কাজ করে না?
- Rank-deficient matrix বলতে কী বোঝায়, কেন সমস্যা?
Mini Project
"2D Transform Visualizer" — Python script যেখানে user একটি 2×2 matrix input দেবে, এবং script সেই transformation-এর under unit grid কেমন দেখায় plot করবে। সাথে rank, det, eigenvalue print করবে।
Summary · সারসংক্ষেপ
- Linear transformation = matrix multiplication; origin fixed, সরলরেখা সরল থাকে।
- Scaling, rotation, reflection, shear, projection — ৫টি core type।
- Composition = matrix multiplication; order matters।
- Neural network = transformation এবং non-linearity-র পরপর প্রয়োগ।