Deep Learning – 12 – Building Effective Neural Networks

 

ஒரு நியூரல் நெட்‌வொர்கின் கட்டமைப்பினை வலுவாக்குவதற்கு முதலில் அதில் எழுகின்ற பல்வேறு வகையான பிரச்சனைகள் பற்றியும், அவற்றைக் களைவதற்கு உதவும் வழிவகைகள் பற்றியும் தெரிந்து கொள்ள வேண்டும்.. ஒரு நியூரல் நெட்‌வொர்கின் efficiency என்பது பயிற்றுவிக்கப்படுவதற்கு எவ்வளவு நேரம் எடுத்துக்கொள்கிறது என்பதையும், Accuracy என்பது பயிற்றுவிக்கப்பட்டவுடன் எவ்வளவு துல்லியமாகக் கணிக்கிறது என்பதையும் குறிக்கிறது. இவற்றைப் பாதிக்கும் காரணிகள் பற்றியும், அவற்றை எவ்வாறு களைவது என்பது பற்றியும் இப்பகுதியில் ஒவ்வொன்றாகப் பார்க்கலாம்.

Bias-Variance Problem

நாம் உருவாக்கியுள்ள நெட்‌வொர்க் பயிற்சியின் போது அதிக அளவு accuracy-ஐ வெளிப்படுத்தினாலும், நிஜத்தில் அதனால் திறம்பட செயல்பட்டு சரிவர கணிக்க முடியவில்லையெனில், அதற்கு bias அல்லது variance பிரச்சனை நிகழ்ந்துள்ளது என்று அர்த்தம்.

மாதிரித் தரவுகளில் உள்ள features-ன் எண்ணிக்கை தரவுகளின் எண்ணிக்கையை விட மிக மிகக் குறைவாக இருக்கும்போது bias எனும் பிரச்சனை ஏற்படுகிறது. ஏனெனில் ஓரிரண்டு features-ஐ வைத்து மட்டுமே அதிக அளவில் அமைந்துள்ள தரவுகளைப் பற்றிக் கற்றுக் கொள்ள முயல்கிறது. இவ்வாறாக கற்றல் என்பது பரவலாக அமையாமல், ஓரிரண்டு features-ஐப் பொறுத்து மட்டுமே அமைவது bias / under fitting என்று அழைக்கப்படுகிறது.

அதே போன்று மாதிரித் தரவுகளில் உள்ள features-ன் எண்ணிக்கை தரவுகளின் எண்ணிக்கையை விட மிக மிக அதிகமாக இருக்கும் பட்சத்தில், variance / over fitting என்ற பிரச்சனை ஏற்படுகிறது. இதற்கான காரணங்களாக இரண்டு விஷயத்தைக் கூறலாம். முதலில் தரவுகளின் எண்ணிக்கை குறைவாக இருப்பதால், அவற்றை சுலபத்தில் மனப்பாடம் செய்துவிடுகிறது. அடுத்து features-ன் எண்ணிக்கை அதிக அளவில் இருப்பதால், சற்றும் சம்பந்தமில்லாத features-யிடம் இருந்து கூட ஏதோ ஒன்றைக் கற்றுக் கொண்டு அதன்வழி செயல்பட ஆரம்பிக்கிறது.

இவைகளுக்கான வரைபடம் கீழ்க்கண்டவாறு அமையும். இதை எளிய தமிழில் Machine Learning என்ற புத்தகத்தில் காணலாம். இதை உருவாக்குவதற்கான நிரலும் அப்புத்தகத்தில் ‘Polynomial Regression’ என்ற பகுதியில் கொடுக்கப்பட்டுள்ளது.

