LLM Model Evaluation Sinhala | Train-Test Split, Cross-Validation, Overfitting | Bias-Variance Tradeoff Explained

ආයුබෝවන්, Tech ලෝකේ යාළුවනේ! LLM Models Evaluation & Validation Sinhala Guide එකට ඔයාලව සාදරයෙන් පිළිගන්නවා!
ඉතින් කොහොමද, හැමෝටම? අද අපි කතා කරන්න යන්නේ මේ දවස්වල ලෝකේ පුරාම හරිම ජනප්රිය වෙලා තියෙන LLM (Large Language Model) Models ගැන. විශේෂයෙන්ම, LLM Model එකක් අපි හදද්දී, ඒක ඇත්තටම කොච්චර හොඳට වැඩ කරනවද කියලා දැනගන්නේ කොහොමද? ඒක තමයි Model Evaluation සහ Validation කියන්නේ.
AI සහ Machine Learning කියන ක්ෂේත්රය මේ තරම් වේගයෙන් දියුණු වෙනකොට, අපි හදන Models හරියටම වැඩ කරනවා කියලා තහවුරු කරගන්න එක හරිම වැදගත්. විශේෂයෙන්ම LLM වගේ සංකීර්ණ Models වලදී, අපි හිතනවා වගේම අපේ Model එක ඇත්තටම දත්ත තේරුම් අරගෙන, අලුත් දත්ත වලටත් හොඳින් ප්රතිචාර දක්වන්න පුළුවන්ද කියන එක දැනගන්න ඕනේ.
මේ Guide එකෙන් අපි, LLM Models වල සාර්ථකත්වය මනින්න අත්යවශ්ය මූලික සංකල්ප කිහිපයක් ගැන සරලව කතා කරමු. ඒ කියන්නේ, Train-Test Split, Cross-Validation, Overfitting, Underfitting, සහ Bias-Variance Tradeoff කියන දේවල්.
මේ සංකල්ප ටික හරියට තේරුම් ගත්තොත්, ඔයාලට ඔයාලගේ LLM Models වඩාත් හොඳින් නිර්මාණය කරන්න, ඒවායේ කාර්ය සාධනය (performance) වැඩි දියුණු කරන්න, සහ ඒවා ඇත්ත ලෝකයේදී සාර්ථකව යොදවන්න පුළුවන් වෙයි. එහෙනම්, අපි පටන් ගමු!
LLM Models පුහුණු කිරීම සහ පරීක්ෂා කිරීම: Train-Test Split එකක් කියන්නේ මොකක්ද?
අපි හිතමු ඔයාලා අලුත් LLM Model එකක් හදනවා කියලා. මේ Model එකට භාෂාවක් තේරුම් ගන්න, ප්රශ්න වලට උත්තර දෙන්න, නැත්නම් නිර්මාණාත්මක විදියට අලුත් දේවල් ලියන්න පුහුණු කරන්න ඕනේ. මේකට අපිට විශාල දත්ත ප්රමාණයක් (datasets) අවශ්ය වෙනවා. උදාහරණයක් විදියට, පොත්, ලිපි, වෙබ් අඩවි වල තියෙන තොරතුරු වගේ දේවල්.
දැන් ප්රශ්නේ මේකයි: අපේ Model එක මේ පුහුණු කරපු දත්ත වලට විතරක් හොඳට වැඩ කරලා, අලුතින් එන දත්ත වලට වැඩ කරන්නේ නැත්නම් වැඩක් නෑ නේද? අපිට ඕනේ Model එක 'generalize' වෙන්න, ඒ කියන්නේ තමන්ට කවදාවත් නොදුටු දත්ත වලටත් සාර්ථකව ප්රතිචාර දක්වන්න පුළුවන් වෙන්න.
Train-Test Split එකේ වැදගත්කම
මෙන්න මේකට තමයි Train-Test Split කියන සංකල්පය එන්නේ. අපි අපේ මුළු දත්ත කට්ටලය (dataset) කොටස් දෙකකට බෙදනවා:
- Training Data (පුහුණු දත්ත): Model එක පුහුණු කරන්න අපි මේ දත්ත කොටස පාවිච්චි කරනවා. Model එක මේ දත්ත වලින් රටා (patterns), ව්යාකරණ (grammar), සහ තොරතුරු ඉගෙන ගන්නවා.
- Testing Data (පරීක්ෂණ දත්ත): Model එක පුහුණු කරලා ඉවර වුණාට පස්සේ, ඒක කොච්චර හොඳට generalize කරනවද කියලා බලන්න අපි මේ දත්ත කොටස පාවිච්චි කරනවා. මේ දත්ත කොටස Model එක පුහුණු කරන අතරතුර කිසිම වෙලාවක Model එකට පෙන්නන්නේ නෑ. හරියට විභාගෙකට කලින් පාඩම් කරනවා වගේ තමයි Training Data කියන්නේ. විභාගේ ප්රශ්න පත්රේ තමයි Testing Data එක.
මේකේ ප්රධාන අරමුණ තමයි අපේ Model එකේ කාර්ය සාධනය (performance) 'unseen data' (නොදුටු දත්ත) මත කොහොමද කියලා අවංකවම මැන බැලීම.
කොහොමද Train-Test Split එකක් කරන්නේ?
සාමාන්යයෙන්, අපි dataset එක 70-30, 80-20, නැත්නම් 90-10 වගේ අනුපාතයකට බෙදනවා. Training Data එකට වැඩි කොටසක් වෙන් කරලා, Testing Data එකට පොඩි කොටසක් වෙන් කරනවා.
උදාහරණයක් විදියට, Python වල sklearn
පුස්තකාලය (library) භාවිතා කරලා මේක පහසුවෙන් කරන්න පුළුවන්:
from sklearn.model_selection import train_test_split
# Your entire dataset (e.g., text samples and their labels/responses)
X = ["Sentence 1", "Sentence 2", ..., "Sentence N"] # Features (input text)
y = ["Label 1", "Label 2", ..., "Label N"] # Labels/Targets (expected output)
# Split the dataset into training and testing sets
# test_size=0.20 means 20% for testing, 80% for training
# random_state ensures reproducibility (same split every time you run it)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
print(f"Training set size: {len(X_train)}")
print(f"Testing set size: {len(X_test)}")
මේ code එකෙන් අපේ දත්ත කොටස් දෙකකට බෙදනවා. X_train
සහ y_train
කියන්නේ Model එක පුහුණු කරන්න දෙන දත්ත. X_test
සහ y_test
කියන්නේ පුහුණු කරලා ඉවර වුණාට පස්සේ Model එකේ හැකියාව මනින්න පාවිච්චි කරන දත්ත.
සරල Train-Test Split එකකට එහා ගියපු ක්රම: Cross-Validation
Train-Test Split එක හොඳ ආරම්භයක් වුණත්, සමහර වෙලාවට ඒකේ සීමාවන් තියෙන්න පුළුවන්. විශේෂයෙන්ම අපේ dataset එක පොඩි නම්, Train-Test Split එකෙන් ලැබෙන ප්රතිඵල විශ්වාස කරන්න අමාරු වෙන්න පුළුවන්. මොකද, dataset එකේ 'random' විදියට බෙදීම නිසා, train set එකට විතරක් ලක්ෂණ තියෙන දත්ත ගිහින් test set එකට එහෙම නැති දත්ත යන්න පුළුවන්. එතකොට Model එකේ ඇත්ත performance එක මනින්න බැරි වෙනවා.
K-Fold Cross-Validation කියන්නේ මොකක්ද?
මෙන්න මේකට තමයි Cross-Validation කියන ක්රමය එන්නේ. මේකේදී වඩාත් ප්රචලිත ක්රමයක් තමයි K-Fold Cross-Validation කියන්නේ. මේකේදී අපි කරන්නේ මෙහෙමයි:
- මුළු dataset එකම සමාන කොටස් 'K' ගණනකට බෙදනවා (folds).
- ඊට පස්සේ, එක fold එකක් test set එක විදියට තියලා, ඉතුරු K-1 folds train set එක විදියට අරගෙන Model එක පුහුණු කරනවා.
- මේ ක්රියාවලිය K පාරක් නැවත කරනවා. හැම වෙලාවකම වෙනස් fold එකක් test set එක විදියට ගන්නවා.
- අවසානයේදී, මේ K පාරක් කරපු test results වල සාමාන්යය (average) අරගෙන, Model එකේ කාර්ය සාධනය ගැන වඩාත් විශ්වාසනීය අදහසක් ගන්නවා.
හිතල බලන්න, K-Fold Cross-Validation කියන්නේ Model එකට dataset එකේ හැම කොටසක්ම test කරන්න අවස්ථාව ලැබෙනවා කියන එක. ඒ වගේම dataset එකේ හැම කොටසකින්ම ඉගෙන ගන්නත් අවස්ථාව ලැබෙනවා. මේකෙන් Model එකේ performance එක ගැන වඩාත් ස්ථාවර (stable) සහ විශ්වාසනීය (reliable) ඇගයීමක් ලැබෙනවා.
K-Fold Cross-Validation පාවිච්චි කරන්නේ කවදද?
- dataset එකේ ප්රමාණය සාපේක්ෂව අඩු නම්.
- Model එකේ කාර්ය සාධනය ගැන වඩාත් ස්ථාවර ඇගයීමක් අවශ්ය නම්.
- Model එකේ Hyperparameters (Model එක පුහුණු කිරීමට පෙර අප විසින් සකසන අගයන්) සුසර (tune) කරන විට.
LLM Models වලදී, K-Fold Cross-Validation එකක් කිරීම විශාල dataset වලට ගොඩක් වෙලා ගතවෙන, computing power එක වැඩිපුර අවශ්ය වෙන දෙයක්. ඒ නිසා, සාමාන්යයෙන් විශාල LLMs පුහුණු කිරීමේදී Train-Test Split එක වැඩිපුර පාවිච්චි කරනවා. නමුත්, smaller language models හෝ specific task-oriented models වලදී Cross-Validation හරිම ප්රයෝජනවත්.
Model එකේ හැසිරීම තේරුම් ගැනීම: Overfitting සහ Underfitting
දැන් අපි Train-Test Split සහ Cross-Validation ගැන දන්නවනේ. මේ ක්රම වලින් අපි Model එකේ performance එක මනිනවා. හැබැයි, අපේ Model එක හොඳට වැඩ කරනවාද කියලා කියන්න නම්, Overfitting සහ Underfitting කියන සංකල්ප තේරුම් ගන්නම ඕනේ.
සරලව කියනවා නම්, හොඳ Model එකක් කියන්නේ Training Data වලටත් හොඳට වැඩ කරලා, Testing Data (අලුත් දත්ත) වලටත් ඒ වගේම හොඳට වැඩ කරන Model එකක්.
Overfitting: වැඩියි කියන්නේ හොඳ නෑ!
හිතන්න ඔයාලා විභාගෙකට පාඩම් කරනවා කියලා. පොතේ තියෙන හැම වචනයක්ම, හැම වාක්යයක්ම කටපාඩම් කරගෙන විභාගෙට ගියාම, පොතේම තියෙන ප්රශ්න ආවොත් ඔයාලට ඒ විභාගෙට A+ ගන්න පුළුවන්. හැබැයි, ප්රශ්න පොතෙන් පිටින් ටිකක් වෙනස් කරලා අහද්දී, ඔයාලට උත්තර දෙන්න බැරි වෙනවා. මොකද, ඔයාලා පාඩම් කළේ තොරතුරු තේරුම් අරගෙන නෙවෙයි, කටපාඩම් කරගෙන.
Overfitting කියන්නේ හරියට ඒ වගේ දෙයක් තමයි. Model එක Training Data වල තියෙන noise (අනවශ්ය තොරතුරු) පවා ඉගෙනගෙන, Training Data වලට විතරක් හරිම හොඳට වැඩ කරනවා. ඒ කියන්නේ Training Accuracy එක හරිම ඉහළයි. හැබැයි, අලුත් (unseen) Testing Data එකක් ආවම, ඒක ඒ දත්ත වලට හරියට ප්රතිචාර දක්වන්නේ නෑ. Testing Accuracy එක හරිම අඩුයි. Model එක 'generalize' වෙන්නේ නෑ.
Overfitting වෙන්න පුළුවන් හේතු:
- Model එක ඕනෑවට වඩා සංකීර්ණ වීම (too complex).
- Training Data ප්රමාණය අඩු වීම (not enough data).
- Training Data එකේ noise වැඩි වීම.
Overfitting මගහරවා ගන්න ක්රම:
- වඩාත් සරල Model එකක් පාවිච්චි කිරීම.
- වැඩිපුර Training Data එකතු කිරීම.
- Regularization Techniques (L1/L2 regularization) පාවිච්චි කිරීම. මේවා Model එකේ complexity එක අඩු කරන්න උදව් කරනවා.
- Early Stopping: Model එක පුහුණු කරද්දී, Testing Accuracy එක අඩු වෙන්න පටන් ගන්නකොට පුහුණුව නවත්වන එක.
Underfitting: මදි පුංචිකම!
අර විභාගේ උදාහරණයටම යමු. හිතන්න, ඔයාලා විභාගෙට පාඩම් කරන්නෙම නෑ, නැත්නම් හරිම මූලික දේවල් ටිකක් විතරක් පාඩම් කරනවා. එතකොට මොකද වෙන්නේ? පොතේ තියෙන ප්රශ්න ආවත්, පොතෙන් පිටින් ප්රශ්න ආවත්, ඔයාලට උත්තර දෙන්න අමාරු වෙනවා. ඒ කියන්නේ Model එකට වගේම ඔයාලටත් සිද්ධිය තේරුම් ගන්න බැරි වෙනවා.
Underfitting කියන්නේ Model එක Training Data එකේ තියෙන මූලික රටා (basic patterns) වත් හඳුනාගන්න බැරි තරම් සරල වීම. මේකේදී Model එක Training Data වලටත් හොඳට වැඩ කරන්නේ නෑ, Testing Data වලටත් හොඳට වැඩ කරන්නේ නෑ. Training Accuracy එකත්, Testing Accuracy එකත් දෙකම හරිම අඩුයි.
Underfitting වෙන්න පුළුවන් හේතු:
- Model එක ඕනෑවට වඩා සරල වීම (too simple).
- Training කාලය අඩු වීම (not enough training time/epochs).
- Training Data එකේ features (ලක්ෂණ) ප්රමාණවත් නොවීම.
Underfitting මගහරවා ගන්න ක්රම:
- වඩාත් සංකීර්ණ Model එකක් පාවිච්චි කිරීම (e.g., වැඩි Layers ප්රමාණයක් LLM එකකට එකතු කිරීම).
- වැඩිපුර features (ආදාන දත්ත වල ලක්ෂණ) එකතු කිරීම.
- වැඩි කාලයක් Model එක පුහුණු කිරීම.
Overfitting & Underfitting හඳුනාගන්න විදිය:
LLM එකක Training සහ Validation Accuracy/Loss Plots බලන එක තමයි මේවා හඳුනාගන්න හොඳම ක්රමය. උදාහරණයක් විදියට:
# Conceptual Python code for plotting training/validation curves
import matplotlib.pyplot as plt
history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10)
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Training and Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.show()
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
plt.show()
- Overfitting: Training Loss එක දිගටම අඩු වෙලා, Validation Loss එක වැඩි වෙන්න පටන් ගන්නවා නම්. (ඒ වගේම Training Accuracy එක වැඩි වෙද්දී Validation Accuracy එක අඩු වෙන්න පටන් ගන්නවා නම්).
- Underfitting: Training Loss එකත්, Validation Loss එකත් දෙකම ඉහළ මට්ටමක පවතිනවා නම්. (ඒ වගේම Training Accuracy එකත්, Validation Accuracy එකත් දෙකම අඩු මට්ටමක පවතිනවා නම්).
Core Dilemma එක: Bias-Variance Tradeoff
දැන් අපි Overfitting සහ Underfitting ගැන දන්නවනේ. මේ දෙක එකිනෙකට සම්බන්ධ වෙන හරිම වැදගත් සංකල්පයක් තමයි Bias-Variance Tradeoff කියන්නේ.
සරලව කියනවා නම්, අපේ Model එකක Errors (වැරදි) වර්ග දෙකකට බෙදන්න පුළුවන්:
- Bias (පක්ෂග්රාහීත්වය): මේක එන්නේ Model එක සරල වැඩි නිසා, Training Data එකේ තියෙන ඇත්ත රටා (true patterns) අඳුරගන්න බැරි වෙන එකෙන්. High Bias කියන්නේ Model එක Underfit වෙනවා කියන එකයි. Model එක ඕනෑවට වඩා සරලයි. (උදා: LLM එකක් හරිම පොඩි vocabulary එකකින් පුහුණු කිරීම).
- Variance (වෙනස්වීම්): මේක එන්නේ Model එක Training Data එකේ තියෙන noise වලට ඕනෑවට වඩා සංවේදී වීමෙන්. High Variance කියන්නේ Model එක Overfit වෙනවා කියන එකයි. Model එක ඕනෑවට වඩා සංකීර්ණයි, ඒ නිසා අලුත් දත්ත වලට වැඩ කරන්නේ නෑ. (උදා: LLM එකක් ඕනෑවට වඩා specific text set එකකින් පුහුණු කිරීම).
Tradeoff එක කියන්නේ මේකයි: Bias අඩු කරන්න ගියොත්, Variance වැඩි වෙන්න පුළුවන්. Variance අඩු කරන්න ගියොත්, Bias වැඩි වෙන්න පුළුවන්. අපිට එකවරම Bias සහ Variance දෙකම අඩු කරගන්න බැහැ. අපිට කරන්න තියෙන්නේ මේ දෙක අතර හොඳ balance එකක් හොයාගන්න එක.
Bias-Variance Tradeoff එකේ වැදගත්කම LLMs වලට:
- Model Complexity: විශාල LLMs (like GPT-3, Llama) වලට 'intrinsic bias' (inherent assumptions) අඩුයි, නමුත් Training Data එකේ variance වලට ගොඩක් සංවේදී වෙන්න පුළුවන්. ඒ කියන්නේ ඒවාට Overfit වෙන්න තියෙන ඉඩකඩ වැඩියි. Smaller models වලට Bias වැඩියි, ඒ කියන්නේ Underfit වෙන්න පුළුවන්.
- Data Size and Quality: විශාල, විවිධාකාර (diverse) සහ හොඳ තත්ත්වයේ Training Data එකක් පාවිච්චි කිරීමෙන් Bias සහ Variance දෙකම අඩු කරගන්න පුළුවන්.
- Fine-tuning: LLM එකක් 'Fine-tune' කරද්දී, අපි specific task එකකට Model එක හැඩගස්වනවා. මේකෙදි Bias-Variance tradeoff එක ගැන හිතන්න ඕනේ. Over-fine-tuning වුණොත්, Model එක Overfit වෙලා, Fine-tuning කරපු task එකට විතරක් හොඳට වැඩ කරලා, අනිත් generic tasks වලට performance එක අඩු වෙන්න පුළුවන්.
අපේ LLM එකේ Architecture (layers ගාන, hidden units ගාන), Regularization techniques, සහ Training Data එකේ ප්රමාණය වගේ දේවල් පාලනය කරලා අපිට මේ Bias-Variance tradeoff එක කළමනාකරණය කරගන්න පුළුවන්. ඉලක්කය තමයි Training Data වල තියෙන Patterns හොඳින් ඉගෙන ගෙන, ඒක අලුත්, unseen data වලටත් සාර්ථකව යොදවන්න පුළුවන් Model එකක් හදාගන්න එක.
LLM Models Evaluation & Validation: තවත් ප්රායෝගික උපදෙස්!
මේ අපි කතා කරපු සංකල්ප වලට අමතරව, LLM Models Evaluate කරද්දී තවත් වැදගත් දේවල් කිහිපයක් තියෙනවා:
- Metrics: LLMs වලට Accuracy, Precision, Recall, F1-Score වගේ metrics පාවිච්චි කරන්න පුළුවන්, විශේෂයෙන්ම text classification, sentiment analysis වගේ tasks වලට. ඒ වගේම Perplexity වගේ metrics පාවිච්චි කරනවා Model එක text එක කොච්චර හොඳට predict කරනවද කියලා බලන්න.
- Human Evaluation: LLM Models වල ප්රතිඵල ඇත්තටම තේරුම් ගන්න, මිනිස්සුන්ට Model එකේ output එක evaluate කරන්න දෙන එක හරිම වැදගත්. විශේෂයෙන්ම Model එකේ 'coherence', 'relevance', 'helpfulness' වගේ ගුණාංග මනින්න. මේක තමයි LLMs evaluate කරද්දී හරිම අත්යවශ්ය දෙයක්.
- Domain-Specific Evaluation: ඔයාලගේ LLM එක යම්කිසි විශේෂිත ක්ෂේත්රයකට (e.g., medical, legal) හදලා තියෙනවා නම්, ඒ ක්ෂේත්රයේ ප්රවීණයන්ගෙන් evaluation එකක් ගන්න එක වැදගත්.
- Robustness Testing: Model එකට 'adversarial attacks' (model එකට බෑ වගේ කරන්න හදන attacks) වලට කොච්චර ඔරොත්තු දෙනවද, නැත්නම් input එකේ පොඩි වෙනසකට කොච්චර සංවේදීද කියලා පරීක්ෂා කරන එක.
නිගමනය: අපේ LLM Model එකේ හැකියාවන් අවබෝධ කරගනිමු!
ඉතින් යාළුවනේ, මේ Guide එකෙන් අපි LLM Model එකක සාර්ථකත්වය තීරණය කරන අත්යවශ්යම සංකල්ප ගැන කතා කළා. Train-Test Split එකෙන් Model එකේ generalization capability එක මනින හැටි, Cross-Validation එකෙන් වඩාත් විශ්වාසනීය ඇගයීමක් ගන්න හැටි, Overfitting සහ Underfitting කියන Model එකේ වැරදි හැසිරීම් හඳුනාගන්න හැටි, සහ Bias-Variance Tradeoff එකෙන් Model එකේ complexity එක balance කරන හැටි අපි ඉගෙන ගත්තා.
මේ හැම දෙයක්ම Model Development එකේදී හරිම අත්යවශ්ය කොටස්. විශේෂයෙන්ම LLM වගේ සංකීර්ණ Models එක්ක වැඩ කරද්දී, මේ සංකල්ප හරියට තේරුම් අරගෙන ඒ අනුව වැඩ කරන එක ඔයාලට ඔයාලගේ Projects සාර්ථක කරගන්න ගොඩක් උදව් වෙයි.
මතක තියාගන්න, Model Evaluation කියන්නේ එක පාරක් කරලා ඉවර කරන දෙයක් නෙවෙයි. ඒක iterative process එකක්. Model එක develop කරන අතරතුර දිගින් දිගටම evaluate කරලා, ඒක improve කරන්න ඕනේ.
ඔයාලට මේ Guide එක ප්රයෝජනවත් වෙන්න ඇති කියලා හිතනවා. දැන් පුළුවන් මේ සංකල්ප ඔයාලගේම LLM projects වලට apply කරලා බලන්න. මොකද, practice makes perfect නේද?
ඔයාලගේ අදහස්, ප්රශ්න, නැත්නම් ඔයාලගේ අත්දැකීම් පහළින් comment කරන්න. අපි හැමෝම එකතු වෙලා ඉගෙන ගමු, අලුත් දේවල් හදමු! ජය වේවා!