chore(i18n): sync translations with latest source changes (chunk 81/148, 100 files)

This commit is contained in:
localizeflow[bot] 2026-01-01 14:21:15 +00:00
parent d67c9b941c
commit 861565d9ff
100 changed files with 19882 additions and 19882 deletions

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# மேலோட்டம்
![ஒரு ஓவியத்தில் மேலோட்டம்](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ta.png)
![ஒரு ஓவியத்தில் மேலோட்டம்](../../../translated_images/ai-overview.0857791951d19500.ta.png)
> ஸ்கெட்ச் குறிப்பு: [Tomomi Imura](https://twitter.com/girlie_mac)

View File

@ -15,7 +15,7 @@ NLP பணிகளைத் தீர்க்க டிரான்ஸ்ஃ
CLIP இன் முக்கிய நோக்கம், உரை முன்மொழிவுகளை ஒரு படத்துடன் ஒப்பிட்டு, அந்த படம் முன்மொழிவுடன் எவ்வளவு பொருந்துகிறது என்பதைத் தீர்மானிக்க வேண்டும்.
![CLIP கட்டமைப்பு](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ta.png)
![CLIP கட்டமைப்பு](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be.ta.png)
> *[இந்த வலைப்பதிவில்](https://openai.com/blog/clip/) இருந்து எடுத்த படம்*
@ -29,7 +29,7 @@ CLIP மாடல்/நூலகம் [OpenAI GitHub](https://github.com/opena
நாம் படங்களை, உதாரணமாக, பூனைகள், நாய்கள் மற்றும் மனிதர்கள் ஆகியவற்றுக்கு இடையில் வகைப்படுத்த வேண்டும் எனக் கருதுக. இந்த நிலையில், மாடலுக்கு ஒரு படம் மற்றும் ஒரு தொடர் உரை முன்மொழிவுகளை கொடுக்கலாம்: "*ஒரு பூனையின் படம்*", "*ஒரு நாயின் படம்*", "*ஒரு மனிதனின் படம்*". 3 சாத்தியக்கூறுகளின் விளைவாக கிடைக்கும் வெக்டாரில், அதிக மதிப்புள்ள குறியீட்டை தேர்ந்தெடுக்க வேண்டும்.
![பட வகைப்படுத்தலுக்கான CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ta.png)
![பட வகைப்படுத்தலுக்கான CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369.ta.png)
> *[இந்த வலைப்பதிவில்](https://openai.com/blog/clip/) இருந்து எடுத்த படம்*
@ -53,13 +53,13 @@ VQGAN பற்றி மேலும் அறிய [Taming Transformers](http
VQGAN மற்றும் பாரம்பரிய GAN களுக்கிடையிலான முக்கியமான வேறுபாடுகளில் ஒன்று, GAN எந்த உள்ளீட்டு வெக்டாரிலிருந்தும் ஒரு நல்ல படத்தை உருவாக்க முடியும், ஆனால் VQGAN ஒருங்கிணைந்த படத்தை உருவாக்க முடியாமல் போகலாம். எனவே, பட உருவாக்க செயல்முறையை மேலும் வழிநடத்த வேண்டும், இது CLIP ஐப் பயன்படுத்தி செய்ய முடியும்.
![VQGAN+CLIP கட்டமைப்பு](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ta.png)
![VQGAN+CLIP கட்டமைப்பு](../../../../../translated_images/vqgan.5027fe05051dfa31.ta.png)
ஒரு உரை முன்மொழிவுக்கு பொருந்தும் படத்தை உருவாக்க, சில சீரற்ற குறியீட்டு வெக்டாருடன் தொடங்குகிறோம், இது VQGAN வழியாக அனுப்பப்பட்டு ஒரு படத்தை உருவாக்குகிறது. பின்னர் CLIP ஒரு இழப்புக் கோட்பாட்டை உருவாக்க பயன்படுத்தப்படுகிறது, இது படம் உரை முன்மொழிவுக்கு எவ்வளவு பொருந்துகிறது என்பதை காட்டுகிறது. பின்னர் இந்த இழப்பை குறைப்பதே நோக்கம், பின்னடைவு மூலம் உள்ளீட்டு வெக்டார் அளவுருக்களை சரிசெய்தல்.
VQGAN+CLIP ஐ செயல்படுத்தும் ஒரு சிறந்த நூலகம் [Pixray](http://github.com/pixray/pixray)
![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ta.png) | ![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ta.png) | ![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ta.png)
![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d0.ta.png) | ![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a4390.ta.png) | ![Pixray மூலம் உருவாக்கப்பட்ட படம்](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683.ta.png)
----|----|----
முன்மொழிவு *ஒரு புத்தகத்துடன் இளம் ஆண் இலக்கிய ஆசிரியரின் நெருக்கமான நீர்வண்ண உருவப்படம்* | முன்மொழிவு *ஒரு கணினியுடன் இளம் பெண் கணினி அறிவியல் ஆசிரியரின் நெருக்கமான எண்ணெய் உருவப்படம்* | முன்மொழிவு *கரும்பலகையின் முன் முதிய ஆண் கணித ஆசிரியரின் நெருக்கமான எண்ணெய் உருவப்படம்*

View File

@ -1,134 +1,134 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4ed9993bca581850c983c95d5a3f57eb",
"translation_date": "2025-12-25T02:13:35+00:00",
"original_hash": "14816e97d79b296c87811724f7785923",
"translation_date": "2026-01-01T14:00:45+00:00",
"source_file": "README.md",
"language_code": "te"
}
-->
[![GitHub లైసెన్స్](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE)
[![GitHub కాంట్రిబ్యూటర్లు](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/)
[![GitHub సమస్యలు](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/)
[![GitHub పుల్-రిక్వెస్ట్‌లు](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/)
[![PRsకు స్వాగతం](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub భాగస్వాములు](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/)
[![PRs స్వాగతం](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub వాచ్ చేయేవారు](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![GitHub ఫోర్క్స్](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![GitHub స్టార్‌లు](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/)
[![GitHub వాచ్ చేయండి](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![GitHub ఫార్క్స్](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![GitHub నట్స్](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)
[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
# ప్రారంభికుల కోసం కృత్రిమ మేధస్సు - ఒక పాఠ్యక్రమం
# Artificial Intelligence for Beginners - A Curriculum
|![స్కెచ్‌నోట్ రచయిత: @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.te.png)|
|![Sketchnote by @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500.te.png)|
|:---:|
| AI For Beginners - _స్కెచ్‌నోట్ రచయిత: [@girlie_mac](https://twitter.com/girlie_mac)_ |
| AI For Beginners - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ |
మా 12-వారాల, 24-పాఠాల పాఠ్యక్రమంతో **కృత్రిమ మేధస్సు** (AI) ప్రపంచాన్ని అన్వేషించండి! ఇందులో ప్రాయోగిక పాఠాలు, క్విజ్‌లు మరియు ల్యాబ్‌లు ఉన్నాయి. ఈ పాఠ్యక్రమం ప్రారంభికులకు అనుకూలంగా ఉంది మరియు TensorFlow మరియు PyTorch వంటి సాధనాలు మరియు AIలోని నైతికతలను కవర్ చేస్తుంది
మన 12-వారాల, 24- పాఠాల పాఠ్యక్రమంతో **కృత్రిమ బుద్ధి** (AI) ప్రపంచాన్ని అన్వేషించండి! ఇది ప్రాక్టికల్ పాఠాలు, క్విజెస్, మరియు ల్యాబ్‌లను కలిగి ఉంది. ఈ పాఠ్యక్రమం మొదటి సారిగా నేర్చుకునే వారికి అనుకూలంగా ఉంది మరియు TensorFlow మరియు PyTorch వంటి టూల్స్, అలాగే AI నైతికతలను కూడా కవర్ చేస్తుంది
### 🌐 బహుభాషా మద్దతు
### 🌐 బహుభాషల మద్దతు
#### GitHub Action ద్వారా మద్దతు (స్వయంచాలకంగా & ఎల్లప్పుడూ అప్డేట్)
#### GitHub Action ద్వారా మద్దతు (స్వయంచాలకంగా & ఎప్పుడూ తాజాపడిన)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[అరబిక్](../ar/README.md) | [బెంగాలీ](../bn/README.md) | [బల్గేరియన్](../bg/README.md) | [బర్మీస్ (మ్యాన్మార్)](../my/README.md) | [చైనీస్ (సరళీకృత)](../zh/README.md) | [చైనీస్ (సాంప్రదాయ, హాంగ్ కాంగ్)](../hk/README.md) | [చైనీస్ (సాంప్రదాయ, మకావు)](../mo/README.md) | [చైనీస్ (సాంప్రదాయ, తైవాన్)](../tw/README.md) | [క్రొయేషియన్](../hr/README.md) | [చెక్](../cs/README.md) | [డెనిష్](../da/README.md) | [డచ్](../nl/README.md) | [ఎస్టోనియన్](../et/README.md) | [ఫిన్నిష్](../fi/README.md) | [ఫ్రెంచ్](../fr/README.md) | [జర్మన్](../de/README.md) | [గ్రీకు](../el/README.md) | [హిబ్రూ](../he/README.md) | [హింది](../hi/README.md) | [హంగేరియన్](../hu/README.md) | [ఇండోనేషియన్](../id/README.md) | [ఇటాలియన్](../it/README.md) | [జపనీస్](../ja/README.md) | [కన్నడ](../kn/README.md) | [కొరియన్](../ko/README.md) | [లిథువేనియన్](../lt/README.md) | [మలయ్](../ms/README.md) | [మలయాలం](../ml/README.md) | [మరాఠీ](../mr/README.md) | [నేపాలి](../ne/README.md) | [నైజీరియన్ పిడ్జిన్](../pcm/README.md) | [నార్వేజియన్](../no/README.md) | [పర్షియన్ (ఫార్సీ)](../fa/README.md) | [పోలిష్](../pl/README.md) | [పోర్చుగీస్ (బ్రెజిల్)](../br/README.md) | [పోర్చుగీస్ (పోర్చుగల్)](../pt/README.md) | [పంచాబీ (గుర్ముఖి)](../pa/README.md) | [రొమేనియన్](../ro/README.md) | [రష్యన్](../ru/README.md) | [సర్బియన్ (సిరిలిక్)](../sr/README.md) | [స్లోవాక్](../sk/README.md) | [స్లోవేనియన్](../sl/README.md) | [స్పానిష్](../es/README.md) | [స్వాహిలి](../sw/README.md) | [స్వీడిష్](../sv/README.md) | [టాగాలోగ్ (ఫిలిపినో)](../tl/README.md) | [తమిళ్](../ta/README.md) | [తెలుగు](./README.md) | [థాయ్](../th/README.md) | [టర్కిష్](../tr/README.md) | [ఉక్రెయిన్](../uk/README.md) | [ఉర్దూ](../ur/README.md) | [వియత్నామీస్](../vi/README.md)
[అరబిక్](../ar/README.md) | [బెంగాలీ](../bn/README.md) | [బల్గేరియన్](../bg/README.md) | [బర్మీస్ (మియాన్మಾರ್)](../my/README.md) | [చైనీస్ (సరళీకృతం)](../zh/README.md) | [చైనీస్ (పారంపరిక, హాంగ్‌కాంగ్)](../hk/README.md) | [చైనీస్ (పారంపరిక, మకావు)](../mo/README.md) | [చైనీస్ (పారంపరిక, తైవాన్)](../tw/README.md) | [క్రొయేషియన్](../hr/README.md) | [చెక్](../cs/README.md) | [డానిష్](../da/README.md) | [డచ్](../nl/README.md) | [ఎస్టోనియన్](../et/README.md) | [ఫిన్నిష్](../fi/README.md) | [ఫ్రెంచ్](../fr/README.md) | [జర్మన్](../de/README.md) | [గ్రీకు](../el/README.md) | [హిబ్రూ](../he/README.md) | [హింది](../hi/README.md) | [హంగేరియన్](../hu/README.md) | [ఇండోనేషియన్](../id/README.md) | [ఇటాలియన్](../it/README.md) | [జపనీస్](../ja/README.md) | [కన్నడ](../kn/README.md) | [కొరియన్](../ko/README.md) | [లితువేనియన్](../lt/README.md) | [మలయ్](../ms/README.md) | [మలయాళం](../ml/README.md) | [మరాఠీ](../mr/README.md) | [నేపాలి](../ne/README.md) | [నైజీరియన్ పిడ్జిన్](../pcm/README.md) | [నార్వేజియన్](../no/README.md) | [పర్షియన్ (ఫార్సీ)](../fa/README.md) | [పోలిష్](../pl/README.md) | [పోర్టుగీస్ (బ్రెజిల్)](../br/README.md) | [పోర్టుగీస్ (పోర్చుగల్)](../pt/README.md) | [పంజాబీ (గురుముఖి)](../pa/README.md) | [రోమేనియన్](../ro/README.md) | [రష్యన్](../ru/README.md) | [సెర్బియన్ (సిరిల్లిక్)](../sr/README.md) | [స్లోవాక్](../sk/README.md) | [స్లోవేనియన్](../sl/README.md) | [స్పానిష్](../es/README.md) | [స్వాహిలి](../sw/README.md) | [స్వీడిష్](../sv/README.md) | [తగలాగ్ (ఫిలిపినో)](../tl/README.md) | [తమిళు](../ta/README.md) | [తెలుగు](./README.md) | [థై](../th/README.md) | [టర్కిష్](../tr/README.md) | [ఉక్రაინియన్](../uk/README.md) | [ఉర్దూ](../ur/README.md) | [వియత్నామీస్](../vi/README.md)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
**అదనపు అనువాద భాషలు కావాలనుకుంటే అవి [ఇక్కడ](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md) జాబితా చేయబడినవి**
**మీరు అదనపు అనువాద భాషలను కోరుకుంటే మద్దతు పొందిన భాషల జాబితా [ఇక్కడ](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md) ఉంది**
## కమ్యూనిటీలో చేరండి
## సముదాయంలో చేరండి
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
## మీరు ఏమి నేర్చుకుంటారు
**[కోర్సు మైండ్‌మ్యాప్](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)**
**[కోర్సు మైండ్మ్యాప్](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)**
ఈ పాఠ్యక్రమంలో, మీరు నేర్చుకునేది:
ఈ పాఠ్యక్రమంలో, మీరు నేర్చుకునే విషయాలు:
* కృత్రిమ మేధస్సు (Artificial Intelligence) కు వివిధ దృష్టాంతాలు, "పాత శ్రేయస్కరమైన" సంకేతాత్మక విధానం మరియు **జ్ఞాన ప్రాతినిధ్యం** మరియు తర్కం (reasoning) సహా ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)).
* **న్యూరల్ నెట్‌వర్క్స్** మరియు **డీప్ లెర్నింగ్**, ఇవి ఆధునిక AI యొక్క గుండా భాగం. ఈ ముఖ్యమైన అంశాల వెనుక ఉన్న భావనలను మనం రెండు అత్యంత ప్రసిద్ధ ఫ్రేమ్‌వర్క్స్‌లోని కోడ్ ద్వారా వివరిస్తాము - [TensorFlow](http://Tensorflow.org) మరియు [PyTorch](http://pytorch.org).
* చిత్రం మరియు పాఠ్యంతో పని చేయడానికి **న్యూరల్ ఆర్చిటెక్చర్లు**. మేము తాజా మోడళ్లను కవర్ చేస్తాము కానీ స్టేట్-ఆఫ్-ది-ఆర్ట్ లో కొంత మేరకు యథార్థంగా ఉండకపోవచ్చు.
* తక్కువ ప్రాచుర్యం పొందిన AI దృష్టాంతాలు, ఉదాహరణకి **జెనెటిక్ అల్గోరిథమ్స్** మరియు **మల్టీ-ఏజెంటు వ్యవస్థలు**.
* కృత్రిమ బుద్ధి కోసం వివిధ దృక్పథాలు, వీరిలో “పాతకాలపు” సంకేతాత్మక దృక్పథం దృష్ట్యా **జ్ఞాన ప్రాతినిధ్యం** మరియు తర్కశక్తి ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)).
* **న్యూరల్ నెట్‌వర్క్స్** మరియు **డీప్ లెర్నింగ్**, ఇవి ఆధునిక AI యొక్క మౌలిక భాగాలు. మేము ఈ ప్రధాన విషయాల వెనుక ఉన్న కాన్సెప్ట్ను రెండు ప్రాచీన ఫ్రేమ్‌వర్క్‌లలో కోడ్ ఉపయోగించి వివరిస్తాము - [TensorFlow](http://Tensorflow.org) మరియు [PyTorch](http://pytorch.org).
* చిత్రాలు మరియు పాఠ్యంతో పని చేయడానికి **న్యూరల్ నిర్మాణాలు**. తాజా మోడల్స్‌ను మేము కవర్ చేస్తాము కానీ అది state-of-the-art పూర్తిగా కవర్ చేయకపోవచ్చు.
* తక్కువగా ప్రాచుర్యం ఉండే AI పద్ధతులు, ఉదాహరణకు **జెనెటికల్ అల్గోరిదమ్స్** మరియు **మల్టీ-ఏజెంట్ సిస్టమ్స్**.
ఈ పాఠ్యక్రమంలో మేము చర్చించనివి:
ఈ పాఠ్యక్రమంలో మేము ఏమి కవర్ చేయము:
> [ఈ కోర్సుకు సంబంధించిన అన్ని అదనపు వనరులను మా Microsoft Learn సేకరణలో కనుగొనండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
> [ఈ కోర్సుకు సంబంధించిన అన్ని అదనపు వనరులను మా Microsoft Learn గరిష్ట సేకరణలో చూడండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
* వ్యాపారాలలో **AI ఉపయోగించే వ్యాపార సందర్భాలు**. Microsoft Learn లోని [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాథ్ తీసుకోవాలని లేదా [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), ఇది [INSEAD](https://www.insead.edu/) తో సహకారంగా అభివృద్ధి చేయబడింది, చూడండి.
* **క్లాసిక్ మెషీన్ లెర్నింగ్**, ఇది మన [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners) లో బాగా వివరించబడింది.
* **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ఉపయోగించి నిర్మించబడిన ప్రాక్టికల్ AI అప్లికేషన్లు. దీనికోసం, Microsoft Learn లోని [దృష్టి](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [ప్రాకృతిక భాషా ప్రాసెసింగ్](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** మరియు ఇతర మాడ్యూల్స్ నుండి ప్రారంభించమని మేము సూచిస్తాము.
* ప్రత్యేక ML **క్లౌడ్ ఫ్రేమ్‌వర్క్స్**, ఉదాహరణకి [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), లేదా [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) మరియు [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాథ్స్ ఉపయోగించడం పరిగణించండి.
* **కాన్వర్సేషనల్ AI** మరియు **చాట్ బాట్స్**. ఇక్కడ ప్రత్యేకమైన [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాథ్ ఉంది, మరియు మీరు మరింత వివరాలకు [ఈ బ్లాగ్ పోస్ట్](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) ను కూడా చూడవచ్చు.
* డీప్ లెర్నింగ్ వెనుక ఉన్న **గాఢ గణితం**. దీనికోసం, మేము Ian Goodfellow, Yoshua Bengio మరియు Aaron Courville రాసిన [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) ను సూచిస్తాము, ఇది ఆన్‌లైన్‌లో కూడా అందుబాటులో ఉంది: [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/).
* వ్యాపారాల్లో **AI వినియోగం** యొక్క వ్యాపార కేసులు. దీని కోసం Microsoft Learn లోని [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాత్ లేదా [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), [INSEAD](https://www.insead.edu/) సహకారంతో అభివృద్ధి చేయబడినది, తీసుకోవాలని పరిశీలించండి.
* **శాస్త్రీయ మెషీన్ లెర్నింగ్ (Classic Machine Learning)**, ఇది మా [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners) లో బాగా వివరణ చేయబడింది.
* **ప్రాక్టికల్ AI అప్లికేషన్లు** **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ఉపయోగించి నిర్మించినవి. దీనికోసం, మేము మీరు Microsoft Learn లోని [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** మరియు ఇతర మాడ్యూల్స్‌తో మొదలు పెట్టాలని సిఫారసు చేస్తాము.
* నిర్దిష్ట ML **క్లౌడ్ ఫ్రేమ్‌వర్క్‌లు**, ఉదాహరణకు [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), లేదా [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) మరియు [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాఠ్యాలను ఉపయోగించటం గురించి ఆలోచించండి.
* **సంవాదాత్మక AI** మరియు **చాట్ బాట్స్**. దీనికి ప్రత్యేకమైన [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాత్ ఉంది, మరియు మీరు మరింత వివరాలకు [ఈ బ్లాగ్ పోస్ట్](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) ను కూడా చూడవచ్చు.
* డీప్ లెర్నింగ్ వెనుక ఉన్న **గమనించదగిన గణిత శాస్త్రం (Deep Mathematics)**. దీనికోసం, మేము Ian Goodfellow, Yoshua Bengio మరియు Aaron Courville రచనైన [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) అనే గ్రంథాన్ని సిఫారసు చేస్తాము, ఇది ఆన్‌లైన్‌లో కూడా [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) వద్ద అందుబాటులో ఉంది.
క్లౌడ్‌లోని _AI_ అంశాలకు мяг़ చింతనతో పరిచయం కావాలనుకుంటే మీరు [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాథ్ తీసుకోవాలని పరిగణించవచ్చు.
క్లోడ్‌లోని _AI_ అంశాలకు ఆనందంగా పరిచయం కావాలనుకుంటే, మీరు [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) లెర్నింగ్ పాత్ తీసుకోవాలని పరిశీలించండి.
# అంశాలు
# Content
| | పాఠం లింక్ | PyTorch/Keras/TensorFlow | ల్యాబ్ |
| | Lesson Link | PyTorch/Keras/TensorFlow | Lab |
| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ |
| 0 | [కోర్సు సెటప్](./lessons/0-course-setup/setup.md) | [మీ అభివృద్ధి వాతావరణాన్ని సెటప్ చేయటం](./lessons/0-course-setup/how-to-run.md) | |
| I | [**AI పరిచయం**](./lessons/1-Intro/README.md) | | |
| 01 | [AI పరిచయం మరియు చరిత్ర](./lessons/1-Intro/README.md) | - | - |
| II | **సింబాలిక్ AI** |
| 0 | [కోర్సు సెటప్](./lessons/0-course-setup/setup.md) | [మీ డెవలప్‌మెంట్ వాతావరణాన్ని సెటప్ చేయడం](./lessons/0-course-setup/how-to-run.md) | |
| I | [**కృత్రిమ బుద్ధి పరిచయం**](./lessons/1-Intro/README.md) | | |
| 01 | [కృత్రిమ బుద్ధి పరిచయం మరియు చరిత్ర](./lessons/1-Intro/README.md) | - | - |
| II | **సంకేతాత్మక AI** |
| 02 | [జ్ఞాన ప్రాతినిధ్యం మరియు నిపుణుల వ్యవస్థలు](./lessons/2-Symbolic/README.md) | [నిపుణుల వ్యవస్థలు](./lessons/2-Symbolic/Animals.ipynb) / [ఆంటాలజీ](./lessons/2-Symbolic/FamilyOntology.ipynb) /[కాన్సెప్ట్ గ్రాఫ్](./lessons/2-Symbolic/MSConceptGraph.ipynb) | |
| III | [**న్యూరల్ నెట్‌వర్క్స్ పరిచయం**](./lessons/3-NeuralNetworks/README.md) |||
| 03 | [పర్సెప్ట్రాన్](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [నోట్బుక్](./lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) |
| 04 | [బహుపద పర్సెప్ట్రాన్ మరియు మా సొంత ఫ్రేమ్‌వర్క్ సృష్టించడం](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [నోట్బుక్](./lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) |
| 05 | [ఫ్రేమ్‌వర్క్స్‌కు పరిచయం (PyTorch/TensorFlow) మరియు ఓవర్‌ఫిట్టింగ్](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](./lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](./lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) |
| IV | [**కంప్యూటర్ విజన్**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azureలో కంప్యూటర్ విజన్‌ను పరిశీలించండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) |
| 06 | [కంప్యూటర్ విజన్‌కు పరిచయం. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [నోట్బుక్](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 03 | [పర్సెప్ట్రాన్](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [నోట్‌బుక్](./lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) |
| 04 | [బహుస్థాయి పర్సెప్ట్రాన్ మరియు మన స్వంత ఫ్రేమ్‌వర్క్ సృష్టించడం](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [నోట్‌బుక్](./lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) |
| 05 | [ఫ్రేమ్‌వర్క్‌లకు పరిచయం (PyTorch/TensorFlow) మరియు ఒవర్‌ఫిటింగ్](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](./lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](./lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ల్యాబ్](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) |
| IV | [**కంప్యూటర్ విజన్**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azureపై కంప్యూటర్ విజన్ అన్వేషించండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) |
| 06 | [కంప్యూటర్ విజన్‌కు పరిచయం. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [నోట్‌బుక్](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 07 | [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN నిర్మాణాలు](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](./lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](./lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) |
| 08 | [ప్రీ-ట్రెయిన్ చేయబడిన నెట్‌వర్క్స్ మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [ట్రైనింగ్ ట్రిక్స్](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [ఆటోఎంకోడర్లు మరియు VAEలు](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [జెనరేటివ్ అడ్వర్సేరియల్ నెట్‌వర్క్స్ & ఆర్టిస్టిక్ స్టైల్ ట్రాన్స్‌ఫర్](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 11 | [ఒబ్జెక్ట్ డిటెక్షన్](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](./lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) |
| 12 | [సెమెంట్ిక్ సెగ్మెంటేషన్. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | |
| V | [**నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azureలో నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్‌ను పరిశీలించండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)|
| 13 | [పాఠ్య ప్రతినిధ్యం. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [సెమెంటిక్ వర్డ్ ఎంబెడ్డింగ్స్. Word2Vec మరియు GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 15 | [భాషా మోడలింగ్. మీ సొంత ఎంబెడ్డింగ్స్ ట్రెయిన్ చేయడం](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [ల్యాబ్](./lessons/5-NLP/15-LanguageModeling/lab/README.md) |
| 16 | [రికరెంటు న్యూరల్ నెట్‌వర్క్స్](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 17 | [జెనరేటివ్ రీకరెంటు నెట్‌వర్క్స్](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) | [ల్యాబ్](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) |
| 18 | [ట్రాన్ఫార్మర్స్. BERT.](./lessons/5-NLP/18-Transformers/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | |
| 19 | [నేమ్డ్ ఎంటిటీ రికగ్నిషన్](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [ల్యాబ్](./lessons/5-NLP/19-NER/lab/README.md) |
| 20 | [విశాల భాషా మోడల్స్, ప్రాంప్ట్ ప్రోగ్రామింగ్ మరియు ఫ్యూ-షాట్ టాస్క్స్](./lessons/5-NLP/20-LangModels/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | |
| 08 | [ప్రీ-ట్రెయిన్డ్ నెట్వర్క్స్ మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [ట్రైనింగ్ చిట్కాలు](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [ఆటోఎంకోడర్స్ మరియు VAEలు](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [జనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్ మరియు కళాత్మక శైలి బదిలీ](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 11 | [వస్తు గుర్తింపు](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](./lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [ల్యాబ్](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) |
| 12 | [సెమాంటిక్ సెగ్మెంటేషన్. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | |
| V | [**నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azureలో నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్‌ను అన్వేషించండి](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)|
| 13 | [పాఠ్య ప్రతినిధ్యం. BoW/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [అర్థాత్మక పద ఎంబెడ్డింగ్స్. Word2Vec మరియు GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 15 | [భాషా మోడలింగ్. మీ స్వంత ఎంబెడ్డింగ్స్‌ను శిక్షణ ఇవ్వడం](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [ల్యాబ్](./lessons/5-NLP/15-LanguageModeling/lab/README.md) |
| 16 | [రెకరెంట్ న్యూరల్ నెట్‌వర్క్స్](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 17 | [జెనరేటివ్ రికరెంట్ నెట్‌వర్క్స్](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) | [ల్యాబ్](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) |
| 18 | [ట్రాన్స్ఫార్మర్స్. BERT.](./lessons/5-NLP/18-Transformers/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | |
| 19 | [నేమ్డ్ ఎంటిటీ గుర్తింపు](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [ల్యాబ్](./lessons/5-NLP/19-NER/lab/README.md) |
| 20 | [విస్తృత భాషా మోడళ్లు, ప్రాంప్ట్ ప్రోగ్రామింగ్ మరియు ఫ్యూ-షాట్ టాస్క్‌లు](./lessons/5-NLP/20-LangModels/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | |
| VI | **ఇతర AI సాంకేతికతలు** || |
| 21 | [జెనెటిక్ అల్గోరిథమ్స్](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [నోట్బుక్](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| 22 | [డీప్ రీఇన్ఫోర్స్మెంట్ లెర్నింగ్](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](./lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](./lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [ల్యాబ్](./lessons/6-Other/22-DeepRL/lab/README.md) |
| 23 | [బహుఎజెంట్ సిస్టమ్లు](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| VII | **AI నైతికత** | | |
| 24 | [AI నైతికత మరియు బాధ్యతాయుత AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: బాధ్యతాయుత AI సిద్ధాంతాలు](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| IX | **అదనాలు** | | |
| 25 | [మల్టీ-మోడల్ నెట్‌వర్క్స్, CLIP మరియు VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [నోట్బుక్](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
| 21 | [జన్యు ఆల్గోరిథమ్స్](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [నోట్‌బుక్](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| 22 | [డీప్ రీన్ఫోర్స్‌మెంట్ లెర్నింగ్](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](./lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](./lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [ల్యాబ్](./lessons/6-Other/22-DeepRL/lab/README.md) |
| 23 | [బహుఏజెంట్ వ్యవస్థలు](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| VII | **AI నైతికతలు** | | |
| 24 | [AI నైతికతలు మరియు బాధ్యతాయుత AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: బాధ్యతాయుత AI సిద్ధాంతాలు](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| IX | **అదనపు అంశాలు** | | |
| 25 | [మల్టీ-మోడల్ నెట్వర్క్స్, CLIP మరియు VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [నోట్‌బుక్](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
## ప్రతి పాఠం కలిగి ఉంటుంది
## ప్రతి పాఠంలో కలిగివుంటాయి
* ముందస్తు పఠన పదార్థం
* అమలు చేయదగిన Jupyter నోట్బుక్స్, ఇవి తరచుగా ఫ్రేమ్‌వర్క్ (**PyTorch** లేదా **TensorFlow**) కు విశేషమైనవి. అమలు చేయదగిన నోట్బుక్ లో సిద్దాంతాత్మక పదార్థం కూడా చాలా ఉంటుంది, కాబట్టి విషయాన్ని అర్థం చేసుకోవడానికి కనీసం ఒక వెర్షన్ నోట్బుక్ (PyTorch లేదా TensorFlow ఎవరైనా ఒకటి) చదవాలి.
* కొన్ని అంశాల కోసం అందుబాటులో ఉన్న **ల్యాబ్స్**, ఇవి మీరు నేర్పుకున్న విషయాన్ని ఒక నిర్దిష్ట సమస్యపై అప్లై చేసే అవకాశం ఇస్తాయి.
* కొన్ని విభాగాలలో సంబంధిత అంశాలను కవర్ చేసే [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) మాడ్యూల్స్‌కు లింకులు ఉన్నాయి.
* ముందస్తుగా చదవాల్సిన పదార్థం
* నడిపించగల Jupyter నోట్‌బుక్స్, అవి తరచుగా ఫ్రేమ్‌వర్క్‌కు ప్రత్యేకంగా ఉంటాయి (**PyTorch** లేదా **TensorFlow**). నడిపించగల నోట్‌బుక్‌లో కూడా చాలా సిద్ధాంతాత్మక విషయాలు ఉంటాయి, కాబట్టి విషయాన్ని అర్థం చేసుకోవడానికి కనీసం ఒక సంచికను (PyTorch లేదా TensorFlow లో ఏదైనా ఒకటి) చూడాలి.
* కొన్ని అంశాలకు అందుబాటులో ఉన్న **ల్యాబ్‌లు**, ఇవి మీరు నేర్చుకున్న విషయాన్ని ఒక నిర్దిష్ట సమస్యపై ప్రయోగించడానికి అవకాశం ఇస్తాయి.
* కొన్ని విభాగాల్లో సంబంధిత విషయాలను కవర్ చేసే [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) మాడ్యూల్‌లు ఉంటాయి.
## ప్రారంభించడం
## మొదలు పెట్టడం
### 🎯 AIకి కొత్తవారా? ఇక్కడి నుండి ప్రారంభించండి!
### 🎯 AIలో కొత్తారా? ఇక్కడి నుండి మొదలుపెట్టండి!
మీరు పూర్తిగా AIకి కొత్తవారు మరియు వేగంగా, హ్యాండ్స్-ఆన్ ఉదాహరణలు చూడాలని అనుకుంటే, మా [**ప్రారంభికులకు అనుకూల ఉదాహరణలు**](./examples/README.md) చూడండి! వీటిలో ఉన్నాయి:
మీరు AIలో పూర్తిగా కొత్తగా ఉంటే మరియు త్వరలో, ప్రాక్టికల్ ఉదాహరణలు చూడాలనుకుంటే, మా [**అరంభకులకు అనుకూలమైన ఉదాహరణలు**](./examples/README.md) చూసుకోండి! వీటిలో ఉన్నాయి:
- 🌟 **Hello AI World** - మీ మొదటి AI ప్రోగ్రామ్ (ప్యాటర్న్ గుర్తింపు)
- 🧠 **సింపుల్ న్యూరల్ నెట్‌వర్క్** - శూన్యంనుంచి ఒక న్యూరల్ నెట్‌వర్క్ నిర్మించండి
- 🖼️ **ఇమేజ్ క్లాసిఫైయర్** - విస్తృత వ్యాఖ్యలతో చిత్రాలను వర్గీకరించండి
- 💬 **పాఠ్య భావోద్వేగం** - ధనాత్మక/ప్రతికూల పాఠ్యాన్ని విశ్లేషించండి
- 🌟 **హలో AI వరల్డ్** - మీ మొదటి AI ప్రోగ్రామ్ (నమూనా గుర్తింపు)
- 🧠 **సాధారణ న్యూరల్ నెట్‌వర్క్** - శూన్యంగా నుండి ఒక న్యూరల్ నెట్‌వర్క్‌ను నిర్మించండి
- 🖼️ **ఇమేజ్ క్లాసిఫైర్** - వివరణాత్మక వ్యాఖ్యలతో చిత్రాలను వర్గీకరించండి
- 💬 **టెక్స్ట్ సెంటిమెంట్** - ధనాత్మక/నెగటివ్ టెక్స్ట్‌ను విశ్లేషించండి
ఈ ఉదాహరణలు పూర్తి పనిత్వంలోకికి దూకడంతో ముందుగా AI భావనలను మీరు అర్థం చేసుకునేందుకు రూపొందించబడ్డాయి.
These examples are designed to help you understand AI concepts before diving into the full curriculum.
### 📚 পূర్ణ పాఠ్యక్రమం సెటప్
### 📚 పూర్తి పాఠ్యక్రమ స్థాపన
- మేము మీ డెవలప్‌మెంట్ పరిసరాన్ని సెటప్ చేయడంలో సహాయపడటానికి ఒక [సెట్‌అప్ పాఠం](./lessons/0-course-setup/setup.md) సృష్టించాము. - అధ్యాపకుల కోసం, మేము మీకోసం ఒక [పాఠ్యక్రమ సెటప్ పాఠం](./lessons/0-course-setup/for-teachers.md) కూడా సృష్టించాము!
- ఎలా [కోడ్‌ను VSCode లేదా Codepaceలో నడిపించాలో](./lessons/0-course-setup/how-to-run.md)
- మేము మీ డెవలప్‌మెంట్ వాతావరణాన్ని సెటప్ చేయడానికి సహాయపడేందుకు ఒక [సెటప్ పాఠం](./lessons/0-course-setup/setup.md) రూపొందించాము. - ఉపాధ్యాయులకు కూడా, మేము ఒక [పాఠ్యక్రమ సెటప్ పాఠం](./lessons/0-course-setup/for-teachers.md) మీకోసం తయారుచేశాము!
- ఎలా [VSCode లేదా Codepaceలో కోడ్‌ను రన్ చేయాలి](./lessons/0-course-setup/how-to-run.md)
Follow these steps:
@ -138,49 +138,49 @@ Clone the Repository: `git clone https://github.com/microsoft/AI-For-Beginners.g
Don't forget to star (🌟) this repo to find it easier later.
## Meet other Learners
## ఇతర అభ్యసకులను కలవండి
Join our [official AI Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) to meet and network with other learners taking this course and get support.
Join our [అధికారిక AI Discord సర్వర్](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) to meet and network with other learners taking this course and get support.
If you have product feedback or questions whilst building visit our [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum)
If you have product feedback or questions whilst building visit our [Azure AI Foundry డెవలపర్ ఫోరమ్](https://aka.ms/foundry/forum)
## Quizzes
> **క్విజ్‌ల గురించి ఒక గమనిక**: అన్ని క్విజ్‌లు Quiz-app ఫోల్డర్‌లో etc\quiz-app లో ఉంటాయి, లేదా [ఆన్‌లైన్ ఇక్కడ](https://ff-quizzes.netlify.app/) ద్వారా చూడవచ్చు. అవి పాఠాల్లో నుంచి లింక్ చేయబడ్డాయి; క్విజ్ యాప్‌ను లోకల్‌గా నడిపించవచ్చు లేదా Azureకి డిప్లాయ్ చేయవచ్చు; `quiz-app` ఫోల్డర్‌లోని సూచనలు అనుసరించండి. అవి నెమ్మదిగా స్థానికీకరించబడుతున్నాయి.
> **క్విజ్‌ల గురించి గమనిక**: All quizzes are contained in the Quiz-app folder in etc\quiz-app, or [ఆన్లైన్ ఇక్కడ](https://ff-quizzes.netlify.app/) They are linked from within the lessons the quiz app can be run locally or deployed to Azure; follow the instruction in the `quiz-app` folder. They are gradually being localized.
## Help Wanted
## సహాయం కావాలి
మీకు సూచనలున్నాయా లేదా స్పెల్లింగ్ లేదా కోడ్ లో తప్పులు కనుగొన్నారు? ఒక ఇష్యూ రైజ్ చేయండి లేదా ఒక పుల్ రిక్వెస్ట్ సృష్టించండి.
Do you have suggestions or found spelling or code errors? Raise an issue or create a pull request.
## Special Thanks
## ప్రత్యేక ధన్యవాదాలు
* **✍️ ప్రాథమిక రచయిత:** [Dmitry Soshnikov](http://soshnikov.com), PhD
* **✍️ ప్రధాన రచయిత:** [Dmitry Soshnikov](http://soshnikov.com), PhD
* **🔥 సంపాదకుడు:** [Jen Looper](https://twitter.com/jenlooper), PhD
* **🎨 స్కెచ్‌నోట్ చిత్రకర్త:** [Tomomi Imura](https://twitter.com/girlie_mac)
* **🎨 స్కెచ్‌నోట్ చిత్రకారుడు:** [Tomomi Imura](https://twitter.com/girlie_mac)
* **✅ క్విజ్ సృష్టికర్త:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/)
* **🙏 ప్రధాన సహకారులు:** [Evgenii Pishchik](https://github.com/Pe4enIks)
## Other Curricula
## ఇతర పాఠ్యక్రమాలు
మా బృందం ఇతర పాఠ్యక్రమాలను కూడా సిద్ధం చేస్తుంది! వీటిని చూడండి:
Our team produces other curricula! Check out:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j ప్రారంభుల కోసం](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js ప్రారంభుల కోసం](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD ప్రారంభుల కోసం](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI ప్రారంభుల కోసం](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP ప్రారంభుల కోసం](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents ప్రారంభుల కోసం](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
### Azure / Edge / MCP / ఏజెంట్స్
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generative AI Series
[![Generative AI ప్రారంభుల కోసం](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
@ -188,23 +188,23 @@ If you have product feedback or questions whilst building visit our [Azure AI Fo
---
### Core Learning
[![ML ప్రారంభుల కోసం](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![డేటా సైన్స్ ప్రారంభుల కోసం](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI ప్రారంభుల కోసం](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![సైబర్‌భద్రత ప్రారంభుల కోసం](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![వెబ్ డెవ్ ప్రారంభుల కోసం](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT ప్రారంభుల కోసం](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development ప్రారంభుల కోసం](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot Series
[![Copilot AI జత ప్రోగ్రామింగ్ కోసం](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot C#/.NET కోసం](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot అడ్వెంచర్](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## Getting Help
## సహాయం పొందడం
If you get stuck or have any questions about building AI apps. Join fellow learners and experienced developers in discussions about MCP. It's a supportive community where questions are welcome and knowledge is shared freely.
@ -217,6 +217,6 @@ If you have product feedback or errors while building visit:
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
బాధ్యత మినహాయింపు:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించారు. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా అస్పష్టతలు ఉండవచ్చు. మౌలిక భాషలో ఉన్న అసలు డాక్యుమెంట్‌ను అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సుగా సూచిస్తున్నాము. ఈ అనువాదాన్ని ఉపయోగించడంవల్ల ఏర్పడిన ఎటువంటి అపార్థాలు లేదా తప్పులకోసం మేము బాధ్యత వహించము.
డిస్క్లెయిమర్:
ఈ పత్రాన్ని AI అనువాద సేవ Co‑op Translator (https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా లోపాలు ఉండవచ్చు అని దయచేసి గమనించండి. మూల పత్రాన్ని దాని స్వదేశీ భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేయబడుతుంది. ఈ అనువాదాన్ని ఉపయోగించడంవలన ఉద్భవించగల ఏవైనా అపార్థాలు లేదా తప్పుగా అర్థం చేసుకోవడాలపై మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,168 +1,168 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f57e8aa46141fd220b16ffed8f11aec7",
"translation_date": "2025-11-25T20:52:23+00:00",
"source_file": "lessons/1-Intro/README.md",
"language_code": "te"
}
-->
# AI పరిచయం
![AI పరిచయ విషయాల సారాంశం ఒక డ్రాయింగ్‌లో](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.te.png)
> స్కెచ్‌నోట్: [Tomomi Imura](https://twitter.com/girlie_mac)
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/1)
**కృత్రిమ మేధస్సు** అనేది ఒక ఆసక్తికరమైన శాస్త్రీయ విభాగం, ఇది కంప్యూటర్లను మేధావిగా ప్రవర్తించేటట్లు ఎలా చేయాలో అధ్యయనం చేస్తుంది, ఉదాహరణకు మనుషులు బాగా చేయగల పనులను చేయగలగడం.
మూలంగా, కంప్యూటర్లు [చార్లెస్ బాబేజ్](https://en.wikipedia.org/wiki/Charles_Babbage) చేత సంఖ్యలపై ఒక సుస్పష్టమైన ప్రక్రియను అనుసరించి పనిచేయడానికి ఆవిష్కరించబడ్డాయి - ఒక అల్గోరిథం. ఆధునిక కంప్యూటర్లు, 19వ శతాబ్దంలో ప్రతిపాదించిన మోడల్ కంటే చాలా అభివృద్ధి చెందినప్పటికీ, ఇంకా నియంత్రిత గణనలను అనుసరిస్తాయి. కాబట్టి, లక్ష్యాన్ని సాధించడానికి అవసరమైన ఖచ్చితమైన దశలను మనం తెలుసుకుంటే, కంప్యూటర్‌ను ప్రోగ్రామ్ చేయడం సాధ్యం.
![వ్యక్తి ఫోటో](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.te.png)
> ఫోటో: [Vickie Soshnikova](http://twitter.com/vickievalerie)
> ✅ ఒక వ్యక్తి ఫోటో నుండి వయస్సును నిర్వచించడం స్పష్టంగా ప్రోగ్రామ్ చేయలేని పని, ఎందుకంటే మనం మన మెదడులో సంఖ్యను ఎలా నిర్ణయిస్తామో తెలియదు.
---
కానీ కొన్ని పనులు మనం స్పష్టంగా ఎలా పరిష్కరించాలో తెలియదు. ఒక వ్యక్తి ఫోటో నుండి వయస్సును నిర్ణయించడం తీసుకోండి. మనం అనేక వయస్సుల వ్యక్తుల ఉదాహరణలు చూసి నేర్చుకున్నాం, కానీ మనం ఎలా చేస్తామో వివరించలేము, అలాగే కంప్యూటర్‌కు ప్రోగ్రామ్ చేయలేము. ఇది **కృత్రిమ మేధస్సు** (AI) ఆసక్తి కలిగించే పనులే.
✅ మీరు AI సహాయంతో కంప్యూటర్‌కు అప్పగించగల పనులను ఆలోచించండి. ఆర్థిక, వైద్య, కళల రంగాలలో AI ఎలా ఉపయోగపడుతోంది?
## వీక్ AI vs. స్ట్రాంగ్ AI
వీక్ AI | స్ట్రాంగ్ AI
---------------------------------------|-------------------------------------
వీక్ AI అనేది ఒక నిర్దిష్ట పని లేదా చిన్న పనుల సమూహం కోసం రూపొందించిన, శిక్షణ పొందిన AI వ్యవస్థలు.|స్ట్రాంగ్ AI లేదా ఆర్టిఫిషియల్ జనరల్ ఇంటెలిజెన్స్ (AGI) అనేది మానవ స్థాయి మేధస్సు మరియు అవగాహన కలిగిన AI వ్యవస్థలు.
ఈ AI వ్యవస్థలు సాధారణ మేధావిగా ఉండవు; అవి ఒక నిర్దిష్ట పనిలో నైపుణ్యం కలిగి ఉంటాయి కానీ నిజమైన అవగాహన లేదా చైతన్యం లేవు.|ఈ AI వ్యవస్థలు మానవులు చేయగల ఏ మేధోపరమైన పనిని చేయగలవు, విభిన్న రంగాలకు అనుకూలించగలవు, మరియు చైతన్యం లేదా స్వీయ అవగాహన కలిగి ఉంటాయి.
వీక్ AI ఉదాహరణలు: సిరి, అలెక్సా వంటి వర్చువల్ అసిస్టెంట్లు, స్ట్రీమింగ్ సర్వీసుల సిఫారసు అల్గోరిథమ్లు, నిర్దిష్ట కస్టమర్ సర్వీస్ పనుల కోసం రూపొందించిన చాట్‌బాట్లు.|స్ట్రాంగ్ AI సాధించడం AI పరిశోధనలో దీర్ఘకాల లక్ష్యం, ఇది వివిధ పనులు మరియు సందర్భాలలో తర్కం, నేర్చుకోవడం, అవగాహన మరియు అనుకూలత కలిగిన AI వ్యవస్థలను అభివృద్ధి చేయాల్సి ఉంటుంది.
వీక్ AI చాలా ప్రత్యేకమైనది, మానవుల మాదిరి జ్ఞాన సామర్థ్యాలు లేదా సాధారణ సమస్య పరిష్కార సామర్థ్యాలు లేవు.|స్ట్రాంగ్ AI ప్రస్తుతం సైద్ధాంతిక భావన మాత్రమే, ఇలాంటి ఏ AI వ్యవస్థ కూడా ఇప్పటివరకు సాధించలేదు.
మరింత సమాచారం కోసం **[ఆర్టిఫిషియల్ జనరల్ ఇంటెలిజెన్స్](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) చూడండి.
## మేధస్సు నిర్వచనం మరియు ట్యూరింగ్ పరీక్ష
**[మేధస్సు](https://en.wikipedia.org/wiki/Intelligence)** అనే పదం స్పష్టమైన నిర్వచనం లేకపోవడం ఒక సమస్య. మేధస్సు అనేది **సారాంశ ఆలోచన** లేదా **స్వీయ అవగాహన**కి సంబంధించినదని వాదించవచ్చు, కానీ దీన్ని సరైన రీతిలో నిర్వచించలేము.
![పిల్లి ఫోటో](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.te.jpg)
> ఫోటో: [Amber Kipp](https://unsplash.com/@sadmax) నుండి Unsplash
*మేధస్సు* అనే పదం అస్పష్టతను చూడటానికి, "పిల్లి మేధావిగా ఉందా?" అనే ప్రశ్నకు జవాబు ఇవ్వండి. వేర్వేరు వ్యక్తులు వేర్వేరు జవాబులు ఇస్తారు, ఎందుకంటే ఈ విషయాన్ని నిరూపించే ఏ సాధారణ పరీక్ష లేదు. మీరు ఉంటే - మీ పిల్లిని IQ పరీక్షలో పెట్టి చూడండి...
✅ మీరు మేధస్సును ఎలా నిర్వచిస్తారు? ఒక కాకి మజిలీని పరిష్కరించి ఆహారం పొందగలదా? ఒక పిల్లవాడు మేధావిగా ఉన్నాడా?
---
AGI గురించి మాట్లాడేటప్పుడు నిజంగా మేధావి వ్యవస్థను సృష్టించామా అని తెలుసుకోవడానికి ఒక పద్ధతి అవసరం. [అలన్ ట్యూరింగ్](https://en.wikipedia.org/wiki/Alan_Turing) ప్రతిపాదించిన **[ట్యూరింగ్ పరీక్ష](https://en.wikipedia.org/wiki/Turing_test)** ఒక నిర్వచనంగా కూడా పనిచేస్తుంది. ఈ పరీక్ష ఒక వ్యవస్థను నిజమైన మానవుడితో పోల్చుతుంది, మరియు ఏ ఆటోమేటిక్ తేడా గుర్తింపు కంప్యూటర్ ప్రోగ్రామ్ ద్వారా తప్పించుకోవచ్చు కాబట్టి, మానవ విచారణకర్త ఉపయోగిస్తారు. ఒక మానవుడు టెక్స్ట్-ఆధారిత సంభాషణలో నిజమైన వ్యక్తి మరియు కంప్యూటర్ వ్యవస్థ మధ్య తేడా గుర్తించలేకపోతే, ఆ వ్యవస్థ మేధావిగా పరిగణించబడుతుంది.
> 2014లో సెయింట్ పీటర్స్‌బర్గ్‌లో అభివృద్ధి చేసిన [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) అనే చాట్‌బాట్ ట్యూరింగ్ పరీక్షకు దగ్గరగా వచ్చింది. ఇది 13 ఏళ్ల ఉక్రెయిన్ బాలుడిగా తనను ప్రకటించి, తెలియకపోవడం మరియు కొన్ని వ్యత్యాసాలను అర్థం చేసుకోవడానికి వ్యక్తిత్వ మాయాజాలం ఉపయోగించింది. 5 నిమిషాల సంభాషణ తర్వాత 30% న్యాయమూర్తులను ఇది మానవుడిగా నమ్మించింది, ఇది ట్యూరింగ్ 2000 నాటికి యంత్రం ఈ పరీక్షను ఉత్తీర్ణం అవుతుందని నమ్మిన ప్రమాణం. అయితే, ఇది మేధావి వ్యవస్థ సృష్టించామని లేదా కంప్యూటర్ మానవ విచారణకర్తను మోసం చేశాడని సూచించదు - మానవులను మోసం చేసిన వారు బాట్ సృష్టికర్తలు!
✅ మీరు ఎప్పుడైనా చాట్‌బాట్ మానవుడితో మాట్లాడుతున్నట్టు అనిపించిందా? అది ఎలా నమ్మించింది?
## AIకి వివిధ దృక్పథాలు
కంప్యూటర్ మానవుల మాదిరిగా ప్రవర్తించాలంటే, మన ఆలోచనా విధానాన్ని కంప్యూటర్‌లో మోడల్ చేయాలి. అందుకే మనం మానవ మేధస్సు ఏమిటి అనేది అర్థం చేసుకోవాలి.
> మేధస్సును యంత్రంలో ప్రోగ్రామ్ చేయాలంటే, మన నిర్ణయ ప్రక్రియలు ఎలా పనిచేస్తాయో అర్థం చేసుకోవాలి. స్వీయ పరిశీలన చేస్తే, కొన్ని ప్రక్రియలు అవగాహన లేకుండా జరుగుతాయని తెలుసుకుంటారు – ఉదాహరణకు, పిల్లిని కుక్కతో తేడా చేయడం ఆలోచించకుండా జరుగుతుంది – మరికొన్ని తర్కం అవసరం.
ఈ సమస్యకు రెండు దృక్పథాలు ఉన్నాయి:
టాప్-డౌన్ దృక్పథం (సింబాలిక్ తర్కం) | బాటమ్-అప్ దృక్పథం (న్యూరల్ నెట్‌వర్క్స్)
---------------------------------------|-------------------------------------
టాప్-డౌన్ దృక్పథం ఒక వ్యక్తి తర్కం విధానాన్ని మోడల్ చేస్తుంది. ఇది మానవుల నుండి **జ్ఞానం** సేకరించి, కంప్యూటర్-ఓదార్పు రూపంలో ప్రతినిధ్యం చేస్తుంది. అలాగే **తర్కం**ని కంప్యూటర్‌లో మోడల్ చేయడం అవసరం.|బాటమ్-అప్ దృక్పథం మానవ మెదడులోని న్యూరాన్ల నిర్మాణాన్ని మోడల్ చేస్తుంది. ప్రతి న్యూరాన్ తన ఇన్‌పుట్‌ల యొక్క బరువు సగటు లాగా పనిచేస్తుంది, మరియు **శిక్షణ డేటా** ద్వారా న్యూరాన్ల నెట్‌వర్క్‌ను ఉపయోగకరమైన సమస్యలు పరిష్కరించడానికి శిక్షణ ఇస్తారు.
ఇంకా కొన్ని ఇతర దృక్పథాలు ఉన్నాయి:
* **ఎమర్జెంట్**, **సినర్జిటిక్** లేదా **మల్టీ-ఏజెంట్ దృక్పథం** అనేది చాలా సులభమైన ఏజెంట్ల పరస్పర చర్య ద్వారా సంక్లిష్ట మేధావి ప్రవర్తన పొందగలదని ఆధారపడింది. [ఎవల్యూషనరీ సైబర్నెటిక్స్](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) ప్రకారం, మేధస్సు *మెటాసిస్టమ్ ట్రాన్సిషన్* ప్రక్రియలో సులభమైన, ప్రతిస్పందనాత్మక ప్రవర్తన నుండి *ఎమర్జ్* అవుతుంది.
* **ఎవల్యూషనరీ దృక్పథం** లేదా **జెనెటిక్ అల్గోరిథం** అనేది అభివృద్ధి సూత్రాలపై ఆధారపడి ఒక ఆప్టిమైజేషన్ ప్రక్రియ.
ఈ దృక్పథాలను కోర్సులో తర్వాత చర్చిస్తాము, కానీ ఇప్పటికి రెండు ప్రధాన దిశలైన టాప్-డౌన్ మరియు బాటమ్-అప్ పై దృష్టి పెడదాం.
### టాప్-డౌన్ దృక్పథం
**టాప్-డౌన్ దృక్పథంలో**, మన తర్కాన్ని మోడల్ చేయడానికి ప్రయత్నిస్తాము. మన ఆలోచనలు అనుసరించగలిగే కారణంగా, ఈ ప్రక్రియను ఫార్మలైజ్ చేసి కంప్యూటర్‌లో ప్రోగ్రామ్ చేయవచ్చు. దీన్ని **సింబాలిక్ తర్కం** అంటారు.
మానవులు తమ నిర్ణయ ప్రక్రియలను మార్గనిర్దేశం చేసే కొన్ని నియమాలు కలిగి ఉంటారు. ఉదాహరణకు, డాక్టర్ ఒక రోగిని నిర్ధారణ చేస్తున్నప్పుడు, అతను జ్వరం ఉందని గమనించి శరీరంలో ఇన్ఫ్లమేషన్ ఉండవచ్చని భావించవచ్చు. పెద్ద సంఖ్యలో నియమాలను ఒక నిర్దిష్ట సమస్యకు వర్తింపజేసి డాక్టర్ తుది నిర్ధారణకు వస్తాడు.
ఈ దృక్పథం **జ్ఞాన ప్రతినిధ్యం** మరియు **తర్కం**పై ఆధారపడి ఉంటుంది. మానవ నిపుణుల నుండి జ్ఞానాన్ని సేకరించడం చాలా కష్టం, ఎందుకంటే డాక్టర్ కొన్నిసార్లు ఎందుకు నిర్ధారణకు వస్తున్నాడో తెలియదు. కొన్ని పనులు, ఉదాహరణకు ఫోటో నుండి వయస్సు నిర్ణయించడం, జ్ఞానాన్ని మార్చడం ద్వారా చేయలేవు.
### బాటమ్-అప్ దృక్పథం
మరొకవైపు, మన మెదడులోని అత్యంత సులభమైన అంశం – న్యూరాన్‌ను మోడల్ చేయవచ్చు. కంప్యూటర్‌లో **కృత్రిమ న్యూరల్ నెట్‌వర్క్** నిర్మించి, దానికి ఉదాహరణలు ఇచ్చి సమస్యలు పరిష్కరించడానికి నేర్పించవచ్చు. ఇది ఒక పుట్టిన పిల్లవాడు తన చుట్టూ ఉన్న ప్రపంచాన్ని పరిశీలించి నేర్చుకునే విధానం లాంటిది.
✅ పిల్లలు ఎలా నేర్చుకుంటారో కొంత పరిశోధన చేయండి. పిల్లల మెదడులో ప్రాథమిక అంశాలు ఏమిటి?
> | ML గురించి ఏమిటి? | |
> |--------------|-----------|
> | డేటా ఆధారంగా సమస్య పరిష్కరించడానికి కంప్యూటర్ నేర్చుకునే కృత్రిమ మేధస్సు భాగం **మిషన్ లెర్నింగ్** అని పిలవబడుతుంది. ఈ కోర్సులో క్లాసికల్ మిషన్ లెర్నింగ్ చర్చించము - మీరు ప్రత్యేక [Machine Learning for Beginners](http://aka.ms/ml-beginners) పాఠ్యాంశాన్ని చూడండి. | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.te.png) |
## AI చరిత్ర సంక్షిప్తంగా
కృత్రిమ మేధస్సు 20వ శతాబ్ద మధ్యలో ఒక రంగంగా ప్రారంభమైంది. మొదట, సింబాలిక్ తర్కం ప్రాచుర్యం పొందింది, ఇది నిపుణుల వ్యవస్థలు వంటి విజయాలను తీసుకువచ్చింది – కొన్ని పరిమిత సమస్యల పరిధిలో నిపుణులుగా పనిచేసే కంప్యూటర్ ప్రోగ్రాములు. కానీ ఈ దృక్పథం విస్తరించలేదని స్పష్టమైంది. నిపుణుల నుండి జ్ఞానాన్ని సేకరించడం, కంప్యూటర్‌లో ప్రతినిధ్యం చేయడం, జ్ఞానాన్ని సరిగ్గా ఉంచడం చాలా క్లిష్టమైన పని మరియు చాలా ఖరీదైనది. ఇది 1970లలో [AI వింటర్](https://en.wikipedia.org/wiki/AI_winter)కి దారితీసింది.
<img alt="AI చరిత్ర సంక్షిప్తం" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
కాలంతో, కంప్యూటింగ్ వనరులు చౌకగా మారాయి, మరిన్ని డేటా అందుబాటులోకి వచ్చాయి, కాబట్టి న్యూరల్ నెట్‌వర్క్ దృక్పథాలు కంప్యూటర్ విజన్, స్పీచ్ అర్థం చేసుకోవడంలో మానవులతో పోటీ పడుతూ గొప్ప ప్రదర్శన చూపించాయి. గత దశాబ్దంలో, కృత్రిమ మేధస్సు పదం ఎక్కువగా న్యూరల్ నెట్‌వర్క్స్‌కు సమానార్థకం అయింది, ఎందుకంటే మనం వింటున్న AI విజయాలు ఎక్కువగా వాటిపై ఆధారపడి ఉంటాయి.
చదరంగం ఆడే కంప్యూటర్ ప్రోగ్రామ్ సృష్టించడంలో దృక్పథాలు ఎలా మారాయో చూడవచ్చు:
* ప్రారంభ చదరంగ ప్రోగ్రాములు శోధన ఆధారంగా ఉండేవి – ప్రత్యర్థి యొక్క తదుపరి కొన్ని చలనం అవకాశాలను అంచనా వేసి, కొన్ని చలనాలలో సాధ్యమైన ఉత్తమ స్థితిని ఆధారంగా ఉత్తమ చలనం ఎంచుకునేవి. ఇది [ఆల్ఫా-బీటా ప్రూనింగ్](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) శోధన అల్గోరిథం అభివృద్ధికి దారితీసింది.
* శోధన వ్యూహాలు ఆట చివర్లో బాగా పనిచేస్తాయి, ఎందుకంటే ఆ సమయంలో శోధన స్థలం చిన్నదిగా ఉంటుంది. కానీ ఆట ప్రారంభంలో శోధన స్థలం విస్తృతంగా ఉంటుంది, అల్గోరిథం మానవ ఆటగాళ్ల మధ్య జరిగిన మ్యాచ్‌ల నుండి నేర్చుకోవడం ద్వారా మెరుగుపడుతుంది. తరువాతి ప్రయోగాలు [కేస్-బేస్డ్ రీజనింగ్](https://en.wikipedia.org/wiki/Case-based_reasoning) ఉపయోగించాయి, ఇందులో ప్రోగ్రామ్ ప్రస్తుత ఆట స్థితికి సమానమైన కేసులను జ్ఞాన భాండారంలో వెతుకుతుంది.
* ఆధునిక ప్రోగ్రాములు న్యూరల్ నెట్‌వర్క్స్ మరియు [రిఇన్ఫోర్స్‌మెంట్ లెర్నింగ్](https://en.wikipedia.org/wiki/Reinforcement_learning) ఆధారంగా ఉంటాయి, ఇవి స్వయంగా చాలా సమయం ఆడుతూ తప్పుల నుండి నేర్చుకుంటాయి – మానవులు చదరంగం నేర్చుకునే విధానం లాంటిది. కానీ కంప్యూటర్ చాలా ఎక్కువ ఆటలు తక్కువ సమయంలో ఆడగలదు, కాబట్టి వేగంగా నేర్చుకుంటుంది.
✅ AI ఆడిన ఇతర ఆటల గురించి కొంత పరిశోధన చేయండి.
అలాగే, “మాట్లాడే ప్రోగ్రాములు” (ట్యూరింగ్ పరీక్ష ఉత్తీర్ణం కావచ్చు) సృష్టించడంలో దృక్పథాలు ఎలా మారాయో చూడవచ్చు:
* ప్రారంభ ప్రోగ్రాములు, ఉదాహరణకు [ఎలిజా](https://en.wikipedia.org/wiki/ELIZA), చాలా సులభమైన వ్యాకరణ నియమాలు మరియు ఇన్‌పుట్ వాక్యాన్ని ప్రశ్నగా మార్చడం ఆధారంగా ఉండేవి.
* ఆధునిక అసిస్టెంట్లు, ఉదాహరణకు Cortana, Siri లేదా Google Assistant, న్యూరల్ నెట్‌వర్క్స్ ఉపయోగించి మాటను టెక్స్ట్‌గా మార్చి మన ఉద్దేశ్యాన్ని గుర్తించి, తరువాత తర్కం లేదా స్పష్టమైన అల్గోరిథమ్లను ఉపయోగించి అవసరమైన చర్యలు చేస్తాయి.
* భవిష్యత్తులో, పూర్తిగా న్యూరల్ ఆధారిత మోడల్ సంభాషణను స్వయంగా నిర్వహించగలదని ఆశించవచ్చు. తాజా GPT మరియు [Turing-NLG](https://www.microsoft.com/research/blog/turing-nlg-a
> Dmitry Soshnikov గారి చిత్రం, [ఫోటో](https://unsplash.com/photos/r8LmVbUKgns) [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) గారు తీసినది, Unsplash
## తాజా AI పరిశోధన
న్యూరల్ నెట్‌వర్క్ పరిశోధనలో భారీ వృద్ధి 2010 సుమారు ప్రారంభమైంది, అప్పుడే పెద్ద పబ్లిక్ డేటాసెట్లు అందుబాటులోకి వచ్చాయి. సుమారు 14 మిలియన్ల అనోటేటెడ్ చిత్రాల కలెక్షన్ అయిన [ImageNet](https://en.wikipedia.org/wiki/ImageNet) ద్వారా [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) ప్రారంభమైంది.
![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) గారు తీసినది
2012లో, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) మొదటిసారిగా చిత్రం వర్గీకరణలో ఉపయోగించబడ్డాయి, దీని వల్ల వర్గీకరణ లోపాలు గణనీయంగా తగ్గాయి (సుమారు 30% నుండి 16.4%కి). 2015లో, Microsoft Research నుండి ResNet ఆర్కిటెక్చర్ [మానవ స్థాయి ఖచ్చితత్వాన్ని సాధించింది](https://doi.org/10.1109/ICCV.2015.123).
అప్పటి నుండి, న్యూరల్ నెట్‌వర్క్స్ అనేక పనుల్లో చాలా విజయవంతంగా ప్రవర్తించాయి:
---
సంవత్సరం | మానవ సమానత సాధించబడింది
-----|--------
2015 | [చిత్ర వర్గీకరణ](https://doi.org/10.1109/ICCV.2015.123)
2016 | [సంభాషణాత్మక స్పీచ్ రికగ్నిషన్](https://arxiv.org/abs/1610.05256)
2018 | [స్వయంచాలక యంత్ర అనువాదం](https://arxiv.org/abs/1803.05567) (చైనీస్-టు-ఇంగ్లీష్)
2020 | [చిత్ర వివరణ](https://arxiv.org/abs/2009.13682)
గత కొన్ని సంవత్సరాలలో, BERT మరియు GPT-3 వంటి పెద్ద భాషా మోడల్స్ తో భారీ విజయాలు సాధించాము. ఇది ప్రధానంగా అందుబాటులో ఉన్న విస్తృత సాధారణ టెక్స్ట్ డేటా వల్ల జరిగింది, ఇది మోడల్స్‌ను టెక్స్ట్ నిర్మాణం మరియు అర్థం పట్టుకునేలా శిక్షణ ఇవ్వడానికి, సాధారణ టెక్స్ట్ సేకరణలపై ప్రీ-ట్రెయిన్ చేయడానికి, మరియు ఆ తర్వాత మరింత ప్రత్యేక పనుల కోసం ఆ మోడల్స్‌ను ప్రత్యేకీకరించడానికి సహాయపడింది. ఈ కోర్సులో తర్వాత [Natural Language Processing](../5-NLP/README.md) గురించి మరింత తెలుసుకుంటాము.
## 🚀 సవాలు
మీ అభిప్రాయం ప్రకారం, ఇంటర్నెట్‌లో ఎక్కడ AI అత్యంత సమర్థవంతంగా ఉపయోగించబడుతోంది అనేది తెలుసుకోండి. అది మ్యాపింగ్ యాప్‌లోనా, స్పీచ్-టు-టెక్స్ట్ సర్వీస్‌లోనా లేదా వీడియో గేమ్‌లోనా? ఆ సిస్టమ్ ఎలా నిర్మించబడిందో పరిశోధించండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/2)
## సమీక్ష & స్వీయ అధ్యయనం
AI మరియు ML చరిత్రను [ఈ పాఠం](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) చదవడం ద్వారా సమీక్షించండి. ఆ పాఠం లేదా ఈ పాఠం పైభాగంలో ఉన్న స్కెచ్‌నోట్ నుండి ఒక అంశాన్ని తీసుకుని దాని సాంస్కృతిక సందర్భాన్ని అర్థం చేసుకోవడానికి లోతుగా పరిశోధించండి.
**అసైన్‌మెంట్**: [గేమ్ జామ్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f57e8aa46141fd220b16ffed8f11aec7",
"translation_date": "2025-11-25T20:52:23+00:00",
"source_file": "lessons/1-Intro/README.md",
"language_code": "te"
}
-->
# AI పరిచయం
![AI పరిచయ విషయాల సారాంశం ఒక డ్రాయింగ్‌లో](../../../../translated_images/ai-intro.bf28d1ac4235881c.te.png)
> స్కెచ్‌నోట్: [Tomomi Imura](https://twitter.com/girlie_mac)
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/1)
**కృత్రిమ మేధస్సు** అనేది ఒక ఆసక్తికరమైన శాస్త్రీయ విభాగం, ఇది కంప్యూటర్లను మేధావిగా ప్రవర్తించేటట్లు ఎలా చేయాలో అధ్యయనం చేస్తుంది, ఉదాహరణకు మనుషులు బాగా చేయగల పనులను చేయగలగడం.
మూలంగా, కంప్యూటర్లు [చార్లెస్ బాబేజ్](https://en.wikipedia.org/wiki/Charles_Babbage) చేత సంఖ్యలపై ఒక సుస్పష్టమైన ప్రక్రియను అనుసరించి పనిచేయడానికి ఆవిష్కరించబడ్డాయి - ఒక అల్గోరిథం. ఆధునిక కంప్యూటర్లు, 19వ శతాబ్దంలో ప్రతిపాదించిన మోడల్ కంటే చాలా అభివృద్ధి చెందినప్పటికీ, ఇంకా నియంత్రిత గణనలను అనుసరిస్తాయి. కాబట్టి, లక్ష్యాన్ని సాధించడానికి అవసరమైన ఖచ్చితమైన దశలను మనం తెలుసుకుంటే, కంప్యూటర్‌ను ప్రోగ్రామ్ చేయడం సాధ్యం.
![వ్యక్తి ఫోటో](../../../../translated_images/dsh_age.d212a30d4e54fb5f.te.png)
> ఫోటో: [Vickie Soshnikova](http://twitter.com/vickievalerie)
> ✅ ఒక వ్యక్తి ఫోటో నుండి వయస్సును నిర్వచించడం స్పష్టంగా ప్రోగ్రామ్ చేయలేని పని, ఎందుకంటే మనం మన మెదడులో సంఖ్యను ఎలా నిర్ణయిస్తామో తెలియదు.
---
కానీ కొన్ని పనులు మనం స్పష్టంగా ఎలా పరిష్కరించాలో తెలియదు. ఒక వ్యక్తి ఫోటో నుండి వయస్సును నిర్ణయించడం తీసుకోండి. మనం అనేక వయస్సుల వ్యక్తుల ఉదాహరణలు చూసి నేర్చుకున్నాం, కానీ మనం ఎలా చేస్తామో వివరించలేము, అలాగే కంప్యూటర్‌కు ప్రోగ్రామ్ చేయలేము. ఇది **కృత్రిమ మేధస్సు** (AI) ఆసక్తి కలిగించే పనులే.
✅ మీరు AI సహాయంతో కంప్యూటర్‌కు అప్పగించగల పనులను ఆలోచించండి. ఆర్థిక, వైద్య, కళల రంగాలలో AI ఎలా ఉపయోగపడుతోంది?
## వీక్ AI vs. స్ట్రాంగ్ AI
వీక్ AI | స్ట్రాంగ్ AI
---------------------------------------|-------------------------------------
వీక్ AI అనేది ఒక నిర్దిష్ట పని లేదా చిన్న పనుల సమూహం కోసం రూపొందించిన, శిక్షణ పొందిన AI వ్యవస్థలు.|స్ట్రాంగ్ AI లేదా ఆర్టిఫిషియల్ జనరల్ ఇంటెలిజెన్స్ (AGI) అనేది మానవ స్థాయి మేధస్సు మరియు అవగాహన కలిగిన AI వ్యవస్థలు.
ఈ AI వ్యవస్థలు సాధారణ మేధావిగా ఉండవు; అవి ఒక నిర్దిష్ట పనిలో నైపుణ్యం కలిగి ఉంటాయి కానీ నిజమైన అవగాహన లేదా చైతన్యం లేవు.|ఈ AI వ్యవస్థలు మానవులు చేయగల ఏ మేధోపరమైన పనిని చేయగలవు, విభిన్న రంగాలకు అనుకూలించగలవు, మరియు చైతన్యం లేదా స్వీయ అవగాహన కలిగి ఉంటాయి.
వీక్ AI ఉదాహరణలు: సిరి, అలెక్సా వంటి వర్చువల్ అసిస్టెంట్లు, స్ట్రీమింగ్ సర్వీసుల సిఫారసు అల్గోరిథమ్లు, నిర్దిష్ట కస్టమర్ సర్వీస్ పనుల కోసం రూపొందించిన చాట్‌బాట్లు.|స్ట్రాంగ్ AI సాధించడం AI పరిశోధనలో దీర్ఘకాల లక్ష్యం, ఇది వివిధ పనులు మరియు సందర్భాలలో తర్కం, నేర్చుకోవడం, అవగాహన మరియు అనుకూలత కలిగిన AI వ్యవస్థలను అభివృద్ధి చేయాల్సి ఉంటుంది.
వీక్ AI చాలా ప్రత్యేకమైనది, మానవుల మాదిరి జ్ఞాన సామర్థ్యాలు లేదా సాధారణ సమస్య పరిష్కార సామర్థ్యాలు లేవు.|స్ట్రాంగ్ AI ప్రస్తుతం సైద్ధాంతిక భావన మాత్రమే, ఇలాంటి ఏ AI వ్యవస్థ కూడా ఇప్పటివరకు సాధించలేదు.
మరింత సమాచారం కోసం **[ఆర్టిఫిషియల్ జనరల్ ఇంటెలిజెన్స్](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) చూడండి.
## మేధస్సు నిర్వచనం మరియు ట్యూరింగ్ పరీక్ష
**[మేధస్సు](https://en.wikipedia.org/wiki/Intelligence)** అనే పదం స్పష్టమైన నిర్వచనం లేకపోవడం ఒక సమస్య. మేధస్సు అనేది **సారాంశ ఆలోచన** లేదా **స్వీయ అవగాహన**కి సంబంధించినదని వాదించవచ్చు, కానీ దీన్ని సరైన రీతిలో నిర్వచించలేము.
![పిల్లి ఫోటో](../../../../translated_images/photo-cat.8c8e8fb760ffe457.te.jpg)
> ఫోటో: [Amber Kipp](https://unsplash.com/@sadmax) నుండి Unsplash
*మేధస్సు* అనే పదం అస్పష్టతను చూడటానికి, "పిల్లి మేధావిగా ఉందా?" అనే ప్రశ్నకు జవాబు ఇవ్వండి. వేర్వేరు వ్యక్తులు వేర్వేరు జవాబులు ఇస్తారు, ఎందుకంటే ఈ విషయాన్ని నిరూపించే ఏ సాధారణ పరీక్ష లేదు. మీరు ఉంటే - మీ పిల్లిని IQ పరీక్షలో పెట్టి చూడండి...
✅ మీరు మేధస్సును ఎలా నిర్వచిస్తారు? ఒక కాకి మజిలీని పరిష్కరించి ఆహారం పొందగలదా? ఒక పిల్లవాడు మేధావిగా ఉన్నాడా?
---
AGI గురించి మాట్లాడేటప్పుడు నిజంగా మేధావి వ్యవస్థను సృష్టించామా అని తెలుసుకోవడానికి ఒక పద్ధతి అవసరం. [అలన్ ట్యూరింగ్](https://en.wikipedia.org/wiki/Alan_Turing) ప్రతిపాదించిన **[ట్యూరింగ్ పరీక్ష](https://en.wikipedia.org/wiki/Turing_test)** ఒక నిర్వచనంగా కూడా పనిచేస్తుంది. ఈ పరీక్ష ఒక వ్యవస్థను నిజమైన మానవుడితో పోల్చుతుంది, మరియు ఏ ఆటోమేటిక్ తేడా గుర్తింపు కంప్యూటర్ ప్రోగ్రామ్ ద్వారా తప్పించుకోవచ్చు కాబట్టి, మానవ విచారణకర్త ఉపయోగిస్తారు. ఒక మానవుడు టెక్స్ట్-ఆధారిత సంభాషణలో నిజమైన వ్యక్తి మరియు కంప్యూటర్ వ్యవస్థ మధ్య తేడా గుర్తించలేకపోతే, ఆ వ్యవస్థ మేధావిగా పరిగణించబడుతుంది.
> 2014లో సెయింట్ పీటర్స్‌బర్గ్‌లో అభివృద్ధి చేసిన [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) అనే చాట్‌బాట్ ట్యూరింగ్ పరీక్షకు దగ్గరగా వచ్చింది. ఇది 13 ఏళ్ల ఉక్రెయిన్ బాలుడిగా తనను ప్రకటించి, తెలియకపోవడం మరియు కొన్ని వ్యత్యాసాలను అర్థం చేసుకోవడానికి వ్యక్తిత్వ మాయాజాలం ఉపయోగించింది. 5 నిమిషాల సంభాషణ తర్వాత 30% న్యాయమూర్తులను ఇది మానవుడిగా నమ్మించింది, ఇది ట్యూరింగ్ 2000 నాటికి యంత్రం ఈ పరీక్షను ఉత్తీర్ణం అవుతుందని నమ్మిన ప్రమాణం. అయితే, ఇది మేధావి వ్యవస్థ సృష్టించామని లేదా కంప్యూటర్ మానవ విచారణకర్తను మోసం చేశాడని సూచించదు - మానవులను మోసం చేసిన వారు బాట్ సృష్టికర్తలు!
✅ మీరు ఎప్పుడైనా చాట్‌బాట్ మానవుడితో మాట్లాడుతున్నట్టు అనిపించిందా? అది ఎలా నమ్మించింది?
## AIకి వివిధ దృక్పథాలు
కంప్యూటర్ మానవుల మాదిరిగా ప్రవర్తించాలంటే, మన ఆలోచనా విధానాన్ని కంప్యూటర్‌లో మోడల్ చేయాలి. అందుకే మనం మానవ మేధస్సు ఏమిటి అనేది అర్థం చేసుకోవాలి.
> మేధస్సును యంత్రంలో ప్రోగ్రామ్ చేయాలంటే, మన నిర్ణయ ప్రక్రియలు ఎలా పనిచేస్తాయో అర్థం చేసుకోవాలి. స్వీయ పరిశీలన చేస్తే, కొన్ని ప్రక్రియలు అవగాహన లేకుండా జరుగుతాయని తెలుసుకుంటారు – ఉదాహరణకు, పిల్లిని కుక్కతో తేడా చేయడం ఆలోచించకుండా జరుగుతుంది – మరికొన్ని తర్కం అవసరం.
ఈ సమస్యకు రెండు దృక్పథాలు ఉన్నాయి:
టాప్-డౌన్ దృక్పథం (సింబాలిక్ తర్కం) | బాటమ్-అప్ దృక్పథం (న్యూరల్ నెట్‌వర్క్స్)
---------------------------------------|-------------------------------------
టాప్-డౌన్ దృక్పథం ఒక వ్యక్తి తర్కం విధానాన్ని మోడల్ చేస్తుంది. ఇది మానవుల నుండి **జ్ఞానం** సేకరించి, కంప్యూటర్-ఓదార్పు రూపంలో ప్రతినిధ్యం చేస్తుంది. అలాగే **తర్కం**ని కంప్యూటర్‌లో మోడల్ చేయడం అవసరం.|బాటమ్-అప్ దృక్పథం మానవ మెదడులోని న్యూరాన్ల నిర్మాణాన్ని మోడల్ చేస్తుంది. ప్రతి న్యూరాన్ తన ఇన్‌పుట్‌ల యొక్క బరువు సగటు లాగా పనిచేస్తుంది, మరియు **శిక్షణ డేటా** ద్వారా న్యూరాన్ల నెట్‌వర్క్‌ను ఉపయోగకరమైన సమస్యలు పరిష్కరించడానికి శిక్షణ ఇస్తారు.
ఇంకా కొన్ని ఇతర దృక్పథాలు ఉన్నాయి:
* **ఎమర్జెంట్**, **సినర్జిటిక్** లేదా **మల్టీ-ఏజెంట్ దృక్పథం** అనేది చాలా సులభమైన ఏజెంట్ల పరస్పర చర్య ద్వారా సంక్లిష్ట మేధావి ప్రవర్తన పొందగలదని ఆధారపడింది. [ఎవల్యూషనరీ సైబర్నెటిక్స్](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) ప్రకారం, మేధస్సు *మెటాసిస్టమ్ ట్రాన్సిషన్* ప్రక్రియలో సులభమైన, ప్రతిస్పందనాత్మక ప్రవర్తన నుండి *ఎమర్జ్* అవుతుంది.
* **ఎవల్యూషనరీ దృక్పథం** లేదా **జెనెటిక్ అల్గోరిథం** అనేది అభివృద్ధి సూత్రాలపై ఆధారపడి ఒక ఆప్టిమైజేషన్ ప్రక్రియ.
ఈ దృక్పథాలను కోర్సులో తర్వాత చర్చిస్తాము, కానీ ఇప్పటికి రెండు ప్రధాన దిశలైన టాప్-డౌన్ మరియు బాటమ్-అప్ పై దృష్టి పెడదాం.
### టాప్-డౌన్ దృక్పథం
**టాప్-డౌన్ దృక్పథంలో**, మన తర్కాన్ని మోడల్ చేయడానికి ప్రయత్నిస్తాము. మన ఆలోచనలు అనుసరించగలిగే కారణంగా, ఈ ప్రక్రియను ఫార్మలైజ్ చేసి కంప్యూటర్‌లో ప్రోగ్రామ్ చేయవచ్చు. దీన్ని **సింబాలిక్ తర్కం** అంటారు.
మానవులు తమ నిర్ణయ ప్రక్రియలను మార్గనిర్దేశం చేసే కొన్ని నియమాలు కలిగి ఉంటారు. ఉదాహరణకు, డాక్టర్ ఒక రోగిని నిర్ధారణ చేస్తున్నప్పుడు, అతను జ్వరం ఉందని గమనించి శరీరంలో ఇన్ఫ్లమేషన్ ఉండవచ్చని భావించవచ్చు. పెద్ద సంఖ్యలో నియమాలను ఒక నిర్దిష్ట సమస్యకు వర్తింపజేసి డాక్టర్ తుది నిర్ధారణకు వస్తాడు.
ఈ దృక్పథం **జ్ఞాన ప్రతినిధ్యం** మరియు **తర్కం**పై ఆధారపడి ఉంటుంది. మానవ నిపుణుల నుండి జ్ఞానాన్ని సేకరించడం చాలా కష్టం, ఎందుకంటే డాక్టర్ కొన్నిసార్లు ఎందుకు నిర్ధారణకు వస్తున్నాడో తెలియదు. కొన్ని పనులు, ఉదాహరణకు ఫోటో నుండి వయస్సు నిర్ణయించడం, జ్ఞానాన్ని మార్చడం ద్వారా చేయలేవు.
### బాటమ్-అప్ దృక్పథం
మరొకవైపు, మన మెదడులోని అత్యంత సులభమైన అంశం – న్యూరాన్‌ను మోడల్ చేయవచ్చు. కంప్యూటర్‌లో **కృత్రిమ న్యూరల్ నెట్‌వర్క్** నిర్మించి, దానికి ఉదాహరణలు ఇచ్చి సమస్యలు పరిష్కరించడానికి నేర్పించవచ్చు. ఇది ఒక పుట్టిన పిల్లవాడు తన చుట్టూ ఉన్న ప్రపంచాన్ని పరిశీలించి నేర్చుకునే విధానం లాంటిది.
✅ పిల్లలు ఎలా నేర్చుకుంటారో కొంత పరిశోధన చేయండి. పిల్లల మెదడులో ప్రాథమిక అంశాలు ఏమిటి?
> | ML గురించి ఏమిటి? | |
> |--------------|-----------|
> | డేటా ఆధారంగా సమస్య పరిష్కరించడానికి కంప్యూటర్ నేర్చుకునే కృత్రిమ మేధస్సు భాగం **మిషన్ లెర్నింగ్** అని పిలవబడుతుంది. ఈ కోర్సులో క్లాసికల్ మిషన్ లెర్నింగ్ చర్చించము - మీరు ప్రత్యేక [Machine Learning for Beginners](http://aka.ms/ml-beginners) పాఠ్యాంశాన్ని చూడండి. | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d.te.png) |
## AI చరిత్ర సంక్షిప్తంగా
కృత్రిమ మేధస్సు 20వ శతాబ్ద మధ్యలో ఒక రంగంగా ప్రారంభమైంది. మొదట, సింబాలిక్ తర్కం ప్రాచుర్యం పొందింది, ఇది నిపుణుల వ్యవస్థలు వంటి విజయాలను తీసుకువచ్చింది – కొన్ని పరిమిత సమస్యల పరిధిలో నిపుణులుగా పనిచేసే కంప్యూటర్ ప్రోగ్రాములు. కానీ ఈ దృక్పథం విస్తరించలేదని స్పష్టమైంది. నిపుణుల నుండి జ్ఞానాన్ని సేకరించడం, కంప్యూటర్‌లో ప్రతినిధ్యం చేయడం, జ్ఞానాన్ని సరిగ్గా ఉంచడం చాలా క్లిష్టమైన పని మరియు చాలా ఖరీదైనది. ఇది 1970లలో [AI వింటర్](https://en.wikipedia.org/wiki/AI_winter)కి దారితీసింది.
<img alt="AI చరిత్ర సంక్షిప్తం" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
కాలంతో, కంప్యూటింగ్ వనరులు చౌకగా మారాయి, మరిన్ని డేటా అందుబాటులోకి వచ్చాయి, కాబట్టి న్యూరల్ నెట్‌వర్క్ దృక్పథాలు కంప్యూటర్ విజన్, స్పీచ్ అర్థం చేసుకోవడంలో మానవులతో పోటీ పడుతూ గొప్ప ప్రదర్శన చూపించాయి. గత దశాబ్దంలో, కృత్రిమ మేధస్సు పదం ఎక్కువగా న్యూరల్ నెట్‌వర్క్స్‌కు సమానార్థకం అయింది, ఎందుకంటే మనం వింటున్న AI విజయాలు ఎక్కువగా వాటిపై ఆధారపడి ఉంటాయి.
చదరంగం ఆడే కంప్యూటర్ ప్రోగ్రామ్ సృష్టించడంలో దృక్పథాలు ఎలా మారాయో చూడవచ్చు:
* ప్రారంభ చదరంగ ప్రోగ్రాములు శోధన ఆధారంగా ఉండేవి – ప్రత్యర్థి యొక్క తదుపరి కొన్ని చలనం అవకాశాలను అంచనా వేసి, కొన్ని చలనాలలో సాధ్యమైన ఉత్తమ స్థితిని ఆధారంగా ఉత్తమ చలనం ఎంచుకునేవి. ఇది [ఆల్ఫా-బీటా ప్రూనింగ్](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) శోధన అల్గోరిథం అభివృద్ధికి దారితీసింది.
* శోధన వ్యూహాలు ఆట చివర్లో బాగా పనిచేస్తాయి, ఎందుకంటే ఆ సమయంలో శోధన స్థలం చిన్నదిగా ఉంటుంది. కానీ ఆట ప్రారంభంలో శోధన స్థలం విస్తృతంగా ఉంటుంది, అల్గోరిథం మానవ ఆటగాళ్ల మధ్య జరిగిన మ్యాచ్‌ల నుండి నేర్చుకోవడం ద్వారా మెరుగుపడుతుంది. తరువాతి ప్రయోగాలు [కేస్-బేస్డ్ రీజనింగ్](https://en.wikipedia.org/wiki/Case-based_reasoning) ఉపయోగించాయి, ఇందులో ప్రోగ్రామ్ ప్రస్తుత ఆట స్థితికి సమానమైన కేసులను జ్ఞాన భాండారంలో వెతుకుతుంది.
* ఆధునిక ప్రోగ్రాములు న్యూరల్ నెట్‌వర్క్స్ మరియు [రిఇన్ఫోర్స్‌మెంట్ లెర్నింగ్](https://en.wikipedia.org/wiki/Reinforcement_learning) ఆధారంగా ఉంటాయి, ఇవి స్వయంగా చాలా సమయం ఆడుతూ తప్పుల నుండి నేర్చుకుంటాయి – మానవులు చదరంగం నేర్చుకునే విధానం లాంటిది. కానీ కంప్యూటర్ చాలా ఎక్కువ ఆటలు తక్కువ సమయంలో ఆడగలదు, కాబట్టి వేగంగా నేర్చుకుంటుంది.
✅ AI ఆడిన ఇతర ఆటల గురించి కొంత పరిశోధన చేయండి.
అలాగే, “మాట్లాడే ప్రోగ్రాములు” (ట్యూరింగ్ పరీక్ష ఉత్తీర్ణం కావచ్చు) సృష్టించడంలో దృక్పథాలు ఎలా మారాయో చూడవచ్చు:
* ప్రారంభ ప్రోగ్రాములు, ఉదాహరణకు [ఎలిజా](https://en.wikipedia.org/wiki/ELIZA), చాలా సులభమైన వ్యాకరణ నియమాలు మరియు ఇన్‌పుట్ వాక్యాన్ని ప్రశ్నగా మార్చడం ఆధారంగా ఉండేవి.
* ఆధునిక అసిస్టెంట్లు, ఉదాహరణకు Cortana, Siri లేదా Google Assistant, న్యూరల్ నెట్‌వర్క్స్ ఉపయోగించి మాటను టెక్స్ట్‌గా మార్చి మన ఉద్దేశ్యాన్ని గుర్తించి, తరువాత తర్కం లేదా స్పష్టమైన అల్గోరిథమ్లను ఉపయోగించి అవసరమైన చర్యలు చేస్తాయి.
* భవిష్యత్తులో, పూర్తిగా న్యూరల్ ఆధారిత మోడల్ సంభాషణను స్వయంగా నిర్వహించగలదని ఆశించవచ్చు. తాజా GPT మరియు [Turing-NLG](https://www.microsoft.com/research/blog/turing-nlg-a
> Dmitry Soshnikov గారి చిత్రం, [ఫోటో](https://unsplash.com/photos/r8LmVbUKgns) [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) గారు తీసినది, Unsplash
## తాజా AI పరిశోధన
న్యూరల్ నెట్‌వర్క్ పరిశోధనలో భారీ వృద్ధి 2010 సుమారు ప్రారంభమైంది, అప్పుడే పెద్ద పబ్లిక్ డేటాసెట్లు అందుబాటులోకి వచ్చాయి. సుమారు 14 మిలియన్ల అనోటేటెడ్ చిత్రాల కలెక్షన్ అయిన [ImageNet](https://en.wikipedia.org/wiki/ImageNet) ద్వారా [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) ప్రారంభమైంది.
![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) గారు తీసినది
2012లో, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) మొదటిసారిగా చిత్రం వర్గీకరణలో ఉపయోగించబడ్డాయి, దీని వల్ల వర్గీకరణ లోపాలు గణనీయంగా తగ్గాయి (సుమారు 30% నుండి 16.4%కి). 2015లో, Microsoft Research నుండి ResNet ఆర్కిటెక్చర్ [మానవ స్థాయి ఖచ్చితత్వాన్ని సాధించింది](https://doi.org/10.1109/ICCV.2015.123).
అప్పటి నుండి, న్యూరల్ నెట్‌వర్క్స్ అనేక పనుల్లో చాలా విజయవంతంగా ప్రవర్తించాయి:
---
సంవత్సరం | మానవ సమానత సాధించబడింది
-----|--------
2015 | [చిత్ర వర్గీకరణ](https://doi.org/10.1109/ICCV.2015.123)
2016 | [సంభాషణాత్మక స్పీచ్ రికగ్నిషన్](https://arxiv.org/abs/1610.05256)
2018 | [స్వయంచాలక యంత్ర అనువాదం](https://arxiv.org/abs/1803.05567) (చైనీస్-టు-ఇంగ్లీష్)
2020 | [చిత్ర వివరణ](https://arxiv.org/abs/2009.13682)
గత కొన్ని సంవత్సరాలలో, BERT మరియు GPT-3 వంటి పెద్ద భాషా మోడల్స్ తో భారీ విజయాలు సాధించాము. ఇది ప్రధానంగా అందుబాటులో ఉన్న విస్తృత సాధారణ టెక్స్ట్ డేటా వల్ల జరిగింది, ఇది మోడల్స్‌ను టెక్స్ట్ నిర్మాణం మరియు అర్థం పట్టుకునేలా శిక్షణ ఇవ్వడానికి, సాధారణ టెక్స్ట్ సేకరణలపై ప్రీ-ట్రెయిన్ చేయడానికి, మరియు ఆ తర్వాత మరింత ప్రత్యేక పనుల కోసం ఆ మోడల్స్‌ను ప్రత్యేకీకరించడానికి సహాయపడింది. ఈ కోర్సులో తర్వాత [Natural Language Processing](../5-NLP/README.md) గురించి మరింత తెలుసుకుంటాము.
## 🚀 సవాలు
మీ అభిప్రాయం ప్రకారం, ఇంటర్నెట్‌లో ఎక్కడ AI అత్యంత సమర్థవంతంగా ఉపయోగించబడుతోంది అనేది తెలుసుకోండి. అది మ్యాపింగ్ యాప్‌లోనా, స్పీచ్-టు-టెక్స్ట్ సర్వీస్‌లోనా లేదా వీడియో గేమ్‌లోనా? ఆ సిస్టమ్ ఎలా నిర్మించబడిందో పరిశోధించండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/2)
## సమీక్ష & స్వీయ అధ్యయనం
AI మరియు ML చరిత్రను [ఈ పాఠం](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) చదవడం ద్వారా సమీక్షించండి. ఆ పాఠం లేదా ఈ పాఠం పైభాగంలో ఉన్న స్కెచ్‌నోట్ నుండి ఒక అంశాన్ని తీసుకుని దాని సాంస్కృతిక సందర్భాన్ని అర్థం చేసుకోవడానికి లోతుగా పరిశోధించండి.
**అసైన్‌మెంట్**: [గేమ్ జామ్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,478 +1,478 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# జంతు నిపుణుల వ్యవస్థను అమలు చేయడం\n",
"\n",
"[AI for Beginners Curriculum](http://github.com/microsoft/ai-for-beginners) నుండి ఒక ఉదాహరణ.\n",
"\n",
"ఈ నమూనాలో, కొన్ని శారీరక లక్షణాల ఆధారంగా జంతువును గుర్తించడానికి ఒక సులభమైన జ్ఞానాధారిత వ్యవస్థను అమలు చేస్తాము. ఈ వ్యవస్థను క్రింది AND-OR చెట్టు ద్వారా ప్రదర్శించవచ్చు (ఇది మొత్తం చెట్టు యొక్క ఒక భాగం, మేము సులభంగా మరిన్ని నియమాలను జోడించవచ్చు):\n",
"\n",
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.te.png)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## మన స్వంత నిపుణుల వ్యవస్థ షెల్ వెనుకబడిన నిర్ధారణతో\n",
"\n",
"ఉత్పత్తి నియమాల ఆధారంగా జ్ఞాన ప్రాతినిధ్యం కోసం ఒక సరళమైన భాషను నిర్వచించడానికి ప్రయత్నిద్దాం. నియమాలను నిర్వచించడానికి Python తరగతులను కీవర్డ్లుగా ఉపయోగిస్తాము. మూడే రకాల తరగతులు ఉంటాయి:\n",
"* `Ask` అనేది వినియోగదారుని అడగవలసిన ప్రశ్నను సూచిస్తుంది. ఇది సాధ్యమైన సమాధానాల సమాహారాన్ని కలిగి ఉంటుంది.\n",
"* `If` అనేది ఒక నియమాన్ని సూచిస్తుంది, ఇది నియమపు విషయాన్ని నిల్వ చేయడానికి ఒక సింటాక్టిక్ షుగర్ మాత్రమే.\n",
"* `AND`/`OR` అనేవి చెట్టు యొక్క AND/OR శాఖలను సూచించే తరగతులు. అవి కేవలం లోపల ఆర్గ్యుమెంట్ల జాబితాను నిల్వ చేస్తాయి. కోడ్ సులభతరం చేయడానికి, అన్ని ఫంక్షనాలిటీని తల్లిదండ్రి తరగతి `Content` లో నిర్వచించబడింది.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class Ask():\n",
" def __init__(self,choices=['y','n']):\n",
" self.choices = choices\n",
" def ask(self):\n",
" if max([len(x) for x in self.choices])>1:\n",
" for i,x in enumerate(self.choices):\n",
" print(\"{0}. {1}\".format(i,x),flush=True)\n",
" x = int(input())\n",
" return self.choices[x]\n",
" else:\n",
" print(\"/\".join(self.choices),flush=True)\n",
" return input()\n",
"\n",
"class Content():\n",
" def __init__(self,x):\n",
" self.x=x\n",
" \n",
"class If(Content):\n",
" pass\n",
"\n",
"class AND(Content):\n",
" pass\n",
"\n",
"class OR(Content):\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన వ్యవస్థలో, వర్కింగ్ మెమరీలో **గుణం-విలువ జంటలుగా** **వాస్తవాలు** జాబితా ఉంటుంది. జ్ఞానాధారం అనేది ఒక పెద్ద నిఘంటువు లాగా నిర్వచించవచ్చు, ఇది చర్యలను (వర్కింగ్ మెమరీలో చేర్చవలసిన కొత్త వాస్తవాలు) AND-OR వ్యక్తీకరణలుగా వ్యక్తం చేసిన షరతులకు మ్యాప్ చేస్తుంది. అలాగే, కొన్ని వాస్తవాలను `Ask` చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"rules = {\n",
" 'default': Ask(['y','n']),\n",
" 'color' : Ask(['red-brown','black and white','other']),\n",
" 'pattern' : Ask(['dark stripes','dark spots']),\n",
" 'mammal': If(OR(['hair','gives milk'])),\n",
" 'carnivor': If(OR([AND(['sharp teeth','claws','forward-looking eyes']),'eats meat'])),\n",
" 'ungulate': If(['mammal',OR(['has hooves','chews cud'])]),\n",
" 'bird': If(OR(['feathers',AND(['flies','lies eggs'])])),\n",
" 'animal:monkey' : If(['mammal','carnivor','color:red-brown','pattern:dark spots']),\n",
" 'animal:tiger' : If(['mammal','carnivor','color:red-brown','pattern:dark stripes']),\n",
" 'animal:giraffe' : If(['ungulate','long neck','long legs','pattern:dark spots']),\n",
" 'animal:zebra' : If(['ungulate','pattern:dark stripes']),\n",
" 'animal:ostrich' : If(['bird','long nech','color:black and white','cannot fly']),\n",
" 'animal:pinguin' : If(['bird','swims','color:black and white','cannot fly']),\n",
" 'animal:albatross' : If(['bird','flies well'])\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"వెనుకకు సూచన చేయడానికి, మనం `Knowledgebase` క్లాస్‌ను నిర్వచిస్తాము. ఇది కలిగి ఉంటుంది:\n",
"* పని చేసే `memory` - లక్షణాలను విలువలకు మ్యాప్ చేసే డిక్షనరీ\n",
"* పైగా నిర్వచించిన ఫార్మాట్‌లో ఉన్న Knowledgebase `rules`\n",
"\n",
"రెండు ప్రధాన విధానాలు:\n",
"* `get` ఒక లక్షణం యొక్క విలువను పొందడానికి, అవసరమైతే సూచన చేస్తుంది. ఉదాహరణకు, `get('color')` రంగు స్లాట్ యొక్క విలువను పొందుతుంది (అవసరమైతే అడుగుతుంది, మరియు తరువాత ఉపయోగానికి పని చేసే మెమరీలో విలువను నిల్వ చేస్తుంది). మనం `get('color:blue')` అడిగితే, అది రంగును అడిగి, ఆ రంగు ఆధారంగా `y`/`n` విలువను ఇస్తుంది.\n",
"* `eval` వాస్తవ సూచనను నిర్వహిస్తుంది, అంటే AND/OR ట్రీని దాటుతూ, ఉప-లక్ష్యాలను మూల్యాంకనం చేస్తుంది, మొదలైనవి.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class KnowledgeBase():\n",
" def __init__(self,rules):\n",
" self.rules = rules\n",
" self.memory = {}\n",
" \n",
" def get(self,name):\n",
" if ':' in name:\n",
" k,v = name.split(':')\n",
" vv = self.get(k)\n",
" return 'y' if v==vv else 'n'\n",
" if name in self.memory.keys():\n",
" return self.memory[name]\n",
" for fld in self.rules.keys():\n",
" if fld==name or fld.startswith(name+\":\"):\n",
" # print(\" + proving {}\".format(fld))\n",
" value = 'y' if fld==name else fld.split(':')[1]\n",
" res = self.eval(self.rules[fld],field=name)\n",
" if res!='y' and res!='n' and value=='y':\n",
" self.memory[name] = res\n",
" return res\n",
" if res=='y':\n",
" self.memory[name] = value\n",
" return value\n",
" # field is not found, using default\n",
" res = self.eval(self.rules['default'],field=name)\n",
" self.memory[name]=res\n",
" return res\n",
" \n",
" def eval(self,expr,field=None):\n",
" # print(\" + eval {}\".format(expr))\n",
" if isinstance(expr,Ask):\n",
" print(field)\n",
" return expr.ask()\n",
" elif isinstance(expr,If):\n",
" return self.eval(expr.x)\n",
" elif isinstance(expr,AND) or isinstance(expr,list):\n",
" expr = expr.x if isinstance(expr,AND) else expr\n",
" for x in expr:\n",
" if self.eval(x)=='n':\n",
" return 'n'\n",
" return 'y'\n",
" elif isinstance(expr,OR):\n",
" for x in expr.x:\n",
" if self.eval(x)=='y':\n",
" return 'y'\n",
" return 'n'\n",
" elif isinstance(expr,str):\n",
" return self.get(expr)\n",
" else:\n",
" print(\"Unknown expr: {}\".format(expr))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మన జంతు జ్ఞానాధారాన్ని నిర్వచించి సంప్రదింపును నిర్వహిద్దాం. ఈ కాల్ మీకు ప్రశ్నలు అడుగుతుంది. అవును-కాదు ప్రశ్నలకు మీరు `y`/`n` టైప్ చేసి సమాధానం ఇవ్వవచ్చు, లేదా ఎక్కువ ఎంపికలున్న ప్రశ్నలకు 0..N సంఖ్యను పేర్కొనవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hair\n",
"y/n\n",
"sharp teeth\n",
"y/n\n",
"claws\n",
"y/n\n",
"forward-looking eyes\n",
"y/n\n",
"color\n",
"0. red-brown\n",
"1. black and white\n",
"2. other\n",
"has hooves\n",
"y/n\n",
"long neck\n",
"y/n\n",
"long legs\n",
"y/n\n",
"pattern\n",
"0. dark stripes\n",
"1. dark spots\n"
]
},
{
"data": {
"text/plain": [
"'giraffe'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kb = KnowledgeBase(rules)\n",
"kb.get('animal')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఫార్వర్డ్ ఇన్ఫరెన్స్ కోసం PyKnow ఉపయోగించడం\n",
"\n",
"తరువాతి ఉదాహరణలో, జ్ఞాన ప్రాతినిధ్యం కోసం ఉన్న లైబ్రరీలలో ఒకటి అయిన [PyKnow](https://github.com/buguroo/pyknow/) ఉపయోగించి ఫార్వర్డ్ ఇన్ఫరెన్స్‌ను అమలు చేయడానికి ప్రయత్నిస్తాము. **PyKnow** అనేది Pythonలో ఫార్వర్డ్ ఇన్ఫరెన్స్ సిస్టమ్స్ సృష్టించడానికి ఉపయోగించే లైబ్రరీ, ఇది పాత క్లాసికల్ సిస్టమ్ [CLIPS](http://www.clipsrules.net/index.html)కి సమానంగా రూపొందించబడింది.\n",
"\n",
"మనం ఫార్వర్డ్ చైనింగ్‌ను స్వయంగా కూడా అమలు చేయవచ్చు, కానీ సాధారణ అమలు పద్ధతులు ఎక్కువగా సమర్థవంతంగా ఉండవు. మరింత సమర్థవంతమైన రూల్ మ్యాచ్ చేయడానికి ప్రత్యేక అల్గోరిథం [Rete](https://en.wikipedia.org/wiki/Rete_algorithm) ఉపయోగిస్తారు.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting git+https://github.com/buguroo/pyknow/\n",
" Cloning https://github.com/buguroo/pyknow/ to /tmp/pip-req-build-3cqeulyl\n",
" Running command git clone --filter=blob:none --quiet https://github.com/buguroo/pyknow/ /tmp/pip-req-build-3cqeulyl\n",
" Resolved https://github.com/buguroo/pyknow/ to commit 48818336f2e9a126f1964f2d8dc22d37ff800fe8\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hCollecting frozendict==1.2\n",
" Using cached frozendict-1.2.tar.gz (2.6 kB)\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hCollecting schema==0.6.7\n",
" Using cached schema-0.6.7-py2.py3-none-any.whl (14 kB)\n",
"Building wheels for collected packages: pyknow, frozendict\n",
" Building wheel for pyknow (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for pyknow: filename=pyknow-1.7.0-py3-none-any.whl size=34228 sha256=b7de5b09292c4007667c72f69b98d5a1b5f7324ff15f9dd8e077c3d5f7aade42\n",
" Stored in directory: /tmp/pip-ephem-wheel-cache-k7jpave7/wheels/81/1a/d3/f6c15dbe1955598a37755215f2a10449e7418500d7bd4b9508\n",
" Building wheel for frozendict (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for frozendict: filename=frozendict-1.2-py3-none-any.whl size=3148 sha256=2863d55c240d2409cddf05ccfe600591f8478681549fc97555c47c90dc6bb160\n",
" Stored in directory: /home/rg/.cache/pip/wheels/49/ac/f8/cb8120244e710bdb479c86198b03c7b08c3c2d3d2bf448fd6e\n",
"Successfully built pyknow frozendict\n",
"Installing collected packages: schema, frozendict, pyknow\n",
"Successfully installed frozendict-1.2 pyknow-1.7.0 schema-0.6.7\n"
]
}
],
"source": [
"import sys\n",
"!{sys.executable} -m pip install git+https://github.com/buguroo/pyknow/"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"from pyknow import *\n",
"#import pyknow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము మా సిస్టమ్‌ను `KnowledgeEngine` ను సబ్‌క్లాస్ చేసే క్లాస్‌గా నిర్వచిస్తాము. ప్రతి నియమం `@Rule` అనోటేషన్‌తో వేరే ఫంక్షన్ ద్వారా నిర్వచించబడుతుంది, ఇది నియమం ఎప్పుడు అమలవ్వాలో సూచిస్తుంది. నియమం లోపల, మేము `declare` ఫంక్షన్ ఉపయోగించి కొత్త వాస్తవాలను జోడించవచ్చు, మరియు ఆ వాస్తవాలను జోడించడం ఫార్వర్డ్ ఇన్ఫరెన్స్ ఇంజిన్ ద్వారా మరిన్ని నియమాలు పిలవబడటానికి కారణమవుతుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class Animals(KnowledgeEngine):\n",
" @Rule(OR(\n",
" AND(Fact('sharp teeth'),Fact('claws'),Fact('forward looking eyes')),\n",
" Fact('eats meat')))\n",
" def cornivor(self):\n",
" self.declare(Fact('carnivor'))\n",
" \n",
" @Rule(OR(Fact('hair'),Fact('gives milk')))\n",
" def mammal(self):\n",
" self.declare(Fact('mammal'))\n",
"\n",
" @Rule(Fact('mammal'),\n",
" OR(Fact('has hooves'),Fact('chews cud')))\n",
" def hooves(self):\n",
" self.declare('ungulate')\n",
" \n",
" @Rule(OR(Fact('feathers'),AND(Fact('flies'),Fact('lays eggs'))))\n",
" def bird(self):\n",
" self.declare('bird')\n",
" \n",
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark spots'))\n",
" def monkey(self):\n",
" self.declare(Fact(animal='monkey'))\n",
"\n",
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark stripes'))\n",
" def tiger(self):\n",
" self.declare(Fact(animal='tiger'))\n",
"\n",
" @Rule(Fact('ungulate'),\n",
" Fact('long neck'),\n",
" Fact('long legs'),\n",
" Fact(pattern='dark spots'))\n",
" def giraffe(self):\n",
" self.declare(Fact(animal='giraffe'))\n",
"\n",
" @Rule(Fact('ungulate'),\n",
" Fact(pattern='dark stripes'))\n",
" def zebra(self):\n",
" self.declare(Fact(animal='zebra'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('long neck'),\n",
" Fact('cannot fly'),\n",
" Fact(color='black and white'))\n",
" def straus(self):\n",
" self.declare(Fact(animal='ostrich'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('swims'),\n",
" Fact('cannot fly'),\n",
" Fact(color='black and white'))\n",
" def pinguin(self):\n",
" self.declare(Fact(animal='pinguin'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('flies well'))\n",
" def albatros(self):\n",
" self.declare(Fact(animal='albatross'))\n",
" \n",
" @Rule(Fact(animal=MATCH.a))\n",
" def print_result(self,a):\n",
" print('Animal is {}'.format(a))\n",
" \n",
" def factz(self,l):\n",
" for x in l:\n",
" self.declare(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఒకసారి మనం ఒక జ్ఞానాధారం నిర్వచించిన తర్వాత, మన పని జ్ఞాపకశక్తిని కొన్ని ప్రారంభ వాస్తవాలతో నింపుతాము, మరియు ఆపై `run()` పద్ధతిని పిలిచి తర్కాన్ని నిర్వహిస్తాము. మీరు ఫలితంగా చూడవచ్చు కొత్త తర్కించిన వాస్తవాలు పని జ్ఞాపకశక్తికి జోడించబడ్డాయి, అందులో ఆ జంతువు గురించి తుది వాస్తవం కూడా ఉంటుంది (మనం అన్ని ప్రారంభ వాస్తవాలను సరిగ్గా సెట్ చేసినట్లయితే).\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Animal is tiger\n"
]
},
{
"data": {
"text/plain": [
"FactList([(0, InitialFact()),\n",
" (1, Fact(color='red-brown')),\n",
" (2, Fact(pattern='dark stripes')),\n",
" (3, Fact('sharp teeth')),\n",
" (4, Fact('claws')),\n",
" (5, Fact('forward looking eyes')),\n",
" (6, Fact('gives milk')),\n",
" (7, Fact('mammal')),\n",
" (8, Fact('carnivor')),\n",
" (9, Fact(animal='tiger'))])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ex1 = Animals()\n",
"ex1.reset()\n",
"ex1.factz([\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark stripes'),\n",
" Fact('sharp teeth'),\n",
" Fact('claws'),\n",
" Fact('forward looking eyes'),\n",
" Fact('gives milk')])\n",
"ex1.run()\n",
"ex1.facts"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.7.4 64-bit (conda)",
"metadata": {
"interpreter": {
"hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5"
}
},
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.2"
},
"coopTranslator": {
"original_hash": "ab2bd97b0453415b89a469284609a8ce",
"translation_date": "2025-11-25T23:47:55+00:00",
"source_file": "lessons/2-Symbolic/Animals.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# జంతు నిపుణుల వ్యవస్థను అమలు చేయడం\n",
"\n",
"[AI for Beginners Curriculum](http://github.com/microsoft/ai-for-beginners) నుండి ఒక ఉదాహరణ.\n",
"\n",
"ఈ నమూనాలో, కొన్ని శారీరక లక్షణాల ఆధారంగా జంతువును గుర్తించడానికి ఒక సులభమైన జ్ఞానాధారిత వ్యవస్థను అమలు చేస్తాము. ఈ వ్యవస్థను క్రింది AND-OR చెట్టు ద్వారా ప్రదర్శించవచ్చు (ఇది మొత్తం చెట్టు యొక్క ఒక భాగం, మేము సులభంగా మరిన్ని నియమాలను జోడించవచ్చు):\n",
"\n",
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.te.png)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## మన స్వంత నిపుణుల వ్యవస్థ షెల్ వెనుకబడిన నిర్ధారణతో\n",
"\n",
"ఉత్పత్తి నియమాల ఆధారంగా జ్ఞాన ప్రాతినిధ్యం కోసం ఒక సరళమైన భాషను నిర్వచించడానికి ప్రయత్నిద్దాం. నియమాలను నిర్వచించడానికి Python తరగతులను కీవర్డ్లుగా ఉపయోగిస్తాము. మూడే రకాల తరగతులు ఉంటాయి:\n",
"* `Ask` అనేది వినియోగదారుని అడగవలసిన ప్రశ్నను సూచిస్తుంది. ఇది సాధ్యమైన సమాధానాల సమాహారాన్ని కలిగి ఉంటుంది.\n",
"* `If` అనేది ఒక నియమాన్ని సూచిస్తుంది, ఇది నియమపు విషయాన్ని నిల్వ చేయడానికి ఒక సింటాక్టిక్ షుగర్ మాత్రమే.\n",
"* `AND`/`OR` అనేవి చెట్టు యొక్క AND/OR శాఖలను సూచించే తరగతులు. అవి కేవలం లోపల ఆర్గ్యుమెంట్ల జాబితాను నిల్వ చేస్తాయి. కోడ్ సులభతరం చేయడానికి, అన్ని ఫంక్షనాలిటీని తల్లిదండ్రి తరగతి `Content` లో నిర్వచించబడింది.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class Ask():\n",
" def __init__(self,choices=['y','n']):\n",
" self.choices = choices\n",
" def ask(self):\n",
" if max([len(x) for x in self.choices])>1:\n",
" for i,x in enumerate(self.choices):\n",
" print(\"{0}. {1}\".format(i,x),flush=True)\n",
" x = int(input())\n",
" return self.choices[x]\n",
" else:\n",
" print(\"/\".join(self.choices),flush=True)\n",
" return input()\n",
"\n",
"class Content():\n",
" def __init__(self,x):\n",
" self.x=x\n",
" \n",
"class If(Content):\n",
" pass\n",
"\n",
"class AND(Content):\n",
" pass\n",
"\n",
"class OR(Content):\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన వ్యవస్థలో, వర్కింగ్ మెమరీలో **గుణం-విలువ జంటలుగా** **వాస్తవాలు** జాబితా ఉంటుంది. జ్ఞానాధారం అనేది ఒక పెద్ద నిఘంటువు లాగా నిర్వచించవచ్చు, ఇది చర్యలను (వర్కింగ్ మెమరీలో చేర్చవలసిన కొత్త వాస్తవాలు) AND-OR వ్యక్తీకరణలుగా వ్యక్తం చేసిన షరతులకు మ్యాప్ చేస్తుంది. అలాగే, కొన్ని వాస్తవాలను `Ask` చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"rules = {\n",
" 'default': Ask(['y','n']),\n",
" 'color' : Ask(['red-brown','black and white','other']),\n",
" 'pattern' : Ask(['dark stripes','dark spots']),\n",
" 'mammal': If(OR(['hair','gives milk'])),\n",
" 'carnivor': If(OR([AND(['sharp teeth','claws','forward-looking eyes']),'eats meat'])),\n",
" 'ungulate': If(['mammal',OR(['has hooves','chews cud'])]),\n",
" 'bird': If(OR(['feathers',AND(['flies','lies eggs'])])),\n",
" 'animal:monkey' : If(['mammal','carnivor','color:red-brown','pattern:dark spots']),\n",
" 'animal:tiger' : If(['mammal','carnivor','color:red-brown','pattern:dark stripes']),\n",
" 'animal:giraffe' : If(['ungulate','long neck','long legs','pattern:dark spots']),\n",
" 'animal:zebra' : If(['ungulate','pattern:dark stripes']),\n",
" 'animal:ostrich' : If(['bird','long nech','color:black and white','cannot fly']),\n",
" 'animal:pinguin' : If(['bird','swims','color:black and white','cannot fly']),\n",
" 'animal:albatross' : If(['bird','flies well'])\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"వెనుకకు సూచన చేయడానికి, మనం `Knowledgebase` క్లాస్‌ను నిర్వచిస్తాము. ఇది కలిగి ఉంటుంది:\n",
"* పని చేసే `memory` - లక్షణాలను విలువలకు మ్యాప్ చేసే డిక్షనరీ\n",
"* పైగా నిర్వచించిన ఫార్మాట్‌లో ఉన్న Knowledgebase `rules`\n",
"\n",
"రెండు ప్రధాన విధానాలు:\n",
"* `get` ఒక లక్షణం యొక్క విలువను పొందడానికి, అవసరమైతే సూచన చేస్తుంది. ఉదాహరణకు, `get('color')` రంగు స్లాట్ యొక్క విలువను పొందుతుంది (అవసరమైతే అడుగుతుంది, మరియు తరువాత ఉపయోగానికి పని చేసే మెమరీలో విలువను నిల్వ చేస్తుంది). మనం `get('color:blue')` అడిగితే, అది రంగును అడిగి, ఆ రంగు ఆధారంగా `y`/`n` విలువను ఇస్తుంది.\n",
"* `eval` వాస్తవ సూచనను నిర్వహిస్తుంది, అంటే AND/OR ట్రీని దాటుతూ, ఉప-లక్ష్యాలను మూల్యాంకనం చేస్తుంది, మొదలైనవి.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class KnowledgeBase():\n",
" def __init__(self,rules):\n",
" self.rules = rules\n",
" self.memory = {}\n",
" \n",
" def get(self,name):\n",
" if ':' in name:\n",
" k,v = name.split(':')\n",
" vv = self.get(k)\n",
" return 'y' if v==vv else 'n'\n",
" if name in self.memory.keys():\n",
" return self.memory[name]\n",
" for fld in self.rules.keys():\n",
" if fld==name or fld.startswith(name+\":\"):\n",
" # print(\" + proving {}\".format(fld))\n",
" value = 'y' if fld==name else fld.split(':')[1]\n",
" res = self.eval(self.rules[fld],field=name)\n",
" if res!='y' and res!='n' and value=='y':\n",
" self.memory[name] = res\n",
" return res\n",
" if res=='y':\n",
" self.memory[name] = value\n",
" return value\n",
" # field is not found, using default\n",
" res = self.eval(self.rules['default'],field=name)\n",
" self.memory[name]=res\n",
" return res\n",
" \n",
" def eval(self,expr,field=None):\n",
" # print(\" + eval {}\".format(expr))\n",
" if isinstance(expr,Ask):\n",
" print(field)\n",
" return expr.ask()\n",
" elif isinstance(expr,If):\n",
" return self.eval(expr.x)\n",
" elif isinstance(expr,AND) or isinstance(expr,list):\n",
" expr = expr.x if isinstance(expr,AND) else expr\n",
" for x in expr:\n",
" if self.eval(x)=='n':\n",
" return 'n'\n",
" return 'y'\n",
" elif isinstance(expr,OR):\n",
" for x in expr.x:\n",
" if self.eval(x)=='y':\n",
" return 'y'\n",
" return 'n'\n",
" elif isinstance(expr,str):\n",
" return self.get(expr)\n",
" else:\n",
" print(\"Unknown expr: {}\".format(expr))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మన జంతు జ్ఞానాధారాన్ని నిర్వచించి సంప్రదింపును నిర్వహిద్దాం. ఈ కాల్ మీకు ప్రశ్నలు అడుగుతుంది. అవును-కాదు ప్రశ్నలకు మీరు `y`/`n` టైప్ చేసి సమాధానం ఇవ్వవచ్చు, లేదా ఎక్కువ ఎంపికలున్న ప్రశ్నలకు 0..N సంఖ్యను పేర్కొనవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hair\n",
"y/n\n",
"sharp teeth\n",
"y/n\n",
"claws\n",
"y/n\n",
"forward-looking eyes\n",
"y/n\n",
"color\n",
"0. red-brown\n",
"1. black and white\n",
"2. other\n",
"has hooves\n",
"y/n\n",
"long neck\n",
"y/n\n",
"long legs\n",
"y/n\n",
"pattern\n",
"0. dark stripes\n",
"1. dark spots\n"
]
},
{
"data": {
"text/plain": [
"'giraffe'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kb = KnowledgeBase(rules)\n",
"kb.get('animal')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఫార్వర్డ్ ఇన్ఫరెన్స్ కోసం PyKnow ఉపయోగించడం\n",
"\n",
"తరువాతి ఉదాహరణలో, జ్ఞాన ప్రాతినిధ్యం కోసం ఉన్న లైబ్రరీలలో ఒకటి అయిన [PyKnow](https://github.com/buguroo/pyknow/) ఉపయోగించి ఫార్వర్డ్ ఇన్ఫరెన్స్‌ను అమలు చేయడానికి ప్రయత్నిస్తాము. **PyKnow** అనేది Pythonలో ఫార్వర్డ్ ఇన్ఫరెన్స్ సిస్టమ్స్ సృష్టించడానికి ఉపయోగించే లైబ్రరీ, ఇది పాత క్లాసికల్ సిస్టమ్ [CLIPS](http://www.clipsrules.net/index.html)కి సమానంగా రూపొందించబడింది.\n",
"\n",
"మనం ఫార్వర్డ్ చైనింగ్‌ను స్వయంగా కూడా అమలు చేయవచ్చు, కానీ సాధారణ అమలు పద్ధతులు ఎక్కువగా సమర్థవంతంగా ఉండవు. మరింత సమర్థవంతమైన రూల్ మ్యాచ్ చేయడానికి ప్రత్యేక అల్గోరిథం [Rete](https://en.wikipedia.org/wiki/Rete_algorithm) ఉపయోగిస్తారు.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting git+https://github.com/buguroo/pyknow/\n",
" Cloning https://github.com/buguroo/pyknow/ to /tmp/pip-req-build-3cqeulyl\n",
" Running command git clone --filter=blob:none --quiet https://github.com/buguroo/pyknow/ /tmp/pip-req-build-3cqeulyl\n",
" Resolved https://github.com/buguroo/pyknow/ to commit 48818336f2e9a126f1964f2d8dc22d37ff800fe8\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hCollecting frozendict==1.2\n",
" Using cached frozendict-1.2.tar.gz (2.6 kB)\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hCollecting schema==0.6.7\n",
" Using cached schema-0.6.7-py2.py3-none-any.whl (14 kB)\n",
"Building wheels for collected packages: pyknow, frozendict\n",
" Building wheel for pyknow (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for pyknow: filename=pyknow-1.7.0-py3-none-any.whl size=34228 sha256=b7de5b09292c4007667c72f69b98d5a1b5f7324ff15f9dd8e077c3d5f7aade42\n",
" Stored in directory: /tmp/pip-ephem-wheel-cache-k7jpave7/wheels/81/1a/d3/f6c15dbe1955598a37755215f2a10449e7418500d7bd4b9508\n",
" Building wheel for frozendict (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for frozendict: filename=frozendict-1.2-py3-none-any.whl size=3148 sha256=2863d55c240d2409cddf05ccfe600591f8478681549fc97555c47c90dc6bb160\n",
" Stored in directory: /home/rg/.cache/pip/wheels/49/ac/f8/cb8120244e710bdb479c86198b03c7b08c3c2d3d2bf448fd6e\n",
"Successfully built pyknow frozendict\n",
"Installing collected packages: schema, frozendict, pyknow\n",
"Successfully installed frozendict-1.2 pyknow-1.7.0 schema-0.6.7\n"
]
}
],
"source": [
"import sys\n",
"!{sys.executable} -m pip install git+https://github.com/buguroo/pyknow/"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"from pyknow import *\n",
"#import pyknow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము మా సిస్టమ్‌ను `KnowledgeEngine` ను సబ్‌క్లాస్ చేసే క్లాస్‌గా నిర్వచిస్తాము. ప్రతి నియమం `@Rule` అనోటేషన్‌తో వేరే ఫంక్షన్ ద్వారా నిర్వచించబడుతుంది, ఇది నియమం ఎప్పుడు అమలవ్వాలో సూచిస్తుంది. నియమం లోపల, మేము `declare` ఫంక్షన్ ఉపయోగించి కొత్త వాస్తవాలను జోడించవచ్చు, మరియు ఆ వాస్తవాలను జోడించడం ఫార్వర్డ్ ఇన్ఫరెన్స్ ఇంజిన్ ద్వారా మరిన్ని నియమాలు పిలవబడటానికి కారణమవుతుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"class Animals(KnowledgeEngine):\n",
" @Rule(OR(\n",
" AND(Fact('sharp teeth'),Fact('claws'),Fact('forward looking eyes')),\n",
" Fact('eats meat')))\n",
" def cornivor(self):\n",
" self.declare(Fact('carnivor'))\n",
" \n",
" @Rule(OR(Fact('hair'),Fact('gives milk')))\n",
" def mammal(self):\n",
" self.declare(Fact('mammal'))\n",
"\n",
" @Rule(Fact('mammal'),\n",
" OR(Fact('has hooves'),Fact('chews cud')))\n",
" def hooves(self):\n",
" self.declare('ungulate')\n",
" \n",
" @Rule(OR(Fact('feathers'),AND(Fact('flies'),Fact('lays eggs'))))\n",
" def bird(self):\n",
" self.declare('bird')\n",
" \n",
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark spots'))\n",
" def monkey(self):\n",
" self.declare(Fact(animal='monkey'))\n",
"\n",
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark stripes'))\n",
" def tiger(self):\n",
" self.declare(Fact(animal='tiger'))\n",
"\n",
" @Rule(Fact('ungulate'),\n",
" Fact('long neck'),\n",
" Fact('long legs'),\n",
" Fact(pattern='dark spots'))\n",
" def giraffe(self):\n",
" self.declare(Fact(animal='giraffe'))\n",
"\n",
" @Rule(Fact('ungulate'),\n",
" Fact(pattern='dark stripes'))\n",
" def zebra(self):\n",
" self.declare(Fact(animal='zebra'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('long neck'),\n",
" Fact('cannot fly'),\n",
" Fact(color='black and white'))\n",
" def straus(self):\n",
" self.declare(Fact(animal='ostrich'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('swims'),\n",
" Fact('cannot fly'),\n",
" Fact(color='black and white'))\n",
" def pinguin(self):\n",
" self.declare(Fact(animal='pinguin'))\n",
"\n",
" @Rule(Fact('bird'),\n",
" Fact('flies well'))\n",
" def albatros(self):\n",
" self.declare(Fact(animal='albatross'))\n",
" \n",
" @Rule(Fact(animal=MATCH.a))\n",
" def print_result(self,a):\n",
" print('Animal is {}'.format(a))\n",
" \n",
" def factz(self,l):\n",
" for x in l:\n",
" self.declare(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఒకసారి మనం ఒక జ్ఞానాధారం నిర్వచించిన తర్వాత, మన పని జ్ఞాపకశక్తిని కొన్ని ప్రారంభ వాస్తవాలతో నింపుతాము, మరియు ఆపై `run()` పద్ధతిని పిలిచి తర్కాన్ని నిర్వహిస్తాము. మీరు ఫలితంగా చూడవచ్చు కొత్త తర్కించిన వాస్తవాలు పని జ్ఞాపకశక్తికి జోడించబడ్డాయి, అందులో ఆ జంతువు గురించి తుది వాస్తవం కూడా ఉంటుంది (మనం అన్ని ప్రారంభ వాస్తవాలను సరిగ్గా సెట్ చేసినట్లయితే).\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"trusted": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Animal is tiger\n"
]
},
{
"data": {
"text/plain": [
"FactList([(0, InitialFact()),\n",
" (1, Fact(color='red-brown')),\n",
" (2, Fact(pattern='dark stripes')),\n",
" (3, Fact('sharp teeth')),\n",
" (4, Fact('claws')),\n",
" (5, Fact('forward looking eyes')),\n",
" (6, Fact('gives milk')),\n",
" (7, Fact('mammal')),\n",
" (8, Fact('carnivor')),\n",
" (9, Fact(animal='tiger'))])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ex1 = Animals()\n",
"ex1.reset()\n",
"ex1.factz([\n",
" Fact(color='red-brown'),\n",
" Fact(pattern='dark stripes'),\n",
" Fact('sharp teeth'),\n",
" Fact('claws'),\n",
" Fact('forward looking eyes'),\n",
" Fact('gives milk')])\n",
"ex1.run()\n",
"ex1.facts"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.7.4 64-bit (conda)",
"metadata": {
"interpreter": {
"hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5"
}
},
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.2"
},
"coopTranslator": {
"original_hash": "ab2bd97b0453415b89a469284609a8ce",
"translation_date": "2025-11-25T23:47:55+00:00",
"source_file": "lessons/2-Symbolic/Animals.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -1,249 +1,249 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7d097f7fda9166ead615e4c34552381b",
"translation_date": "2025-11-25T20:59:35+00:00",
"source_file": "lessons/2-Symbolic/README.md",
"language_code": "te"
}
-->
# జ్ఞాన ప్రాతినిధ్యం మరియు నిపుణుల వ్యవస్థలు
![సాంబాలిక AI విషయాల సారాంశం](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.te.png)
> స్కెచ్ నోట్ [Tomomi Imura](https://twitter.com/girlie_mac) ద్వారా
కృత్రిమ మేధస్సు కోసం ప్రయత్నం అనేది మనుషులు ప్రపంచాన్ని అర్థం చేసుకునే విధంగా జ్ఞానాన్ని వెతకడమే. కానీ దీన్ని ఎలా చేయాలి?
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/3)
AI ప్రారంభ దశల్లో, తెలివైన వ్యవస్థలను సృష్టించడానికి టాప్-డౌన్ విధానం (మునుపటి పాఠంలో చర్చించబడింది) ప్రాచుర్యం పొందింది. ఆలోచన ఏమిటంటే, మనుషుల నుండి జ్ఞానాన్ని యంత్రం చదవగల రూపంలోకి తీసుకుని, దానిని ఆటోమేటిక్‌గా సమస్యలను పరిష్కరించడానికి ఉపయోగించడం. ఈ విధానం రెండు పెద్ద ఆలోచనలపై ఆధారపడి ఉంది:
* జ్ఞాన ప్రాతినిధ్యం
* తర్కం
## జ్ఞాన ప్రాతినిధ్యం
సాంబాలిక AIలో ఒక ముఖ్యమైన భావన **జ్ఞానం**. జ్ఞానాన్ని *సమాచారం* లేదా *డేటా* నుండి వేరుచేసుకోవడం ముఖ్యం. ఉదాహరణకు, పుస్తకాలు జ్ఞానం కలిగి ఉంటాయని చెప్పవచ్చు, ఎందుకంటే పుస్తకాలను చదివి నిపుణులు అవ్వవచ్చు. కానీ పుస్తకాల్లో ఉన్నది వాస్తవానికి *డేటా* అని పిలవబడుతుంది, పుస్తకాలను చదివి ఆ డేటాను మన ప్రపంచ మోడల్‌లోకి సమీకరించడం ద్వారా ఆ డేటాను జ్ఞానంగా మార్చుకుంటాము.
> ✅ **జ్ఞానం** అనేది మన తలలో ఉండే, ప్రపంచాన్ని మనం అర్థం చేసుకునే విధానాన్ని ప్రతిబింబించే విషయం. ఇది ఒక క్రియాశీల **అధ్యయన** ప్రక్రియ ద్వారా పొందబడుతుంది, అందులో మనం పొందే సమాచారాన్ని మన ప్రపంచ మోడల్‌లోకి సమీకరిస్తాము.
చాలా సార్లు, మనం జ్ఞానాన్ని ఖచ్చితంగా నిర్వచించము, కానీ దాన్ని ఇతర సంబంధిత భావనలతో [DIKW పిరమిడ్](https://en.wikipedia.org/wiki/DIKW_pyramid) ద్వారా సరిపోల్చుకుంటాము. ఇందులో ఈ భావనలు ఉంటాయి:
* **డేటా** అనేది భౌతిక మాధ్యమాలలో ప్రాతినిధ్యం వహిస్తుంది, ఉదాహరణకు వ్రాసిన పాఠ్యం లేదా మాట్లాడిన మాటలు. డేటా మనుషుల నుండి స్వతంత్రంగా ఉంటుంది మరియు వ్యక్తుల మధ్య పంచుకోవచ్చు.
* **సమాచారం** అనేది మన తలలో డేటాను ఎలా అర్థం చేసుకుంటామో. ఉదాహరణకు, *కంప్యూటర్* అనే పదం విని, దాని గురించి మనకు కొంత అవగాహన ఉంటుంది.
* **జ్ఞానం** అనేది సమాచారాన్ని మన ప్రపంచ మోడల్‌లోకి సమీకరించడం. ఉదాహరణకు, కంప్యూటర్ అంటే ఏమిటి తెలుసుకున్న తర్వాత, అది ఎలా పనిచేస్తుంది, ధర ఎంత, దానిని ఏం కోసం ఉపయోగించవచ్చు అనే ఆలోచనలు కలుగుతాయి. ఈ సంబంధిత భావనల నెట్‌వర్క్ మన జ్ఞానాన్ని ఏర్పరుస్తుంది.
* **ప్రజ్ఞ** అనేది మన ప్రపంచం గురించి మరొక స్థాయి అవగాహన, ఇది *మెటా-జ్ఞానం* ను సూచిస్తుంది, అంటే జ్ఞానాన్ని ఎప్పుడు మరియు ఎలా ఉపయోగించాలో తెలియజేస్తుంది.
<img src="../../../../translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.te.png" width="30%"/>
*చిత్రం [వికీపీడియా నుండి](https://commons.wikimedia.org/w/index.php?curid=37705247), Longlivetheux - స్వంత పని, CC BY-SA 4.0*
కాబట్టి, **జ్ఞాన ప్రాతినిధ్యం** సమస్య అనేది కంప్యూటర్‌లో జ్ఞానాన్ని డేటా రూపంలో సమర్థవంతంగా ప్రాతినిధ్యం చేయడం, దాన్ని ఆటోమేటిక్‌గా ఉపయోగించుకునేలా చేయడం. దీన్ని ఒక స్పెక్ట్రమ్‌గా చూడవచ్చు:
![జ్ఞాన ప్రాతినిధ్యం స్పెక్ట్రమ్](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.te.png)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) ద్వారా
* ఎడమవైపు, కంప్యూటర్లు సమర్థవంతంగా ఉపయోగించగల చాలా సరళమైన జ్ఞాన ప్రాతినిధ్య రకాలు ఉంటాయి. అత్యంత సరళమైనది అల్గోరిథమిక్, అంటే జ్ఞానం కంప్యూటర్ ప్రోగ్రామ్ ద్వారా ప్రాతినిధ్యం చేయబడుతుంది. ఇది సరళమైనది కానీ సరైన మార్గం కాదు, ఎందుకంటే ఇది సడలింపు లేదు. మన తలలోని జ్ఞానం తరచుగా అల్గోరిథమిక్ కాదు.
* కుడివైపు, సహజ పాఠ్యం వంటి ప్రాతినిధ్యాలు ఉంటాయి. ఇవి అత్యంత శక్తివంతమైనవి, కానీ ఆటోమేటిక్ తర్కానికి ఉపయోగపడవు.
> ✅ మీ తలలో జ్ఞానాన్ని ఎలా ప్రాతినిధ్యం చేస్తారు, దాన్ని నోట్స్‌గా మార్చేటప్పుడు ఏ విధమైన ఫార్మాట్ మీకు retentionకి సహాయపడుతుంది అని ఒక నిమిషం ఆలోచించండి.
## కంప్యూటర్ జ్ఞాన ప్రాతినిధ్యాలను వర్గీకరించడం
వివిధ కంప్యూటర్ జ్ఞాన ప్రాతినిధ్య పద్ధతులను ఈ కేటగిరీలుగా వర్గీకరించవచ్చు:
* **నెట్‌వర్క్ ప్రాతినిధ్యాలు** మన తలలో ఉన్న సంబంధిత భావనల నెట్‌వర్క్ ఆధారంగా ఉంటాయి. మనం అదే నెట్‌వర్క్‌ను కంప్యూటర్‌లో గ్రాఫ్‌గా పునరుత్పత్తి చేయవచ్చు - దీనిని **సెమాంటిక్ నెట్‌వర్క్** అంటారు.
1. **ఆబ్జెక్ట్-అట్రిబ్యూట్-వాల్యూ త్రిపుట్లు** లేదా **అట్రిబ్యూట్-వాల్యూ జంటలు**. గ్రాఫ్‌ను కంప్యూటర్‌లో నోడ్స్ మరియు ఎడ్జెస్ జాబితాగా ప్రాతినిధ్యం చేయవచ్చు, కాబట్టి సెమాంటిక్ నెట్‌వర్క్‌ను ఆబ్జెక్టులు, అట్రిబ్యూట్లు, విలువలతో కూడిన త్రిపుట్ల జాబితాగా ప్రాతినిధ్యం చేయవచ్చు. ఉదాహరణకు, ప్రోగ్రామింగ్ భాషల గురించి ఈ క్రింది త్రిపుట్లు ఉంటాయి:
Object | Attribute | Value
-------|-----------|------
Python | is | Untyped-Language
Python | invented-by | Guido van Rossum
Python | block-syntax | indentation
Untyped-Language | doesn't have | type definitions
> ✅ త్రిపుట్లు ఇతర రకాల జ్ఞానాన్ని ఎలా ప్రాతినిధ్యం చేయగలవో ఆలోచించండి.
2. **హైరార్కికల్ ప్రాతినిధ్యాలు** మన తలలో తరచుగా వస్తువుల హైరార్కీని సృష్టిస్తామని సూచిస్తాయి. ఉదాహరణకు, కెనరీ పక్షి అని మనకు తెలుసు, అన్ని పక్షులకు రెక్కలు ఉంటాయి. కెనరీ సాధారణంగా ఏ రంగులో ఉంటుంది, దాని ఎగరడం వేగం ఎంత అనే ఆలోచనలు కూడా మనకు ఉంటాయి.
- **ఫ్రేమ్ ప్రాతినిధ్యం** ప్రతి వస్తువు లేదా వస్తువుల తరగతిని **ఫ్రేమ్**గా ప్రాతినిధ్యం చేస్తుంది, ఇందులో **స్లాట్లు** ఉంటాయి. స్లాట్లకు డిఫాల్ట్ విలువలు, విలువ పరిమితులు లేదా విలువ పొందడానికి కాల్ చేయగల ప్రొసీజర్లు ఉంటాయి. అన్ని ఫ్రేమ్‌లు ఒక హైరార్కీని ఏర్పరుస్తాయి, ఇది ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ భాషలలోని ఆబ్జెక్ట్ హైరార్కీకి సమానంగా ఉంటుంది.
- **సినారియోలు** సమయానుకూలంగా విస్తరించగల సంక్లిష్ట పరిస్థితులను ప్రాతినిధ్యం చేసే ప్రత్యేక రకమైన ఫ్రేమ్‌లు.
**Python**
Slot | Value | Default value | Interval |
-----|-------|---------------|----------|
Name | Python | | |
Is-A | Untyped-Language | | |
Variable Case | | CamelCase | |
Program Length | | | 5-5000 lines |
Block Syntax | Indent | | |
3. **ప్రొసీజరల్ ప్రాతినిధ్యాలు** ఒక నిర్దిష్ట పరిస్థితి సంభవించినప్పుడు అమలు చేయగల చర్యల జాబితాగా జ్ఞానాన్ని ప్రాతినిధ్యం చేస్తాయి.
- ప్రొడక్షన్ రూల్స్ అనేవి if-then స్టేట్మెంట్లు, ఇవి తర్కాన్ని సులభతరం చేస్తాయి. ఉదాహరణకు, ఒక డాక్టర్ వద్ద ఒక నియమం ఉండవచ్చు: **IF** రోగికి అధిక జ్వరం లేదా రక్త పరీక్షలో C-రియాక్టివ్ ప్రోటీన్ అధికంగా ఉంటే **THEN** అతనికి ఇన్ఫ్లమేషన్ ఉంది. ఒక పరిస్థితి కనుగొనగానే, ఇన్ఫ్లమేషన్ గురించి తర్కం చేయవచ్చు, తదుపరి తర్కంలో ఉపయోగించవచ్చు.
- అల్గోరిథమ్స్ కూడా మరో రకమైన ప్రొసీజరల్ ప్రాతినిధ్యం, కానీ అవి జ్ఞాన ఆధారిత వ్యవస్థల్లో నేరుగా ఉపయోగించబడవు.
4. **లాజిక్** మొదట ఆరిస్టాటిల్ ప్రతిపాదించినది, ఇది సార్వత్రిక మానవ జ్ఞానాన్ని ప్రాతినిధ్యం చేయడానికి.
- ప్రెడికేట్ లాజిక్ గణిత సిద్ధాంతంగా చాలా సమృద్ధిగా ఉంటుంది, అందువల్ల దాని ఉపసమితి సాధారణంగా ఉపయోగిస్తారు, ఉదాహరణకు ప్రోలాగ్‌లో హార్న్ క్లాజులు.
- డిస్క్రిప్టివ్ లాజిక్ అనేది వస్తువుల హైరార్కీలను ప్రాతినిధ్యం చేసి తర్కం చేయడానికి ఉపయోగించే లాజిక్ వ్యవస్థల కుటుంబం, ఉదాహరణకు *సెమాంటిక్ వెబ్*.
## నిపుణుల వ్యవస్థలు
సాంబాలిక AI ప్రారంభ విజయాలలో ఒకటి **నిపుణుల వ్యవస్థలు** - కొన్ని పరిమిత సమస్యల పరిధిలో నిపుణులుగా వ్యవహరించే కంప్యూటర్ వ్యవస్థలు. ఇవి ఒక లేదా ఎక్కువ మానవ నిపుణుల నుండి తీసుకున్న **జ్ఞాన బేస్** ఆధారంగా ఉండి, దాని పై తర్కం చేసే **ఇన్ఫరెన్స్ ఇంజిన్** కలిగి ఉంటాయి.
![మానవ నిర్మాణం](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.te.png) | ![జ్ఞాన ఆధారిత వ్యవస్థ](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.te.png)
---------------------------------------------|------------------------------------------------
మానవ న్యూరల్ సిస్టమ్ సరళీకృత నిర్మాణం | జ్ఞాన ఆధారిత వ్యవస్థ నిర్మాణం
నిపుణుల వ్యవస్థలు మానవ తర్క వ్యవస్థలా నిర్మించబడ్డాయి, ఇందులో **తాత్కాలిక జ్ఞాపకం** మరియు **దీర్ఘకాలిక జ్ఞాపకం** ఉంటాయి. అలాగే, జ్ఞాన ఆధారిత వ్యవస్థల్లో ఈ భాగాలు ఉంటాయి:
* **సమస్య జ్ఞాపకం**: ప్రస్తుతం పరిష్కరించబడుతున్న సమస్య గురించి జ్ఞానం, ఉదాహరణకు రోగి ఉష్ణోగ్రత లేదా రక్తపోటు, ఇన్ఫ్లమేషన్ ఉందా లేదా. దీనిని **స్థిర జ్ఞానం** అంటారు, ఎందుకంటే ఇది సమస్య గురించి మనకు ఉన్న ఒక స్నాప్‌షాట్ - *సమస్య స్థితి*.
* **జ్ఞాన బేస్**: సమస్య పరిధి గురించి దీర్ఘకాలిక జ్ఞానం. ఇది మానవ నిపుణుల నుండి మాన్యువల్‌గా తీసుకుంటారు, మరియు ప్రతి సలహా సమయంలో మారదు. ఇది ఒక సమస్య స్థితి నుండి మరొకదానికి మారడానికి సహాయపడుతుంది, అందువల్ల దీనిని **డైనమిక్ జ్ఞానం** కూడా అంటారు.
* **ఇన్ఫరెన్స్ ఇంజిన్**: సమస్య స్థితి స్థలంలో శోధన ప్రక్రియను సమన్వయపరుస్తుంది, అవసరమైతే వినియోగదారుని ప్రశ్నలు అడుగుతుంది. ప్రతి స్థితికి వర్తించే సరైన నియమాలను కనుగొనడం బాధ్యత.
ఉదాహరణకు, ఒక జంతువును దాని శారీరక లక్షణాల ఆధారంగా గుర్తించే నిపుణుల వ్యవస్థను పరిశీలిద్దాం:
![AND-OR చెట్టు](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.te.png)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) ద్వారా
ఈ డయాగ్రామ్‌ను **AND-OR చెట్టు** అంటారు, ఇది ప్రొడక్షన్ రూల్స్ సెట్ యొక్క గ్రాఫికల్ ప్రాతినిధ్యం. నిపుణుల నుండి జ్ఞానం తీసుకోవడంలో చెట్టు గీయడం ప్రారంభంలో ఉపయోగకరం. కంప్యూటర్‌లో జ్ఞానాన్ని ప్రాతినిధ్యం చేయడానికి నియమాలను ఉపయోగించడం సౌకర్యవంతం:
```
IF the animal eats meat
OR (animal has sharp teeth
AND animal has claws
AND animal has forward-looking eyes
)
THEN the animal is a carnivore
```
ప్రతి నియమం ఎడమవైపు ఉన్న పరిస్థితి మరియు చర్య వాస్తవానికి ఆబ్జెక్ట్-అట్రిబ్యూట్-వాల్యూ (OAV) త్రిపుట్లు. **వర్కింగ్ మెమరీ** ప్రస్తుతం పరిష్కరించబడుతున్న సమస్యకు సంబంధించిన OAV త్రిపుట్లను కలిగి ఉంటుంది. **నియమాల ఇంజిన్** పరిస్థితి సంతృప్తి చెందే నియమాలను వెతుకుతుంది మరియు వాటిని వర్తింపజేస్తుంది, వర్కింగ్ మెమరీలో మరో త్రిపుట్ జోడిస్తుంది.
> ✅ మీకు ఇష్టమైన అంశంపై మీ స్వంత AND-OR చెట్టు వ్రాయండి!
### ముందుకు vs. వెనుకకు తర్కం
పై ప్రక్రియను **ముందుకు తర్కం** అంటారు. ఇది వర్కింగ్ మెమరీలో ఉన్న ప్రారంభ డేటాతో మొదలవుతుంది, తరువాత ఈ తర్కం లూప్‌ను అమలు చేస్తుంది:
1. లక్ష్య అట్రిబ్యూట్ వర్కింగ్ మెమరీలో ఉంటే - ఆపు మరియు ఫలితాన్ని ఇవ్వు
2. ప్రస్తుతం సంతృప్తి చెందుతున్న పరిస్థితి ఉన్న అన్ని నియమాలను వెతుకు - **సంఘర్షణ సెట్** పొందు
3. **సంఘర్షణ పరిష్కారం** చేయి - ఈ దశలో అమలు చేయవలసిన ఒక నియమాన్ని ఎంచుకో. వివిధ పరిష్కార విధానాలు ఉండవచ్చు:
- జ్ఞాన బేస్‌లో మొదటి వర్తించే నియమాన్ని ఎంచుకో
- యాదృచ్ఛిక నియమాన్ని ఎంచుకో
- *మరింత ప్రత్యేకమైన* నియమాన్ని ఎంచుకో, అంటే ఎల్ఎచ్ఎస్‌లో ఎక్కువ పరిస్థితులు తీరుస్తున్నది
4. ఎంచుకున్న నియమాన్ని వర్తింపజెయ్యి మరియు సమస్య స్థితిలో కొత్త జ్ఞానాన్ని చేర్చు
5. దశ 1 నుండి పునరావృతం చేయి
కానీ, కొన్ని సందర్భాల్లో సమస్య గురించి ఖాళీ జ్ఞానంతో మొదలుపెట్టి, తర్కానికి సహాయపడే ప్రశ్నలు అడగాలనుకోవచ్చు. ఉదాహరణకు, వైద్య నిర్ధారణలో, రోగిని పరీక్షించే ముందు అన్ని వైద్య పరీక్షలు చేయరు. నిర్ణయం తీసుకోవాల్సినప్పుడు పరీక్షలు చేస్తారు.
ఈ ప్రక్రియను **వెనుకకు తర్కం** ద్వారా మోడల్ చేయవచ్చు. ఇది **లక్ష్యం** ఆధారంగా నడుస్తుంది - మనం కనుగొనదలచిన అట్రిబ్యూట్ విలువ:
1. లక్ష్య విలువను ఇవ్వగల అన్ని నియమాలను ఎంచుకో (అంటే ఆ లక్ష్యం ఆర్హత ఉన్న నియమాలు) - సంఘర్షణ సెట్
2. ఆ అట్రిబ్యూట్‌కు నియమాలు లేకపోతే, లేదా వినియోగదారుని నుండి విలువ అడగాలని నియమం ఉంటే - అడుగు, లేకపోతే:
3. సంఘర్షణ పరిష్కార విధానంతో ఒక నియమాన్ని *హైపోథసిస్* గా ఎంచుకో - దాన్ని నిరూపించడానికి ప్రయత్నించు
4. ఆ నియమం ఎల్ఎచ్ఎస్‌లో ఉన్న అన్ని అట్రిబ్యూట్ల కోసం పునరావృతంగా ప్రక్రియను చేయి, వాటిని లక్ష్యాలుగా నిరూపించు
5. ఎక్కడైనా ప్రక్రియ విఫలమైతే - దశ 3లో మరో నియమాన్ని ఉపయోగించు
> ✅ ఏ సందర్భాల్లో ముందుకు తర్కం అనుకూలం? వెనుకకు తర్కం ఎప్పుడు మంచిది?
### నిపుణుల వ్యవస్థలను అమలు చేయడం
నిపుణుల వ్యవస్థలను వివిధ సాధనాలతో అమలు చేయవచ్చు:
* ఎత్తైన స్థాయి ప్రోగ్రామింగ్ భాషలో నేరుగా ప్రోగ్రామ్ చేయడం. ఇది ఉత్తమ ఆలోచన కాదు, ఎందుకంటే జ్ఞాన ఆధారిత వ్యవస్థలో జ్ఞానం మరియు తర్కం వేరు ఉండాలి, మరియు సమస్య పరిధి నిపుణుడు తర్క ప్రక్రియ వివరాలు తెలియకుండానే నియమాలు రాయగలగాలి.
* **నిపుణుల వ్యవస్థ షెల్** ఉపయోగించడం, అంటే జ్ఞాన ప్రాతినిధ్యం భాష ఉపయోగించి జ్ఞానాన్ని నింపడానికి ప్రత్యేకంగా రూపొందించిన వ్యవస్థ.
## ✍️ వ్యాయామం: జంతు తర్కం
ముందుకు మరియు వెనుకకు తర్కం నిపుణుల వ్యవస్థను అమలు చేసిన ఉదాహరణ కోసం [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) చూడండి.
> **గమనిక**: ఈ ఉదాహరణ చాలా సరళమైనది, మరియు నిపుణుల వ్యవస్థ ఎలా ఉంటుందో ఆలోచన ఇస్తుంది. మీరు ఇలాంటి వ్యవస్థను సృష్టించడం ప్రారంభించినప్పుడు, సుమారు 200+ నియ
- జ్ఞాన వివరణ కోసం XML ఆధారిత భాషల కుటుంబం: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language).
సెమాంటిక్ వెబ్‌లో ఒక ముఖ్యమైన భావన **ఆంటాలజీ**. ఇది ఒక సమస్య పరిధిని స్పష్టంగా నిర్వచించడానికి ఉపయోగించే ఫార్మల్ జ్ఞాన ప్రాతినిధ్యం. సులభమైన ఆంటాలజీ అంటే సమస్య పరిధిలోని వస్తువుల హైరార్కీ మాత్రమే కావచ్చు, కానీ క్లిష్టమైన ఆంటాలజీలు నిర్ధారణ కోసం ఉపయోగించే నియమాలను కూడా కలిగి ఉంటాయి.
సెమాంటిక్ వెబ్‌లో అన్ని ప్రాతినిధ్యాలు ట్రిప్లెట్లపై ఆధారపడి ఉంటాయి. ప్రతి వస్తువు మరియు ప్రతి సంబంధం ప్రత్యేకంగా URI ద్వారా గుర్తించబడతాయి. ఉదాహరణకు, ఈ AI పాఠ్యాంశం డిమిత్రి సోష్నికోవ్ 2022 జనవరి 1న అభివృద్ధి చేశారని చెప్పాలంటే, మనం ఉపయోగించగల ట్రిప్లెట్లు ఇవి:
<img src="../../../../translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.te.png" width="30%"/>
```
http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007”
http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com
```
> ✅ ఇక్కడ `http://www.example.com/terms/creation-date` మరియు `http://purl.org/dc/elements/1.1/creator` అనేవి *సృష్టికర్త* మరియు *సృష్టి తేదీ* భావాలను వ్యక్తం చేయడానికి ప్రసిద్ధి చెందిన, విశ్వవ్యాప్త URIలు.
మరింత క్లిష్టమైన సందర్భంలో, సృష్టికర్తల జాబితాను నిర్వచించాలంటే, RDFలో నిర్వచించిన కొన్ని డేటా నిర్మాణాలను ఉపయోగించవచ్చు.
<img src="../../../../translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.te.png" width="40%"/>
> పై చిత్రాలు [డిమిత్రి సోష్నికోవ్](http://soshnikov.com) చేత రూపొందించబడ్డవి
సెమాంటిక్ వెబ్ నిర్మాణం కొంతమేర ఆలస్యం అయినది, ఎందుకంటే సెర్చ్ ఇంజిన్లు మరియు సహజ భాషా ప్రాసెసింగ్ సాంకేతికతలు టెక్స్ట్ నుండి నిర్మిత డేటాను తీయగలవు. అయినప్పటికీ, కొన్ని రంగాలలో ఆంటాలజీలు మరియు జ్ఞాన భాండారాలను నిర్వహించడానికి గణనీయమైన ప్రయత్నాలు కొనసాగుతున్నాయి. కొన్ని ప్రాజెక్టులు:
* [WikiData](https://wikidata.org/) అనేది వికీపీడియాతో సంబంధం ఉన్న యంత్రం చదవగలిగే జ్ఞాన భాండారాల సేకరణ. ఎక్కువ భాగం డేటా వికీపీడియా *ఇన్ఫోబాక్స్* నుండి సేకరించబడుతుంది, ఇవి వికీపీడియా పేజీలలోని నిర్మిత కంటెంట్ భాగాలు. మీరు [SPARQL](https://query.wikidata.org/) అనే ప్రత్యేక సెమాంటిక్ వెబ్ ప్రశ్న భాషలో వికిడేటాను ప్రశ్నించవచ్చు. ఇక్కడ మానవులలో అత్యంత ప్రాచుర్యం పొందిన కళ్ళ రంగులను చూపించే ఒక నమూనా ప్రశ్న ఉంది:
```sparql
#defaultView:BubbleChart
SELECT ?eyeColorLabel (COUNT(?human) AS ?count)
WHERE
{
?human wdt:P31 wd:Q5. # human instance-of homo sapiens
?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?eyeColorLabel
```
* [DBpedia](https://www.dbpedia.org/) కూడా WikiDataకు సమానమైన మరో ప్రయత్నం.
> ✅ మీ స్వంత ఆంటాలజీలు నిర్మించడానికి లేదా ఉన్న వాటిని తెరవడానికి, [Protégé](https://protege.stanford.edu/) అనే అద్భుతమైన విజువల్ ఆంటాలజీ ఎడిటర్ ఉంది. దాన్ని డౌన్లోడ్ చేసుకోండి లేదా ఆన్‌లైన్‌లో ఉపయోగించండి.
<img src="../../../../translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.te.png" width="70%"/>
*Web Protégé ఎడిటర్ రోమానోవ్ కుటుంబ ఆంటాలజీతో తెరవబడింది. స్క్రీన్‌షాట్ డిమిత్రి సోష్నికోవ్ చేత*
## ✍️ వ్యాయామం: కుటుంబ ఆంటాలజీ
సెమాంటిక్ వెబ్ సాంకేతికతలను ఉపయోగించి కుటుంబ సంబంధాలపై తర్కం చేయడం ఎలా అనేది చూడటానికి [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) చూడండి. సాధారణ GEDCOM ఫార్మాట్‌లో ఉన్న కుటుంబ వృక్షాన్ని మరియు కుటుంబ సంబంధాల ఆంటాలజీని తీసుకుని, ఇచ్చిన వ్యక్తుల సమూహానికి సంబంధించిన అన్ని కుటుంబ సంబంధాల గ్రాఫ్‌ను నిర్మిస్తాము.
## Microsoft Concept Graph
అధిక భాగం సందర్భాల్లో, ఆంటాలజీలు జాగ్రత్తగా చేతితో రూపొందించబడతాయి. అయితే, సహజ భాషా టెక్స్ట్‌ల నుండి కూడా ఆంటాలజీలను **మైన్** చేయవచ్చు.
మైక్రోసాఫ్ట్ రీసెర్చ్ చేసిన ఒక ప్రయత్నం [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste)గా ఫలితమైంది.
ఇది `is-a` వారసత్వ సంబంధం ఉపయోగించి సమూహీకరించిన పెద్ద ఎంటిటీ సేకరణ. "మైక్రోసాఫ్ట్ అంటే ఏమిటి?" అనే ప్రశ్నకు "0.87 సాదృశ్యంతో ఒక కంపెనీ, 0.75 సాదృశ్యంతో ఒక బ్రాండ్" వంటి సమాధానాలు ఇస్తుంది.
గ్రాఫ్ REST APIగా లేదా అన్ని ఎంటిటీ జంటలను జాబితా చేసే పెద్ద టెక్స్ట్ ఫైల్‌గా డౌన్లోడ్ చేసుకోవచ్చు.
## ✍️ వ్యాయామం: కాన్సెప్ట్ గ్రాఫ్
మైక్రోసాఫ్ట్ కాన్సెప్ట్ గ్రాఫ్‌ను ఉపయోగించి వార్తా వ్యాసాలను వివిధ వర్గాలుగా ఎలా సమూహీకరించవచ్చో చూడటానికి [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) నోట్‌బుక్ ప్రయత్నించండి.
## ముగింపు
ఈ రోజుల్లో, AIను తరచుగా *మిషన్ లెర్నింగ్* లేదా *న్యూరల్ నెట్‌వర్క్స్*కు సమానంగా భావిస్తారు. అయితే, మనుషులు స్పష్టమైన తర్కాన్ని కూడా ప్రదర్శిస్తారు, ఇది ప్రస్తుతం న్యూరల్ నెట్‌వర్క్స్ చేత నిర్వహించబడడం లేదు. వాస్తవ ప్రపంచ ప్రాజెక్టుల్లో, వివరణలు అవసరమైన లేదా వ్యవస్థ ప్రవర్తనను నియంత్రితంగా మార్చగలిగే పనుల కోసం స్పష్టమైన తర్కం ఇంకా ఉపయోగించబడుతుంది.
## 🚀 సవాలు
ఈ పాఠ్యాంశానికి సంబంధించిన కుటుంబ ఆంటాలజీ నోట్‌బుక్‌లో, ఇతర కుటుంబ సంబంధాలతో ప్రయోగం చేయవచ్చు. కుటుంబ వృక్షంలో వ్యక్తుల మధ్య కొత్త సంబంధాలను కనుగొనండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/4)
## సమీక్ష & స్వీయ అధ్యయనం
ఇంటర్నెట్‌లో పరిశోధన చేసి, మనుషులు జ్ఞానాన్ని కొలవడానికి మరియు కోడిఫై చేయడానికి ప్రయత్నించిన ప్రాంతాలను కనుగొనండి. బ్లూమ్ టాక్సోనమీని పరిశీలించండి, మరియు చరిత్రలోకి వెళ్ళి మనుషులు తమ ప్రపంచాన్ని ఎలా అర్థం చేసుకున్నారు తెలుసుకోండి. లినియస్ యొక్క జీవుల వర్గీకరణ పనిని అన్వేషించండి, మరియు డిమిత్రి మెండెలీవ్ రసాయన మూలకాలను వర్ణించడానికి మరియు సమూహీకరించడానికి ఎలా పద్ధతి రూపొందించాడో గమనించండి. మీరు మరెలాంటి ఆసక్తికర ఉదాహరణలను కనుగొంటారు?
**అసైన్‌మెంట్**: [ఆంటాలజీ నిర్మించండి](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7d097f7fda9166ead615e4c34552381b",
"translation_date": "2025-11-25T20:59:35+00:00",
"source_file": "lessons/2-Symbolic/README.md",
"language_code": "te"
}
-->
# జ్ఞాన ప్రాతినిధ్యం మరియు నిపుణుల వ్యవస్థలు
![సాంబాలిక AI విషయాల సారాంశం](../../../../translated_images/ai-symbolic.715a30cb610411a6.te.png)
> స్కెచ్ నోట్ [Tomomi Imura](https://twitter.com/girlie_mac) ద్వారా
కృత్రిమ మేధస్సు కోసం ప్రయత్నం అనేది మనుషులు ప్రపంచాన్ని అర్థం చేసుకునే విధంగా జ్ఞానాన్ని వెతకడమే. కానీ దీన్ని ఎలా చేయాలి?
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/3)
AI ప్రారంభ దశల్లో, తెలివైన వ్యవస్థలను సృష్టించడానికి టాప్-డౌన్ విధానం (మునుపటి పాఠంలో చర్చించబడింది) ప్రాచుర్యం పొందింది. ఆలోచన ఏమిటంటే, మనుషుల నుండి జ్ఞానాన్ని యంత్రం చదవగల రూపంలోకి తీసుకుని, దానిని ఆటోమేటిక్‌గా సమస్యలను పరిష్కరించడానికి ఉపయోగించడం. ఈ విధానం రెండు పెద్ద ఆలోచనలపై ఆధారపడి ఉంది:
* జ్ఞాన ప్రాతినిధ్యం
* తర్కం
## జ్ఞాన ప్రాతినిధ్యం
సాంబాలిక AIలో ఒక ముఖ్యమైన భావన **జ్ఞానం**. జ్ఞానాన్ని *సమాచారం* లేదా *డేటా* నుండి వేరుచేసుకోవడం ముఖ్యం. ఉదాహరణకు, పుస్తకాలు జ్ఞానం కలిగి ఉంటాయని చెప్పవచ్చు, ఎందుకంటే పుస్తకాలను చదివి నిపుణులు అవ్వవచ్చు. కానీ పుస్తకాల్లో ఉన్నది వాస్తవానికి *డేటా* అని పిలవబడుతుంది, పుస్తకాలను చదివి ఆ డేటాను మన ప్రపంచ మోడల్‌లోకి సమీకరించడం ద్వారా ఆ డేటాను జ్ఞానంగా మార్చుకుంటాము.
> ✅ **జ్ఞానం** అనేది మన తలలో ఉండే, ప్రపంచాన్ని మనం అర్థం చేసుకునే విధానాన్ని ప్రతిబింబించే విషయం. ఇది ఒక క్రియాశీల **అధ్యయన** ప్రక్రియ ద్వారా పొందబడుతుంది, అందులో మనం పొందే సమాచారాన్ని మన ప్రపంచ మోడల్‌లోకి సమీకరిస్తాము.
చాలా సార్లు, మనం జ్ఞానాన్ని ఖచ్చితంగా నిర్వచించము, కానీ దాన్ని ఇతర సంబంధిత భావనలతో [DIKW పిరమిడ్](https://en.wikipedia.org/wiki/DIKW_pyramid) ద్వారా సరిపోల్చుకుంటాము. ఇందులో ఈ భావనలు ఉంటాయి:
* **డేటా** అనేది భౌతిక మాధ్యమాలలో ప్రాతినిధ్యం వహిస్తుంది, ఉదాహరణకు వ్రాసిన పాఠ్యం లేదా మాట్లాడిన మాటలు. డేటా మనుషుల నుండి స్వతంత్రంగా ఉంటుంది మరియు వ్యక్తుల మధ్య పంచుకోవచ్చు.
* **సమాచారం** అనేది మన తలలో డేటాను ఎలా అర్థం చేసుకుంటామో. ఉదాహరణకు, *కంప్యూటర్* అనే పదం విని, దాని గురించి మనకు కొంత అవగాహన ఉంటుంది.
* **జ్ఞానం** అనేది సమాచారాన్ని మన ప్రపంచ మోడల్‌లోకి సమీకరించడం. ఉదాహరణకు, కంప్యూటర్ అంటే ఏమిటి తెలుసుకున్న తర్వాత, అది ఎలా పనిచేస్తుంది, ధర ఎంత, దానిని ఏం కోసం ఉపయోగించవచ్చు అనే ఆలోచనలు కలుగుతాయి. ఈ సంబంధిత భావనల నెట్‌వర్క్ మన జ్ఞానాన్ని ఏర్పరుస్తుంది.
* **ప్రజ్ఞ** అనేది మన ప్రపంచం గురించి మరొక స్థాయి అవగాహన, ఇది *మెటా-జ్ఞానం* ను సూచిస్తుంది, అంటే జ్ఞానాన్ని ఎప్పుడు మరియు ఎలా ఉపయోగించాలో తెలియజేస్తుంది.
<img src="../../../../translated_images/DIKW_Pyramid.94126f7d2bd8db5b.te.png" width="30%"/>
*చిత్రం [వికీపీడియా నుండి](https://commons.wikimedia.org/w/index.php?curid=37705247), Longlivetheux - స్వంత పని, CC BY-SA 4.0*
కాబట్టి, **జ్ఞాన ప్రాతినిధ్యం** సమస్య అనేది కంప్యూటర్‌లో జ్ఞానాన్ని డేటా రూపంలో సమర్థవంతంగా ప్రాతినిధ్యం చేయడం, దాన్ని ఆటోమేటిక్‌గా ఉపయోగించుకునేలా చేయడం. దీన్ని ఒక స్పెక్ట్రమ్‌గా చూడవచ్చు:
![జ్ఞాన ప్రాతినిధ్యం స్పెక్ట్రమ్](../../../../translated_images/knowledge-spectrum.b60df631852c0217.te.png)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) ద్వారా
* ఎడమవైపు, కంప్యూటర్లు సమర్థవంతంగా ఉపయోగించగల చాలా సరళమైన జ్ఞాన ప్రాతినిధ్య రకాలు ఉంటాయి. అత్యంత సరళమైనది అల్గోరిథమిక్, అంటే జ్ఞానం కంప్యూటర్ ప్రోగ్రామ్ ద్వారా ప్రాతినిధ్యం చేయబడుతుంది. ఇది సరళమైనది కానీ సరైన మార్గం కాదు, ఎందుకంటే ఇది సడలింపు లేదు. మన తలలోని జ్ఞానం తరచుగా అల్గోరిథమిక్ కాదు.
* కుడివైపు, సహజ పాఠ్యం వంటి ప్రాతినిధ్యాలు ఉంటాయి. ఇవి అత్యంత శక్తివంతమైనవి, కానీ ఆటోమేటిక్ తర్కానికి ఉపయోగపడవు.
> ✅ మీ తలలో జ్ఞానాన్ని ఎలా ప్రాతినిధ్యం చేస్తారు, దాన్ని నోట్స్‌గా మార్చేటప్పుడు ఏ విధమైన ఫార్మాట్ మీకు retentionకి సహాయపడుతుంది అని ఒక నిమిషం ఆలోచించండి.
## కంప్యూటర్ జ్ఞాన ప్రాతినిధ్యాలను వర్గీకరించడం
వివిధ కంప్యూటర్ జ్ఞాన ప్రాతినిధ్య పద్ధతులను ఈ కేటగిరీలుగా వర్గీకరించవచ్చు:
* **నెట్‌వర్క్ ప్రాతినిధ్యాలు** మన తలలో ఉన్న సంబంధిత భావనల నెట్‌వర్క్ ఆధారంగా ఉంటాయి. మనం అదే నెట్‌వర్క్‌ను కంప్యూటర్‌లో గ్రాఫ్‌గా పునరుత్పత్తి చేయవచ్చు - దీనిని **సెమాంటిక్ నెట్‌వర్క్** అంటారు.
1. **ఆబ్జెక్ట్-అట్రిబ్యూట్-వాల్యూ త్రిపుట్లు** లేదా **అట్రిబ్యూట్-వాల్యూ జంటలు**. గ్రాఫ్‌ను కంప్యూటర్‌లో నోడ్స్ మరియు ఎడ్జెస్ జాబితాగా ప్రాతినిధ్యం చేయవచ్చు, కాబట్టి సెమాంటిక్ నెట్‌వర్క్‌ను ఆబ్జెక్టులు, అట్రిబ్యూట్లు, విలువలతో కూడిన త్రిపుట్ల జాబితాగా ప్రాతినిధ్యం చేయవచ్చు. ఉదాహరణకు, ప్రోగ్రామింగ్ భాషల గురించి ఈ క్రింది త్రిపుట్లు ఉంటాయి:
Object | Attribute | Value
-------|-----------|------
Python | is | Untyped-Language
Python | invented-by | Guido van Rossum
Python | block-syntax | indentation
Untyped-Language | doesn't have | type definitions
> ✅ త్రిపుట్లు ఇతర రకాల జ్ఞానాన్ని ఎలా ప్రాతినిధ్యం చేయగలవో ఆలోచించండి.
2. **హైరార్కికల్ ప్రాతినిధ్యాలు** మన తలలో తరచుగా వస్తువుల హైరార్కీని సృష్టిస్తామని సూచిస్తాయి. ఉదాహరణకు, కెనరీ పక్షి అని మనకు తెలుసు, అన్ని పక్షులకు రెక్కలు ఉంటాయి. కెనరీ సాధారణంగా ఏ రంగులో ఉంటుంది, దాని ఎగరడం వేగం ఎంత అనే ఆలోచనలు కూడా మనకు ఉంటాయి.
- **ఫ్రేమ్ ప్రాతినిధ్యం** ప్రతి వస్తువు లేదా వస్తువుల తరగతిని **ఫ్రేమ్**గా ప్రాతినిధ్యం చేస్తుంది, ఇందులో **స్లాట్లు** ఉంటాయి. స్లాట్లకు డిఫాల్ట్ విలువలు, విలువ పరిమితులు లేదా విలువ పొందడానికి కాల్ చేయగల ప్రొసీజర్లు ఉంటాయి. అన్ని ఫ్రేమ్‌లు ఒక హైరార్కీని ఏర్పరుస్తాయి, ఇది ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ భాషలలోని ఆబ్జెక్ట్ హైరార్కీకి సమానంగా ఉంటుంది.
- **సినారియోలు** సమయానుకూలంగా విస్తరించగల సంక్లిష్ట పరిస్థితులను ప్రాతినిధ్యం చేసే ప్రత్యేక రకమైన ఫ్రేమ్‌లు.
**Python**
Slot | Value | Default value | Interval |
-----|-------|---------------|----------|
Name | Python | | |
Is-A | Untyped-Language | | |
Variable Case | | CamelCase | |
Program Length | | | 5-5000 lines |
Block Syntax | Indent | | |
3. **ప్రొసీజరల్ ప్రాతినిధ్యాలు** ఒక నిర్దిష్ట పరిస్థితి సంభవించినప్పుడు అమలు చేయగల చర్యల జాబితాగా జ్ఞానాన్ని ప్రాతినిధ్యం చేస్తాయి.
- ప్రొడక్షన్ రూల్స్ అనేవి if-then స్టేట్మెంట్లు, ఇవి తర్కాన్ని సులభతరం చేస్తాయి. ఉదాహరణకు, ఒక డాక్టర్ వద్ద ఒక నియమం ఉండవచ్చు: **IF** రోగికి అధిక జ్వరం లేదా రక్త పరీక్షలో C-రియాక్టివ్ ప్రోటీన్ అధికంగా ఉంటే **THEN** అతనికి ఇన్ఫ్లమేషన్ ఉంది. ఒక పరిస్థితి కనుగొనగానే, ఇన్ఫ్లమేషన్ గురించి తర్కం చేయవచ్చు, తదుపరి తర్కంలో ఉపయోగించవచ్చు.
- అల్గోరిథమ్స్ కూడా మరో రకమైన ప్రొసీజరల్ ప్రాతినిధ్యం, కానీ అవి జ్ఞాన ఆధారిత వ్యవస్థల్లో నేరుగా ఉపయోగించబడవు.
4. **లాజిక్** మొదట ఆరిస్టాటిల్ ప్రతిపాదించినది, ఇది సార్వత్రిక మానవ జ్ఞానాన్ని ప్రాతినిధ్యం చేయడానికి.
- ప్రెడికేట్ లాజిక్ గణిత సిద్ధాంతంగా చాలా సమృద్ధిగా ఉంటుంది, అందువల్ల దాని ఉపసమితి సాధారణంగా ఉపయోగిస్తారు, ఉదాహరణకు ప్రోలాగ్‌లో హార్న్ క్లాజులు.
- డిస్క్రిప్టివ్ లాజిక్ అనేది వస్తువుల హైరార్కీలను ప్రాతినిధ్యం చేసి తర్కం చేయడానికి ఉపయోగించే లాజిక్ వ్యవస్థల కుటుంబం, ఉదాహరణకు *సెమాంటిక్ వెబ్*.
## నిపుణుల వ్యవస్థలు
సాంబాలిక AI ప్రారంభ విజయాలలో ఒకటి **నిపుణుల వ్యవస్థలు** - కొన్ని పరిమిత సమస్యల పరిధిలో నిపుణులుగా వ్యవహరించే కంప్యూటర్ వ్యవస్థలు. ఇవి ఒక లేదా ఎక్కువ మానవ నిపుణుల నుండి తీసుకున్న **జ్ఞాన బేస్** ఆధారంగా ఉండి, దాని పై తర్కం చేసే **ఇన్ఫరెన్స్ ఇంజిన్** కలిగి ఉంటాయి.
![మానవ నిర్మాణం](../../../../translated_images/arch-human.5d4d35f1bba3ab1c.te.png) | ![జ్ఞాన ఆధారిత వ్యవస్థ](../../../../translated_images/arch-kbs.3ec5c150b09fa8da.te.png)
---------------------------------------------|------------------------------------------------
మానవ న్యూరల్ సిస్టమ్ సరళీకృత నిర్మాణం | జ్ఞాన ఆధారిత వ్యవస్థ నిర్మాణం
నిపుణుల వ్యవస్థలు మానవ తర్క వ్యవస్థలా నిర్మించబడ్డాయి, ఇందులో **తాత్కాలిక జ్ఞాపకం** మరియు **దీర్ఘకాలిక జ్ఞాపకం** ఉంటాయి. అలాగే, జ్ఞాన ఆధారిత వ్యవస్థల్లో ఈ భాగాలు ఉంటాయి:
* **సమస్య జ్ఞాపకం**: ప్రస్తుతం పరిష్కరించబడుతున్న సమస్య గురించి జ్ఞానం, ఉదాహరణకు రోగి ఉష్ణోగ్రత లేదా రక్తపోటు, ఇన్ఫ్లమేషన్ ఉందా లేదా. దీనిని **స్థిర జ్ఞానం** అంటారు, ఎందుకంటే ఇది సమస్య గురించి మనకు ఉన్న ఒక స్నాప్‌షాట్ - *సమస్య స్థితి*.
* **జ్ఞాన బేస్**: సమస్య పరిధి గురించి దీర్ఘకాలిక జ్ఞానం. ఇది మానవ నిపుణుల నుండి మాన్యువల్‌గా తీసుకుంటారు, మరియు ప్రతి సలహా సమయంలో మారదు. ఇది ఒక సమస్య స్థితి నుండి మరొకదానికి మారడానికి సహాయపడుతుంది, అందువల్ల దీనిని **డైనమిక్ జ్ఞానం** కూడా అంటారు.
* **ఇన్ఫరెన్స్ ఇంజిన్**: సమస్య స్థితి స్థలంలో శోధన ప్రక్రియను సమన్వయపరుస్తుంది, అవసరమైతే వినియోగదారుని ప్రశ్నలు అడుగుతుంది. ప్రతి స్థితికి వర్తించే సరైన నియమాలను కనుగొనడం బాధ్యత.
ఉదాహరణకు, ఒక జంతువును దాని శారీరక లక్షణాల ఆధారంగా గుర్తించే నిపుణుల వ్యవస్థను పరిశీలిద్దాం:
![AND-OR చెట్టు](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.te.png)
> చిత్రం [Dmitry Soshnikov](http://soshnikov.com) ద్వారా
ఈ డయాగ్రామ్‌ను **AND-OR చెట్టు** అంటారు, ఇది ప్రొడక్షన్ రూల్స్ సెట్ యొక్క గ్రాఫికల్ ప్రాతినిధ్యం. నిపుణుల నుండి జ్ఞానం తీసుకోవడంలో చెట్టు గీయడం ప్రారంభంలో ఉపయోగకరం. కంప్యూటర్‌లో జ్ఞానాన్ని ప్రాతినిధ్యం చేయడానికి నియమాలను ఉపయోగించడం సౌకర్యవంతం:
```
IF the animal eats meat
OR (animal has sharp teeth
AND animal has claws
AND animal has forward-looking eyes
)
THEN the animal is a carnivore
```
ప్రతి నియమం ఎడమవైపు ఉన్న పరిస్థితి మరియు చర్య వాస్తవానికి ఆబ్జెక్ట్-అట్రిబ్యూట్-వాల్యూ (OAV) త్రిపుట్లు. **వర్కింగ్ మెమరీ** ప్రస్తుతం పరిష్కరించబడుతున్న సమస్యకు సంబంధించిన OAV త్రిపుట్లను కలిగి ఉంటుంది. **నియమాల ఇంజిన్** పరిస్థితి సంతృప్తి చెందే నియమాలను వెతుకుతుంది మరియు వాటిని వర్తింపజేస్తుంది, వర్కింగ్ మెమరీలో మరో త్రిపుట్ జోడిస్తుంది.
> ✅ మీకు ఇష్టమైన అంశంపై మీ స్వంత AND-OR చెట్టు వ్రాయండి!
### ముందుకు vs. వెనుకకు తర్కం
పై ప్రక్రియను **ముందుకు తర్కం** అంటారు. ఇది వర్కింగ్ మెమరీలో ఉన్న ప్రారంభ డేటాతో మొదలవుతుంది, తరువాత ఈ తర్కం లూప్‌ను అమలు చేస్తుంది:
1. లక్ష్య అట్రిబ్యూట్ వర్కింగ్ మెమరీలో ఉంటే - ఆపు మరియు ఫలితాన్ని ఇవ్వు
2. ప్రస్తుతం సంతృప్తి చెందుతున్న పరిస్థితి ఉన్న అన్ని నియమాలను వెతుకు - **సంఘర్షణ సెట్** పొందు
3. **సంఘర్షణ పరిష్కారం** చేయి - ఈ దశలో అమలు చేయవలసిన ఒక నియమాన్ని ఎంచుకో. వివిధ పరిష్కార విధానాలు ఉండవచ్చు:
- జ్ఞాన బేస్‌లో మొదటి వర్తించే నియమాన్ని ఎంచుకో
- యాదృచ్ఛిక నియమాన్ని ఎంచుకో
- *మరింత ప్రత్యేకమైన* నియమాన్ని ఎంచుకో, అంటే ఎల్ఎచ్ఎస్‌లో ఎక్కువ పరిస్థితులు తీరుస్తున్నది
4. ఎంచుకున్న నియమాన్ని వర్తింపజెయ్యి మరియు సమస్య స్థితిలో కొత్త జ్ఞానాన్ని చేర్చు
5. దశ 1 నుండి పునరావృతం చేయి
కానీ, కొన్ని సందర్భాల్లో సమస్య గురించి ఖాళీ జ్ఞానంతో మొదలుపెట్టి, తర్కానికి సహాయపడే ప్రశ్నలు అడగాలనుకోవచ్చు. ఉదాహరణకు, వైద్య నిర్ధారణలో, రోగిని పరీక్షించే ముందు అన్ని వైద్య పరీక్షలు చేయరు. నిర్ణయం తీసుకోవాల్సినప్పుడు పరీక్షలు చేస్తారు.
ఈ ప్రక్రియను **వెనుకకు తర్కం** ద్వారా మోడల్ చేయవచ్చు. ఇది **లక్ష్యం** ఆధారంగా నడుస్తుంది - మనం కనుగొనదలచిన అట్రిబ్యూట్ విలువ:
1. లక్ష్య విలువను ఇవ్వగల అన్ని నియమాలను ఎంచుకో (అంటే ఆ లక్ష్యం ఆర్హత ఉన్న నియమాలు) - సంఘర్షణ సెట్
2. ఆ అట్రిబ్యూట్‌కు నియమాలు లేకపోతే, లేదా వినియోగదారుని నుండి విలువ అడగాలని నియమం ఉంటే - అడుగు, లేకపోతే:
3. సంఘర్షణ పరిష్కార విధానంతో ఒక నియమాన్ని *హైపోథసిస్* గా ఎంచుకో - దాన్ని నిరూపించడానికి ప్రయత్నించు
4. ఆ నియమం ఎల్ఎచ్ఎస్‌లో ఉన్న అన్ని అట్రిబ్యూట్ల కోసం పునరావృతంగా ప్రక్రియను చేయి, వాటిని లక్ష్యాలుగా నిరూపించు
5. ఎక్కడైనా ప్రక్రియ విఫలమైతే - దశ 3లో మరో నియమాన్ని ఉపయోగించు
> ✅ ఏ సందర్భాల్లో ముందుకు తర్కం అనుకూలం? వెనుకకు తర్కం ఎప్పుడు మంచిది?
### నిపుణుల వ్యవస్థలను అమలు చేయడం
నిపుణుల వ్యవస్థలను వివిధ సాధనాలతో అమలు చేయవచ్చు:
* ఎత్తైన స్థాయి ప్రోగ్రామింగ్ భాషలో నేరుగా ప్రోగ్రామ్ చేయడం. ఇది ఉత్తమ ఆలోచన కాదు, ఎందుకంటే జ్ఞాన ఆధారిత వ్యవస్థలో జ్ఞానం మరియు తర్కం వేరు ఉండాలి, మరియు సమస్య పరిధి నిపుణుడు తర్క ప్రక్రియ వివరాలు తెలియకుండానే నియమాలు రాయగలగాలి.
* **నిపుణుల వ్యవస్థ షెల్** ఉపయోగించడం, అంటే జ్ఞాన ప్రాతినిధ్యం భాష ఉపయోగించి జ్ఞానాన్ని నింపడానికి ప్రత్యేకంగా రూపొందించిన వ్యవస్థ.
## ✍️ వ్యాయామం: జంతు తర్కం
ముందుకు మరియు వెనుకకు తర్కం నిపుణుల వ్యవస్థను అమలు చేసిన ఉదాహరణ కోసం [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) చూడండి.
> **గమనిక**: ఈ ఉదాహరణ చాలా సరళమైనది, మరియు నిపుణుల వ్యవస్థ ఎలా ఉంటుందో ఆలోచన ఇస్తుంది. మీరు ఇలాంటి వ్యవస్థను సృష్టించడం ప్రారంభించినప్పుడు, సుమారు 200+ నియ
- జ్ఞాన వివరణ కోసం XML ఆధారిత భాషల కుటుంబం: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language).
సెమాంటిక్ వెబ్‌లో ఒక ముఖ్యమైన భావన **ఆంటాలజీ**. ఇది ఒక సమస్య పరిధిని స్పష్టంగా నిర్వచించడానికి ఉపయోగించే ఫార్మల్ జ్ఞాన ప్రాతినిధ్యం. సులభమైన ఆంటాలజీ అంటే సమస్య పరిధిలోని వస్తువుల హైరార్కీ మాత్రమే కావచ్చు, కానీ క్లిష్టమైన ఆంటాలజీలు నిర్ధారణ కోసం ఉపయోగించే నియమాలను కూడా కలిగి ఉంటాయి.
సెమాంటిక్ వెబ్‌లో అన్ని ప్రాతినిధ్యాలు ట్రిప్లెట్లపై ఆధారపడి ఉంటాయి. ప్రతి వస్తువు మరియు ప్రతి సంబంధం ప్రత్యేకంగా URI ద్వారా గుర్తించబడతాయి. ఉదాహరణకు, ఈ AI పాఠ్యాంశం డిమిత్రి సోష్నికోవ్ 2022 జనవరి 1న అభివృద్ధి చేశారని చెప్పాలంటే, మనం ఉపయోగించగల ట్రిప్లెట్లు ఇవి:
<img src="../../../../translated_images/triplet.4b9b332587593298.te.png" width="30%"/>
```
http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007”
http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com
```
> ✅ ఇక్కడ `http://www.example.com/terms/creation-date` మరియు `http://purl.org/dc/elements/1.1/creator` అనేవి *సృష్టికర్త* మరియు *సృష్టి తేదీ* భావాలను వ్యక్తం చేయడానికి ప్రసిద్ధి చెందిన, విశ్వవ్యాప్త URIలు.
మరింత క్లిష్టమైన సందర్భంలో, సృష్టికర్తల జాబితాను నిర్వచించాలంటే, RDFలో నిర్వచించిన కొన్ని డేటా నిర్మాణాలను ఉపయోగించవచ్చు.
<img src="../../../../translated_images/triplet-complex.32094972c7b4441b.te.png" width="40%"/>
> పై చిత్రాలు [డిమిత్రి సోష్నికోవ్](http://soshnikov.com) చేత రూపొందించబడ్డవి
సెమాంటిక్ వెబ్ నిర్మాణం కొంతమేర ఆలస్యం అయినది, ఎందుకంటే సెర్చ్ ఇంజిన్లు మరియు సహజ భాషా ప్రాసెసింగ్ సాంకేతికతలు టెక్స్ట్ నుండి నిర్మిత డేటాను తీయగలవు. అయినప్పటికీ, కొన్ని రంగాలలో ఆంటాలజీలు మరియు జ్ఞాన భాండారాలను నిర్వహించడానికి గణనీయమైన ప్రయత్నాలు కొనసాగుతున్నాయి. కొన్ని ప్రాజెక్టులు:
* [WikiData](https://wikidata.org/) అనేది వికీపీడియాతో సంబంధం ఉన్న యంత్రం చదవగలిగే జ్ఞాన భాండారాల సేకరణ. ఎక్కువ భాగం డేటా వికీపీడియా *ఇన్ఫోబాక్స్* నుండి సేకరించబడుతుంది, ఇవి వికీపీడియా పేజీలలోని నిర్మిత కంటెంట్ భాగాలు. మీరు [SPARQL](https://query.wikidata.org/) అనే ప్రత్యేక సెమాంటిక్ వెబ్ ప్రశ్న భాషలో వికిడేటాను ప్రశ్నించవచ్చు. ఇక్కడ మానవులలో అత్యంత ప్రాచుర్యం పొందిన కళ్ళ రంగులను చూపించే ఒక నమూనా ప్రశ్న ఉంది:
```sparql
#defaultView:BubbleChart
SELECT ?eyeColorLabel (COUNT(?human) AS ?count)
WHERE
{
?human wdt:P31 wd:Q5. # human instance-of homo sapiens
?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?eyeColorLabel
```
* [DBpedia](https://www.dbpedia.org/) కూడా WikiDataకు సమానమైన మరో ప్రయత్నం.
> ✅ మీ స్వంత ఆంటాలజీలు నిర్మించడానికి లేదా ఉన్న వాటిని తెరవడానికి, [Protégé](https://protege.stanford.edu/) అనే అద్భుతమైన విజువల్ ఆంటాలజీ ఎడిటర్ ఉంది. దాన్ని డౌన్లోడ్ చేసుకోండి లేదా ఆన్‌లైన్‌లో ఉపయోగించండి.
<img src="../../../../translated_images/protege.274177ceeac13b38.te.png" width="70%"/>
*Web Protégé ఎడిటర్ రోమానోవ్ కుటుంబ ఆంటాలజీతో తెరవబడింది. స్క్రీన్‌షాట్ డిమిత్రి సోష్నికోవ్ చేత*
## ✍️ వ్యాయామం: కుటుంబ ఆంటాలజీ
సెమాంటిక్ వెబ్ సాంకేతికతలను ఉపయోగించి కుటుంబ సంబంధాలపై తర్కం చేయడం ఎలా అనేది చూడటానికి [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) చూడండి. సాధారణ GEDCOM ఫార్మాట్‌లో ఉన్న కుటుంబ వృక్షాన్ని మరియు కుటుంబ సంబంధాల ఆంటాలజీని తీసుకుని, ఇచ్చిన వ్యక్తుల సమూహానికి సంబంధించిన అన్ని కుటుంబ సంబంధాల గ్రాఫ్‌ను నిర్మిస్తాము.
## Microsoft Concept Graph
అధిక భాగం సందర్భాల్లో, ఆంటాలజీలు జాగ్రత్తగా చేతితో రూపొందించబడతాయి. అయితే, సహజ భాషా టెక్స్ట్‌ల నుండి కూడా ఆంటాలజీలను **మైన్** చేయవచ్చు.
మైక్రోసాఫ్ట్ రీసెర్చ్ చేసిన ఒక ప్రయత్నం [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste)గా ఫలితమైంది.
ఇది `is-a` వారసత్వ సంబంధం ఉపయోగించి సమూహీకరించిన పెద్ద ఎంటిటీ సేకరణ. "మైక్రోసాఫ్ట్ అంటే ఏమిటి?" అనే ప్రశ్నకు "0.87 సాదృశ్యంతో ఒక కంపెనీ, 0.75 సాదృశ్యంతో ఒక బ్రాండ్" వంటి సమాధానాలు ఇస్తుంది.
గ్రాఫ్ REST APIగా లేదా అన్ని ఎంటిటీ జంటలను జాబితా చేసే పెద్ద టెక్స్ట్ ఫైల్‌గా డౌన్లోడ్ చేసుకోవచ్చు.
## ✍️ వ్యాయామం: కాన్సెప్ట్ గ్రాఫ్
మైక్రోసాఫ్ట్ కాన్సెప్ట్ గ్రాఫ్‌ను ఉపయోగించి వార్తా వ్యాసాలను వివిధ వర్గాలుగా ఎలా సమూహీకరించవచ్చో చూడటానికి [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) నోట్‌బుక్ ప్రయత్నించండి.
## ముగింపు
ఈ రోజుల్లో, AIను తరచుగా *మిషన్ లెర్నింగ్* లేదా *న్యూరల్ నెట్‌వర్క్స్*కు సమానంగా భావిస్తారు. అయితే, మనుషులు స్పష్టమైన తర్కాన్ని కూడా ప్రదర్శిస్తారు, ఇది ప్రస్తుతం న్యూరల్ నెట్‌వర్క్స్ చేత నిర్వహించబడడం లేదు. వాస్తవ ప్రపంచ ప్రాజెక్టుల్లో, వివరణలు అవసరమైన లేదా వ్యవస్థ ప్రవర్తనను నియంత్రితంగా మార్చగలిగే పనుల కోసం స్పష్టమైన తర్కం ఇంకా ఉపయోగించబడుతుంది.
## 🚀 సవాలు
ఈ పాఠ్యాంశానికి సంబంధించిన కుటుంబ ఆంటాలజీ నోట్‌బుక్‌లో, ఇతర కుటుంబ సంబంధాలతో ప్రయోగం చేయవచ్చు. కుటుంబ వృక్షంలో వ్యక్తుల మధ్య కొత్త సంబంధాలను కనుగొనండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/4)
## సమీక్ష & స్వీయ అధ్యయనం
ఇంటర్నెట్‌లో పరిశోధన చేసి, మనుషులు జ్ఞానాన్ని కొలవడానికి మరియు కోడిఫై చేయడానికి ప్రయత్నించిన ప్రాంతాలను కనుగొనండి. బ్లూమ్ టాక్సోనమీని పరిశీలించండి, మరియు చరిత్రలోకి వెళ్ళి మనుషులు తమ ప్రపంచాన్ని ఎలా అర్థం చేసుకున్నారు తెలుసుకోండి. లినియస్ యొక్క జీవుల వర్గీకరణ పనిని అన్వేషించండి, మరియు డిమిత్రి మెండెలీవ్ రసాయన మూలకాలను వర్ణించడానికి మరియు సమూహీకరించడానికి ఎలా పద్ధతి రూపొందించాడో గమనించండి. మీరు మరెలాంటి ఆసక్తికర ఉదాహరణలను కనుగొంటారు?
**అసైన్‌మెంట్**: [ఆంటాలజీ నిర్మించండి](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,108 +1,108 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "c34cbba802058b6fa267e1a294d4e510",
"translation_date": "2025-11-25T21:36:09+00:00",
"source_file": "lessons/3-NeuralNetworks/03-Perceptron/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం: పర్సెప్ట్రాన్
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/5)
ఆధునిక న్యూరల్ నెట్‌వర్క్‌లకు సమానమైన ఏదైనా మొదటి ప్రయత్నాలలో ఒకటి 1957లో కార్నెల్ ఏరోనాటికల్ ల్యాబొరేటరీలో ఫ్రాంక్ రోజెన్‌బ్లాట్ చేసినది. ఇది "మార్క్-1" అనే హార్డ్‌వేర్ అమలు, ఇది త్రిభుజాలు, చతురస్రాలు, వృత్తాలు వంటి ప్రాథమిక జ్యామితీయ ఆకారాలను గుర్తించడానికి రూపొందించబడింది.
| | |
|--------------|-----------|
|<img src='../../../../../translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.te.jpg' alt='Frank Rosenblatt'/> | <img src='../../../../../translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.te.jpg' alt='The Mark 1 Perceptron' />|
> చిత్రాలు [వికీపీడియా నుండి](https://en.wikipedia.org/wiki/Perceptron)
ఒక ఇన్‌పుట్ చిత్రం 20x20 ఫోటోసెల్ అర్రే ద్వారా ప్రాతినిధ్యం వహించబడింది, కాబట్టి న్యూరల్ నెట్‌వర్క్‌కు 400 ఇన్‌పుట్లు మరియు ఒక బైనరీ అవుట్‌పుట్ ఉండేది. ఒక సాదా నెట్‌వర్క్‌లో ఒక న్యూరాన్ ఉండేది, దీనిని **థ్రెషోల్డ్ లాజిక్ యూనిట్** అని కూడా పిలుస్తారు. న్యూరల్ నెట్‌వర్క్ వెయిట్లు ట్రైనింగ్ దశలో మాన్యువల్ సర్దుబాటు అవసరం ఉన్న పొటెన్షియోమీటర్ల్లా పనిచేశాయి.
> ✅ పొటెన్షియోమీటర్ అనేది సర్క్యూట్ యొక్క రెసిస్టెన్స్‌ను యూజర్ సర్దుబాటు చేసుకునే పరికరం.
> ఆ సమయంలో న్యూయార్క్ టైమ్స్ పర్సెప్ట్రాన్ గురించి ఇలా రాశింది: *నేవీ ఆశిస్తున్న ఎలక్ట్రానిక్ కంప్యూటర్ యొక్క ప్రారంభ రూపం, ఇది నడవగలదు, మాట్లాడగలదు, చూడగలదు, రాయగలదు, స్వయంగా పునరుత్పత్తి చేసుకోగలదు మరియు తన ఉనికిని తెలుసుకోగలదు.*
## పర్సెప్ట్రాన్ మోడల్
మన మోడల్‌లో N ఫీచర్లు ఉన్నాయని అనుకుందాం, అప్పుడు ఇన్‌పుట్ వెక్టర్ N పరిమాణం కలిగిన వెక్టర్ అవుతుంది. పర్సెప్ట్రాన్ అనేది **బైనరీ వర్గీకరణ** మోడల్, అంటే ఇది రెండు వర్గాల ఇన్‌పుట్ డేటాను వేరుచేయగలదు. ప్రతి ఇన్‌పుట్ వెక్టర్ x కోసం మన పర్సెప్ట్రాన్ అవుట్‌పుట్ +1 లేదా -1 అవుతుంది, వర్గం ఆధారంగా. అవుట్‌పుట్ క్రింది సూత్రం ద్వారా లెక్కించబడుతుంది:
y(x) = f(w<sup>T</sup>x)
ఇక్కడ f అనేది స్టెప్ యాక్టివేషన్ ఫంక్షన్
<!-- img src="http://www.sciweavers.org/tex2img.php?eq=f%28x%29%20%3D%20%5Cbegin%7Bcases%7D%0A%20%20%20%20%20%20%20%20%20%2B1%20%26%20x%20%5Cgeq%200%20%5C%5C%0A%20%20%20%20%20%20%20%20%20-1%20%26%20x%20%3C%200%0A%20%20%20%20%20%20%20%5Cend%7Bcases%7D%20%5C%5C%0A&bc=White&fc=Black&im=jpg&fs=12&ff=arev&edit=0" align="center" border="0" alt="f(x) = \begin{cases} +1 & x \geq 0 \\ -1 & x < 0 \end{cases} \\" width="154" height="50" / -->
<img src="../../../../../translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.te.png"/>
## పర్సెప్ట్రాన్ శిక్షణ
పర్సెప్ట్రాన్‌ను శిక్షణ ఇవ్వడానికి మనం ఎక్కువ భాగం విలువలను సరిగా వర్గీకరించే వెయిట్స్ వెక్టర్ w కనుగొనాలి, అంటే కనిష్ట **లోపం** (error) రావాలి. ఈ లోపం E ని **పర్సెప్ట్రాన్ ప్రమాణం** (criterion) క్రింద ఇలా నిర్వచిస్తారు:
E(w) = -&sum;w<sup>T</sup>x<sub>i</sub>t<sub>i</sub>
ఇక్కడ:
* సమాహారం తప్పు వర్గీకరణ కలిగిన శిక్షణ డేటా పాయింట్ల i పై తీసుకుంటారు
* x<sub>i</sub> ఇన్‌పుట్ డేటా, t<sub>i</sub> -1 లేదా +1, నెగటివ్ మరియు పాజిటివ్ ఉదాహరణలకు వరుసగా.
ఈ ప్రమాణం వెయిట్స్ w యొక్క ఫంక్షన్‌గా పరిగణించబడుతుంది, మరియు దీన్ని కనిష్టం చేయాలి. సాధారణంగా, **గ్రాడియెంట్ డిసెంట్** అనే పద్ధతి ఉపయోగిస్తారు, ఇందులో మనం ప్రారంభంలో కొన్ని ప్రాథమిక వెయిట్స్ w<sup>(0)</sup> తో మొదలుపెట్టి, ప్రతి దశలో క్రింది సూత్రం ప్రకారం వెయిట్స్‌ను నవీకరిస్తాము:
w<sup>(t+1)</sup> = w<sup>(t)</sup> - &eta;&nabla;E(w)
ఇక్కడ &eta; అనేది **లెర్నింగ్ రేట్**, &nabla;E(w) అనేది E యొక్క **గ్రాడియెంట్**. గ్రాడియెంట్ లెక్కించిన తర్వాత మనకు వస్తుంది:
w<sup>(t+1)</sup> = w<sup>(t)</sup> + &sum;&eta;x<sub>i</sub>t<sub>i</sub>
Python లో అల్గోరిథం ఇలా ఉంటుంది:
```python
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # బరువులను ప్రారంభించండి (దాదాపు యాదృచ్ఛికంగా :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # పర్సెప్ట్రాన్ అవుట్పుట్‌ను లెక్కించండి
if z < 0: # సానుకూల ఉదాహరణను ప్రతికూలంగా వర్గీకరించారు
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # ప్రతికూల ఉదాహరణను సానుకూలంగా వర్గీకరించారు
weights = weights - eta*weights.shape
return weights
```
## ముగింపు
ఈ పాఠంలో మీరు పర్సెప్ట్రాన్ గురించి, ఇది ఒక బైనరీ వర్గీకరణ మోడల్ అని, మరియు వెయిట్స్ వెక్టర్ ఉపయోగించి దాన్ని ఎలా శిక్షణ ఇవ్వాలో నేర్చుకున్నారు.
## 🚀 సవాలు
మీరు మీ స్వంత పర్సెప్ట్రాన్ నిర్మించాలనుకుంటే, [Microsoft Learn లో ఈ ల్యాబ్](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) ప్రయత్నించండి, ఇది [Azure ML డిజైనర్](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) ఉపయోగిస్తుంది.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/6)
## సమీక్ష & స్వీయ అధ్యయనం
పర్సెప్ట్రాన్‌ను ఉపయోగించి ఒక చిన్న సమస్య మరియు వాస్తవ జీవిత సమస్యలను ఎలా పరిష్కరించవచ్చో చూడటానికి, మరియు నేర్చుకోవడం కొనసాగించడానికి - [Perceptron](Perceptron.ipynb) నోట్‌బుక్ చూడండి.
ఇంకా ఒక ఆసక్తికరమైన [పర్సెప్ట్రాన్ గురించి వ్యాసం](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) కూడా ఉంది.
## [అసైన్‌మెంట్](lab/README.md)
ఈ పాఠంలో, మేము బైనరీ వర్గీకరణ పనికి పర్సెప్ట్రాన్‌ను అమలు చేశాము, మరియు రెండు చేతితో వ్రాసిన అంకెల మధ్య వర్గీకరించడానికి ఉపయోగించాము. ఈ ల్యాబ్‌లో, మీరు అంకెల వర్గీకరణ సమస్యను పూర్తిగా పరిష్కరించాలి, అంటే ఇచ్చిన చిత్రానికి ఏ అంకె అత్యంత సంభావ్యంగా సరిపోతుందో నిర్ణయించాలి.
* [సూచనలు](lab/README.md)
* [నోట్‌బుక్](lab/PerceptronMultiClass.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "c34cbba802058b6fa267e1a294d4e510",
"translation_date": "2025-11-25T21:36:09+00:00",
"source_file": "lessons/3-NeuralNetworks/03-Perceptron/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం: పర్సెప్ట్రాన్
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/5)
ఆధునిక న్యూరల్ నెట్‌వర్క్‌లకు సమానమైన ఏదైనా మొదటి ప్రయత్నాలలో ఒకటి 1957లో కార్నెల్ ఏరోనాటికల్ ల్యాబొరేటరీలో ఫ్రాంక్ రోజెన్‌బ్లాట్ చేసినది. ఇది "మార్క్-1" అనే హార్డ్‌వేర్ అమలు, ఇది త్రిభుజాలు, చతురస్రాలు, వృత్తాలు వంటి ప్రాథమిక జ్యామితీయ ఆకారాలను గుర్తించడానికి రూపొందించబడింది.
| | |
|--------------|-----------|
|<img src='../../../../../translated_images/Rosenblatt-wikipedia.294821b285ac796d.te.jpg' alt='Frank Rosenblatt'/> | <img src='../../../../../translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9.te.jpg' alt='The Mark 1 Perceptron' />|
> చిత్రాలు [వికీపీడియా నుండి](https://en.wikipedia.org/wiki/Perceptron)
ఒక ఇన్‌పుట్ చిత్రం 20x20 ఫోటోసెల్ అర్రే ద్వారా ప్రాతినిధ్యం వహించబడింది, కాబట్టి న్యూరల్ నెట్‌వర్క్‌కు 400 ఇన్‌పుట్లు మరియు ఒక బైనరీ అవుట్‌పుట్ ఉండేది. ఒక సాదా నెట్‌వర్క్‌లో ఒక న్యూరాన్ ఉండేది, దీనిని **థ్రెషోల్డ్ లాజిక్ యూనిట్** అని కూడా పిలుస్తారు. న్యూరల్ నెట్‌వర్క్ వెయిట్లు ట్రైనింగ్ దశలో మాన్యువల్ సర్దుబాటు అవసరం ఉన్న పొటెన్షియోమీటర్ల్లా పనిచేశాయి.
> ✅ పొటెన్షియోమీటర్ అనేది సర్క్యూట్ యొక్క రెసిస్టెన్స్‌ను యూజర్ సర్దుబాటు చేసుకునే పరికరం.
> ఆ సమయంలో న్యూయార్క్ టైమ్స్ పర్సెప్ట్రాన్ గురించి ఇలా రాశింది: *నేవీ ఆశిస్తున్న ఎలక్ట్రానిక్ కంప్యూటర్ యొక్క ప్రారంభ రూపం, ఇది నడవగలదు, మాట్లాడగలదు, చూడగలదు, రాయగలదు, స్వయంగా పునరుత్పత్తి చేసుకోగలదు మరియు తన ఉనికిని తెలుసుకోగలదు.*
## పర్సెప్ట్రాన్ మోడల్
మన మోడల్‌లో N ఫీచర్లు ఉన్నాయని అనుకుందాం, అప్పుడు ఇన్‌పుట్ వెక్టర్ N పరిమాణం కలిగిన వెక్టర్ అవుతుంది. పర్సెప్ట్రాన్ అనేది **బైనరీ వర్గీకరణ** మోడల్, అంటే ఇది రెండు వర్గాల ఇన్‌పుట్ డేటాను వేరుచేయగలదు. ప్రతి ఇన్‌పుట్ వెక్టర్ x కోసం మన పర్సెప్ట్రాన్ అవుట్‌పుట్ +1 లేదా -1 అవుతుంది, వర్గం ఆధారంగా. అవుట్‌పుట్ క్రింది సూత్రం ద్వారా లెక్కించబడుతుంది:
y(x) = f(w<sup>T</sup>x)
ఇక్కడ f అనేది స్టెప్ యాక్టివేషన్ ఫంక్షన్
<!-- img src="http://www.sciweavers.org/tex2img.php?eq=f%28x%29%20%3D%20%5Cbegin%7Bcases%7D%0A%20%20%20%20%20%20%20%20%20%2B1%20%26%20x%20%5Cgeq%200%20%5C%5C%0A%20%20%20%20%20%20%20%20%20-1%20%26%20x%20%3C%200%0A%20%20%20%20%20%20%20%5Cend%7Bcases%7D%20%5C%5C%0A&bc=White&fc=Black&im=jpg&fs=12&ff=arev&edit=0" align="center" border="0" alt="f(x) = \begin{cases} +1 & x \geq 0 \\ -1 & x < 0 \end{cases} \\" width="154" height="50" / -->
<img src="../../../../../translated_images/activation-func.b4924007c7ce7764.te.png"/>
## పర్సెప్ట్రాన్ శిక్షణ
పర్సెప్ట్రాన్‌ను శిక్షణ ఇవ్వడానికి మనం ఎక్కువ భాగం విలువలను సరిగా వర్గీకరించే వెయిట్స్ వెక్టర్ w కనుగొనాలి, అంటే కనిష్ట **లోపం** (error) రావాలి. ఈ లోపం E ని **పర్సెప్ట్రాన్ ప్రమాణం** (criterion) క్రింద ఇలా నిర్వచిస్తారు:
E(w) = -&sum;w<sup>T</sup>x<sub>i</sub>t<sub>i</sub>
ఇక్కడ:
* సమాహారం తప్పు వర్గీకరణ కలిగిన శిక్షణ డేటా పాయింట్ల i పై తీసుకుంటారు
* x<sub>i</sub> ఇన్‌పుట్ డేటా, t<sub>i</sub> -1 లేదా +1, నెగటివ్ మరియు పాజిటివ్ ఉదాహరణలకు వరుసగా.
ఈ ప్రమాణం వెయిట్స్ w యొక్క ఫంక్షన్‌గా పరిగణించబడుతుంది, మరియు దీన్ని కనిష్టం చేయాలి. సాధారణంగా, **గ్రాడియెంట్ డిసెంట్** అనే పద్ధతి ఉపయోగిస్తారు, ఇందులో మనం ప్రారంభంలో కొన్ని ప్రాథమిక వెయిట్స్ w<sup>(0)</sup> తో మొదలుపెట్టి, ప్రతి దశలో క్రింది సూత్రం ప్రకారం వెయిట్స్‌ను నవీకరిస్తాము:
w<sup>(t+1)</sup> = w<sup>(t)</sup> - &eta;&nabla;E(w)
ఇక్కడ &eta; అనేది **లెర్నింగ్ రేట్**, &nabla;E(w) అనేది E యొక్క **గ్రాడియెంట్**. గ్రాడియెంట్ లెక్కించిన తర్వాత మనకు వస్తుంది:
w<sup>(t+1)</sup> = w<sup>(t)</sup> + &sum;&eta;x<sub>i</sub>t<sub>i</sub>
Python లో అల్గోరిథం ఇలా ఉంటుంది:
```python
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # బరువులను ప్రారంభించండి (దాదాపు యాదృచ్ఛికంగా :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # పర్సెప్ట్రాన్ అవుట్పుట్‌ను లెక్కించండి
if z < 0: # సానుకూల ఉదాహరణను ప్రతికూలంగా వర్గీకరించారు
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # ప్రతికూల ఉదాహరణను సానుకూలంగా వర్గీకరించారు
weights = weights - eta*weights.shape
return weights
```
## ముగింపు
ఈ పాఠంలో మీరు పర్సెప్ట్రాన్ గురించి, ఇది ఒక బైనరీ వర్గీకరణ మోడల్ అని, మరియు వెయిట్స్ వెక్టర్ ఉపయోగించి దాన్ని ఎలా శిక్షణ ఇవ్వాలో నేర్చుకున్నారు.
## 🚀 సవాలు
మీరు మీ స్వంత పర్సెప్ట్రాన్ నిర్మించాలనుకుంటే, [Microsoft Learn లో ఈ ల్యాబ్](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) ప్రయత్నించండి, ఇది [Azure ML డిజైనర్](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) ఉపయోగిస్తుంది.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/6)
## సమీక్ష & స్వీయ అధ్యయనం
పర్సెప్ట్రాన్‌ను ఉపయోగించి ఒక చిన్న సమస్య మరియు వాస్తవ జీవిత సమస్యలను ఎలా పరిష్కరించవచ్చో చూడటానికి, మరియు నేర్చుకోవడం కొనసాగించడానికి - [Perceptron](Perceptron.ipynb) నోట్‌బుక్ చూడండి.
ఇంకా ఒక ఆసక్తికరమైన [పర్సెప్ట్రాన్ గురించి వ్యాసం](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) కూడా ఉంది.
## [అసైన్‌మెంట్](lab/README.md)
ఈ పాఠంలో, మేము బైనరీ వర్గీకరణ పనికి పర్సెప్ట్రాన్‌ను అమలు చేశాము, మరియు రెండు చేతితో వ్రాసిన అంకెల మధ్య వర్గీకరించడానికి ఉపయోగించాము. ఈ ల్యాబ్‌లో, మీరు అంకెల వర్గీకరణ సమస్యను పూర్తిగా పరిష్కరించాలి, అంటే ఇచ్చిన చిత్రానికి ఏ అంకె అత్యంత సంభావ్యంగా సరిపోతుందో నిర్ణయించాలి.
* [సూచనలు](lab/README.md)
* [నోట్‌బుక్](lab/PerceptronMultiClass.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

View File

@ -1,102 +1,102 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "789d6c3fb6fc7948a470b33078a5983a",
"translation_date": "2025-11-25T21:39:33+00:00",
"source_file": "lessons/3-NeuralNetworks/04-OwnFramework/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం. మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్
మునుపటి విభాగంలో, మీరు అత్యంత సాదాసీదా న్యూరల్ నెట్‌వర్క్ మోడల్ - ఒక లేయర్డ్ పర్సెప్ట్రాన్, ఒక రేఖీయ రెండు-వర్గాల వర్గీకరణ మోడల్ గురించి నేర్చుకున్నారు.
ఈ విభాగంలో, మనం ఈ మోడల్‌ను మరింత సౌకర్యవంతమైన ఫ్రేమ్‌వర్క్‌గా విస్తరించబోతున్నాము, ఇది మనకు అనుమతిస్తుంది:
* రెండు-వర్గాల వర్గీకరణతో పాటు **బహు-వర్గ వర్గీకరణ** చేయడం
* వర్గీకరణతో పాటు **రెగ్రెషన్ సమస్యలను** పరిష్కరించడం
* రేఖీయంగా వేరుచేయలేని తరగతులను వేరుచేయడం
మనం పైన పేర్కొన్న విధంగా, వివిధ న్యూరల్ నెట్‌వర్క్ నిర్మాణాలను సృష్టించడానికి మన సొంత మాడ్యులర్ ఫ్రేమ్‌వర్క్‌ను Python లో అభివృద్ధి చేస్తాము.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/7)
## మెషీన్ లెర్నింగ్ యొక్క ఫార్మలైజేషన్
మెషీన్ లెర్నింగ్ సమస్యను ఫార్మలైజ్ చేయడం ప్రారంభిద్దాం. మనకు లేబుల్స్ **Y** ఉన్న శిక్షణ డేటాసెట్ **X** ఉందని ఊహించుకోండి, మరియు మనం అత్యంత ఖచ్చితమైన అంచనాలు చేయగల మోడల్ *f* ను నిర్మించాలి. అంచనాల నాణ్యతను **లాస్ ఫంక్షన్** &lagran; ద్వారా కొలుస్తారు. క్రింది లాస్ ఫంక్షన్లు తరచుగా ఉపయోగిస్తారు:
* రెగ్రెషన్ సమస్య కోసం, మనం ఒక సంఖ్యను అంచనా వేయాల్సినప్పుడు, మనం **అబ్సల్యూట్ ఎర్రర్** &sum;<sub>i</sub>|f(x<sup>(i)</sup>)-y<sup>(i)</sup>| లేదా **స్క్వేర్ ఎర్రర్** &sum;<sub>i</sub>(f(x<sup>(i)</sup>)-y<sup>(i)</sup>)<sup>2</sup> ఉపయోగించవచ్చు
* వర్గీకరణ కోసం, మనం **0-1 లాస్** (ఇది మోడల్ యొక్క **ఖచ్చితత్వం**కి సమానం), లేదా **లాజిస్టిక్ లాస్** ఉపయోగిస్తాము.
ఒక-లేయర్డ్ పర్సెప్ట్రాన్ కోసం, ఫంక్షన్ *f* ను రేఖీయ ఫంక్షన్ *f(x)=wx+b* గా నిర్వచించాము (ఇక్కడ *w* వెయిట్ మ్యాట్రిక్స్, *x* ఇన్‌పుట్ ఫీచర్ల వెక్టర్, మరియు *b* బైయాస్ వెక్టర్). వివిధ న్యూరల్ నెట్‌వర్క్ నిర్మాణాల కోసం, ఈ ఫంక్షన్ మరింత సంక్లిష్ట రూపం తీసుకోవచ్చు.
> వర్గీకరణ సందర్భంలో, తరచుగా నెట్‌వర్క్ అవుట్‌పుట్‌గా సంబంధిత తరగతుల ప్రాబబిలిటీలను పొందడం కోరుకుంటారు. ఏదైనా సంఖ్యలను ప్రాబబిలిటీలుగా మార్చడానికి (ఉదా: అవుట్‌పుట్‌ను నార్మలైజ్ చేయడానికి), మనం తరచుగా **softmax** ఫంక్షన్ &sigma; ఉపయోగిస్తాము, మరియు ఫంక్షన్ *f* అవుతుంది *f(x)=&sigma;(wx+b)*
పై *f* నిర్వచనంలో, *w* మరియు *b* ను **పారామీటర్లు** &theta;=⟨*w,b*⟩ అంటారు. డేటాసెట్ ⟨**X**,**Y**⟩ ఇచ్చినప్పుడు, మనం మొత్తం డేటాసెట్‌పై పొరపాటు మొత్తాన్ని పారామీటర్ల &theta; ఆధారంగా లెక్కించవచ్చు.
> ✅ **న్యూరల్ నెట్‌వర్క్ శిక్షణ లక్ష్యం పారామీటర్లను మార్చి పొరపాటును తగ్గించడం**
## గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్
ఫంక్షన్ ఆప్టిమైజేషన్‌కు ప్రసిద్ధ పద్ధతి **గ్రాడియెంట్ డిసెంట్**. ఆలోచన ఏమిటంటే, మనం లాస్ ఫంక్షన్ యొక్క డెరివేటివ్ (బహుమాణిక సందర్భంలో దీనిని **గ్రాడియెంట్** అంటారు) ను పారామీటర్ల పట్ల లెక్కించి, పొరపాటు తగ్గే దిశగా పారామీటర్లను మార్చవచ్చు. దీన్ని ఇలా ఫార్మలైజ్ చేయవచ్చు:
* పారామీటర్లను యాదృచ్ఛిక విలువలతో ప్రారంభించండి w<sup>(0)</sup>, b<sup>(0)</sup>
* క్రింది దశను అనేక సార్లు పునరావృతం చేయండి:
- w<sup>(i+1)</sup> = w<sup>(i)</sup>-&eta;&part;&lagran;/&part;w
- b<sup>(i+1)</sup> = b<sup>(i)</sup>-&eta;&part;&lagran;/&part;b
శిక్షణ సమయంలో, ఆప్టిమైజేషన్ దశలను మొత్తం డేటాసెట్‌ను పరిగణలోకి తీసుకుని లెక్కించాలి (లాస్ మొత్తం శిక్షణ నమూనాలపై సమంగా లెక్కించబడుతుంది). అయితే, వాస్తవ జీవితంలో మనం డేటాసెట్ చిన్న భాగాలుగా తీసుకుంటాము, వీటిని **మినీబ్యాచెస్** అంటారు, మరియు డేటా ఉపసమూహం ఆధారంగా గ్రాడియెంట్లను లెక్కిస్తాము. ప్రతి సారి యాదృచ్ఛికంగా ఉపసమూహం తీసుకోవడం వల్ల, ఈ పద్ధతిని **స్టోకాస్టిక్ గ్రాడియెంట్ డిసెంట్** (SGD) అంటారు.
## మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్లు మరియు బ్యాక్‌ప్రొపగేషన్
ఒక లేయర్డ్ నెట్‌వర్క్, మనం పైగా చూశాం, రేఖీయంగా వేరుచేయగల తరగతులను వర్గీకరించగలదు. మరింత సమృద్ధి మోడల్ నిర్మించడానికి, మనం నెట్‌వర్క్ యొక్క అనేక లేయర్లను కలపవచ్చు. గణితంగా అంటే ఫంక్షన్ *f* మరింత సంక్లిష్ట రూపం తీసుకుంటుంది, మరియు అనేక దశల్లో లెక్కించబడుతుంది:
* z<sub>1</sub>=w<sub>1</sub>x+b<sub>1</sub>
* z<sub>2</sub>=w<sub>2</sub>&alpha;(z<sub>1</sub>)+b<sub>2</sub>
* f = &sigma;(z<sub>2</sub>)
ఇక్కడ, &alpha; అనేది **నాన్-లీనియర్ యాక్టివేషన్ ఫంక్షన్**, &sigma; అనేది softmax ఫంక్షన్, మరియు పారామీటర్లు &theta;=<*w<sub>1</sub>,b<sub>1</sub>,w<sub>2</sub>,b<sub>2</sub>*>.
గ్రాడియెంట్ డిసెంట్ అల్గోరిథం అదే ఉంటుంది, కానీ గ్రాడియెంట్ల లెక్కింపు కష్టం అవుతుంది. చైన్ డిఫరెన్షియేషన్ నియమం ప్రకారం, మనం డెరివేటివ్స్ లెక్కించవచ్చు:
* &part;&lagran;/&part;w<sub>2</sub> = (&part;&lagran;/&part;&sigma;)(&part;&sigma;/&part;z<sub>2</sub>)(&part;z<sub>2</sub>/&part;w<sub>2</sub>)
* &part;&lagran;/&part;w<sub>1</sub> = (&part;&lagran;/&part;&sigma;)(&part;&sigma;/&part;z<sub>2</sub>)(&part;z<sub>2</sub>/&part;&alpha;)(&part;&alpha;/&part;z<sub>1</sub>)(&part;z<sub>1</sub>/&part;w<sub>1</sub>)
> ✅ చైన్ డిఫరెన్షియేషన్ నియమం పారామీటర్ల పట్ల లాస్ ఫంక్షన్ యొక్క డెరివేటివ్స్ లెక్కించడానికి ఉపయోగిస్తారు.
గమనించండి, ఈ అన్ని వ్యక్తీకరణల ఎడమవైపు భాగం ఒకటే ఉంటుంది, కాబట్టి మనం లాస్ ఫంక్షన్ నుండి "వెనుకకు" కంప్యూటేషనల్ గ్రాఫ్ ద్వారా డెరివేటివ్స్‌ను సమర్థవంతంగా లెక్కించవచ్చు. అందువల్ల, మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్ శిక్షణ పద్ధతిని **బ్యాక్‌ప్రొపగేషన్** లేదా 'బ్యాక్‌ప్రాప్' అంటారు.
<img alt="compute graph" src="../../../../../translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.te.png"/>
> TODO: చిత్రం మూలం
> ✅ మనం బ్యాక్‌ప్రాప్‌ను మన నోట్బుక్ ఉదాహరణలో మరింత వివరంగా చూడబోతున్నాము.
## ముగింపు
ఈ పాఠంలో, మనం మన సొంత న్యూరల్ నెట్‌వర్క్ లైబ్రరీని నిర్మించాము, మరియు దాన్ని సాదాసీదా రెండు-డైమెన్షనల్ వర్గీకరణ పనికి ఉపయోగించాము.
## 🚀 సవాలు
సహాయక నోట్బుక్‌లో, మీరు మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్లను నిర్మించడం మరియు శిక్షణ ఇవ్వడం కోసం మీ సొంత ఫ్రేమ్‌వర్క్‌ను అమలు చేస్తారు. ఆధునిక న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో మీరు వివరంగా చూడగలుగుతారు.
[OwnFramework](OwnFramework.ipynb) నోట్బుక్‌కు వెళ్లి దాన్ని పూర్తి చేయండి.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/8)
## సమీక్ష & స్వీయ అధ్యయనం
బ్యాక్‌ప్రొపగేషన్ అనేది AI మరియు ML లో సాధారణంగా ఉపయోగించే అల్గోరిథం, దీన్ని [మరింత వివరంగా](https://wikipedia.org/wiki/Backpropagation) అధ్యయనం చేయడం మంచిది.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు ఈ పాఠంలో నిర్మించిన ఫ్రేమ్‌వర్క్‌ను ఉపయోగించి MNIST చేతితో వ్రాసిన అంకెల వర్గీకరణను పరిష్కరించాల్సి ఉంటుంది.
* [సూచనలు](lab/README.md)
* [నోట్బుక్](lab/MyFW_MNIST.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "789d6c3fb6fc7948a470b33078a5983a",
"translation_date": "2025-11-25T21:39:33+00:00",
"source_file": "lessons/3-NeuralNetworks/04-OwnFramework/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం. మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్
మునుపటి విభాగంలో, మీరు అత్యంత సాదాసీదా న్యూరల్ నెట్‌వర్క్ మోడల్ - ఒక లేయర్డ్ పర్సెప్ట్రాన్, ఒక రేఖీయ రెండు-వర్గాల వర్గీకరణ మోడల్ గురించి నేర్చుకున్నారు.
ఈ విభాగంలో, మనం ఈ మోడల్‌ను మరింత సౌకర్యవంతమైన ఫ్రేమ్‌వర్క్‌గా విస్తరించబోతున్నాము, ఇది మనకు అనుమతిస్తుంది:
* రెండు-వర్గాల వర్గీకరణతో పాటు **బహు-వర్గ వర్గీకరణ** చేయడం
* వర్గీకరణతో పాటు **రెగ్రెషన్ సమస్యలను** పరిష్కరించడం
* రేఖీయంగా వేరుచేయలేని తరగతులను వేరుచేయడం
మనం పైన పేర్కొన్న విధంగా, వివిధ న్యూరల్ నెట్‌వర్క్ నిర్మాణాలను సృష్టించడానికి మన సొంత మాడ్యులర్ ఫ్రేమ్‌వర్క్‌ను Python లో అభివృద్ధి చేస్తాము.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/7)
## మెషీన్ లెర్నింగ్ యొక్క ఫార్మలైజేషన్
మెషీన్ లెర్నింగ్ సమస్యను ఫార్మలైజ్ చేయడం ప్రారంభిద్దాం. మనకు లేబుల్స్ **Y** ఉన్న శిక్షణ డేటాసెట్ **X** ఉందని ఊహించుకోండి, మరియు మనం అత్యంత ఖచ్చితమైన అంచనాలు చేయగల మోడల్ *f* ను నిర్మించాలి. అంచనాల నాణ్యతను **లాస్ ఫంక్షన్** &lagran; ద్వారా కొలుస్తారు. క్రింది లాస్ ఫంక్షన్లు తరచుగా ఉపయోగిస్తారు:
* రెగ్రెషన్ సమస్య కోసం, మనం ఒక సంఖ్యను అంచనా వేయాల్సినప్పుడు, మనం **అబ్సల్యూట్ ఎర్రర్** &sum;<sub>i</sub>|f(x<sup>(i)</sup>)-y<sup>(i)</sup>| లేదా **స్క్వేర్ ఎర్రర్** &sum;<sub>i</sub>(f(x<sup>(i)</sup>)-y<sup>(i)</sup>)<sup>2</sup> ఉపయోగించవచ్చు
* వర్గీకరణ కోసం, మనం **0-1 లాస్** (ఇది మోడల్ యొక్క **ఖచ్చితత్వం**కి సమానం), లేదా **లాజిస్టిక్ లాస్** ఉపయోగిస్తాము.
ఒక-లేయర్డ్ పర్సెప్ట్రాన్ కోసం, ఫంక్షన్ *f* ను రేఖీయ ఫంక్షన్ *f(x)=wx+b* గా నిర్వచించాము (ఇక్కడ *w* వెయిట్ మ్యాట్రిక్స్, *x* ఇన్‌పుట్ ఫీచర్ల వెక్టర్, మరియు *b* బైయాస్ వెక్టర్). వివిధ న్యూరల్ నెట్‌వర్క్ నిర్మాణాల కోసం, ఈ ఫంక్షన్ మరింత సంక్లిష్ట రూపం తీసుకోవచ్చు.
> వర్గీకరణ సందర్భంలో, తరచుగా నెట్‌వర్క్ అవుట్‌పుట్‌గా సంబంధిత తరగతుల ప్రాబబిలిటీలను పొందడం కోరుకుంటారు. ఏదైనా సంఖ్యలను ప్రాబబిలిటీలుగా మార్చడానికి (ఉదా: అవుట్‌పుట్‌ను నార్మలైజ్ చేయడానికి), మనం తరచుగా **softmax** ఫంక్షన్ &sigma; ఉపయోగిస్తాము, మరియు ఫంక్షన్ *f* అవుతుంది *f(x)=&sigma;(wx+b)*
పై *f* నిర్వచనంలో, *w* మరియు *b* ను **పారామీటర్లు** &theta;=⟨*w,b*⟩ అంటారు. డేటాసెట్ ⟨**X**,**Y**⟩ ఇచ్చినప్పుడు, మనం మొత్తం డేటాసెట్‌పై పొరపాటు మొత్తాన్ని పారామీటర్ల &theta; ఆధారంగా లెక్కించవచ్చు.
> ✅ **న్యూరల్ నెట్‌వర్క్ శిక్షణ లక్ష్యం పారామీటర్లను మార్చి పొరపాటును తగ్గించడం**
## గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్
ఫంక్షన్ ఆప్టిమైజేషన్‌కు ప్రసిద్ధ పద్ధతి **గ్రాడియెంట్ డిసెంట్**. ఆలోచన ఏమిటంటే, మనం లాస్ ఫంక్షన్ యొక్క డెరివేటివ్ (బహుమాణిక సందర్భంలో దీనిని **గ్రాడియెంట్** అంటారు) ను పారామీటర్ల పట్ల లెక్కించి, పొరపాటు తగ్గే దిశగా పారామీటర్లను మార్చవచ్చు. దీన్ని ఇలా ఫార్మలైజ్ చేయవచ్చు:
* పారామీటర్లను యాదృచ్ఛిక విలువలతో ప్రారంభించండి w<sup>(0)</sup>, b<sup>(0)</sup>
* క్రింది దశను అనేక సార్లు పునరావృతం చేయండి:
- w<sup>(i+1)</sup> = w<sup>(i)</sup>-&eta;&part;&lagran;/&part;w
- b<sup>(i+1)</sup> = b<sup>(i)</sup>-&eta;&part;&lagran;/&part;b
శిక్షణ సమయంలో, ఆప్టిమైజేషన్ దశలను మొత్తం డేటాసెట్‌ను పరిగణలోకి తీసుకుని లెక్కించాలి (లాస్ మొత్తం శిక్షణ నమూనాలపై సమంగా లెక్కించబడుతుంది). అయితే, వాస్తవ జీవితంలో మనం డేటాసెట్ చిన్న భాగాలుగా తీసుకుంటాము, వీటిని **మినీబ్యాచెస్** అంటారు, మరియు డేటా ఉపసమూహం ఆధారంగా గ్రాడియెంట్లను లెక్కిస్తాము. ప్రతి సారి యాదృచ్ఛికంగా ఉపసమూహం తీసుకోవడం వల్ల, ఈ పద్ధతిని **స్టోకాస్టిక్ గ్రాడియెంట్ డిసెంట్** (SGD) అంటారు.
## మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్లు మరియు బ్యాక్‌ప్రొపగేషన్
ఒక లేయర్డ్ నెట్‌వర్క్, మనం పైగా చూశాం, రేఖీయంగా వేరుచేయగల తరగతులను వర్గీకరించగలదు. మరింత సమృద్ధి మోడల్ నిర్మించడానికి, మనం నెట్‌వర్క్ యొక్క అనేక లేయర్లను కలపవచ్చు. గణితంగా అంటే ఫంక్షన్ *f* మరింత సంక్లిష్ట రూపం తీసుకుంటుంది, మరియు అనేక దశల్లో లెక్కించబడుతుంది:
* z<sub>1</sub>=w<sub>1</sub>x+b<sub>1</sub>
* z<sub>2</sub>=w<sub>2</sub>&alpha;(z<sub>1</sub>)+b<sub>2</sub>
* f = &sigma;(z<sub>2</sub>)
ఇక్కడ, &alpha; అనేది **నాన్-లీనియర్ యాక్టివేషన్ ఫంక్షన్**, &sigma; అనేది softmax ఫంక్షన్, మరియు పారామీటర్లు &theta;=<*w<sub>1</sub>,b<sub>1</sub>,w<sub>2</sub>,b<sub>2</sub>*>.
గ్రాడియెంట్ డిసెంట్ అల్గోరిథం అదే ఉంటుంది, కానీ గ్రాడియెంట్ల లెక్కింపు కష్టం అవుతుంది. చైన్ డిఫరెన్షియేషన్ నియమం ప్రకారం, మనం డెరివేటివ్స్ లెక్కించవచ్చు:
* &part;&lagran;/&part;w<sub>2</sub> = (&part;&lagran;/&part;&sigma;)(&part;&sigma;/&part;z<sub>2</sub>)(&part;z<sub>2</sub>/&part;w<sub>2</sub>)
* &part;&lagran;/&part;w<sub>1</sub> = (&part;&lagran;/&part;&sigma;)(&part;&sigma;/&part;z<sub>2</sub>)(&part;z<sub>2</sub>/&part;&alpha;)(&part;&alpha;/&part;z<sub>1</sub>)(&part;z<sub>1</sub>/&part;w<sub>1</sub>)
> ✅ చైన్ డిఫరెన్షియేషన్ నియమం పారామీటర్ల పట్ల లాస్ ఫంక్షన్ యొక్క డెరివేటివ్స్ లెక్కించడానికి ఉపయోగిస్తారు.
గమనించండి, ఈ అన్ని వ్యక్తీకరణల ఎడమవైపు భాగం ఒకటే ఉంటుంది, కాబట్టి మనం లాస్ ఫంక్షన్ నుండి "వెనుకకు" కంప్యూటేషనల్ గ్రాఫ్ ద్వారా డెరివేటివ్స్‌ను సమర్థవంతంగా లెక్కించవచ్చు. అందువల్ల, మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్ శిక్షణ పద్ధతిని **బ్యాక్‌ప్రొపగేషన్** లేదా 'బ్యాక్‌ప్రాప్' అంటారు.
<img alt="compute graph" src="../../../../../translated_images/ComputeGraphGrad.4626252c0de03507.te.png"/>
> TODO: చిత్రం మూలం
> ✅ మనం బ్యాక్‌ప్రాప్‌ను మన నోట్బుక్ ఉదాహరణలో మరింత వివరంగా చూడబోతున్నాము.
## ముగింపు
ఈ పాఠంలో, మనం మన సొంత న్యూరల్ నెట్‌వర్క్ లైబ్రరీని నిర్మించాము, మరియు దాన్ని సాదాసీదా రెండు-డైమెన్షనల్ వర్గీకరణ పనికి ఉపయోగించాము.
## 🚀 సవాలు
సహాయక నోట్బుక్‌లో, మీరు మల్టీ-లేయర్డ్ పర్సెప్ట్రాన్లను నిర్మించడం మరియు శిక్షణ ఇవ్వడం కోసం మీ సొంత ఫ్రేమ్‌వర్క్‌ను అమలు చేస్తారు. ఆధునిక న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో మీరు వివరంగా చూడగలుగుతారు.
[OwnFramework](OwnFramework.ipynb) నోట్బుక్‌కు వెళ్లి దాన్ని పూర్తి చేయండి.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/8)
## సమీక్ష & స్వీయ అధ్యయనం
బ్యాక్‌ప్రొపగేషన్ అనేది AI మరియు ML లో సాధారణంగా ఉపయోగించే అల్గోరిథం, దీన్ని [మరింత వివరంగా](https://wikipedia.org/wiki/Backpropagation) అధ్యయనం చేయడం మంచిది.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు ఈ పాఠంలో నిర్మించిన ఫ్రేమ్‌వర్క్‌ను ఉపయోగించి MNIST చేతితో వ్రాసిన అంకెల వర్గీకరణను పరిష్కరించాల్సి ఉంటుంది.
* [సూచనలు](lab/README.md)
* [నోట్బుక్](lab/MyFW_MNIST.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,136 +1,136 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ddd216f558a255260a9374008002c971",
"translation_date": "2025-11-25T21:45:30+00:00",
"source_file": "lessons/3-NeuralNetworks/05-Frameworks/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్ ఫ్రేమ్‌వర్క్స్
మనం ఇప్పటికే నేర్చుకున్నట్లుగా, న్యూరల్ నెట్‌వర్క్స్‌ను సమర్థవంతంగా శిక్షణ ఇవ్వడానికి రెండు విషయాలు చేయాలి:
* టెన్సార్లపై ఆపరేట్ చేయడం, ఉదాహరణకు గుణించడం, జోడించడం, మరియు సిగ్మాయిడ్ లేదా సాఫ్ట్‌మ్యాక్స్ వంటి కొన్ని ఫంక్షన్లను గణించడం
* గ్రాడియెంట్లను గణించడం, గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్ చేయడానికి
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/9)
`numpy` లైబ్రరీ మొదటి భాగాన్ని చేయగలిగినా, గ్రాడియెంట్లను గణించడానికి మాకు ఒక యంత్రాంగం అవసరం. [మా ఫ్రేమ్‌వర్క్](../04-OwnFramework/OwnFramework.ipynb) లో మేము గత సెక్షన్‌లో అభివృద్ధి చేసినట్లుగా, `backward` మెథడ్‌లో అన్ని డెరివేటివ్ ఫంక్షన్లను మాన్యువల్‌గా ప్రోగ్రామ్ చేయాల్సి వచ్చింది, ఇది బ్యాక్‌ప్రొపగేషన్ చేస్తుంది. Ideally, ఒక ఫ్రేమ్‌వర్క్ మాకు *ఏదైనా వ్యక్తీకరణ* యొక్క గ్రాడియెంట్లను గణించడానికి అవకాశం ఇవ్వాలి.
మరొక ముఖ్యమైన విషయం GPU లేదా [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) వంటి ఇతర ప్రత్యేక కంప్యూట్ యూనిట్లపై గణనలను చేయగలగడం. డీప్ న్యూరల్ నెట్‌వర్క్ శిక్షణకు *చాలా* గణనలు అవసరం, మరియు వాటిని GPUsపై సమాంతరంగా చేయగలగడం చాలా ముఖ్యం.
> ✅ 'parallelize' అనే పదం అనగా గణనలను అనేక పరికరాలపై పంపిణీ చేయడం.
ప్రస్తుతం, రెండు అత్యంత ప్రాచుర్యం పొందిన న్యూరల్ ఫ్రేమ్‌వర్క్స్: [TensorFlow](http://TensorFlow.org) మరియు [PyTorch](https://pytorch.org/). ఇవి రెండూ CPU మరియు GPU రెండింటిలో టెన్సార్లతో ఆపరేట్ చేయడానికి లో-లెవెల్ API అందిస్తాయి. లో-లెవెల్ API పై, ఉన్నత-స్థాయి APIలు కూడా ఉన్నాయి, అవి వరుసగా [Keras](https://keras.io/) మరియు [PyTorch Lightning](https://pytorchlightning.ai/).
లో-లెవెల్ API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/)
--------------|-------------------------------------|--------------------------------
ఉన్నత-స్థాయి API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/)
**లో-లెవెల్ APIs** రెండు ఫ్రేమ్‌వర్క్స్‌లోనూ మీరు **కంప్యూటేషనల్ గ్రాఫ్‌లు** నిర్మించడానికి అనుమతిస్తాయి. ఈ గ్రాఫ్ ఇచ్చిన ఇన్‌పుట్ పారామీటర్లతో అవుట్‌పుట్ (సాధారణంగా లాస్ ఫంక్షన్) ఎలా గణించాలో నిర్వచిస్తుంది, మరియు GPU అందుబాటులో ఉంటే అక్కడ గణనకు పంపవచ్చు. ఈ కంప్యూటేషనల్ గ్రాఫ్‌ను డిఫరెన్షియేట్ చేసి గ్రాడియెంట్లను గణించే ఫంక్షన్లు ఉన్నాయి, వాటిని మోడల్ పారామీటర్లను ఆప్టిమైజ్ చేయడానికి ఉపయోగించవచ్చు.
**ఉన్నత-స్థాయి APIs** న్యూరల్ నెట్‌వర్క్స్‌ను **లేయర్ల సీక్వెన్స్**గా పరిగణించి, చాలా న్యూరల్ నెట్‌వర్క్స్ నిర్మాణాన్ని సులభతరం చేస్తాయి. మోడల్ శిక్షణ సాధారణంగా డేటాను సిద్ధం చేసి, `fit` ఫంక్షన్‌ను పిలవడం ద్వారా జరుగుతుంది.
ఉన్నత-స్థాయి APIలు సాధారణ న్యూరల్ నెట్‌వర్క్స్‌ను త్వరగా నిర్మించడానికి అనుమతిస్తాయి, చాలా వివరాల గురించి ఆందోళన చెందకుండా. అదే సమయంలో, లో-లెవెల్ API శిక్షణ ప్రక్రియపై మరింత నియంత్రణ ఇస్తుంది, కాబట్టి కొత్త న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్లతో పని చేసే పరిశోధనలో ఎక్కువగా ఉపయోగిస్తారు.
మరియు మీరు రెండు APIలను కలిసి ఉపయోగించవచ్చు, ఉదాహరణకు, మీ స్వంత నెట్‌వర్క్ లేయర్ ఆర్కిటెక్చర్‌ను లో-లెవెల్ APIతో అభివృద్ధి చేసి, దాన్ని ఉన్నత-స్థాయి APIతో నిర్మించిన పెద్ద నెట్‌వర్క్‌లో ఉపయోగించవచ్చు. లేదా ఉన్నత-స్థాయి APIతో లేయర్ల సీక్వెన్స్‌గా నెట్‌వర్క్ నిర్వచించి, మీ స్వంత లో-లెవెల్ శిక్షణ లూప్‌తో ఆప్టిమైజేషన్ చేయవచ్చు. రెండు APIలు ఒకే ప్రాథమిక భావనలను ఉపయోగిస్తాయి మరియు కలిసి బాగా పనిచేయడానికి రూపొందించబడ్డాయి.
## నేర్చుకోవడం
ఈ కోర్సులో, మేము ఎక్కువ భాగం కంటెంట్‌ను PyTorch మరియు TensorFlow రెండింటికీ అందిస్తున్నాము. మీరు మీ ఇష్టమైన ఫ్రేమ్‌వర్క్‌ను ఎంచుకుని సంబంధిత నోట్‌బుక్స్ మాత్రమే చూడవచ్చు. మీరు ఏ ఫ్రేమ్‌వర్క్ ఎంచుకోవాలో తెలియకపోతే, ఇంటర్నెట్‌లో **PyTorch vs. TensorFlow** గురించి చర్చలను చదవండి. మీరు రెండు ఫ్రేమ్‌వర్క్స్‌ను కూడా పరిశీలించి మెరుగైన అవగాహన పొందవచ్చు.
సాధ్యమైన చోట్ల, సులభత కోసం ఉన్నత-స్థాయి APIలను ఉపయోగిస్తాము. అయితే, న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో మౌలికంగా అర్థం చేసుకోవడం ముఖ్యం కాబట్టి, ప్రారంభంలో లో-లెవెల్ API మరియు టెన్సార్లతో పని చేయడం ప్రారంభిస్తాము. కానీ మీరు త్వరగా ముందుకు వెళ్లాలనుకుంటే, ఈ వివరాలను నేర్చుకోవడంలో ఎక్కువ సమయం ఖర్చు చేయకుండా ఉన్నత-స్థాయి API నోట్‌బుక్స్‌కు నేరుగా వెళ్లవచ్చు.
## ✍️ వ్యాయామాలు: ఫ్రేమ్‌వర్క్స్
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
లో-లెవెల్ API | [TensorFlow+Keras నోట్‌బుక్](IntroKerasTF.ipynb) | [PyTorch](IntroPyTorch.ipynb)
--------------|-------------------------------------|--------------------------------
ఉన్నత-స్థాయి API| [Keras](IntroKeras.ipynb) | *PyTorch Lightning*
ఫ్రేమ్‌వర్క్స్‌లో నైపుణ్యం సాధించిన తర్వాత, ఓవర్‌ఫిట్టింగ్ భావనను పునఃసమీక్షిద్దాం.
# ఓవర్‌ఫిట్టింగ్
ఓవర్‌ఫిట్టింగ్ అనేది మెషీన్ లెర్నింగ్‌లో అత్యంత ముఖ్యమైన భావన, మరియు దీన్ని సరిగ్గా అర్థం చేసుకోవడం చాలా ముఖ్యం!
క్రింది సమస్యను పరిగణించండి, 5 డాట్లను (గ్రాఫ్‌లలో `x`గా సూచించబడినవి) సన్నిహితంగా అంచనా వేయడం:
![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.te.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.te.jpg)
-------------------------|--------------------------
**లీనియర్ మోడల్, 2 పారామీటర్లు** | **నాన్-లీనియర్ మోడల్, 7 పారామీటర్లు**
శిక్షణ లోపం = 5.3 | శిక్షణ లోపం = 0
వాలిడేషన్ లోపం = 5.1 | వాలిడేషన్ లోపం = 20
* ఎడమవైపు, మంచి సరళ రేఖా సన్నిహితీకరణ కనిపిస్తుంది. పారామీటర్ల సంఖ్య సరిపడినందున, మోడల్ పాయింట్ల పంపిణీ వెనుక ఉన్న భావనను సరిగ్గా అర్థం చేసుకుంటుంది.
* కుడివైపు, మోడల్ చాలా శక్తివంతంగా ఉంది. మాకు కేవలం 5 పాయింట్లు ఉన్నప్పుడు, మోడల్ 7 పారామీటర్లతో అన్ని పాయింట్ల ద్వారా వెళ్లేలా సర్దుబాటు చేయగలదు, అందువల్ల శిక్షణ లోపం 0 అవుతుంది. అయితే, ఇది డేటా వెనుక ఉన్న సరైన నమూనాను అర్థం చేసుకోవడాన్ని నిరోధిస్తుంది, అందువల్ల వాలిడేషన్ లోపం చాలా ఎక్కువగా ఉంటుంది.
మోడల్ యొక్క సంపద (పారామీటర్ల సంఖ్య) మరియు శిక్షణ నమూనాల సంఖ్య మధ్య సరైన సమతుల్యతను సాధించడం చాలా ముఖ్యం.
## ఓవర్‌ఫిట్టింగ్ ఎందుకు జరుగుతుంది
* సరిపడా శిక్షణ డేటా లేకపోవడం
* మోడల్ చాలా శక్తివంతంగా ఉండటం
* ఇన్‌పుట్ డేటాలో ఎక్కువ శబ్దం ఉండటం
## ఓవర్‌ఫిట్టింగ్ ఎలా గుర్తించాలి
పై గ్రాఫ్ నుండి మీరు చూడగలిగినట్లుగా, ఓవర్‌ఫిట్టింగ్ చాలా తక్కువ శిక్షణ లోపం మరియు ఎక్కువ వాలిడేషన్ లోపం ద్వారా గుర్తించవచ్చు. సాధారణంగా శిక్షణ సమయంలో శిక్షణ మరియు వాలిడేషన్ లోపాలు రెండూ తగ్గడం ప్రారంభిస్తాయి, ఆపై ఏదో సమయంలో వాలిడేషన్ లోపం తగ్గడం ఆగి పెరుగుతుండవచ్చు. ఇది ఓవర్‌ఫిట్టింగ్ సంకేతం, మరియు ఆ సమయంలో శిక్షణను ఆపడం (లేదా కనీసం మోడల్ యొక్క స్నాప్‌షాట్ తీసుకోవడం) అవసరం.
![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.te.png)
## ఓవర్‌ఫిట్టింగ్ ఎలా నివారించాలి
ఓవర్‌ఫిట్టింగ్ జరుగుతుందని మీరు గమనిస్తే, ఈ క్రింది చర్యలు తీసుకోవచ్చు:
* శిక్షణ డేటా పరిమాణాన్ని పెంచండి
* మోడల్ సంక్లిష్టతను తగ్గించండి
* [రెగ్యులరైజేషన్ సాంకేతికత](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) ఉపయోగించండి, ఉదాహరణకు [డ్రాపౌట్](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), దీన్ని తర్వాత పరిశీలిస్తాము.
## ఓవర్‌ఫిట్టింగ్ మరియు బైయాస్-వేరియన్స్ ట్రేడ్‌ఆఫ్
ఓవర్‌ఫిట్టింగ్ అనేది గణాంకాల్లో [బైయాస్-వేరియన్స్ ట్రేడ్‌ఆఫ్](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) అనే సాధారణ సమస్య యొక్క ఒక ఉదాహరణ. మన మోడల్ లోపాల మూలాలను పరిశీలిస్తే, రెండు రకాల లోపాలు ఉంటాయి:
* **బైయాస్ లోపాలు** మన అల్గోరిథం శిక్షణ డేటా మధ్య సంబంధాన్ని సరిగ్గా పట్టుకోలేకపోవడం వల్ల వస్తాయి. ఇది మోడల్ తక్కువ శక్తివంతంగా ఉండటం వల్ల (అంటే **అండర్‌ఫిట్టింగ్**) జరుగుతుంది.
* **వేరియన్స్ లోపాలు**, ఇవి మోడల్ ఇన్‌పుట్ డేటాలోని శబ్దాన్ని అర్థవంతమైన సంబంధం కాకుండా అంచనా వేయడం వల్ల (అంటే **ఓవర్‌ఫిట్టింగ్**) వస్తాయి.
శిక్షణ సమయంలో, బైయాస్ లోపం తగ్గుతుంది (మోడల్ డేటాను అంచనా వేయడం నేర్చుకుంటుంది), మరియు వేరియన్స్ లోపం పెరుగుతుంది. ఓవర్‌ఫిట్టింగ్ నివారించడానికి శిక్షణను ఆపడం ముఖ్యం — మాన్యువల్‌గా (ఓవర్‌ఫిట్టింగ్ గుర్తించినప్పుడు) లేదా ఆటోమేటిక్‌గా (రెగ్యులరైజేషన్ ప్రవేశపెట్టడం ద్వారా).
## ముగింపు
ఈ పాఠంలో, మీరు రెండు అత్యంత ప్రాచుర్యం పొందిన AI ఫ్రేమ్‌వర్క్స్ అయిన TensorFlow మరియు PyTorch కోసం వివిధ APIల మధ్య తేడాలను నేర్చుకున్నారు. అదనంగా, ఓవర్‌ఫిట్టింగ్ అనే చాలా ముఖ్యమైన అంశాన్ని కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
సహాయక నోట్‌బుక్స్‌లో, మీరు కింద 'టాస్క్‌లు' కనుగొంటారు; నోట్‌బుక్స్‌ను పూర్తి చేసి టాస్క్‌లను పూర్తి చేయండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/10)
## సమీక్ష & స్వీయ అధ్యయనం
క్రింది విషయాలపై కొంత పరిశోధన చేయండి:
- TensorFlow
- PyTorch
- ఓవర్‌ఫిట్టింగ్
ఈ ప్రశ్నలను మీకు అడగండి:
- TensorFlow మరియు PyTorch మధ్య తేడా ఏమిటి?
- ఓవర్‌ఫిట్టింగ్ మరియు అండర్‌ఫిట్టింగ్ మధ్య తేడా ఏమిటి?
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు PyTorch లేదా TensorFlow ఉపయోగించి సింగిల్ మరియు మల్టీ-లేయర్డ్ ఫుల్-కనెక్టెడ్ నెట్‌వర్క్స్ ఉపయోగించి రెండు వర్గీకరణ సమస్యలను పరిష్కరించాల్సి ఉంటుంది.
* [సూచనలు](lab/README.md)
* [నోట్‌బుక్](lab/LabFrameworks.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ddd216f558a255260a9374008002c971",
"translation_date": "2025-11-25T21:45:30+00:00",
"source_file": "lessons/3-NeuralNetworks/05-Frameworks/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్ ఫ్రేమ్‌వర్క్స్
మనం ఇప్పటికే నేర్చుకున్నట్లుగా, న్యూరల్ నెట్‌వర్క్స్‌ను సమర్థవంతంగా శిక్షణ ఇవ్వడానికి రెండు విషయాలు చేయాలి:
* టెన్సార్లపై ఆపరేట్ చేయడం, ఉదాహరణకు గుణించడం, జోడించడం, మరియు సిగ్మాయిడ్ లేదా సాఫ్ట్‌మ్యాక్స్ వంటి కొన్ని ఫంక్షన్లను గణించడం
* గ్రాడియెంట్లను గణించడం, గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్ చేయడానికి
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/9)
`numpy` లైబ్రరీ మొదటి భాగాన్ని చేయగలిగినా, గ్రాడియెంట్లను గణించడానికి మాకు ఒక యంత్రాంగం అవసరం. [మా ఫ్రేమ్‌వర్క్](../04-OwnFramework/OwnFramework.ipynb) లో మేము గత సెక్షన్‌లో అభివృద్ధి చేసినట్లుగా, `backward` మెథడ్‌లో అన్ని డెరివేటివ్ ఫంక్షన్లను మాన్యువల్‌గా ప్రోగ్రామ్ చేయాల్సి వచ్చింది, ఇది బ్యాక్‌ప్రొపగేషన్ చేస్తుంది. Ideally, ఒక ఫ్రేమ్‌వర్క్ మాకు *ఏదైనా వ్యక్తీకరణ* యొక్క గ్రాడియెంట్లను గణించడానికి అవకాశం ఇవ్వాలి.
మరొక ముఖ్యమైన విషయం GPU లేదా [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) వంటి ఇతర ప్రత్యేక కంప్యూట్ యూనిట్లపై గణనలను చేయగలగడం. డీప్ న్యూరల్ నెట్‌వర్క్ శిక్షణకు *చాలా* గణనలు అవసరం, మరియు వాటిని GPUsపై సమాంతరంగా చేయగలగడం చాలా ముఖ్యం.
> ✅ 'parallelize' అనే పదం అనగా గణనలను అనేక పరికరాలపై పంపిణీ చేయడం.
ప్రస్తుతం, రెండు అత్యంత ప్రాచుర్యం పొందిన న్యూరల్ ఫ్రేమ్‌వర్క్స్: [TensorFlow](http://TensorFlow.org) మరియు [PyTorch](https://pytorch.org/). ఇవి రెండూ CPU మరియు GPU రెండింటిలో టెన్సార్లతో ఆపరేట్ చేయడానికి లో-లెవెల్ API అందిస్తాయి. లో-లెవెల్ API పై, ఉన్నత-స్థాయి APIలు కూడా ఉన్నాయి, అవి వరుసగా [Keras](https://keras.io/) మరియు [PyTorch Lightning](https://pytorchlightning.ai/).
లో-లెవెల్ API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/)
--------------|-------------------------------------|--------------------------------
ఉన్నత-స్థాయి API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/)
**లో-లెవెల్ APIs** రెండు ఫ్రేమ్‌వర్క్స్‌లోనూ మీరు **కంప్యూటేషనల్ గ్రాఫ్‌లు** నిర్మించడానికి అనుమతిస్తాయి. ఈ గ్రాఫ్ ఇచ్చిన ఇన్‌పుట్ పారామీటర్లతో అవుట్‌పుట్ (సాధారణంగా లాస్ ఫంక్షన్) ఎలా గణించాలో నిర్వచిస్తుంది, మరియు GPU అందుబాటులో ఉంటే అక్కడ గణనకు పంపవచ్చు. ఈ కంప్యూటేషనల్ గ్రాఫ్‌ను డిఫరెన్షియేట్ చేసి గ్రాడియెంట్లను గణించే ఫంక్షన్లు ఉన్నాయి, వాటిని మోడల్ పారామీటర్లను ఆప్టిమైజ్ చేయడానికి ఉపయోగించవచ్చు.
**ఉన్నత-స్థాయి APIs** న్యూరల్ నెట్‌వర్క్స్‌ను **లేయర్ల సీక్వెన్స్**గా పరిగణించి, చాలా న్యూరల్ నెట్‌వర్క్స్ నిర్మాణాన్ని సులభతరం చేస్తాయి. మోడల్ శిక్షణ సాధారణంగా డేటాను సిద్ధం చేసి, `fit` ఫంక్షన్‌ను పిలవడం ద్వారా జరుగుతుంది.
ఉన్నత-స్థాయి APIలు సాధారణ న్యూరల్ నెట్‌వర్క్స్‌ను త్వరగా నిర్మించడానికి అనుమతిస్తాయి, చాలా వివరాల గురించి ఆందోళన చెందకుండా. అదే సమయంలో, లో-లెవెల్ API శిక్షణ ప్రక్రియపై మరింత నియంత్రణ ఇస్తుంది, కాబట్టి కొత్త న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్లతో పని చేసే పరిశోధనలో ఎక్కువగా ఉపయోగిస్తారు.
మరియు మీరు రెండు APIలను కలిసి ఉపయోగించవచ్చు, ఉదాహరణకు, మీ స్వంత నెట్‌వర్క్ లేయర్ ఆర్కిటెక్చర్‌ను లో-లెవెల్ APIతో అభివృద్ధి చేసి, దాన్ని ఉన్నత-స్థాయి APIతో నిర్మించిన పెద్ద నెట్‌వర్క్‌లో ఉపయోగించవచ్చు. లేదా ఉన్నత-స్థాయి APIతో లేయర్ల సీక్వెన్స్‌గా నెట్‌వర్క్ నిర్వచించి, మీ స్వంత లో-లెవెల్ శిక్షణ లూప్‌తో ఆప్టిమైజేషన్ చేయవచ్చు. రెండు APIలు ఒకే ప్రాథమిక భావనలను ఉపయోగిస్తాయి మరియు కలిసి బాగా పనిచేయడానికి రూపొందించబడ్డాయి.
## నేర్చుకోవడం
ఈ కోర్సులో, మేము ఎక్కువ భాగం కంటెంట్‌ను PyTorch మరియు TensorFlow రెండింటికీ అందిస్తున్నాము. మీరు మీ ఇష్టమైన ఫ్రేమ్‌వర్క్‌ను ఎంచుకుని సంబంధిత నోట్‌బుక్స్ మాత్రమే చూడవచ్చు. మీరు ఏ ఫ్రేమ్‌వర్క్ ఎంచుకోవాలో తెలియకపోతే, ఇంటర్నెట్‌లో **PyTorch vs. TensorFlow** గురించి చర్చలను చదవండి. మీరు రెండు ఫ్రేమ్‌వర్క్స్‌ను కూడా పరిశీలించి మెరుగైన అవగాహన పొందవచ్చు.
సాధ్యమైన చోట్ల, సులభత కోసం ఉన్నత-స్థాయి APIలను ఉపయోగిస్తాము. అయితే, న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో మౌలికంగా అర్థం చేసుకోవడం ముఖ్యం కాబట్టి, ప్రారంభంలో లో-లెవెల్ API మరియు టెన్సార్లతో పని చేయడం ప్రారంభిస్తాము. కానీ మీరు త్వరగా ముందుకు వెళ్లాలనుకుంటే, ఈ వివరాలను నేర్చుకోవడంలో ఎక్కువ సమయం ఖర్చు చేయకుండా ఉన్నత-స్థాయి API నోట్‌బుక్స్‌కు నేరుగా వెళ్లవచ్చు.
## ✍️ వ్యాయామాలు: ఫ్రేమ్‌వర్క్స్
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
లో-లెవెల్ API | [TensorFlow+Keras నోట్‌బుక్](IntroKerasTF.ipynb) | [PyTorch](IntroPyTorch.ipynb)
--------------|-------------------------------------|--------------------------------
ఉన్నత-స్థాయి API| [Keras](IntroKeras.ipynb) | *PyTorch Lightning*
ఫ్రేమ్‌వర్క్స్‌లో నైపుణ్యం సాధించిన తర్వాత, ఓవర్‌ఫిట్టింగ్ భావనను పునఃసమీక్షిద్దాం.
# ఓవర్‌ఫిట్టింగ్
ఓవర్‌ఫిట్టింగ్ అనేది మెషీన్ లెర్నింగ్‌లో అత్యంత ముఖ్యమైన భావన, మరియు దీన్ని సరిగ్గా అర్థం చేసుకోవడం చాలా ముఖ్యం!
క్రింది సమస్యను పరిగణించండి, 5 డాట్లను (గ్రాఫ్‌లలో `x`గా సూచించబడినవి) సన్నిహితంగా అంచనా వేయడం:
![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e.te.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e.te.jpg)
-------------------------|--------------------------
**లీనియర్ మోడల్, 2 పారామీటర్లు** | **నాన్-లీనియర్ మోడల్, 7 పారామీటర్లు**
శిక్షణ లోపం = 5.3 | శిక్షణ లోపం = 0
వాలిడేషన్ లోపం = 5.1 | వాలిడేషన్ లోపం = 20
* ఎడమవైపు, మంచి సరళ రేఖా సన్నిహితీకరణ కనిపిస్తుంది. పారామీటర్ల సంఖ్య సరిపడినందున, మోడల్ పాయింట్ల పంపిణీ వెనుక ఉన్న భావనను సరిగ్గా అర్థం చేసుకుంటుంది.
* కుడివైపు, మోడల్ చాలా శక్తివంతంగా ఉంది. మాకు కేవలం 5 పాయింట్లు ఉన్నప్పుడు, మోడల్ 7 పారామీటర్లతో అన్ని పాయింట్ల ద్వారా వెళ్లేలా సర్దుబాటు చేయగలదు, అందువల్ల శిక్షణ లోపం 0 అవుతుంది. అయితే, ఇది డేటా వెనుక ఉన్న సరైన నమూనాను అర్థం చేసుకోవడాన్ని నిరోధిస్తుంది, అందువల్ల వాలిడేషన్ లోపం చాలా ఎక్కువగా ఉంటుంది.
మోడల్ యొక్క సంపద (పారామీటర్ల సంఖ్య) మరియు శిక్షణ నమూనాల సంఖ్య మధ్య సరైన సమతుల్యతను సాధించడం చాలా ముఖ్యం.
## ఓవర్‌ఫిట్టింగ్ ఎందుకు జరుగుతుంది
* సరిపడా శిక్షణ డేటా లేకపోవడం
* మోడల్ చాలా శక్తివంతంగా ఉండటం
* ఇన్‌పుట్ డేటాలో ఎక్కువ శబ్దం ఉండటం
## ఓవర్‌ఫిట్టింగ్ ఎలా గుర్తించాలి
పై గ్రాఫ్ నుండి మీరు చూడగలిగినట్లుగా, ఓవర్‌ఫిట్టింగ్ చాలా తక్కువ శిక్షణ లోపం మరియు ఎక్కువ వాలిడేషన్ లోపం ద్వారా గుర్తించవచ్చు. సాధారణంగా శిక్షణ సమయంలో శిక్షణ మరియు వాలిడేషన్ లోపాలు రెండూ తగ్గడం ప్రారంభిస్తాయి, ఆపై ఏదో సమయంలో వాలిడేషన్ లోపం తగ్గడం ఆగి పెరుగుతుండవచ్చు. ఇది ఓవర్‌ఫిట్టింగ్ సంకేతం, మరియు ఆ సమయంలో శిక్షణను ఆపడం (లేదా కనీసం మోడల్ యొక్క స్నాప్‌షాట్ తీసుకోవడం) అవసరం.
![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371.te.png)
## ఓవర్‌ఫిట్టింగ్ ఎలా నివారించాలి
ఓవర్‌ఫిట్టింగ్ జరుగుతుందని మీరు గమనిస్తే, ఈ క్రింది చర్యలు తీసుకోవచ్చు:
* శిక్షణ డేటా పరిమాణాన్ని పెంచండి
* మోడల్ సంక్లిష్టతను తగ్గించండి
* [రెగ్యులరైజేషన్ సాంకేతికత](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) ఉపయోగించండి, ఉదాహరణకు [డ్రాపౌట్](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), దీన్ని తర్వాత పరిశీలిస్తాము.
## ఓవర్‌ఫిట్టింగ్ మరియు బైయాస్-వేరియన్స్ ట్రేడ్‌ఆఫ్
ఓవర్‌ఫిట్టింగ్ అనేది గణాంకాల్లో [బైయాస్-వేరియన్స్ ట్రేడ్‌ఆఫ్](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) అనే సాధారణ సమస్య యొక్క ఒక ఉదాహరణ. మన మోడల్ లోపాల మూలాలను పరిశీలిస్తే, రెండు రకాల లోపాలు ఉంటాయి:
* **బైయాస్ లోపాలు** మన అల్గోరిథం శిక్షణ డేటా మధ్య సంబంధాన్ని సరిగ్గా పట్టుకోలేకపోవడం వల్ల వస్తాయి. ఇది మోడల్ తక్కువ శక్తివంతంగా ఉండటం వల్ల (అంటే **అండర్‌ఫిట్టింగ్**) జరుగుతుంది.
* **వేరియన్స్ లోపాలు**, ఇవి మోడల్ ఇన్‌పుట్ డేటాలోని శబ్దాన్ని అర్థవంతమైన సంబంధం కాకుండా అంచనా వేయడం వల్ల (అంటే **ఓవర్‌ఫిట్టింగ్**) వస్తాయి.
శిక్షణ సమయంలో, బైయాస్ లోపం తగ్గుతుంది (మోడల్ డేటాను అంచనా వేయడం నేర్చుకుంటుంది), మరియు వేరియన్స్ లోపం పెరుగుతుంది. ఓవర్‌ఫిట్టింగ్ నివారించడానికి శిక్షణను ఆపడం ముఖ్యం — మాన్యువల్‌గా (ఓవర్‌ఫిట్టింగ్ గుర్తించినప్పుడు) లేదా ఆటోమేటిక్‌గా (రెగ్యులరైజేషన్ ప్రవేశపెట్టడం ద్వారా).
## ముగింపు
ఈ పాఠంలో, మీరు రెండు అత్యంత ప్రాచుర్యం పొందిన AI ఫ్రేమ్‌వర్క్స్ అయిన TensorFlow మరియు PyTorch కోసం వివిధ APIల మధ్య తేడాలను నేర్చుకున్నారు. అదనంగా, ఓవర్‌ఫిట్టింగ్ అనే చాలా ముఖ్యమైన అంశాన్ని కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
సహాయక నోట్‌బుక్స్‌లో, మీరు కింద 'టాస్క్‌లు' కనుగొంటారు; నోట్‌బుక్స్‌ను పూర్తి చేసి టాస్క్‌లను పూర్తి చేయండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/10)
## సమీక్ష & స్వీయ అధ్యయనం
క్రింది విషయాలపై కొంత పరిశోధన చేయండి:
- TensorFlow
- PyTorch
- ఓవర్‌ఫిట్టింగ్
ఈ ప్రశ్నలను మీకు అడగండి:
- TensorFlow మరియు PyTorch మధ్య తేడా ఏమిటి?
- ఓవర్‌ఫిట్టింగ్ మరియు అండర్‌ఫిట్టింగ్ మధ్య తేడా ఏమిటి?
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు PyTorch లేదా TensorFlow ఉపయోగించి సింగిల్ మరియు మల్టీ-లేయర్డ్ ఫుల్-కనెక్టెడ్ నెట్‌వర్క్స్ ఉపయోగించి రెండు వర్గీకరణ సమస్యలను పరిష్కరించాల్సి ఉంటుంది.
* [సూచనలు](lab/README.md)
* [నోట్‌బుక్](lab/LabFrameworks.ipynb)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,64 +1,64 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f862a99d88088163df12270e2f2ad6c3",
"translation_date": "2025-11-25T21:06:46+00:00",
"source_file": "lessons/3-NeuralNetworks/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం
![Intro Neural Networks విషయాల సారాంశం డూడిల్‌లో](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.te.png)
మనం పరిచయంలో చర్చించినట్లుగా, మేధస్సును సాధించడానికి ఒక మార్గం **కంప్యూటర్ మోడల్** లేదా **కృత్రిమ మెదడు**ను శిక్షణ ఇవ్వడం. 20వ శతాబ్దం మధ్య నుండి పరిశోధకులు వివిధ గణిత మోడల్స్ ప్రయత్నించారు, ఇటీవల సంవత్సరాలలో ఈ దిశ చాలా విజయవంతమైంది. మెదడుకు ఇలాంటి గణిత మోడల్స్‌ను **న్యూరల్ నెట్‌వర్క్స్** అంటారు.
> న్యూరల్ నెట్‌వర్క్స్‌ను కొన్నిసార్లు *కృత్రిమ న్యూరల్ నెట్‌వర్క్స్* (ANNs) అని పిలుస్తారు, ఎందుకంటే మేము నిజమైన న్యూరాన్ల నెట్‌వర్క్స్ కాకుండా మోడల్స్ గురించి మాట్లాడుతున్నామనే సూచన కోసం.
## మెషీన్ లెర్నింగ్
న్యూరల్ నెట్‌వర్క్స్ ఒక పెద్ద శాస్త్రశాఖ అయిన **మెషీన్ లెర్నింగ్**లో భాగం, దీని లక్ష్యం డేటాను ఉపయోగించి సమస్యలను పరిష్కరించగల కంప్యూటర్ మోడల్స్‌ను శిక్షణ ఇవ్వడం. మెషీన్ లెర్నింగ్ ఆర్టిఫిషియల్ ఇంటెలిజెన్స్‌లో పెద్ద భాగాన్ని కలిగి ఉంటుంది, అయితే ఈ పాఠ్యాంశంలో క్లాసికల్ ML ను కవర్ చేయము.
> క్లాసికల్ మెషీన్ లెర్నింగ్ గురించి మరింత తెలుసుకోవడానికి మా ప్రత్యేక **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** పాఠ్యాంశాన్ని సందర్శించండి.
మెషీన్ లెర్నింగ్‌లో, మనకు కొన్ని ఉదాహరణల డేటాసెట్ **X** మరియు అనుగుణమైన అవుట్‌పుట్ విలువలు **Y** ఉంటాయని భావిస్తాము. ఉదాహరణలు సాధారణంగా N-డైమెన్షనల్ వెక్టర్లు, వీటిలో **ఫీచర్లు** ఉంటాయి, అవుట్‌పుట్లు **లేబుల్స్** అని పిలవబడతాయి.
మనం రెండు సాధారణ మెషీన్ లెర్నింగ్ సమస్యలను పరిశీలిస్తాము:
* **వర్గీకరణ (Classification)**, ఇన్‌పుట్ వస్తువును రెండు లేదా అంతకంటే ఎక్కువ తరగతులలో వర్గీకరించాల్సిన అవసరం ఉన్నప్పుడు.
* **రెగ్రెషన్ (Regression)**, ఇన్‌పుట్ నమూనాలకు సంఖ్యాత్మక విలువను అంచనా వేయాల్సినప్పుడు.
> ఇన్‌పుట్లు మరియు అవుట్‌పుట్లను టెన్సర్లుగా ప్రదర్శించినప్పుడు, ఇన్‌పుట్ డేటాసెట్ M×N పరిమాణం గల మ్యాట్రిక్స్, ఇక్కడ M నమూనాల సంఖ్య మరియు N ఫీచర్ల సంఖ్య. అవుట్‌పుట్ లేబుల్స్ Y M పరిమాణం గల వెక్టర్.
ఈ పాఠ్యాంశంలో, మనం కేవలం న్యూరల్ నెట్‌వర్క్ మోడల్స్‌పై దృష్టి సారిస్తాము.
## న్యూరాన్ మోడల్
జీవశాస్త్రం ప్రకారం, మన మెదడు న్యూరల్ సెల్స్ (న్యూరాన్లు)తో కూడి ఉంటుంది, ప్రతి న్యూరాన్‌కు అనేక "ఇన్‌పుట్లు" (డెండ్రైట్స్) మరియు ఒకే "అవుట్‌పుట్" (ఆక్సాన్) ఉంటుంది. డెండ్రైట్స్ మరియు ఆక్సాన్లు విద్యుత్ సంకేతాలను ప్రసారం చేయగలవు, మరియు వాటి మధ్య కనెక్షన్లు — సైనాప్సెస్ అని పిలవబడతాయి — వివిధ స్థాయిలలో విద్యుత్ ప్రసరణ సామర్థ్యాన్ని చూపుతాయి, ఇవి న్యూరోట్రాన్స్‌మిటర్ల ద్వారా నియంత్రించబడతాయి.
![న్యూరాన్ మోడల్](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.te.jpg) | ![న్యూరాన్ మోడల్](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.te.png)
----|----
నిజమైన న్యూరాన్ *([చిత్రం](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) వికీపీడియా నుండి)* | కృత్రిమ న్యూరాన్ *(చిత్రం రచయిత ద్వారా)*
కాబట్టి, న్యూరాన్ యొక్క సులభమైన గణిత మోడల్‌లో అనేక ఇన్‌పుట్లు X<sub>1</sub>, ..., X<sub>N</sub>, ఒక అవుట్‌పుట్ Y మరియు ఒక శ్రేణి వెయిట్లు W<sub>1</sub>, ..., W<sub>N</sub> ఉంటాయి. అవుట్‌పుట్ ఈ విధంగా లెక్కించబడుతుంది:
<img src="../../../../translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.te.png" alt="Y = f\left(\sum_{i=1}^N X_iW_i\right)" width="131" height="53" align="center"/>
ఇక్కడ f అనేది ఒక నాన్-లీనియర్ **యాక్టివేషన్ ఫంక్షన్**.
> న్యూరాన్ యొక్క ప్రారంభ మోడల్స్ 1943లో వారెన్ మెక్‌కలాక్ మరియు వాల్టర్ పిట్స్ రాసిన క్లాసికల్ పేపర్ [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)లో వివరించబడ్డాయి. డొనాల్డ్ హెబ్ తన పుస్తకం "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)"లో ఆ నెట్‌వర్క్స్‌ను శిక్షణ ఇవ్వగల మార్గాన్ని ప్రతిపాదించారు.
## ఈ విభాగంలో
ఈ విభాగంలో మనం నేర్చుకునేది:
* [పర్సెప్ట్రాన్](03-Perceptron/README.md), రెండు తరగతుల వర్గీకరణ కోసం ప్రారంభ న్యూరల్ నెట్‌వర్క్ మోడల్
* [బహుళ-పట్టాల నెట్‌వర్క్స్](04-OwnFramework/README.md) మరియు జతచేసిన నోట్‌బుక్ [మన స్వంత ఫ్రేమ్‌వర్క్ ఎలా నిర్మించాలి](04-OwnFramework/OwnFramework.ipynb)
* [న్యూరల్ నెట్‌వర్క్ ఫ్రేమ్‌వర్క్స్](05-Frameworks/README.md), ఈ నోట్‌బుక్స్‌తో: [PyTorch](05-Frameworks/IntroPyTorch.ipynb) మరియు [Keras/Tensorflow](05-Frameworks/IntroKerasTF.ipynb)
* [ఓవర్‌ఫిట్టింగ్](../../../../lessons/3-NeuralNetworks/05-Frameworks)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f862a99d88088163df12270e2f2ad6c3",
"translation_date": "2025-11-25T21:06:46+00:00",
"source_file": "lessons/3-NeuralNetworks/README.md",
"language_code": "te"
}
-->
# న్యూరల్ నెట్‌వర్క్స్ పరిచయం
![Intro Neural Networks విషయాల సారాంశం డూడిల్‌లో](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e83.te.png)
మనం పరిచయంలో చర్చించినట్లుగా, మేధస్సును సాధించడానికి ఒక మార్గం **కంప్యూటర్ మోడల్** లేదా **కృత్రిమ మెదడు**ను శిక్షణ ఇవ్వడం. 20వ శతాబ్దం మధ్య నుండి పరిశోధకులు వివిధ గణిత మోడల్స్ ప్రయత్నించారు, ఇటీవల సంవత్సరాలలో ఈ దిశ చాలా విజయవంతమైంది. మెదడుకు ఇలాంటి గణిత మోడల్స్‌ను **న్యూరల్ నెట్‌వర్క్స్** అంటారు.
> న్యూరల్ నెట్‌వర్క్స్‌ను కొన్నిసార్లు *కృత్రిమ న్యూరల్ నెట్‌వర్క్స్* (ANNs) అని పిలుస్తారు, ఎందుకంటే మేము నిజమైన న్యూరాన్ల నెట్‌వర్క్స్ కాకుండా మోడల్స్ గురించి మాట్లాడుతున్నామనే సూచన కోసం.
## మెషీన్ లెర్నింగ్
న్యూరల్ నెట్‌వర్క్స్ ఒక పెద్ద శాస్త్రశాఖ అయిన **మెషీన్ లెర్నింగ్**లో భాగం, దీని లక్ష్యం డేటాను ఉపయోగించి సమస్యలను పరిష్కరించగల కంప్యూటర్ మోడల్స్‌ను శిక్షణ ఇవ్వడం. మెషీన్ లెర్నింగ్ ఆర్టిఫిషియల్ ఇంటెలిజెన్స్‌లో పెద్ద భాగాన్ని కలిగి ఉంటుంది, అయితే ఈ పాఠ్యాంశంలో క్లాసికల్ ML ను కవర్ చేయము.
> క్లాసికల్ మెషీన్ లెర్నింగ్ గురించి మరింత తెలుసుకోవడానికి మా ప్రత్యేక **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** పాఠ్యాంశాన్ని సందర్శించండి.
మెషీన్ లెర్నింగ్‌లో, మనకు కొన్ని ఉదాహరణల డేటాసెట్ **X** మరియు అనుగుణమైన అవుట్‌పుట్ విలువలు **Y** ఉంటాయని భావిస్తాము. ఉదాహరణలు సాధారణంగా N-డైమెన్షనల్ వెక్టర్లు, వీటిలో **ఫీచర్లు** ఉంటాయి, అవుట్‌పుట్లు **లేబుల్స్** అని పిలవబడతాయి.
మనం రెండు సాధారణ మెషీన్ లెర్నింగ్ సమస్యలను పరిశీలిస్తాము:
* **వర్గీకరణ (Classification)**, ఇన్‌పుట్ వస్తువును రెండు లేదా అంతకంటే ఎక్కువ తరగతులలో వర్గీకరించాల్సిన అవసరం ఉన్నప్పుడు.
* **రెగ్రెషన్ (Regression)**, ఇన్‌పుట్ నమూనాలకు సంఖ్యాత్మక విలువను అంచనా వేయాల్సినప్పుడు.
> ఇన్‌పుట్లు మరియు అవుట్‌పుట్లను టెన్సర్లుగా ప్రదర్శించినప్పుడు, ఇన్‌పుట్ డేటాసెట్ M×N పరిమాణం గల మ్యాట్రిక్స్, ఇక్కడ M నమూనాల సంఖ్య మరియు N ఫీచర్ల సంఖ్య. అవుట్‌పుట్ లేబుల్స్ Y M పరిమాణం గల వెక్టర్.
ఈ పాఠ్యాంశంలో, మనం కేవలం న్యూరల్ నెట్‌వర్క్ మోడల్స్‌పై దృష్టి సారిస్తాము.
## న్యూరాన్ మోడల్
జీవశాస్త్రం ప్రకారం, మన మెదడు న్యూరల్ సెల్స్ (న్యూరాన్లు)తో కూడి ఉంటుంది, ప్రతి న్యూరాన్‌కు అనేక "ఇన్‌పుట్లు" (డెండ్రైట్స్) మరియు ఒకే "అవుట్‌పుట్" (ఆక్సాన్) ఉంటుంది. డెండ్రైట్స్ మరియు ఆక్సాన్లు విద్యుత్ సంకేతాలను ప్రసారం చేయగలవు, మరియు వాటి మధ్య కనెక్షన్లు — సైనాప్సెస్ అని పిలవబడతాయి — వివిధ స్థాయిలలో విద్యుత్ ప్రసరణ సామర్థ్యాన్ని చూపుతాయి, ఇవి న్యూరోట్రాన్స్‌మిటర్ల ద్వారా నియంత్రించబడతాయి.
![న్యూరాన్ మోడల్](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6.te.jpg) | ![న్యూరాన్ మోడల్](../../../../translated_images/artneuron.1a5daa88d20ebe6f.te.png)
----|----
నిజమైన న్యూరాన్ *([చిత్రం](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) వికీపీడియా నుండి)* | కృత్రిమ న్యూరాన్ *(చిత్రం రచయిత ద్వారా)*
కాబట్టి, న్యూరాన్ యొక్క సులభమైన గణిత మోడల్‌లో అనేక ఇన్‌పుట్లు X<sub>1</sub>, ..., X<sub>N</sub>, ఒక అవుట్‌పుట్ Y మరియు ఒక శ్రేణి వెయిట్లు W<sub>1</sub>, ..., W<sub>N</sub> ఉంటాయి. అవుట్‌పుట్ ఈ విధంగా లెక్కించబడుతుంది:
<img src="../../../../translated_images/netout.1eb15eb76fd76731.te.png" alt="Y = f\left(\sum_{i=1}^N X_iW_i\right)" width="131" height="53" align="center"/>
ఇక్కడ f అనేది ఒక నాన్-లీనియర్ **యాక్టివేషన్ ఫంక్షన్**.
> న్యూరాన్ యొక్క ప్రారంభ మోడల్స్ 1943లో వారెన్ మెక్‌కలాక్ మరియు వాల్టర్ పిట్స్ రాసిన క్లాసికల్ పేపర్ [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)లో వివరించబడ్డాయి. డొనాల్డ్ హెబ్ తన పుస్తకం "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)"లో ఆ నెట్‌వర్క్స్‌ను శిక్షణ ఇవ్వగల మార్గాన్ని ప్రతిపాదించారు.
## ఈ విభాగంలో
ఈ విభాగంలో మనం నేర్చుకునేది:
* [పర్సెప్ట్రాన్](03-Perceptron/README.md), రెండు తరగతుల వర్గీకరణ కోసం ప్రారంభ న్యూరల్ నెట్‌వర్క్ మోడల్
* [బహుళ-పట్టాల నెట్‌వర్క్స్](04-OwnFramework/README.md) మరియు జతచేసిన నోట్‌బుక్ [మన స్వంత ఫ్రేమ్‌వర్క్ ఎలా నిర్మించాలి](04-OwnFramework/OwnFramework.ipynb)
* [న్యూరల్ నెట్‌వర్క్ ఫ్రేమ్‌వర్క్స్](05-Frameworks/README.md), ఈ నోట్‌బుక్స్‌తో: [PyTorch](05-Frameworks/IntroPyTorch.ipynb) మరియు [Keras/Tensorflow](05-Frameworks/IntroKerasTF.ipynb)
* [ఓవర్‌ఫిట్టింగ్](../../../../lessons/3-NeuralNetworks/05-Frameworks)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,127 +1,127 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "feeca98225cb420afc89415f24f63d92",
"translation_date": "2025-11-25T21:56:03+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/README.md",
"language_code": "te"
}
-->
# కంప్యూటర్ విజన్ పరిచయం
[కంప్యూటర్ విజన్](https://wikipedia.org/wiki/Computer_vision) అనేది కంప్యూటర్లకు డిజిటల్ చిత్రాలపై ఉన్నత స్థాయి అవగాహన పొందేలా చేయడం లక్ష్యంగా ఉన్న శాస్త్రశాఖ. ఇది చాలా విస్తృత నిర్వచనం, ఎందుకంటే *అవగాహన* అనేది అనేక రకాల అర్థాలు కలిగి ఉండవచ్చు, ఉదాహరణకు చిత్రంలో ఒక వస్తువును కనుగొనడం (**object detection**), ఏం జరుగుతుందో అర్థం చేసుకోవడం (**event detection**), చిత్రాన్ని వచనంగా వివరించడం, లేదా సన్నివేశాన్ని 3Dలో పునర్నిర్మించడం. మానవ చిత్రాలకు సంబంధించిన ప్రత్యేక పనులు కూడా ఉన్నాయి: వయస్సు మరియు భావోద్వేగ అంచనా, ముఖ గుర్తింపు మరియు గుర్తింపు, 3D పోజ్ అంచనా వంటి కొన్ని.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/11)
కంప్యూటర్ విజన్ యొక్క సులభమైన పనుల్లో ఒకటి **చిత్ర వర్గీకరణ**.
కంప్యూటర్ విజన్‌ను తరచుగా AI శాఖగా పరిగణిస్తారు. ఈ రోజుల్లో, కంప్యూటర్ విజన్ పనులన్నీ ఎక్కువగా న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి పరిష్కరించబడుతున్నాయి. ఈ విభాగంలో, కంప్యూటర్ విజన్ కోసం ఉపయోగించే ప్రత్యేక న్యూరల్ నెట్‌వర్క్‌ల గురించి, [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్‌లు](../07-ConvNets/README.md) గురించి మరింత తెలుసుకుంటాము.
అయితే, చిత్రాన్ని న్యూరల్ నెట్‌వర్క్‌కు పంపించే ముందు, చాలా సందర్భాల్లో చిత్రాన్ని మెరుగుపరచడానికి కొన్ని అల్గోరిథమిక్ సాంకేతికతలను ఉపయోగించడం మంచిది.
చిత్ర ప్రాసెసింగ్ కోసం పలు Python లైబ్రరీలు అందుబాటులో ఉన్నాయి:
* **[imageio](https://imageio.readthedocs.io/en/stable/)** వివిధ చిత్ర ఫార్మాట్లను చదవడం/వ్రాయడం కోసం ఉపయోగించవచ్చు. ఇది ffmpeg ను కూడా మద్దతు ఇస్తుంది, ఇది వీడియో ఫ్రేమ్‌లను చిత్రాలుగా మార్చడానికి ఉపయోగపడుతుంది.
* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL అని కూడా పిలవబడుతుంది) కొంతమేర శక్తివంతమైనది, మరియు మోర్ఫింగ్, ప్యాలెట్ సర్దుబాటు వంటి చిత్ర మార్పిడి పనులను కూడా మద్దతు ఇస్తుంది.
* **[OpenCV](https://opencv.org/)** C++ లో రాయబడిన శక్తివంతమైన చిత్ర ప్రాసెసింగ్ లైబ్రరీ, ఇది చిత్ర ప్రాసెసింగ్ కోసం *de facto* ప్రమాణంగా మారింది. దీనికి సౌకర్యవంతమైన Python ఇంటర్‌ఫేస్ ఉంది.
* **[dlib](http://dlib.net/)** అనేది C++ లైబ్రరీ, ఇది అనేక మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్‌ను అమలు చేస్తుంది, వాటిలో కొన్ని కంప్యూటర్ విజన్ అల్గోరిథమ్స్ కూడా ఉన్నాయి. దీనికి Python ఇంటర్‌ఫేస్ కూడా ఉంది, మరియు ముఖ గుర్తింపు, ముఖ లక్షణాల గుర్తింపు వంటి కష్టమైన పనులకు ఉపయోగించవచ్చు.
## OpenCV
[OpenCV](https://opencv.org/) చిత్ర ప్రాసెసింగ్ కోసం *de facto* ప్రమాణంగా పరిగణించబడుతుంది. ఇది C++ లో అమలు చేసిన అనేక ఉపయోగకరమైన అల్గోరిథమ్స్ కలిగి ఉంది. మీరు Python నుండి కూడా OpenCV ను పిలవవచ్చు.
OpenCV నేర్చుకోవడానికి మంచి స్థలం [ఈ Learn OpenCV కోర్సు](https://learnopencv.com/getting-started-with-opencv/) అవుతుంది. మన పాఠ్యక్రమంలో, OpenCV నేర్చుకోవడం కాదు, కానీ దాన్ని ఎప్పుడు మరియు ఎలా ఉపయోగించవచ్చో కొన్ని ఉదాహరణలు చూపించడం లక్ష్యం.
### చిత్రాలు లోడ్ చేయడం
Python లో చిత్రాలను సౌకర్యవంతంగా NumPy అర్రేలుగా ప్రాతినిధ్యం వహించవచ్చు. ఉదాహరణకు, 320x200 పిక్సెల్‌ల గ్రేస్కేల్ చిత్రాలు 200x320 అర్రేలో నిల్వ చేయబడతాయి, అదే పరిమాణం కలిగిన రంగు చిత్రాలు 200x320x3 ఆకారంలో ఉంటాయి (3 రంగు ఛానెల్స్ కోసం). చిత్రాన్ని లోడ్ చేయడానికి, మీరు క్రింది కోడ్ ఉపయోగించవచ్చు:
```python
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
```
సాంప్రదాయంగా, OpenCV రంగు చిత్రాలకు BGR (బ్లూ-గ్రీన్-రెడ్) ఎంకోడింగ్ ఉపయోగిస్తుంది, Python ఇతర సాధనాలు ఎక్కువగా ఉపయోగించే RGB (రెడ్-గ్రీన్-బ్లూ) కంటే భిన్నంగా ఉంటుంది. చిత్రాన్ని సరిగ్గా చూపించాలంటే, మీరు దాన్ని RGB రంగు స్థలానికి మార్చాలి, ఇది NumPy అర్రేలో డైమెన్షన్లను మార్చడం ద్వారా లేదా OpenCV ఫంక్షన్ పిలవడం ద్వారా చేయవచ్చు:
```python
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
```
అదే `cvtColor` ఫంక్షన్‌ను చిత్రాన్ని గ్రేస్కేల్ లేదా HSV (హ్యూ-సాచురేషన్-వాల్యూ) రంగు స్థలానికి మార్చడానికి కూడా ఉపయోగించవచ్చు.
OpenCV ను ఉపయోగించి వీడియోను ఫ్రేమ్-బై-ఫ్రేమ్ లోడ్ చేయవచ్చు - ఉదాహరణ [OpenCV Notebook](OpenCV.ipynb) లో ఇవ్వబడింది.
### చిత్ర ప్రాసెసింగ్
చిత్రాన్ని న్యూరల్ నెట్‌వర్క్‌కు పంపించే ముందు, మీరు కొన్ని ప్రీ-ప్రాసెసింగ్ దశలను వర్తింపజేయాలనుకోవచ్చు. OpenCV అనేక పనులు చేయగలదు, వాటిలో:
* `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` ఉపయోగించి చిత్రాన్ని **పునఃపరిమాణం** చేయడం
* `im = cv2.medianBlur(im,3)` లేదా `im = cv2.GaussianBlur(im, (3,3), 0)` ఉపయోగించి చిత్రాన్ని **బ్లర్** చేయడం
* చిత్రపు **బ్రైట్‌నెస్ మరియు కాంట్రాస్ట్** ను NumPy అర్రే మార్పులతో మార్చవచ్చు, [ఈ Stackoverflow నోట్లో](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) వివరించబడింది.
* `cv2.threshold`/`cv2.adaptiveThreshold` ఫంక్షన్లను పిలిచి [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ఉపయోగించడం, ఇది బ్రైట్‌నెస్ లేదా కాంట్రాస్ట్ సర్దుబాటు కంటే ఎక్కువగా ఉపయోగపడుతుంది.
* చిత్రానికి వివిధ [మార్పులు](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) వర్తింపజేయడం:
- **[Affine transformations](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** ఉపయోగించి మీరు చిత్రాన్ని తిప్పడం, పునఃపరిమాణం చేయడం మరియు స్క్యూ చేయడం చేయవచ్చు, మరియు మీరు చిత్రంలోని మూడు పాయింట్ల మూలం మరియు గమ్యం స్థానాలను తెలుసుకుంటే. Affine మార్పులు సమాంతర రేఖలను సమాంతరంగా ఉంచుతాయి.
- **[Perspective transformations](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** ఉపయోగించి మీరు చిత్రంలోని 4 పాయింట్ల మూలం మరియు గమ్యం స్థానాలను తెలుసుకుంటే ఉపయోగపడుతుంది. ఉదాహరణకు, మీరు స్మార్ట్‌ఫోన్ కెమెరాతో ఏదైనా కోణం నుండి ఒక చతురస్ర డాక్యుమెంట్ ఫోటో తీసుకుంటే, దాన్ని చతురస్ర చిత్రంగా మార్చడానికి.
* చిత్రంలో కదలికను అర్థం చేసుకోవడానికి **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** ఉపయోగించడం.
## కంప్యూటర్ విజన్ ఉపయోగించే ఉదాహరణలు
మన [OpenCV Notebook](OpenCV.ipynb) లో, కంప్యూటర్ విజన్ ప్రత్యేక పనులు చేయడానికి ఎప్పుడు ఉపయోగించవచ్చో కొన్ని ఉదాహరణలు ఇస్తాము:
* **బ్రెయిల్ పుస్తకం ఫోటో ప్రీ-ప్రాసెసింగ్**. thresholding, ఫీచర్ డిటెక్షన్, perspective transformation మరియు NumPy మార్పులతో వ్యక్తిగత బ్రెయిల్ చిహ్నాలను వేరుచేసి, తరువాత న్యూరల్ నెట్‌వర్క్ ద్వారా వర్గీకరణ కోసం ఎలా సిద్ధం చేయాలో మనం దృష్టి సారిస్తాము.
![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.te.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.te.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.te.png)
----|-----|-----
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
* **ఫ్రేమ్ తేడా ఉపయోగించి వీడియోలో కదలిక గుర్తించడం**. కెమెరా స్థిరంగా ఉంటే, కెమెరా ఫీడ్ నుండి ఫ్రేమ్‌లు ఒకదానితో ఒకటి చాలా సమానంగా ఉంటాయి. ఫ్రేమ్‌లు అర్రేలుగా ప్రాతినిధ్యం వహిస్తాయి, కాబట్టి రెండు వరుస ఫ్రేమ్‌ల అర్రేల మధ్య తేడాను తీసుకుంటే, స్థిరమైన ఫ్రేమ్‌లకు తేడా తక్కువగా ఉంటుంది, మరియు చిత్రంలో గణనీయమైన కదలిక ఉన్నప్పుడు ఎక్కువగా ఉంటుంది.
![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.te.png)
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
* **Optical Flow ఉపయోగించి కదలిక గుర్తించడం**. [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) వీడియో ఫ్రేమ్‌లలో వ్యక్తిగత పిక్సెల్స్ ఎలా కదులుతున్నాయో అర్థం చేసుకోవడానికి సహాయపడుతుంది. optical flow రెండు రకాలు ఉన్నాయి:
- **Dense Optical Flow** ప్రతి పిక్సెల్ ఎక్కడికి కదులుతుందో చూపించే వెక్టర్ ఫీల్డ్‌ను లెక్కిస్తుంది
- **Sparse Optical Flow** చిత్రంలోని కొన్ని ప్రత్యేక లక్షణాలను (ఉదా: అంచులు) తీసుకుని, వాటి ట్రాజెక్టరీని ఫ్రేమ్ నుండి ఫ్రేమ్ వరకు నిర్మిస్తుంది.
![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.te.png)
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
## ✍️ ఉదాహరణ నోట్‌బుక్స్: OpenCV [OpenCV ను ప్రాక్టీస్ చేయండి](OpenCV.ipynb)
OpenCV తో కొన్ని ప్రయోగాలు చేద్దాం, [OpenCV Notebook](OpenCV.ipynb) ను అన్వేషిస్తూ
## ముగింపు
కొన్నిసార్లు, కదలిక గుర్తింపు లేదా వేళ్ల చిటికెన గుర్తింపు వంటి సాపేక్షంగా క్లిష్టమైన పనులు పూర్తిగా కంప్యూటర్ విజన్ ద్వారా పరిష్కరించవచ్చు. అందువల్ల, కంప్యూటర్ విజన్ యొక్క ప్రాథమిక సాంకేతికతలను తెలుసుకోవడం, మరియు OpenCV వంటి లైబ్రరీలు ఏమి చేయగలవో తెలుసుకోవడం చాలా ఉపయోగకరం.
## 🚀 సవాలు
AI షో నుండి [ఈ వీడియో](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) చూడండి, Cortic Tigers ప్రాజెక్ట్ గురించి తెలుసుకోండి, వారు రోబోట్ ద్వారా కంప్యూటర్ విజన్ పనులను ప్రజలందరికీ అందుబాటులోకి తీసుకురావడానికి బ్లాక్-ఆధారిత పరిష్కారాన్ని ఎలా నిర్మించారో తెలుసుకోండి. ఈ రంగంలో కొత్త అభ్యాసకులను చేరవేయడంలో సహాయపడే ఇతర ప్రాజెక్టులపై కొంత పరిశోధన చేయండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/12)
## సమీక్ష & స్వీయ అధ్యయనం
optical flow గురించి మరింత చదవండి [ఈ అద్భుతమైన ట్యుటోరియల్‌లో](https://learnopencv.com/optical-flow-in-opencv/).
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు సులభమైన జెస్తర్స్‌తో వీడియో తీసుకుంటారు, మరియు optical flow ఉపయోగించి పైకి/కిందకి/ఎడమ/కుడి కదలికలను వెలికి తీయడం మీ లక్ష్యం.
<img src="../../../../../translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.te.png" width="30%" alt="Palm Movement Frame"/>
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "feeca98225cb420afc89415f24f63d92",
"translation_date": "2025-11-25T21:56:03+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/README.md",
"language_code": "te"
}
-->
# కంప్యూటర్ విజన్ పరిచయం
[కంప్యూటర్ విజన్](https://wikipedia.org/wiki/Computer_vision) అనేది కంప్యూటర్లకు డిజిటల్ చిత్రాలపై ఉన్నత స్థాయి అవగాహన పొందేలా చేయడం లక్ష్యంగా ఉన్న శాస్త్రశాఖ. ఇది చాలా విస్తృత నిర్వచనం, ఎందుకంటే *అవగాహన* అనేది అనేక రకాల అర్థాలు కలిగి ఉండవచ్చు, ఉదాహరణకు చిత్రంలో ఒక వస్తువును కనుగొనడం (**object detection**), ఏం జరుగుతుందో అర్థం చేసుకోవడం (**event detection**), చిత్రాన్ని వచనంగా వివరించడం, లేదా సన్నివేశాన్ని 3Dలో పునర్నిర్మించడం. మానవ చిత్రాలకు సంబంధించిన ప్రత్యేక పనులు కూడా ఉన్నాయి: వయస్సు మరియు భావోద్వేగ అంచనా, ముఖ గుర్తింపు మరియు గుర్తింపు, 3D పోజ్ అంచనా వంటి కొన్ని.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/11)
కంప్యూటర్ విజన్ యొక్క సులభమైన పనుల్లో ఒకటి **చిత్ర వర్గీకరణ**.
కంప్యూటర్ విజన్‌ను తరచుగా AI శాఖగా పరిగణిస్తారు. ఈ రోజుల్లో, కంప్యూటర్ విజన్ పనులన్నీ ఎక్కువగా న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి పరిష్కరించబడుతున్నాయి. ఈ విభాగంలో, కంప్యూటర్ విజన్ కోసం ఉపయోగించే ప్రత్యేక న్యూరల్ నెట్‌వర్క్‌ల గురించి, [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్‌లు](../07-ConvNets/README.md) గురించి మరింత తెలుసుకుంటాము.
అయితే, చిత్రాన్ని న్యూరల్ నెట్‌వర్క్‌కు పంపించే ముందు, చాలా సందర్భాల్లో చిత్రాన్ని మెరుగుపరచడానికి కొన్ని అల్గోరిథమిక్ సాంకేతికతలను ఉపయోగించడం మంచిది.
చిత్ర ప్రాసెసింగ్ కోసం పలు Python లైబ్రరీలు అందుబాటులో ఉన్నాయి:
* **[imageio](https://imageio.readthedocs.io/en/stable/)** వివిధ చిత్ర ఫార్మాట్లను చదవడం/వ్రాయడం కోసం ఉపయోగించవచ్చు. ఇది ffmpeg ను కూడా మద్దతు ఇస్తుంది, ఇది వీడియో ఫ్రేమ్‌లను చిత్రాలుగా మార్చడానికి ఉపయోగపడుతుంది.
* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL అని కూడా పిలవబడుతుంది) కొంతమేర శక్తివంతమైనది, మరియు మోర్ఫింగ్, ప్యాలెట్ సర్దుబాటు వంటి చిత్ర మార్పిడి పనులను కూడా మద్దతు ఇస్తుంది.
* **[OpenCV](https://opencv.org/)** C++ లో రాయబడిన శక్తివంతమైన చిత్ర ప్రాసెసింగ్ లైబ్రరీ, ఇది చిత్ర ప్రాసెసింగ్ కోసం *de facto* ప్రమాణంగా మారింది. దీనికి సౌకర్యవంతమైన Python ఇంటర్‌ఫేస్ ఉంది.
* **[dlib](http://dlib.net/)** అనేది C++ లైబ్రరీ, ఇది అనేక మెషీన్ లెర్నింగ్ అల్గోరిథమ్స్‌ను అమలు చేస్తుంది, వాటిలో కొన్ని కంప్యూటర్ విజన్ అల్గోరిథమ్స్ కూడా ఉన్నాయి. దీనికి Python ఇంటర్‌ఫేస్ కూడా ఉంది, మరియు ముఖ గుర్తింపు, ముఖ లక్షణాల గుర్తింపు వంటి కష్టమైన పనులకు ఉపయోగించవచ్చు.
## OpenCV
[OpenCV](https://opencv.org/) చిత్ర ప్రాసెసింగ్ కోసం *de facto* ప్రమాణంగా పరిగణించబడుతుంది. ఇది C++ లో అమలు చేసిన అనేక ఉపయోగకరమైన అల్గోరిథమ్స్ కలిగి ఉంది. మీరు Python నుండి కూడా OpenCV ను పిలవవచ్చు.
OpenCV నేర్చుకోవడానికి మంచి స్థలం [ఈ Learn OpenCV కోర్సు](https://learnopencv.com/getting-started-with-opencv/) అవుతుంది. మన పాఠ్యక్రమంలో, OpenCV నేర్చుకోవడం కాదు, కానీ దాన్ని ఎప్పుడు మరియు ఎలా ఉపయోగించవచ్చో కొన్ని ఉదాహరణలు చూపించడం లక్ష్యం.
### చిత్రాలు లోడ్ చేయడం
Python లో చిత్రాలను సౌకర్యవంతంగా NumPy అర్రేలుగా ప్రాతినిధ్యం వహించవచ్చు. ఉదాహరణకు, 320x200 పిక్సెల్‌ల గ్రేస్కేల్ చిత్రాలు 200x320 అర్రేలో నిల్వ చేయబడతాయి, అదే పరిమాణం కలిగిన రంగు చిత్రాలు 200x320x3 ఆకారంలో ఉంటాయి (3 రంగు ఛానెల్స్ కోసం). చిత్రాన్ని లోడ్ చేయడానికి, మీరు క్రింది కోడ్ ఉపయోగించవచ్చు:
```python
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
```
సాంప్రదాయంగా, OpenCV రంగు చిత్రాలకు BGR (బ్లూ-గ్రీన్-రెడ్) ఎంకోడింగ్ ఉపయోగిస్తుంది, Python ఇతర సాధనాలు ఎక్కువగా ఉపయోగించే RGB (రెడ్-గ్రీన్-బ్లూ) కంటే భిన్నంగా ఉంటుంది. చిత్రాన్ని సరిగ్గా చూపించాలంటే, మీరు దాన్ని RGB రంగు స్థలానికి మార్చాలి, ఇది NumPy అర్రేలో డైమెన్షన్లను మార్చడం ద్వారా లేదా OpenCV ఫంక్షన్ పిలవడం ద్వారా చేయవచ్చు:
```python
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
```
అదే `cvtColor` ఫంక్షన్‌ను చిత్రాన్ని గ్రేస్కేల్ లేదా HSV (హ్యూ-సాచురేషన్-వాల్యూ) రంగు స్థలానికి మార్చడానికి కూడా ఉపయోగించవచ్చు.
OpenCV ను ఉపయోగించి వీడియోను ఫ్రేమ్-బై-ఫ్రేమ్ లోడ్ చేయవచ్చు - ఉదాహరణ [OpenCV Notebook](OpenCV.ipynb) లో ఇవ్వబడింది.
### చిత్ర ప్రాసెసింగ్
చిత్రాన్ని న్యూరల్ నెట్‌వర్క్‌కు పంపించే ముందు, మీరు కొన్ని ప్రీ-ప్రాసెసింగ్ దశలను వర్తింపజేయాలనుకోవచ్చు. OpenCV అనేక పనులు చేయగలదు, వాటిలో:
* `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` ఉపయోగించి చిత్రాన్ని **పునఃపరిమాణం** చేయడం
* `im = cv2.medianBlur(im,3)` లేదా `im = cv2.GaussianBlur(im, (3,3), 0)` ఉపయోగించి చిత్రాన్ని **బ్లర్** చేయడం
* చిత్రపు **బ్రైట్‌నెస్ మరియు కాంట్రాస్ట్** ను NumPy అర్రే మార్పులతో మార్చవచ్చు, [ఈ Stackoverflow నోట్లో](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) వివరించబడింది.
* `cv2.threshold`/`cv2.adaptiveThreshold` ఫంక్షన్లను పిలిచి [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ఉపయోగించడం, ఇది బ్రైట్‌నెస్ లేదా కాంట్రాస్ట్ సర్దుబాటు కంటే ఎక్కువగా ఉపయోగపడుతుంది.
* చిత్రానికి వివిధ [మార్పులు](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) వర్తింపజేయడం:
- **[Affine transformations](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** ఉపయోగించి మీరు చిత్రాన్ని తిప్పడం, పునఃపరిమాణం చేయడం మరియు స్క్యూ చేయడం చేయవచ్చు, మరియు మీరు చిత్రంలోని మూడు పాయింట్ల మూలం మరియు గమ్యం స్థానాలను తెలుసుకుంటే. Affine మార్పులు సమాంతర రేఖలను సమాంతరంగా ఉంచుతాయి.
- **[Perspective transformations](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** ఉపయోగించి మీరు చిత్రంలోని 4 పాయింట్ల మూలం మరియు గమ్యం స్థానాలను తెలుసుకుంటే ఉపయోగపడుతుంది. ఉదాహరణకు, మీరు స్మార్ట్‌ఫోన్ కెమెరాతో ఏదైనా కోణం నుండి ఒక చతురస్ర డాక్యుమెంట్ ఫోటో తీసుకుంటే, దాన్ని చతురస్ర చిత్రంగా మార్చడానికి.
* చిత్రంలో కదలికను అర్థం చేసుకోవడానికి **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** ఉపయోగించడం.
## కంప్యూటర్ విజన్ ఉపయోగించే ఉదాహరణలు
మన [OpenCV Notebook](OpenCV.ipynb) లో, కంప్యూటర్ విజన్ ప్రత్యేక పనులు చేయడానికి ఎప్పుడు ఉపయోగించవచ్చో కొన్ని ఉదాహరణలు ఇస్తాము:
* **బ్రెయిల్ పుస్తకం ఫోటో ప్రీ-ప్రాసెసింగ్**. thresholding, ఫీచర్ డిటెక్షన్, perspective transformation మరియు NumPy మార్పులతో వ్యక్తిగత బ్రెయిల్ చిహ్నాలను వేరుచేసి, తరువాత న్యూరల్ నెట్‌వర్క్ ద్వారా వర్గీకరణ కోసం ఎలా సిద్ధం చేయాలో మనం దృష్టి సారిస్తాము.
![Braille Image](../../../../../translated_images/braille.341962ff76b1bd70.te.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c7.te.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d5339.te.png)
----|-----|-----
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
* **ఫ్రేమ్ తేడా ఉపయోగించి వీడియోలో కదలిక గుర్తించడం**. కెమెరా స్థిరంగా ఉంటే, కెమెరా ఫీడ్ నుండి ఫ్రేమ్‌లు ఒకదానితో ఒకటి చాలా సమానంగా ఉంటాయి. ఫ్రేమ్‌లు అర్రేలుగా ప్రాతినిధ్యం వహిస్తాయి, కాబట్టి రెండు వరుస ఫ్రేమ్‌ల అర్రేల మధ్య తేడాను తీసుకుంటే, స్థిరమైన ఫ్రేమ్‌లకు తేడా తక్కువగా ఉంటుంది, మరియు చిత్రంలో గణనీయమైన కదలిక ఉన్నప్పుడు ఎక్కువగా ఉంటుంది.
![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c.te.png)
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
* **Optical Flow ఉపయోగించి కదలిక గుర్తించడం**. [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) వీడియో ఫ్రేమ్‌లలో వ్యక్తిగత పిక్సెల్స్ ఎలా కదులుతున్నాయో అర్థం చేసుకోవడానికి సహాయపడుతుంది. optical flow రెండు రకాలు ఉన్నాయి:
- **Dense Optical Flow** ప్రతి పిక్సెల్ ఎక్కడికి కదులుతుందో చూపించే వెక్టర్ ఫీల్డ్‌ను లెక్కిస్తుంది
- **Sparse Optical Flow** చిత్రంలోని కొన్ని ప్రత్యేక లక్షణాలను (ఉదా: అంచులు) తీసుకుని, వాటి ట్రాజెక్టరీని ఫ్రేమ్ నుండి ఫ్రేమ్ వరకు నిర్మిస్తుంది.
![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a.te.png)
> చిత్రం [OpenCV.ipynb](OpenCV.ipynb) నుండి
## ✍️ ఉదాహరణ నోట్‌బుక్స్: OpenCV [OpenCV ను ప్రాక్టీస్ చేయండి](OpenCV.ipynb)
OpenCV తో కొన్ని ప్రయోగాలు చేద్దాం, [OpenCV Notebook](OpenCV.ipynb) ను అన్వేషిస్తూ
## ముగింపు
కొన్నిసార్లు, కదలిక గుర్తింపు లేదా వేళ్ల చిటికెన గుర్తింపు వంటి సాపేక్షంగా క్లిష్టమైన పనులు పూర్తిగా కంప్యూటర్ విజన్ ద్వారా పరిష్కరించవచ్చు. అందువల్ల, కంప్యూటర్ విజన్ యొక్క ప్రాథమిక సాంకేతికతలను తెలుసుకోవడం, మరియు OpenCV వంటి లైబ్రరీలు ఏమి చేయగలవో తెలుసుకోవడం చాలా ఉపయోగకరం.
## 🚀 సవాలు
AI షో నుండి [ఈ వీడియో](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) చూడండి, Cortic Tigers ప్రాజెక్ట్ గురించి తెలుసుకోండి, వారు రోబోట్ ద్వారా కంప్యూటర్ విజన్ పనులను ప్రజలందరికీ అందుబాటులోకి తీసుకురావడానికి బ్లాక్-ఆధారిత పరిష్కారాన్ని ఎలా నిర్మించారో తెలుసుకోండి. ఈ రంగంలో కొత్త అభ్యాసకులను చేరవేయడంలో సహాయపడే ఇతర ప్రాజెక్టులపై కొంత పరిశోధన చేయండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/12)
## సమీక్ష & స్వీయ అధ్యయనం
optical flow గురించి మరింత చదవండి [ఈ అద్భుతమైన ట్యుటోరియల్‌లో](https://learnopencv.com/optical-flow-in-opencv/).
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు సులభమైన జెస్తర్స్‌తో వీడియో తీసుకుంటారు, మరియు optical flow ఉపయోగించి పైకి/కిందకి/ఎడమ/కుడి కదలికలను వెలికి తీయడం మీ లక్ష్యం.
<img src="../../../../../translated_images/palm-movement.341495f0e9c47da3.te.png" width="30%" alt="Palm Movement Frame"/>
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,110 +1,110 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఆప్టికల్ ఫ్లో ఉపయోగించి చేతి తాళం కదలిక గుర్తింపు\n",
"\n",
"ఈ ప్రయోగం [AI for Beginners Curriculum](http://aka.ms/ai-beginners) లో భాగం.\n",
"\n",
"ఒక వ్యక్తి చేతి తాళం స్థిరమైన నేపథ్యం మీద ఎడమ/కుడి/పై/కింద కదలుతున్న [ఈ వీడియో](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) ను పరిశీలించండి.\n",
"\n",
"<img src=\"../../../../../../translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.te.png\" width=\"30%\" alt=\"Palm Movement Frame\"/>\n",
"\n",
"**మీ లక్ష్యం** ఆప్టికల్ ఫ్లో ఉపయోగించి వీడియోలో ఎక్కడ ఎడమ/కుడి/పై/కింద కదలికలు ఉన్నాయో గుర్తించడం.\n",
"\n",
"లెక్చర్ లో వివరించినట్లుగా వీడియో ఫ్రేమ్ లను పొందడం ప్రారంభించండి:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, లెక్చర్‌లో వివరించినట్లుగా డెన్స్ ఆప్టికల్ ఫ్లో ఫ్రేమ్‌లను లెక్కించండి, మరియు డెన్స్ ఆప్టికల్ ఫ్లోని పోలార్ కోఆర్డినేట్లుగా మార్చండి:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ప్రతి ఆప్టికల్ ఫ్లో ఫ్రేమ్ కోసం దిశల హిస్టోగ్రామ్ నిర్మించండి. ఒక హిస్టోగ్రామ్ ఒక నిర్దిష్ట బిన్ కింద ఎన్ని వెక్టర్లు వస్తున్నాయో చూపిస్తుంది, మరియు ఇది ఫ్రేమ్ పైని వివిధ కదలిక దిశలను వేరుచేస్తుంది.\n",
"\n",
"> మీరు నిర్దిష్ట పరిమితి కంటే తక్కువ పరిమాణం ఉన్న అన్ని వెక్టర్లను జీరో చేయాలని కూడా అనుకోవచ్చు. ఇది వీడియోలో చిన్న అదనపు కదలికలను, ఉదాహరణకు కళ్ళు మరియు తల కదలికలను తొలగిస్తుంది.\n",
"\n",
"కొన్ని ఫ్రేమ్‌ల కోసం హిస్టోగ్రామ్‌లను ప్లాట్ చేయండి.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"హిస్టోగ్రామ్లను చూసేటప్పుడు, కదలిక దిశను ఎలా నిర్ణయించాలో చాలా సులభంగా ఉంటుంది. మీరు ఎగువ/కింద/ఎడమ/కుడి దిశలకు సంబంధించిన బిన్లను ఎంచుకోవాలి, మరియు అవి నిర్దిష్ట పరిమితిని మించిపోయినవి కావాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"అభినందనలు! మీరు పై అన్ని దశలను పూర్తి చేసినట్లయితే, మీరు ప్రయోగశాలను పూర్తి చేసారు!\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"language_info": {
"name": "python"
},
"orig_nbformat": 4,
"coopTranslator": {
"original_hash": "153d9e417e079bf62f8f693002d0deaf",
"translation_date": "2025-11-26T01:25:49+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఆప్టికల్ ఫ్లో ఉపయోగించి చేతి తాళం కదలిక గుర్తింపు\n",
"\n",
"ఈ ప్రయోగం [AI for Beginners Curriculum](http://aka.ms/ai-beginners) లో భాగం.\n",
"\n",
"ఒక వ్యక్తి చేతి తాళం స్థిరమైన నేపథ్యం మీద ఎడమ/కుడి/పై/కింద కదలుతున్న [ఈ వీడియో](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) ను పరిశీలించండి.\n",
"\n",
"<img src=\"../../../../../../translated_images/palm-movement.341495f0e9c47da3.te.png\" width=\"30%\" alt=\"Palm Movement Frame\"/>\n",
"\n",
"**మీ లక్ష్యం** ఆప్టికల్ ఫ్లో ఉపయోగించి వీడియోలో ఎక్కడ ఎడమ/కుడి/పై/కింద కదలికలు ఉన్నాయో గుర్తించడం.\n",
"\n",
"లెక్చర్ లో వివరించినట్లుగా వీడియో ఫ్రేమ్ లను పొందడం ప్రారంభించండి:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, లెక్చర్‌లో వివరించినట్లుగా డెన్స్ ఆప్టికల్ ఫ్లో ఫ్రేమ్‌లను లెక్కించండి, మరియు డెన్స్ ఆప్టికల్ ఫ్లోని పోలార్ కోఆర్డినేట్లుగా మార్చండి:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ప్రతి ఆప్టికల్ ఫ్లో ఫ్రేమ్ కోసం దిశల హిస్టోగ్రామ్ నిర్మించండి. ఒక హిస్టోగ్రామ్ ఒక నిర్దిష్ట బిన్ కింద ఎన్ని వెక్టర్లు వస్తున్నాయో చూపిస్తుంది, మరియు ఇది ఫ్రేమ్ పైని వివిధ కదలిక దిశలను వేరుచేస్తుంది.\n",
"\n",
"> మీరు నిర్దిష్ట పరిమితి కంటే తక్కువ పరిమాణం ఉన్న అన్ని వెక్టర్లను జీరో చేయాలని కూడా అనుకోవచ్చు. ఇది వీడియోలో చిన్న అదనపు కదలికలను, ఉదాహరణకు కళ్ళు మరియు తల కదలికలను తొలగిస్తుంది.\n",
"\n",
"కొన్ని ఫ్రేమ్‌ల కోసం హిస్టోగ్రామ్‌లను ప్లాట్ చేయండి.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"హిస్టోగ్రామ్లను చూసేటప్పుడు, కదలిక దిశను ఎలా నిర్ణయించాలో చాలా సులభంగా ఉంటుంది. మీరు ఎగువ/కింద/ఎడమ/కుడి దిశలకు సంబంధించిన బిన్లను ఎంచుకోవాలి, మరియు అవి నిర్దిష్ట పరిమితిని మించిపోయినవి కావాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Code here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"అభినందనలు! మీరు పై అన్ని దశలను పూర్తి చేసినట్లయితే, మీరు ప్రయోగశాలను పూర్తి చేసారు!\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"language_info": {
"name": "python"
},
"orig_nbformat": 4,
"coopTranslator": {
"original_hash": "153d9e417e079bf62f8f693002d0deaf",
"translation_date": "2025-11-26T01:25:49+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -1,37 +1,37 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3d53d6409f80970f7281a45dee35328a",
"translation_date": "2025-11-25T22:40:37+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/lab/README.md",
"language_code": "te"
}
-->
# ఆప్టికల్ ఫ్లో ఉపయోగించి కదలికలను గుర్తించడం
[AI for Beginners Curriculum](https://aka.ms/ai-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
[ఈ వీడియో](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4)ను పరిశీలించండి, ఇందులో ఒక వ్యక్తి చేతి తలుపు స్థిరమైన నేపథ్యంపై ఎడమ/కుడి/పై/కింద కదులుతుంది.
<img src="../../../../../../translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.te.png" width="30%" alt="Palm Movement Frame"/>
**మీ లక్ష్యం** ఆప్టికల్ ఫ్లో ఉపయోగించి వీడియోలో ఎక్కడ ఎడమ/కుడి/పై/కింద కదలికలు ఉన్నాయో గుర్తించడం.
**విస్తృత లక్ష్యం** చర్మ రంగును ఉపయోగించి చేతి తలుపు/వెళ్ళు కదలికను ట్రాక్ చేయడం, [ఈ బ్లాగ్ పోస్ట్](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) లేదా [ఇక్కడ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) వివరించినట్లుగా.
## ప్రారంభ నోట్బుక్
ల్యాబ్ ప్రారంభించడానికి [MovementDetection.ipynb](MovementDetection.ipynb)ని తెరవండి
## ముఖ్యాంశం
కొన్నిసార్లు, కదలిక గుర్తింపు లేదా వేళ్ల చివరి గుర్తింపు వంటి సాపేక్షంగా క్లిష్టమైన పనులను కంప్యూటర్ విజన్ ద్వారా మాత్రమే పరిష్కరించవచ్చు. అందువల్ల, OpenCV వంటి లైబ్రరీలు ఏమి చేయగలవో తెలుసుకోవడం చాలా ఉపయోగకరం.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3d53d6409f80970f7281a45dee35328a",
"translation_date": "2025-11-25T22:40:37+00:00",
"source_file": "lessons/4-ComputerVision/06-IntroCV/lab/README.md",
"language_code": "te"
}
-->
# ఆప్టికల్ ఫ్లో ఉపయోగించి కదలికలను గుర్తించడం
[AI for Beginners Curriculum](https://aka.ms/ai-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
[ఈ వీడియో](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4)ను పరిశీలించండి, ఇందులో ఒక వ్యక్తి చేతి తలుపు స్థిరమైన నేపథ్యంపై ఎడమ/కుడి/పై/కింద కదులుతుంది.
<img src="../../../../../../translated_images/palm-movement.341495f0e9c47da3.te.png" width="30%" alt="Palm Movement Frame"/>
**మీ లక్ష్యం** ఆప్టికల్ ఫ్లో ఉపయోగించి వీడియోలో ఎక్కడ ఎడమ/కుడి/పై/కింద కదలికలు ఉన్నాయో గుర్తించడం.
**విస్తృత లక్ష్యం** చర్మ రంగును ఉపయోగించి చేతి తలుపు/వెళ్ళు కదలికను ట్రాక్ చేయడం, [ఈ బ్లాగ్ పోస్ట్](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) లేదా [ఇక్కడ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) వివరించినట్లుగా.
## ప్రారంభ నోట్బుక్
ల్యాబ్ ప్రారంభించడానికి [MovementDetection.ipynb](MovementDetection.ipynb)ని తెరవండి
## ముఖ్యాంశం
కొన్నిసార్లు, కదలిక గుర్తింపు లేదా వేళ్ల చివరి గుర్తింపు వంటి సాపేక్షంగా క్లిష్టమైన పనులను కంప్యూటర్ విజన్ ద్వారా మాత్రమే పరిష్కరించవచ్చు. అందువల్ల, OpenCV వంటి లైబ్రరీలు ఏమి చేయగలవో తెలుసుకోవడం చాలా ఉపయోగకరం.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,77 +1,77 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "53faab85adfcebd8c10bcd71dc2fa557",
"translation_date": "2025-11-25T22:02:13+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md",
"language_code": "te"
}
-->
# ప్రసిద్ధి చెందిన CNN నిర్మాణాలు
### VGG-16
VGG-16 అనేది 2014లో ImageNet టాప్-5 వర్గీకరణలో 92.7% ఖచ్చితత్వాన్ని సాధించిన నెట్‌వర్క్. దీని లేయర్ నిర్మాణం ఈ విధంగా ఉంది:
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.te.jpg)
మీరు చూడగలిగినట్లుగా, VGG సంప్రదాయమైన పిరమిడ్ నిర్మాణాన్ని అనుసరిస్తుంది, ఇది కన్‌వల్యూషన్-పూలింగ్ లేయర్ల శ్రేణి.
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.te.jpg)
> చిత్రం [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) నుండి
### ResNet
ResNet అనేది 2015లో Microsoft Research ప్రతిపాదించిన మోడల్స్ కుటుంబం. ResNet యొక్క ప్రధాన ఆలోచన **రెసిడ్యువల్ బ్లాక్స్** ఉపయోగించడం:
<img src="../../../../../translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.te.png" width="300"/>
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1512.03385.pdf) నుండి
ఐడెంటిటీ పాస్-త్రూ ఉపయోగించే కారణం, మన లేయర్ గత లేయర్ ఫలితం మరియు రెసిడ్యువల్ బ్లాక్ అవుట్పుట్ మధ్య **తేడా**ను అంచనా వేయడం - అందుకే దీనికి *రెసిడ్యువల్* అనే పేరు. ఆ బ్లాక్స్ శిక్షణకు చాలా సులభం, మరియు వందల సంఖ్యలో బ్లాక్స్ కలిగిన నెట్‌వర్క్‌లను నిర్మించవచ్చు (సాధారణ వేరియంట్లు ResNet-52, ResNet-101, ResNet-152).
ఈ నెట్‌వర్క్‌ను డేటాసెట్‌కు అనుగుణంగా తన సంక్లిష్టతను సర్దుబాటు చేసుకునేలా కూడా భావించవచ్చు. మొదట శిక్షణ ప్రారంభంలో, వెయిట్లు చిన్నవిగా ఉంటాయి, మరియు ఎక్కువ భాగం సిగ్నల్ ఐడెంటిటీ లేయర్ల ద్వారా వెళుతుంది. శిక్షణ కొనసాగుతుండగా వెయిట్లు పెరిగి, నెట్‌వర్క్ పరామితుల ప్రాముఖ్యత పెరుగుతుంది, తద్వారా నెట్‌వర్క్ అవసరమైన వ్యక్తీకరణ శక్తిని సరిగ్గా వర్గీకరించడానికి సర్దుబాటు అవుతుంది.
### Google Inception
Google Inception నిర్మాణం ఈ ఆలోచనను మరింత ముందుకు తీసుకెళ్తుంది, ప్రతి నెట్‌వర్క్ లేయర్‌ను అనేక మార్గాల సమ్మేళనంగా నిర్మిస్తుంది:
<img src="../../../../../translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.te.png" width="400"/>
> చిత్రం [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) నుండి
ఇక్కడ, 1x1 కన్‌వల్యూషన్స్ పాత్రను ప్రత్యేకంగా గుర్తించాలి, ఎందుకంటే మొదట అవి అర్థం కాకపోవచ్చు. 1x1 ఫిల్టర్‌తో ఇమేజ్‌ను ఎందుకు స్కాన్ చేయాలి? అయితే, కన్‌వల్యూషన్ ఫిల్టర్లు అనేక డెప్త్ ఛానల్స్‌తో పనిచేస్తాయని గుర్తుంచుకోవాలి (మూలంగా - RGB రంగులు, తరువాతి లేయర్లలో - వివిధ ఫిల్టర్ల ఛానల్స్), 1x1 కన్‌వల్యూషన్ ఆ ఇన్‌పుట్ ఛానల్స్‌ను వేర్వేరు శిక్షణీయ వెయిట్లతో కలిపేందుకు ఉపయోగిస్తారు. దీన్ని ఛానల్ డైమెన్షన్‌పై డౌన్‌సాంప్లింగ్ (పూలింగ్)గా కూడా చూడవచ్చు.
ఇది గురించి [ఒక మంచి బ్లాగ్ పోస్ట్](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) మరియు [మూల పేపర్](https://arxiv.org/pdf/1312.4400.pdf) ఉన్నాయి.
### MobileNet
MobileNet అనేది చిన్న పరిమాణం కలిగిన, మొబైల్ పరికరాలకు అనుకూలమైన మోడల్స్ కుటుంబం. మీరు వనరులు తక్కువగా ఉన్నప్పుడు, కొంత ఖచ్చితత్వం త్యాగం చేసుకోవడానికి వీటిని ఉపయోగించవచ్చు. వీటి వెనుక ప్రధాన ఆలోచన **డెప్త్‌వైజ్ సెపరబుల్ కన్‌వల్యూషన్**, ఇది కన్‌వల్యూషన్ ఫిల్టర్లను స్థల కన్‌వల్యూషన్స్ మరియు డెప్త్ ఛానల్స్‌పై 1x1 కన్‌వల్యూషన్ సమ్మేళనంగా ప్రదర్శించడానికి అనుమతిస్తుంది. ఇది పరామితుల సంఖ్యను గణనీయంగా తగ్గించి, నెట్‌వర్క్ పరిమాణాన్ని చిన్నదిగా చేస్తుంది, అలాగే తక్కువ డేటాతో శిక్షణ సులభం చేస్తుంది.
MobileNet గురించి [ఒక మంచి బ్లాగ్ పోస్ట్](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) ఇక్కడ ఉంది.
## ముగింపు
ఈ యూనిట్‌లో, మీరు కంప్యూటర్ విజన్ న్యూరల్ నెట్‌వర్క్స్ వెనుక ఉన్న ప్రధాన భావన - కన్‌వల్యూషనల్ నెట్‌వర్క్స్ గురించి నేర్చుకున్నారు. చిత్ర వర్గీకరణ, ఆబ్జెక్ట్ డిటెక్షన్, మరియు ఇమేజ్ జనరేషన్ నెట్‌వర్క్స్ అన్నీ CNNలపై ఆధారపడి ఉంటాయి, కేవలం ఎక్కువ లేయర్లు మరియు కొన్ని అదనపు శిక్షణ చిట్కాలతో.
## 🚀 సవాలు
సహాయక నోటుబుక్స్‌లో, ఎక్కువ ఖచ్చితత్వం సాధించడానికి సూచనలు చివరలో ఉన్నాయి. మీరు ప్రయోగాలు చేసి మరింత ఖచ్చితత్వం సాధించగలరా చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/14)
## సమీక్ష & స్వీయ అధ్యయనం
CNNలు సాధారణంగా కంప్యూటర్ విజన్ పనుల కోసం ఉపయోగిస్తారు, కానీ అవి స్థిర పరిమాణపు నమూనాలను వెలికి తీయడంలో మంచి పనితీరు చూపిస్తాయి. ఉదాహరణకు, మనం శబ్దాలతో పని చేస్తే, ఆడియో సిగ్నల్‌లో కొన్ని నిర్దిష్ట నమూనాలను కనుగొనడానికి CNNలను ఉపయోగించవచ్చు - ఈ సందర్భంలో ఫిల్టర్లు 1-డైమెన్షనల్ (1D-CNN) అవుతాయి. అలాగే, కొన్ని సందర్భాల్లో 3D-CNN ఉపయోగించి బహుమితీయ స్థలంలో ఫీచర్లను వెలికి తీయవచ్చు, ఉదాహరణకు వీడియోలో జరిగే కొన్ని సంఘటనలు - CNN సమయానుగుణంగా ఫీచర్ మార్పుల నమూనాలను పట్టుకోవచ్చు. CNNలతో చేయగల ఇతర పనుల గురించి సమీక్ష మరియు స్వీయ అధ్యయనం చేయండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు వివిధ పిల్లి మరియు కుక్క జాతులను వర్గీకరించాల్సి ఉంటుంది. ఈ చిత్రాలు MNIST డేటాసెట్ కంటే క్లిష్టమైనవి మరియు పెద్ద పరిమాణంలో ఉంటాయి, అలాగే 10 కంటే ఎక్కువ తరగతులు ఉన్నాయి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "53faab85adfcebd8c10bcd71dc2fa557",
"translation_date": "2025-11-25T22:02:13+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md",
"language_code": "te"
}
-->
# ప్రసిద్ధి చెందిన CNN నిర్మాణాలు
### VGG-16
VGG-16 అనేది 2014లో ImageNet టాప్-5 వర్గీకరణలో 92.7% ఖచ్చితత్వాన్ని సాధించిన నెట్‌వర్క్. దీని లేయర్ నిర్మాణం ఈ విధంగా ఉంది:
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51ba.te.jpg)
మీరు చూడగలిగినట్లుగా, VGG సంప్రదాయమైన పిరమిడ్ నిర్మాణాన్ని అనుసరిస్తుంది, ఇది కన్‌వల్యూషన్-పూలింగ్ లేయర్ల శ్రేణి.
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49f.te.jpg)
> చిత్రం [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) నుండి
### ResNet
ResNet అనేది 2015లో Microsoft Research ప్రతిపాదించిన మోడల్స్ కుటుంబం. ResNet యొక్క ప్రధాన ఆలోచన **రెసిడ్యువల్ బ్లాక్స్** ఉపయోగించడం:
<img src="../../../../../translated_images/resnet-block.aba4ccbcc0944434.te.png" width="300"/>
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1512.03385.pdf) నుండి
ఐడెంటిటీ పాస్-త్రూ ఉపయోగించే కారణం, మన లేయర్ గత లేయర్ ఫలితం మరియు రెసిడ్యువల్ బ్లాక్ అవుట్పుట్ మధ్య **తేడా**ను అంచనా వేయడం - అందుకే దీనికి *రెసిడ్యువల్* అనే పేరు. ఆ బ్లాక్స్ శిక్షణకు చాలా సులభం, మరియు వందల సంఖ్యలో బ్లాక్స్ కలిగిన నెట్‌వర్క్‌లను నిర్మించవచ్చు (సాధారణ వేరియంట్లు ResNet-52, ResNet-101, ResNet-152).
ఈ నెట్‌వర్క్‌ను డేటాసెట్‌కు అనుగుణంగా తన సంక్లిష్టతను సర్దుబాటు చేసుకునేలా కూడా భావించవచ్చు. మొదట శిక్షణ ప్రారంభంలో, వెయిట్లు చిన్నవిగా ఉంటాయి, మరియు ఎక్కువ భాగం సిగ్నల్ ఐడెంటిటీ లేయర్ల ద్వారా వెళుతుంది. శిక్షణ కొనసాగుతుండగా వెయిట్లు పెరిగి, నెట్‌వర్క్ పరామితుల ప్రాముఖ్యత పెరుగుతుంది, తద్వారా నెట్‌వర్క్ అవసరమైన వ్యక్తీకరణ శక్తిని సరిగ్గా వర్గీకరించడానికి సర్దుబాటు అవుతుంది.
### Google Inception
Google Inception నిర్మాణం ఈ ఆలోచనను మరింత ముందుకు తీసుకెళ్తుంది, ప్రతి నెట్‌వర్క్ లేయర్‌ను అనేక మార్గాల సమ్మేళనంగా నిర్మిస్తుంది:
<img src="../../../../../translated_images/inception.a6605b85bcbc6f52.te.png" width="400"/>
> చిత్రం [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) నుండి
ఇక్కడ, 1x1 కన్‌వల్యూషన్స్ పాత్రను ప్రత్యేకంగా గుర్తించాలి, ఎందుకంటే మొదట అవి అర్థం కాకపోవచ్చు. 1x1 ఫిల్టర్‌తో ఇమేజ్‌ను ఎందుకు స్కాన్ చేయాలి? అయితే, కన్‌వల్యూషన్ ఫిల్టర్లు అనేక డెప్త్ ఛానల్స్‌తో పనిచేస్తాయని గుర్తుంచుకోవాలి (మూలంగా - RGB రంగులు, తరువాతి లేయర్లలో - వివిధ ఫిల్టర్ల ఛానల్స్), 1x1 కన్‌వల్యూషన్ ఆ ఇన్‌పుట్ ఛానల్స్‌ను వేర్వేరు శిక్షణీయ వెయిట్లతో కలిపేందుకు ఉపయోగిస్తారు. దీన్ని ఛానల్ డైమెన్షన్‌పై డౌన్‌సాంప్లింగ్ (పూలింగ్)గా కూడా చూడవచ్చు.
ఇది గురించి [ఒక మంచి బ్లాగ్ పోస్ట్](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) మరియు [మూల పేపర్](https://arxiv.org/pdf/1312.4400.pdf) ఉన్నాయి.
### MobileNet
MobileNet అనేది చిన్న పరిమాణం కలిగిన, మొబైల్ పరికరాలకు అనుకూలమైన మోడల్స్ కుటుంబం. మీరు వనరులు తక్కువగా ఉన్నప్పుడు, కొంత ఖచ్చితత్వం త్యాగం చేసుకోవడానికి వీటిని ఉపయోగించవచ్చు. వీటి వెనుక ప్రధాన ఆలోచన **డెప్త్‌వైజ్ సెపరబుల్ కన్‌వల్యూషన్**, ఇది కన్‌వల్యూషన్ ఫిల్టర్లను స్థల కన్‌వల్యూషన్స్ మరియు డెప్త్ ఛానల్స్‌పై 1x1 కన్‌వల్యూషన్ సమ్మేళనంగా ప్రదర్శించడానికి అనుమతిస్తుంది. ఇది పరామితుల సంఖ్యను గణనీయంగా తగ్గించి, నెట్‌వర్క్ పరిమాణాన్ని చిన్నదిగా చేస్తుంది, అలాగే తక్కువ డేటాతో శిక్షణ సులభం చేస్తుంది.
MobileNet గురించి [ఒక మంచి బ్లాగ్ పోస్ట్](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) ఇక్కడ ఉంది.
## ముగింపు
ఈ యూనిట్‌లో, మీరు కంప్యూటర్ విజన్ న్యూరల్ నెట్‌వర్క్స్ వెనుక ఉన్న ప్రధాన భావన - కన్‌వల్యూషనల్ నెట్‌వర్క్స్ గురించి నేర్చుకున్నారు. చిత్ర వర్గీకరణ, ఆబ్జెక్ట్ డిటెక్షన్, మరియు ఇమేజ్ జనరేషన్ నెట్‌వర్క్స్ అన్నీ CNNలపై ఆధారపడి ఉంటాయి, కేవలం ఎక్కువ లేయర్లు మరియు కొన్ని అదనపు శిక్షణ చిట్కాలతో.
## 🚀 సవాలు
సహాయక నోటుబుక్స్‌లో, ఎక్కువ ఖచ్చితత్వం సాధించడానికి సూచనలు చివరలో ఉన్నాయి. మీరు ప్రయోగాలు చేసి మరింత ఖచ్చితత్వం సాధించగలరా చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/14)
## సమీక్ష & స్వీయ అధ్యయనం
CNNలు సాధారణంగా కంప్యూటర్ విజన్ పనుల కోసం ఉపయోగిస్తారు, కానీ అవి స్థిర పరిమాణపు నమూనాలను వెలికి తీయడంలో మంచి పనితీరు చూపిస్తాయి. ఉదాహరణకు, మనం శబ్దాలతో పని చేస్తే, ఆడియో సిగ్నల్‌లో కొన్ని నిర్దిష్ట నమూనాలను కనుగొనడానికి CNNలను ఉపయోగించవచ్చు - ఈ సందర్భంలో ఫిల్టర్లు 1-డైమెన్షనల్ (1D-CNN) అవుతాయి. అలాగే, కొన్ని సందర్భాల్లో 3D-CNN ఉపయోగించి బహుమితీయ స్థలంలో ఫీచర్లను వెలికి తీయవచ్చు, ఉదాహరణకు వీడియోలో జరిగే కొన్ని సంఘటనలు - CNN సమయానుగుణంగా ఫీచర్ మార్పుల నమూనాలను పట్టుకోవచ్చు. CNNలతో చేయగల ఇతర పనుల గురించి సమీక్ష మరియు స్వీయ అధ్యయనం చేయండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ల్యాబ్‌లో, మీరు వివిధ పిల్లి మరియు కుక్క జాతులను వర్గీకరించాల్సి ఉంటుంది. ఈ చిత్రాలు MNIST డేటాసెట్ కంటే క్లిష్టమైనవి మరియు పెద్ద పరిమాణంలో ఉంటాయి, అలాగే 10 కంటే ఎక్కువ తరగతులు ఉన్నాయి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,73 +1,73 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a560d5b845962cf33dc102266e409568",
"translation_date": "2025-11-25T22:05:38+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/README.md",
"language_code": "te"
}
-->
# కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్
ముందుగా మనం చూశాం, న్యూరల్ నెట్‌వర్క్స్ చిత్రాలను నిర్వహించడంలో చాలా మంచి పనితీరు చూపిస్తాయి, మరియు ఒకే లేయర్ పెర్సెప్ట్రాన్ కూడా MNIST డేటాసెట్ నుండి చేతితో వ్రాసిన అంకెలను సరైన ఖచ్చితత్వంతో గుర్తించగలదు. అయితే, MNIST డేటాసెట్ చాలా ప్రత్యేకమైనది, అందులో అన్ని అంకెలు చిత్రంలో మధ్యలోనే ఉంటాయి, ఇది పనిని సులభతరం చేస్తుంది.
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/13)
వాస్తవ జీవితంలో, చిత్రంలో వస్తువుల ఖచ్చితమైన స్థానం ఏదైనా ఉన్నా వాటిని గుర్తించగలగాలి. కంప్యూటర్ విజన్ సాధారణ వర్గీకరణతో భిన్నంగా ఉంటుంది, ఎందుకంటే మనం చిత్రంలో ఒక నిర్దిష్ట వస్తువును కనుగొనడానికి ప్రయత్నిస్తున్నప్పుడు, మనం కొన్ని ప్రత్యేక **నమూనాలు** మరియు వాటి సంయోజనాలను వెతుకుతుంటాము. ఉదాహరణకు, పిల్లిని వెతుకుతున్నప్పుడు, మొదట మనం ఆడవారపు గీతలు (horizontal lines) కోసం చూస్తాము, అవి మీసాలుగా ఉండవచ్చు, ఆ తర్వాత మీసాల సంయోజనం మనకు అది పిల్లి చిత్రమని చెబుతుంది. సంబంధిత స్థానం మరియు కొన్ని నమూనాల ఉనికి ముఖ్యం, కానీ వాటి ఖచ్చితమైన స్థానం ముఖ్యం కాదు.
నమూనాలను తీసుకోవడానికి, మనం **కన్వల్యూషనల్ ఫిల్టర్స్** అనే భావనను ఉపయోగిస్తాము. మీరు తెలుసుకున్నట్లుగా, చిత్రం 2D-మ్యాట్రిక్స్ లేదా రంగు లోతుతో 3D-టెన్సర్ ద్వారా ప్రాతినిధ్యం వహిస్తుంది. ఫిల్టర్ వర్తింపజేయడం అంటే, మనం తక్కువ పరిమాణం గల **ఫిల్టర్ కర్నెల్** మ్యాట్రిక్స్ తీసుకుని, అసలు చిత్రంలోని ప్రతి పిక్సెల్ కోసం పక్కనున్న పాయింట్లతో బరువు గల సగటును లెక్కించడం. దీన్ని ఒక చిన్న విండో మొత్తం చిత్రంపై స్లయిడ్ అవుతూ, ఫిల్టర్ కర్నెల్ మ్యాట్రిక్స్ లోని బరువుల ప్రకారం అన్ని పిక్సెల్స్ సగటు తీసుకోవడం లాగా చూడవచ్చు.
![Vertical Edge Filter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.te.png) | ![Horizontal Edge Filter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.te.png)
----|----
> చిత్రాన్ని Dmitry Soshnikov అందించారు
ఉదాహరణకు, మనం MNIST అంకెలపై 3x3 నిలువు అంచు మరియు ఆడవారపు అంచు ఫిల్టర్స్ వర్తింపజేస్తే, అసలు చిత్రంలో నిలువు మరియు ఆడవారపు అంచులు ఉన్న చోట హైలైట్స్ (ఉదా: ఎక్కువ విలువలు) పొందవచ్చు. కాబట్టి ఆ రెండు ఫిల్టర్స్ అంచులను "వెతకడానికి" ఉపయోగించవచ్చు. అలాగే, మనం ఇతర తక్కువ స్థాయి నమూనాలను వెతకడానికి వివిధ ఫిల్టర్స్ రూపొందించవచ్చు:
<img src="../../../../../translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.te.jpg" width="500" align="center"/>
> [Leung-Malik ఫిల్టర్ బ్యాంక్](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) చిత్రం
కానీ, మనం కొన్ని నమూనాలను మానవీయంగా తీసుకునేలా ఫిల్టర్స్ రూపొందించగలిగినా, నెట్‌వర్క్‌ను అలాంటి విధంగా రూపొందించవచ్చు, అది నమూనాలను స్వయంచాలకంగా నేర్చుకుంటుంది. ఇది CNN వెనుక ఉన్న ప్రధాన ఆలోచనలలో ఒకటి.
## CNN వెనుక ప్రధాన ఆలోచనలు
CNNలు పనిచేసే విధానం ఈ క్రింది ముఖ్యమైన ఆలోచనలపై ఆధారపడి ఉంటుంది:
* కన్వల్యూషనల్ ఫిల్టర్స్ నమూనాలను తీసుకోవచ్చు
* ఫిల్టర్స్ స్వయంచాలకంగా శిక్షణ పొందేలా నెట్‌వర్క్‌ను రూపొందించవచ్చు
* అసలు చిత్రంలో మాత్రమే కాకుండా, ఉన్నత స్థాయి లక్షణాలలో కూడా నమూనాలను కనుగొనడానికి అదే విధానాన్ని ఉపయోగించవచ్చు. కాబట్టి CNN లక్షణాల తీసుకోవడం తక్కువ స్థాయి పిక్సెల్ సంయోజనాల నుండి మొదలుకొని, చిత్ర భాగాల ఉన్నత స్థాయి సంయోజనాల వరకు లక్షణాల హైరార్కీపై పనిచేస్తుంది.
![Hierarchical Feature Extraction](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.te.png)
> [Hislop-Lynch పేపర్](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) నుండి చిత్రం, వారి [గవేషణ](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) ఆధారంగా
## ✍️ వ్యాయామాలు: కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్
కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో, మరియు శిక్షణ పొందగల ఫిల్టర్స్ ఎలా సాధించవచ్చో తెలుసుకోవడానికి, సంబంధిత నోట్‌బుక్స్ ద్వారా కొనసాగుదాం:
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ - PyTorch](ConvNetsPyTorch.ipynb)
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ - TensorFlow](ConvNetsTF.ipynb)
## పైరమిడ్ ఆర్కిటెక్చర్
చిత్ర ప్రాసెసింగ్ కోసం ఉపయోగించే చాలా CNNలు పైరమిడ్ ఆర్కిటెక్చర్‌ను అనుసరిస్తాయి. అసలు చిత్రాలకు వర్తింపజేసే మొదటి కన్వల్యూషనల్ లేయర్ సాధారణంగా తక్కువ సంఖ్యలో ఫిల్టర్స్ (8-16) కలిగి ఉంటుంది, ఇవి వివిధ పిక్సెల్ సంయోజనాలకు అనుగుణంగా ఉంటాయి, ఉదాహరణకు ఆడవారపు/నిలువు గీతలు. తదుపరి స్థాయిలో, నెట్‌వర్క్ యొక్క స్థల పరిమాణం తగ్గించి, ఫిల్టర్స్ సంఖ్య పెంచుతారు, ఇది సులభ లక్షణాల మరిన్ని సంయోజనాలకు అనుగుణంగా ఉంటుంది. ప్రతి లేయర్‌తో, చివరి వర్గీకరణ దిశగా పోతూ, చిత్ర స్థల పరిమాణం తగ్గి, ఫిల్టర్స్ సంఖ్య పెరుగుతుంది.
ఉదాహరణకు, 2014లో ImageNet టాప్-5 వర్గీకరణలో 92.7% ఖచ్చితత్వం సాధించిన VGG-16 ఆర్కిటెక్చర్‌ను చూద్దాం:
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.te.jpg)
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.te.jpg)
> [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) నుండి చిత్రం
## ప్రసిద్ధమైన CNN ఆర్కిటెక్చర్స్
[ప్రసిద్ధమైన CNN ఆర్కిటెక్చర్స్ గురించి మీ అధ్యయనాన్ని కొనసాగించండి](CNN_Architectures.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు డాక్యుమెంట్ దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a560d5b845962cf33dc102266e409568",
"translation_date": "2025-11-25T22:05:38+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/README.md",
"language_code": "te"
}
-->
# కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్
ముందుగా మనం చూశాం, న్యూరల్ నెట్‌వర్క్స్ చిత్రాలను నిర్వహించడంలో చాలా మంచి పనితీరు చూపిస్తాయి, మరియు ఒకే లేయర్ పెర్సెప్ట్రాన్ కూడా MNIST డేటాసెట్ నుండి చేతితో వ్రాసిన అంకెలను సరైన ఖచ్చితత్వంతో గుర్తించగలదు. అయితే, MNIST డేటాసెట్ చాలా ప్రత్యేకమైనది, అందులో అన్ని అంకెలు చిత్రంలో మధ్యలోనే ఉంటాయి, ఇది పనిని సులభతరం చేస్తుంది.
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/13)
వాస్తవ జీవితంలో, చిత్రంలో వస్తువుల ఖచ్చితమైన స్థానం ఏదైనా ఉన్నా వాటిని గుర్తించగలగాలి. కంప్యూటర్ విజన్ సాధారణ వర్గీకరణతో భిన్నంగా ఉంటుంది, ఎందుకంటే మనం చిత్రంలో ఒక నిర్దిష్ట వస్తువును కనుగొనడానికి ప్రయత్నిస్తున్నప్పుడు, మనం కొన్ని ప్రత్యేక **నమూనాలు** మరియు వాటి సంయోజనాలను వెతుకుతుంటాము. ఉదాహరణకు, పిల్లిని వెతుకుతున్నప్పుడు, మొదట మనం ఆడవారపు గీతలు (horizontal lines) కోసం చూస్తాము, అవి మీసాలుగా ఉండవచ్చు, ఆ తర్వాత మీసాల సంయోజనం మనకు అది పిల్లి చిత్రమని చెబుతుంది. సంబంధిత స్థానం మరియు కొన్ని నమూనాల ఉనికి ముఖ్యం, కానీ వాటి ఖచ్చితమైన స్థానం ముఖ్యం కాదు.
నమూనాలను తీసుకోవడానికి, మనం **కన్వల్యూషనల్ ఫిల్టర్స్** అనే భావనను ఉపయోగిస్తాము. మీరు తెలుసుకున్నట్లుగా, చిత్రం 2D-మ్యాట్రిక్స్ లేదా రంగు లోతుతో 3D-టెన్సర్ ద్వారా ప్రాతినిధ్యం వహిస్తుంది. ఫిల్టర్ వర్తింపజేయడం అంటే, మనం తక్కువ పరిమాణం గల **ఫిల్టర్ కర్నెల్** మ్యాట్రిక్స్ తీసుకుని, అసలు చిత్రంలోని ప్రతి పిక్సెల్ కోసం పక్కనున్న పాయింట్లతో బరువు గల సగటును లెక్కించడం. దీన్ని ఒక చిన్న విండో మొత్తం చిత్రంపై స్లయిడ్ అవుతూ, ఫిల్టర్ కర్నెల్ మ్యాట్రిక్స్ లోని బరువుల ప్రకారం అన్ని పిక్సెల్స్ సగటు తీసుకోవడం లాగా చూడవచ్చు.
![Vertical Edge Filter](../../../../../translated_images/filter-vert.b7148390ca0bc356.te.png) | ![Horizontal Edge Filter](../../../../../translated_images/filter-horiz.59b80ed4feb946ef.te.png)
----|----
> చిత్రాన్ని Dmitry Soshnikov అందించారు
ఉదాహరణకు, మనం MNIST అంకెలపై 3x3 నిలువు అంచు మరియు ఆడవారపు అంచు ఫిల్టర్స్ వర్తింపజేస్తే, అసలు చిత్రంలో నిలువు మరియు ఆడవారపు అంచులు ఉన్న చోట హైలైట్స్ (ఉదా: ఎక్కువ విలువలు) పొందవచ్చు. కాబట్టి ఆ రెండు ఫిల్టర్స్ అంచులను "వెతకడానికి" ఉపయోగించవచ్చు. అలాగే, మనం ఇతర తక్కువ స్థాయి నమూనాలను వెతకడానికి వివిధ ఫిల్టర్స్ రూపొందించవచ్చు:
<img src="../../../../../translated_images/lmfilters.ea9e4868a82cf74c.te.jpg" width="500" align="center"/>
> [Leung-Malik ఫిల్టర్ బ్యాంక్](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) చిత్రం
కానీ, మనం కొన్ని నమూనాలను మానవీయంగా తీసుకునేలా ఫిల్టర్స్ రూపొందించగలిగినా, నెట్‌వర్క్‌ను అలాంటి విధంగా రూపొందించవచ్చు, అది నమూనాలను స్వయంచాలకంగా నేర్చుకుంటుంది. ఇది CNN వెనుక ఉన్న ప్రధాన ఆలోచనలలో ఒకటి.
## CNN వెనుక ప్రధాన ఆలోచనలు
CNNలు పనిచేసే విధానం ఈ క్రింది ముఖ్యమైన ఆలోచనలపై ఆధారపడి ఉంటుంది:
* కన్వల్యూషనల్ ఫిల్టర్స్ నమూనాలను తీసుకోవచ్చు
* ఫిల్టర్స్ స్వయంచాలకంగా శిక్షణ పొందేలా నెట్‌వర్క్‌ను రూపొందించవచ్చు
* అసలు చిత్రంలో మాత్రమే కాకుండా, ఉన్నత స్థాయి లక్షణాలలో కూడా నమూనాలను కనుగొనడానికి అదే విధానాన్ని ఉపయోగించవచ్చు. కాబట్టి CNN లక్షణాల తీసుకోవడం తక్కువ స్థాయి పిక్సెల్ సంయోజనాల నుండి మొదలుకొని, చిత్ర భాగాల ఉన్నత స్థాయి సంయోజనాల వరకు లక్షణాల హైరార్కీపై పనిచేస్తుంది.
![Hierarchical Feature Extraction](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb64.te.png)
> [Hislop-Lynch పేపర్](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) నుండి చిత్రం, వారి [గవేషణ](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) ఆధారంగా
## ✍️ వ్యాయామాలు: కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్
కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ ఎలా పనిచేస్తాయో, మరియు శిక్షణ పొందగల ఫిల్టర్స్ ఎలా సాధించవచ్చో తెలుసుకోవడానికి, సంబంధిత నోట్‌బుక్స్ ద్వారా కొనసాగుదాం:
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ - PyTorch](ConvNetsPyTorch.ipynb)
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్ - TensorFlow](ConvNetsTF.ipynb)
## పైరమిడ్ ఆర్కిటెక్చర్
చిత్ర ప్రాసెసింగ్ కోసం ఉపయోగించే చాలా CNNలు పైరమిడ్ ఆర్కిటెక్చర్‌ను అనుసరిస్తాయి. అసలు చిత్రాలకు వర్తింపజేసే మొదటి కన్వల్యూషనల్ లేయర్ సాధారణంగా తక్కువ సంఖ్యలో ఫిల్టర్స్ (8-16) కలిగి ఉంటుంది, ఇవి వివిధ పిక్సెల్ సంయోజనాలకు అనుగుణంగా ఉంటాయి, ఉదాహరణకు ఆడవారపు/నిలువు గీతలు. తదుపరి స్థాయిలో, నెట్‌వర్క్ యొక్క స్థల పరిమాణం తగ్గించి, ఫిల్టర్స్ సంఖ్య పెంచుతారు, ఇది సులభ లక్షణాల మరిన్ని సంయోజనాలకు అనుగుణంగా ఉంటుంది. ప్రతి లేయర్‌తో, చివరి వర్గీకరణ దిశగా పోతూ, చిత్ర స్థల పరిమాణం తగ్గి, ఫిల్టర్స్ సంఖ్య పెరుగుతుంది.
ఉదాహరణకు, 2014లో ImageNet టాప్-5 వర్గీకరణలో 92.7% ఖచ్చితత్వం సాధించిన VGG-16 ఆర్కిటెక్చర్‌ను చూద్దాం:
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51ba.te.jpg)
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49f.te.jpg)
> [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) నుండి చిత్రం
## ప్రసిద్ధమైన CNN ఆర్కిటెక్చర్స్
[ప్రసిద్ధమైన CNN ఆర్కిటెక్చర్స్ గురించి మీ అధ్యయనాన్ని కొనసాగించండి](CNN_Architectures.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు డాక్యుమెంట్ దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,49 +1,49 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b70fcf7fcee862990f848c679090943f",
"translation_date": "2025-11-25T22:41:51+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/lab/README.md",
"language_code": "te"
}
-->
# పెట్స్ ముఖాల వర్గీకరణ
[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
మీరు పెట్ నర్సరీ కోసం అన్ని పెట్స్‌ను క్యాటలాగ్ చేయడానికి ఒక అప్లికేషన్ అభివృద్ధి చేయాల్సి ఉందని ఊహించుకోండి. అలాంటి అప్లికేషన్‌లో ఒక గొప్ప ఫీచర్ ఫోటో నుండి జాతిని ఆటోమేటిక్‌గా గుర్తించడం అవుతుంది. ఇది న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి విజయవంతంగా చేయవచ్చు.
**Pet Faces** డేటాసెట్ ఉపయోగించి వివిధ జాతుల పిల్లులు మరియు కుక్కలను వర్గీకరించడానికి మీరు ఒక కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి.
## డేటాసెట్
మేము [Oxford-IIIT Pet Dataset](https://www.robots.ox.ac.uk/~vgg/data/pets/) ఉపయోగించబోతున్నాము, ఇది 37 వేర్వేరు జాతుల కుక్కలు మరియు పిల్లుల చిత్రాలను కలిగి ఉంది.
![మేము ఉపయోగించబోయే డేటాసెట్](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.te.png)
డేటాసెట్‌ను డౌన్లోడ్ చేసుకోవడానికి, ఈ కోడ్ స్నిపెట్ ఉపయోగించండి:
```python
!wget https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz
!tar xfz images.tar.gz
!rm images.tar.gz
```
**గమనిక:** Oxford-IIIT Pet Dataset చిత్రాలు ఫైల్ పేర్ల ఆధారంగా (ఉదా: `Abyssinian_1.jpg`, `Bengal_2.jpg`) క్రమబద్ధీకరించబడ్డాయి. ఈ నోట్‌బుక్‌లో ఈ చిత్రాలను జాతి-ప్రత్యేక ఉపడైరెక్టరీలుగా క్రమబద్ధీకరించే కోడ్ ఉంది, తద్వారా వర్గీకరణ సులభం అవుతుంది.
## ప్రారంభ నోట్‌బుక్
ల్యాబ్‌ను ప్రారంభించడానికి [PetFaces.ipynb](PetFaces.ipynb) ను తెరవండి
## ముఖ్యాంశం
మీరు మొదటి నుండి చిత్ర వర్గీకరణ అనే కొంత క్లిష్టమైన సమస్యను పరిష్కరించారు! చాలా తరగతులు ఉండగా కూడా మీరు సరైన ఖచ్చితత్వాన్ని సాధించారు! కొన్ని తరగతులు మనుషులకు కూడా స్పష్టంగా వేరుగా కనిపించకపోవడం వల్ల top-k ఖచ్చితత్వాన్ని కొలవడం కూడా అర్థవంతం.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు డాక్యుమెంట్ దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b70fcf7fcee862990f848c679090943f",
"translation_date": "2025-11-25T22:41:51+00:00",
"source_file": "lessons/4-ComputerVision/07-ConvNets/lab/README.md",
"language_code": "te"
}
-->
# పెట్స్ ముఖాల వర్గీకరణ
[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
మీరు పెట్ నర్సరీ కోసం అన్ని పెట్స్‌ను క్యాటలాగ్ చేయడానికి ఒక అప్లికేషన్ అభివృద్ధి చేయాల్సి ఉందని ఊహించుకోండి. అలాంటి అప్లికేషన్‌లో ఒక గొప్ప ఫీచర్ ఫోటో నుండి జాతిని ఆటోమేటిక్‌గా గుర్తించడం అవుతుంది. ఇది న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి విజయవంతంగా చేయవచ్చు.
**Pet Faces** డేటాసెట్ ఉపయోగించి వివిధ జాతుల పిల్లులు మరియు కుక్కలను వర్గీకరించడానికి మీరు ఒక కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి.
## డేటాసెట్
మేము [Oxford-IIIT Pet Dataset](https://www.robots.ox.ac.uk/~vgg/data/pets/) ఉపయోగించబోతున్నాము, ఇది 37 వేర్వేరు జాతుల కుక్కలు మరియు పిల్లుల చిత్రాలను కలిగి ఉంది.
![మేము ఉపయోగించబోయే డేటాసెట్](../../../../../../translated_images/data.50b2a9d5484bdbf0.te.png)
డేటాసెట్‌ను డౌన్లోడ్ చేసుకోవడానికి, ఈ కోడ్ స్నిపెట్ ఉపయోగించండి:
```python
!wget https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz
!tar xfz images.tar.gz
!rm images.tar.gz
```
**గమనిక:** Oxford-IIIT Pet Dataset చిత్రాలు ఫైల్ పేర్ల ఆధారంగా (ఉదా: `Abyssinian_1.jpg`, `Bengal_2.jpg`) క్రమబద్ధీకరించబడ్డాయి. ఈ నోట్‌బుక్‌లో ఈ చిత్రాలను జాతి-ప్రత్యేక ఉపడైరెక్టరీలుగా క్రమబద్ధీకరించే కోడ్ ఉంది, తద్వారా వర్గీకరణ సులభం అవుతుంది.
## ప్రారంభ నోట్‌బుక్
ల్యాబ్‌ను ప్రారంభించడానికి [PetFaces.ipynb](PetFaces.ipynb) ను తెరవండి
## ముఖ్యాంశం
మీరు మొదటి నుండి చిత్ర వర్గీకరణ అనే కొంత క్లిష్టమైన సమస్యను పరిష్కరించారు! చాలా తరగతులు ఉండగా కూడా మీరు సరైన ఖచ్చితత్వాన్ని సాధించారు! కొన్ని తరగతులు మనుషులకు కూడా స్పష్టంగా వేరుగా కనిపించకపోవడం వల్ల top-k ఖచ్చితత్వాన్ని కొలవడం కూడా అర్థవంతం.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు డాక్యుమెంట్ దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

View File

@ -1,94 +1,94 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "178c0b5ee5395733eb18aec51e71a0a9",
"translation_date": "2025-11-25T22:08:26+00:00",
"source_file": "lessons/4-ComputerVision/08-TransferLearning/README.md",
"language_code": "te"
}
-->
# ముందుగా శిక్షణ పొందిన నెట్‌వర్క్లు మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్
CNNలను శిక్షణ ఇవ్వడం చాలా సమయం తీసుకుంటుంది, మరియు ఆ పనికి చాలా డేటా అవసరం. అయితే, ఎక్కువ సమయం నెట్‌వర్క్ చిత్రాల నుండి నమూనాలను తీసుకునే ఉత్తమ తక్కువ-స్థాయి ఫిల్టర్లను నేర్చుకోవడంలో వెచ్చుతుంది. ఒక సహజమైన ప్రశ్న వస్తుంది - ఒక డేటాసెట్‌పై శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్‌ను ఉపయోగించి, పూర్తి శిక్షణ ప్రక్రియ అవసరం లేకుండా వేరే చిత్రాలను వర్గీకరించడానికి అనుకూలపరచగలమా?
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/15)
ఈ విధానం **ట్రాన్స్‌ఫర్ లెర్నింగ్** అని పిలవబడుతుంది, ఎందుకంటే మనం ఒక న్యూరల్ నెట్‌వర్క్ మోడల్ నుండి మరొకదానికి కొంత జ్ఞానం బదిలీ చేస్తాము. ట్రాన్స్‌ఫర్ లెర్నింగ్‌లో, సాధారణంగా మనం ముందుగా శిక్షణ పొందిన మోడల్‌తో ప్రారంభిస్తాము, ఇది **ImageNet** వంటి పెద్ద చిత్ర డేటాసెట్‌పై శిక్షణ పొందింది. ఆ మోడల్స్ ఇప్పటికే సాధారణ చిత్రాల నుండి వివిధ లక్షణాలను బాగా తీసుకోవడంలో నైపుణ్యం కలిగి ఉంటాయి, మరియు చాలా సందర్భాల్లో ఆ లక్షణాలపై కేవలం ఒక వర్గీకర్తను నిర్మించడం మంచి ఫలితాన్ని ఇస్తుంది.
> ✅ ట్రాన్స్‌ఫర్ లెర్నింగ్ అనేది విద్య వంటి ఇతర అకాడమిక్ రంగాలలో కూడా కనిపించే పదం. ఇది ఒక డొమైన్ నుండి జ్ఞానాన్ని తీసుకుని మరొక డొమైన్‌లో ఉపయోగించే ప్రక్రియను సూచిస్తుంది.
## ఫీచర్ ఎక్స్‌ట్రాక్టర్లుగా ముందుగా శిక్షణ పొందిన మోడల్స్
మునుపటి విభాగంలో మనం చర్చించిన కన్వల్యూషనల్ నెట్‌వర్క్లు అనేక లేయర్లను కలిగి ఉంటాయి, ప్రతి లేయర్ చిత్రం నుండి కొన్ని లక్షణాలను తీసుకోవడానికి ఉద్దేశించబడింది, తక్కువ-స్థాయి పిక్సెల్ కలయికల నుండి (ఉదాహరణకు, ఆడంబరమైన/నిలువైన రేఖ లేదా స్ట్రోక్), పై స్థాయి లక్షణాల కలయికల వరకు, ఉదాహరణకు, జ్వాల యొక్క కంటి వంటి. మనం సరిపడా పెద్ద, విభిన్నమైన సాధారణ చిత్రాల డేటాసెట్‌పై CNNను శిక్షణ ఇస్తే, నెట్‌వర్క్ ఆ సాధారణ లక్షణాలను నేర్చుకుంటుంది.
Keras మరియు PyTorch రెండింటిలోనూ సాధారణ ఆర్కిటెక్చర్లకు ముందుగా శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్ వెయిట్లను సులభంగా లోడ్ చేసుకునే ఫంక్షన్లు ఉన్నాయి, వీటిలో చాలా ImageNet చిత్రాలపై శిక్షణ పొందినవి. ఎక్కువగా ఉపయోగించే వాటిని మునుపటి పాఠం నుండి [CNN ఆర్కిటెక్చర్లు](../07-ConvNets/CNN_Architectures.md) పేజీలో వివరించారు. ముఖ్యంగా, మీరు ఈ క్రింది వాటిలో ఒకదాన్ని ఉపయోగించవచ్చు:
* **VGG-16/VGG-19** - ఇవి తక్కువ క్లిష్టత గల మోడల్స్ అయినప్పటికీ మంచి ఖచ్చితత్వాన్ని ఇస్తాయి. ట్రాన్స్‌ఫర్ లెర్నింగ్ ఎలా పనిచేస్తుందో చూడటానికి మొదటి ప్రయత్నంగా VGG ఉపయోగించడం మంచి ఎంపిక.
* **ResNet** - 2015లో Microsoft Research ప్రతిపాదించిన మోడల్స్ కుటుంబం. వీటికి ఎక్కువ లేయర్లు ఉంటాయి, అందువల్ల ఎక్కువ వనరులు అవసరం.
* **MobileNet** - చిన్న పరిమాణం గల మోడల్స్ కుటుంబం, మొబైల్ పరికరాలకు అనుకూలం. వనరులు తక్కువగా ఉన్నప్పుడు, కొంత ఖచ్చితత్వం త్యాగం చేసుకుని వీటిని ఉపయోగించవచ్చు.
ఇక్కడ VGG-16 నెట్‌వర్క్ ద్వారా పిల్లి చిత్రంలో నుండి తీసుకున్న కొన్ని ఫీచర్లు ఉన్నాయి:
![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.te.png)
## పిల్లులు vs. కుక్కల డేటాసెట్
ఈ ఉదాహరణలో, మనం [పిల్లులు మరియు కుక్కలు](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) డేటాసెట్‌ను ఉపయోగిస్తాము, ఇది నిజ జీవిత చిత్రం వర్గీకరణ పరిస్థితికి చాలా దగ్గరగా ఉంటుంది.
## ✍️ వ్యాయామం: ట్రాన్స్‌ఫర్ లెర్నింగ్
ట్రాన్స్‌ఫర్ లెర్నింగ్‌ను క్రియాశీలంగా చూడండి సంబంధిత నోట్‌బుక్స్‌లో:
* [ట్రాన్స్‌ఫర్ లెర్నింగ్ - PyTorch](TransferLearningPyTorch.ipynb)
* [ట్రాన్స్‌ఫర్ లెర్నింగ్ - TensorFlow](TransferLearningTF.ipynb)
## ప్రత్యర్థి పిల్లి దృశ్యీకరణ
ముందుగా శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్ తన *మెదడులో* వివిధ నమూనాలను కలిగి ఉంటుంది, అందులో **ఆదర్శ పిల్లి** (అలాగే ఆదర్శ కుక్క, ఆదర్శ జెబ్రా మొదలైనవి) యొక్క భావనలు ఉంటాయి. ఈ చిత్రాన్ని ఏదో విధంగా **దృశ్యీకరించడం** ఆసక్తికరం. అయితే, ఇది సులభం కాదు, ఎందుకంటే నమూనాలు నెట్‌వర్క్ వెయిట్లలో విస్తరించి ఉంటాయి, మరియు హైరార్కికల్ నిర్మాణంలో ఉంటాయి.
మనము తీసుకోగల ఒక విధానం, యాదృచ్ఛిక చిత్రంతో ప్రారంభించి, ఆ చిత్రాన్ని **గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్** సాంకేతికత ఉపయోగించి సవరించడం, తద్వారా నెట్‌వర్క్ ఆ చిత్రాన్ని పిల్లిగా భావించడం ప్రారంభిస్తుంది.
![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.te.png)
కానీ, ఇలాచేస్తే, మనం యాదృచ్ఛిక శబ్దం లాంటి దృశ్యాన్ని పొందుతాము. ఇది ఎందుకంటే *నెట్‌వర్క్ ఇన్‌పుట్ చిత్రాన్ని పిల్లిగా భావించడానికి అనేక మార్గాలు ఉన్నాయి*, వాటిలో కొన్ని దృశ్యంగా అర్థం కానివి కూడా ఉంటాయి. ఆ చిత్రాలు పిల్లికి సాధారణమైన చాలా నమూనాలను కలిగి ఉన్నప్పటికీ, అవి దృశ్యంగా ప్రత్యేకంగా ఉండాలని ఎటువంటి నియంత్రణ లేదు.
ఫలితాన్ని మెరుగుపరచడానికి, మనం లాస్ ఫంక్షన్‌లో మరో పదాన్ని చేర్చవచ్చు, దీనిని **వేరియేషన్ లాస్** అంటారు. ఇది చిత్రంలోని పొరుగువారి పిక్సెల్స్ ఎంత సమానంగా ఉన్నాయో చూపే ప్రమాణం. వేరియేషన్ లాస్‌ను తగ్గించడం ద్వారా చిత్రం మృదువుగా మారుతుంది, శబ్దం తొలగిపోతుంది - తద్వారా మరింత ఆకర్షణీయమైన నమూనాలు బయటపడతాయి. ఇక్కడ పిల్లిగా మరియు జెబ్రాగా అధిక సంభావ్యతతో వర్గీకరించబడిన "ఆదర్శ" చిత్రాల ఉదాహరణ ఉంది:
![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.te.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.te.png)
-----|-----
*ఆదర్శ పిల్లి* | *ఆదర్శ జెబ్రా*
ఇలాంటి విధానం న్యూరల్ నెట్‌వర్క్‌పై **ప్రత్యర్థి దాడులు** చేయడానికి కూడా ఉపయోగించవచ్చు. ఒక నెట్‌వర్క్‌ను మోసం చేసి కుక్కను పిల్లిలా చూపించాలనుకుంటే, కుక్క చిత్రాన్ని తీసుకుని, అది నెట్‌వర్క్ ద్వారా కుక్కగా గుర్తించబడినప్పుడు, గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్ ఉపయోగించి కొంత సవరించి, నెట్‌వర్క్ దాన్ని పిల్లిగా వర్గీకరించడం ప్రారంభించే వరకు ప్రయత్నించవచ్చు:
![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.te.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.te.png)
-----|-----
*కుక్క యొక్క అసలు చిత్రం* | *పిల్లిగా వర్గీకరించబడిన కుక్క చిత్రం*
పై ఫలితాలను పునరుత్పత్తి చేయడానికి కోడ్ ఈ నోట్‌బుక్‌లో చూడండి:
* [ఆదర్శ మరియు ప్రత్యర్థి పిల్లి - TensorFlow](AdversarialCat_TF.ipynb)
## ముగింపు
ట్రాన్స్‌ఫర్ లెర్నింగ్ ఉపయోగించి, మీరు కస్టమ్ ఆబ్జెక్ట్ వర్గీకరణ పనికి త్వరగా వర్గీకర్తను తయారు చేసి, అధిక ఖచ్చితత్వాన్ని సాధించవచ్చు. మనం ఇప్పుడు పరిష్కరించబోయే క్లిష్టమైన పనులు ఎక్కువ కంప్యూటింగ్ శక్తిని అవసరం చేస్తాయని, CPUపై సులభంగా పరిష్కరించలేమని మీరు గమనించవచ్చు. తదుపరి యూనిట్‌లో, తక్కువ కంప్యూట్ వనరులతో అదే మోడల్‌ను శిక్షణ ఇవ్వడానికి తేలికపాటి అమలును ప్రయత్నిస్తాము, ఇది కొంచెం తక్కువ ఖచ్చితత్వంతో ఉంటుంది.
## 🚀 సవాలు
సహచర నోట్‌బుక్స్‌లో, ట్రాన్స్‌ఫర్ జ్ఞానం కొంతవరకు సమానమైన శిక్షణ డేటాతో (కొత్త జాతి జంతువు వంటి) ఉత్తమంగా పనిచేస్తుందని దిగువన గమనికలు ఉన్నాయి. పూర్తిగా కొత్త రకాల చిత్రాలతో ప్రయోగాలు చేసి, మీ ట్రాన్స్‌ఫర్ జ్ఞానం మోడల్స్ ఎంత బాగా లేదా చెడుగా పనిచేస్తాయో చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## సమీక్ష & స్వీయ అధ్యయనం
మీ మోడల్స్ శిక్షణకు మరిన్ని మార్గాలు తెలుసుకోవడానికి [TrainingTricks.md](TrainingTricks.md) చదవండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ప్రయోగశాలలో, మనం నిజ జీవిత [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) పెట్స్ డేటాసెట్‌ను ఉపయోగించి, 35 జాతుల పిల్లులు మరియు కుక్కలతో ట్రాన్స్‌ఫర్ లెర్నింగ్ వర్గీకర్తను నిర్మిస్తాము.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "178c0b5ee5395733eb18aec51e71a0a9",
"translation_date": "2025-11-25T22:08:26+00:00",
"source_file": "lessons/4-ComputerVision/08-TransferLearning/README.md",
"language_code": "te"
}
-->
# ముందుగా శిక్షణ పొందిన నెట్‌వర్క్లు మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్
CNNలను శిక్షణ ఇవ్వడం చాలా సమయం తీసుకుంటుంది, మరియు ఆ పనికి చాలా డేటా అవసరం. అయితే, ఎక్కువ సమయం నెట్‌వర్క్ చిత్రాల నుండి నమూనాలను తీసుకునే ఉత్తమ తక్కువ-స్థాయి ఫిల్టర్లను నేర్చుకోవడంలో వెచ్చుతుంది. ఒక సహజమైన ప్రశ్న వస్తుంది - ఒక డేటాసెట్‌పై శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్‌ను ఉపయోగించి, పూర్తి శిక్షణ ప్రక్రియ అవసరం లేకుండా వేరే చిత్రాలను వర్గీకరించడానికి అనుకూలపరచగలమా?
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/15)
ఈ విధానం **ట్రాన్స్‌ఫర్ లెర్నింగ్** అని పిలవబడుతుంది, ఎందుకంటే మనం ఒక న్యూరల్ నెట్‌వర్క్ మోడల్ నుండి మరొకదానికి కొంత జ్ఞానం బదిలీ చేస్తాము. ట్రాన్స్‌ఫర్ లెర్నింగ్‌లో, సాధారణంగా మనం ముందుగా శిక్షణ పొందిన మోడల్‌తో ప్రారంభిస్తాము, ఇది **ImageNet** వంటి పెద్ద చిత్ర డేటాసెట్‌పై శిక్షణ పొందింది. ఆ మోడల్స్ ఇప్పటికే సాధారణ చిత్రాల నుండి వివిధ లక్షణాలను బాగా తీసుకోవడంలో నైపుణ్యం కలిగి ఉంటాయి, మరియు చాలా సందర్భాల్లో ఆ లక్షణాలపై కేవలం ఒక వర్గీకర్తను నిర్మించడం మంచి ఫలితాన్ని ఇస్తుంది.
> ✅ ట్రాన్స్‌ఫర్ లెర్నింగ్ అనేది విద్య వంటి ఇతర అకాడమిక్ రంగాలలో కూడా కనిపించే పదం. ఇది ఒక డొమైన్ నుండి జ్ఞానాన్ని తీసుకుని మరొక డొమైన్‌లో ఉపయోగించే ప్రక్రియను సూచిస్తుంది.
## ఫీచర్ ఎక్స్‌ట్రాక్టర్లుగా ముందుగా శిక్షణ పొందిన మోడల్స్
మునుపటి విభాగంలో మనం చర్చించిన కన్వల్యూషనల్ నెట్‌వర్క్లు అనేక లేయర్లను కలిగి ఉంటాయి, ప్రతి లేయర్ చిత్రం నుండి కొన్ని లక్షణాలను తీసుకోవడానికి ఉద్దేశించబడింది, తక్కువ-స్థాయి పిక్సెల్ కలయికల నుండి (ఉదాహరణకు, ఆడంబరమైన/నిలువైన రేఖ లేదా స్ట్రోక్), పై స్థాయి లక్షణాల కలయికల వరకు, ఉదాహరణకు, జ్వాల యొక్క కంటి వంటి. మనం సరిపడా పెద్ద, విభిన్నమైన సాధారణ చిత్రాల డేటాసెట్‌పై CNNను శిక్షణ ఇస్తే, నెట్‌వర్క్ ఆ సాధారణ లక్షణాలను నేర్చుకుంటుంది.
Keras మరియు PyTorch రెండింటిలోనూ సాధారణ ఆర్కిటెక్చర్లకు ముందుగా శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్ వెయిట్లను సులభంగా లోడ్ చేసుకునే ఫంక్షన్లు ఉన్నాయి, వీటిలో చాలా ImageNet చిత్రాలపై శిక్షణ పొందినవి. ఎక్కువగా ఉపయోగించే వాటిని మునుపటి పాఠం నుండి [CNN ఆర్కిటెక్చర్లు](../07-ConvNets/CNN_Architectures.md) పేజీలో వివరించారు. ముఖ్యంగా, మీరు ఈ క్రింది వాటిలో ఒకదాన్ని ఉపయోగించవచ్చు:
* **VGG-16/VGG-19** - ఇవి తక్కువ క్లిష్టత గల మోడల్స్ అయినప్పటికీ మంచి ఖచ్చితత్వాన్ని ఇస్తాయి. ట్రాన్స్‌ఫర్ లెర్నింగ్ ఎలా పనిచేస్తుందో చూడటానికి మొదటి ప్రయత్నంగా VGG ఉపయోగించడం మంచి ఎంపిక.
* **ResNet** - 2015లో Microsoft Research ప్రతిపాదించిన మోడల్స్ కుటుంబం. వీటికి ఎక్కువ లేయర్లు ఉంటాయి, అందువల్ల ఎక్కువ వనరులు అవసరం.
* **MobileNet** - చిన్న పరిమాణం గల మోడల్స్ కుటుంబం, మొబైల్ పరికరాలకు అనుకూలం. వనరులు తక్కువగా ఉన్నప్పుడు, కొంత ఖచ్చితత్వం త్యాగం చేసుకుని వీటిని ఉపయోగించవచ్చు.
ఇక్కడ VGG-16 నెట్‌వర్క్ ద్వారా పిల్లి చిత్రంలో నుండి తీసుకున్న కొన్ని ఫీచర్లు ఉన్నాయి:
![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b95.te.png)
## పిల్లులు vs. కుక్కల డేటాసెట్
ఈ ఉదాహరణలో, మనం [పిల్లులు మరియు కుక్కలు](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) డేటాసెట్‌ను ఉపయోగిస్తాము, ఇది నిజ జీవిత చిత్రం వర్గీకరణ పరిస్థితికి చాలా దగ్గరగా ఉంటుంది.
## ✍️ వ్యాయామం: ట్రాన్స్‌ఫర్ లెర్నింగ్
ట్రాన్స్‌ఫర్ లెర్నింగ్‌ను క్రియాశీలంగా చూడండి సంబంధిత నోట్‌బుక్స్‌లో:
* [ట్రాన్స్‌ఫర్ లెర్నింగ్ - PyTorch](TransferLearningPyTorch.ipynb)
* [ట్రాన్స్‌ఫర్ లెర్నింగ్ - TensorFlow](TransferLearningTF.ipynb)
## ప్రత్యర్థి పిల్లి దృశ్యీకరణ
ముందుగా శిక్షణ పొందిన న్యూరల్ నెట్‌వర్క్ తన *మెదడులో* వివిధ నమూనాలను కలిగి ఉంటుంది, అందులో **ఆదర్శ పిల్లి** (అలాగే ఆదర్శ కుక్క, ఆదర్శ జెబ్రా మొదలైనవి) యొక్క భావనలు ఉంటాయి. ఈ చిత్రాన్ని ఏదో విధంగా **దృశ్యీకరించడం** ఆసక్తికరం. అయితే, ఇది సులభం కాదు, ఎందుకంటే నమూనాలు నెట్‌వర్క్ వెయిట్లలో విస్తరించి ఉంటాయి, మరియు హైరార్కికల్ నిర్మాణంలో ఉంటాయి.
మనము తీసుకోగల ఒక విధానం, యాదృచ్ఛిక చిత్రంతో ప్రారంభించి, ఆ చిత్రాన్ని **గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్** సాంకేతికత ఉపయోగించి సవరించడం, తద్వారా నెట్‌వర్క్ ఆ చిత్రాన్ని పిల్లిగా భావించడం ప్రారంభిస్తుంది.
![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044.te.png)
కానీ, ఇలాచేస్తే, మనం యాదృచ్ఛిక శబ్దం లాంటి దృశ్యాన్ని పొందుతాము. ఇది ఎందుకంటే *నెట్‌వర్క్ ఇన్‌పుట్ చిత్రాన్ని పిల్లిగా భావించడానికి అనేక మార్గాలు ఉన్నాయి*, వాటిలో కొన్ని దృశ్యంగా అర్థం కానివి కూడా ఉంటాయి. ఆ చిత్రాలు పిల్లికి సాధారణమైన చాలా నమూనాలను కలిగి ఉన్నప్పటికీ, అవి దృశ్యంగా ప్రత్యేకంగా ఉండాలని ఎటువంటి నియంత్రణ లేదు.
ఫలితాన్ని మెరుగుపరచడానికి, మనం లాస్ ఫంక్షన్‌లో మరో పదాన్ని చేర్చవచ్చు, దీనిని **వేరియేషన్ లాస్** అంటారు. ఇది చిత్రంలోని పొరుగువారి పిక్సెల్స్ ఎంత సమానంగా ఉన్నాయో చూపే ప్రమాణం. వేరియేషన్ లాస్‌ను తగ్గించడం ద్వారా చిత్రం మృదువుగా మారుతుంది, శబ్దం తొలగిపోతుంది - తద్వారా మరింత ఆకర్షణీయమైన నమూనాలు బయటపడతాయి. ఇక్కడ పిల్లిగా మరియు జెబ్రాగా అధిక సంభావ్యతతో వర్గీకరించబడిన "ఆదర్శ" చిత్రాల ఉదాహరణ ఉంది:
![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0.te.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a.te.png)
-----|-----
*ఆదర్శ పిల్లి* | *ఆదర్శ జెబ్రా*
ఇలాంటి విధానం న్యూరల్ నెట్‌వర్క్‌పై **ప్రత్యర్థి దాడులు** చేయడానికి కూడా ఉపయోగించవచ్చు. ఒక నెట్‌వర్క్‌ను మోసం చేసి కుక్కను పిల్లిలా చూపించాలనుకుంటే, కుక్క చిత్రాన్ని తీసుకుని, అది నెట్‌వర్క్ ద్వారా కుక్కగా గుర్తించబడినప్పుడు, గ్రాడియెంట్ డిసెంట్ ఆప్టిమైజేషన్ ఉపయోగించి కొంత సవరించి, నెట్‌వర్క్ దాన్ని పిల్లిగా వర్గీకరించడం ప్రారంభించే వరకు ప్రయత్నించవచ్చు:
![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f.te.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89.te.png)
-----|-----
*కుక్క యొక్క అసలు చిత్రం* | *పిల్లిగా వర్గీకరించబడిన కుక్క చిత్రం*
పై ఫలితాలను పునరుత్పత్తి చేయడానికి కోడ్ ఈ నోట్‌బుక్‌లో చూడండి:
* [ఆదర్శ మరియు ప్రత్యర్థి పిల్లి - TensorFlow](AdversarialCat_TF.ipynb)
## ముగింపు
ట్రాన్స్‌ఫర్ లెర్నింగ్ ఉపయోగించి, మీరు కస్టమ్ ఆబ్జెక్ట్ వర్గీకరణ పనికి త్వరగా వర్గీకర్తను తయారు చేసి, అధిక ఖచ్చితత్వాన్ని సాధించవచ్చు. మనం ఇప్పుడు పరిష్కరించబోయే క్లిష్టమైన పనులు ఎక్కువ కంప్యూటింగ్ శక్తిని అవసరం చేస్తాయని, CPUపై సులభంగా పరిష్కరించలేమని మీరు గమనించవచ్చు. తదుపరి యూనిట్‌లో, తక్కువ కంప్యూట్ వనరులతో అదే మోడల్‌ను శిక్షణ ఇవ్వడానికి తేలికపాటి అమలును ప్రయత్నిస్తాము, ఇది కొంచెం తక్కువ ఖచ్చితత్వంతో ఉంటుంది.
## 🚀 సవాలు
సహచర నోట్‌బుక్స్‌లో, ట్రాన్స్‌ఫర్ జ్ఞానం కొంతవరకు సమానమైన శిక్షణ డేటాతో (కొత్త జాతి జంతువు వంటి) ఉత్తమంగా పనిచేస్తుందని దిగువన గమనికలు ఉన్నాయి. పూర్తిగా కొత్త రకాల చిత్రాలతో ప్రయోగాలు చేసి, మీ ట్రాన్స్‌ఫర్ జ్ఞానం మోడల్స్ ఎంత బాగా లేదా చెడుగా పనిచేస్తాయో చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## సమీక్ష & స్వీయ అధ్యయనం
మీ మోడల్స్ శిక్షణకు మరిన్ని మార్గాలు తెలుసుకోవడానికి [TrainingTricks.md](TrainingTricks.md) చదవండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ప్రయోగశాలలో, మనం నిజ జీవిత [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) పెట్స్ డేటాసెట్‌ను ఉపయోగించి, 35 జాతుల పిల్లులు మరియు కుక్కలతో ట్రాన్స్‌ఫర్ లెర్నింగ్ వర్గీకర్తను నిర్మిస్తాము.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,113 +1,113 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "1b8d9e1b3a6f1daa864b1ff3dfc3076d",
"translation_date": "2025-11-25T22:22:10+00:00",
"source_file": "lessons/4-ComputerVision/09-Autoencoders/README.md",
"language_code": "te"
}
-->
# ఆటోఎంకోడర్స్
CNNలను శిక్షణ ఇచ్చేటప్పుడు, ఒక సమస్య ఏమిటంటే మనకు చాలా లేబుల్ చేసిన డేటా అవసరం. చిత్రం వర్గీకరణ సందర్భంలో, మనం చిత్రాలను వేర్వేరు తరగతులుగా వర్గీకరించాలి, ఇది ఒక మానవీయ ప్రయత్నం.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/17)
అయితే, మనం రా (లేబుల్ చేయని) డేటాను CNN ఫీచర్ ఎక్స్‌ట్రాక్టర్ల శిక్షణకు ఉపయోగించాలనుకోవచ్చు, దీనిని **స్వీయ-పర్యవేక్షణ శిక్షణ** అంటారు. లేబుల్స్ బదులు, శిక్షణ చిత్రాలను నెట్‌వర్క్ ఇన్‌పుట్ మరియు అవుట్‌పుట్ రెండింటిగా ఉపయోగిస్తాము. **ఆటోఎంకోడర్** యొక్క ప్రధాన ఆలోచన ఏమిటంటే, మనకు ఒక **ఎంకోడర్ నెట్‌వర్క్** ఉంటుంది, ఇది ఇన్‌పుట్ చిత్రాన్ని కొన్ని **లాటెంట్ స్పేస్** (సాధారణంగా ఇది చిన్న పరిమాణం ఉన్న వెక్టర్)గా మార్చుతుంది, ఆ తర్వాత **డీకోడర్ నెట్‌వర్క్** ఉంటుంది, దీని లక్ష్యం అసలు చిత్రాన్ని పునఃసృష్టించడం.
> ✅ ఒక [ఆటోఎంకోడర్](https://wikipedia.org/wiki/Autoencoder) అనేది "లేబుల్ చేయని డేటా యొక్క సమర్థవంతమైన కోడింగ్‌లను నేర్చుకోవడానికి ఉపయోగించే ఒక రకమైన కృత్రిమ న్యూరల్ నెట్‌వర్క్."
మనం అసలు చిత్రంలోని సమాచారాన్ని ఎక్కువగా పట్టు కోవడానికి ఆటోఎంకోడర్‌ను శిక్షణ ఇస్తున్నందున, నెట్‌వర్క్ ఇన్‌పుట్ చిత్రాల అర్థాన్ని పట్టు కోవడానికి ఉత్తమ **ఎంబెడ్డింగ్**ను కనుగొనడానికి ప్రయత్నిస్తుంది.
![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.te.jpg)
> చిత్రం [Keras బ్లాగ్](https://blog.keras.io/building-autoencoders-in-keras.html) నుండి
## ఆటోఎంకోడర్స్ ఉపయోగించే సందర్భాలు
అసలు చిత్రాలను పునఃసృష్టించడం స్వయంగా ఉపయోగకరంగా కనిపించకపోయినా, కొన్ని సందర్భాల్లో ఆటోఎంకోడర్స్ ప్రత్యేకంగా ఉపయోగకరంగా ఉంటాయి:
* **దృశ్యీకరణ కోసం చిత్రాల పరిమాణం తగ్గించడం** లేదా **చిత్ర ఎంబెడ్డింగ్స్ శిక్షణ**. సాధారణంగా ఆటోఎంకోడర్స్ PCA కంటే మెరుగైన ఫలితాలు ఇస్తాయి, ఎందుకంటే ఇది చిత్రాల స్థలిక స్వభావం మరియు హైరార్కికల్ ఫీచర్లను పరిగణలోకి తీసుకుంటుంది.
* **డినాయిసింగ్**, అంటే చిత్రంలో నుండి శబ్దాన్ని తొలగించడం. శబ్దం అనవసరమైన సమాచారాన్ని కలిగి ఉండటంతో, ఆటోఎంకోడర్ దాన్ని చిన్న లాటెంట్ స్పేస్‌లో సరిపెట్టలేకపోతుంది, అందువల్ల ఇది చిత్రంలోని ముఖ్యమైన భాగాన్ని మాత్రమే పట్టు కోవుతుంది. డినాయిసర్‌లను శిక్షణ ఇస్తున్నప్పుడు, అసలు చిత్రాలతో ప్రారంభించి, కృత్రిమంగా శబ్దం జోడించిన చిత్రాలను ఆటోఎంకోడర్ ఇన్‌పుట్‌గా ఉపయోగిస్తాము.
* **సూపర్-రెసల్యూషన్**, అంటే చిత్ర రిజల్యూషన్ పెంచడం. మనం హై-రెసల్యూషన్ చిత్రాలతో ప్రారంభించి, తక్కువ రిజల్యూషన్ ఉన్న చిత్రాన్ని ఆటోఎంకోడర్ ఇన్‌పుట్‌గా ఉపయోగిస్తాము.
* **జనరేటివ్ మోడల్స్**. ఒకసారి ఆటోఎంకోడర్ శిక్షణ పొందిన తర్వాత, డీకోడర్ భాగాన్ని యాదృచ్ఛిక లాటెంట్ వెక్టర్ల నుండి కొత్త వస్తువులను సృష్టించడానికి ఉపయోగించవచ్చు.
## వేరియేషనల్ ఆటోఎంకోడర్స్ (VAE)
సాంప్రదాయ ఆటోఎంకోడర్స్ ఇన్‌పుట్ డేటా పరిమాణాన్ని తగ్గించి, ఇన్‌పుట్ చిత్రాల ముఖ్య ఫీచర్లను కనుగొంటాయి. అయితే, లాటెంట్ వెక్టర్లు చాలా సార్ధకంగా ఉండవు. ఉదాహరణకు, MNIST డేటాసెట్ తీసుకుంటే, వేర్వేరు లాటెంట్ వెక్టర్లకు ఏ అంకెలు సరిపోతాయో అర్థం చేసుకోవడం సులభం కాదు, ఎందుకంటే సమీప లాటెంట్ వెక్టర్లు తప్పనిసరిగా అదే అంకెలకు సరిపోవు.
మరోవైపు, *జనరేటివ్* మోడల్స్ శిక్షణకు లాటెంట్ స్పేస్ గురించి కొంత అవగాహన ఉండటం మంచిది. ఈ ఆలోచన మనల్ని **వేరియేషనల్ ఆటోఎంకోడర్** (VAE) వైపు తీసుకెళ్తుంది.
VAE అనేది లాటెంట్ పారామీటర్ల *సాంఖ్యిక పంపిణీ*ని, అంటే **లాటెంట్ పంపిణీ**ని అంచనా వేయడం నేర్చుకునే ఆటోఎంకోడర్. ఉదాహరణకు, మనం లాటెంట్ వెక్టర్లు సాధారణంగా z<sub>mean</sub> అనే సగటు మరియు z<sub>sigma</sub> అనే ప్రమాణ విభిన్నంతో (రెండూ d-పరిమాణం ఉన్న వెక్టర్లు) పంపిణీ అవ్వాలని కోరుకోవచ్చు. VAEలో ఎంకోడర్ ఆ పారామీటర్లను అంచనా వేయడం నేర్చుకుంటుంది, ఆ తర్వాత డీకోడర్ ఆ పంపిణీ నుండి యాదృచ్ఛిక వెక్టర్ తీసుకుని వస్తువును పునఃసృష్టిస్తుంది.
సారాంశంగా:
* ఇన్‌పుట్ వెక్టర్ నుండి, మనం `z_mean` మరియు `z_log_sigma` అంచనా వేస్తాము (ప్రామాణిక విభిన్నాన్ని కాకుండా దాని లాగారిథమ్‌ను అంచనా వేస్తాము)
* మనం N(z<sub>mean</sub>,exp(z<sub>log_sigma</sub>)) పంపిణీ నుండి ఒక `sample` వెక్టర్‌ను సాంపిల్ చేస్తాము
* డీకోడర్ `sample`ని ఇన్‌పుట్ వెక్టర్‌గా ఉపయోగించి అసలు చిత్రాన్ని పునఃసృష్టించడానికి ప్రయత్నిస్తుంది
<img src="../../../../../translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.te.png" width="50%">
> చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) నుండి, ఇసాక్ డైకెమన్
వేరియేషనల్ ఆటోఎంకోడర్స్ రెండు భాగాలైన సంక్లిష్ట లాస్ ఫంక్షన్‌ను ఉపయోగిస్తాయి:
* **పునఃసృష్టి లాస్** అనేది పునఃసృష్టించిన చిత్రం లక్ష్యానికి ఎంత దగ్గరగా ఉందో చూపించే లాస్ ఫంక్షన్ (ఇది మిన్ స్క్వేర్ ఎర్రర్, MSE కావచ్చు). ఇది సాధారణ ఆటోఎంకోడర్స్‌లో ఉపయోగించే లాస్ ఫంక్షన్‌తో సమానం.
* **KL లాస్**, ఇది లాటెంట్ వేరియబుల్ పంపిణీలు సాధారణ పంపిణీకి దగ్గరగా ఉండేలా చూసుకుంటుంది. ఇది [కుల్బాక్-లైబ్లర్ డైవర్జెన్స్](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) అనే భావనపై ఆధారపడి ఉంటుంది - రెండు సాంఖ్యిక పంపిణీల సమానత్వాన్ని అంచనా వేయడానికి ఒక ప్రమాణం.
VAEల ముఖ్యమైన లాభం ఏమిటంటే, మనకు లాటెంట్ వెక్టర్లను ఎక్కడి నుండి సాంపిల్ చేయాలో తెలుసు కాబట్టి, కొత్త చిత్రాలను సులభంగా సృష్టించవచ్చు. ఉదాహరణకు, 2D లాటెంట్ వెక్టర్‌తో MNISTపై VAE శిక్షణ ఇస్తే, మనం లాటెంట్ వెక్టర్ భాగాలను మార్చి వేర్వేరు అంకెలను పొందవచ్చు:
<img alt="vaemnist" src="../../../../../translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.te.png" width="50%"/>
> చిత్రం [డ్మిత్రి సోష్నికోవ్](http://soshnikov.com) ద్వారా
లాటెంట్ పారామీటర్ స్పేస్ యొక్క వేర్వేరు భాగాల నుండి లాటెంట్ వెక్టర్లను పొందడం ప్రారంభించినప్పుడు చిత్రాలు ఎలా కలిసిపోతున్నాయో గమనించండి. మనం ఈ స్పేస్‌ను 2Dలో కూడా దృశ్యీకరించవచ్చు:
<img alt="vaemnist cluster" src="../../../../../translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.te.png" width="50%"/>
> చిత్రం [డ్మిత్రి సోష్నికోవ్](http://soshnikov.com) ద్వారా
## ✍️ వ్యాయామాలు: ఆటోఎంకోడర్స్
ఈ సంబంధిత నోట్బుక్స్‌లో ఆటోఎంకోడర్స్ గురించి మరింత తెలుసుకోండి:
* [TensorFlowలో ఆటోఎంకోడర్స్](AutoencodersTF.ipynb)
* [PyTorchలో ఆటోఎంకోడర్స్](AutoEncodersPyTorch.ipynb)
## ఆటోఎంకోడర్స్ లక్షణాలు
* **డేటా స్పెసిఫిక్** - అవి శిక్షణ పొందిన చిత్రాల రకానికి మాత్రమే బాగా పనిచేస్తాయి. ఉదాహరణకు, మనం పుష్పాలపై సూపర్-రెసల్యూషన్ నెట్‌వర్క్ శిక్షణ ఇస్తే, అది పోర్ట్రెయిట్‌లపై బాగా పనిచేయదు. ఎందుకంటే నెట్‌వర్క్ శిక్షణ డేటాసెట్ నుండి నేర్చుకున్న ఫీచర్ల నుండి సన్నని వివరాలను తీసుకుని అధిక రిజల్యూషన్ చిత్రం ఉత్పత్తి చేస్తుంది.
* **లోసీ** - పునఃసృష్టించిన చిత్రం అసలు చిత్రంతో సమానం కాదు. లోస్ స్వభావం శిక్షణ సమయంలో ఉపయోగించే *లోస్ ఫంక్షన్* ద్వారా నిర్వచించబడుతుంది.
* **లేబుల్ చేయని డేటాపై పనిచేస్తుంది**
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/18)
## ముగింపు
ఈ పాఠంలో, మీరు AI శాస్త్రవేత్తకు అందుబాటులో ఉన్న వివిధ రకాల ఆటోఎంకోడర్స్ గురించి తెలుసుకున్నారు. వాటిని ఎలా నిర్మించాలో, చిత్రాలను పునఃసృష్టించడానికి వాటిని ఎలా ఉపయోగించాలో నేర్చుకున్నారు. మీరు VAE గురించి మరియు దానిని కొత్త చిత్రాలను సృష్టించడానికి ఎలా ఉపయోగించాలో కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
ఈ పాఠంలో, మీరు చిత్రాల కోసం ఆటోఎంకోడర్స్ ఉపయోగించడం గురించి నేర్చుకున్నారు. కానీ అవి సంగీతం కోసం కూడా ఉపయోగించవచ్చు! Magenta ప్రాజెక్ట్ యొక్క [MusicVAE](https://magenta.tensorflow.org/music-vae) ప్రాజెక్ట్‌ను చూడండి, ఇది ఆటోఎంకోడర్స్ ఉపయోగించి సంగీతాన్ని పునఃసృష్టించడం నేర్చుకుంటుంది. ఈ లైబ్రరీతో కొన్ని [ప్రయోగాలు](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) చేయండి, మీరు ఏమి సృష్టించగలరో చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## సమీక్ష & స్వీయ అధ్యయనం
సూచన కోసం, ఈ వనరులలో ఆటోఎంకోడర్స్ గురించి మరింత చదవండి:
* [Kerasలో ఆటోఎంకోడర్స్ నిర్మాణం](https://blog.keras.io/building-autoencoders-in-keras.html)
* [NeuroHiveలో బ్లాగ్ పోస్ట్](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
* [వేరియేషనల్ ఆటోఎంకోడర్స్ వివరణ](https://kvfrans.com/variational-autoencoders-explained/)
* [కండిషనల్ వేరియేషనల్ ఆటోఎంకోడర్స్](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
## అసైన్‌మెంట్
[Tensoflow ఉపయోగించి ఈ నోట్బుక్](AutoencodersTF.ipynb) చివరలో, మీరు ఒక 'టాస్క్' కనుగొంటారు - దీన్ని మీ అసైన్‌మెంట్‌గా ఉపయోగించండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "1b8d9e1b3a6f1daa864b1ff3dfc3076d",
"translation_date": "2025-11-25T22:22:10+00:00",
"source_file": "lessons/4-ComputerVision/09-Autoencoders/README.md",
"language_code": "te"
}
-->
# ఆటోఎంకోడర్స్
CNNలను శిక్షణ ఇచ్చేటప్పుడు, ఒక సమస్య ఏమిటంటే మనకు చాలా లేబుల్ చేసిన డేటా అవసరం. చిత్రం వర్గీకరణ సందర్భంలో, మనం చిత్రాలను వేర్వేరు తరగతులుగా వర్గీకరించాలి, ఇది ఒక మానవీయ ప్రయత్నం.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/17)
అయితే, మనం రా (లేబుల్ చేయని) డేటాను CNN ఫీచర్ ఎక్స్‌ట్రాక్టర్ల శిక్షణకు ఉపయోగించాలనుకోవచ్చు, దీనిని **స్వీయ-పర్యవేక్షణ శిక్షణ** అంటారు. లేబుల్స్ బదులు, శిక్షణ చిత్రాలను నెట్‌వర్క్ ఇన్‌పుట్ మరియు అవుట్‌పుట్ రెండింటిగా ఉపయోగిస్తాము. **ఆటోఎంకోడర్** యొక్క ప్రధాన ఆలోచన ఏమిటంటే, మనకు ఒక **ఎంకోడర్ నెట్‌వర్క్** ఉంటుంది, ఇది ఇన్‌పుట్ చిత్రాన్ని కొన్ని **లాటెంట్ స్పేస్** (సాధారణంగా ఇది చిన్న పరిమాణం ఉన్న వెక్టర్)గా మార్చుతుంది, ఆ తర్వాత **డీకోడర్ నెట్‌వర్క్** ఉంటుంది, దీని లక్ష్యం అసలు చిత్రాన్ని పునఃసృష్టించడం.
> ✅ ఒక [ఆటోఎంకోడర్](https://wikipedia.org/wiki/Autoencoder) అనేది "లేబుల్ చేయని డేటా యొక్క సమర్థవంతమైన కోడింగ్‌లను నేర్చుకోవడానికి ఉపయోగించే ఒక రకమైన కృత్రిమ న్యూరల్ నెట్‌వర్క్."
మనం అసలు చిత్రంలోని సమాచారాన్ని ఎక్కువగా పట్టు కోవడానికి ఆటోఎంకోడర్‌ను శిక్షణ ఇస్తున్నందున, నెట్‌వర్క్ ఇన్‌పుట్ చిత్రాల అర్థాన్ని పట్టు కోవడానికి ఉత్తమ **ఎంబెడ్డింగ్**ను కనుగొనడానికి ప్రయత్నిస్తుంది.
![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb61.te.jpg)
> చిత్రం [Keras బ్లాగ్](https://blog.keras.io/building-autoencoders-in-keras.html) నుండి
## ఆటోఎంకోడర్స్ ఉపయోగించే సందర్భాలు
అసలు చిత్రాలను పునఃసృష్టించడం స్వయంగా ఉపయోగకరంగా కనిపించకపోయినా, కొన్ని సందర్భాల్లో ఆటోఎంకోడర్స్ ప్రత్యేకంగా ఉపయోగకరంగా ఉంటాయి:
* **దృశ్యీకరణ కోసం చిత్రాల పరిమాణం తగ్గించడం** లేదా **చిత్ర ఎంబెడ్డింగ్స్ శిక్షణ**. సాధారణంగా ఆటోఎంకోడర్స్ PCA కంటే మెరుగైన ఫలితాలు ఇస్తాయి, ఎందుకంటే ఇది చిత్రాల స్థలిక స్వభావం మరియు హైరార్కికల్ ఫీచర్లను పరిగణలోకి తీసుకుంటుంది.
* **డినాయిసింగ్**, అంటే చిత్రంలో నుండి శబ్దాన్ని తొలగించడం. శబ్దం అనవసరమైన సమాచారాన్ని కలిగి ఉండటంతో, ఆటోఎంకోడర్ దాన్ని చిన్న లాటెంట్ స్పేస్‌లో సరిపెట్టలేకపోతుంది, అందువల్ల ఇది చిత్రంలోని ముఖ్యమైన భాగాన్ని మాత్రమే పట్టు కోవుతుంది. డినాయిసర్‌లను శిక్షణ ఇస్తున్నప్పుడు, అసలు చిత్రాలతో ప్రారంభించి, కృత్రిమంగా శబ్దం జోడించిన చిత్రాలను ఆటోఎంకోడర్ ఇన్‌పుట్‌గా ఉపయోగిస్తాము.
* **సూపర్-రెసల్యూషన్**, అంటే చిత్ర రిజల్యూషన్ పెంచడం. మనం హై-రెసల్యూషన్ చిత్రాలతో ప్రారంభించి, తక్కువ రిజల్యూషన్ ఉన్న చిత్రాన్ని ఆటోఎంకోడర్ ఇన్‌పుట్‌గా ఉపయోగిస్తాము.
* **జనరేటివ్ మోడల్స్**. ఒకసారి ఆటోఎంకోడర్ శిక్షణ పొందిన తర్వాత, డీకోడర్ భాగాన్ని యాదృచ్ఛిక లాటెంట్ వెక్టర్ల నుండి కొత్త వస్తువులను సృష్టించడానికి ఉపయోగించవచ్చు.
## వేరియేషనల్ ఆటోఎంకోడర్స్ (VAE)
సాంప్రదాయ ఆటోఎంకోడర్స్ ఇన్‌పుట్ డేటా పరిమాణాన్ని తగ్గించి, ఇన్‌పుట్ చిత్రాల ముఖ్య ఫీచర్లను కనుగొంటాయి. అయితే, లాటెంట్ వెక్టర్లు చాలా సార్ధకంగా ఉండవు. ఉదాహరణకు, MNIST డేటాసెట్ తీసుకుంటే, వేర్వేరు లాటెంట్ వెక్టర్లకు ఏ అంకెలు సరిపోతాయో అర్థం చేసుకోవడం సులభం కాదు, ఎందుకంటే సమీప లాటెంట్ వెక్టర్లు తప్పనిసరిగా అదే అంకెలకు సరిపోవు.
మరోవైపు, *జనరేటివ్* మోడల్స్ శిక్షణకు లాటెంట్ స్పేస్ గురించి కొంత అవగాహన ఉండటం మంచిది. ఈ ఆలోచన మనల్ని **వేరియేషనల్ ఆటోఎంకోడర్** (VAE) వైపు తీసుకెళ్తుంది.
VAE అనేది లాటెంట్ పారామీటర్ల *సాంఖ్యిక పంపిణీ*ని, అంటే **లాటెంట్ పంపిణీ**ని అంచనా వేయడం నేర్చుకునే ఆటోఎంకోడర్. ఉదాహరణకు, మనం లాటెంట్ వెక్టర్లు సాధారణంగా z<sub>mean</sub> అనే సగటు మరియు z<sub>sigma</sub> అనే ప్రమాణ విభిన్నంతో (రెండూ d-పరిమాణం ఉన్న వెక్టర్లు) పంపిణీ అవ్వాలని కోరుకోవచ్చు. VAEలో ఎంకోడర్ ఆ పారామీటర్లను అంచనా వేయడం నేర్చుకుంటుంది, ఆ తర్వాత డీకోడర్ ఆ పంపిణీ నుండి యాదృచ్ఛిక వెక్టర్ తీసుకుని వస్తువును పునఃసృష్టిస్తుంది.
సారాంశంగా:
* ఇన్‌పుట్ వెక్టర్ నుండి, మనం `z_mean` మరియు `z_log_sigma` అంచనా వేస్తాము (ప్రామాణిక విభిన్నాన్ని కాకుండా దాని లాగారిథమ్‌ను అంచనా వేస్తాము)
* మనం N(z<sub>mean</sub>,exp(z<sub>log_sigma</sub>)) పంపిణీ నుండి ఒక `sample` వెక్టర్‌ను సాంపిల్ చేస్తాము
* డీకోడర్ `sample`ని ఇన్‌పుట్ వెక్టర్‌గా ఉపయోగించి అసలు చిత్రాన్ని పునఃసృష్టించడానికి ప్రయత్నిస్తుంది
<img src="../../../../../translated_images/vae.464c465a5b6a9e25.te.png" width="50%">
> చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) నుండి, ఇసాక్ డైకెమన్
వేరియేషనల్ ఆటోఎంకోడర్స్ రెండు భాగాలైన సంక్లిష్ట లాస్ ఫంక్షన్‌ను ఉపయోగిస్తాయి:
* **పునఃసృష్టి లాస్** అనేది పునఃసృష్టించిన చిత్రం లక్ష్యానికి ఎంత దగ్గరగా ఉందో చూపించే లాస్ ఫంక్షన్ (ఇది మిన్ స్క్వేర్ ఎర్రర్, MSE కావచ్చు). ఇది సాధారణ ఆటోఎంకోడర్స్‌లో ఉపయోగించే లాస్ ఫంక్షన్‌తో సమానం.
* **KL లాస్**, ఇది లాటెంట్ వేరియబుల్ పంపిణీలు సాధారణ పంపిణీకి దగ్గరగా ఉండేలా చూసుకుంటుంది. ఇది [కుల్బాక్-లైబ్లర్ డైవర్జెన్స్](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) అనే భావనపై ఆధారపడి ఉంటుంది - రెండు సాంఖ్యిక పంపిణీల సమానత్వాన్ని అంచనా వేయడానికి ఒక ప్రమాణం.
VAEల ముఖ్యమైన లాభం ఏమిటంటే, మనకు లాటెంట్ వెక్టర్లను ఎక్కడి నుండి సాంపిల్ చేయాలో తెలుసు కాబట్టి, కొత్త చిత్రాలను సులభంగా సృష్టించవచ్చు. ఉదాహరణకు, 2D లాటెంట్ వెక్టర్‌తో MNISTపై VAE శిక్షణ ఇస్తే, మనం లాటెంట్ వెక్టర్ భాగాలను మార్చి వేర్వేరు అంకెలను పొందవచ్చు:
<img alt="vaemnist" src="../../../../../translated_images/vaemnist.cab9e602dc08dc50.te.png" width="50%"/>
> చిత్రం [డ్మిత్రి సోష్నికోవ్](http://soshnikov.com) ద్వారా
లాటెంట్ పారామీటర్ స్పేస్ యొక్క వేర్వేరు భాగాల నుండి లాటెంట్ వెక్టర్లను పొందడం ప్రారంభించినప్పుడు చిత్రాలు ఎలా కలిసిపోతున్నాయో గమనించండి. మనం ఈ స్పేస్‌ను 2Dలో కూడా దృశ్యీకరించవచ్చు:
<img alt="vaemnist cluster" src="../../../../../translated_images/vaemnist-diag.694315f775d5d666.te.png" width="50%"/>
> చిత్రం [డ్మిత్రి సోష్నికోవ్](http://soshnikov.com) ద్వారా
## ✍️ వ్యాయామాలు: ఆటోఎంకోడర్స్
ఈ సంబంధిత నోట్బుక్స్‌లో ఆటోఎంకోడర్స్ గురించి మరింత తెలుసుకోండి:
* [TensorFlowలో ఆటోఎంకోడర్స్](AutoencodersTF.ipynb)
* [PyTorchలో ఆటోఎంకోడర్స్](AutoEncodersPyTorch.ipynb)
## ఆటోఎంకోడర్స్ లక్షణాలు
* **డేటా స్పెసిఫిక్** - అవి శిక్షణ పొందిన చిత్రాల రకానికి మాత్రమే బాగా పనిచేస్తాయి. ఉదాహరణకు, మనం పుష్పాలపై సూపర్-రెసల్యూషన్ నెట్‌వర్క్ శిక్షణ ఇస్తే, అది పోర్ట్రెయిట్‌లపై బాగా పనిచేయదు. ఎందుకంటే నెట్‌వర్క్ శిక్షణ డేటాసెట్ నుండి నేర్చుకున్న ఫీచర్ల నుండి సన్నని వివరాలను తీసుకుని అధిక రిజల్యూషన్ చిత్రం ఉత్పత్తి చేస్తుంది.
* **లోసీ** - పునఃసృష్టించిన చిత్రం అసలు చిత్రంతో సమానం కాదు. లోస్ స్వభావం శిక్షణ సమయంలో ఉపయోగించే *లోస్ ఫంక్షన్* ద్వారా నిర్వచించబడుతుంది.
* **లేబుల్ చేయని డేటాపై పనిచేస్తుంది**
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/18)
## ముగింపు
ఈ పాఠంలో, మీరు AI శాస్త్రవేత్తకు అందుబాటులో ఉన్న వివిధ రకాల ఆటోఎంకోడర్స్ గురించి తెలుసుకున్నారు. వాటిని ఎలా నిర్మించాలో, చిత్రాలను పునఃసృష్టించడానికి వాటిని ఎలా ఉపయోగించాలో నేర్చుకున్నారు. మీరు VAE గురించి మరియు దానిని కొత్త చిత్రాలను సృష్టించడానికి ఎలా ఉపయోగించాలో కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
ఈ పాఠంలో, మీరు చిత్రాల కోసం ఆటోఎంకోడర్స్ ఉపయోగించడం గురించి నేర్చుకున్నారు. కానీ అవి సంగీతం కోసం కూడా ఉపయోగించవచ్చు! Magenta ప్రాజెక్ట్ యొక్క [MusicVAE](https://magenta.tensorflow.org/music-vae) ప్రాజెక్ట్‌ను చూడండి, ఇది ఆటోఎంకోడర్స్ ఉపయోగించి సంగీతాన్ని పునఃసృష్టించడం నేర్చుకుంటుంది. ఈ లైబ్రరీతో కొన్ని [ప్రయోగాలు](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) చేయండి, మీరు ఏమి సృష్టించగలరో చూడండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## సమీక్ష & స్వీయ అధ్యయనం
సూచన కోసం, ఈ వనరులలో ఆటోఎంకోడర్స్ గురించి మరింత చదవండి:
* [Kerasలో ఆటోఎంకోడర్స్ నిర్మాణం](https://blog.keras.io/building-autoencoders-in-keras.html)
* [NeuroHiveలో బ్లాగ్ పోస్ట్](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
* [వేరియేషనల్ ఆటోఎంకోడర్స్ వివరణ](https://kvfrans.com/variational-autoencoders-explained/)
* [కండిషనల్ వేరియేషనల్ ఆటోఎంకోడర్స్](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
## అసైన్‌మెంట్
[Tensoflow ఉపయోగించి ఈ నోట్బుక్](AutoencodersTF.ipynb) చివరలో, మీరు ఒక 'టాస్క్' కనుగొంటారు - దీన్ని మీ అసైన్‌మెంట్‌గా ఉపయోగించండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,114 +1,114 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ff65b4da07b23697235de2beb2a3c25",
"translation_date": "2025-11-25T22:28:10+00:00",
"source_file": "lessons/4-ComputerVision/10-GANs/README.md",
"language_code": "te"
}
-->
# జనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్
మునుపటి విభాగంలో, మనం **జనరేటివ్ మోడల్స్** గురించి నేర్చుకున్నాము: శిక్షణ డేటాసెట్‌లోని చిత్రాలకు సమానమైన కొత్త చిత్రాలను సృష్టించగల మోడల్స్. VAE ఒక మంచి ఉదాహరణ.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/19)
కానీ, మనం వాస్తవానికి అర్థవంతమైన, సరైన రిజల్యూషన్‌లో పెయింటింగ్ వంటి దాన్ని సృష్టించాలనుకుంటే, VAEతో శిక్షణ బాగా కుదరదు. ఈ సందర్భంలో, ప్రత్యేకంగా జనరేటివ్ మోడల్స్ కోసం రూపొందించిన మరో ఆర్కిటెక్చర్ గురించి తెలుసుకోవాలి - **జనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్**, లేదా GANs.
GAN యొక్క ప్రధాన ఆలోచన రెండు న్యూరల్ నెట్‌వర్క్స్‌ను ఒకదానితో ఒకటి పోటీగా శిక్షణ ఇవ్వడం:
<img src="../../../../../translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
> ✅ కొంత పదజాలం:
> * **జనరేటర్** అనేది ఒక నెట్‌వర్క్, ఇది కొంత యాదృచ్ఛిక వెక్టర్ తీసుకుని, దాని ఫలితంగా చిత్రం ఉత్పత్తి చేస్తుంది
> * **డిస్క్రిమినేటర్** అనేది ఒక నెట్‌వర్క్, ఇది ఒక చిత్రాన్ని తీసుకుని, అది నిజమైన చిత్రం (శిక్షణ డేటాసెట్ నుండి) కాదా లేదా జనరేటర్ ద్వారా ఉత్పత్తి చేయబడిందా అని చెప్పాలి. ఇది ప్రాథమికంగా ఒక చిత్రం వర్గీకరణ నెట్‌వర్క్.
### డిస్క్రిమినేటర్
డిస్క్రిమినేటర్ ఆర్కిటెక్చర్ సాధారణ చిత్రం వర్గీకరణ నెట్‌వర్క్ నుండి భిన్నంగా ఉండదు. సులభమైన సందర్భంలో ఇది పూర్తిగా కనెక్ట్ అయిన వర్గీకరణ నెట్‌వర్క్ కావచ్చు, కానీ ఎక్కువగా ఇది [కన్వల్యూషనల్ నెట్‌వర్క్](../07-ConvNets/README.md) అవుతుంది.
> ✅ కన్వల్యూషనల్ నెట్‌వర్క్ ఆధారిత GAN ను [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) అంటారు
CNN డిస్క్రిమినేటర్ లో ఈ క్రింది లేయర్లు ఉంటాయి: అనేక కన్వల్యూషన్లు+పూలింగ్‌లు (స్థల పరిమాణం తగ్గుతూ), మరియు ఒకటి లేదా అంతకంటే ఎక్కువ పూర్తిగా కనెక్ట్ అయిన లేయర్లు "ఫీచర్ వెక్టర్" కోసం, చివరగా ద్విభాగ వర్గీకరణ.
> ✅ ఇక్కడ 'పూలింగ్' అనేది చిత్ర పరిమాణాన్ని తగ్గించే సాంకేతికత. "పూలింగ్ లేయర్లు ఒక లేయర్‌లోని న్యూరాన్ క్లస్టర్ల అవుట్పుట్‌లను కలిపి తదుపరి లేయర్‌లో ఒకే న్యూరాన్‌గా మార్చి డేటా పరిమాణాన్ని తగ్గిస్తాయి." - [మూలం](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
### జనరేటర్
జనరేటర్ కొంచెం క్లిష్టమైనది. దీన్ని డిస్క్రిమినేటర్ యొక్క రివర్స్‌గా భావించవచ్చు. లాటెంట్ వెక్టర్ (ఫీచర్ వెక్టర్ స్థానంలో) నుండి ప్రారంభించి, అవసరమైన పరిమాణం/ఆకారానికి మార్చే పూర్తిగా కనెక్ట్ అయిన లేయర్, తరువాత డీకన్వల్యూషన్లు+అప్స్కేలింగ్ ఉంటాయి. ఇది [ఆటోఎంకోడర్](../09-Autoencoders/README.md) యొక్క డీకోడర్ భాగానికి సమానంగా ఉంటుంది.
> ✅ కన్వల్యూషన్ లేయర్ చిత్రం మీద లీనియర్ ఫిల్టర్ లాగా అమలు కావడంతో, డీకన్వల్యూషన్ కూడా కన్వల్యూషన్ లాగా ఉంటుంది మరియు అదే లేయర్ లాజిక్ ఉపయోగించి అమలు చేయవచ్చు.
<img src="../../../../../translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
### GAN శిక్షణ
GANs ను **అడ్వర్సరియల్** అంటారు ఎందుకంటే జనరేటర్ మరియు డిస్క్రిమినేటర్ మధ్య నిరంతర పోటీ ఉంటుంది. ఈ పోటీలో, రెండు నెట్‌వర్క్స్ మెరుగుపడతాయి, అందువల్ల నెట్‌వర్క్ మెరుగైన చిత్రాలను ఉత్పత్తి చేయడం నేర్చుకుంటుంది.
శిక్షణ రెండు దశల్లో జరుగుతుంది:
* **డిస్క్రిమినేటర్ శిక్షణ**. ఇది సులభం: జనరేటర్ ద్వారా చిత్రాల బ్యాచ్ ఉత్పత్తి చేసి, వాటిని 0 (నకిలీ చిత్రం) గా లేబుల్ చేస్తాము, మరియు ఇన్‌పుట్ డేటాసెట్ నుండి నిజమైన చిత్రాల బ్యాచ్ తీసుకుని వాటిని 1 (నిజమైన చిత్రం) గా లేబుల్ చేస్తాము. డిస్క్రిమినేటర్ నష్టాన్ని పొందిన తర్వాత బ్యాక్‌ప్రొపగేషన్ చేస్తాము.
* **జనరేటర్ శిక్షణ**. ఇది కొంచెం క్లిష్టం, ఎందుకంటే జనరేటర్ కోసం ప్రత్యక్షంగా ఆశించిన అవుట్పుట్ తెలియదు. మొత్తం GAN నెట్‌వర్క్ (జనరేటర్ + డిస్క్రిమినేటర్) తీసుకుని, కొంత యాదృచ్ఛిక వెక్టర్లను ఇస్తాము, ఫలితం 1 (నిజమైన చిత్రం) కావాలని ఆశిస్తాము. ఆ తర్వాత డిస్క్రిమినేటర్ పరామితులను ఫ్రీజ్ చేసి (ఈ దశలో దాన్ని శిక్షణ ఇవ్వకూడదు), బ్యాక్‌ప్రొపగేషన్ చేస్తాము.
ఈ ప్రక్రియలో, జనరేటర్ మరియు డిస్క్రిమినేటర్ నష్టాలు పెద్దగా తగ్గవు. సరిగా ఉంటే, అవి ఊగుతూ ఉంటాయి, అంటే రెండు నెట్‌వర్క్స్ తమ పనితీరును మెరుగుపరుస్తున్నాయి.
## ✍️ వ్యాయామాలు: GANs
* [TensorFlow/Keras లో GAN నోట్బుక్](GANTF.ipynb)
* [PyTorch లో GAN నోట్బుక్](GANPyTorch.ipynb)
### GAN శిక్షణలో సమస్యలు
GANs శిక్షణ చాలా కష్టమైనది. కొన్ని సమస్యలు:
* **మోడ్ కాలాప్స్**. దీని అర్థం జనరేటర్ ఒకే ఒక విజయం సాధించిన చిత్రాన్ని మాత్రమే ఉత్పత్తి చేయడం, వివిధ రకాల చిత్రాలను కాదు.
* **హైపర్‌పరామీటర్లపై సున్నితత్వం**. GAN కుదరదు అనిపించి, తర్వాత అకస్మాత్తుగా లెర్నింగ్ రేట్ తగ్గి కుదరడం.
* జనరేటర్ మరియు డిస్క్రిమినేటర్ మధ్య **సమతుల్యత**. చాలా సందర్భాల్లో డిస్క్రిమినేటర్ నష్టం త్వరగా 0కి చేరుతుంది, దాంతో జనరేటర్ మరింత శిక్షణ పొందలేకపోతుంది. దీన్ని అధిగమించడానికి, జనరేటర్ మరియు డిస్క్రిమినేటర్ కోసం వేర్వేరు లెర్నింగ్ రేట్లు పెట్టడం లేదా డిస్క్రిమినేటర్ నష్టం చాలా తక్కువ అయితే దాని శిక్షణను వదిలివేయడం చేయవచ్చు.
* **అధిక రిజల్యూషన్ శిక్షణ**. ఆటోఎంకోడర్లతో ఉన్న సమస్యలతో సమానంగా, కన్వల్యూషనల్ నెట్‌వర్క్ యొక్క చాలా లేయర్లను పునర్నిర్మించడంలో ఆర్టిఫాక్ట్స్ వస్తాయి. దీన్ని సాధారణంగా **ప్రోగ్రెసివ్ గ్రోయింగ్** ద్వారా పరిష్కరిస్తారు, మొదట తక్కువ రిజల్యూషన్ చిత్రాలపై కొన్ని లేయర్లు శిక్షణ పొందుతాయి, తరువాత లేయర్లు "అన్‌బ్లాక్" చేయబడతాయి లేదా జోడించబడతాయి. మరో పరిష్కారం లేయర్ల మధ్య అదనపు కనెక్షన్లు జోడించి, ఒకేసారి అనేక రిజల్యూషన్లపై శిక్షణ ఇవ్వడం - వివరాలకు ఈ [మల్టీ-స్కేల్ గ్రేడియంట్ GANs పేపర్](https://arxiv.org/abs/1903.06048) చూడండి.
## స్టైల్ ట్రాన్స్‌ఫర్
GANs కళాత్మక చిత్రాలను సృష్టించడానికి అద్భుతమైన మార్గం. మరో ఆసక్తికర సాంకేతికత **స్టైల్ ట్రాన్స్‌ఫర్**, ఇది ఒక **కంటెంట్ చిత్రం** తీసుకుని, దాన్ని వేరే శైలిలో పునఃరూపకల్పన చేస్తుంది, **స్టైల్ చిత్రం** నుండి ఫిల్టర్లు వర్తింపజేస్తుంది.
ఇది ఇలా పనిచేస్తుంది:
* మనం యాదృచ్ఛిక శబ్ద చిత్రం (లేదా కంటెంట్ చిత్రం, కానీ అర్థం చేసుకోవడానికి యాదృచ్ఛిక శబ్దం మొదలుపెట్టడం సులభం) తో ప్రారంభిస్తాము
* మన లక్ష్యం ఇలాంటి చిత్రం సృష్టించడం, ఇది కంటెంట్ చిత్రం మరియు స్టైల్ చిత్రానికి రెండింటికీ దగ్గరగా ఉంటుంది. ఇది రెండు నష్ట ఫంక్షన్ల ద్వారా నిర్ణయించబడుతుంది:
- **కంటెంట్ నష్టం** ప్రస్తుత చిత్రం మరియు కంటెంట్ చిత్రం నుండి CNN ద్వారా కొన్ని లేయర్లలో తీసుకున్న ఫీచర్ల ఆధారంగా లెక్కించబడుతుంది
- **స్టైల్ నష్టం** ప్రస్తుత చిత్రం మరియు స్టైల్ చిత్రం మధ్య గ్రామ్ మ్యాట్రిసెస్ ఉపయోగించి తెలివిగా లెక్కించబడుతుంది (మరింత వివరాలు [ఉదాహరణ నోట్బుక్](StyleTransfer.ipynb) లో)
* చిత్రాన్ని మృదువుగా చేసి శబ్దాన్ని తొలగించడానికి, **వేరియేషన్ నష్టం** కూడా పరిచయం చేస్తాము, ఇది పొరుగువారి పిక్సెల్స్ మధ్య సగటు దూరాన్ని లెక్కిస్తుంది
* ప్రధాన ఆప్టిమైజేషన్ లూప్ ప్రస్తుత చిత్రాన్ని గ్రేడియంట్ డిసెంట్ (లేదా ఇతర ఆప్టిమైజేషన్ అల్గోరిథం) ఉపయోగించి సవరించి మొత్తం నష్టాన్ని తగ్గిస్తుంది, ఇది మూడు నష్టాల బరువు కలిగిన సమ్మేళనం.
## ✍️ ఉదాహరణ: [స్టైల్ ట్రాన్స్‌ఫర్](StyleTransfer.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/20)
## ముగింపు
ఈ పాఠంలో, మీరు GANs గురించి మరియు వాటిని ఎలా శిక్షణ ఇవ్వాలో నేర్చుకున్నారు. ఈ రకమైన న్యూరల్ నెట్‌వర్క్ ఎదుర్కొనే ప్రత్యేక సవాళ్లను మరియు వాటిని అధిగమించే కొన్ని వ్యూహాలను కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
మీ స్వంత చిత్రాలతో [స్టైల్ ట్రాన్స్‌ఫర్ నోట్బుక్](StyleTransfer.ipynb) ను అమలు చేయండి.
## సమీక్ష & స్వీయ అధ్యయనం
సూచన కోసం, GANs గురించి ఈ వనరులు చదవండి:
* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), ఒక *de facto* GAN ఆర్కిటెక్చర్
* [Azure ML పై GANs ఉపయోగించి జనరేటివ్ ఆర్ట్ సృష్టించడం](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
## అసైన్‌మెంట్
ఈ పాఠానికి సంబంధించిన రెండు నోట్బుక్స్‌లో ఒకదాన్ని తిరిగి సందర్శించి, GAN ను మీ స్వంత చిత్రాలపై మళ్లీ శిక్షణ ఇవ్వండి. మీరు ఏమి సృష్టించగలరు?
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ff65b4da07b23697235de2beb2a3c25",
"translation_date": "2025-11-25T22:28:10+00:00",
"source_file": "lessons/4-ComputerVision/10-GANs/README.md",
"language_code": "te"
}
-->
# జనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్
మునుపటి విభాగంలో, మనం **జనరేటివ్ మోడల్స్** గురించి నేర్చుకున్నాము: శిక్షణ డేటాసెట్‌లోని చిత్రాలకు సమానమైన కొత్త చిత్రాలను సృష్టించగల మోడల్స్. VAE ఒక మంచి ఉదాహరణ.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/19)
కానీ, మనం వాస్తవానికి అర్థవంతమైన, సరైన రిజల్యూషన్‌లో పెయింటింగ్ వంటి దాన్ని సృష్టించాలనుకుంటే, VAEతో శిక్షణ బాగా కుదరదు. ఈ సందర్భంలో, ప్రత్యేకంగా జనరేటివ్ మోడల్స్ కోసం రూపొందించిన మరో ఆర్కిటెక్చర్ గురించి తెలుసుకోవాలి - **జనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్**, లేదా GANs.
GAN యొక్క ప్రధాన ఆలోచన రెండు న్యూరల్ నెట్‌వర్క్స్‌ను ఒకదానితో ఒకటి పోటీగా శిక్షణ ఇవ్వడం:
<img src="../../../../../translated_images/gan_architecture.8f3a5ab62b8d5d69.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
> ✅ కొంత పదజాలం:
> * **జనరేటర్** అనేది ఒక నెట్‌వర్క్, ఇది కొంత యాదృచ్ఛిక వెక్టర్ తీసుకుని, దాని ఫలితంగా చిత్రం ఉత్పత్తి చేస్తుంది
> * **డిస్క్రిమినేటర్** అనేది ఒక నెట్‌వర్క్, ఇది ఒక చిత్రాన్ని తీసుకుని, అది నిజమైన చిత్రం (శిక్షణ డేటాసెట్ నుండి) కాదా లేదా జనరేటర్ ద్వారా ఉత్పత్తి చేయబడిందా అని చెప్పాలి. ఇది ప్రాథమికంగా ఒక చిత్రం వర్గీకరణ నెట్‌వర్క్.
### డిస్క్రిమినేటర్
డిస్క్రిమినేటర్ ఆర్కిటెక్చర్ సాధారణ చిత్రం వర్గీకరణ నెట్‌వర్క్ నుండి భిన్నంగా ఉండదు. సులభమైన సందర్భంలో ఇది పూర్తిగా కనెక్ట్ అయిన వర్గీకరణ నెట్‌వర్క్ కావచ్చు, కానీ ఎక్కువగా ఇది [కన్వల్యూషనల్ నెట్‌వర్క్](../07-ConvNets/README.md) అవుతుంది.
> ✅ కన్వల్యూషనల్ నెట్‌వర్క్ ఆధారిత GAN ను [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) అంటారు
CNN డిస్క్రిమినేటర్ లో ఈ క్రింది లేయర్లు ఉంటాయి: అనేక కన్వల్యూషన్లు+పూలింగ్‌లు (స్థల పరిమాణం తగ్గుతూ), మరియు ఒకటి లేదా అంతకంటే ఎక్కువ పూర్తిగా కనెక్ట్ అయిన లేయర్లు "ఫీచర్ వెక్టర్" కోసం, చివరగా ద్విభాగ వర్గీకరణ.
> ✅ ఇక్కడ 'పూలింగ్' అనేది చిత్ర పరిమాణాన్ని తగ్గించే సాంకేతికత. "పూలింగ్ లేయర్లు ఒక లేయర్‌లోని న్యూరాన్ క్లస్టర్ల అవుట్పుట్‌లను కలిపి తదుపరి లేయర్‌లో ఒకే న్యూరాన్‌గా మార్చి డేటా పరిమాణాన్ని తగ్గిస్తాయి." - [మూలం](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
### జనరేటర్
జనరేటర్ కొంచెం క్లిష్టమైనది. దీన్ని డిస్క్రిమినేటర్ యొక్క రివర్స్‌గా భావించవచ్చు. లాటెంట్ వెక్టర్ (ఫీచర్ వెక్టర్ స్థానంలో) నుండి ప్రారంభించి, అవసరమైన పరిమాణం/ఆకారానికి మార్చే పూర్తిగా కనెక్ట్ అయిన లేయర్, తరువాత డీకన్వల్యూషన్లు+అప్స్కేలింగ్ ఉంటాయి. ఇది [ఆటోఎంకోడర్](../09-Autoencoders/README.md) యొక్క డీకోడర్ భాగానికి సమానంగా ఉంటుంది.
> ✅ కన్వల్యూషన్ లేయర్ చిత్రం మీద లీనియర్ ఫిల్టర్ లాగా అమలు కావడంతో, డీకన్వల్యూషన్ కూడా కన్వల్యూషన్ లాగా ఉంటుంది మరియు అదే లేయర్ లాజిక్ ఉపయోగించి అమలు చేయవచ్చు.
<img src="../../../../../translated_images/gan_arch_detail.46b95fd366f8e543.te.png" width="70%"/>
> చిత్రం: [Dmitry Soshnikov](http://soshnikov.com)
### GAN శిక్షణ
GANs ను **అడ్వర్సరియల్** అంటారు ఎందుకంటే జనరేటర్ మరియు డిస్క్రిమినేటర్ మధ్య నిరంతర పోటీ ఉంటుంది. ఈ పోటీలో, రెండు నెట్‌వర్క్స్ మెరుగుపడతాయి, అందువల్ల నెట్‌వర్క్ మెరుగైన చిత్రాలను ఉత్పత్తి చేయడం నేర్చుకుంటుంది.
శిక్షణ రెండు దశల్లో జరుగుతుంది:
* **డిస్క్రిమినేటర్ శిక్షణ**. ఇది సులభం: జనరేటర్ ద్వారా చిత్రాల బ్యాచ్ ఉత్పత్తి చేసి, వాటిని 0 (నకిలీ చిత్రం) గా లేబుల్ చేస్తాము, మరియు ఇన్‌పుట్ డేటాసెట్ నుండి నిజమైన చిత్రాల బ్యాచ్ తీసుకుని వాటిని 1 (నిజమైన చిత్రం) గా లేబుల్ చేస్తాము. డిస్క్రిమినేటర్ నష్టాన్ని పొందిన తర్వాత బ్యాక్‌ప్రొపగేషన్ చేస్తాము.
* **జనరేటర్ శిక్షణ**. ఇది కొంచెం క్లిష్టం, ఎందుకంటే జనరేటర్ కోసం ప్రత్యక్షంగా ఆశించిన అవుట్పుట్ తెలియదు. మొత్తం GAN నెట్‌వర్క్ (జనరేటర్ + డిస్క్రిమినేటర్) తీసుకుని, కొంత యాదృచ్ఛిక వెక్టర్లను ఇస్తాము, ఫలితం 1 (నిజమైన చిత్రం) కావాలని ఆశిస్తాము. ఆ తర్వాత డిస్క్రిమినేటర్ పరామితులను ఫ్రీజ్ చేసి (ఈ దశలో దాన్ని శిక్షణ ఇవ్వకూడదు), బ్యాక్‌ప్రొపగేషన్ చేస్తాము.
ఈ ప్రక్రియలో, జనరేటర్ మరియు డిస్క్రిమినేటర్ నష్టాలు పెద్దగా తగ్గవు. సరిగా ఉంటే, అవి ఊగుతూ ఉంటాయి, అంటే రెండు నెట్‌వర్క్స్ తమ పనితీరును మెరుగుపరుస్తున్నాయి.
## ✍️ వ్యాయామాలు: GANs
* [TensorFlow/Keras లో GAN నోట్బుక్](GANTF.ipynb)
* [PyTorch లో GAN నోట్బుక్](GANPyTorch.ipynb)
### GAN శిక్షణలో సమస్యలు
GANs శిక్షణ చాలా కష్టమైనది. కొన్ని సమస్యలు:
* **మోడ్ కాలాప్స్**. దీని అర్థం జనరేటర్ ఒకే ఒక విజయం సాధించిన చిత్రాన్ని మాత్రమే ఉత్పత్తి చేయడం, వివిధ రకాల చిత్రాలను కాదు.
* **హైపర్‌పరామీటర్లపై సున్నితత్వం**. GAN కుదరదు అనిపించి, తర్వాత అకస్మాత్తుగా లెర్నింగ్ రేట్ తగ్గి కుదరడం.
* జనరేటర్ మరియు డిస్క్రిమినేటర్ మధ్య **సమతుల్యత**. చాలా సందర్భాల్లో డిస్క్రిమినేటర్ నష్టం త్వరగా 0కి చేరుతుంది, దాంతో జనరేటర్ మరింత శిక్షణ పొందలేకపోతుంది. దీన్ని అధిగమించడానికి, జనరేటర్ మరియు డిస్క్రిమినేటర్ కోసం వేర్వేరు లెర్నింగ్ రేట్లు పెట్టడం లేదా డిస్క్రిమినేటర్ నష్టం చాలా తక్కువ అయితే దాని శిక్షణను వదిలివేయడం చేయవచ్చు.
* **అధిక రిజల్యూషన్ శిక్షణ**. ఆటోఎంకోడర్లతో ఉన్న సమస్యలతో సమానంగా, కన్వల్యూషనల్ నెట్‌వర్క్ యొక్క చాలా లేయర్లను పునర్నిర్మించడంలో ఆర్టిఫాక్ట్స్ వస్తాయి. దీన్ని సాధారణంగా **ప్రోగ్రెసివ్ గ్రోయింగ్** ద్వారా పరిష్కరిస్తారు, మొదట తక్కువ రిజల్యూషన్ చిత్రాలపై కొన్ని లేయర్లు శిక్షణ పొందుతాయి, తరువాత లేయర్లు "అన్‌బ్లాక్" చేయబడతాయి లేదా జోడించబడతాయి. మరో పరిష్కారం లేయర్ల మధ్య అదనపు కనెక్షన్లు జోడించి, ఒకేసారి అనేక రిజల్యూషన్లపై శిక్షణ ఇవ్వడం - వివరాలకు ఈ [మల్టీ-స్కేల్ గ్రేడియంట్ GANs పేపర్](https://arxiv.org/abs/1903.06048) చూడండి.
## స్టైల్ ట్రాన్స్‌ఫర్
GANs కళాత్మక చిత్రాలను సృష్టించడానికి అద్భుతమైన మార్గం. మరో ఆసక్తికర సాంకేతికత **స్టైల్ ట్రాన్స్‌ఫర్**, ఇది ఒక **కంటెంట్ చిత్రం** తీసుకుని, దాన్ని వేరే శైలిలో పునఃరూపకల్పన చేస్తుంది, **స్టైల్ చిత్రం** నుండి ఫిల్టర్లు వర్తింపజేస్తుంది.
ఇది ఇలా పనిచేస్తుంది:
* మనం యాదృచ్ఛిక శబ్ద చిత్రం (లేదా కంటెంట్ చిత్రం, కానీ అర్థం చేసుకోవడానికి యాదృచ్ఛిక శబ్దం మొదలుపెట్టడం సులభం) తో ప్రారంభిస్తాము
* మన లక్ష్యం ఇలాంటి చిత్రం సృష్టించడం, ఇది కంటెంట్ చిత్రం మరియు స్టైల్ చిత్రానికి రెండింటికీ దగ్గరగా ఉంటుంది. ఇది రెండు నష్ట ఫంక్షన్ల ద్వారా నిర్ణయించబడుతుంది:
- **కంటెంట్ నష్టం** ప్రస్తుత చిత్రం మరియు కంటెంట్ చిత్రం నుండి CNN ద్వారా కొన్ని లేయర్లలో తీసుకున్న ఫీచర్ల ఆధారంగా లెక్కించబడుతుంది
- **స్టైల్ నష్టం** ప్రస్తుత చిత్రం మరియు స్టైల్ చిత్రం మధ్య గ్రామ్ మ్యాట్రిసెస్ ఉపయోగించి తెలివిగా లెక్కించబడుతుంది (మరింత వివరాలు [ఉదాహరణ నోట్బుక్](StyleTransfer.ipynb) లో)
* చిత్రాన్ని మృదువుగా చేసి శబ్దాన్ని తొలగించడానికి, **వేరియేషన్ నష్టం** కూడా పరిచయం చేస్తాము, ఇది పొరుగువారి పిక్సెల్స్ మధ్య సగటు దూరాన్ని లెక్కిస్తుంది
* ప్రధాన ఆప్టిమైజేషన్ లూప్ ప్రస్తుత చిత్రాన్ని గ్రేడియంట్ డిసెంట్ (లేదా ఇతర ఆప్టిమైజేషన్ అల్గోరిథం) ఉపయోగించి సవరించి మొత్తం నష్టాన్ని తగ్గిస్తుంది, ఇది మూడు నష్టాల బరువు కలిగిన సమ్మేళనం.
## ✍️ ఉదాహరణ: [స్టైల్ ట్రాన్స్‌ఫర్](StyleTransfer.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/20)
## ముగింపు
ఈ పాఠంలో, మీరు GANs గురించి మరియు వాటిని ఎలా శిక్షణ ఇవ్వాలో నేర్చుకున్నారు. ఈ రకమైన న్యూరల్ నెట్‌వర్క్ ఎదుర్కొనే ప్రత్యేక సవాళ్లను మరియు వాటిని అధిగమించే కొన్ని వ్యూహాలను కూడా తెలుసుకున్నారు.
## 🚀 సవాలు
మీ స్వంత చిత్రాలతో [స్టైల్ ట్రాన్స్‌ఫర్ నోట్బుక్](StyleTransfer.ipynb) ను అమలు చేయండి.
## సమీక్ష & స్వీయ అధ్యయనం
సూచన కోసం, GANs గురించి ఈ వనరులు చదవండి:
* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), ఒక *de facto* GAN ఆర్కిటెక్చర్
* [Azure ML పై GANs ఉపయోగించి జనరేటివ్ ఆర్ట్ సృష్టించడం](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
## అసైన్‌మెంట్
ఈ పాఠానికి సంబంధించిన రెండు నోట్బుక్స్‌లో ఒకదాన్ని తిరిగి సందర్శించి, GAN ను మీ స్వంత చిత్రాలపై మళ్లీ శిక్షణ ఇవ్వండి. మీరు ఏమి సృష్టించగలరు?
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,191 +1,191 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "d76a7eda28de5210c8b1ba50a6216c69",
"translation_date": "2025-11-25T22:33:02+00:00",
"source_file": "lessons/4-ComputerVision/11-ObjectDetection/README.md",
"language_code": "te"
}
-->
# ఆబ్జెక్ట్ డిటెక్షన్
ఇప్పటివరకు మనం చూసిన ఇమేజ్ క్లాసిఫికేషన్ మోడల్స్ ఒక చిత్రాన్ని తీసుకుని, ఉదాహరణకు MNIST సమస్యలో 'నంబర్' అనే క్లాస్ వంటి వర్గీకరణ ఫలితాన్ని ఉత్పత్తి చేసేవి. అయితే, చాలా సందర్భాల్లో మనం కేవలం ఒక చిత్రం వస్తువులను చూపిస్తుందని తెలుసుకోవడం కాకుండా, వాటి ఖచ్చితమైన స్థానం కూడా తెలుసుకోవాలనుకుంటాము. ఇదే **ఆబ్జెక్ట్ డిటెక్షన్** యొక్క ముఖ్య ఉద్దేశ్యం.
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/21)
![Object Detection](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.te.png)
> చిత్రం [YOLO v2 వెబ్ సైట్](https://pjreddie.com/darknet/yolov2/) నుండి
## ఆబ్జెక్ట్ డిటెక్షన్‌కు ఒక సాదాసీదా విధానం
ఒక చిత్రంలో పిల్లిని కనుగొనాలనుకుంటే, ఆబ్జెక్ట్ డిటెక్షన్‌కు చాలా సాదాసీదా విధానం ఇలా ఉంటుంది:
1. చిత్రాన్ని అనేక టైల్స్‌గా విభజించండి
2. ప్రతి టైల్స్‌పై ఇమేజ్ క్లాసిఫికేషన్ నడపండి.
3. తగినంతగా అధిక యాక్టివేషన్ ఉన్న టైల్స్ ఆ వస్తువు ఉన్నట్లు భావించవచ్చు.
![Naive Object Detection](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.te.png)
> *చిత్రం [Exercise Notebook](ObjectDetection-TF.ipynb) నుండి*
కానీ, ఈ విధానం సరైనది కాదు, ఎందుకంటే ఇది ఆబ్జెక్ట్ యొక్క బౌండింగ్ బాక్స్‌ను చాలా అస్పష్టంగా మాత్రమే గుర్తించగలదు. ఖచ్చితమైన స్థానం కోసం, బౌండింగ్ బాక్స్ కోఆర్డినేట్లను అంచనా వేయడానికి ఒక రకమైన **రెగ్రెషన్** అవసరం - దానికి ప్రత్యేక డేటాసెట్లు అవసరం.
## ఆబ్జెక్ట్ డిటెక్షన్ కోసం రెగ్రెషన్
[ఈ బ్లాగ్ పోస్ట్](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ఆకారాలను గుర్తించడంపై మంచి పరిచయాన్ని అందిస్తుంది.
## ఆబ్జెక్ట్ డిటెక్షన్ కోసం డేటాసెట్లు
ఈ పనికి మీరు ఈ క్రింది డేటాసెట్లను చూడవచ్చు:
* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 తరగతులు
* [COCO](http://cocodataset.org/#home) - Common Objects in Context. 80 తరగతులు, బౌండింగ్ బాక్స్‌లు మరియు సెగ్మెంటేషన్ మాస్కులు
![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.te.jpg)
## ఆబ్జెక్ట్ డిటెక్షన్ మెట్రిక్స్
### ఇంటర్సెక్షన్ ఓవర్ యూనియన్
ఇమేజ్ క్లాసిఫికేషన్‌లో అల్గోరిథం ఎంత బాగా పనిచేస్తుందో కొలవడం సులభం, కానీ ఆబ్జెక్ట్ డిటెక్షన్‌లో క్లాస్ సరైనదా మరియు అంచనా వేయబడిన బౌండింగ్ బాక్స్ స్థానం ఎంత ఖచ్చితమో రెండింటినీ కొలవాలి. రెండవదానికి, మనం **ఇంటర్సెక్షన్ ఓవర్ యూనియన్** (IoU) అనే ప్రమాణాన్ని ఉపయోగిస్తాము, ఇది రెండు బాక్స్‌లు (లేదా ఏదైనా రెండు ప్రాంతాలు) ఎంత overlap అవుతాయో కొలుస్తుంది.
![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.te.png)
> *చిత్రం [ఈ అద్భుతమైన IoU బ్లాగ్ పోస్ట్](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) నుండి*
సూత్రం సులభం - రెండు ఆకారాల మధ్య ఇంటర్సెక్షన్ ప్రాంతాన్ని వారి యూనియన్ ప్రాంతంతో భాగిస్తాము. రెండు సమాన ప్రాంతాల కోసం IoU విలువ 1 అవుతుంది, పూర్తిగా వేరే ప్రాంతాల కోసం 0 అవుతుంది. మిగతా సందర్భాల్లో 0 నుండి 1 మధ్య ఉంటుంది. సాధారణంగా మనం IoU ఒక నిర్దిష్ట విలువ కంటే ఎక్కువ ఉన్న బౌండింగ్ బాక్స్‌లను మాత్రమే పరిగణిస్తాము.
### సగటు ప్రిసిషన్
ఒక నిర్దిష్ట వస్తువు తరగతి $C$ ఎంత బాగా గుర్తించబడిందో కొలవాలనుకుంటే, మనం **సగటు ప్రిసిషన్** (Average Precision) మెట్రిక్‌ను ఉపయోగిస్తాము, ఇది ఇలా లెక్కించబడుతుంది:
1. ప్రిసిషన్-రికాల్ వక్రం (Precision-Recall curve) డిటెక్షన్ థ్రెషోల్డ్ విలువ (0 నుండి 1 వరకు) ఆధారంగా ఖచ్చితత్వాన్ని చూపుతుంది.
2. థ్రెషోల్డ్ ఆధారంగా, చిత్రంలో ఎక్కువ లేదా తక్కువ వస్తువులు గుర్తించబడతాయి, మరియు ప్రిసిషన్, రికాల్ విలువలు మారుతాయి.
3. వక్రం ఇలా ఉంటుంది:
<img src="https://github.com/shwars/NeuroWorkshop/raw/master/images/ObjDetectionPrecisionRecall.png"/>
> *చిత్రం [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) నుండి*
ఒక క్లాస్ $C$ కోసం సగటు ప్రిసిషన్ అనేది ఈ వక్రం క్రింద ఉన్న ప్రాంతం. మరింత ఖచ్చితంగా చెప్పాలంటే, రికాల్ అక్షం సాధారణంగా 10 భాగాలుగా విభజించబడుతుంది, మరియు ఆ పాయింట్లపై ప్రిసిషన్ సగటు తీసుకుంటారు:
$$
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
$$
### AP మరియు IoU
మనం IoU ఒక నిర్దిష్ట విలువ కంటే ఎక్కువ ఉన్న డిటెక్షన్లను మాత్రమే పరిగణిస్తాము. ఉదాహరణకు, PASCAL VOC డేటాసెట్‌లో సాధారణంగా $\mbox{IoU Threshold} = 0.5$ అనుకుంటారు, COCOలో AP వివిధ $\mbox{IoU Threshold}$ విలువల కోసం కొలుస్తారు.
<img src="https://github.com/shwars/NeuroWorkshop/raw/master/images/ObjDetectionPrecisionRecallIoU.png"/>
> *చిత్రం [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) నుండి*
### సగటు సగటు ప్రిసిషన్ - mAP
ఆబ్జెక్ట్ డిటెక్షన్ కోసం ప్రధాన మెట్రిక్ **Mean Average Precision** లేదా **mAP** అని పిలవబడుతుంది. ఇది అన్ని వస్తువు తరగతులపై సగటుగా తీసుకున్న సగటు ప్రిసిషన్ విలువ, మరియు కొన్నిసార్లు $\mbox{IoU Threshold}$ పై కూడా సగటు తీసుకుంటారు. మరింత వివరంగా, **mAP** లెక్కింపు ప్రక్రియను [ఈ బ్లాగ్ పోస్ట్](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3))లో మరియు [కోడ్ నమూనాలతో ఇక్కడ](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) చూడవచ్చు.
## వివిధ ఆబ్జెక్ట్ డిటెక్షన్ విధానాలు
ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్ రెండు ప్రధాన తరగతులుగా ఉంటాయి:
* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). ప్రధాన ఆలోచన **Regions of Interests** (ROI) సృష్టించి, వాటిపై CNN నడిపించి గరిష్ట యాక్టివేషన్ కోసం చూడటం. ఇది సాదాసీదా విధానానికి సమానంగా ఉంటుంది, కానీ ROIs మరింత తెలివైన విధంగా సృష్టిస్తారు. ఇలాంటి పద్ధతుల ప్రధాన లోపం అవి నెమ్మదిగా ఉండటం, ఎందుకంటే చిత్రంపై CNN క్లాసిఫయర్‌ను అనేక సార్లు నడపాలి.
* **ఒకసారి నడిపే** (YOLO, SSD, RetinaNet) పద్ధతులు. ఈ ఆర్కిటెక్చర్లలో నెట్‌వర్క్ ఒకసారి నడిపితేనే క్లాసులు మరియు ROIs రెండింటినీ అంచనా వేస్తుంది.
### R-CNN: Region-Based CNN
[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) ఉపయోగించి ROI ప్రాంతాల హైరార్కికల్ నిర్మాణాన్ని సృష్టిస్తుంది, వాటిని CNN ఫీచర్ ఎక్స్‌ట్రాక్టర్లు మరియు SVM-క్లాసిఫయర్లకు పంపించి వస్తువు తరగతిని నిర్ణయిస్తారు, మరియు లీనియర్ రెగ్రెషన్ ద్వారా *బౌండింగ్ బాక్స్* కోఆర్డినేట్లను అంచనా వేస్తారు. [అధికారిక పేపర్](https://arxiv.org/pdf/1506.01497v1.pdf)
![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.te.png)
> *చిత్రం van de Sande et al. ICCV’11 నుండి*
![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.te.png)
> *చిత్రాలు [ఈ బ్లాగ్](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) నుండి*
### F-RCNN - ఫాస్ట్ R-CNN
ఈ విధానం R-CNNకి సమానంగా ఉంటుంది, కానీ ప్రాంతాలు కన్వల్యూషన్ లేయర్లు వరుసగా వర్తించిన తర్వాత నిర్వచించబడతాయి.
![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.te.png)
> చిత్రం [అధికారిక పేపర్](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 నుండి
### Faster R-CNN
ఈ విధానం ప్రధాన ఆలోచన ROIs అంచనా వేయడానికి న్యూరల్ నెట్‌వర్క్‌ను ఉపయోగించడం - దీనిని *Region Proposal Network* అంటారు. [పేపర్](https://arxiv.org/pdf/1506.01497.pdf), 2016
![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/pdf/1506.01497.pdf) నుండి
### R-FCN: Region-Based Fully Convolutional Network
ఈ అల్గోరిథం Faster R-CNN కంటే కూడా వేగంగా ఉంటుంది. ప్రధాన ఆలోచన:
1. ResNet-101 ఉపయోగించి ఫీచర్లను తీసుకోవడం
2. ఫీచర్లు **Position-Sensitive Score Map** ద్వారా ప్రాసెస్ చేయబడతాయి. $C$ తరగతులలో ప్రతి వస్తువు $k\times k$ ప్రాంతాలుగా విభజించబడుతుంది, మరియు మనం వస్తువుల భాగాలను అంచనా వేయడానికి శిక్షణ పొందుతాము.
3. $k\times k$ ప్రాంతాల ప్రతి భాగం కోసం అన్ని నెట్‌వర్క్లు వస్తువు తరగతుల కోసం ఓటు వేస్తాయి, గరిష్ట ఓటు పొందిన వస్తువు తరగతి ఎంచుకోబడుతుంది.
![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/abs/1605.06409) నుండి
### YOLO - You Only Look Once
YOLO ఒక రియల్‌టైమ్ ఒకసారి నడిపే అల్గోరిథం. ప్రధాన ఆలోచన:
* చిత్రాన్ని $S\times S$ ప్రాంతాలుగా విభజించడం
* ప్రతి ప్రాంతం కోసం, **CNN** $n$ సాధ్యమైన వస్తువులు, *బౌండింగ్ బాక్స్* కోఆర్డినేట్లు మరియు *confidence* = *probability* * IoU అంచనా వేయడం.
![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/abs/1506.02640) నుండి
### ఇతర అల్గోరిథమ్స్
* RetinaNet: [అధికారిక పేపర్](https://arxiv.org/abs/1708.02002)
- [Torchvisionలో PyTorch అమలు](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html)
- [Keras అమలు](https://github.com/fizyr/keras-retinanet)
- [Keras నమూనాల్లో RetinaNetతో ఆబ్జెక్ట్ డిటెక్షన్](https://keras.io/examples/vision/retinanet/)
* SSD (Single Shot Detector): [అధికారిక పేపర్](https://arxiv.org/abs/1512.02325)
## ✍️ వ్యాయామాలు: ఆబ్జెక్ట్ డిటెక్షన్
మీ అభ్యాసాన్ని ఈ నోట్బుక్‌లో కొనసాగించండి:
[ObjectDetection.ipynb](ObjectDetection.ipynb)
## ముగింపు
ఈ పాఠంలో మీరు ఆబ్జెక్ట్ డిటెక్షన్ సాధించగల వివిధ మార్గాలను ఒక సారాంశంగా చూశారు!
## 🚀 సవాలు
YOLO గురించి ఈ వ్యాసాలు మరియు నోట్బుక్స్ చదవండి మరియు వాటిని స్వయంగా ప్రయత్నించండి
* [YOLO గురించి మంచి బ్లాగ్ పోస్ట్](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/)
* [అధికారిక సైట్](https://pjreddie.com/darknet/yolo/)
* Yolo: [Keras అమలు](https://github.com/experiencor/keras-yolo2), [దశల వారీ నోట్బుక్](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb)
* Yolo v2: [Keras అమలు](https://github.com/experiencor/keras-yolo2), [దశల వారీ నోట్బుక్](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/22)
## సమీక్ష & స్వీయ అధ్యయనం
* [ఆబ్జెక్ట్ డిటెక్షన్](https://tjmachinelearning.com/lectures/1718/obj/) - నిఖిల్ సర్దానా
* [ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్ మంచి పోలిక](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html)
* [ఆబ్జెక్ట్ డిటెక్షన్ కోసం డీప్ లెర్నింగ్ అల్గోరిథమ్స్ సమీక్ష](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852)
* [ప్రాథమిక ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్‌కు దశల వారీ పరిచయం](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/)
* [ఫాస్టర్ R-CNN ఆబ్జెక్ట్ డిటెక్షన్ కోసం Pythonలో అమలు](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/)
## [అసైన్‌మెంట్: ఆబ్జెక్ట్ డిటెక్షన్](lab/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "d76a7eda28de5210c8b1ba50a6216c69",
"translation_date": "2025-11-25T22:33:02+00:00",
"source_file": "lessons/4-ComputerVision/11-ObjectDetection/README.md",
"language_code": "te"
}
-->
# ఆబ్జెక్ట్ డిటెక్షన్
ఇప్పటివరకు మనం చూసిన ఇమేజ్ క్లాసిఫికేషన్ మోడల్స్ ఒక చిత్రాన్ని తీసుకుని, ఉదాహరణకు MNIST సమస్యలో 'నంబర్' అనే క్లాస్ వంటి వర్గీకరణ ఫలితాన్ని ఉత్పత్తి చేసేవి. అయితే, చాలా సందర్భాల్లో మనం కేవలం ఒక చిత్రం వస్తువులను చూపిస్తుందని తెలుసుకోవడం కాకుండా, వాటి ఖచ్చితమైన స్థానం కూడా తెలుసుకోవాలనుకుంటాము. ఇదే **ఆబ్జెక్ట్ డిటెక్షన్** యొక్క ముఖ్య ఉద్దేశ్యం.
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/21)
![Object Detection](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be.te.png)
> చిత్రం [YOLO v2 వెబ్ సైట్](https://pjreddie.com/darknet/yolov2/) నుండి
## ఆబ్జెక్ట్ డిటెక్షన్‌కు ఒక సాదాసీదా విధానం
ఒక చిత్రంలో పిల్లిని కనుగొనాలనుకుంటే, ఆబ్జెక్ట్ డిటెక్షన్‌కు చాలా సాదాసీదా విధానం ఇలా ఉంటుంది:
1. చిత్రాన్ని అనేక టైల్స్‌గా విభజించండి
2. ప్రతి టైల్స్‌పై ఇమేజ్ క్లాసిఫికేషన్ నడపండి.
3. తగినంతగా అధిక యాక్టివేషన్ ఉన్న టైల్స్ ఆ వస్తువు ఉన్నట్లు భావించవచ్చు.
![Naive Object Detection](../../../../../translated_images/naive-detection.e7f1ba220ccd08c6.te.png)
> *చిత్రం [Exercise Notebook](ObjectDetection-TF.ipynb) నుండి*
కానీ, ఈ విధానం సరైనది కాదు, ఎందుకంటే ఇది ఆబ్జెక్ట్ యొక్క బౌండింగ్ బాక్స్‌ను చాలా అస్పష్టంగా మాత్రమే గుర్తించగలదు. ఖచ్చితమైన స్థానం కోసం, బౌండింగ్ బాక్స్ కోఆర్డినేట్లను అంచనా వేయడానికి ఒక రకమైన **రెగ్రెషన్** అవసరం - దానికి ప్రత్యేక డేటాసెట్లు అవసరం.
## ఆబ్జెక్ట్ డిటెక్షన్ కోసం రెగ్రెషన్
[ఈ బ్లాగ్ పోస్ట్](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ఆకారాలను గుర్తించడంపై మంచి పరిచయాన్ని అందిస్తుంది.
## ఆబ్జెక్ట్ డిటెక్షన్ కోసం డేటాసెట్లు
ఈ పనికి మీరు ఈ క్రింది డేటాసెట్లను చూడవచ్చు:
* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 తరగతులు
* [COCO](http://cocodataset.org/#home) - Common Objects in Context. 80 తరగతులు, బౌండింగ్ బాక్స్‌లు మరియు సెగ్మెంటేషన్ మాస్కులు
![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb.te.jpg)
## ఆబ్జెక్ట్ డిటెక్షన్ మెట్రిక్స్
### ఇంటర్సెక్షన్ ఓవర్ యూనియన్
ఇమేజ్ క్లాసిఫికేషన్‌లో అల్గోరిథం ఎంత బాగా పనిచేస్తుందో కొలవడం సులభం, కానీ ఆబ్జెక్ట్ డిటెక్షన్‌లో క్లాస్ సరైనదా మరియు అంచనా వేయబడిన బౌండింగ్ బాక్స్ స్థానం ఎంత ఖచ్చితమో రెండింటినీ కొలవాలి. రెండవదానికి, మనం **ఇంటర్సెక్షన్ ఓవర్ యూనియన్** (IoU) అనే ప్రమాణాన్ని ఉపయోగిస్తాము, ఇది రెండు బాక్స్‌లు (లేదా ఏదైనా రెండు ప్రాంతాలు) ఎంత overlap అవుతాయో కొలుస్తుంది.
![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e11.te.png)
> *చిత్రం [ఈ అద్భుతమైన IoU బ్లాగ్ పోస్ట్](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) నుండి*
సూత్రం సులభం - రెండు ఆకారాల మధ్య ఇంటర్సెక్షన్ ప్రాంతాన్ని వారి యూనియన్ ప్రాంతంతో భాగిస్తాము. రెండు సమాన ప్రాంతాల కోసం IoU విలువ 1 అవుతుంది, పూర్తిగా వేరే ప్రాంతాల కోసం 0 అవుతుంది. మిగతా సందర్భాల్లో 0 నుండి 1 మధ్య ఉంటుంది. సాధారణంగా మనం IoU ఒక నిర్దిష్ట విలువ కంటే ఎక్కువ ఉన్న బౌండింగ్ బాక్స్‌లను మాత్రమే పరిగణిస్తాము.
### సగటు ప్రిసిషన్
ఒక నిర్దిష్ట వస్తువు తరగతి $C$ ఎంత బాగా గుర్తించబడిందో కొలవాలనుకుంటే, మనం **సగటు ప్రిసిషన్** (Average Precision) మెట్రిక్‌ను ఉపయోగిస్తాము, ఇది ఇలా లెక్కించబడుతుంది:
1. ప్రిసిషన్-రికాల్ వక్రం (Precision-Recall curve) డిటెక్షన్ థ్రెషోల్డ్ విలువ (0 నుండి 1 వరకు) ఆధారంగా ఖచ్చితత్వాన్ని చూపుతుంది.
2. థ్రెషోల్డ్ ఆధారంగా, చిత్రంలో ఎక్కువ లేదా తక్కువ వస్తువులు గుర్తించబడతాయి, మరియు ప్రిసిషన్, రికాల్ విలువలు మారుతాయి.
3. వక్రం ఇలా ఉంటుంది:
<img src="https://github.com/shwars/NeuroWorkshop/raw/master/images/ObjDetectionPrecisionRecall.png"/>
> *చిత్రం [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) నుండి*
ఒక క్లాస్ $C$ కోసం సగటు ప్రిసిషన్ అనేది ఈ వక్రం క్రింద ఉన్న ప్రాంతం. మరింత ఖచ్చితంగా చెప్పాలంటే, రికాల్ అక్షం సాధారణంగా 10 భాగాలుగా విభజించబడుతుంది, మరియు ఆ పాయింట్లపై ప్రిసిషన్ సగటు తీసుకుంటారు:
$$
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
$$
### AP మరియు IoU
మనం IoU ఒక నిర్దిష్ట విలువ కంటే ఎక్కువ ఉన్న డిటెక్షన్లను మాత్రమే పరిగణిస్తాము. ఉదాహరణకు, PASCAL VOC డేటాసెట్‌లో సాధారణంగా $\mbox{IoU Threshold} = 0.5$ అనుకుంటారు, COCOలో AP వివిధ $\mbox{IoU Threshold}$ విలువల కోసం కొలుస్తారు.
<img src="https://github.com/shwars/NeuroWorkshop/raw/master/images/ObjDetectionPrecisionRecallIoU.png"/>
> *చిత్రం [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) నుండి*
### సగటు సగటు ప్రిసిషన్ - mAP
ఆబ్జెక్ట్ డిటెక్షన్ కోసం ప్రధాన మెట్రిక్ **Mean Average Precision** లేదా **mAP** అని పిలవబడుతుంది. ఇది అన్ని వస్తువు తరగతులపై సగటుగా తీసుకున్న సగటు ప్రిసిషన్ విలువ, మరియు కొన్నిసార్లు $\mbox{IoU Threshold}$ పై కూడా సగటు తీసుకుంటారు. మరింత వివరంగా, **mAP** లెక్కింపు ప్రక్రియను [ఈ బ్లాగ్ పోస్ట్](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3))లో మరియు [కోడ్ నమూనాలతో ఇక్కడ](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) చూడవచ్చు.
## వివిధ ఆబ్జెక్ట్ డిటెక్షన్ విధానాలు
ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్ రెండు ప్రధాన తరగతులుగా ఉంటాయి:
* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). ప్రధాన ఆలోచన **Regions of Interests** (ROI) సృష్టించి, వాటిపై CNN నడిపించి గరిష్ట యాక్టివేషన్ కోసం చూడటం. ఇది సాదాసీదా విధానానికి సమానంగా ఉంటుంది, కానీ ROIs మరింత తెలివైన విధంగా సృష్టిస్తారు. ఇలాంటి పద్ధతుల ప్రధాన లోపం అవి నెమ్మదిగా ఉండటం, ఎందుకంటే చిత్రంపై CNN క్లాసిఫయర్‌ను అనేక సార్లు నడపాలి.
* **ఒకసారి నడిపే** (YOLO, SSD, RetinaNet) పద్ధతులు. ఈ ఆర్కిటెక్చర్లలో నెట్‌వర్క్ ఒకసారి నడిపితేనే క్లాసులు మరియు ROIs రెండింటినీ అంచనా వేస్తుంది.
### R-CNN: Region-Based CNN
[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) ఉపయోగించి ROI ప్రాంతాల హైరార్కికల్ నిర్మాణాన్ని సృష్టిస్తుంది, వాటిని CNN ఫీచర్ ఎక్స్‌ట్రాక్టర్లు మరియు SVM-క్లాసిఫయర్లకు పంపించి వస్తువు తరగతిని నిర్ణయిస్తారు, మరియు లీనియర్ రెగ్రెషన్ ద్వారా *బౌండింగ్ బాక్స్* కోఆర్డినేట్లను అంచనా వేస్తారు. [అధికారిక పేపర్](https://arxiv.org/pdf/1506.01497v1.pdf)
![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1f.te.png)
> *చిత్రం van de Sande et al. ICCV’11 నుండి*
![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484.te.png)
> *చిత్రాలు [ఈ బ్లాగ్](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) నుండి*
### F-RCNN - ఫాస్ట్ R-CNN
ఈ విధానం R-CNNకి సమానంగా ఉంటుంది, కానీ ప్రాంతాలు కన్వల్యూషన్ లేయర్లు వరుసగా వర్తించిన తర్వాత నిర్వచించబడతాయి.
![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb4188875.te.png)
> చిత్రం [అధికారిక పేపర్](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 నుండి
### Faster R-CNN
ఈ విధానం ప్రధాన ఆలోచన ROIs అంచనా వేయడానికి న్యూరల్ నెట్‌వర్క్‌ను ఉపయోగించడం - దీనిని *Region Proposal Network* అంటారు. [పేపర్](https://arxiv.org/pdf/1506.01497.pdf), 2016
![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30a.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/pdf/1506.01497.pdf) నుండి
### R-FCN: Region-Based Fully Convolutional Network
ఈ అల్గోరిథం Faster R-CNN కంటే కూడా వేగంగా ఉంటుంది. ప్రధాన ఆలోచన:
1. ResNet-101 ఉపయోగించి ఫీచర్లను తీసుకోవడం
2. ఫీచర్లు **Position-Sensitive Score Map** ద్వారా ప్రాసెస్ చేయబడతాయి. $C$ తరగతులలో ప్రతి వస్తువు $k\times k$ ప్రాంతాలుగా విభజించబడుతుంది, మరియు మనం వస్తువుల భాగాలను అంచనా వేయడానికి శిక్షణ పొందుతాము.
3. $k\times k$ ప్రాంతాల ప్రతి భాగం కోసం అన్ని నెట్‌వర్క్లు వస్తువు తరగతుల కోసం ఓటు వేస్తాయి, గరిష్ట ఓటు పొందిన వస్తువు తరగతి ఎంచుకోబడుతుంది.
![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/abs/1605.06409) నుండి
### YOLO - You Only Look Once
YOLO ఒక రియల్‌టైమ్ ఒకసారి నడిపే అల్గోరిథం. ప్రధాన ఆలోచన:
* చిత్రాన్ని $S\times S$ ప్రాంతాలుగా విభజించడం
* ప్రతి ప్రాంతం కోసం, **CNN** $n$ సాధ్యమైన వస్తువులు, *బౌండింగ్ బాక్స్* కోఆర్డినేట్లు మరియు *confidence* = *probability* * IoU అంచనా వేయడం.
![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4e.te.png)
> చిత్రం [అధికారిక పేపర్](https://arxiv.org/abs/1506.02640) నుండి
### ఇతర అల్గోరిథమ్స్
* RetinaNet: [అధికారిక పేపర్](https://arxiv.org/abs/1708.02002)
- [Torchvisionలో PyTorch అమలు](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html)
- [Keras అమలు](https://github.com/fizyr/keras-retinanet)
- [Keras నమూనాల్లో RetinaNetతో ఆబ్జెక్ట్ డిటెక్షన్](https://keras.io/examples/vision/retinanet/)
* SSD (Single Shot Detector): [అధికారిక పేపర్](https://arxiv.org/abs/1512.02325)
## ✍️ వ్యాయామాలు: ఆబ్జెక్ట్ డిటెక్షన్
మీ అభ్యాసాన్ని ఈ నోట్బుక్‌లో కొనసాగించండి:
[ObjectDetection.ipynb](ObjectDetection.ipynb)
## ముగింపు
ఈ పాఠంలో మీరు ఆబ్జెక్ట్ డిటెక్షన్ సాధించగల వివిధ మార్గాలను ఒక సారాంశంగా చూశారు!
## 🚀 సవాలు
YOLO గురించి ఈ వ్యాసాలు మరియు నోట్బుక్స్ చదవండి మరియు వాటిని స్వయంగా ప్రయత్నించండి
* [YOLO గురించి మంచి బ్లాగ్ పోస్ట్](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/)
* [అధికారిక సైట్](https://pjreddie.com/darknet/yolo/)
* Yolo: [Keras అమలు](https://github.com/experiencor/keras-yolo2), [దశల వారీ నోట్బుక్](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb)
* Yolo v2: [Keras అమలు](https://github.com/experiencor/keras-yolo2), [దశల వారీ నోట్బుక్](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/22)
## సమీక్ష & స్వీయ అధ్యయనం
* [ఆబ్జెక్ట్ డిటెక్షన్](https://tjmachinelearning.com/lectures/1718/obj/) - నిఖిల్ సర్దానా
* [ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్ మంచి పోలిక](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html)
* [ఆబ్జెక్ట్ డిటెక్షన్ కోసం డీప్ లెర్నింగ్ అల్గోరిథమ్స్ సమీక్ష](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852)
* [ప్రాథమిక ఆబ్జెక్ట్ డిటెక్షన్ అల్గోరిథమ్స్‌కు దశల వారీ పరిచయం](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/)
* [ఫాస్టర్ R-CNN ఆబ్జెక్ట్ డిటెక్షన్ కోసం Pythonలో అమలు](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/)
## [అసైన్‌మెంట్: ఆబ్జెక్ట్ డిటెక్షన్](lab/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,82 +1,82 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6568aaae7e0e4afed4b5d74b5b223700",
"translation_date": "2025-11-25T22:37:14+00:00",
"source_file": "lessons/4-ComputerVision/12-Segmentation/README.md",
"language_code": "te"
}
-->
# విభజన
మేము ముందుగా ఆబ్జెక్ట్ డిటెక్షన్ గురించి నేర్చుకున్నాము, ఇది చిత్రంలో ఆబ్జెక్టులను వారి *బౌండింగ్ బాక్స్‌లు*ను అంచనా వేయడం ద్వారా గుర్తించడానికి సహాయపడుతుంది. అయితే, కొన్ని పనుల కోసం మాకు కేవలం బౌండింగ్ బాక్స్‌లు మాత్రమే కాకుండా, మరింత ఖచ్చితమైన ఆబ్జెక్ట్ స్థానాన్ని కూడా అవసరం. ఈ పనిని **విభజన** అంటారు.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/23)
విభజనను **పిక్సెల్ వర్గీకరణ**గా చూడవచ్చు, అంటే చిత్రంలోని **ప్రతి** పిక్సెల్ యొక్క వర్గాన్ని అంచనా వేయాలి (*బ్యాక్‌గ్రౌండ్* ఒక వర్గంగా ఉంటుంది). విభజనకు రెండు ప్రధాన అల్గోరిథమ్లు ఉన్నాయి:
* **సెమాంటిక్ విభజన** పిక్సెల్ వర్గాన్ని మాత్రమే చెప్పుతుంది, అదే వర్గానికి చెందిన వేర్వేరు ఆబ్జెక్టుల మధ్య తేడా చూపదు
* **ఇన్స్టాన్స్ విభజన** వర్గాలను వేర్వేరు ఉదాహరణలుగా విభజిస్తుంది.
ఇన్స్టాన్స్ విభజనలో, ఈ గొర్రెలు వేర్వేరు ఆబ్జెక్టులు, కానీ సెమాంటిక్ విభజనలో అన్ని గొర్రెలు ఒకే వర్గంగా చూపబడతాయి.
<img src="../../../../../translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.te.jpeg" width="50%">
> చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) నుండి
విభజనకు వివిధ న్యూరల్ ఆర్కిటెక్చర్లు ఉన్నాయి, కానీ అవన్నీ ఒకే నిర్మాణాన్ని కలిగి ఉంటాయి. ఒక విధంగా, ఇది మీరు ముందుగా నేర్చుకున్న ఆటోఎంకోడర్‌కు సమానంగా ఉంటుంది, కానీ అసలు చిత్రాన్ని విడగొట్టడం కాకుండా, మన లక్ష్యం **మాస్క్**ను విడగొట్టడం. అందువల్ల, విభజన నెట్‌వర్క్‌లో ఈ భాగాలు ఉంటాయి:
* **ఎంకోడర్** ఇన్‌పుట్ చిత్రంలో నుండి ఫీచర్లను తీసుకుంటుంది
* **డీకోడర్** ఆ ఫీచర్లను **మాస్క్ చిత్రం**గా మార్చుతుంది, అదే పరిమాణం మరియు వర్గాల సంఖ్యకు సరిపోయే ఛానెల్‌లతో.
<img src="../../../../../translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.te.png" width="80%">
> చిత్రం [ఈ ప్రచురణ](https://arxiv.org/pdf/2001.05566.pdf) నుండి
విభజనలో ఉపయోగించే లాస్ ఫంక్షన్ గురించి ప్రత్యేకంగా చెప్పాలి. క్లాసికల్ ఆటోఎంకోడర్లను ఉపయోగించినప్పుడు, రెండు చిత్రాల మధ్య సారూప్యతను కొలవాలి, దీనికి మిన్ స్క్వేర్ ఎర్రర్ (MSE) ఉపయోగించవచ్చు. విభజనలో, లక్ష్య మాస్క్ చిత్రంలోని ప్రతి పిక్సెల్ వర్గ సంఖ్యను సూచిస్తుంది (మూడవ డైమెన్షన్‌లో వన్-హాట్ ఎంకోడింగ్), కాబట్టి వర్గీకరణకు ప్రత్యేకమైన లాస్ ఫంక్షన్లు ఉపయోగించాలి - క్రాస్-ఎంట్రోపీ లాస్, అన్ని పిక్సెల్స్ మీద సగటు తీసుకుంటూ. మాస్క్ బైనరీ అయితే - **బైనరీ క్రాస్-ఎంట్రోపీ లాస్** (BCE) ఉపయోగిస్తారు.
> ✅ వన్-హాట్ ఎంకోడింగ్ అనేది వర్గ లేబుల్‌ను వర్గాల సంఖ్యకు సమానమైన వెక్టర్‌గా ఎంకోడ్ చేసే విధానం. ఈ సాంకేతికతపై [ఈ వ్యాసం](https://datagy.io/sklearn-one-hot-encode/) చూడండి.
## వైద్య చిత్రీకరణ కోసం విభజన
ఈ పాఠంలో, మేము వైద్య చిత్రాలలో మానవ నేవి (మోల్స్ అని కూడా పిలవబడే)లను గుర్తించడానికి నెట్‌వర్క్‌ను శిక్షణ ఇస్తూ విభజనను ప్రదర్శిస్తాము. చిత్ర మూలంగా <a href="https://www.fc.up.pt/addi/ph2%20database.html">PH<sup>2</sup> డేటాబేస్</a>ని ఉపయోగిస్తాము. ఈ డేటాసెట్‌లో మూడు వర్గాల 200 చిత్రాలు ఉన్నాయి: సాధారణ నేవస్, అసాధారణ నేవస్, మరియు మెలనోమా. అన్ని చిత్రాలకు సంబంధిత **మాస్క్** కూడా ఉంటుంది, ఇది నేవస్‌ను చుట్టుముట్టుతుంది.
> ✅ ఈ సాంకేతికత ఈ రకమైన వైద్య చిత్రీకరణకు చాలా అనుకూలంగా ఉంటుంది, కానీ మీరు మరే ఇతర వాస్తవ ప్రపంచ అనువర్తనాలను ఊహించగలరా?
<img alt="navi" src="../../../../../translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.te.png"/>
> చిత్రం PH<sup>2</sup> డేటాబేస్ నుండి
మేము ఏదైనా నేవస్‌ను దాని బ్యాక్‌గ్రౌండ్ నుండి విభజించడానికి మోడల్‌ను శిక్షణ ఇస్తాము.
## ✍️ వ్యాయామాలు: సెమాంటిక్ విభజన
క్రింద ఉన్న నోట్బుక్స్‌ను తెరవండి, వివిధ సెమాంటిక్ విభజన ఆర్కిటెక్చర్ల గురించి మరింత తెలుసుకోండి, వాటితో పని చేయడం అభ్యసించండి, మరియు వాటిని ప్రాక్టికల్‌గా చూడండి.
* [సెమాంటిక్ విభజన Pytorch](SemanticSegmentationPytorch.ipynb)
* [సెమాంటిక్ విభజన TensorFlow](SemanticSegmentationTF.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/24)
## ముగింపు
విభజన అనేది బౌండింగ్ బాక్స్‌లకు మించి పిక్సెల్ స్థాయి వర్గీకరణకు ఉపయోగించే శక్తివంతమైన సాంకేతికత. ఇది వైద్య చిత్రీకరణలో మరియు ఇతర అనువర్తనాలలో ఉపయోగించబడుతుంది.
## 🚀 సవాలు
శరీర విభజన అనేది మనుషుల చిత్రాలతో చేయగల సాధారణ పనుల్లో ఒకటి మాత్రమే. మరొక ముఖ్యమైన పనులు **అస్తి గుర్తింపు** మరియు **పోస్ గుర్తింపు**. పోస్ గుర్తింపును ఎలా ఉపయోగించవచ్చో చూడటానికి [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) లైబ్రరీని ప్రయత్నించండి.
## సమీక్ష & స్వీయ అధ్యయనం
ఈ [వికీపీడియా వ్యాసం](https://wikipedia.org/wiki/Image_segmentation) ఈ సాంకేతికత యొక్క వివిధ అనువర్తనాలపై మంచి అవగాహన ఇస్తుంది. ఈ పరిశోధనా రంగంలో ఇన్స్టాన్స్ విభజన మరియు పానోప్టిక్ విభజన ఉపశాఖల గురించి స్వయంగా మరింత తెలుసుకోండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ప్రయోగశాలలో, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ఉపయోగించి **మానవ శరీర విభజన**ను ప్రయత్నించండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6568aaae7e0e4afed4b5d74b5b223700",
"translation_date": "2025-11-25T22:37:14+00:00",
"source_file": "lessons/4-ComputerVision/12-Segmentation/README.md",
"language_code": "te"
}
-->
# విభజన
మేము ముందుగా ఆబ్జెక్ట్ డిటెక్షన్ గురించి నేర్చుకున్నాము, ఇది చిత్రంలో ఆబ్జెక్టులను వారి *బౌండింగ్ బాక్స్‌లు*ను అంచనా వేయడం ద్వారా గుర్తించడానికి సహాయపడుతుంది. అయితే, కొన్ని పనుల కోసం మాకు కేవలం బౌండింగ్ బాక్స్‌లు మాత్రమే కాకుండా, మరింత ఖచ్చితమైన ఆబ్జెక్ట్ స్థానాన్ని కూడా అవసరం. ఈ పనిని **విభజన** అంటారు.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/23)
విభజనను **పిక్సెల్ వర్గీకరణ**గా చూడవచ్చు, అంటే చిత్రంలోని **ప్రతి** పిక్సెల్ యొక్క వర్గాన్ని అంచనా వేయాలి (*బ్యాక్‌గ్రౌండ్* ఒక వర్గంగా ఉంటుంది). విభజనకు రెండు ప్రధాన అల్గోరిథమ్లు ఉన్నాయి:
* **సెమాంటిక్ విభజన** పిక్సెల్ వర్గాన్ని మాత్రమే చెప్పుతుంది, అదే వర్గానికి చెందిన వేర్వేరు ఆబ్జెక్టుల మధ్య తేడా చూపదు
* **ఇన్స్టాన్స్ విభజన** వర్గాలను వేర్వేరు ఉదాహరణలుగా విభజిస్తుంది.
ఇన్స్టాన్స్ విభజనలో, ఈ గొర్రెలు వేర్వేరు ఆబ్జెక్టులు, కానీ సెమాంటిక్ విభజనలో అన్ని గొర్రెలు ఒకే వర్గంగా చూపబడతాయి.
<img src="../../../../../translated_images/instance_vs_semantic.eee9812bebf8cd45.te.jpeg" width="50%">
> చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) నుండి
విభజనకు వివిధ న్యూరల్ ఆర్కిటెక్చర్లు ఉన్నాయి, కానీ అవన్నీ ఒకే నిర్మాణాన్ని కలిగి ఉంటాయి. ఒక విధంగా, ఇది మీరు ముందుగా నేర్చుకున్న ఆటోఎంకోడర్‌కు సమానంగా ఉంటుంది, కానీ అసలు చిత్రాన్ని విడగొట్టడం కాకుండా, మన లక్ష్యం **మాస్క్**ను విడగొట్టడం. అందువల్ల, విభజన నెట్‌వర్క్‌లో ఈ భాగాలు ఉంటాయి:
* **ఎంకోడర్** ఇన్‌పుట్ చిత్రంలో నుండి ఫీచర్లను తీసుకుంటుంది
* **డీకోడర్** ఆ ఫీచర్లను **మాస్క్ చిత్రం**గా మార్చుతుంది, అదే పరిమాణం మరియు వర్గాల సంఖ్యకు సరిపోయే ఛానెల్‌లతో.
<img src="../../../../../translated_images/segm.92442f2cb42ff4fa.te.png" width="80%">
> చిత్రం [ఈ ప్రచురణ](https://arxiv.org/pdf/2001.05566.pdf) నుండి
విభజనలో ఉపయోగించే లాస్ ఫంక్షన్ గురించి ప్రత్యేకంగా చెప్పాలి. క్లాసికల్ ఆటోఎంకోడర్లను ఉపయోగించినప్పుడు, రెండు చిత్రాల మధ్య సారూప్యతను కొలవాలి, దీనికి మిన్ స్క్వేర్ ఎర్రర్ (MSE) ఉపయోగించవచ్చు. విభజనలో, లక్ష్య మాస్క్ చిత్రంలోని ప్రతి పిక్సెల్ వర్గ సంఖ్యను సూచిస్తుంది (మూడవ డైమెన్షన్‌లో వన్-హాట్ ఎంకోడింగ్), కాబట్టి వర్గీకరణకు ప్రత్యేకమైన లాస్ ఫంక్షన్లు ఉపయోగించాలి - క్రాస్-ఎంట్రోపీ లాస్, అన్ని పిక్సెల్స్ మీద సగటు తీసుకుంటూ. మాస్క్ బైనరీ అయితే - **బైనరీ క్రాస్-ఎంట్రోపీ లాస్** (BCE) ఉపయోగిస్తారు.
> ✅ వన్-హాట్ ఎంకోడింగ్ అనేది వర్గ లేబుల్‌ను వర్గాల సంఖ్యకు సమానమైన వెక్టర్‌గా ఎంకోడ్ చేసే విధానం. ఈ సాంకేతికతపై [ఈ వ్యాసం](https://datagy.io/sklearn-one-hot-encode/) చూడండి.
## వైద్య చిత్రీకరణ కోసం విభజన
ఈ పాఠంలో, మేము వైద్య చిత్రాలలో మానవ నేవి (మోల్స్ అని కూడా పిలవబడే)లను గుర్తించడానికి నెట్‌వర్క్‌ను శిక్షణ ఇస్తూ విభజనను ప్రదర్శిస్తాము. చిత్ర మూలంగా <a href="https://www.fc.up.pt/addi/ph2%20database.html">PH<sup>2</sup> డేటాబేస్</a>ని ఉపయోగిస్తాము. ఈ డేటాసెట్‌లో మూడు వర్గాల 200 చిత్రాలు ఉన్నాయి: సాధారణ నేవస్, అసాధారణ నేవస్, మరియు మెలనోమా. అన్ని చిత్రాలకు సంబంధిత **మాస్క్** కూడా ఉంటుంది, ఇది నేవస్‌ను చుట్టుముట్టుతుంది.
> ✅ ఈ సాంకేతికత ఈ రకమైన వైద్య చిత్రీకరణకు చాలా అనుకూలంగా ఉంటుంది, కానీ మీరు మరే ఇతర వాస్తవ ప్రపంచ అనువర్తనాలను ఊహించగలరా?
<img alt="navi" src="../../../../../translated_images/navi.2f20b727910110ea.te.png"/>
> చిత్రం PH<sup>2</sup> డేటాబేస్ నుండి
మేము ఏదైనా నేవస్‌ను దాని బ్యాక్‌గ్రౌండ్ నుండి విభజించడానికి మోడల్‌ను శిక్షణ ఇస్తాము.
## ✍️ వ్యాయామాలు: సెమాంటిక్ విభజన
క్రింద ఉన్న నోట్బుక్స్‌ను తెరవండి, వివిధ సెమాంటిక్ విభజన ఆర్కిటెక్చర్ల గురించి మరింత తెలుసుకోండి, వాటితో పని చేయడం అభ్యసించండి, మరియు వాటిని ప్రాక్టికల్‌గా చూడండి.
* [సెమాంటిక్ విభజన Pytorch](SemanticSegmentationPytorch.ipynb)
* [సెమాంటిక్ విభజన TensorFlow](SemanticSegmentationTF.ipynb)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/24)
## ముగింపు
విభజన అనేది బౌండింగ్ బాక్స్‌లకు మించి పిక్సెల్ స్థాయి వర్గీకరణకు ఉపయోగించే శక్తివంతమైన సాంకేతికత. ఇది వైద్య చిత్రీకరణలో మరియు ఇతర అనువర్తనాలలో ఉపయోగించబడుతుంది.
## 🚀 సవాలు
శరీర విభజన అనేది మనుషుల చిత్రాలతో చేయగల సాధారణ పనుల్లో ఒకటి మాత్రమే. మరొక ముఖ్యమైన పనులు **అస్తి గుర్తింపు** మరియు **పోస్ గుర్తింపు**. పోస్ గుర్తింపును ఎలా ఉపయోగించవచ్చో చూడటానికి [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) లైబ్రరీని ప్రయత్నించండి.
## సమీక్ష & స్వీయ అధ్యయనం
ఈ [వికీపీడియా వ్యాసం](https://wikipedia.org/wiki/Image_segmentation) ఈ సాంకేతికత యొక్క వివిధ అనువర్తనాలపై మంచి అవగాహన ఇస్తుంది. ఈ పరిశోధనా రంగంలో ఇన్స్టాన్స్ విభజన మరియు పానోప్టిక్ విభజన ఉపశాఖల గురించి స్వయంగా మరింత తెలుసుకోండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ ప్రయోగశాలలో, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ఉపయోగించి **మానవ శరీర విభజన**ను ప్రయత్నించండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,29 +1,29 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "58a52f000089c1d8906a4daa4ab1169b",
"translation_date": "2025-11-25T21:10:33+00:00",
"source_file": "lessons/4-ComputerVision/README.md",
"language_code": "te"
}
-->
# కంప్యూటర్ విజన్
![డూడిల్‌లో కంప్యూటర్ విజన్ విషయాల సారాంశం](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.te.png)
ఈ విభాగంలో మనం నేర్చుకోబోతున్నవి:
* [కంప్యూటర్ విజన్ మరియు OpenCV పరిచయం](06-IntroCV/README.md)
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్](07-ConvNets/README.md)
* [ప్రీ-ట్రెయిన్డ్ నెట్‌వర్క్స్ మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్](08-TransferLearning/README.md)
* [ఆటోఎంకోడర్స్](09-Autoencoders/README.md)
* [జెనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్](10-GANs/README.md)
* [ఆబ్జెక్ట్ డిటెక్షన్](11-ObjectDetection/README.md)
* [సెమాంటిక్ సెగ్మెంటేషన్](12-Segmentation/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "58a52f000089c1d8906a4daa4ab1169b",
"translation_date": "2025-11-25T21:10:33+00:00",
"source_file": "lessons/4-ComputerVision/README.md",
"language_code": "te"
}
-->
# కంప్యూటర్ విజన్
![డూడిల్‌లో కంప్యూటర్ విజన్ విషయాల సారాంశం](../../../../translated_images/ai-computervision.6506ebebac3fbf76.te.png)
ఈ విభాగంలో మనం నేర్చుకోబోతున్నవి:
* [కంప్యూటర్ విజన్ మరియు OpenCV పరిచయం](06-IntroCV/README.md)
* [కన్వల్యూషనల్ న్యూరల్ నెట్‌వర్క్స్](07-ConvNets/README.md)
* [ప్రీ-ట్రెయిన్డ్ నెట్‌వర్క్స్ మరియు ట్రాన్స్‌ఫర్ లెర్నింగ్](08-TransferLearning/README.md)
* [ఆటోఎంకోడర్స్](09-Autoencoders/README.md)
* [జెనరేటివ్ అడ్వర్సరియల్ నెట్‌వర్క్స్](10-GANs/README.md)
* [ఆబ్జెక్ట్ డిటెక్షన్](11-ObjectDetection/README.md)
* [సెమాంటిక్ సెగ్మెంటేషన్](12-Segmentation/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,89 +1,89 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "dbd3f73e4139f030ecb2e20387d70fee",
"translation_date": "2025-11-25T22:49:48+00:00",
"source_file": "lessons/5-NLP/13-TextRep/README.md",
"language_code": "te"
}
-->
# టెక్స్ట్‌ను టెన్సార్లుగా ప్రాతినిధ్యం వహించడం
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/25)
## టెక్స్ట్ వర్గీకరణ
ఈ విభాగం మొదటి భాగంలో, మనం **టెక్స్ట్ వర్గీకరణ** పనిపై దృష్టి సారించబోతున్నాము. మనం [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) డేటాసెట్‌ను ఉపయోగించబోతున్నాము, ఇది క్రింది విధంగా వార్తా వ్యాసాలను కలిగి ఉంటుంది:
* వర్గం: సైన్స్/టెక్నాలజీ
* శీర్షిక: Ky. కంపెనీ పెప్టైడ్స్ అధ్యయనానికి గ్రాంట్ గెలుచుకుంది (AP)
* శరీరం: AP - లూయిస్విల్లే విశ్వవిద్యాలయంలో రసాయన శాస్త్ర పరిశోధకుడు స్థాపించిన ఒక కంపెనీ అభివృద్ధి కోసం గ్రాంట్ గెలుచుకుంది...
మన లక్ష్యం టెక్స్ట్ ఆధారంగా వార్తా అంశాన్ని ఒక వర్గంలో వర్గీకరించడం.
## టెక్స్ట్ ప్రాతినిధ్యం
నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్ (NLP) పనులను న్యూరల్ నెట్‌వర్క్‌లతో పరిష్కరించాలంటే, టెక్స్ట్‌ను టెన్సార్లుగా ప్రాతినిధ్యం వహించే విధానం అవసరం. కంప్యూటర్లు ఇప్పటికే ASCII లేదా UTF-8 వంటి ఎంకోడింగ్లను ఉపయోగించి స్క్రీన్‌పై ఫాంట్లకు మ్యాప్ అయ్యే సంఖ్యలుగా టెక్స్ట్ అక్షరాలను ప్రాతినిధ్యం వహిస్తాయి.
<img alt="Image showing diagram mapping a character to an ASCII and binary representation" src="../../../../../translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.te.png" width="50%"/>
> [చిత్ర మూలం](https://www.seobility.net/en/wiki/ASCII)
మనిషిలా, ప్రతి అక్షరం ఏమి **ప్రతినిధ్యం వహిస్తుంది** మరియు అన్ని అక్షరాలు కలిసి వాక్యపు పదాలను ఎలా ఏర్పరుస్తాయో మనం అర్థం చేసుకుంటాము. అయితే, కంప్యూటర్లు స్వయంగా అర్థం చేసుకోలేవు, మరియు న్యూరల్ నెట్‌వర్క్ శిక్షణ సమయంలో అర్థం నేర్చుకోవాలి.
కాబట్టి, టెక్స్ట్ ప్రాతినిధ్యం వహించే సమయంలో మనం వివిధ విధానాలను ఉపయోగించవచ్చు:
* **అక్షర స్థాయి ప్రాతినిధ్యం**, ఇందులో ప్రతి అక్షరాన్ని ఒక సంఖ్యగా పరిగణించి టెక్స్ట్‌ను ప్రాతినిధ్యం చేస్తాము. మన టెక్స్ట్ కార్పస్‌లో *C* వేర్వేరు అక్షరాలు ఉంటే, *Hello* అనే పదం 5x*C* టెన్సార్‌గా ప్రాతినిధ్యం వహిస్తుంది. ప్రతి అక్షరం ఒక హాట్ ఎంకోడింగ్‌లో టెన్సార్ కాలమ్‌కు సరిపోతుంది.
* **పద స్థాయి ప్రాతినిధ్యం**, ఇందులో మనం టెక్స్ట్‌లోని అన్ని పదాల **వాక్యకోశం**ను సృష్టించి, ఆ పదాలను వన్-హాట్ ఎంకోడింగ్‌తో ప్రాతినిధ్యం చేస్తాము. ఈ విధానం కొంత మెరుగైనది, ఎందుకంటే ఒక్కొక్క అక్షరానికి తానే ఎక్కువ అర్థం ఉండదు, కాబట్టి పదాల వంటి ఉన్నత స్థాయి సారాంశ భావాలను ఉపయోగించడం ద్వారా న్యూరల్ నెట్‌వర్క్ పనిని సులభతరం చేస్తాము. అయితే, పెద్ద డిక్షనరీ పరిమాణం కారణంగా, మనం అధిక-పరిమాణపు స్పార్స్ టెన్సార్లను నిర్వహించాల్సి ఉంటుంది.
ప్రాతినిధ్యం ఏ విధంగా ఉన్నా, ముందుగా టెక్స్ట్‌ను **టోకెన్ల** వరుసగా మార్చాలి, ఒక టోకెన్ అక్షరం, పదం లేదా కొన్నిసార్లు పద భాగం కూడా కావచ్చు. ఆ తర్వాత, టోకెన్‌ను సంఖ్యగా మార్చాలి, సాధారణంగా **వాక్యకోశం** ఉపయోగించి, ఆ సంఖ్యను వన్-హాట్ ఎంకోడింగ్ ద్వారా న్యూరల్ నెట్‌వర్క్‌కు ఇన్పుట్‌గా ఇవ్వవచ్చు.
## ఎన్-గ్రామ్స్
సహజ భాషలో, పదాల ఖచ్చిత అర్థం సందర్భంలోనే నిర్ణయించబడుతుంది. ఉదాహరణకు, *న్యూరల్ నెట్‌వర్క్* మరియు *ఫిషింగ్ నెట్‌వర్క్* అర్థాలు పూర్తిగా భిన్నంగా ఉంటాయి. దీన్ని పరిగణలోకి తీసుకోవడానికి ఒక మార్గం, మన మోడల్‌ను పద జంటలపై నిర్మించడం, మరియు పద జంటలను వేరే వాక్యకోశ టోకెన్లుగా పరిగణించడం. ఈ విధంగా, వాక్యం *I like to go fishing* క్రింది టోకెన్ల వరుసగా ప్రాతినిధ్యం వహిస్తుంది: *I like*, *like to*, *to go*, *go fishing*. ఈ విధానంలో సమస్య ఏమిటంటే, డిక్షనరీ పరిమాణం గణనీయంగా పెరుగుతుంది, మరియు *go fishing* మరియు *go shopping* వంటి కలయికలు వేరే టోకెన్లుగా ఉంటాయి, అవి ఒకే క్రియ ఉన్నప్పటికీ సారాంశ సంబంధం పంచుకోవు.
కొన్నిసార్లు, మూడుసార్లు పదాల కలయికలు అయిన ట్రై-గ్రామ్స్‌ను కూడా పరిగణించవచ్చు. ఈ విధానాన్ని సాధారణంగా **ఎన్-గ్రామ్స్** అంటారు. అలాగే, అక్షర స్థాయి ప్రాతినిధ్యంలో ఎన్-గ్రామ్స్ ఉపయోగించడం అర్థం, ఇందులో ఎన్-గ్రామ్స్ సుమారు వేర్వేరు అక్షరాల భాగాలుగా ఉంటుంది.
## బ్యాగ్-ఆఫ్-వర్డ్స్ మరియు TF/IDF
టెక్స్ట్ వర్గీకరణ వంటి పనులను పరిష్కరించేటప్పుడు, మనం ఒక స్థిర పరిమాణం వెక్టర్‌తో టెక్స్ట్‌ను ప్రాతినిధ్యం చేయగలగాలి, దీన్ని తుది డెన్స్ క్లాసిఫయర్‌కు ఇన్పుట్‌గా ఉపయోగిస్తాము. దీని కోసం ఒక సరళమైన మార్గం, ప్రతి పద ప్రాతినిధ్యాలను కలిపి, ఉదాహరణకు వాటిని జోడించడం. ప్రతి పదం వన్-హాట్ ఎంకోడింగ్‌లను జోడిస్తే, మనకు పదాల సంభావ్యతలను చూపించే ఫ్రీక్వెన్సీ వెక్టర్ వస్తుంది, అంటే ప్రతి పదం టెక్స్ట్‌లో ఎన్ని సార్లు వస్తుందో. ఈ విధంగా టెక్స్ట్ ప్రాతినిధ్యం **బ్యాగ్ ఆఫ్ వర్డ్స్** (BoW) అని పిలవబడుతుంది.
<img src="../../../../../translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.te.png" width="90%"/>
> రచయితచే చిత్రీకరణ
BoW టెక్స్ట్‌లో ఏ పదాలు ఎన్ని సార్లు ఉన్నాయో సూచిస్తుంది, ఇది టెక్స్ట్ విషయం గురించి మంచి సూచన కావచ్చు. ఉదాహరణకు, రాజకీయాలపై వార్తా వ్యాసం *president* మరియు *country* వంటి పదాలు ఉండే అవకాశం ఉంది, శాస్త్రీయ ప్రచురణలో *collider*, *discovered* వంటి పదాలు ఉండవచ్చు. కాబట్టి, పదాల ఫ్రీక్వెన్సీలు చాలా సందర్భాల్లో టెక్స్ట్ విషయానికి మంచి సూచన.
BoW సమస్య ఏమిటంటే, *and*, *is* వంటి సాధారణ పదాలు ఎక్కువ టెక్స్ట్‌లలో కనిపిస్తాయి మరియు అత్యధిక ఫ్రీక్వెన్సీ కలిగి ఉంటాయి, ఇవి నిజంగా ముఖ్యమైన పదాలను దాచేస్తాయి. ఈ పదాల ప్రాముఖ్యతను తగ్గించడానికి, మొత్తం డాక్యుమెంట్ సేకరణలో పదాల సంభావ్యతను పరిగణలోకి తీసుకోవచ్చు. ఇది TF/IDF విధానానికి ప్రధాన ఆలోచన, ఇది ఈ పాఠంలో జతచేసిన నోట్బుక్స్‌లో మరింత వివరంగా ఉంది.
అయితే, ఈ విధానాలు టెక్స్ట్ యొక్క **సారాంశం**ను పూర్తిగా పరిగణించలేవు. దీని కోసం మరింత శక్తివంతమైన న్యూరల్ నెట్‌వర్క్ మోడల్స్ అవసరం, వాటిని ఈ విభాగంలో తర్వాత చర్చిస్తాము.
## ✍️ వ్యాయామాలు: టెక్స్ట్ ప్రాతినిధ్యం
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో టెక్స్ట్ ప్రాతినిధ్యం](TextRepresentationPyTorch.ipynb)
* [TensorFlowతో టెక్స్ట్ ప్రాతినిధ్యం](TextRepresentationTF.ipynb)
## ముగింపు
ఇప్పటివరకు, మనం వివిధ పదాలకు ఫ్రీక్వెన్సీ బరువు జోడించే సాంకేతికతలను అధ్యయనం చేసాము. అవి, అయితే, అర్థం లేదా క్రమాన్ని ప్రాతినిధ్యం చేయలేవు. 1935లో ప్రసిద్ధ భాషావేత్త జె. ఆర్. ఫర్త్ చెప్పినట్లుగా, "పదం యొక్క పూర్తి అర్థం ఎప్పుడూ సందర్భానుసారంగా ఉంటుంది, మరియు సందర్భం లేకుండా అర్థం అధ్యయనం సీరియస్‌గా తీసుకోలేము." భవిష్యత్తులో మనం భాషా మోడలింగ్ ఉపయోగించి టెక్స్ట్ నుండి సందర్భ సమాచారాన్ని ఎలా పొందాలో నేర్చుకుంటాము.
## 🚀 సవాలు
బ్యాగ్-ఆఫ్-వర్డ్స్ మరియు వివిధ డేటా మోడల్స్ ఉపయోగించి మరిన్ని వ్యాయామాలు ప్రయత్నించండి. మీరు ఈ [కాగ్గుల్ పోటీ](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) నుండి ప్రేరణ పొందవచ్చు.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/26)
## సమీక్ష & స్వీయ అధ్యయనం
[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste)లో టెక్స్ట్ ఎంబెడ్డింగ్స్ మరియు బ్యాగ్-ఆఫ్-వర్డ్స్ సాంకేతికతలతో మీ నైపుణ్యాలను అభ్యసించండి.
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "dbd3f73e4139f030ecb2e20387d70fee",
"translation_date": "2025-11-25T22:49:48+00:00",
"source_file": "lessons/5-NLP/13-TextRep/README.md",
"language_code": "te"
}
-->
# టెక్స్ట్‌ను టెన్సార్లుగా ప్రాతినిధ్యం వహించడం
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/25)
## టెక్స్ట్ వర్గీకరణ
ఈ విభాగం మొదటి భాగంలో, మనం **టెక్స్ట్ వర్గీకరణ** పనిపై దృష్టి సారించబోతున్నాము. మనం [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) డేటాసెట్‌ను ఉపయోగించబోతున్నాము, ఇది క్రింది విధంగా వార్తా వ్యాసాలను కలిగి ఉంటుంది:
* వర్గం: సైన్స్/టెక్నాలజీ
* శీర్షిక: Ky. కంపెనీ పెప్టైడ్స్ అధ్యయనానికి గ్రాంట్ గెలుచుకుంది (AP)
* శరీరం: AP - లూయిస్విల్లే విశ్వవిద్యాలయంలో రసాయన శాస్త్ర పరిశోధకుడు స్థాపించిన ఒక కంపెనీ అభివృద్ధి కోసం గ్రాంట్ గెలుచుకుంది...
మన లక్ష్యం టెక్స్ట్ ఆధారంగా వార్తా అంశాన్ని ఒక వర్గంలో వర్గీకరించడం.
## టెక్స్ట్ ప్రాతినిధ్యం
నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్ (NLP) పనులను న్యూరల్ నెట్‌వర్క్‌లతో పరిష్కరించాలంటే, టెక్స్ట్‌ను టెన్సార్లుగా ప్రాతినిధ్యం వహించే విధానం అవసరం. కంప్యూటర్లు ఇప్పటికే ASCII లేదా UTF-8 వంటి ఎంకోడింగ్లను ఉపయోగించి స్క్రీన్‌పై ఫాంట్లకు మ్యాప్ అయ్యే సంఖ్యలుగా టెక్స్ట్ అక్షరాలను ప్రాతినిధ్యం వహిస్తాయి.
<img alt="Image showing diagram mapping a character to an ASCII and binary representation" src="../../../../../translated_images/ascii-character-map.18ed6aa7f3b0a7ff.te.png" width="50%"/>
> [చిత్ర మూలం](https://www.seobility.net/en/wiki/ASCII)
మనిషిలా, ప్రతి అక్షరం ఏమి **ప్రతినిధ్యం వహిస్తుంది** మరియు అన్ని అక్షరాలు కలిసి వాక్యపు పదాలను ఎలా ఏర్పరుస్తాయో మనం అర్థం చేసుకుంటాము. అయితే, కంప్యూటర్లు స్వయంగా అర్థం చేసుకోలేవు, మరియు న్యూరల్ నెట్‌వర్క్ శిక్షణ సమయంలో అర్థం నేర్చుకోవాలి.
కాబట్టి, టెక్స్ట్ ప్రాతినిధ్యం వహించే సమయంలో మనం వివిధ విధానాలను ఉపయోగించవచ్చు:
* **అక్షర స్థాయి ప్రాతినిధ్యం**, ఇందులో ప్రతి అక్షరాన్ని ఒక సంఖ్యగా పరిగణించి టెక్స్ట్‌ను ప్రాతినిధ్యం చేస్తాము. మన టెక్స్ట్ కార్పస్‌లో *C* వేర్వేరు అక్షరాలు ఉంటే, *Hello* అనే పదం 5x*C* టెన్సార్‌గా ప్రాతినిధ్యం వహిస్తుంది. ప్రతి అక్షరం ఒక హాట్ ఎంకోడింగ్‌లో టెన్సార్ కాలమ్‌కు సరిపోతుంది.
* **పద స్థాయి ప్రాతినిధ్యం**, ఇందులో మనం టెక్స్ట్‌లోని అన్ని పదాల **వాక్యకోశం**ను సృష్టించి, ఆ పదాలను వన్-హాట్ ఎంకోడింగ్‌తో ప్రాతినిధ్యం చేస్తాము. ఈ విధానం కొంత మెరుగైనది, ఎందుకంటే ఒక్కొక్క అక్షరానికి తానే ఎక్కువ అర్థం ఉండదు, కాబట్టి పదాల వంటి ఉన్నత స్థాయి సారాంశ భావాలను ఉపయోగించడం ద్వారా న్యూరల్ నెట్‌వర్క్ పనిని సులభతరం చేస్తాము. అయితే, పెద్ద డిక్షనరీ పరిమాణం కారణంగా, మనం అధిక-పరిమాణపు స్పార్స్ టెన్సార్లను నిర్వహించాల్సి ఉంటుంది.
ప్రాతినిధ్యం ఏ విధంగా ఉన్నా, ముందుగా టెక్స్ట్‌ను **టోకెన్ల** వరుసగా మార్చాలి, ఒక టోకెన్ అక్షరం, పదం లేదా కొన్నిసార్లు పద భాగం కూడా కావచ్చు. ఆ తర్వాత, టోకెన్‌ను సంఖ్యగా మార్చాలి, సాధారణంగా **వాక్యకోశం** ఉపయోగించి, ఆ సంఖ్యను వన్-హాట్ ఎంకోడింగ్ ద్వారా న్యూరల్ నెట్‌వర్క్‌కు ఇన్పుట్‌గా ఇవ్వవచ్చు.
## ఎన్-గ్రామ్స్
సహజ భాషలో, పదాల ఖచ్చిత అర్థం సందర్భంలోనే నిర్ణయించబడుతుంది. ఉదాహరణకు, *న్యూరల్ నెట్‌వర్క్* మరియు *ఫిషింగ్ నెట్‌వర్క్* అర్థాలు పూర్తిగా భిన్నంగా ఉంటాయి. దీన్ని పరిగణలోకి తీసుకోవడానికి ఒక మార్గం, మన మోడల్‌ను పద జంటలపై నిర్మించడం, మరియు పద జంటలను వేరే వాక్యకోశ టోకెన్లుగా పరిగణించడం. ఈ విధంగా, వాక్యం *I like to go fishing* క్రింది టోకెన్ల వరుసగా ప్రాతినిధ్యం వహిస్తుంది: *I like*, *like to*, *to go*, *go fishing*. ఈ విధానంలో సమస్య ఏమిటంటే, డిక్షనరీ పరిమాణం గణనీయంగా పెరుగుతుంది, మరియు *go fishing* మరియు *go shopping* వంటి కలయికలు వేరే టోకెన్లుగా ఉంటాయి, అవి ఒకే క్రియ ఉన్నప్పటికీ సారాంశ సంబంధం పంచుకోవు.
కొన్నిసార్లు, మూడుసార్లు పదాల కలయికలు అయిన ట్రై-గ్రామ్స్‌ను కూడా పరిగణించవచ్చు. ఈ విధానాన్ని సాధారణంగా **ఎన్-గ్రామ్స్** అంటారు. అలాగే, అక్షర స్థాయి ప్రాతినిధ్యంలో ఎన్-గ్రామ్స్ ఉపయోగించడం అర్థం, ఇందులో ఎన్-గ్రామ్స్ సుమారు వేర్వేరు అక్షరాల భాగాలుగా ఉంటుంది.
## బ్యాగ్-ఆఫ్-వర్డ్స్ మరియు TF/IDF
టెక్స్ట్ వర్గీకరణ వంటి పనులను పరిష్కరించేటప్పుడు, మనం ఒక స్థిర పరిమాణం వెక్టర్‌తో టెక్స్ట్‌ను ప్రాతినిధ్యం చేయగలగాలి, దీన్ని తుది డెన్స్ క్లాసిఫయర్‌కు ఇన్పుట్‌గా ఉపయోగిస్తాము. దీని కోసం ఒక సరళమైన మార్గం, ప్రతి పద ప్రాతినిధ్యాలను కలిపి, ఉదాహరణకు వాటిని జోడించడం. ప్రతి పదం వన్-హాట్ ఎంకోడింగ్‌లను జోడిస్తే, మనకు పదాల సంభావ్యతలను చూపించే ఫ్రీక్వెన్సీ వెక్టర్ వస్తుంది, అంటే ప్రతి పదం టెక్స్ట్‌లో ఎన్ని సార్లు వస్తుందో. ఈ విధంగా టెక్స్ట్ ప్రాతినిధ్యం **బ్యాగ్ ఆఫ్ వర్డ్స్** (BoW) అని పిలవబడుతుంది.
<img src="../../../../../translated_images/bow.3811869cff59368d.te.png" width="90%"/>
> రచయితచే చిత్రీకరణ
BoW టెక్స్ట్‌లో ఏ పదాలు ఎన్ని సార్లు ఉన్నాయో సూచిస్తుంది, ఇది టెక్స్ట్ విషయం గురించి మంచి సూచన కావచ్చు. ఉదాహరణకు, రాజకీయాలపై వార్తా వ్యాసం *president* మరియు *country* వంటి పదాలు ఉండే అవకాశం ఉంది, శాస్త్రీయ ప్రచురణలో *collider*, *discovered* వంటి పదాలు ఉండవచ్చు. కాబట్టి, పదాల ఫ్రీక్వెన్సీలు చాలా సందర్భాల్లో టెక్స్ట్ విషయానికి మంచి సూచన.
BoW సమస్య ఏమిటంటే, *and*, *is* వంటి సాధారణ పదాలు ఎక్కువ టెక్స్ట్‌లలో కనిపిస్తాయి మరియు అత్యధిక ఫ్రీక్వెన్సీ కలిగి ఉంటాయి, ఇవి నిజంగా ముఖ్యమైన పదాలను దాచేస్తాయి. ఈ పదాల ప్రాముఖ్యతను తగ్గించడానికి, మొత్తం డాక్యుమెంట్ సేకరణలో పదాల సంభావ్యతను పరిగణలోకి తీసుకోవచ్చు. ఇది TF/IDF విధానానికి ప్రధాన ఆలోచన, ఇది ఈ పాఠంలో జతచేసిన నోట్బుక్స్‌లో మరింత వివరంగా ఉంది.
అయితే, ఈ విధానాలు టెక్స్ట్ యొక్క **సారాంశం**ను పూర్తిగా పరిగణించలేవు. దీని కోసం మరింత శక్తివంతమైన న్యూరల్ నెట్‌వర్క్ మోడల్స్ అవసరం, వాటిని ఈ విభాగంలో తర్వాత చర్చిస్తాము.
## ✍️ వ్యాయామాలు: టెక్స్ట్ ప్రాతినిధ్యం
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో టెక్స్ట్ ప్రాతినిధ్యం](TextRepresentationPyTorch.ipynb)
* [TensorFlowతో టెక్స్ట్ ప్రాతినిధ్యం](TextRepresentationTF.ipynb)
## ముగింపు
ఇప్పటివరకు, మనం వివిధ పదాలకు ఫ్రీక్వెన్సీ బరువు జోడించే సాంకేతికతలను అధ్యయనం చేసాము. అవి, అయితే, అర్థం లేదా క్రమాన్ని ప్రాతినిధ్యం చేయలేవు. 1935లో ప్రసిద్ధ భాషావేత్త జె. ఆర్. ఫర్త్ చెప్పినట్లుగా, "పదం యొక్క పూర్తి అర్థం ఎప్పుడూ సందర్భానుసారంగా ఉంటుంది, మరియు సందర్భం లేకుండా అర్థం అధ్యయనం సీరియస్‌గా తీసుకోలేము." భవిష్యత్తులో మనం భాషా మోడలింగ్ ఉపయోగించి టెక్స్ట్ నుండి సందర్భ సమాచారాన్ని ఎలా పొందాలో నేర్చుకుంటాము.
## 🚀 సవాలు
బ్యాగ్-ఆఫ్-వర్డ్స్ మరియు వివిధ డేటా మోడల్స్ ఉపయోగించి మరిన్ని వ్యాయామాలు ప్రయత్నించండి. మీరు ఈ [కాగ్గుల్ పోటీ](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) నుండి ప్రేరణ పొందవచ్చు.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/26)
## సమీక్ష & స్వీయ అధ్యయనం
[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste)లో టెక్స్ట్ ఎంబెడ్డింగ్స్ మరియు బ్యాగ్-ఆఫ్-వర్డ్స్ సాంకేతికతలతో మీ నైపుణ్యాలను అభ్యసించండి.
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because it is too large Load Diff

View File

@ -1,81 +1,81 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b708c9b85b833864c73c6281f1e6b96e",
"translation_date": "2025-11-25T22:55:15+00:00",
"source_file": "lessons/5-NLP/14-Embeddings/README.md",
"language_code": "te"
}
-->
# ఎంబెడ్డింగ్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/27)
BoW లేదా TF/IDF ఆధారంగా క్లాసిఫైయర్లను శిక్షణ ఇచ్చేటప్పుడు, మేము `vocab_size` పొడవు ఉన్న అధిక-మానసిక బాగ్-ఆఫ్-వర్డ్స్ వెక్టర్లపై పనిచేశాము, మరియు మేము తక్కువ-మానసిక స్థానిక ప్రాతినిధ్య వెక్టర్లను స్పార్స్ వన్-హాట్ ప్రాతినిధ్యంగా స్పష్టంగా మార్చాము. అయితే, ఈ వన్-హాట్ ప్రాతినిధ్యం మెమరీ-సమర్థవంతంగా లేదు. అదనంగా, ప్రతి పదం ఒకదానితో స్వతంత్రంగా పరిగణించబడుతుంది, అంటే వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్లు పదాల మధ్య ఏదైనా సార్ధక సారూప్యతను వ్యక్తం చేయవు.
**ఎంబెడ్డింగ్** అనే ఆలోచన పదాలను తక్కువ-మానసిక సాంద్ర వెక్టర్ల ద్వారా ప్రాతినిధ్యం చేయడం, ఇవి ఏదో విధంగా పదం యొక్క సార్ధక అర్థాన్ని ప్రతిబింబిస్తాయి. మనం తర్వాత అర్థవంతమైన పద ఎంబెడ్డింగ్స్ ఎలా నిర్మించాలో చర్చిస్తాము, కానీ ఇప్పటికీ ఎంబెడ్డింగ్స్‌ను పద వెక్టర్ యొక్క మానసికత తగ్గించే ఒక మార్గంగా భావిద్దాం.
కాబట్టి, ఎంబెడ్డింగ్ లేయర్ ఒక పదాన్ని ఇన్‌పుట్‌గా తీసుకుని, నిర్దిష్ట `embedding_size` ఉన్న అవుట్‌పుట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. ఒక అర్థంలో, ఇది `Linear` లేయర్‌కు చాలా సమానంగా ఉంటుంది, కానీ వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్ తీసుకోవడం కాకుండా, ఇది పద సంఖ్యను ఇన్‌పుట్‌గా తీసుకోవచ్చు, తద్వారా పెద్ద వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్లను సృష్టించకుండా ఉండవచ్చు.
మన క్లాసిఫైయర్ నెట్‌వర్క్‌లో మొదటి లేయర్‌గా ఎంబెడ్డింగ్ లేయర్ ఉపయోగించడం ద్వారా, మేము బాగ్-ఆఫ్-వర్డ్స్ నుండి **ఎంబెడ్డింగ్ బాగ్** మోడల్‌కు మారవచ్చు, ఇక్కడ మేము మొదట మన టెక్స్ట్‌లోని ప్రతి పదాన్ని సంబంధిత ఎంబెడ్డింగ్‌గా మార్చి, ఆ ఎంబెడ్డింగ్స్‌పై `sum`, `average` లేదా `max` వంటి ఏదైనా సమాహార ఫంక్షన్‌ను లెక్కిస్తాము.
![ఐదు వరుస పదాల కోసం ఎంబెడ్డింగ్ క్లాసిఫైయర్ చూపిస్తున్న చిత్రం.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.te.png)
> చిత్రాన్ని రచయిత అందించారు
## ✍️ వ్యాయామాలు: ఎంబెడ్డింగ్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorch తో ఎంబెడ్డింగ్స్](EmbeddingsPyTorch.ipynb)
* [TensorFlow తో ఎంబెడ్డింగ్స్](EmbeddingsTF.ipynb)
## సార్ధక ఎంబెడ్డింగ్స్: Word2Vec
ఎంబెడ్డింగ్ లేయర్ పదాలను వెక్టర్ ప్రాతినిధ్యానికి మ్యాప్ చేయడం నేర్చుకున్నప్పటికీ, ఈ ప్రాతినిధ్యం తప్పనిసరిగా చాలా సార్ధక అర్థం కలిగి ఉండదు. సమానమైన పదాలు లేదా సమానార్థక పదాలు ఒకదానితో దగ్గరగా ఉండే వెక్టర్లుగా ఉండేలా వెక్టర్ ప్రాతినిధ్యం నేర్చుకోవడం మంచిది (ఉదా: యూక్లిడియన్ దూరం).
అందుకోసం, మనం పెద్ద టెక్స్ట్ సేకరణపై ప్రత్యేకంగా ఎంబెడ్డింగ్ మోడల్‌ను ప్రీ-ట్రెయిన్ చేయాలి. సార్ధక ఎంబెడ్డింగ్స్ శిక్షణకు ఒక విధానం [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) అని పిలవబడుతుంది. ఇది పదాల పంపిణీ ప్రాతినిధ్యం ఉత్పత్తి చేయడానికి ఉపయోగించే రెండు ప్రధాన నిర్మాణాలపై ఆధారపడి ఉంటుంది:
- **కంటిన్యూయస్ బాగ్-ఆఫ్-వర్డ్స్** (CBoW) — ఈ నిర్మాణంలో, మోడల్‌ను చుట్టూ ఉన్న సందర్భం నుండి ఒక పదాన్ని అంచనా వేయడానికి శిక్షణ ఇస్తారు. ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ ఇచ్చినప్పుడు, మోడల్ లక్ష్యం $W_0$ ను $(W_{-2},W_{-1},W_1,W_2)$ నుండి అంచనా వేయడం.
- **కంటిన్యూయస్ స్కిప్-గ్రామ్** CBoWకి వ్యతిరేకంగా ఉంటుంది. మోడల్ ప్రస్తుత పదాన్ని అంచనా వేయడానికి చుట్టూ ఉన్న సందర్భ పదాల విండోను ఉపయోగిస్తుంది.
CBoW వేగంగా ఉంటుంది, స్కిప్-గ్రామ్ మందగిస్తుంది, కానీ అరుదైన పదాలను బాగా ప్రాతినిధ్యం చేస్తుంది.
![పదాలను వెక్టర్లుగా మార్చడానికి CBoW మరియు స్కిప్-గ్రామ్ అల్గోరిథమ్స్ చూపిస్తున్న చిత్రం.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.te.png)
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1301.3781.pdf) నుండి
Word2Vec ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ (మరియు GloVe వంటి ఇతర సమాన మోడల్స్) న్యూరల్ నెట్‌వర్క్‌లలో ఎంబెడ్డింగ్ లేయర్ స్థానంలో కూడా ఉపయోగించవచ్చు. అయితే, మనం వోకాబ్యులరీలతో వ్యవహరించాలి, ఎందుకంటే Word2Vec/GloVe ప్రీ-ట్రెయిన్ చేసిన వోకాబ్యులరీ మన టెక్స్ట్ కార్పస్‌లోని వోకాబ్యులరీతో భిన్నంగా ఉండవచ్చు. ఈ సమస్యను ఎలా పరిష్కరించాలో పై నోట్బుక్స్‌లో చూడండి.
## సందర్భానుసార ఎంబెడ్డింగ్స్
Word2Vec వంటి సాంప్రదాయ ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్ ప్రాతినిధ్యాల ఒక ముఖ్యమైన పరిమితి పదార్థ అర్థ వివేచన సమస్య. ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ పదాల సందర్భంలో కొంత అర్థం పట్టుకోవచ్చు, కానీ ఒక పదం యొక్క అన్ని సాధ్యమైన అర్థాలు ఒకే ఎంబెడ్డింగ్‌లో సంకేతం చేయబడ్డాయి. ఇది డౌన్‌స్ట్రీమ్ మోడల్స్‌లో సమస్యలు కలిగించవచ్చు, ఎందుకంటే 'play' వంటి అనేక పదాలు ఉపయోగించే సందర్భం ఆధారంగా వేర్వేరు అర్థాలు కలిగి ఉంటాయి.
ఉదాహరణకు, 'play' అనే పదం ఈ రెండు వాక్యాలలో చాలా వేర్వేరు అర్థాలు కలిగి ఉంది:
- నేను థియేటర్‌లో ఒక **play** కి వెళ్లాను.
- జాన్ తన స్నేహితులతో **play** చేయాలనుకుంటున్నాడు.
పై ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ ఈ రెండు అర్థాలను ఒకే ఎంబెడ్డింగ్‌లో ప్రతిబింబిస్తాయి. ఈ పరిమితిని అధిగమించడానికి, మనం **భాషా మోడల్** ఆధారంగా ఎంబెడ్డింగ్స్ నిర్మించాలి, ఇది పెద్ద టెక్స్ట్ కార్పస్‌పై శిక్షణ పొందింది, మరియు పదాలు వివిధ సందర్భాల్లో ఎలా కలిపి ఉండవచ్చో *తెలుసుకుంటుంది*. సందర్భానుసార ఎంబెడ్డింగ్స్ గురించి చర్చించడం ఈ ట్యుటోరియల్ పరిధికి బయట, కానీ భాషా మోడల్స్ గురించి కోర్సులో తర్వాత మళ్లీ చర్చిస్తాము.
## ముగింపు
ఈ పాఠంలో, మీరు TensorFlow మరియు Pytorchలో ఎంబెడ్డింగ్ లేయర్‌లను ఎలా నిర్మించి ఉపయోగించాలో తెలుసుకున్నారు, తద్వారా పదాల సార్ధక అర్థాలను మెరుగ్గా ప్రతిబింబించవచ్చు.
## 🚀 సవాలు
Word2Vec కొన్ని ఆసక్తికరమైన అనువర్తనాలకు ఉపయోగించబడింది, అందులో పాటల లిరిక్స్ మరియు కవిత్వం సృష్టించడం కూడా ఉంది. రచయిత Word2Vec ఉపయోగించి కవిత్వం ఎలా సృష్టించాడో వివరిస్తున్న [ఈ వ్యాసం](https://www.politetype.com/blog/word2vec-color-poems) చూడండి. అలాగే [డాన్ షిఫ్మాన్](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) వీడియోను కూడా చూడండి, ఇది ఈ సాంకేతికతకు వేరే వివరణను అందిస్తుంది. ఆపై ఈ సాంకేతికతలను మీ స్వంత టెక్స్ట్ కార్పస్ (ఉదా: Kaggle నుండి పొందిన) పై ప్రయోగించండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/28)
## సమీక్ష & స్వీయ అధ్యయనం
Word2Vec పై ఈ పేపర్ చదవండి: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf)
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b708c9b85b833864c73c6281f1e6b96e",
"translation_date": "2025-11-25T22:55:15+00:00",
"source_file": "lessons/5-NLP/14-Embeddings/README.md",
"language_code": "te"
}
-->
# ఎంబెడ్డింగ్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/27)
BoW లేదా TF/IDF ఆధారంగా క్లాసిఫైయర్లను శిక్షణ ఇచ్చేటప్పుడు, మేము `vocab_size` పొడవు ఉన్న అధిక-మానసిక బాగ్-ఆఫ్-వర్డ్స్ వెక్టర్లపై పనిచేశాము, మరియు మేము తక్కువ-మానసిక స్థానిక ప్రాతినిధ్య వెక్టర్లను స్పార్స్ వన్-హాట్ ప్రాతినిధ్యంగా స్పష్టంగా మార్చాము. అయితే, ఈ వన్-హాట్ ప్రాతినిధ్యం మెమరీ-సమర్థవంతంగా లేదు. అదనంగా, ప్రతి పదం ఒకదానితో స్వతంత్రంగా పరిగణించబడుతుంది, అంటే వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్లు పదాల మధ్య ఏదైనా సార్ధక సారూప్యతను వ్యక్తం చేయవు.
**ఎంబెడ్డింగ్** అనే ఆలోచన పదాలను తక్కువ-మానసిక సాంద్ర వెక్టర్ల ద్వారా ప్రాతినిధ్యం చేయడం, ఇవి ఏదో విధంగా పదం యొక్క సార్ధక అర్థాన్ని ప్రతిబింబిస్తాయి. మనం తర్వాత అర్థవంతమైన పద ఎంబెడ్డింగ్స్ ఎలా నిర్మించాలో చర్చిస్తాము, కానీ ఇప్పటికీ ఎంబెడ్డింగ్స్‌ను పద వెక్టర్ యొక్క మానసికత తగ్గించే ఒక మార్గంగా భావిద్దాం.
కాబట్టి, ఎంబెడ్డింగ్ లేయర్ ఒక పదాన్ని ఇన్‌పుట్‌గా తీసుకుని, నిర్దిష్ట `embedding_size` ఉన్న అవుట్‌పుట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. ఒక అర్థంలో, ఇది `Linear` లేయర్‌కు చాలా సమానంగా ఉంటుంది, కానీ వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్ తీసుకోవడం కాకుండా, ఇది పద సంఖ్యను ఇన్‌పుట్‌గా తీసుకోవచ్చు, తద్వారా పెద్ద వన్-హాట్ ఎన్‌కోడ్ చేసిన వెక్టర్లను సృష్టించకుండా ఉండవచ్చు.
మన క్లాసిఫైయర్ నెట్‌వర్క్‌లో మొదటి లేయర్‌గా ఎంబెడ్డింగ్ లేయర్ ఉపయోగించడం ద్వారా, మేము బాగ్-ఆఫ్-వర్డ్స్ నుండి **ఎంబెడ్డింగ్ బాగ్** మోడల్‌కు మారవచ్చు, ఇక్కడ మేము మొదట మన టెక్స్ట్‌లోని ప్రతి పదాన్ని సంబంధిత ఎంబెడ్డింగ్‌గా మార్చి, ఆ ఎంబెడ్డింగ్స్‌పై `sum`, `average` లేదా `max` వంటి ఏదైనా సమాహార ఫంక్షన్‌ను లెక్కిస్తాము.
![ఐదు వరుస పదాల కోసం ఎంబెడ్డింగ్ క్లాసిఫైయర్ చూపిస్తున్న చిత్రం.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eee.te.png)
> చిత్రాన్ని రచయిత అందించారు
## ✍️ వ్యాయామాలు: ఎంబెడ్డింగ్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorch తో ఎంబెడ్డింగ్స్](EmbeddingsPyTorch.ipynb)
* [TensorFlow తో ఎంబెడ్డింగ్స్](EmbeddingsTF.ipynb)
## సార్ధక ఎంబెడ్డింగ్స్: Word2Vec
ఎంబెడ్డింగ్ లేయర్ పదాలను వెక్టర్ ప్రాతినిధ్యానికి మ్యాప్ చేయడం నేర్చుకున్నప్పటికీ, ఈ ప్రాతినిధ్యం తప్పనిసరిగా చాలా సార్ధక అర్థం కలిగి ఉండదు. సమానమైన పదాలు లేదా సమానార్థక పదాలు ఒకదానితో దగ్గరగా ఉండే వెక్టర్లుగా ఉండేలా వెక్టర్ ప్రాతినిధ్యం నేర్చుకోవడం మంచిది (ఉదా: యూక్లిడియన్ దూరం).
అందుకోసం, మనం పెద్ద టెక్స్ట్ సేకరణపై ప్రత్యేకంగా ఎంబెడ్డింగ్ మోడల్‌ను ప్రీ-ట్రెయిన్ చేయాలి. సార్ధక ఎంబెడ్డింగ్స్ శిక్షణకు ఒక విధానం [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) అని పిలవబడుతుంది. ఇది పదాల పంపిణీ ప్రాతినిధ్యం ఉత్పత్తి చేయడానికి ఉపయోగించే రెండు ప్రధాన నిర్మాణాలపై ఆధారపడి ఉంటుంది:
- **కంటిన్యూయస్ బాగ్-ఆఫ్-వర్డ్స్** (CBoW) — ఈ నిర్మాణంలో, మోడల్‌ను చుట్టూ ఉన్న సందర్భం నుండి ఒక పదాన్ని అంచనా వేయడానికి శిక్షణ ఇస్తారు. ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ ఇచ్చినప్పుడు, మోడల్ లక్ష్యం $W_0$ ను $(W_{-2},W_{-1},W_1,W_2)$ నుండి అంచనా వేయడం.
- **కంటిన్యూయస్ స్కిప్-గ్రామ్** CBoWకి వ్యతిరేకంగా ఉంటుంది. మోడల్ ప్రస్తుత పదాన్ని అంచనా వేయడానికి చుట్టూ ఉన్న సందర్భ పదాల విండోను ఉపయోగిస్తుంది.
CBoW వేగంగా ఉంటుంది, స్కిప్-గ్రామ్ మందగిస్తుంది, కానీ అరుదైన పదాలను బాగా ప్రాతినిధ్యం చేస్తుంది.
![పదాలను వెక్టర్లుగా మార్చడానికి CBoW మరియు స్కిప్-గ్రామ్ అల్గోరిథమ్స్ చూపిస్తున్న చిత్రం.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.te.png)
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1301.3781.pdf) నుండి
Word2Vec ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ (మరియు GloVe వంటి ఇతర సమాన మోడల్స్) న్యూరల్ నెట్‌వర్క్‌లలో ఎంబెడ్డింగ్ లేయర్ స్థానంలో కూడా ఉపయోగించవచ్చు. అయితే, మనం వోకాబ్యులరీలతో వ్యవహరించాలి, ఎందుకంటే Word2Vec/GloVe ప్రీ-ట్రెయిన్ చేసిన వోకాబ్యులరీ మన టెక్స్ట్ కార్పస్‌లోని వోకాబ్యులరీతో భిన్నంగా ఉండవచ్చు. ఈ సమస్యను ఎలా పరిష్కరించాలో పై నోట్బుక్స్‌లో చూడండి.
## సందర్భానుసార ఎంబెడ్డింగ్స్
Word2Vec వంటి సాంప్రదాయ ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్ ప్రాతినిధ్యాల ఒక ముఖ్యమైన పరిమితి పదార్థ అర్థ వివేచన సమస్య. ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ పదాల సందర్భంలో కొంత అర్థం పట్టుకోవచ్చు, కానీ ఒక పదం యొక్క అన్ని సాధ్యమైన అర్థాలు ఒకే ఎంబెడ్డింగ్‌లో సంకేతం చేయబడ్డాయి. ఇది డౌన్‌స్ట్రీమ్ మోడల్స్‌లో సమస్యలు కలిగించవచ్చు, ఎందుకంటే 'play' వంటి అనేక పదాలు ఉపయోగించే సందర్భం ఆధారంగా వేర్వేరు అర్థాలు కలిగి ఉంటాయి.
ఉదాహరణకు, 'play' అనే పదం ఈ రెండు వాక్యాలలో చాలా వేర్వేరు అర్థాలు కలిగి ఉంది:
- నేను థియేటర్‌లో ఒక **play** కి వెళ్లాను.
- జాన్ తన స్నేహితులతో **play** చేయాలనుకుంటున్నాడు.
పై ప్రీ-ట్రెయిన్ చేసిన ఎంబెడ్డింగ్స్ ఈ రెండు అర్థాలను ఒకే ఎంబెడ్డింగ్‌లో ప్రతిబింబిస్తాయి. ఈ పరిమితిని అధిగమించడానికి, మనం **భాషా మోడల్** ఆధారంగా ఎంబెడ్డింగ్స్ నిర్మించాలి, ఇది పెద్ద టెక్స్ట్ కార్పస్‌పై శిక్షణ పొందింది, మరియు పదాలు వివిధ సందర్భాల్లో ఎలా కలిపి ఉండవచ్చో *తెలుసుకుంటుంది*. సందర్భానుసార ఎంబెడ్డింగ్స్ గురించి చర్చించడం ఈ ట్యుటోరియల్ పరిధికి బయట, కానీ భాషా మోడల్స్ గురించి కోర్సులో తర్వాత మళ్లీ చర్చిస్తాము.
## ముగింపు
ఈ పాఠంలో, మీరు TensorFlow మరియు Pytorchలో ఎంబెడ్డింగ్ లేయర్‌లను ఎలా నిర్మించి ఉపయోగించాలో తెలుసుకున్నారు, తద్వారా పదాల సార్ధక అర్థాలను మెరుగ్గా ప్రతిబింబించవచ్చు.
## 🚀 సవాలు
Word2Vec కొన్ని ఆసక్తికరమైన అనువర్తనాలకు ఉపయోగించబడింది, అందులో పాటల లిరిక్స్ మరియు కవిత్వం సృష్టించడం కూడా ఉంది. రచయిత Word2Vec ఉపయోగించి కవిత్వం ఎలా సృష్టించాడో వివరిస్తున్న [ఈ వ్యాసం](https://www.politetype.com/blog/word2vec-color-poems) చూడండి. అలాగే [డాన్ షిఫ్మాన్](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) వీడియోను కూడా చూడండి, ఇది ఈ సాంకేతికతకు వేరే వివరణను అందిస్తుంది. ఆపై ఈ సాంకేతికతలను మీ స్వంత టెక్స్ట్ కార్పస్ (ఉదా: Kaggle నుండి పొందిన) పై ప్రయోగించండి.
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/28)
## సమీక్ష & స్వీయ అధ్యయనం
Word2Vec పై ఈ పేపర్ చదవండి: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf)
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,58 +1,58 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7ba20f54a5bfcd6521018cdfb17c7c57",
"translation_date": "2025-11-25T22:58:44+00:00",
"source_file": "lessons/5-NLP/15-LanguageModeling/README.md",
"language_code": "te"
}
-->
# భాషా మోడలింగ్
వర్డ్2వెక్ మరియు గ్లోవ్ వంటి సేమాంటిక్ ఎంబెడ్డింగ్స్ వాస్తవానికి **భాషా మోడలింగ్** వైపు మొదటి అడుగు - భాష యొక్క స్వభావాన్ని ఏదో విధంగా *అర్థం చేసుకోవడం* (లేదా *ప్రతినిధ్యం వహించడం*) కోసం మోడల్స్ సృష్టించడం.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/29)
భాషా మోడలింగ్ వెనుక ప్రధాన ఆలోచన అనలేబుల్ డేటాసెట్లపై అనుసూచిత రీతిలో శిక్షణ ఇవ్వడం. ఇది ముఖ్యమైనది ఎందుకంటే మనకు పెద్ద మొత్తంలో అనలేబుల్ టెక్స్ట్ అందుబాటులో ఉంటుంది, అయితే లేబుల్ చేసిన టెక్స్ట్ పరిమితంగా ఉంటుంది ఎందుకంటే లేబలింగ్ కోసం మనం పెట్టే శ్రమ పరిమితంగా ఉంటుంది. ఎక్కువగా, మనం టెక్స్ట్‌లో లేని పదాలను **అంచనా వేయగల** భాషా మోడల్స్ తయారు చేయగలము, ఎందుకంటే టెక్స్ట్‌లో యాదృచ్ఛిక పదాన్ని మాస్క్ చేసి దానిని శిక్షణ నమూనాగా ఉపయోగించడం సులభం.
## ఎంబెడ్డింగ్స్ శిక్షణ
మునుపటి ఉదాహరణల్లో, మేము ముందుగా శిక్షణ పొందిన సేమాంటిక్ ఎంబెడ్డింగ్స్ ఉపయోగించాము, కానీ ఆ ఎంబెడ్డింగ్స్ ఎలా శిక్షణ పొందతాయో చూడటం ఆసక్తికరం. ఉపయోగించదగిన కొన్ని ఆలోచనలు ఉన్నాయి:
* **ఎన్-గ్రామ్** భాషా మోడలింగ్, ఇందులో N గత టోకెన్లను చూసి ఒక టోకెన్‌ను అంచనా వేస్తాము (N-గ్రామ్)
* **కంటిన్యూయస్ బ్యాగ్-ఆఫ్-వర్డ్స్** (CBoW), ఇందులో టోకెన్ సీక్వెన్స్ $W_{-N}$, ..., $W_N$ లో మధ్య టోకెన్ $W_0$ ను అంచనా వేస్తాము.
* **స్కిప్-గ్రామ్**, ఇందులో మధ్య టోకెన్ $W_0$ నుండి పొరుగువారైన టోకెన్ల సమూహం {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} ను అంచనా వేస్తాము.
![పదాలను వెక్టర్లుగా మార్చే అల్గోరిథమ్స్ పై పేపర్ నుండి చిత్రం](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.te.png)
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1301.3781.pdf) నుండి
## ✍️ ఉదాహరణ నోట్‌బుక్స్: CBoW మోడల్ శిక్షణ
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [టెన్సర్‌ఫ్లోతో CBoW Word2Vec శిక్షణ](CBoW-TF.ipynb)
* [పైటార్చ్‌తో CBoW Word2Vec శిక్షణ](CBoW-PyTorch.ipynb)
## ముగింపు
మునుపటి పాఠంలో మనం చూసినట్లుగా పదాల ఎంబెడ్డింగ్స్ మాయాజాలంలా పనిచేస్తాయి! ఇప్పుడు మనకు తెలుసు పదాల ఎంబెడ్డింగ్స్ శిక్షణ చాలా క్లిష్టమైన పని కాదు, అవసరమైతే డొమైన్-స్పెసిఫిక్ టెక్స్ట్ కోసం మనం స్వంత పదాల ఎంబెడ్డింగ్స్ శిక్షణ ఇవ్వగలము.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/30)
## సమీక్ష & స్వీయ అధ్యయనం
* [భాషా మోడలింగ్ పై అధికారిక PyTorch ట్యుటోరియల్](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html).
* [Word2Vec మోడల్ శిక్షణపై అధికారిక TensorFlow ట్యుటోరియల్](https://www.TensorFlow.org/tutorials/text/word2vec).
* **gensim** ఫ్రేమ్‌వర్క్ ఉపయోగించి కొన్ని కోడ్ లైన్లలో అత్యంత సాధారణంగా ఉపయోగించే ఎంబెడ్డింగ్స్ శిక్షణ గురించి [ఈ డాక్యుమెంటేషన్](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) లో వివరించబడింది.
## 🚀 [అసైన్‌మెంట్: స్కిప్-గ్రామ్ మోడల్ శిక్షణ](lab/README.md)
ల్యాబ్‌లో, ఈ పాఠం నుండి కోడ్‌ను మార్చి CBoW కాకుండా స్కిప్-గ్రామ్ మోడల్ శిక్షణ ఇవ్వమని మిమ్మల్ని సవాలు చేస్తాము. [వివరాలు చదవండి](lab/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులుండవచ్చు. మూల డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7ba20f54a5bfcd6521018cdfb17c7c57",
"translation_date": "2025-11-25T22:58:44+00:00",
"source_file": "lessons/5-NLP/15-LanguageModeling/README.md",
"language_code": "te"
}
-->
# భాషా మోడలింగ్
వర్డ్2వెక్ మరియు గ్లోవ్ వంటి సేమాంటిక్ ఎంబెడ్డింగ్స్ వాస్తవానికి **భాషా మోడలింగ్** వైపు మొదటి అడుగు - భాష యొక్క స్వభావాన్ని ఏదో విధంగా *అర్థం చేసుకోవడం* (లేదా *ప్రతినిధ్యం వహించడం*) కోసం మోడల్స్ సృష్టించడం.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/29)
భాషా మోడలింగ్ వెనుక ప్రధాన ఆలోచన అనలేబుల్ డేటాసెట్లపై అనుసూచిత రీతిలో శిక్షణ ఇవ్వడం. ఇది ముఖ్యమైనది ఎందుకంటే మనకు పెద్ద మొత్తంలో అనలేబుల్ టెక్స్ట్ అందుబాటులో ఉంటుంది, అయితే లేబుల్ చేసిన టెక్స్ట్ పరిమితంగా ఉంటుంది ఎందుకంటే లేబలింగ్ కోసం మనం పెట్టే శ్రమ పరిమితంగా ఉంటుంది. ఎక్కువగా, మనం టెక్స్ట్‌లో లేని పదాలను **అంచనా వేయగల** భాషా మోడల్స్ తయారు చేయగలము, ఎందుకంటే టెక్స్ట్‌లో యాదృచ్ఛిక పదాన్ని మాస్క్ చేసి దానిని శిక్షణ నమూనాగా ఉపయోగించడం సులభం.
## ఎంబెడ్డింగ్స్ శిక్షణ
మునుపటి ఉదాహరణల్లో, మేము ముందుగా శిక్షణ పొందిన సేమాంటిక్ ఎంబెడ్డింగ్స్ ఉపయోగించాము, కానీ ఆ ఎంబెడ్డింగ్స్ ఎలా శిక్షణ పొందతాయో చూడటం ఆసక్తికరం. ఉపయోగించదగిన కొన్ని ఆలోచనలు ఉన్నాయి:
* **ఎన్-గ్రామ్** భాషా మోడలింగ్, ఇందులో N గత టోకెన్లను చూసి ఒక టోకెన్‌ను అంచనా వేస్తాము (N-గ్రామ్)
* **కంటిన్యూయస్ బ్యాగ్-ఆఫ్-వర్డ్స్** (CBoW), ఇందులో టోకెన్ సీక్వెన్స్ $W_{-N}$, ..., $W_N$ లో మధ్య టోకెన్ $W_0$ ను అంచనా వేస్తాము.
* **స్కిప్-గ్రామ్**, ఇందులో మధ్య టోకెన్ $W_0$ నుండి పొరుగువారైన టోకెన్ల సమూహం {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} ను అంచనా వేస్తాము.
![పదాలను వెక్టర్లుగా మార్చే అల్గోరిథమ్స్ పై పేపర్ నుండి చిత్రం](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.te.png)
> చిత్రం [ఈ పేపర్](https://arxiv.org/pdf/1301.3781.pdf) నుండి
## ✍️ ఉదాహరణ నోట్‌బుక్స్: CBoW మోడల్ శిక్షణ
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [టెన్సర్‌ఫ్లోతో CBoW Word2Vec శిక్షణ](CBoW-TF.ipynb)
* [పైటార్చ్‌తో CBoW Word2Vec శిక్షణ](CBoW-PyTorch.ipynb)
## ముగింపు
మునుపటి పాఠంలో మనం చూసినట్లుగా పదాల ఎంబెడ్డింగ్స్ మాయాజాలంలా పనిచేస్తాయి! ఇప్పుడు మనకు తెలుసు పదాల ఎంబెడ్డింగ్స్ శిక్షణ చాలా క్లిష్టమైన పని కాదు, అవసరమైతే డొమైన్-స్పెసిఫిక్ టెక్స్ట్ కోసం మనం స్వంత పదాల ఎంబెడ్డింగ్స్ శిక్షణ ఇవ్వగలము.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/30)
## సమీక్ష & స్వీయ అధ్యయనం
* [భాషా మోడలింగ్ పై అధికారిక PyTorch ట్యుటోరియల్](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html).
* [Word2Vec మోడల్ శిక్షణపై అధికారిక TensorFlow ట్యుటోరియల్](https://www.TensorFlow.org/tutorials/text/word2vec).
* **gensim** ఫ్రేమ్‌వర్క్ ఉపయోగించి కొన్ని కోడ్ లైన్లలో అత్యంత సాధారణంగా ఉపయోగించే ఎంబెడ్డింగ్స్ శిక్షణ గురించి [ఈ డాక్యుమెంటేషన్](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) లో వివరించబడింది.
## 🚀 [అసైన్‌మెంట్: స్కిప్-గ్రామ్ మోడల్ శిక్షణ](lab/README.md)
ల్యాబ్‌లో, ఈ పాఠం నుండి కోడ్‌ను మార్చి CBoW కాకుండా స్కిప్-గ్రామ్ మోడల్ శిక్షణ ఇవ్వమని మిమ్మల్ని సవాలు చేస్తాము. [వివరాలు చదవండి](lab/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులుండవచ్చు. మూల డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,99 +1,99 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "e2273cc150380a5e191903cea858f021",
"translation_date": "2025-11-25T23:01:20+00:00",
"source_file": "lessons/5-NLP/16-RNN/README.md",
"language_code": "te"
}
-->
# రికరెంట్ న్యూరల్ నెట్‌వర్క్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/31)
మునుపటి విభాగాల్లో, మేము టెక్స్ట్ యొక్క సమృద్ధిగా అర్థం ఉన్న ప్రాతినిధ్యాలను మరియు ఎంబెడ్డింగ్స్ పై సాదా లీనియర్ క్లాసిఫయర్‌ను ఉపయోగించాము. ఈ ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకోవడమే చేస్తుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ పై సమీకరణ ఆపరేషన్ మూల టెక్స్ట్ నుండి ఈ సమాచారాన్ని తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని మోడల్ చేయలేకపోవడం వలన, టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.
టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మేము మరో న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్ ఉపయోగించాలి, దీనిని **రికరెంట్ న్యూరల్ నెట్‌వర్క్** లేదా RNN అంటారు. RNNలో, మేము వాక్యాన్ని ఒక్కో చిహ్నం ద్వారా నెట్‌వర్క్‌లో పంపుతాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాతి చిహ్నంతో మళ్లీ నెట్‌వర్క్‌కు ఇస్తాము.
![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.te.png)
> చిత్రకారుడు
ఇన్‌పుట్ టోకెన్ల సీక్వెన్స్ X<sub>0</sub>,...,X<sub>n</sub> ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టించి, బ్యాక్‌ప్రొపగేషన్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ (X<sub>i</sub>,S<sub>i</sub>) జంటను ఇన్‌పుట్‌గా తీసుకుని, S<sub>i+1</sub>ని ఉత్పత్తి చేస్తుంది. చివరి స్థితి S<sub>n</sub> లేదా (అవుట్‌పుట్ Y<sub>n</sub>) లీనియర్ క్లాసిఫయర్‌కు వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి మరియు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.
స్థితి వెక్టర్లు S<sub>0</sub>,...,S<sub>n</sub> నెట్‌వర్క్ ద్వారా పంపబడటం వలన, ఇది పదాల మధ్య క్రమపద్ధతుల ఆధారిత సంబంధాలను నేర్చుకోగలదు. ఉదాహరణకు, సీక్వెన్స్‌లో *not* అనే పదం వచ్చినప్పుడు, ఇది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నెగేట్ చేయడం నేర్చుకోవచ్చు, ఫలితంగా నెగేషన్ వస్తుంది.
> ✅ పై చిత్రంలో అన్ని RNN బ్లాక్స్ బరువులు పంచుకున్నందున, అదే చిత్రాన్ని ఒక బ్లాక్ (కుడి వైపు) గా, రికరెంట్ ఫీడ్బ్యాక్ లూప్‌తో చూపవచ్చు, ఇది నెట్‌వర్క్ అవుట్‌పుట్ స్థితిని మళ్లీ ఇన్‌పుట్‌కు పంపుతుంది.
## RNN సెల్ నిర్మాణం
సాదా RNN సెల్ ఎలా ఏర్పడిందో చూద్దాం. ఇది గత స్థితి S<sub>i-1</sub> మరియు ప్రస్తుత చిహ్నం X<sub>i</sub>ని ఇన్‌పుట్‌గా తీసుకుని, అవుట్‌పుట్ స్థితి S<sub>i</sub> (మరియు కొన్నిసార్లు ఇతర అవుట్‌పుట్ Y<sub>i</sub> కూడా, ఉదాహరణకు జనరేటివ్ నెట్‌వర్క్స్‌లో) ఉత్పత్తి చేయాలి.
సాదా RNN సెల్‌లో రెండు బరువు మ్యాట్రిక్స్‌లు ఉంటాయి: ఒకటి ఇన్‌పుట్ చిహ్నాన్ని మార్చుతుంది (దాన్ని W అంటాం), మరొకటి ఇన్‌పుట్ స్థితిని మార్చుతుంది (H). ఈ సందర్భంలో నెట్‌వర్క్ అవుట్‌పుట్ &sigma;(W&times;X<sub>i</sub>+H&times;S<sub>i-1</sub>+b) గా లెక్కించబడుతుంది, ఇక్కడ &sigma; యాక్టివేషన్ ఫంక్షన్, b అదనపు బయాస్.
<img alt="RNN Cell Anatomy" src="../../../../../translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.te.png" width="50%"/>
> చిత్రకారుడు
చాలా సందర్భాల్లో, ఇన్‌పుట్ టోకెన్లు RNNకి వెళ్లేముందు ఎంబెడ్డింగ్ లేయర్ ద్వారా పంపబడతాయి, దీని వల్ల డైమెన్షనాలిటీ తగ్గుతుంది. ఇక్కడ, ఇన్‌పుట్ వెక్టర్ల డైమెన్షన్ *emb_size* అయితే, స్థితి వెక్టర్ *hid_size* అయితే - W పరిమాణం *emb_size*&times;*hid_size*, H పరిమాణం *hid_size*&times;*hid_size* అవుతుంది.
## లాంగ్ షార్ట్ టర్మ్ మెమరీ (LSTM)
సాంప్రదాయ RNNల ప్రధాన సమస్యలలో ఒకటి **వానిషింగ్ గ్రాడియెంట్స్** సమస్య. RNNలు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్‌లో ఎండ్-టు-ఎండ్ శిక్షణ పొందడం వలన, మొదటి లేయర్లకు లోపం సరిగ్గా చేరడం కష్టమవుతుంది, అందువల్ల నెట్‌వర్క్ దూర టోకెన్ల మధ్య సంబంధాలు నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **స్పష్ట స్థితి నిర్వహణ**ను ప్రవేశపెట్టడం, దీనికి **గేట్స్** ఉపయోగిస్తారు. ఈ తరహా రెండు ప్రసిద్ధ ఆర్కిటెక్చర్లు ఉన్నాయి: **లాంగ్ షార్ట్ టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU).
![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)
> చిత్రం మూలం TBD
LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పడింది, కానీ రెండు స్థితులు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్థితి C మరియు హిడెన్ వెక్టర్ H. ప్రతి యూనిట్‌లో, హిడెన్ వెక్టర్ H<sub>i</sub>ను ఇన్‌పుట్ X<sub>i</sub>తో కలిపి, అవి **గేట్స్** ద్వారా స్థితి Cపై నియంత్రణ చేస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ ఉన్న న్యూరల్ నెట్‌వర్క్ (ఫలితం [0,1] పరిధిలో ఉంటుంది), ఇది స్థితి వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. ఈ గేట్స్ (చిత్రంలో ఎడమ నుండి కుడి వైపు):
* **ఫార్గెట్ గేట్** హిడెన్ వెక్టర్ తీసుకుని, స్థితి Cలోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.
* **ఇన్‌పుట్ గేట్** ఇన్‌పుట్ మరియు హిడెన్ వెక్టర్ల నుండి సమాచారం తీసుకుని, దాన్ని స్థితిలో చేర్చుతుంది.
* **అవుట్‌పుట్ గేట్** స్థితిని *tanh* యాక్టివేషన్‌తో లీనియర్ లేయర్ ద్వారా మార్చి, హిడెన్ వెక్టర్ H<sub>i</sub> ఉపయోగించి దాని కొన్ని భాగాలను ఎంచుకుని కొత్త స్థితి C<sub>i+1</sub>ని ఉత్పత్తి చేస్తుంది.
స్థితి Cలోని భాగాలు కొన్ని ఫ్లాగ్‌లాగా భావించవచ్చు, అవి ఆన్ లేదా ఆఫ్ చేయవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వచ్చినప్పుడు, అది మహిళా పాత్రకు సంబంధించినదని భావించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు ఫ్లాగ్‌ను ఎత్తవచ్చు. తరువాత *and Tom* వంటి పదాలు వచ్చినప్పుడు, బహువచన నామవాచకం ఉన్నట్లు ఫ్లాగ్‌ను ఎత్తవచ్చు. ఈ విధంగా స్థితిని నియంత్రించడం ద్వారా వాక్య భాగాల వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.
> ✅ LSTM అంతర్గతాలను అర్థం చేసుకోవడానికి అద్భుతమైన వనరు ఈ గొప్ప వ్యాసం [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.
## బిడైరెక్షనల్ మరియు మల్టిలేయర్ RNNలు
మేము ఒక దిశలో పనిచేసే రికరెంట్ నెట్‌వర్క్స్ గురించి చర్చించాము, అంటే సీక్వెన్స్ ప్రారంభం నుండి చివర వరకు. ఇది సహజంగా అనిపిస్తుంది, ఎందుకంటే మనం చదవడం మరియు మాట్లాడే విధానం ఇలానే ఉంటుంది. అయితే, అనేక ప్రాక్టికల్ సందర్భాల్లో ఇన్‌పుట్ సీక్వెన్స్‌కు యాదృచ్ఛిక ప్రాప్తి ఉన్నప్పుడు, రికరెంట్ గణనను రెండు దిశలలో నడపడం మంచిది. ఇలాంటి నెట్‌వర్క్స్‌ను **బిడైరెక్షనల్** RNNలు అంటారు. బిడైరెక్షనల్ నెట్‌వర్క్‌తో పని చేయడానికి, ప్రతి దిశకు ఒక హిడెన్ స్థితి వెక్టర్ అవసరం.
రికరెంట్ నెట్‌వర్క్, ఒక దిశలోనైనా లేదా బిడైరెక్షనల్‌గా ఉన్నా, సీక్వెన్స్‌లోని కొన్ని నమూనాలను పట్టుకుని, వాటిని స్థితి వెక్టర్‌లో నిల్వ చేయగలదు లేదా అవుట్‌పుట్‌గా పంపగలదు. కాంవల్యూషనల్ నెట్‌వర్క్స్ లాగా, మొదటి లేయర్ నుండి తీసుకున్న తక్కువ స్థాయి నమూనాలపై ఆధారపడి, మరొక రికరెంట్ లేయర్‌ను నిర్మించి, ఉన్నత స్థాయి నమూనాలను పట్టుకోవచ్చు. దీని ద్వారా **మల్టిలేయర్ RNN** అనే భావన వస్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్స్ కలిగి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్ తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపబడుతుంది.
![Image showing a Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.te.jpg)
*చిత్రం [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి, ఫెర్నాండో లోపెజ్ రచన*
## ✍️ వ్యాయామాలు: ఎంబెడ్డింగ్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో RNNలు](RNNPyTorch.ipynb)
* [TensorFlowతో RNNలు](RNNTF.ipynb)
## ముగింపు
ఈ యూనిట్‌లో, RNNలు సీక్వెన్స్ క్లాసిఫికేషన్‌కు ఉపయోగించవచ్చని చూశాము, కానీ వాస్తవానికి, అవి టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం మరియు మరిన్ని పనులను నిర్వహించగలవు. ఆ పనులను తదుపరి యూనిట్‌లో పరిశీలిస్తాము.
## 🚀 సవాలు
LSTMల గురించి కొంత సాహిత్యం చదవండి మరియు వాటి అనువర్తనాలను పరిశీలించండి:
- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf)
- [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/32)
## సమీక్ష & స్వీయ అధ్యయనం
- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రచన.
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "e2273cc150380a5e191903cea858f021",
"translation_date": "2025-11-25T23:01:20+00:00",
"source_file": "lessons/5-NLP/16-RNN/README.md",
"language_code": "te"
}
-->
# రికరెంట్ న్యూరల్ నెట్‌వర్క్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/31)
మునుపటి విభాగాల్లో, మేము టెక్స్ట్ యొక్క సమృద్ధిగా అర్థం ఉన్న ప్రాతినిధ్యాలను మరియు ఎంబెడ్డింగ్స్ పై సాదా లీనియర్ క్లాసిఫయర్‌ను ఉపయోగించాము. ఈ ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకోవడమే చేస్తుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ పై సమీకరణ ఆపరేషన్ మూల టెక్స్ట్ నుండి ఈ సమాచారాన్ని తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని మోడల్ చేయలేకపోవడం వలన, టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.
టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మేము మరో న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్ ఉపయోగించాలి, దీనిని **రికరెంట్ న్యూరల్ నెట్‌వర్క్** లేదా RNN అంటారు. RNNలో, మేము వాక్యాన్ని ఒక్కో చిహ్నం ద్వారా నెట్‌వర్క్‌లో పంపుతాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాతి చిహ్నంతో మళ్లీ నెట్‌వర్క్‌కు ఇస్తాము.
![RNN](../../../../../translated_images/rnn.27f5c29c53d727b5.te.png)
> చిత్రకారుడు
ఇన్‌పుట్ టోకెన్ల సీక్వెన్స్ X<sub>0</sub>,...,X<sub>n</sub> ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టించి, బ్యాక్‌ప్రొపగేషన్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ (X<sub>i</sub>,S<sub>i</sub>) జంటను ఇన్‌పుట్‌గా తీసుకుని, S<sub>i+1</sub>ని ఉత్పత్తి చేస్తుంది. చివరి స్థితి S<sub>n</sub> లేదా (అవుట్‌పుట్ Y<sub>n</sub>) లీనియర్ క్లాసిఫయర్‌కు వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి మరియు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.
స్థితి వెక్టర్లు S<sub>0</sub>,...,S<sub>n</sub> నెట్‌వర్క్ ద్వారా పంపబడటం వలన, ఇది పదాల మధ్య క్రమపద్ధతుల ఆధారిత సంబంధాలను నేర్చుకోగలదు. ఉదాహరణకు, సీక్వెన్స్‌లో *not* అనే పదం వచ్చినప్పుడు, ఇది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నెగేట్ చేయడం నేర్చుకోవచ్చు, ఫలితంగా నెగేషన్ వస్తుంది.
> ✅ పై చిత్రంలో అన్ని RNN బ్లాక్స్ బరువులు పంచుకున్నందున, అదే చిత్రాన్ని ఒక బ్లాక్ (కుడి వైపు) గా, రికరెంట్ ఫీడ్బ్యాక్ లూప్‌తో చూపవచ్చు, ఇది నెట్‌వర్క్ అవుట్‌పుట్ స్థితిని మళ్లీ ఇన్‌పుట్‌కు పంపుతుంది.
## RNN సెల్ నిర్మాణం
సాదా RNN సెల్ ఎలా ఏర్పడిందో చూద్దాం. ఇది గత స్థితి S<sub>i-1</sub> మరియు ప్రస్తుత చిహ్నం X<sub>i</sub>ని ఇన్‌పుట్‌గా తీసుకుని, అవుట్‌పుట్ స్థితి S<sub>i</sub> (మరియు కొన్నిసార్లు ఇతర అవుట్‌పుట్ Y<sub>i</sub> కూడా, ఉదాహరణకు జనరేటివ్ నెట్‌వర్క్స్‌లో) ఉత్పత్తి చేయాలి.
సాదా RNN సెల్‌లో రెండు బరువు మ్యాట్రిక్స్‌లు ఉంటాయి: ఒకటి ఇన్‌పుట్ చిహ్నాన్ని మార్చుతుంది (దాన్ని W అంటాం), మరొకటి ఇన్‌పుట్ స్థితిని మార్చుతుంది (H). ఈ సందర్భంలో నెట్‌వర్క్ అవుట్‌పుట్ &sigma;(W&times;X<sub>i</sub>+H&times;S<sub>i-1</sub>+b) గా లెక్కించబడుతుంది, ఇక్కడ &sigma; యాక్టివేషన్ ఫంక్షన్, b అదనపు బయాస్.
<img alt="RNN Cell Anatomy" src="../../../../../translated_images/rnn-anatomy.79ee3f3920b3294b.te.png" width="50%"/>
> చిత్రకారుడు
చాలా సందర్భాల్లో, ఇన్‌పుట్ టోకెన్లు RNNకి వెళ్లేముందు ఎంబెడ్డింగ్ లేయర్ ద్వారా పంపబడతాయి, దీని వల్ల డైమెన్షనాలిటీ తగ్గుతుంది. ఇక్కడ, ఇన్‌పుట్ వెక్టర్ల డైమెన్షన్ *emb_size* అయితే, స్థితి వెక్టర్ *hid_size* అయితే - W పరిమాణం *emb_size*&times;*hid_size*, H పరిమాణం *hid_size*&times;*hid_size* అవుతుంది.
## లాంగ్ షార్ట్ టర్మ్ మెమరీ (LSTM)
సాంప్రదాయ RNNల ప్రధాన సమస్యలలో ఒకటి **వానిషింగ్ గ్రాడియెంట్స్** సమస్య. RNNలు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్‌లో ఎండ్-టు-ఎండ్ శిక్షణ పొందడం వలన, మొదటి లేయర్లకు లోపం సరిగ్గా చేరడం కష్టమవుతుంది, అందువల్ల నెట్‌వర్క్ దూర టోకెన్ల మధ్య సంబంధాలు నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **స్పష్ట స్థితి నిర్వహణ**ను ప్రవేశపెట్టడం, దీనికి **గేట్స్** ఉపయోగిస్తారు. ఈ తరహా రెండు ప్రసిద్ధ ఆర్కిటెక్చర్లు ఉన్నాయి: **లాంగ్ షార్ట్ టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU).
![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)
> చిత్రం మూలం TBD
LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పడింది, కానీ రెండు స్థితులు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్థితి C మరియు హిడెన్ వెక్టర్ H. ప్రతి యూనిట్‌లో, హిడెన్ వెక్టర్ H<sub>i</sub>ను ఇన్‌పుట్ X<sub>i</sub>తో కలిపి, అవి **గేట్స్** ద్వారా స్థితి Cపై నియంత్రణ చేస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ ఉన్న న్యూరల్ నెట్‌వర్క్ (ఫలితం [0,1] పరిధిలో ఉంటుంది), ఇది స్థితి వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. ఈ గేట్స్ (చిత్రంలో ఎడమ నుండి కుడి వైపు):
* **ఫార్గెట్ గేట్** హిడెన్ వెక్టర్ తీసుకుని, స్థితి Cలోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.
* **ఇన్‌పుట్ గేట్** ఇన్‌పుట్ మరియు హిడెన్ వెక్టర్ల నుండి సమాచారం తీసుకుని, దాన్ని స్థితిలో చేర్చుతుంది.
* **అవుట్‌పుట్ గేట్** స్థితిని *tanh* యాక్టివేషన్‌తో లీనియర్ లేయర్ ద్వారా మార్చి, హిడెన్ వెక్టర్ H<sub>i</sub> ఉపయోగించి దాని కొన్ని భాగాలను ఎంచుకుని కొత్త స్థితి C<sub>i+1</sub>ని ఉత్పత్తి చేస్తుంది.
స్థితి Cలోని భాగాలు కొన్ని ఫ్లాగ్‌లాగా భావించవచ్చు, అవి ఆన్ లేదా ఆఫ్ చేయవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వచ్చినప్పుడు, అది మహిళా పాత్రకు సంబంధించినదని భావించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు ఫ్లాగ్‌ను ఎత్తవచ్చు. తరువాత *and Tom* వంటి పదాలు వచ్చినప్పుడు, బహువచన నామవాచకం ఉన్నట్లు ఫ్లాగ్‌ను ఎత్తవచ్చు. ఈ విధంగా స్థితిని నియంత్రించడం ద్వారా వాక్య భాగాల వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.
> ✅ LSTM అంతర్గతాలను అర్థం చేసుకోవడానికి అద్భుతమైన వనరు ఈ గొప్ప వ్యాసం [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.
## బిడైరెక్షనల్ మరియు మల్టిలేయర్ RNNలు
మేము ఒక దిశలో పనిచేసే రికరెంట్ నెట్‌వర్క్స్ గురించి చర్చించాము, అంటే సీక్వెన్స్ ప్రారంభం నుండి చివర వరకు. ఇది సహజంగా అనిపిస్తుంది, ఎందుకంటే మనం చదవడం మరియు మాట్లాడే విధానం ఇలానే ఉంటుంది. అయితే, అనేక ప్రాక్టికల్ సందర్భాల్లో ఇన్‌పుట్ సీక్వెన్స్‌కు యాదృచ్ఛిక ప్రాప్తి ఉన్నప్పుడు, రికరెంట్ గణనను రెండు దిశలలో నడపడం మంచిది. ఇలాంటి నెట్‌వర్క్స్‌ను **బిడైరెక్షనల్** RNNలు అంటారు. బిడైరెక్షనల్ నెట్‌వర్క్‌తో పని చేయడానికి, ప్రతి దిశకు ఒక హిడెన్ స్థితి వెక్టర్ అవసరం.
రికరెంట్ నెట్‌వర్క్, ఒక దిశలోనైనా లేదా బిడైరెక్షనల్‌గా ఉన్నా, సీక్వెన్స్‌లోని కొన్ని నమూనాలను పట్టుకుని, వాటిని స్థితి వెక్టర్‌లో నిల్వ చేయగలదు లేదా అవుట్‌పుట్‌గా పంపగలదు. కాంవల్యూషనల్ నెట్‌వర్క్స్ లాగా, మొదటి లేయర్ నుండి తీసుకున్న తక్కువ స్థాయి నమూనాలపై ఆధారపడి, మరొక రికరెంట్ లేయర్‌ను నిర్మించి, ఉన్నత స్థాయి నమూనాలను పట్టుకోవచ్చు. దీని ద్వారా **మల్టిలేయర్ RNN** అనే భావన వస్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్స్ కలిగి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్ తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపబడుతుంది.
![Image showing a Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.te.jpg)
*చిత్రం [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి, ఫెర్నాండో లోపెజ్ రచన*
## ✍️ వ్యాయామాలు: ఎంబెడ్డింగ్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో RNNలు](RNNPyTorch.ipynb)
* [TensorFlowతో RNNలు](RNNTF.ipynb)
## ముగింపు
ఈ యూనిట్‌లో, RNNలు సీక్వెన్స్ క్లాసిఫికేషన్‌కు ఉపయోగించవచ్చని చూశాము, కానీ వాస్తవానికి, అవి టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం మరియు మరిన్ని పనులను నిర్వహించగలవు. ఆ పనులను తదుపరి యూనిట్‌లో పరిశీలిస్తాము.
## 🚀 సవాలు
LSTMల గురించి కొంత సాహిత్యం చదవండి మరియు వాటి అనువర్తనాలను పరిశీలించండి:
- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf)
- [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf)
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/32)
## సమీక్ష & స్వీయ అధ్యయనం
- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రచన.
## [అసైన్‌మెంట్: నోట్బుక్స్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,485 +1,485 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# రికరెంట్ న్యూరల్ నెట్‌వర్క్స్\n",
"\n",
"మునుపటి మాడ్యూల్‌లో, మేము టెక్స్ట్ యొక్క సమృద్ధి సారాంశ ప్రతినిధులను ఉపయోగించి, ఎంబెడ్డింగ్స్ పై ఒక సాదా లీనియర్ క్లాసిఫయర్‌ను ఉపయోగించాము. ఈ ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకోవడమే చేస్తుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ పై సమగ్రత ఆపరేషన్ మూల టెక్స్ట్ నుండి ఈ సమాచారాన్ని తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని మోడల్ చేయలేకపోవడం వలన, అవి టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.\n",
"\n",
"టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మేము మరో న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్‌ను ఉపయోగించాలి, దీనిని **రికరెంట్ న్యూరల్ నెట్‌వర్క్** లేదా RNN అంటారు. RNNలో, మేము మా వాక్యాన్ని ఒక్కో చిహ్నం ద్వారా నెట్‌వర్క్‌లో పంపుతాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాతి చిహ్నంతో మళ్లీ నెట్‌వర్క్‌కు పంపుతాము.\n",
"\n",
"<img alt=\"RNN\" src=\"../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.te.png\" width=\"60%\"/>\n",
"\n",
"ఇన్‌పుట్ టోకెన్ల సీక్వెన్స్ $X_0,\\dots,X_n$ ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టించి, బ్యాక్ ప్రొపగేషన్ ఉపయోగించి ఈ సీక్వెన్స్‌ను ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ ఒక జంట $(X_i,S_i)$ని ఇన్‌పుట్‌గా తీసుకుని, $S_{i+1}$ని ఫలితంగా ఉత్పత్తి చేస్తుంది. తుది స్థితి $S_n$ లేదా అవుట్‌పుట్ $X_n$ లీనియర్ క్లాసిఫయర్‌లోకి వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి, మరియు ఒకే బ్యాక్ ప్రొపగేషన్ పాస్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.\n",
"\n",
"స్థితి వెక్టర్లు $S_0,\\dots,S_n$ నెట్‌వర్క్ ద్వారా పంపబడినందున, ఇది పదాల మధ్య క్రమబద్ధమైన ఆధారితత్వాలను నేర్చుకోగలదు. ఉదాహరణకు, వాక్యంలో *not* అనే పదం ఎక్కడైనా వస్తే, అది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నిరాకరించడానికి నేర్చుకోవచ్చు, దీని ఫలితంగా నిరాకరణ (negation) జరుగుతుంది.\n",
"\n",
"> చిత్రంలో ఉన్న అన్ని RNN బ్లాక్స్ బరువులు పంచుకుంటున్నందున, అదే చిత్రాన్ని ఒక బ్లాక్ (కుడి వైపు)గా, రికరెంట్ ఫీడ్బ్యాక్ లూప్‌తో ప్రాతినిధ్యం చేయవచ్చు, ఇది నెట్‌వర్క్ అవుట్‌పుట్ స్థితిని మళ్లీ ఇన్‌పుట్‌కు పంపుతుంది.\n",
"\n",
"రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ మా న్యూస్ డేటాసెట్‌ను ఎలా వర్గీకరించగలవో చూద్దాం.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"from torchnlp import *\n",
"train_dataset, test_dataset, classes, vocab = load_dataset()\n",
"vocab_size = len(vocab)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సింపుల్ RNN వర్గీకర్త\n",
"\n",
"సింపుల్ RNN సందర్భంలో, ప్రతి రికరెంట్ యూనిట్ ఒక సింపుల్ లీనియర్ నెట్‌వర్క్, ఇది కలిపిన ఇన్‌పుట్ వెక్టర్ మరియు స్టేట్ వెక్టర్‌ను తీసుకుని, కొత్త స్టేట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. PyTorch ఈ యూనిట్‌ను `RNNCell` క్లాస్‌తో ప్రాతినిధ్యం వహిస్తుంది, మరియు ఇలాంటి సెల్స్ నెట్‌వర్క్‌ను `RNN` లేయర్‌గా సూచిస్తుంది.\n",
"\n",
"ఒక RNN వర్గీకర్తను నిర్వచించడానికి, ముందుగా ఇన్‌పుట్ వోకాబ్యులరీ యొక్క డైమెన్షనాలిటీని తగ్గించడానికి ఎంబెడ్డింగ్ లేయర్‌ను ఉపయోగించి, దాని పై RNN లేయర్‌ను అమలు చేస్తాము:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"class RNNClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.rnn = torch.nn.RNN(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" x,h = self.rnn(x)\n",
" return self.fc(x.mean(dim=1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** సౌలభ్యానికి మేము ఇక్కడ శిక్షణ పొందని embedding లేయర్‌ను ఉపయోగిస్తున్నాము, కానీ మరింత మెరుగైన ఫలితాల కోసం మునుపటి యూనిట్‌లో వివరించినట్లుగా Word2Vec లేదా GloVe embeddings తో ప్రీ-ట్రెయిన్డ్ embedding లేయర్‌ను ఉపయోగించవచ్చు. మెరుగైన అర్థం కోసం, మీరు ఈ కోడ్‌ను ప్రీ-ట్రెయిన్డ్ embeddings తో పనిచేసేలా మార్చుకోవచ్చు.\n",
"\n",
"మన సందర్భంలో, మేము ప్యాడెడ్ డేటా లోడర్‌ను ఉపయోగిస్తాము, కాబట్టి ప్రతి బ్యాచ్‌లో ఒకే పొడవు ఉన్న ప్యాడెడ్ సీక్వెన్సుల సంఖ్య ఉంటుంది. RNN లేయర్ embedding టెన్సర్ల సీక్వెన్స్‌ను తీసుకుని, రెండు అవుట్పుట్లను ఉత్పత్తి చేస్తుంది: \n",
"* $x$ ప్రతి దశలో RNN సెల్ అవుట్పుట్ల సీక్వెన్స్ \n",
"* $h$ సీక్వెన్స్ చివరి అంశానికి సంబంధించిన తుది హిడెన్ స్టేట్\n",
"\n",
"తర్వాత, క్లాస్ సంఖ్యను పొందడానికి పూర్తి-కనెక్టెడ్ లీనియర్ క్లాసిఫయర్‌ను వర్తింపజేస్తాము.\n",
"\n",
"> **గమనిక:** RNNలను శిక్షణ ఇవ్వడం చాలా కష్టం, ఎందుకంటే ఒకసారి RNN సెల్స్ సీక్వెన్స్ పొడవు మేరకు అన్‌రోల్ చేయబడినప్పుడు, బ్యాక్ ప్రొపగేషన్‌లో పాల్గొనే లేయర్ల సంఖ్య చాలా ఎక్కువగా ఉంటుంది. అందువల్ల, చిన్న లెర్నింగ్ రేట్‌ను ఎంచుకోవాలి, మరియు మంచి ఫలితాలు పొందడానికి పెద్ద డేటాసెట్‌పై నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి. ఇది చాలా సమయం తీసుకోవచ్చు, కాబట్టి GPU ఉపయోగించడం మంచిది.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.3090625\n",
"6400: acc=0.38921875\n",
"9600: acc=0.4590625\n",
"12800: acc=0.511953125\n",
"16000: acc=0.5506875\n",
"19200: acc=0.57921875\n",
"22400: acc=0.6070089285714285\n",
"25600: acc=0.6304296875\n",
"28800: acc=0.6484027777777778\n",
"32000: acc=0.66509375\n",
"35200: acc=0.6790056818181818\n",
"38400: acc=0.6929166666666666\n",
"41600: acc=0.7035817307692308\n",
"44800: acc=0.7137276785714286\n",
"48000: acc=0.72225\n",
"51200: acc=0.73001953125\n",
"54400: acc=0.7372794117647059\n",
"57600: acc=0.7436631944444444\n",
"60800: acc=0.7503947368421052\n",
"64000: acc=0.75634375\n",
"67200: acc=0.7615773809523809\n",
"70400: acc=0.7662642045454545\n",
"73600: acc=0.7708423913043478\n",
"76800: acc=0.7751822916666666\n",
"80000: acc=0.7790625\n",
"83200: acc=0.7825\n",
"86400: acc=0.7858564814814815\n",
"89600: acc=0.7890513392857142\n",
"92800: acc=0.7920474137931034\n",
"96000: acc=0.7952708333333334\n",
"99200: acc=0.7982258064516129\n",
"102400: acc=0.80099609375\n",
"105600: acc=0.8037594696969697\n",
"108800: acc=0.8060569852941176\n"
]
}
],
"source": [
"train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, collate_fn=padify, shuffle=True)\n",
"net = RNNClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch(net,train_loader, lr=0.001)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## లాంగ్ షార్ట్ టర్మ్ మెమరీ (LSTM)\n",
"\n",
"సాంప్రదాయ RNNల ప్రధాన సమస్యలలో ఒకటి **వానిషింగ్ గ్రాడియెంట్స్** సమస్య. RNNలు ఒకే బ్యాక్-ప్రొపగేషన్ పాస్‌లో ఎండ్-టు-ఎండ్‌గా శిక్షణ పొందుతాయి కాబట్టి, నెట్‌వర్క్ మొదటి లేయర్లకు లోపం (ఎర్రర్)ను ప్రోపగేట్ చేయడంలో కష్టపడుతుంది, అందువల్ల నెట్‌వర్క్ దూర టోకెన్ల మధ్య సంబంధాలను నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **స్పష్టమైన స్టేట్ నిర్వహణ**ను ప్రవేశపెట్టడం, దీనికి ఉపయోగించే వాటిని **గేట్లు** అంటారు. ఈ రకమైన రెండు ప్రసిద్ధ ఆర్కిటెక్చర్లు ఉన్నాయి: **లాంగ్ షార్ట్ టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU).\n",
"\n",
"![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)\n",
"\n",
"LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పాటు చేయబడింది, కానీ రెండు స్టేట్లు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్టేట్ $c$, మరియు హిడెన్ వెక్టర్ $h$. ప్రతి యూనిట్ వద్ద, హిడెన్ వెక్టర్ $h_i$ ను ఇన్‌పుట్ $x_i$ తో కలిపి, అవి **గేట్ల** ద్వారా స్టేట్ $c$ పై ఏమి జరుగుతుందో నియంత్రిస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ (ఫలితం $[0,1]$ పరిధిలో ఉంటుంది) కలిగిన న్యూరల్ నెట్‌వర్క్, ఇది స్టేట్ వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. క్రింది గేట్లు ఉన్నాయి (పై చిత్రంలో ఎడమ నుండి కుడికి):\n",
"* **ఫార్గెట్ గేట్** హిడెన్ వెక్టర్ తీసుకుని, స్టేట్ $c$ లోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.\n",
"* **ఇన్‌పుట్ గేట్** ఇన్‌పుట్ మరియు హిడెన్ వెక్టర్ నుండి కొంత సమాచారం తీసుకుని, దాన్ని స్టేట్‌లో చేర్చుతుంది.\n",
"* **ఆుట్‌పుట్ గేట్** స్టేట్‌ను $\\tanh$ యాక్టివేషన్ ఉన్న లీనియర్ లేయర్ ద్వారా మార్చి, హిడెన్ వెక్టర్ $h_i$ ఉపయోగించి దాని కొన్ని భాగాలను ఎంచుకుని కొత్త స్టేట్ $c_{i+1}$ ను ఉత్పత్తి చేస్తుంది.\n",
"\n",
"స్టేట్ $c$ యొక్క భాగాలను ఆన్/ఆఫ్ చేయగల ఫ్లాగులుగా భావించవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వస్తే, అది మహిళా పాత్రకు సంబంధించినదని భావించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు స్టేట్‌లో ఫ్లాగ్ పెంచవచ్చు. తరువాత *and Tom* అనే పదబంధం వస్తే, బహువచన నామవాచకం ఉన్నట్లు ఫ్లాగ్ పెంచుతాము. ఈ విధంగా స్టేట్‌ను నియంత్రించడం ద్వారా వాక్య భాగాల వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.\n",
"\n",
"> **Note**: LSTM అంతర్గత నిర్మాణాన్ని అర్థం చేసుకోవడానికి అద్భుతమైన వనరు ఈ అద్భుతమైన వ్యాసం [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.\n",
"\n",
"LSTM సెల్ అంతర్గత నిర్మాణం క్లిష్టంగా కనిపించినప్పటికీ, PyTorch `LSTMCell` క్లాస్‌లో ఈ అమలును దాచివేస్తుంది, మరియు మొత్తం LSTM లేయర్‌ను సూచించడానికి `LSTM` ఆబ్జెక్ట్‌ను అందిస్తుంది. కాబట్టి, LSTM క్లాసిఫయర్ అమలు మేము పైగా చూసిన సాదా RNNతో చాలా సమానంగా ఉంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class LSTMClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.embedding.weight.data = torch.randn_like(self.embedding.weight.data)-0.5\n",
" self.rnn = torch.nn.LSTM(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" x,(h,c) = self.rnn(x)\n",
" return self.fc(h[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మన నెట్‌వర్క్‌ను శిక్షణ ఇవ్వడం ప్రారంభిద్దాం. LSTM శిక్షణ కూడా చాలా మందగించవచ్చు, మరియు శిక్షణ ప్రారంభంలో మీరు ఖచ్చితత్వంలో పెద్ద పెరుగుదల చూడకపోవచ్చు. అలాగే, మీరు శిక్షణ వేగం సరైనదిగా ఉండేలా, మరియు మెమరీ వృథా కాకుండా ఉండేలా `lr` లెర్నింగ్ రేట్ పారామీటర్‌తో ప్రయోగాలు చేయవలసి ఉండవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.259375\n",
"6400: acc=0.25859375\n",
"9600: acc=0.26177083333333334\n",
"12800: acc=0.2784375\n",
"16000: acc=0.313\n",
"19200: acc=0.3528645833333333\n",
"22400: acc=0.3965625\n",
"25600: acc=0.4385546875\n",
"28800: acc=0.4752777777777778\n",
"32000: acc=0.505375\n",
"35200: acc=0.5326704545454546\n",
"38400: acc=0.5557552083333334\n",
"41600: acc=0.5760817307692307\n",
"44800: acc=0.5954910714285714\n",
"48000: acc=0.6118333333333333\n",
"51200: acc=0.62681640625\n",
"54400: acc=0.6404779411764706\n",
"57600: acc=0.6520138888888889\n",
"60800: acc=0.662828947368421\n",
"64000: acc=0.673546875\n",
"67200: acc=0.6831547619047619\n",
"70400: acc=0.6917897727272727\n",
"73600: acc=0.6997146739130434\n",
"76800: acc=0.707109375\n",
"80000: acc=0.714075\n",
"83200: acc=0.7209134615384616\n",
"86400: acc=0.727037037037037\n",
"89600: acc=0.7326674107142858\n",
"92800: acc=0.7379633620689655\n",
"96000: acc=0.7433645833333333\n",
"99200: acc=0.7479032258064516\n",
"102400: acc=0.752119140625\n",
"105600: acc=0.7562405303030303\n",
"108800: acc=0.76015625\n",
"112000: acc=0.7641339285714286\n",
"115200: acc=0.7677777777777778\n",
"118400: acc=0.7711233108108108\n"
]
},
{
"data": {
"text/plain": [
"(0.03487814127604167, 0.7728)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net = LSTMClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch(net,train_loader, lr=0.001)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ప్యాక్ చేసిన సీక్వెన్సులు\n",
"\n",
"మన ఉదాహరణలో, మినీబ్యాచ్‌లోని అన్ని సీక్వెన్సులను జీరో వెక్టర్లతో ప్యాడ్ చేయాల్సి వచ్చింది. ఇది కొంత మెమరీ వృథా చేస్తుంది, కానీ RNNల విషయంలో, ప్యాడ్ చేసిన ఇన్‌పుట్ అంశాల కోసం అదనపు RNN సెల్స్ సృష్టించడం మరింత సమస్య, అవి ట్రైనింగ్‌లో పాల్గొంటాయి కానీ ముఖ్యమైన ఇన్‌పుట్ సమాచారం తీసుకోవు. నిజమైన సీక్వెన్స్ పరిమాణానికి మాత్రమే RNNను ట్రైన్ చేయడం చాలా మంచిది.\n",
"\n",
"అందుకోసం, PyTorchలో ప్యాడ్ చేసిన సీక్వెన్స్ నిల్వ కోసం ప్రత్యేక ఫార్మాట్ పరిచయం చేయబడింది. మనకు ఇన్‌పుట్ ప్యాడ్ చేసిన మినీబ్యాచ్ ఇలా ఉందని అనుకుందాం:\n",
"```\n",
"[[1,2,3,4,5],\n",
" [6,7,8,0,0],\n",
" [9,0,0,0,0]]\n",
"```\n",
"ఇక్కడ 0 ప్యాడ్ చేసిన విలువలను సూచిస్తుంది, మరియు ఇన్‌పుట్ సీక్వెన్సుల అసలు పొడవు వెక్టర్ `[5,3,1]`.\n",
"\n",
"ప్యాడ్ చేసిన సీక్వెన్స్‌తో సమర్థవంతంగా RNNను ట్రైన్ చేయడానికి, మొదట పెద్ద మినీబ్యాచ్ (`[1,6,9]`)తో మొదటి RNN సెల్స్ గ్రూప్‌ను ట్రైన్ చేయడం ప్రారంభించాలి, కానీ మూడవ సీక్వెన్స్ ప్రాసెసింగ్‌ను ఆపి, తక్కువ మినీబ్యాచ్‌లతో (`[2,7]`, `[3,8]`) ట్రైనింగ్ కొనసాగించాలి, ఇలా కొనసాగుతుంది. అందువల్ల, ప్యాక్ చేసిన సీక్వెన్స్ ఒక వెక్టర్‌గా ప్రాతినిధ్యం వహిస్తుంది - మన కేసులో `[1,6,9,2,7,3,8,4,5]`, మరియు పొడవు వెక్టర్ (`[5,3,1]`), వీటితో మేము అసలు ప్యాడ్ చేసిన మినీబ్యాచ్‌ను సులభంగా పునఃసృష్టించవచ్చు.\n",
"\n",
"ప్యాక్ చేసిన సీక్వెన్స్ ఉత్పత్తి చేయడానికి, `torch.nn.utils.rnn.pack_padded_sequence` ఫంక్షన్ ఉపయోగించవచ్చు. RNN, LSTM, GRU సహా అన్ని రికరెంట్ లేయర్లు ప్యాక్ చేసిన సీక్వెన్సులను ఇన్‌పుట్‌గా మద్దతు ఇస్తాయి, మరియు ప్యాక్ చేసిన అవుట్‌పుట్‌ను ఉత్పత్తి చేస్తాయి, దీన్ని `torch.nn.utils.rnn.pad_packed_sequence` ఉపయోగించి డీకోడ్ చేయవచ్చు.\n",
"\n",
"ప్యాక్ చేసిన సీక్వెన్స్ ఉత్పత్తి చేయడానికి, మేము పొడవు వెక్టర్‌ను నెట్‌వర్క్‌కు పంపాలి, అందుకే మినీబ్యాచ్‌లను సిద్ధం చేయడానికి వేరే ఫంక్షన్ అవసరం:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def pad_length(b):\n",
" # build vectorized sequence\n",
" v = [encode(x[1]) for x in b]\n",
" # compute max length of a sequence in this minibatch and length sequence itself\n",
" len_seq = list(map(len,v))\n",
" l = max(len_seq)\n",
" return ( # tuple of three tensors - labels, padded features, length sequence\n",
" torch.LongTensor([t[0]-1 for t in b]),\n",
" torch.stack([torch.nn.functional.pad(torch.tensor(t),(0,l-len(t)),mode='constant',value=0) for t in v]),\n",
" torch.tensor(len_seq)\n",
" )\n",
"\n",
"train_loader_len = torch.utils.data.DataLoader(train_dataset, batch_size=16, collate_fn=pad_length, shuffle=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"నిజమైన నెట్‌వర్క్ పై ఉన్న `LSTMClassifier` కి చాలా సమానంగా ఉంటుంది, కానీ `forward` పాస్ ప్యాడ్ చేసిన మినీబ్యాచ్ మరియు సీక్వెన్స్ పొడవుల వెక్టర్ రెండింటినీ అందుకుంటుంది. ఎంబెడ్డింగ్ లెక్కించిన తర్వాత, మేము ప్యాక్ చేసిన సీక్వెన్స్ లెక్కించి, దాన్ని LSTM లేయర్‌కు పంపించి, ఆ తర్వాత ఫలితాన్ని తిరిగి అన్‌ప్యాక్ చేస్తాము.\n",
"\n",
"> **Note**: మేము వాస్తవానికి అన్‌ప్యాక్ చేసిన ఫలితం `x` ను ఉపయోగించము, ఎందుకంటే తరువాతి లెక్కింపుల్లో మేము హిడెన్ లేయర్ల నుండి వచ్చిన అవుట్‌పుట్‌ను ఉపయోగిస్తాము. కాబట్టి, ఈ కోడ్ నుండి అన్‌ప్యాకింగ్‌ను పూర్తిగా తీసివేయవచ్చు. దీన్ని ఇక్కడ ఉంచిన కారణం, మీరు ఈ కోడ్‌ను సులభంగా మార్చుకోవడానికి, అవసరమైతే నెట్‌వర్క్ అవుట్‌పుట్‌ను తదుపరి లెక్కింపుల్లో ఉపయోగించడానికి.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"class LSTMPackClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.embedding.weight.data = torch.randn_like(self.embedding.weight.data)-0.5\n",
" self.rnn = torch.nn.LSTM(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x, lengths):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" pad_x = torch.nn.utils.rnn.pack_padded_sequence(x,lengths,batch_first=True,enforce_sorted=False)\n",
" pad_x,(h,c) = self.rnn(pad_x)\n",
" x, _ = torch.nn.utils.rnn.pad_packed_sequence(pad_x,batch_first=True)\n",
" return self.fc(h[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు శిక్షణ ప్రారంభిద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.285625\n",
"6400: acc=0.33359375\n",
"9600: acc=0.3876041666666667\n",
"12800: acc=0.44078125\n",
"16000: acc=0.4825\n",
"19200: acc=0.5235416666666667\n",
"22400: acc=0.5559821428571429\n",
"25600: acc=0.58609375\n",
"28800: acc=0.6116666666666667\n",
"32000: acc=0.63340625\n",
"35200: acc=0.6525284090909091\n",
"38400: acc=0.668515625\n",
"41600: acc=0.6822596153846154\n",
"44800: acc=0.6948214285714286\n",
"48000: acc=0.7052708333333333\n",
"51200: acc=0.71521484375\n",
"54400: acc=0.7239889705882353\n",
"57600: acc=0.7315277777777778\n",
"60800: acc=0.7388486842105263\n",
"64000: acc=0.74571875\n",
"67200: acc=0.7518303571428572\n",
"70400: acc=0.7576988636363636\n",
"73600: acc=0.7628940217391305\n",
"76800: acc=0.7681510416666667\n",
"80000: acc=0.7728125\n",
"83200: acc=0.7772235576923077\n",
"86400: acc=0.7815393518518519\n",
"89600: acc=0.7857700892857142\n",
"92800: acc=0.7895043103448276\n",
"96000: acc=0.7930520833333333\n",
"99200: acc=0.7959072580645161\n",
"102400: acc=0.798994140625\n",
"105600: acc=0.802064393939394\n",
"108800: acc=0.8051378676470589\n",
"112000: acc=0.8077857142857143\n",
"115200: acc=0.8104600694444445\n",
"118400: acc=0.8128293918918919\n"
]
},
{
"data": {
"text/plain": [
"(0.029785829671223958, 0.8138166666666666)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net = LSTMPackClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch_emb(net,train_loader_len, lr=0.001,use_pack_sequence=True)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** మీరు శిక్షణ ఫంక్షన్‌కు పంపించే `use_pack_sequence` పేరామితిని గమనించవచ్చు. ప్రస్తుతం, `pack_padded_sequence` ఫంక్షన్‌కు length sequence టెన్సర్ CPU డివైస్‌పై ఉండాలి, అందువల్ల శిక్షణ ఫంక్షన్ శిక్షణ సమయంలో length sequence డేటాను GPUకి తరలించకుండా ఉండాలి. మీరు [`torchnlp.py`](../../../../../lessons/5-NLP/16-RNN/torchnlp.py) ఫైల్‌లోని `train_emb` ఫంక్షన్ అమలును చూడవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ద్విముఖి మరియు బహుళస్థాయి RNNలు\n",
"\n",
"మన ఉదాహరణల్లో, అన్ని రికరెంట్ నెట్‌వర్క్లు ఒక దిశలో పనిచేశాయి, ఒక సీక్వెన్స్ ప్రారంభం నుండి చివర వరకు. ఇది సహజంగా కనిపిస్తుంది, ఎందుకంటే ఇది మనం చదవడం మరియు మాట్లాడే మాట వినడం విధానానికి సమానంగా ఉంటుంది. అయితే, అనేక ప్రాక్టికల్ సందర్భాల్లో మనకు ఇన్‌పుట్ సీక్వెన్స్‌కు యాదృచ్ఛిక ప్రాప్యత ఉండగలిగితే, రికరెంట్ గణనను రెండు దిశలలోనూ నడపడం అర్థం కావచ్చు. ఇలాంటి నెట్‌వర్క్లు **ద్విముఖి** RNNలు అని పిలవబడతాయి, మరియు అవి RNN/LSTM/GRU కన్‌స్ట్రక్టర్‌కు `bidirectional=True` పారామీటర్‌ను ఇవ్వడం ద్వారా సృష్టించవచ్చు.\n",
"\n",
"ద్విముఖి నెట్‌వర్క్‌ను నిర్వహించేటప్పుడు, ప్రతి దిశకు ఒకదాని కోసం రెండు హిడెన్ స్టేట్ వెక్టార్లు అవసరం అవుతాయి. PyTorch ఆ వెక్టార్లను రెండు రెట్లు పెద్ద పరిమాణం గల ఒకే వెక్టర్‌గా ఎన్‌కోడ్ చేస్తుంది, ఇది చాలా సౌకర్యవంతం, ఎందుకంటే మీరు సాధారణంగా ఫలిత హిడెన్ స్టేట్‌ను ఫుల్-కనెక్టెడ్ లీనియర్ లేయర్‌కు పంపుతారు, కాబట్టి లేయర్ సృష్టించే సమయంలో ఈ పరిమాణం పెరుగుదలని పరిగణలోకి తీసుకోవాలి.\n",
"\n",
"రికరెంట్ నెట్‌వర్క్, ఒక దిశలోనైనా లేదా ద్విముఖి అయినా, ఒక సీక్వెన్స్‌లోని నిర్దిష్ట నమూనాలను పట్టుకుంటుంది, వాటిని స్టేట్ వెక్టర్‌లో నిల్వ చేయగలదు లేదా అవుట్‌పుట్‌గా పంపగలదు. కన్వల్యూషనల్ నెట్‌వర్క్ల లాగా, మొదటి లేయర్ ద్వారా తీసుకున్న తక్కువ స్థాయి నమూనాలపై ఆధారపడి ఉన్నత స్థాయి నమూనాలను పట్టుకోవడానికి మళ్ళీ మరో రికరెంట్ లేయర్‌ను నిర్మించవచ్చు. ఇది మనల్ని **బహుళస్థాయి RNN** అనే భావనకు తీసుకువెళ్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్లతో కూడి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్‌ను తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపుతారు.\n",
"\n",
"![బహుళస్థాయి లాంగ్-షార్ట్-టర్మ్-మెమరీ RNNని చూపించే చిత్రం](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.te.jpg)\n",
"\n",
"*ఫెర్నాండో లోపెజ్ రాసిన [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి చిత్రం*\n",
"\n",
"PyTorch ఇలాంటి నెట్‌వర్క్లను సులభంగా నిర్మించడానికి సహాయపడుతుంది, ఎందుకంటే మీరు కేవలం RNN/LSTM/GRU కన్‌స్ట్రక్టర్‌కు `num_layers` పారామీటర్‌ను ఇవ్వడం ద్వారా అనేక రికరెన్స్ లేయర్లను ఆటోమేటిక్‌గా నిర్మించవచ్చు. దీని అర్థం హిడెన్/స్టేట్ వెక్టర్ పరిమాణం కూడా అనుపాతంగా పెరుగుతుంది, కాబట్టి రికరెంట్ లేయర్ల అవుట్‌పుట్‌ను నిర్వహించే సమయంలో దీన్ని పరిగణలోకి తీసుకోవాలి.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఇతర పనుల కోసం RNNలు\n",
"\n",
"ఈ యూనిట్‌లో, RNNలు సీక్వెన్స్ వర్గీకరణ కోసం ఉపయోగించవచ్చని చూశాము, కానీ వాస్తవానికి, అవి టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం మరియు మరిన్ని వంటి అనేక ఇతర పనులను నిర్వహించగలవు. ఆ పనులను మేము తదుపరి యూనిట్‌లో పరిశీలిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "522ee52ae3d5ae933e283286254e9a55",
"translation_date": "2025-11-26T02:00:03+00:00",
"source_file": "lessons/5-NLP/16-RNN/RNNPyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# రికరెంట్ న్యూరల్ నెట్‌వర్క్స్\n",
"\n",
"మునుపటి మాడ్యూల్‌లో, మేము టెక్స్ట్ యొక్క సమృద్ధి సారాంశ ప్రతినిధులను ఉపయోగించి, ఎంబెడ్డింగ్స్ పై ఒక సాదా లీనియర్ క్లాసిఫయర్‌ను ఉపయోగించాము. ఈ ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకోవడమే చేస్తుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ పై సమగ్రత ఆపరేషన్ మూల టెక్స్ట్ నుండి ఈ సమాచారాన్ని తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని మోడల్ చేయలేకపోవడం వలన, అవి టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.\n",
"\n",
"టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మేము మరో న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్‌ను ఉపయోగించాలి, దీనిని **రికరెంట్ న్యూరల్ నెట్‌వర్క్** లేదా RNN అంటారు. RNNలో, మేము మా వాక్యాన్ని ఒక్కో చిహ్నం ద్వారా నెట్‌వర్క్‌లో పంపుతాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాతి చిహ్నంతో మళ్లీ నెట్‌వర్క్‌కు పంపుతాము.\n",
"\n",
"<img alt=\"RNN\" src=\"../../../../../translated_images/rnn.27f5c29c53d727b5.te.png\" width=\"60%\"/>\n",
"\n",
"ఇన్‌పుట్ టోకెన్ల సీక్వెన్స్ $X_0,\\dots,X_n$ ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టించి, బ్యాక్ ప్రొపగేషన్ ఉపయోగించి ఈ సీక్వెన్స్‌ను ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ ఒక జంట $(X_i,S_i)$ని ఇన్‌పుట్‌గా తీసుకుని, $S_{i+1}$ని ఫలితంగా ఉత్పత్తి చేస్తుంది. తుది స్థితి $S_n$ లేదా అవుట్‌పుట్ $X_n$ లీనియర్ క్లాసిఫయర్‌లోకి వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి, మరియు ఒకే బ్యాక్ ప్రొపగేషన్ పాస్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.\n",
"\n",
"స్థితి వెక్టర్లు $S_0,\\dots,S_n$ నెట్‌వర్క్ ద్వారా పంపబడినందున, ఇది పదాల మధ్య క్రమబద్ధమైన ఆధారితత్వాలను నేర్చుకోగలదు. ఉదాహరణకు, వాక్యంలో *not* అనే పదం ఎక్కడైనా వస్తే, అది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నిరాకరించడానికి నేర్చుకోవచ్చు, దీని ఫలితంగా నిరాకరణ (negation) జరుగుతుంది.\n",
"\n",
"> చిత్రంలో ఉన్న అన్ని RNN బ్లాక్స్ బరువులు పంచుకుంటున్నందున, అదే చిత్రాన్ని ఒక బ్లాక్ (కుడి వైపు)గా, రికరెంట్ ఫీడ్బ్యాక్ లూప్‌తో ప్రాతినిధ్యం చేయవచ్చు, ఇది నెట్‌వర్క్ అవుట్‌పుట్ స్థితిని మళ్లీ ఇన్‌పుట్‌కు పంపుతుంది.\n",
"\n",
"రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ మా న్యూస్ డేటాసెట్‌ను ఎలా వర్గీకరించగలవో చూద్దాం.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"from torchnlp import *\n",
"train_dataset, test_dataset, classes, vocab = load_dataset()\n",
"vocab_size = len(vocab)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సింపుల్ RNN వర్గీకర్త\n",
"\n",
"సింపుల్ RNN సందర్భంలో, ప్రతి రికరెంట్ యూనిట్ ఒక సింపుల్ లీనియర్ నెట్‌వర్క్, ఇది కలిపిన ఇన్‌పుట్ వెక్టర్ మరియు స్టేట్ వెక్టర్‌ను తీసుకుని, కొత్త స్టేట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. PyTorch ఈ యూనిట్‌ను `RNNCell` క్లాస్‌తో ప్రాతినిధ్యం వహిస్తుంది, మరియు ఇలాంటి సెల్స్ నెట్‌వర్క్‌ను `RNN` లేయర్‌గా సూచిస్తుంది.\n",
"\n",
"ఒక RNN వర్గీకర్తను నిర్వచించడానికి, ముందుగా ఇన్‌పుట్ వోకాబ్యులరీ యొక్క డైమెన్షనాలిటీని తగ్గించడానికి ఎంబెడ్డింగ్ లేయర్‌ను ఉపయోగించి, దాని పై RNN లేయర్‌ను అమలు చేస్తాము:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"class RNNClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.rnn = torch.nn.RNN(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" x,h = self.rnn(x)\n",
" return self.fc(x.mean(dim=1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** సౌలభ్యానికి మేము ఇక్కడ శిక్షణ పొందని embedding లేయర్‌ను ఉపయోగిస్తున్నాము, కానీ మరింత మెరుగైన ఫలితాల కోసం మునుపటి యూనిట్‌లో వివరించినట్లుగా Word2Vec లేదా GloVe embeddings తో ప్రీ-ట్రెయిన్డ్ embedding లేయర్‌ను ఉపయోగించవచ్చు. మెరుగైన అర్థం కోసం, మీరు ఈ కోడ్‌ను ప్రీ-ట్రెయిన్డ్ embeddings తో పనిచేసేలా మార్చుకోవచ్చు.\n",
"\n",
"మన సందర్భంలో, మేము ప్యాడెడ్ డేటా లోడర్‌ను ఉపయోగిస్తాము, కాబట్టి ప్రతి బ్యాచ్‌లో ఒకే పొడవు ఉన్న ప్యాడెడ్ సీక్వెన్సుల సంఖ్య ఉంటుంది. RNN లేయర్ embedding టెన్సర్ల సీక్వెన్స్‌ను తీసుకుని, రెండు అవుట్పుట్లను ఉత్పత్తి చేస్తుంది: \n",
"* $x$ ప్రతి దశలో RNN సెల్ అవుట్పుట్ల సీక్వెన్స్ \n",
"* $h$ సీక్వెన్స్ చివరి అంశానికి సంబంధించిన తుది హిడెన్ స్టేట్\n",
"\n",
"తర్వాత, క్లాస్ సంఖ్యను పొందడానికి పూర్తి-కనెక్టెడ్ లీనియర్ క్లాసిఫయర్‌ను వర్తింపజేస్తాము.\n",
"\n",
"> **గమనిక:** RNNలను శిక్షణ ఇవ్వడం చాలా కష్టం, ఎందుకంటే ఒకసారి RNN సెల్స్ సీక్వెన్స్ పొడవు మేరకు అన్‌రోల్ చేయబడినప్పుడు, బ్యాక్ ప్రొపగేషన్‌లో పాల్గొనే లేయర్ల సంఖ్య చాలా ఎక్కువగా ఉంటుంది. అందువల్ల, చిన్న లెర్నింగ్ రేట్‌ను ఎంచుకోవాలి, మరియు మంచి ఫలితాలు పొందడానికి పెద్ద డేటాసెట్‌పై నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి. ఇది చాలా సమయం తీసుకోవచ్చు, కాబట్టి GPU ఉపయోగించడం మంచిది.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.3090625\n",
"6400: acc=0.38921875\n",
"9600: acc=0.4590625\n",
"12800: acc=0.511953125\n",
"16000: acc=0.5506875\n",
"19200: acc=0.57921875\n",
"22400: acc=0.6070089285714285\n",
"25600: acc=0.6304296875\n",
"28800: acc=0.6484027777777778\n",
"32000: acc=0.66509375\n",
"35200: acc=0.6790056818181818\n",
"38400: acc=0.6929166666666666\n",
"41600: acc=0.7035817307692308\n",
"44800: acc=0.7137276785714286\n",
"48000: acc=0.72225\n",
"51200: acc=0.73001953125\n",
"54400: acc=0.7372794117647059\n",
"57600: acc=0.7436631944444444\n",
"60800: acc=0.7503947368421052\n",
"64000: acc=0.75634375\n",
"67200: acc=0.7615773809523809\n",
"70400: acc=0.7662642045454545\n",
"73600: acc=0.7708423913043478\n",
"76800: acc=0.7751822916666666\n",
"80000: acc=0.7790625\n",
"83200: acc=0.7825\n",
"86400: acc=0.7858564814814815\n",
"89600: acc=0.7890513392857142\n",
"92800: acc=0.7920474137931034\n",
"96000: acc=0.7952708333333334\n",
"99200: acc=0.7982258064516129\n",
"102400: acc=0.80099609375\n",
"105600: acc=0.8037594696969697\n",
"108800: acc=0.8060569852941176\n"
]
}
],
"source": [
"train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, collate_fn=padify, shuffle=True)\n",
"net = RNNClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch(net,train_loader, lr=0.001)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## లాంగ్ షార్ట్ టర్మ్ మెమరీ (LSTM)\n",
"\n",
"సాంప్రదాయ RNNల ప్రధాన సమస్యలలో ఒకటి **వానిషింగ్ గ్రాడియెంట్స్** సమస్య. RNNలు ఒకే బ్యాక్-ప్రొపగేషన్ పాస్‌లో ఎండ్-టు-ఎండ్‌గా శిక్షణ పొందుతాయి కాబట్టి, నెట్‌వర్క్ మొదటి లేయర్లకు లోపం (ఎర్రర్)ను ప్రోపగేట్ చేయడంలో కష్టపడుతుంది, అందువల్ల నెట్‌వర్క్ దూర టోకెన్ల మధ్య సంబంధాలను నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **స్పష్టమైన స్టేట్ నిర్వహణ**ను ప్రవేశపెట్టడం, దీనికి ఉపయోగించే వాటిని **గేట్లు** అంటారు. ఈ రకమైన రెండు ప్రసిద్ధ ఆర్కిటెక్చర్లు ఉన్నాయి: **లాంగ్ షార్ట్ టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU).\n",
"\n",
"![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)\n",
"\n",
"LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పాటు చేయబడింది, కానీ రెండు స్టేట్లు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్టేట్ $c$, మరియు హిడెన్ వెక్టర్ $h$. ప్రతి యూనిట్ వద్ద, హిడెన్ వెక్టర్ $h_i$ ను ఇన్‌పుట్ $x_i$ తో కలిపి, అవి **గేట్ల** ద్వారా స్టేట్ $c$ పై ఏమి జరుగుతుందో నియంత్రిస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ (ఫలితం $[0,1]$ పరిధిలో ఉంటుంది) కలిగిన న్యూరల్ నెట్‌వర్క్, ఇది స్టేట్ వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. క్రింది గేట్లు ఉన్నాయి (పై చిత్రంలో ఎడమ నుండి కుడికి):\n",
"* **ఫార్గెట్ గేట్** హిడెన్ వెక్టర్ తీసుకుని, స్టేట్ $c$ లోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.\n",
"* **ఇన్‌పుట్ గేట్** ఇన్‌పుట్ మరియు హిడెన్ వెక్టర్ నుండి కొంత సమాచారం తీసుకుని, దాన్ని స్టేట్‌లో చేర్చుతుంది.\n",
"* **ఆుట్‌పుట్ గేట్** స్టేట్‌ను $\\tanh$ యాక్టివేషన్ ఉన్న లీనియర్ లేయర్ ద్వారా మార్చి, హిడెన్ వెక్టర్ $h_i$ ఉపయోగించి దాని కొన్ని భాగాలను ఎంచుకుని కొత్త స్టేట్ $c_{i+1}$ ను ఉత్పత్తి చేస్తుంది.\n",
"\n",
"స్టేట్ $c$ యొక్క భాగాలను ఆన్/ఆఫ్ చేయగల ఫ్లాగులుగా భావించవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వస్తే, అది మహిళా పాత్రకు సంబంధించినదని భావించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు స్టేట్‌లో ఫ్లాగ్ పెంచవచ్చు. తరువాత *and Tom* అనే పదబంధం వస్తే, బహువచన నామవాచకం ఉన్నట్లు ఫ్లాగ్ పెంచుతాము. ఈ విధంగా స్టేట్‌ను నియంత్రించడం ద్వారా వాక్య భాగాల వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.\n",
"\n",
"> **Note**: LSTM అంతర్గత నిర్మాణాన్ని అర్థం చేసుకోవడానికి అద్భుతమైన వనరు ఈ అద్భుతమైన వ్యాసం [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.\n",
"\n",
"LSTM సెల్ అంతర్గత నిర్మాణం క్లిష్టంగా కనిపించినప్పటికీ, PyTorch `LSTMCell` క్లాస్‌లో ఈ అమలును దాచివేస్తుంది, మరియు మొత్తం LSTM లేయర్‌ను సూచించడానికి `LSTM` ఆబ్జెక్ట్‌ను అందిస్తుంది. కాబట్టి, LSTM క్లాసిఫయర్ అమలు మేము పైగా చూసిన సాదా RNNతో చాలా సమానంగా ఉంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class LSTMClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.embedding.weight.data = torch.randn_like(self.embedding.weight.data)-0.5\n",
" self.rnn = torch.nn.LSTM(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" x,(h,c) = self.rnn(x)\n",
" return self.fc(h[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మన నెట్‌వర్క్‌ను శిక్షణ ఇవ్వడం ప్రారంభిద్దాం. LSTM శిక్షణ కూడా చాలా మందగించవచ్చు, మరియు శిక్షణ ప్రారంభంలో మీరు ఖచ్చితత్వంలో పెద్ద పెరుగుదల చూడకపోవచ్చు. అలాగే, మీరు శిక్షణ వేగం సరైనదిగా ఉండేలా, మరియు మెమరీ వృథా కాకుండా ఉండేలా `lr` లెర్నింగ్ రేట్ పారామీటర్‌తో ప్రయోగాలు చేయవలసి ఉండవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.259375\n",
"6400: acc=0.25859375\n",
"9600: acc=0.26177083333333334\n",
"12800: acc=0.2784375\n",
"16000: acc=0.313\n",
"19200: acc=0.3528645833333333\n",
"22400: acc=0.3965625\n",
"25600: acc=0.4385546875\n",
"28800: acc=0.4752777777777778\n",
"32000: acc=0.505375\n",
"35200: acc=0.5326704545454546\n",
"38400: acc=0.5557552083333334\n",
"41600: acc=0.5760817307692307\n",
"44800: acc=0.5954910714285714\n",
"48000: acc=0.6118333333333333\n",
"51200: acc=0.62681640625\n",
"54400: acc=0.6404779411764706\n",
"57600: acc=0.6520138888888889\n",
"60800: acc=0.662828947368421\n",
"64000: acc=0.673546875\n",
"67200: acc=0.6831547619047619\n",
"70400: acc=0.6917897727272727\n",
"73600: acc=0.6997146739130434\n",
"76800: acc=0.707109375\n",
"80000: acc=0.714075\n",
"83200: acc=0.7209134615384616\n",
"86400: acc=0.727037037037037\n",
"89600: acc=0.7326674107142858\n",
"92800: acc=0.7379633620689655\n",
"96000: acc=0.7433645833333333\n",
"99200: acc=0.7479032258064516\n",
"102400: acc=0.752119140625\n",
"105600: acc=0.7562405303030303\n",
"108800: acc=0.76015625\n",
"112000: acc=0.7641339285714286\n",
"115200: acc=0.7677777777777778\n",
"118400: acc=0.7711233108108108\n"
]
},
{
"data": {
"text/plain": [
"(0.03487814127604167, 0.7728)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net = LSTMClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch(net,train_loader, lr=0.001)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ప్యాక్ చేసిన సీక్వెన్సులు\n",
"\n",
"మన ఉదాహరణలో, మినీబ్యాచ్‌లోని అన్ని సీక్వెన్సులను జీరో వెక్టర్లతో ప్యాడ్ చేయాల్సి వచ్చింది. ఇది కొంత మెమరీ వృథా చేస్తుంది, కానీ RNNల విషయంలో, ప్యాడ్ చేసిన ఇన్‌పుట్ అంశాల కోసం అదనపు RNN సెల్స్ సృష్టించడం మరింత సమస్య, అవి ట్రైనింగ్‌లో పాల్గొంటాయి కానీ ముఖ్యమైన ఇన్‌పుట్ సమాచారం తీసుకోవు. నిజమైన సీక్వెన్స్ పరిమాణానికి మాత్రమే RNNను ట్రైన్ చేయడం చాలా మంచిది.\n",
"\n",
"అందుకోసం, PyTorchలో ప్యాడ్ చేసిన సీక్వెన్స్ నిల్వ కోసం ప్రత్యేక ఫార్మాట్ పరిచయం చేయబడింది. మనకు ఇన్‌పుట్ ప్యాడ్ చేసిన మినీబ్యాచ్ ఇలా ఉందని అనుకుందాం:\n",
"```\n",
"[[1,2,3,4,5],\n",
" [6,7,8,0,0],\n",
" [9,0,0,0,0]]\n",
"```\n",
"ఇక్కడ 0 ప్యాడ్ చేసిన విలువలను సూచిస్తుంది, మరియు ఇన్‌పుట్ సీక్వెన్సుల అసలు పొడవు వెక్టర్ `[5,3,1]`.\n",
"\n",
"ప్యాడ్ చేసిన సీక్వెన్స్‌తో సమర్థవంతంగా RNNను ట్రైన్ చేయడానికి, మొదట పెద్ద మినీబ్యాచ్ (`[1,6,9]`)తో మొదటి RNN సెల్స్ గ్రూప్‌ను ట్రైన్ చేయడం ప్రారంభించాలి, కానీ మూడవ సీక్వెన్స్ ప్రాసెసింగ్‌ను ఆపి, తక్కువ మినీబ్యాచ్‌లతో (`[2,7]`, `[3,8]`) ట్రైనింగ్ కొనసాగించాలి, ఇలా కొనసాగుతుంది. అందువల్ల, ప్యాక్ చేసిన సీక్వెన్స్ ఒక వెక్టర్‌గా ప్రాతినిధ్యం వహిస్తుంది - మన కేసులో `[1,6,9,2,7,3,8,4,5]`, మరియు పొడవు వెక్టర్ (`[5,3,1]`), వీటితో మేము అసలు ప్యాడ్ చేసిన మినీబ్యాచ్‌ను సులభంగా పునఃసృష్టించవచ్చు.\n",
"\n",
"ప్యాక్ చేసిన సీక్వెన్స్ ఉత్పత్తి చేయడానికి, `torch.nn.utils.rnn.pack_padded_sequence` ఫంక్షన్ ఉపయోగించవచ్చు. RNN, LSTM, GRU సహా అన్ని రికరెంట్ లేయర్లు ప్యాక్ చేసిన సీక్వెన్సులను ఇన్‌పుట్‌గా మద్దతు ఇస్తాయి, మరియు ప్యాక్ చేసిన అవుట్‌పుట్‌ను ఉత్పత్తి చేస్తాయి, దీన్ని `torch.nn.utils.rnn.pad_packed_sequence` ఉపయోగించి డీకోడ్ చేయవచ్చు.\n",
"\n",
"ప్యాక్ చేసిన సీక్వెన్స్ ఉత్పత్తి చేయడానికి, మేము పొడవు వెక్టర్‌ను నెట్‌వర్క్‌కు పంపాలి, అందుకే మినీబ్యాచ్‌లను సిద్ధం చేయడానికి వేరే ఫంక్షన్ అవసరం:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def pad_length(b):\n",
" # build vectorized sequence\n",
" v = [encode(x[1]) for x in b]\n",
" # compute max length of a sequence in this minibatch and length sequence itself\n",
" len_seq = list(map(len,v))\n",
" l = max(len_seq)\n",
" return ( # tuple of three tensors - labels, padded features, length sequence\n",
" torch.LongTensor([t[0]-1 for t in b]),\n",
" torch.stack([torch.nn.functional.pad(torch.tensor(t),(0,l-len(t)),mode='constant',value=0) for t in v]),\n",
" torch.tensor(len_seq)\n",
" )\n",
"\n",
"train_loader_len = torch.utils.data.DataLoader(train_dataset, batch_size=16, collate_fn=pad_length, shuffle=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"నిజమైన నెట్‌వర్క్ పై ఉన్న `LSTMClassifier` కి చాలా సమానంగా ఉంటుంది, కానీ `forward` పాస్ ప్యాడ్ చేసిన మినీబ్యాచ్ మరియు సీక్వెన్స్ పొడవుల వెక్టర్ రెండింటినీ అందుకుంటుంది. ఎంబెడ్డింగ్ లెక్కించిన తర్వాత, మేము ప్యాక్ చేసిన సీక్వెన్స్ లెక్కించి, దాన్ని LSTM లేయర్‌కు పంపించి, ఆ తర్వాత ఫలితాన్ని తిరిగి అన్‌ప్యాక్ చేస్తాము.\n",
"\n",
"> **Note**: మేము వాస్తవానికి అన్‌ప్యాక్ చేసిన ఫలితం `x` ను ఉపయోగించము, ఎందుకంటే తరువాతి లెక్కింపుల్లో మేము హిడెన్ లేయర్ల నుండి వచ్చిన అవుట్‌పుట్‌ను ఉపయోగిస్తాము. కాబట్టి, ఈ కోడ్ నుండి అన్‌ప్యాకింగ్‌ను పూర్తిగా తీసివేయవచ్చు. దీన్ని ఇక్కడ ఉంచిన కారణం, మీరు ఈ కోడ్‌ను సులభంగా మార్చుకోవడానికి, అవసరమైతే నెట్‌వర్క్ అవుట్‌పుట్‌ను తదుపరి లెక్కింపుల్లో ఉపయోగించడానికి.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"class LSTMPackClassifier(torch.nn.Module):\n",
" def __init__(self, vocab_size, embed_dim, hidden_dim, num_class):\n",
" super().__init__()\n",
" self.hidden_dim = hidden_dim\n",
" self.embedding = torch.nn.Embedding(vocab_size, embed_dim)\n",
" self.embedding.weight.data = torch.randn_like(self.embedding.weight.data)-0.5\n",
" self.rnn = torch.nn.LSTM(embed_dim,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, num_class)\n",
"\n",
" def forward(self, x, lengths):\n",
" batch_size = x.size(0)\n",
" x = self.embedding(x)\n",
" pad_x = torch.nn.utils.rnn.pack_padded_sequence(x,lengths,batch_first=True,enforce_sorted=False)\n",
" pad_x,(h,c) = self.rnn(pad_x)\n",
" x, _ = torch.nn.utils.rnn.pad_packed_sequence(pad_x,batch_first=True)\n",
" return self.fc(h[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు శిక్షణ ప్రారంభిద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3200: acc=0.285625\n",
"6400: acc=0.33359375\n",
"9600: acc=0.3876041666666667\n",
"12800: acc=0.44078125\n",
"16000: acc=0.4825\n",
"19200: acc=0.5235416666666667\n",
"22400: acc=0.5559821428571429\n",
"25600: acc=0.58609375\n",
"28800: acc=0.6116666666666667\n",
"32000: acc=0.63340625\n",
"35200: acc=0.6525284090909091\n",
"38400: acc=0.668515625\n",
"41600: acc=0.6822596153846154\n",
"44800: acc=0.6948214285714286\n",
"48000: acc=0.7052708333333333\n",
"51200: acc=0.71521484375\n",
"54400: acc=0.7239889705882353\n",
"57600: acc=0.7315277777777778\n",
"60800: acc=0.7388486842105263\n",
"64000: acc=0.74571875\n",
"67200: acc=0.7518303571428572\n",
"70400: acc=0.7576988636363636\n",
"73600: acc=0.7628940217391305\n",
"76800: acc=0.7681510416666667\n",
"80000: acc=0.7728125\n",
"83200: acc=0.7772235576923077\n",
"86400: acc=0.7815393518518519\n",
"89600: acc=0.7857700892857142\n",
"92800: acc=0.7895043103448276\n",
"96000: acc=0.7930520833333333\n",
"99200: acc=0.7959072580645161\n",
"102400: acc=0.798994140625\n",
"105600: acc=0.802064393939394\n",
"108800: acc=0.8051378676470589\n",
"112000: acc=0.8077857142857143\n",
"115200: acc=0.8104600694444445\n",
"118400: acc=0.8128293918918919\n"
]
},
{
"data": {
"text/plain": [
"(0.029785829671223958, 0.8138166666666666)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net = LSTMPackClassifier(vocab_size,64,32,len(classes)).to(device)\n",
"train_epoch_emb(net,train_loader_len, lr=0.001,use_pack_sequence=True)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** మీరు శిక్షణ ఫంక్షన్‌కు పంపించే `use_pack_sequence` పేరామితిని గమనించవచ్చు. ప్రస్తుతం, `pack_padded_sequence` ఫంక్షన్‌కు length sequence టెన్సర్ CPU డివైస్‌పై ఉండాలి, అందువల్ల శిక్షణ ఫంక్షన్ శిక్షణ సమయంలో length sequence డేటాను GPUకి తరలించకుండా ఉండాలి. మీరు [`torchnlp.py`](../../../../../lessons/5-NLP/16-RNN/torchnlp.py) ఫైల్‌లోని `train_emb` ఫంక్షన్ అమలును చూడవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ద్విముఖి మరియు బహుళస్థాయి RNNలు\n",
"\n",
"మన ఉదాహరణల్లో, అన్ని రికరెంట్ నెట్‌వర్క్లు ఒక దిశలో పనిచేశాయి, ఒక సీక్వెన్స్ ప్రారంభం నుండి చివర వరకు. ఇది సహజంగా కనిపిస్తుంది, ఎందుకంటే ఇది మనం చదవడం మరియు మాట్లాడే మాట వినడం విధానానికి సమానంగా ఉంటుంది. అయితే, అనేక ప్రాక్టికల్ సందర్భాల్లో మనకు ఇన్‌పుట్ సీక్వెన్స్‌కు యాదృచ్ఛిక ప్రాప్యత ఉండగలిగితే, రికరెంట్ గణనను రెండు దిశలలోనూ నడపడం అర్థం కావచ్చు. ఇలాంటి నెట్‌వర్క్లు **ద్విముఖి** RNNలు అని పిలవబడతాయి, మరియు అవి RNN/LSTM/GRU కన్‌స్ట్రక్టర్‌కు `bidirectional=True` పారామీటర్‌ను ఇవ్వడం ద్వారా సృష్టించవచ్చు.\n",
"\n",
"ద్విముఖి నెట్‌వర్క్‌ను నిర్వహించేటప్పుడు, ప్రతి దిశకు ఒకదాని కోసం రెండు హిడెన్ స్టేట్ వెక్టార్లు అవసరం అవుతాయి. PyTorch ఆ వెక్టార్లను రెండు రెట్లు పెద్ద పరిమాణం గల ఒకే వెక్టర్‌గా ఎన్‌కోడ్ చేస్తుంది, ఇది చాలా సౌకర్యవంతం, ఎందుకంటే మీరు సాధారణంగా ఫలిత హిడెన్ స్టేట్‌ను ఫుల్-కనెక్టెడ్ లీనియర్ లేయర్‌కు పంపుతారు, కాబట్టి లేయర్ సృష్టించే సమయంలో ఈ పరిమాణం పెరుగుదలని పరిగణలోకి తీసుకోవాలి.\n",
"\n",
"రికరెంట్ నెట్‌వర్క్, ఒక దిశలోనైనా లేదా ద్విముఖి అయినా, ఒక సీక్వెన్స్‌లోని నిర్దిష్ట నమూనాలను పట్టుకుంటుంది, వాటిని స్టేట్ వెక్టర్‌లో నిల్వ చేయగలదు లేదా అవుట్‌పుట్‌గా పంపగలదు. కన్వల్యూషనల్ నెట్‌వర్క్ల లాగా, మొదటి లేయర్ ద్వారా తీసుకున్న తక్కువ స్థాయి నమూనాలపై ఆధారపడి ఉన్నత స్థాయి నమూనాలను పట్టుకోవడానికి మళ్ళీ మరో రికరెంట్ లేయర్‌ను నిర్మించవచ్చు. ఇది మనల్ని **బహుళస్థాయి RNN** అనే భావనకు తీసుకువెళ్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్లతో కూడి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్‌ను తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపుతారు.\n",
"\n",
"![బహుళస్థాయి లాంగ్-షార్ట్-టర్మ్-మెమరీ RNNని చూపించే చిత్రం](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.te.jpg)\n",
"\n",
"*ఫెర్నాండో లోపెజ్ రాసిన [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి చిత్రం*\n",
"\n",
"PyTorch ఇలాంటి నెట్‌వర్క్లను సులభంగా నిర్మించడానికి సహాయపడుతుంది, ఎందుకంటే మీరు కేవలం RNN/LSTM/GRU కన్‌స్ట్రక్టర్‌కు `num_layers` పారామీటర్‌ను ఇవ్వడం ద్వారా అనేక రికరెన్స్ లేయర్లను ఆటోమేటిక్‌గా నిర్మించవచ్చు. దీని అర్థం హిడెన్/స్టేట్ వెక్టర్ పరిమాణం కూడా అనుపాతంగా పెరుగుతుంది, కాబట్టి రికరెంట్ లేయర్ల అవుట్‌పుట్‌ను నిర్వహించే సమయంలో దీన్ని పరిగణలోకి తీసుకోవాలి.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఇతర పనుల కోసం RNNలు\n",
"\n",
"ఈ యూనిట్‌లో, RNNలు సీక్వెన్స్ వర్గీకరణ కోసం ఉపయోగించవచ్చని చూశాము, కానీ వాస్తవానికి, అవి టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం మరియు మరిన్ని వంటి అనేక ఇతర పనులను నిర్వహించగలవు. ఆ పనులను మేము తదుపరి యూనిట్‌లో పరిశీలిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "522ee52ae3d5ae933e283286254e9a55",
"translation_date": "2025-11-26T02:00:03+00:00",
"source_file": "lessons/5-NLP/16-RNN/RNNPyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -1,462 +1,462 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# పునరావృత న్యూరల్ నెట్‌వర్క్స్\n",
"\n",
"మునుపటి మాడ్యూల్‌లో, మేము టెక్స్ట్ యొక్క సమృద్ధి సారాంశ ప్రతినిధులను కవర్ చేసాము. మనం ఉపయోగిస్తున్న ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకుంటుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ తరువాత జరిగే సమీకరణ ఆ సమాచారాన్ని మూల టెక్స్ట్ నుండి తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని ప్రతినిధ్యం చేయలేకపోవడం వలన, అవి టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.\n",
"\n",
"ఒక టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మనం **పునరావృత న్యూరల్ నెట్‌వర్క్** లేదా RNN అనే న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్‌ను ఉపయోగిస్తాము. RNN ఉపయోగించినప్పుడు, మన వాక్యాన్ని ఒక్కో టోకెన్‌గా నెట్‌వర్క్ ద్వారా పంపిస్తాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాత వచ్చే టోకెన్‌తో మళ్లీ నెట్‌వర్క్‌కు ఇస్తాము.\n",
"\n",
"![పునరావృత న్యూరల్ నెట్‌వర్క్ జనరేషన్ ఉదాహరణ చూపిస్తున్న చిత్రం.](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.te.png)\n",
"\n",
"ఇన్‌పుట్ సీక్వెన్స్ టోకెన్లు $X_0,\\dots,X_n$ ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టిస్తుంది, మరియు ఈ సీక్వెన్స్‌ను బ్యాక్‌ప్రొపగేషన్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ జంట $(X_i,S_i)$ని ఇన్‌పుట్‌గా తీసుకుని, $S_{i+1}$ని ఫలితంగా ఉత్పత్తి చేస్తుంది. చివరి స్థితి $S_n$ లేదా అవుట్‌పుట్ $Y_n$ లీనియర్ క్లాసిఫైయర్‌లోకి వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి, మరియు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్‌తో ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.\n",
"\n",
"> పై చిత్రంలో పునరావృత న్యూరల్ నెట్‌వర్క్‌ను విస్తరించిన రూపంలో (ఎడమవైపు) మరియు మరింత సంక్షిప్త పునరావృత ప్రాతినిధ్యంలో (కుడివైపు) చూపించారు. అన్ని RNN సెల్స్ ఒకే **పంచుకునే బరువులు** కలిగి ఉంటాయని గ్రహించడం ముఖ్యం.\n",
"\n",
"స్థితి వెక్టార్లు $S_0,\\dots,S_n$ నెట్‌వర్క్ ద్వారా పంపబడినందున, RNN పదాల మధ్య క్రమబద్ధమైన ఆధారితత్వాలను నేర్చుకోగలదు. ఉదాహరణకు, వాక్యంలో *not* అనే పదం ఎక్కడైనా వస్తే, అది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నిరాకరించడాన్ని నేర్చుకోవచ్చు.\n",
"\n",
"ప్రతి RNN సెల్‌లో రెండు బరువు మ్యాట్రిక్సులు ఉంటాయి: $W_H$ మరియు $W_I$, మరియు బైయాస్ $b$. ప్రతి RNN దశలో, ఇన్‌పుట్ $X_i$ మరియు ఇన్‌పుట్ స్థితి $S_i$ ఇచ్చినప్పుడు, అవుట్‌పుట్ స్థితి $S_{i+1} = f(W_H\\times S_i + W_I\\times X_i+b)$గా లెక్కించబడుతుంది, ఇక్కడ $f$ ఒక యాక్టివేషన్ ఫంక్షన్ (సాధారణంగా $\\tanh$).\n",
"\n",
"> టెక్స్ట్ జనరేషన్ (మనం తదుపరి యూనిట్‌లో కవర్ చేయబోతున్నది) లేదా మెషీన్ అనువాదం వంటి సమస్యల కోసం, ప్రతి RNN దశలో కొంత అవుట్‌పుట్ విలువ కూడా కావాలి. ఈ సందర్భంలో, మరో మ్యాట్రిక్స్ $W_O$ ఉంటుంది, మరియు అవుట్‌పుట్ $Y_i=f(W_O\\times S_i+b_O)$గా లెక్కించబడుతుంది.\n",
"\n",
"పునరావృత న్యూరల్ నెట్‌వర్క్స్ మన న్యూస్ డేటాసెట్‌ను వర్గీకరించడంలో ఎలా సహాయపడతాయో చూద్దాం.\n",
"\n",
"> సాండ్‌బాక్స్ వాతావరణం కోసం, అవసరమైన లైబ్రరీ ఇన్‌స్టాల్ అయి, డేటా ముందుగా లోడ్ అయ్యిందని నిర్ధారించుకోవడానికి క్రింది సెల్‌ను నడపాలి. మీరు లోకల్‌గా నడుపుతున్నట్లయితే, ఈ సెల్‌ను దాటవేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"!{sys.executable} -m pip install --quiet tensorflow_datasets==4.4.0\n",
"!cd ~ && wget -q -O - https://mslearntensorflowlp.blob.core.windows.net/data/tfds-ag-news.tgz | tar xz"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import tensorflow_datasets as tfds\n",
"import numpy as np\n",
"\n",
"# We are going to be training pretty large models. In order not to face errors, we need\n",
"# to set tensorflow option to grow GPU memory allocation when required\n",
"physical_devices = tf.config.list_physical_devices('GPU') \n",
"if len(physical_devices)>0:\n",
" tf.config.experimental.set_memory_growth(physical_devices[0], True)\n",
"\n",
"ds_train, ds_test = tfds.load('ag_news_subset').values()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
},
"source": [
"పెద్ద మోడల్స్‌ను ట్రెయిన్ చేస్తున్నప్పుడు, GPU మెమరీ కేటాయింపు సమస్యగా మారవచ్చు. మేము వివిధ మినీబ్యాచ్ సైజులతో ప్రయోగాలు చేయవలసి ఉండవచ్చు, తద్వారా డేటా మా GPU మెమరీలో సరిపోతుంది, కానీ ట్రెయినింగ్ వేగంగా జరుగుతుంది. మీరు మీ స్వంత GPU యంత్రంలో ఈ కోడ్‌ను నడుపుతున్నట్లయితే, ట్రెయినింగ్ వేగాన్ని పెంచేందుకు మినీబ్యాచ్ సైజ్‌ను సర్దుబాటు చేయడం ద్వారా ప్రయోగాలు చేయవచ్చు.\n",
"\n",
"> **Note**: కొన్ని NVidia డ్రైవర్ వెర్షన్లు మోడల్ ట్రెయినింగ్ తర్వాత మెమరీని విడుదల చేయకపోవడం తెలిసింది. ఈ నోట్‌బుక్‌లో మేము అనేక ఉదాహరణలను నడుపుతున్నాము, మరియు ఇది కొన్ని సెటప్‌లలో మెమరీ పూర్తిగా ఖాళీ కావడానికి కారణమవుతుంది, ముఖ్యంగా మీరు అదే నోట్‌బుక్‌లో మీ స్వంత ప్రయోగాలు చేస్తున్నట్లయితే. మోడల్ ట్రెయినింగ్ ప్రారంభించినప్పుడు కొన్ని విచిత్రమైన లోపాలు ఎదురైతే, మీరు నోట్‌బుక్ కర్నెల్‌ను రీస్టార్ట్ చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": false,
"source_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
}
},
"outputs": [],
"source": [
"batch_size = 16\n",
"embed_size = 64"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సింపుల్ RNN వర్గీకరణ\n",
"\n",
"సింపుల్ RNN సందర్భంలో, ప్రతి రికరెంట్ యూనిట్ ఒక సింపుల్ లీనియర్ నెట్‌వర్క్, ఇది ఒక ఇన్‌పుట్ వెక్టర్ మరియు స్టేట్ వెక్టర్‌ను తీసుకుని, కొత్త స్టేట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. Kerasలో, దీన్ని `SimpleRNN` లేయర్ ద్వారా ప్రాతినిధ్యం వహించవచ్చు.\n",
"\n",
"మనం ఒక-హాట్ ఎన్‌కోడ్ చేసిన టోకెన్లను నేరుగా RNN లేయర్‌కు పంపవచ్చు, కానీ వాటి అధిక డైమెన్షనాలిటీ కారణంగా ఇది మంచి ఆలోచన కాదు. అందువల్ల, మేము పద వెక్టర్ల డైమెన్షనాలిటీని తగ్గించడానికి ఒక ఎంబెడ్డింగ్ లేయర్ ఉపయోగిస్తాము, ఆ తర్వాత RNN లేయర్, చివరగా `Dense` వర్గీకరణ లేయర్ ఉంటుంది.\n",
"\n",
"> **Note**: డైమెన్షనాలిటీ అంత ఎక్కువగా లేని సందర్భాల్లో, ఉదాహరణకు క్యారెక్టర్-స్థాయి టోకనైజేషన్ ఉపయోగించినప్పుడు, ఒక-హాట్ ఎన్‌కోడ్ చేసిన టోకెన్లను నేరుగా RNN సెల్‌లో పంపడం అర్థం కావచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"text_vectorization (TextVect (None, None) 0 \n",
"_________________________________________________________________\n",
"embedding (Embedding) (None, None, 64) 1280000 \n",
"_________________________________________________________________\n",
"simple_rnn (SimpleRNN) (None, 16) 1296 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, 4) 68 \n",
"=================================================================\n",
"Total params: 1,281,364\n",
"Trainable params: 1,281,364\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"vocab_size = 20000\n",
"\n",
"vectorizer = keras.layers.experimental.preprocessing.TextVectorization(\n",
" max_tokens=vocab_size,\n",
" input_shape=(1,))\n",
"\n",
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, embed_size),\n",
" keras.layers.SimpleRNN(16),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** సౌలభ్యానికి మేము ఇక్కడ శిక్షణ పొందని embedding లేయర్‌ను ఉపయోగిస్తున్నాము, కానీ మెరుగైన ఫలితాల కోసం మునుపటి యూనిట్‌లో వివరించినట్లుగా Word2Vec ఉపయోగించి pretrained embedding లేయర్‌ను ఉపయోగించవచ్చు. pretrained embeddings తో పని చేయడానికి ఈ కోడ్‌ను అనుకూలపరచడం మీకు మంచి వ్యాయామం అవుతుంది.\n",
"\n",
"ఇప్పుడు మనం మన RNN ను శిక్షణ ఇస్తాము. సాధారణంగా RNN లను శిక్షణ ఇవ్వడం చాలా కష్టం, ఎందుకంటే RNN సెల్స్ సీక్వెన్స్ పొడవు మేరకు అనుసంధానించినప్పుడు, బ్యాక్‌ప్రొపగేషన్‌లో పాల్గొనే లేయర్ల సంఖ్య చాలా ఎక్కువగా ఉంటుంది. అందువల్ల మనం తక్కువ లెర్నింగ్ రేట్‌ను ఎంచుకోవాలి, మరియు మంచి ఫలితాలు పొందడానికి పెద్ద డేటాసెట్‌పై నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి. ఇది చాలా సమయం తీసుకోవచ్చు, కాబట్టి GPU ఉపయోగించడం మంచిది.\n",
"\n",
"వేగవంతం చేయడానికి, మేము RNN మోడల్‌ను కేవలం వార్తా శీర్షికలపై మాత్రమే శిక్షణ ఇస్తాము, వివరణను వదిలేస్తాము. మీరు వివరణతో శిక్షణ ఇస్తూ చూడవచ్చు, మోడల్ శిక్షణ పొందగలదా అని పరీక్షించండి.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training vectorizer\n"
]
}
],
"source": [
"def extract_title(x):\n",
" return x['title']\n",
"\n",
"def tupelize_title(x):\n",
" return (extract_title(x),x['label'])\n",
"\n",
"print('Training vectorizer')\n",
"vectorizer.adapt(ds_train.take(2000).map(extract_title))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7500/7500 [==============================] - 82s 11ms/step - loss: 0.6629 - acc: 0.7623 - val_loss: 0.5559 - val_acc: 0.7995\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3e0030d350>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize_title).batch(batch_size),validation_data=ds_test.map(tupelize_title).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
},
"source": [
"> **గమనిక** ఇక్కడ ఖచ్చితత్వం తక్కువగా ఉండవచ్చు, ఎందుకంటే మేము కేవలం వార్తా శీర్షికలపై మాత్రమే శిక్షణ ఇస్తున్నాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## వేరియబుల్ సీక్వెన్సులను మళ్లీ పరిశీలించడం\n",
"\n",
"`TextVectorization` లేయర్ ఆటోమేటిక్‌గా మినీబ్యాచ్‌లో వేరియబుల్ పొడవు ఉన్న సీక్వెన్సులను ప్యాడ్ టోకెన్లతో ప్యాడ్ చేస్తుంది. ఆ టోకెన్లు కూడా ట్రైనింగ్‌లో భాగంగా ఉంటాయి, మరియు అవి మోడల్ కన్వర్జెన్స్‌ను క్లిష్టతరం చేయవచ్చు.\n",
"\n",
"ప్యాడింగ్ పరిమాణాన్ని తగ్గించడానికి మనం అనేక విధానాలు అనుసరించవచ్చు. వాటిలో ఒకటి డేటాసెట్‌ను సీక్వెన్స్ పొడవు ఆధారంగా పునఃక్రమబద్ధీకరించి, అన్ని సీక్వెన్సులను పరిమాణం ప్రకారం గ్రూప్ చేయడం. ఇది `tf.data.experimental.bucket_by_sequence_length` ఫంక్షన్ ఉపయోగించి చేయవచ్చు (చూడండి [డాక్యుమెంటేషన్](https://www.tensorflow.org/api_docs/python/tf/data/experimental/bucket_by_sequence_length)).\n",
"\n",
"మరొక విధానం **మాస్కింగ్** ఉపయోగించడం. కేరాస్‌లో, కొన్ని లేయర్లు ట్రైనింగ్ సమయంలో ఏ టోకెన్లు పరిగణించాలో చూపించే అదనపు ఇన్‌పుట్‌ను మద్దతు ఇస్తాయి. మాస్కింగ్‌ను మోడల్‌లో చేర్చడానికి, మనం ప్రత్యేకమైన `Masking` లేయర్ ([డాక్స్](https://keras.io/api/layers/core_layers/masking/))ను చేర్చవచ్చు, లేదా మన `Embedding` లేయర్‌లో `mask_zero=True` పారామీటర్‌ను పేర్కొనవచ్చు.\n",
"\n",
"> **గమనిక**: ఈ ట్రైనింగ్ మొత్తం డేటాసెట్‌పై ఒక ఎపోచ్ పూర్తి చేయడానికి సుమారు 5 నిమిషాలు పడుతుంది. మీరు సహనం లేకపోతే ఎప్పుడైనా ట్రైనింగ్‌ను నిలిపివేయవచ్చు. మీరు చేయగలిగేది ట్రైనింగ్ కోసం ఉపయోగించే డేటా పరిమాణాన్ని `.take(...)` క్లాజ్‌ను `ds_train` మరియు `ds_test` డేటాసెట్‌ల తర్వాత చేర్చడం ద్వారా పరిమితం చేయడం.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7500/7500 [==============================] - 371s 49ms/step - loss: 0.5401 - acc: 0.8079 - val_loss: 0.3780 - val_acc: 0.8822\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3dec118850>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def extract_text(x):\n",
" return x['title']+' '+x['description']\n",
"\n",
"def tupelize(x):\n",
" return (extract_text(x),x['label'])\n",
"\n",
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size,embed_size,mask_zero=True),\n",
" keras.layers.SimpleRNN(16),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(batch_size),validation_data=ds_test.map(tupelize).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మేము మాస్కింగ్ ఉపయోగిస్తున్నందున, మేము శీర్షికలు మరియు వివరణల మొత్తం డేటాసెట్‌పై మోడల్‌ను శిక్షణ ఇవ్వవచ్చు.\n",
"\n",
"> **Note**: మీరు గమనించారా, మేము వార్తా శీర్షికలపై శిక్షణ పొందిన వెక్టరైజర్‌ను ఉపయోగిస్తున్నాము, ఆర్టికల్ మొత్తం శరీరం మీద కాదు? ఇది కొంత టోకెన్లను నిర్లక్ష్యం చేయవచ్చు, కాబట్టి వెక్టరైజర్‌ను మళ్లీ శిక్షణ ఇవ్వడం మంచిది. అయితే, దీని ప్రభావం చాలా తక్కువగా ఉండవచ్చు, అందువల్ల సరళత కోసం మేము మునుపటి ప్రీ-ట్రెయిన్డ్ వెక్టరైజర్‌ను కొనసాగిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## LSTM: దీర్ఘ స్వల్పకాలిక జ్ఞాపకం\n",
"\n",
"RNNల ప్రధాన సమస్యలలో ఒకటి **వెనుకబడే గ్రాడియెంట్లు తగ్గిపోవడం**. RNNలు చాలా పొడవుగా ఉండవచ్చు, మరియు బ్యాక్‌ప్రొపగేషన్ సమయంలో గ్రాడియెంట్లను నెట్‌వర్క్ మొదటి లేయర్ వరకు వెనుకకు పంపడం కష్టంగా ఉండవచ్చు. ఇది జరిగితే, నెట్‌వర్క్ దూరంలోని టోకెన్ల మధ్య సంబంధాలను నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **గేట్ల** ద్వారా **స్పష్టమైన స్థితి నిర్వహణ**ను ప్రవేశపెట్టడం. గేట్లను ప్రవేశపెట్టే రెండు సాధారణ ఆర్కిటెక్చర్లు **లాంగ్ షార్ట్-టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU). ఇక్కడ మనం LSTMలను చర్చిస్తాము.\n",
"\n",
"![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)\n",
"\n",
"LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పాటు చేయబడింది, కానీ రెండు స్థితులు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్థితి $c$, మరియు దాచిన వెక్టర్ $h$. ప్రతి యూనిట్ వద్ద, దాచిన వెక్టర్ $h_{t-1}$ను ఇన్‌పుట్ $x_t$తో కలిపి, అవి కలిసి **గేట్ల** ద్వారా స్థితి $c_t$ మరియు అవుట్‌పుట్ $h_t$పై నియంత్రణ వహిస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ కలిగి ఉంటుంది (ఫలితం $[0,1]$ పరిధిలో ఉంటుంది), ఇది స్థితి వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. LSTMలకు క్రింది గేట్లు ఉంటాయి (పై చిత్రంలో ఎడమ నుండి కుడికి):\n",
"* **మర్చిపో గేట్** ఇది వెక్టర్ $c_{t-1}$లోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.\n",
"* **ఇన్‌పుట్ గేట్** ఇది ఇన్‌పుట్ వెక్టర్ మరియు గత దాచిన వెక్టర్ నుండి ఎంత సమాచారం స్థితి వెక్టర్‌లో చేర్చాలో నిర్ణయిస్తుంది.\n",
"* **అవుట్‌పుట్ గేట్** ఇది కొత్త స్థితి వెక్టర్ తీసుకుని దాని ఏ భాగాలు కొత్త దాచిన వెక్టర్ $h_t$ను ఉత్పత్తి చేయడానికి ఉపయోగించాలో నిర్ణయిస్తుంది.\n",
"\n",
"స్థితి $c$ యొక్క భాగాలను ఆన్/ఆఫ్ చేయగల ఫ్లాగులుగా భావించవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వస్తే, అది ఒక మహిళను సూచిస్తుందని ఊహించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు సూచించే ఫ్లాగ్‌ను స్థితిలో పెంచుతాము. తరువాత *and Tom* అనే పదాలు వస్తే, బహువచన నామవాచకం ఉన్నట్లు సూచించే ఫ్లాగ్‌ను పెంచుతాము. ఈ విధంగా స్థితిని నిర్వహించడం ద్వారా వాక్యంలోని వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.\n",
"\n",
"> **గమనిక**: LSTMల అంతర్గత నిర్మాణాన్ని అర్థం చేసుకోవడానికి ఇది ఒక అద్భుతమైన వనరు: [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.\n",
"\n",
"LSTM సెల్ అంతర్గత నిర్మాణం క్లిష్టంగా కనిపించినప్పటికీ, Keras ఈ అమలును `LSTM` లేయర్ లో దాచివేస్తుంది, కాబట్టి పై ఉదాహరణలో మనం చేయవలసింది రికరెంట్ లేయర్‌ను మార్చడం మాత్రమే:\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15000/15000 [==============================] - 188s 13ms/step - loss: 0.5692 - acc: 0.7916 - val_loss: 0.3441 - val_acc: 0.8870\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3d6af5c350>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, embed_size),\n",
" keras.layers.LSTM(8),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(8),validation_data=ds_test.map(tupelize).batch(8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక** LSTM లను శిక్షణ ఇవ్వడం కూడా చాలా మందగిస్తుంది, మరియు శిక్షణ ప్రారంభంలో మీరు ఎక్కువగా ఖచ్చితత్వం పెరుగుదల చూడకపోవచ్చు. మంచి ఖచ్చితత్వం సాధించడానికి మీరు కొంత కాలం శిక్షణ కొనసాగించవలసి ఉంటుంది.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ద్విముఖి మరియు బహుళస్థాయి RNNలు\n",
"\n",
"ఇప్పటి వరకు మన ఉదాహరణల్లో, రికరెంట్ నెట్‌వర్క్లు సీక్వెన్స్ ప్రారంభం నుండి చివరి వరకు పనిచేస్తాయి. ఇది మనకు సహజంగా అనిపిస్తుంది ఎందుకంటే మనం చదవడం లేదా మాట్లాడే మాట వినడం చేసే దిశలో ఇది జరుగుతుంది. అయితే, ఇన్‌పుట్ సీక్వెన్స్‌ను యాదృచ్ఛికంగా యాక్సెస్ చేయాల్సిన సందర్భాల్లో, రికరెంట్ గణనను రెండు దిశలలోనూ నడపడం బాగుంటుంది. రెండు దిశలలో గణనలను అనుమతించే RNNలను **ద్విముఖి** RNNలు అంటారు, ఇవి రికరెంట్ లేయర్‌ను ప్రత్యేకమైన `Bidirectional` లేయర్‌తో చుట్టడం ద్వారా సృష్టించవచ్చు.\n",
"\n",
"> **Note**: `Bidirectional` లేయర్ లోపల లేయర్ యొక్క రెండు కాపీలు తయారుచేస్తుంది, వాటిలో ఒక కాపీకి `go_backwards` ప్రాపర్టీని `True` గా సెట్ చేస్తుంది, తద్వారా అది సీక్వెన్స్‌లో వ్యతిరేక దిశలో నడుస్తుంది.\n",
"\n",
"రికరెంట్ నెట్‌వర్క్లు, ఏదైనా ఒక దిశలోనైనా లేదా ద్విముఖి అయినా, సీక్వెన్స్‌లోని నమూనాలను పట్టుకుని వాటిని స్టేట్ వెక్టర్లుగా నిల్వ చేస్తాయి లేదా అవి అవుట్‌పుట్‌గా ఇస్తాయి. కాంవల్యూషనల్ నెట్‌వర్క్ల లాగా, మొదటి లేయర్ ద్వారా తీసుకున్న తక్కువ స్థాయి నమూనాల నుండి నిర్మించిన ఉన్నత స్థాయి నమూనాలను పట్టుకోవడానికి మరొక రికరెంట్ లేయర్‌ను మొదటి లేయర్ తర్వాత నిర్మించవచ్చు. దీని ద్వారా మనకు **బహుళస్థాయి RNN** అనే భావన వస్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్లతో కూడి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్‌ను తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపిస్తారు.\n",
"\n",
"![బహుళస్థాయి లాంగ్-షార్ట్-టర్మ్-మెమరీ RNNని చూపించే చిత్రం](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.te.jpg)\n",
"\n",
"*ఫెర్నాండో లోపెజ్ రాసిన [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి చిత్రం.*\n",
"\n",
"కేరాస్ ఈ నెట్‌వర్క్లను సృష్టించడం సులభం చేస్తుంది, ఎందుకంటే మీరు కేవలం మోడల్‌కు మరిన్ని రికరెంట్ లేయర్లను జోడించాలి. చివరి లేయర్ తప్ప అన్ని లేయర్లకు `return_sequences=True` పారామీటర్‌ను ఇవ్వాలి, ఎందుకంటే మాకు లేయర్ అన్ని మధ్యస్థితులను తిరిగి ఇవ్వాలి, కేవలం రికరెంట్ గణన చివరి స్థితి మాత్రమే కాదు.\n",
"\n",
"మన క్లాసిఫికేషన్ సమస్య కోసం రెండు-లేయర్ ద్విముఖి LSTMను నిర్మిద్దాం.\n",
"\n",
"> **Note** ఈ కోడ్ కూడా పూర్తయ్యేందుకు కొంత సమయం పడుతుంది, కానీ ఇప్పటివరకు మనం చూసిన అత్యధిక ఖచ్చితత్వాన్ని ఇస్తుంది. కాబట్టి ఫలితాన్ని చూడటానికి వేచి ఉండటం మంచిది.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5044/7500 [===================>..........] - ETA: 2:33 - loss: 0.3709 - acc: 0.8706\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r5045/7500 [===================>..........] - ETA: 2:33 - loss: 0.3709 - acc: 0.8706"
]
}
],
"source": [
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, 128, mask_zero=True),\n",
" keras.layers.Bidirectional(keras.layers.LSTM(64,return_sequences=True)),\n",
" keras.layers.Bidirectional(keras.layers.LSTM(64)), \n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(batch_size),\n",
" validation_data=ds_test.map(tupelize).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఇతర పనుల కోసం RNNలు\n",
"\n",
"ఇప్పటి వరకు, మేము RNNలను టెక్స్ట్ సీక్వెన్స్‌లను వర్గీకరించడానికి ఉపయోగించడంపై దృష్టి పెట్టాము. కానీ అవి టెక్స్ట్ ఉత్పత్తి మరియు యంత్ర అనువాదం వంటి మరెన్నో పనులను నిర్వహించగలవు — ఆ పనులను మేము తదుపరి యూనిట్‌లో పరిశీలిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernel_info": {
"name": "conda-env-py37_tensorflow-py"
},
"kernelspec": {
"display_name": "py37_tensorflow",
"language": "python",
"name": "conda-env-py37_tensorflow-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"nteract": {
"version": "nteract-front-end@1.0.0"
},
"coopTranslator": {
"original_hash": "81351e61f619b432ff51010a4f993194",
"translation_date": "2025-11-26T02:05:22+00:00",
"source_file": "lessons/5-NLP/16-RNN/RNNTF.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# పునరావృత న్యూరల్ నెట్‌వర్క్స్\n",
"\n",
"మునుపటి మాడ్యూల్‌లో, మేము టెక్స్ట్ యొక్క సమృద్ధి సారాంశ ప్రతినిధులను కవర్ చేసాము. మనం ఉపయోగిస్తున్న ఆర్కిటెక్చర్ వాక్యంలో ఉన్న పదాల సమగ్ర అర్థాన్ని పట్టుకుంటుంది, కానీ పదాల **క్రమం**ని పరిగణలోకి తీసుకోదు, ఎందుకంటే ఎంబెడ్డింగ్స్ తరువాత జరిగే సమీకరణ ఆ సమాచారాన్ని మూల టెక్స్ట్ నుండి తీసివేస్తుంది. ఈ మోడల్స్ పదాల క్రమాన్ని ప్రతినిధ్యం చేయలేకపోవడం వలన, అవి టెక్స్ట్ జనరేషన్ లేదా ప్రశ్నోత్తరాల వంటి క్లిష్టమైన లేదా అనిశ్చిత పనులను పరిష్కరించలేవు.\n",
"\n",
"ఒక టెక్స్ట్ సీక్వెన్స్ అర్థాన్ని పట్టుకోవడానికి, మనం **పునరావృత న్యూరల్ నెట్‌వర్క్** లేదా RNN అనే న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్‌ను ఉపయోగిస్తాము. RNN ఉపయోగించినప్పుడు, మన వాక్యాన్ని ఒక్కో టోకెన్‌గా నెట్‌వర్క్ ద్వారా పంపిస్తాము, మరియు నెట్‌వర్క్ కొన్ని **స్థితి**ని ఉత్పత్తి చేస్తుంది, ఆ స్థితిని తరువాత వచ్చే టోకెన్‌తో మళ్లీ నెట్‌వర్క్‌కు ఇస్తాము.\n",
"\n",
"![పునరావృత న్యూరల్ నెట్‌వర్క్ జనరేషన్ ఉదాహరణ చూపిస్తున్న చిత్రం.](../../../../../translated_images/rnn.27f5c29c53d727b5.te.png)\n",
"\n",
"ఇన్‌పుట్ సీక్వెన్స్ టోకెన్లు $X_0,\\dots,X_n$ ఇచ్చినప్పుడు, RNN న్యూరల్ నెట్‌వర్క్ బ్లాక్స్ సీక్వెన్స్‌ను సృష్టిస్తుంది, మరియు ఈ సీక్వెన్స్‌ను బ్యాక్‌ప్రొపగేషన్ ద్వారా ఎండ్-టు-ఎండ్ శిక్షణ ఇస్తుంది. ప్రతి నెట్‌వర్క్ బ్లాక్ జంట $(X_i,S_i)$ని ఇన్‌పుట్‌గా తీసుకుని, $S_{i+1}$ని ఫలితంగా ఉత్పత్తి చేస్తుంది. చివరి స్థితి $S_n$ లేదా అవుట్‌పుట్ $Y_n$ లీనియర్ క్లాసిఫైయర్‌లోకి వెళ్లి ఫలితాన్ని ఉత్పత్తి చేస్తుంది. అన్ని నెట్‌వర్క్ బ్లాక్స్ ఒకే బరువులను పంచుకుంటాయి, మరియు ఒకే బ్యాక్‌ప్రొపగేషన్ పాస్‌తో ఎండ్-టు-ఎండ్ శిక్షణ పొందుతాయి.\n",
"\n",
"> పై చిత్రంలో పునరావృత న్యూరల్ నెట్‌వర్క్‌ను విస్తరించిన రూపంలో (ఎడమవైపు) మరియు మరింత సంక్షిప్త పునరావృత ప్రాతినిధ్యంలో (కుడివైపు) చూపించారు. అన్ని RNN సెల్స్ ఒకే **పంచుకునే బరువులు** కలిగి ఉంటాయని గ్రహించడం ముఖ్యం.\n",
"\n",
"స్థితి వెక్టార్లు $S_0,\\dots,S_n$ నెట్‌వర్క్ ద్వారా పంపబడినందున, RNN పదాల మధ్య క్రమబద్ధమైన ఆధారితత్వాలను నేర్చుకోగలదు. ఉదాహరణకు, వాక్యంలో *not* అనే పదం ఎక్కడైనా వస్తే, అది స్థితి వెక్టర్‌లోని కొన్ని అంశాలను నిరాకరించడాన్ని నేర్చుకోవచ్చు.\n",
"\n",
"ప్రతి RNN సెల్‌లో రెండు బరువు మ్యాట్రిక్సులు ఉంటాయి: $W_H$ మరియు $W_I$, మరియు బైయాస్ $b$. ప్రతి RNN దశలో, ఇన్‌పుట్ $X_i$ మరియు ఇన్‌పుట్ స్థితి $S_i$ ఇచ్చినప్పుడు, అవుట్‌పుట్ స్థితి $S_{i+1} = f(W_H\\times S_i + W_I\\times X_i+b)$గా లెక్కించబడుతుంది, ఇక్కడ $f$ ఒక యాక్టివేషన్ ఫంక్షన్ (సాధారణంగా $\\tanh$).\n",
"\n",
"> టెక్స్ట్ జనరేషన్ (మనం తదుపరి యూనిట్‌లో కవర్ చేయబోతున్నది) లేదా మెషీన్ అనువాదం వంటి సమస్యల కోసం, ప్రతి RNN దశలో కొంత అవుట్‌పుట్ విలువ కూడా కావాలి. ఈ సందర్భంలో, మరో మ్యాట్రిక్స్ $W_O$ ఉంటుంది, మరియు అవుట్‌పుట్ $Y_i=f(W_O\\times S_i+b_O)$గా లెక్కించబడుతుంది.\n",
"\n",
"పునరావృత న్యూరల్ నెట్‌వర్క్స్ మన న్యూస్ డేటాసెట్‌ను వర్గీకరించడంలో ఎలా సహాయపడతాయో చూద్దాం.\n",
"\n",
"> సాండ్‌బాక్స్ వాతావరణం కోసం, అవసరమైన లైబ్రరీ ఇన్‌స్టాల్ అయి, డేటా ముందుగా లోడ్ అయ్యిందని నిర్ధారించుకోవడానికి క్రింది సెల్‌ను నడపాలి. మీరు లోకల్‌గా నడుపుతున్నట్లయితే, ఈ సెల్‌ను దాటవేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"!{sys.executable} -m pip install --quiet tensorflow_datasets==4.4.0\n",
"!cd ~ && wget -q -O - https://mslearntensorflowlp.blob.core.windows.net/data/tfds-ag-news.tgz | tar xz"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import tensorflow_datasets as tfds\n",
"import numpy as np\n",
"\n",
"# We are going to be training pretty large models. In order not to face errors, we need\n",
"# to set tensorflow option to grow GPU memory allocation when required\n",
"physical_devices = tf.config.list_physical_devices('GPU') \n",
"if len(physical_devices)>0:\n",
" tf.config.experimental.set_memory_growth(physical_devices[0], True)\n",
"\n",
"ds_train, ds_test = tfds.load('ag_news_subset').values()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
},
"source": [
"పెద్ద మోడల్స్‌ను ట్రెయిన్ చేస్తున్నప్పుడు, GPU మెమరీ కేటాయింపు సమస్యగా మారవచ్చు. మేము వివిధ మినీబ్యాచ్ సైజులతో ప్రయోగాలు చేయవలసి ఉండవచ్చు, తద్వారా డేటా మా GPU మెమరీలో సరిపోతుంది, కానీ ట్రెయినింగ్ వేగంగా జరుగుతుంది. మీరు మీ స్వంత GPU యంత్రంలో ఈ కోడ్‌ను నడుపుతున్నట్లయితే, ట్రెయినింగ్ వేగాన్ని పెంచేందుకు మినీబ్యాచ్ సైజ్‌ను సర్దుబాటు చేయడం ద్వారా ప్రయోగాలు చేయవచ్చు.\n",
"\n",
"> **Note**: కొన్ని NVidia డ్రైవర్ వెర్షన్లు మోడల్ ట్రెయినింగ్ తర్వాత మెమరీని విడుదల చేయకపోవడం తెలిసింది. ఈ నోట్‌బుక్‌లో మేము అనేక ఉదాహరణలను నడుపుతున్నాము, మరియు ఇది కొన్ని సెటప్‌లలో మెమరీ పూర్తిగా ఖాళీ కావడానికి కారణమవుతుంది, ముఖ్యంగా మీరు అదే నోట్‌బుక్‌లో మీ స్వంత ప్రయోగాలు చేస్తున్నట్లయితే. మోడల్ ట్రెయినింగ్ ప్రారంభించినప్పుడు కొన్ని విచిత్రమైన లోపాలు ఎదురైతే, మీరు నోట్‌బుక్ కర్నెల్‌ను రీస్టార్ట్ చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": false,
"source_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
}
},
"outputs": [],
"source": [
"batch_size = 16\n",
"embed_size = 64"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సింపుల్ RNN వర్గీకరణ\n",
"\n",
"సింపుల్ RNN సందర్భంలో, ప్రతి రికరెంట్ యూనిట్ ఒక సింపుల్ లీనియర్ నెట్‌వర్క్, ఇది ఒక ఇన్‌పుట్ వెక్టర్ మరియు స్టేట్ వెక్టర్‌ను తీసుకుని, కొత్త స్టేట్ వెక్టర్‌ను ఉత్పత్తి చేస్తుంది. Kerasలో, దీన్ని `SimpleRNN` లేయర్ ద్వారా ప్రాతినిధ్యం వహించవచ్చు.\n",
"\n",
"మనం ఒక-హాట్ ఎన్‌కోడ్ చేసిన టోకెన్లను నేరుగా RNN లేయర్‌కు పంపవచ్చు, కానీ వాటి అధిక డైమెన్షనాలిటీ కారణంగా ఇది మంచి ఆలోచన కాదు. అందువల్ల, మేము పద వెక్టర్ల డైమెన్షనాలిటీని తగ్గించడానికి ఒక ఎంబెడ్డింగ్ లేయర్ ఉపయోగిస్తాము, ఆ తర్వాత RNN లేయర్, చివరగా `Dense` వర్గీకరణ లేయర్ ఉంటుంది.\n",
"\n",
"> **Note**: డైమెన్షనాలిటీ అంత ఎక్కువగా లేని సందర్భాల్లో, ఉదాహరణకు క్యారెక్టర్-స్థాయి టోకనైజేషన్ ఉపయోగించినప్పుడు, ఒక-హాట్ ఎన్‌కోడ్ చేసిన టోకెన్లను నేరుగా RNN సెల్‌లో పంపడం అర్థం కావచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"text_vectorization (TextVect (None, None) 0 \n",
"_________________________________________________________________\n",
"embedding (Embedding) (None, None, 64) 1280000 \n",
"_________________________________________________________________\n",
"simple_rnn (SimpleRNN) (None, 16) 1296 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, 4) 68 \n",
"=================================================================\n",
"Total params: 1,281,364\n",
"Trainable params: 1,281,364\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"vocab_size = 20000\n",
"\n",
"vectorizer = keras.layers.experimental.preprocessing.TextVectorization(\n",
" max_tokens=vocab_size,\n",
" input_shape=(1,))\n",
"\n",
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, embed_size),\n",
" keras.layers.SimpleRNN(16),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక:** సౌలభ్యానికి మేము ఇక్కడ శిక్షణ పొందని embedding లేయర్‌ను ఉపయోగిస్తున్నాము, కానీ మెరుగైన ఫలితాల కోసం మునుపటి యూనిట్‌లో వివరించినట్లుగా Word2Vec ఉపయోగించి pretrained embedding లేయర్‌ను ఉపయోగించవచ్చు. pretrained embeddings తో పని చేయడానికి ఈ కోడ్‌ను అనుకూలపరచడం మీకు మంచి వ్యాయామం అవుతుంది.\n",
"\n",
"ఇప్పుడు మనం మన RNN ను శిక్షణ ఇస్తాము. సాధారణంగా RNN లను శిక్షణ ఇవ్వడం చాలా కష్టం, ఎందుకంటే RNN సెల్స్ సీక్వెన్స్ పొడవు మేరకు అనుసంధానించినప్పుడు, బ్యాక్‌ప్రొపగేషన్‌లో పాల్గొనే లేయర్ల సంఖ్య చాలా ఎక్కువగా ఉంటుంది. అందువల్ల మనం తక్కువ లెర్నింగ్ రేట్‌ను ఎంచుకోవాలి, మరియు మంచి ఫలితాలు పొందడానికి పెద్ద డేటాసెట్‌పై నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలి. ఇది చాలా సమయం తీసుకోవచ్చు, కాబట్టి GPU ఉపయోగించడం మంచిది.\n",
"\n",
"వేగవంతం చేయడానికి, మేము RNN మోడల్‌ను కేవలం వార్తా శీర్షికలపై మాత్రమే శిక్షణ ఇస్తాము, వివరణను వదిలేస్తాము. మీరు వివరణతో శిక్షణ ఇస్తూ చూడవచ్చు, మోడల్ శిక్షణ పొందగలదా అని పరీక్షించండి.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training vectorizer\n"
]
}
],
"source": [
"def extract_title(x):\n",
" return x['title']\n",
"\n",
"def tupelize_title(x):\n",
" return (extract_title(x),x['label'])\n",
"\n",
"print('Training vectorizer')\n",
"vectorizer.adapt(ds_train.take(2000).map(extract_title))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7500/7500 [==============================] - 82s 11ms/step - loss: 0.6629 - acc: 0.7623 - val_loss: 0.5559 - val_acc: 0.7995\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3e0030d350>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize_title).batch(batch_size),validation_data=ds_test.map(tupelize_title).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
},
"source": [
"> **గమనిక** ఇక్కడ ఖచ్చితత్వం తక్కువగా ఉండవచ్చు, ఎందుకంటే మేము కేవలం వార్తా శీర్షికలపై మాత్రమే శిక్షణ ఇస్తున్నాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## వేరియబుల్ సీక్వెన్సులను మళ్లీ పరిశీలించడం\n",
"\n",
"`TextVectorization` లేయర్ ఆటోమేటిక్‌గా మినీబ్యాచ్‌లో వేరియబుల్ పొడవు ఉన్న సీక్వెన్సులను ప్యాడ్ టోకెన్లతో ప్యాడ్ చేస్తుంది. ఆ టోకెన్లు కూడా ట్రైనింగ్‌లో భాగంగా ఉంటాయి, మరియు అవి మోడల్ కన్వర్జెన్స్‌ను క్లిష్టతరం చేయవచ్చు.\n",
"\n",
"ప్యాడింగ్ పరిమాణాన్ని తగ్గించడానికి మనం అనేక విధానాలు అనుసరించవచ్చు. వాటిలో ఒకటి డేటాసెట్‌ను సీక్వెన్స్ పొడవు ఆధారంగా పునఃక్రమబద్ధీకరించి, అన్ని సీక్వెన్సులను పరిమాణం ప్రకారం గ్రూప్ చేయడం. ఇది `tf.data.experimental.bucket_by_sequence_length` ఫంక్షన్ ఉపయోగించి చేయవచ్చు (చూడండి [డాక్యుమెంటేషన్](https://www.tensorflow.org/api_docs/python/tf/data/experimental/bucket_by_sequence_length)).\n",
"\n",
"మరొక విధానం **మాస్కింగ్** ఉపయోగించడం. కేరాస్‌లో, కొన్ని లేయర్లు ట్రైనింగ్ సమయంలో ఏ టోకెన్లు పరిగణించాలో చూపించే అదనపు ఇన్‌పుట్‌ను మద్దతు ఇస్తాయి. మాస్కింగ్‌ను మోడల్‌లో చేర్చడానికి, మనం ప్రత్యేకమైన `Masking` లేయర్ ([డాక్స్](https://keras.io/api/layers/core_layers/masking/))ను చేర్చవచ్చు, లేదా మన `Embedding` లేయర్‌లో `mask_zero=True` పారామీటర్‌ను పేర్కొనవచ్చు.\n",
"\n",
"> **గమనిక**: ఈ ట్రైనింగ్ మొత్తం డేటాసెట్‌పై ఒక ఎపోచ్ పూర్తి చేయడానికి సుమారు 5 నిమిషాలు పడుతుంది. మీరు సహనం లేకపోతే ఎప్పుడైనా ట్రైనింగ్‌ను నిలిపివేయవచ్చు. మీరు చేయగలిగేది ట్రైనింగ్ కోసం ఉపయోగించే డేటా పరిమాణాన్ని `.take(...)` క్లాజ్‌ను `ds_train` మరియు `ds_test` డేటాసెట్‌ల తర్వాత చేర్చడం ద్వారా పరిమితం చేయడం.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7500/7500 [==============================] - 371s 49ms/step - loss: 0.5401 - acc: 0.8079 - val_loss: 0.3780 - val_acc: 0.8822\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3dec118850>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def extract_text(x):\n",
" return x['title']+' '+x['description']\n",
"\n",
"def tupelize(x):\n",
" return (extract_text(x),x['label'])\n",
"\n",
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size,embed_size,mask_zero=True),\n",
" keras.layers.SimpleRNN(16),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(batch_size),validation_data=ds_test.map(tupelize).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మేము మాస్కింగ్ ఉపయోగిస్తున్నందున, మేము శీర్షికలు మరియు వివరణల మొత్తం డేటాసెట్‌పై మోడల్‌ను శిక్షణ ఇవ్వవచ్చు.\n",
"\n",
"> **Note**: మీరు గమనించారా, మేము వార్తా శీర్షికలపై శిక్షణ పొందిన వెక్టరైజర్‌ను ఉపయోగిస్తున్నాము, ఆర్టికల్ మొత్తం శరీరం మీద కాదు? ఇది కొంత టోకెన్లను నిర్లక్ష్యం చేయవచ్చు, కాబట్టి వెక్టరైజర్‌ను మళ్లీ శిక్షణ ఇవ్వడం మంచిది. అయితే, దీని ప్రభావం చాలా తక్కువగా ఉండవచ్చు, అందువల్ల సరళత కోసం మేము మునుపటి ప్రీ-ట్రెయిన్డ్ వెక్టరైజర్‌ను కొనసాగిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## LSTM: దీర్ఘ స్వల్పకాలిక జ్ఞాపకం\n",
"\n",
"RNNల ప్రధాన సమస్యలలో ఒకటి **వెనుకబడే గ్రాడియెంట్లు తగ్గిపోవడం**. RNNలు చాలా పొడవుగా ఉండవచ్చు, మరియు బ్యాక్‌ప్రొపగేషన్ సమయంలో గ్రాడియెంట్లను నెట్‌వర్క్ మొదటి లేయర్ వరకు వెనుకకు పంపడం కష్టంగా ఉండవచ్చు. ఇది జరిగితే, నెట్‌వర్క్ దూరంలోని టోకెన్ల మధ్య సంబంధాలను నేర్చుకోలేకపోతుంది. ఈ సమస్యను నివారించడానికి ఒక మార్గం **గేట్ల** ద్వారా **స్పష్టమైన స్థితి నిర్వహణ**ను ప్రవేశపెట్టడం. గేట్లను ప్రవేశపెట్టే రెండు సాధారణ ఆర్కిటెక్చర్లు **లాంగ్ షార్ట్-టర్మ్ మెమరీ** (LSTM) మరియు **గేటెడ్ రీలే యూనిట్** (GRU). ఇక్కడ మనం LSTMలను చర్చిస్తాము.\n",
"\n",
"![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg)\n",
"\n",
"LSTM నెట్‌వర్క్ RNNకు సమానంగా ఏర్పాటు చేయబడింది, కానీ రెండు స్థితులు లేయర్ నుండి లేయర్‌కు పంపబడతాయి: అసలు స్థితి $c$, మరియు దాచిన వెక్టర్ $h$. ప్రతి యూనిట్ వద్ద, దాచిన వెక్టర్ $h_{t-1}$ను ఇన్‌పుట్ $x_t$తో కలిపి, అవి కలిసి **గేట్ల** ద్వారా స్థితి $c_t$ మరియు అవుట్‌పుట్ $h_t$పై నియంత్రణ వహిస్తాయి. ప్రతి గేట్ సిగ్మాయిడ్ యాక్టివేషన్ కలిగి ఉంటుంది (ఫలితం $[0,1]$ పరిధిలో ఉంటుంది), ఇది స్థితి వెక్టర్‌తో గుణించబడినప్పుడు బిట్‌వైజ్ మాస్క్‌లాగా భావించవచ్చు. LSTMలకు క్రింది గేట్లు ఉంటాయి (పై చిత్రంలో ఎడమ నుండి కుడికి):\n",
"* **మర్చిపో గేట్** ఇది వెక్టర్ $c_{t-1}$లోని ఏ భాగాలను మర్చిపోవాలో, ఏ భాగాలను కొనసాగించాలో నిర్ణయిస్తుంది.\n",
"* **ఇన్‌పుట్ గేట్** ఇది ఇన్‌పుట్ వెక్టర్ మరియు గత దాచిన వెక్టర్ నుండి ఎంత సమాచారం స్థితి వెక్టర్‌లో చేర్చాలో నిర్ణయిస్తుంది.\n",
"* **అవుట్‌పుట్ గేట్** ఇది కొత్త స్థితి వెక్టర్ తీసుకుని దాని ఏ భాగాలు కొత్త దాచిన వెక్టర్ $h_t$ను ఉత్పత్తి చేయడానికి ఉపయోగించాలో నిర్ణయిస్తుంది.\n",
"\n",
"స్థితి $c$ యొక్క భాగాలను ఆన్/ఆఫ్ చేయగల ఫ్లాగులుగా భావించవచ్చు. ఉదాహరణకు, సీక్వెన్స్‌లో *Alice* అనే పేరు వస్తే, అది ఒక మహిళను సూచిస్తుందని ఊహించి, వాక్యంలో మహిళా నామవాచకం ఉన్నట్లు సూచించే ఫ్లాగ్‌ను స్థితిలో పెంచుతాము. తరువాత *and Tom* అనే పదాలు వస్తే, బహువచన నామవాచకం ఉన్నట్లు సూచించే ఫ్లాగ్‌ను పెంచుతాము. ఈ విధంగా స్థితిని నిర్వహించడం ద్వారా వాక్యంలోని వ్యాకరణ లక్షణాలను ట్రాక్ చేయవచ్చు.\n",
"\n",
"> **గమనిక**: LSTMల అంతర్గత నిర్మాణాన్ని అర్థం చేసుకోవడానికి ఇది ఒక అద్భుతమైన వనరు: [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) క్రిస్టోఫర్ ఒలాహ్ రాసినది.\n",
"\n",
"LSTM సెల్ అంతర్గత నిర్మాణం క్లిష్టంగా కనిపించినప్పటికీ, Keras ఈ అమలును `LSTM` లేయర్ లో దాచివేస్తుంది, కాబట్టి పై ఉదాహరణలో మనం చేయవలసింది రికరెంట్ లేయర్‌ను మార్చడం మాత్రమే:\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15000/15000 [==============================] - 188s 13ms/step - loss: 0.5692 - acc: 0.7916 - val_loss: 0.3441 - val_acc: 0.8870\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7f3d6af5c350>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, embed_size),\n",
" keras.layers.LSTM(8),\n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(8),validation_data=ds_test.map(tupelize).batch(8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక** LSTM లను శిక్షణ ఇవ్వడం కూడా చాలా మందగిస్తుంది, మరియు శిక్షణ ప్రారంభంలో మీరు ఎక్కువగా ఖచ్చితత్వం పెరుగుదల చూడకపోవచ్చు. మంచి ఖచ్చితత్వం సాధించడానికి మీరు కొంత కాలం శిక్షణ కొనసాగించవలసి ఉంటుంది.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ద్విముఖి మరియు బహుళస్థాయి RNNలు\n",
"\n",
"ఇప్పటి వరకు మన ఉదాహరణల్లో, రికరెంట్ నెట్‌వర్క్లు సీక్వెన్స్ ప్రారంభం నుండి చివరి వరకు పనిచేస్తాయి. ఇది మనకు సహజంగా అనిపిస్తుంది ఎందుకంటే మనం చదవడం లేదా మాట్లాడే మాట వినడం చేసే దిశలో ఇది జరుగుతుంది. అయితే, ఇన్‌పుట్ సీక్వెన్స్‌ను యాదృచ్ఛికంగా యాక్సెస్ చేయాల్సిన సందర్భాల్లో, రికరెంట్ గణనను రెండు దిశలలోనూ నడపడం బాగుంటుంది. రెండు దిశలలో గణనలను అనుమతించే RNNలను **ద్విముఖి** RNNలు అంటారు, ఇవి రికరెంట్ లేయర్‌ను ప్రత్యేకమైన `Bidirectional` లేయర్‌తో చుట్టడం ద్వారా సృష్టించవచ్చు.\n",
"\n",
"> **Note**: `Bidirectional` లేయర్ లోపల లేయర్ యొక్క రెండు కాపీలు తయారుచేస్తుంది, వాటిలో ఒక కాపీకి `go_backwards` ప్రాపర్టీని `True` గా సెట్ చేస్తుంది, తద్వారా అది సీక్వెన్స్‌లో వ్యతిరేక దిశలో నడుస్తుంది.\n",
"\n",
"రికరెంట్ నెట్‌వర్క్లు, ఏదైనా ఒక దిశలోనైనా లేదా ద్విముఖి అయినా, సీక్వెన్స్‌లోని నమూనాలను పట్టుకుని వాటిని స్టేట్ వెక్టర్లుగా నిల్వ చేస్తాయి లేదా అవి అవుట్‌పుట్‌గా ఇస్తాయి. కాంవల్యూషనల్ నెట్‌వర్క్ల లాగా, మొదటి లేయర్ ద్వారా తీసుకున్న తక్కువ స్థాయి నమూనాల నుండి నిర్మించిన ఉన్నత స్థాయి నమూనాలను పట్టుకోవడానికి మరొక రికరెంట్ లేయర్‌ను మొదటి లేయర్ తర్వాత నిర్మించవచ్చు. దీని ద్వారా మనకు **బహుళస్థాయి RNN** అనే భావన వస్తుంది, ఇది రెండు లేదా అంతకంటే ఎక్కువ రికరెంట్ నెట్‌వర్క్లతో కూడి ఉంటుంది, ఇక్కడ మునుపటి లేయర్ అవుట్‌పుట్‌ను తదుపరి లేయర్ ఇన్‌పుట్‌గా పంపిస్తారు.\n",
"\n",
"![బహుళస్థాయి లాంగ్-షార్ట్-టర్మ్-మెమరీ RNNని చూపించే చిత్రం](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.te.jpg)\n",
"\n",
"*ఫెర్నాండో లోపెజ్ రాసిన [ఈ అద్భుతమైన పోస్ట్](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) నుండి చిత్రం.*\n",
"\n",
"కేరాస్ ఈ నెట్‌వర్క్లను సృష్టించడం సులభం చేస్తుంది, ఎందుకంటే మీరు కేవలం మోడల్‌కు మరిన్ని రికరెంట్ లేయర్లను జోడించాలి. చివరి లేయర్ తప్ప అన్ని లేయర్లకు `return_sequences=True` పారామీటర్‌ను ఇవ్వాలి, ఎందుకంటే మాకు లేయర్ అన్ని మధ్యస్థితులను తిరిగి ఇవ్వాలి, కేవలం రికరెంట్ గణన చివరి స్థితి మాత్రమే కాదు.\n",
"\n",
"మన క్లాసిఫికేషన్ సమస్య కోసం రెండు-లేయర్ ద్విముఖి LSTMను నిర్మిద్దాం.\n",
"\n",
"> **Note** ఈ కోడ్ కూడా పూర్తయ్యేందుకు కొంత సమయం పడుతుంది, కానీ ఇప్పటివరకు మనం చూసిన అత్యధిక ఖచ్చితత్వాన్ని ఇస్తుంది. కాబట్టి ఫలితాన్ని చూడటానికి వేచి ఉండటం మంచిది.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5044/7500 [===================>..........] - ETA: 2:33 - loss: 0.3709 - acc: 0.8706\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r5045/7500 [===================>..........] - ETA: 2:33 - loss: 0.3709 - acc: 0.8706"
]
}
],
"source": [
"model = keras.models.Sequential([\n",
" vectorizer,\n",
" keras.layers.Embedding(vocab_size, 128, mask_zero=True),\n",
" keras.layers.Bidirectional(keras.layers.LSTM(64,return_sequences=True)),\n",
" keras.layers.Bidirectional(keras.layers.LSTM(64)), \n",
" keras.layers.Dense(4,activation='softmax')\n",
"])\n",
"\n",
"model.compile(loss='sparse_categorical_crossentropy',metrics=['acc'], optimizer='adam')\n",
"model.fit(ds_train.map(tupelize).batch(batch_size),\n",
" validation_data=ds_test.map(tupelize).batch(batch_size))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ఇతర పనుల కోసం RNNలు\n",
"\n",
"ఇప్పటి వరకు, మేము RNNలను టెక్స్ట్ సీక్వెన్స్‌లను వర్గీకరించడానికి ఉపయోగించడంపై దృష్టి పెట్టాము. కానీ అవి టెక్స్ట్ ఉత్పత్తి మరియు యంత్ర అనువాదం వంటి మరెన్నో పనులను నిర్వహించగలవు — ఆ పనులను మేము తదుపరి యూనిట్‌లో పరిశీలిస్తాము.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernel_info": {
"name": "conda-env-py37_tensorflow-py"
},
"kernelspec": {
"display_name": "py37_tensorflow",
"language": "python",
"name": "conda-env-py37_tensorflow-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"nteract": {
"version": "nteract-front-end@1.0.0"
},
"coopTranslator": {
"original_hash": "81351e61f619b432ff51010a4f993194",
"translation_date": "2025-11-26T02:05:22+00:00",
"source_file": "lessons/5-NLP/16-RNN/RNNTF.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -1,411 +1,411 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# జనరేటివ్ నెట్‌వర్క్స్\n",
"\n",
"రీకరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రీకరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, అంటే అవి పదాల క్రమాన్ని నేర్చుకుని, ఒక సీక్వెన్స్‌లో తదుపరి పదం కోసం అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి అనుమతిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.\n",
"\n",
"మునుపటి యూనిట్‌లో చర్చించిన RNN నిర్మాణంలో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రీకరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు ఒక **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, అవి కొంత ప్రారంభ స్థితి వెక్టర్‌ను మాత్రమే తీసుకుని, ఆపై అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.\n",
"\n",
"ఈ నోట్‌బుక్‌లో, మేము టెక్స్ట్‌ను ఉత్పత్తి చేయడంలో సహాయపడే సాదా జనరేటివ్ మోడల్స్‌పై దృష్టి సారిస్తాము. సౌలభ్యానికి, మనం **అక్షర స్థాయి నెట్‌వర్క్**ను నిర్మిద్దాం, ఇది అక్షరాల వారీగా టెక్స్ట్‌ను ఉత్పత్తి చేస్తుంది. శిక్షణ సమయంలో, మనం కొంత టెక్స్ట్ కార్పస్ తీసుకుని, దాన్ని అక్షరాల సీక్వెన్స్‌లుగా విభజించాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"import numpy as np\n",
"from torchnlp import *\n",
"train_dataset,test_dataset,classes,vocab = load_dataset()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అక్షర పదసంపద నిర్మాణం\n",
"\n",
"అక్షర స్థాయి జనరేటివ్ నెట్‌వర్క్‌ను నిర్మించడానికి, మేము వచనం పదాల స్థానంలో వ్యక్తిగత అక్షరాలుగా విభజించాలి. ఇది వేరే టోకనైజర్‌ను నిర్వచించడం ద్వారా చేయవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vocabulary size = 82\n",
"Encoding of 'a' is 1\n",
"Character with code 13 is c\n"
]
}
],
"source": [
"def char_tokenizer(words):\n",
" return list(words) #[word for word in words]\n",
"\n",
"counter = collections.Counter()\n",
"for (label, line) in train_dataset:\n",
" counter.update(char_tokenizer(line))\n",
"vocab = torchtext.vocab.vocab(counter)\n",
"\n",
"vocab_size = len(vocab)\n",
"print(f\"Vocabulary size = {vocab_size}\")\n",
"print(f\"Encoding of 'a' is {vocab.get_stoi()['a']}\")\n",
"print(f\"Character with code 13 is {vocab.get_itos()[13]}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన డేటాసెట్ నుండి టెక్స్ట్‌ను ఎలా ఎన్‌కోడ్ చేయగలమో ఉదాహరణ చూద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([ 0, 1, 2, 2, 3, 4, 5, 6, 3, 7, 8, 1, 9, 10, 3, 11, 2, 1,\n",
" 12, 3, 7, 1, 13, 14, 3, 15, 16, 5, 17, 3, 5, 18, 8, 3, 7, 2,\n",
" 1, 13, 14, 3, 19, 20, 8, 21, 5, 8, 9, 10, 22, 3, 20, 8, 21, 5,\n",
" 8, 9, 10, 3, 23, 3, 4, 18, 17, 9, 5, 23, 10, 8, 2, 2, 8, 9,\n",
" 10, 24, 3, 0, 1, 2, 2, 3, 4, 5, 9, 8, 8, 5, 25, 10, 3, 26,\n",
" 12, 27, 16, 26, 2, 27, 16, 28, 29, 30, 1, 16, 26, 3, 17, 31, 3, 21,\n",
" 2, 5, 9, 1, 23, 13, 32, 16, 27, 13, 10, 24, 3, 1, 9, 8, 3, 10,\n",
" 8, 8, 27, 16, 28, 3, 28, 9, 8, 8, 16, 3, 1, 28, 1, 27, 16, 6])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def enc(x):\n",
" return torch.LongTensor(encode(x,voc=vocab,tokenizer=char_tokenizer))\n",
"\n",
"enc(train_dataset[0][1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## జనరేటివ్ RNN శిక్షణ\n",
"\n",
"RNN ను టెక్స్ట్ ఉత్పత్తి చేయడానికి శిక్షణ ఇవ్వడానికి మనం అనుసరించే విధానం ఈ విధంగా ఉంటుంది. ప్రతి దశలో, మనం `nchars` పొడవైన అక్షరాల సీక్వెన్స్ తీసుకుని, ప్రతి ఇన్‌పుట్ అక్షరానికి తదుపరి అవుట్‌పుట్ అక్షరాన్ని నెట్‌వర్క్ ఉత్పత్తి చేయమని అడుగుతాము:\n",
"\n",
"!['HELLO' అనే పదం RNN ద్వారా ఉత్పత్తి చేయబడుతున్న ఉదాహరణను చూపించే చిత్రం.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.te.png)\n",
"\n",
"నిజమైన పరిస్థితులపై ఆధారపడి, మనం కొన్ని ప్రత్యేక అక్షరాలను కూడా చేర్చాలనుకోవచ్చు, ఉదాహరణకు *end-of-sequence* `<eos>`. మన సందర్భంలో, మనం నిరంతర టెక్స్ట్ ఉత్పత్తి కోసం నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలనుకుంటున్నాము, కాబట్టి ప్రతి సీక్వెన్స్ పరిమాణాన్ని `nchars` టోకెన్లకు సమానంగా స్థిరపరుస్తాము. ఫలితంగా, ప్రతి శిక్షణ ఉదాహరణలో `nchars` ఇన్‌పుట్లు మరియు `nchars` అవుట్‌పుట్లు ఉంటాయి (ఇవి ఇన్‌పుట్ సీక్వెన్స్‌ను ఒక అక్షరం ఎడమకు షిఫ్ట్ చేసినవి). మినీబ్యాచ్‌లో ఇలాంటి అనేక సీక్వెన్స్‌లు ఉంటాయి.\n",
"\n",
"మినీబ్యాచ్‌లను ఉత్పత్తి చేసే విధానం ఏమిటంటే, ప్రతి వార్తా టెక్స్ట్ `l` పొడవు ఉన్నదాన్ని తీసుకుని, అందులోని అన్ని సాధ్యమైన ఇన్‌పుట్-అవుట్‌పుట్ కలయికలను ఉత్పత్తి చేయడం (ఇవి `l-nchars` సంఖ్యలో ఉంటాయి). అవి ఒక మినీబ్యాచ్‌ను ఏర్పరుస్తాయి, మరియు శిక్షణ ప్రతి దశలో మినీబ్యాచ్ పరిమాణం వేరుగా ఉంటుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(tensor([[ 0, 1, 2, ..., 28, 29, 30],\n",
" [ 1, 2, 2, ..., 29, 30, 1],\n",
" [ 2, 2, 3, ..., 30, 1, 16],\n",
" ...,\n",
" [20, 8, 21, ..., 1, 28, 1],\n",
" [ 8, 21, 5, ..., 28, 1, 27],\n",
" [21, 5, 8, ..., 1, 27, 16]]),\n",
" tensor([[ 1, 2, 2, ..., 29, 30, 1],\n",
" [ 2, 2, 3, ..., 30, 1, 16],\n",
" [ 2, 3, 4, ..., 1, 16, 26],\n",
" ...,\n",
" [ 8, 21, 5, ..., 28, 1, 27],\n",
" [21, 5, 8, ..., 1, 27, 16],\n",
" [ 5, 8, 9, ..., 27, 16, 6]]))"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nchars = 100\n",
"\n",
"def get_batch(s,nchars=nchars):\n",
" ins = torch.zeros(len(s)-nchars,nchars,dtype=torch.long,device=device)\n",
" outs = torch.zeros(len(s)-nchars,nchars,dtype=torch.long,device=device)\n",
" for i in range(len(s)-nchars):\n",
" ins[i] = enc(s[i:i+nchars])\n",
" outs[i] = enc(s[i+1:i+nchars+1])\n",
" return ins,outs\n",
"\n",
"get_batch(train_dataset[0][1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు జనరేటర్ నెట్‌వర్క్‌ను నిర్వచిద్దాం. ఇది మునుపటి యూనిట్‌లో చర్చించిన ఏదైనా రికరెంట్ సెల్ ఆధారంగా ఉండవచ్చు (సింపుల్, LSTM లేదా GRU). మన ఉదాహరణలో మనం LSTM ఉపయోగిస్తాము.\n",
"\n",
"నెట్‌వర్క్ అక్షరాలను ఇన్‌పుట్‌గా తీసుకుంటుంది, మరియు పదసంపద పరిమాణం చాలా చిన్నది కాబట్టి, ఎంబెడ్డింగ్ లేయర్ అవసరం లేదు, వన్-హాట్-ఎంకోడ్ చేసిన ఇన్‌పుట్ నేరుగా LSTM సెల్‌కు వెళ్లవచ్చు. అయితే, మనం అక్షర సంఖ్యలను ఇన్‌పుట్‌గా పంపిస్తున్నందున, వాటిని LSTM‌కు పంపించే ముందు వన్-హాట్-ఎంకోడ్ చేయాలి. ఇది `forward` పాస్ సమయంలో `one_hot` ఫంక్షన్‌ను పిలవడం ద్వారా జరుగుతుంది. అవుట్‌పుట్ ఎంకోడర్ ఒక లీనియర్ లేయర్ అవుతుంది, ఇది హిడెన్ స్టేట్‌ను వన్-హాట్-ఎంకోడ్ చేసిన అవుట్‌పుట్‌గా మార్చుతుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class LSTMGenerator(torch.nn.Module):\n",
" def __init__(self, vocab_size, hidden_dim):\n",
" super().__init__()\n",
" self.rnn = torch.nn.LSTM(vocab_size,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, vocab_size)\n",
"\n",
" def forward(self, x, s=None):\n",
" x = torch.nn.functional.one_hot(x,vocab_size).to(torch.float32)\n",
" x,s = self.rnn(x,s)\n",
" return self.fc(x),s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"శిక్షణ సమయంలో, మేము ఉత్పత్తి చేసిన టెక్స్ట్‌ను నమూనా చేయగలగాలి. దానికి, మేము `generate` అనే ఫంక్షన్‌ను నిర్వచిస్తాము, ఇది ప్రారంభ స్ట్రింగ్ `start` నుండి ప్రారంభించి `size` పొడవైన అవుట్పుట్ స్ట్రింగ్‌ను ఉత్పత్తి చేస్తుంది.\n",
"\n",
"ఇది పనిచేసే విధానం ఇలా ఉంటుంది. మొదట, మేము మొత్తం ప్రారంభ స్ట్రింగ్‌ను నెట్‌వర్క్ ద్వారా పంపించి, అవుట్పుట్ స్టేట్ `s` మరియు తదుపరి అంచనా వేసిన అక్షరం `out` ను తీసుకుంటాము. `out` ఒక హాట్ ఎన్‌కోడ్ చేయబడినది కాబట్టి, అక్షర సూచిక `nc` ను పొందడానికి `argmax` తీసుకుంటాము, మరియు `itos` ఉపయోగించి నిజమైన అక్షరాన్ని తెలుసుకుని, దాన్ని ఫలితంగా వచ్చిన అక్షరాల జాబితా `chars` కు జోడిస్తాము. ఒక అక్షరం ఉత్పత్తి చేసే ఈ ప్రక్రియను అవసరమైన అక్షరాల సంఖ్య `size` సార్లు పునరావృతం చేస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def generate(net,size=100,start='today '):\n",
" chars = list(start)\n",
" out, s = net(enc(chars).view(1,-1).to(device))\n",
" for i in range(size):\n",
" nc = torch.argmax(out[0][-1])\n",
" chars.append(vocab.get_itos()[nc])\n",
" out, s = net(nc.view(1,-1),s)\n",
" return ''.join(chars)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు ట్రైనింగ్ చేద్దాం! ట్రైనింగ్ లూప్ మన గత ఉదాహరణలన్నింటిలో ఉన్నట్లే ఉంటుంది, కానీ ఖచ్చితత్వం బదులు ప్రతి 1000 epochsకి ఒక నమూనా రూపొందించిన టెక్స్ట్ ముద్రిస్తాము.\n",
"\n",
"నష్టాన్ని లెక్కించే విధానంపై ప్రత్యేక శ్రద్ధ అవసరం. మనం ఒక హాట్-ఎంకోడెడ్ అవుట్‌పుట్ `out` మరియు అంచనా టెక్స్ట్ `text_out` (అక్షర సూచికల జాబితా) ఇవ్వబడినప్పుడు నష్టాన్ని లెక్కించాలి. అదృష్టవశాత్తు, `cross_entropy` ఫంక్షన్ మొదటి ఆర్గ్యుమెంట్‌గా సాధారణీకరించని నెట్‌వర్క్ అవుట్‌పుట్‌ను, రెండవ ఆర్గ్యుమెంట్‌గా క్లాస్ నంబర్‌ను ఆశిస్తుంది, ఇది మన దగ్గర ఉన్నదే. ఇది మినీబ్యాచ్ పరిమాణంపై ఆటోమేటిక్ సగటు కూడా చేస్తుంది.\n",
"\n",
"మేము ట్రైనింగ్‌ను `samples_to_train` నమూనాల వరకు పరిమితం చేస్తాము, చాలా ఎక్కువ సమయం వేచి ఉండకుండా ఉండేందుకు. మీరు ప్రయోగాలు చేసి, ఎక్కువ epochs కోసం (అప్పుడు ఈ కోడ్ చుట్టూ మరో లూప్ సృష్టించాల్సి ఉంటుంది) దీర్ఘకాలిక ట్రైనింగ్ ప్రయత్నించమని మేము ప్రోత్సహిస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Current loss = 4.398899078369141\n",
"today sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr s\n",
"Current loss = 2.161320447921753\n",
"today and to the tor to to the tor to to the tor to to the tor to to the tor to to the tor to to the tor t\n",
"Current loss = 1.6722588539123535\n",
"today and the court to the could to the could to the could to the could to the could to the could to the c\n",
"Current loss = 2.423795223236084\n",
"today and a second to the conternation of the conternation of the conternation of the conternation of the \n",
"Current loss = 1.702607274055481\n",
"today and the company to the company to the company to the company to the company to the company to the co\n",
"Current loss = 1.692358136177063\n",
"today and the company to the company to the company to the company to the company to the company to the co\n",
"Current loss = 1.9722288846969604\n",
"today and the control the control the control the control the control the control the control the control \n",
"Current loss = 1.8705692291259766\n",
"today and the second to the second to the second to the second to the second to the second to the second t\n",
"Current loss = 1.7626899480819702\n",
"today and a security and a security and a security and a security and a security and a security and a secu\n",
"Current loss = 1.5574463605880737\n",
"today and the company and the company and the company and the company and the company and the company and \n",
"Current loss = 1.5620026588439941\n",
"today and the be that the be the be that the be the be that the be the be that the be the be that the be t\n"
]
}
],
"source": [
"net = LSTMGenerator(vocab_size,64).to(device)\n",
"\n",
"samples_to_train = 10000\n",
"optimizer = torch.optim.Adam(net.parameters(),0.01)\n",
"loss_fn = torch.nn.CrossEntropyLoss()\n",
"net.train()\n",
"for i,x in enumerate(train_dataset):\n",
" # x[0] is class label, x[1] is text\n",
" if len(x[1])-nchars<10:\n",
" continue\n",
" samples_to_train-=1\n",
" if not samples_to_train: break\n",
" text_in, text_out = get_batch(x[1])\n",
" optimizer.zero_grad()\n",
" out,s = net(text_in)\n",
" loss = torch.nn.functional.cross_entropy(out.view(-1,vocab_size),text_out.flatten()) #cross_entropy(out,labels)\n",
" loss.backward()\n",
" optimizer.step()\n",
" if i%1000==0:\n",
" print(f\"Current loss = {loss.item()}\")\n",
" print(generate(net))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఈ ఉదాహరణ ఇప్పటికే మంచి టెక్స్ట్‌ను ఉత్పత్తి చేస్తోంది, కానీ దీన్ని మరింత మెరుగుపరచవచ్చు కొన్ని మార్గాల్లో:\n",
"* **మినీబ్యాచ్ ఉత్పత్తి మెరుగుపరచడం**. ట్రైనింగ్ కోసం డేటాను సిద్ధం చేసిన విధానం ఒక్కో నమూనా నుండి ఒక మినీబ్యాచ్‌ను ఉత్పత్తి చేయడం. ఇది సరైనది కాదు, ఎందుకంటే మినీబ్యాచ్లు అన్ని వేర్వేరు పరిమాణాలుగా ఉంటాయి, మరియు వాటిలో కొన్ని ఉత్పత్తి చేయలేవు, ఎందుకంటే టెక్స్ట్ `nchars` కంటే చిన్నది. అలాగే, చిన్న మినీబ్యాచ్లు GPU ని తగినంత లోడ్ చేయవు. అందుకే అన్ని నమూనాల నుండి ఒక పెద్ద టెక్స్ట్ భాగాన్ని తీసుకుని, అన్ని ఇన్‌పుట్-అవుట్‌పుట్ జంటలను ఉత్పత్తి చేసి, వాటిని షఫుల్ చేసి, సమాన పరిమాణం గల మినీబ్యాచ్లు ఉత్పత్తి చేయడం మంచిది.\n",
"* **బహుళస్థాయి LSTM**. 2 లేదా 3 LSTM లేయర్లను ప్రయత్నించడం అర్థం. మునుపటి యూనిట్‌లో చెప్పినట్లుగా, ప్రతి LSTM లేయర్ టెక్స్ట్ నుండి నిర్దిష్ట నమూనాలను తీసుకుంటుంది, మరియు క్యారెక్టర్-స్థాయి జనరేటర్ సందర్భంలో తక్కువ LSTM స్థాయి సిలబుల్స్‌ను తీసుకోవడానికి బాధ్యత వహిస్తుంది, మరియు ఉన్నత స్థాయిలు పదాలు మరియు పద సంయోజనాల కోసం. ఇది LSTM కన్‌స్ట్రక్టర్‌కు లేయర్ల సంఖ్య పారామీటర్‌ను అందించడం ద్వారా సులభంగా అమలు చేయవచ్చు.\n",
"* మీరు **GRU యూనిట్లతో** కూడా ప్రయోగాలు చేయవచ్చు మరియు ఏవి మెరుగ్గా పనిచేస్తాయో చూడవచ్చు, అలాగే **విభిన్న హిడెన్ లేయర్ పరిమాణాలతో** కూడా. చాలా పెద్ద హిడెన్ లేయర్ ఓవర్‌ఫిట్టింగ్‌కు దారితీయవచ్చు (ఉదా: నెట్‌వర్క్ ఖచ్చితమైన టెక్స్ట్ నేర్చుకుంటుంది), మరియు చిన్న పరిమాణం మంచి ఫలితాన్ని ఇవ్వకపోవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్\n",
"\n",
"మునుపటి `generate` నిర్వచనంలో, మేము ఎప్పుడూ అత్యధిక సంభావ్యత కలిగిన అక్షరాన్ని తదుపరి అక్షరంగా తీసుకుంటున్నాము. దీని ఫలితంగా, టెక్స్ట్ తరచుగా అదే అక్షర శ్రేణుల మధ్య \"సైకిల్\" అవుతుంది, ఈ ఉదాహరణలో కనిపించేదిలా:\n",
"```\n",
"today of the second the company and a second the company ...\n",
"```\n",
"\n",
"కానీ, తదుపరి అక్షరానికి సంభావ్యత పంపిణీని చూస్తే, కొన్ని అత్యధిక సంభావ్యతల మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక అక్షరానికి 0.2 సంభావ్యత ఉండవచ్చు, మరొకదానికి 0.19, మొదలైనవి. ఉదాహరణకు, '*play*' శ్రేణిలో తదుపరి అక్షరం కోసం చూస్తున్నప్పుడు, అది స్పేస్ లేదా **e** (పదం *player* లో ఉన్నట్లు) రెండూ సమానంగా ఉండవచ్చు.\n",
"\n",
"దీని ద్వారా మనం తెలుసుకోవచ్చు, ఎప్పుడూ ఎక్కువ సంభావ్యత కలిగిన అక్షరాన్ని ఎంచుకోవడం \"న్యాయం\" కాదు, ఎందుకంటే రెండవ అత్యధికాన్ని ఎంచుకున్నా అర్థవంతమైన టెక్స్ట్ రావచ్చు. నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన సంభావ్యత పంపిణీ నుండి అక్షరాలను **సాంపిల్** చేయడం మేలు.\n",
"\n",
"ఈ సాంప్లింగ్ `multinomial` ఫంక్షన్ ఉపయోగించి చేయవచ్చు, ఇది **మల్టినోమియల్ పంపిణీ**ని అమలు చేస్తుంది. ఈ **సాఫ్ట్** టెక్స్ట్ జనరేషన్‌ను అమలు చేసే ఫంక్షన్ క్రింద నిర్వచించబడింది:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- Temperature = 0.3\n",
"Today and a company and complete an all the land the restrational the as a security and has provers the pay to and a report and the computer in the stand has filities and working the law the stations for a company and with the company and the final the first company and refight of the state and and workin\n",
"\n",
"--- Temperature = 0.8\n",
"Today he oniis its first to Aus bomblaties the marmation a to manan boogot that pirate assaid a relaid their that goverfin the the Cappets Ecrotional Assonia Cition targets it annight the w scyments Blamity #39;s TVeer Diercheg Reserals fran envyuil that of ster said access what succers of Dour-provelith\n",
"\n",
"--- Temperature = 1.0\n",
"Today holy they a 11 will meda a toket subsuaties, engins for Chanos, they's has stainger past to opening orital his thempting new Nattona was al innerforder advan-than #36;s night year his religuled talitatian what the but with Wednesday to Justment will wemen of Mark CCC Camp as Timed Nae wome a leaders\n",
"\n",
"--- Temperature = 1.3\n",
"Today gpone 2.5 fech atcusion poor cocles toparsdorM.cht Line Pamage put 43 his calt lowed to the book, that has authh-the silia rruch ailing to'ory andhes beutirsimi- Aefffive heading offil an auf eacklets is charged evis, Gunymy oy) Mony has it after-sloythyor loveId out filme, the Natabl -Najuntaxiggs \n",
"\n",
"--- Temperature = 1.8\n",
"Today plary, P.slan chly\\401 mardregationly #39;t 8.1Mide) closes ,filtcon alfly playin roven!\\grea.-QFBEP: Iss onfarchQ/itilia CCf Zivesigntwasta orce.-Peul-aw.uicrin of fuglinfsut aftaningwo, MIEX awayew Aice Woiduar Corvagiugge oppo esig ThusBratourid canthly-RyI.co lagitems\\eexciaishes.conBabntusmor I\n",
"\n"
]
}
],
"source": [
"def generate_soft(net,size=100,start='today ',temperature=1.0):\n",
" chars = list(start)\n",
" out, s = net(enc(chars).view(1,-1).to(device))\n",
" for i in range(size):\n",
" #nc = torch.argmax(out[0][-1])\n",
" out_dist = out[0][-1].div(temperature).exp()\n",
" nc = torch.multinomial(out_dist,1)[0]\n",
" chars.append(vocab.get_itos()[nc])\n",
" out, s = net(nc.view(1,-1),s)\n",
" return ''.join(chars)\n",
" \n",
"for i in [0.3,0.8,1.0,1.3,1.8]:\n",
" print(f\"--- Temperature = {i}\\n{generate_soft(net,size=300,start='Today ',temperature=i)}\\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము **తాపన** అనే మరో పారామితిని పరిచయం చేసాము, ఇది మనం అత్యధిక సంభావ్యతకు ఎంత కట్టుబడి ఉండాలో సూచించడానికి ఉపయోగిస్తారు. తాపన 1.0 అయితే, మనం సరాసరి మల్టినోమియల్ శాంప్లింగ్ చేస్తాము, మరియు తాపన అనంతానికి చేరినప్పుడు - అన్ని సంభావ్యతలు సమానంగా మారతాయి, మరియు మనం యాదృచ్ఛికంగా తదుపరి అక్షరాన్ని ఎంచుకుంటాము. క్రింది ఉదాహరణలో, తాపనను చాలా పెంచినప్పుడు టెక్స్ట్ అర్థరహితంగా మారిపోతుందని, మరియు అది 0కి దగ్గరగా ఉన్నప్పుడు \"సైకిల్డ్\" కఠినంగా ఉత్పత్తి చేసిన టెక్స్ట్ లాగా కనిపిస్తుందని మనం గమనించవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "7673cd150d96c74c6d6011460094efb4",
"translation_date": "2025-11-26T02:10:27+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# జనరేటివ్ నెట్‌వర్క్స్\n",
"\n",
"రీకరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రీకరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, అంటే అవి పదాల క్రమాన్ని నేర్చుకుని, ఒక సీక్వెన్స్‌లో తదుపరి పదం కోసం అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి అనుమతిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.\n",
"\n",
"మునుపటి యూనిట్‌లో చర్చించిన RNN నిర్మాణంలో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రీకరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు ఒక **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, అవి కొంత ప్రారంభ స్థితి వెక్టర్‌ను మాత్రమే తీసుకుని, ఆపై అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.\n",
"\n",
"ఈ నోట్‌బుక్‌లో, మేము టెక్స్ట్‌ను ఉత్పత్తి చేయడంలో సహాయపడే సాదా జనరేటివ్ మోడల్స్‌పై దృష్టి సారిస్తాము. సౌలభ్యానికి, మనం **అక్షర స్థాయి నెట్‌వర్క్**ను నిర్మిద్దాం, ఇది అక్షరాల వారీగా టెక్స్ట్‌ను ఉత్పత్తి చేస్తుంది. శిక్షణ సమయంలో, మనం కొంత టెక్స్ట్ కార్పస్ తీసుకుని, దాన్ని అక్షరాల సీక్వెన్స్‌లుగా విభజించాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"import numpy as np\n",
"from torchnlp import *\n",
"train_dataset,test_dataset,classes,vocab = load_dataset()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అక్షర పదసంపద నిర్మాణం\n",
"\n",
"అక్షర స్థాయి జనరేటివ్ నెట్‌వర్క్‌ను నిర్మించడానికి, మేము వచనం పదాల స్థానంలో వ్యక్తిగత అక్షరాలుగా విభజించాలి. ఇది వేరే టోకనైజర్‌ను నిర్వచించడం ద్వారా చేయవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vocabulary size = 82\n",
"Encoding of 'a' is 1\n",
"Character with code 13 is c\n"
]
}
],
"source": [
"def char_tokenizer(words):\n",
" return list(words) #[word for word in words]\n",
"\n",
"counter = collections.Counter()\n",
"for (label, line) in train_dataset:\n",
" counter.update(char_tokenizer(line))\n",
"vocab = torchtext.vocab.vocab(counter)\n",
"\n",
"vocab_size = len(vocab)\n",
"print(f\"Vocabulary size = {vocab_size}\")\n",
"print(f\"Encoding of 'a' is {vocab.get_stoi()['a']}\")\n",
"print(f\"Character with code 13 is {vocab.get_itos()[13]}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన డేటాసెట్ నుండి టెక్స్ట్‌ను ఎలా ఎన్‌కోడ్ చేయగలమో ఉదాహరణ చూద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([ 0, 1, 2, 2, 3, 4, 5, 6, 3, 7, 8, 1, 9, 10, 3, 11, 2, 1,\n",
" 12, 3, 7, 1, 13, 14, 3, 15, 16, 5, 17, 3, 5, 18, 8, 3, 7, 2,\n",
" 1, 13, 14, 3, 19, 20, 8, 21, 5, 8, 9, 10, 22, 3, 20, 8, 21, 5,\n",
" 8, 9, 10, 3, 23, 3, 4, 18, 17, 9, 5, 23, 10, 8, 2, 2, 8, 9,\n",
" 10, 24, 3, 0, 1, 2, 2, 3, 4, 5, 9, 8, 8, 5, 25, 10, 3, 26,\n",
" 12, 27, 16, 26, 2, 27, 16, 28, 29, 30, 1, 16, 26, 3, 17, 31, 3, 21,\n",
" 2, 5, 9, 1, 23, 13, 32, 16, 27, 13, 10, 24, 3, 1, 9, 8, 3, 10,\n",
" 8, 8, 27, 16, 28, 3, 28, 9, 8, 8, 16, 3, 1, 28, 1, 27, 16, 6])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def enc(x):\n",
" return torch.LongTensor(encode(x,voc=vocab,tokenizer=char_tokenizer))\n",
"\n",
"enc(train_dataset[0][1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## జనరేటివ్ RNN శిక్షణ\n",
"\n",
"RNN ను టెక్స్ట్ ఉత్పత్తి చేయడానికి శిక్షణ ఇవ్వడానికి మనం అనుసరించే విధానం ఈ విధంగా ఉంటుంది. ప్రతి దశలో, మనం `nchars` పొడవైన అక్షరాల సీక్వెన్స్ తీసుకుని, ప్రతి ఇన్‌పుట్ అక్షరానికి తదుపరి అవుట్‌పుట్ అక్షరాన్ని నెట్‌వర్క్ ఉత్పత్తి చేయమని అడుగుతాము:\n",
"\n",
"!['HELLO' అనే పదం RNN ద్వారా ఉత్పత్తి చేయబడుతున్న ఉదాహరణను చూపించే చిత్రం.](../../../../../translated_images/rnn-generate.56c54afb52f9781d.te.png)\n",
"\n",
"నిజమైన పరిస్థితులపై ఆధారపడి, మనం కొన్ని ప్రత్యేక అక్షరాలను కూడా చేర్చాలనుకోవచ్చు, ఉదాహరణకు *end-of-sequence* `<eos>`. మన సందర్భంలో, మనం నిరంతర టెక్స్ట్ ఉత్పత్తి కోసం నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలనుకుంటున్నాము, కాబట్టి ప్రతి సీక్వెన్స్ పరిమాణాన్ని `nchars` టోకెన్లకు సమానంగా స్థిరపరుస్తాము. ఫలితంగా, ప్రతి శిక్షణ ఉదాహరణలో `nchars` ఇన్‌పుట్లు మరియు `nchars` అవుట్‌పుట్లు ఉంటాయి (ఇవి ఇన్‌పుట్ సీక్వెన్స్‌ను ఒక అక్షరం ఎడమకు షిఫ్ట్ చేసినవి). మినీబ్యాచ్‌లో ఇలాంటి అనేక సీక్వెన్స్‌లు ఉంటాయి.\n",
"\n",
"మినీబ్యాచ్‌లను ఉత్పత్తి చేసే విధానం ఏమిటంటే, ప్రతి వార్తా టెక్స్ట్ `l` పొడవు ఉన్నదాన్ని తీసుకుని, అందులోని అన్ని సాధ్యమైన ఇన్‌పుట్-అవుట్‌పుట్ కలయికలను ఉత్పత్తి చేయడం (ఇవి `l-nchars` సంఖ్యలో ఉంటాయి). అవి ఒక మినీబ్యాచ్‌ను ఏర్పరుస్తాయి, మరియు శిక్షణ ప్రతి దశలో మినీబ్యాచ్ పరిమాణం వేరుగా ఉంటుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(tensor([[ 0, 1, 2, ..., 28, 29, 30],\n",
" [ 1, 2, 2, ..., 29, 30, 1],\n",
" [ 2, 2, 3, ..., 30, 1, 16],\n",
" ...,\n",
" [20, 8, 21, ..., 1, 28, 1],\n",
" [ 8, 21, 5, ..., 28, 1, 27],\n",
" [21, 5, 8, ..., 1, 27, 16]]),\n",
" tensor([[ 1, 2, 2, ..., 29, 30, 1],\n",
" [ 2, 2, 3, ..., 30, 1, 16],\n",
" [ 2, 3, 4, ..., 1, 16, 26],\n",
" ...,\n",
" [ 8, 21, 5, ..., 28, 1, 27],\n",
" [21, 5, 8, ..., 1, 27, 16],\n",
" [ 5, 8, 9, ..., 27, 16, 6]]))"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nchars = 100\n",
"\n",
"def get_batch(s,nchars=nchars):\n",
" ins = torch.zeros(len(s)-nchars,nchars,dtype=torch.long,device=device)\n",
" outs = torch.zeros(len(s)-nchars,nchars,dtype=torch.long,device=device)\n",
" for i in range(len(s)-nchars):\n",
" ins[i] = enc(s[i:i+nchars])\n",
" outs[i] = enc(s[i+1:i+nchars+1])\n",
" return ins,outs\n",
"\n",
"get_batch(train_dataset[0][1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు జనరేటర్ నెట్‌వర్క్‌ను నిర్వచిద్దాం. ఇది మునుపటి యూనిట్‌లో చర్చించిన ఏదైనా రికరెంట్ సెల్ ఆధారంగా ఉండవచ్చు (సింపుల్, LSTM లేదా GRU). మన ఉదాహరణలో మనం LSTM ఉపయోగిస్తాము.\n",
"\n",
"నెట్‌వర్క్ అక్షరాలను ఇన్‌పుట్‌గా తీసుకుంటుంది, మరియు పదసంపద పరిమాణం చాలా చిన్నది కాబట్టి, ఎంబెడ్డింగ్ లేయర్ అవసరం లేదు, వన్-హాట్-ఎంకోడ్ చేసిన ఇన్‌పుట్ నేరుగా LSTM సెల్‌కు వెళ్లవచ్చు. అయితే, మనం అక్షర సంఖ్యలను ఇన్‌పుట్‌గా పంపిస్తున్నందున, వాటిని LSTM‌కు పంపించే ముందు వన్-హాట్-ఎంకోడ్ చేయాలి. ఇది `forward` పాస్ సమయంలో `one_hot` ఫంక్షన్‌ను పిలవడం ద్వారా జరుగుతుంది. అవుట్‌పుట్ ఎంకోడర్ ఒక లీనియర్ లేయర్ అవుతుంది, ఇది హిడెన్ స్టేట్‌ను వన్-హాట్-ఎంకోడ్ చేసిన అవుట్‌పుట్‌గా మార్చుతుంది.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class LSTMGenerator(torch.nn.Module):\n",
" def __init__(self, vocab_size, hidden_dim):\n",
" super().__init__()\n",
" self.rnn = torch.nn.LSTM(vocab_size,hidden_dim,batch_first=True)\n",
" self.fc = torch.nn.Linear(hidden_dim, vocab_size)\n",
"\n",
" def forward(self, x, s=None):\n",
" x = torch.nn.functional.one_hot(x,vocab_size).to(torch.float32)\n",
" x,s = self.rnn(x,s)\n",
" return self.fc(x),s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"శిక్షణ సమయంలో, మేము ఉత్పత్తి చేసిన టెక్స్ట్‌ను నమూనా చేయగలగాలి. దానికి, మేము `generate` అనే ఫంక్షన్‌ను నిర్వచిస్తాము, ఇది ప్రారంభ స్ట్రింగ్ `start` నుండి ప్రారంభించి `size` పొడవైన అవుట్పుట్ స్ట్రింగ్‌ను ఉత్పత్తి చేస్తుంది.\n",
"\n",
"ఇది పనిచేసే విధానం ఇలా ఉంటుంది. మొదట, మేము మొత్తం ప్రారంభ స్ట్రింగ్‌ను నెట్‌వర్క్ ద్వారా పంపించి, అవుట్పుట్ స్టేట్ `s` మరియు తదుపరి అంచనా వేసిన అక్షరం `out` ను తీసుకుంటాము. `out` ఒక హాట్ ఎన్‌కోడ్ చేయబడినది కాబట్టి, అక్షర సూచిక `nc` ను పొందడానికి `argmax` తీసుకుంటాము, మరియు `itos` ఉపయోగించి నిజమైన అక్షరాన్ని తెలుసుకుని, దాన్ని ఫలితంగా వచ్చిన అక్షరాల జాబితా `chars` కు జోడిస్తాము. ఒక అక్షరం ఉత్పత్తి చేసే ఈ ప్రక్రియను అవసరమైన అక్షరాల సంఖ్య `size` సార్లు పునరావృతం చేస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def generate(net,size=100,start='today '):\n",
" chars = list(start)\n",
" out, s = net(enc(chars).view(1,-1).to(device))\n",
" for i in range(size):\n",
" nc = torch.argmax(out[0][-1])\n",
" chars.append(vocab.get_itos()[nc])\n",
" out, s = net(nc.view(1,-1),s)\n",
" return ''.join(chars)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు ట్రైనింగ్ చేద్దాం! ట్రైనింగ్ లూప్ మన గత ఉదాహరణలన్నింటిలో ఉన్నట్లే ఉంటుంది, కానీ ఖచ్చితత్వం బదులు ప్రతి 1000 epochsకి ఒక నమూనా రూపొందించిన టెక్స్ట్ ముద్రిస్తాము.\n",
"\n",
"నష్టాన్ని లెక్కించే విధానంపై ప్రత్యేక శ్రద్ధ అవసరం. మనం ఒక హాట్-ఎంకోడెడ్ అవుట్‌పుట్ `out` మరియు అంచనా టెక్స్ట్ `text_out` (అక్షర సూచికల జాబితా) ఇవ్వబడినప్పుడు నష్టాన్ని లెక్కించాలి. అదృష్టవశాత్తు, `cross_entropy` ఫంక్షన్ మొదటి ఆర్గ్యుమెంట్‌గా సాధారణీకరించని నెట్‌వర్క్ అవుట్‌పుట్‌ను, రెండవ ఆర్గ్యుమెంట్‌గా క్లాస్ నంబర్‌ను ఆశిస్తుంది, ఇది మన దగ్గర ఉన్నదే. ఇది మినీబ్యాచ్ పరిమాణంపై ఆటోమేటిక్ సగటు కూడా చేస్తుంది.\n",
"\n",
"మేము ట్రైనింగ్‌ను `samples_to_train` నమూనాల వరకు పరిమితం చేస్తాము, చాలా ఎక్కువ సమయం వేచి ఉండకుండా ఉండేందుకు. మీరు ప్రయోగాలు చేసి, ఎక్కువ epochs కోసం (అప్పుడు ఈ కోడ్ చుట్టూ మరో లూప్ సృష్టించాల్సి ఉంటుంది) దీర్ఘకాలిక ట్రైనింగ్ ప్రయత్నించమని మేము ప్రోత్సహిస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Current loss = 4.398899078369141\n",
"today sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr sr s\n",
"Current loss = 2.161320447921753\n",
"today and to the tor to to the tor to to the tor to to the tor to to the tor to to the tor to to the tor t\n",
"Current loss = 1.6722588539123535\n",
"today and the court to the could to the could to the could to the could to the could to the could to the c\n",
"Current loss = 2.423795223236084\n",
"today and a second to the conternation of the conternation of the conternation of the conternation of the \n",
"Current loss = 1.702607274055481\n",
"today and the company to the company to the company to the company to the company to the company to the co\n",
"Current loss = 1.692358136177063\n",
"today and the company to the company to the company to the company to the company to the company to the co\n",
"Current loss = 1.9722288846969604\n",
"today and the control the control the control the control the control the control the control the control \n",
"Current loss = 1.8705692291259766\n",
"today and the second to the second to the second to the second to the second to the second to the second t\n",
"Current loss = 1.7626899480819702\n",
"today and a security and a security and a security and a security and a security and a security and a secu\n",
"Current loss = 1.5574463605880737\n",
"today and the company and the company and the company and the company and the company and the company and \n",
"Current loss = 1.5620026588439941\n",
"today and the be that the be the be that the be the be that the be the be that the be the be that the be t\n"
]
}
],
"source": [
"net = LSTMGenerator(vocab_size,64).to(device)\n",
"\n",
"samples_to_train = 10000\n",
"optimizer = torch.optim.Adam(net.parameters(),0.01)\n",
"loss_fn = torch.nn.CrossEntropyLoss()\n",
"net.train()\n",
"for i,x in enumerate(train_dataset):\n",
" # x[0] is class label, x[1] is text\n",
" if len(x[1])-nchars<10:\n",
" continue\n",
" samples_to_train-=1\n",
" if not samples_to_train: break\n",
" text_in, text_out = get_batch(x[1])\n",
" optimizer.zero_grad()\n",
" out,s = net(text_in)\n",
" loss = torch.nn.functional.cross_entropy(out.view(-1,vocab_size),text_out.flatten()) #cross_entropy(out,labels)\n",
" loss.backward()\n",
" optimizer.step()\n",
" if i%1000==0:\n",
" print(f\"Current loss = {loss.item()}\")\n",
" print(generate(net))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఈ ఉదాహరణ ఇప్పటికే మంచి టెక్స్ట్‌ను ఉత్పత్తి చేస్తోంది, కానీ దీన్ని మరింత మెరుగుపరచవచ్చు కొన్ని మార్గాల్లో:\n",
"* **మినీబ్యాచ్ ఉత్పత్తి మెరుగుపరచడం**. ట్రైనింగ్ కోసం డేటాను సిద్ధం చేసిన విధానం ఒక్కో నమూనా నుండి ఒక మినీబ్యాచ్‌ను ఉత్పత్తి చేయడం. ఇది సరైనది కాదు, ఎందుకంటే మినీబ్యాచ్లు అన్ని వేర్వేరు పరిమాణాలుగా ఉంటాయి, మరియు వాటిలో కొన్ని ఉత్పత్తి చేయలేవు, ఎందుకంటే టెక్స్ట్ `nchars` కంటే చిన్నది. అలాగే, చిన్న మినీబ్యాచ్లు GPU ని తగినంత లోడ్ చేయవు. అందుకే అన్ని నమూనాల నుండి ఒక పెద్ద టెక్స్ట్ భాగాన్ని తీసుకుని, అన్ని ఇన్‌పుట్-అవుట్‌పుట్ జంటలను ఉత్పత్తి చేసి, వాటిని షఫుల్ చేసి, సమాన పరిమాణం గల మినీబ్యాచ్లు ఉత్పత్తి చేయడం మంచిది.\n",
"* **బహుళస్థాయి LSTM**. 2 లేదా 3 LSTM లేయర్లను ప్రయత్నించడం అర్థం. మునుపటి యూనిట్‌లో చెప్పినట్లుగా, ప్రతి LSTM లేయర్ టెక్స్ట్ నుండి నిర్దిష్ట నమూనాలను తీసుకుంటుంది, మరియు క్యారెక్టర్-స్థాయి జనరేటర్ సందర్భంలో తక్కువ LSTM స్థాయి సిలబుల్స్‌ను తీసుకోవడానికి బాధ్యత వహిస్తుంది, మరియు ఉన్నత స్థాయిలు పదాలు మరియు పద సంయోజనాల కోసం. ఇది LSTM కన్‌స్ట్రక్టర్‌కు లేయర్ల సంఖ్య పారామీటర్‌ను అందించడం ద్వారా సులభంగా అమలు చేయవచ్చు.\n",
"* మీరు **GRU యూనిట్లతో** కూడా ప్రయోగాలు చేయవచ్చు మరియు ఏవి మెరుగ్గా పనిచేస్తాయో చూడవచ్చు, అలాగే **విభిన్న హిడెన్ లేయర్ పరిమాణాలతో** కూడా. చాలా పెద్ద హిడెన్ లేయర్ ఓవర్‌ఫిట్టింగ్‌కు దారితీయవచ్చు (ఉదా: నెట్‌వర్క్ ఖచ్చితమైన టెక్స్ట్ నేర్చుకుంటుంది), మరియు చిన్న పరిమాణం మంచి ఫలితాన్ని ఇవ్వకపోవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్\n",
"\n",
"మునుపటి `generate` నిర్వచనంలో, మేము ఎప్పుడూ అత్యధిక సంభావ్యత కలిగిన అక్షరాన్ని తదుపరి అక్షరంగా తీసుకుంటున్నాము. దీని ఫలితంగా, టెక్స్ట్ తరచుగా అదే అక్షర శ్రేణుల మధ్య \"సైకిల్\" అవుతుంది, ఈ ఉదాహరణలో కనిపించేదిలా:\n",
"```\n",
"today of the second the company and a second the company ...\n",
"```\n",
"\n",
"కానీ, తదుపరి అక్షరానికి సంభావ్యత పంపిణీని చూస్తే, కొన్ని అత్యధిక సంభావ్యతల మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక అక్షరానికి 0.2 సంభావ్యత ఉండవచ్చు, మరొకదానికి 0.19, మొదలైనవి. ఉదాహరణకు, '*play*' శ్రేణిలో తదుపరి అక్షరం కోసం చూస్తున్నప్పుడు, అది స్పేస్ లేదా **e** (పదం *player* లో ఉన్నట్లు) రెండూ సమానంగా ఉండవచ్చు.\n",
"\n",
"దీని ద్వారా మనం తెలుసుకోవచ్చు, ఎప్పుడూ ఎక్కువ సంభావ్యత కలిగిన అక్షరాన్ని ఎంచుకోవడం \"న్యాయం\" కాదు, ఎందుకంటే రెండవ అత్యధికాన్ని ఎంచుకున్నా అర్థవంతమైన టెక్స్ట్ రావచ్చు. నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన సంభావ్యత పంపిణీ నుండి అక్షరాలను **సాంపిల్** చేయడం మేలు.\n",
"\n",
"ఈ సాంప్లింగ్ `multinomial` ఫంక్షన్ ఉపయోగించి చేయవచ్చు, ఇది **మల్టినోమియల్ పంపిణీ**ని అమలు చేస్తుంది. ఈ **సాఫ్ట్** టెక్స్ట్ జనరేషన్‌ను అమలు చేసే ఫంక్షన్ క్రింద నిర్వచించబడింది:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- Temperature = 0.3\n",
"Today and a company and complete an all the land the restrational the as a security and has provers the pay to and a report and the computer in the stand has filities and working the law the stations for a company and with the company and the final the first company and refight of the state and and workin\n",
"\n",
"--- Temperature = 0.8\n",
"Today he oniis its first to Aus bomblaties the marmation a to manan boogot that pirate assaid a relaid their that goverfin the the Cappets Ecrotional Assonia Cition targets it annight the w scyments Blamity #39;s TVeer Diercheg Reserals fran envyuil that of ster said access what succers of Dour-provelith\n",
"\n",
"--- Temperature = 1.0\n",
"Today holy they a 11 will meda a toket subsuaties, engins for Chanos, they's has stainger past to opening orital his thempting new Nattona was al innerforder advan-than #36;s night year his religuled talitatian what the but with Wednesday to Justment will wemen of Mark CCC Camp as Timed Nae wome a leaders\n",
"\n",
"--- Temperature = 1.3\n",
"Today gpone 2.5 fech atcusion poor cocles toparsdorM.cht Line Pamage put 43 his calt lowed to the book, that has authh-the silia rruch ailing to'ory andhes beutirsimi- Aefffive heading offil an auf eacklets is charged evis, Gunymy oy) Mony has it after-sloythyor loveId out filme, the Natabl -Najuntaxiggs \n",
"\n",
"--- Temperature = 1.8\n",
"Today plary, P.slan chly\\401 mardregationly #39;t 8.1Mide) closes ,filtcon alfly playin roven!\\grea.-QFBEP: Iss onfarchQ/itilia CCf Zivesigntwasta orce.-Peul-aw.uicrin of fuglinfsut aftaningwo, MIEX awayew Aice Woiduar Corvagiugge oppo esig ThusBratourid canthly-RyI.co lagitems\\eexciaishes.conBabntusmor I\n",
"\n"
]
}
],
"source": [
"def generate_soft(net,size=100,start='today ',temperature=1.0):\n",
" chars = list(start)\n",
" out, s = net(enc(chars).view(1,-1).to(device))\n",
" for i in range(size):\n",
" #nc = torch.argmax(out[0][-1])\n",
" out_dist = out[0][-1].div(temperature).exp()\n",
" nc = torch.multinomial(out_dist,1)[0]\n",
" chars.append(vocab.get_itos()[nc])\n",
" out, s = net(nc.view(1,-1),s)\n",
" return ''.join(chars)\n",
" \n",
"for i in [0.3,0.8,1.0,1.3,1.8]:\n",
" print(f\"--- Temperature = {i}\\n{generate_soft(net,size=300,start='Today ',temperature=i)}\\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము **తాపన** అనే మరో పారామితిని పరిచయం చేసాము, ఇది మనం అత్యధిక సంభావ్యతకు ఎంత కట్టుబడి ఉండాలో సూచించడానికి ఉపయోగిస్తారు. తాపన 1.0 అయితే, మనం సరాసరి మల్టినోమియల్ శాంప్లింగ్ చేస్తాము, మరియు తాపన అనంతానికి చేరినప్పుడు - అన్ని సంభావ్యతలు సమానంగా మారతాయి, మరియు మనం యాదృచ్ఛికంగా తదుపరి అక్షరాన్ని ఎంచుకుంటాము. క్రింది ఉదాహరణలో, తాపనను చాలా పెంచినప్పుడు టెక్స్ట్ అర్థరహితంగా మారిపోతుందని, మరియు అది 0కి దగ్గరగా ఉన్నప్పుడు \"సైకిల్డ్\" కఠినంగా ఉత్పత్తి చేసిన టెక్స్ట్ లాగా కనిపిస్తుందని మనం గమనించవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "7673cd150d96c74c6d6011460094efb4",
"translation_date": "2025-11-26T02:10:27+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -1,494 +1,494 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# జనరేటివ్ నెట్‌వర్క్స్\n",
"\n",
"రీకరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రీకరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, అంటే అవి పదాల క్రమాన్ని నేర్చుకుని, ఒక సీక్వెన్స్‌లో తదుపరి పదం కోసం అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి వీలు కల్పిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.\n",
"\n",
"మునుపటి యూనిట్‌లో చర్చించిన RNN నిర్మాణంలో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రీకరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు ఒక **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, అవి కొంత ప్రారంభ స్థితి వెక్టర్‌ను తీసుకుని, ఆ తర్వాత అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.\n",
"\n",
"ఈ నోట్‌బుక్‌లో, మనం సులభమైన జనరేటివ్ మోడల్స్‌పై దృష్టి సారించబోతున్నాము, ఇవి మనకు టెక్స్ట్‌ను ఉత్పత్తి చేయడంలో సహాయపడతాయి. సౌలభ్యం కోసం, మనం **అక్షర స్థాయి నెట్‌వర్క్**ను నిర్మిద్దాం, ఇది అక్షరాలవారీగా టెక్స్ట్‌ను ఉత్పత్తి చేస్తుంది. శిక్షణ సమయంలో, మనం కొంత టెక్స్ట్ కార్పస్ తీసుకుని, దాన్ని అక్షరాల సీక్వెన్స్‌లుగా విభజించాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import tensorflow_datasets as tfds\n",
"import numpy as np\n",
"\n",
"ds_train, ds_test = tfds.load('ag_news_subset').values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అక్షర పదకోశం నిర్మాణం\n",
"\n",
"అక్షర స్థాయి జనరేటివ్ నెట్‌వర్క్‌ను నిర్మించడానికి, మేము టెక్స్ట్‌ను పదాల స్థానంలో వ్యక్తిగత అక్షరాలుగా విభజించాలి. మునుపటి `TextVectorization` లేయర్ ఇది చేయలేకపోతుంది, కాబట్టి మాకు రెండు ఎంపికలు ఉన్నాయి:\n",
"\n",
"* టెక్స్ట్‌ను మానవీయంగా లోడ్ చేసి 'చేతితో' టోకనైజేషన్ చేయడం, [ఈ అధికారిక Keras ఉదాహరణ](https://keras.io/examples/generative/lstm_character_level_text_generation/)లో చూపినట్లుగా\n",
"* అక్షర స్థాయి టోకనైజేషన్ కోసం `Tokenizer` క్లాస్ ఉపయోగించడం.\n",
"\n",
"మేము రెండవ ఎంపికను ఎంచుకుంటాము. `Tokenizer` ను పదాలుగా కూడా టోకనైజ్ చేయడానికి ఉపయోగించవచ్చు, కాబట్టి అక్షర స్థాయి నుండి పద స్థాయి టోకనైజేషన్‌కు సులభంగా మారవచ్చు.\n",
"\n",
"అక్షర స్థాయి టోకనైజేషన్ చేయడానికి, `char_level=True` పారామీటర్‌ను ఇవ్వాలి:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def extract_text(x):\n",
" return x['title']+' '+x['description']\n",
"\n",
"def tupelize(x):\n",
" return (extract_text(x),x['label'])\n",
"\n",
"tokenizer = keras.preprocessing.text.Tokenizer(char_level=True,lower=False)\n",
"tokenizer.fit_on_texts([x['title'].numpy().decode('utf-8') for x in ds_train])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము కూడా ఒక ప్రత్యేక టోకెన్‌ను **సీక్వెన్స్ ముగింపు** సూచించడానికి ఉపయోగించాలనుకుంటున్నాము, దీన్ని మేము `<eos>` అని పిలుస్తాము. దీన్ని మనం చేతితో వాక్యకోశంలో చేర్చుదాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"eos_token = len(tokenizer.word_index)+1\n",
"tokenizer.word_index['<eos>'] = eos_token\n",
"\n",
"vocab_size = eos_token + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, టెక్స్ట్‌ను సంఖ్యల సీక్వెన్స్‌లుగా ఎన్‌కోడ్ చేయడానికి, మనం ఉపయోగించవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[[48, 2, 10, 10, 5, 44, 1, 25, 5, 8, 10, 13, 78]]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tokenizer.texts_to_sequences(['Hello, world!'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## శీర్షికలు సృష్టించడానికి జనరేటివ్ RNN శిక్షణ\n",
"\n",
"మేము వార్తా శీర్షికలను సృష్టించడానికి RNN ను శిక్షణ ఇవ్వడానికి విధానం ఈ విధంగా ఉంటుంది. ప్రతి దశలో, ఒక శీర్షిక తీసుకుని దాన్ని RNN లో ఇన్పుట్ గా ఇస్తాము, మరియు ప్రతి ఇన్పుట్ అక్షరానికి తర్వాతి అవుట్పుట్ అక్షరాన్ని నెట్‌వర్క్ సృష్టించాలని అడుగుతాము:\n",
"\n",
"!['HELLO' అనే పదం RNN ద్వారా సృష్టించబడుతున్న ఉదాహరణను చూపించే చిత్రం.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.te.png)\n",
"\n",
"మన సీక్వెన్స్ చివరి అక్షరానికి, నెట్‌వర్క్ `<eos>` టోకెన్ సృష్టించాలని అడుగుతాము.\n",
"\n",
"ఇక్కడ ఉపయోగిస్తున్న జనరేటివ్ RNN ప్రధాన తేడా ఏమిటంటే, మేము RNN యొక్క ప్రతి దశ నుండి అవుట్పుట్ తీసుకుంటాము, కేవలం చివరి సెల్ నుండి మాత్రమే కాదు. ఇది RNN సెల్ కు `return_sequences` పారామీటర్ ను సెట్ చేయడం ద్వారా సాధ్యమవుతుంది.\n",
"\n",
"కాబట్టి, శిక్షణ సమయంలో, నెట్‌వర్క్ కు ఇన్పుట్ ఒక నిర్దిష్ట పొడవు గల ఎన్‌కోడ్ చేసిన అక్షరాల సీక్వెన్స్ ఉంటుంది, అవుట్పుట్ అదే పొడవు గల సీక్వెన్స్ కానీ ఒక ఎలిమెంట్ ముందుకు షిఫ్ట్ చేయబడినది మరియు `<eos>` తో ముగిసినది. మినీబ్యాచ్ అనేది ఇలాంటి అనేక సీక్వెన్స్‌లతో ఉంటుంది, అందువల్ల అన్ని సీక్వెన్స్‌లను సరిపోల్చడానికి **padding** అవసరం.\n",
"\n",
"మనం డేటాసెట్ ను మార్చే ఫంక్షన్లు సృష్టిద్దాం. మినీబ్యాచ్ స్థాయిలో సీక్వెన్స్‌లను ప్యాడ్ చేయాలనుకుంటున్నందున, ముందుగా `.batch()` పిలిచి డేటాసెట్ ను బ్యాచ్ చేస్తాము, ఆపై `map` ద్వారా ట్రాన్స్‌ఫర్మేషన్ చేస్తాము. కాబట్టి, ట్రాన్స్‌ఫర్మేషన్ ఫంక్షన్ మొత్తం మినీబ్యాచ్ ను పారామీటర్ గా తీసుకుంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def title_batch(x):\n",
" x = [t.numpy().decode('utf-8') for t in x]\n",
" z = tokenizer.texts_to_sequences(x)\n",
" z = tf.keras.preprocessing.sequence.pad_sequences(z)\n",
" return tf.one_hot(z,vocab_size), tf.one_hot(tf.concat([z[:,1:],tf.constant(eos_token,shape=(len(z),1))],axis=1),vocab_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము ఇక్కడ చేసే కొన్ని ముఖ్యమైన విషయాలు:\n",
"* మొదట స్ట్రింగ్ టెన్సర్ నుండి అసలు టెక్స్ట్‌ను తీసుకుంటాము\n",
"* `text_to_sequences` స్ట్రింగుల జాబితాను ఇంటిజర్ టెన్సర్ల జాబితాగా మార్చుతుంది\n",
"* `pad_sequences` ఆ టెన్సర్లను వారి గరిష్ట పొడవుకు ప్యాడ్ చేస్తుంది\n",
"* చివరగా, మేము అన్ని అక్షరాలను వన్-హాట్ ఎన్‌కోడ్ చేస్తాము, అలాగే షిఫ్టింగ్ మరియు `<eos>` జోడింపును కూడా చేస్తాము. వన్-హాట్ ఎన్‌కోడ్ చేసిన అక్షరాలు ఎందుకు అవసరమో త్వరలో చూద్దాం\n",
"\n",
"కానీ, ఈ ఫంక్షన్ **Pythonic** గా ఉంటుంది, అంటే దీన్ని ఆటోమేటిక్‌గా Tensorflow కంప్యూటేషనల్ గ్రాఫ్‌గా మార్చలేము. ఈ ఫంక్షన్‌ను నేరుగా `Dataset.map` ఫంక్షన్‌లో ఉపయోగిస్తే ఎర్రర్లు వస్తాయి. అందుకే ఈ Pythonic కాల్‌ను `py_function` రాపర్ ఉపయోగించి చుట్టుకోవాలి:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def title_batch_fn(x):\n",
" x = x['title']\n",
" a,b = tf.py_function(title_batch,inp=[x],Tout=(tf.float32,tf.float32))\n",
" return a,b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక**: Pythonic మరియు Tensorflow ట్రాన్స్‌ఫర్మేషన్ ఫంక్షన్ల మధ్య తేడా కొంచెం క్లిష్టంగా అనిపించవచ్చు, మరియు మీరు dataset ను `fit` కు పంపించే ముందు సాధారణ Python ఫంక్షన్లతో ట్రాన్స్‌ఫర్మ్ చేయకపోవడం ఎందుకు అనుకుంటున్నారో ఉండవచ్చు. ఇది ఖచ్చితంగా చేయవచ్చు, కానీ `Dataset.map` ఉపయోగించడం పెద్ద లాభం కలిగిస్తుంది, ఎందుకంటే డేటా ట్రాన్స్‌ఫర్మేషన్ పైప్‌లైన్ Tensorflow కంప్యూటేషనల్ గ్రాఫ్ ఉపయోగించి అమలు చేయబడుతుంది, ఇది GPU కంప్యూటేషన్లను ఉపయోగించి CPU/GPU మధ్య డేటా మార్పిడి అవసరాన్ని తగ్గిస్తుంది.\n",
"\n",
"ఇప్పుడు మనం మన జనరేటర్ నెట్‌వర్క్‌ను నిర్మించి శిక్షణ ప్రారంభించవచ్చు. ఇది మునుపటి యూనిట్‌లో చర్చించిన ఏదైనా రికరెంట్ సెల్ (సింపుల్, LSTM లేదా GRU) ఆధారంగా ఉండవచ్చు. మన ఉదాహరణలో మనం LSTM ఉపయోగిస్తాము.\n",
"\n",
"నెట్‌వర్క్ అక్షరాలను ఇన్‌పుట్‌గా తీసుకుంటుంది, మరియు వోకాబ్యులరీ పరిమాణం చాలా చిన్నది కాబట్టి, embedding లేయర్ అవసరం లేదు, one-hot-encoded ఇన్‌పుట్ నేరుగా LSTM సెల్‌లోకి పోవచ్చు. అవుట్‌పుట్ లేయర్ `Dense` క్లాసిఫైయర్ అవుతుంది, ఇది LSTM అవుట్‌పుట్‌ను one-hot-encoded టోకెన్ నంబర్లుగా మార్చుతుంది.\n",
"\n",
"అదనంగా, మనం వేరియబుల్-లెంగ్త్ సీక్వెన్సులతో పని చేస్తున్నందున, `Masking` లేయర్ ఉపయోగించి స్ట్రింగ్‌లో ప్యాడ్ చేసిన భాగాన్ని నిర్లక్ష్యం చేసే మాస్క్ సృష్టించవచ్చు. ఇది తప్పనిసరి కాదు, ఎందుకంటే మనం `<eos>` టోకెన్ తర్వాతి అన్ని విషయాలలో ఎక్కువగా ఆసక్తి చూపడం లేదు, కానీ ఈ లేయర్ రకం గురించి కొంత అనుభవం పొందడానికి దీన్ని ఉపయోగిస్తాము. `input_shape` `(None, vocab_size)` ఉంటుంది, ఇక్కడ `None` వేరియబుల్ లెంగ్త్ సీక్వెన్స్‌ను సూచిస్తుంది, మరియు అవుట్‌పుట్ ఆకారం కూడా `(None, vocab_size)` ఉంటుంది, మీరు `summary` నుండి చూడవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"masking (Masking) (None, None, 84) 0 \n",
"_________________________________________________________________\n",
"lstm (LSTM) (None, None, 128) 109056 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, None, 84) 10836 \n",
"=================================================================\n",
"Total params: 119,892\n",
"Trainable params: 119,892\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"15000/15000 [==============================] - 229s 15ms/step - loss: 1.5385\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7fa40c1245e0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Masking(input_shape=(None,vocab_size)),\n",
" keras.layers.LSTM(128,return_sequences=True),\n",
" keras.layers.Dense(vocab_size,activation='softmax')\n",
"])\n",
"\n",
"model.summary()\n",
"model.compile(loss='categorical_crossentropy')\n",
"\n",
"model.fit(ds_train.batch(8).map(title_batch_fn))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అవుట్పుట్ ఉత్పత్తి\n",
"\n",
"మనం మోడల్‌ను శిక్షణ ఇచ్చిన తర్వాత, దాన్ని ఉపయోగించి కొంత అవుట్పుట్ ఉత్పత్తి చేయాలనుకుంటున్నాము. ముందుగా, టోకెన్ సంఖ్యల శ్రేణి ద్వారా ప్రాతినిధ్యం వహించిన టెక్స్ట్‌ను డీకోడ్ చేయడానికి ఒక మార్గం అవసరం. దీని కోసం, మనం `tokenizer.sequences_to_texts` ఫంక్షన్‌ను ఉపయోగించవచ్చు; అయితే, ఇది క్యారెక్టర్-స్థాయి టోకనైజేషన్‌తో బాగా పనిచేయదు. అందుకే, మనం tokenizer నుండి టోకెన్ల డిక్షనరీ (దాన్ని `word_index` అంటారు) తీసుకుని, ఒక రివర్స్ మ్యాప్ తయారు చేసి, మన స్వంత డీకోడింగ్ ఫంక్షన్ రాస్తాము:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"reverse_map = {val:key for key, val in tokenizer.word_index.items()}\n",
"\n",
"def decode(x):\n",
" return ''.join([reverse_map[t] for t in x])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, జనరేషన్ చేద్దాం. మనం కొన్ని స్ట్రింగ్ `start` తో ప్రారంభించి, దాన్ని సీక్వెన్స్ `inp` గా ఎన్‌కోడ్ చేస్తాము, ఆపై ప్రతి దశలో మన నెట్‌వర్క్‌ను పిలిచి తదుపరి అక్షరాన్ని అంచనా వేస్తాము.\n",
"\n",
"నెట్‌వర్క్ అవుట్‌పుట్ `out` అనేది `vocab_size` ఎలిమెంట్ల వెక్టర్, ఇది ప్రతి టోకెన్ యొక్క సంభావ్యతలను సూచిస్తుంది, మరియు `argmax` ఉపయోగించి అత్యంత సంభావ్యమైన టోకెన్ నంబర్‌ను కనుగొంటాము. ఆ తర్వాత ఆ అక్షరాన్ని జనరేట్ చేసిన టోకెన్ల జాబితాలో జోడించి, జనరేషన్ కొనసాగిస్తాము. ఒక అక్షరాన్ని జనరేట్ చేసే ఈ ప్రక్రియను అవసరమైన అక్షరాల సంఖ్య `size` సార్లు పునరావృతం చేస్తాము, మరియు `eos_token` కనిపించినప్పుడు ముందుగానే ముగిస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Today #39;s lead to strike for the strike for the strike for the strike (AFP)'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def generate(model,size=100,start='Today '):\n",
" inp = tokenizer.texts_to_sequences([start])[0]\n",
" chars = inp\n",
" for i in range(size):\n",
" out = model(tf.expand_dims(tf.one_hot(inp,vocab_size),0))[0][-1]\n",
" nc = tf.argmax(out)\n",
" if nc==eos_token:\n",
" break\n",
" chars.append(nc.numpy())\n",
" inp = inp+[nc]\n",
" return decode(chars)\n",
" \n",
"generate(model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## శిక్షణ సమయంలో నమూనా అవుట్పుట్\n",
"\n",
"మాకు *ఖచ్చితత్వం* వంటి ఉపయోగకరమైన మెట్రిక్స్ లేవు కాబట్టి, మా మోడల్ మెరుగుపడుతున్నదని చూడగల唯一 మార్గం శిక్షణ సమయంలో ఉత్పత్తి చేసిన స్ట్రింగ్‌ను **నమూనా** చేయడం మాత్రమే. దీని కోసం, మేము **కాల్‌బ్యాక్‌లు** ఉపయోగిస్తాము, అంటే `fit` ఫంక్షన్‌కు పంపగల ఫంక్షన్లు, ఇవి శిక్షణ సమయంలో నిరంతరం పిలవబడతాయి.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/3\n",
"15000/15000 [==============================] - 226s 15ms/step - loss: 1.2703\n",
"Today #39;s a lead in the company for the strike\n",
"Epoch 2/3\n",
"15000/15000 [==============================] - 227s 15ms/step - loss: 1.2057\n",
"Today #39;s the Market Service on Security Start (AP)\n",
"Epoch 3/3\n",
"15000/15000 [==============================] - 226s 15ms/step - loss: 1.1752\n",
"Today #39;s a line on the strike to start for the start\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7fa40c74e3d0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sampling_callback = keras.callbacks.LambdaCallback(\n",
" on_epoch_end = lambda batch, logs: print(generate(model))\n",
")\n",
"\n",
"model.fit(ds_train.batch(8).map(title_batch_fn),callbacks=[sampling_callback],epochs=3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఈ ఉదాహరణ ఇప్పటికే కొంత మంచి టెక్స్ట్‌ను ఉత్పత్తి చేస్తోంది, కానీ దీన్ని మరింత మెరుగుపరచవచ్చు కొన్ని మార్గాల్లో:\n",
"* **మరింత టెక్స్ట్**. మనం మా పనికి కేవలం శీర్షికలను మాత్రమే ఉపయోగించాము, కానీ మీరు పూర్తి టెక్స్ట్‌తో ప్రయోగాలు చేయాలనుకోవచ్చు. RNNలు పొడవైన సీక్వెన్సులను నిర్వహించడంలో అంతగా బాగుండవు, కాబట్టి వాటిని చిన్న వాక్యాలుగా విభజించడం లేదా ఎప్పుడూ ఒక నిర్దిష్ట సీక్వెన్స్ పొడవైన `num_chars` (ఉదాహరణకు, 256) పై శిక్షణ ఇవ్వడం మంచిది. పై ఉదాహరణను ఇలాంటి నిర్మాణంగా మార్చడానికి మీరు [అధికారిక Keras ట్యుటోరియల్](https://keras.io/examples/generative/lstm_character_level_text_generation/) ను ప్రేరణగా తీసుకోవచ్చు.\n",
"* **బహుళస్థాయి LSTM**. 2 లేదా 3 LSTM లేయర్లను ప్రయత్నించడం మంచిది. మునుపటి యూనిట్‌లో చెప్పినట్లుగా, ప్రతి LSTM లేయర్ టెక్స్ట్ నుండి నిర్దిష్ట నమూనాలను తీసుకుంటుంది, మరియు క్యారెక్టర్-స్థాయి జనరేటర్ సందర్భంలో తక్కువ LSTM స్థాయి సిలబుల్స్‌ను గుర్తించడానికి బాధ్యత వహిస్తుందని, మరియు ఉన్నత స్థాయిలు పదాలు మరియు పద సంయోజనాల కోసం ఉంటాయని ఆశించవచ్చు. ఇది LSTM కన్‌స్ట్రక్టర్‌కు లేయర్ల సంఖ్య పారామీటర్‌ను అందించడం ద్వారా సులభంగా అమలు చేయవచ్చు.\n",
"* మీరు **GRU యూనిట్లతో** కూడా ప్రయోగాలు చేయాలనుకోవచ్చు మరియు ఏవి మెరుగ్గా పనిచేస్తాయో చూడవచ్చు, అలాగే **విభిన్న హిడెన్ లేయర్ పరిమాణాలతో** కూడా ప్రయత్నించవచ్చు. చాలా పెద్ద హిడెన్ లేయర్ ఓవర్‌ఫిట్టింగ్‌కు దారితీయవచ్చు (ఉదా: నెట్‌వర్క్ ఖచ్చితమైన టెక్స్ట్ నేర్చుకుంటుంది), మరియు చిన్న పరిమాణం మంచి ఫలితాన్ని ఇవ్వకపోవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్\n",
"\n",
"మునుపటి `generate` నిర్వచనంలో, మేము ఎప్పుడూ అత్యధిక probability ఉన్న అక్షరాన్ని తదుపరి అక్షరంగా తీసుకుంటున్నాము. దీని వల్ల టెక్స్ట్ తరచుగా అదే అక్షరాల సీక్వెన్స్‌ల మధ్య \"సైకిల్\" అవుతుంది, ఈ ఉదాహరణలో కనిపించేలా:\n",
"```\n",
"today of the second the company and a second the company ...\n",
"```\n",
"\n",
"కానీ, తదుపరి అక్షరానికి probability distribution చూస్తే, కొన్ని అత్యధిక probabilities మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక అక్షరానికి probability 0.2 ఉండొచ్చు, మరొకదానికి 0.19 ఉండొచ్చు. ఉదాహరణకు '*play*' సీక్వెన్స్‌లో తదుపరి అక్షరం space లేదా **e** (పదం *player* లో ఉన్నట్లు) రెండూ సమానంగా ఉండొచ్చు.\n",
"\n",
"దీని ద్వారా మనం తెలుసుకోవాలి, ఎప్పుడూ ఎక్కువ probability ఉన్న అక్షరాన్ని ఎంచుకోవడం \"న్యాయం\" కాదు, ఎందుకంటే రెండవ అత్యధిక probability ఉన్న అక్షరాన్ని ఎంచుకున్నా అర్థవంతమైన టెక్స్ట్ రావచ్చు. కాబట్టి నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన probability distribution నుండి అక్షరాలను **సాంపిల్** చేయడం మంచిది.\n",
"\n",
"ఈ సాంప్లింగ్ `np.multinomial` ఫంక్షన్ ఉపయోగించి చేయవచ్చు, ఇది **మల్టినోమియల్ డిస్ట్రిబ్యూషన్**ని అమలు చేస్తుంది. ఈ **సాఫ్ట్** టెక్స్ట్ జనరేషన్‌ను అమలు చేసే ఫంక్షన్ క్రింద నిర్వచించబడింది:\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"--- Temperature = 0.3\n",
"Today #39;s strike #39; to start at the store return\n",
"On Sunday PO to Be Data Profit Up (Reuters)\n",
"Moscow, SP wins straight to the Microsoft #39;s control of the space start\n",
"President olding of the blast start for the strike to pay &lt;b&gt;...&lt;/b&gt;\n",
"Little red riding hood ficed to the spam countered in European &lt;b&gt;...&lt;/b&gt;\n",
"\n",
"--- Temperature = 0.8\n",
"Today countie strikes ryder missile faces food market blut\n",
"On Sunday collores lose-toppy of sale of Bullment in &lt;b&gt;...&lt;/b&gt;\n",
"Moscow, IBM Diffeiting in Afghan Software Hotels (Reuters)\n",
"President Ol Luster for Profit Peaced Raised (AP)\n",
"Little red riding hood dace on depart talks #39; bank up\n",
"\n",
"--- Temperature = 1.0\n",
"Today wits House buiting debate fixes #39; supervice stake again\n",
"On Sunday arling digital poaching In for level\n",
"Moscow, DS Up 7, Top Proble Protest Caprey Mamarian Strike\n",
"President teps help of roubler stepted lessabul-Dhalitics (AFP)\n",
"Little red riding hood signs on cash in Carter-youb\n",
"\n",
"--- Temperature = 1.3\n",
"Today wits flawer ro, pSIA figat's co DroftwavesIs Talo up\n",
"On Sunday hround elitwing wint EU Powerburlinetien\n",
"Moscow, Bazz #39;s sentries olymen winnelds' next for Olympite Huc?\n",
"President lost securitys from power Elections in Smiltrials\n",
"Little red riding hood vides profit, exponituity, profitmainalist-at said listers\n",
"\n",
"--- Temperature = 1.8\n",
"Today #39;It: He deat: N.KA Asside\n",
"On Sunday i arry Par aldeup patient Wo stele1\n"
]
},
{
"ename": "KeyError",
"evalue": "0",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-33-db32367a0feb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"\\n--- Temperature = {i}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgenerate_soft\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwords\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtemperature\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-33-db32367a0feb>\u001b[0m in \u001b[0;36mgenerate_soft\u001b[0;34m(model, size, start, temperature)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mchars\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0minp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minp\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnc\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchars\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mwords\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Today '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'On Sunday '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Moscow, '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'President '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Little red riding hood '\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-10-3f5fa6130b1d>\u001b[0m in \u001b[0;36mdecode\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreverse_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-10-3f5fa6130b1d>\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreverse_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 0"
]
}
],
"source": [
"def generate_soft(model,size=100,start='Today ',temperature=1.0):\n",
" inp = tokenizer.texts_to_sequences([start])[0]\n",
" chars = inp\n",
" for i in range(size):\n",
" out = model(tf.expand_dims(tf.one_hot(inp,vocab_size),0))[0][-1]\n",
" probs = tf.exp(tf.math.log(out)/temperature).numpy().astype(np.float64)\n",
" probs = probs/np.sum(probs)\n",
" nc = np.argmax(np.random.multinomial(1,probs,1))\n",
" if nc==eos_token:\n",
" break\n",
" chars.append(nc)\n",
" inp = inp+[nc]\n",
" return decode(chars)\n",
"\n",
"words = ['Today ','On Sunday ','Moscow, ','President ','Little red riding hood ']\n",
" \n",
"for i in [0.3,0.8,1.0,1.3,1.8]:\n",
" print(f\"\\n--- Temperature = {i}\")\n",
" for j in range(5):\n",
" print(generate_soft(model,size=300,start=words[j],temperature=i))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము **తాపన** అనే మరో పారామితిని పరిచయం చేసాము, ఇది మేము అత్యధిక సంభావ్యతకు ఎంత కట్టుబడి ఉండాలో సూచించడానికి ఉపయోగిస్తారు. తాపన 1.0 అయితే, మేము సరైన మల్టినోమియల్ శాంప్లింగ్ చేస్తాము, మరియు తాపన అనంతానికి చేరినప్పుడు - అన్ని సంభావ్యతలు సమానంగా మారతాయి, మరియు మేము యాదృచ్ఛికంగా తదుపరి అక్షరాన్ని ఎంచుకుంటాము. క్రింది ఉదాహరణలో, తాపనను చాలా పెంచినప్పుడు టెక్స్ట్ అర్థరహితంగా మారిపోతుందని, మరియు అది 0కి దగ్గరగా ఉన్నప్పుడు \"సైకిల్డ్\" కఠినంగా ఉత్పత్తి చేసిన టెక్స్ట్ లాగా కనిపిస్తుందని మనం గమనించవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "9fbb7d5fda708537649f71f5f646fcde",
"translation_date": "2025-11-26T02:14:49+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# జనరేటివ్ నెట్‌వర్క్స్\n",
"\n",
"రీకరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రీకరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, అంటే అవి పదాల క్రమాన్ని నేర్చుకుని, ఒక సీక్వెన్స్‌లో తదుపరి పదం కోసం అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి వీలు కల్పిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.\n",
"\n",
"మునుపటి యూనిట్‌లో చర్చించిన RNN నిర్మాణంలో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రీకరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు ఒక **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, అవి కొంత ప్రారంభ స్థితి వెక్టర్‌ను తీసుకుని, ఆ తర్వాత అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.\n",
"\n",
"ఈ నోట్‌బుక్‌లో, మనం సులభమైన జనరేటివ్ మోడల్స్‌పై దృష్టి సారించబోతున్నాము, ఇవి మనకు టెక్స్ట్‌ను ఉత్పత్తి చేయడంలో సహాయపడతాయి. సౌలభ్యం కోసం, మనం **అక్షర స్థాయి నెట్‌వర్క్**ను నిర్మిద్దాం, ఇది అక్షరాలవారీగా టెక్స్ట్‌ను ఉత్పత్తి చేస్తుంది. శిక్షణ సమయంలో, మనం కొంత టెక్స్ట్ కార్పస్ తీసుకుని, దాన్ని అక్షరాల సీక్వెన్స్‌లుగా విభజించాలి.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import tensorflow_datasets as tfds\n",
"import numpy as np\n",
"\n",
"ds_train, ds_test = tfds.load('ag_news_subset').values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అక్షర పదకోశం నిర్మాణం\n",
"\n",
"అక్షర స్థాయి జనరేటివ్ నెట్‌వర్క్‌ను నిర్మించడానికి, మేము టెక్స్ట్‌ను పదాల స్థానంలో వ్యక్తిగత అక్షరాలుగా విభజించాలి. మునుపటి `TextVectorization` లేయర్ ఇది చేయలేకపోతుంది, కాబట్టి మాకు రెండు ఎంపికలు ఉన్నాయి:\n",
"\n",
"* టెక్స్ట్‌ను మానవీయంగా లోడ్ చేసి 'చేతితో' టోకనైజేషన్ చేయడం, [ఈ అధికారిక Keras ఉదాహరణ](https://keras.io/examples/generative/lstm_character_level_text_generation/)లో చూపినట్లుగా\n",
"* అక్షర స్థాయి టోకనైజేషన్ కోసం `Tokenizer` క్లాస్ ఉపయోగించడం.\n",
"\n",
"మేము రెండవ ఎంపికను ఎంచుకుంటాము. `Tokenizer` ను పదాలుగా కూడా టోకనైజ్ చేయడానికి ఉపయోగించవచ్చు, కాబట్టి అక్షర స్థాయి నుండి పద స్థాయి టోకనైజేషన్‌కు సులభంగా మారవచ్చు.\n",
"\n",
"అక్షర స్థాయి టోకనైజేషన్ చేయడానికి, `char_level=True` పారామీటర్‌ను ఇవ్వాలి:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def extract_text(x):\n",
" return x['title']+' '+x['description']\n",
"\n",
"def tupelize(x):\n",
" return (extract_text(x),x['label'])\n",
"\n",
"tokenizer = keras.preprocessing.text.Tokenizer(char_level=True,lower=False)\n",
"tokenizer.fit_on_texts([x['title'].numpy().decode('utf-8') for x in ds_train])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము కూడా ఒక ప్రత్యేక టోకెన్‌ను **సీక్వెన్స్ ముగింపు** సూచించడానికి ఉపయోగించాలనుకుంటున్నాము, దీన్ని మేము `<eos>` అని పిలుస్తాము. దీన్ని మనం చేతితో వాక్యకోశంలో చేర్చుదాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"eos_token = len(tokenizer.word_index)+1\n",
"tokenizer.word_index['<eos>'] = eos_token\n",
"\n",
"vocab_size = eos_token + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, టెక్స్ట్‌ను సంఖ్యల సీక్వెన్స్‌లుగా ఎన్‌కోడ్ చేయడానికి, మనం ఉపయోగించవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[[48, 2, 10, 10, 5, 44, 1, 25, 5, 8, 10, 13, 78]]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tokenizer.texts_to_sequences(['Hello, world!'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## శీర్షికలు సృష్టించడానికి జనరేటివ్ RNN శిక్షణ\n",
"\n",
"మేము వార్తా శీర్షికలను సృష్టించడానికి RNN ను శిక్షణ ఇవ్వడానికి విధానం ఈ విధంగా ఉంటుంది. ప్రతి దశలో, ఒక శీర్షిక తీసుకుని దాన్ని RNN లో ఇన్పుట్ గా ఇస్తాము, మరియు ప్రతి ఇన్పుట్ అక్షరానికి తర్వాతి అవుట్పుట్ అక్షరాన్ని నెట్‌వర్క్ సృష్టించాలని అడుగుతాము:\n",
"\n",
"!['HELLO' అనే పదం RNN ద్వారా సృష్టించబడుతున్న ఉదాహరణను చూపించే చిత్రం.](../../../../../translated_images/rnn-generate.56c54afb52f9781d.te.png)\n",
"\n",
"మన సీక్వెన్స్ చివరి అక్షరానికి, నెట్‌వర్క్ `<eos>` టోకెన్ సృష్టించాలని అడుగుతాము.\n",
"\n",
"ఇక్కడ ఉపయోగిస్తున్న జనరేటివ్ RNN ప్రధాన తేడా ఏమిటంటే, మేము RNN యొక్క ప్రతి దశ నుండి అవుట్పుట్ తీసుకుంటాము, కేవలం చివరి సెల్ నుండి మాత్రమే కాదు. ఇది RNN సెల్ కు `return_sequences` పారామీటర్ ను సెట్ చేయడం ద్వారా సాధ్యమవుతుంది.\n",
"\n",
"కాబట్టి, శిక్షణ సమయంలో, నెట్‌వర్క్ కు ఇన్పుట్ ఒక నిర్దిష్ట పొడవు గల ఎన్‌కోడ్ చేసిన అక్షరాల సీక్వెన్స్ ఉంటుంది, అవుట్పుట్ అదే పొడవు గల సీక్వెన్స్ కానీ ఒక ఎలిమెంట్ ముందుకు షిఫ్ట్ చేయబడినది మరియు `<eos>` తో ముగిసినది. మినీబ్యాచ్ అనేది ఇలాంటి అనేక సీక్వెన్స్‌లతో ఉంటుంది, అందువల్ల అన్ని సీక్వెన్స్‌లను సరిపోల్చడానికి **padding** అవసరం.\n",
"\n",
"మనం డేటాసెట్ ను మార్చే ఫంక్షన్లు సృష్టిద్దాం. మినీబ్యాచ్ స్థాయిలో సీక్వెన్స్‌లను ప్యాడ్ చేయాలనుకుంటున్నందున, ముందుగా `.batch()` పిలిచి డేటాసెట్ ను బ్యాచ్ చేస్తాము, ఆపై `map` ద్వారా ట్రాన్స్‌ఫర్మేషన్ చేస్తాము. కాబట్టి, ట్రాన్స్‌ఫర్మేషన్ ఫంక్షన్ మొత్తం మినీబ్యాచ్ ను పారామీటర్ గా తీసుకుంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def title_batch(x):\n",
" x = [t.numpy().decode('utf-8') for t in x]\n",
" z = tokenizer.texts_to_sequences(x)\n",
" z = tf.keras.preprocessing.sequence.pad_sequences(z)\n",
" return tf.one_hot(z,vocab_size), tf.one_hot(tf.concat([z[:,1:],tf.constant(eos_token,shape=(len(z),1))],axis=1),vocab_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము ఇక్కడ చేసే కొన్ని ముఖ్యమైన విషయాలు:\n",
"* మొదట స్ట్రింగ్ టెన్సర్ నుండి అసలు టెక్స్ట్‌ను తీసుకుంటాము\n",
"* `text_to_sequences` స్ట్రింగుల జాబితాను ఇంటిజర్ టెన్సర్ల జాబితాగా మార్చుతుంది\n",
"* `pad_sequences` ఆ టెన్సర్లను వారి గరిష్ట పొడవుకు ప్యాడ్ చేస్తుంది\n",
"* చివరగా, మేము అన్ని అక్షరాలను వన్-హాట్ ఎన్‌కోడ్ చేస్తాము, అలాగే షిఫ్టింగ్ మరియు `<eos>` జోడింపును కూడా చేస్తాము. వన్-హాట్ ఎన్‌కోడ్ చేసిన అక్షరాలు ఎందుకు అవసరమో త్వరలో చూద్దాం\n",
"\n",
"కానీ, ఈ ఫంక్షన్ **Pythonic** గా ఉంటుంది, అంటే దీన్ని ఆటోమేటిక్‌గా Tensorflow కంప్యూటేషనల్ గ్రాఫ్‌గా మార్చలేము. ఈ ఫంక్షన్‌ను నేరుగా `Dataset.map` ఫంక్షన్‌లో ఉపయోగిస్తే ఎర్రర్లు వస్తాయి. అందుకే ఈ Pythonic కాల్‌ను `py_function` రాపర్ ఉపయోగించి చుట్టుకోవాలి:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def title_batch_fn(x):\n",
" x = x['title']\n",
" a,b = tf.py_function(title_batch,inp=[x],Tout=(tf.float32,tf.float32))\n",
" return a,b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **గమనిక**: Pythonic మరియు Tensorflow ట్రాన్స్‌ఫర్మేషన్ ఫంక్షన్ల మధ్య తేడా కొంచెం క్లిష్టంగా అనిపించవచ్చు, మరియు మీరు dataset ను `fit` కు పంపించే ముందు సాధారణ Python ఫంక్షన్లతో ట్రాన్స్‌ఫర్మ్ చేయకపోవడం ఎందుకు అనుకుంటున్నారో ఉండవచ్చు. ఇది ఖచ్చితంగా చేయవచ్చు, కానీ `Dataset.map` ఉపయోగించడం పెద్ద లాభం కలిగిస్తుంది, ఎందుకంటే డేటా ట్రాన్స్‌ఫర్మేషన్ పైప్‌లైన్ Tensorflow కంప్యూటేషనల్ గ్రాఫ్ ఉపయోగించి అమలు చేయబడుతుంది, ఇది GPU కంప్యూటేషన్లను ఉపయోగించి CPU/GPU మధ్య డేటా మార్పిడి అవసరాన్ని తగ్గిస్తుంది.\n",
"\n",
"ఇప్పుడు మనం మన జనరేటర్ నెట్‌వర్క్‌ను నిర్మించి శిక్షణ ప్రారంభించవచ్చు. ఇది మునుపటి యూనిట్‌లో చర్చించిన ఏదైనా రికరెంట్ సెల్ (సింపుల్, LSTM లేదా GRU) ఆధారంగా ఉండవచ్చు. మన ఉదాహరణలో మనం LSTM ఉపయోగిస్తాము.\n",
"\n",
"నెట్‌వర్క్ అక్షరాలను ఇన్‌పుట్‌గా తీసుకుంటుంది, మరియు వోకాబ్యులరీ పరిమాణం చాలా చిన్నది కాబట్టి, embedding లేయర్ అవసరం లేదు, one-hot-encoded ఇన్‌పుట్ నేరుగా LSTM సెల్‌లోకి పోవచ్చు. అవుట్‌పుట్ లేయర్ `Dense` క్లాసిఫైయర్ అవుతుంది, ఇది LSTM అవుట్‌పుట్‌ను one-hot-encoded టోకెన్ నంబర్లుగా మార్చుతుంది.\n",
"\n",
"అదనంగా, మనం వేరియబుల్-లెంగ్త్ సీక్వెన్సులతో పని చేస్తున్నందున, `Masking` లేయర్ ఉపయోగించి స్ట్రింగ్‌లో ప్యాడ్ చేసిన భాగాన్ని నిర్లక్ష్యం చేసే మాస్క్ సృష్టించవచ్చు. ఇది తప్పనిసరి కాదు, ఎందుకంటే మనం `<eos>` టోకెన్ తర్వాతి అన్ని విషయాలలో ఎక్కువగా ఆసక్తి చూపడం లేదు, కానీ ఈ లేయర్ రకం గురించి కొంత అనుభవం పొందడానికి దీన్ని ఉపయోగిస్తాము. `input_shape` `(None, vocab_size)` ఉంటుంది, ఇక్కడ `None` వేరియబుల్ లెంగ్త్ సీక్వెన్స్‌ను సూచిస్తుంది, మరియు అవుట్‌పుట్ ఆకారం కూడా `(None, vocab_size)` ఉంటుంది, మీరు `summary` నుండి చూడవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"masking (Masking) (None, None, 84) 0 \n",
"_________________________________________________________________\n",
"lstm (LSTM) (None, None, 128) 109056 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, None, 84) 10836 \n",
"=================================================================\n",
"Total params: 119,892\n",
"Trainable params: 119,892\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"15000/15000 [==============================] - 229s 15ms/step - loss: 1.5385\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7fa40c1245e0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Masking(input_shape=(None,vocab_size)),\n",
" keras.layers.LSTM(128,return_sequences=True),\n",
" keras.layers.Dense(vocab_size,activation='softmax')\n",
"])\n",
"\n",
"model.summary()\n",
"model.compile(loss='categorical_crossentropy')\n",
"\n",
"model.fit(ds_train.batch(8).map(title_batch_fn))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## అవుట్పుట్ ఉత్పత్తి\n",
"\n",
"మనం మోడల్‌ను శిక్షణ ఇచ్చిన తర్వాత, దాన్ని ఉపయోగించి కొంత అవుట్పుట్ ఉత్పత్తి చేయాలనుకుంటున్నాము. ముందుగా, టోకెన్ సంఖ్యల శ్రేణి ద్వారా ప్రాతినిధ్యం వహించిన టెక్స్ట్‌ను డీకోడ్ చేయడానికి ఒక మార్గం అవసరం. దీని కోసం, మనం `tokenizer.sequences_to_texts` ఫంక్షన్‌ను ఉపయోగించవచ్చు; అయితే, ఇది క్యారెక్టర్-స్థాయి టోకనైజేషన్‌తో బాగా పనిచేయదు. అందుకే, మనం tokenizer నుండి టోకెన్ల డిక్షనరీ (దాన్ని `word_index` అంటారు) తీసుకుని, ఒక రివర్స్ మ్యాప్ తయారు చేసి, మన స్వంత డీకోడింగ్ ఫంక్షన్ రాస్తాము:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"reverse_map = {val:key for key, val in tokenizer.word_index.items()}\n",
"\n",
"def decode(x):\n",
" return ''.join([reverse_map[t] for t in x])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు, జనరేషన్ చేద్దాం. మనం కొన్ని స్ట్రింగ్ `start` తో ప్రారంభించి, దాన్ని సీక్వెన్స్ `inp` గా ఎన్‌కోడ్ చేస్తాము, ఆపై ప్రతి దశలో మన నెట్‌వర్క్‌ను పిలిచి తదుపరి అక్షరాన్ని అంచనా వేస్తాము.\n",
"\n",
"నెట్‌వర్క్ అవుట్‌పుట్ `out` అనేది `vocab_size` ఎలిమెంట్ల వెక్టర్, ఇది ప్రతి టోకెన్ యొక్క సంభావ్యతలను సూచిస్తుంది, మరియు `argmax` ఉపయోగించి అత్యంత సంభావ్యమైన టోకెన్ నంబర్‌ను కనుగొంటాము. ఆ తర్వాత ఆ అక్షరాన్ని జనరేట్ చేసిన టోకెన్ల జాబితాలో జోడించి, జనరేషన్ కొనసాగిస్తాము. ఒక అక్షరాన్ని జనరేట్ చేసే ఈ ప్రక్రియను అవసరమైన అక్షరాల సంఖ్య `size` సార్లు పునరావృతం చేస్తాము, మరియు `eos_token` కనిపించినప్పుడు ముందుగానే ముగిస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Today #39;s lead to strike for the strike for the strike for the strike (AFP)'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def generate(model,size=100,start='Today '):\n",
" inp = tokenizer.texts_to_sequences([start])[0]\n",
" chars = inp\n",
" for i in range(size):\n",
" out = model(tf.expand_dims(tf.one_hot(inp,vocab_size),0))[0][-1]\n",
" nc = tf.argmax(out)\n",
" if nc==eos_token:\n",
" break\n",
" chars.append(nc.numpy())\n",
" inp = inp+[nc]\n",
" return decode(chars)\n",
" \n",
"generate(model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## శిక్షణ సమయంలో నమూనా అవుట్పుట్\n",
"\n",
"మాకు *ఖచ్చితత్వం* వంటి ఉపయోగకరమైన మెట్రిక్స్ లేవు కాబట్టి, మా మోడల్ మెరుగుపడుతున్నదని చూడగల唯一 మార్గం శిక్షణ సమయంలో ఉత్పత్తి చేసిన స్ట్రింగ్‌ను **నమూనా** చేయడం మాత్రమే. దీని కోసం, మేము **కాల్‌బ్యాక్‌లు** ఉపయోగిస్తాము, అంటే `fit` ఫంక్షన్‌కు పంపగల ఫంక్షన్లు, ఇవి శిక్షణ సమయంలో నిరంతరం పిలవబడతాయి.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/3\n",
"15000/15000 [==============================] - 226s 15ms/step - loss: 1.2703\n",
"Today #39;s a lead in the company for the strike\n",
"Epoch 2/3\n",
"15000/15000 [==============================] - 227s 15ms/step - loss: 1.2057\n",
"Today #39;s the Market Service on Security Start (AP)\n",
"Epoch 3/3\n",
"15000/15000 [==============================] - 226s 15ms/step - loss: 1.1752\n",
"Today #39;s a line on the strike to start for the start\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7fa40c74e3d0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sampling_callback = keras.callbacks.LambdaCallback(\n",
" on_epoch_end = lambda batch, logs: print(generate(model))\n",
")\n",
"\n",
"model.fit(ds_train.batch(8).map(title_batch_fn),callbacks=[sampling_callback],epochs=3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఈ ఉదాహరణ ఇప్పటికే కొంత మంచి టెక్స్ట్‌ను ఉత్పత్తి చేస్తోంది, కానీ దీన్ని మరింత మెరుగుపరచవచ్చు కొన్ని మార్గాల్లో:\n",
"* **మరింత టెక్స్ట్**. మనం మా పనికి కేవలం శీర్షికలను మాత్రమే ఉపయోగించాము, కానీ మీరు పూర్తి టెక్స్ట్‌తో ప్రయోగాలు చేయాలనుకోవచ్చు. RNNలు పొడవైన సీక్వెన్సులను నిర్వహించడంలో అంతగా బాగుండవు, కాబట్టి వాటిని చిన్న వాక్యాలుగా విభజించడం లేదా ఎప్పుడూ ఒక నిర్దిష్ట సీక్వెన్స్ పొడవైన `num_chars` (ఉదాహరణకు, 256) పై శిక్షణ ఇవ్వడం మంచిది. పై ఉదాహరణను ఇలాంటి నిర్మాణంగా మార్చడానికి మీరు [అధికారిక Keras ట్యుటోరియల్](https://keras.io/examples/generative/lstm_character_level_text_generation/) ను ప్రేరణగా తీసుకోవచ్చు.\n",
"* **బహుళస్థాయి LSTM**. 2 లేదా 3 LSTM లేయర్లను ప్రయత్నించడం మంచిది. మునుపటి యూనిట్‌లో చెప్పినట్లుగా, ప్రతి LSTM లేయర్ టెక్స్ట్ నుండి నిర్దిష్ట నమూనాలను తీసుకుంటుంది, మరియు క్యారెక్టర్-స్థాయి జనరేటర్ సందర్భంలో తక్కువ LSTM స్థాయి సిలబుల్స్‌ను గుర్తించడానికి బాధ్యత వహిస్తుందని, మరియు ఉన్నత స్థాయిలు పదాలు మరియు పద సంయోజనాల కోసం ఉంటాయని ఆశించవచ్చు. ఇది LSTM కన్‌స్ట్రక్టర్‌కు లేయర్ల సంఖ్య పారామీటర్‌ను అందించడం ద్వారా సులభంగా అమలు చేయవచ్చు.\n",
"* మీరు **GRU యూనిట్లతో** కూడా ప్రయోగాలు చేయాలనుకోవచ్చు మరియు ఏవి మెరుగ్గా పనిచేస్తాయో చూడవచ్చు, అలాగే **విభిన్న హిడెన్ లేయర్ పరిమాణాలతో** కూడా ప్రయత్నించవచ్చు. చాలా పెద్ద హిడెన్ లేయర్ ఓవర్‌ఫిట్టింగ్‌కు దారితీయవచ్చు (ఉదా: నెట్‌వర్క్ ఖచ్చితమైన టెక్స్ట్ నేర్చుకుంటుంది), మరియు చిన్న పరిమాణం మంచి ఫలితాన్ని ఇవ్వకపోవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్\n",
"\n",
"మునుపటి `generate` నిర్వచనంలో, మేము ఎప్పుడూ అత్యధిక probability ఉన్న అక్షరాన్ని తదుపరి అక్షరంగా తీసుకుంటున్నాము. దీని వల్ల టెక్స్ట్ తరచుగా అదే అక్షరాల సీక్వెన్స్‌ల మధ్య \"సైకిల్\" అవుతుంది, ఈ ఉదాహరణలో కనిపించేలా:\n",
"```\n",
"today of the second the company and a second the company ...\n",
"```\n",
"\n",
"కానీ, తదుపరి అక్షరానికి probability distribution చూస్తే, కొన్ని అత్యధిక probabilities మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక అక్షరానికి probability 0.2 ఉండొచ్చు, మరొకదానికి 0.19 ఉండొచ్చు. ఉదాహరణకు '*play*' సీక్వెన్స్‌లో తదుపరి అక్షరం space లేదా **e** (పదం *player* లో ఉన్నట్లు) రెండూ సమానంగా ఉండొచ్చు.\n",
"\n",
"దీని ద్వారా మనం తెలుసుకోవాలి, ఎప్పుడూ ఎక్కువ probability ఉన్న అక్షరాన్ని ఎంచుకోవడం \"న్యాయం\" కాదు, ఎందుకంటే రెండవ అత్యధిక probability ఉన్న అక్షరాన్ని ఎంచుకున్నా అర్థవంతమైన టెక్స్ట్ రావచ్చు. కాబట్టి నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన probability distribution నుండి అక్షరాలను **సాంపిల్** చేయడం మంచిది.\n",
"\n",
"ఈ సాంప్లింగ్ `np.multinomial` ఫంక్షన్ ఉపయోగించి చేయవచ్చు, ఇది **మల్టినోమియల్ డిస్ట్రిబ్యూషన్**ని అమలు చేస్తుంది. ఈ **సాఫ్ట్** టెక్స్ట్ జనరేషన్‌ను అమలు చేసే ఫంక్షన్ క్రింద నిర్వచించబడింది:\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"--- Temperature = 0.3\n",
"Today #39;s strike #39; to start at the store return\n",
"On Sunday PO to Be Data Profit Up (Reuters)\n",
"Moscow, SP wins straight to the Microsoft #39;s control of the space start\n",
"President olding of the blast start for the strike to pay &lt;b&gt;...&lt;/b&gt;\n",
"Little red riding hood ficed to the spam countered in European &lt;b&gt;...&lt;/b&gt;\n",
"\n",
"--- Temperature = 0.8\n",
"Today countie strikes ryder missile faces food market blut\n",
"On Sunday collores lose-toppy of sale of Bullment in &lt;b&gt;...&lt;/b&gt;\n",
"Moscow, IBM Diffeiting in Afghan Software Hotels (Reuters)\n",
"President Ol Luster for Profit Peaced Raised (AP)\n",
"Little red riding hood dace on depart talks #39; bank up\n",
"\n",
"--- Temperature = 1.0\n",
"Today wits House buiting debate fixes #39; supervice stake again\n",
"On Sunday arling digital poaching In for level\n",
"Moscow, DS Up 7, Top Proble Protest Caprey Mamarian Strike\n",
"President teps help of roubler stepted lessabul-Dhalitics (AFP)\n",
"Little red riding hood signs on cash in Carter-youb\n",
"\n",
"--- Temperature = 1.3\n",
"Today wits flawer ro, pSIA figat's co DroftwavesIs Talo up\n",
"On Sunday hround elitwing wint EU Powerburlinetien\n",
"Moscow, Bazz #39;s sentries olymen winnelds' next for Olympite Huc?\n",
"President lost securitys from power Elections in Smiltrials\n",
"Little red riding hood vides profit, exponituity, profitmainalist-at said listers\n",
"\n",
"--- Temperature = 1.8\n",
"Today #39;It: He deat: N.KA Asside\n",
"On Sunday i arry Par aldeup patient Wo stele1\n"
]
},
{
"ename": "KeyError",
"evalue": "0",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-33-db32367a0feb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"\\n--- Temperature = {i}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgenerate_soft\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwords\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtemperature\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-33-db32367a0feb>\u001b[0m in \u001b[0;36mgenerate_soft\u001b[0;34m(model, size, start, temperature)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mchars\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0minp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minp\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnc\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchars\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mwords\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Today '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'On Sunday '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Moscow, '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'President '\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Little red riding hood '\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-10-3f5fa6130b1d>\u001b[0m in \u001b[0;36mdecode\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreverse_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-10-3f5fa6130b1d>\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreverse_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 0"
]
}
],
"source": [
"def generate_soft(model,size=100,start='Today ',temperature=1.0):\n",
" inp = tokenizer.texts_to_sequences([start])[0]\n",
" chars = inp\n",
" for i in range(size):\n",
" out = model(tf.expand_dims(tf.one_hot(inp,vocab_size),0))[0][-1]\n",
" probs = tf.exp(tf.math.log(out)/temperature).numpy().astype(np.float64)\n",
" probs = probs/np.sum(probs)\n",
" nc = np.argmax(np.random.multinomial(1,probs,1))\n",
" if nc==eos_token:\n",
" break\n",
" chars.append(nc)\n",
" inp = inp+[nc]\n",
" return decode(chars)\n",
"\n",
"words = ['Today ','On Sunday ','Moscow, ','President ','Little red riding hood ']\n",
" \n",
"for i in [0.3,0.8,1.0,1.3,1.8]:\n",
" print(f\"\\n--- Temperature = {i}\")\n",
" for j in range(5):\n",
" print(generate_soft(model,size=300,start=words[j],temperature=i))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మేము **తాపన** అనే మరో పారామితిని పరిచయం చేసాము, ఇది మేము అత్యధిక సంభావ్యతకు ఎంత కట్టుబడి ఉండాలో సూచించడానికి ఉపయోగిస్తారు. తాపన 1.0 అయితే, మేము సరైన మల్టినోమియల్ శాంప్లింగ్ చేస్తాము, మరియు తాపన అనంతానికి చేరినప్పుడు - అన్ని సంభావ్యతలు సమానంగా మారతాయి, మరియు మేము యాదృచ్ఛికంగా తదుపరి అక్షరాన్ని ఎంచుకుంటాము. క్రింది ఉదాహరణలో, తాపనను చాలా పెంచినప్పుడు టెక్స్ట్ అర్థరహితంగా మారిపోతుందని, మరియు అది 0కి దగ్గరగా ఉన్నప్పుడు \"సైకిల్డ్\" కఠినంగా ఉత్పత్తి చేసిన టెక్స్ట్ లాగా కనిపిస్తుందని మనం గమనించవచ్చు.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"interpreter": {
"hash": "16af2a8bbb083ea23e5e41c7f5787656b2ce26968575d8763f2c4b17f9cd711f"
},
"kernelspec": {
"display_name": "Python 3.8.12 ('py38')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"coopTranslator": {
"original_hash": "9fbb7d5fda708537649f71f5f646fcde",
"translation_date": "2025-11-26T02:14:49+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -1,92 +1,92 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "51be6057374d01d70e07dd5ec88ebc0d",
"translation_date": "2025-11-25T23:04:55+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/README.md",
"language_code": "te"
}
-->
# జనరేటివ్ నెట్‌వర్క్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/33)
రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రికరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, ఎందుకంటే అవి పదాల క్రమాన్ని నేర్చుకుని, సీక్వెన్స్‌లో తదుపరి పదానికి అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి అనుమతిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.
> ✅ మీరు టైప్ చేస్తున్నప్పుడు టెక్స్ట్ కంప్లీషన్ వంటి జనరేటివ్ పనుల నుండి లాభం పొందిన అన్ని సందర్భాలను ఆలోచించండి. మీ ఇష్టమైన అప్లికేషన్లు RNNలను ఉపయోగించాయా అని పరిశోధన చేయండి.
మునుపటి యూనిట్‌లో చర్చించిన RNN ఆర్కిటెక్చర్‌లో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రికరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, కేవలం ప్రారంభ స్టేట్ వెక్టర్ తీసుకుని, ఆ తర్వాత అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.
ఇది క్రింది చిత్రంలో చూపిన వివిధ న్యూరల్ ఆర్కిటెక్చర్లకు అవకాశం ఇస్తుంది:
![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.te.jpg)
> చిత్రం బ్లాగ్ పోస్ట్ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) నుండి [Andrej Karpaty](http://karpathy.github.io/) రచయిత
* **ఒకటి-కోసం-ఒకటి** అనేది ఒక ఇన్‌పుట్ మరియు ఒక అవుట్‌పుట్ కలిగిన సాంప్రదాయ న్యూరల్ నెట్‌వర్క్
* **ఒకటి-కోసం-చాలా** అనేది ఒక జనరేటివ్ ఆర్కిటెక్చర్, ఇది ఒక ఇన్‌పుట్ విలువను స్వీకరించి, అవుట్‌పుట్ విలువల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తుంది. ఉదాహరణకు, ఒక **ఇమేజ్ క్యాప్షనింగ్** నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలనుకుంటే, అది చిత్రానికి టెక్స్చువల్ వివరణను ఉత్పత్తి చేస్తుంది, అప్పుడు చిత్రాన్ని ఇన్‌పుట్‌గా తీసుకుని, దాన్ని CNN ద్వారా హిడెన్ స్టేట్ పొందించి, ఆ తర్వాత రికరెంట్ చైన్ క్యాప్షన్ పదాలను ఒక్కొక్కటిగా ఉత్పత్తి చేస్తుంది
* **చాలా-కోసం-ఒకటి** అనేది మునుపటి యూనిట్‌లో వివరించిన RNN ఆర్కిటెక్చర్లకు సరిపోతుంది, ఉదాహరణకు టెక్స్ట్ వర్గీకరణ
* **చాలా-కోసం-చాలా**, లేదా **సీక్వెన్స్-టు-సీక్వెన్స్** అనేది **మెషీన్ అనువాదం** వంటి పనులకు సరిపోతుంది, ఇక్కడ మొదటి RNN ఇన్‌పుట్ సీక్వెన్స్ నుండి అన్ని సమాచారాన్ని హిడెన్ స్టేట్‌లో సేకరిస్తుంది, మరియు మరొక RNN చైన్ ఆ స్టేట్‌ను అవుట్‌పుట్ సీక్వెన్స్‌గా విస్తరిస్తుంది.
ఈ యూనిట్‌లో, మనం సులభమైన జనరేటివ్ మోడల్స్‌పై దృష్టి సారిస్తాము, ఇవి మనకు టెక్స్ట్ ఉత్పత్తి చేయడంలో సహాయపడతాయి. సౌలభ్యానికి, మనం క్యారెక్టర్-స్థాయి టోకనైజేషన్ ఉపయోగిస్తాము.
మనం ఈ RNNను దశలవారీగా టెక్స్ట్ ఉత్పత్తి చేయడానికి శిక్షణ ఇస్తాము. ప్రతి దశలో, `nchars` పొడవు కలిగిన క్యారెక్టర్ల సీక్వెన్స్ తీసుకుని, ప్రతి ఇన్‌పుట్ క్యారెక్టర్ కోసం తదుపరి అవుట్‌పుట్ క్యారెక్టర్‌ను నెట్‌వర్క్ ఉత్పత్తి చేయమని అడుగుతాము:
![Image showing an example RNN generation of the word 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.te.png)
టెక్స్ట్ ఉత్పత్తి (ఇన్ఫరెన్స్ సమయంలో) చేస్తున్నప్పుడు, మనం కొన్ని **ప్రాంప్ట్**తో ప్రారంభిస్తాము, ఇది RNN సెల్స్ ద్వారా మధ్యవర్తి స్టేట్‌ను ఉత్పత్తి చేయడానికి పంపబడుతుంది, ఆ తర్వాత ఆ స్టేట్ నుండి ఉత్పత్తి ప్రారంభమవుతుంది. ఒక్కో క్యారెక్టర్‌ను ఒకేసారి ఉత్పత్తి చేసి, ఆ స్టేట్ మరియు ఉత్పత్తి చేసిన క్యారెక్టర్‌ను మరొక RNN సెల్‌కు పంపించి తదుపరి క్యారెక్టర్‌ను ఉత్పత్తి చేస్తాము, అవసరమైనంత క్యారెక్టర్లు ఉత్పత్తి అయ్యేవరకు.
<img src="../../../../../translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.te.png" width="60%"/>
> చిత్రం రచయిత
## ✍️ వ్యాయామాలు: జనరేటివ్ నెట్‌వర్క్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో జనరేటివ్ నెట్‌వర్క్స్](GenerativePyTorch.ipynb)
* [TensorFlowతో జనరేటివ్ నెట్‌వర్క్స్](GenerativeTF.ipynb)
## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్
ప్రతి RNN సెల్ అవుట్‌పుట్ ఒక క్యారెక్టర్ల ప్రాబబిలిటీ పంపిణీ. మనం ఎప్పుడూ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్‌ను తదుపరి క్యారెక్టర్‌గా తీసుకుంటే, టెక్స్ట్ తరచుగా అదే క్యారెక్టర్ సీక్వెన్స్‌ల మధ్య "సైకిల్" అవుతుంది, ఈ ఉదాహరణలో కనిపించేలా:
```
today of the second the company and a second the company ...
```
అయితే, తదుపరి క్యారెక్టర్ కోసం ప్రాబబిలిటీ పంపిణీని చూస్తే, కొన్ని అత్యధిక ప్రాబబిలిటీల మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక క్యారెక్టర్‌కు 0.2 ప్రాబబిలిటీ ఉండవచ్చు, మరొకదానికి 0.19, మొదలైనవి. ఉదాహరణకు, '*play*' సీక్వెన్స్‌లో తదుపరి క్యారెక్టర్ స్పేస్ లేదా **e** (పదం *player* లో ఉన్నట్లుగా) రెండూ సమానంగా ఉండవచ్చు.
దీని ద్వారా మనం తెలుసుకోవచ్చు, ఎప్పుడూ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్‌ను ఎంచుకోవడం "న్యాయం" కాదు, ఎందుకంటే రెండవ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్ కూడా అర్థవంతమైన టెక్స్ట్‌కు దారితీస్తుంది. నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన ప్రాబబిలిటీ పంపిణీ నుండి క్యారెక్టర్లను **సాంపుల్** చేయడం మేలు. మనం ఒక పారామీటర్, **టెంపరేచర్**ను కూడా ఉపయోగించవచ్చు, ఇది ప్రాబబిలిటీ పంపిణీని సాఫీగా చేస్తుంది, మరింత యాదృచ్ఛికత చేర్చాలనుకుంటే, లేదా ఎక్కువగా అత్యధిక ప్రాబబిలిటీ క్యారెక్టర్లకు అనుగుణంగా ఉండాలనుకుంటే, మరింత కఠినంగా చేస్తుంది.
ఈ సాఫ్ట్ టెక్స్ట్ జనరేషన్ ఎలా అమలు చేయబడిందో పై నోట్బుక్స్‌లో అన్వేషించండి.
## ముగింపు
టెక్స్ట్ జనరేషన్ తనంతటే ఉపయోగకరమైనదైనా, ప్రధాన లాభాలు RNNల ద్వారా ప్రారంభ ఫీచర్ వెక్టర్ నుండి టెక్స్ట్ ఉత్పత్తి చేయగల సామర్థ్యంలో ఉన్నాయి. ఉదాహరణకు, టెక్స్ట్ జనరేషన్ మెషీన్ అనువాదంలో భాగంగా ఉపయోగించబడుతుంది (సీక్వెన్స్-టు-సీక్వెన్స్, ఈ సందర్భంలో *ఎంకోడర్* నుండి స్టేట్ వెక్టర్ అనువాద సందేశాన్ని ఉత్పత్తి చేయడానికి లేదా *డీకోడ్* చేయడానికి ఉపయోగిస్తారు), లేదా చిత్రానికి టెక్స్చువల్ వివరణను ఉత్పత్తి చేయడంలో (ఈ సందర్భంలో ఫీచర్ వెక్టర్ 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)
## సమీక్ష & స్వీయ అధ్యయనం
మీ జ్ఞానాన్ని విస్తరించడానికి కొన్ని వ్యాసాలు:
* మార్కోవ్ చైన్, 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)
మనం క్యారెక్టర్-ప్రతి క్యారెక్టర్ టెక్స్ట్ ఉత్పత్తి ఎలా చేయాలో చూశాము. ల్యాబ్‌లో, మీరు పద-స్థాయి టెక్స్ట్ జనరేషన్‌ను అన్వేషిస్తారు.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "51be6057374d01d70e07dd5ec88ebc0d",
"translation_date": "2025-11-25T23:04:55+00:00",
"source_file": "lessons/5-NLP/17-GenerativeNetworks/README.md",
"language_code": "te"
}
-->
# జనరేటివ్ నెట్‌వర్క్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/33)
రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ (RNNs) మరియు వాటి గేటెడ్ సెల్ వేరియంట్లు, ఉదాహరణకు లాంగ్ షార్ట్ టర్మ్ మెమరీ సెల్స్ (LSTMs) మరియు గేటెడ్ రికరెంట్ యూనిట్స్ (GRUs), భాషా మోడలింగ్ కోసం ఒక యంత్రాంగాన్ని అందించాయి, ఎందుకంటే అవి పదాల క్రమాన్ని నేర్చుకుని, సీక్వెన్స్‌లో తదుపరి పదానికి అంచనాలు ఇవ్వగలవు. ఇది RNNలను **జనరేటివ్ పనుల** కోసం ఉపయోగించడానికి అనుమతిస్తుంది, ఉదాహరణకు సాధారణ టెక్స్ట్ జనరేషన్, మెషీన్ అనువాదం, మరియు ఇమేజ్ క్యాప్షనింగ్ కూడా.
> ✅ మీరు టైప్ చేస్తున్నప్పుడు టెక్స్ట్ కంప్లీషన్ వంటి జనరేటివ్ పనుల నుండి లాభం పొందిన అన్ని సందర్భాలను ఆలోచించండి. మీ ఇష్టమైన అప్లికేషన్లు RNNలను ఉపయోగించాయా అని పరిశోధన చేయండి.
మునుపటి యూనిట్‌లో చర్చించిన RNN ఆర్కిటెక్చర్‌లో, ప్రతి RNN యూనిట్ తదుపరి హిడెన్ స్టేట్‌ను అవుట్‌పుట్‌గా ఉత్పత్తి చేసింది. అయితే, ప్రతి రికరెంట్ యూనిట్‌కు మరో అవుట్‌పుట్‌ను కూడా జోడించవచ్చు, ఇది మాకు **సీక్వెన్స్** (మూల సీక్వెన్స్ పొడవుతో సమానం) అవుట్‌పుట్ ఇవ్వడానికి అనుమతిస్తుంది. అంతేకాకుండా, ప్రతి దశలో ఇన్‌పుట్‌ను స్వీకరించని RNN యూనిట్లను ఉపయోగించవచ్చు, కేవలం ప్రారంభ స్టేట్ వెక్టర్ తీసుకుని, ఆ తర్వాత అవుట్‌పుట్‌ల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తాయి.
ఇది క్రింది చిత్రంలో చూపిన వివిధ న్యూరల్ ఆర్కిటెక్చర్లకు అవకాశం ఇస్తుంది:
![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42d.te.jpg)
> చిత్రం బ్లాగ్ పోస్ట్ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) నుండి [Andrej Karpaty](http://karpathy.github.io/) రచయిత
* **ఒకటి-కోసం-ఒకటి** అనేది ఒక ఇన్‌పుట్ మరియు ఒక అవుట్‌పుట్ కలిగిన సాంప్రదాయ న్యూరల్ నెట్‌వర్క్
* **ఒకటి-కోసం-చాలా** అనేది ఒక జనరేటివ్ ఆర్కిటెక్చర్, ఇది ఒక ఇన్‌పుట్ విలువను స్వీకరించి, అవుట్‌పుట్ విలువల సీక్వెన్స్‌ను ఉత్పత్తి చేస్తుంది. ఉదాహరణకు, ఒక **ఇమేజ్ క్యాప్షనింగ్** నెట్‌వర్క్‌ను శిక్షణ ఇవ్వాలనుకుంటే, అది చిత్రానికి టెక్స్చువల్ వివరణను ఉత్పత్తి చేస్తుంది, అప్పుడు చిత్రాన్ని ఇన్‌పుట్‌గా తీసుకుని, దాన్ని CNN ద్వారా హిడెన్ స్టేట్ పొందించి, ఆ తర్వాత రికరెంట్ చైన్ క్యాప్షన్ పదాలను ఒక్కొక్కటిగా ఉత్పత్తి చేస్తుంది
* **చాలా-కోసం-ఒకటి** అనేది మునుపటి యూనిట్‌లో వివరించిన RNN ఆర్కిటెక్చర్లకు సరిపోతుంది, ఉదాహరణకు టెక్స్ట్ వర్గీకరణ
* **చాలా-కోసం-చాలా**, లేదా **సీక్వెన్స్-టు-సీక్వెన్స్** అనేది **మెషీన్ అనువాదం** వంటి పనులకు సరిపోతుంది, ఇక్కడ మొదటి RNN ఇన్‌పుట్ సీక్వెన్స్ నుండి అన్ని సమాచారాన్ని హిడెన్ స్టేట్‌లో సేకరిస్తుంది, మరియు మరొక RNN చైన్ ఆ స్టేట్‌ను అవుట్‌పుట్ సీక్వెన్స్‌గా విస్తరిస్తుంది.
ఈ యూనిట్‌లో, మనం సులభమైన జనరేటివ్ మోడల్స్‌పై దృష్టి సారిస్తాము, ఇవి మనకు టెక్స్ట్ ఉత్పత్తి చేయడంలో సహాయపడతాయి. సౌలభ్యానికి, మనం క్యారెక్టర్-స్థాయి టోకనైజేషన్ ఉపయోగిస్తాము.
మనం ఈ RNNను దశలవారీగా టెక్స్ట్ ఉత్పత్తి చేయడానికి శిక్షణ ఇస్తాము. ప్రతి దశలో, `nchars` పొడవు కలిగిన క్యారెక్టర్ల సీక్వెన్స్ తీసుకుని, ప్రతి ఇన్‌పుట్ క్యారెక్టర్ కోసం తదుపరి అవుట్‌పుట్ క్యారెక్టర్‌ను నెట్‌వర్క్ ఉత్పత్తి చేయమని అడుగుతాము:
![Image showing an example RNN generation of the word 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d.te.png)
టెక్స్ట్ ఉత్పత్తి (ఇన్ఫరెన్స్ సమయంలో) చేస్తున్నప్పుడు, మనం కొన్ని **ప్రాంప్ట్**తో ప్రారంభిస్తాము, ఇది RNN సెల్స్ ద్వారా మధ్యవర్తి స్టేట్‌ను ఉత్పత్తి చేయడానికి పంపబడుతుంది, ఆ తర్వాత ఆ స్టేట్ నుండి ఉత్పత్తి ప్రారంభమవుతుంది. ఒక్కో క్యారెక్టర్‌ను ఒకేసారి ఉత్పత్తి చేసి, ఆ స్టేట్ మరియు ఉత్పత్తి చేసిన క్యారెక్టర్‌ను మరొక RNN సెల్‌కు పంపించి తదుపరి క్యారెక్టర్‌ను ఉత్పత్తి చేస్తాము, అవసరమైనంత క్యారెక్టర్లు ఉత్పత్తి అయ్యేవరకు.
<img src="../../../../../translated_images/rnn-generate-inf.5168dc65e0370eea.te.png" width="60%"/>
> చిత్రం రచయిత
## ✍️ వ్యాయామాలు: జనరేటివ్ నెట్‌వర్క్స్
క్రింది నోట్బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchతో జనరేటివ్ నెట్‌వర్క్స్](GenerativePyTorch.ipynb)
* [TensorFlowతో జనరేటివ్ నెట్‌వర్క్స్](GenerativeTF.ipynb)
## సాఫ్ట్ టెక్స్ట్ జనరేషన్ మరియు టెంపరేచర్
ప్రతి RNN సెల్ అవుట్‌పుట్ ఒక క్యారెక్టర్ల ప్రాబబిలిటీ పంపిణీ. మనం ఎప్పుడూ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్‌ను తదుపరి క్యారెక్టర్‌గా తీసుకుంటే, టెక్స్ట్ తరచుగా అదే క్యారెక్టర్ సీక్వెన్స్‌ల మధ్య "సైకిల్" అవుతుంది, ఈ ఉదాహరణలో కనిపించేలా:
```
today of the second the company and a second the company ...
```
అయితే, తదుపరి క్యారెక్టర్ కోసం ప్రాబబిలిటీ పంపిణీని చూస్తే, కొన్ని అత్యధిక ప్రాబబిలిటీల మధ్య తేడా పెద్దది కాకపోవచ్చు, ఉదాహరణకు ఒక క్యారెక్టర్‌కు 0.2 ప్రాబబిలిటీ ఉండవచ్చు, మరొకదానికి 0.19, మొదలైనవి. ఉదాహరణకు, '*play*' సీక్వెన్స్‌లో తదుపరి క్యారెక్టర్ స్పేస్ లేదా **e** (పదం *player* లో ఉన్నట్లుగా) రెండూ సమానంగా ఉండవచ్చు.
దీని ద్వారా మనం తెలుసుకోవచ్చు, ఎప్పుడూ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్‌ను ఎంచుకోవడం "న్యాయం" కాదు, ఎందుకంటే రెండవ అత్యధిక ప్రాబబిలిటీ కలిగిన క్యారెక్టర్ కూడా అర్థవంతమైన టెక్స్ట్‌కు దారితీస్తుంది. నెట్‌వర్క్ అవుట్‌పుట్ ఇచ్చిన ప్రాబబిలిటీ పంపిణీ నుండి క్యారెక్టర్లను **సాంపుల్** చేయడం మేలు. మనం ఒక పారామీటర్, **టెంపరేచర్**ను కూడా ఉపయోగించవచ్చు, ఇది ప్రాబబిలిటీ పంపిణీని సాఫీగా చేస్తుంది, మరింత యాదృచ్ఛికత చేర్చాలనుకుంటే, లేదా ఎక్కువగా అత్యధిక ప్రాబబిలిటీ క్యారెక్టర్లకు అనుగుణంగా ఉండాలనుకుంటే, మరింత కఠినంగా చేస్తుంది.
ఈ సాఫ్ట్ టెక్స్ట్ జనరేషన్ ఎలా అమలు చేయబడిందో పై నోట్బుక్స్‌లో అన్వేషించండి.
## ముగింపు
టెక్స్ట్ జనరేషన్ తనంతటే ఉపయోగకరమైనదైనా, ప్రధాన లాభాలు RNNల ద్వారా ప్రారంభ ఫీచర్ వెక్టర్ నుండి టెక్స్ట్ ఉత్పత్తి చేయగల సామర్థ్యంలో ఉన్నాయి. ఉదాహరణకు, టెక్స్ట్ జనరేషన్ మెషీన్ అనువాదంలో భాగంగా ఉపయోగించబడుతుంది (సీక్వెన్స్-టు-సీక్వెన్స్, ఈ సందర్భంలో *ఎంకోడర్* నుండి స్టేట్ వెక్టర్ అనువాద సందేశాన్ని ఉత్పత్తి చేయడానికి లేదా *డీకోడ్* చేయడానికి ఉపయోగిస్తారు), లేదా చిత్రానికి టెక్స్చువల్ వివరణను ఉత్పత్తి చేయడంలో (ఈ సందర్భంలో ఫీచర్ వెక్టర్ 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)
## సమీక్ష & స్వీయ అధ్యయనం
మీ జ్ఞానాన్ని విస్తరించడానికి కొన్ని వ్యాసాలు:
* మార్కోవ్ చైన్, 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)
మనం క్యారెక్టర్-ప్రతి క్యారెక్టర్ టెక్స్ట్ ఉత్పత్తి ఎలా చేయాలో చూశాము. ల్యాబ్‌లో, మీరు పద-స్థాయి టెక్స్ట్ జనరేషన్‌ను అన్వేషిస్తారు.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,125 +1,125 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f335dfcb4a993920504c387973a36957",
"translation_date": "2025-11-25T23:10:43+00:00",
"source_file": "lessons/5-NLP/18-Transformers/README.md",
"language_code": "te"
}
-->
# అటెన్షన్ మెకానిజమ్స్ మరియు ట్రాన్స్‌ఫార్మర్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/35)
NLP డొమైన్‌లో అత్యంత ముఖ్యమైన సమస్యలలో ఒకటి **మిషన్ ట్రాన్స్‌లేషన్**, ఇది Google Translate వంటి టూల్స్‌కు ఆధారమైన ఒక అవసరమైన పని. ఈ విభాగంలో, మేము మిషన్ ట్రాన్స్‌లేషన్ లేదా సాధారణంగా ఏదైనా *సీక్వెన్స్-టు-సీక్వెన్స్* టాస్క్ (దీనిని **సెంటెన్స్ ట్రాన్స్‌డక్షన్** అని కూడా పిలుస్తారు) పై దృష్టి సారిస్తాము.
RNNలతో, సీక్వెన్స్-టు-సీక్వెన్స్ రెండు రికరెంట్ నెట్‌వర్క్స్ ద్వారా అమలు చేయబడుతుంది, ఇందులో ఒక నెట్‌వర్క్, **ఎంకోడర్**, ఇన్‌పుట్ సీక్వెన్స్‌ను ఒక హిడెన్ స్టేట్‌గా కుదింప చేస్తుంది, మరొక నెట్‌వర్క్, **డీకోడర్**, ఆ హిడెన్ స్టేట్‌ను అనువాద ఫలితంగా విస్తరించుతుంది. ఈ విధానంలో కొన్ని సమస్యలు ఉన్నాయి:
* ఎంకోడర్ నెట్‌వర్క్ యొక్క చివరి స్టేట్ వాక్య ప్రారంభాన్ని గుర్తుంచుకోవడంలో కష్టపడుతుంది, అందువల్ల పొడవైన వాక్యాలకు మోడల్ నాణ్యత తక్కువగా ఉంటుంది
* సీక్వెన్స్‌లోని అన్ని పదాలు ఫలితంపై సమాన ప్రభావం చూపుతాయి. నిజానికి, ఇన్‌పుట్ సీక్వెన్స్‌లోని కొన్ని పదాలు ఇతరాల కంటే ఎక్కువ ప్రభావం చూపుతాయి.
**అటెన్షన్ మెకానిజమ్స్** RNN యొక్క ప్రతి అవుట్‌పుట్ అంచనాపై ప్రతి ఇన్‌పుట్ వెక్టర్ యొక్క సందర్భాత్మక ప్రభావాన్ని తూగడానికి ఒక మార్గాన్ని అందిస్తాయి. ఇది అమలు చేయబడే విధానం ఇన్‌పుట్ RNN మరియు అవుట్‌పుట్ RNN మధ్య మధ్యవర్తి స్టేట్స్‌కు షార్ట్‌కట్స్ సృష్టించడం ద్వారా జరుగుతుంది. ఈ విధంగా, అవుట్‌పుట్ సింబల్ y<sub>t</sub> ఉత్పత్తి చేస్తున్నప్పుడు, మేము అన్ని ఇన్‌పుట్ హిడెన్ స్టేట్స్ h<sub>i</sub> ను వివిధ బరువు గుణకాలు &alpha;<sub>t,i</sub> తో పరిగణలోకి తీసుకుంటాము.
![ఎంకోడర్/డీకోడర్ మోడల్‌తో కూడిన యాడిటివ్ అటెన్షన్ లేయర్ చూపిస్తున్న చిత్రం](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.te.png)
> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) లోని యాడిటివ్ అటెన్షన్ మెకానిజం ఉన్న ఎంకోడర్-డీకోడర్ మోడల్, [ఈ బ్లాగ్ పోస్ట్](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) నుండి సైట్ చేయబడింది
అటెన్షన్ మ్యాట్రిక్స్ {&alpha;<sub>i,j</sub>} ఒక నిర్దిష్ట అవుట్‌పుట్ పదం ఉత్పత్తిలో కొన్ని ఇన్‌పుట్ పదాలు ఎంత మేర పాత్ర పోషిస్తున్నాయో సూచిస్తుంది. క్రింద అలాంటి మ్యాట్రిక్స్ ఉదాహరణ ఉంది:
![RNNsearch-50 ద్వారా కనుగొనబడిన నమూనా అలైన్‌మెంట్ చూపిస్తున్న చిత్రం, Bahdanau నుండి తీసుకున్నది - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.te.png)
> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి ఫిగర్ (ఫిగర్ 3)
అటెన్షన్ మెకానిజమ్స్ NLPలో ప్రస్తుత లేదా సమీప ప్రస్తుత అగ్రగామి స్థితికి కారణమవుతాయి. అయితే అటెన్షన్ జోడించడం వల్ల మోడల్ పరిమాణం చాలా పెరుగుతుంది, ఇది RNNలతో స్కేలింగ్ సమస్యలకు దారితీసింది. RNNలను స్కేలు చేయడంలో ప్రధాన పరిమితి మోడల్స్ యొక్క రికరెంట్ స్వభావం కారణంగా ట్రైనింగ్‌ను బ్యాచ్ మరియు ప్యారలలైజ్ చేయడం కష్టమవుతుంది. RNNలో సీక్వెన్స్ యొక్క ప్రతి అంశం వరుసగా ప్రాసెస్ చేయాలి, అందువల్ల ఇది సులభంగా ప్యారలలైజ్ చేయలేం.
![అటెన్షన్ ఉన్న ఎంకోడర్ డీకోడర్](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif)
> [Google బ్లాగ్](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) నుండి చిత్రం
ఈ పరిమితితో పాటు అటెన్షన్ మెకానిజమ్స్ ఆమోదం, మనం ఇప్పుడు ఉపయోగిస్తున్న BERT నుండి Open-GPT3 వరకు ఉన్న అగ్రగామి ట్రాన్స్‌ఫార్మర్ మోడల్స్ సృష్టికి దారితీసింది.
## ట్రాన్స్‌ఫార్మర్ మోడల్స్
ట్రాన్స్‌ఫార్మర్స్ వెనుక ప్రధాన ఆలోచన RNNల వరుస స్వభావాన్ని నివారించడం మరియు ట్రైనింగ్ సమయంలో ప్యారలలైజ్ చేయగల మోడల్ సృష్టించడం. ఇది రెండు ఆలోచనల ద్వారా సాధించబడుతుంది:
* పొజిషనల్ ఎంకోడింగ్
* RNNల (లేదా CNNల) స్థానంలో ప్యాటర్న్స్‌ను పట్టుకోవడానికి సెల్ఫ్-అటెన్షన్ మెకానిజం ఉపయోగించడం (అందుకే ట్రాన్స్‌ఫార్మర్స్ పరిచయం చేసే పేపర్ పేరు *[Attention is all you need](https://arxiv.org/abs/1706.03762)*)
### పొజిషనల్ ఎంకోడింగ్/ఎంబెడ్డింగ్
పొజిషనల్ ఎంకోడింగ్ ఆలోచన ఇలా ఉంది:
1. RNNల ఉపయోగంలో, టోకెన్ల సాపేక్ష స్థానాన్ని స్టెప్స్ సంఖ్య ద్వారా సూచిస్తారు, కాబట్టి స్పష్టంగా సూచించాల్సిన అవసరం లేదు.
2. అయితే, అటెన్షన్‌కు మారినప్పుడు, సీక్వెన్స్‌లో టోకెన్ల సాపేక్ష స్థానాలు తెలుసుకోవాలి.
3. పొజిషనల్ ఎంకోడింగ్ పొందడానికి, మేము టోకెన్ల సీక్వెన్స్‌తో పాటు టోకెన్ స్థానాల సీక్వెన్స్ (అంటే 0,1, ...) జత చేస్తాము.
4. ఆపై టోకెన్ స్థానాన్ని టోకెన్ ఎంబెడ్డింగ్ వెక్టర్‌తో కలుపుతాము. స్థానాన్ని (ఇంటిజర్) వెక్టర్‌గా మార్చడానికి వివిధ విధానాలు ఉన్నాయి:
* ట్రైనబుల్ ఎంబెడ్డింగ్, టోకెన్ ఎంబెడ్డింగ్‌లకు సమానంగా. ఇక్కడ మేము ఈ విధానాన్ని పరిగణిస్తాము. టోకెన్లకు మరియు వాటి స్థానాలకు ఎంబెడ్డింగ్ లేయర్లు వర్తింపజేస్తాము, ఫలితంగా ఒకే పరిమాణాల ఎంబెడ్డింగ్ వెక్టర్లు వస్తాయి, వాటిని కలిపి ఉపయోగిస్తాము.
* ఒరిజినల్ పేపర్‌లో ప్రతిపాదించిన స్థిరమైన పొజిషనల్ ఎంకోడింగ్ ఫంక్షన్.
<img src="../../../../../translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.te.png" width="50%"/>
> రచయితచే రూపొందించిన చిత్రం
పొజిషనల్ ఎంబెడ్డింగ్ ద్వారా మేము పొందేది, ఒరిజినల్ టోకెన్ మరియు దాని సీక్వెన్స్‌లోని స్థానాన్ని రెండింటినీ ఎంబెడ్ చేయడం.
### మల్టీ-హెడ్ సెల్ఫ్-అటెన్షన్
తర్వాత, సీక్వెన్స్‌లోని కొన్ని ప్యాటర్న్స్‌ను పట్టుకోవాలి. దీని కోసం, ట్రాన్స్‌ఫార్మర్స్ **సెల్ఫ్-అటెన్షన్** మెకానిజం ఉపయోగిస్తాయి, ఇది ఇన్‌పుట్ మరియు అవుట్‌పుట్ ఒకే సీక్వెన్స్‌పై అటెన్షన్ వర్తింపజేయడం. సెల్ఫ్-అటెన్షన్ వాక్యంలో **సందర్భం** పరిగణలోకి తీసుకోవడానికి, మరియు ఏ పదాలు పరస్పరం సంబంధం ఉన్నాయో చూడటానికి సహాయపడుతుంది. ఉదాహరణకు, ఇది *it* వంటి కోరెఫరెన్సులు సూచించే పదాలను గుర్తించడంలో సహాయపడుతుంది, అలాగే సందర్భాన్ని పరిగణలోకి తీసుకుంటుంది:
![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.te.png)
> [Google బ్లాగ్](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) నుండి చిత్రం
ట్రాన్స్‌ఫార్మర్స్‌లో, నెట్‌వర్క్‌కు వివిధ రకాల సంబంధాలను పట్టుకోవడానికి శక్తిని ఇవ్వడానికి **మల్టీ-హెడ్ అటెన్షన్** ఉపయోగిస్తారు, ఉదా: దీర్ఘకాలిక మరియు స్వల్పకాలిక పద సంబంధాలు, కోరెఫరెన్స్ మరియు ఇతర సంబంధాలు మొదలైనవి.
[TensorFlow నోట్‌బుక్](TransformersTF.ipynb) ట్రాన్స్‌ఫార్మర్ లేయర్ల అమలుపై మరిన్ని వివరాలు కలిగి ఉంది.
### ఎంకోడర్-డీకోడర్ అటెన్షన్
ట్రాన్స్‌ఫార్మర్స్‌లో, అటెన్షన్ రెండు చోట్ల ఉపయోగిస్తారు:
* ఇన్‌పుట్ టెక్స్ట్‌లోని ప్యాటర్న్స్‌ను పట్టుకోవడానికి సెల్ఫ్-అటెన్షన్ ఉపయోగించడం
* సీక్వెన్స్ అనువాదం చేయడానికి - ఇది ఎంకోడర్ మరియు డీకోడర్ మధ్య అటెన్షన్ లేయర్.
ఎంకోడర్-డీకోడర్ అటెన్షన్ RNNలలో ఉపయోగించే అటెన్షన్ మెకానిజం చాలా సమానంగా ఉంటుంది, ఈ విభాగం ప్రారంభంలో వివరించినట్లుగా. ఈ యానిమేటెడ్ డయాగ్రామ్ ఎంకోడర్-డీకోడర్ అటెన్షన్ పాత్రను వివరిస్తుంది.
![ట్రాన్స్‌ఫార్మర్ మోడల్స్‌లో ఎలా అంచనాలు చేయబడుతున్నాయో చూపించే యానిమేటెడ్ GIF](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif)
ప్రతి ఇన్‌పుట్ స్థానాన్ని స్వతంత్రంగా ప్రతి అవుట్‌పుట్ స్థానానికి మ్యాప్ చేయడం వల్ల, ట్రాన్స్‌ఫార్మర్స్ RNNల కంటే మెరుగ్గా ప్యారలలైజ్ చేయగలవు, ఇది పెద్ద మరియు మరింత వ్యక్తీకరించే భాషా మోడల్స్‌ను సాధ్యమవుతుంది. ప్రతి అటెన్షన్ హెడ్ పదాల మధ్య వేర్వేరు సంబంధాలను నేర్చుకోవడానికి ఉపయోగపడుతుంది, ఇది NLP పనులను మెరుగుపరుస్తుంది.
## BERT
**BERT** (Bidirectional Encoder Representations from Transformers) అనేది చాలా పెద్ద బహుళ లేయర్ ట్రాన్స్‌ఫార్మర్ నెట్‌వర్క్, *BERT-base*కి 12 లేయర్లు, *BERT-large*కి 24 లేయర్లు ఉన్నాయి. ఈ మోడల్ మొదట పెద్ద టెక్స్ట్ డేటా కార్పస్ (వికీపీడియా + పుస్తకాలు) పై అన్‌సూపర్వైజ్డ్ ట్రైనింగ్ (వాక్యంలో మాస్క్ చేసిన పదాలను అంచనా వేయడం) ద్వారా ప్రీ-ట్రెయిన్ చేయబడుతుంది. ప్రీ-ట్రైనింగ్ సమయంలో మోడల్ భాషా అర్థం గణనీయంగా పెరుగుతుంది, దీన్ని తర్వాత ఇతర డేటాసెట్‌లతో ఫైన్-ట్యూనింగ్ ద్వారా ఉపయోగించవచ్చు. ఈ ప్రక్రియను **ట్రాన్స్‌ఫర్ లెర్నింగ్** అంటారు.
![http://jalammar.github.io/illustrated-bert/ నుండి చిత్రం](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.te.png)
> చిత్రం [మూలం](http://jalammar.github.io/illustrated-bert/)
## ✍️ వ్యాయామాలు: ట్రాన్స్‌ఫార్మర్స్
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchలో ట్రాన్స్‌ఫార్మర్స్](TransformersPyTorch.ipynb)
* [TensorFlowలో ట్రాన్స్‌ఫార్మర్స్](TransformersTF.ipynb)
## ముగింపు
ఈ పాఠంలో మీరు ట్రాన్స్‌ఫార్మర్స్ మరియు అటెన్షన్ మెకానిజమ్స్ గురించి నేర్చుకున్నారు, ఇవి NLP టూల్‌బాక్స్‌లో అత్యవసరమైన సాధనాలు. BERT, DistilBERT, BigBird, OpenGPT3 వంటి అనేక ట్రాన్స్‌ఫార్మర్ వేరియంట్లు ఉన్నాయి, వీటిని ఫైన్-ట్యూన్ చేయవచ్చు. [HuggingFace ప్యాకేజ్](https://github.com/huggingface/) PyTorch మరియు TensorFlow రెండింటిలోనూ ఈ ఆర్కిటెక్చర్లను ట్రెయిన్ చేయడానికి రిపాజిటరీని అందిస్తుంది.
## 🚀 సవాలు
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/36)
## సమీక్ష & స్వీయ అధ్యయనం
* [బ్లాగ్ పోస్ట్](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), క్లాసికల్ [Attention is all you need](https://arxiv.org/abs/1706.03762) పేపర్‌ను వివరించడం.
* ట్రాన్స్‌ఫార్మర్స్‌పై [బ్లాగ్ పోస్టుల సిరీస్](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), ఆర్కిటెక్చర్‌ను వివరించడం.
## [అసైన్‌మెంట్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f335dfcb4a993920504c387973a36957",
"translation_date": "2025-11-25T23:10:43+00:00",
"source_file": "lessons/5-NLP/18-Transformers/README.md",
"language_code": "te"
}
-->
# అటెన్షన్ మెకానిజమ్స్ మరియు ట్రాన్స్‌ఫార్మర్స్
## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/35)
NLP డొమైన్‌లో అత్యంత ముఖ్యమైన సమస్యలలో ఒకటి **మిషన్ ట్రాన్స్‌లేషన్**, ఇది Google Translate వంటి టూల్స్‌కు ఆధారమైన ఒక అవసరమైన పని. ఈ విభాగంలో, మేము మిషన్ ట్రాన్స్‌లేషన్ లేదా సాధారణంగా ఏదైనా *సీక్వెన్స్-టు-సీక్వెన్స్* టాస్క్ (దీనిని **సెంటెన్స్ ట్రాన్స్‌డక్షన్** అని కూడా పిలుస్తారు) పై దృష్టి సారిస్తాము.
RNNలతో, సీక్వెన్స్-టు-సీక్వెన్స్ రెండు రికరెంట్ నెట్‌వర్క్స్ ద్వారా అమలు చేయబడుతుంది, ఇందులో ఒక నెట్‌వర్క్, **ఎంకోడర్**, ఇన్‌పుట్ సీక్వెన్స్‌ను ఒక హిడెన్ స్టేట్‌గా కుదింప చేస్తుంది, మరొక నెట్‌వర్క్, **డీకోడర్**, ఆ హిడెన్ స్టేట్‌ను అనువాద ఫలితంగా విస్తరించుతుంది. ఈ విధానంలో కొన్ని సమస్యలు ఉన్నాయి:
* ఎంకోడర్ నెట్‌వర్క్ యొక్క చివరి స్టేట్ వాక్య ప్రారంభాన్ని గుర్తుంచుకోవడంలో కష్టపడుతుంది, అందువల్ల పొడవైన వాక్యాలకు మోడల్ నాణ్యత తక్కువగా ఉంటుంది
* సీక్వెన్స్‌లోని అన్ని పదాలు ఫలితంపై సమాన ప్రభావం చూపుతాయి. నిజానికి, ఇన్‌పుట్ సీక్వెన్స్‌లోని కొన్ని పదాలు ఇతరాల కంటే ఎక్కువ ప్రభావం చూపుతాయి.
**అటెన్షన్ మెకానిజమ్స్** RNN యొక్క ప్రతి అవుట్‌పుట్ అంచనాపై ప్రతి ఇన్‌పుట్ వెక్టర్ యొక్క సందర్భాత్మక ప్రభావాన్ని తూగడానికి ఒక మార్గాన్ని అందిస్తాయి. ఇది అమలు చేయబడే విధానం ఇన్‌పుట్ RNN మరియు అవుట్‌పుట్ RNN మధ్య మధ్యవర్తి స్టేట్స్‌కు షార్ట్‌కట్స్ సృష్టించడం ద్వారా జరుగుతుంది. ఈ విధంగా, అవుట్‌పుట్ సింబల్ y<sub>t</sub> ఉత్పత్తి చేస్తున్నప్పుడు, మేము అన్ని ఇన్‌పుట్ హిడెన్ స్టేట్స్ h<sub>i</sub> ను వివిధ బరువు గుణకాలు &alpha;<sub>t,i</sub> తో పరిగణలోకి తీసుకుంటాము.
![ఎంకోడర్/డీకోడర్ మోడల్‌తో కూడిన యాడిటివ్ అటెన్షన్ లేయర్ చూపిస్తున్న చిత్రం](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567.te.png)
> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) లోని యాడిటివ్ అటెన్షన్ మెకానిజం ఉన్న ఎంకోడర్-డీకోడర్ మోడల్, [ఈ బ్లాగ్ పోస్ట్](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) నుండి సైట్ చేయబడింది
అటెన్షన్ మ్యాట్రిక్స్ {&alpha;<sub>i,j</sub>} ఒక నిర్దిష్ట అవుట్‌పుట్ పదం ఉత్పత్తిలో కొన్ని ఇన్‌పుట్ పదాలు ఎంత మేర పాత్ర పోషిస్తున్నాయో సూచిస్తుంది. క్రింద అలాంటి మ్యాట్రిక్స్ ఉదాహరణ ఉంది:
![RNNsearch-50 ద్వారా కనుగొనబడిన నమూనా అలైన్‌మెంట్ చూపిస్తున్న చిత్రం, Bahdanau నుండి తీసుకున్నది - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af.te.png)
> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి ఫిగర్ (ఫిగర్ 3)
అటెన్షన్ మెకానిజమ్స్ NLPలో ప్రస్తుత లేదా సమీప ప్రస్తుత అగ్రగామి స్థితికి కారణమవుతాయి. అయితే అటెన్షన్ జోడించడం వల్ల మోడల్ పరిమాణం చాలా పెరుగుతుంది, ఇది RNNలతో స్కేలింగ్ సమస్యలకు దారితీసింది. RNNలను స్కేలు చేయడంలో ప్రధాన పరిమితి మోడల్స్ యొక్క రికరెంట్ స్వభావం కారణంగా ట్రైనింగ్‌ను బ్యాచ్ మరియు ప్యారలలైజ్ చేయడం కష్టమవుతుంది. RNNలో సీక్వెన్స్ యొక్క ప్రతి అంశం వరుసగా ప్రాసెస్ చేయాలి, అందువల్ల ఇది సులభంగా ప్యారలలైజ్ చేయలేం.
![అటెన్షన్ ఉన్న ఎంకోడర్ డీకోడర్](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif)
> [Google బ్లాగ్](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) నుండి చిత్రం
ఈ పరిమితితో పాటు అటెన్షన్ మెకానిజమ్స్ ఆమోదం, మనం ఇప్పుడు ఉపయోగిస్తున్న BERT నుండి Open-GPT3 వరకు ఉన్న అగ్రగామి ట్రాన్స్‌ఫార్మర్ మోడల్స్ సృష్టికి దారితీసింది.
## ట్రాన్స్‌ఫార్మర్ మోడల్స్
ట్రాన్స్‌ఫార్మర్స్ వెనుక ప్రధాన ఆలోచన RNNల వరుస స్వభావాన్ని నివారించడం మరియు ట్రైనింగ్ సమయంలో ప్యారలలైజ్ చేయగల మోడల్ సృష్టించడం. ఇది రెండు ఆలోచనల ద్వారా సాధించబడుతుంది:
* పొజిషనల్ ఎంకోడింగ్
* RNNల (లేదా CNNల) స్థానంలో ప్యాటర్న్స్‌ను పట్టుకోవడానికి సెల్ఫ్-అటెన్షన్ మెకానిజం ఉపయోగించడం (అందుకే ట్రాన్స్‌ఫార్మర్స్ పరిచయం చేసే పేపర్ పేరు *[Attention is all you need](https://arxiv.org/abs/1706.03762)*)
### పొజిషనల్ ఎంకోడింగ్/ఎంబెడ్డింగ్
పొజిషనల్ ఎంకోడింగ్ ఆలోచన ఇలా ఉంది:
1. RNNల ఉపయోగంలో, టోకెన్ల సాపేక్ష స్థానాన్ని స్టెప్స్ సంఖ్య ద్వారా సూచిస్తారు, కాబట్టి స్పష్టంగా సూచించాల్సిన అవసరం లేదు.
2. అయితే, అటెన్షన్‌కు మారినప్పుడు, సీక్వెన్స్‌లో టోకెన్ల సాపేక్ష స్థానాలు తెలుసుకోవాలి.
3. పొజిషనల్ ఎంకోడింగ్ పొందడానికి, మేము టోకెన్ల సీక్వెన్స్‌తో పాటు టోకెన్ స్థానాల సీక్వెన్స్ (అంటే 0,1, ...) జత చేస్తాము.
4. ఆపై టోకెన్ స్థానాన్ని టోకెన్ ఎంబెడ్డింగ్ వెక్టర్‌తో కలుపుతాము. స్థానాన్ని (ఇంటిజర్) వెక్టర్‌గా మార్చడానికి వివిధ విధానాలు ఉన్నాయి:
* ట్రైనబుల్ ఎంబెడ్డింగ్, టోకెన్ ఎంబెడ్డింగ్‌లకు సమానంగా. ఇక్కడ మేము ఈ విధానాన్ని పరిగణిస్తాము. టోకెన్లకు మరియు వాటి స్థానాలకు ఎంబెడ్డింగ్ లేయర్లు వర్తింపజేస్తాము, ఫలితంగా ఒకే పరిమాణాల ఎంబెడ్డింగ్ వెక్టర్లు వస్తాయి, వాటిని కలిపి ఉపయోగిస్తాము.
* ఒరిజినల్ పేపర్‌లో ప్రతిపాదించిన స్థిరమైన పొజిషనల్ ఎంకోడింగ్ ఫంక్షన్.
<img src="../../../../../translated_images/pos-embedding.e41ce9b6cf6078af.te.png" width="50%"/>
> రచయితచే రూపొందించిన చిత్రం
పొజిషనల్ ఎంబెడ్డింగ్ ద్వారా మేము పొందేది, ఒరిజినల్ టోకెన్ మరియు దాని సీక్వెన్స్‌లోని స్థానాన్ని రెండింటినీ ఎంబెడ్ చేయడం.
### మల్టీ-హెడ్ సెల్ఫ్-అటెన్షన్
తర్వాత, సీక్వెన్స్‌లోని కొన్ని ప్యాటర్న్స్‌ను పట్టుకోవాలి. దీని కోసం, ట్రాన్స్‌ఫార్మర్స్ **సెల్ఫ్-అటెన్షన్** మెకానిజం ఉపయోగిస్తాయి, ఇది ఇన్‌పుట్ మరియు అవుట్‌పుట్ ఒకే సీక్వెన్స్‌పై అటెన్షన్ వర్తింపజేయడం. సెల్ఫ్-అటెన్షన్ వాక్యంలో **సందర్భం** పరిగణలోకి తీసుకోవడానికి, మరియు ఏ పదాలు పరస్పరం సంబంధం ఉన్నాయో చూడటానికి సహాయపడుతుంది. ఉదాహరణకు, ఇది *it* వంటి కోరెఫరెన్సులు సూచించే పదాలను గుర్తించడంలో సహాయపడుతుంది, అలాగే సందర్భాన్ని పరిగణలోకి తీసుకుంటుంది:
![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d6.te.png)
> [Google బ్లాగ్](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) నుండి చిత్రం
ట్రాన్స్‌ఫార్మర్స్‌లో, నెట్‌వర్క్‌కు వివిధ రకాల సంబంధాలను పట్టుకోవడానికి శక్తిని ఇవ్వడానికి **మల్టీ-హెడ్ అటెన్షన్** ఉపయోగిస్తారు, ఉదా: దీర్ఘకాలిక మరియు స్వల్పకాలిక పద సంబంధాలు, కోరెఫరెన్స్ మరియు ఇతర సంబంధాలు మొదలైనవి.
[TensorFlow నోట్‌బుక్](TransformersTF.ipynb) ట్రాన్స్‌ఫార్మర్ లేయర్ల అమలుపై మరిన్ని వివరాలు కలిగి ఉంది.
### ఎంకోడర్-డీకోడర్ అటెన్షన్
ట్రాన్స్‌ఫార్మర్స్‌లో, అటెన్షన్ రెండు చోట్ల ఉపయోగిస్తారు:
* ఇన్‌పుట్ టెక్స్ట్‌లోని ప్యాటర్న్స్‌ను పట్టుకోవడానికి సెల్ఫ్-అటెన్షన్ ఉపయోగించడం
* సీక్వెన్స్ అనువాదం చేయడానికి - ఇది ఎంకోడర్ మరియు డీకోడర్ మధ్య అటెన్షన్ లేయర్.
ఎంకోడర్-డీకోడర్ అటెన్షన్ RNNలలో ఉపయోగించే అటెన్షన్ మెకానిజం చాలా సమానంగా ఉంటుంది, ఈ విభాగం ప్రారంభంలో వివరించినట్లుగా. ఈ యానిమేటెడ్ డయాగ్రామ్ ఎంకోడర్-డీకోడర్ అటెన్షన్ పాత్రను వివరిస్తుంది.
![ట్రాన్స్‌ఫార్మర్ మోడల్స్‌లో ఎలా అంచనాలు చేయబడుతున్నాయో చూపించే యానిమేటెడ్ GIF](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif)
ప్రతి ఇన్‌పుట్ స్థానాన్ని స్వతంత్రంగా ప్రతి అవుట్‌పుట్ స్థానానికి మ్యాప్ చేయడం వల్ల, ట్రాన్స్‌ఫార్మర్స్ RNNల కంటే మెరుగ్గా ప్యారలలైజ్ చేయగలవు, ఇది పెద్ద మరియు మరింత వ్యక్తీకరించే భాషా మోడల్స్‌ను సాధ్యమవుతుంది. ప్రతి అటెన్షన్ హెడ్ పదాల మధ్య వేర్వేరు సంబంధాలను నేర్చుకోవడానికి ఉపయోగపడుతుంది, ఇది NLP పనులను మెరుగుపరుస్తుంది.
## BERT
**BERT** (Bidirectional Encoder Representations from Transformers) అనేది చాలా పెద్ద బహుళ లేయర్ ట్రాన్స్‌ఫార్మర్ నెట్‌వర్క్, *BERT-base*కి 12 లేయర్లు, *BERT-large*కి 24 లేయర్లు ఉన్నాయి. ఈ మోడల్ మొదట పెద్ద టెక్స్ట్ డేటా కార్పస్ (వికీపీడియా + పుస్తకాలు) పై అన్‌సూపర్వైజ్డ్ ట్రైనింగ్ (వాక్యంలో మాస్క్ చేసిన పదాలను అంచనా వేయడం) ద్వారా ప్రీ-ట్రెయిన్ చేయబడుతుంది. ప్రీ-ట్రైనింగ్ సమయంలో మోడల్ భాషా అర్థం గణనీయంగా పెరుగుతుంది, దీన్ని తర్వాత ఇతర డేటాసెట్‌లతో ఫైన్-ట్యూనింగ్ ద్వారా ఉపయోగించవచ్చు. ఈ ప్రక్రియను **ట్రాన్స్‌ఫర్ లెర్నింగ్** అంటారు.
![http://jalammar.github.io/illustrated-bert/ నుండి చిత్రం](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362.te.png)
> చిత్రం [మూలం](http://jalammar.github.io/illustrated-bert/)
## ✍️ వ్యాయామాలు: ట్రాన్స్‌ఫార్మర్స్
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [PyTorchలో ట్రాన్స్‌ఫార్మర్స్](TransformersPyTorch.ipynb)
* [TensorFlowలో ట్రాన్స్‌ఫార్మర్స్](TransformersTF.ipynb)
## ముగింపు
ఈ పాఠంలో మీరు ట్రాన్స్‌ఫార్మర్స్ మరియు అటెన్షన్ మెకానిజమ్స్ గురించి నేర్చుకున్నారు, ఇవి NLP టూల్‌బాక్స్‌లో అత్యవసరమైన సాధనాలు. BERT, DistilBERT, BigBird, OpenGPT3 వంటి అనేక ట్రాన్స్‌ఫార్మర్ వేరియంట్లు ఉన్నాయి, వీటిని ఫైన్-ట్యూన్ చేయవచ్చు. [HuggingFace ప్యాకేజ్](https://github.com/huggingface/) PyTorch మరియు TensorFlow రెండింటిలోనూ ఈ ఆర్కిటెక్చర్లను ట్రెయిన్ చేయడానికి రిపాజిటరీని అందిస్తుంది.
## 🚀 సవాలు
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/36)
## సమీక్ష & స్వీయ అధ్యయనం
* [బ్లాగ్ పోస్ట్](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), క్లాసికల్ [Attention is all you need](https://arxiv.org/abs/1706.03762) పేపర్‌ను వివరించడం.
* ట్రాన్స్‌ఫార్మర్స్‌పై [బ్లాగ్ పోస్టుల సిరీస్](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), ఆర్కిటెక్చర్‌ను వివరించడం.
## [అసైన్‌మెంట్](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,353 +1,353 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# అటెన్షన్ మెకానిజమ్స్ మరియు ట్రాన్స్‌ఫార్మర్స్\n",
"\n",
"ఒక ప్రధాన లోపం రికరెంట్ నెట్‌వర్క్స్‌లో ఏమిటంటే, ఒక సీక్వెన్స్‌లోని అన్ని పదాలు ఫలితంపై సమాన ప్రభావం చూపుతాయి. ఇది సీక్వెన్స్-టు-సీక్వెన్స్ పనుల కోసం సాధారణ LSTM ఎంకోడర్-డీకోడర్ మోడల్స్‌లో సబ్ఆప్టిమల్ పనితీరుకు దారితీస్తుంది, ఉదాహరణకు నేమ్డ్ ఎంటిటీ రికగ్నిషన్ మరియు మెషీన్ ట్రాన్స్‌లేషన్. వాస్తవానికి, ఇన్‌పుట్ సీక్వెన్స్‌లోని కొన్ని ప్రత్యేక పదాలు ఇతరాల కంటే సీక్వెన్షియల్ అవుట్‌పుట్స్‌పై ఎక్కువ ప్రభావం చూపుతాయి.\n",
"\n",
"మెషీన్ ట్రాన్స్‌లేషన్ వంటి సీక్వెన్స్-టు-సీక్వెన్స్ మోడల్‌ను పరిగణించండి. ఇది రెండు రికరెంట్ నెట్‌వర్క్స్ ద్వారా అమలు చేయబడుతుంది, ఒక నెట్‌వర్క్ (**ఎంకోడర్**) ఇన్‌పుట్ సీక్వెన్స్‌ను హిడెన్ స్టేట్‌గా సంకుచితం చేస్తుంది, మరొకటి, **డీకోడర్**, ఆ హిడెన్ స్టేట్‌ను అనువాద ఫలితంగా విస్తరించుతుంది. ఈ విధానంలో సమస్య ఏమిటంటే, నెట్‌వర్క్ యొక్క తుది స్థితి వాక్య ప్రారంభాన్ని గుర్తుంచుకోవడంలో కష్టపడుతుంది, అందువల్ల పొడవైన వాక్యాలలో మోడల్ నాణ్యత తక్కువగా ఉంటుంది.\n",
"\n",
"**అటెన్షన్ మెకానిజమ్స్** RNN యొక్క ప్రతి అవుట్‌పుట్ అంచనాపై ప్రతి ఇన్‌పుట్ వెక్టర్ యొక్క సందర్భాత్మక ప్రభావాన్ని బరువు వేయడానికి ఒక మార్గాన్ని అందిస్తాయి. ఇది అమలు చేయబడే విధానం ఏమిటంటే, ఇన్‌పుట్ RNN యొక్క మధ్యస్థితుల మరియు అవుట్‌పుట్ RNN మధ్య షార్ట్‌కట్స్ సృష్టించడం. ఈ విధంగా, అవుట్‌పుట్ సింబల్ $y_t$ ఉత్పత్తి చేస్తున్నప్పుడు, అన్ని ఇన్‌పుట్ హిడెన్ స్టేట్స్ $h_i$ ను వివిధ బరువు గుణకాలు $\\alpha_{t,i}$ తో పరిగణలోకి తీసుకుంటాము.\n",
"\n",
"![Image showing an encoder/decoder model with an additive attention layer](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.te.png)\n",
"*అడిటివ్ అటెన్షన్ మెకానిజం ఉన్న ఎంకోడర్-డీకోడర్ మోడల్ [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి, [ఈ బ్లాగ్ పోస్ట్](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) నుండి సేకరించబడింది*\n",
"\n",
"అటెన్షన్ మ్యాట్రిక్స్ $\\{\\alpha_{i,j}\\}$ ఒక నిర్దిష్ట అవుట్‌పుట్ పదం ఉత్పత్తిలో కొన్ని ఇన్‌పుట్ పదాలు ఎంత భాగం పోషిస్తున్నాయో సూచిస్తుంది. క్రింద అలాంటి మ్యాట్రిక్స్ ఉదాహరణ ఉంది:\n",
"\n",
"![Image showing a sample alignment found by RNNsearch-50, taken from Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.te.png)\n",
"\n",
"*[Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి తీసుకున్న చిత్రం (ఫిగర్ 3)*\n",
"\n",
"అటెన్షన్ మెకానిజమ్స్ ప్రస్తుత లేదా సమీప భవిష్యత్తులో నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్‌లో ఉన్న అత్యాధునిక స్థితికి కారణమవుతున్నాయి. అయితే, అటెన్షన్ జోడించడం వల్ల మోడల్ పరిమాణాలు గణనీయంగా పెరుగుతాయి, ఇది RNNలతో స్కేలింగ్ సమస్యలకు దారితీస్తుంది. RNNలను స్కేలు చేయడంలో ప్రధాన పరిమితి ఏమిటంటే, మోడల్స్ యొక్క రికరెంట్ స్వభావం కారణంగా ట్రైనింగ్‌ను బ్యాచ్ చేయడం మరియు ప్యారలలైజ్ చేయడం కష్టమవుతుంది. RNNలో సీక్వెన్స్‌లోని ప్రతి అంశాన్ని వరుసగా ప్రాసెస్ చేయాలి, అందువల్ల ఇది సులభంగా ప్యారలలైజ్ చేయలేము.\n",
"\n",
"ఈ పరిమితితో కలిపి అటెన్షన్ మెకానిజమ్స్ స్వీకరణ, మనం ఇప్పుడు తెలుసుకున్న మరియు ఉపయోగిస్తున్న అత్యాధునిక ట్రాన్స్‌ఫార్మర్ మోడల్స్ సృష్టికి దారితీసింది, BERT నుండి OpenGPT3 వరకు.\n",
"\n",
"## ట్రాన్స్‌ఫార్మర్ మోడల్స్\n",
"\n",
"ప్రతి గత అంచనాపై ఆధారపడి తదుపరి అంచనా దశకు సందర్భాన్ని పంపడం బదులు, **ట్రాన్స్‌ఫార్మర్ మోడల్స్** **పోసిషనల్ ఎంకోడింగ్స్** మరియు అటెన్షన్ ఉపయోగించి ఇచ్చిన విండోలోని ఇన్‌పుట్ సందర్భాన్ని పట్టుకుంటాయి. క్రింది చిత్రం పోసిషనల్ ఎంకోడింగ్స్ మరియు అటెన్షన్ ఎలా ఇచ్చిన విండోలో సందర్భాన్ని పట్టుకుంటాయో చూపిస్తుంది.\n",
"\n",
"![Animated GIF showing how the evaluations are performed in transformer models.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif)\n",
"\n",
"ప్రతి ఇన్‌పుట్ పొజిషన్ స్వతంత్రంగా ప్రతి అవుట్‌పుట్ పొజిషన్‌కు మ్యాప్ చేయబడినందున, ట్రాన్స్‌ఫార్మర్స్ RNNల కంటే మెరుగ్గా ప్యారలలైజ్ చేయగలవు, ఇది చాలా పెద్ద మరియు వ్యక్తీకరణాత్మక భాషా మోడల్స్‌ను సాధ్యమవుతుంది. ప్రతి అటెన్షన్ హెడ్ పదాల మధ్య వేరే సంబంధాలను నేర్చుకోవడానికి ఉపయోగపడుతుంది, ఇది తరువాతి నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్ పనులను మెరుగుపరుస్తుంది.\n",
"\n",
"**BERT** (Bidirectional Encoder Representations from Transformers) అనేది చాలా పెద్ద బహుళ-లేయర్ ట్రాన్స్‌ఫార్మర్ నెట్‌వర్క్, *BERT-base* కోసం 12 లేయర్లు, *BERT-large* కోసం 24 లేయర్లు కలిగి ఉంటుంది. ఈ మోడల్ మొదట పెద్ద టెక్స్ట్ డేటా కార్పస్ (వికీపీడియా + పుస్తకాలు) పై అనుసూచిత శిక్షణ (unsupervised training) ద్వారా ప్రీ-ట్రెయిన్ చేయబడుతుంది (వాక్యంలో మాస్క్ చేసిన పదాలను అంచనా వేయడం). ప్రీ-ట్రెయినింగ్ సమయంలో మోడల్ భాషా అవగాహనను గణనీయంగా గ్రహిస్తుంది, దీన్ని తరువాత ఇతర డేటాసెట్లతో ఫైన్-ట్యూనింగ్ ద్వారా ఉపయోగించవచ్చు. ఈ ప్రక్రియను **ట్రాన్స్‌ఫర్ లెర్నింగ్** అంటారు.\n",
"\n",
"![picture from http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.te.png)\n",
"\n",
"ట్రాన్స్‌ఫార్మర్ ఆర్కిటెక్చర్స్‌లో అనేక వేరియేషన్లు ఉన్నాయి, వాటిలో BERT, DistilBERT, BigBird, OpenGPT3 మరియు మరిన్ని ఉన్నాయి, వీటిని ఫైన్-ట్యూన్ చేయవచ్చు. [HuggingFace ప్యాకేజ్](https://github.com/huggingface/) PyTorchతో ఈ ఆర్కిటెక్చర్స్‌లో చాలా మోడల్స్ శిక్షణ కోసం రిపాజిటరీని అందిస్తుంది.\n",
"\n",
"## టెక్స్ట్ క్లాసిఫికేషన్ కోసం BERT ఉపయోగించడం\n",
"\n",
"మనం ప్రీ-ట్రెయిన్ చేసిన BERT మోడల్‌ను సాంప్రదాయమైన పని: సీక్వెన్స్ క్లాసిఫికేషన్ కోసం ఎలా ఉపయోగించాలో చూద్దాం. మనం మా అసలు AG News డేటాసెట్‌ను క్లాసిఫై చేస్తాము.\n",
"\n",
"ముందుగా, HuggingFace లైబ్రరీ మరియు మన డేటాసెట్‌ను లోడ్ చేద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"from torchnlp import *\n",
"import transformers\n",
"train_dataset, test_dataset, classes, vocab = load_dataset()\n",
"vocab_len = len(vocab)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మనం ప్రీ-ట్రెయిన్డ్ BERT మోడల్ ఉపయోగించబోతున్నందున, ప్రత్యేక టోకనైజర్ అవసరం అవుతుంది. మొదట, ప్రీ-ట్రెయిన్డ్ BERT మోడల్‌కు సంబంధించిన టోకనైజర్‌ను లోడ్ చేస్తాము.\n",
"\n",
"HuggingFace లైబ్రరీలో ప్రీ-ట్రెయిన్డ్ మోడల్స్ యొక్క రిపాజిటరీ ఉంటుంది, వాటి పేర్లను `from_pretrained` ఫంక్షన్లకు ఆర్గ్యుమెంట్లుగా ఇచ్చి మీరు సులభంగా ఉపయోగించుకోవచ్చు. మోడల్‌కు అవసరమైన అన్ని బైనరీ ఫైళ్లు ఆటోమేటిక్‌గా డౌన్లోడ్ అవుతాయి.\n",
"\n",
"కానీ, కొన్ని సందర్భాల్లో మీరు మీ స్వంత మోడల్స్‌ను లోడ్ చేయవలసి వస్తుంది, అప్పుడు టోకనైజర్ కోసం పరామితులు, మోడల్ పరామితులతో కూడిన `config.json` ఫైల్, బైనరీ వెయిట్స్ మొదలైన అన్ని సంబంధిత ఫైళ్లు ఉన్న డైరెక్టరీని మీరు స్పెసిఫై చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# To load the model from Internet repository using model name. \n",
"# Use this if you are running from your own copy of the notebooks\n",
"bert_model = 'bert-base-uncased' \n",
"\n",
"# To load the model from the directory on disk. Use this for Microsoft Learn module, because we have\n",
"# prepared all required files for you.\n",
"bert_model = './bert'\n",
"\n",
"tokenizer = transformers.BertTokenizer.from_pretrained(bert_model)\n",
"\n",
"MAX_SEQ_LEN = 128\n",
"PAD_INDEX = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)\n",
"UNK_INDEX = tokenizer.convert_tokens_to_ids(tokenizer.unk_token)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`tokenizer` ఆబ్జెక్ట్‌లో `encode` ఫంక్షన్ ఉంటుంది, దీన్ని టెక్స్ట్‌ను నేరుగా ఎన్‌కోడ్ చేయడానికి ఉపయోగించవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[101, 1052, 22123, 2953, 2818, 2003, 1037, 2307, 7705, 2005, 17953, 2361, 102]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tokenizer.encode('PyTorch is a great framework for NLP')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"అప్పుడు, మనం ట్రైనింగ్ సమయంలో డేటాను యాక్సెస్ చేయడానికి ఉపయోగించే ఇటరేటర్లను సృష్టిద్దాం. BERT తన స్వంత ఎంకోడింగ్ ఫంక్షన్ ఉపయోగిస్తుండగా, మనం ముందుగా నిర్వచించిన `padify` లాంటి ప్యాడింగ్ ఫంక్షన్‌ను నిర్వచించాల్సి ఉంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def pad_bert(b):\n",
" # b is the list of tuples of length batch_size\n",
" # - first element of a tuple = label, \n",
" # - second = feature (text sequence)\n",
" # build vectorized sequence\n",
" v = [tokenizer.encode(x[1]) for x in b]\n",
" # compute max length of a sequence in this minibatch\n",
" l = max(map(len,v))\n",
" return ( # tuple of two tensors - labels and features\n",
" torch.LongTensor([t[0] for t in b]),\n",
" torch.stack([torch.nn.functional.pad(torch.tensor(t),(0,l-len(t)),mode='constant',value=0) for t in v])\n",
" )\n",
"\n",
"train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=8, collate_fn=pad_bert, shuffle=True)\n",
"test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=8, collate_fn=pad_bert)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన కేసులో, మేము `bert-base-uncased` అనే ప్రీ-ట్రెయిన్డ్ BERT మోడల్‌ను ఉపయోగించబోతున్నాము. మోడల్‌ను `BertForSequenceClassification` ప్యాకేజీ ఉపయోగించి లోడ్ చేద్దాం. ఇది మా మోడల్ ఇప్పటికే క్లాసిఫికేషన్ కోసం అవసరమైన ఆర్కిటెక్చర్ కలిగి ఉందని నిర్ధారిస్తుంది, ఫైనల్ క్లాసిఫైయర్ సహా. మీరు ఒక హెచ్చరిక సందేశం చూడవచ్చు, ఇది ఫైనల్ క్లాసిఫైయర్ యొక్క వెయిట్స్ ప్రారంభించబడలేదని మరియు మోడల్ ప్రీ-ట్రెయినింగ్ అవసరం అని సూచిస్తుంది - ఇది పూర్తిగా సరే, ఎందుకంటే అదే మేము చేయబోతున్నాం!\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Some weights of the model checkpoint at ./bert were not used when initializing BertForSequenceClassification: ['cls.predictions.bias', 'cls.predictions.transform.dense.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.decoder.weight', 'cls.seq_relationship.weight', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.LayerNorm.bias']\n",
"- This IS expected if you are initializing BertForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
"- This IS NOT expected if you are initializing BertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
"Some weights of BertForSequenceClassification were not initialized from the model checkpoint at ./bert and are newly initialized: ['classifier.weight', 'classifier.bias']\n",
"You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
]
}
],
"source": [
"model = transformers.BertForSequenceClassification.from_pretrained(bert_model,num_labels=4).to(device)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మేము శిక్షణ ప్రారంభించడానికి సిద్ధంగా ఉన్నాము! BERT ఇప్పటికే ప్రీ-ట్రెయిన్ చేయబడినందున, ప్రారంభ బరువులను నాశనం చేయకుండా ఉండేందుకు తక్కువ లెర్నింగ్ రేట్‌తో ప్రారంభించాలనుకుంటున్నాము.\n",
"\n",
"అన్ని కష్టపడి చేసిన పని `BertForSequenceClassification` మోడల్ చేస్తుంది. మేము శిక్షణ డేటాపై మోడల్‌ను పిలిచినప్పుడు, అది ఇన్‌పుట్ మినీబ్యాచ్ కోసం లాస్ మరియు నెట్‌వర్క్ అవుట్‌పుట్ రెండింటినీ ఇస్తుంది. మేము పారామీటర్ ఆప్టిమైజేషన్ కోసం లాస్‌ను ఉపయోగిస్తాము (`loss.backward()` బ్యాక్‌వర్డ్ పాస్ చేస్తుంది), మరియు శిక్షణ ఖచ్చితత్వం లెక్కించడానికి `out` ను ఉపయోగిస్తాము, అందులో పొందిన లేబుల్స్ `labs` (`argmax` ఉపయోగించి లెక్కించబడినవి) ను ఆశించిన `labels` తో పోల్చుతాము.\n",
"\n",
"ప్రక్రియను నియంత్రించడానికి, మేము లాస్ మరియు ఖచ్చితత్వాన్ని కొన్ని ఇటరేషన్లలో సేకరిస్తూ, ప్రతి `report_freq` శిక్షణ చక్రాల్లో వాటిని ప్రింట్ చేస్తాము.\n",
"\n",
"ఈ శిక్షణ చాలా సమయం తీసుకోవచ్చు, కాబట్టి మేము ఇటరేషన్ల సంఖ్యను పరిమితం చేస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loss = 1.1254194641113282, Accuracy = 0.585\n",
"Loss = 0.6194715118408203, Accuracy = 0.83\n",
"Loss = 0.46665248870849607, Accuracy = 0.8475\n",
"Loss = 0.4309701919555664, Accuracy = 0.8575\n",
"Loss = 0.35427074432373046, Accuracy = 0.8825\n",
"Loss = 0.3306886291503906, Accuracy = 0.8975\n",
"Loss = 0.30340143203735354, Accuracy = 0.8975\n",
"Loss = 0.26139299392700194, Accuracy = 0.915\n",
"Loss = 0.26708646774291994, Accuracy = 0.9225\n",
"Loss = 0.3667240524291992, Accuracy = 0.8675\n"
]
}
],
"source": [
"optimizer = torch.optim.Adam(model.parameters(), lr=2e-5)\n",
"\n",
"report_freq = 50\n",
"iterations = 500 # make this larger to train for longer time!\n",
"\n",
"model.train()\n",
"\n",
"i,c = 0,0\n",
"acc_loss = 0\n",
"acc_acc = 0\n",
"\n",
"for labels,texts in train_loader:\n",
" labels = labels.to(device)-1 # get labels in the range 0-3 \n",
" texts = texts.to(device)\n",
" loss, out = model(texts, labels=labels)[:2]\n",
" labs = out.argmax(dim=1)\n",
" acc = torch.mean((labs==labels).type(torch.float32))\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
" acc_loss += loss\n",
" acc_acc += acc\n",
" i+=1\n",
" c+=1\n",
" if i%report_freq==0:\n",
" print(f\"Loss = {acc_loss.item()/c}, Accuracy = {acc_acc.item()/c}\")\n",
" c = 0\n",
" acc_loss = 0\n",
" acc_acc = 0\n",
" iterations-=1\n",
" if not iterations:\n",
" break"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మీరు చూడవచ్చు (ప్రత్యేకంగా మీరు పునరావృతాల సంఖ్యను పెంచి సరిపడా సమయం వేచి ఉంటే) BERT వర్గీకరణ మనకు మంచి ఖచ్చితత్వం ఇస్తుంది! ఇది ఎందుకంటే BERT ఇప్పటికే భాష యొక్క నిర్మాణాన్ని బాగా అర్థం చేసుకుంటుంది, మరియు మనం కేవలం తుది వర్గీకర్తను ఫైన్-ట్యూన్ చేయాలి. అయితే, BERT ఒక పెద్ద మోడల్ కావడంతో, మొత్తం శిక్షణ ప్రక్రియ చాలా సమయం తీసుకుంటుంది, మరియు గంభీరమైన కంప్యూటింగ్ శక్తిని అవసరం చేస్తుంది! (GPU, మరియు సాధ్యమైతే ఒకటి కంటే ఎక్కువ).\n",
"\n",
"> **Note:** మన ఉదాహరణలో, మనం చిన్న ప్రీ-ట్రెయిన్డ్ BERT మోడల్స్ లో ఒకటిని ఉపయోగిస్తున్నాము. మెరుగైన ఫలితాలు ఇచ్చే పెద్ద మోడల్స్ కూడా ఉన్నాయి.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## మోడల్ పనితీరు మూల్యాంకనం\n",
"\n",
"ఇప్పుడు మనం టెస్ట్ డేటాసెట్‌పై మన మోడల్ పనితీరును మూల్యాంకనం చేయవచ్చు. మూల్యాంకన లూప్ శిక్షణ లూప్‌కు చాలా సమానంగా ఉంటుంది, కానీ మోడల్‌ను మూల్యాంకన మోడ్‌లోకి మార్చడం కోసం `model.eval()` ను పిలవడం మర్చిపోకూడదు.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Final accuracy: 0.9047029702970297\n"
]
}
],
"source": [
"model.eval()\n",
"iterations = 100\n",
"acc = 0\n",
"i = 0\n",
"for labels,texts in test_loader:\n",
" labels = labels.to(device)-1 \n",
" texts = texts.to(device)\n",
" _, out = model(texts, labels=labels)[:2]\n",
" labs = out.argmax(dim=1)\n",
" acc += torch.mean((labs==labels).type(torch.float32))\n",
" i+=1\n",
" if i>iterations: break\n",
" \n",
"print(f\"Final accuracy: {acc.item()/i}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ముఖ్యాంశాలు\n",
"\n",
"ఈ యూనిట్‌లో, **transformers** లైబ్రరీ నుండి ముందుగా శిక్షణ పొందిన భాషా మోడల్‌ను ఎలా సులభంగా తీసుకుని మన టెక్స్ట్ వర్గీకరణ పనికి అనుకూలపరచుకోవచ్చో చూశాం. అదే విధంగా, BERT మోడల్స్‌ను ఎంటిటీ ఎక్స్‌ట్రాక్షన్, ప్రశ్నలకు సమాధానం ఇవ్వడం, మరియు ఇతర NLP పనుల కోసం ఉపయోగించవచ్చు.\n",
"\n",
"ట్రాన్స్‌ఫార్మర్ మోడల్స్ NLPలో ప్రస్తుత అత్యాధునిక స్థితిని ప్రతిబింబిస్తాయి, మరియు చాలా సందర్భాల్లో మీరు కస్టమ్ NLP పరిష్కారాలను అమలు చేయడం ప్రారంభించినప్పుడు మొదటి పరిష్కారంగా ఇవే ప్రయత్నించాలి. అయితే, ఈ మాడ్యూల్‌లో చర్చించిన రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ యొక్క ప్రాథమిక సూత్రాలను అర్థం చేసుకోవడం అత్యంత ముఖ్యమైనది, మీరు అధునాతన న్యూరల్ మోడల్స్ నిర్మించాలనుకుంటే.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "py37_pytorch",
"language": "python",
"name": "conda-env-py37_pytorch-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
},
"coopTranslator": {
"original_hash": "753865967678a92dbce7d7efbd36d980",
"translation_date": "2025-11-26T02:19:27+00:00",
"source_file": "lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# అటెన్షన్ మెకానిజమ్స్ మరియు ట్రాన్స్‌ఫార్మర్స్\n",
"\n",
"ఒక ప్రధాన లోపం రికరెంట్ నెట్‌వర్క్స్‌లో ఏమిటంటే, ఒక సీక్వెన్స్‌లోని అన్ని పదాలు ఫలితంపై సమాన ప్రభావం చూపుతాయి. ఇది సీక్వెన్స్-టు-సీక్వెన్స్ పనుల కోసం సాధారణ LSTM ఎంకోడర్-డీకోడర్ మోడల్స్‌లో సబ్ఆప్టిమల్ పనితీరుకు దారితీస్తుంది, ఉదాహరణకు నేమ్డ్ ఎంటిటీ రికగ్నిషన్ మరియు మెషీన్ ట్రాన్స్‌లేషన్. వాస్తవానికి, ఇన్‌పుట్ సీక్వెన్స్‌లోని కొన్ని ప్రత్యేక పదాలు ఇతరాల కంటే సీక్వెన్షియల్ అవుట్‌పుట్స్‌పై ఎక్కువ ప్రభావం చూపుతాయి.\n",
"\n",
"మెషీన్ ట్రాన్స్‌లేషన్ వంటి సీక్వెన్స్-టు-సీక్వెన్స్ మోడల్‌ను పరిగణించండి. ఇది రెండు రికరెంట్ నెట్‌వర్క్స్ ద్వారా అమలు చేయబడుతుంది, ఒక నెట్‌వర్క్ (**ఎంకోడర్**) ఇన్‌పుట్ సీక్వెన్స్‌ను హిడెన్ స్టేట్‌గా సంకుచితం చేస్తుంది, మరొకటి, **డీకోడర్**, ఆ హిడెన్ స్టేట్‌ను అనువాద ఫలితంగా విస్తరించుతుంది. ఈ విధానంలో సమస్య ఏమిటంటే, నెట్‌వర్క్ యొక్క తుది స్థితి వాక్య ప్రారంభాన్ని గుర్తుంచుకోవడంలో కష్టపడుతుంది, అందువల్ల పొడవైన వాక్యాలలో మోడల్ నాణ్యత తక్కువగా ఉంటుంది.\n",
"\n",
"**అటెన్షన్ మెకానిజమ్స్** RNN యొక్క ప్రతి అవుట్‌పుట్ అంచనాపై ప్రతి ఇన్‌పుట్ వెక్టర్ యొక్క సందర్భాత్మక ప్రభావాన్ని బరువు వేయడానికి ఒక మార్గాన్ని అందిస్తాయి. ఇది అమలు చేయబడే విధానం ఏమిటంటే, ఇన్‌పుట్ RNN యొక్క మధ్యస్థితుల మరియు అవుట్‌పుట్ RNN మధ్య షార్ట్‌కట్స్ సృష్టించడం. ఈ విధంగా, అవుట్‌పుట్ సింబల్ $y_t$ ఉత్పత్తి చేస్తున్నప్పుడు, అన్ని ఇన్‌పుట్ హిడెన్ స్టేట్స్ $h_i$ ను వివిధ బరువు గుణకాలు $\\alpha_{t,i}$ తో పరిగణలోకి తీసుకుంటాము.\n",
"\n",
"![Image showing an encoder/decoder model with an additive attention layer](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567.te.png)\n",
"*అడిటివ్ అటెన్షన్ మెకానిజం ఉన్న ఎంకోడర్-డీకోడర్ మోడల్ [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి, [ఈ బ్లాగ్ పోస్ట్](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) నుండి సేకరించబడింది*\n",
"\n",
"అటెన్షన్ మ్యాట్రిక్స్ $\\{\\alpha_{i,j}\\}$ ఒక నిర్దిష్ట అవుట్‌పుట్ పదం ఉత్పత్తిలో కొన్ని ఇన్‌పుట్ పదాలు ఎంత భాగం పోషిస్తున్నాయో సూచిస్తుంది. క్రింద అలాంటి మ్యాట్రిక్స్ ఉదాహరణ ఉంది:\n",
"\n",
"![Image showing a sample alignment found by RNNsearch-50, taken from Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af.te.png)\n",
"\n",
"*[Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) నుండి తీసుకున్న చిత్రం (ఫిగర్ 3)*\n",
"\n",
"అటెన్షన్ మెకానిజమ్స్ ప్రస్తుత లేదా సమీప భవిష్యత్తులో నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్‌లో ఉన్న అత్యాధునిక స్థితికి కారణమవుతున్నాయి. అయితే, అటెన్షన్ జోడించడం వల్ల మోడల్ పరిమాణాలు గణనీయంగా పెరుగుతాయి, ఇది RNNలతో స్కేలింగ్ సమస్యలకు దారితీస్తుంది. RNNలను స్కేలు చేయడంలో ప్రధాన పరిమితి ఏమిటంటే, మోడల్స్ యొక్క రికరెంట్ స్వభావం కారణంగా ట్రైనింగ్‌ను బ్యాచ్ చేయడం మరియు ప్యారలలైజ్ చేయడం కష్టమవుతుంది. RNNలో సీక్వెన్స్‌లోని ప్రతి అంశాన్ని వరుసగా ప్రాసెస్ చేయాలి, అందువల్ల ఇది సులభంగా ప్యారలలైజ్ చేయలేము.\n",
"\n",
"ఈ పరిమితితో కలిపి అటెన్షన్ మెకానిజమ్స్ స్వీకరణ, మనం ఇప్పుడు తెలుసుకున్న మరియు ఉపయోగిస్తున్న అత్యాధునిక ట్రాన్స్‌ఫార్మర్ మోడల్స్ సృష్టికి దారితీసింది, BERT నుండి OpenGPT3 వరకు.\n",
"\n",
"## ట్రాన్స్‌ఫార్మర్ మోడల్స్\n",
"\n",
"ప్రతి గత అంచనాపై ఆధారపడి తదుపరి అంచనా దశకు సందర్భాన్ని పంపడం బదులు, **ట్రాన్స్‌ఫార్మర్ మోడల్స్** **పోసిషనల్ ఎంకోడింగ్స్** మరియు అటెన్షన్ ఉపయోగించి ఇచ్చిన విండోలోని ఇన్‌పుట్ సందర్భాన్ని పట్టుకుంటాయి. క్రింది చిత్రం పోసిషనల్ ఎంకోడింగ్స్ మరియు అటెన్షన్ ఎలా ఇచ్చిన విండోలో సందర్భాన్ని పట్టుకుంటాయో చూపిస్తుంది.\n",
"\n",
"![Animated GIF showing how the evaluations are performed in transformer models.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif)\n",
"\n",
"ప్రతి ఇన్‌పుట్ పొజిషన్ స్వతంత్రంగా ప్రతి అవుట్‌పుట్ పొజిషన్‌కు మ్యాప్ చేయబడినందున, ట్రాన్స్‌ఫార్మర్స్ RNNల కంటే మెరుగ్గా ప్యారలలైజ్ చేయగలవు, ఇది చాలా పెద్ద మరియు వ్యక్తీకరణాత్మక భాషా మోడల్స్‌ను సాధ్యమవుతుంది. ప్రతి అటెన్షన్ హెడ్ పదాల మధ్య వేరే సంబంధాలను నేర్చుకోవడానికి ఉపయోగపడుతుంది, ఇది తరువాతి నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్ పనులను మెరుగుపరుస్తుంది.\n",
"\n",
"**BERT** (Bidirectional Encoder Representations from Transformers) అనేది చాలా పెద్ద బహుళ-లేయర్ ట్రాన్స్‌ఫార్మర్ నెట్‌వర్క్, *BERT-base* కోసం 12 లేయర్లు, *BERT-large* కోసం 24 లేయర్లు కలిగి ఉంటుంది. ఈ మోడల్ మొదట పెద్ద టెక్స్ట్ డేటా కార్పస్ (వికీపీడియా + పుస్తకాలు) పై అనుసూచిత శిక్షణ (unsupervised training) ద్వారా ప్రీ-ట్రెయిన్ చేయబడుతుంది (వాక్యంలో మాస్క్ చేసిన పదాలను అంచనా వేయడం). ప్రీ-ట్రెయినింగ్ సమయంలో మోడల్ భాషా అవగాహనను గణనీయంగా గ్రహిస్తుంది, దీన్ని తరువాత ఇతర డేటాసెట్లతో ఫైన్-ట్యూనింగ్ ద్వారా ఉపయోగించవచ్చు. ఈ ప్రక్రియను **ట్రాన్స్‌ఫర్ లెర్నింగ్** అంటారు.\n",
"\n",
"![picture from http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362.te.png)\n",
"\n",
"ట్రాన్స్‌ఫార్మర్ ఆర్కిటెక్చర్స్‌లో అనేక వేరియేషన్లు ఉన్నాయి, వాటిలో BERT, DistilBERT, BigBird, OpenGPT3 మరియు మరిన్ని ఉన్నాయి, వీటిని ఫైన్-ట్యూన్ చేయవచ్చు. [HuggingFace ప్యాకేజ్](https://github.com/huggingface/) PyTorchతో ఈ ఆర్కిటెక్చర్స్‌లో చాలా మోడల్స్ శిక్షణ కోసం రిపాజిటరీని అందిస్తుంది.\n",
"\n",
"## టెక్స్ట్ క్లాసిఫికేషన్ కోసం BERT ఉపయోగించడం\n",
"\n",
"మనం ప్రీ-ట్రెయిన్ చేసిన BERT మోడల్‌ను సాంప్రదాయమైన పని: సీక్వెన్స్ క్లాసిఫికేషన్ కోసం ఎలా ఉపయోగించాలో చూద్దాం. మనం మా అసలు AG News డేటాసెట్‌ను క్లాసిఫై చేస్తాము.\n",
"\n",
"ముందుగా, HuggingFace లైబ్రరీ మరియు మన డేటాసెట్‌ను లోడ్ చేద్దాం:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading dataset...\n",
"Building vocab...\n"
]
}
],
"source": [
"import torch\n",
"import torchtext\n",
"from torchnlp import *\n",
"import transformers\n",
"train_dataset, test_dataset, classes, vocab = load_dataset()\n",
"vocab_len = len(vocab)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మనం ప్రీ-ట్రెయిన్డ్ BERT మోడల్ ఉపయోగించబోతున్నందున, ప్రత్యేక టోకనైజర్ అవసరం అవుతుంది. మొదట, ప్రీ-ట్రెయిన్డ్ BERT మోడల్‌కు సంబంధించిన టోకనైజర్‌ను లోడ్ చేస్తాము.\n",
"\n",
"HuggingFace లైబ్రరీలో ప్రీ-ట్రెయిన్డ్ మోడల్స్ యొక్క రిపాజిటరీ ఉంటుంది, వాటి పేర్లను `from_pretrained` ఫంక్షన్లకు ఆర్గ్యుమెంట్లుగా ఇచ్చి మీరు సులభంగా ఉపయోగించుకోవచ్చు. మోడల్‌కు అవసరమైన అన్ని బైనరీ ఫైళ్లు ఆటోమేటిక్‌గా డౌన్లోడ్ అవుతాయి.\n",
"\n",
"కానీ, కొన్ని సందర్భాల్లో మీరు మీ స్వంత మోడల్స్‌ను లోడ్ చేయవలసి వస్తుంది, అప్పుడు టోకనైజర్ కోసం పరామితులు, మోడల్ పరామితులతో కూడిన `config.json` ఫైల్, బైనరీ వెయిట్స్ మొదలైన అన్ని సంబంధిత ఫైళ్లు ఉన్న డైరెక్టరీని మీరు స్పెసిఫై చేయవచ్చు.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# To load the model from Internet repository using model name. \n",
"# Use this if you are running from your own copy of the notebooks\n",
"bert_model = 'bert-base-uncased' \n",
"\n",
"# To load the model from the directory on disk. Use this for Microsoft Learn module, because we have\n",
"# prepared all required files for you.\n",
"bert_model = './bert'\n",
"\n",
"tokenizer = transformers.BertTokenizer.from_pretrained(bert_model)\n",
"\n",
"MAX_SEQ_LEN = 128\n",
"PAD_INDEX = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)\n",
"UNK_INDEX = tokenizer.convert_tokens_to_ids(tokenizer.unk_token)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`tokenizer` ఆబ్జెక్ట్‌లో `encode` ఫంక్షన్ ఉంటుంది, దీన్ని టెక్స్ట్‌ను నేరుగా ఎన్‌కోడ్ చేయడానికి ఉపయోగించవచ్చు:\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[101, 1052, 22123, 2953, 2818, 2003, 1037, 2307, 7705, 2005, 17953, 2361, 102]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tokenizer.encode('PyTorch is a great framework for NLP')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"అప్పుడు, మనం ట్రైనింగ్ సమయంలో డేటాను యాక్సెస్ చేయడానికి ఉపయోగించే ఇటరేటర్లను సృష్టిద్దాం. BERT తన స్వంత ఎంకోడింగ్ ఫంక్షన్ ఉపయోగిస్తుండగా, మనం ముందుగా నిర్వచించిన `padify` లాంటి ప్యాడింగ్ ఫంక్షన్‌ను నిర్వచించాల్సి ఉంటుంది:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def pad_bert(b):\n",
" # b is the list of tuples of length batch_size\n",
" # - first element of a tuple = label, \n",
" # - second = feature (text sequence)\n",
" # build vectorized sequence\n",
" v = [tokenizer.encode(x[1]) for x in b]\n",
" # compute max length of a sequence in this minibatch\n",
" l = max(map(len,v))\n",
" return ( # tuple of two tensors - labels and features\n",
" torch.LongTensor([t[0] for t in b]),\n",
" torch.stack([torch.nn.functional.pad(torch.tensor(t),(0,l-len(t)),mode='constant',value=0) for t in v])\n",
" )\n",
"\n",
"train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=8, collate_fn=pad_bert, shuffle=True)\n",
"test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=8, collate_fn=pad_bert)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మన కేసులో, మేము `bert-base-uncased` అనే ప్రీ-ట్రెయిన్డ్ BERT మోడల్‌ను ఉపయోగించబోతున్నాము. మోడల్‌ను `BertForSequenceClassification` ప్యాకేజీ ఉపయోగించి లోడ్ చేద్దాం. ఇది మా మోడల్ ఇప్పటికే క్లాసిఫికేషన్ కోసం అవసరమైన ఆర్కిటెక్చర్ కలిగి ఉందని నిర్ధారిస్తుంది, ఫైనల్ క్లాసిఫైయర్ సహా. మీరు ఒక హెచ్చరిక సందేశం చూడవచ్చు, ఇది ఫైనల్ క్లాసిఫైయర్ యొక్క వెయిట్స్ ప్రారంభించబడలేదని మరియు మోడల్ ప్రీ-ట్రెయినింగ్ అవసరం అని సూచిస్తుంది - ఇది పూర్తిగా సరే, ఎందుకంటే అదే మేము చేయబోతున్నాం!\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Some weights of the model checkpoint at ./bert were not used when initializing BertForSequenceClassification: ['cls.predictions.bias', 'cls.predictions.transform.dense.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.decoder.weight', 'cls.seq_relationship.weight', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.LayerNorm.bias']\n",
"- This IS expected if you are initializing BertForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
"- This IS NOT expected if you are initializing BertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
"Some weights of BertForSequenceClassification were not initialized from the model checkpoint at ./bert and are newly initialized: ['classifier.weight', 'classifier.bias']\n",
"You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
]
}
],
"source": [
"model = transformers.BertForSequenceClassification.from_pretrained(bert_model,num_labels=4).to(device)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ఇప్పుడు మేము శిక్షణ ప్రారంభించడానికి సిద్ధంగా ఉన్నాము! BERT ఇప్పటికే ప్రీ-ట్రెయిన్ చేయబడినందున, ప్రారంభ బరువులను నాశనం చేయకుండా ఉండేందుకు తక్కువ లెర్నింగ్ రేట్‌తో ప్రారంభించాలనుకుంటున్నాము.\n",
"\n",
"అన్ని కష్టపడి చేసిన పని `BertForSequenceClassification` మోడల్ చేస్తుంది. మేము శిక్షణ డేటాపై మోడల్‌ను పిలిచినప్పుడు, అది ఇన్‌పుట్ మినీబ్యాచ్ కోసం లాస్ మరియు నెట్‌వర్క్ అవుట్‌పుట్ రెండింటినీ ఇస్తుంది. మేము పారామీటర్ ఆప్టిమైజేషన్ కోసం లాస్‌ను ఉపయోగిస్తాము (`loss.backward()` బ్యాక్‌వర్డ్ పాస్ చేస్తుంది), మరియు శిక్షణ ఖచ్చితత్వం లెక్కించడానికి `out` ను ఉపయోగిస్తాము, అందులో పొందిన లేబుల్స్ `labs` (`argmax` ఉపయోగించి లెక్కించబడినవి) ను ఆశించిన `labels` తో పోల్చుతాము.\n",
"\n",
"ప్రక్రియను నియంత్రించడానికి, మేము లాస్ మరియు ఖచ్చితత్వాన్ని కొన్ని ఇటరేషన్లలో సేకరిస్తూ, ప్రతి `report_freq` శిక్షణ చక్రాల్లో వాటిని ప్రింట్ చేస్తాము.\n",
"\n",
"ఈ శిక్షణ చాలా సమయం తీసుకోవచ్చు, కాబట్టి మేము ఇటరేషన్ల సంఖ్యను పరిమితం చేస్తాము.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loss = 1.1254194641113282, Accuracy = 0.585\n",
"Loss = 0.6194715118408203, Accuracy = 0.83\n",
"Loss = 0.46665248870849607, Accuracy = 0.8475\n",
"Loss = 0.4309701919555664, Accuracy = 0.8575\n",
"Loss = 0.35427074432373046, Accuracy = 0.8825\n",
"Loss = 0.3306886291503906, Accuracy = 0.8975\n",
"Loss = 0.30340143203735354, Accuracy = 0.8975\n",
"Loss = 0.26139299392700194, Accuracy = 0.915\n",
"Loss = 0.26708646774291994, Accuracy = 0.9225\n",
"Loss = 0.3667240524291992, Accuracy = 0.8675\n"
]
}
],
"source": [
"optimizer = torch.optim.Adam(model.parameters(), lr=2e-5)\n",
"\n",
"report_freq = 50\n",
"iterations = 500 # make this larger to train for longer time!\n",
"\n",
"model.train()\n",
"\n",
"i,c = 0,0\n",
"acc_loss = 0\n",
"acc_acc = 0\n",
"\n",
"for labels,texts in train_loader:\n",
" labels = labels.to(device)-1 # get labels in the range 0-3 \n",
" texts = texts.to(device)\n",
" loss, out = model(texts, labels=labels)[:2]\n",
" labs = out.argmax(dim=1)\n",
" acc = torch.mean((labs==labels).type(torch.float32))\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
" acc_loss += loss\n",
" acc_acc += acc\n",
" i+=1\n",
" c+=1\n",
" if i%report_freq==0:\n",
" print(f\"Loss = {acc_loss.item()/c}, Accuracy = {acc_acc.item()/c}\")\n",
" c = 0\n",
" acc_loss = 0\n",
" acc_acc = 0\n",
" iterations-=1\n",
" if not iterations:\n",
" break"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"మీరు చూడవచ్చు (ప్రత్యేకంగా మీరు పునరావృతాల సంఖ్యను పెంచి సరిపడా సమయం వేచి ఉంటే) BERT వర్గీకరణ మనకు మంచి ఖచ్చితత్వం ఇస్తుంది! ఇది ఎందుకంటే BERT ఇప్పటికే భాష యొక్క నిర్మాణాన్ని బాగా అర్థం చేసుకుంటుంది, మరియు మనం కేవలం తుది వర్గీకర్తను ఫైన్-ట్యూన్ చేయాలి. అయితే, BERT ఒక పెద్ద మోడల్ కావడంతో, మొత్తం శిక్షణ ప్రక్రియ చాలా సమయం తీసుకుంటుంది, మరియు గంభీరమైన కంప్యూటింగ్ శక్తిని అవసరం చేస్తుంది! (GPU, మరియు సాధ్యమైతే ఒకటి కంటే ఎక్కువ).\n",
"\n",
"> **Note:** మన ఉదాహరణలో, మనం చిన్న ప్రీ-ట్రెయిన్డ్ BERT మోడల్స్ లో ఒకటిని ఉపయోగిస్తున్నాము. మెరుగైన ఫలితాలు ఇచ్చే పెద్ద మోడల్స్ కూడా ఉన్నాయి.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## మోడల్ పనితీరు మూల్యాంకనం\n",
"\n",
"ఇప్పుడు మనం టెస్ట్ డేటాసెట్‌పై మన మోడల్ పనితీరును మూల్యాంకనం చేయవచ్చు. మూల్యాంకన లూప్ శిక్షణ లూప్‌కు చాలా సమానంగా ఉంటుంది, కానీ మోడల్‌ను మూల్యాంకన మోడ్‌లోకి మార్చడం కోసం `model.eval()` ను పిలవడం మర్చిపోకూడదు.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Final accuracy: 0.9047029702970297\n"
]
}
],
"source": [
"model.eval()\n",
"iterations = 100\n",
"acc = 0\n",
"i = 0\n",
"for labels,texts in test_loader:\n",
" labels = labels.to(device)-1 \n",
" texts = texts.to(device)\n",
" _, out = model(texts, labels=labels)[:2]\n",
" labs = out.argmax(dim=1)\n",
" acc += torch.mean((labs==labels).type(torch.float32))\n",
" i+=1\n",
" if i>iterations: break\n",
" \n",
"print(f\"Final accuracy: {acc.item()/i}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ముఖ్యాంశాలు\n",
"\n",
"ఈ యూనిట్‌లో, **transformers** లైబ్రరీ నుండి ముందుగా శిక్షణ పొందిన భాషా మోడల్‌ను ఎలా సులభంగా తీసుకుని మన టెక్స్ట్ వర్గీకరణ పనికి అనుకూలపరచుకోవచ్చో చూశాం. అదే విధంగా, BERT మోడల్స్‌ను ఎంటిటీ ఎక్స్‌ట్రాక్షన్, ప్రశ్నలకు సమాధానం ఇవ్వడం, మరియు ఇతర NLP పనుల కోసం ఉపయోగించవచ్చు.\n",
"\n",
"ట్రాన్స్‌ఫార్మర్ మోడల్స్ NLPలో ప్రస్తుత అత్యాధునిక స్థితిని ప్రతిబింబిస్తాయి, మరియు చాలా సందర్భాల్లో మీరు కస్టమ్ NLP పరిష్కారాలను అమలు చేయడం ప్రారంభించినప్పుడు మొదటి పరిష్కారంగా ఇవే ప్రయత్నించాలి. అయితే, ఈ మాడ్యూల్‌లో చర్చించిన రికరెంట్ న్యూరల్ నెట్‌వర్క్స్ యొక్క ప్రాథమిక సూత్రాలను అర్థం చేసుకోవడం అత్యంత ముఖ్యమైనది, మీరు అధునాతన న్యూరల్ మోడల్స్ నిర్మించాలనుకుంటే.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "py37_pytorch",
"language": "python",
"name": "conda-env-py37_pytorch-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
},
"coopTranslator": {
"original_hash": "753865967678a92dbce7d7efbd36d980",
"translation_date": "2025-11-26T02:19:27+00:00",
"source_file": "lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb",
"language_code": "te"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -1,98 +1,98 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6522312ff835796ca34136a9462fafb2",
"translation_date": "2025-11-25T23:16:09+00:00",
"source_file": "lessons/5-NLP/19-NER/README.md",
"language_code": "te"
}
-->
# పేరుగల సত্ত్వ గుర్తింపు
ఇప్పటివరకు, మనం ప్రధానంగా ఒక NLP పనిపై - వర్గీకరణపై - దృష్టి పెట్టాము. అయితే, న్యూరల్ నెట్‌వర్క్‌లతో సాధించగల ఇతర NLP పనులు కూడా ఉన్నాయి. వాటిలో ఒకటి **[పేరుగల సత్త్వ గుర్తింపు](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ఇది వచనంలో ప్రత్యేక సత్త్వాలను గుర్తించడంపై పనిచేస్తుంది, ఉదాహరణకు ప్రదేశాలు, వ్యక్తి పేర్లు, తేదీ-సమయ వ్యవధులు, రసాయన సూత్రాలు మొదలైనవి.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/37)
## NER ఉపయోగం ఉదాహరణ
మీరు అమెజాన్ అలెక్సా లేదా గూగుల్ అసిస్టెంట్ లాంటి సహజ భాషా చాట్ బాట్‌ను అభివృద్ధి చేయాలనుకుంటున్నారని ఊహించుకోండి. తెలివైన చాట్ బాట్లు పనిచేసే విధానం ఏమిటంటే, వినియోగదారు ఏమి కోరుకుంటున్నాడో అర్థం చేసుకోవడం కోసం ఇన్‌పుట్ వాక్యంపై టెక్స్ట్ వర్గీకరణ చేస్తాయి. ఈ వర్గీకరణ ఫలితం **ఇంటెంట్** అని పిలవబడుతుంది, ఇది చాట్ బాట్ ఏం చేయాలో నిర్ణయిస్తుంది.
<img alt="Bot NER" src="../../../../../translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.te.png" width="50%"/>
> చిత్రాన్ని రచయిత అందించారు
అయితే, వినియోగదారు వాక్య భాగంగా కొన్ని పారామితులను కూడా అందించవచ్చు. ఉదాహరణకు, వాతావరణం గురించి అడుగుతున్నప్పుడు, ఆమె ఒక ప్రదేశం లేదా తేదీని పేర్కొనవచ్చు. బాట్ ఆ సత్త్వాలను అర్థం చేసుకుని, ఆ ప్రకారం పారామితి స్థలాలను నింపగలగాలి, ఆ తర్వాత చర్యను చేపట్టాలి. ఇదే NER అవసరం అయ్యే స్థలం.
> ✅ మరో ఉదాహరణగా [వైద్య శాస్త్రీయ పత్రాలను విశ్లేషించడం](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) తీసుకోవచ్చు. మనం ముఖ్యంగా చూడవలసినవి ప్రత్యేక వైద్య పదాలు, ఉదాహరణకు వ్యాధులు మరియు వైద్య పదార్థాలు. కొంతమంది వ్యాధులను సబ్‌స్ట్రింగ్ శోధనతో పొందవచ్చు, కానీ రసాయన సమ్మేళనాలు మరియు మందుల పేర్ల వంటి క్లిష్టమైన సత్త్వాలకు మరింత సంక్లిష్టమైన విధానం అవసరం.
## NER ను టోకెన్ వర్గీకరణగా చూడటం
NER మోడల్స్ ప్రాథమికంగా **టోకెన్ వర్గీకరణ మోడల్స్** అవుతాయి, ఎందుకంటే ప్రతి ఇన్‌పుట్ టోకెన్ ఒక సత్త్వానికి చెందుతుందా లేదా అని నిర్ణయించాలి, మరియు ఉంటే - ఏ సత్త్వ తరగతికి చెందుతుందో కూడా.
క్రింది పత్ర శీర్షికను పరిశీలించండి:
**ట్రైకస్పిడ్ వాల్వ్ రిగర్జిటేషన్** మరియు **లిథియం కార్బోనేట్** **విషపూరితత** ఒక నూతన శిశువులో.
ఇక్కడ సత్త్వాలు:
* ట్రైకస్పిడ్ వాల్వ్ రిగర్జిటేషన్ ఒక వ్యాధి (`DIS`)
* లిథియం కార్బోనేట్ ఒక రసాయన పదార్థం (`CHEM`)
* విషపూరితత కూడా ఒక వ్యాధి (`DIS`)
ఒక సత్త్వం అనేక టోకెన్లను కవర్ చేయవచ్చు. ఈ సందర్భంలో, రెండు వరుస సత్త్వాలను వేరుచేయాలి. అందుకే, ప్రతి సత్త్వానికి రెండు తరగతులు ఉపయోగిస్తారు - ఒకటి సత్త్వం మొదటి టోకెన్‌ను సూచిస్తుంది (సాధారణంగా `B-` ప్రిఫిక్స్, అంటే **b**eginning), మరొకటి సత్త్వం కొనసాగింపు టోకెన్ (`I-`, అంటే **i**nner token). మిగతా అన్ని టోకెన్లకు `O` తరగతి ఉపయోగిస్తారు, అంటే **o**ther టోకెన్లు. ఈ టోకెన్ ట్యాగింగ్‌ను [BIO ట్యాగింగ్](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (లేదా IOB) అంటారు. ట్యాగ్ చేసినప్పుడు, మన శీర్షిక ఇలా ఉంటుంది:
టోకెన్ | ట్యాగ్
------|-----
Tricuspid | B-DIS
valve | I-DIS
regurgitation | I-DIS
and | O
lithium | B-CHEM
carbonate | I-CHEM
toxicity | B-DIS
in | O
a | O
newborn | O
infant | O
. | O
టోకెన్లు మరియు తరగతుల మధ్య ఒకటి-కోటి అనుసంధానం అవసరం కాబట్టి, ఈ చిత్రంలో చూపినట్లుగా ఒక కుడి వైపు **బహుళ-కు-బహుళ** న్యూరల్ నెట్‌వర్క్ మోడల్‌ను శిక్షణ ఇవ్వవచ్చు:
![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.te.jpg)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) నుండి, రచయిత [అండ్రేజ్ కార్పతి](http://karpathy.github.io/). NER టోకెన్ వర్గీకరణ మోడల్స్ ఈ చిత్రంలో కుడి వైపు నెట్‌వర్క్ నిర్మాణానికి సరిపోతాయి.*
## NER మోడల్స్ శిక్షణ
NER మోడల్ ప్రాథమికంగా టోకెన్ వర్గీకరణ మోడల్ కావడంతో, మనకు తెలిసిన RNNలను ఈ పనికి ఉపయోగించవచ్చు. ఈ సందర్భంలో, ప్రతి రికరెంట్ నెట్‌వర్క్ బ్లాక్ టోకెన్ IDని తిరిగి ఇస్తుంది. క్రింది ఉదాహరణ నోట్‌బుక్ LSTMని టోకెన్ వర్గీకరణకు ఎలా శిక్షణ ఇవ్వాలో చూపిస్తుంది.
## ✍️ ఉదాహరణ నోట్‌బుక్స్: NER
క్రింది నోట్‌బుక్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [TensorFlowతో NER](NER-TF.ipynb)
## ముగింపు
NER మోడల్ అనేది **టోకెన్ వర్గీకరణ మోడల్**, అంటే ఇది టోకెన్ వర్గీకరణ చేయడానికి ఉపయోగించవచ్చు. ఇది NLPలో చాలా సాధారణ పని, వచనంలో ప్రదేశాలు, పేర్లు, తేదీలు మరియు మరిన్ని ప్రత్యేక సత్త్వాలను గుర్తించడంలో సహాయపడుతుంది.
## 🚀 సవాలు
క్రింద ఇచ్చిన అసైన్‌మెంట్ పూర్తి చేసి వైద్య పదాల కోసం పేరుగల సత్త్వ గుర్తింపు మోడల్ శిక్షణ ఇవ్వండి, ఆ తర్వాత వేరే డేటాసెట్‌పై ప్రయత్నించండి.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/38)
## సమీక్ష & స్వీయ అధ్యయనం
[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) అనే బ్లాగ్ చదవండి మరియు ఆ వ్యాసంలోని Further Reading విభాగాన్ని అనుసరించి మీ జ్ఞానాన్ని మరింత పెంచుకోండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ పాఠం కోసం అసైన్‌మెంట్‌లో, మీరు వైద్య సత్త్వ గుర్తింపు మోడల్ శిక్షణ ఇవ్వాలి. ఈ పాఠంలో వివరించినట్లుగా LSTM మోడల్‌తో ప్రారంభించి, తరువాత BERT ట్రాన్స్‌ఫార్మర్ మోడల్ ఉపయోగించవచ్చు. అన్ని వివరాల కోసం [సూచనలు](lab/README.md) చదవండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6522312ff835796ca34136a9462fafb2",
"translation_date": "2025-11-25T23:16:09+00:00",
"source_file": "lessons/5-NLP/19-NER/README.md",
"language_code": "te"
}
-->
# పేరుగల సত্ত్వ గుర్తింపు
ఇప్పటివరకు, మనం ప్రధానంగా ఒక NLP పనిపై - వర్గీకరణపై - దృష్టి పెట్టాము. అయితే, న్యూరల్ నెట్‌వర్క్‌లతో సాధించగల ఇతర NLP పనులు కూడా ఉన్నాయి. వాటిలో ఒకటి **[పేరుగల సత్త్వ గుర్తింపు](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ఇది వచనంలో ప్రత్యేక సత్త్వాలను గుర్తించడంపై పనిచేస్తుంది, ఉదాహరణకు ప్రదేశాలు, వ్యక్తి పేర్లు, తేదీ-సమయ వ్యవధులు, రసాయన సూత్రాలు మొదలైనవి.
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/37)
## NER ఉపయోగం ఉదాహరణ
మీరు అమెజాన్ అలెక్సా లేదా గూగుల్ అసిస్టెంట్ లాంటి సహజ భాషా చాట్ బాట్‌ను అభివృద్ధి చేయాలనుకుంటున్నారని ఊహించుకోండి. తెలివైన చాట్ బాట్లు పనిచేసే విధానం ఏమిటంటే, వినియోగదారు ఏమి కోరుకుంటున్నాడో అర్థం చేసుకోవడం కోసం ఇన్‌పుట్ వాక్యంపై టెక్స్ట్ వర్గీకరణ చేస్తాయి. ఈ వర్గీకరణ ఫలితం **ఇంటెంట్** అని పిలవబడుతుంది, ఇది చాట్ బాట్ ఏం చేయాలో నిర్ణయిస్తుంది.
<img alt="Bot NER" src="../../../../../translated_images/bot-ner.4b09235dbb0ad275.te.png" width="50%"/>
> చిత్రాన్ని రచయిత అందించారు
అయితే, వినియోగదారు వాక్య భాగంగా కొన్ని పారామితులను కూడా అందించవచ్చు. ఉదాహరణకు, వాతావరణం గురించి అడుగుతున్నప్పుడు, ఆమె ఒక ప్రదేశం లేదా తేదీని పేర్కొనవచ్చు. బాట్ ఆ సత్త్వాలను అర్థం చేసుకుని, ఆ ప్రకారం పారామితి స్థలాలను నింపగలగాలి, ఆ తర్వాత చర్యను చేపట్టాలి. ఇదే NER అవసరం అయ్యే స్థలం.
> ✅ మరో ఉదాహరణగా [వైద్య శాస్త్రీయ పత్రాలను విశ్లేషించడం](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) తీసుకోవచ్చు. మనం ముఖ్యంగా చూడవలసినవి ప్రత్యేక వైద్య పదాలు, ఉదాహరణకు వ్యాధులు మరియు వైద్య పదార్థాలు. కొంతమంది వ్యాధులను సబ్‌స్ట్రింగ్ శోధనతో పొందవచ్చు, కానీ రసాయన సమ్మేళనాలు మరియు మందుల పేర్ల వంటి క్లిష్టమైన సత్త్వాలకు మరింత సంక్లిష్టమైన విధానం అవసరం.
## NER ను టోకెన్ వర్గీకరణగా చూడటం
NER మోడల్స్ ప్రాథమికంగా **టోకెన్ వర్గీకరణ మోడల్స్** అవుతాయి, ఎందుకంటే ప్రతి ఇన్‌పుట్ టోకెన్ ఒక సత్త్వానికి చెందుతుందా లేదా అని నిర్ణయించాలి, మరియు ఉంటే - ఏ సత్త్వ తరగతికి చెందుతుందో కూడా.
క్రింది పత్ర శీర్షికను పరిశీలించండి:
**ట్రైకస్పిడ్ వాల్వ్ రిగర్జిటేషన్** మరియు **లిథియం కార్బోనేట్** **విషపూరితత** ఒక నూతన శిశువులో.
ఇక్కడ సత్త్వాలు:
* ట్రైకస్పిడ్ వాల్వ్ రిగర్జిటేషన్ ఒక వ్యాధి (`DIS`)
* లిథియం కార్బోనేట్ ఒక రసాయన పదార్థం (`CHEM`)
* విషపూరితత కూడా ఒక వ్యాధి (`DIS`)
ఒక సత్త్వం అనేక టోకెన్లను కవర్ చేయవచ్చు. ఈ సందర్భంలో, రెండు వరుస సత్త్వాలను వేరుచేయాలి. అందుకే, ప్రతి సత్త్వానికి రెండు తరగతులు ఉపయోగిస్తారు - ఒకటి సత్త్వం మొదటి టోకెన్‌ను సూచిస్తుంది (సాధారణంగా `B-` ప్రిఫిక్స్, అంటే **b**eginning), మరొకటి సత్త్వం కొనసాగింపు టోకెన్ (`I-`, అంటే **i**nner token). మిగతా అన్ని టోకెన్లకు `O` తరగతి ఉపయోగిస్తారు, అంటే **o**ther టోకెన్లు. ఈ టోకెన్ ట్యాగింగ్‌ను [BIO ట్యాగింగ్](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (లేదా IOB) అంటారు. ట్యాగ్ చేసినప్పుడు, మన శీర్షిక ఇలా ఉంటుంది:
టోకెన్ | ట్యాగ్
------|-----
Tricuspid | B-DIS
valve | I-DIS
regurgitation | I-DIS
and | O
lithium | B-CHEM
carbonate | I-CHEM
toxicity | B-DIS
in | O
a | O
newborn | O
infant | O
. | O
టోకెన్లు మరియు తరగతుల మధ్య ఒకటి-కోటి అనుసంధానం అవసరం కాబట్టి, ఈ చిత్రంలో చూపినట్లుగా ఒక కుడి వైపు **బహుళ-కు-బహుళ** న్యూరల్ నెట్‌వర్క్ మోడల్‌ను శిక్షణ ఇవ్వవచ్చు:
![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42d.te.jpg)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) నుండి, రచయిత [అండ్రేజ్ కార్పతి](http://karpathy.github.io/). NER టోకెన్ వర్గీకరణ మోడల్స్ ఈ చిత్రంలో కుడి వైపు నెట్‌వర్క్ నిర్మాణానికి సరిపోతాయి.*
## NER మోడల్స్ శిక్షణ
NER మోడల్ ప్రాథమికంగా టోకెన్ వర్గీకరణ మోడల్ కావడంతో, మనకు తెలిసిన RNNలను ఈ పనికి ఉపయోగించవచ్చు. ఈ సందర్భంలో, ప్రతి రికరెంట్ నెట్‌వర్క్ బ్లాక్ టోకెన్ IDని తిరిగి ఇస్తుంది. క్రింది ఉదాహరణ నోట్‌బుక్ LSTMని టోకెన్ వర్గీకరణకు ఎలా శిక్షణ ఇవ్వాలో చూపిస్తుంది.
## ✍️ ఉదాహరణ నోట్‌బుక్స్: NER
క్రింది నోట్‌బుక్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [TensorFlowతో NER](NER-TF.ipynb)
## ముగింపు
NER మోడల్ అనేది **టోకెన్ వర్గీకరణ మోడల్**, అంటే ఇది టోకెన్ వర్గీకరణ చేయడానికి ఉపయోగించవచ్చు. ఇది NLPలో చాలా సాధారణ పని, వచనంలో ప్రదేశాలు, పేర్లు, తేదీలు మరియు మరిన్ని ప్రత్యేక సత్త్వాలను గుర్తించడంలో సహాయపడుతుంది.
## 🚀 సవాలు
క్రింద ఇచ్చిన అసైన్‌మెంట్ పూర్తి చేసి వైద్య పదాల కోసం పేరుగల సత్త్వ గుర్తింపు మోడల్ శిక్షణ ఇవ్వండి, ఆ తర్వాత వేరే డేటాసెట్‌పై ప్రయత్నించండి.
## [పాఠం తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/38)
## సమీక్ష & స్వీయ అధ్యయనం
[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) అనే బ్లాగ్ చదవండి మరియు ఆ వ్యాసంలోని Further Reading విభాగాన్ని అనుసరించి మీ జ్ఞానాన్ని మరింత పెంచుకోండి.
## [అసైన్‌మెంట్](lab/README.md)
ఈ పాఠం కోసం అసైన్‌మెంట్‌లో, మీరు వైద్య సత్త్వ గుర్తింపు మోడల్ శిక్షణ ఇవ్వాలి. ఈ పాఠంలో వివరించినట్లుగా LSTM మోడల్‌తో ప్రారంభించి, తరువాత BERT ట్రాన్స్‌ఫార్మర్ మోడల్ ఉపయోగించవచ్చు. అన్ని వివరాల కోసం [సూచనలు](lab/README.md) చదవండి.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,82 +1,82 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "8ef02a9318257ea140ed3ed74442096d",
"translation_date": "2025-11-25T21:12:36+00:00",
"source_file": "lessons/5-NLP/README.md",
"language_code": "te"
}
-->
# సహజ భాషా ప్రాసెసింగ్
![NLP పనుల సారాంశం ఒక డ్రాయింగ్‌లో](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.te.png)
ఈ విభాగంలో, మనం సహజ భాషా ప్రాసెసింగ్ (NLP) సంబంధిత పనులను నిర్వహించడానికి న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడంపై దృష్టి పెట్టబోతున్నాము. కంప్యూటర్లు పరిష్కరించగలిగే అనేక NLP సమస్యలు ఉన్నాయి:
* **పాఠ్య వర్గీకరణ** అనేది పాఠ్య శ్రేణులకి సంబంధించిన సాధారణ వర్గీకరణ సమస్య. ఉదాహరణకు, ఇమెయిల్ సందేశాలను స్పామ్ లేదా నాన్-స్పామ్‌గా వర్గీకరించడం, లేదా వ్యాసాలను క్రీడలు, వ్యాపారం, రాజకీయాలు వంటి వర్గాలుగా వర్గీకరించడం. చాట్ బాట్లను అభివృద్ధి చేస్తున్నప్పుడు, వినియోగదారు ఏమి చెప్పాలనుకున్నాడో అర్థం చేసుకోవడం అవసరం అవుతుంది -- ఈ సందర్భంలో మనం **ఇరాదా వర్గీకరణ**తో వ్యవహరిస్తున్నాము. ఇరాదా వర్గీకరణలో తరచుగా అనేక వర్గాలతో వ్యవహరించాల్సి ఉంటుంది.
* **భావ విశ్లేషణ** అనేది సాధారణ రిగ్రెషన్ సమస్య, ఇందులో వాక్య అర్థం ఎంత సానుకూలం/నెగటివ్ అనేదానికి సంబంధించిన సంఖ్య (భావం) ఇవ్వాలి. భావ విశ్లేషణ యొక్క అభివృద్ధి చెందిన రూపం **అంశాల ఆధారిత భావ విశ్లేషణ** (ABSA), ఇందులో భావాన్ని మొత్తం వాక్యం కాకుండా వాక్యంలోని వివిధ భాగాలకు (అంశాలకు) కేటాయిస్తారు, ఉదా. *ఈ రెస్టారెంట్‌లో నాకు వంటకం నచ్చింది, కానీ వాతావరణం భయంకరంగా ఉంది*.
* **పేరు గుర్తింపు** (NER) అనేది పాఠ్యంలోని నిర్దిష్ట అంశాలను తీసుకోవడం. ఉదాహరణకు, *నేను రేపు పారిస్‌కు ప్రయాణించాలి* అనే వాక్యంలో *రేపు* అనేది తేదీకి (DATE) సూచిస్తుందని, *పారిస్* అనేది స్థలానికి (LOCATION) సంబంధించినదని అర్థం చేసుకోవాలి.
* **కీవర్డ్ ఎక్స్‌ట్రాక్షన్** NERకి సమానంగా ఉంటుంది, కానీ ఇందులో నిర్దిష్ట అంశ రకాల కోసం ముందుగా శిక్షణ లేకుండా వాక్య అర్థానికి ముఖ్యమైన పదాలను ఆటోమేటిక్‌గా తీసుకోవాలి.
* **పాఠ్య క్లస్టరింగ్** అనేది సారూప్యమైన వాక్యాలను ఒకటిగా సమూహీకరించడానికి ఉపయోగపడుతుంది, ఉదాహరణకు, సాంకేతిక మద్దతు సంభాషణలలో సారూప్యమైన అభ్యర్థనలు.
* **ప్రశ్నోత్తరం** అనేది ఒక నమూనా నిర్దిష్ట ప్రశ్నకు సమాధానం ఇవ్వగల సామర్థ్యం. నమూనా ఒక పాఠ్య భాగం మరియు ప్రశ్నను ఇన్‌పుట్‌గా తీసుకుని, ప్రశ్నకు సమాధానం ఉన్న పాఠ్య భాగాన్ని అందించాలి (లేదా, కొన్నిసార్లు సమాధానాన్ని సృష్టించాలి).
* **పాఠ్య ఉత్పత్తి** అనేది ఒక నమూనా కొత్త పాఠ్యాన్ని సృష్టించగల సామర్థ్యం. ఇది ఒక వర్గీకరణ పనిగా పరిగణించవచ్చు, ఇది కొన్ని *పాఠ్య ప్రాంప్ట్* ఆధారంగా తదుపరి అక్షరం/పదాన్ని అంచనా వేస్తుంది. GPT-3 వంటి అభివృద్ధి చెందిన పాఠ్య ఉత్పత్తి నమూనాలు, [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) లేదా [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) అనే సాంకేతికత ఉపయోగించి వర్గీకరణ వంటి ఇతర NLP పనులను కూడా పరిష్కరించగలవు.
* **పాఠ్య సారాంశం** అనేది కంప్యూటర్‌ను పొడవైన పాఠ్యాన్ని "చదవించి" దాన్ని కొన్ని వాక్యాలలో సారాంశం చేయించడానికి ఉపయోగించే సాంకేతికత.
* **యంత్ర అనువాదం** అనేది ఒక భాషలో పాఠ్యాన్ని అర్థం చేసుకోవడం మరియు మరొక భాషలో పాఠ్యాన్ని ఉత్పత్తి చేయడం కలయికగా చూడవచ్చు.
ప్రారంభంలో, చాలా NLP పనులు వ్యాకరణాలు వంటి సాంప్రదాయ పద్ధతులతో పరిష్కరించబడ్డాయి. ఉదాహరణకు, యంత్ర అనువాదంలో మొదటి వాక్యాన్ని సింటాక్స్ ట్రీగా మార్చడానికి పార్సర్లు ఉపయోగించబడ్డాయి, ఆపై వాక్య అర్థాన్ని సూచించే ఉన్నత స్థాయి సేమాంటిక్ నిర్మాణాలు తీసుకున్నారు, ఆ అర్థం మరియు లక్ష్య భాష వ్యాకరణం ఆధారంగా ఫలితాన్ని ఉత్పత్తి చేశారు. ఈ రోజుల్లో, అనేక NLP పనులు న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి మరింత సమర్థవంతంగా పరిష్కరించబడుతున్నాయి.
> అనేక సాంప్రదాయ NLP పద్ధతులు [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) పైథాన్ లైబ్రరీలో అమలు చేయబడ్డాయి. వివిధ NLP పనులను NLTK ఉపయోగించి ఎలా పరిష్కరించాలో వివరించే గొప్ప [NLTK పుస్తకం](https://www.nltk.org/book/) ఆన్‌లైన్‌లో అందుబాటులో ఉంది.
మన కోర్సులో, మనం ప్రధానంగా NLP కోసం న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడంపై దృష్టి పెట్టబోతున్నాము, అవసరమైతే NLTKని ఉపయోగిస్తాము.
మనం ఇప్పటికే పట్టిక డేటా మరియు చిత్రాలతో వ్యవహరించడానికి న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడం గురించి నేర్చుకున్నాము. ఆ డేటా రకాలతో పాఠ్యం మధ్య ప్రధాన తేడా ఏమిటంటే, పాఠ్యం అనేది మార్పిడి పొడవు కలిగిన శ్రేణి, కానీ చిత్రాల ఇన్‌పుట్ పరిమాణం ముందే తెలుసు. కన్వల్యూషనల్ నెట్‌వర్క్‌లు ఇన్‌పుట్ డేటా నుండి నమూనాలను తీసుకోవచ్చు, కానీ పాఠ్యంలో నమూనాలు మరింత సంక్లిష్టంగా ఉంటాయి. ఉదా., నెగేషన్ (నాక ఇష్టం లేదు) మరియు విషయం మధ్య అనేక పదాల దూరం ఉండొచ్చు (ఉదా. *I do not like oranges*, vs. *I do not like those big colorful tasty oranges*), కానీ అది ఒకే నమూనాగా భావించాలి. కాబట్టి, భాషను నిర్వహించడానికి మనం కొత్త న్యూరల్ నెట్‌వర్క్ రకాలు, ఉదా. *రెకరెంట్ నెట్‌వర్క్‌లు* మరియు *ట్రాన్స్‌ఫార్మర్స్* పరిచయం చేయాలి.
## లైబ్రరీలు ఇన్‌స్టాల్ చేయండి
మీరు ఈ కోర్సును స్థానిక Python ఇన్‌స్టాలేషన్‌లో నడుపుతున్నట్లయితే, NLPకి అవసరమైన అన్ని లైబ్రరీలను క్రింది కమాండ్లతో ఇన్‌స్టాల్ చేయవచ్చు:
**PyTorch కోసం**
```bash
pip install -r requirements-torch.txt
```
**TensorFlow కోసం**
```bash
pip install -r requirements-tf.txt
```
> మీరు TensorFlowతో NLPని [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste)లో ప్రయత్నించవచ్చు
## GPU హెచ్చరిక
ఈ విభాగంలో, కొన్ని ఉదాహరణల్లో మనం పెద్ద నమూనాలను శిక్షణ ఇస్తున్నాము.
* **GPU-సమర్థ కంప్యూటర్ ఉపయోగించండి**: పెద్ద నమూనాలతో పని చేస్తున్నప్పుడు వేచి ఉండే సమయాన్ని తగ్గించడానికి GPU-సమర్థ కంప్యూటర్‌లో మీ నోట్‌బుక్స్ నడపడం మంచిది.
* **GPU మెమరీ పరిమితులు**: GPUపై నడిపేటప్పుడు, ముఖ్యంగా పెద్ద నమూనాలను శిక్షణ ఇస్తున్నప్పుడు GPU మెమరీ తక్కువ కావచ్చు.
* **GPU మెమరీ వినియోగం**: శిక్షణ సమయంలో GPU మెమరీ వినియోగం వివిధ అంశాలపై ఆధారపడి ఉంటుంది, అందులో మినీబ్యాచ్ పరిమాణం కూడా ఉంది.
* **మినీబ్యాచ్ పరిమాణం తగ్గించండి**: GPU మెమరీ సమస్యలు ఎదురైతే, మీ కోడ్‌లో మినీబ్యాచ్ పరిమాణాన్ని తగ్గించడం ఒక పరిష్కారం కావచ్చు.
* **TensorFlow GPU మెమరీ విడుదల**: పాత TensorFlow సంస్కరణలు ఒకే Python కర్నెల్‌లో అనేక నమూనాలను శిక్షణ ఇస్తున్నప్పుడు GPU మెమరీని సరిగ్గా విడుదల చేయకపోవచ్చు. GPU మెమరీ వినియోగాన్ని సమర్థవంతంగా నిర్వహించడానికి, TensorFlowని అవసరమైనప్పుడు మాత్రమే GPU మెమరీ కేటాయించేలా సెట్ చేయవచ్చు.
* **కోడ్ చేర్చడం**: TensorFlow GPU మెమరీ కేటాయింపును అవసరమైనప్పుడు మాత్రమే పెంచేలా సెట్ చేయడానికి, మీ నోట్‌బుక్స్‌లో క్రింది కోడ్ చేర్చండి:
```python
physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices)>0:
tf.config.experimental.set_memory_growth(physical_devices[0], True)
```
మీకు క్లాసిక్ మెషీన్ లెర్నింగ్ దృష్టికోణం నుండి NLP నేర్చుకోవాలంటే, [ఈ పాఠ్యాల సూట్](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)ను సందర్శించండి
## ఈ విభాగంలో
ఈ విభాగంలో మనం నేర్చుకునేది:
* [పాఠ్యాన్ని టెన్సర్లుగా ప్రాతినిధ్యం వహించడం](13-TextRep/README.md)
* [పద ఎంబెడ్డింగ్స్](14-Emdeddings/README.md)
* [భాషా మోడలింగ్](15-LanguageModeling/README.md)
* [రెకరెంట్ న్యూరల్ నెట్‌వర్క్‌లు](16-RNN/README.md)
* [జనరేటివ్ నెట్‌వర్క్‌లు](17-GenerativeNetworks/README.md)
* [ట్రాన్స్‌ఫార్మర్స్](18-Transformers/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "8ef02a9318257ea140ed3ed74442096d",
"translation_date": "2025-11-25T21:12:36+00:00",
"source_file": "lessons/5-NLP/README.md",
"language_code": "te"
}
-->
# సహజ భాషా ప్రాసెసింగ్
![NLP పనుల సారాంశం ఒక డ్రాయింగ్‌లో](../../../../translated_images/ai-nlp.b22dcb8ca4707cea.te.png)
ఈ విభాగంలో, మనం సహజ భాషా ప్రాసెసింగ్ (NLP) సంబంధిత పనులను నిర్వహించడానికి న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడంపై దృష్టి పెట్టబోతున్నాము. కంప్యూటర్లు పరిష్కరించగలిగే అనేక NLP సమస్యలు ఉన్నాయి:
* **పాఠ్య వర్గీకరణ** అనేది పాఠ్య శ్రేణులకి సంబంధించిన సాధారణ వర్గీకరణ సమస్య. ఉదాహరణకు, ఇమెయిల్ సందేశాలను స్పామ్ లేదా నాన్-స్పామ్‌గా వర్గీకరించడం, లేదా వ్యాసాలను క్రీడలు, వ్యాపారం, రాజకీయాలు వంటి వర్గాలుగా వర్గీకరించడం. చాట్ బాట్లను అభివృద్ధి చేస్తున్నప్పుడు, వినియోగదారు ఏమి చెప్పాలనుకున్నాడో అర్థం చేసుకోవడం అవసరం అవుతుంది -- ఈ సందర్భంలో మనం **ఇరాదా వర్గీకరణ**తో వ్యవహరిస్తున్నాము. ఇరాదా వర్గీకరణలో తరచుగా అనేక వర్గాలతో వ్యవహరించాల్సి ఉంటుంది.
* **భావ విశ్లేషణ** అనేది సాధారణ రిగ్రెషన్ సమస్య, ఇందులో వాక్య అర్థం ఎంత సానుకూలం/నెగటివ్ అనేదానికి సంబంధించిన సంఖ్య (భావం) ఇవ్వాలి. భావ విశ్లేషణ యొక్క అభివృద్ధి చెందిన రూపం **అంశాల ఆధారిత భావ విశ్లేషణ** (ABSA), ఇందులో భావాన్ని మొత్తం వాక్యం కాకుండా వాక్యంలోని వివిధ భాగాలకు (అంశాలకు) కేటాయిస్తారు, ఉదా. *ఈ రెస్టారెంట్‌లో నాకు వంటకం నచ్చింది, కానీ వాతావరణం భయంకరంగా ఉంది*.
* **పేరు గుర్తింపు** (NER) అనేది పాఠ్యంలోని నిర్దిష్ట అంశాలను తీసుకోవడం. ఉదాహరణకు, *నేను రేపు పారిస్‌కు ప్రయాణించాలి* అనే వాక్యంలో *రేపు* అనేది తేదీకి (DATE) సూచిస్తుందని, *పారిస్* అనేది స్థలానికి (LOCATION) సంబంధించినదని అర్థం చేసుకోవాలి.
* **కీవర్డ్ ఎక్స్‌ట్రాక్షన్** NERకి సమానంగా ఉంటుంది, కానీ ఇందులో నిర్దిష్ట అంశ రకాల కోసం ముందుగా శిక్షణ లేకుండా వాక్య అర్థానికి ముఖ్యమైన పదాలను ఆటోమేటిక్‌గా తీసుకోవాలి.
* **పాఠ్య క్లస్టరింగ్** అనేది సారూప్యమైన వాక్యాలను ఒకటిగా సమూహీకరించడానికి ఉపయోగపడుతుంది, ఉదాహరణకు, సాంకేతిక మద్దతు సంభాషణలలో సారూప్యమైన అభ్యర్థనలు.
* **ప్రశ్నోత్తరం** అనేది ఒక నమూనా నిర్దిష్ట ప్రశ్నకు సమాధానం ఇవ్వగల సామర్థ్యం. నమూనా ఒక పాఠ్య భాగం మరియు ప్రశ్నను ఇన్‌పుట్‌గా తీసుకుని, ప్రశ్నకు సమాధానం ఉన్న పాఠ్య భాగాన్ని అందించాలి (లేదా, కొన్నిసార్లు సమాధానాన్ని సృష్టించాలి).
* **పాఠ్య ఉత్పత్తి** అనేది ఒక నమూనా కొత్త పాఠ్యాన్ని సృష్టించగల సామర్థ్యం. ఇది ఒక వర్గీకరణ పనిగా పరిగణించవచ్చు, ఇది కొన్ని *పాఠ్య ప్రాంప్ట్* ఆధారంగా తదుపరి అక్షరం/పదాన్ని అంచనా వేస్తుంది. GPT-3 వంటి అభివృద్ధి చెందిన పాఠ్య ఉత్పత్తి నమూనాలు, [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) లేదా [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) అనే సాంకేతికత ఉపయోగించి వర్గీకరణ వంటి ఇతర NLP పనులను కూడా పరిష్కరించగలవు.
* **పాఠ్య సారాంశం** అనేది కంప్యూటర్‌ను పొడవైన పాఠ్యాన్ని "చదవించి" దాన్ని కొన్ని వాక్యాలలో సారాంశం చేయించడానికి ఉపయోగించే సాంకేతికత.
* **యంత్ర అనువాదం** అనేది ఒక భాషలో పాఠ్యాన్ని అర్థం చేసుకోవడం మరియు మరొక భాషలో పాఠ్యాన్ని ఉత్పత్తి చేయడం కలయికగా చూడవచ్చు.
ప్రారంభంలో, చాలా NLP పనులు వ్యాకరణాలు వంటి సాంప్రదాయ పద్ధతులతో పరిష్కరించబడ్డాయి. ఉదాహరణకు, యంత్ర అనువాదంలో మొదటి వాక్యాన్ని సింటాక్స్ ట్రీగా మార్చడానికి పార్సర్లు ఉపయోగించబడ్డాయి, ఆపై వాక్య అర్థాన్ని సూచించే ఉన్నత స్థాయి సేమాంటిక్ నిర్మాణాలు తీసుకున్నారు, ఆ అర్థం మరియు లక్ష్య భాష వ్యాకరణం ఆధారంగా ఫలితాన్ని ఉత్పత్తి చేశారు. ఈ రోజుల్లో, అనేక NLP పనులు న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించి మరింత సమర్థవంతంగా పరిష్కరించబడుతున్నాయి.
> అనేక సాంప్రదాయ NLP పద్ధతులు [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) పైథాన్ లైబ్రరీలో అమలు చేయబడ్డాయి. వివిధ NLP పనులను NLTK ఉపయోగించి ఎలా పరిష్కరించాలో వివరించే గొప్ప [NLTK పుస్తకం](https://www.nltk.org/book/) ఆన్‌లైన్‌లో అందుబాటులో ఉంది.
మన కోర్సులో, మనం ప్రధానంగా NLP కోసం న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడంపై దృష్టి పెట్టబోతున్నాము, అవసరమైతే NLTKని ఉపయోగిస్తాము.
మనం ఇప్పటికే పట్టిక డేటా మరియు చిత్రాలతో వ్యవహరించడానికి న్యూరల్ నెట్‌వర్క్‌లను ఉపయోగించడం గురించి నేర్చుకున్నాము. ఆ డేటా రకాలతో పాఠ్యం మధ్య ప్రధాన తేడా ఏమిటంటే, పాఠ్యం అనేది మార్పిడి పొడవు కలిగిన శ్రేణి, కానీ చిత్రాల ఇన్‌పుట్ పరిమాణం ముందే తెలుసు. కన్వల్యూషనల్ నెట్‌వర్క్‌లు ఇన్‌పుట్ డేటా నుండి నమూనాలను తీసుకోవచ్చు, కానీ పాఠ్యంలో నమూనాలు మరింత సంక్లిష్టంగా ఉంటాయి. ఉదా., నెగేషన్ (నాక ఇష్టం లేదు) మరియు విషయం మధ్య అనేక పదాల దూరం ఉండొచ్చు (ఉదా. *I do not like oranges*, vs. *I do not like those big colorful tasty oranges*), కానీ అది ఒకే నమూనాగా భావించాలి. కాబట్టి, భాషను నిర్వహించడానికి మనం కొత్త న్యూరల్ నెట్‌వర్క్ రకాలు, ఉదా. *రెకరెంట్ నెట్‌వర్క్‌లు* మరియు *ట్రాన్స్‌ఫార్మర్స్* పరిచయం చేయాలి.
## లైబ్రరీలు ఇన్‌స్టాల్ చేయండి
మీరు ఈ కోర్సును స్థానిక Python ఇన్‌స్టాలేషన్‌లో నడుపుతున్నట్లయితే, NLPకి అవసరమైన అన్ని లైబ్రరీలను క్రింది కమాండ్లతో ఇన్‌స్టాల్ చేయవచ్చు:
**PyTorch కోసం**
```bash
pip install -r requirements-torch.txt
```
**TensorFlow కోసం**
```bash
pip install -r requirements-tf.txt
```
> మీరు TensorFlowతో NLPని [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste)లో ప్రయత్నించవచ్చు
## GPU హెచ్చరిక
ఈ విభాగంలో, కొన్ని ఉదాహరణల్లో మనం పెద్ద నమూనాలను శిక్షణ ఇస్తున్నాము.
* **GPU-సమర్థ కంప్యూటర్ ఉపయోగించండి**: పెద్ద నమూనాలతో పని చేస్తున్నప్పుడు వేచి ఉండే సమయాన్ని తగ్గించడానికి GPU-సమర్థ కంప్యూటర్‌లో మీ నోట్‌బుక్స్ నడపడం మంచిది.
* **GPU మెమరీ పరిమితులు**: GPUపై నడిపేటప్పుడు, ముఖ్యంగా పెద్ద నమూనాలను శిక్షణ ఇస్తున్నప్పుడు GPU మెమరీ తక్కువ కావచ్చు.
* **GPU మెమరీ వినియోగం**: శిక్షణ సమయంలో GPU మెమరీ వినియోగం వివిధ అంశాలపై ఆధారపడి ఉంటుంది, అందులో మినీబ్యాచ్ పరిమాణం కూడా ఉంది.
* **మినీబ్యాచ్ పరిమాణం తగ్గించండి**: GPU మెమరీ సమస్యలు ఎదురైతే, మీ కోడ్‌లో మినీబ్యాచ్ పరిమాణాన్ని తగ్గించడం ఒక పరిష్కారం కావచ్చు.
* **TensorFlow GPU మెమరీ విడుదల**: పాత TensorFlow సంస్కరణలు ఒకే Python కర్నెల్‌లో అనేక నమూనాలను శిక్షణ ఇస్తున్నప్పుడు GPU మెమరీని సరిగ్గా విడుదల చేయకపోవచ్చు. GPU మెమరీ వినియోగాన్ని సమర్థవంతంగా నిర్వహించడానికి, TensorFlowని అవసరమైనప్పుడు మాత్రమే GPU మెమరీ కేటాయించేలా సెట్ చేయవచ్చు.
* **కోడ్ చేర్చడం**: TensorFlow GPU మెమరీ కేటాయింపును అవసరమైనప్పుడు మాత్రమే పెంచేలా సెట్ చేయడానికి, మీ నోట్‌బుక్స్‌లో క్రింది కోడ్ చేర్చండి:
```python
physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices)>0:
tf.config.experimental.set_memory_growth(physical_devices[0], True)
```
మీకు క్లాసిక్ మెషీన్ లెర్నింగ్ దృష్టికోణం నుండి NLP నేర్చుకోవాలంటే, [ఈ పాఠ్యాల సూట్](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)ను సందర్శించండి
## ఈ విభాగంలో
ఈ విభాగంలో మనం నేర్చుకునేది:
* [పాఠ్యాన్ని టెన్సర్లుగా ప్రాతినిధ్యం వహించడం](13-TextRep/README.md)
* [పద ఎంబెడ్డింగ్స్](14-Emdeddings/README.md)
* [భాషా మోడలింగ్](15-LanguageModeling/README.md)
* [రెకరెంట్ న్యూరల్ నెట్‌వర్క్‌లు](16-RNN/README.md)
* [జనరేటివ్ నెట్‌వర్క్‌లు](17-GenerativeNetworks/README.md)
* [ట్రాన్స్‌ఫార్మర్స్](18-Transformers/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,130 +1,130 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "04395657fc01648f8f70484d0e55ab67",
"translation_date": "2025-11-25T23:30:21+00:00",
"source_file": "lessons/6-Other/22-DeepRL/README.md",
"language_code": "te"
}
-->
# డీప్ రీన్ఫోర్స్‌మెంట్ లెర్నింగ్
రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ (RL) అనేది పర్యవేక్షిత లెర్నింగ్ మరియు పర్యవేక్షణ లేని లెర్నింగ్ తర్వాత ఒక ప్రాథమిక మెషీన్ లెర్నింగ్ పద్ధతిగా భావించబడుతుంది. పర్యవేక్షిత లెర్నింగ్‌లో మనం ఫలితాలు తెలిసిన డేటాసెట్‌పై ఆధారపడతాము, కానీ RL **చేసి నేర్చుకోవడం** అనే సిద్ధాంతంపై ఆధారపడి ఉంటుంది. ఉదాహరణకు, మనం మొదటిసారి కంప్యూటర్ గేమ్‌ను చూసినప్పుడు, నియమాలు తెలియకపోయినా ఆడటం మొదలుపెడతాము, ఆడుతూ మన ప్రవర్తనను సర్దుబాటు చేసుకుంటూ మన నైపుణ్యాలను మెరుగుపరుస్తాము.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/43)
RL నిర్వహించడానికి మనకు అవసరం:
* ఒక **పరిసరము** లేదా **సిమ్యులేటర్** గేమ్ నియమాలను సెట్ చేసే. మనం సిమ్యులేటర్‌లో ప్రయోగాలు నిర్వహించి ఫలితాలను గమనించగలగాలి.
* ఒక **రివార్డ్ ఫంక్షన్**, ఇది మన ప్రయోగం ఎంత విజయవంతమైందో సూచిస్తుంది. కంప్యూటర్ గేమ్ ఆడటం నేర్చుకోవడంలో, రివార్డ్ అంటే మన తుది స్కోరు.
రివార్డ్ ఫంక్షన్ ఆధారంగా మనం మన ప్రవర్తనను సర్దుబాటు చేసి నైపుణ్యాలను మెరుగుపరచగలగాలి, తద్వారా తదుపరి సారి మెరుగ్గా ఆడగలుగుతాము. ఇతర మెషీన్ లెర్నింగ్ రకాలతో RL మధ్య ప్రధాన తేడా ఏమిటంటే, RLలో మనం గేమ్ ముగిసే వరకు గెలిచామా లేదా ఓడామా అనేది తెలియదు. కాబట్టి ఒక నిర్దిష్ట చర్య మంచిదా కాదా అనేది చెప్పలేము - గేమ్ చివరే రివార్డ్ అందుతుంది.
RL సమయంలో మనం సాధారణంగా అనేక ప్రయోగాలు చేస్తాము. ప్రతి ప్రయోగంలో, ఇప్పటివరకు నేర్చుకున్న ఉత్తమ వ్యూహాన్ని అనుసరించడం (**exploitation**) మరియు కొత్త సంభావ్య స్థితులను అన్వేషించడం (**exploration**) మధ్య సమతుల్యత అవసరం.
## OpenAI జిమ్
RL కోసం అద్భుతమైన సాధనం [OpenAI Gym](https://gym.openai.com/) - ఒక **సిమ్యులేషన్ పరిసరము**, ఇది అటారీ గేమ్స్ నుండి పోల బలాన్సింగ్ వెనుక భౌతిక శాస్త్రం వరకు అనేక వాతావరణాలను సిమ్యులేట్ చేయగలదు. ఇది రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ అల్గోరిథమ్స్ శిక్షణకు అత్యంత ప్రాచుర్యం పొందిన సిమ్యులేషన్ పరిసరాలలో ఒకటి, మరియు [OpenAI](https://openai.com/) నిర్వహిస్తుంది.
> **గమనిక**: OpenAI జిమ్ అందుబాటులో ఉన్న అన్ని పరిసరాలను మీరు [ఇక్కడ](https://gym.openai.com/envs/#classic_control) చూడవచ్చు.
## కార్ట్‌పోల్ బలాన్సింగ్
మీరు సగటున *Segway* లేదా *Gyroscooters* వంటి ఆధునిక బలాన్సింగ్ పరికరాలను చూసి ఉంటారు. అవి యాక్సిలరోమీటర్ లేదా జైరోస్కోప్ నుండి సంకేతం అందుకున్నప్పుడు చక్రాలను సర్దుబాటు చేసి ఆటోమేటిక్‌గా సమతుల్యం సాధిస్తాయి. ఈ విభాగంలో, మనం ఇలాంటి సమస్యను - ఒక కంబళిని సమతుల్యం చేయడం - ఎలా పరిష్కరించాలో నేర్చుకుంటాము. ఇది సర్కస్ ప్రదర్శకుడు తన చేతిలో కంబళిని సమతుల్యం చేయాల్సిన పరిస్థితికి సమానంగా ఉంటుంది, కానీ ఈ కంబళి సమతుల్యం 1Dలో జరుగుతుంది.
సరళీకృత బలాన్సింగ్ వెర్షన్‌ను **కార్ట్‌పోల్** సమస్యగా పిలుస్తారు. కార్ట్‌పోల్ ప్రపంచంలో, మనకు ఎడమ లేదా కుడి వైపు కదలగల ఒక హారిజాంటల్ స్లైడర్ ఉంటుంది, మరియు స్లైడర్ పై ఒక నిలువు కంబళిని సమతుల్యం చేయడం లక్ష్యం.
<img alt="a cartpole" src="../../../../../translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.te.png" width="200"/>
ఈ పరిసరాన్ని సృష్టించి ఉపయోగించడానికి, మనకు కొన్ని పాథాన్ కోడ్ లైన్లు అవసరం:
```python
import gym
env = gym.make("CartPole-v1")
env.reset()
done = False
total_reward = 0
while not done:
env.render()
action = env.action_space.sample()
observaton, reward, done, info = env.step(action)
total_reward += reward
print(f"Total reward: {total_reward}")
```
ప్రతి పరిసరాన్ని క్రింది విధంగా యాక్సెస్ చేయవచ్చు:
* `env.reset` కొత్త ప్రయోగాన్ని ప్రారంభిస్తుంది
* `env.step` ఒక సిమ్యులేషన్ దశను నిర్వహిస్తుంది. ఇది **ఆక్షన్ స్పేస్** నుండి ఒక **చర్య**ను తీసుకుని, **ఆబ్జర్వేషన్ స్పేస్** నుండి ఒక **పరిశీలన**ను, అలాగే రివార్డ్ మరియు ముగింపు ఫ్లాగ్‌ను ఇస్తుంది.
పై ఉదాహరణలో మనం ప్రతి దశలో యాదృచ్ఛిక చర్యను తీసుకుంటున్నాము, అందుకే ప్రయోగం జీవితకాలం చాలా తక్కువగా ఉంటుంది:
![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif)
RL అల్గోరిథం లక్ష్యం ఒక మోడల్ - అంటే **పాలసీ** &pi; - శిక్షణ ఇవ్వడం, ఇది ఇచ్చిన స్థితికి స్పందించి చర్యను ఇస్తుంది. పాలసీని ప్రాబబిలిస్టిక్‌గా కూడా పరిగణించవచ్చు, ఉదా: ఏ స్థితి *s* మరియు చర్య *a* కోసం &pi;(*a*|*s*) అంటే మనం ఆ *s* స్థితిలో *a* చర్య తీసుకోవాల్సిన సంభావ్యత.
## పాలసీ గ్రాడియెంట్స్ అల్గోరిథం
పాలసీని మోడల్ చేయడానికి స్పష్టమైన మార్గం ఒక న్యూరల్ నెట్‌వర్క్ సృష్టించడం, ఇది స్థితులను ఇన్‌పుట్‌గా తీసుకుని, సంబంధిత చర్యలను (లేదా అన్ని చర్యల ప్రాబబిలిటీలను) ఇస్తుంది. ఇది సాధారణ క్లాసిఫికేషన్ టాస్క్‌లాగా ఉంటుంది, కానీ ప్రధాన తేడా ఏమిటంటే మనకు ముందే ఏ దశలో ఏ చర్య తీసుకోవాలో తెలియదు.
ఇక్కడ ఆ ప్రాబబిలిటీలను అంచనా వేయడం లక్ష్యం. మనం **సంచిత రివార్డ్స్** వెక్టర్‌ను నిర్మిస్తాము, ఇది ప్రయోగం ప్రతి దశలో మన మొత్తం రివార్డ్‌ను చూపిస్తుంది. అలాగే, మనం **రివార్డ్ డిస్కౌంటింగ్**ను వర్తింపజేస్తాము, అంటే ముందటి రివార్డ్స్‌ను కొంత గుణకం &gamma;=0.99తో గుణించి వాటి ప్రాముఖ్యతను తగ్గిస్తాము. ఆపై, ప్రయోగ మార్గంలో ఎక్కువ రివార్డులు ఇచ్చే దశలను బలపరిచే ప్రయత్నం చేస్తాము.
> పాలసీ గ్రాడియెంట్ అల్గోరిథం గురించి మరింత తెలుసుకోండి మరియు దాన్ని [ఉదాహరణ నోట్‌బుక్](CartPole-RL-TF.ipynb)లో చూడండి.
## యాక్టర్-క్రిటిక్ అల్గోరిథం
పాలసీ గ్రాడియెంట్స్ పద్ధతికి మెరుగైన వెర్షన్ **యాక్టర్-క్రిటిక్** అని పిలవబడుతుంది. దీని ప్రధాన ఆలోచన ఏమిటంటే న్యూరల్ నెట్‌వర్క్ రెండు విషయాలను ఇస్తుంది:
* ఏ చర్య తీసుకోవాలో నిర్ణయించే పాలసీ - దీనిని **యాక్టర్** అంటారు
* ఆ స్థితిలో మనం పొందగల మొత్తం రివార్డ్ అంచనా - దీనిని **క్రిటిక్** అంటారు.
ఈ నిర్మాణం ఒక [GAN](../../4-ComputerVision/10-GANs/README.md) లాగా ఉంటుంది, ఇక్కడ రెండు నెట్‌వర్క్లు పరస్పరం వ్యతిరేకంగా శిక్షణ పొందుతాయి. యాక్టర్ మనం తీసుకోవాల్సిన చర్యను సూచిస్తాడు, క్రిటిక్ ఫలితాన్ని అంచనా వేస్తాడు. కానీ మన లక్ష్యం ఈ రెండు నెట్‌వర్క్లను కలిసి శిక్షణ ఇవ్వడం.
ప్రయోగ సమయంలో మనకు నిజమైన సంచిత రివార్డ్స్ మరియు క్రిటిక్ ఇచ్చిన ఫలితాలు రెండూ తెలిసినందున, వాటి మధ్య తేడాను తగ్గించే లాస్ ఫంక్షన్ సృష్టించడం సులభం. దీన్ని **క్రిటిక్ లాస్** అంటారు. పాలసీ గ్రాడియెంట్ అల్గోరిథం విధానాన్ని ఉపయోగించి **యాక్టర్ లాస్**ను కూడా లెక్కించవచ్చు.
ఈ అల్గోరిథమ్స్ ఒకటి నడిపిన తర్వాత, మన కార్ట్‌పోల్ ఇలా ప్రవర్తిస్తుంది:
![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif)
## ✍️ వ్యాయామాలు: పాలసీ గ్రాడియెంట్స్ మరియు యాక్టర్-క్రిటిక్ RL
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [టెన్సర్‌ఫ్లోలో RL](CartPole-RL-TF.ipynb)
* [పైటార్చ్‌లో RL](CartPole-RL-PyTorch.ipynb)
## ఇతర RL పనులు
ఈ రోజుల్లో రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ వేగంగా అభివృద్ధి చెందుతున్న పరిశోధనా రంగం. కొన్ని ఆసక్తికర RL ఉదాహరణలు:
* కంప్యూటర్‌ను **అటారీ గేమ్స్** ఆడటానికి నేర్పించడం. ఈ సమస్యలో సవాలు ఏమిటంటే మనకు సులభమైన వెక్టర్ రూపంలో స్థితి ఉండదు, స్క్రీన్‌షాట్ ఉంటుంది - కాబట్టి CNN ఉపయోగించి ఈ స్క్రీన్ చిత్రాన్ని ఫీచర్ వెక్టర్‌గా మార్చాలి లేదా రివార్డ్ సమాచారాన్ని తీసుకోవాలి. అటారీ గేమ్స్ జిమ్‌లో అందుబాటులో ఉన్నాయి.
* చెస్, గో వంటి బోర్డు గేమ్స్ ఆడటానికి కంప్యూటర్‌ను నేర్పించడం. ఇటీవల, **అల్ఫా జీరో** వంటి ఆధునిక ప్రోగ్రాములు రెండు ఏజెంట్లు పరస్పరం పోటీ పడుతూ, ప్రతి దశలో మెరుగుపడుతూ, మొదలైనవి.
* పరిశ్రమలో, RL సిమ్యులేషన్ నుండి నియంత్రణ వ్యవస్థలను సృష్టించడానికి ఉపయోగిస్తారు. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) అనే సేవ ప్రత్యేకంగా దీనికోసం రూపొందించబడింది.
## ముగింపు
ఇప్పుడు మనం ఏజెంట్లను శిక్షణ ఇస్తూ, గేమ్ యొక్క కావలసిన స్థితిని నిర్వచించే రివార్డ్ ఫంక్షన్ ఇవ్వడం ద్వారా, మరియు శోధన స్థలాన్ని తెలివిగా అన్వేషించడానికి అవకాశం ఇచ్చి మంచి ఫలితాలు సాధించడం నేర్చుకున్నాము. మనం రెండు అల్గోరిథమ్స్ విజయవంతంగా ప్రయత్నించి, తక్కువ సమయంలో మంచి ఫలితాలు సాధించాము. అయితే, ఇది RL లో మీ ప్రయాణం ప్రారంభం మాత్రమే, మీరు దీన్ని లోతుగా తెలుసుకోవాలనుకుంటే ప్రత్యేక కోర్సు తీసుకోవడం మంచిది.
## 🚀 సవాలు
'ఇతర RL పనులు' విభాగంలో పేర్కొన్న అనువర్తనాలను పరిశీలించి, వాటిలో ఒకదాన్ని అమలు చేయడానికి ప్రయత్నించండి!
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/44)
## సమీక్ష & స్వీయ అధ్యయనం
మన [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md)లో క్లాసికల్ రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ గురించి మరింత తెలుసుకోండి.
సూపర్ మారియో గేమ్ ఆడటం కంప్యూటర్ ఎలా నేర్చుకుంటుందో వివరిస్తున్న [ఈ అద్భుతమైన వీడియో](https://www.youtube.com/watch?v=qv6UVOQ0F44)ను చూడండి.
## అసైన్‌మెంట్: [మౌంటైన్ కార్ శిక్షణ](lab/README.md)
ఈ అసైన్‌మెంట్‌లో మీ లక్ష్యం వేరే జిమ్ పరిసరాన్ని శిక్షణ ఇవ్వడం - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/).
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "04395657fc01648f8f70484d0e55ab67",
"translation_date": "2025-11-25T23:30:21+00:00",
"source_file": "lessons/6-Other/22-DeepRL/README.md",
"language_code": "te"
}
-->
# డీప్ రీన్ఫోర్స్‌మెంట్ లెర్నింగ్
రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ (RL) అనేది పర్యవేక్షిత లెర్నింగ్ మరియు పర్యవేక్షణ లేని లెర్నింగ్ తర్వాత ఒక ప్రాథమిక మెషీన్ లెర్నింగ్ పద్ధతిగా భావించబడుతుంది. పర్యవేక్షిత లెర్నింగ్‌లో మనం ఫలితాలు తెలిసిన డేటాసెట్‌పై ఆధారపడతాము, కానీ RL **చేసి నేర్చుకోవడం** అనే సిద్ధాంతంపై ఆధారపడి ఉంటుంది. ఉదాహరణకు, మనం మొదటిసారి కంప్యూటర్ గేమ్‌ను చూసినప్పుడు, నియమాలు తెలియకపోయినా ఆడటం మొదలుపెడతాము, ఆడుతూ మన ప్రవర్తనను సర్దుబాటు చేసుకుంటూ మన నైపుణ్యాలను మెరుగుపరుస్తాము.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/43)
RL నిర్వహించడానికి మనకు అవసరం:
* ఒక **పరిసరము** లేదా **సిమ్యులేటర్** గేమ్ నియమాలను సెట్ చేసే. మనం సిమ్యులేటర్‌లో ప్రయోగాలు నిర్వహించి ఫలితాలను గమనించగలగాలి.
* ఒక **రివార్డ్ ఫంక్షన్**, ఇది మన ప్రయోగం ఎంత విజయవంతమైందో సూచిస్తుంది. కంప్యూటర్ గేమ్ ఆడటం నేర్చుకోవడంలో, రివార్డ్ అంటే మన తుది స్కోరు.
రివార్డ్ ఫంక్షన్ ఆధారంగా మనం మన ప్రవర్తనను సర్దుబాటు చేసి నైపుణ్యాలను మెరుగుపరచగలగాలి, తద్వారా తదుపరి సారి మెరుగ్గా ఆడగలుగుతాము. ఇతర మెషీన్ లెర్నింగ్ రకాలతో RL మధ్య ప్రధాన తేడా ఏమిటంటే, RLలో మనం గేమ్ ముగిసే వరకు గెలిచామా లేదా ఓడామా అనేది తెలియదు. కాబట్టి ఒక నిర్దిష్ట చర్య మంచిదా కాదా అనేది చెప్పలేము - గేమ్ చివరే రివార్డ్ అందుతుంది.
RL సమయంలో మనం సాధారణంగా అనేక ప్రయోగాలు చేస్తాము. ప్రతి ప్రయోగంలో, ఇప్పటివరకు నేర్చుకున్న ఉత్తమ వ్యూహాన్ని అనుసరించడం (**exploitation**) మరియు కొత్త సంభావ్య స్థితులను అన్వేషించడం (**exploration**) మధ్య సమతుల్యత అవసరం.
## OpenAI జిమ్
RL కోసం అద్భుతమైన సాధనం [OpenAI Gym](https://gym.openai.com/) - ఒక **సిమ్యులేషన్ పరిసరము**, ఇది అటారీ గేమ్స్ నుండి పోల బలాన్సింగ్ వెనుక భౌతిక శాస్త్రం వరకు అనేక వాతావరణాలను సిమ్యులేట్ చేయగలదు. ఇది రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ అల్గోరిథమ్స్ శిక్షణకు అత్యంత ప్రాచుర్యం పొందిన సిమ్యులేషన్ పరిసరాలలో ఒకటి, మరియు [OpenAI](https://openai.com/) నిర్వహిస్తుంది.
> **గమనిక**: OpenAI జిమ్ అందుబాటులో ఉన్న అన్ని పరిసరాలను మీరు [ఇక్కడ](https://gym.openai.com/envs/#classic_control) చూడవచ్చు.
## కార్ట్‌పోల్ బలాన్సింగ్
మీరు సగటున *Segway* లేదా *Gyroscooters* వంటి ఆధునిక బలాన్సింగ్ పరికరాలను చూసి ఉంటారు. అవి యాక్సిలరోమీటర్ లేదా జైరోస్కోప్ నుండి సంకేతం అందుకున్నప్పుడు చక్రాలను సర్దుబాటు చేసి ఆటోమేటిక్‌గా సమతుల్యం సాధిస్తాయి. ఈ విభాగంలో, మనం ఇలాంటి సమస్యను - ఒక కంబళిని సమతుల్యం చేయడం - ఎలా పరిష్కరించాలో నేర్చుకుంటాము. ఇది సర్కస్ ప్రదర్శకుడు తన చేతిలో కంబళిని సమతుల్యం చేయాల్సిన పరిస్థితికి సమానంగా ఉంటుంది, కానీ ఈ కంబళి సమతుల్యం 1Dలో జరుగుతుంది.
సరళీకృత బలాన్సింగ్ వెర్షన్‌ను **కార్ట్‌పోల్** సమస్యగా పిలుస్తారు. కార్ట్‌పోల్ ప్రపంచంలో, మనకు ఎడమ లేదా కుడి వైపు కదలగల ఒక హారిజాంటల్ స్లైడర్ ఉంటుంది, మరియు స్లైడర్ పై ఒక నిలువు కంబళిని సమతుల్యం చేయడం లక్ష్యం.
<img alt="a cartpole" src="../../../../../translated_images/cartpole.f52a67f27e058170.te.png" width="200"/>
ఈ పరిసరాన్ని సృష్టించి ఉపయోగించడానికి, మనకు కొన్ని పాథాన్ కోడ్ లైన్లు అవసరం:
```python
import gym
env = gym.make("CartPole-v1")
env.reset()
done = False
total_reward = 0
while not done:
env.render()
action = env.action_space.sample()
observaton, reward, done, info = env.step(action)
total_reward += reward
print(f"Total reward: {total_reward}")
```
ప్రతి పరిసరాన్ని క్రింది విధంగా యాక్సెస్ చేయవచ్చు:
* `env.reset` కొత్త ప్రయోగాన్ని ప్రారంభిస్తుంది
* `env.step` ఒక సిమ్యులేషన్ దశను నిర్వహిస్తుంది. ఇది **ఆక్షన్ స్పేస్** నుండి ఒక **చర్య**ను తీసుకుని, **ఆబ్జర్వేషన్ స్పేస్** నుండి ఒక **పరిశీలన**ను, అలాగే రివార్డ్ మరియు ముగింపు ఫ్లాగ్‌ను ఇస్తుంది.
పై ఉదాహరణలో మనం ప్రతి దశలో యాదృచ్ఛిక చర్యను తీసుకుంటున్నాము, అందుకే ప్రయోగం జీవితకాలం చాలా తక్కువగా ఉంటుంది:
![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif)
RL అల్గోరిథం లక్ష్యం ఒక మోడల్ - అంటే **పాలసీ** &pi; - శిక్షణ ఇవ్వడం, ఇది ఇచ్చిన స్థితికి స్పందించి చర్యను ఇస్తుంది. పాలసీని ప్రాబబిలిస్టిక్‌గా కూడా పరిగణించవచ్చు, ఉదా: ఏ స్థితి *s* మరియు చర్య *a* కోసం &pi;(*a*|*s*) అంటే మనం ఆ *s* స్థితిలో *a* చర్య తీసుకోవాల్సిన సంభావ్యత.
## పాలసీ గ్రాడియెంట్స్ అల్గోరిథం
పాలసీని మోడల్ చేయడానికి స్పష్టమైన మార్గం ఒక న్యూరల్ నెట్‌వర్క్ సృష్టించడం, ఇది స్థితులను ఇన్‌పుట్‌గా తీసుకుని, సంబంధిత చర్యలను (లేదా అన్ని చర్యల ప్రాబబిలిటీలను) ఇస్తుంది. ఇది సాధారణ క్లాసిఫికేషన్ టాస్క్‌లాగా ఉంటుంది, కానీ ప్రధాన తేడా ఏమిటంటే మనకు ముందే ఏ దశలో ఏ చర్య తీసుకోవాలో తెలియదు.
ఇక్కడ ఆ ప్రాబబిలిటీలను అంచనా వేయడం లక్ష్యం. మనం **సంచిత రివార్డ్స్** వెక్టర్‌ను నిర్మిస్తాము, ఇది ప్రయోగం ప్రతి దశలో మన మొత్తం రివార్డ్‌ను చూపిస్తుంది. అలాగే, మనం **రివార్డ్ డిస్కౌంటింగ్**ను వర్తింపజేస్తాము, అంటే ముందటి రివార్డ్స్‌ను కొంత గుణకం &gamma;=0.99తో గుణించి వాటి ప్రాముఖ్యతను తగ్గిస్తాము. ఆపై, ప్రయోగ మార్గంలో ఎక్కువ రివార్డులు ఇచ్చే దశలను బలపరిచే ప్రయత్నం చేస్తాము.
> పాలసీ గ్రాడియెంట్ అల్గోరిథం గురించి మరింత తెలుసుకోండి మరియు దాన్ని [ఉదాహరణ నోట్‌బుక్](CartPole-RL-TF.ipynb)లో చూడండి.
## యాక్టర్-క్రిటిక్ అల్గోరిథం
పాలసీ గ్రాడియెంట్స్ పద్ధతికి మెరుగైన వెర్షన్ **యాక్టర్-క్రిటిక్** అని పిలవబడుతుంది. దీని ప్రధాన ఆలోచన ఏమిటంటే న్యూరల్ నెట్‌వర్క్ రెండు విషయాలను ఇస్తుంది:
* ఏ చర్య తీసుకోవాలో నిర్ణయించే పాలసీ - దీనిని **యాక్టర్** అంటారు
* ఆ స్థితిలో మనం పొందగల మొత్తం రివార్డ్ అంచనా - దీనిని **క్రిటిక్** అంటారు.
ఈ నిర్మాణం ఒక [GAN](../../4-ComputerVision/10-GANs/README.md) లాగా ఉంటుంది, ఇక్కడ రెండు నెట్‌వర్క్లు పరస్పరం వ్యతిరేకంగా శిక్షణ పొందుతాయి. యాక్టర్ మనం తీసుకోవాల్సిన చర్యను సూచిస్తాడు, క్రిటిక్ ఫలితాన్ని అంచనా వేస్తాడు. కానీ మన లక్ష్యం ఈ రెండు నెట్‌వర్క్లను కలిసి శిక్షణ ఇవ్వడం.
ప్రయోగ సమయంలో మనకు నిజమైన సంచిత రివార్డ్స్ మరియు క్రిటిక్ ఇచ్చిన ఫలితాలు రెండూ తెలిసినందున, వాటి మధ్య తేడాను తగ్గించే లాస్ ఫంక్షన్ సృష్టించడం సులభం. దీన్ని **క్రిటిక్ లాస్** అంటారు. పాలసీ గ్రాడియెంట్ అల్గోరిథం విధానాన్ని ఉపయోగించి **యాక్టర్ లాస్**ను కూడా లెక్కించవచ్చు.
ఈ అల్గోరిథమ్స్ ఒకటి నడిపిన తర్వాత, మన కార్ట్‌పోల్ ఇలా ప్రవర్తిస్తుంది:
![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif)
## ✍️ వ్యాయామాలు: పాలసీ గ్రాడియెంట్స్ మరియు యాక్టర్-క్రిటిక్ RL
క్రింది నోట్‌బుక్స్‌లో మీ అభ్యాసాన్ని కొనసాగించండి:
* [టెన్సర్‌ఫ్లోలో RL](CartPole-RL-TF.ipynb)
* [పైటార్చ్‌లో RL](CartPole-RL-PyTorch.ipynb)
## ఇతర RL పనులు
ఈ రోజుల్లో రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ వేగంగా అభివృద్ధి చెందుతున్న పరిశోధనా రంగం. కొన్ని ఆసక్తికర RL ఉదాహరణలు:
* కంప్యూటర్‌ను **అటారీ గేమ్స్** ఆడటానికి నేర్పించడం. ఈ సమస్యలో సవాలు ఏమిటంటే మనకు సులభమైన వెక్టర్ రూపంలో స్థితి ఉండదు, స్క్రీన్‌షాట్ ఉంటుంది - కాబట్టి CNN ఉపయోగించి ఈ స్క్రీన్ చిత్రాన్ని ఫీచర్ వెక్టర్‌గా మార్చాలి లేదా రివార్డ్ సమాచారాన్ని తీసుకోవాలి. అటారీ గేమ్స్ జిమ్‌లో అందుబాటులో ఉన్నాయి.
* చెస్, గో వంటి బోర్డు గేమ్స్ ఆడటానికి కంప్యూటర్‌ను నేర్పించడం. ఇటీవల, **అల్ఫా జీరో** వంటి ఆధునిక ప్రోగ్రాములు రెండు ఏజెంట్లు పరస్పరం పోటీ పడుతూ, ప్రతి దశలో మెరుగుపడుతూ, మొదలైనవి.
* పరిశ్రమలో, RL సిమ్యులేషన్ నుండి నియంత్రణ వ్యవస్థలను సృష్టించడానికి ఉపయోగిస్తారు. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) అనే సేవ ప్రత్యేకంగా దీనికోసం రూపొందించబడింది.
## ముగింపు
ఇప్పుడు మనం ఏజెంట్లను శిక్షణ ఇస్తూ, గేమ్ యొక్క కావలసిన స్థితిని నిర్వచించే రివార్డ్ ఫంక్షన్ ఇవ్వడం ద్వారా, మరియు శోధన స్థలాన్ని తెలివిగా అన్వేషించడానికి అవకాశం ఇచ్చి మంచి ఫలితాలు సాధించడం నేర్చుకున్నాము. మనం రెండు అల్గోరిథమ్స్ విజయవంతంగా ప్రయత్నించి, తక్కువ సమయంలో మంచి ఫలితాలు సాధించాము. అయితే, ఇది RL లో మీ ప్రయాణం ప్రారంభం మాత్రమే, మీరు దీన్ని లోతుగా తెలుసుకోవాలనుకుంటే ప్రత్యేక కోర్సు తీసుకోవడం మంచిది.
## 🚀 సవాలు
'ఇతర RL పనులు' విభాగంలో పేర్కొన్న అనువర్తనాలను పరిశీలించి, వాటిలో ఒకదాన్ని అమలు చేయడానికి ప్రయత్నించండి!
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/44)
## సమీక్ష & స్వీయ అధ్యయనం
మన [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md)లో క్లాసికల్ రీన్ఫోర్స్‌మెంట్ లెర్నింగ్ గురించి మరింత తెలుసుకోండి.
సూపర్ మారియో గేమ్ ఆడటం కంప్యూటర్ ఎలా నేర్చుకుంటుందో వివరిస్తున్న [ఈ అద్భుతమైన వీడియో](https://www.youtube.com/watch?v=qv6UVOQ0F44)ను చూడండి.
## అసైన్‌మెంట్: [మౌంటైన్ కార్ శిక్షణ](lab/README.md)
ఈ అసైన్‌మెంట్‌లో మీ లక్ష్యం వేరే జిమ్ పరిసరాన్ని శిక్షణ ఇవ్వడం - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/).
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,37 +1,37 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7bd8dc72040e98e35e7225e34058cd4e",
"translation_date": "2025-11-25T23:39:14+00:00",
"source_file": "lessons/6-Other/22-DeepRL/lab/README.md",
"language_code": "te"
}
-->
# మౌంటైన్ కార్ నుండి తప్పించుకోవడానికి శిక్షణ
[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
OpenAI పరిసరంలో [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) ను నియంత్రించడానికి RL ఏజెంట్‌ను శిక్షణ ఇవ్వడం మీ లక్ష్యం.
<img alt="Mountain Car" src="../../../../../../translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.te.png" width="300"/>
## పరిసరము
మౌంటైన్ కార్ పరిసరంలో కారు ఒక లోయలో చిక్కుకున్నది. మీ లక్ష్యం లోయ నుండి దూకి బయటకు వెళ్లి జెండాను చేరుకోవడం. మీరు చేయగల చర్యలు ఎడమకు వేగవంతం చేయడం, కుడికి వేగవంతం చేయడం లేదా ఏమీ చేయకపోవడం. మీరు కార్ యొక్క x-అక్షం పై స్థానం మరియు వేగాన్ని గమనించవచ్చు.
## ప్రారంభ నోట్బుక్
ల్యాబ్ ప్రారంభించడానికి [MountainCar.ipynb](MountainCar.ipynb) ను తెరవండి
## నేర్చుకోవాల్సిన విషయం
ఈ ల్యాబ్ ద్వారా మీరు తెలుసుకోవాలి RL అల్గోరిథమ్స్‌ను కొత్త పరిసరానికి అనుసరించడం సాధారణంగా చాలా సులభమని, ఎందుకంటే OpenAI Gym అన్ని పరిసరాలకు ఒకే ఇంటర్‌ఫేస్ కలిగి ఉంటుంది, మరియు అల్గోరిథమ్స్ ఎక్కువగా పరిసర స్వభావంపై ఆధారపడవు. మీరు Python కోడ్‌ను కూడా ఇలా పునఃరూపకల్పన చేయవచ్చు, ఏ పరిసరాన్ని RL అల్గోరిథమ్‌కు పారామీటర్‌గా పంపగలుగుతారు.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7bd8dc72040e98e35e7225e34058cd4e",
"translation_date": "2025-11-25T23:39:14+00:00",
"source_file": "lessons/6-Other/22-DeepRL/lab/README.md",
"language_code": "te"
}
-->
# మౌంటైన్ కార్ నుండి తప్పించుకోవడానికి శిక్షణ
[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) నుండి ల్యాబ్ అసైన్‌మెంట్.
## పని
OpenAI పరిసరంలో [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) ను నియంత్రించడానికి RL ఏజెంట్‌ను శిక్షణ ఇవ్వడం మీ లక్ష్యం.
<img alt="Mountain Car" src="../../../../../../translated_images/mountaincar.f7b7a7f6d4f9933b.te.png" width="300"/>
## పరిసరము
మౌంటైన్ కార్ పరిసరంలో కారు ఒక లోయలో చిక్కుకున్నది. మీ లక్ష్యం లోయ నుండి దూకి బయటకు వెళ్లి జెండాను చేరుకోవడం. మీరు చేయగల చర్యలు ఎడమకు వేగవంతం చేయడం, కుడికి వేగవంతం చేయడం లేదా ఏమీ చేయకపోవడం. మీరు కార్ యొక్క x-అక్షం పై స్థానం మరియు వేగాన్ని గమనించవచ్చు.
## ప్రారంభ నోట్బుక్
ల్యాబ్ ప్రారంభించడానికి [MountainCar.ipynb](MountainCar.ipynb) ను తెరవండి
## నేర్చుకోవాల్సిన విషయం
ఈ ల్యాబ్ ద్వారా మీరు తెలుసుకోవాలి RL అల్గోరిథమ్స్‌ను కొత్త పరిసరానికి అనుసరించడం సాధారణంగా చాలా సులభమని, ఎందుకంటే OpenAI Gym అన్ని పరిసరాలకు ఒకే ఇంటర్‌ఫేస్ కలిగి ఉంటుంది, మరియు అల్గోరిథమ్స్ ఎక్కువగా పరిసర స్వభావంపై ఆధారపడవు. మీరు Python కోడ్‌ను కూడా ఇలా పునఃరూపకల్పన చేయవచ్చు, ఏ పరిసరాన్ని RL అల్గోరిథమ్‌కు పారామీటర్‌గా పంపగలుగుతారు.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,151 +1,151 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "38a1185ae3d54b180378bbd71ae3ef16",
"translation_date": "2025-11-25T23:35:33+00:00",
"source_file": "lessons/6-Other/23-MultiagentSystems/README.md",
"language_code": "te"
}
-->
# బహుళ-ఏజెంట్ వ్యవస్థలు
బుద్ధిమత్తను సాధించడానికి ఒక సాధ్యమైన మార్గం అనేది **ఎమర్జెంట్** (లేదా **సినర్జెటిక్**) దృష్టికోణం, ఇది అనేక సాపేక్షంగా సులభమైన ఏజెంట్ల సమ్మిళిత ప్రవర్తన మొత్తం వ్యవస్థ యొక్క మరింత సంక్లిష్టమైన (లేదా బుద్ధిమంతమైన) ప్రవర్తనకు దారితీస్తుందని ఆధారపడింది. స 이 సిద్ధాంతం [సమూహ బుద్ధిమత్త](https://en.wikipedia.org/wiki/Collective_intelligence), [ఎమర్జెంటిజం](https://en.wikipedia.org/wiki/Global_brain) మరియు [ఎవల్యూషనరీ సైబర్నెటిక్స్](https://en.wikipedia.org/wiki/Global_brain) సూత్రాలపై ఆధారపడి ఉంటుంది, ఇవి తక్కువ స్థాయి వ్యవస్థల నుండి సరైన రీతిలో కలిపినప్పుడు ఉన్నత స్థాయి వ్యవస్థలకు అదనపు విలువ లభిస్తుందని (ఇది *మెటాసిస్టమ్ ట్రాన్సిషన్ సూత్రం* అని పిలవబడుతుంది) చెబుతాయి.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/45)
**బహుళ-ఏజెంట్ వ్యవస్థలు** దిశ 1990లలో ఇంటర్నెట్ మరియు పంపిణీ వ్యవస్థల పెరుగుదలకు ప్రతిస్పందనగా AIలో ఏర్పడింది. క్లాసికల్ AI పాఠ్యపుస్తకాలలో ఒకటి అయిన [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) బహుళ-ఏజెంట్ వ్యవస్థల దృష్టికోణం నుండి క్లాసికల్ AIని పరిశీలిస్తుంది.
బహుళ-ఏజెంట్ దృష్టికోణానికి కేంద్రంగా ఉన్నది **ఏజెంట్** అనే భావన - ఇది ఒక **పరిసరంలో** జీవించే ఒక సত্ত, దాన్ని గ్రహించి, దానిపై చర్యలు తీసుకోవచ్చు. ఇది చాలా విస్తృత నిర్వచనం, మరియు ఏజెంట్లకు అనేక రకాల వర్గీకరణలు ఉండవచ్చు:
* వారి తర్క సామర్థ్యాల ప్రకారం:
- **ప్రతిస్పందక** ఏజెంట్లు సాధారణంగా సులభమైన అభ్యర్థన-ప్రతిస్పందన ప్రవర్తన కలిగి ఉంటాయి
- **తర్కసంబంధి** ఏజెంట్లు తర్కం మరియు/లేదా ప్రణాళిక సామర్థ్యాలను ఉపయోగిస్తారు
* ఏజెంట్ కోడ్ ఎక్కడ అమలు అవుతుందో ఆధారంగా:
- **స్థిర** ఏజెంట్లు ప్రత్యేక నెట్‌వర్క్ నోడ్‌లో పనిచేస్తాయి
- **మొబైల్** ఏజెంట్లు తమ కోడ్‌ను నెట్‌వర్క్ నోడ్‌ల మధ్య తరలించగలవు
* వారి ప్రవర్తన ఆధారంగా:
- **నిష్క్రియ ఏజెంట్లు** నిర్దిష్ట లక్ష్యాలు ఉండవు. ఇలాంటి ఏజెంట్లు బాహ్య ప్రేరణలకు ప్రతిస్పందించగలవు, కానీ స్వయంగా చర్యలు ప్రారంభించరు.
- **క్రియాశీల ఏజెంట్లు** తమ లక్ష్యాలను అనుసరిస్తారు
- **జ్ఞానాత్మక ఏజెంట్లు** సంక్లిష్ట ప్రణాళిక మరియు తర్కాన్ని కలిగి ఉంటాయి
ఇప్పటికీ బహుళ-ఏజెంట్ వ్యవస్థలు అనేక అనువర్తనాల్లో ఉపయోగించబడుతున్నాయి:
* గేమ్స్‌లో, అనేక నాన్-ప్లేయర్ క్యారెక్టర్లు ఏఐని ఉపయోగించి తెలివైన ఏజెంట్లుగా పరిగణించబడతాయి
* వీడియో ఉత్పత్తిలో, గుంపులున్న సంక్లిష్ట 3D సన్నివేశాలను సాధారణంగా బహుళ-ఏజెంట్ సిమ్యులేషన్ ద్వారా రూపొందిస్తారు
* వ్యవస్థల మోడలింగ్‌లో, బహుళ-ఏజెంట్ దృష్టికోణం సంక్లిష్ట మోడల్ ప్రవర్తనను అనుకరించడానికి ఉపయోగిస్తారు. ఉదాహరణకు, COVID-19 వ్యాప్తిని ప్రపంచవ్యాప్తంగా అంచనా వేయడానికి బహుళ-ఏజెంట్ దృష్టికోణం విజయవంతంగా ఉపయోగించబడింది. ఇలాంటి దృష్టికోణం నగర ట్రాఫిక్‌ను మోడల్ చేయడానికి మరియు ట్రాఫిక్ నియమాలలో మార్పులకు ఎలా స్పందిస్తుందో చూడటానికి ఉపయోగించవచ్చు.
* సంక్లిష్ట ఆటోమేషన్ వ్యవస్థల్లో, ప్రతి పరికరం స్వతంత్ర ఏజెంట్‌గా పనిచేయవచ్చు, ఇది మొత్తం వ్యవస్థను తక్కువ మోనోలిథిక్ మరియు మరింత బలమైనదిగా చేస్తుంది.
మనం బహుళ-ఏజెంట్ వ్యవస్థలలో లోతుగా వెళ్ళకపోయినా, ఒక **బహుళ-ఏజెంట్ మోడలింగ్** ఉదాహరణను పరిశీలిద్దాం.
## నెట్‌లాగో
[NetLogo](https://ccl.northwestern.edu/netlogo/) అనేది [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) ప్రోగ్రామింగ్ భాష యొక్క సవరించిన వెర్షన్ ఆధారంగా ఉన్న బహుళ-ఏజెంట్ మోడలింగ్ వాతావరణం. ఈ భాష పిల్లలకు ప్రోగ్రామింగ్ కాన్సెప్ట్‌లు నేర్పడానికి అభివృద్ధి చేయబడింది, మరియు మీరు **టర్టిల్** అనే ఏజెంట్‌ను నియంత్రించవచ్చు, ఇది కదిలి, వెనుకకు ట్రేస్ వదిలిస్తుంది. ఇది సంక్లిష్ట జ్యామితీయ ఆకారాలను సృష్టించడానికి అనుమతిస్తుంది, ఇది ఏజెంట్ ప్రవర్తనను అర్థం చేసుకోవడానికి చాలా దృశ్యమాన మార్గం.
నెట్‌లాగోలో, `create-turtles` కమాండ్ ఉపయోగించి అనేక టర్టిల్స్ సృష్టించవచ్చు. తరువాత మీరు అన్ని టర్టిల్స్‌ను కొన్ని చర్యలు చేయమని ఆదేశించవచ్చు (క్రింది ఉదాహరణలో - 10 పాయింట్లు ముందుకు):
```
create-turtles 10
ask turtles [
forward 10
]
```
అవును, అన్ని టర్టిల్స్ ఒకే పని చేయడం ఆసక్తికరం కాదు, కాబట్టి మీరు `ask` ద్వారా టర్టిల్స్ సమూహాలను అడగవచ్చు, ఉదాహరణకు ఒక నిర్దిష్ట బిందువు సమీపంలో ఉన్నవారు. మీరు `breed [cats cat]` కమాండ్ ఉపయోగించి వేర్వేరు *జాతులు* టర్టిల్స్ సృష్టించవచ్చు. ఇక్కడ `cat` అనేది జాతి పేరు, మరియు స్పష్టత కోసం ఏకవచనం మరియు బహువచనం రెండూ ఇవ్వాలి, ఎందుకంటే వేర్వేరు కమాండ్లు వేర్వేరు రూపాలను ఉపయోగిస్తాయి.
> ✅ నెట్‌లాగో భాష నేర్చుకోవడంలో మేము లోతుగా వెళ్ళము - మీరు ఆసక్తి ఉంటే అద్భుతమైన [ప్రారంభకుల ఇంటరాక్టివ్ నెట్‌లాగో డిక్షనరీ](https://ccl.northwestern.edu/netlogo/bind/) వనరును సందర్శించవచ్చు.
మీరు [డౌన్లోడ్](https://ccl.northwestern.edu/netlogo/download.shtml) చేసి నెట్‌లాగోను ఇన్‌స్టాల్ చేసి ప్రయత్నించవచ్చు.
### మోడల్స్ లైబ్రరీ
నెట్‌లాగోలో ఉన్న గొప్ప విషయం ఏమిటంటే, మీరు ప్రయత్నించగల పని చేసే మోడల్స్ లైబ్రరీ ఉంది. **File → Models Library**కి వెళ్లండి, మీరు ఎన్నుకోవడానికి అనేక మోడల్స్ వర్గాలు ఉంటాయి.
<img alt="NetLogo Models Library" src="../../../../../translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.te.png" width="60%"/>
> మోడల్స్ లైబ్రరీ స్క్రీన్‌షాట్ - Dmitry Soshnikov
మీరు ఒక మోడల్ తెరవవచ్చు, ఉదాహరణకు **Biology → Flocking**.
### ప్రధాన సూత్రాలు
మోడల్ తెరిచిన తర్వాత, మీరు ప్రధాన నెట్‌లాగో స్క్రీన్‌కు తీసుకువెళ్ళబడతారు. ఇక్కడ ఒక నమూనా మోడల్ ఉంది, ఇది పరిమిత వనరులు (గడ్డి) ఉన్నప్పుడు నక్కలు మరియు గొర్రెల జనాభాను వివరించేది.
![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.te.png)
> స్క్రీన్‌షాట్ - Dmitry Soshnikov
ఈ స్క్రీన్‌లో మీరు చూడగలరు:
* **ఇంటర్‌ఫేస్** విభాగం, ఇది:
- అన్ని ఏజెంట్లు నివసించే ప్రధాన ఫీల్డ్
- వివిధ నియంత్రణలు: బటన్లు, స్లైడర్లు, మొదలైనవి
- సిమ్యులేషన్ పరామితులను ప్రదర్శించడానికి గ్రాఫ్లు
* **కోడ్** ట్యాబ్, ఇది ఎడిటర్‌ను కలిగి ఉంటుంది, మీరు ఇక్కడ నెట్‌లాగో ప్రోగ్రామ్ టైప్ చేయవచ్చు
అధికంగా, ఇంటర్‌ఫేస్‌లో **Setup** బటన్ ఉంటుంది, ఇది సిమ్యులేషన్ స్థితిని ప్రారంభిస్తుంది, మరియు **Go** బటన్ ఉంటుంది, ఇది అమలును ప్రారంభిస్తుంది. ఇవి కోడ్‌లోని సంబంధిత హ్యాండ్లర్ల ద్వారా నిర్వహించబడతాయి, ఇవి ఇలా ఉంటాయి:
```
to go [
...
]
```
నెట్‌లాగో ప్రపంచం క్రింది వస్తువుల నుండి ఉంటుంది:
* **ఏజెంట్లు** (టర్టిల్స్) ఫీల్డ్‌లో కదిలి ఏదైనా చేయగలవు. మీరు `ask turtles [...]` సింటాక్స్ ఉపయోగించి ఏజెంట్లను ఆదేశిస్తారు, మరియు బ్రాకెట్లలో ఉన్న కోడ్ అన్ని ఏజెంట్ల ద్వారా *టర్టిల్ మోడ్*లో అమలు అవుతుంది.
* **ప్యాచెస్** ఫీల్డ్‌లోని చతురస్ర ప్రాంతాలు, ఏజెంట్లు ఇక్కడ నివసిస్తారు. మీరు అదే ప్యాచ్‌లో ఉన్న ఏజెంట్లను సూచించవచ్చు, లేదా ప్యాచ్ రంగులు మరియు ఇతర లక్షణాలను మార్చవచ్చు. మీరు `ask patches` కూడా చేయవచ్చు.
* **ఆబ్జర్వర్** ఒక ప్రత్యేక ఏజెంట్, ఇది ప్రపంచాన్ని నియంత్రిస్తుంది. అన్ని బటన్ హ్యాండ్లర్లు *ఆబ్జర్వర్ మోడ్*లో అమలు అవుతాయి.
> ✅ బహుళ-ఏజెంట్ వాతావరణం అందమైన విషయం ఏమిటంటే, టర్టిల్ మోడ్ లేదా ప్యాచ్ మోడ్‌లో నడిచే కోడ్ అన్ని ఏజెంట్ల ద్వారా సమాంతరంగా అమలు అవుతుంది. కాబట్టి, కొద్దిగా కోడ్ రాయడం ద్వారా మరియు వ్యక్తిగత ఏజెంట్ ప్రవర్తనను ప్రోగ్రామ్ చేయడం ద్వారా, మీరు మొత్తం సిమ్యులేషన్ వ్యవస్థ యొక్క సంక్లిష్ట ప్రవర్తనను సృష్టించవచ్చు.
### ఫ్లాకింగ్
బహుళ-ఏజెంట్ ప్రవర్తన ఉదాహరణగా, **[ఫ్లాకింగ్](https://en.wikipedia.org/wiki/Flocking_(behavior))**ను పరిశీలిద్దాం. ఫ్లాకింగ్ అనేది పక్షుల గుంపులు ఎలాగు ఎగరుతాయో దానికి చాలా సమానమైన సంక్లిష్ట నమూనా. వాటిని ఎగరుతూ చూస్తే, అవి ఏదో సమూహ అల్గోరిథం అనుసరిస్తున్నట్లు లేదా అవి ఒక రకమైన *సమూహ బుద్ధిమత్త* కలిగి ఉన్నట్లు అనిపిస్తుంది. అయితే, ఈ సంక్లిష్ట ప్రవర్తన ప్రతి వ్యక్తిగత ఏజెంట్ (ఈ సందర్భంలో, *పక్షి*) తాను దగ్గరలో ఉన్న కొన్ని ఏజెంట్లను మాత్రమే గమనించి, మూడు సులభమైన నియమాలను అనుసరించినప్పుడు ఏర్పడుతుంది:
* **అలైన్‌మెంట్** - ఇది సమీప ఏజెంట్ల సగటు దిశ వైపు తిప్పుకుంటుంది
* **కోహెషన్** - ఇది సమీపవాసుల సగటు స్థాన వైపు తిప్పుకోవడానికి ప్రయత్నిస్తుంది (*దూర ఆకర్షణ*)
* **సెపరేషన్** - ఇతర పక్షులకి చాలా దగ్గరగా వచ్చినప్పుడు, దూరంగా కదలడానికి ప్రయత్నిస్తుంది (*సన్నని విరోధం*)
మీరు ఫ్లాకింగ్ ఉదాహరణను నడిపించి ప్రవర్తనను గమనించవచ్చు. మీరు *వేరుపాటు స్థాయి* లేదా *దృష్టి పరిధి* వంటి పరామితులను సర్దుబాటు చేయవచ్చు, ఇది ప్రతి పక్షి ఎంత దూరం చూడగలదో నిర్వచిస్తుంది. దృష్టి పరిధిని 0కి తగ్గిస్తే, అన్ని పక్షులు అంధులవుతాయి, ఫ్లాకింగ్ ఆగిపోతుంది. వేరుపాటును 0కి తగ్గిస్తే, అన్ని పక్షులు ఒక సరళ రేఖలో చేరిపోతాయి.
> ✅ **కోడ్** ట్యాబ్‌కు మారి ఫ్లాకింగ్ యొక్క మూడు నియమాలు (అలైన్‌మెంట్, కోహెషన్, సెపరేషన్) ఎక్కడ అమలు అవుతున్నాయో చూడండి. మనం దృష్టిలో ఉన్న ఏజెంట్లను మాత్రమే ఎలా సూచిస్తున్నామో గమనించండి.
### చూడవలసిన ఇతర మోడల్స్
మరిన్ని ఆసక్తికరమైన మోడల్స్ ఉన్నాయి, వాటితో మీరు ప్రయోగాలు చేయవచ్చు:
* **Art → Fireworks** ఒక ఫైర్వర్క్ వ్యక్తిగత అగ్నిప్రమాణాల సమూహ ప్రవర్తనగా ఎలా పరిగణించబడుతుందో చూపిస్తుంది
* **Social Science → Traffic Basic** మరియు **Social Science → Traffic Grid** నగర ట్రాఫిక్ మోడల్‌ను 1D మరియు 2D గ్రిడ్‌లో ట్రాఫిక్ లైట్లతో లేదా లేకుండా చూపిస్తాయి. సిమ్యులేషన్‌లో ప్రతి కారు ఈ నియమాలను అనుసరిస్తుంది:
- ముందున్న స్థలం ఖాళీగా ఉంటే - వేగం పెంచు (గరిష్ట వేగం వరకు)
- ముందున్న అడ్డంకిని చూసినప్పుడు - బ్రేక్ వేయి (డ్రైవర్ ఎంత దూరం చూడగలడో సర్దుబాటు చేయవచ్చు)
* **Social Science → Party** ఒక కాక్‌టెయిల్ పార్టీ సమయంలో ప్రజలు ఎలా గుంపులుగా చేరుకుంటారో చూపిస్తుంది. మీరు గుంపు సంతోషం వేగంగా పెరిగే పరామితుల కలయికను కనుగొనవచ్చు.
ఈ ఉదాహరణల నుండి మీరు చూడగలిగినట్లు, బహుళ-ఏజెంట్ సిమ్యులేషన్లు ఒకే లేదా సమాన తర్కాన్ని అనుసరించే వ్యక్తుల సమూహం ఉన్న సంక్లిష్ట వ్యవస్థ ప్రవర్తనను అర్థం చేసుకోవడానికి చాలా ఉపయోగకరమైన మార్గం. ఇది కంప్యూటర్ గేమ్స్‌లో [NPCs](https://en.wikipedia.org/wiki/NPC) లేదా 3D యానిమేటెడ్ ప్రపంచాల్లో ఏజెంట్లను నియంత్రించడానికి కూడా ఉపయోగించవచ్చు.
## తర్కసంబంధి ఏజెంట్లు
పైన వివరించిన ఏజెంట్లు చాలా సులభమైనవి, పరిసరాల్లో మార్పులకు ప్రతిస్పందించే అల్గోరిథం ఉపయోగిస్తాయి. వీటిని **ప్రతిస్పందక ఏజెంట్లు** అంటారు. అయితే, కొన్ని సార్లు ఏజెంట్లు తర్కం చేసి తమ చర్యలను ప్రణాళిక చేయగలవు, అప్పుడు వీటిని **తర్కసంబంధి** అంటారు.
సాధారణ ఉదాహరణగా, ఒక వ్యక్తిగత ఏజెంట్ ఒక మనిషి నుండి సెలవు పర్యటన బుక్ చేయమని సూచన పొందుతుంది. ఇంటర్నెట్‌లో నివసించే అనేక ఏజెంట్లు సహాయం చేయగలవు. అది ఇతర ఏజెంట్లను సంప్రదించి ఎలాంటి విమానాలు అందుబాటులో ఉన్నాయో, వివిధ తేదీలకు హోటల్ ధరలు ఏమిటో తెలుసుకుని ఉత్తమ ధర కోసం చర్చించాలి. సెలవు ప్రణాళిక పూర్తయి యజమాని ధృవీకరించిన తర్వాత బుకింగ్ చేయవచ్చు.
అందుకోసం, ఏజెంట్లు **సంవాదం** చేయాలి. విజయవంతమైన సంభాషణకు అవసరమైనవి:
* **జ్ఞాన మార్పిడి కోసం కొన్ని ప్రామాణిక భాషలు**, ఉదాహరణకు [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) మరియు [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). ఈ భాషలు [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) ఆధారంగా రూపొందించబడ్డాయి.
* వివిధ **లైలాలు** ఆధారంగా **చర్చల ప్రోటోకాల్‌లు** కూడా ఉండాలి.
* ఒకే భావాలను సూచించడానికి **సాధారణ ఆంటాలజీ** ఉండాలి, దాని అర్థం తెలుసుకుని
* వివిధ ఏజెంట్లు ఏమి చేయగలరో కనుగొనడానికి ఒక విధానం ఉండాలి, ఇది కూడా ఆంటాలజీ ఆధారంగా ఉంటుంది
తర్కసంబంధి ఏజెంట్లు ప్రతిస్పందక ఏజెంట్ల కంటే చాలా సంక్లిష్టమైనవి, ఎందుకంటే అవి పరిసరాల్లో మార్పులకు మాత్రమే ప్రతిస్పందించకుండా, *చర్యలు ప్రారంభించగలగాలి*. తర్కసంబంధి ఏజెంట్లకు ప్రతిపాదించిన ఆర్కిటెక్చర్‌లలో ఒకటి బిలీఫ్-డిజైర్-ఇంటెన్షన్ (BDI) ఏజెంట్:
* **బిలీఫ్స్** ఏజెంట్ పరిసరాల గురించి జ్ఞాన సెట్. ఇది ఒక జ్ఞాన ఆధారం లేదా నియమాల సెట్‌గా ఉండవచ్చు, ఏజెంట్ దాన్ని పరిసర పరిస్థితికి అనుగుణంగా వర్తింపజేస్తుంది.
* **డిజైర్స్** ఏజెంట్ చేయదలచుకున్నవి, అంటే లక్ష్యాలు. ఉదాహరణకు, పై వ్యక్తిగత సహాయక ఏజెంట్ లక్ష్యం పర్యటన బుక్ చేయడం, హోటల్ ఏజెంట్ లక్ష్యం లాభం గరిష్టం చేయడం.
* **ఇంటెన్షన్స్** ఏజెంట్ తన లక్ష్యాలను సాధించడానికి ప్రణాళ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "38a1185ae3d54b180378bbd71ae3ef16",
"translation_date": "2025-11-25T23:35:33+00:00",
"source_file": "lessons/6-Other/23-MultiagentSystems/README.md",
"language_code": "te"
}
-->
# బహుళ-ఏజెంట్ వ్యవస్థలు
బుద్ధిమత్తను సాధించడానికి ఒక సాధ్యమైన మార్గం అనేది **ఎమర్జెంట్** (లేదా **సినర్జెటిక్**) దృష్టికోణం, ఇది అనేక సాపేక్షంగా సులభమైన ఏజెంట్ల సమ్మిళిత ప్రవర్తన మొత్తం వ్యవస్థ యొక్క మరింత సంక్లిష్టమైన (లేదా బుద్ధిమంతమైన) ప్రవర్తనకు దారితీస్తుందని ఆధారపడింది. స 이 సిద్ధాంతం [సమూహ బుద్ధిమత్త](https://en.wikipedia.org/wiki/Collective_intelligence), [ఎమర్జెంటిజం](https://en.wikipedia.org/wiki/Global_brain) మరియు [ఎవల్యూషనరీ సైబర్నెటిక్స్](https://en.wikipedia.org/wiki/Global_brain) సూత్రాలపై ఆధారపడి ఉంటుంది, ఇవి తక్కువ స్థాయి వ్యవస్థల నుండి సరైన రీతిలో కలిపినప్పుడు ఉన్నత స్థాయి వ్యవస్థలకు అదనపు విలువ లభిస్తుందని (ఇది *మెటాసిస్టమ్ ట్రాన్సిషన్ సూత్రం* అని పిలవబడుతుంది) చెబుతాయి.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ai/quiz/45)
**బహుళ-ఏజెంట్ వ్యవస్థలు** దిశ 1990లలో ఇంటర్నెట్ మరియు పంపిణీ వ్యవస్థల పెరుగుదలకు ప్రతిస్పందనగా AIలో ఏర్పడింది. క్లాసికల్ AI పాఠ్యపుస్తకాలలో ఒకటి అయిన [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) బహుళ-ఏజెంట్ వ్యవస్థల దృష్టికోణం నుండి క్లాసికల్ AIని పరిశీలిస్తుంది.
బహుళ-ఏజెంట్ దృష్టికోణానికి కేంద్రంగా ఉన్నది **ఏజెంట్** అనే భావన - ఇది ఒక **పరిసరంలో** జీవించే ఒక సত্ত, దాన్ని గ్రహించి, దానిపై చర్యలు తీసుకోవచ్చు. ఇది చాలా విస్తృత నిర్వచనం, మరియు ఏజెంట్లకు అనేక రకాల వర్గీకరణలు ఉండవచ్చు:
* వారి తర్క సామర్థ్యాల ప్రకారం:
- **ప్రతిస్పందక** ఏజెంట్లు సాధారణంగా సులభమైన అభ్యర్థన-ప్రతిస్పందన ప్రవర్తన కలిగి ఉంటాయి
- **తర్కసంబంధి** ఏజెంట్లు తర్కం మరియు/లేదా ప్రణాళిక సామర్థ్యాలను ఉపయోగిస్తారు
* ఏజెంట్ కోడ్ ఎక్కడ అమలు అవుతుందో ఆధారంగా:
- **స్థిర** ఏజెంట్లు ప్రత్యేక నెట్‌వర్క్ నోడ్‌లో పనిచేస్తాయి
- **మొబైల్** ఏజెంట్లు తమ కోడ్‌ను నెట్‌వర్క్ నోడ్‌ల మధ్య తరలించగలవు
* వారి ప్రవర్తన ఆధారంగా:
- **నిష్క్రియ ఏజెంట్లు** నిర్దిష్ట లక్ష్యాలు ఉండవు. ఇలాంటి ఏజెంట్లు బాహ్య ప్రేరణలకు ప్రతిస్పందించగలవు, కానీ స్వయంగా చర్యలు ప్రారంభించరు.
- **క్రియాశీల ఏజెంట్లు** తమ లక్ష్యాలను అనుసరిస్తారు
- **జ్ఞానాత్మక ఏజెంట్లు** సంక్లిష్ట ప్రణాళిక మరియు తర్కాన్ని కలిగి ఉంటాయి
ఇప్పటికీ బహుళ-ఏజెంట్ వ్యవస్థలు అనేక అనువర్తనాల్లో ఉపయోగించబడుతున్నాయి:
* గేమ్స్‌లో, అనేక నాన్-ప్లేయర్ క్యారెక్టర్లు ఏఐని ఉపయోగించి తెలివైన ఏజెంట్లుగా పరిగణించబడతాయి
* వీడియో ఉత్పత్తిలో, గుంపులున్న సంక్లిష్ట 3D సన్నివేశాలను సాధారణంగా బహుళ-ఏజెంట్ సిమ్యులేషన్ ద్వారా రూపొందిస్తారు
* వ్యవస్థల మోడలింగ్‌లో, బహుళ-ఏజెంట్ దృష్టికోణం సంక్లిష్ట మోడల్ ప్రవర్తనను అనుకరించడానికి ఉపయోగిస్తారు. ఉదాహరణకు, COVID-19 వ్యాప్తిని ప్రపంచవ్యాప్తంగా అంచనా వేయడానికి బహుళ-ఏజెంట్ దృష్టికోణం విజయవంతంగా ఉపయోగించబడింది. ఇలాంటి దృష్టికోణం నగర ట్రాఫిక్‌ను మోడల్ చేయడానికి మరియు ట్రాఫిక్ నియమాలలో మార్పులకు ఎలా స్పందిస్తుందో చూడటానికి ఉపయోగించవచ్చు.
* సంక్లిష్ట ఆటోమేషన్ వ్యవస్థల్లో, ప్రతి పరికరం స్వతంత్ర ఏజెంట్‌గా పనిచేయవచ్చు, ఇది మొత్తం వ్యవస్థను తక్కువ మోనోలిథిక్ మరియు మరింత బలమైనదిగా చేస్తుంది.
మనం బహుళ-ఏజెంట్ వ్యవస్థలలో లోతుగా వెళ్ళకపోయినా, ఒక **బహుళ-ఏజెంట్ మోడలింగ్** ఉదాహరణను పరిశీలిద్దాం.
## నెట్‌లాగో
[NetLogo](https://ccl.northwestern.edu/netlogo/) అనేది [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) ప్రోగ్రామింగ్ భాష యొక్క సవరించిన వెర్షన్ ఆధారంగా ఉన్న బహుళ-ఏజెంట్ మోడలింగ్ వాతావరణం. ఈ భాష పిల్లలకు ప్రోగ్రామింగ్ కాన్సెప్ట్‌లు నేర్పడానికి అభివృద్ధి చేయబడింది, మరియు మీరు **టర్టిల్** అనే ఏజెంట్‌ను నియంత్రించవచ్చు, ఇది కదిలి, వెనుకకు ట్రేస్ వదిలిస్తుంది. ఇది సంక్లిష్ట జ్యామితీయ ఆకారాలను సృష్టించడానికి అనుమతిస్తుంది, ఇది ఏజెంట్ ప్రవర్తనను అర్థం చేసుకోవడానికి చాలా దృశ్యమాన మార్గం.
నెట్‌లాగోలో, `create-turtles` కమాండ్ ఉపయోగించి అనేక టర్టిల్స్ సృష్టించవచ్చు. తరువాత మీరు అన్ని టర్టిల్స్‌ను కొన్ని చర్యలు చేయమని ఆదేశించవచ్చు (క్రింది ఉదాహరణలో - 10 పాయింట్లు ముందుకు):
```
create-turtles 10
ask turtles [
forward 10
]
```
అవును, అన్ని టర్టిల్స్ ఒకే పని చేయడం ఆసక్తికరం కాదు, కాబట్టి మీరు `ask` ద్వారా టర్టిల్స్ సమూహాలను అడగవచ్చు, ఉదాహరణకు ఒక నిర్దిష్ట బిందువు సమీపంలో ఉన్నవారు. మీరు `breed [cats cat]` కమాండ్ ఉపయోగించి వేర్వేరు *జాతులు* టర్టిల్స్ సృష్టించవచ్చు. ఇక్కడ `cat` అనేది జాతి పేరు, మరియు స్పష్టత కోసం ఏకవచనం మరియు బహువచనం రెండూ ఇవ్వాలి, ఎందుకంటే వేర్వేరు కమాండ్లు వేర్వేరు రూపాలను ఉపయోగిస్తాయి.
> ✅ నెట్‌లాగో భాష నేర్చుకోవడంలో మేము లోతుగా వెళ్ళము - మీరు ఆసక్తి ఉంటే అద్భుతమైన [ప్రారంభకుల ఇంటరాక్టివ్ నెట్‌లాగో డిక్షనరీ](https://ccl.northwestern.edu/netlogo/bind/) వనరును సందర్శించవచ్చు.
మీరు [డౌన్లోడ్](https://ccl.northwestern.edu/netlogo/download.shtml) చేసి నెట్‌లాగోను ఇన్‌స్టాల్ చేసి ప్రయత్నించవచ్చు.
### మోడల్స్ లైబ్రరీ
నెట్‌లాగోలో ఉన్న గొప్ప విషయం ఏమిటంటే, మీరు ప్రయత్నించగల పని చేసే మోడల్స్ లైబ్రరీ ఉంది. **File → Models Library**కి వెళ్లండి, మీరు ఎన్నుకోవడానికి అనేక మోడల్స్ వర్గాలు ఉంటాయి.
<img alt="NetLogo Models Library" src="../../../../../translated_images/NetLogo-ModelLib.efe023afb4763c05.te.png" width="60%"/>
> మోడల్స్ లైబ్రరీ స్క్రీన్‌షాట్ - Dmitry Soshnikov
మీరు ఒక మోడల్ తెరవవచ్చు, ఉదాహరణకు **Biology → Flocking**.
### ప్రధాన సూత్రాలు
మోడల్ తెరిచిన తర్వాత, మీరు ప్రధాన నెట్‌లాగో స్క్రీన్‌కు తీసుకువెళ్ళబడతారు. ఇక్కడ ఒక నమూనా మోడల్ ఉంది, ఇది పరిమిత వనరులు (గడ్డి) ఉన్నప్పుడు నక్కలు మరియు గొర్రెల జనాభాను వివరించేది.
![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3.te.png)
> స్క్రీన్‌షాట్ - Dmitry Soshnikov
ఈ స్క్రీన్‌లో మీరు చూడగలరు:
* **ఇంటర్‌ఫేస్** విభాగం, ఇది:
- అన్ని ఏజెంట్లు నివసించే ప్రధాన ఫీల్డ్
- వివిధ నియంత్రణలు: బటన్లు, స్లైడర్లు, మొదలైనవి
- సిమ్యులేషన్ పరామితులను ప్రదర్శించడానికి గ్రాఫ్లు
* **కోడ్** ట్యాబ్, ఇది ఎడిటర్‌ను కలిగి ఉంటుంది, మీరు ఇక్కడ నెట్‌లాగో ప్రోగ్రామ్ టైప్ చేయవచ్చు
అధికంగా, ఇంటర్‌ఫేస్‌లో **Setup** బటన్ ఉంటుంది, ఇది సిమ్యులేషన్ స్థితిని ప్రారంభిస్తుంది, మరియు **Go** బటన్ ఉంటుంది, ఇది అమలును ప్రారంభిస్తుంది. ఇవి కోడ్‌లోని సంబంధిత హ్యాండ్లర్ల ద్వారా నిర్వహించబడతాయి, ఇవి ఇలా ఉంటాయి:
```
to go [
...
]
```
నెట్‌లాగో ప్రపంచం క్రింది వస్తువుల నుండి ఉంటుంది:
* **ఏజెంట్లు** (టర్టిల్స్) ఫీల్డ్‌లో కదిలి ఏదైనా చేయగలవు. మీరు `ask turtles [...]` సింటాక్స్ ఉపయోగించి ఏజెంట్లను ఆదేశిస్తారు, మరియు బ్రాకెట్లలో ఉన్న కోడ్ అన్ని ఏజెంట్ల ద్వారా *టర్టిల్ మోడ్*లో అమలు అవుతుంది.
* **ప్యాచెస్** ఫీల్డ్‌లోని చతురస్ర ప్రాంతాలు, ఏజెంట్లు ఇక్కడ నివసిస్తారు. మీరు అదే ప్యాచ్‌లో ఉన్న ఏజెంట్లను సూచించవచ్చు, లేదా ప్యాచ్ రంగులు మరియు ఇతర లక్షణాలను మార్చవచ్చు. మీరు `ask patches` కూడా చేయవచ్చు.
* **ఆబ్జర్వర్** ఒక ప్రత్యేక ఏజెంట్, ఇది ప్రపంచాన్ని నియంత్రిస్తుంది. అన్ని బటన్ హ్యాండ్లర్లు *ఆబ్జర్వర్ మోడ్*లో అమలు అవుతాయి.
> ✅ బహుళ-ఏజెంట్ వాతావరణం అందమైన విషయం ఏమిటంటే, టర్టిల్ మోడ్ లేదా ప్యాచ్ మోడ్‌లో నడిచే కోడ్ అన్ని ఏజెంట్ల ద్వారా సమాంతరంగా అమలు అవుతుంది. కాబట్టి, కొద్దిగా కోడ్ రాయడం ద్వారా మరియు వ్యక్తిగత ఏజెంట్ ప్రవర్తనను ప్రోగ్రామ్ చేయడం ద్వారా, మీరు మొత్తం సిమ్యులేషన్ వ్యవస్థ యొక్క సంక్లిష్ట ప్రవర్తనను సృష్టించవచ్చు.
### ఫ్లాకింగ్
బహుళ-ఏజెంట్ ప్రవర్తన ఉదాహరణగా, **[ఫ్లాకింగ్](https://en.wikipedia.org/wiki/Flocking_(behavior))**ను పరిశీలిద్దాం. ఫ్లాకింగ్ అనేది పక్షుల గుంపులు ఎలాగు ఎగరుతాయో దానికి చాలా సమానమైన సంక్లిష్ట నమూనా. వాటిని ఎగరుతూ చూస్తే, అవి ఏదో సమూహ అల్గోరిథం అనుసరిస్తున్నట్లు లేదా అవి ఒక రకమైన *సమూహ బుద్ధిమత్త* కలిగి ఉన్నట్లు అనిపిస్తుంది. అయితే, ఈ సంక్లిష్ట ప్రవర్తన ప్రతి వ్యక్తిగత ఏజెంట్ (ఈ సందర్భంలో, *పక్షి*) తాను దగ్గరలో ఉన్న కొన్ని ఏజెంట్లను మాత్రమే గమనించి, మూడు సులభమైన నియమాలను అనుసరించినప్పుడు ఏర్పడుతుంది:
* **అలైన్‌మెంట్** - ఇది సమీప ఏజెంట్ల సగటు దిశ వైపు తిప్పుకుంటుంది
* **కోహెషన్** - ఇది సమీపవాసుల సగటు స్థాన వైపు తిప్పుకోవడానికి ప్రయత్నిస్తుంది (*దూర ఆకర్షణ*)
* **సెపరేషన్** - ఇతర పక్షులకి చాలా దగ్గరగా వచ్చినప్పుడు, దూరంగా కదలడానికి ప్రయత్నిస్తుంది (*సన్నని విరోధం*)
మీరు ఫ్లాకింగ్ ఉదాహరణను నడిపించి ప్రవర్తనను గమనించవచ్చు. మీరు *వేరుపాటు స్థాయి* లేదా *దృష్టి పరిధి* వంటి పరామితులను సర్దుబాటు చేయవచ్చు, ఇది ప్రతి పక్షి ఎంత దూరం చూడగలదో నిర్వచిస్తుంది. దృష్టి పరిధిని 0కి తగ్గిస్తే, అన్ని పక్షులు అంధులవుతాయి, ఫ్లాకింగ్ ఆగిపోతుంది. వేరుపాటును 0కి తగ్గిస్తే, అన్ని పక్షులు ఒక సరళ రేఖలో చేరిపోతాయి.
> ✅ **కోడ్** ట్యాబ్‌కు మారి ఫ్లాకింగ్ యొక్క మూడు నియమాలు (అలైన్‌మెంట్, కోహెషన్, సెపరేషన్) ఎక్కడ అమలు అవుతున్నాయో చూడండి. మనం దృష్టిలో ఉన్న ఏజెంట్లను మాత్రమే ఎలా సూచిస్తున్నామో గమనించండి.
### చూడవలసిన ఇతర మోడల్స్
మరిన్ని ఆసక్తికరమైన మోడల్స్ ఉన్నాయి, వాటితో మీరు ప్రయోగాలు చేయవచ్చు:
* **Art → Fireworks** ఒక ఫైర్వర్క్ వ్యక్తిగత అగ్నిప్రమాణాల సమూహ ప్రవర్తనగా ఎలా పరిగణించబడుతుందో చూపిస్తుంది
* **Social Science → Traffic Basic** మరియు **Social Science → Traffic Grid** నగర ట్రాఫిక్ మోడల్‌ను 1D మరియు 2D గ్రిడ్‌లో ట్రాఫిక్ లైట్లతో లేదా లేకుండా చూపిస్తాయి. సిమ్యులేషన్‌లో ప్రతి కారు ఈ నియమాలను అనుసరిస్తుంది:
- ముందున్న స్థలం ఖాళీగా ఉంటే - వేగం పెంచు (గరిష్ట వేగం వరకు)
- ముందున్న అడ్డంకిని చూసినప్పుడు - బ్రేక్ వేయి (డ్రైవర్ ఎంత దూరం చూడగలడో సర్దుబాటు చేయవచ్చు)
* **Social Science → Party** ఒక కాక్‌టెయిల్ పార్టీ సమయంలో ప్రజలు ఎలా గుంపులుగా చేరుకుంటారో చూపిస్తుంది. మీరు గుంపు సంతోషం వేగంగా పెరిగే పరామితుల కలయికను కనుగొనవచ్చు.
ఈ ఉదాహరణల నుండి మీరు చూడగలిగినట్లు, బహుళ-ఏజెంట్ సిమ్యులేషన్లు ఒకే లేదా సమాన తర్కాన్ని అనుసరించే వ్యక్తుల సమూహం ఉన్న సంక్లిష్ట వ్యవస్థ ప్రవర్తనను అర్థం చేసుకోవడానికి చాలా ఉపయోగకరమైన మార్గం. ఇది కంప్యూటర్ గేమ్స్‌లో [NPCs](https://en.wikipedia.org/wiki/NPC) లేదా 3D యానిమేటెడ్ ప్రపంచాల్లో ఏజెంట్లను నియంత్రించడానికి కూడా ఉపయోగించవచ్చు.
## తర్కసంబంధి ఏజెంట్లు
పైన వివరించిన ఏజెంట్లు చాలా సులభమైనవి, పరిసరాల్లో మార్పులకు ప్రతిస్పందించే అల్గోరిథం ఉపయోగిస్తాయి. వీటిని **ప్రతిస్పందక ఏజెంట్లు** అంటారు. అయితే, కొన్ని సార్లు ఏజెంట్లు తర్కం చేసి తమ చర్యలను ప్రణాళిక చేయగలవు, అప్పుడు వీటిని **తర్కసంబంధి** అంటారు.
సాధారణ ఉదాహరణగా, ఒక వ్యక్తిగత ఏజెంట్ ఒక మనిషి నుండి సెలవు పర్యటన బుక్ చేయమని సూచన పొందుతుంది. ఇంటర్నెట్‌లో నివసించే అనేక ఏజెంట్లు సహాయం చేయగలవు. అది ఇతర ఏజెంట్లను సంప్రదించి ఎలాంటి విమానాలు అందుబాటులో ఉన్నాయో, వివిధ తేదీలకు హోటల్ ధరలు ఏమిటో తెలుసుకుని ఉత్తమ ధర కోసం చర్చించాలి. సెలవు ప్రణాళిక పూర్తయి యజమాని ధృవీకరించిన తర్వాత బుకింగ్ చేయవచ్చు.
అందుకోసం, ఏజెంట్లు **సంవాదం** చేయాలి. విజయవంతమైన సంభాషణకు అవసరమైనవి:
* **జ్ఞాన మార్పిడి కోసం కొన్ని ప్రామాణిక భాషలు**, ఉదాహరణకు [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) మరియు [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). ఈ భాషలు [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) ఆధారంగా రూపొందించబడ్డాయి.
* వివిధ **లైలాలు** ఆధారంగా **చర్చల ప్రోటోకాల్‌లు** కూడా ఉండాలి.
* ఒకే భావాలను సూచించడానికి **సాధారణ ఆంటాలజీ** ఉండాలి, దాని అర్థం తెలుసుకుని
* వివిధ ఏజెంట్లు ఏమి చేయగలరో కనుగొనడానికి ఒక విధానం ఉండాలి, ఇది కూడా ఆంటాలజీ ఆధారంగా ఉంటుంది
తర్కసంబంధి ఏజెంట్లు ప్రతిస్పందక ఏజెంట్ల కంటే చాలా సంక్లిష్టమైనవి, ఎందుకంటే అవి పరిసరాల్లో మార్పులకు మాత్రమే ప్రతిస్పందించకుండా, *చర్యలు ప్రారంభించగలగాలి*. తర్కసంబంధి ఏజెంట్లకు ప్రతిపాదించిన ఆర్కిటెక్చర్‌లలో ఒకటి బిలీఫ్-డిజైర్-ఇంటెన్షన్ (BDI) ఏజెంట్:
* **బిలీఫ్స్** ఏజెంట్ పరిసరాల గురించి జ్ఞాన సెట్. ఇది ఒక జ్ఞాన ఆధారం లేదా నియమాల సెట్‌గా ఉండవచ్చు, ఏజెంట్ దాన్ని పరిసర పరిస్థితికి అనుగుణంగా వర్తింపజేస్తుంది.
* **డిజైర్స్** ఏజెంట్ చేయదలచుకున్నవి, అంటే లక్ష్యాలు. ఉదాహరణకు, పై వ్యక్తిగత సహాయక ఏజెంట్ లక్ష్యం పర్యటన బుక్ చేయడం, హోటల్ ఏజెంట్ లక్ష్యం లాభం గరిష్టం చేయడం.
* **ఇంటెన్షన్స్** ఏజెంట్ తన లక్ష్యాలను సాధించడానికి ప్రణాళ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,21 +1,21 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "5fef1a0b22498d7188959e2a2cb08af7",
"translation_date": "2025-11-25T20:36:00+00:00",
"source_file": "lessons/README.md",
"language_code": "te"
}
-->
# అవలోకనం
![డూడుల్‌లో అవలోకనం](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.te.png)
> స్కెచ్‌నోట్: [టోమోమీ ఇమురా](https://twitter.com/girlie_mac)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "5fef1a0b22498d7188959e2a2cb08af7",
"translation_date": "2025-11-25T20:36:00+00:00",
"source_file": "lessons/README.md",
"language_code": "te"
}
-->
# అవలోకనం
![డూడుల్‌లో అవలోకనం](../../../translated_images/ai-overview.0857791951d19500.te.png)
> స్కెచ్‌నోట్: [టోమోమీ ఇమురా](https://twitter.com/girlie_mac)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,92 +1,92 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9c592c26aca16ca085d268c732284187",
"translation_date": "2025-11-25T23:40:59+00:00",
"source_file": "lessons/X-Extras/X1-MultiModal/README.md",
"language_code": "te"
}
-->
# బహుముఖ నెట్‌వర్క్స్
NLP పనులను పరిష్కరించడంలో ట్రాన్స్‌ఫార్మర్ మోడల్స్ విజయవంతమైన తర్వాత, అదే లేదా సమానమైన నిర్మాణాలను కంప్యూటర్ విజన్ పనులకు కూడా వర్తింపజేశారు. విజన్ మరియు సహజ భాషా సామర్థ్యాలను *కలిపే* మోడల్స్ నిర్మించడంలో పెరుగుతున్న ఆసక్తి ఉంది. అలాంటి ప్రయత్నాల్లో ఒకటి OpenAI ద్వారా చేయబడింది, దాన్ని CLIP మరియు DALL.E అని పిలుస్తారు.
## కాంట్రాస్టివ్ ఇమేజ్ ప్రీ-ట్రైనింగ్ (CLIP)
CLIP యొక్క ప్రధాన ఆలోచన ఏమిటంటే, టెక్స్ట్ ప్రాంప్ట్‌లను ఒక చిత్రంతో పోల్చి, ఆ చిత్రం ప్రాంప్ట్‌కు ఎంతగా సరిపోతుందో నిర్ణయించగలగడం.
![CLIP Architecture](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.te.png)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/) నుండి*
మోడల్ ఇంటర్నెట్ నుండి సేకరించిన చిత్రాలు మరియు వాటి క్యాప్షన్లపై శిక్షణ పొందుతుంది. ప్రతి బ్యాచ్‌లో, N జంటల (చిత్రం, టెక్స్ట్) తీసుకుని వాటిని I<sub>1</sub>,..., I<sub>N</sub> / T<sub>1</sub>, ..., T<sub>N</sub> అనే వెక్టర్ ప్రాతినిధ్యాలుగా మార్చుతారు. ఆ ప్రాతినిధ్యాలను జతచేస్తారు. లాస్ ఫంక్షన్ ఒక జంటకు చెందిన వెక్టర్ల (ఉదా: I<sub>i</sub> మరియు T<sub>i</sub>) మధ్య కోసైన్ సారూప్యతను గరిష్టం చేయాలని, మరియు ఇతర జంటల మధ్య కోసైన్ సారూప్యతను తగ్గించాలని నిర్వచిస్తుంది. అందుకే ఈ పద్ధతిని **కాంట్రాస్టివ్** అంటారు.
CLIP మోడల్/లైబ్రరీ [OpenAI GitHub](https://github.com/openai/CLIP) నుండి అందుబాటులో ఉంది. ఈ పద్ధతి [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/)లో వివరించబడింది, మరింత వివరంగా [ఈ పేపర్](https://arxiv.org/pdf/2103.00020.pdf)లో ఉంది.
ఒకసారి ఈ మోడల్ ప్రీ-ట్రెయిన్ అయిన తర్వాత, చిత్రాల బ్యాచ్ మరియు టెక్స్ట్ ప్రాంప్ట్‌ల బ్యాచ్ ఇవ్వగలము, ఇది ప్రాబబిలిటీలతో కూడిన టెన్సర్‌ను తిరిగి ఇస్తుంది. CLIP ను అనేక పనుల కోసం ఉపయోగించవచ్చు:
**చిత్ర వర్గీకరణ**
ఉదాహరణకు, పిల్లులు, కుక్కలు మరియు మనుషుల మధ్య చిత్రాలను వర్గీకరించాలి అనుకుందాం. ఈ సందర్భంలో, మోడల్‌కు ఒక చిత్రం మరియు టెక్స్ట్ ప్రాంప్ట్‌ల సిరీస్ ఇవ్వవచ్చు: "*పిల్లి యొక్క చిత్రం*", "*కుక్క యొక్క చిత్రం*", "*మనిషి యొక్క చిత్రం*". 3 ప్రాబబిలిటీల వెక్టర్‌లో అత్యధిక విలువ ఉన్న సూచికను ఎంచుకోవడం సరిపోతుంది.
![CLIP for Image Classification](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.te.png)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/) నుండి*
**టెక్స్ట్ ఆధారిత చిత్రం శోధన**
మరియు విరుద్ధంగా కూడా చేయవచ్చు. మన దగ్గర చిత్రాల సేకరణ ఉంటే, ఆ సేకరణను మోడల్‌కు ఇవ్వవచ్చు, మరియు ఒక టెక్స్ట్ ప్రాంప్ట్ ఇవ్వగలము - ఇది ఆ ప్రాంప్ట్‌కు అత్యంత సమానమైన చిత్రాన్ని ఇస్తుంది.
## ✍️ ఉదాహరణ: [చిత్ర వర్గీకరణ మరియు చిత్రం శోధన కోసం CLIP ఉపయోగించడం](Clip.ipynb)
CLIP ను ప్రాక్టికల్‌గా చూడడానికి [Clip.ipynb](Clip.ipynb) నోట్‌బుక్‌ను తెరవండి.
## VQGAN+ CLIP తో చిత్రం సృష్టి
CLIP ను టెక్స్ట్ ప్రాంప్ట్ నుండి **చిత్రం సృష్టించడానికి** కూడా ఉపయోగించవచ్చు. దీని కోసం, కొన్ని వెక్టర్ ఇన్‌పుట్ ఆధారంగా చిత్రాలను సృష్టించగల **జనరేటర్ మోడల్** అవసరం. అలాంటి మోడల్స్‌లో ఒకటి [VQGAN](https://compvis.github.io/taming-transformers/) (వెక్టర్-క్వాంటైజ్డ్ GAN).
సాధారణ [GAN](../../4-ComputerVision/10-GANs/README.md)తో పోల్చితే VQGAN యొక్క ముఖ్యమైన తేడాలు:
* చిత్రాన్ని నిర్మించే కంటెక్స్ట్-సంపన్నమైన దృశ్య భాగాల సీక్వెన్స్‌ను ఉత్పత్తి చేయడానికి ఆటోరెగ్రెసివ్ ట్రాన్స్‌ఫార్మర్ నిర్మాణాన్ని ఉపయోగించడం. ఆ దృశ్య భాగాలు [CNN](../../4-ComputerVision/07-ConvNets/README.md) ద్వారా నేర్చుకోబడతాయి.
* చిత్రంలోని భాగాలు "నిజమైనవి" లేదా "నకిలీ" అని గుర్తించే ఉప-చిత్ర డిస్క్రిమినేటర్ ఉపయోగించడం (సాంప్రదాయ GANలో "అన్నీ లేదా ఏమీ కాదు" విధానం కాకుండా).
VQGAN గురించి మరింత తెలుసుకోడానికి [Taming Transformers](https://compvis.github.io/taming-transformers/) వెబ్‌సైట్‌ను చూడండి.
VQGAN మరియు సాంప్రదాయ GAN మధ్య ముఖ్య తేడా ఏమిటంటే, సాంప్రదాయ GAN ఏ ఇన్‌పుట్ వెక్టర్ నుండి సరైన చిత్రం ఉత్పత్తి చేయగలదు, కానీ VQGAN కొన్నిసార్లు సారూప్యమైన చిత్రం కాకపోవచ్చు. అందుకే, చిత్ర సృష్టి ప్రక్రియను మరింత మార్గనిర్దేశం చేయాలి, దీని కోసం CLIP ఉపయోగించవచ్చు.
![VQGAN+CLIP Architecture](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.te.png)
టెక్స్ట్ ప్రాంప్ట్‌కు అనుగుణంగా చిత్రం సృష్టించడానికి, మొదట రాండమ్ ఎంకోడింగ్ వెక్టర్ తీసుకుని దాన్ని VQGAN ద్వారా చిత్రంగా మార్చుతారు. ఆ తర్వాత CLIP ఉపయోగించి ఆ చిత్రం టెక్స్ట్ ప్రాంప్ట్‌కు ఎంతగా సరిపోతుందో చూపించే లాస్ ఫంక్షన్ తయారుచేస్తారు. ఆ లాస్‌ను తగ్గించడం లక్ష్యం, బ్యాక్ ప్రొపగేషన్ ద్వారా ఇన్‌పుట్ వెక్టర్ పరామితులను సర్దుబాటు చేస్తారు.
VQGAN+CLIP ను అమలు చేసే గొప్ప లైబ్రరీ [Pixray](http://github.com/pixray/pixray)
![Picture produced by Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.te.png) | ![Picture produced by pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.te.png) | ![Picture produced by Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.te.png)
----|----|----
*పుస్తకం తో యువ సాహిత్య ఉపాధ్యాయుడి watercolor సమీప చిత్రము* | *కంప్యూటర్ తో యువ కంప్యూటర్ సైన్స్ ఉపాధ్యాయురాలి oil సమీప చిత్రము* | *బ్లాక్‌బోర్డ్ ముందు వృద్ధ గణితం ఉపాధ్యాయుడి oil సమీప చిత్రము*
> చిత్రాలు **Artificial Teachers** సేకరణ నుండి [Dmitry Soshnikov](http://soshnikov.com)
## DALL-E
### [DALL-E 1](https://openai.com/research/dall-e)
DALL-E అనేది GPT-3 యొక్క ఒక వెర్షన్, ఇది ప్రాంప్ట్‌ల నుండి చిత్రాలను సృష్టించడానికి శిక్షణ పొందింది. దీని పరిమాణం 12 బిలియన్ పరామితులతో ఉంది.
CLIP తో భిన్నంగా, DALL-E టెక్స్ట్ మరియు చిత్రాలను ఒకే టోకెన్ల స్ట్రీమ్‌గా అందుకుంటుంది. అందువల్ల, అనేక ప్రాంప్ట్‌ల నుండి టెక్స్ట్ ఆధారంగా చిత్రాలను సృష్టించవచ్చు.
### [DALL-E 2](https://openai.com/dall-e-2)
DALL.E 1 మరియు 2 మధ్య ప్రధాన తేడా ఏమిటంటే, DALL.E 2 మరింత వాస్తవికమైన చిత్రాలు మరియు కళను సృష్టిస్తుంది.
DALL-E తో చిత్ర సృష్టి ఉదాహరణలు:
![Picture produced by Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.te.png) | ![Picture produced by pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.te.png) | ![Picture produced by Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.te.png)
----|----|----
*పుస్తకం తో యువ సాహిత్య ఉపాధ్యాయుడి watercolor సమీప చిత్రము* | *కంప్యూటర్ తో యువ కంప్యూటర్ సైన్స్ ఉపాధ్యాయురాలి oil సమీప చిత్రము* | *బ్లాక్‌బోర్డ్ ముందు వృద్ధ గణితం ఉపాధ్యాయుడి oil సమీప చిత్రము*
## సూచనలు
* VQGAN పేపర్: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf)
* CLIP పేపర్: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9c592c26aca16ca085d268c732284187",
"translation_date": "2025-11-25T23:40:59+00:00",
"source_file": "lessons/X-Extras/X1-MultiModal/README.md",
"language_code": "te"
}
-->
# బహుముఖ నెట్‌వర్క్స్
NLP పనులను పరిష్కరించడంలో ట్రాన్స్‌ఫార్మర్ మోడల్స్ విజయవంతమైన తర్వాత, అదే లేదా సమానమైన నిర్మాణాలను కంప్యూటర్ విజన్ పనులకు కూడా వర్తింపజేశారు. విజన్ మరియు సహజ భాషా సామర్థ్యాలను *కలిపే* మోడల్స్ నిర్మించడంలో పెరుగుతున్న ఆసక్తి ఉంది. అలాంటి ప్రయత్నాల్లో ఒకటి OpenAI ద్వారా చేయబడింది, దాన్ని CLIP మరియు DALL.E అని పిలుస్తారు.
## కాంట్రాస్టివ్ ఇమేజ్ ప్రీ-ట్రైనింగ్ (CLIP)
CLIP యొక్క ప్రధాన ఆలోచన ఏమిటంటే, టెక్స్ట్ ప్రాంప్ట్‌లను ఒక చిత్రంతో పోల్చి, ఆ చిత్రం ప్రాంప్ట్‌కు ఎంతగా సరిపోతుందో నిర్ణయించగలగడం.
![CLIP Architecture](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be.te.png)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/) నుండి*
మోడల్ ఇంటర్నెట్ నుండి సేకరించిన చిత్రాలు మరియు వాటి క్యాప్షన్లపై శిక్షణ పొందుతుంది. ప్రతి బ్యాచ్‌లో, N జంటల (చిత్రం, టెక్స్ట్) తీసుకుని వాటిని I<sub>1</sub>,..., I<sub>N</sub> / T<sub>1</sub>, ..., T<sub>N</sub> అనే వెక్టర్ ప్రాతినిధ్యాలుగా మార్చుతారు. ఆ ప్రాతినిధ్యాలను జతచేస్తారు. లాస్ ఫంక్షన్ ఒక జంటకు చెందిన వెక్టర్ల (ఉదా: I<sub>i</sub> మరియు T<sub>i</sub>) మధ్య కోసైన్ సారూప్యతను గరిష్టం చేయాలని, మరియు ఇతర జంటల మధ్య కోసైన్ సారూప్యతను తగ్గించాలని నిర్వచిస్తుంది. అందుకే ఈ పద్ధతిని **కాంట్రాస్టివ్** అంటారు.
CLIP మోడల్/లైబ్రరీ [OpenAI GitHub](https://github.com/openai/CLIP) నుండి అందుబాటులో ఉంది. ఈ పద్ధతి [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/)లో వివరించబడింది, మరింత వివరంగా [ఈ పేపర్](https://arxiv.org/pdf/2103.00020.pdf)లో ఉంది.
ఒకసారి ఈ మోడల్ ప్రీ-ట్రెయిన్ అయిన తర్వాత, చిత్రాల బ్యాచ్ మరియు టెక్స్ట్ ప్రాంప్ట్‌ల బ్యాచ్ ఇవ్వగలము, ఇది ప్రాబబిలిటీలతో కూడిన టెన్సర్‌ను తిరిగి ఇస్తుంది. CLIP ను అనేక పనుల కోసం ఉపయోగించవచ్చు:
**చిత్ర వర్గీకరణ**
ఉదాహరణకు, పిల్లులు, కుక్కలు మరియు మనుషుల మధ్య చిత్రాలను వర్గీకరించాలి అనుకుందాం. ఈ సందర్భంలో, మోడల్‌కు ఒక చిత్రం మరియు టెక్స్ట్ ప్రాంప్ట్‌ల సిరీస్ ఇవ్వవచ్చు: "*పిల్లి యొక్క చిత్రం*", "*కుక్క యొక్క చిత్రం*", "*మనిషి యొక్క చిత్రం*". 3 ప్రాబబిలిటీల వెక్టర్‌లో అత్యధిక విలువ ఉన్న సూచికను ఎంచుకోవడం సరిపోతుంది.
![CLIP for Image Classification](../../../../../translated_images/clip-class.3af42ef0b2b19369.te.png)
> *చిత్రం [ఈ బ్లాగ్ పోస్ట్](https://openai.com/blog/clip/) నుండి*
**టెక్స్ట్ ఆధారిత చిత్రం శోధన**
మరియు విరుద్ధంగా కూడా చేయవచ్చు. మన దగ్గర చిత్రాల సేకరణ ఉంటే, ఆ సేకరణను మోడల్‌కు ఇవ్వవచ్చు, మరియు ఒక టెక్స్ట్ ప్రాంప్ట్ ఇవ్వగలము - ఇది ఆ ప్రాంప్ట్‌కు అత్యంత సమానమైన చిత్రాన్ని ఇస్తుంది.
## ✍️ ఉదాహరణ: [చిత్ర వర్గీకరణ మరియు చిత్రం శోధన కోసం CLIP ఉపయోగించడం](Clip.ipynb)
CLIP ను ప్రాక్టికల్‌గా చూడడానికి [Clip.ipynb](Clip.ipynb) నోట్‌బుక్‌ను తెరవండి.
## VQGAN+ CLIP తో చిత్రం సృష్టి
CLIP ను టెక్స్ట్ ప్రాంప్ట్ నుండి **చిత్రం సృష్టించడానికి** కూడా ఉపయోగించవచ్చు. దీని కోసం, కొన్ని వెక్టర్ ఇన్‌పుట్ ఆధారంగా చిత్రాలను సృష్టించగల **జనరేటర్ మోడల్** అవసరం. అలాంటి మోడల్స్‌లో ఒకటి [VQGAN](https://compvis.github.io/taming-transformers/) (వెక్టర్-క్వాంటైజ్డ్ GAN).
సాధారణ [GAN](../../4-ComputerVision/10-GANs/README.md)తో పోల్చితే VQGAN యొక్క ముఖ్యమైన తేడాలు:
* చిత్రాన్ని నిర్మించే కంటెక్స్ట్-సంపన్నమైన దృశ్య భాగాల సీక్వెన్స్‌ను ఉత్పత్తి చేయడానికి ఆటోరెగ్రెసివ్ ట్రాన్స్‌ఫార్మర్ నిర్మాణాన్ని ఉపయోగించడం. ఆ దృశ్య భాగాలు [CNN](../../4-ComputerVision/07-ConvNets/README.md) ద్వారా నేర్చుకోబడతాయి.
* చిత్రంలోని భాగాలు "నిజమైనవి" లేదా "నకిలీ" అని గుర్తించే ఉప-చిత్ర డిస్క్రిమినేటర్ ఉపయోగించడం (సాంప్రదాయ GANలో "అన్నీ లేదా ఏమీ కాదు" విధానం కాకుండా).
VQGAN గురించి మరింత తెలుసుకోడానికి [Taming Transformers](https://compvis.github.io/taming-transformers/) వెబ్‌సైట్‌ను చూడండి.
VQGAN మరియు సాంప్రదాయ GAN మధ్య ముఖ్య తేడా ఏమిటంటే, సాంప్రదాయ GAN ఏ ఇన్‌పుట్ వెక్టర్ నుండి సరైన చిత్రం ఉత్పత్తి చేయగలదు, కానీ VQGAN కొన్నిసార్లు సారూప్యమైన చిత్రం కాకపోవచ్చు. అందుకే, చిత్ర సృష్టి ప్రక్రియను మరింత మార్గనిర్దేశం చేయాలి, దీని కోసం CLIP ఉపయోగించవచ్చు.
![VQGAN+CLIP Architecture](../../../../../translated_images/vqgan.5027fe05051dfa31.te.png)
టెక్స్ట్ ప్రాంప్ట్‌కు అనుగుణంగా చిత్రం సృష్టించడానికి, మొదట రాండమ్ ఎంకోడింగ్ వెక్టర్ తీసుకుని దాన్ని VQGAN ద్వారా చిత్రంగా మార్చుతారు. ఆ తర్వాత CLIP ఉపయోగించి ఆ చిత్రం టెక్స్ట్ ప్రాంప్ట్‌కు ఎంతగా సరిపోతుందో చూపించే లాస్ ఫంక్షన్ తయారుచేస్తారు. ఆ లాస్‌ను తగ్గించడం లక్ష్యం, బ్యాక్ ప్రొపగేషన్ ద్వారా ఇన్‌పుట్ వెక్టర్ పరామితులను సర్దుబాటు చేస్తారు.
VQGAN+CLIP ను అమలు చేసే గొప్ప లైబ్రరీ [Pixray](http://github.com/pixray/pixray)
![Picture produced by Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d0.te.png) | ![Picture produced by pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a4390.te.png) | ![Picture produced by Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683.te.png)
----|----|----
*పుస్తకం తో యువ సాహిత్య ఉపాధ్యాయుడి watercolor సమీప చిత్రము* | *కంప్యూటర్ తో యువ కంప్యూటర్ సైన్స్ ఉపాధ్యాయురాలి oil సమీప చిత్రము* | *బ్లాక్‌బోర్డ్ ముందు వృద్ధ గణితం ఉపాధ్యాయుడి oil సమీప చిత్రము*
> చిత్రాలు **Artificial Teachers** సేకరణ నుండి [Dmitry Soshnikov](http://soshnikov.com)
## DALL-E
### [DALL-E 1](https://openai.com/research/dall-e)
DALL-E అనేది GPT-3 యొక్క ఒక వెర్షన్, ఇది ప్రాంప్ట్‌ల నుండి చిత్రాలను సృష్టించడానికి శిక్షణ పొందింది. దీని పరిమాణం 12 బిలియన్ పరామితులతో ఉంది.
CLIP తో భిన్నంగా, DALL-E టెక్స్ట్ మరియు చిత్రాలను ఒకే టోకెన్ల స్ట్రీమ్‌గా అందుకుంటుంది. అందువల్ల, అనేక ప్రాంప్ట్‌ల నుండి టెక్స్ట్ ఆధారంగా చిత్రాలను సృష్టించవచ్చు.
### [DALL-E 2](https://openai.com/dall-e-2)
DALL.E 1 మరియు 2 మధ్య ప్రధాన తేడా ఏమిటంటే, DALL.E 2 మరింత వాస్తవికమైన చిత్రాలు మరియు కళను సృష్టిస్తుంది.
DALL-E తో చిత్ర సృష్టి ఉదాహరణలు:
![Picture produced by Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.te.png) | ![Picture produced by pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.te.png) | ![Picture produced by Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.te.png)
----|----|----
*పుస్తకం తో యువ సాహిత్య ఉపాధ్యాయుడి watercolor సమీప చిత్రము* | *కంప్యూటర్ తో యువ కంప్యూటర్ సైన్స్ ఉపాధ్యాయురాలి oil సమీప చిత్రము* | *బ్లాక్‌బోర్డ్ ముందు వృద్ధ గణితం ఉపాధ్యాయుడి oil సమీప చిత్రము*
## సూచనలు
* VQGAN పేపర్: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf)
* CLIP పేపర్: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -1,46 +1,46 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4ed9993bca581850c983c95d5a3f57eb",
"translation_date": "2025-12-25T00:13:45+00:00",
"original_hash": "14816e97d79b296c87811724f7785923",
"translation_date": "2026-01-01T11:50:02+00:00",
"source_file": "README.md",
"language_code": "th"
}
-->
[![ใบอนุญาต GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE)
[![ผู้ร่วมพัฒนา GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/)
[![ประเด็น GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/)
[![คำขอดึง GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/)
[![ปัญหา GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/)
[![ยินดีรับ PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![ผู้เฝ้าดู GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![โฟกส์ GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![ผู้ติดตาม GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![Forks GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![ดาว GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)
[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
[![Discord ของ Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
# Artificial Intelligence for Beginners - A Curriculum
# ปัญญาประดิษฐ์สำหรับผู้เริ่มต้น - หลักสูตร
|![Sketchnote by @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.th.png)|
|![สเก็ตช์โน้ตโดย @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500.th.png)|
|:---:|
| AI For Beginners - _สเก็ตช์โน้ตโดย [@girlie_mac](https://twitter.com/girlie_mac)_ |
| AI สำหรับผู้เริ่มต้น - _สเก็ตช์โน้ตโดย [@girlie_mac](https://twitter.com/girlie_mac)_ |
สำรวจโลกของ **ปัญญาประดิษฐ์** (AI) ด้วยหลักสูตร 12 สัปดาห์ จำนวน 24 บทเรียน! หลักสูตรนี้ประกอบด้วยบทเรียนเชิงปฏิบัติ แบบทดสอบ และห้องปฏิบัติการ เหมาะสำหรับผู้เริ่มต้นและครอบคลุมเครื่องมือต่างๆ เช่น TensorFlow และ PyTorch รวมถึงจริยธรรมด้าน AI
สำรวจโลกของ **ปัญญาประดิษฐ์** (AI) ด้วยหลักสูตร 12 สัปดาห์ 24 บทเรียนของเรา! หลักสูตรประกอบด้วยบทเรียนเชิงปฏิบัติ การทดสอบย่อย และแลป หลักสูตรเหมาะสำหรับผู้เริ่มต้นและครอบคลุมเครื่องมือต่างๆ เช่น TensorFlow และ PyTorch รวมถึงจริยธรรมใน AI
### 🌐 การสนับสนุนหลายภาษา
### 🌐 การรองรับหลายภาษา
#### สนับสนุนผ่าน GitHub Action (อัตโนมัติและอัพเดตเสมอ)
#### รองรับผ่าน GitHub Action (อัตโนมัติ & อัปเดตอยู่เสมอ)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](./README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
[อาหรับ](../ar/README.md) | [เบงกาลี](../bn/README.md) | [บัลแกเรีย](../bg/README.md) | [พม่า (เมียนมา)](../my/README.md) | [จีน (ตัวย่อ)](../zh/README.md) | [จีน (ตัวเต็ม, ฮ่องกง)](../hk/README.md) | [จีน (ตัวเต็ม, มาเก๊า)](../mo/README.md) | [จีน (ตัวเต็ม, ไต้หวัน)](../tw/README.md) | [โครเอเชีย](../hr/README.md) | [เช็ก](../cs/README.md) | [เดนมาร์ก](../da/README.md) | [ดัตช์](../nl/README.md) | [เอสโตเนีย](../et/README.md) | [ฟินแลนด์](../fi/README.md) | [ฝรั่งเศส](../fr/README.md) | [เยอรมัน](../de/README.md) | [กรีก](../el/README.md) | [ฮีบรู](../he/README.md) | [ฮินดี](../hi/README.md) | [ฮังการี](../hu/README.md) | [อินโดนีเซีย](../id/README.md) | [อิตาเลียน](../it/README.md) | [ญี่ปุ่น](../ja/README.md) | [คันนาดา](../kn/README.md) | [เกาหลี](../ko/README.md) | [ลิทัวเนีย](../lt/README.md) | [มลายู](../ms/README.md) | [มาลายาลัม](../ml/README.md) | [มราฐี](../mr/README.md) | [เนปาลี](../ne/README.md) | [ไนจีเรีย พิดจิน](../pcm/README.md) | [นอร์เวย์](../no/README.md) | [เปอร์เซีย (ฟาร์ซี)](../fa/README.md) | [โปแลนด์](../pl/README.md) | [โปรตุเกส (บราซิล)](../br/README.md) | [โปรตุเกส (โปรตุเกส)](../pt/README.md) | [ปัญจาบ (Gurmukhi)](../pa/README.md) | [โรมาเนีย](../ro/README.md) | [รัสเซีย](../ru/README.md) | [เซอร์เบีย (คีริลลิก)](../sr/README.md) | [สโลวัก](../sk/README.md) | [สโลวีเนีย](../sl/README.md) | [สเปน](../es/README.md) | [สวาฮีลี](../sw/README.md) | [สวีเดน](../sv/README.md) | [ตากาล็อก (ฟิลิปปินส์)](../tl/README.md) | [ทมิฬ](../ta/README.md) | [เตลูกู](../te/README.md) | [ไทย](./README.md) | [ตุรกี](../tr/README.md) | [ยูเครน](../uk/README.md) | [อูรดู](../ur/README.md) | [เวียดนาม](../vi/README.md)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
**หากคุณต้องการให้มีการสนับสนุนภาษาเพิ่มเติม รายชื่อภาษาที่สามารถรองรับได้อยู่ [ที่นี่](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
**หากคุณต้องการให้มีการแปลภาษาเพิ่มเติม รายชื่อภาษาที่รองรับอยู่ [ที่นี่](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
## เข้าร่วมชุมชน
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
[![Discord ของ Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
## สิ่งที่คุณจะได้เรียนรู้
@ -48,87 +48,87 @@ CO_OP_TRANSLATOR_METADATA:
ในหลักสูตรนี้ คุณจะได้เรียนรู้:
* แนวทางต่างๆ ของปัญญาประดิษฐ์ รวมถึงแนวทางเชิงสัญลักษณ์แบบดั้งเดิมกับ **การแทนความรู้** และการอนุมาน ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))
* **โครงข่ายประสาทเทียม** และ **การเรียนรู้เชิงลึก** ซึ่งเป็นแกนหลักของ AI สมัยใหม่ เราจะอธิบายแนวคิดเบื้องหลังหัวข้อสำคัญเหล่านี้โดยใช้โค้ดในสองเฟรมเวิร์กที่ได้รับความนิยมสูงสุด - [TensorFlow](http://Tensorflow.org) และ [PyTorch](http://pytorch.org)
* **สถาปัตยกรรมเชิงประสาท** สำหรับการทำงานกับภาพและข้อความ เราจะครอบคลุมโมเดลที่ทันสมัย แต่บางส่วนอาจไม่เป็น state-of-the-art ล่าสุด
* แนวทาง AI ที่ค่อนข้างไม่เป็นที่นิยม เช่น **อัลกอริธึมเชิงวิวัฒนาการ** และ **ระบบผู้แทนหลายตัว (Multi-Agent Systems)**
* แนวทางต่างๆ ของปัญญาประดิษฐ์ รวมถึงแนวทางเชิงสัญลักษณ์แบบคลาสสิกที่มี **การแทนความรู้** และการให้เหตุผล ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)).
* **โครงข่ายประสาทเทียม** และ **การเรียนรู้เชิงลึก** ซึ่งเป็นหัวใจของ AI สมัยใหม่ เราจะแสดงแนวคิดเบื้องหลังหัวข้อสำคัญเหล่านี้ด้วยโค้ดในสองเฟรมเวิร์กยอดนิยม - [TensorFlow](http://Tensorflow.org) และ [PyTorch](http://pytorch.org).
* **สถาปัตยกรรมเครือข่ายประสาท** สำหรับการทำงานกับภาพและข้อความ เราจะครอบคลุมโมเดลล่าสุดแต่บางส่วนอาจไม่ได้ทันสมัยที่สุด
* แนวทาง AI ที่ไม่เป็นที่นิยมเท่า เช่น **อัลกอริทึมเชิงพันธุกรรม** และ **ระบบหลายตัวแทน**
สิ่งที่เราจะไม่ครอบคลุมในหลักสูตรนี้:
สิ่งที่เราไม่ได้ครอบคลุมในหลักสูตรนี้:
> [ค้นหาแหล่งข้อมูลเพิ่มเติมทั้งหมดสำหรับหลักสูตรนี้ได้ในคอลเลกชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
> [ค้นหาทรัพยากรเพิ่มเติมสำหรับหลักสูตรนี้ในคอลเล็กชัน Microsoft Learn ของเรา](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
* กรณีธุรกิจของการใช้ **AI ในธุรกิจ** พิจารณาเรียนเส้นทางการเรียนรู้ [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) บน Microsoft Learn หรือ [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum) ซึ่งพัฒนาร่วมกับ [INSEAD](https://www.insead.edu/)
* **การเรียนรู้ของเครื่องแบบคลาสสิก** ซึ่งมีคำอธิบายที่ดีใน [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners) ของเรา
* แอปพลิเคชัน AI เชิงปฏิบัติที่สร้างด้วย **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** สำหรับสิ่งนี้ เราแนะนำให้เริ่มจากโมดูลบน Microsoft Learn สำหรับ [การมองเห็น (vision)](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [การประมวลผลภาษาธรรมชาติ (natural language processing)](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** และโมดูลอื่นๆ
* เฟรมเวิร์กคลาวด์เฉพาะสำหรับ ML เช่น [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) หรือ [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum) พิจารณาใช้เส้นทางการเรียนรู้ [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) และ [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum)
* **AI แบบสนทนา** และ **แชทบ็อต** มีเส้นทางการเรียนรู้แยกต่างหาก [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) และคุณยังสามารถดู [โพสต์บล็อกนี้](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) เพื่อรายละเอียดเพิ่มเติม
* **คณิตศาสตร์เชิงลึก** เบื้องหลังการเรียนรู้เชิงลึก สำหรับหัวข้อนี้ เราแนะนำหนังสือ [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) โดย Ian Goodfellow, Yoshua Bengio และ Aaron Courville ซึ่งอ่านได้ออนไลน์ที่ [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)
* กรณีธุรกิจของการใช้ **AI ในธุรกิจ** พิจารณาเรียนเส้นทางการเรียนรู้ [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) บน Microsoft Learn หรือ [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum) ซึ่งพัฒนาร่วมกับ [INSEAD](https://www.insead.edu/).
* **การเรียนรู้ของเครื่องแบบคลาสสิก** ซึ่งอธิบายไว้อย่างดีใน [หลักสูตร Machine Learning for Beginners ของเรา](http://github.com/Microsoft/ML-for-Beginners).
* แอปพลิเคชัน AI เชิงปฏิบัติที่สร้างด้วย **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** สำหรับเรื่องนี้ เราแนะนำให้คุณเริ่มจากโมดูล Microsoft Learn สำหรับ [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** และอื่นๆ
* **เฟรมเวิร์กคลาวด์สำหรับ ML เฉพาะทาง** เช่น [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) หรือ [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). พิจารณาใช้เส้นทางการเรียนรู้ [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) และ [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum).
* **AI แบบโต้ตอบ** และ **แชทบอท** มีเส้นทางการเรียนรู้แยกต่างหาก [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) และคุณยังสามารถอ้างอิงจาก [บล็อกโพสต์นี้](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) สำหรับรายละเอียดเพิ่มเติม
* **คณิตศาสตร์เชิงลึก** ที่อยู่เบื้องหลังการเรียนรู้เชิงลึก สำหรับเรื่องนี้ เราแนะนำหนังสือ [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) โดย Ian Goodfellow, Yoshua Bengio และ Aaron Courville ซึ่งยังมีให้ใช้ออนไลน์ที่ [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)
สำหรับการแนะนำอย่างนุ่มนวลสู่หัวข้อ _AI บนคลาวด์_ คุณอาจพิจารณาเรียนเส้นทางการเรียนรู้ [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) บน Microsoft Learn
สำหรับการแนะนำอย่างนุ่มนวลเกี่ยวกับหัวข้อ _AI บนคลาวด์_ คุณอาจพิจารณาเรียนเส้นทางการเรียนรู้ [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum)
# เนื้อหา
| | ลิงก์บทเรียน | PyTorch/Keras/TensorFlow | ห้องปฏิบัติการ |
| | ลิงก์บทเรียน | PyTorch/Keras/TensorFlow | Lab |
| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ |
| 0 | [การตั้งค่าหลักสูตร](./lessons/0-course-setup/setup.md) | [การตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ](./lessons/0-course-setup/how-to-run.md) | |
| 0 | [การตั้งค่าหลักสูตร](./lessons/0-course-setup/setup.md) | [ตั้งค่าสภาพแวดล้อมการพัฒนา](./lessons/0-course-setup/how-to-run.md) | |
| I | [**บทนำสู่ AI**](./lessons/1-Intro/README.md) | | |
| 01 | [บทนำและประวัติความเป็นมาของ AI](./lessons/1-Intro/README.md) | - | - |
| 01 | [บทนำและประวัติของ AI](./lessons/1-Intro/README.md) | - | - |
| II | **AI เชิงสัญลักษณ์** |
| 02 | [การแทนความรู้และระบบผู้เชี่ยวชาญ](./lessons/2-Symbolic/README.md) | [ระบบผู้เชี่ยวชาญ](./lessons/2-Symbolic/Animals.ipynb) / [Ontology](./lessons/2-Symbolic/FamilyOntology.ipynb) /[Concept Graph](./lessons/2-Symbolic/MSConceptGraph.ipynb) | |
| 02 | [การแทนความรู้และระบบผู้เชี่ยวชาญ](./lessons/2-Symbolic/README.md) | [ระบบผู้เชี่ยวชาญ](./lessons/2-Symbolic/Animals.ipynb) / [ออนโทโลยี](./lessons/2-Symbolic/FamilyOntology.ipynb) /[กราฟแนวคิด](./lessons/2-Symbolic/MSConceptGraph.ipynb) | |
| III | [**บทนำสู่โครงข่ายประสาทเทียม**](./lessons/3-NeuralNetworks/README.md) |||
| 03 | [เปอร์เซปตรอน](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [โน้ตบุ๊ก](./lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [แล็บ](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) |
| 04 | [เปอร์เซปตรอนหลายชั้นและการสร้างเฟรมเวิร์กของเราเอง](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [โน้ตบุ๊ก](./lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [แล็บ](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) |
| 05 | [บทนำสู่เฟรมเวิร์ก (PyTorch/TensorFlow) และการฟิตเกิน (Overfitting)](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](./lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](./lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [แล็บ](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) |
| 05 | [บทนำสู่เฟรมเวิร์ก (PyTorch/TensorFlow) และปัญหา overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](./lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](./lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [แล็บ](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) |
| IV | [**การมองเห็นด้วยคอมพิวเตอร์**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [สำรวจการมองเห็นด้วยคอมพิวเตอร์บน Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) |
| 06 | [บทนำสู่การมองเห็นด้วยคอมพิวเตอร์ และ OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [โน้ตบุ๊ก](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [แล็บ](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 07 | [เครือข่ายประสาทเทียมแบบคอนโวลูชัน](./lessons/4-ComputerVision/07-ConvNets/README.md) & [สถาปัตยกรรมของ CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](./lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](./lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [แล็บ](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) |
| 08 | [เครือข่ายที่ได้รับการฝึกล่วงหน้าและการถ่ายโอนการเรียนรู้ (Transfer Learning)](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [เคล็ดลับการฝึก](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [แล็บ](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [ออโต้เอนโคเดอร์และ VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [เครือข่ายปฏิปักษ์เชิงกำเนิด (GAN) และการถ่ายโอนสไตล์เชิงศิลป์](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 06 | [บทนำสู่การมองเห็นด้วยคอมพิวเตอร์. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [โน้ตบุ๊ก](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [แล็บ](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 07 | [เครือข่ายประสาทแบบคอนโวลูชัน](./lessons/4-ComputerVision/07-ConvNets/README.md) & [สถาปัตยกรรม CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](./lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](./lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [แล็บ](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) |
| 08 | [เครือข่ายที่ถูกฝึกมาก่อนและการเรียนรู้แบบถ่ายโอน](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [เทคนิคการฝึก](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [แล็บ](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [ออโต้เอนโค้ดเดอร์และ VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [เครือข่ายปฏิปักษ์เชิงกำเนิด และการถ่ายโอนสไตล์เชิงศิลป์](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 11 | [การตรวจจับวัตถุ](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](./lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [แล็บ](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) |
| 12 | [การแบ่งส่วนเชิงความหมาย และ U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | |
| V | [**การประมวลผลภาษาธรรมชาติ**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [สำรวจการประมวลผลภาษาธรรมชาติบน Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)|
| 13 | [การแทนข้อความ (Bow/TF-IDF)](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [การฝังคำเชิงความหมาย (Word Embeddings). Word2Vec และ GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 13 | [การแทนข้อความ: BoW/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [การฝังคำเชิงความหมาย: Word2Vec และ GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 15 | [การสร้างแบบจำลองภาษา และการฝึก embedding ของคุณเอง](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [แล็บ](./lessons/5-NLP/15-LanguageModeling/lab/README.md) |
| 16 | [เครือข่ายประสาทเทียมแบบวนซ้ำ (RNN)](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 16 | [เครือข่ายประสาทแบบวนซ้ำ](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 17 | [เครือข่ายวนซ้ำเชิงกำเนิด](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) | [แล็บ](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) |
| 18 | [Transformers และ BERT](./lessons/5-NLP/18-Transformers/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | |
| 19 | [การจดจำหน่วยชื่อ (Named Entity Recognition)](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [แล็บ](./lessons/5-NLP/19-NER/lab/README.md) |
| 20 | [โมเดลภาษาขนาดใหญ่, การเขียน Prompt และงานแบบ Few-Shot](./lessons/5-NLP/20-LangModels/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | |
| 19 | [การจำแนกเอนทิตีที่มีชื่อ](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [แล็บ](./lessons/5-NLP/19-NER/lab/README.md) |
| 20 | [โมเดลภาษาใหญ่ การเขียนโปรแกรมด้วยพรอมต์ และงานแบบ Few-Shot](./lessons/5-NLP/20-LangModels/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | |
| VI | **เทคนิค AI อื่นๆ** || |
| 21 | [อัลกอริทึมพันธุกรรม](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [โน้ตบุ๊ก](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| 21 | [อัลกอริทึมทางพันธุกรรม](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [โน้ตบุ๊ก](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| 22 | [การเรียนรู้เสริมเชิงลึก](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](./lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](./lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [แล็บ](./lessons/6-Other/22-DeepRL/lab/README.md) |
| 23 | [ระบบตัวแทนหลายหน่วย](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| 23 | [ระบบหลายตัวแทน](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| VII | **จริยธรรม AI** | | |
| 24 | [จริยธรรม AI และ AI ที่มีความรับผิดชอบ](./lessons/7-Ethics/README.md) | [Microsoft Learn: Responsible AI Principles](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| 24 | [จริยธรรม AI และ AI ที่รับผิดชอบ](./lessons/7-Ethics/README.md) | [Microsoft Learn: หลักการ AI ที่รับผิดชอบ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| IX | **เพิ่มเติม** | | |
| 25 | [เครือข่ายมัลติ-โมดัล, CLIP และ VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [โน้ตบุ๊ก](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
| 25 | [เครือข่ายมัลติ-โมดอล, CLIP และ VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [โน้ตบุ๊ก](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
## แต่ละบทเรียนประกอบด้วย
* เนื้อหาที่อ่านก่อน
* โน้ตบุ๊ก Jupyter ที่สามารถรันได้ ซึ่งมักจะเฉพาะกับเฟรมเวิร์ก (**PyTorch** หรือ **TensorFlow**) โน้ตบุ๊กที่สามารถรันได้ยังมีเนื้อหาทางทฤษฎีจำนวนมาก ดังนั้นเพื่อเข้าใจหัวข้อนั้น คุณควรผ่านโน้ตบุ๊กอย่างน้อยหนึ่งเวอร์ชัน (ไม่ว่าจะเป็น PyTorch หรือ TensorFlow)
* **แล็บ** มีให้สำหรับบางหัวข้อ ซึ่งมอบโอกาสให้คุณลองนำเนื้อหาที่เรียนไปประยุกต์กับปัญหาเฉพาะ
* บางส่วนมีลิงก์ไปยัง [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) โมดูลที่ครอบคลุมหัวข้อที่เกี่ยวข้อง
* เอกสารอ่านก่อนเรียน
* ไฟล์ Jupyter Notebook ที่สามารถรันได้ ซึ่งมักจะระบุเฉพาะสำหรับเฟรมเวิร์ก (**PyTorch** หรือ **TensorFlow**). ไฟล์โน้ตบุ๊กที่สามารถรันได้ยังมีเนื้อหาทฤษฎีจำนวนมาก ดังนั้นเพื่อจะเข้าใจหัวข้อ คุณจำเป็นต้องอ่านหรือทำอย่างน้อยหนึ่งเวอร์ชันของโน้ตบุ๊ก (ไม่ว่าจะเป็น PyTorch หรือ TensorFlow).
* **Labs** มีให้สำหรับบางหัวข้อ ซึ่งให้โอกาสคุณทดลองนำเนื้อหาที่เรียนไปประยุกต์กับปัญหาเฉพาะ
* บางส่วนมีลิงก์ไปยังโมดูลของ [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) ที่ครอบคลุมหัวข้อที่เกี่ยวข้อง.
## การเริ่มต้น
### 🎯 เพิ่งเริ่มกับ AI? เริ่มที่นี่!
### 🎯 ใหม่กับ AI? เริ่มที่นี่!
ถ้าคุณเป็นมือใหม่กับ AI และต้องการตัวอย่างแบบลงมือทำอย่างรวดเร็ว ให้ดู [**ตัวอย่างสำหรับผู้เริ่มต้น**](./examples/README.md)! ตัวอย่างเหล่านี้ประกอบด้วย:
หากคุณเป็นผู้เริ่มต้นกับ AI และต้องการตัวอย่างแบบลงมือปฏิบัติอย่างรวดเร็ว ให้ดูที่ [**ตัวอย่างสำหรับผู้เริ่มต้น**](./examples/README.md)! ตัวอย่างเหล่านี้รวมถึง:
- 🌟 **Hello AI World** - โปรแกรม AI ตัวแรกของคุณ (การรู้จำรูปแบบ)
- 🧠 **Simple Neural Network** - สร้างเครือข่ายประสาทเทียมตั้งแต่เริ่มต้น
- 🖼️ **Image Classifier** - จัดประเภทภาพพร้อมคำอธิบายอย่างละเอียด
- 🌟 **Hello AI World** - โปรแกรม AI แรกของคุณ (การรู้จำรูปแบบ)
- 🧠 **Simple Neural Network** - สร้างเครือข่ายประสาทเทียมจากศูนย์
- 🖼️ **Image Classifier** - จำแนกภาพพร้อมคำอธิบายโดยละเอียด
- 💬 **การวิเคราะห์ความรู้สึกของข้อความ** - วิเคราะห์ข้อความเชิงบวก/เชิงลบ
These examples are designed to help you understand AI concepts before diving into the full curriculum.
ตัวอย่างเหล่านี้ออกแบบมาเพื่อช่วยให้คุณเข้าใจแนวคิด AI ก่อนที่จะลงลึกในหลักสูตรเต็ม
### 📚 การตั้งค่าหลักสูตรฉบับเต็ม
### 📚 การตั้งค่าหลักสูตรทั้งหมด
- We have created a [บทเรียนการตั้งค่า](./lessons/0-course-setup/setup.md) to help you with setting up your development environment. - For Educators, we have created a [บทเรียนการตั้งคาหลักสูตร](./lessons/0-course-setup/for-teachers.md) for you too!
- How to [เรียกใช้โค้ดใน VSCode หรือ Codepace](./lessons/0-course-setup/how-to-run.md)
- เราได้สร้าง a [บทเรียนการติดตั้ง](./lessons/0-course-setup/setup.md) เพื่อช่วยคุณในการตั้งค่าสภาพแวดล้อมการพัฒนา. - สำหรับผู้สอน เราได้สร้าง a [บทเรียนการตั้งค่าหลักสูตร](./lessons/0-course-setup/for-teachers.md) ให้คุณด้วย!
- วิธี [เรียกใช้โค้ดใน VSCode หรือ a Codepace](./lessons/0-course-setup/how-to-run.md)
Follow these steps:
@ -140,29 +140,29 @@ Don't forget to star (🌟) this repo to find it easier later.
## พบผู้เรียนคนอื่นๆ
Join our [เซิร์ฟเวอร์ Discord อย่างเป็นทางการของเรา](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) to meet and network with other learners taking this course and get support.
เข้าร่วม [เซิร์ฟเวอร์ Discord อย่างเป็นทางการของ AI](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) เพื่อพบปะและสร้างเครือข่ายกับผู้เรียนคนอื่นๆ ที่เรียนหลักสูตรนี้และขอรับการสนับสนุน.
If you have product feedback or questions whilst building visit our [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum)
หากคุณมีคำติชมเกี่ยวกับผลิตภัณฑ์หรือคำถามในระหว่างการพัฒนา ให้ไปที่ [ฟอรัมผู้พัฒนา Azure AI Foundry](https://aka.ms/foundry/forum)
## แบบทดสอบ
> **หมายเหตุเกี่ยวกับแบบทดสอบ**: All quizzes are contained in the Quiz-app folder in etc\quiz-app, or [ออนไลน์ที่นี่](https://ff-quizzes.netlify.app/) They are linked from within the lessons the quiz app can be run locally or deployed to Azure; follow the instruction in the `quiz-app` folder. They are gradually being localized.
> **หมายเหตุเกี่ยวกับแบบทดสอบ**: แบบทดสอบทั้งหมดถูกรวมอยู่ในโฟลเดอร์ Quiz-app ภายใน etc\quiz-app, หรือ [ออนไลน์ที่นี่](https://ff-quizzes.netlify.app/) พวกมันถูกลิงก์จากภายในบทเรียน แอปแบบทดสอบสามารถรันได้ในเครื่องหรือปรับใช้ไปยัง Azure; ทำตามคำแนะนำในโฟลเดอร์ `quiz-app` พวกมันกำลังทยอยถูกแปล
## ต้องการความช่วยเหลือ
Do you have suggestions or found spelling or code errors? Raise an issue or create a pull request.
คุณมีข้อเสนอแนะหรือพบข้อผิดพลาดด้านการสะกดคำหรือตัวโค้ดหรือไม่? เปิด issue หรือสร้าง pull request.
## ขอขอบคุณเป็นพิเศษ
## ขอบคุณเป็นพิเศษ
* **✍️ ผู้เขียนหลัก:** [Dmitry Soshnikov](http://soshnikov.com), PhD
* **🔥 บรรณาธิการ:** [Jen Looper](https://twitter.com/jenlooper), PhD
* **🎨 ผู้วาดสเก็ตช์โน้ต:** [Tomomi Imura](https://twitter.com/girlie_mac)
* **✅ ผู้สร้างแบบทดสอบ:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/)
* **🙏 ผู้มีส่วนร่วมหลัก:** [Evgenii Pishchik](https://github.com/Pe4enIks)
* **🙏 ผู้ร่วมพัฒนาหลัก:** [Evgenii Pishchik](https://github.com/Pe4enIks)
## หลักสูตรอื่นๆ
Our team produces other curricula! Check out:
ทีมของเราจัดทำหลักสูตรอื่นๆ! ดูได้ที่:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -199,24 +199,24 @@ Our team produces other curricula! Check out:
---
### ชุด Copilot
[![Copilot สำหรับการเขียนโปรแกรมแบบจับคู่กับ AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot สำหรับการเขียนโปรแกรมคู่กับ AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot สำหรับ C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## ขอความช่วยเหลือ
## การขอความช่วยเหลือ
If you get stuck or have any questions about building AI apps. Join fellow learners and experienced developers in discussions about MCP. It's a supportive community where questions are welcome and knowledge is shared freely.
หากคุณติดขัดหรือมีคำถามเกี่ยวกับการสร้างแอป AI เข้าร่วมกับผู้เรียนคนอื่นๆ และนักพัฒนาที่มีประสบการณ์ในการอภิปรายเกี่ยวกับ MCP ชุมชนนี้ให้การสนับสนุนโดยยินดีต้อนรับคำถามและแบ่งปันความรู้กันอย่างเสรี
[![Discord ของ Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
If you have product feedback or errors while building visit:
หากคุณมีคำติชมเกี่ยวกับผลิตภัณฑ์หรือข้อผิดพลาดในขณะสร้าง โปรดไปที่:
[![ฟอรัมผู้พัฒนา Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
คำชี้แจง:
เอกสารฉบับนี้ถูกแปลโดยใช้บริการแปลภาษาด้วย AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามอย่างเต็มที่เพื่อความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำได้ เอกสารต้นฉบับในภาษาดั้งเดิมควรถูกถือเป็นแหล่งข้อมูลที่เป็นหลัก หากเป็นข้อมูลที่สำคัญ แนะนำให้ใช้การแปลโดยนักแปลผู้เชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดใด ๆ ที่เกิดจากการใช้การแปลฉบับนี้
ข้อจำกัดความรับผิดชอบ:
เอกสารฉบับนี้ถูกแปลโดยใช้บริการแปลด้วย AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้การแปลมีความถูกต้อง โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความคลาดเคลื่อนได้ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลหลัก หากเป็นข้อมูลที่สำคัญ ขอแนะนำให้ใช้การแปลโดยนักแปลมืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลฉบับนี้
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# การแนะนำเกี่ยวกับ AI
![สรุปเนื้อหาเกี่ยวกับการแนะนำ AI ในรูปแบบภาพวาด](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.th.png)
![สรุปเนื้อหาเกี่ยวกับการแนะนำ AI ในรูปแบบภาพวาด](../../../../translated_images/ai-intro.bf28d1ac4235881c.th.png)
> ภาพวาดโดย [Tomomi Imura](https://twitter.com/girlie_mac)
@ -19,7 +19,7 @@ CO_OP_TRANSLATOR_METADATA:
เดิมทีคอมพิวเตอร์ถูกคิดค้นโดย [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) เพื่อทำงานกับตัวเลขตามกระบวนการที่กำหนดไว้อย่างชัดเจน - หรือที่เรียกว่าอัลกอริทึม คอมพิวเตอร์สมัยใหม่ แม้ว่าจะมีความก้าวหน้ามากกว่ารุ่นต้นแบบในศตวรรษที่ 19 แต่ก็ยังคงยึดแนวคิดเดิมเกี่ยวกับการคำนวณที่ควบคุมได้ ดังนั้นจึงเป็นไปได้ที่จะเขียนโปรแกรมให้คอมพิวเตอร์ทำบางสิ่งได้ หากเรารู้ลำดับขั้นตอนที่แน่นอนที่เราต้องทำเพื่อให้บรรลุเป้าหมาย
![ภาพถ่ายของบุคคล](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.th.png)
![ภาพถ่ายของบุคคล](../../../../translated_images/dsh_age.d212a30d4e54fb5f.th.png)
> ภาพถ่ายโดย [Vickie Soshnikova](http://twitter.com/vickievalerie)
@ -46,7 +46,7 @@ AI แบบอ่อนมีความเชี่ยวชาญสูง
หนึ่งในปัญหาเมื่อพูดถึงคำว่า **[ความฉลาด](https://en.wikipedia.org/wiki/Intelligence)** คือไม่มีคำจำกัดความที่ชัดเจนของคำนี้ บางคนอาจโต้แย้งว่าความฉลาดเชื่อมโยงกับ **การคิดเชิงนามธรรม** หรือ **การรับรู้ตัวเอง** แต่เราไม่สามารถกำหนดมันได้อย่างเหมาะสม
![ภาพถ่ายของแมว](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.th.jpg)
![ภาพถ่ายของแมว](../../../../translated_images/photo-cat.8c8e8fb760ffe457.th.jpg)
> [ภาพถ่าย](https://unsplash.com/photos/75715CVEJhI) โดย [Amber Kipp](https://unsplash.com/@sadmax) จาก Unsplash
@ -98,13 +98,13 @@ AI แบบอ่อนมีความเชี่ยวชาญสูง
> | แล้ว ML ล่ะ? | |
> |--------------|-----------|
> | ส่วนหนึ่งของปัญญาประดิษฐ์ที่อิงกับการเรียนรู้ของคอมพิวเตอร์ในการแก้ปัญหาตามข้อมูลบางอย่างเรียกว่า **Machine Learning** เราจะไม่พิจารณาการเรียนรู้ของเครื่องแบบคลาสสิกในหลักสูตรนี้ - เราแนะนำให้คุณดูหลักสูตร [Machine Learning for Beginners](http://aka.ms/ml-beginners) แยกต่างหาก | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.th.png) |
> | ส่วนหนึ่งของปัญญาประดิษฐ์ที่อิงกับการเรียนรู้ของคอมพิวเตอร์ในการแก้ปัญหาตามข้อมูลบางอย่างเรียกว่า **Machine Learning** เราจะไม่พิจารณาการเรียนรู้ของเครื่องแบบคลาสสิกในหลักสูตรนี้ - เราแนะนำให้คุณดูหลักสูตร [Machine Learning for Beginners](http://aka.ms/ml-beginners) แยกต่างหาก | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d.th.png) |
## ประวัติย่อของ AI
ปัญญาประดิษฐ์เริ่มต้นเป็นสาขาในช่วงกลางศตวรรษที่ 20 ในช่วงแรก วิธีการให้เหตุผลเชิงสัญลักษณ์เป็นวิธีที่แพร่หลาย และนำไปสู่ความสำเร็จที่สำคัญหลายประการ เช่น ระบบผู้เชี่ยวชาญ – โปรแกรมคอมพิวเตอร์ที่สามารถทำหน้าที่เป็นผู้เชี่ยวชาญในบางโดเมนปัญหาที่จำกัด อย่างไรก็ตาม ไม่นานก็ชัดเจนว่าวิธีการดังกล่าวไม่สามารถขยายขอบเขตได้ดี การดึงความรู้จากผู้เชี่ยวชาญ การแสดงในคอมพิวเตอร์ และการรักษาฐานความรู้ให้ถูกต้องกลายเป็นงานที่ซับซ้อนมาก และมีค่าใช้จ่ายสูงเกินไปที่จะนำไปใช้ในหลายกรณี สิ่งนี้นำไปสู่สิ่งที่เรียกว่า [AI Winter](https://en.wikipedia.org/wiki/AI_winter) ในทศวรรษ 1970
<img alt="ประวัติย่อของ AI" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.th.png" width="70%"/>
<img alt="ประวัติย่อของ AI" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a.th.png" width="70%"/>
> ภาพโดย [Dmitry Soshnikov](http://soshnikov.com)

View File

@ -12,7 +12,7 @@
"\n",
"ในตัวอย่างนี้ เราจะสร้างระบบที่ใช้ความรู้เพื่อระบุชนิดของสัตว์โดยอิงจากลักษณะทางกายภาพบางประการ ระบบนี้สามารถแสดงผลได้ในรูปแบบต้นไม้ AND-OR (นี่เป็นเพียงส่วนหนึ่งของต้นไม้ทั้งหมด เราสามารถเพิ่มกฎเพิ่มเติมได้อย่างง่ายดาย):\n",
"\n",
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.th.png)\n"
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.th.png)\n"
]
},
{

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# การแทนความรู้และระบบผู้เชี่ยวชาญ
![สรุปเนื้อหา Symbolic AI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.th.png)
![สรุปเนื้อหา Symbolic AI](../../../../translated_images/ai-symbolic.715a30cb610411a6.th.png)
> ภาพสเก็ตโน้ตโดย [Tomomi Imura](https://twitter.com/girlie_mac)
@ -41,7 +41,7 @@ CO_OP_TRANSLATOR_METADATA:
ดังนั้น ปัญหาของ **การแทนความรู้** คือการหาวิธีที่มีประสิทธิภาพในการแทนความรู้ภายในคอมพิวเตอร์ในรูปแบบของข้อมูล เพื่อให้สามารถใช้งานได้โดยอัตโนมัติ สิ่งนี้สามารถมองได้ว่าเป็นสเปกตรัม:
![สเปกตรัมการแทนความรู้](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.th.png)
![สเปกตรัมการแทนความรู้](../../../../translated_images/knowledge-spectrum.b60df631852c0217.th.png)
> ภาพโดย [Dmitry Soshnikov](http://soshnikov.com)
@ -94,7 +94,7 @@ Block Syntax | Indent | | |
หนึ่งในความสำเร็จแรกๆ ของ Symbolic AI คือ **ระบบผู้เชี่ยวชาญ (Expert Systems)** - ระบบคอมพิวเตอร์ที่ถูกออกแบบมาให้ทำหน้าที่เป็นผู้เชี่ยวชาญในโดเมนปัญหาที่จำกัด ระบบเหล่านี้มีพื้นฐานมาจาก **ฐานความรู้ (Knowledge Base)** ที่ดึงมาจากผู้เชี่ยวชาญมนุษย์ และมี **เครื่องมืออนุมาน (Inference Engine)** ที่ทำการให้เหตุผลบนฐานความรู้นั้น
![โครงสร้างระบบประสาทมนุษย์](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.th.png) | ![โครงสร้างระบบที่ใช้ความรู้](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.th.png)
![โครงสร้างระบบประสาทมนุษย์](../../../../translated_images/arch-human.5d4d35f1bba3ab1c.th.png) | ![โครงสร้างระบบที่ใช้ความรู้](../../../../translated_images/arch-kbs.3ec5c150b09fa8da.th.png)
---------------------------------------------|------------------------------------------------
โครงสร้างระบบประสาทมนุษย์แบบง่าย | โครงสร้างของระบบที่ใช้ความรู้
@ -106,7 +106,7 @@ Block Syntax | Indent | | |
ตัวอย่างเช่น ลองพิจารณาระบบผู้เชี่ยวชาญที่ใช้ในการระบุสัตว์ตามลักษณะทางกายภาพ:
![ต้นไม้ AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.th.png)
![ต้นไม้ AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.th.png)
> ภาพโดย [Dmitry Soshnikov](http://soshnikov.com)

View File

@ -1261,7 +1261,7 @@
"* ค่าความสูญเสียในการฝึกต่ำ - โมเดลสามารถประมาณค่าข้อมูลการฝึกได้ดี เพราะมีพลังในการแสดงออกเพียงพอ\n",
"* ค่าความสูญเสียในการตรวจสอบอาจสูงกว่าค่าความสูญเสียในการฝึกมาก และอาจเริ่มเพิ่มขึ้นระหว่างการฝึก - เนื่องจากโมเดล \"จดจำ\" จุดข้อมูลการฝึก และสูญเสีย \"ภาพรวม\"\n",
"\n",
"![Overfitting](../../../../../translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.th.png)\n",
"![Overfitting](../../../../../translated_images/overfit.a0bd57f717c15769.th.png)\n",
"\n",
"> ในภาพนี้ `x` แทนข้อมูลการฝึก, `o` แทนข้อมูลการตรวจสอบ ซ้าย - โมเดลเชิงเส้น (ชั้นเดียว) ซึ่งประมาณค่าลักษณะของข้อมูลได้ค่อนข้างดี ขวา - โมเดลที่เกิด overfitting ซึ่งสามารถประมาณค่าข้อมูลการฝึกได้อย่างสมบูรณ์แบบ แต่ไม่สามารถใช้งานได้กับข้อมูลอื่น (ค่าความผิดพลาดในการตรวจสอบสูงมาก)\n"
]

View File

@ -58,7 +58,7 @@ Overfitting เป็นแนวคิดที่สำคัญมากใ
ลองพิจารณาปัญหาการประมาณค่าจุด 5 จุด (แสดงด้วย `x` ในกราฟด้านล่าง):
![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.th.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.th.jpg)
![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e.th.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e.th.jpg)
-------------------------|--------------------------
**โมเดลเชิงเส้น, 2 พารามิเตอร์** | **โมเดลไม่เชิงเส้น, 7 พารามิเตอร์**
Training error = 5.3 | Training error = 0
@ -79,7 +79,7 @@ Validation error = 5.1 | Validation error = 20
จากกราฟด้านบน เราสามารถตรวจจับ overfitting ได้จาก training error ที่ต่ำมาก และ validation error ที่สูง โดยปกติระหว่างการฝึก เราจะเห็นทั้ง training และ validation error ลดลง แต่ในบางจุด validation error อาจหยุดลดลงและเริ่มเพิ่มขึ้น นี่เป็นสัญญาณของ overfitting และเป็นตัวบ่งชี้ว่าเราควรหยุดการฝึกในจุดนี้ (หรืออย่างน้อยควรบันทึกสถานะของโมเดล)
![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.th.png)
![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371.th.png)
## วิธีป้องกัน overfitting

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# แนะนำเกี่ยวกับเครือข่ายประสาทเทียม
![สรุปเนื้อหาเกี่ยวกับเครือข่ายประสาทเทียมในรูปวาด](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.th.png)
![สรุปเนื้อหาเกี่ยวกับเครือข่ายประสาทเทียมในรูปวาด](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e83.th.png)
ตามที่เราได้พูดถึงในบทนำ หนึ่งในวิธีที่จะสร้างความฉลาดคือการฝึก **โมเดลคอมพิวเตอร์** หรือ **สมองเทียม** ตั้งแต่กลางศตวรรษที่ 20 นักวิจัยได้ลองใช้โมเดลทางคณิตศาสตร์ต่าง ๆ จนกระทั่งในช่วงไม่กี่ปีที่ผ่านมาแนวทางนี้ได้พิสูจน์แล้วว่าประสบความสำเร็จอย่างมาก โมเดลทางคณิตศาสตร์ของสมองเหล่านี้เรียกว่า **เครือข่ายประสาทเทียม**
@ -36,13 +36,13 @@ CO_OP_TRANSLATOR_METADATA:
จากชีววิทยา เราทราบว่าสมองของเราประกอบด้วยเซลล์ประสาท (neurons) ซึ่งแต่ละเซลล์มี "อินพุต" หลายตัว (dendrites) และ "เอาต์พุต" หนึ่งตัว (axon) ทั้ง dendrites และ axons สามารถนำสัญญาณไฟฟ้าได้ และการเชื่อมต่อระหว่างพวกมัน — ที่เรียกว่า synapses — สามารถแสดงระดับการนำไฟฟ้าที่แตกต่างกัน ซึ่งถูกควบคุมโดยสารสื่อประสาท
![โมเดลของเซลล์ประสาท](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.th.jpg) | ![โมเดลของเซลล์ประสาท](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.th.png)
![โมเดลของเซลล์ประสาท](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6.th.jpg) | ![โมเดลของเซลล์ประสาท](../../../../translated_images/artneuron.1a5daa88d20ebe6f.th.png)
----|----
เซลล์ประสาทจริง *([ภาพ](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) จาก Wikipedia)* | เซลล์ประสาทเทียม *(ภาพโดยผู้เขียน)*
ดังนั้น โมเดลทางคณิตศาสตร์ที่ง่ายที่สุดของเซลล์ประสาทจะมีอินพุตหลายตัว X<sub>1</sub>, ..., X<sub>N</sub> และเอาต์พุต Y พร้อมกับชุดของน้ำหนัก W<sub>1</sub>, ..., W<sub>N</sub> เอาต์พุตจะถูกคำนวณเป็น:
<img src="../../../../translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.th.png" alt="Y = f\left(\sum_{i=1}^N X_iW_i\right)" width="131" height="53" align="center"/>
<img src="../../../../translated_images/netout.1eb15eb76fd76731.th.png" alt="Y = f\left(\sum_{i=1}^N X_iW_i\right)" width="131" height="53" align="center"/>
โดยที่ f คือ **ฟังก์ชันการกระตุ้น** ที่ไม่เป็นเชิงเส้น

View File

@ -73,14 +73,14 @@ im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
* **การประมวลผลภาพถ่ายของหนังสือเบรลล์** เรามุ่งเน้นที่การใช้ thresholding, การตรวจจับคุณลักษณะ, การแปลงมุมมอง และการปรับอาร์เรย์ NumPy เพื่อแยกสัญลักษณ์เบรลล์แต่ละตัวสำหรับการจำแนกผลลัพธ์โดยเครือข่ายประสาทเทียม
![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.th.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.th.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.th.png)
![Braille Image](../../../../../translated_images/braille.341962ff76b1bd70.th.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c7.th.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d5339.th.png)
----|-----|-----
> ภาพจาก [OpenCV.ipynb](OpenCV.ipynb)
* **การตรวจจับการเคลื่อนไหวในวิดีโอโดยใช้ความแตกต่างของเฟรม** หากกล้องอยู่ในตำแหน่งคงที่ เฟรมจากกล้องควรมีความคล้ายคลึงกันมาก โดยเฟรมที่แสดงผลเป็นอาร์เรย์ เพียงแค่ลบอาร์เรย์ของเฟรมสองเฟรมที่ต่อเนื่องกัน คุณจะได้ความแตกต่างของพิกเซล ซึ่งควรต่ำสำหรับเฟรมที่นิ่ง และสูงขึ้นเมื่อมีการเคลื่อนไหวในภาพ
![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.th.png)
![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c.th.png)
> ภาพจาก [OpenCV.ipynb](OpenCV.ipynb)
@ -89,7 +89,7 @@ im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
- **Dense Optical Flow** คำนวณสนามเวกเตอร์ที่แสดงว่าพิกเซลแต่ละตัวเคลื่อนที่ไปที่ใด
- **Sparse Optical Flow** ใช้คุณลักษณะเด่นในภาพ (เช่น ขอบ) และสร้างเส้นทางการเคลื่อนที่ของมันจากเฟรมหนึ่งไปยังอีกเฟรมหนึ่ง
![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.th.png)
![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a.th.png)
> ภาพจาก [OpenCV.ipynb](OpenCV.ipynb)

View File

@ -13,11 +13,11 @@ CO_OP_TRANSLATOR_METADATA:
VGG-16 เป็นเครือข่ายที่ทำคะแนนความแม่นยำได้ถึง 92.7% ในการจัดประเภท ImageNet top-5 ในปี 2014 โดยมีโครงสร้างเลเยอร์ดังนี้:
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.th.jpg)
![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51ba.th.jpg)
ดังที่คุณเห็น VGG ใช้สถาปัตยกรรมแบบพีระมิดดั้งเดิม ซึ่งเป็นลำดับของเลเยอร์คอนโวลูชันและพูลลิ่ง
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.th.jpg)
![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49f.th.jpg)
> ภาพจาก [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493)

View File

@ -262,7 +262,7 @@
"\n",
"ดังนั้น ใน CNN ทั่วไปจะมีเลเยอร์คอนโวลูชันหลายชั้น โดยมีเลเยอร์การลดขนาดอยู่ระหว่างเพื่อช่วยลดมิติของภาพ นอกจากนี้เรายังเพิ่มจำนวนตัวกรอง เพราะเมื่อรูปแบบมีความซับซ้อนมากขึ้น จะมีการผสมผสานที่น่าสนใจมากขึ้นที่เราต้องค้นหา\n",
"\n",
"![ภาพแสดงเลเยอร์คอนโวลูชันหลายชั้นพร้อมเลเยอร์การลดขนาด.](../../../../../translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.th.png)\n",
"![ภาพแสดงเลเยอร์คอนโวลูชันหลายชั้นพร้อมเลเยอร์การลดขนาด.](../../../../../translated_images/cnn-pyramid.85915455759ef0ce.th.png)\n",
"\n",
"เนื่องจากการลดมิติของพื้นที่และการเพิ่มมิติของฟีเจอร์/ตัวกรอง สถาปัตยกรรมนี้จึงถูกเรียกว่า **pyramid architecture**\n"
]

View File

@ -361,7 +361,7 @@
"\n",
"ดังนั้น ใน CNN ทั่วไปจะมีเลเยอร์คอนโวลูชันหลายชั้น โดยมีเลเยอร์การทำพูลลิ่งแทรกอยู่ระหว่างเพื่อช่วยลดมิติของภาพ นอกจากนี้ เรายังเพิ่มจำนวนฟิลเตอร์ เพราะเมื่อรูปแบบมีความซับซ้อนมากขึ้น ก็จะมีการผสมผสานที่น่าสนใจมากขึ้นที่เราต้องค้นหา\n",
"\n",
"![ภาพแสดงเลเยอร์คอนโวลูชันหลายชั้นพร้อมเลเยอร์การทำพูลลิ่ง](../../../../../translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.th.png)\n",
"![ภาพแสดงเลเยอร์คอนโวลูชันหลายชั้นพร้อมเลเยอร์การทำพูลลิ่ง](../../../../../translated_images/cnn-pyramid.85915455759ef0ce.th.png)\n",
"\n",
"เนื่องจากการลดมิติของพื้นที่และการเพิ่มมิติของฟีเจอร์/ฟิลเตอร์ สถาปัตยกรรมนี้จึงถูกเรียกว่า **pyramid architecture**\n"
]

View File

@ -17,7 +17,7 @@ CO_OP_TRANSLATOR_METADATA:
เพื่อดึงรูปแบบเหล่านี้ออกมา เราจะใช้แนวคิดของ **ฟิลเตอร์คอนโวลูชัน** อย่างที่คุณทราบ ภาพถูกแสดงในรูปแบบเมทริกซ์ 2 มิติ หรือเทนเซอร์ 3 มิติที่มีความลึกของสี การใช้ฟิลเตอร์หมายถึงการนำเมทริกซ์ **ฟิลเตอร์เคอร์เนล** ขนาดเล็กมาใช้ และสำหรับแต่ละพิกเซลในภาพต้นฉบับ เราจะคำนวณค่าเฉลี่ยถ่วงน้ำหนักกับจุดที่อยู่ใกล้เคียง เราสามารถมองสิ่งนี้เหมือนหน้าต่างเล็ก ๆ ที่เลื่อนผ่านภาพทั้งหมด และเฉลี่ยค่าพิกเซลทั้งหมดตามน้ำหนักในเมทริกซ์ฟิลเตอร์เคอร์เนล
![ฟิลเตอร์ขอบแนวตั้ง](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.th.png) | ![ฟิลเตอร์ขอบแนวนอน](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.th.png)
![ฟิลเตอร์ขอบแนวตั้ง](../../../../../translated_images/filter-vert.b7148390ca0bc356.th.png) | ![ฟิลเตอร์ขอบแนวนอน](../../../../../translated_images/filter-horiz.59b80ed4feb946ef.th.png)
----|----
> ภาพโดย Dmitry Soshnikov
@ -38,7 +38,7 @@ CO_OP_TRANSLATOR_METADATA:
* เราสามารถออกแบบเครือข่ายในลักษณะที่ฟิลเตอร์ถูกฝึกฝนโดยอัตโนมัติ
* เราสามารถใช้วิธีเดียวกันนี้เพื่อค้นหารูปแบบในคุณลักษณะระดับสูง ไม่ใช่แค่ในภาพต้นฉบับ ดังนั้นการดึงคุณลักษณะของ CNN จึงทำงานในลำดับชั้นของคุณลักษณะ โดยเริ่มจากการผสมผสานพิกเซลระดับต่ำไปจนถึงการผสมผสานระดับสูงของส่วนต่าง ๆ ของภาพ
![การดึงคุณลักษณะแบบลำดับชั้น](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.th.png)
![การดึงคุณลักษณะแบบลำดับชั้น](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb64.th.png)
> ภาพจาก [งานวิจัยโดย Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) ซึ่งอ้างอิงจาก [งานวิจัยของพวกเขา](https://dl.acm.org/doi/abs/10.1145/1553374.1553453)
@ -55,9 +55,9 @@ CNN ส่วนใหญ่ที่ใช้สำหรับการปร
ตัวอย่างเช่น ลองดูสถาปัตยกรรมของ VGG-16 ซึ่งเป็นเครือข่ายที่ทำได้ถึงความแม่นยำ 92.7% ในการจัดอันดับ 5 อันดับแรกของ ImageNet ในปี 2014:
![ชั้นของ ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.th.jpg)
![ชั้นของ ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51ba.th.jpg)
![พีระมิดของ ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.th.jpg)
![พีระมิดของ ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49f.th.jpg)
> ภาพจาก [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493)

View File

@ -21,7 +21,7 @@ CO_OP_TRANSLATOR_METADATA:
เราจะใช้ [Oxford-IIIT Pet Dataset](https://www.robots.ox.ac.uk/~vgg/data/pets/) ซึ่งมีภาพของสุนัขและแมวจาก 37 สายพันธุ์ที่แตกต่างกัน
![ชุดข้อมูลที่เราจะใช้](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.th.png)
![ชุดข้อมูลที่เราจะใช้](../../../../../../translated_images/data.50b2a9d5484bdbf0.th.png)
เพื่อดาวน์โหลดชุดข้อมูล ให้ใช้โค้ดนี้:

View File

@ -50,7 +50,7 @@
"\n",
"เพื่อสร้างภาพแมวที่สมบูรณ์แบบ เราจะเริ่มต้นด้วยภาพที่เป็นสัญญาณรบกวนแบบสุ่ม และจะใช้เทคนิคการปรับให้เหมาะสมด้วยการไล่ระดับ (gradient descent) เพื่อปรับภาพให้เครือข่ายสามารถจดจำว่าเป็นแมวได้\n",
"\n",
"![วงจรการปรับให้เหมาะสม](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.th.png)\n",
"![วงจรการปรับให้เหมาะสม](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044.th.png)\n",
"\n",
"นี่คือภาพเริ่มต้นของเรา:\n"
]

View File

@ -29,7 +29,7 @@ CO_OP_TRANSLATOR_METADATA:
ตัวอย่างคุณลักษณะที่ดึงออกมาจากภาพแมวโดยเครือข่าย VGG-16:
![คุณลักษณะที่ดึงออกมาโดย VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.th.png)
![คุณลักษณะที่ดึงออกมาโดย VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b95.th.png)
## ชุดข้อมูลแมวและสุนัข
@ -48,19 +48,19 @@ CO_OP_TRANSLATOR_METADATA:
วิธีหนึ่งที่เราสามารถทำได้คือเริ่มต้นด้วยภาพสุ่ม และพยายามใช้เทคนิค **การปรับแต่งด้วยการลดเกรเดียนต์** เพื่อปรับภาพนั้นให้เครือข่ายเริ่มคิดว่ามันคือแมว
![วงจรการปรับแต่งภาพ](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.th.png)
![วงจรการปรับแต่งภาพ](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044.th.png)
อย่างไรก็ตาม หากเราทำเช่นนี้ เราจะได้สิ่งที่คล้ายกับสัญญาณรบกวนแบบสุ่ม นั่นเป็นเพราะ *มีหลายวิธีที่จะทำให้เครือข่ายคิดว่าภาพอินพุตคือแมว* รวมถึงบางวิธีที่ไม่มีความหมายในเชิงภาพ แม้ว่าภาพเหล่านั้นจะมีรูปแบบที่เป็นลักษณะเฉพาะของแมว แต่ไม่มีอะไรบังคับให้มันดูโดดเด่นในเชิงภาพ
เพื่อปรับปรุงผลลัพธ์ เราสามารถเพิ่มคำศัพท์อีกคำหนึ่งในฟังก์ชันการสูญเสีย ซึ่งเรียกว่า **การสูญเสียความแปรปรวน** เป็นเมตริกที่แสดงให้เห็นว่าพิกเซลที่อยู่ใกล้เคียงในภาพมีความคล้ายคลึงกันเพียงใด การลดการสูญเสียความแปรปรวนทำให้ภาพเรียบขึ้นและกำจัดสัญญาณรบกวน - เผยให้เห็นรูปแบบที่น่าดึงดูดในเชิงภาพมากขึ้น นี่คือตัวอย่างของภาพ "ในอุดมคติ" ที่ถูกจัดประเภทว่าเป็นแมวและม้าลายด้วยความน่าจะเป็นสูง:
![แมวในอุดมคติ](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.th.png) | ![ม้าลายในอุดมคติ](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.th.png)
![แมวในอุดมคติ](../../../../../translated_images/ideal-cat.203dd4597643d6b0.th.png) | ![ม้าลายในอุดมคติ](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a.th.png)
-----|-----
*แมวในอุดมคติ* | *ม้าลายในอุดมคติ*
วิธีการที่คล้ายกันสามารถใช้เพื่อทำการโจมตีแบบ **adversarial** บนเครือข่ายประสาท สมมติว่าเราต้องการหลอกเครือข่ายประสาทและทำให้สุนัขดูเหมือนแมว หากเราใช้ภาพของสุนัขที่เครือข่ายจำแนกได้ว่าเป็นสุนัข เราสามารถปรับแต่งมันเล็กน้อยโดยใช้การลดเกรเดียนต์จนกว่าเครือข่ายจะเริ่มจำแนกมันว่าเป็นแมว:
![ภาพของสุนัข](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.th.png) | ![ภาพของสุนัขที่ถูกจัดประเภทว่าเป็นแมว](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.th.png)
![ภาพของสุนัข](../../../../../translated_images/original-dog.8f68a67d2fe0911f.th.png) | ![ภาพของสุนัขที่ถูกจัดประเภทว่าเป็นแมว](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89.th.png)
-----|-----
*ภาพต้นฉบับของสุนัข* | *ภาพของสุนัขที่ถูกจัดประเภทว่าเป็นแมว*

View File

@ -21,7 +21,7 @@
"\n",
"เนื่องจากเรากำลังฝึก autoencoder เพื่อจับข้อมูลจากภาพต้นฉบับให้ได้มากที่สุดเพื่อการสร้างใหม่ที่แม่นยำ เครือข่ายจึงพยายามค้นหา **embedding** ที่ดีที่สุดของภาพนำเข้าเพื่อจับความหมาย\n",
"\n",
"![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.th.jpg)\n",
"![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb61.th.jpg)\n",
"\n",
"> ภาพจาก [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html)\n",
"\n",

View File

@ -19,7 +19,7 @@
"\n",
"เนื่องจากเรากำลังฝึก autoencoder เพื่อจับข้อมูลจากภาพต้นฉบับให้ได้มากที่สุดเพื่อการสร้างใหม่ที่แม่นยำ เครือข่ายจึงพยายามค้นหา **embedding** ที่ดีที่สุดของภาพนำเข้าเพื่อจับความหมายของภาพ\n",
"\n",
"![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.th.jpg)\n",
"![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb61.th.jpg)\n",
"\n",
"*ภาพจาก [บล็อก Keras](https://blog.keras.io/building-autoencoders-in-keras.html)*\n",
"\n",

View File

@ -19,7 +19,7 @@ CO_OP_TRANSLATOR_METADATA:
เนื่องจากเรากำลังฝึกออโตเอนโคเดอร์เพื่อจับข้อมูลจากภาพต้นฉบับให้ได้มากที่สุดเพื่อการสร้างใหม่ที่แม่นยำ เครือข่ายจึงพยายามค้นหา **การฝังตัว** ที่ดีที่สุดของภาพอินพุตเพื่อจับความหมายของภาพ
![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.th.jpg)
![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb61.th.jpg)
> ภาพจาก [บล็อก Keras](https://blog.keras.io/building-autoencoders-in-keras.html)

View File

@ -13,7 +13,7 @@ CO_OP_TRANSLATOR_METADATA:
## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ai/quiz/21)
![การตรวจจับวัตถุ](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.th.png)
![การตรวจจับวัตถุ](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be.th.png)
> ภาพจาก [เว็บไซต์ YOLO v2](https://pjreddie.com/darknet/yolov2/)
@ -25,7 +25,7 @@ CO_OP_TRANSLATOR_METADATA:
2. ใช้การจำแนกภาพในแต่ละส่วน
3. ส่วนที่มีการกระตุ้นสูงพอสมควรสามารถพิจารณาได้ว่ามีวัตถุที่เราต้องการอยู่
![การตรวจจับวัตถุแบบพื้นฐาน](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.th.png)
![การตรวจจับวัตถุแบบพื้นฐาน](../../../../../translated_images/naive-detection.e7f1ba220ccd08c6.th.png)
> *ภาพจาก [สมุดบันทึกการฝึกฝน](ObjectDetection-TF.ipynb)*
@ -42,7 +42,7 @@ CO_OP_TRANSLATOR_METADATA:
* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 คลาส
* [COCO](http://cocodataset.org/#home) - Common Objects in Context. มี 80 คลาส, กรอบวัตถุ และหน้ากากการแบ่งส่วน
![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.th.jpg)
![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb.th.jpg)
## ตัวชี้วัดสำหรับการตรวจจับวัตถุ
@ -50,7 +50,7 @@ CO_OP_TRANSLATOR_METADATA:
ในขณะที่การจำแนกภาพสามารถวัดผลได้ง่ายว่าประสิทธิภาพของอัลกอริทึมเป็นอย่างไร สำหรับการตรวจจับวัตถุ เราต้องวัดทั้งความถูกต้องของคลาส และความแม่นยำของตำแหน่งกรอบวัตถุที่คาดการณ์ได้ สำหรับอย่างหลัง เราใช้ตัวชี้วัดที่เรียกว่า **Intersection over Union** (IoU) ซึ่งวัดว่าพื้นที่สองส่วน (หรือพื้นที่ใดๆ) ซ้อนทับกันได้ดีเพียงใด
![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.th.png)
![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e11.th.png)
> *รูปที่ 2 จาก [บทความที่ยอดเยี่ยมเกี่ยวกับ IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)*
@ -98,11 +98,11 @@ $$
[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) ใช้ [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) เพื่อสร้างโครงสร้างลำดับชั้นของ ROI ซึ่งจะถูกส่งผ่าน CNN เพื่อดึงคุณลักษณะ และใช้ SVM-classifiers เพื่อกำหนดคลาสของวัตถุ และการถดถอยเชิงเส้นเพื่อกำหนดพิกัดของ *กรอบวัตถุ* [เอกสารอย่างเป็นทางการ](https://arxiv.org/pdf/1506.01497v1.pdf)
![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.th.png)
![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1f.th.png)
> *ภาพจาก van de Sande et al. ICCV’11*
![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.th.png)
![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484.th.png)
> *ภาพจาก [บทความนี้](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)*
@ -110,7 +110,7 @@ $$
วิธีนี้คล้ายกับ R-CNN แต่ ROI ถูกกำหนดหลังจากที่เลเยอร์คอนโวลูชันถูกประยุกต์ใช้แล้ว
![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.th.png)
![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb4188875.th.png)
> ภาพจาก [เอกสารอย่างเป็นทางการ](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015
@ -118,7 +118,7 @@ $$
แนวคิดหลักของวิธีนี้คือการใช้เครือข่ายประสาทเพื่อทำนาย ROI ที่เรียกว่า *Region Proposal Network* [เอกสาร](https://arxiv.org/pdf/1506.01497.pdf), 2016
![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.th.png)
![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30a.th.png)
> ภาพจาก [เอกสารอย่างเป็นทางการ](https://arxiv.org/pdf/1506.01497.pdf)
@ -130,7 +130,7 @@ $$
2. คุณลักษณะถูกประมวลผลโดย **Position-Sensitive Score Map** วัตถุแต่ละตัวจาก $C$ คลาสถูกแบ่งออกเป็น $k\times k$ พื้นที่ และเราฝึกให้ทำนายส่วนต่างๆ ของวัตถุ
3. สำหรับแต่ละส่วนจาก $k\times k$ พื้นที่ เครือข่ายทั้งหมดจะโหวตให้คลาสของวัตถุ และคลาสที่มีคะแนนโหวตสูงสุดจะถูกเลือก
![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.th.png)
![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da.th.png)
> ภาพจาก [เอกสารอย่างเป็นทางการ](https://arxiv.org/abs/1605.06409)
@ -141,7 +141,7 @@ YOLO เป็นอัลกอริทึมแบบเรียลไทม
* ภาพถูกแบ่งออกเป็น $S\times S$ พื้นที่
* สำหรับแต่ละพื้นที่ **CNN** ทำนายวัตถุ $n$ ชนิด, พิกัด *กรอบวัตถุ* และ *ความมั่นใจ*=*ความน่าจะเป็น* * IoU
![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.th.png)
![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4e.th.png)
> ภาพจาก [เอกสารอย่างเป็นทางการ](https://arxiv.org/abs/1506.02640)

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# การมองเห็นของคอมพิวเตอร์
![สรุปเนื้อหาเกี่ยวกับการมองเห็นของคอมพิวเตอร์ในรูปวาด](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.th.png)
![สรุปเนื้อหาเกี่ยวกับการมองเห็นของคอมพิวเตอร์ในรูปวาด](../../../../translated_images/ai-computervision.6506ebebac3fbf76.th.png)
ในส่วนนี้เราจะเรียนรู้เกี่ยวกับ:

View File

@ -199,7 +199,7 @@
"\n",
"**Bag of Words** (BoW) เป็นการแสดงข้อความในรูปแบบเวกเตอร์ที่ใช้กันอย่างแพร่หลายที่สุดในวิธีการแบบดั้งเดิม โดยแต่ละคำจะถูกเชื่อมโยงกับดัชนีในเวกเตอร์ และแต่ละองค์ประกอบในเวกเตอร์จะแสดงจำนวนครั้งที่คำปรากฏในเอกสารที่กำหนด\n",
"\n",
"![ภาพแสดงการแสดงข้อความแบบ Bag of Words ในหน่วยความจำ](../../../../../translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.th.png) \n",
"![ภาพแสดงการแสดงข้อความแบบ Bag of Words ในหน่วยความจำ](../../../../../translated_images/bag-of-words-example.606fc1738f1d7ba9.th.png) \n",
"\n",
"> **Note**: คุณสามารถมองว่า BoW เป็นผลรวมของเวกเตอร์แบบ one-hot-encoded ของคำแต่ละคำในข้อความได้เช่นกัน\n",
"\n",

View File

@ -188,7 +188,7 @@
"\n",
"**Bag-of-words** (BoW) เป็นการแสดงข้อความในรูปแบบเวกเตอร์ที่เข้าใจได้ง่ายที่สุดในบรรดาการแสดงข้อความแบบเวกเตอร์แบบดั้งเดิม โดยแต่ละคำจะถูกเชื่อมโยงกับดัชนีในเวกเตอร์ และแต่ละองค์ประกอบในเวกเตอร์จะบอกจำนวนครั้งที่คำแต่ละคำปรากฏในเอกสารที่กำหนด\n",
"\n",
"![ภาพแสดงการแสดงข้อความแบบ bag-of-words ในหน่วยความจำ](../../../../../translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.th.png)\n",
"![ภาพแสดงการแสดงข้อความแบบ bag-of-words ในหน่วยความจำ](../../../../../translated_images/bag-of-words-example.606fc1738f1d7ba9.th.png)\n",
"\n",
"> **Note**: คุณสามารถคิดถึง BoW ว่าเป็นผลรวมของเวกเตอร์แบบ one-hot-encoded ของคำแต่ละคำในข้อความก็ได้เช่นกัน\n",
"\n",

View File

@ -62,7 +62,7 @@
"\n",
"โดยการใช้ชั้นการฝังข้อมูลเป็นชั้นแรกในเครือข่ายของเรา เราสามารถเปลี่ยนจากโมเดล bag-of-words ไปเป็นโมเดล **embedding bag** ซึ่งเราจะเปลี่ยนคำแต่ละคำในข้อความของเราให้เป็นการฝังข้อมูลที่สอดคล้องกัน และจากนั้นคำนวณฟังก์ชันรวมบางอย่างจากการฝังข้อมูลเหล่านั้น เช่น `sum`, `average` หรือ `max`\n",
"\n",
"![ภาพแสดงตัวอย่างตัวจำแนกที่ใช้การฝังข้อมูลสำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.th.png)\n",
"![ภาพแสดงตัวอย่างตัวจำแนกที่ใช้การฝังข้อมูลสำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eee.th.png)\n",
"\n",
"เครือข่ายประสาทเทียมของเราจะเริ่มต้นด้วยชั้นการฝังข้อมูล ตามด้วยชั้นการรวม และตัวจำแนกเชิงเส้นที่อยู่ด้านบน\n"
]
@ -176,7 +176,7 @@
"\n",
"ในสถาปัตยกรรมก่อนหน้านี้ เราจำเป็นต้องเติมข้อมูลในทุกลำดับให้มีความยาวเท่ากันเพื่อให้สามารถใส่ลงในชุดข้อมูลย่อยได้ วิธีนี้ไม่ใช่วิธีที่มีประสิทธิภาพที่สุดในการแสดงผลลำดับที่มีความยาวแปรผัน - อีกวิธีหนึ่งคือการใช้ **เวกเตอร์ออฟเซ็ต** ซึ่งจะเก็บค่าตำแหน่งเริ่มต้นของลำดับทั้งหมดที่ถูกจัดเก็บในเวกเตอร์ขนาดใหญ่หนึ่งตัว\n",
"\n",
"![ภาพแสดงการแสดงผลลำดับแบบออฟเซ็ต](../../../../../translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.th.png)\n",
"![ภาพแสดงการแสดงผลลำดับแบบออฟเซ็ต](../../../../../translated_images/offset-sequence-representation.eb73fcefb29b46ee.th.png)\n",
"\n",
"> **Note**: ในภาพด้านบน เราแสดงลำดับของตัวอักษร แต่ในตัวอย่างของเรา เรากำลังทำงานกับลำดับของคำ อย่างไรก็ตาม หลักการทั่วไปในการแสดงผลลำดับด้วยเวกเตอร์ออฟเซ็ตยังคงเหมือนเดิม\n",
"\n",
@ -311,7 +311,7 @@
"\n",
"CBoW ทำงานได้เร็วกว่า ในขณะที่ skip-gram ช้ากว่า แต่สามารถแสดงคำที่พบได้น้อยได้ดีกว่า\n",
"\n",
"![ภาพแสดงอัลกอริทึม CBoW และ Skip-Gram สำหรับการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.th.png)\n",
"![ภาพแสดงอัลกอริทึม CBoW และ Skip-Gram สำหรับการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.th.png)\n",
"\n",
"เพื่อทดลองใช้การฝัง Word2Vec ที่ได้รับการฝึกฝนล่วงหน้าบนชุดข้อมูล Google News เราสามารถใช้ไลบรารี **gensim** ด้านล่างนี้คือตัวอย่างการค้นหาคำที่คล้ายกับ 'neural' มากที่สุด\n",
"\n",

View File

@ -37,7 +37,7 @@
"\n",
"เมื่อใช้ embedding layer เป็นเลเยอร์แรกในเครือข่ายของเรา เราสามารถเปลี่ยนจาก bag-of-words ไปเป็นโมเดล **embedding bag** โดยที่เราจะแปลงแต่ละคำในข้อความของเราให้เป็น embedding ที่สอดคล้องกัน และคำนวณฟังก์ชันรวมบางอย่างจาก embeddings เหล่านั้น เช่น `sum`, `average` หรือ `max`\n",
"\n",
"![ภาพแสดงตัวอย่าง embedding classifier สำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.th.png)\n",
"![ภาพแสดงตัวอย่าง embedding classifier สำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eee.th.png)\n",
"\n",
"เครือข่ายประสาทสำหรับการจำแนกของเราประกอบด้วยเลเยอร์ดังต่อไปนี้:\n",
"\n",
@ -281,7 +281,7 @@
"\n",
"CBoW ทำงานได้เร็วกว่า ในขณะที่ skip-gram แม้จะช้ากว่า แต่สามารถแสดงคำที่พบได้น้อยได้ดีกว่า\n",
"\n",
"![ภาพแสดงอัลกอริธึม CBoW และ Skip-Gram สำหรับแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.th.png)\n",
"![ภาพแสดงอัลกอริธึม CBoW และ Skip-Gram สำหรับแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.th.png)\n",
"\n",
"เพื่อทดลองใช้การฝัง Word2Vec ที่ฝึกไว้ล่วงหน้าด้วยชุดข้อมูล Google News เราสามารถใช้ไลบรารี **gensim** ด้านล่างนี้เป็นตัวอย่างการค้นหาคำที่คล้ายกับ 'neural' มากที่สุด\n",
"\n",

View File

@ -19,7 +19,7 @@ CO_OP_TRANSLATOR_METADATA:
โดยการใช้เลเยอร์การฝังข้อมูลเป็นเลเยอร์แรกในเครือข่ายจำแนกประเภทของเรา เราสามารถเปลี่ยนจากโมเดลถุงคำไปเป็น **embedding bag** ซึ่งเราจะเปลี่ยนคำแต่ละคำในข้อความของเราให้เป็นการฝังข้อมูลที่สอดคล้องกัน และคำนวณฟังก์ชันรวมบางอย่างจากการฝังข้อมูลเหล่านั้น เช่น `sum`, `average` หรือ `max`
![ภาพแสดงตัวอย่างการจำแนกประเภทด้วยการฝังข้อมูลสำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.th.png)
![ภาพแสดงตัวอย่างการจำแนกประเภทด้วยการฝังข้อมูลสำหรับคำในลำดับห้าคำ](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eee.th.png)
> ภาพโดยผู้เขียน
@ -40,7 +40,7 @@ CO_OP_TRANSLATOR_METADATA:
CBoW ทำงานได้เร็วกว่า ในขณะที่ skip-gram ทำงานช้ากว่า แต่สามารถแสดงคำที่ไม่ค่อยปรากฏได้ดีกว่า
![ภาพแสดงทั้งอัลกอริทึม CBoW และ Skip-Gram ในการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.th.png)
![ภาพแสดงทั้งอัลกอริทึม CBoW และ Skip-Gram ในการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.th.png)
> ภาพจาก [เอกสารนี้](https://arxiv.org/pdf/1301.3781.pdf)

View File

@ -23,7 +23,7 @@ CO_OP_TRANSLATOR_METADATA:
* **Continuous Bag-of-Words** (CBoW) โดยการทำนายโทเค็นตรงกลาง $W_0$ ในลำดับโทเค็น $W_{-N}$, ..., $W_N$
* **Skip-gram** โดยการทำนายชุดโทเค็นที่อยู่ใกล้เคียง {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} จากโทเค็นตรงกลาง $W_0$
![ภาพจากงานวิจัยเกี่ยวกับการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.th.png)
![ภาพจากงานวิจัยเกี่ยวกับการแปลงคำเป็นเวกเตอร์](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6.th.png)
> ภาพจาก [งานวิจัยนี้](https://arxiv.org/pdf/1301.3781.pdf)

View File

@ -15,7 +15,7 @@ CO_OP_TRANSLATOR_METADATA:
เพื่อจับความหมายของลำดับข้อความ เราจำเป็นต้องใช้สถาปัตยกรรมเครือข่ายประสาทอีกแบบหนึ่ง ซึ่งเรียกว่า **เครือข่ายประสาทแบบวนซ้ำ** หรือ RNN ใน RNN เราจะส่งประโยคผ่านเครือข่ายทีละสัญลักษณ์ และเครือข่ายจะสร้าง **สถานะ** ซึ่งเราจะส่งกลับเข้าเครือข่ายพร้อมกับสัญลักษณ์ถัดไป
![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.th.png)
![RNN](../../../../../translated_images/rnn.27f5c29c53d727b5.th.png)
> ภาพโดยผู้เขียน
@ -61,7 +61,7 @@ CO_OP_TRANSLATOR_METADATA:
เครือข่ายแบบวนซ้ำ ไม่ว่าจะเป็นแบบทิศทางเดียวหรือสองทิศทาง จะจับรูปแบบบางอย่างภายในลำดับ และสามารถเก็บรูปแบบเหล่านั้นไว้ในเวกเตอร์สถานะหรือส่งผ่านไปยังผลลัพธ์ เช่นเดียวกับเครือข่ายแบบ convolutional เราสามารถสร้างเลเยอร์แบบวนซ้ำอีกเลเยอร์หนึ่งบนเลเยอร์แรกเพื่อจับรูปแบบระดับสูงและสร้างจากรูปแบบระดับต่ำที่ถูกดึงออกโดยเลเยอร์แรก สิ่งนี้นำเราไปสู่แนวคิดของ **RNN หลายเลเยอร์** ซึ่งประกอบด้วยเครือข่ายแบบวนซ้ำสองหรือมากกว่า โดยที่ผลลัพธ์ของเลเยอร์ก่อนหน้าจะถูกส่งไปยังเลเยอร์ถัดไปเป็นอินพุต
![ภาพแสดง RNN แบบหลายเลเยอร์ LSTM](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.th.jpg)
![ภาพแสดง RNN แบบหลายเลเยอร์ LSTM](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.th.jpg)
*ภาพจาก [โพสต์ที่ยอดเยี่ยมนี้](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) โดย Fernando López*

View File

@ -420,7 +420,7 @@
"\n",
"เครือข่ายแบบวนซ้ำ ไม่ว่าจะเป็นแบบทิศทางเดียวหรือสองทิศทาง จะจับรูปแบบบางอย่างภายในลำดับ และสามารถเก็บรูปแบบเหล่านั้นไว้ในเวกเตอร์สถานะหรือส่งต่อไปยังผลลัพธ์ เช่นเดียวกับเครือข่ายแบบคอนโวลูชัน (convolutional networks) เราสามารถสร้างเลเยอร์แบบวนซ้ำอีกชั้นหนึ่งบนเลเยอร์แรกเพื่อจับรูปแบบในระดับที่สูงขึ้น ซึ่งสร้างขึ้นจากรูปแบบระดับต่ำที่เลเยอร์แรกสกัดออกมา สิ่งนี้นำเราไปสู่แนวคิดของ **multi-layer RNN** ซึ่งประกอบด้วยเครือข่ายแบบวนซ้ำสองชั้นหรือมากกว่า โดยที่ผลลัพธ์ของเลเยอร์ก่อนหน้าจะถูกส่งไปยังเลเยอร์ถัดไปเป็นอินพุต\n",
"\n",
"![ภาพแสดง Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.th.jpg)\n",
"![ภาพแสดง Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.th.jpg)\n",
"\n",
"*ภาพจาก [บทความที่ยอดเยี่ยมนี้](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) โดย Fernando López*\n",
"\n",

View File

@ -10,7 +10,7 @@
"\n",
"เพื่อจับความหมายของลำดับข้อความ เราจะใช้สถาปัตยกรรมเครือข่ายประสาทเทียมที่เรียกว่า **เครือข่ายประสาทเทียมแบบวนซ้ำ** หรือ RNN เมื่อใช้ RNN เราจะส่งประโยคของเราผ่านเครือข่ายทีละโทเค็น และเครือข่ายจะสร้าง **สถานะ** ซึ่งเราจะส่งกลับเข้าไปในเครือข่ายอีกครั้งพร้อมกับโทเค็นถัดไป\n",
"\n",
"![ภาพแสดงตัวอย่างการสร้างเครือข่ายประสาทเทียมแบบวนซ้ำ](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.th.png)\n",
"![ภาพแสดงตัวอย่างการสร้างเครือข่ายประสาทเทียมแบบวนซ้ำ](../../../../../translated_images/rnn.27f5c29c53d727b5.th.png)\n",
"\n",
"เมื่อได้รับลำดับโทเค็นอินพุต $X_0,\\dots,X_n$ RNN จะสร้างลำดับของบล็อกเครือข่ายประสาทเทียม และฝึกฝนลำดับนี้แบบ end-to-end โดยใช้ backpropagation แต่ละบล็อกเครือข่ายจะรับคู่ $(X_i,S_i)$ เป็นอินพุต และสร้าง $S_{i+1}$ เป็นผลลัพธ์ สถานะสุดท้าย $S_n$ หรือผลลัพธ์ $Y_n$ จะถูกส่งไปยังตัวจำแนกเชิงเส้นเพื่อสร้างผลลัพธ์ บล็อกเครือข่ายทั้งหมดใช้เวทเดียวกัน และถูกฝึกแบบ end-to-end โดยใช้การ backpropagation เพียงครั้งเดียว\n",
"\n",
@ -369,7 +369,7 @@
"\n",
"เครือข่ายประสาทแบบวนซ้ำ ไม่ว่าจะเป็นแบบทิศทางเดียวหรือสองทิศทาง จะจับรูปแบบภายในลำดับและเก็บไว้ในเวกเตอร์สถานะ (state vectors) หรือส่งคืนเป็นผลลัพธ์ เช่นเดียวกับเครือข่ายแบบคอนโวลูชัน (convolutional networks) เราสามารถสร้างชั้น recurrent อีกชั้นหนึ่งตามหลังชั้นแรกเพื่อจับรูปแบบในระดับที่สูงขึ้น ซึ่งสร้างขึ้นจากรูปแบบระดับต่ำที่ชั้นแรกดึงออกมาได้ สิ่งนี้นำเราไปสู่แนวคิดของ **multi-layer RNN** ซึ่งประกอบด้วยเครือข่ายประสาทแบบวนซ้ำสองชั้นหรือมากกว่า โดยที่ผลลัพธ์ของชั้นก่อนหน้าจะถูกส่งไปยังชั้นถัดไปเป็นข้อมูลนำเข้า\n",
"\n",
"![ภาพแสดง Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.th.jpg)\n",
"![ภาพแสดง Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe.th.jpg)\n",
"\n",
"*ภาพจาก [บทความที่ยอดเยี่ยมนี้](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) โดย Fernando López*\n",
"\n",

View File

@ -119,7 +119,7 @@
"\n",
"วิธีที่เราจะฝึก RNN เพื่อสร้างข้อความมีดังนี้ ในแต่ละขั้นตอน เราจะนำลำดับของตัวอักษรที่มีความยาว `nchars` และให้เครือข่ายสร้างตัวอักษรถัดไปสำหรับแต่ละตัวอักษรในลำดับอินพุต:\n",
"\n",
"![ภาพแสดงตัวอย่างการสร้างคำว่า 'HELLO' ด้วย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.th.png)\n",
"![ภาพแสดงตัวอย่างการสร้างคำว่า 'HELLO' ด้วย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d.th.png)\n",
"\n",
"ขึ้นอยู่กับสถานการณ์จริง เราอาจต้องการเพิ่มตัวอักษรพิเศษบางตัว เช่น *end-of-sequence* `<eos>` ในกรณีของเรา เราต้องการฝึกเครือข่ายเพื่อสร้างข้อความแบบไม่มีที่สิ้นสุด ดังนั้นเราจะกำหนดขนาดของแต่ละลำดับให้เท่ากับโทเค็น `nchars` ดังนั้น ตัวอย่างการฝึกแต่ละตัวจะประกอบด้วยอินพุต `nchars` และเอาต์พุต `nchars` (ซึ่งเป็นลำดับอินพุตที่เลื่อนหนึ่งสัญลักษณ์ไปทางซ้าย) Minibatch จะประกอบด้วยลำดับดังกล่าวหลายชุด\n",
"\n",

View File

@ -111,7 +111,7 @@
"\n",
"วิธีที่เราจะฝึก RNN เพื่อสร้างหัวข้อข่าวมีดังนี้ ในแต่ละขั้นตอน เราจะนำหัวข้อข่าวหนึ่งหัวข้อมาใส่ใน RNN และสำหรับแต่ละตัวอักษรที่ป้อนเข้าไป เราจะให้เครือข่ายสร้างตัวอักษรถัดไป:\n",
"\n",
"![ภาพแสดงตัวอย่างการสร้างคำว่า 'HELLO' ด้วย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.th.png)\n",
"![ภาพแสดงตัวอย่างการสร้างคำว่า 'HELLO' ด้วย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d.th.png)\n",
"\n",
"สำหรับตัวอักษรสุดท้ายของลำดับ เราจะให้เครือข่ายสร้างโทเค็น `<eos>` \n",
"\n",

View File

@ -19,7 +19,7 @@ Recurrent Neural Networks (RNNs) และรูปแบบเซลล์ท
สิ่งนี้นำไปสู่สถาปัตยกรรมเครือข่ายประสาทที่แตกต่างกัน ซึ่งแสดงในภาพด้านล่าง:
![ภาพแสดงรูปแบบเครือข่ายประสาทแบบวนซ้ำทั่วไป](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.th.jpg)
![ภาพแสดงรูปแบบเครือข่ายประสาทแบบวนซ้ำทั่วไป](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42d.th.jpg)
> ภาพจากบล็อกโพสต์ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) โดย [Andrej Karpaty](http://karpathy.github.io/)
@ -32,7 +32,7 @@ Recurrent Neural Networks (RNNs) และรูปแบบเซลล์ท
เราจะฝึก RNN นี้เพื่อสร้างข้อความทีละขั้นตอน ในแต่ละขั้นตอน เราจะใช้ลำดับตัวอักษรที่มีความยาว `nchars` และให้เครือข่ายสร้างตัวอักษรถัดไปสำหรับแต่ละตัวอักษรในข้อมูลเข้า:
![ภาพแสดงตัวอย่างการสร้างคำ 'HELLO' โดย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.th.png)
![ภาพแสดงตัวอย่างการสร้างคำ 'HELLO' โดย RNN](../../../../../translated_images/rnn-generate.56c54afb52f9781d.th.png)
เมื่อสร้างข้อความ (ในระหว่างการอนุมาน) เราจะเริ่มต้นด้วย **คำเริ่มต้น** ซึ่งจะถูกส่งผ่านเซลล์ RNN เพื่อสร้างสถานะกลาง และจากสถานะนี้การสร้างข้อความจะเริ่มต้น เราจะสร้างตัวอักษรทีละตัว และส่งสถานะและตัวอักษรที่สร้างไปยังเซลล์ RNN ตัวถัดไปเพื่อสร้างตัวอักษรถัดไป จนกว่าจะสร้างข้อความครบตามที่ต้องการ

View File

@ -20,13 +20,13 @@ CO_OP_TRANSLATOR_METADATA:
**กลไก Attention** ให้วิธีการในการถ่วงน้ำหนักผลกระทบเชิงบริบทของแต่ละเวกเตอร์ข้อมูลเข้าในแต่ละการทำนายผลลัพธ์ของ RNN วิธีการนี้ถูกดำเนินการโดยการสร้างทางลัดระหว่างสถานะกลางของ RNN ข้อมูลเข้าและ RNN ข้อมูลออก ด้วยวิธีนี้ เมื่อสร้างสัญลักษณ์ผลลัพธ์ y<sub>t</sub> เราจะพิจารณาสถานะ hidden ทั้งหมด h<sub>i</sub> ของข้อมูลเข้า โดยมีค่าสัมประสิทธิ์น้ำหนักที่แตกต่างกัน &alpha;<sub>t,i</sub>
![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.th.png)
![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567.th.png)
> โมเดล encoder-decoder พร้อมกลไก attention แบบ additive ใน [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) อ้างอิงจาก [บล็อกโพสต์นี้](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html)
เมทริกซ์ attention {&alpha;<sub>i,j</sub>} จะเป็นตัวแทนระดับที่คำบางคำในข้อมูลเข้ามีบทบาทในการสร้างคำที่กำหนดในลำดับผลลัพธ์ ด้านล่างเป็นตัวอย่างของเมทริกซ์ดังกล่าว:
![ภาพแสดงการจัดแนวตัวอย่างที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.th.png)
![ภาพแสดงการจัดแนวตัวอย่างที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af.th.png)
> ภาพจาก [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3)
@ -66,7 +66,7 @@ CO_OP_TRANSLATOR_METADATA:
ต่อไป เราจำเป็นต้องจับรูปแบบบางอย่างในลำดับของเรา เพื่อทำสิ่งนี้ Transformers ใช้กลไก **self-attention** ซึ่งเป็น Attention ที่นำไปใช้กับลำดับเดียวกันทั้งข้อมูลเข้าและข้อมูลออก การใช้ self-attention ช่วยให้เราพิจารณา **บริบท** ภายในประโยค และดูว่าคำใดมีความสัมพันธ์กัน ตัวอย่างเช่น มันช่วยให้เราเห็นว่าคำใดถูกอ้างถึงโดยคำสรรพนาม เช่น *it* และยังพิจารณาบริบทด้วย:
![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.th.png)
![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d6.th.png)
> ภาพจาก [บล็อกของ Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html)
@ -91,7 +91,7 @@ Encoder-decoder attention มีความคล้ายคลึงกับ
**BERT** (Bidirectional Encoder Representations from Transformers) เป็นเครือข่าย Transformer ขนาดใหญ่มากที่มีหลายชั้น โดยมี 12 ชั้นสำหรับ *BERT-base* และ 24 ชั้นสำหรับ *BERT-large* โมเดลนี้ถูกฝึกเบื้องต้นด้วยชุดข้อมูลข้อความขนาดใหญ่ (WikiPedia + หนังสือ) โดยใช้การฝึกแบบไม่ต้องมีการกำกับดูแล (การทำนายคำที่ถูกปิดบังในประโยค) ในระหว่างการฝึกเบื้องต้น โมเดลจะดูดซับความเข้าใจภาษาระดับสูง ซึ่งสามารถนำไปใช้กับชุดข้อมูลอื่นๆ ผ่านการปรับแต่งเพิ่มเติม กระบวนการนี้เรียกว่า **transfer learning**
![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.th.png)
![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362.th.png)
> ภาพ [แหล่งที่มา](http://jalammar.github.io/illustrated-bert/)

View File

@ -12,12 +12,12 @@
"\n",
"**กลไก Attention** เป็นวิธีการที่ช่วยให้น้ำหนักของผลกระทบเชิงบริบทของแต่ละเวกเตอร์นำเข้าต่อการทำนายผลลัพธ์ของ RNN แตกต่างกัน วิธีการนี้ถูกนำมาใช้โดยการสร้างทางลัดระหว่างสถานะกลางของ RNN นำเข้าและ RNN ผลลัพธ์ ด้วยวิธีนี้ เมื่อสร้างสัญลักษณ์ผลลัพธ์ $y_t$ เราจะพิจารณา hidden states นำเข้าทั้งหมด $h_i$ โดยมีค่าสัมประสิทธิ์น้ำหนักที่แตกต่างกัน $\\alpha_{t,i}$\n",
"\n",
"![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.th.png)\n",
"![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567.th.png)\n",
"*โมเดล encoder-decoder พร้อมกลไก attention แบบ additive จาก [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) อ้างอิงจาก [บล็อกโพสต์นี้](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html)*\n",
"\n",
"เมทริกซ์ Attention $\\{\\alpha_{i,j}\\}$ แสดงระดับที่คำบางคำในข้อมูลนำเข้ามีบทบาทในการสร้างคำในลำดับผลลัพธ์ ตัวอย่างของเมทริกซ์ดังกล่าวแสดงอยู่ด้านล่าง:\n",
"\n",
"![ภาพแสดงตัวอย่างการจัดแนวที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.th.png)\n",
"![ภาพแสดงตัวอย่างการจัดแนวที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af.th.png)\n",
"\n",
"*ภาพจาก [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3)*\n",
"\n",
@ -35,7 +35,7 @@
"\n",
"**BERT** (Bidirectional Encoder Representations from Transformers) เป็นเครือข่าย Transformer ขนาดใหญ่มากที่มีหลายชั้น โดย *BERT-base* มี 12 ชั้น และ *BERT-large* มี 24 ชั้น โมเดลนี้ถูก pre-trained บนชุดข้อมูลข้อความขนาดใหญ่ (WikiPedia + หนังสือ) โดยใช้การฝึกแบบ unsupervised (การทำนายคำที่ถูก mask ในประโยค) ในระหว่างการ pre-training โมเดลจะเรียนรู้ความเข้าใจภาษาระดับสูง ซึ่งสามารถนำไปใช้กับชุดข้อมูลอื่น ๆ ผ่านการ fine tuning กระบวนการนี้เรียกว่า **transfer learning**\n",
"\n",
"![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.th.png)\n",
"![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362.th.png)\n",
"\n",
"มีสถาปัตยกรรม Transformer หลากหลายรูปแบบ เช่น BERT, DistilBERT, BigBird, OpenGPT3 และอื่น ๆ ที่สามารถนำไป fine tune ได้ [HuggingFace package](https://github.com/huggingface/) มี repository สำหรับการฝึกสถาปัตยกรรมเหล่านี้หลายตัวด้วย PyTorch\n",
"\n",

View File

@ -12,12 +12,12 @@
"\n",
"**กลไก Attention** เป็นวิธีการที่ช่วยให้น้ำหนักความสำคัญของแต่ละเวกเตอร์ข้อมูลเข้ามีผลต่อการทำนายผลลัพธ์ของ RNN โดยวิธีการนี้จะสร้างทางลัดระหว่างสถานะกลางของ RNN ข้อมูลเข้าและ RNN ข้อมูลออก ในลักษณะนี้ เมื่อสร้างสัญลักษณ์ผลลัพธ์ $y_t$ เราจะพิจารณาสถานะซ่อนของข้อมูลเข้าทั้งหมด $h_i$ โดยมีค่าสัมประสิทธิ์น้ำหนักที่แตกต่างกัน $\\alpha_{t,i}$\n",
"\n",
"![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น Attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.th.png)\n",
"![ภาพแสดงโมเดล encoder/decoder พร้อมชั้น Attention แบบ additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567.th.png)\n",
"*โมเดล encoder-decoder พร้อมกลไก Attention แบบ additive จาก [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) อ้างอิงจาก [บล็อกโพสต์นี้](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html)*\n",
"\n",
"เมทริกซ์ Attention $\\{\\alpha_{i,j}\\}$ จะเป็นตัวแทนระดับที่คำบางคำในข้อมูลเข้ามีบทบาทในการสร้างคำในลำดับผลลัพธ์ ตัวอย่างของเมทริกซ์ดังกล่าวแสดงอยู่ด้านล่าง:\n",
"\n",
"![ภาพแสดงตัวอย่างการจัดแนวที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.th.png)\n",
"![ภาพแสดงตัวอย่างการจัดแนวที่พบโดย RNNsearch-50 จาก Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af.th.png)\n",
"\n",
"*ภาพจาก [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3)*\n",
"\n",
@ -225,7 +225,7 @@
"\n",
"**BERT** (Bidirectional Encoder Representations from Transformers) เป็นเครือข่ายทรานส์ฟอร์เมอร์ขนาดใหญ่มากที่มีหลายชั้น โดย *BERT-base* มี 12 ชั้น และ *BERT-large* มี 24 ชั้น โมเดลนี้ถูกฝึกเบื้องต้นด้วยชุดข้อมูลข้อความขนาดใหญ่ (WikiPedia + หนังสือ) โดยใช้การฝึกแบบไม่มีการกำกับดูแล (การทำนายคำที่ถูกปิดบังในประโยค) ในระหว่างการฝึกเบื้องต้น โมเดลจะเรียนรู้ความเข้าใจในภาษาระดับสูง ซึ่งสามารถนำไปใช้กับชุดข้อมูลอื่น ๆ ได้โดยการปรับแต่งเพิ่มเติม กระบวนการนี้เรียกว่า **การเรียนรู้แบบถ่ายโอน** \n",
"\n",
"![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.th.png)\n",
"![ภาพจาก http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362.th.png)\n",
"\n",
"มีสถาปัตยกรรม Transformer หลากหลายรูปแบบ เช่น BERT, DistilBERT, BigBird, OpenGPT3 และอื่น ๆ ที่สามารถปรับแต่งเพิ่มเติมได้ \n",
"\n",

View File

@ -58,7 +58,7 @@ infant | O
เนื่องจากเราต้องสร้างความสัมพันธ์แบบหนึ่งต่อหนึ่งระหว่างโทเค็นและคลาส เราสามารถฝึกโมเดลเครือข่ายประสาทเทียมแบบ **many-to-many** ที่เหมาะสมจากภาพนี้:
![ภาพแสดงรูปแบบเครือข่ายประสาทเทียมแบบ recurrent ทั่วไป](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.th.jpg)
![ภาพแสดงรูปแบบเครือข่ายประสาทเทียมแบบ recurrent ทั่วไป](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42d.th.jpg)
> *ภาพจาก [บล็อกโพสต์นี้](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) โดย [Andrej Karpathy](http://karpathy.github.io/) โมเดลการจัดประเภทโทเค็น NER สอดคล้องกับสถาปัตยกรรมเครือข่ายที่อยู่ทางขวาสุดในภาพนี้*

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# การประมวลผลภาษาธรรมชาติ
![ภาพสรุปงาน NLP ในรูปวาด](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.th.png)
![ภาพสรุปงาน NLP ในรูปวาด](../../../../translated_images/ai-nlp.b22dcb8ca4707cea.th.png)
ในส่วนนี้ เราจะมุ่งเน้นการใช้เครือข่ายประสาทเทียม (Neural Networks) เพื่อจัดการกับงานที่เกี่ยวข้องกับ **การประมวลผลภาษาธรรมชาติ (Natural Language Processing - NLP)** มีปัญหาหลายประเภทใน NLP ที่เราต้องการให้คอมพิวเตอร์สามารถแก้ไขได้:

View File

@ -70,7 +70,7 @@ ask turtles [
หลังจากเปิดโมเดล คุณจะเข้าสู่หน้าจอหลักของ NetLogo นี่คือตัวอย่างโมเดลที่อธิบายประชากรของหมาป่าและแกะ โดยมีทรัพยากรจำกัด (หญ้า)
![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.th.png)
![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3.th.png)
> ภาพหน้าจอโดย Dmitry Soshnikov

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# ภาพรวม
![ภาพรวมในรูปวาด](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.th.png)
![ภาพรวมในรูปวาด](../../../translated_images/ai-overview.0857791951d19500.th.png)
> ภาพวาดโดย [Tomomi Imura](https://twitter.com/girlie_mac)

View File

@ -15,7 +15,7 @@ CO_OP_TRANSLATOR_METADATA:
แนวคิดหลักของ CLIP คือการเปรียบเทียบข้อความ (text prompts) กับภาพ และประเมินว่าภาพนั้นสอดคล้องกับข้อความมากน้อยเพียงใด
![สถาปัตยกรรม CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.th.png)
![สถาปัตยกรรม CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be.th.png)
> *ภาพจาก [บทความนี้](https://openai.com/blog/clip/)*
@ -29,7 +29,7 @@ CO_OP_TRANSLATOR_METADATA:
สมมติว่าเราต้องการจำแนกภาพระหว่างแมว สุนัข และมนุษย์ ในกรณีนี้ เราสามารถให้โมเดลรับภาพและข้อความ เช่น "*ภาพของแมว*", "*ภาพของสุนัข*", "*ภาพของมนุษย์*" ในเวกเตอร์ผลลัพธ์ที่มีความน่าจะเป็น 3 ค่า เราเพียงแค่เลือกดัชนีที่มีค่ามากที่สุด
![CLIP สำหรับการจำแนกภาพ](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.th.png)
![CLIP สำหรับการจำแนกภาพ](../../../../../translated_images/clip-class.3af42ef0b2b19369.th.png)
> *ภาพจาก [บทความนี้](https://openai.com/blog/clip/)*
@ -53,13 +53,13 @@ CLIP ยังสามารถใช้สำหรับ **การสร้
ความแตกต่างสำคัญระหว่าง VQGAN และ GAN ทั่วไปคือ GAN สามารถสร้างภาพที่ดีจากเวกเตอร์อินพุตใด ๆ ได้ แต่ VQGAN อาจสร้างภาพที่ไม่สอดคล้องกัน ดังนั้นเราจำเป็นต้องมีการชี้นำเพิ่มเติมในกระบวนการสร้างภาพ ซึ่งสามารถทำได้โดยใช้ CLIP
![สถาปัตยกรรม VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.th.png)
![สถาปัตยกรรม VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa31.th.png)
ในการสร้างภาพที่สอดคล้องกับข้อความ เราเริ่มต้นด้วยเวกเตอร์การเข้ารหัสแบบสุ่มที่ถูกส่งผ่าน VQGAN เพื่อสร้างภาพ จากนั้นใช้ CLIP เพื่อสร้างฟังก์ชันการสูญเสียที่แสดงว่าภาพสอดคล้องกับข้อความมากน้อยเพียงใด เป้าหมายคือการลดค่าฟังก์ชันการสูญเสียนี้โดยใช้การถ่ายทอดย้อนกลับ (back propagation) เพื่อปรับพารามิเตอร์ของเวกเตอร์อินพุต
ไลบรารีที่ยอดเยี่ยมที่นำ VQGAN+CLIP มาใช้งานคือ [Pixray](http://github.com/pixray/pixray)
![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.th.png) | ![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.th.png) | ![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.th.png)
![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d0.th.png) | ![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a4390.th.png) | ![ภาพที่สร้างโดย Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683.th.png)
----|----|----
ภาพที่สร้างจากข้อความ *ภาพเหมือนสีน้ำของครูหนุ่มสอนวรรณกรรมพร้อมหนังสือ* | ภาพที่สร้างจากข้อความ *ภาพเหมือนสีน้ำมันของครูสาวสอนวิทยาการคอมพิวเตอร์พร้อมคอมพิวเตอร์* | ภาพที่สร้างจากข้อความ *ภาพเหมือนสีน้ำมันของครูชายสูงวัยสอนคณิตศาสตร์หน้ากระดานดำ*

View File

@ -1,21 +1,21 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4ed9993bca581850c983c95d5a3f57eb",
"translation_date": "2025-12-25T01:05:02+00:00",
"original_hash": "14816e97d79b296c87811724f7785923",
"translation_date": "2026-01-01T12:38:31+00:00",
"source_file": "README.md",
"language_code": "tl"
}
-->
[![Lisensya ng GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE)
[![Mga kontribyutor ng GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/)
[![Mga kontribyutor sa GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/)
[![Mga isyu sa GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/)
[![Mga pull request ng GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/)
[![Malugod na PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Malugod ang mga PR](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Mga tagasubaybay ng GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![Mga fork ng GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![Mga bituin ng GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/)
[![Mga tagasubaybay sa GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/)
[![Mga fork sa GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/)
[![Mga star sa GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)
[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
@ -23,115 +23,115 @@ CO_OP_TRANSLATOR_METADATA:
# Artipisyal na Intelihensiya para sa mga Nagsisimula - Isang Kurikulum
|![Sketchnote ni @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tl.png)|
|![Sketchnote ni @girlie_mac https://twitter.com/girlie_mac](../../translated_images/ai-overview.0857791951d19500.tl.png)|
|:---:|
| AI For Beginners - _Sketchnote ni [@girlie_mac](https://twitter.com/girlie_mac)_ |
| AI Para sa mga Nagsisimula - _Sketchnote ni [@girlie_mac](https://twitter.com/girlie_mac)_ |
Tuklasin ang mundo ng **Artipisyal na Intelihensiya** (AI) gamit ang aming 12-linggong, 24-araling kurikulum! Kasama nito ang mga praktikal na aralin, pagsusulit, at mga lab. Ang kurikulum ay angkop para sa mga nagsisimula at sumasaklaw sa mga tool tulad ng TensorFlow at PyTorch, pati na rin ang etika sa AI
Galugarin ang mundo ng **Artipisyal na Intelihensiya** (AI) gamit ang aming 12-linggo, 24-araling kurikulum! Kabilang dito ang mga praktikal na aralin, pagsusulit, at mga lab. Ang kurikulum ay angkop para sa mga nagsisimula at sumasaklaw sa mga tool tulad ng TensorFlow at PyTorch, pati na rin ang etika sa AI
### 🌐 Suporta sa Maramihang Wika
#### Sinusuportahan sa pamamagitan ng GitHub Action (Awtomatis at Laging Napapanahon)
#### Sinusuportahan sa pamamagitan ng GitHub Action (Awtomatiko at Laging Napapanahon)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](./README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
**Kung nais mong magkaroon ng karagdagang mga pagsasalin, ang mga sinusuportahang wika ay nakalista [dito](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
**Kung nais mong magkaroon ng karagdagang mga pagsasalin, makikita ang mga suportadong wika [dito](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
## Sumali sa Komunidad
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
## Ano ang Matututunan Mo
## Ano ang iyong matututunan
**[Mindmap ng Kurso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)**
Sa kurikulum na ito, matututuhan mo:
Sa kurikulum na ito, matututunan mo:
* Iba't ibang pamamaraan sa Artipisyal na Intelihensiya, kabilang ang "good old" simbolikong pamamaraan na may **Pagsasalarawan ng Kaalaman** at pangangatwiran ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)).
* **Neural Networks** at **Deep Learning**, na nasa puso ng modernong AI. Ipapakita namin ang mga konsepto sa pamamagitan ng code sa dalawang pinakasikat na framework - [TensorFlow](http://Tensorflow.org) at [PyTorch](http://pytorch.org).
* **Neural Architectures** para sa pagpoproseso ng mga imahe at teksto. Sasakupin namin ang mga kamakailang modelo ngunit maaaring kulang ito sa pinaka-napapanahong mga pamamaraan.
* Mas hindi gaanong tanyag na mga pamamaraan ng AI, tulad ng **Genetic Algorithms** at **Multi-Agent Systems**.
* Iba't ibang paraan sa Artipisyal na Intelihensiya, kabilang ang "good old" simbolikong pamamaraan na may **Representasyon ng Kaalaman** at pangangatwiran ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)).
* **Mga Neural Network** at **Deep Learning**, na nasa puso ng makabagong AI. Ipapakita namin ang mga konsepto sa likod ng mga mahahalagang paksang ito gamit ang code sa dalawang pinakapopular na framework - [TensorFlow](http://Tensorflow.org) at [PyTorch](http://pytorch.org).
* **Neural Architectures** para sa pagtatrabaho sa mga imahe at teksto. Tatalakayin namin ang mga kamakailang modelo ngunit maaaring medyo kulang sa pinakabagong state-of-the-art.
* Mas hindi gaanong popular na mga pamamaraan ng AI, tulad ng **Genetic Algorithms** at **Multi-Agent Systems**.
Mga bagay na hindi natin saklawin sa kurikulum na ito:
Ang hindi namin tatalakayin sa kurikulum na ito:
> [Hanapin lahat ng karagdagang mga mapagkukunan para sa kursong ito sa aming Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
> [Hanapin ang lahat ng karagdagang mga mapagkukunan para sa kursong ito sa aming Microsoft Learn collection](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)
* Mga kaso ng negosyo ng paggamit ng **AI sa Negosyo**. Isaalang-alang ang pagkuha ng [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) learning path sa Microsoft Learn, o ang [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), na binuo sa pakikipagtulungan ng [INSEAD](https://www.insead.edu/).
* **Classic Machine Learning**, na mabuti ang paglalarawan sa aming [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners).
* Mga praktikal na aplikasyon ng AI na binuo gamit ang **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para dito, inirerekomenda namin na magsimula ka sa mga module ng Microsoft Learn para sa [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** at iba pa.
* Mga tiyak na ML **Cloud Frameworks**, tulad ng [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Isaalang-alang ang paggamit ng [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) at [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) learning paths.
* **Conversational AI** at **Chat Bots**. May hiwalay na learning path na [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), at maaari ka ring tumingin sa [this blog post](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para sa karagdagang detalye.
* **Deep Mathematics** sa likod ng deep learning. Para dito, inirerekomenda namin ang [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) nina Ian Goodfellow, Yoshua Bengio at Aaron Courville, na magagamit din online sa [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/).
* **Klasikong Machine Learning**, na mahusay na inilarawan sa aming [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners).
* Mga praktikal na aplikasyon ng AI na ginawa gamit ang **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para dito, inirerekomenda naming simulan mo ang mga module ng Microsoft Learn para sa [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** at iba pa.
* Mga partikular na ML **Cloud Frameworks**, tulad ng [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Isaalang-alang ang paggamit ng [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) at [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) learning paths.
* **Conversational AI** at **Chat Bots**. May hiwalay na [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) learning path, at maaari mo ring sanggunian ang [ang blog post na ito](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para sa karagdagang detalye.
* **Malalim na Matematika** sa likod ng deep learning. Para dito, inirerekomenda namin ang [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) nina Ian Goodfellow, Yoshua Bengio at Aaron Courville, na available din online sa [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/).
Para sa isang banayad na pagpapakilala sa mga paksang _AI in the Cloud_ maaari mong isaalang-alang ang pagkuha ng [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) Learning Path.
Para sa banayad na pagpapakilala sa mga paksa ng _AI in the Cloud_ maaari mong isaalang-alang ang pagkuha ng [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) Learning Path.
# Nilalaman
| | Link ng Aralin | PyTorch/Keras/TensorFlow | Lab |
| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ |
| 0 | [Pag-setup ng Kurso](./lessons/0-course-setup/setup.md) | [I-set up ang Iyong Kapaligiran sa Pag-develop](./lessons/0-course-setup/how-to-run.md) | |
| 0 | [Pagsasaayos ng Kurso](./lessons/0-course-setup/setup.md) | [I-setup ang Iyong Development Environment](./lessons/0-course-setup/how-to-run.md) | |
| I | [**Panimula sa AI**](./lessons/1-Intro/README.md) | | |
| 01 | [Panimula at Kasaysayan ng AI](./lessons/1-Intro/README.md) | - | - |
| II | **Simbolikong AI** |
| 02 | [Pagsasalarawan ng Kaalaman at Mga Sistema ng Eksperto](./lessons/2-Symbolic/README.md) | [Mga Sistema ng Eksperto](./lessons/2-Symbolic/Animals.ipynb) / [Ontolohiya](./lessons/2-Symbolic/FamilyOntology.ipynb) /[Grap ng Konsepto](./lessons/2-Symbolic/MSConceptGraph.ipynb) | |
| 02 | [Representasyon ng Kaalaman at Expert Systems](./lessons/2-Symbolic/README.md) | [Expert Systems](./lessons/2-Symbolic/Animals.ipynb) / [Ontology](./lessons/2-Symbolic/FamilyOntology.ipynb) /[Concept Graph](./lessons/2-Symbolic/MSConceptGraph.ipynb) | |
| III | [**Panimula sa Neural Networks**](./lessons/3-NeuralNetworks/README.md) |||
| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](./lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) |
| 04 | [Multi-Layered Perceptron at Paglikha ng aming sariling Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](./lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) |
| 05 | [Panimula sa Mga Framework (PyTorch/TensorFlow) at Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](./lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](./lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) |
| IV | [**Paningin ng Kompyuter**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Tuklasin ang Paningin ng Kompyuter sa Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) |
| 06 | [Panimula sa Paningin ng Kompyuter. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 07 | [Konbolusyonal na Neural Networks](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Mga Arkitektura ng CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](./lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](./lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) |
| 08 | [Mga Naunang Nasanay na Network at Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [Mga Tip sa Pagsasanay](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [Autoencoders at VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [Mga Generative Adversarial Network at Paglilipat ng Estilo ng Sining](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 11 | [Pag-detect ng Objek](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](./lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) |
| IV | [**Paningin ng Kompyuter**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [I-explore ang Paningin ng Kompyuter sa Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) |
| 06 | [Panimula sa Computer Vision. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](./lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) |
| 07 | [Convolutional Neural Networks](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Architectures](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](./lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](./lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) |
| 08 | [Pre-trained Networks and Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [Training Tricks](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](./lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](./lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) |
| 09 | [Autoencoders and VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](./lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | |
| 10 | [Generative Adversarial Networks & Artistic Style Transfer](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](./lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | |
| 11 | [Deteksiyon ng Objekto](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](./lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) |
| 12 | [Semantikong Segmentasyon. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](./lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | |
| V | [**Pagproseso ng Natural na Wika**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Tuklasin ang Pagproseso ng Natural na Wika sa Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)|
| 13 | [Representasyon ng Teksto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [Semantikong pag-embed ng salita. Word2Vec at GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 15 | [Pagmomodelo ng Wika. Pagsasanay ng sarili mong pag-embed](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) |
| 16 | [Mga Recurrent Neural Network](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 17 | [Mga Generative Recurrent Network](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) |
| V | [**Pagpoproseso ng Natural na Wika**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [I-explore ang Pagpoproseso ng Natural na Wika sa Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)|
| 13 | [Paglalarawan ng Teksto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | |
| 14 | [Semantikong word embeddings. Word2Vec and GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | |
| 15 | [Pagmomodelo ng Wika. Pagsasanay ng sarili mong embeddings](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) |
| 16 | [Recurrent Neural Networks](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | |
| 17 | [Generative Recurrent Networks](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) |
| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | |
| 19 | [Pagkilala sa Pangalan ng Entidad](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) |
| 19 | [Pagtukoy ng Mga Named Entity](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) |
| 20 | [Malalaking Modelong Pangwika, Prompt Programming at Few-Shot na Mga Gawain](./lessons/5-NLP/20-LangModels/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | |
| VI | Iba pang Teknik ng AI || |
| 21 | [Mga Genetic Algorithm](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| VI | **Iba pang Mga Teknik ng AI** || |
| 21 | [Genetikong Algoritmo](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](./lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | |
| 22 | [Malalim na Reinforcement Learning](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](./lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](./lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) |
| 23 | [Mga Multi-Agent na Sistema](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| 23 | [Sistemang Maramihang Ahente](./lessons/6-Other/23-MultiagentSystems/README.md) | | |
| VII | **Etika ng AI** | | |
| 24 | [Etika ng AI at Responsable na AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Mga Prinsipyo ng Responsable na AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| IX | **Mga Dagdag** | | |
| 25 | [Mga Multi-Modal na Network, CLIP at VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
| 24 | [Etika ng AI at Responsable na AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Responsible AI Principles](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | |
| IX | **Mga Ekstra** | | |
| 25 | [Multi-Modal Networks, CLIP at VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](./lessons/X-Extras/X1-MultiModal/Clip.ipynb) | |
## Ang bawat leksyon ay naglalaman ng
## Bawat leksyon ay naglalaman
* Mga materyales na dapat basahin muna
* Naaandar na Jupyter Notebooks, na kadalasang tiyak sa framework (**PyTorch** o **TensorFlow**). Naglalaman din ang naaandar na notebook ng maraming teoretikal na materyal, kaya upang maunawaan ang paksa kailangan mong dumaan sa kahit isang bersyon ng notebook (alinman sa PyTorch o TensorFlow).
* **Labs** na magagamit para sa ilang mga paksa, na nagbibigay sa iyo ng pagkakataon na subukang i-apply ang natutunang materyal sa isang tiyak na problema.
* Ang ilang mga seksyon ay naglalaman ng mga link sa [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) na mga module na sumasaklaw sa mga kaugnay na paksa.
* Mga materyal na dapat basahin muna
* Executable Jupyter Notebooks, na kadalasang partikular sa framework (**PyTorch** o **TensorFlow**). Ang executable notebook ay naglalaman din ng maraming teoretikal na materyal, kaya upang maunawaan ang paksa kailangan mong dumaan sa kahit isang bersyon ng notebook (alinman sa PyTorch o TensorFlow).
* **Labs** na magagamit para sa ilang paksa, na nagbibigay sa iyo ng pagkakataon na subukan ang pag-aaplay ng mga natutunan mo sa isang partikular na problema.
* Ang ilang seksyon ay naglalaman ng mga link sa [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) na mga module na sumasaklaw sa mga kaugnay na paksa.
## Paano Magsimula
### 🎯 Bago sa AI? Magsimula Dito!
Kung ikaw ay ganap na bago sa AI at naghahanap ng mabilis, hands-on na mga halimbawa, tingnan ang aming [**Mga Halimbawa para sa Mga Nagsisimula**](./examples/README.md)! Kasama sa mga ito:
Kung ikaw ay ganap na bago sa AI at nais ng mabilis, praktikal na mga halimbawa, tingnan ang aming [**Mga Halimbawa para sa mga Nagsisimula**](./examples/README.md)! Kasama sa mga ito:
- 🌟 **Hello AI World** - Ang iyong unang programang AI (pagkilala ng pattern)
- 🧠 **Simple Neural Network** - Bumuo ng neural network mula sa simula
- 🖼️ **Image Classifier** - Mag-uri ng mga imahe na may detalyadong mga komentaryo
- 💬 **Text Sentiment** - Suriin ang positibo/negatibong teksto
- 🌟 **Hello AI World** - Ang iyong unang AI na programa (pagkilala ng pattern)
- 🧠 **Simple Neural Network** - Bumuo ng isang neural network mula sa simula
- 🖼️ **Image Classifier** - Mag-uri ng mga imahe na may detalyadong mga paliwanag
- 💬 **Sentimyento ng Teksto** - Suriin ang positibo/negatibong teksto
These examples are designed to help you understand AI concepts before diving into the full curriculum.
Ang mga halimbawang ito ay idinisenyo upang tulungan kang maunawaan ang mga konsepto ng AI bago lumusong sa buong kurikulum.
### 📚 Full Curriculum Setup
### 📚 Pag-setup ng Buong Kurikulum
- We have created a [setup lesson](./lessons/0-course-setup/setup.md) to help you with setting up your development environment. - For Educators, we have created a [curricula setup lesson](./lessons/0-course-setup/for-teachers.md) for you too!
- How to [Patakbuhin ang code sa VSCode o Codepace](./lessons/0-course-setup/how-to-run.md)
- We have created a [setup lesson](./lessons/0-course-setup/setup.md) to help you with setting up your development environment. - Para sa mga guro, gumawa rin kami ng [aralin sa pag-setup ng kurikulum](./lessons/0-course-setup/for-teachers.md) para sa inyo!
- Paano [patakbuhin ang code sa VSCode o Codepace](./lessons/0-course-setup/how-to-run.md)
Follow these steps:
Sundin ang mga hakbang na ito:
Fork the Repository: Click on the "Fork" button at the top-right corner of this page.
@ -139,31 +139,31 @@ Clone the Repository: `git clone https://github.com/microsoft/AI-For-Beginners.g
Don't forget to star (🌟) this repo to find it easier later.
## Meet other Learners
## Makilala ang iba pang mga Nag-aaral
Join our [official AI Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) to meet and network with other learners taking this course and get support.
Sumali sa aming [opisyal na AI Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) upang makilala at makipag-network sa ibang mga nag-aaral na kumuha ng kursong ito at makakuha ng suporta.
If you have product feedback or questions whilst building visit our [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum)
Kung mayroon kang feedback tungkol sa produkto o mga tanong habang nagtatayo, bisitahin ang aming [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum)
## Quizzes
> **A note about quizzes**: All quizzes are contained in the Quiz-app folder in etc\quiz-app, or [Online Dito](https://ff-quizzes.netlify.app/) They are linked from within the lessons the quiz app can be run locally or deployed to Azure; follow the instruction in the `quiz-app` folder. They are gradually being localized.
> **Isang tala tungkol sa mga pagsusulit**: All quizzes are contained in the Quiz-app folder in etc\quiz-app, or [Online Dito](https://ff-quizzes.netlify.app/) They are linked from within the lessons the quiz app can be run locally or deployed to Azure; follow the instruction in the `quiz-app` folder. They are gradually being localized.
## Help Wanted
## Kailangan ng Tulong
Do you have suggestions or found spelling or code errors? Raise an issue or create a pull request.
Mayroon ka bang mga suhestiyon o nakakita ng mga pagkakamali sa baybay o code? Magbukas ng isyu o gumawa ng pull request.
## Special Thanks
## Espesyal na Pasasalamat
* **✍️ Pangunahing May-akda:** [Dmitry Soshnikov](http://soshnikov.com), PhD
* **🔥 Tagapag-edit:** [Jen Looper](https://twitter.com/jenlooper), PhD
* **🎨 Ilustrador ng Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac)
* **✅ Tagalikha ng Pagsusulit:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/)
* **🙏 Pangunahing Nag-aambag:** [Evgenii Pishchik](https://github.com/Pe4enIks)
* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD
* **🎨 Illustrador ng Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac)
* **✅ Taglikha ng Quiz:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/)
* **🙏 Pangunahing Mga Kontribyutor:** [Evgenii Pishchik](https://github.com/Pe4enIks)
## Other Curricula
## Iba pang Kurikulum
Our team produces other curricula! Check out:
Ang aming koponan ay gumagawa ng iba pang mga kurikulum! Tingnan ang:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -172,7 +172,7 @@ Our team produces other curricula! Check out:
---
### Azure / Edge / MCP / Agents
### Azure / Edge / MCP / Mga Ahente
[![AZD para sa mga Nagsisimula](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI para sa mga Nagsisimula](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP para sa mga Nagsisimula](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -180,7 +180,7 @@ Our team produces other curricula! Check out:
---
### Generative AI Series
### Serye ng Generative AI
[![Generative AI para sa mga Nagsisimula](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -188,7 +188,7 @@ Our team produces other curricula! Check out:
---
### Core Learning
### Pangunahing Pagkatuto
[![ML para sa mga Nagsisimula](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science para sa mga Nagsisimula](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI para sa mga Nagsisimula](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -199,25 +199,25 @@ Our team produces other curricula! Check out:
---
### Copilot Series
### Serye ng Copilot
[![Copilot para sa AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot para sa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Pakikipagsapalaran ng Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## Getting Help
## Pagkuha ng Tulong
If you get stuck or have any questions about building AI apps. Join fellow learners and experienced developers in discussions about MCP. It's a supportive community where questions are welcome and knowledge is shared freely.
Kung ikaw ay ma-stuck o may anumang mga tanong tungkol sa pagbuo ng mga AI apps, sumali sa mga kapwa nag-aaral at mga bihasang developer sa mga diskusyon tungkol sa MCP. Ito ay isang sumusuportang komunidad kung saan malugod ang mga tanong at malayang ibinabahagi ang kaalaman.
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
[![Discord ng Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
If you have product feedback or errors while building visit:
Kung mayroon kang feedback tungkol sa produkto o mga error habang nagtatayo, bisitahin:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
[![Forum ng Microsoft Foundry Developer](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
Paunawa:
Ang dokumentong ito ay isinalin gamit ang serbisyong AI na pagsasalin [Co-op Translator](https://github.com/Azure/co-op-translator). Bagaman sinisikap naming maging tumpak, mangyaring tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatumpak. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pinakapinagkakatiwalaang sanggunian. Para sa mga mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na nagmumula sa paggamit ng pagsasaling ito.
Ang dokumentong ito ay isinalin gamit ang serbisyong pagsasalin ng AI na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagaman nagsusumikap kaming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatumpak. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na awtoritatibong pinagmulan. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Panimula sa AI
![Buod ng nilalaman ng Panimula sa AI sa isang doodle](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.tl.png)
![Buod ng nilalaman ng Panimula sa AI sa isang doodle](../../../../translated_images/ai-intro.bf28d1ac4235881c.tl.png)
> Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac)
@ -19,7 +19,7 @@ CO_OP_TRANSLATOR_METADATA:
Noong una, ang mga computer ay naimbento ni [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) upang mag-operate sa mga numero gamit ang isang malinaw na proseso - isang algorithm. Ang mga modernong computer, kahit na mas advanced kaysa sa orihinal na modelo noong ika-19 na siglo, ay sumusunod pa rin sa parehong ideya ng kontroladong pagkalkula. Kaya't posible na i-program ang isang computer upang gawin ang isang bagay kung alam natin ang eksaktong pagkakasunod-sunod ng mga hakbang na kailangan upang makamit ang layunin.
![Larawan ng isang tao](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.tl.png)
![Larawan ng isang tao](../../../../translated_images/dsh_age.d212a30d4e54fb5f.tl.png)
> Larawan ni [Vickie Soshnikova](http://twitter.com/vickievalerie)
@ -46,7 +46,7 @@ Para sa karagdagang impormasyon, tingnan ang **[Artificial General Intelligence]
Isa sa mga problema sa pagharap sa terminong **[Katalinuhan](https://en.wikipedia.org/wiki/Intelligence)** ay walang malinaw na depinisyon ng terminong ito. Maaaring sabihin ng iba na ang katalinuhan ay konektado sa **abstraktong pag-iisip**, o sa **sariling kamalayan**, ngunit hindi natin ito maipaliwanag nang maayos.
![Larawan ng Pusa](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.tl.jpg)
![Larawan ng Pusa](../../../../translated_images/photo-cat.8c8e8fb760ffe457.tl.jpg)
> [Larawan](https://unsplash.com/photos/75715CVEJhI) ni [Amber Kipp](https://unsplash.com/@sadmax) mula sa Unsplash
@ -98,13 +98,13 @@ Sa kabilang banda, maaari nating subukang i-modelo ang pinakasimpleng elemento s
> | Paano naman ang ML? | |
> |--------------|-----------|
> | Ang bahagi ng Artificial Intelligence na batay sa pag-aaral ng computer upang lutasin ang problema batay sa ilang data ay tinatawag na **Machine Learning**. Hindi natin tatalakayin ang klasikong machine learning sa kursong ito - tinutukoy namin kayo sa hiwalay na [Machine Learning for Beginners](http://aka.ms/ml-beginners) na kurikulum. | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.tl.png) |
> | Ang bahagi ng Artificial Intelligence na batay sa pag-aaral ng computer upang lutasin ang problema batay sa ilang data ay tinatawag na **Machine Learning**. Hindi natin tatalakayin ang klasikong machine learning sa kursong ito - tinutukoy namin kayo sa hiwalay na [Machine Learning for Beginners](http://aka.ms/ml-beginners) na kurikulum. | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d.tl.png) |
## Maikling Kasaysayan ng AI
Ang Artificial Intelligence ay nagsimula bilang isang larangan noong kalagitnaan ng ikadalawampung siglo. Sa simula, ang symbolic reasoning ay isang pangunahing diskarte, at nagresulta ito sa ilang mahahalagang tagumpay, tulad ng mga expert systems – mga programang computer na kayang kumilos bilang eksperto sa ilang limitadong larangan ng problema. Gayunpaman, kalaunan ay naging malinaw na ang ganitong diskarte ay hindi masyadong epektibo. Ang pagkuha ng kaalaman mula sa isang eksperto, pagrepresenta nito sa computer, at pagpapanatili ng kaalaman na tumpak ay naging napakakomplikado at masyadong mahal upang maging praktikal sa maraming kaso. Ito ang nagresulta sa tinatawag na [AI Winter](https://en.wikipedia.org/wiki/AI_winter) noong dekada 1970.
<img alt="Maikling Kasaysayan ng AI" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.tl.png" width="70%"/>
<img alt="Maikling Kasaysayan ng AI" src="../../../../translated_images/history-of-ai.7e83efa70b537f5a.tl.png" width="70%"/>
> Larawan ni [Dmitry Soshnikov](http://soshnikov.com)
@ -124,7 +124,7 @@ Katulad nito, makikita natin kung paano nagbago ang diskarte sa paglikha ng “m
* Ang mga modernong assistant, tulad ng Cortana, Siri o Google Assistant ay lahat ng hybrid systems na gumagamit ng Neural networks upang i-convert ang pagsasalita sa teksto at kilalanin ang ating intensyon, at pagkatapos ay gumamit ng ilang pangangatwiran o tahasang algorithm upang maisagawa ang mga kinakailangang aksyon.
* Sa hinaharap, maaari nating asahan ang isang kumpletong neural-based na modelo upang pangasiwaan ang pag-uusap nang mag-isa. Ang kamakailang GPT at [Turing-NLG](https://www.microsoft.com/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft) na pamilya ng neural networks ay nagpapakita ng mahusay na tagumpay sa larangang ito.
<img alt="ebolusyon ng Turing test" src="../../../../translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.tl.png" width="70%"/>
<img alt="ebolusyon ng Turing test" src="../../../../translated_images/turing-test-evol.4184696701293ead.tl.png" width="70%"/>
> Larawan ni Dmitry Soshnikov, [larawan](https://unsplash.com/photos/r8LmVbUKgns) ni [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash
## Kamakailang Pananaliksik sa AI

View File

@ -12,7 +12,7 @@
"\n",
"Sa halimbawang ito, magpapatupad tayo ng isang simpleng sistema na batay sa kaalaman upang matukoy ang isang hayop batay sa ilang pisikal na katangian. Ang sistema ay maaaring i-representa gamit ang sumusunod na AND-OR tree (ito ay bahagi lamang ng buong puno, madali nating maidaragdag ang iba pang mga patakaran):\n",
"\n",
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tl.png)\n"
"![](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.tl.png)\n"
]
},
{

View File

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Representasyon ng Kaalaman at Mga Ekspertong Sistema
![Buod ng Nilalaman ng Symbolic AI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tl.png)
![Buod ng Nilalaman ng Symbolic AI](../../../../translated_images/ai-symbolic.715a30cb610411a6.tl.png)
> Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac)
@ -41,7 +41,7 @@ Kadalasan, hindi natin mahigpit na tinutukoy ang kaalaman, ngunit iniuugnay nati
Kaya, ang problema ng **representasyon ng kaalaman** ay ang paghahanap ng epektibong paraan upang kumatawan sa kaalaman sa loob ng isang kompyuter sa anyo ng data, upang magamit ito nang awtomatiko. Ito ay maaaring makita bilang isang spectrum:
![Spectrum ng Representasyon ng Kaalaman](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tl.png)
![Spectrum ng Representasyon ng Kaalaman](../../../../translated_images/knowledge-spectrum.b60df631852c0217.tl.png)
> Larawan ni [Dmitry Soshnikov](http://soshnikov.com)
@ -94,7 +94,7 @@ Block Syntax | Indent | | |
Isa sa mga maagang tagumpay ng symbolic AI ay ang tinatawag na **mga ekspertong sistema** - mga sistema ng kompyuter na idinisenyo upang kumilos bilang isang eksperto sa ilang limitadong domain ng problema. Ang mga ito ay nakabatay sa isang **knowledge base** na kinuha mula sa isa o higit pang mga eksperto, at naglalaman ng isang **inference engine** na gumagawa ng pangangatwiran sa ibabaw nito.
![Arkitektura ng Tao](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tl.png) | ![Sistema na Batay sa Kaalaman](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tl.png)
![Arkitektura ng Tao](../../../../translated_images/arch-human.5d4d35f1bba3ab1c.tl.png) | ![Sistema na Batay sa Kaalaman](../../../../translated_images/arch-kbs.3ec5c150b09fa8da.tl.png)
---------------------------------------------|------------------------------------------------
Pinadaling istruktura ng neural system ng tao | Arkitektura ng sistema na batay sa kaalaman
@ -106,7 +106,7 @@ Ang mga ekspertong sistema ay binuo tulad ng sistema ng pangangatwiran ng tao, n
Bilang halimbawa, isaalang-alang natin ang sumusunod na ekspertong sistema ng pagtukoy ng isang hayop batay sa mga pisikal na katangian nito:
![AND-OR Tree](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tl.png)
![AND-OR Tree](../../../../translated_images/AND-OR-Tree.5592d2c70187f283.tl.png)
> Larawan ni [Dmitry Soshnikov](http://soshnikov.com)

View File

@ -1250,7 +1250,7 @@
"* Mababa ang training loss - magaling ang model sa pag-approximate ng training data dahil sapat ang expressive power nito.\n",
"* Ang validation loss ay maaaring mas mataas kaysa sa training loss at maaaring magsimulang tumaas habang nagte-training - ito ay dahil \"inaalala\" ng model ang mga training points, at nawawala ang \"kabuuang larawan.\"\n",
"\n",
"![Overfitting](../../../../../translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.tl.png)\n",
"![Overfitting](../../../../../translated_images/overfit.a0bd57f717c15769.tl.png)\n",
"\n",
"> Sa larawang ito, ang `x` ay kumakatawan sa training data, at ang `o` ay validation data. Kaliwa - linear model (one-layer), maayos nitong na-aapproximate ang likas na katangian ng data. Kanan - overfitted model, perpektong na-aapproximate ng model ang training data, pero nawawala ang saysay nito sa ibang data (napakataas ng validation error).\n"
]