இத்தகைய bias-variance பிரச்சனையைத் தீர்க்க தரவுகளை நாம் training, develop, testing என மூன்றாகப் பிரித்துக் கொள்ளலாம். இதன் மூலம் நாம் உருவாக்கியுள்ள மாடல் எந்த வகைப் பிரச்சனைக்கு ஆளாகியுள்ளது என்பதையும் கண்டுபிடிக்கலாம். training-க்கான தரவுகளை வைத்து பயிற்சி அளித்து மாடலை உருவாக்கலாம். develop-க்கான தரவுகளை வைத்துக் கொண்டு பரிசோதித்து ஒருசில hyper-parametersஐ வேண்டியவாறு மாற்றி அமைத்துக் கொள்ளலாம். பின்னர் testing-க்கான தரவுகள் மூலம், மாடலை பரிசோதித்து மதிப்பிடலாம். இவை ஒவ்வொன்றும் வெளிப்படுத்தும் cost மதிப்புகளை வைத்துக் கொண்டு மாடல் எந்த வகைப் பிரச்சனைக்கு ஆளாகியுள்ளது என்பதைக் கண்டுபிடித்து விடலாம். எடுத்துக்காட்டாக,
1. Training error 80% -க்கும் அதிகமாக இருந்தால் biasபிரச்சனை என்றும்,
2. Training error குறைவாகவும் ( 2% ), Dev error அதிகமாகவும் ( 30% ) இருந்தால் variance பிரச்சனை என்றும்,
3. Training மற்றும் Dev இரண்டிலும் error மதிப்பு குறைவாகவும், Testing error மதிப்பு அதிகமாகவும் இருந்தால், variance பிரச்சனை training & dev இரண்டிலும் நிகழ்ந்துள்ளது என்று அர்த்தம்.

Early Stopping என்பது இப்பிரச்சனையைத் தீர்க்க உதவும் ஒரு வழிவகை ஆகும். Normalization என்பது bias பிரச்சனையையும், Regularization என்பது variance பிரச்சனையையும் தீர்க்க உதவுகிறது. weights decay, drop-out போன்றவை நியூரல் நெட்வொர்கில் மட்டும் பயன்படுத்தப்படும் சிறப்பு வகை regularization நுட்பங்கள் ஆகும்.

Early Stopping

Gradient Descent மூலம் error மதிப்பு கூடுகை அடைய முயலும்போது, Training மற்றும் Dev இரண்டும் வெளிப்படுத்துகின்ற cost மதிப்பை ஒரு வரைபடமாக வரைந்து பார்க்கவும். Training மதிப்பு குறைந்து கொண்டே வந்தால் அதோடு சேர்ந்து dev மதிப்பும் குறைந்து கொண்டே வர வேண்டும். ஏதாவதொரு நிலையில் dev மதிப்பு அதிகரிக்கத் தொடங்கினால், சுழற்சியை அந்நிலையிலேயே நிறுத்திவிட்டு அதன் அளவுருக்களை நமது மாடலுக்குப் பயன்படுத்திக் கொள்ளலாம். இதுவே ‘Early Stopping’ என்று அழைக்கப்படுகிறது.

அதாவது கூடுகை (Convergence) அடைவதற்கு முன்னரே சுழற்சி நிறுத்தப்பட்டு அளவுருக்கள் தேர்ந்தெடுக்கப்படுவதால் இது இப்பெயரில் அழைக்கப்படுகிறது.

Normalization

ஒவ்வொரு feature column-ல் உள்ள மதிப்புகளும் வெவ்வேறு எண் எல்லைகளில் அமைந்திருந்தால், அனைத்தையும் -1 லிருந்து +1வரை, அல்லது 0 லிருந்து 1 வரை என சீராக்குவதே Normalization அல்லது feature scaling எனப்படும். பின்வரும் சூத்திரத்தைப் பயன்படுத்தி சீராக்கப்பட்டால் அதுவே mean normalizationஎனப்படும். இதைப் பற்றி இன்னும் தெளிவாக அறிய விரும்பினால், எளிய தமிழில் Machine Learning என்ற புத்தகத்தில் ‘Multiple Linear Regression’ என்ற பகுதியில் காணவும்.
particular value – mean of all values
————————————————–
maximum – minimum

L1 , L2 Regularization

மிகக் குறைந்த அளவு தரவுகளுக்கு, அதிக அளவு பங்களிப்பதால் ஏற்படுவதே பிரச்சனை என்று பார்த்தோம். இதைத் தவிர்க்க ஒன்று அதிக அளவு தரவுகளைக் கொண்டு வரலாம் அல்லது ஒவ்வொரு feature-ன் பங்களிப்பையும் குறைந்த அளவில் மாற்றலாம். இதில் அதிக அளவு தரவுகளைக் கொண்டு வருவது மிகுந்த நேரமும் செலவும் பிடிக்கும் வேலையாதலால் ஒவ்வொரு feature-ன் பங்களிப்பையும் குறைக்க அதனுடன் regularization-க்கான அளவீடு இணைக்கப்படுகிறது.

