පළමු ආකෘතියෙන් ඔබ්බට 튜닝 කිරීම 🎶
Machine Learning වලදී, අපි පළමු වරට ගොඩනගන ආකෘතිය කිසිවිටෙකත් හොඳම ආකෘතිය වන්නේ නැත. එය හරියට සංගීත භාණ්ඩයක් tune කරනවා වගේ වැඩක්. පළමු උත්සාහයේදී හඬ බොහෝදුරට නිවැරදි වුවත්, පරිපූර්ණ නාදය ලබා ගැනීමට අපට කුඩා ගැලපීම් (adjustments) කිහිපයක් කළ යුතුයි.
මෙම ඒකකයේදී, අපි අපේ AI ආකෘතිය "tune" කර, එහි ක්රියාකාරීත්වය තවත් වැඩි දියුණු කරගන්නේ කෙසේදැයි ඉගෙන ගනිමු. මෙය, නැවත නැවතත් පරීක්ෂණ කරමින්, හොඳම ප්රතිඵලය ලබා ගන්නා තෙක් උත්සාහ කරන ක්රියාවලියකි.
උපක්රමය 1: ආකෘතියේ ව්යුහය වෙනස් කිරීම (Changing Architecture)
ආකෘතියේ "ව්යුහය" හෙවත් "Architecture" යනු එහි ඇති ස්ථර (layers) ගණන සහ එක් එක් ස්ථරයේ ඇති නියුරෝන (`units`) ගණනයි. අපට මෙය වෙනස් කර, ආකෘතියේ "සිතීමේ හැකියාව" වැඩි කිරීමට හෝ අඩු කිරීමට හැකිය.
- ආකෘතිය ගැඹුරු කිරීම (Making it Deeper): තවත් `LSTM` හෝ `Dense` ස්ථර එකතු කිරීම. මෙමගින් ආකෘතියට වඩාත් සංකීර්ණ, ගැඹුරු රටා ඉගෙන ගැනීමට හැකියාව ලැබේ.
- ආකෘතිය පළල් කිරීම (Making it Wider): දැනට පවතින ස්ථර වල `units` ගණන වැඩි කිරීම (උදා: `units=50` වෙනුවට `units=100` කිරීම). මෙමගින් එක් එක් ස්ථරයට වැඩි "සිතීමේ ඉඩක්" ලැබේ.
අවවාදයයි: ආකෘතිය විශාල කිරීම සැමවිටම හොඳ දෙයක් නොවේ. අනවශ්ය ලෙස විශාල ආකෘතියක්, දත්ත කටපාඩම් කිරීමට (Overfitting) පෙළඹෙන අතර, පුහුණු කිරීමටද වැඩි කාලයක් ගනී.
උපක්රමය 2: Overfitting වැළැක්වීම (Preventing Overfitting)
Overfitting යනු කුමක්ද?
Overfitting යනු, ශිෂ්යයෙක් විෂය කරුණු තේරුම් නොගෙන, ප්රශ්න පත්රයේ ඇති ප්රශ්න වලට පිළිතුරු පමණක් කටපාඩම් කරනවා වැනි තත්වයකි. ඔහුට එම ප්රශ්න පත්රයට නම් ඉහළ ලකුණු ලබා ගත හැකි වුවත්, තරමක් වෙනස් ප්රශ්න ඇති සැබෑ විභාගයේදී අසමත් වේ. ඒ ආකාරයටම, අපේ ආකෘතිය පුහුණු කිරීමේ දත්ත (training data) ზედმეტად "කටපාඩම්" කර, අලුතින් දකින දත්ත (testing data) සඳහා නිවැරදි අනාවැකි පළ කිරීමට අපොහොසත් වීම Overfitting නම් වේ.
Overfitting අඩු කිරීමට ඇති එක් ප්රබල උපක්රමයක් නම් **Dropout** ස්ථර භාවිතා කිරීමයි.
Dropout: මෙය හරියට කණ්ඩායම් අධ්යනයකදී (group study), එක් එක් ප්රශ්නය අසන විට, කණ්ඩායමේ සමහර සාමාජිකයින්ට අහඹු ලෙස නිහඬව සිටීමට අණ කරනවා වැනිය. එවිට, ඉතිරි සාමාජිකයින්ට එක්කෙනෙකු මත පමණක් රඳා නොපවී, විෂය කරුණු වඩාත් හොඳින් ඉගෙන ගැනීමට බල කෙරේ. Dropout ස්ථරයද, පුහුණු කිරීමේදී අහඹු ලෙස සමහර නියුරෝන "ක්රියා විරහිත" කර, ආකෘතිය වඩාත් සාමාන්ය රටා ඉගෙන ගැනීමට පොළඹවයි.
from tensorflow.keras.layers import Dropout
model.add(LSTM(units=50))
# පුහුණු කිරීමේදී, මෙම ස්ථරයෙන් පසු නියුරෝන වලින් 20%ක් අහඹු ලෙස අක්රිය කරයි.
model.add(Dropout(0.2))
model.add(Dense(units=25))
උපක්රමය 3: පුහුණු කිරීමේ පරාමිතීන් වෙනස් කිරීම (Tuning Hyperparameters)
ආකෘතියේ ව්යුහය මෙන්ම, එය පුහුණු කරන ආකාරයද ප්රතිඵලයට දැඩි ලෙස බලපායි. අපට වෙනස් කළ හැකි ප්රධාන පරාමිතීන් (hyperparameters) දෙකක් නම් `epochs` සහ `batch_size` වේ.
-
Epochs (පුහුණු වට ගණන):
එක් epoch එකක් යනු ආකෘතිය සම්පූර්ණ දත්ත කට්ටලය හරහා එක වරක් ගමන් කිරීමයි.
- Epochs ගණන අඩු වැඩි නම්: ආකෘතියට ඉගෙන ගැනීමට ප්රමාණවත් කාලයක් නොලැබේ (Underfitting).
- Epochs ගණන වැඩි වැඩි නම්: ආකෘතිය දත්ත කටපාඩම් කිරීමට පටන් ගනී (Overfitting).
හොඳම epoch ගණන සොයා ගැනීමට, පුහුණු කිරීමේදී `loss` අගය අඩුවීම නිරීක්ෂණය කළ යුතුය.
-
Batch Size (කාණ්ඩයේ ප්රමාණය):
ආකෘතිය තමන්ව යාවත්කාලීන (update) කර ගැනීමට පෙර, එකවර සලකා බලන දත්ත සාම්පල (samples) ගණන මෙයයි.
- Batch Size කුඩා නම්: නිතර යාවත්කාලීන වන නිසා, ඉගෙනීම අස්ථාවර විය හැකි නමුත්, සමහරවිට වඩා හොඳ ප්රතිඵල ලැබේ. පුහුණුව සෙමින් සිදු වේ.
- Batch Size විශාල නම්: ඉගෙනීම වඩාත් ස්ථාවර වේ, නමුත් සමහරවිට හොඳම විසඳුම මඟ හැරිය හැක. පුහුණුව වේගවත්ය.
`16`, `32`, `64` වැනි අගයන් අත්හදා බැලීමෙන් ඔබට හොඳම අගය සොයාගත හැක.
Machine Learning වලදී "මැජික් අංක" කියා දෙයක් නැත. හොඳම ආකෘතිය ගොඩනැගීමේ රහස වන්නේ, එක වරකදී එක දෙයක් වෙනස් කරමින්, එහි ප්රතිඵලය කුමක්දැයි බලමින්, ඉවසීමෙන් යුතුව පරීක්ෂණ කිරීමයි.