# ജനറേറ്റീവ് നെറ്റ്വർക്കുകൾ ## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ai/quiz/33) റികറന്റ് ന്യൂറൽ നെറ്റ്വർക്കുകൾ (RNNs) കൂടാതെ ലോങ് ഷോർട്ട് ടേം മെമ്മറി സെല്ലുകൾ (LSTMs) പോലുള്ള ഗേറ്റഡ് സെൽ വകഭേദങ്ങളും ഗേറ്റഡ് റികറന്റ് യൂണിറ്റുകളും (GRUs) വാക്കുകളുടെ ക്രമീകരണം പഠിക്കുകയും ഒരു സീക്വൻസിലെ അടുത്ത വാക്ക് പ്രവചിക്കുകയും ചെയ്യാൻ സഹായിക്കുന്ന ഭാഷാ മോഡലിംഗിന് ഒരു സംവിധാനം നൽകി. ഇതുവഴി, സാധാരണ ടെക്സ്റ്റ് ജനറേഷൻ, മെഷീൻ ട്രാൻസ്ലേഷൻ, ഇമേജ് ക്യാപ്ഷനിംഗ് പോലുള്ള **ജനറേറ്റീവ് ടാസ്കുകൾ**ക്കായി RNNs ഉപയോഗിക്കാം. > ✅ നിങ്ങൾ ടൈപ്പ് ചെയ്യുമ്പോൾ ടെക്സ്റ്റ് പൂർത്തീകരണം പോലുള്ള ജനറേറ്റീവ് ടാസ്കുകളിൽ എത്രത്തോളം പ്രയോജനം ലഭിച്ചതെന്ന് ചിന്തിക്കുക. നിങ്ങളുടെ പ്രിയപ്പെട്ട ആപ്ലിക്കേഷനുകൾ RNNs ഉപയോഗിച്ചിട്ടുണ്ടോ എന്ന് അന്വേഷിക്കുക. മുൻ യൂണിറ്റിൽ ചർച്ച ചെയ്ത RNN ആർക്കിടെക്ചറിൽ, ഓരോ RNN യൂണിറ്റും അടുത്ത ഹിഡൻ സ്റ്റേറ്റ് ഔട്ട്പുട്ടായി ഉത്പാദിപ്പിച്ചിരുന്നു. എന്നാൽ, ഓരോ റികറന്റ് യൂണിറ്റിനും മറ്റൊരു ഔട്ട്പുട്ട് കൂടി ചേർക്കാം, ഇത് ഒരു **സീക്വൻസ്** (മൂല സീക്വൻസിന്റെ നീളത്തിന് തുല്യമായ) ഔട്ട്പുട്ട് നൽകാൻ സഹായിക്കും. കൂടാതെ, ഓരോ ഘട്ടത്തിലും ഇൻപുട്ട് സ്വീകരിക്കാത്ത RNN യൂണിറ്റുകൾ ഉപയോഗിച്ച്, ഒരു പ്രാരംഭ സ്റ്റേറ്റ് വെക്ടർ എടുത്ത്, തുടർന്ന് ഔട്ട്പുട്ടുകളുടെ ഒരു സീക്വൻസ് ഉത്പാദിപ്പിക്കാം. ഇത് താഴെ കാണുന്ന ചിത്രത്തിൽ കാണുന്ന വ്യത്യസ്ത ന്യൂറൽ ആർക്കിടെക്ചറുകൾക്ക് വഴിയൊരുക്കുന്നു: ![Image showing common recurrent neural network patterns.](../../../../../translated_images/ml/unreasonable-effectiveness-of-rnn.541ead816778f42d.webp) > [Andrej Karpaty](http://karpathy.github.io/) എഴുതിയ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) എന്ന ബ്ലോഗ് പോസ്റ്റിൽ നിന്നുള്ള ചിത്രം * **ഒന്ന്-തൊട്ട്-ഒന്ന്** എന്നത് ഒരു പരമ്പരാഗത ന്യൂറൽ നെറ്റ്വർക്കാണ്, ഒരു ഇൻപുട്ടും ഒരു ഔട്ട്പുട്ടും ഉള്ളത് * **ഒന്ന്-തൊട്ട്-അനേകം** എന്നത് ഒരു ജനറേറ്റീവ് ആർക്കിടെക്ചറാണ്, ഒരു ഇൻപുട്ട് മൂല്യം സ്വീകരിച്ച് ഔട്ട്പുട്ടുകളുടെ ഒരു സീക്വൻസ് ഉത്പാദിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു **ഇമേജ് ക്യാപ്ഷനിംഗ്** നെറ്റ്വർക്ക് പരിശീലിപ്പിക്കാൻ, ഒരു ചിത്രം ഇൻപുട്ടായി എടുത്ത്, അതിന്റെ ഹിഡൻ സ്റ്റേറ്റ് ലഭിക്കാൻ CNN വഴി കടത്തുകയും, തുടർന്ന് റികറന്റ് ചെയിൻ ഓരോ വാക്കും ഉത്പാദിപ്പിക്കുകയും ചെയ്യാം * **അനേകം-തൊട്ട്-ഒന്ന്** മുൻ യൂണിറ്റിൽ വിവരണം ചെയ്ത RNN ആർക്കിടെക്ചറുകളുമായി പൊരുത്തപ്പെടുന്നു, ഉദാഹരണത്തിന് ടെക്സ്റ്റ് ക്ലാസിഫിക്കേഷൻ * **അനേകം-തൊട്ട്-അനേകം**, അല്ലെങ്കിൽ **സീക്വൻസ്-തൊട്ട്-സീക്വൻസ്** മെഷീൻ ട്രാൻസ്ലേഷൻ പോലുള്ള ടാസ്കുകൾക്കാണ്, ഇവിടെ ആദ്യ RNN ഇൻപുട്ട് സീക്വൻസിലെ എല്ലാ വിവരവും ഹിഡൻ സ്റ്റേറ്റിലേക്ക് ശേഖരിക്കുകയും, മറ്റൊരു RNN ചെയിൻ ഈ സ്റ്റേറ്റ് ഔട്ട്പുട്ട് സീക്വൻസായി അനറോൾ ചെയ്യുകയും ചെയ്യുന്നു. ഈ യൂണിറ്റിൽ, നാം ടെക്സ്റ്റ് ജനറേറ്റ് ചെയ്യാൻ സഹായിക്കുന്ന ലളിതമായ ജനറേറ്റീവ് മോഡലുകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കും. ലളിതത്വത്തിനായി, നാം കറക്റ്റർ-ലെവൽ ടോക്കനൈസേഷൻ ഉപയോഗിക്കും. നാം ഈ RNN ഓരോ ഘട്ടത്തിലും ടെക്സ്റ്റ് ജനറേറ്റ് ചെയ്യാൻ പരിശീലിപ്പിക്കും. ഓരോ ഘട്ടത്തിലും, നീളം `nchars` ഉള്ള കറക്റ്ററുകളുടെ ഒരു സീക്വൻസ് എടുത്ത്, ഓരോ ഇൻപുട്ട് കറക്റ്ററിനും അടുത്ത ഔട്ട്പുട്ട് കറക്റ്റർ ജനറേറ്റ് ചെയ്യാൻ നെറ്റ്വർക്കിനെ ചോദിക്കും: ![Image showing an example RNN generation of the word 'HELLO'.](../../../../../translated_images/ml/rnn-generate.56c54afb52f9781d.webp) ടെക്സ്റ്റ് ജനറേറ്റ് ചെയ്യുമ്പോൾ (ഇൻഫറൻസ് സമയത്ത്), നാം ഒരു **പ്രോംപ്റ്റ്** ഉപയോഗിച്ച് തുടങ്ങുന്നു, അത് RNN സെല്ലുകൾ വഴി കടന്നുപോകുന്നു, ഇടക്കാല സ്റ്റേറ്റ് ഉത്പാദിപ്പിക്കുന്നു, തുടർന്ന് ആ സ്റ്റേറ്റിൽ നിന്നാണ് ജനറേഷൻ ആരംഭിക്കുന്നത്. ഓരോ കറക്റ്ററും ഒറ്റത്തവണയായി ജനറേറ്റ് ചെയ്ത്, സ്റ്റേറ്റ് കൂടാതെ ജനറേറ്റ് ചെയ്ത കറക്റ്റർ മറ്റൊരു RNN സെലിലേക്ക് നൽകുന്നു, അടുത്തത് ജനറേറ്റ് ചെയ്യാൻ, ആവശ്യമായ കറക്റ്ററുകൾ വരെ തുടരും. > എഴുത്തുകാരന്റെ ചിത്രം ## ✍️ അഭ്യാസങ്ങൾ: ജനറേറ്റീവ് നെറ്റ്വർക്കുകൾ താഴെ കൊടുത്തിരിക്കുന്ന നോട്ട്‌ബുക്കുകളിൽ നിങ്ങളുടെ പഠനം തുടരുക: * [PyTorch ഉപയോഗിച്ച് ജനറേറ്റീവ് നെറ്റ്വർക്കുകൾ](GenerativePyTorch.ipynb) * [TensorFlow ഉപയോഗിച്ച് ജനറേറ്റീവ് നെറ്റ്വർക്കുകൾ](GenerativeTF.ipynb) ## സോഫ്റ്റ് ടെക്സ്റ്റ് ജനറേഷൻ & ടെംപറേച്ചർ ഓരോ RNN സെല്ലിന്റെ ഔട്ട്പുട്ട് കറക്റ്ററുകളുടെ പ്രൊബബിലിറ്റി വിതരണമാണ്. എപ്പോഴും ഏറ്റവും ഉയർന്ന പ്രൊബബിലിറ്റിയുള്ള കറക്റ്റർ അടുത്തതായി തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, ടെക്സ്റ്റ് പലപ്പോഴും ഒരേ കറക്റ്റർ സീക്വൻസുകൾ ആവർത്തിച്ച് "സൈക്ലിംഗ്" ആകാം, താഴെ കാണുന്ന ഉദാഹരണത്തിൽപോലെ: ``` today of the second the company and a second the company ... ``` എങ്കിലും, അടുത്ത കറക്റ്ററിന്റെ പ്രൊബബിലിറ്റി വിതരണത്തിൽ, ഏറ്റവും ഉയർന്ന ചില പ്രൊബബിലിറ്റികൾ തമ്മിലുള്ള വ്യത്യാസം വലിയതല്ല, ഉദാഹരണത്തിന് ഒരു കറക്റ്ററിന് 0.2 പ്രൊബബിലിറ്റി ഉണ്ടെങ്കിൽ, മറ്റൊന്നിന് 0.19 ഉണ്ടാകാം. ഉദാഹരണത്തിന് '*play*' എന്ന സീക്വൻസിൽ അടുത്ത കറക്റ്റർ സ്പേസ് ആകാമോ, അല്ലെങ്കിൽ **e** (പ്ലെയർ എന്ന വാക്കിൽപോലെ) ആകാമോ എന്നത് സമാനമായ സാധ്യതയുണ്ട്. ഇത് നമ്മെ നയിക്കുന്നത്, ഏറ്റവും ഉയർന്ന പ്രൊബബിലിറ്റിയുള്ള കറക്റ്റർ തിരഞ്ഞെടുക്കുന്നത് എല്ലായ്പ്പോഴും "ന്യായമായ" കാര്യമല്ല എന്നതിലേക്കാണ്, കാരണം രണ്ടാം ഉയർന്ന പ്രൊബബിലിറ്റിയുള്ളത് തിരഞ്ഞെടുക്കുന്നതും അർത്ഥവത്തായ ടെക്സ്റ്റിലേക്ക് നയിക്കാം. നെറ്റ്വർക്ക് ഔട്ട്പുട്ട് നൽകുന്ന പ്രൊബബിലിറ്റി വിതരണത്തിൽ നിന്ന് **സാമ്പിൾ** ചെയ്യുന്നത് കൂടുതൽ ബുദ്ധിമുട്ടുള്ളതാണ്. കൂടാതെ, **ടെംപറേച്ചർ** എന്ന പാരാമീറ്റർ ഉപയോഗിച്ച്, കൂടുതൽ റാൻഡംസ് ചേർക്കാൻ പ്രൊബബിലിറ്റി വിതരണത്തെ തളർച്ചയാക്കാം, അല്ലെങ്കിൽ ഏറ്റവും ഉയർന്ന പ്രൊബബിലിറ്റി ഉള്ള കറക്റ്ററുകളിൽ കൂടുതൽ ഉറച്ചുനിൽക്കാൻ അതിനെ കൂടുതൽ കൂറ്റൻ ആക്കാം. മുകളിൽ നൽകിയ നോട്ട്‌ബുക്കുകളിൽ ഈ സോഫ്റ്റ് ടെക്സ്റ്റ് ജനറേഷൻ എങ്ങനെ നടപ്പിലാക്കുന്നുവെന്ന് പരിശോധിക്കുക. ## സമാപനം ടെക്സ്റ്റ് ജനറേഷൻ സ്വയം പ്രയോജനകരമായിരിക്കാം, എന്നാൽ പ്രധാന ഗുണം RNNs ഉപയോഗിച്ച് ഏതെങ്കിലും പ്രാരംഭ ഫീച്ചർ വെക്ടറിൽ നിന്ന് ടെക്സ്റ്റ് ജനറേറ്റ് ചെയ്യാനുള്ള കഴിവിലാണ്. ഉദാഹരണത്തിന്, മെഷീൻ ട്രാൻസ്ലേഷനിൽ (സീക്വൻസ്-തൊട്ട്-സീക്വൻസ്, ഈ സാഹചര്യത്തിൽ *എൻകോഡർ* നിന്നുള്ള സ്റ്റേറ്റ് വെക്ടർ ഉപയോഗിച്ച് വിവർത്തനം ചെയ്ത സന്ദേശം *ഡീകോഡ്* ചെയ്യുന്നു), അല്ലെങ്കിൽ ഒരു ചിത്രത്തിന്റെ ടെക്സ്റ്റ്വൽ വിവരണം ജനറേറ്റ് ചെയ്യുന്നതിൽ (ഇവിടെ ഫീച്ചർ വെക്ടർ CNN എക്സ്ട്രാക്ടറിൽ നിന്നാണ് വരുന്നത്) ടെക്സ്റ്റ് ജനറേഷൻ ഉപയോഗിക്കുന്നു. ## 🚀 ചലഞ്ച് ഈ വിഷയത്തിൽ Microsoft Learn-ൽ ചില പാഠങ്ങൾ സ്വീകരിക്കുക * [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) ഉപയോഗിച്ച് ടെക്സ്റ്റ് ജനറേഷൻ ## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ai/quiz/34) ## അവലോകനം & സ്വയം പഠനം നിങ്ങളുടെ അറിവ് വിപുലീകരിക്കാൻ ചില ലേഖനങ്ങൾ: * Markov Chain, LSTM, GPT-2 ഉപയോഗിച്ച് ടെക്സ്റ്റ് ജനറേഷനിലെ വ്യത്യസ്ത സമീപനങ്ങൾ: [ബ്ലോഗ് പോസ്റ്റ്](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) * [Keras ഡോക്യുമെന്റേഷനിൽ](https://keras.io/examples/generative/lstm_character_level_text_generation/) ടെക്സ്റ്റ് ജനറേഷൻ സാമ്പിൾ ## [അസൈൻമെന്റ്](lab/README.md) നാം കറക്റ്റർ-തൊട്ട്-കറക്റ്റർ ടെക്സ്റ്റ് ജനറേറ്റ് ചെയ്യുന്നത് കണ്ടു. ലാബിൽ, നിങ്ങൾ വാക്ക്-തൊട്ട്-വാക്ക് ടെക്സ്റ്റ് ജനറേഷൻ പരിശോധിക്കും. --- **അസൂയാ**: ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.