இத்தகைய நெறிப்படுத்தும் முறையானது L1 மற்றும் L2 எனும் இரண்டு நிலைகளில் நடைபெறுகிறது. மிக மிக அதிக அளவில் features இருக்கும்போது L1 வகை பயன்படுத்தப்படுகிறது. இது அதிக முக்கியமில்லாத features-க்கான மதிப்பினை சுழியம் (0) என அமைப்பதன் மூலம் முக்கியமானவற்றை மட்டும் பங்களிக்க வைக்கிறது. ஒரு regression மாடலானது L1-ஐப் பயன்படுத்தினால் அது Lasso Regression (Least Absolute shrinkage & selection operator) என்றும், L2-ஐப் பயன்படுத்தினால் அது Ridge regression என்றும் அழைக்கப்படுகிறது. L2 என்பது நெட்வொர்கில் உள்ள அனைத்து அளவுருக்களின் கூட்டுத் தொகையையும் இரட்டிப்பாக்கி அதனை லாம்டா /2m எனும் மதிப்பினால் பெருக்குகிறது. இவ்வாறாக L1 மற்றும் L2 -ஆல் கண்டறியப்படும் மதிப்பே ‘Penalty term’ என்று அழைக்கப்படுகிறது. பின்னர் இம்மதிப்பே cost (J) மதிப்புடன் இணைக்கப்படுகிறது. சுருக்கமாகச் சொல்லப்போனால் L1 என்பது ‘Absolute value of Magnitude’ என்றும், L2 என்பது ‘Squared Magnitude’ என்றும் அறியப்படும்.

இம்முறைகளில் நாம் வரையறுக்கும் லாம்டாவின் மதிப்பு மிக மிகக் குறைவாக இருந்தால், overfitting என்ற பிரச்சனை அப்படியே நிலைத்திருக்கும். மிக மிக அதிகமாக இருந்தால் underfitting நிலைக்குச் சென்றுவிடும். எனவே இந்த லாம்டா மதிப்பினை தேர்வு செய்யும்போது, மிக மிகக் கவனமாக இருக்க வேண்டியது அவசியமாகிறது.

Drop-out Regularization

இது ஒவ்வொரு லேயரிலும் தோராயமாக ஒருசில nodes-ஐ நீக்கி விடுவதன் மூலம் features-ன் எண்ணிக்கையைக் குறைக்கும். keep_prob என்பது இது பயன்படுத்தும் parameter ஆகும். இதன் மூலம் ஒவ்வொரு லேயரிலும் எவ்வளவு nodes இருக்க வேண்டும் என்பதை வரையறுக்கலாம். அதாவது keep_prob = 0.6 என்று இருந்தால் 60% nodes-ஐ வைத்துக் கொண்டு மீதி 40% nodes-ஐ நீக்கி விடலாம் என்று அர்த்தம். ஒவ்வொரு லேயருக்கும் வெவ்வேறு keep_prob மதிப்புகளை நாம் வரையறுக்கலாம்.

Data-Insufficiency

இது பயிற்சி அளிப்பதற்குப் போதுமான தரவுகள் இல்லாமையால் ஏற்படுகின்ற பிரச்சனை ஆகும். இதனைத் தவிர்க்க Data Augmentation என்ற முறையைப் பயன்படுத்தலாம். இதற்கு தரவுகளைப் பெருக்குதல் என்று பொருள். அதாவது நம்மிடம் ஏற்கெனவே இருக்கின்ற தரவுகளைக் கொண்டு அதிக அளவில் தரவுகளை உருவாக்கிப் பயன்படுத்தலாம். Mirroring (பிரதிபலித்தல்), Random cropping (சீரற்ற துண்டுகளாக்குதல்), Rotation (சுழற்றுதல்), Shearing (வெட்டுதல்), Colour shifting (நிறமாற்றம் செய்தல்) போன்றவை இத்தகைய தரவுகளின் பெருக்கத்திற்கு உதவுகின்ற முறைகள் ஆகும்.

