Deep Learning – 15 – RNN

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

ஆனால் சில சமயங்களில் ஒரு விஷயத்தைக் கணிப்பதற்கு தொடர்ச்சியாக வருகின்ற உள்ளீட்டுத் தரவுகள் அனைத்தும் ஒன்றோடொன்று தொடர்புடையதாக அமைகின்றன. எடுத்துக்காட்டுக்கு பங்குச் சந்தைகளில் கணிக்கப்படும் ஒரு பங்கின் விலையானது அதன் தற்போதைய விலையைப் பொறுத்து மட்டும் அமையாமல் இதற்கு முன்னர் அமைந்த விலைகளின் பட்டியலைக் கணக்கில் கொண்டே கணிக்கப்படுகிறது. அது போலவே ஒரு சொற்றொடரைக் கேட்டு கணினி என்ன மாதிரியான பதிலை அளிக்க வேண்டும் என்பது வெறும் ஒரு சொல்லைப் பொறுத்து மட்டும் அமையாமல், பல்வேறு சொற்களின் தொடர்ச்சியைக் கொண்டே கணிக்கப்படுகிறது. இதுபோன்று அமையும் தரவுகளே ‘sequential data’ என்று அழைக்கப்படுகிறது. இத்தகைய தரவுகள் temporal மற்றும் time-component ஐப் பெற்று விளங்கும். இதுபோன்ற தரவுகளைப் பயன்படுத்தி கணிப்புகளை நிகழ்த்துவதற்கு ஏற்ற வகையில் RNN சிறப்பான வடிவமைப்பைப் பெற்று விளங்குகிறது.

இதன் வடிவமைப்பு ஒரே ஒரு நியூரானைக் கொண்டது. முதலில் வருகின்ற தரவின் அடிப்படையில் அந்த நியூரான் கொடுக்கும் வெளியீடு சேமிக்கப்பட்டு அடுத்து வருகின்ற தரவுடன் இணைக்கப்படுகிறது. பின்னர் இவையிரண்டின் அடிப்படையில் கிடைக்கும் வெளியீடு சேமிக்கப்பட்டு மீண்டும் அடுத்தடுத்து வருகின்ற தரவுகளுடன் தொடர்ச்சியாக இணைக்கப்படுகின்றன. கடைசியாக இவைகளின் அடிப்படையிலேயே கணிப்புகள் நிகழ்த்தப்படுவதால் இது Recurrent என்ற பெயரில் அழைக்கப்படுகிறது. ஒவ்வொரு முறையும் கிடைக்கும் தற்காலிக வெளியீடுகளை சேமித்து வைக்க இது உள்ளூர ஒரு memory-ஐப் பயன்படுத்துகிறது. RNTN என்ற நெட்வொர்கில் இந்த memory-க்கு LSTM (Long Short Term Memory) என்று பெயர். இந்த இடத்தில்தான் என்னென்ன விஷயங்களெல்லாம் இதுவரை சேமிக்கப்பட்டுள்ளன எனும் விவரம் ஒவ்வொரு முறையும் கால-நேரத்தின் அடிப்படையில் சேமிக்கப்படுகிறது.

இதுபோன்று தொடர் நிகழ்வுகளை நினைவில் வைத்துக் கொண்டு புரிந்து செயல்படுவதற்கு ஏற்ற வகையான கட்டமைப்பைப் பெற்று விளங்குவதால் ‘Text Processing’ போன்ற செயல்களில் இதைப் பயன்படுத்தலாம். அதாவது ஒரு கோப்பில் அமைந்திருக்கும் கதைகளையோ, கட்டுரைகளையோ கொடுத்து RNN-க்குப் பயிற்சி அளித்தால், அது அவ்வார்தைகளின் தொடர்புப்படி பயிற்சியைப் பெற்றுக் கொள்கிறது. பின்னர் புதிதாக ஒரு வார்த்தையைக் கொடுத்து, அதைத் தொடர்ந்து அமையவிருக்கும் வார்த்தையை கணிக்கச் சொன்னால், தான் பெற்றுக் கொண்ட பயிற்சியின் படி கொடுக்கப்பட்ட வார்த்தையுடன், அதிக தொடர்புடைய வார்த்தைகள் என்னென்ன என்பதை கணித்துச் சொல்லும். எனவே ஒருவரின் பேச்சைப் புரிந்து கொள்வது, அதற்கேற்ப பதில் அளிப்பது, மொழிமாற்றம் செய்வது, பல்வேறு குரல்களை ஆராய்வது, உரையாடல்களை நிகழ்த்துவது போன்ற வேலைகளுக்கு RNN-ஐப் பயன்படுத்தலாம்.

RNTN என்பது RNN-ன் ஒரு வகை. மேற்கூறிய அனைத்தையும் வெறும் ஆங்கில மொழிக்கு மட்டும் செய்யாமல், இன்ன பிற மொழிகளிலும் செய்து காட்டுவதற்கு NLP (Natural Language Processing) என்று பெயர். அதாவது ஒரு மொழியிலுள்ள பெயர்ச்சொல், வினைச்சொல், உரிச்சொல், இணைப்புச்சொல் போன்றவற்றை அடையாளம் காணுதல் (Parts of speech tagging), ஒரு சொல்லில் இருக்கும் வேர்ச் சொல்லை எடுத்தல் மற்றும் அதனைத் தழுவி வருகின்ற பிற சொற்களை அடையாளம் காணுதல் (Stemming & Lemmatization), சொற்களின் பாகுபாடு(segmentation) போன்ற ஒரு மொழியைப் பற்றிப் புரிந்து கொள்ளத் தேவையான அனைத்து அம்சங்களையும் RNTN பெற்று விளங்குகிறது. Multi-layer perceptron என்பதையும் இந்த வேலைக்காகப் பயன்படுத்தலாம். ஆனால் இந்த RNTN இன்னும் சற்று மேம்பட்ட அம்சங்களுடன் இவ்வேலையைச் சிறப்பாகச் செய்கிறது.

%d bloggers like this: