Deep Learning – 17 – Autoencoders

Autoencoder என்றால் தரவுகளைத் தானாகவே ஏதோ ஒரு முறையில் குறியிட்டு சுருக்கி அமைக்கக் கற்றுக் கொள்ளுகின்ற ஒரு விஷயம் என்று பொருள். எனவேதான் dimensionality reduction, feature representation போன்ற இடங்களில் இது பெரும்பங்கு வகிக்கிறது. Machine learning-க்கான அறிமுகக் கற்றலில் PCA-ஐப் பற்றிப் பார்த்தோம் அல்லவா, அதே வேலையைச் செய்வதற்காக நியூரல் நெட்வொர்கில் பயன்படுத்தப்படும் ஒரு விஷயமே autoencoder ஆகும். PCA என்பது நேர்கோடு முறையில் அமையும் தரவுகளின் dimension-ஐக் குறைக்கப் பயன்படுகிறதெனில் , Autoencoder என்பது நேர்கோட்டில் அமையாத(non-linear) தரவுகளையும் கையாள்கிறது. இதுவும் unsupervised learning வகையைச் சார்ந்தது. ஏனெனில் இம்முறையில்தான் குறியிட்டு அமைக்க வேண்டும் என்பதற்கு எந்தஒரு பயிற்சியும், வழிகாட்டுதலும் இன்றி இது கற்றுக்கொள்கிறது.

இதன் முதலாவது லேயர் உள்ளீட்டு லேயர் என்று அழைக்கப்படும். அடுத்தடுத்து உள்ளது encoding மற்றும் decoding லேயர்கள் என்று அழைக்கப்படும். இதன் வேலையே உள்ளீட்டுத் தரவுகளை ஏதோ ஒரு முறையில் குறியிட்டு சுருக்கி அளிப்பது மற்றும் அக்குறியீட்டினை நீக்கம் செய்து மீண்டும் பழைய நிலையில் தரவுகளை வெளிப்படுத்துவது ஆகும். கடைசியாக உள்ளது வெளியீட்டு லேயர். இது வெளிப்படுத்துகின்ற மதிப்பும், உள்ளீட்டு லேயர் வழியே செலுத்தப்படுகின்ற மதிப்பும் ஒன்றாகவே அமையும். இடையில் encoding மற்றும் decoding செய்யப் பயன்படுகின்ற ஒரு விஷயமே ‘bottleneck’ என்றும் அழைக்கப்படுகிறது. இது பொதுவாகப் படங்களின் மீது செயல்பட்டு தேவையில்லாத இடங்களை அகற்றுவது (denoising image) , பரிமாணங்களைக் குறைப்பது (dimensionality reduction), கருப்பு வெள்ளைப் படங்களை வண்ணப் படங்களாக மாற்றுவது (Image colouring) , படத்தின் முக்கிய அம்சங்களை மட்டும் தேர்ந்தெடுத்து வெளிப்படுத்துவது (feature variation) , சில படங்களின் மீது இயல்பாக மங்கிய நிலையில் அச்சிடப்பட்டுத் தென்படுகின்ற கடையின் பெயர், பதிப்புரிமை போன்ற எழுத்துக்களை நீக்குவது (watermark removal)போன்ற விஷயங்களைச் செய்வதற்கு இது பெரிதும் பயன்படுகிறது.

• Denoising Autoencoder என்பது ஒரு அடிப்படை வகை. இது சிதைந்த நிலையில் இருக்கும் தரவுகளையோ / படத்தையோ எடுத்துக் கொண்டு அவற்றிலிருக்கும் வலுவான அம்சங்களை (robust features) மட்டும் வைத்து மீண்டும் அத்தரவுகளையோ , படத்தையோ மறுஉருவாக்கம் செய்யப் பயன்படுகிறது.
• Sparse Autoencoder என்பது இடைப்பட்ட லேயரில் உள்ள nodes-ன் எண்ணிக்கையைக் குறைக்காமல், உள்ளீட்டு மற்றும் வெளியீட்டு லேயரில் உள்ள nodes-ன் எண்ணிக்கைக்குச் சமமாகவே அமைக்கிறது. இவ்வாறு செய்யும்போது தரவுகளை encode செய்யாமல் ஒவ்வொரு node-ம் அப்படியே நினைவில் ஏற்றிக் கொள்ளும் அபாயம் ஏற்படும். இதனைத் தவிர்ப்பதற்காக ஒவ்வொரு லேயரிலும் ஒருசில nodes-ன் செயல்பாட்டை முடக்கி வைப்பதன் மூலம் Information bottleneck-ஐ செயல்பட வைக்கிறது.
• Deep Autoencoder என்பது முதலாம் நிலை, இரண்டாம் நிலை, மூன்றாம் நிலை என பல்வேறு நிலைகளில் அடுக்கடுக்காக features-ஐக் குறைத்துக் கொண்டே வந்து கடைசியில் அவற்றைக் குறியிட்டு வைக்கிறது. பின்னர் இக்குறியீட்டினை நீக்கம் செய்து, அத்தரவுகளை வெளிக்கொண்டு வருவதும் இதே முறையில் பல்வேறு நிலைகளில் நடைபெறுகிறது. Image Search, Data compression, Topic Modeling, Information retrieval போன்ற விஷயங்களில் இது பெரும்பங்கு வகிக்கிறது.
• Contractive autoencoder என்பது பெயரிடப்படாத தரவுகளை (unlabeled data) ஒரு குறிப்பிட்ட label-ன் கீழ் சுருக்கி வெளிப்படுத்த உதவுகிறது. இதுபோன்று உருவாக்கப்படும் லேபில் latent variables என்று அழைக்கப்படுகின்றன. இது Regularized autoencoder-ன் ஒரு வகை ஆகும்.
• Variational autoencoder என்பது ஒரே படத்தில் சிறுசிறு மாற்றங்களைச் செய்து புதுப்புது படங்களை உருவாக்குவதற்கு உதவுகிறது. நாம் ஏற்கெனவே இதுபோன்ற காணொளிகளைப் பார்த்திருப்போம் அல்லவா! முதலில் ஒருவருடைய முகத்தில் ஆரம்பித்து அதிலிருந்து சிறுசிறு மாற்றங்களைச் செய்து, பலருடைய முகங்கள் தென்படுமே! இவையெல்லாம் Variational autoencoder-ன் வேலையே. Graphical models உருவாக்கம் மற்றும் image generation போன்ற இடங்களில் இது பெரும்பங்கு வகிக்கிறது.

%d bloggers like this: