Inteligjenca Artificiale: Trajnimi i Rrjeteve Nervore
Çdo rrjet nervor përbëhet nga të paktën dy shtresa neuronesh. Nëse strukturën e rrjetit e konceptojmë nga e majta në të djathtë (ose nga poshtë lartë), shtresa në ekstremin e majtë (ose të poshtëm) quhet shtresa e hyrjes ndërsa shtresa në ekstremin e djathtë (ose të sipërm) quhet shtresa e daljes. Shumica e rrjeteve që përdoren sot kanë të paktën edhe një shtresë midis hyrjes dhe daljes. Shtresat e tilla quhen shtresa të fshehura (për më shumë rreth strukturës së rrjeteve nervore kalo këtu). Përpara se të nisim trajnimin e një rrjeti nervor, nevojitet të pregatitim të dhënat trajnuese të cilat duhet të paraqiten si numra realë. Të dhënat kategorike si p.sh. ato që lidhen me ngjyrat (shtatë ngjyrat bazë) apo gjininë (kategoritë “madhkull” dhe “femër”) konvertohen në paraqitjen e quajtur kodimi një-nga-shumë. Konkretisht, kur kemi të bëjmë me vetëm dy kategori si në rastin e gjinive përdorim një shtyllë për secilën kategori, pra na duhet të shtojmë dy shtylla te të dhënat. Në secilin rresht të këtyre shtyllave kemi një vlerë 0 ose 1 sipas klasës të cilës i përket ai rresht (1 nëse i përket asaj klase dhe 0 në të kundërt). Shpesh here, të dhënat e hyrjes shkallëzohen ose normalizohen në pëputhje me rastin apo problemin përkatës. Një tjetër teknikë që përdoret shpesh është standardizimi i tyre që shpërndarja e vlerave të secilës shtyllë të ketë mesatare 0 dhe devijim standard 1.
Algoritmi më i përdorur për trajnimin e rrjeteve nervore quhet “Zbritje sipas Pjerësisë” (ang. Gradient Descent). Të dhënat trajnuese kalohen në rrjet nga hyrja te dalja e tij (nga e majta në të djathtë ose nga poshtë sipër) njëra pas tjetrës. Rrjeti i përpunon këto të dhëna duke aktivizuar neuronet dhe jep vlerat e daljes. Kjo fazë quhet kalimi përpara në rrjet. Vlerat e daljes krahasohen me vlerat e pritura të të dhënave dhe llogaritet gabimi përkatës. Ky gabim tejçohet mbrapsh në rrjet shtresë pas shtrese dhe peshat e lidhjeve midis neuroneve përditësohen sipas kontributit të tyre te vlera e gabimit. Kjo metodë e trajnimit të rrjetit quhet “Paspërhapje” (ang. Backpropagation). Për të qenë plotësisht të saktë, duhet të theksojmë se paspërhapja nuk i referohet plotësisht algoritmit që përdoret për të njehësuar parametrat e rrjetit nervor, por është teknika që lehtëson përllogaritjen e gradientit të parametrave kur rrjeti trajnohet me algoritmin e zbritjes sipas pjerrësisë. Gjithësesi, meqë këto dy teknika përdoren thuajse gjithnjë bashkarisht, termi paspërhapje nënkupton trajnimin e rrjetit nervor me algoritmin e zbritjes sipas pjerrësisë. Procesi i përhapjes së vlerave të të dhënave përpara dhe pas i përshkruar më sipër vazhdon për të gjithë të dhënat. Një kalim i plotë i bashkësisë trajnuese të të dhënave nëpër rrjet quhet epokë dhe përbën një hiperparametër të rëndësishëm të trajnimit të rrjetit. Rrjetet nervore zakonisht trajnohen me disa dhjetra epoka.
Nga mënyra se si ndodh përditësimi i peshave të rrjetit gjatë përhapjes së vlerave para dhe pas dallohen disa variante të algoritmit të zbritjes sipas pjerrësisë. Në variantin më të thjeshtë të tij (ang. batch gradient descent), ky algoritëm përllogarit përditësimin e peshave për çdo kapmpion të dhënash trajnuese (për çdo hap trajnimi) dhe i mbledh përditësimet. Secila peshë përditësohet vetëm pasi përfundon e gjithë bashkësia trajnuese. Kur bashkësia e të dhënave trajnuese është e madhe, ky algoritëm rezulton i ngadaltë. Një tjetër variant i tij i quajtur “Zbritje Stokastike sipas Pjerrësisë” (ang. Stochastic Gradient Descent) e përllogarit ndryshimin e peshave dhe i përditëson ato pas çdo hapi të trajnimit. Kjo bën që trajnimi i rrjetit të kryhet më shpejtë por lëvizja drejt optimumit është “e çrregullt” ose stokastike dhe mund të çojë ndonjëhere në rezultate jo optimale. Në praktikë përdoret më shpesh një variant i mesëm i dy algoritmave të mësipërm (ang. Minibatch Gradient Descent) që e ndan bashkësinë e të dhënave trajnuese në minitufa (ang. minibatch) dhe i përditëson peshat e rrjetit pas çdo minitufe. Kjo bën që shpejtësia e trajnimit dhe qëndrueshmëria e përditësimeve të jenë të dyja të kënaqshme.
Një problem që ndodh shpesh kur trajnohen rrjetet nervore ose kur përdoren teknika të tjera të mësimit automatik (ang. machine learning) është ai i optimumeve lokale. Rrezultatet më të mira nga një rrjet nervor arrihen kur trajnimi i tij konvergjon tek optimumi global, pra te pika që paraqet diferencën më të vogël midis parashikimeve të rrjetit dhe vlerave të pritura të daljeve. Mund të ndodhi shpesh që trajnimi të ndalet kur rrjeti ka arritur në një optimum lokal, gjë që duhet shmangur. Dallimi midis optimumeve lokale dhe optimumit global ilustrohet te figura më sipër. Nga vrojtimet e ndryshme është kuptuar se një rrjet nervor arrin optimumin global gjatë trajnimit nëse:
- Ka arkitekturë piramidë, pra shtresat nga e djathta kanë më pak neurone
- Matricat e peshave janë me rang të plotë
- Numri i neuroneve të hyrjes nuk është më i vogël se klasat e të dhënave
Shkalla e përditësimit të peshave pas çdo hapi trajnimi përbën një parametër të rëndësishëm të quajtur norma e mësimit (ang. learning rate) dhe është propozuar për herë të parë te rrjeti Perceptron (për më shumë kalo këtu). Një tjetër masë që merret për të garantuar konvergjencë të mirë të rrjetit është ndryshimi gradual i vlerës së këtij parametri. Norma e mësimit vendoset fillimisht në një vlerë relativisht të lartë dhe zvogëlohet gradualisht sipas një tjetër parametri të quajturë rënie e normës së mësimit (ang. learning rate decay). Kjo bën që trajnimi i rrjetit të jetë fillimisht i shpejtë dhe të ngadalësohet gradualisht për të garantuar konvergjencë te optimumi global.