Vanishing & Exploding gradient

நியூரல் நெட்வொர்கில், நாம் பயன்படுத்தியுள்ள weights-ன் மதிப்பு மிகவும் சிறியதாக இருந்தால், அதன் gradients (dw, db) backpropagation-ன் போது ஒரு கட்டத்தில் தானாக மறைந்துவிடும். இதுவே vanishing gradients எனப்படும். இதற்கு நேர் மாறாக gradients-ன் மதிப்பு மிகப் பெரியதாக அமைவது exploding gradients எனப்படும். RNN போன்ற நீண்ட தொடர்புடைய வார்த்தைகளை நினைவில் வைத்துக் கொள்ள வேண்டிய மிகவும் ஆழமான நெட்வொர்குக்கு இத்தகைய பிரச்சனைகள் எழுகின்றன. (RNN பற்றி இனிவரும் பகுதிகளில் காணலாம்)

hidden layer-ல் tanh activation fn-ஐப் பயன்படுத்துவதன் மூலம் இத்தகைய பிரச்சனைகளைத் தவிர்க்கலாம். மேலும் Xavier initialization மூலம் weights-க்கான துவக்க மதிப்புகளை அளிக்கும்போது, அது மதிப்புகள் மிகவும் சிறியதாகவும் இல்லாமல், மிகவும் பெரியதாகவும் இல்லாமல் அமைவதை உறுதி செய்கிறது. அதாவது weights matrix-க்கான துவக்க மதிப்புகளை அளிக்கும்போது, அதன் variance = 2 / n (where n = no. of features)என்று இருக்குமாறு பார்த்துக்கொள்கிறது. ‘Gradient Clipping’ என்பது exploding பிரச்சனையைத் தவிர்க்க உதவும் ஒரு வழிவகை ஆகும். இது gradients-ன் மதிப்புகள் ஒரு குறிப்பிட்ட எல்லையைத் தாண்டிச் செல்லும்போது, அவற்றை எல்லைக்குள் அமைத்து பின்னர் back propagation வழியே செலுத்தி weights மதிப்புகளை மேம்படுத்துகிறது.

Mini-batch Gradient descent

Gradient descent என்றால் சாய்வு வம்சாவளி என்று பொருள். ஒரு நெட்‌வொர்க் இம்முறையைப் பயன்படுத்தி கூடுகை(convergence) அடைய முயலும்போது ஒவ்வொரு சுழற்சியிலும், முழுத் தரவுகளையும் பயன்படுத் திப் பயிற்சி அளிப்பதால், அதிக அளவு நேரமும் செயல்திறனும் வீணாகிறது. இதனைத் தவிர்ப்பதற்காக வந்ததே mini-batch gradient descent ஆகும். இது முழுத் தரவுகளையும் பல்வேறு தொகுதிகளாகப் பிரித்து, ஒவ்வொரு சுழற்சியிலும் ஒரு batch-ஐ அனுப்பி அதனடிப்படையில் gradients மதிப்புகளை திருத்தம் செய்கிறது. எடுத்துக்காட்டாக பயிற்சித் தரவுகளின் எண்ணிக்கை மொத்தம் பத்தாயிரம் இருக்கிறதெனில், இது ஆயிரம் ஆயிரமாக அமைந்த மொத்தம் 10 தொகுதிகளை உருவாக்கும். பின்னர் ஒவ்வொரு சுழற்சிக்கும் ஒவ்வொரு தொகுதியாக அனுப்பி gradients-ஐ திருத்தம் செய்யும். இதுவே Stochastic Gradient descentஎனப்படும். அதுவே பிரிக்கப்படும் தொகுதிகளின் எண்ணிக்கை மொத்தத் தரவுகளின் எண்ணிக்கைக்கு சமமாக பத்தாயிரம் என அமைந்தால், அதுவே Batch Gradient descentஅல்லது Gradient descent without mini-batch என்று அழைக்கப்படுகிறது.
Stochastic மற்றும் Batch இவ்விரண்டும் சாய்வு வம்சாவளி மூலம் கூடுகை அடைவதை (Convergence using gradient descent)வரைபடமாக வரைந்து பார்த்தால், Stochastic-ல் கூடுகை என்பது விரைவாக நடைபெற்று விடும். ஏனெனில் Batch-ல் mini batch-ன் எண்ணிக்கை மொத்த எண்ணிக்கைக்கு சமமாக அமைவதால் கூடுகை என்பது சற்று நேரம் பிடிக்கும். மேலும் Stochastic-ன் வரைபடத்தில் காணப்படும் பல்வேறு ஏற்ற இறக்கங்கள் ஒவ்வொரு தொகுதிகளைப் பயன்படுத்தி இறங்கி வருவதை உணர்த்துகிறது.

