Deep Learning – 10 – Feed forward neural networks

Feed forward neural networks

உள்ளீடு, வெளியீடு மற்றும் பல்வேறு இடைப்பட்ட மறைமுக அடுக்குகளைப் பெற்று, ஒவ்வொரு அடுக்கிலும் அதிக அளவிலான நியூரான்களைப் பெற்று விளங்கும் நெட்வொர்க் feed forward நியூரல் நெட்வொர்க் என்று அழைக்கப்படுகிறது. மேற்கண்ட deep layer-ல் நாம் கண்டது இதற்கு ஒரு நல்ல எடுத்துக்காட்டாக அமையும். உள்ளீட்டு அடுக்கின் மூலம் செலுத்தப்படும் தரவுகள் அதற்கு அடுத்தடுத்த அடுக்குகளின் வழியே செல்லும்போது, அவை process செய்யப்பட்டு கடைசி அடுக்கில் தன்னுடைய கணிப்பினை வெளியிடுகிறது. இம்முறையில் தரவுகள் அனைத்தும் முன்னோக்கி மட்டுமே செலுத்தப்படுகின்றன. பின்னூட்டம் (feedback) என்ற ஒன்றை எந்த ஒரு அடுக்கும் வழங்குவதில்லை. அதாவது தரவுகளைப் பெற்றுக்கொண்ட நியூரான், தரவுகளை வழங்கிய நியூரானுக்கு பின்னூட்டச் செய்தி அனுப்புவது போன்ற நிகழ்வு ஏதும் இங்கு நடைபெறவில்லை. எனவேதான் இது feed forward neural network என்று அழைக்கப்படுகிறது.

கடைசி வெளியீட்டு அடுக்கில் இது கணித்த மதிப்பிற்கும், உண்மையான மதிப்பிற்குமான வேறுபாடு அதிகமாக இருக்கும் பட்சத்தில் அதனுடைய gradient மூலம் சற்று பின்னோக்கிப் பயணித்து ஒவ்வொரு அடுக்கிலும் ஏற்கெனவே பயன்படுத்திய அளவுருக்களை மாற்றி அமைக்கும் நிகழ்வு back propagation என்று அழைக்கப்படுகிறது. பின்னர் மாற்றப்பட்ட அளவுருக்களுக்கு தரவுகள் அனைத்தும் முன்னோக்கிச் சென்று மீண்டும் கணிப்பினை நிகழ்த்துகின்றன. இவ்வாறே ffnn செயல்படுகிறது. இதில் ஒவ்வொரு அடுக்கிலும் உள்ள நியூரான்களின் எண்ணிக்கை குறிப்பிட்ட அளவுக்குக் குறைவாக இருந்தால் under-fitting என்ற பிரச்சனையும், அளவுக்கு அதிகமாக இருந்தால் over-fitting என்ற பிரச்சனையும் ஏற்படுகிறது. over-fitting என்ற பிரச்சனையைத் தவிர்ப்பதற்காக வந்ததே drop-out otimization ஆகும். பொதுவாக அதிக அளவு நியூரான்களைக் கொண்ட நெட்‌வொர்கில் இதனைப் பயன்படுத்துவதே சிறப்பாக அமையும். அதன் accuracy-ஐ அதிகரிக்க உதவும். இதைப்பற்றி Regularization மற்றும் optimization எனும் பகுதியில் விளக்கமாகக் காணலாம்.

Different Classifiers:

feed forward நியூரல் நெட்வொர்கின் இடைப்பட்ட மறைமுக அடுக்குகளில் ReLU எனும் வகைப்படுத்தியும், கடைசி அடுக்கில் sigmoid எனும் வகைப்படுத்தியும் பயன்படுத்தப்படுகின்றன. எதற்காக இவ்வாறு வெவ்வேறு வகைப்படுத்திகள் பயன்படுத்தப்படுகின்றன? அவற்றுக்கான தேவைகள் என்ன என்பதைப் பற்றியெல்லாம் இங்கு காணலாம்.

⦁ sigmoid – இது தனது கணிப்புகளை 0 முதல் 1 வரை அமைக்கும். கீழ்க்கண்ட வரைபடத்தில் x-ன் மதிப்பைப் பொறுத்து கணிக்கப்படும் h(x), 0-முதல் 1-வரை அமைய வேண்டுமெனில் அதற்கான சமன்பாடானது 1/(1+e**-x) என்று இருக்கும். இதுவே sigmoid function-க்கான சமன்பாடாக அமைகிறது.

⦁ Tanh – இது தனது கணிப்புகளை -1 முதல் 1 வரை அமைக்கும். இவ்வாறு அமைப்பதற்கான சமன்பாடானது [2/(1+e**-2x)]-1 என்று இருக்கும். கடைசி வெளியீட்டு லேயரில் sigmoid அல்லது tanh போன்ற இரண்டில் ஏதாவது ஒன்றைப் பயன்படுத்தலாம்.

⦁ ReLU – இதன் கணிப்பு 0 அல்லது அம்மதிப்பாகவே அமையும். Rectified Linear Unit என்பதே Relu என்றழைக்கப்படுகிறது. இதில் x-ன் மதிப்பு 0-க்குக் கீழ் இருந்தால், அதனை 0 எனவும், மேல் அமைந்தால் அம்மதிப்பினை அப்படியேயும் கணிக்கிறது. எனவேதான் இதன் சமன்பாடு max(0,x) என அமைகிறது.

Machine learning-ன் அறிமுகக் கற்றலில் வேண்டுமானால், வெறும் sigmoid-ஐப் பயன்படுத்தி logistic regression, neural networks போன்றவற்றைச் செய்து பார்க்கலாம். ஆனால் deep நியூரல் நெட்வொர்க் என்று வரும்போது இதையே அனைத்து அடுக்குகளில் உள்ள நியூரான்களுக்கும் செயல்படுத்துவது சரிவராது. ஏனெனில் மறைமுக அடுக்குகளில் உள்ள நியூரான்களின் மீது back propagation என்ற ஒன்றை நாம் செயல்படுத்துவோம். இது ஒவ்வொரு அடுக்கிலும் உள்ள நியூரான்களின் derivative மதிப்பைக் கண்டுபிடித்து அதற்கேற்றார்போன்று weights-ஐ update செய்யும். அச்சமயத்தில் வெறும் sigmoid-ஐப் பயன்படுத்தினால், அது வெறும் 0 அல்லது 1 எனும் மதிப்பையே கணிப்பதால், x-ன் மதிப்பைக் கணிசமாகக் குறைக்க உதவாது. எனவேதான் hidden layer-ல் மட்டும் 0 அல்லது அந்த x-ன் மதிப்பையே கணிக்கக்கூடிய ReLU-வை நாம் பயன்படுத்துகின்றோம். கடைசி லேயரில் மட்டும் sigmoid பயன்படுத்தப்பட்டுள்ளது.

%d bloggers like this: