Part 03 - Classifying is Not Very Different from Predicting
Tumeona jinsi gani tunaweza unda model rahisi ya kutabiri maili ikipewa kilometa kupitia ukweli tunaoujua,
training data
Aina hii ya model inajulikana kama
simple predictor (mtabiri), kwasababu inachukua
input fulani (kilometa) na kutabiri
output yake (maili)
Assume, mda huu tuna tatizo tofauti, badala ya kufanya utabiri (
prediction), tunataka kufanya uanishaji (
classification)
Grafu hapo juu linaonesha urefu na upana wa wadudu wa aina mbili, viwavi (catepillars) na bunzi /mdudu kibibi (ladybirds)
(Picha ya kiwavi / catepillar)
(picha ya bunzi / ladybird)
Viwavi ni warefu na wembamba wakati bunzi ni wafupi na wanene. Tunaweza vipi ku ainisha / classify makundi haya mawili ya wadudu kwa kutumia concepts tulizoziona wakati tunajifunza kuhusu
simple predictor?
Idea ya msingi nyuma ya simple predictor ni linear relationship kati ya input na output, tunaweza tumia hii concept ya linearity kama straight line kutengenisha wadudu kulingana na makundi haya mawili (classification)
Lengo ni kupata mstari mmoja utakao tenganisha hayo makundi mawili ya wadudu, tunaweza anza na mstari wowote kwa bahati nasibu kutenganisha hayo makundi mawili ya wadudu kama tulivyoanza na huo mstari hapo juu
Slope au gradient ya huu mstari ndiyo parameter au variable tunayopaswa ku adjust (kama ilivyokua constant c kwenye simple predictor) ili kupata mstari utakao tenganisha haya makundi mawili kwa usahihi
Tunaweza bahatisha mstari mwingine
Bado, lengo ni kupata mstari utakao tenganisha haya makundi mawili ya wadudu, tujaribu tena
Mwisho, tumepata mstari unaotenganisha kwa usahihi haya makundi mawili ya wadudu
Huu mstari tunaweza utumia kama simple classifier, kama ilivyo kwa simple predictor tunaweza tumia huu mstari ku ainisha kuwa mdudu fulani tusiyemjua (unknown bug) ni kiwavi au bunzi kulingana na wapi yupo kwenye grafu kutoka kwenye mstari huu
Kimsingi hakuna tofauti kati ya ku predict na ku classify, concept ile ile ya linearity kwenye simple predictor inaweza tumika ku classify data
Lakini swali la msingi ni, tumepata vipi huu mstari (classifier) ?
Training A Simple Classifier
Kama tulivyofanya awali, tunaanza na training dataset
Tuna ladybird mwenye upana wa 3.0 na urefu wa 1.0, na caterpillar mwenye upana wa 1.0 na urefu wa 3.0
Tukiweka hizi nukta kwenye grafu, tunapata hiki:
Kama mwanzo, tunatumia linear relationship iliyopo hapa kama straight line
Hii ni equation ya straight line:
A na B zikiwa constant
Ili kazi yetu isiwe ngumu, tunaweza deal na aina ya mstari ambao hauvuki origin kwa kufanya B iwe 0 (B = 0)
A ikiwa constant
Mathematically, A ina control muinuko (slope) ya huu mstari, thamani kubwa ya A means ni slope kubwa ya huu mstari, kama tulivyofanya mwanzo, tunaweza anza na random value ya A
Tuseme, A = 0.25
Note hapa kuwa, x na y hazi represent width na length kwasababu hapa hatu try ku convert chochote, lengo letu ni ku classify
Tunaweza plot huu mstari, kwa urahisi tunaweza consider x coordinates chache ( at x = 0, na x = 1, y = 0 na y = 0.25)
Kupata hiki:
Bado mstari wetu haujaweza ku divide haya makundi mawili ya wadudu, kuna makosa (error)
Tunakokotoa vipi error, kama tulivyofanya kwenye case ya simple predictor?
Turudi kwenye equation ya mstari wetu:
Hii equation inachosema, kwa first training example (width ikiwa 3.0 na length ikiwa 1.0) ladybiird mwenye huu upana (x = 3.0) anapaswa kuwa na urefu wa:
Lakini tunajua kwa mujibu wa training example, thamani ya y inapaswa kuwa 1 ( y = 1)
Kwakua tunataka mstari utakao gawa haya makundi mawili ya wadudu, badala ya ku target y = 1, tunaweza target y = 1.1
Kwanini ? kwasababu hatutaki mstari uguse point hii (3,1) bali uitenganishe
Hivyo basi, error ni:
Sasa tutumie makosa tuliyopata, Error (E) kujua kwa kiasi gani tunapaswa kubadili thamani ya A
Ili tufanikiwe kwenye hili, tunapaswa kujua mahusiano yaliyopo kati ya A (slope ya classfier yetu) na E (Error)
Turudi kwenye equation yetu tena:
Tuseme target value yetu (ambayo inatoka kwenye training data) iwe t, tunajua kuwa ili tuifikie t inabidi tuongeze thamani ya A kwa kiasi kidogo sana dA (d ikiwakilisha delta symbol, ikiwa na maana ya "small change in")
Kihesabu, tunaweza sema kuwa t:
Tunaweza visualize graphs za hizo equations mbili kama ifuatavyo
Utakumbuka kuwa, Error (E), ni tofauti kati ya truth au target value, t na prediction, kwenye case yetu, y
Hivyo:
Sasa tushapata mahusiano yaliyopo kati ya Error (E) na kwa kiasi gani tunapaswa kuongeza thamani ya A kulingana na hio Error
Tukirudi kwenye mahesabu yetu, Error (E) ilikua 0.35, na input, x ilikua 3.0
Hivyo tunapaswa kuongeza thamani ya A, kwa:
Sasa, tu plug values za second point in our training dataset kwenye hii updated equation ya classifier yetu
Mda huu, x ni 1.0 na target value, y ni 3.0
Lakini kama tulivyokubaliana mwanzo, lengo ni kupata mstari utakao tenganisha haya makundi mawili ya wadudu na sio kupita kwenye hizo nukta, hivyo tunaweza chagua y = 2.9 kama target value yetu, inaweza kuwa yoyote hata y = 3.1, lengo ni huu mstari uwe juu au chini ya hizi nukta na sio kupita kati yake
Tukikokotoa Error (E) mda huu tunapata:
Tumepata Error ya 2.5333, lakini mwanzo ilikua ni 0.35, kwanini hii Error ya sasa ni kubwa kuliko ya awali?
Sababu ni kwamba tumetumia point moja tu kwenye training dataset yetu ku train classifier yetu, hivyo kuna bias (upendeleo) fulani kuelekea hii point kwenye training dataset
Now, tu update tena thamani ya A kulingana na feedback tuliyopata kwenye hii Error
Sasa, equation mpya ya classifier yetu ni:
Now, kama x ni 1.0, y ni 2.9 (target value tuliyokua tunaitaka)
Kwa kutumia Errors tulizopata kutoka kwenye hizo training dataset, tumaweza ku train classfier yetu na ku predict target value kwa usahihi
Sasa tu visualize kile tulichokifanya tangu mwanzo:
Kama ukichunguza mstari wa mwisho kwa makini, utagundua hatujafikia yale malengo tuliyopanga kuyafikia
Lengo lilikua ni kupata mstari utakao tenganisha hizo nukta (makundi mawili ya wadudu) kwa usahihi
Sababu ya hili tatizo (shika pia hii concept, ni muhimu sana kwenye neural network na huko tunapoelekea) ni kwamba, kwa kila update tunayofanya kwenye slope yetu A tunapoteza kile tulichojifunza hapo awali (kwenye mfano uliopita)
Approach tunayoitumia, inaweka upendeleo (introduce bias) kuelekea mfano wa sasa tunaotumia
Hii approach inafanya classifier itupe jibu sahihi kwenye mfano wa pili, na jibu lisilo sahihi kwa mfano wa kwanza, vile vile itatupa jibu sahihi kwa mfano wa tatu huku ikipoteza uwezo wake wa kutabiri target value ya mfano wa pili and so on...
Tuna solve vipi hili tatizo? Jawabu ni ku introduce concept ya
Moderation au
Learning rate
Badala ya kufata kile mfano wa sasa unachotwambia kwa miguu yote miwili, tunapiga hatua moja tu huku mguu mwingine ukibaki pale mfano wa kwanza ulipotwambia twende
Hii mbinu ina
side effect nyingine muhimu, kama kuna makosa (
noise) kwenye training dataset zetu, kitu ambacho ni cha kawaida kwenye
real world data, hii mbinu kwa kiasi kikubwa inapunguza noise au errors kwenye dataset
So, tunaweza update equation yetu ya kwa kiasi gani A inapaswa kuongezeka kulingana na Error (E) na input x
L, ikiwa ni
Learning rate
Tuseme sasa, Learning rate iwe 0.5, ikiwa na maana kuwa, tutapiga nusu hatua kuelekea kule kila mfano utakapo twambia badala ya kwenda mazima kama tulivyofanya mwanzo
Sasa tukirudi mahesabu yetu kwa haraka haraka kupitia hii equation mpya (unaweza rudia wewe mwenyewe kwasababu hatua ni zile zile ila this time tuna zidisha na Learning rate yetu ya 0.5)
Tutapata graph ya namna hii:
Now, tumepata mstari mzuri zaidi ukizingatia tumetumia mifano miwli tu kwenye training dataset baada ya ku introduce Learning rate, parameter nyingine inayo guide kwa kiwango gani inapaswa kuongeza thamani ya slope kwaa kuzingatia kile tulichojifunza kwenye mifano yote iliyopita
Tunaweza tumia huu mda ku formalize kile tulichojifunza mpaka sasa:
Simple Predictor
A simple predictor is a model that estimates a continuous output based on input features.The predictor's goal is to minimize the difference between the predicted values and the actual values.
Simple Classifier
A simple classifier in neural networks categorizes input data into discrete classes. For example, a binary classifier predicts one of two possible classes (e.g., spam or not spam or caterpillar or ladybird). The classifier uses features from the input data to assign a class label.
Why Prediction is Not Different from Classification
Prediction and classification in neural networks are fundamentally similar tasks with different types of outputs:
- Prediction: Outputs a continuous value (regression). For example, predicting house prices based on features like size and location.
- Classification: Outputs a discrete value (class label). For example, categorizing emails as spam or not spam.
In both cases, the neural network learns to map inputs to outputs by minimizing a loss or error during training.
Learning Rate or Moderation Factor
The learning rate, also known as the moderation factor, is a hyperparameter that controls the size of the steps the neural network takes while updating its parameters
- High Learning Rate: Leads to larger steps towards the minimum of the loss function (error). This can speed up training but risks overshooting the optimal solution, leading to unstable training.
- Low Learning Rate: Results in smaller steps, making the training process slower but more stable and precise.
In summary:
- Simple Predictor: Estimates continuous values.
- Simple Classifier: Categorizes data into discrete classes.
- Prediction vs. Classification: Both map inputs to outputs; the difference is in the output type and loss function (error).
- Learning Rate: Controls the speed and stability of training in neural networks.
Next : Sometimes One Classifier Is Not Enough