Machine Learning – 25 – Neural Networks

மனிதனுடைய மூளை எவ்வாறு கற்கிறது என்பதை முன்னோடியாகக் கொண்டு உருவாக்கப்பட்டதே Neural network ஆகும். முதலில் குழந்தையாகப் பிறக்கும்போது மனித மூளைக்கு ஒன்றுமே தெரியாது. பின்னர் அதிலுள்ள ஒரு மூளை நரம்பு (நியூரான்) புதிய விஷயத்தைக் கற்றுக் கொள்ளத் தொடங்குகிறது. அடுத்ததாக மற்றொரு நரம்பு ஏற்கெனவே கற்றுக் கொண்டுள்ள விஷயத்தோடு சேர்த்து இன்னொரு புதிய விஷயத்தையும் கற்றுக் கொள்கிறது. இவ்வாறே பல்வேறு நரம்புகள் வலைப்பின்னல் வடிவில் ஒன்றோடொன்று பிணைக்கப்பட்டு தொடர்ச்சியாக பல்வேறு புதுப்புது விஷயங்களைக் கற்றுக் கொண்டே வருகின்றன. இதை அடிப்படையாக வைத்து உருவாக்கப்பட்டதே Neural Network ஆகும்.

இது ஒவ்வொரு விஷயத்தையும் வகைப்படுத்தி வகைப்படுத்திக் கற்கிறது. எனவே இதன் சூத்திரம் classification problem-ஐ ஒத்திருக்கும். binary classification –ல் x1, x2 என்று இரண்டுfeatures-இருக்கிறதெனில், logistic – ஆனது அதனை நேரடியாக எடுத்துக் கொண்டு h(x) –ஐ கணிக்கும். ஆனால் neural network-ஆனது raw features-ஐப் பயன்படுத்தாமல் தனக்கென ஒரு hidden layer-ஐ உருவாக்கிக் கொண்டு, அதில் பல activation units-ஐ உருவாக்கிக் கணிக்கிறது. இதற்கான சூத்திரம் பின்வருமாறு.

activation unit-ன் மதிப்பானது 0 முதல் 1 வரை அமைவதால், sigmoid function-க்குள் அதனுடைய parameters மற்றும் features அமைகிறது. இதை வைத்தே முதல்activation unit-ன் மதிப்பு கணக்கிடப்படுகிறது. இவ்வாறே ஒவ்வொருactivation unit-ன் மதிப்புகளும் கணக்கிடப்படுகின்றன. Parameters-ஐ தீட்டா என்று குறித்தோம் அல்லவா, Neural networks-ல் இவை weights என்று அழைக்கப்படுகின்றன.எனவே கடைசியாக கணிக்கப்படும் h(x) மதிப்புகள், அதனுடைய activation units மற்றும் weights ஐ இணைத்து sigmoid function-ஆல் கணிக்கப்படுகின்றன.

Neural Network அமைப்பு:

கணிப்புக்குத் தேவையான features-ன் எண்ணிக்கை மிகவும் அதிகமாக இருக்கும்போது logistic-க்குப் பதிலாக நாம் neural networks-ஐப் பயன்படுத்தலாம்

Binary classification-க்கான neural network பின்வருமாறு அமையும்.

Multi-class classification-க்கான neural networkபின்வருமாறு அமையும்.

அணிகளின் பெருக்கலுக்கு துணைபுரியும் வகையில் சேர்க்கப்படும் x0, a0 மதிப்புகள் bias units என்றழைக்கப்படுகின்றன.

Input layer: மூல அம்சங்கள் முதலாவது அடுக்கில் காணப்படும். 

Output layer: கணிக்கப்படும் கணிப்புகள் கடைசி அடுக்கில் அமையும்.

Hidden layer / Activation layer – இடையில் பல்வேறு மறைமுக அடுக்குகள் காணப்படும். முதல் மறைமுக அடுக்கில் மூல அம்சங்களை வைத்து உருவாக்கப்பட்ட செயல்படுத்தும் அலகுகள் (activation units) காணப்படும். அடுத்தடுத்த மறைமுக அடுக்கில் அடுத்தடுத்த செயல்படுத்தும் அலகுகள் காணப்படும்.

h(x) கணிப்புகள் நிகழும் விதம்:

கீழ்க்கண்ட படத்தில் ஒவ்வொரு அலகுகளுக்குமான எடைகள் கொடுக்கப்பட்டுள்ளன. இவற்றை sigmoid சூத்திரத்தில் பொருத்தி ஒவ்வொரு அலகுக்குமான h(x) மதிப்பு கணக்கிடப்படுகிறது.
எடைகளின் மதிப்பினைப் பொறுத்து இவைகளின் மதிப்பு AND, OR, NOT போன்ற விதிகளின் படி அமையும்.

