AI සඳහා ගණිතය: Linear Algebra, Calculus, Probability, Statistics | Sinhala Guide

ඉතින් කොහොමද යාලුවනේ? ඔයාලා හැමෝම Artificial Intelligence (AI) ගැන අහලා ඇති, ඒ වගේම ඒක කොච්චර වේගයෙන් දියුණු වෙනවද කියලත් දැකලා ඇති. Machine Learning (ML), Deep Learning, Data Science වගේ ක්ෂේත්ර ගැන කතා කරනකොට සමහර අයට හිතෙනවා, "අප්පච්චියේ! මේවා තේරුම් ගන්න හෙන ගණන් දැනුමක් ඕනේ වෙයි!" කියලා. ඒත් ඇත්තටම එහෙමද? ඇත්ත තමයි, AI වලට ගණිතය ගොඩක් වැදගත්. ඒත් ඒ කියන්නේ ඔයාලා Mathematician කෙනෙක් වෙන්න ඕනේ කියන එක නෙවෙයි. AI පිටිපස්සේ තියෙන Core Concepts ටික තේරුම් ගන්න පුළුවන් විදියට Mathematical Basics ටික දැනගෙන ඉන්න එක තමයි වැදගත්.
අද මේ Guide එකෙන් අපි බලමු AI සහ Machine Learning වලට අත්යවශ්යම ගණිත සංකල්ප මොනවද, ඒවයින් මොනවද කෙරෙන්නේ, සහ ඇයි ඒවා අපිට වැදගත් වෙන්නේ කියලා. අපි Linear Algebra, Calculus, Probability Theory, සහ Statistics කියන ක්ෂේත්රවල මූලිකම කරුණු ටික ඉතා සරලව, ඔයාලට තේරෙන සිංහලෙන් කතා කරමු. මේක කියෙව්වට පස්සේ ඔයාලට AI Algorithms වැඩ කරන විදිය ගැන හොඳ අවබෝධයක් ලැබෙයි කියලා මම විශ්වාස කරනවා. එහෙනම් අපි පටන් ගමු!
AI වලට Linear Algebra අත්යවශ්ය ඇයි?
Linear Algebra කියන්නේ AI වල Backbone එක කිව්වොත් හරි. Data Representation එක, Transformations, Neural Networks වල ක්රියාකාරීත්වය වගේ ගොඩක් දේවල් Linear Algebra මත තමයි පදනම් වෙලා තියෙන්නේ. අපි බලමු ප්රධාන සංකල්ප ටිකක්.
Vectors: දත්ත නිරූපණය කරන ආකාරය
සරලවම කිව්වොත්, Vector එකක් කියන්නේ අංක ටිකක List එකක් වගේ දෙයක්. ඒත් මේ අංක වලට Direction එකක් තියෙනවා, ඒ වගේම Magnitude එකක් (දිගක්) තියෙනවා. AI වලදී අපි Data Points නිරූපණය කරන්න Vectors පාවිච්චි කරනවා.
උදාහරණයක් විදියට, ඔයාගේ Customer කෙනෙක්ගේ Data Points ටිකක් හිතන්න:
- වයස (Age) = 30
- මාසික ආදායම (Monthly Income) = 50,000
- මිලදී ගත් භාණ්ඩ ගණන (Number of Items Purchased) = 5
මේවා Vector එකක් විදියට මෙහෙම නිරූපණය කරන්න පුළුවන්: [30, 50000, 5]
. මේ Vector එකේ තියෙන අංක තමයි Elements. මේ වගේ Data Points දහස් ගණනක් අපිට Vectors විදියට Machine Learning Algorithms වලට දෙන්න පුළුවන්.
Vector Operations
Vectors වලට Add කරන්න, Subtract කරන්න, Dot Product එක ගන්න වගේ Operations තියෙනවා. මේවා තමයි Neural Networks වලදී, Similarity Calculations වලදී ගොඩක් පාවිච්චි වෙන්නේ.
Python වලදී අපි සාමාන්යයෙන් NumPy Library එක මේවට පාවිච්චි කරනවා. මෙන්න පොඩි උදාහරණයක්:
import numpy as np
# Vectors නිර්මාණය කිරීම
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
print(f"Vector 1: {v1}")
print(f"Vector 2: {v2}")
# Vector Addition
vec_sum = v1 + v2
print(f"Vector Sum: {vec_sum}") # Output: [5 7 9]
# Dot Product
dot_prod = np.dot(v1, v2)
print(f"Dot Product: {dot_prod}") # Output: 32 (1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32)
Matrices: දත්ත එකතු කිරීම් සහ පරිවර්තන
Matrix එකක් කියන්නේ Rows (පේලි) සහ Columns (තීරු) වලින් සකස් කරපු අංක සමූහයක්. Data එකතුවක් (Dataset) නිරූපණය කරන්න Matrix එකක් ගොඩක් ප්රයෝජනවත්.
උදාහරණයක් විදියට, Customers ලා 3 දෙනෙක්ගේ Data Points (අපේ කලින් Vector එක වගේ) Matrix එකකින් නිරූපණය කරන්න පුළුවන්:
[ 30, 50000, 5 ] <-- Customer 1
[ 25, 40000, 3 ] <-- Customer 2
[ 40, 60000, 7 ] <-- Customer 3
මේ Matrix එකේ Rows 3ක් සහ Columns 3ක් තියෙනවා (3x3 Matrix). AI වලදී Neural Networks වල Weights (බර) නිරූපණය කරන්න සහ Image Processing වලදී Pixels නිරූපණය කරන්න Matrices පාවිච්චි කරනවා.
Matrix Multiplication
Matrix Multiplication කියන්නේ Linear Algebra වල තියෙන ගොඩක් වැදගත් Operation එකක්. Neural Networks වල Layers අතර Data Flow එක ගණනය වෙන්නේ Matrix Multiplication වලින්.
import numpy as np
# Matrices නිර්මාණය කිරීම
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
print(f"Matrix A:\n{A}")
print(f"Matrix B:\n{B}")
# Matrix Multiplication (A * B)
C = np.dot(A, B)
print(f"Matrix C (A * B):\n{C}")
# Output:
# [[19 22]
# [43 50]]
Matrix Multiplication වලට විශේෂ නීති තියෙනවා. උදාහරණයක් විදියට, පළවෙනි Matrix එකේ Columns ගණන දෙවෙනි Matrix එකේ Rows ගණනට සමාන වෙන්න ඕනේ.
Linear Algebra වල වැදගත්කම:
- Data Representation: සංකීර්ණ දත්ත (Images, Text, Numbers) Vectors සහ Matrices විදියට නිරූපණය කිරීම.
- Feature Engineering: අලුත් Features නිර්මාණය කිරීම සහ Existing Features පරිවර්තනය කිරීම.
- Neural Networks: Hidden Layers අතර Data Flow එක සහ Weight Updates ගණනය කිරීම.
- Dimensionality Reduction: PCA (Principal Component Analysis) වගේ Techniques වලින් Data Sets වල Dimensions අඩු කිරීම.
AI වලදී Calculus වලින් වෙන්නේ මොකක්ද?
Calculus කියන්නේ වෙනස්වීම් (Change) අධ්යයනය කරන ගණිත ශාඛාවක්. AI වලදී, විශේෂයෙන්ම Machine Learning Model එකක් Optimized කරන්න (ඒ කියන්නේ හොඳම Result එක දෙන Parameters හොයාගන්න) Calculus අත්යවශ්යයි.
Derivatives: වෙනස් වීමේ වේගය
සරලවම කිව්වොත්, Derivative එකකින් කියවෙන්නේ Function එකක Output එක, Input එකේ පොඩි වෙනසකට කොච්චර සංවේදීද කියන එක. ඒ කියන්නේ Change Rate එක.
AI වලදී අපි Model එකක Loss Function (Model එක වැරදි කරන ප්රමාණය) එකක් පාවිච්චි කරනවා. මේ Loss Function එක අඩුම වෙන්න (ඒ කියන්නේ Model එක හොඳටම Predict කරන්න) ඕනේ. Derivative එකක් අපිට කියනවා Model එකේ Parameter එකක් පොඩ්ඩක් වෙනස් කළොත් Loss එක කොහොමද වෙනස් වෙන්නේ කියලා.
උදාහරණයක් විදියට, f(x) = x^2
කියන Function එකේ Derivative එක f'(x) = 2x
. මේකෙන් කියවෙන්නේ x
වෙනස් වෙනකොට f(x)
වෙනස් වෙන Rate එක.
Gradients: බහුමාන වෙනස්වීම් සහ Gradient Descent
Model එකක Parameters ගොඩක් තියෙනකොට (ඒ කියන්නේ Input Variables ගොඩක් තියෙනකොට) අපි Derivative වෙනුවට Gradient එකක් පාවිච්චි කරනවා. Gradient එකක් කියන්නේ Multi-variable Function එකක Derivatives ටික එකතු කරපු Vector එකක්.
Gradient එක අපිට පෙන්නන්නේ Function එකේ Steepest Ascent (වැඩිම විදියට ඉහළට යන) Direction එක. AI වලදී අපි සාමාන්යයෙන් Gradient Descent කියන Algorithm එක පාවිච්චි කරන්නේ Model එකේ Loss Function එක අඩුම (Minimum) වෙන්න අවශ්ය Parameters ටික හොයාගන්න. Gradient එකේ Opposite Direction එකට පොඩි පොඩි Steps තියලා Loss එක අඩු කරන එක තමයි Gradient Descent වලින් කරන්නේ.
මෙන්න සරල Gradient Descent සංකල්පය පෙන්වන Python code snippet එකක්:
# Simple conceptual example for Gradient Descent
# Let's say our loss function is f(x) = (x - 5)^2 (we want x to be 5 for minimum loss)
# The derivative (gradient) is f'(x) = 2*(x - 5)
def loss_function(x):
return (x - 5)**2
def gradient(x):
return 2 * (x - 5)
x = 0 # Starting point for x
learning_rate = 0.1 # How big of a step to take
iterations = 100
for i in range(iterations):
grad = gradient(x)
x = x - learning_rate * grad # Move in the opposite direction of the gradient
# print(f"Iteration {i+1}: x = {x:.2f}, Loss = {loss_function(x):.2f}")
print(f"Optimized x (should be close to 5): {x:.2f}")
print(f"Minimum Loss: {loss_function(x):.2f}")
# Output will show x converging to 5 and loss to 0.
මේ උදාහරණයේදී අපි x
කියන Parameter එක Optimize කරනවා. Machine Learning Model එකකදී මේ x
වෙනුවට Model එකේ Parameters (Weights, Biases) දහස් ගණනක් තියෙන්න පුළුවන්.
Calculus වල වැදගත්කම:
- Optimization: Gradient Descent වගේ Algorithms වලින් Machine Learning Models වල Parameters Optimize කිරීම.
- Backpropagation: Neural Networks වලදී Errors ආපස්සට ගෙනියමින් Weights Adjust කරන Process එක Calculus මත පදනම් වෙලා තියෙනවා.
- Model Training: Models වලට Data වලින් ඉගෙන ගන්න උදව් කරන ගොඩක් Algorithms වලට Calculus අත්යවශ්යයි.
AI වලට Probability Theory වැදගත් වෙන්නේ ඇයි?
AI කියන්නේ ගොඩක් වෙලාවට Uncertainty (අනියත බව) එක්ක වැඩ කරන දෙයක්. අපි අතේ තියෙන Data එක හැමවෙලේම Perfect නැහැ, ඒ වගේම අපේ Predictions 100% ක් නිවැරදි වෙන්නෙත් නැහැ. මෙන්න මේ Uncertainties එක්ක වැඩ කරන්න Probability Theory අපිට උදව් කරනවා.
මූලික සංකල්ප
- Event: වෙන්න පුළුවන් දෙයක් (උදා: දාදු කැටයක් දැම්මම 6 වැටීම).
- Sample Space: වෙන්න පුළුවන් හැම Outcome එකකම Set එක (උදා: දාදු කැටයක් දැම්මම {1, 2, 3, 4, 5, 6}).
- Probability: Event එකක් වෙන්න තියෙන අවස්ථාව (0ත් 1ත් අතර අගයක්).
Probability Distributions: දත්ත බෙදී යන ආකාරය
Probability Distribution එකක් කියන්නේ Variable එකක Possible Values සහ ඒ Values වල Probability එක දක්වන Function එකක්. AI වලදී අපි Data Sets Analysis කරන්න, Classification Models හදන්න මේ Distributions පාවිච්චි කරනවා.
- Normal Distribution (Gaussian Distribution): ගොඩක් Data Sets වලට (උදා: මිනිස්සුන්ගේ උස) මේ Distribution එක අනුව බෙදී යන ස්වභාවයක් තියෙනවා. Bell-shaped Curve එකක් විදියට මේක හඳුන්වනවා.
- Bernoulli Distribution: Result දෙකක් විතරක් තියෙන Events වලට (උදා: කාසියක් උඩ දැම්මම Head හෝ Tail).
- Uniform Distribution: හැම Outcome එකකටම එකම Probability එක තියෙනකොට.
Bayes' Theorem: විශ්වාසයන් යාවත්කාලීන කිරීම
Bayes' Theorem කියන්නේ Conditional Probability (කොන්දේසි සහිත සම්භාවිතාව) ගණනය කරන්න පාවිච්චි කරන ඉතාම වැදගත් සූත්රයක්. මේකෙන් අපිට පුළුවන් අලුත් Data එකක් ලැබුණාම අපේ Predictions වල Probabilities යාවත්කාලීන කරන්න.
සරලව කිව්වොත්: P(A|B) = P(B|A) * P(A) / P(B)
P(A|B)
: B සිද්ධ වුණා කියලා දැනගෙන A සිද්ධ වෙන්න තියෙන Probability එක. (Posterior Probability)P(B|A)
: A සිද්ධ වුණා කියලා දැනගෙන B සිද්ධ වෙන්න තියෙන Probability එක. (Likelihood)P(A)
: A සිද්ධ වෙන්න තියෙන මුල් Probability එක. (Prior Probability)P(B)
: B සිද්ධ වෙන්න තියෙන මුල් Probability එක.
උදාහරණයක් විදියට, Spam Email Detection එකක් හිතන්න:
A
= Email එක Spam වීම.B
= Email එකේ "Free Money" කියන වචනය තිබීම.
අපිට P(Spam | "Free Money")
හොයන්න පුළුවන් Bayes' Theorem පාවිච්චි කරලා. ඒ කියන්නේ "Free Money" කියන වචනය Email එකේ තියෙනවා නම් ඒක Spam වෙන්න තියෙන Probability එක කොච්චරද?
# Conceptual Python for Bayes' Theorem example
# Prior Probability: P(Spam)
# Let's say 1% of all emails are spam
p_spam = 0.01
# Prior Probability: P(Not Spam)
p_not_spam = 1 - p_spam # 0.99
# Likelihood: P("Free Money" | Spam)
# Let's say 20% of spam emails contain "Free Money"
p_free_money_given_spam = 0.20
# Likelihood: P("Free Money" | Not Spam)
# Let's say only 0.1% of non-spam emails contain "Free Money"
p_free_money_given_not_spam = 0.001
# Calculate P("Free Money") using total probability theorem
# P("Free Money") = P("Free Money" | Spam) * P(Spam) + P("Free Money" | Not Spam) * P(Not Spam)
p_free_money = (p_free_money_given_spam * p_spam) + \
(p_free_money_given_not_spam * p_not_spam)
# Now, apply Bayes' Theorem: P(Spam | "Free Money")
p_spam_given_free_money = (p_free_money_given_spam * p_spam) / p_free_money
print(f"Probability of 'Free Money' in any email: {p_free_money:.4f}")
print(f"Probability of an email being spam GIVEN it contains 'Free Money': {p_spam_given_free_money:.4f}")
# Output will be a higher probability, showing the word 'Free Money' strongly indicates spam.
Bayes' Theorem Naive Bayes Classifier වගේ Models වලට පදනම් වෙනවා.
Probability Theory වල වැදගත්කම:
- Classification: Spam Detection, Medical Diagnosis වගේ Tasks වලදී Events වල Probabilities ගණනය කිරීම.
- Uncertainty Quantification: Model Predictions කොච්චර විශ්වාසදායකද කියලා තේරුම් ගැනීම.
- Generative Models: GANs (Generative Adversarial Networks) වගේ Models වලදී Probability Distributions පාවිච්චි කරනවා අලුත් Data Generate කරන්න.
AI වලට Statistics වලින් ලැබෙන දායකත්වය
Statistics කියන්නේ Data එකතු කරන, Organize කරන, Analyse කරන, Interprete කරන සහ Present කරන ක්රමවේදයන් අධ්යයනය කරන ක්ෂේත්රයක්. AI වලට කලින් Data Science වලට Statistics අත්යවශ්යයි. Data එක තේරුම් ගන්න, Insights ගන්න, Features Extract කරන්න Statistics අපිට උදව් කරනවා.
මූලික සංකල්ප
- Mean (මධ්යන්යය): Data Set එකක Average Value එක.
- Median (මධ්යස්ථය): Data Set එකක මැද අගය (Data එක Order කළාම). Outliers වලින් බලපෑමක් නැහැ.
- Mode (බහුලත්වය): Data Set එකක වැඩියෙන්ම තියෙන අගය.
මේවා Central Tendency measures. ඒ කියන්නේ Data එකේ මැද මොකක්ද කියලා පෙන්නනවා.
Variance & Standard Deviation: දත්ත බෙදී යාමේ ප්රමාණය
Variance සහ Standard Deviation වලින් පෙන්නන්නේ Data Points, Average Value එකෙන් කොච්චර දුරට විසිරිලා තියෙනවද කියන එක (Spread එක). Standard Deviation එක කියන්නේ Variance එකේ Square Root එක.
උදාහරණයක් විදියට, Students ලා පිරිසකගේ විභාග ලකුණු වල Average එක 60 ක් වෙන්න පුළුවන්. ඒත් Standard Deviation එක අඩු නම් හැමෝම 60ට ආසන්නව ලකුණු අරන් තියෙනවා. Standard Deviation එක වැඩියි නම්, සමහරු ගොඩක් වැඩි ලකුණු අරන්, සමහරු ගොඩක් අඩු ලකුණු අරන්.
AI වලදී මේවා Features Normalize කරන්න, Outliers Detect කරන්න, සහ Data එකේ Variation එක තේරුම් ගන්න පාවිච්චි කරනවා.
Correlation: විචල්යයන් අතර සම්බන්ධතාවය
Correlation එකකින් පෙන්නන්නේ Variables දෙකක් අතර තියෙන සම්බන්ධතාවය. Variable එකක් වෙනස් වෙනකොට අනිත් Variable එක කොහොමද වෙනස් වෙන්නේ කියලා මේකෙන් කියනවා.
- Positive Correlation: එක Variable එකක් වැඩි වෙනකොට අනිත් එකත් වැඩි වෙනවා (උදා: අධ්යාපන කාලය සහ ආදායම).
- Negative Correlation: එක Variable එකක් වැඩි වෙනකොට අනිත් එක අඩු වෙනවා (උදා: ව්යායාම කරන ප්රමාණය සහ බර).
- No Correlation: Variables දෙකක් අතර සම්බන්ධයක් නැති වෙලාවට.
AI වලදී Feature Selection වලට Correlation වැදගත්. ගොඩක් Dependant Features අයින් කරන්න මේක උදව් වෙනවා.
Statistics වල වැදගත්කම:
- Data Preprocessing: Data Clean කරන්න, Missing Values Fill කරන්න, Features Scale කරන්න Statistics Methods පාවිච්චි කරනවා.
- Feature Engineering: අලුත් Features හදන්න (උදා: Binning, One-Hot Encoding).
- Model Evaluation: Accuracy, Precision, Recall වගේ Metrics වලින් Model එකක Performance එක Evaluate කරන්න Statistics පාවිච්චි කරනවා.
- Hypothesis Testing: Data එකේ Patterns විශ්වාසදායකද කියලා Check කරන්න.
අවසන් වශයෙන්
ඉතින් යාලුවනේ, ඔයාලා දැක්කා නේද AI සහ Machine Learning කියන්නේ வெறும Program කරන එකක් විතරක් නෙවෙයි කියලා. මේ පිටිපස්සේ ගොඩක් Powerful Mathematical Concepts තියෙනවා. Linear Algebra වලින් Data Represent කරන විදිය, Calculus වලින් Models Optimize කරන විදිය, Probability Theory වලින් Uncertainties Manage කරන විදිය, සහ Statistics වලින් Data එක තේරුම් ගන්න විදිය අපි අද කතා කළා.
මේ Concepts ටික මුලින් අමාරු වගේ පෙනුනත්, ඒවාට පුරුදු වුණාම සහ Practical Applications එක්ක වැඩ කරනකොට ඔයාලට මේවා ගොඩක් සරල වෙයි. මතක තියාගන්න, ඔයාලා Mathematician කෙනෙක් වෙන්න ඕනේ නැහැ, ඒත් මේ මූලික සංකල්ප ටික තේරුම් අරගෙන ඉන්න එක AI ක්ෂේත්රයේ සාර්ථක වෙන්න ගොඩක් වැදගත්.
මම ඔයාලට Suggest කරන්නේ NumPy, Pandas, Scikit-learn වගේ Libraries පාවිච්චි කරලා මේ Concepts Practice කරන්න. එතකොට Theoretical knowledge එක Practical knowledge එකත් එක්ක Combine කරගන්න පුළුවන්. ඒ වගේම Coursera, edX වගේ Platforms වල හොඳ Courses තියෙනවා මේ ගැන තවත් ඉගෙන ගන්න. බය නැතුව පටන් ගන්න, මොකද AI කියන්නේ අනාගතය!
ඔයාලගේ අදහස්, ප්රශ්න, නැත්නම් මේ ගැන තියෙන අත්දැකීම් පහළින් Comment කරන්න. අපි හැමෝටම මේ Technical Journey එකේදී එකිනෙකාට උදව් වෙමු!