Hyper-parameter Tuning

நியூரல் நெட்‌வொர்கில் ஒருசில அளவுருக்கள் தானாக தன்னுடைய மதிப்பினைக் கற்றுக்கொள்கின்றன. ஒருசில அளவுருக்களுக்கு மதிப்பினை நாம் வரையறுக்க வேண்டியுள்ளது. எடுத்துக்காட்டாக weights , bias போன்ற அளவுருக்களுக்கு, துவக்கத்தில் ஒருசில மதிப்புகளை அளித்து நெட்‌வொர்கிடம் விட்டுவிடுகிறோம். பின்னர் அவை பயிற்சியின்போது தானாக சரியான மதிப்புகளைப் பெற்றுக்கொள்கின்றன. ஆனால் ஒரு நெட்‌வொர்கில் எவ்வளவு அடுக்குகள் இருக்க வேண்டும், அவற்றில் எத்தனை nodes இருக்க வேண்டும் என்பதையெல்லாம் நாம்தான் வரையறுக்க வேண்டும். இவ்வாறாக தானாகக் கற்றுக் கொள்ளாமல், நாம் மதிப்பினை வரையறுக்கும் அளவுருக்களுக்கு hyper-parameters என்று பெயர். Layers-ன் எண்ணிக்கை , Nodes-ன் எண்ணிக்கை , Mini batches-ன் எண்ணிக்கை , Gradient descent-ல் பயன்படுத்தப்படும் கற்றலுக்கான விகிதம்(learning rate) போன்றவற்றை இதற்கான எடுத்துக்காட்டாகச் சொல்லலாம். இவற்றை நாம் சரிவர அமைக்கும்வரை பல்வேறு மதிப்புகளை ஒவ்வொன்றாகச் சோதித்துப் பார்த்து சரியானதை தேர்வு செய்வதையே hyper-parameter tuning என்கிறோம். இது பல்வேறு முறைகளில் நடைபெறுகிறது. அவை பின்வருமாறு.

Grid Search

ஒரு அணியில் பல்வேறு அளவுருக்களை அமைத்து அவற்றிலிருந்து ஒவ்வொரு combination-ஆக சோதித்துப் பார்த்து அதிலிருந்து ஒன்றை தேர்வு செய்வதையே Grid search என்கிறோம். தேர்ந்தெடுக்கப்பட வேண்டிய அளவுருக்களின் எண்ணிக்கை குறைவாக இருக்கும்போது இம்முறை சிறப்பாக அமையும்.

Random Search

எந்த ஒரு வரையறையும் வைத்துக் கொள்ளாமல், சீரற்ற முறையில் அளவுருக்களைத் தேர்ந்தெடுக்கும் முறைக்கு Random Search என்று பெயர். சீரற்ற முறையில் தேர்ந்தெடுக்கப்பட்டாலும், இதுவே grid search-ஐ விட சிறப்பாக அமையும். தேர்ந்தெடுக்கப்பட வேண்டிய அளவுருக்களின் எண்ணிக்கை அதிகமாக இருக்கும் பட்சத்தில் இம்முறையை நாம் பயன்படுத்தலாம்.

Linear Scale

லேயர்களின் எண்ணிக்கை, Nodes-ன் எண்ணிக்கை போன்ற குறைவான எண்ணிக்கையில் அமையும் அளவுருக்களைத் தேர்வு செய்ய இம்முறையை நாம் பயன்படுத்தலாம். இதன் மதிப்புகள் non uniform-ஆக அமையும். [Eg: 0.001, 0.1, …. 0.9]