எடுத்துக்காட்டுக்கு -30, 20, 20 எனும் மதிப்புகளை g(z) சூத்திரத்தில் பொருத்திப் பார்க்கவும். x1, x2 மதிப்புகள் 0,0 ஆக இருந்தால் என்னவரும்? 0,1 ஆக இருந்தால் என்னவரும்? 1,0 மற்றும் 1,1 மதிப்புகளுக்கு என்ன வரும்? போன்றவை கணக்கிடப்படுகிறது.

AND: 0,0 எனும்போது g(z) மதிப்பு -30 என எதிர்மறையில் அமைகிறது. மேற்கண்ட sigmoid வரைபடத்தில் -30 என்பது 0 என்பதைக் குறிக்கும். இவ்வாறே அடுத்தடுத்த மதிப்புகள் கணக்கிடப்படுகின்றன. இதற்கான அட்டவணை AND -க்கான truth table-ஐ ஒத்திருப்பதைக் காணலாம். அதாவது x0 மற்றும் x1 1-ஆக அமைந்தால் மட்டுமே h(x)=1 ஐ வெளிப்படுத்தும்.

OR: -10, 20, 20 எனும் மதிப்புகளை g(z) சூத்திரத்தில் பொருத்திப் பார்க்கவும். இதற்கான அட்டவணை OR -க்கான truth table-ஐ ஒத்திருப்பதைக் காணலாம். அதாவது x0 மற்றும் x1 1-ஆக அமைந்தால் மட்டுமே h(x)=1 ஐ வெளிப்படுத்தும். அதாவது x0 அல்லது x1 இரண்டில் ஏதாவது ஒன்று 1-ஆக அமைந்தால் கூட h(x)=1 ஐ வெளிப்படுத்தும்.

NOT : இரண்டாவது அடுக்கில் உள்ள 3-வது அலகானது NOT x1 AND NOT X2 மூலம் கணக்கிடப்படுகிறது. அதாவது NOT x1 மற்றும் NOT x2 இரண்டின் மதிப்பும் AND -மூலம் மீண்டும் கணக்கிடப்படுகின்றன. இதற்கான எடைகள் 10, -20 என்று அமையும்.

எனவே இவைகள் ஒன்றாக சேர்ந்து மேற்கண்ட neural network-க்கான மதிப்பு பின்வருமாறு அமையும்.

Forward propagation:

முதலாவது அடுக்கில் உள்ள செயல்படுத்தும் அலகானது (activation unit) அதன் மூல அம்சங்களாக (raw features)அமையும். இதுவே உள்ளீட்டுக்கான அடுக்கு ஆகும்.

இரண்டாவதாக உள்ளது மறைமுக அடுக்கு. இதில் உள்ள செயல்படுத்தும் அலகானது முதலாவதில் உள்ள அம்சங்கள் மற்றும் அதன் எடைகளைப்(weights) பொறுத்து அமையும்.

கடைசியாக உள்ளது வெளியீட்டுக்கான அடுக்கு ஆகும். இதில் உள்ள அலகானது மறைமுக அடுக்குகளில் உள்ள அலகுகள் மற்றும் அதன் எடைகளைப்(weights) பொறுத்து அமையும்.

இவ்வாறே ஒவ்வொரு அடுக்கிலும் உள்ள செயல்படுத்தும் அலகுகளின் மதிப்பும் அதனுடைய எடையும் சேர்ந்து அடுத்தடுத்த அடுக்குகளில் உள்ள அலகுகளின் மதிப்பை தீர்மானிப்பதே forward propagation எனப்படும்.

Back propagation:

நமது neural network-ல் உள்ள ஒவ்வொரு அலகுக்கும் என்னென்ன எடைகளைப் பயன்படுத்தினால், தவறுகளைக் குறைக்கலாம் எனக் கண்டுபிடிப்பதே back propagation ஆகும் . ஒவ்வொரு அடுக்கிலும் நிகழும் தவறைக் கண்டுபிடிக்க அதன் partial derivative மதிப்புகள் பின்னிருந்து முன்னாகக் கணக்கிடப்படுகின்றன. பின்னர் அவைகளை ஒன்று திரட்டி அந்த network-ன் cost கண்டுபிடிக்கப்படுகிறது. பொதுவாக gradient descent algorithm -ஆனது குறைந்த அளவு costவெளிப்படக் கூடிய வகையில் neuron-களின் எடையை அமைக்க இந்த back propagation -ஐப் பயன்படுத்துகிறது.

delta = error of each node in the corresponding layer

Layer 3 : delta3 = h(x) – y

Layer 2 : delta2 = theeta T .delta3 .* a .* 1-a

Layer 1 : delta 1 = theeta T .delta2 .* a .* 1-a

where g'(z) = a .* 1-a = This is g-prime. = derivative of the activation function g

. * = element-wise multiplication

%d bloggers like this: