அடிப்படை N-Grams இலிருந்து RNNs, LSTMs, மற்றும் Transformers வரையிலான பரிணாம வளர்ச்சியைப் புரிந்து கொள்ளுதல்.
Neural Networks-ஐப் பற்றி பார்ப்பதற்கு முன், நாம் கேட்க வேண்டிய கேள்வி: ஒரு இயந்திரம் அடுத்த வார்த்தையை எப்படி கணிக்கிறது?
இதை கவனியுங்கள்: "I like to eat ____"
Deep Learning-க்கு முன்பு, dataset-இல் குறிப்பிட்ட வார்த்தைகள் எவ்வளவு முறை சேர்ந்து வருகின்றன என்பதை நாம் எண்ணினோம்!
கடந்த 99 வார்த்தைகளைப் பார்க்கும் ஒரு 100-Gram model-ஐ நாம் ஏன் உருவாக்கக் கூடாது?
Training data-வில் முன்கூட்டியே வராத ஒரு புதிய வார்த்தை வரிசையை N-Gram, RNN மற்றும் LSTM models-க்கு கொடுத்து சோதிக்கும் போது:
Neural Networks துல்லியமான பொருத்தங்களை (exact matches) சார்ந்திருப்பதில்லை! அவை Hidden State-ஐப் பயன்படுத்தி சூழலை (context) சுருக்கிப் பொதுமைப்படுத்துகின்றன. இதனால் புதிய வார்த்தை வரிசைகளுக்கும் அவற்றால் கணிக்க முடிகிறது.
Natural Language Processing-ல் sequence lengths மாறுபடுவது (variable length) ஒரு பெரிய சவால். Input மற்றும் Output sequence lengths-ஐப் பொறுத்து நாம் Neural Networks-ஐ பல வழிகளில் பயன்படுத்தலாம்:
அடுத்த வார்த்தையை கணிப்பது ஒருபுறம் இருக்க, ஒரு முழுமையான sequence-ஐ எப்படி மொழிபெயர்ப்பது?
ஒரு வார்த்தையை ஒவ்வொரு எழுத்தாகப் படிப்பதை கற்பனை செய்து பாருங்கள்:
COMMUNICATION
குறிப்பிட்ட "N" எழுத்துக்களை மட்டும் பார்க்காமல், Recurrent Neural Network (RNN) ஒவ்வொரு படியிலும் ஒரு Hidden State-ஐ முன்னோக்கி அனுப்புகிறது.
ஒரு தொடர் ஓட்டப்பந்தயத்தில் (relay race) baton-ஐ கைமாற்றுவது போல, ஒவ்வொரு எழுத்தும் தனது தகவலை baton-ல் சேர்த்து, அடுத்த எழுத்திடம் ஒப்படைக்கிறது. இது முந்தைய அனைத்தையும் ஒரே vector-க்குள் சுருக்குகிறது.
Baton-ஐ கைமாற்றும் முறை அடிப்படையில் சரியாகத் தோன்றினாலும், நீண்ட sequences-க்கு கணிதரீதியாக இது தோல்வியடைகிறது.
"Telephone" விளையாட்டு போல, அசல் செய்தி ஒவ்வொரு படியிலும் தொடர்ந்து மேலெழுதப்பட்டு, சிதைந்துவிடுகிறது.
ஒரு RNN 13-எழுத்து வார்த்தையின் முடிவை அடையும் போது, அது முதல் 3 எழுத்துக்களை கிட்டத்தட்ட முழுமையாக மறந்துவிடுகிறது.
இந்த மறதியை சரிசெய்ய, Long Short-Term Memory (LSTM) உருவாக்கப்பட்டது. இது Cell State என்ற ஒன்றை அறிமுகப்படுத்துகிறது—இது ஒரு smart notebook போல செயல்படும் தனி நினைவாற்றல் பாதை.
இந்த வித்தியாசம் PyTorch code-இல் நேரடியாகத் தெரிகிறது. LSTM எவ்வாறு ஒரு hidden state (குறுகிய கால) மற்றும் ஒரு cell state (நீண்ட கால notebook) ஆகிய இரண்டையும் கடத்துகிறது என்பதைக் கவனியுங்கள்.
class CharDecoderLSTM(nn.Module):
def forward(self, x, hidden, cell):
embedded = self.embedding(x)
# Hidden state மற்றும் cell state இரண்டையும் முன்னோக்கி அனுப்புகிறோம்
output, (hidden, cell) = self.lstm(embedded, (hidden, cell))
prediction = self.fc(output)
return prediction, hidden, cell
முழுமையான வார்த்தைகளை ஒவ்வொரு எழுத்தாக மொழிபெயர்க்கப் பயிற்றுவிக்கப்படும் போது, Standard RNN நீண்ட வார்த்தைகளில் முழுமையாகத் தோல்வியடைகிறது, ஏனெனில் அது வார்த்தையின் தொடக்கத்தை மறந்துவிடுகிறது. ஆனால் LSTM இதை மிகச் சிறப்பாக கையாளுகிறது.
LSTM-கள் சிறப்பானவை, ஆனால் அவற்றில் ஒரு அடிப்படையான பெரிய பிரச்சனை உள்ளது: Sequential Processing (தொடர்ச்சியான செயலாக்கம்).
2017-ஆம் ஆண்டில், Google நிறுவனம் "Attention Is All You Need" என்ற ஆய்வறிக்கையை வெளியிட்டு, Transformer-ஐ அறிமுகப்படுத்தியது. இது RNN-களை முற்றிலுமாக நிராகரித்தது.
நமது `transformer_demo.py` script-ல், Self-Attention இடைப்பட்ட stages-ஐத் தவிர்த்துவிட்டு வார்த்தைகளை எவ்வாறு நேரடியாக இணைக்கிறது என்பதைப் பார்ப்போம்.
"bank" என்ற வார்த்தை, அதன் Context-ஐப் புரிந்துகொள்ள, "river" என்ற வார்த்தைக்கு நேரடியாக 0.40 Attention Weight-ஐ வழங்குவதைக் கவனியுங்கள்! இங்கே Baton-ஐ வரிசையாகக் கடத்த வேண்டிய அவசியமே இல்லை.
Language Models-இன் உண்மையான சக்தி, அவை ஒரு வார்த்தையை மட்டும் கணிப்பதில்லை—அவற்றால் புதிய வரிகளைத் தொடர்ந்து உருவாக்க முடியும். கணிக்கப்பட்ட வார்த்தையை மீண்டும் Input-ஆகக் கொடுப்பதன் மூலம், ஒரு சுழற்சியை உருவாக்கலாம். ChatGPT எப்படி கட்டுரைகளை எழுதுகிறது என்பதன் அடிப்படை இதுதான்!
தான் கற்றுக்கொண்ட அமைப்பின் அடிப்படையில் மாடல் கற்பனையாகப் புதிய வாக்கியங்களை உருவாக்குகிறது (Hallucination)!