Log Scale

கற்றலுக்கான விகிதம்(learning rate) போன்ற அதிமுக்கிய மதிப்புகளைத் தேர்வு செய்ய இம்முறையைப் பயன்படுத்தலாம். ஏனெனில் இதுபோன்ற மதிப்புகளில் ஒரு சிறிய அளவில் மாற்றம் ஏற்பட்டால் கூட அது மொத்த நெட்‌வொர்கின் செயல்திறனையும் பாதித்துவிடும். ஆகவே இம்முறையில் மதிப்புகள் uniform-ஆக 0.0001, 0.001, 0.01, 0.1 என்பது போன்று அமைவதால், இதிலிருந்து ஒவ்வொன்றாகச் சோதித்துப் பார்த்து தேர்வு செய்யலாம்.

Optimization Techniques

நமது நெட்‌வொர்கின் செயல்திறனை அதிகரிப்பதற்காக சிறந்த hyperparameters-ஐத் தேர்வு செய்யும் நோக்கில் பல்வேறு optimization வழிவகைகள் பயன்படுத்தப்படுகின்றன. Stochastic GD மூலம் விரைவாக கூடுகை அடைய முடிந்தாலும், அது தனக்கான பாதையில் பல்வேறு ஏற்ற இறக்கங்களைக் கொண்டிருப்பதைக் காணலாம். இதனை சரி செய்து சீரான முறையில் கூடுகை அடைவதற்கு உதவ பின்வரும் optimization வழிவகைகள் இங்கு பயன்படுத்தப்படுகின்றன. இதன் மூலம் சிறந்த அளவுருக்கள் தேர்ந்தெடுக்கப்படுகின்றன.

  • Gradient Descent with Momentum என்பது அதிவேகமாக நகரும் சராசரியைக் (exponential moving average) கணக்கிட்டுப் பயன்படுத்துவதன் மூலம் இத்தகைய oscillations-ஐக் கட்டுப்படுத்த முயல்கிறது.
  • Root Mean Square propagation என்பதே RMS Prop என்றழைக்கப்படுகிறது. அதாவது மூல சராசரி சதுர மதிப்பினைக் கண்டுபிடித்து அதன் மூலம் பரவி, oscillations-ஐக் கட்டுப்படுத்தி சிறந்த அளவுருக்களைத் தேர்ந்தெடுப்பதே RMS Prop என்றழைக்கப்படுகிறது.
  • மேற்கூறிய இரண்டு தத்துவங்களின் கலப்பே Adam optimization ஆகும்.

Learning Rate Decay

ஒரு நெட்வொர்கின் cost மதிப்பு gradient descent மூலம் கூடுகை அடைய முயலும்போது, அதன் மொத்த சுழற்சிகளிலும் கற்றலுக்கான விகிதம் என்பது மாறாத ஒரு மதிப்பாக அமைகிறது. எனவே அதன் சுழற்சிகளில் ஒன்றின் போது cost மதிப்பு கூடுகைக்கு அருகில் அமைந்தால் கூட, அதன் கற்றலுக்கான மாறாத மதிப்பைப் பொறுத்து சற்று நீண்டு அடுத்த அடியை எடுத்து வைக்கிறது. எனவே கூடுகை சமயத்தில் அதனை விட்டு விலகிச் சென்று அடுத்தடுத்த சுழற்சிகளில் மட்டுமே கூடுகையை அடைகிறது. இவ்வாறு கூடுகை சமயத்தில் தேவையில்லாமல் நிகழ்த்தப்படும் அதிகப்படியான சுழற்சிகளைத் தவிர்ப்பதற்காக வந்ததே learning rate decay ஆகும். இது கற்றலுக்கான விகித மதிப்பை ஒவ்வொரு சுழற்சியிலும் கொஞ்சம் கொஞ்சமாக குறைத்துக் கொண்டே வரும். எனவே கூடுகை சமயத்தின் போது தனது அடுத்தடுத்த அடிகளை சின்னஞ் சிறியதாக எடுத்து வைப்பதால் சுலபத்தில் கூடுகையை அடைந்துவிடும். இதனால் தேவையில்லாமல் நிகழும் அதிகப்படியான சுற்றுகள் தவிர்க்கப்படுகின்றன.

