AI සඳහා Linear Algebra ඉගෙන ගමු | Vectors, Matrices, Eigenvalues, LLMs | Sinhala Guide

කට්ටියට කොහොමද! 🙋♂️
අපි හැමෝම Artificial Intelligence (AI) කියන මාතෘකාවට වශී වෙලා ඉන්නේ මේ දවස්වල. විශේෂයෙන්ම ChatGPT වගේ Large Language Models (LLMs) ආවට පස්සේ, AI වලට කරන්න පුළුවන් දේවල් ගැන අපිට හිතාගන්නත් බැරි වුණා නේද? ඒත් ඇත්තටම මේ හැම 'මැජික්' එකක් පිටිපස්සෙම තියෙන්නේ ගණිතයේ බලය. මේ AI systems ක්රියාත්මක වෙන්න පදනම වෙන්නේ Linear Algebra කියන ගණිත ශාඛාවයි.
දැන් ඔයාට හිතෙන්න පුළුවන්, "අනේ ගණිතය ද?" කියලා. 😅 ඒත් බය වෙන්න එපා! අපි මේ ලිපියෙන් Linear Algebra වල මූලික සංකල්ප මොනවද, ඒවා AI සහ LLMs වලට කොහොමද සම්බන්ධ වෙන්නේ කියලා සරලව, පහසුවෙන් තේරුම් ගන්න පුළුවන් විදියට කතා කරනවා. ගණිතය ගැන ලොකු දැනුමක් නැති කෙනෙක්ට වුණත් මේකෙන් AI වලට පදනම් වන දේවල් ගැන හොඳ අවබෝධයක් ගන්න පුළුවන් වෙයි.
අපි මේ ලිපියෙන් කතා කරන දේවල්:
- Vectors: AI ගමනේ මුල් පියවර
- Matrices: දත්ත ව්යුහගත කිරීමේ බලය
- Matrix Operations: AI වල "ඇට-සන්ධි"
- Eigenvalues & Eigenvectors: දත්ත වල සැඟවුණු රටා
එහෙනම්, අපි පටන් ගමුද?
Vectors - AI ගමනේ මුල් පියවර (The First Step in the AI Journey)
හිතන්නකෝ ඔයා තොරතුරු ටිකක් එක තැනකට එකතු කරනවා කියලා. උදාහරණයක් විදියට, ගෙදරක මිල තීරණය කරන්න බලපාන කරුණු ටිකක්: වර්ග අඩි ගාණ, කාමර ගාණ, ගෙදර හදලා ගතවෙච්ච කාලය. මේ තොරතුරු ටික එකතු කරලා අපි මෙහෙම ලියමු: [2000, 3, 10]
.
ගණිතයේදී මේ වගේ තොරතුරු සමූහයකට තමයි Vector එකක් කියන්නේ. සරලව කිව්වොත්, Vector එකක් කියන්නේ අංක එකතුවක්. මේවාට දිශාවක් (direction) සහ විශාලත්වයක් (magnitude) තියෙනවා. AI වලදී මේවා බොහෝ වෙලාවට feature vectors විදියට හඳුන්වනවා. මොකද, දත්ත වල තියෙන features (ලක්ෂණ) මේ vectors වලින් තමයි නිරූපණය කරන්නේ.
Vectors වල භාවිතයන්:
- Feature Vectors: Machine Learning (ML) වලදී, ඕනෑම දත්ත කට්ටලයක (dataset) තියෙන එක data point එකක් (උදා: එක් නිවසක්, එක් පාරිභෝගිකයෙක්) feature vector එකක් විදියට නිරූපණය කරන්න පුළුවන්. උඩ කියපු උදාහරණය වගේම, රූපයක් ගත්තොත්, ඒකේ තියෙන pixel values vector එකක් විදියට ගන්න පුළුවන්. මේ vectors තමයි AI model එකට පුහුණු වෙන්න (train) දෙන්නේ.
- Word Embeddings (LLMs): Large Language Models (LLMs) වලදී වචන තේරුම් ගන්න Word Embeddings පාවිච්චි කරනවා. මේවා කියන්නේ high-dimensional vectors. මේවා මඟින් වචනවල තේරුම සහ ඒවා අතර තියෙන සම්බන්ධතා ගණිතමය වශයෙන් නිරූපණය කරනවා. උදාහරණයක් විදියට, "රජු" (king) කියන වචනයට ආසන්න Vector එකක් "රැජින" (queen) කියන වචනයටත් තියෙන්න පුළුවන්. ඒ වගේම
Vector(King) - Vector(Man) + Vector(Woman)
කියන ගණනයෙන්Vector(Queen)
එකට ආසන්න vector එකක් ලැබෙනවා. නියමයි නේද? 🤩
Vectors Operations (ක්රියා):
- Vector Addition: Vectors දෙකක් එකතු කරන්න පුළුවන්. උදා:
[1, 2] + [3, 4] = [4, 6]
. මේවා එකට ක්රියා කරන ආකාරය පෙන්නනවා. - Scalar Multiplication: Vector එකක් තනි අංකයකින් (scalar) වැඩි කරන්න පුළුවන්.
2 * [1, 2] = [2, 4]
. මේකෙන් vector එකේ විශාලත්වය වෙනස් වෙනවා.
Dot Product: Vectors දෙකක Dot Product එකක් කියන්නේ අංකයක් (scalar) විදියට ලැබෙන දෙයක්. මේකෙන් vectors දෙකක සමානකම (similarity) මනින්න පුළුවන්. AI වලදී, විශේෂයෙන්ම LLMs වලදී, මේක හරියටම පාවිච්චි කරනවා වචන හෝ වාක්ය අතර සමානකම් හොයන්න.
import numpy as np
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
# Dot product using NumPy
dot_product = np.dot(vector1, vector2)
print(f"Vector 1: {vector1}")
print(f"Vector 2: {vector2}")
print(f"Dot Product: {dot_product}") # Output: 32 (1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32)
Dot Product එකෙන් ලැබෙන අගය වැඩි වෙන්න වැඩි වෙන්න, vectors දෙක අතර සමානකම වැඩි කියලා හිතන්න පුළුවන් (ඒවා එකම දිශාවට නම්). LLMs වලදී, මේකෙන් 'semantic similarity' හොයා ගන්නවා.
Matrices - දත්ත ව්යුහගත කිරීමේ බලය (The Power of Structuring Data)
Vectors කියන්නේ එක දිගට තියෙන තොරතුරු සමූහයක් නම්, Matrix එකක් කියන්නේ vectors ගොඩක් එකතු කරලා හදපු, සෘජුකෝණාස්රාකාර විදියට අංක සකස් කරපු ව්යුහයක්. සරලව කිව්වොත්, rows (පේළි) සහ columns (තීරු) තියෙන table එකක් වගේ.
උදාහරණයක් විදියට, ගෙවල් කීපයක මිල තීරණය කරන කරුණු (features) තියෙන dataset එකක් Matrix එකක් විදියට නිරූපණය කරන්න පුළුවන්:
[[2000, 3, 10],
[1500, 2, 5 ],
[3000, 4, 15]]
මේකේ, එක row එකක් කියන්නේ එක ගෙදරකට අදාළ feature vector එකක්. columns කියන්නේ ඒ features වලට (වර්ග අඩි, කාමර ගාණ, කාලය).
Matrices වල භාවිතයන්:
- Data Representation: මුළු dataset එකක්ම Matrix එකක් විදියට නිරූපණය කරනවා. Image processing වලදී, image එකක් කියන්නේ pixel values තියෙන Matrix එකක්. Grey-scale image එකක් නම් 2D Matrix එකක්, colour image එකක් නම් 3D Matrix එකක් (Red, Green, Blue channels).
- Transformations: Matrices පාවිච්චි කරලා දත්ත වල පරිවර්තන (transformations) කරන්න පුළුවන්. උදාහරණයක් විදියට, රූපයක් කරකවන්න (rotate) හෝ විශාල කරන්න (scale) Matrix Operations වලින් පුළුවන්.
- Neural Networks: AI වලදී Matrices වල තියෙන වැදගත්ම භාවිතය තමයි Neural Networks වල weights (භාර) සහ biases (පක්ෂපාතීත්වය) නිරූපණය කිරීම. Neural Network එකක Layers අතර දත්ත ගමන් කරද්දී, input data Matrix එකක්, weights Matrix එකක් එක්ක වැඩි කරනවා. මේ Matrix Multiplication තමයි Neural Network එකේ 'thinking' process එකේ හරය.
Matrix Operations - AI වල "ඇට-සන්ධි" (The "Joints" of AI)
Matrices වලටත් Vectors වගේම addition, scalar multiplication වගේ operations තියෙනවා. ඒත් AI වලට වඩාත්ම වැදගත් එක තමයි Matrix Multiplication.
Matrix Multiplication (Matrices ගුණ කිරීම):
මේක තමයි AI වල, විශේෂයෙන්ම Neural Networks වල, 'secret sauce' එක. හිතන්නකෝ ඔයාගේ Neural Network එකේ input එකක් තියෙනවා (ඒක Vector එකක්). මේ input එක ඊළඟ layer එකේ තියෙන Neurons වලට කොච්චර බලපානවද කියලා තීරණය කරන්නේ weights කියන Matrices වලින්. ඒ වගේම, LLMs වල attention mechanisms වල පදනමත් Matrix Multiplication එක තමයි.
Matrix Multiplication වලදී, පළමු Matrix එකේ row එකක්, දෙවන Matrix එකේ column එකක් එක්ක Dot Product එකක් ගන්නවා. මේක ටිකක් සංකීර්ණ වගේ පෙනුණත්, ඒක හැදෙන හැටි තේරුම් ගත්තාම පහසුයි.
උදාහරණයක් විදියට, ඉතාම සරල Neural Network එකක එක් layer එකක ගණනය කිරීමක් බලමු. මෙතනදී, Input Vector එකක්, Weight Matrix එකක් එක්ක වැඩි කරලා, Bias Vector එකක් එකතු කරන හැටි අපි NumPy library එක පාවිච්චි කරලා බලමු.
import numpy as np
# Input vector (උදා: features 2ක් තියෙන data point එකක්)
# මේක Neural Network එකට දෙන input එක කියලා හිතන්න.
input_vector = np.array([1.0, 0.5])
# Weight Matrix (weights for a single layer)
# මේකෙන් කියවෙන්නේ input features දෙක, ඊළඟ layer එකේ neurons තුනට කොහොමද සම්බන්ධ වෙන්නේ කියලා.
# (2 inputs to 3 neurons)
weight_matrix = np.array([
[0.2, 0.8, -0.5], # Neuron 1 ට අදාළ weights
[0.1, 0.3, 0.7] # Neuron 2 ට අදාළ weights
])
# Bias Vector for the layer (neurons ගාණට ගැලපෙන්න ඕනේ)
# Bias එක කියන්නේ neural network එකට flexibility එකක් දෙන අගයක්.
bias_vector = np.array([0.1, -0.2, 0.3])
# Matrix Multiplication: input_vector @ weight_matrix
# මේකෙන් කරන්නේ input එක, weights එක්ක වැඩි කරලා weighted sum එක හොයන එක.
weighted_sum = input_vector @ weight_matrix
# Add Bias
# ලැබුණු weighted sum එකට bias එක එකතු කරනවා.
output_before_activation = weighted_sum + bias_vector
print(f"Input Vector: {input_vector}")
print(f"Weight Matrix:\n{weight_matrix}")
print(f"Bias Vector: {bias_vector}")
print(f"Weighted Sum (input @ weights): {weighted_sum}")
print(f"Output Before Activation (weighted_sum + bias): {output_before_activation}")
# සැබෑ Neural Network එකක නම්, මේ output එකට පස්සේ activation function එකක් (ReLU, Sigmoid වගේ) Apply කරනවා.
# ඒකෙන් තමයි Neuron එක activate වෙන්නද නැද්ද කියලා තීරණය කරන්නේ.
මේ Code එකෙන් තේරෙනවා නේද, කොහොමද Matrix Multiplication එක Neural Network එකක හදවත වෙන්නේ කියලා? මේ වගේ ගණනය කිරීම් බිලියන ගණනක් තමයි LLMs වගේ විශාල Models වල තත්පරයකට සිද්ධ වෙන්නේ!
Eigenvalues & Eigenvectors - දත්ත වල සැඟවුණු රටා (Hidden Patterns in Data)
දැන් අපි Linear Algebra වල තවත් රසවත් සංකල්ප දෙකක් ගැන කතා කරමු: Eigenvalues සහ Eigenvectors. මේවා ටිකක් සංකීර්ණ වගේ පෙනුණත්, ඒකේ අදහස තේරුම් ගත්තාම හරිම සරලයි.
හිතන්නකෝ ඔයා ඡායාරූපයක් විකෘති කරනවා (transform) කියලා. ඡායාරූපයේ තියෙන ලක්ෂ්ය (points) ඔක්කොම අලුත් තැනකට යනවා, සමහරවිට ඡායාරූපය කැරකෙනවා, දිග ඇරෙනවා, හෝ තද වෙනවා.
ඒත් මේ transformations වලින් පස්සෙත්, සමහර vectors තියෙනවා ඒවායේ දිශාව වෙනස් වෙන්නේ නැහැ. ඒවා කරන්නේ තනි අංකයකින් (scalar) වැඩි වීමක් විතරයි. මේ වගේ විශේෂ vectors වලට තමයි Eigenvectors කියන්නේ. ඒ වගේම, මේ Eigenvector එක වැඩි වන අංකයට Eigenvalue එකක් කියනවා.
ඇයි මේවා AI වලට වැදගත්?
Eigenvalues & Eigenvectors වල භාවිතයන්:
- Principal Component Analysis (PCA): මේක Machine Learning වලදී දත්ත වල dimensions අඩු කරන්න (dimensionality reduction) පාවිච්චි කරන ප්රබලම technique එකක්. හිතන්න ඔයාට ගොඩක් features තියෙන dataset එකක් තියෙනවා (උදා: 1000 features). මේ හැම feature එකක්ම හැම වෙලාවෙම වැදගත් නැහැ. PCA කරන්නේ, මේ දත්ත වල තියෙන වැදගත්ම "දිශාවන්" හොයාගෙන (මේවා තමයි Principal Components, ඒවා Eigenvectors වලින් නිරූපණය කරනවා), ඒ දිශාවන්ට අනුව දත්ත අඩු dimensions ගාණකට පරිවර්තනය කරන එකයි. මේකෙන් model එක ඉක්මන් වෙනවා වගේම, overfitting අඩු කරන්නත් පුළුවන්.
- Image Compression: රූප වල තියෙන වැදගත් තොරතුරු (features) හඳුනාගෙන, අනවශ්ය තොරතුරු ඉවත් කරන්න මේ සංකල්ප පාවිච්චි කරන්න පුළුවන්.
- LLMs සහ Data Structure: LLMs වලදී, විශාල Text data sets analyze කරද්දී, යම් යම් වචන හෝ concepts අතර තියෙන core relationships තේරුම් ගන්න මේ වගේ සංකල්ප (SVD - Singular Value Decomposition වගේ) පාවිච්චි වෙනවා. මේවා Matrix එකක තියෙන 'core structure' එක එළියට ගන්න උදව් වෙනවා.
සරලව කිව්වොත්, Eigenvalues සහ Eigenvectors අපිට උදව් කරන්නේ දත්ත වල තියෙන සැඟවුණු, වඩාත්ම වැදගත් රටා සහ දිශාවන් හඳුනා ගන්න. ඒක AI model එකකට දත්ත වඩා හොඳින් තේරුම් ගන්න උදව් වෙනවා.
නිගමනය (Conclusion)
ඉතින්, අපි Linear Algebra වල තියෙන මූලිකම සංකල්ප ටිකක් ගැන කතා කළා. Vectors, Matrices, Matrix Operations, Eigenvalues, සහ Eigenvectors කියන්නේ AI, Machine Learning, සහ Large Language Models (LLMs) වලට පදනම් වන වැදගත්ම අංග. මේවා ගැන අවබෝධයක් තියෙන එක, AI ලෝකය තවත් හොඳින් තේරුම් ගන්න ඔයාට උදව් වෙයි.
- Vectors අපිට දත්ත තනි තනි data points විදියට නිරූපණය කරන්න උදව් කරනවා.
- Matrices මේ data points ගොඩක් එකතු කරලා, ඒවාට transformations කරන්න වගේම, Neural Networks වල Weights විදියට වැඩ කරන්නත් උදව් වෙනවා.
- Matrix Multiplication කියන්නේ Neural Networks වල 'thinking process' එකේ හරය.
- Eigenvalues සහ Eigenvectors අපිට දත්ත වල තියෙන වැදගත්ම patterns සහ directions හොයාගන්න උදව් කරනවා, විශේෂයෙන්ම dimensionality reduction වලදී.
දැන් ඔයාට මේ සංකල්ප ගැන හොඳ අවබෝධයක් ලැබිලා ඇති කියලා මම හිතනවා. මතක තියාගන්න, මේවා හුදු ගණිතමය සංකල්ප නෙවෙයි, AI වලට පණ දෙන මූලිකම tools. 🛠️
මේ සංකල්ප තව දුරටත් ඉගෙන ගන්න, Python වල NumPy library එක පාවිච්චි කරලා අත්හදා බලන්න. මම දීපු Code snippet එක වෙනස් කරලා, ඔයාගේම calculations ටිකක් කරන්න උත්සාහ කරන්න.
ඔයාගේ අත්දැකීම් හෝ මේ ගැන තියෙන ප්රශ්න පහළින් comment කරන්න! අපි එකට ඉගෙන ගමු. 😊