Pruning

இது நெட்வொர்கின் செயல்திறனை அதிகரிக்க உதவும் ஒரு வழிவகை ஆகும். எடுத்தவுடன் நெட்வொர்கை அதிக அளவு நியூரான்களுடன் வடிவமைப்பதால் அதன் செயல்திறன் தொடக்க நிலையிலேயே முடக்கப்படுகிறது. Pruning என்பது கொஞ்சம் கொஞ்சமாக நெட்வொர்கில் உள்ள நியூரான்களின் எண்ணிக்கையை அதிகரிக்க உதவும் ஒரு வழிவகை ஆகும். இதன் மூலம் நெட்வொர்கின் செயல்திறன் பாதிக்கப்படாமல் பார்த்துக் கொள்ளலாம்.

Batch Normalization

Normalization பற்றி எளிய தமிழில் என்ற புத்தகத்தில் ‘Multiple linear regression’ எனும் பகுதியில் விளக்கியிருப்பேன். அதாவது ஒரு வீட்டின் விலையானது, அதன் சதுர அடி விவரம் மற்றும் அவற்றிலுள்ள அறைகளின் எண்ணிக்கை எனும் 2 input features-ஐப் பொறுத்து அமைகிறதெனில் சதுர அடியானது 450-sqft முதல் 2500-sqft வரை பரவியிருக்கும். ஆனால் அறைகளின் எண்ணிக்கையோ 1 முதல் அதிகபட்சம் 5 வரை மட்டுமே பரவியிருக்கும். இவ்வாறு வெவ்வேறு எல்லைகளில் பரவியிருக்கும் input features-வுடைய தரவுகளை சீராக -1 முதல் +1 வரை அமைக்க முயல்வதே Normalization என்று கண்டோம்.

சாதாரண regression-ல் செயல்படும் Normalization-ஐப் போலவே நியூரல் நெட்வொர்கில் செயல்படுவது ‘Batch Normalization’ ஆகும். ஏனெனில் நெட்வொர்குக்கு பயிற்சி அளிக்கச் செலுத்தப்படும் தரவுகள் mini-batch gradient descent மூலம் செலுத்தப்படும் போது அவை பல்வேறு தொகுதிகளில் அமைகின்றன. எனவே ஒவ்வொரு தொகுதியிலும் அமையும் தரவுகள் பல்வேறு எல்லை வரிசைகளில் இருப்பதற்கான வாய்ப்புகள் அதிகம். இதன் விளைவாக ஏற்படுவதே ‘co-variance shift’ (Change in data distribution of the input features) எனும் பிரச்சனை ஆகும். ஏனெனில் ஒவ்வொரு முறையும் நியூரான்கள் வெவ்வேறு தரவு எல்லைகளுக்கு ஏற்ப தம்முடைய அளவுருக்களை மாற்றி அமைக்க முயலும். இம்முறையில் பயிற்றுவிக்கப்படுவது சரியாக இராது. எனவே ஒவ்வொரு தொகுதிகளிலும் உள்ள தரவுகள் அடுத்த லேயருக்கு அனுப்பப்படுவதற்கு முன்னர் அவை normalize செய்யப்பட்டு அனுப்பப்படுவதே ‘Batch Normalization’ என்று அழைக்கப்படுகிறது. நியூரல் நெட்வொர்கில் இவை தொகுதி வாரியாக நடைபெறுவதால் இது இப்பெயரில் அழைக்கப்படுகிறது. CNN போன்ற நெட்வொர்குக்கு பயிற்சி அளிக்கும்போது கருப்பு-வெள்ளைப் படங்களைக் கொடுத்து பயிற்சி அளிப்பதும், பின்னர் வண்ணப் புகைப்படங்களைக் கொடுத்து கணிக்கச் சொல்லுவதும் இத்தகைய ‘covariance shift’ பிரச்சனைக்கு உதாரணங்களாக அமையும். ஏனெனில் இவற்றின் பிக்சல் மதிப்புகளில் அதிக அளவு வேறுபாடு காணப்படும். (CNN பற்றி இனிவரும் பகுதிகளில் விளக்கமாகக் காணலாம்)

%d bloggers like this: