From 2ec66244361fc3fc52a8eb01a4aec11b1e097641 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Wed, 8 Jul 2026 19:56:36 +0000 Subject: [PATCH] chore(i18n): sync translations with latest source changes (chunk 1/1, 20 changes) --- translations/hr/.co-op-translator.json | 37 +++- translations/hr/CONTRIBUTING.md | 29 +++ translations/hr/examples/README.md | 64 +++---- .../hr/lessons/0-course-setup/how-to-run.md | 48 ++--- .../TransferLearningTF.ipynb | 131 +++++++------- translations/hr/lessons/5-NLP/README.md | 64 +++---- translations/my/.co-op-translator.json | 41 ++++- translations/my/CONTRIBUTING.md | 29 +++ translations/my/examples/README.md | 84 ++++----- .../my/lessons/0-course-setup/how-to-run.md | 56 +++--- translations/my/lessons/1-Intro/README.md | 157 ++++++++++++----- .../TransferLearningTF.ipynb | 148 ++++++++-------- translations/my/lessons/5-NLP/README.md | 82 ++++----- .../6-Other/23-MultiagentSystems/README.md | 165 ++++++++++-------- translations/sl/.co-op-translator.json | 37 +++- translations/sl/CONTRIBUTING.md | 29 +++ translations/sl/examples/README.md | 62 +++---- .../sl/lessons/0-course-setup/how-to-run.md | 40 ++--- .../TransferLearningTF.ipynb | 139 ++++++++------- translations/sl/lessons/5-NLP/README.md | 66 +++---- 20 files changed, 897 insertions(+), 611 deletions(-) create mode 100644 translations/hr/CONTRIBUTING.md create mode 100644 translations/my/CONTRIBUTING.md create mode 100644 translations/sl/CONTRIBUTING.md diff --git a/translations/hr/.co-op-translator.json b/translations/hr/.co-op-translator.json index 19e37357..7395b1c8 100644 --- a/translations/hr/.co-op-translator.json +++ b/translations/hr/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "hr" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T19:56:11+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "hr" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:29:10+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "hr" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "hr", + "failure_date": "2026-07-08T19:42:58+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "etc/CODE_OF_CONDUCT.md": { "original_hash": "c06b12caf3c901eb3156e3dd5b0aea56", "translation_date": "2025-08-26T00:44:58+00:00", @@ -54,8 +73,8 @@ "language_code": "hr" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:34:49+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T19:38:19+00:00", "source_file": "examples/README.md", "language_code": "hr" }, @@ -66,8 +85,8 @@ "language_code": "hr" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:04:58+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T19:38:39+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "hr" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "hr" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T19:34:14+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "hr" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-25T23:17:08+00:00", @@ -330,8 +355,8 @@ "language_code": "hr" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-25T21:29:43+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T19:39:04+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "hr" }, diff --git a/translations/hr/CONTRIBUTING.md b/translations/hr/CONTRIBUTING.md new file mode 100644 index 00000000..e1a2024e --- /dev/null +++ b/translations/hr/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Doprinoseći AI-For-Beginners + +Hvala vam na vašem interesu za doprinos AI-For-Beginners! Dobrodošle su prijevodi, ispravci lekcija i ispravci formata. + +## Microsoft Ugovor o licenci za doprinositelje (CLA) + +Ovaj projekt prihvaća doprinose i prijedloge. Većina doprinosa zahtijeva da se složite s Ugovorom o licenci za doprinositelje (CLA) kojim izjavljujete da imate pravo, i da zapravo dajete, nam prava za korištenje vašeg doprinosa. Za detalje posjetite [https://cla.microsoft.com](https://cla.microsoft.com). + +Kada pošaljete pull request, CLA-bot će automatski utvrditi trebate li dostaviti CLA i prikladno označiti PR (npr. oznakom, komentarom). Jednostavno slijedite upute koje vam bot daje. To ćete morati učiniti samo jednom za sve repozitorije koji koriste naš CLA. + +## Kako doprinositi + +### 1. Ispravljanje tipfelera / grešaka u kodu +Ako nađete tipfelere ili greške u bilo kojem Jupyter bilježnici ili markdown datoteci lekcije: +1. Napravite fork repozitorija. +2. Ispravite tipfelere ili prekinuti link. +3. Pošaljite Pull Request s jasnim opisom ispravka. + +### 2. Slanje prijevoda +Dobrodošli su prijevodi lekcija na druge jezike! Molimo stavite prijevode u direktorij `translations/` koristeći postojeće nazive mapa tamo (na primjer `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Za više detalja, pogledajte [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Napomena**: +Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda. + \ No newline at end of file diff --git a/translations/hr/examples/README.md b/translations/hr/examples/README.md index 9399178d..49e1df13 100644 --- a/translations/hr/examples/README.md +++ b/translations/hr/examples/README.md @@ -1,27 +1,27 @@ -# Primjeri umjetne inteligencije za početnike +# Primjeri Prikladni Za Početnike u AI -Dobrodošli! Ovaj direktorij sadrži jednostavne, samostalne primjere koji će vam pomoći da započnete s umjetnom inteligencijom i strojnim učenjem. Svaki primjer je osmišljen tako da bude prilagođen početnicima, uz detaljne komentare i objašnjenja korak po korak. +Dobro došli! Ovaj direktorij sadrži jednostavne, samostalne primjere koji vam pomažu započeti s AI i strojnim učenjem. Svaki primjer je dizajniran da bude prikladan za početnike s detaljnim komentarima i korak-po-korak objašnjenjima. -## 📚 Pregled primjera +## 📚 Pregled Primjera | Primjer | Opis | Težina | Preduvjeti | |---------|-------------|------------|---------------| -| [Pozdrav AI svijetu](../../../examples/01-hello-ai-world.py) | Vaš prvi AI program - jednostavno prepoznavanje uzoraka | ⭐ Početnik | Osnove Pythona | -| [Jednostavna neuronska mreža](../../../examples/02-simple-neural-network.py) | Izgradite neuronsku mrežu od nule | ⭐⭐ Početnik+ | Python, osnovna matematika | -| [Klasifikator slika](./03-image-classifier.ipynb) | Klasificirajte slike pomoću unaprijed treniranog modela | ⭐⭐ Početnik+ | Python, numpy | -| [Sentiment teksta](../../../examples/04-text-sentiment.py) | Analizirajte sentiment teksta (pozitivan/negativan) | ⭐⭐ Početnik+ | Python | +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Vaš prvi AI program - jednostavno prepoznavanje obrazaca | ⭐ Početnik | Osnove Pythona | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Izgradite neuronsku mrežu iz temelja | ⭐⭐ Početnik+ | Python, osnovna matematika | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Klasificirajte slike pomoću unaprijed istreniranog modela | ⭐⭐ Početnik+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Analizirajte sentiment teksta (pozitivan/negativan) | ⭐⭐ Početnik+ | Python | -## 🚀 Početak rada +## 🚀 Početak ### Preduvjeti -Provjerite imate li instaliran Python (preporučuje se verzija 3.8 ili novija). Instalirajte potrebne pakete: +Provjerite imate li instaliran Python (preporučeno verzija 3.8 ili novija). Instalirajte potrebne pakete: ```bash -# For Python scripts +# Za Python skripte pip install numpy -# For Jupyter notebooks (image classifier) +# Za Jupyter bilježnice (klasifikator slika) pip install jupyter numpy pillow tensorflow ``` @@ -32,7 +32,7 @@ conda env create --name ai4beg --file ../environment.yml conda activate ai4beg ``` -### Pokretanje primjera +### Pokretanje Primjera **Za Python skripte (.py datoteke):** ```bash @@ -44,42 +44,44 @@ python 01-hello-ai-world.py jupyter notebook 03-image-classifier.ipynb ``` -## 📖 Put učenja +## 📖 Put Učenja -Preporučujemo da slijedite primjere redoslijedom: +Preporučujemo da slijedite primjere redom: -1. **Započnite s "Pozdrav AI svijetu"** - Naučite osnove prepoznavanja uzoraka -2. **Izgradite jednostavnu neuronsku mrežu** - Shvatite kako neuronske mreže funkcioniraju -3. **Isprobajte klasifikator slika** - Pogledajte AI u akciji s pravim slikama -4. **Analizirajte sentiment teksta** - Istražite obradu prirodnog jezika +1. **Započnite s "Hello AI World"** - Naučite osnove prepoznavanja obrazaca +2. **Izgradite Jednostavnu Neuronsku Mrežu** - Razumite kako neuronske mreže funkcioniraju +3. **Isprobajte Image Classifier** - Pogledajte AI u akciji s pravim slikama +4. **Analizirajte Sentiment Teksta** - Istražite obradu prirodnog jezika -## 💡 Savjeti za početnike +## 💡 Savjeti za Početnike -- **Pažljivo čitajte komentare u kodu** - Objašnjavaju što svaka linija radi +- **Pažljivo čitajte komentare u kodu** - Oni objašnjavaju što koja linija radi - **Eksperimentirajte!** - Pokušajte mijenjati vrijednosti i vidjeti što se događa -- **Ne brinite ako ne razumijete sve** - Učenje zahtijeva vrijeme -- **Postavljajte pitanja** - Koristite [diskusijsku ploču](https://github.com/microsoft/AI-For-Beginners/discussions) +- **Ne brinite ako ne razumijete sve odmah** - Učenje zahtijeva vrijeme +- **Postavljajte pitanja** - Koristite [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) -## 🔗 Sljedeći koraci +## 🔗 Sljedeći Koraci Nakon što završite ove primjere, istražite cijeli kurikulum: - [Uvod u AI](../lessons/1-Intro/README.md) -- [Neuronske mreže](../lessons/3-NeuralNetworks/README.md) -- [Računalni vid](../lessons/4-ComputerVision/README.md) -- [Obrada prirodnog jezika](../lessons/5-NLP/README.md) +- [Neuronske Mreže](../lessons/3-NeuralNetworks/README.md) +- [Računalni Vid](../lessons/4-ComputerVision/README.md) +- [Obrada Prirodnog Jezika](../lessons/5-NLP/README.md) -## 🤝 Doprinos +## 🤝 Sudjelovanje -Jesu li vam ovi primjeri korisni? Pomozite nam da ih poboljšamo: +Jesu li vam ovi primjeri pomogli? Pomozite nam ih poboljšati: - Prijavite probleme ili predložite poboljšanja - Dodajte više primjera za početnike - Poboljšajte dokumentaciju i komentare --- -*Zapamtite: Svaki stručnjak je jednom bio početnik. Sretno u učenju! 🎓* +*Zapamtite: Svaki stručnjak nekada je bio početnik. Sretno u učenju! 🎓* --- -**Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file + +**Napomena**: +Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda. + \ No newline at end of file diff --git a/translations/hr/lessons/0-course-setup/how-to-run.md b/translations/hr/lessons/0-course-setup/how-to-run.md index 837cf679..9d593197 100644 --- a/translations/hr/lessons/0-course-setup/how-to-run.md +++ b/translations/hr/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ # Kako pokrenuti kod -Ovaj nastavni plan sadrži mnogo izvršnih primjera i laboratorijskih vježbi koje želite pokrenuti. Da biste to učinili, morate imati mogućnost izvršavanja Python koda u Jupyter bilježnicama koje su dio ovog nastavnog plana. Imate nekoliko opcija za pokretanje koda: +Ovaj kurikulum sadrži mnogo izvršnih primjera i laboratorijskih zadataka koje biste željeli pokrenuti. Da biste to učinili, trebate mogućnost izvršavanja Python koda u Jupyter Notebookovima koje su uključene kao dio ovog kurikuluma. Imate nekoliko opcija za pokretanje koda: ## Pokretanje lokalno na vašem računalu -Da biste pokrenuli kod lokalno na vašem računalu, potrebna je Python instalacija. Jedan od prijedloga je instalirati **[miniconda](https://conda.io/en/latest/miniconda.html)** - to je prilično lagana instalacija koja podržava upravitelja paketa `conda` za različita Python **virtualna okruženja**. +Za pokretanje koda lokalno na vašem računalu potrebna je instalacija Pythona. Jedan od prijedloga je instalirati **[miniconda](https://conda.io/en/latest/miniconda.html)** - to je prilično lagana instalacija koja podržava `conda` upravitelj paketa za različita Python **virtualna okruženja**. -Nakon što instalirate miniconda, klonirajte repozitorij i kreirajte virtualno okruženje koje će se koristiti za ovaj tečaj: +Nakon što instalirate miniconda, klonirajte repozitorij i napravite virtualno okruženje koje ćete koristiti za ovaj tečaj: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,19 +15,19 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Korištenje Visual Studio Code s Python ekstenzijom +### Korištenje Visual Studio Code s Python proširenjem -Ovaj nastavni plan najbolje je koristiti ako ga otvorite u [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) s [Python ekstenzijom](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Ovaj kurikulum je najbolje koristiti pritom da ga otvorite u [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) s [Python proširenjem](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Napomena**: Kada klonirate i otvorite direktorij u VS Code-u, automatski će vam predložiti instalaciju Python ekstenzija. Također ćete morati instalirati miniconda kako je prethodno opisano. +> **Napomena**: Nakon što klonirate i otvorite direktorij u VS Code, on će vam automatski ponuditi instalaciju Python proširenja. Također ćete trebati instalirati miniconda kako je opisano gore. -> **Napomena**: Ako vam VS Code predloži ponovno otvaranje repozitorija u kontejneru, trebate to odbiti kako biste koristili lokalnu Python instalaciju. +> **Napomena**: Ako vam VS Code ponudi da ponovo otvorite repozitorij u kontejneru, trebali biste to odbiti da biste koristili lokalnu Python instalaciju. -### Korištenje Jupyter-a u pregledniku +### Korištenje Jupyter u pregledniku -Također možete koristiti Jupyter okruženje iz preglednika na vašem računalu. I klasični Jupyter i JupyterHub pružaju praktično razvojno okruženje s automatskim dovršavanjem, isticanjem koda itd. +Također možete koristiti Jupyter okruženje putem preglednika na vlastitom računalu. I klasični Jupyter i JupyterHub nude prikladno razvojno okruženje s automatskim dovršavanjem, isticanjem koda i slično. -Za pokretanje Jupyter-a lokalno, idite u direktorij tečaja i pokrenite: +Za pokretanje Jupyter-a lokalno, idite u direktorij s tečajem i pokrenite: ```bash jupyter notebook @@ -36,36 +36,36 @@ ili ```bash jupyterhub ``` -Zatim možete navigirati do bilo koje `.ipynb` datoteke, otvoriti je i početi raditi. +Nakon toga možete navigirati do bilo koje `.ipynb` datoteke, otvoriti je i početi raditi. ### Pokretanje u kontejneru -Jedna alternativa Python instalaciji je pokretanje koda u kontejneru. Budući da naš repozitorij sadrži posebnu mapu `.devcontainer` koja daje upute kako izgraditi kontejner za ovaj repozitorij, VS Code nudi opciju ponovnog otvaranja koda u kontejneru. Za ovo je potrebna instalacija Dockera, a postupak može biti složeniji, pa to preporučujemo iskusnijim korisnicima. +Jedna alternativa lokalnoj instalaciji Pythona je pokretanje koda u kontejneru. Budući da naš repozitorij isporučuje posebnu `.devcontainer` mapu koja opisuje kako izgraditi kontejner za ovaj repozitorij, VS Code nudi mogućnost ponovnog otvaranja koda u kontejneru. Ovo zahtijeva instalaciju Dockera i može biti složenije, pa to preporučujemo iskusnijim korisnicima. ## Pokretanje u oblaku -Ako ne želite instalirati Python lokalno, a imate pristup nekim resursima u oblaku - dobra alternativa je pokretanje koda u oblaku. Postoji nekoliko načina na koje to možete učiniti: +Ako ne želite instalirati Python lokalno i imate pristup nekim oblačnim resursima - dobra alternativa je pokrenuti kod u oblaku. Postoji nekoliko načina kako to možete učiniti: -* Korištenje **[GitHub Codespaces](https://github.com/features/codespaces)**, što je virtualno okruženje kreirano za vas na GitHubu, dostupno putem VS Code sučelja u pregledniku. Ako imate pristup Codespaces, samo kliknite na gumb **Code** u repozitoriju, pokrenite codespace i brzo počnite raditi. -* Korištenje **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) nudi besplatne računalne resurse u oblaku za ljude poput vas da isprobaju kod s GitHuba. Na početnoj stranici postoji gumb za otvaranje repozitorija u Binderu - to će vas brzo dovesti na stranicu bindera, koji će izgraditi osnovni kontejner i pokrenuti Jupyter web sučelje bez prekida. +* Korištenje **[GitHub Codespaces](https://github.com/features/codespaces)**, što je virtualno okruženje stvoreno za vas na GitHubu, dostupno kroz VS Code sučelje u pregledniku. Ako imate pristup Codespaces, jednostavno kliknite na gumb **Code** u repozitoriju, pokrenite codespace i brzo započnite. +* Korištenje **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) nudi besplatne računalne resurse u oblaku kako biste mogli isprobati neki kod s GitHuba. Na početnoj stranici postoji gumb za otvaranje repozitorija u Binderu - to bi vas brzo trebalo odvesti na stranicu bindera, koja će izgraditi osnovni kontejner i besprijekorno pokrenuti Jupyter web sučelje za vas. -> **Napomena**: Da bi spriječio zlonamjernu upotrebu, Binder ima blokiran pristup nekim mrežnim resursima. To može spriječiti rad nekog koda koji dohvaća modele i/ili skupove podataka s javnog Interneta. Možda ćete trebati pronaći neke zaobilazne načine. Također, računski resursi koje Binder pruža su prilično osnovni, pa će treniranje biti sporo, osobito u kasnijim, složenijim lekcijama. +> **Napomena**: Kako bi spriječio zloupotrebu, Binder ima blokiran pristup nekim web resursima. To može spriječiti rad nekog koda koji dohvaća modele i/ili skupove podataka s javnog Interneta. Možda ćete morati pronaći neka zaobilazna rješenja. Također, računarski resursi koje pruža Binder su prilično osnovni, pa će treniranje biti sporo, osobito u kasnijim, složenijim lekcijama. -## Pokretanje u oblaku s GPU +## Pokretanje u oblaku s GPU-om -Neke od kasnijih lekcija u ovom nastavnom planu značajno bi imale koristi od podrške za GPU. Na primjer, treniranje modela može biti izuzetno sporo bez toga. Postoji nekoliko opcija koje možete pratiti, osobito ako imate pristup oblaku putem [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ili preko vaše institucije: +Neke od kasnijih lekcija u ovom kurikulumu puno bi profitirale od podrške GPU-a. Na primjer, treniranje modela može biti izrazito sporo bez toga. Postoji nekoliko opcija koje možete slijediti, posebno ako imate pristup oblaku putem [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ili preko svoje institucije: -* Kreirajte [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) i povežite se na nju putem Jupyter-a. Tada možete klonirati repozitorij direktno na tu mašinu i započeti učenje. NC-serija VM-ova ima podršku za GPU. +* Kreirajte [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) i povežite se na nju putem Jupytera. Možete zatim klonirati repozitorij direktno na stroj i početi učiti. NC-serija VM-ova podržava GPU. -> **Napomena**: Neki pretplatnički planovi, uključujući Azure for Students, ne pružaju GPU podršku odmah. Možda ćete morati zatražiti dodatne GPU jezgre tehničkim zahtjevom za podršku. +> **Napomena**: Neke pretplate, uključujući Azure for Students, ne pružaju GPU podršku odmah. Možda ćete trebati zatražiti dodatne GPU jezgre putem tehničke podrške. -* Kreirajte [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) i zatim koristite značajku Notebooka tamo. [Ovaj video](https://azure-for-academics.github.io/quickstart/azureml-papers/) pokazuje kako klonirati repozitorij u Azure ML bilježnicu i početi ga koristiti. +* Kreirajte [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) i zatim koristite Notebook značajku tamo. [Ovaj video](https://azure-for-academics.github.io/quickstart/azureml-papers/) pokazuje kako klonirati repozitorij u Azure ML notebook i početi ga koristiti. -Također možete koristiti Google Colab, koji dolazi s besplatnom podrškom za GPU, i tamo učitati Jupyter bilježnice za izvršavanje jednu po jednu. +Također možete koristiti Google Colab, koji nudi određenu besplatnu podršku za GPU, te tamo učitavati Jupyter Notebooks i izvršavati ih jedan po jedan. --- -**Izjava o odricanju od odgovornosti**: -Ovaj je dokument preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se stručni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. +**Napomena**: +Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index 7c963468..778e8e21 100644 --- a/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -6,9 +6,9 @@ "source": [ "# Predtrenirani modeli i prijenos učenja\n", "\n", - "Treniranje CNN-a može zahtijevati puno vremena, a za taj zadatak potrebno je mnogo podataka. Međutim, velik dio vremena troši se na učenje najboljih niskorazinskih filtera koje mreža koristi za izdvajanje uzoraka iz slika. Postavlja se prirodno pitanje - možemo li koristiti neuronsku mrežu treniranu na jednom skupu podataka i prilagoditi je za klasifikaciju različitih slika bez potpunog procesa treniranja?\n", + "Trening CNN-ova može potrajati dosta dugo i potrebno je puno podataka za taj zadatak. Međutim, većina vremena se koristi za učenje najboljih niskorazinskih filtera koje mreža koristi za izdvajanje obrazaca iz slika. Postavlja se prirodno pitanje - možemo li koristiti neuronsku mrežu treniranu na jednom skupu podataka i prilagoditi je za klasificiranje različitih slika bez potpunog procesa treninga?\n", "\n", - "Ovaj pristup naziva se **prijenos učenja**, jer prenosimo dio znanja iz jednog modela neuronske mreže u drugi. Kod prijenosa učenja obično započinjemo s predtreniranjem modela, koji je treniran na nekom velikom skupu podataka slika, poput **ImageNet**. Ti modeli već dobro obavljaju posao izdvajanja različitih značajki iz generičkih slika, a u mnogim slučajevima samo izgradnja klasifikatora na temelju tih izdvojenih značajki može dati dobre rezultate.\n" + "Ovaj pristup se naziva **prijenos učenja**, jer prenosimo neka znanja iz jednog modela neuronske mreže u drugi. U prijenosu učenja obično počinjemo s predtreniranim modelom, koji je treniran na nekom velikom skupu slika, kao što je **ImageNet**. Ti modeli već mogu dobro izdvajati različite značajke iz generičkih slika, i u mnogim slučajevima samo izgradnja klasifikatora na temelju tih izvađenih značajki može dati dobar rezultat.\n" ] }, { @@ -31,9 +31,9 @@ "source": [ "## Skup podataka Mačke vs. Psi\n", "\n", - "U ovoj jedinici riješit ćemo stvarni problem klasifikacije slika mačaka i pasa. Zbog toga ćemo koristiti [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), koji se također može preuzeti [s Microsofta](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "U ovoj jedinici riješit ćemo stvarni problem klasifikacije slika mačaka i pasa. Iz tog razloga koristit ćemo [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), koji se također može preuzeti [s Microsofta](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Preuzmimo ovaj skup podataka i izdvojimo ga u direktorij `data` (ovaj proces može potrajati!):\n" + "Preuzmimo ovaj skup podataka i raspakirajmo ga u direktorij `data` (ovaj proces može potrajati!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nažalost, u skupu podataka postoje neke oštećene slikovne datoteke. Moramo brzo očistiti skup podataka kako bismo provjerili oštećene datoteke. Kako ne bismo preopteretili ovaj vodič, premjestili smo kod za provjeru skupa podataka u modul.\n" + "Nažalost, u skupu podataka postoje neke oštećene slikovne datoteke. Moramo brzo očistiti kako bismo provjerili oštećene datoteke. Kako ne bismo narušili ovaj vodič, premjestili smo kod za provjeru skupa podataka u modul.\n" ] }, { @@ -335,11 +335,11 @@ "source": [ "## Učitavanje skupa podataka\n", "\n", - "U prethodnim primjerima učitavali smo skupove podataka koji su ugrađeni u Keras. Sada ćemo raditi s vlastitim skupom podataka, koji trebamo učitati iz direktorija sa slikama.\n", + "U prethodnim primjerima učitavali smo skupove podataka ugrađene u Keras. Sada ćemo se baviti vlastitim skupom podataka koji trebamo učitati iz direktorija slika.\n", "\n", - "U stvarnom životu, veličina skupova podataka sa slikama može biti prilično velika, i ne možemo se osloniti na to da će svi podaci stati u memoriju. Stoga se skupovi podataka često predstavljaju kao **generatori** koji mogu vraćati podatke u manjim serijama pogodnim za treniranje.\n", + "U stvarnom životu veličina skupova podataka slike može biti prilično velika, i ne može se računati da će se svi podaci moći smjestiti u memoriju. Stoga se skupovi podataka često predstavljaju kao **generatori** koji mogu vraćati podatke u malim serijama pogodne za treniranje.\n", "\n", - "Za rad s klasifikacijom slika, Keras uključuje posebnu funkciju `image_dataset_from_directory`, koja može učitati slike iz poddirektorija koji odgovaraju različitim klasama. Ova funkcija također se brine o skaliranju slika, a može i podijeliti skup podataka na podskupove za treniranje i testiranje:\n" + "Za rad s klasifikacijom slike, Keras uključuje posebnu funkciju `image_dataset_from_directory`, koja može učitati slike iz poddirektorija koji odgovaraju različitim klasama. Ova funkcija također se brine o skaliranju slika, i može također podijeliti skup podataka na podskupove za treniranje i testiranje:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Važno je postaviti istu vrijednost za `seed` u oba poziva, jer ona utječe na podjelu slika između skupa za treniranje i testiranje.\n", + "Važno je postaviti istu vrijednost `seed` za oba poziva, jer ona utječe na podjelu slika između trening i testnog skupa podataka.\n", "\n", - "Skup podataka automatski prepoznaje nazive klasa iz direktorija, a možete im pristupiti ako je potrebno pozivom:\n" + "Dataset automatski preuzima nazive klasa iz direktorija, a njima možete pristupiti po potrebi pozivom:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Skupovi podataka koje smo dobili mogu se izravno proslijediti funkciji `fit` za treniranje modela. Oni sadrže i odgovarajuće slike i oznake, koje se mogu iterirati koristeći sljedeću konstrukciju:\n" + "Skupovi podataka koje smo dobili mogu se izravno proslijediti funkciji `fit` za treniranje modela. Oni sadrže odgovarajuće slike i oznake, kojima se može pristupiti pomoću sljedeće konstrukcije:\n" ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Napomena**: Sve slike u skupu podataka predstavljene su kao tenzori s pomičnim zarezom u rasponu 0-255. Prije nego ih proslijedimo neuronskoj mreži, moramo skalirati te vrijednosti u raspon 0-1. Kada prikazujemo slike, trebamo učiniti isto ili pretvoriti vrijednosti u tip `int` (što radimo u kodu iznad) kako bismo pokazali `matplotlib`-u da želimo prikazati originalnu neskaliranu sliku.\n" + "> **Napomena**: Sve slike u skupu podataka predstavljene su kao tenzori s pomičnim zarezom u rasponu od 0 do 255. Prije nego što ih proslijedimo neuronskoj mreži, moramo te vrijednosti skalirati u raspon 0-1. Prilikom iscrtavanja slika, moramo učiniti isto ili pretvoriti vrijednosti u `int` tip (što radimo u gornjem kodu), kako bismo pokazali `matplotlib` da želimo prikazati izvornu, neskaliranu sliku.\n" ] }, { @@ -462,7 +462,7 @@ "source": [ "## Predtrenirani modeli\n", "\n", - "Za mnoge zadatke klasifikacije slika mogu se pronaći predtrenirani modeli neuronskih mreža. Mnogi od tih modela dostupni su unutar `keras.applications` prostora imena, a još više modela može se pronaći na internetu. Pogledajmo kako se najjednostavniji VGG-16 model može učitati i koristiti:\n" + "Za mnoge zadatke klasifikacije slika mogu se pronaći predtrenirani modeli neuronskih mreža. Mnogi od tih modela dostupni su unutar `keras.applications` prostora imena, a još više modela može se pronaći na internetu. Pogledajmo kako se može učitati i koristiti najjednostavniji VGG-16 model:\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -510,10 +520,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Postoji nekoliko važnih stvari ovdje:\n", - "* Prije nego što se ulaz proslijedi bilo kojoj unaprijed istreniranoj mreži, mora se prethodno obraditi na određeni način. To se postiže pozivanjem odgovarajuće funkcije `preprocess_input`, koja prima skup slika i vraća njihovu obrađenu verziju. U slučaju VGG-16, slike se normaliziraju, a unaprijed definirana prosječna vrijednost za svaki kanal se oduzima. To je zato što je VGG-16 izvorno treniran s ovakvom prethodnom obradom.\n", - "* Neuronska mreža se primjenjuje na ulazni skup, a kao rezultat dobivamo skup tenzora s 1000 elemenata koji prikazuju vjerojatnost za svaku klasu. Najvjerojatniji broj klase možemo pronaći pozivanjem funkcije `argmax` na ovom tenzoru.\n", - "* Dobiveni rezultat je [broj klase iz `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Kako bismo razumjeli ovaj rezultat, možemo koristiti i funkciju `decode_predictions`, koja vraća n najvjerojatnijih klasa zajedno s njihovim imenima.\n" + "Ovdje je nekoliko važnih stvari:\n", + "* Prije nego što se ulaz proslijedi bilo kojoj prethodno treniranoj mreži, mora se na određeni način prethodno obraditi. To se obavlja pozivanjem odgovarajuće funkcije `preprocess_input`, koja prima batch slika i vraća njihov obrađeni oblik. U slučaju VGG-16, slike se normaliziraju, i oduzima im se unaprijed definirana prosječna vrijednost za svaki kanal. To je zato što je VGG-16 izvorno treniran s ovom prethodnom obradom.\n", + "* Neuronska mreža se primjenjuje na ulazni batch i kao rezultat dobivamo batch tenzora od 1000 elemenata koji prikazuju vjerojatnost za svaku klasu. Najvjerojatniji broj klase možemo pronaći pozivanjem `argmax` na ovom tenzoru.\n", + "* Dobiveni rezultat je [broj `ImageNet` klase](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Da bismo dali smisao ovom rezultatu, možemo također koristiti funkciju `decode_predictions`, koja vraća top n klasa zajedno s njihovim nazivima.\n" ] }, { @@ -597,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Izračuni na GPU-u\n", + "## GPU izračuni\n", "\n", - "Duboke neuronske mreže, poput VGG-16 i drugih modernijih arhitektura, zahtijevaju prilično veliku računalnu snagu za izvođenje. Ima smisla koristiti ubrzanje putem GPU-a, ako je dostupno. Srećom, Keras automatski ubrzava izračune na GPU-u ako je dostupan. Možemo provjeriti može li Tensorflow koristiti GPU pomoću sljedećeg koda:\n" + "Duboke neuronske mreže, poput VGG-16 i drugih modernijih arhitektura, zahtijevaju prilično mnogo računalne snage za izvođenje. Ima smisla koristiti GPU ubrzanje, ako je dostupno. Srećom, Keras automatski ubrzava izračune na GPU-u ako je dostupan. Možemo provjeriti je li Tensorflow u stanju koristiti GPU pomoću sljedećeg koda:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Ekstrakcija značajki pomoću VGG-a\n", "\n", - "Ako želimo koristiti VGG-16 za ekstrakciju značajki iz naših slika, trebamo model bez završnih slojeva za klasifikaciju. Možemo instancirati VGG-16 model bez gornjih slojeva koristeći ovaj kod:\n" + "## Izvlačenje VGG značajki\n", + "\n", + "Ako želimo koristiti VGG-16 za izvlačenje značajki iz naših slika, potrebna nam je mreža bez završnih klasifikacijskih slojeva. Model VGG-16 bez gornjih slojeva možemo instancirati koristeći ovaj kod:\n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dimenzija tenzora značajki je 7x7x512, ali kako bismo ga vizualizirali, morali smo ga preoblikovati u 2D oblik.\n", + "Dimenzija tenzora značajki je 7x7x512, ali kako bismo ih vizualizirali morali smo ih preoblikovati u 2D oblik.\n", "\n", - "Sada pokušajmo vidjeti mogu li se te značajke koristiti za klasifikaciju slika. Ručno ćemo uzeti dio slika (u našem slučaju 50 mini-serija) i unaprijed izračunati njihove vektore značajki. Za to možemo koristiti Tensorflow **dataset** API. Funkcija `map` uzima dataset i primjenjuje zadanu lambda-funkciju kako bi ga transformirala. Ovaj mehanizam koristimo za izradu novih datasetova, `ds_features_train` i `ds_features_test`, koji sadrže značajke izdvojene pomoću VGG-a umjesto originalnih slika.\n" + "Sada pokušajmo vidjeti mogu li se te značajke koristiti za klasifikaciju slika. Ručno ćemo uzeti neki dio slika (50 minibatches, u našem slučaju) i prethodno izračunati njihove vektore značajki. Za to možemo koristiti Tensorflow **dataset** API. Funkcija `map` uzima dataset i primjenjuje zadanu lambda-funkciju za transformaciju. Ovaj mehanizam koristimo za konstrukciju novih dataset-ova, `ds_features_train` i `ds_features_test`, koji sadrže značajke izdvojene VGG-om umjesto originalnih slika.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Koristili smo konstrukciju `.take(50)` kako bismo ograničili veličinu skupa podataka i ubrzali našu demonstraciju. Naravno, ovaj eksperiment možete provesti na cijelom skupu podataka.\n", + "Koristili smo konstrukciju `.take(50)` kako bismo ograničili veličinu skupa podataka i ubrzali našu demonstraciju. Naravno, ovaj eksperiment možete provesti i na cijelom skupu podataka.\n", "\n", - "Sada, kada imamo skup podataka s izdvojenim značajkama, možemo trenirati jednostavan gusti klasifikator za razlikovanje između mačaka i pasa. Ova mreža će uzeti vektore značajki oblika (7,7,512) i proizvesti jedan izlaz koji odgovara ili psu ili mački. Budući da se radi o binarnoj klasifikaciji, koristimo funkciju aktivacije `sigmoid` i gubitak `binary_crossentropy`.\n" + "Sada kada imamo skup podataka s izdvojenim značajkama, možemo trenirati jednostavan gusti klasifikator koji će razlikovati mačke i pse. Ova mreža će uzeti vektorski prikaz značajki oblika (7,7,512) i proizvesti jedan izlaz koji odgovara ili psu ili mački. Budući da je riječ o binarnoj klasifikaciji, koristimo `sigmoid` aktivacijsku funkciju i `binary_crossentropy` funkciju gubitka.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Rezultat je odličan, možemo razlikovati mačku od psa s gotovo 95% vjerojatnosti! Međutim, ovaj pristup smo testirali samo na podskupu svih slika, jer ručna ekstrakcija značajki oduzima puno vremena.\n", + "Rezultat je izvrstan, možemo razlikovati mačku i psa s gotovo 95% vjerojatnosti! Međutim, ovaj smo pristup testirali samo na podskupini svih slika, jer ručno izdvajanje značajki izgleda kao da zahtijeva puno vremena.\n", "\n", - "## Transfer učenja pomoću jedne VGG mreže\n", + "## Transferno učenje koristeći jednu VGG mrežu\n", "\n", - "Također možemo izbjeći ručno unaprijed izračunavanje značajki korištenjem originalne VGG-16 mreže u cijelosti tijekom treniranja, dodavanjem ekstraktora značajki kao prvog sloja naše mreže.\n", + "Također možemo izbjeći ručno prethodno izračunavanje značajki korištenjem izvornog VGG-16 modela u cjelini tijekom treninga, dodavanjem ekstraktora značajki našoj mreži kao prvom sloju.\n", "\n", - "Ljepota Keras arhitekture je u tome što se VGG-16 model koji smo definirali gore može koristiti i kao sloj u drugoj neuronskoj mreži! Samo trebamo konstruirati mrežu s gustim klasifikatorom na vrhu i zatim trenirati cijelu mrežu koristeći povratnu propagaciju.\n" + "Ljepota Keras arhitekture je u tome što se VGG-16 model koji smo definirali gore također može koristiti kao sloj u drugoj neuronskoj mreži! Samo trebamo konstruirati mrežu s gustim klasifikatorom na vrhu, a zatim trenirati cijelu mrežu koristeći povratno propagiranje.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ovaj model izgleda kao end-to-end mreža za klasifikaciju, koja prima sliku i vraća klasu. Međutim, izazov je u tome što želimo da VGG16 djeluje kao ekstraktor značajki, a ne da se ponovno trenira. Stoga moramo **zamrznuti težine konvolucijskog ekstraktora značajki**. Pristup prvoj sloju mreže možemo ostvariti pozivom `model.layers[0]`, a potrebno je samo postaviti svojstvo `trainable` na `False`.\n", + "Ovaj model izgleda kao mreža za klasifikaciju od kraja do kraja, koja uzima sliku i vraća klasu. Međutim, problem je u tome što želimo da VGG16 djeluje kao ekstraktor značajki, a da se ne trenira ponovno. Stoga, trebamo **zamrznuti težine konvolucijskog ekstraktora značajki**. Možemo pristupiti prvom sloju mreže pozivom `model.layers[0]`, i trebamo samo postaviti svojstvo `trainable` na `False`.\n", "\n", - "> **Napomena**: Zamrzavanje težina ekstraktora značajki je potrebno, jer bi inače netrenirani sloj klasifikatora mogao uništiti originalne unaprijed trenirane težine konvolucijskog ekstraktora.\n", + "> **Napomena**: Zamrzavanje težina ekstraktora značajki je potrebno jer inače netrenirani sloj klasifikatora može uništiti originalne unaprijed trenirane težine konvolucijskog ekstraktora.\n", "\n", - "Možete primijetiti da, iako je ukupan broj parametara u našoj mreži oko 15 milijuna, treniramo samo 25 tisuća parametara. Svi ostali parametri gornjih konvolucijskih filtera su unaprijed trenirani. To je dobro, jer možemo fino podesiti manji broj parametara s manjim brojem primjera.\n", + "Možete primijetiti da dok je ukupni broj parametara u našoj mreži oko 15 milijuna, treniramo samo 25 tisuća parametara. Svi ostali parametri konvolucijskih filtera na višim razinama su unaprijed trenirani. To je dobro jer možemo fino podesiti manji broj parametara s manjim brojem primjera.\n", "\n", - "Sada ćemo trenirati našu mrežu i vidjeti koliko dobre rezultate možemo postići. Očekujte prilično dugo vrijeme izvođenja i ne brinite ako se čini da je izvršavanje neko vrijeme zamrznuto.\n" + "Sada ćemo trenirati našu mrežu i vidjeti koliko dobro možemo doći. Očekujte prilično dugo vrijeme izvođenja i nemojte se brinuti ako se čini da je izvršavanje neko vrijeme zaustavljeno.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Izgleda da smo dobili prilično točan klasifikator za mačke i pse!\n", + "Izgleda da smo dobili pristojno točan klasifikator za mačke i pse!\n", "\n", "## Spremanje i učitavanje modela\n", "\n", - "Nakon što smo istrenirali model, možemo spremiti arhitekturu modela i istrenirane težine u datoteku za buduću upotrebu:\n" + "Nakon što treniramo model, možemo spremiti arhitekturu modela i istrenirane težine u datoteku za buduću upotrebu:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Model možemo učitati iz datoteke u bilo kojem trenutku. To može biti korisno u slučaju da sljedeći eksperiment uništi model - ne biste morali početi ispočetka.\n" + "Model možemo zatim u bilo kojem trenutku učitati iz datoteke. To vam može biti korisno u slučaju da sljedeći eksperiment uništi model - ne biste morali započinjati ispočetka.\n" ] }, { @@ -868,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Fino podešavanje prijenosnog učenja\n", + "## Dorada prijenosa učenja\n", "\n", - "U prethodnom odjeljku, trenirali smo završni sloj klasifikatora kako bi klasificirao slike u našem vlastitom skupu podataka. Međutim, nismo ponovno trenirali ekstraktor značajki, a naš model se oslanjao na značajke koje je naučio na podacima ImageNet-a. Ako se vaši objekti vizualno razlikuju od uobičajenih ImageNet slika, ova kombinacija značajki možda neće funkcionirati najbolje. Stoga ima smisla započeti treniranje i konvolucijskih slojeva.\n", + "U prethodnom odjeljku obučili smo završni sloj klasifikatora da klasificira slike u našem vlastitom skupu podataka. Međutim, nismo ponovo trenirali ekstraktor značajki, i naš model se oslanjao na značajke koje je model naučio na ImageNet podacima. Ako se vaši objekti vizualno razlikuju od uobičajenih ImageNet slika, ova kombinacija značajki možda neće najbolje funkcionirati. Stoga ima smisla početi trenirati i konvolucijske slojeve.\n", "\n", - "Da bismo to učinili, možemo odmrznuti parametre konvolucijskih filtera koje smo prethodno zamrznuli.\n", + "Da bismo to učinili, možemo odmrznuti parametre konvolucijskih filtara koje smo prethodno zamrznuli.\n", "\n", - "> **Note:** Važno je prvo zamrznuti parametre i provesti nekoliko epoha treniranja kako bi se stabilizirale težine u sloju klasifikacije. Ako odmah započnete treniranje mreže od kraja do kraja s odmrznutim parametrima, velike pogreške mogu uništiti unaprijed naučene težine u konvolucijskim slojevima.\n", + "> **Napomena:** Važno je da prvo zamrznete parametre i izvršite nekoliko epoha treniranja kako biste stabilizirali težine u sloju klasifikacije. Ako odmah započnete trenirati cijelu mrežu s odmrznutim parametrima, velike pogreške vrlo vjerojatno će uništiti unaprijed naučene težine u konvolucijskim slojevima.\n", "\n", - "Naš konvolucijski VGG-16 model nalazi se unutar prvog sloja i sastoji se od mnogih slojeva. Možemo pogledati njegovu strukturu:\n" + "Naš konvolucijski VGG-16 model nalazi se unutar prvog sloja, i sam se sastoji od mnogo slojeva. Možemo pogledati njegovu strukturu:\n" ] }, { @@ -961,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Međutim, odmrzavanje svih njih odjednom nije najbolja ideja. Možemo prvo odmrznuti samo nekoliko završnih slojeva konvolucija, jer oni sadrže uzorke više razine koji su relevantni za naše slike. Na primjer, za početak možemo zamrznuti sve slojeve osim posljednja 4:\n" + "Međutim, odmrzavanje svih odjednom nije najbolja ideja. Možemo prvo odmrznuti samo nekoliko završnih slojeva konvolucija, jer oni sadrže obrasce viših razina koji su relevantni za naše slike. Na primjer, za početak možemo zamrznuti sve slojeve osim posljednjih 4: \n" ] }, { @@ -1000,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Primijetite da se broj trenirajućih parametara značajno povećao, ali je i dalje oko 50% svih parametara.\n", + "Primijetite da je broj parametara koji se treniraju značajno porastao, ali je još uvijek oko 50% svih parametara.\n", "\n", - "Nakon otključavanja, možemo odraditi još nekoliko epoha treniranja (u našem primjeru, odradit ćemo samo jednu). Također možete odabrati nižu stopu učenja kako biste minimizirali utjecaj na unaprijed istrenirane težine. Međutim, čak i s niskom stopom učenja, možete očekivati pad točnosti na početku treniranja, sve dok konačno ne dostigne nešto višu razinu nego u slučaju fiksnih težina.\n", + "Nakon odmrzavanja, možemo napraviti nekoliko dodatnih epoha treniranja (u našem primjeru, napravit ćemo samo jednu). Također možete odabrati nižu stopu učenja kako biste minimizirali utjecaj na prethodno naučene težine. Međutim, čak i s niskom stopom učenja, možete očekivati da će točnost u početku treninga pasti, dok na kraju ne dosegne nešto višu razinu nego u slučaju fiksnih težina.\n", "\n", - "> **Napomena:** Ovo treniranje odvija se znatno sporije jer moramo propagirati gradijente unatrag kroz mnoge slojeve mreže!\n" + "> **Napomena:** Ovo treniranje se odvija puno sporije, jer moramo propagirati gradijente nazad kroz mnogo slojeva mreže!\n" ] }, { @@ -1028,18 +1039,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vjerojatno ćemo postići veću točnost na trening skupu, jer koristimo snažniju mrežu s više parametara, ali točnost na validacijskom skupu neće se povećati u istoj mjeri.\n", + "Vjerojatno ćemo postići veću točnost treninga, jer koristimo snažniju mrežu s više parametara, ali će se točnost validacije povećati ne toliko.\n", "\n", - "Slobodno otključajte još nekoliko slojeva mreže i nastavite s treniranjem kako biste vidjeli možete li postići veću točnost!\n" + "Slobodno odmrznite još nekoliko slojeva mreže i trenirajte više, da vidite možete li postići veću točnost!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Ostali modeli računalnog vida\n", + "## Ostali računalni vid modeli\n", "\n", - "VGG-16 je jedna od najjednostavnijih arhitektura za računalni vid. Keras nudi mnogo više unaprijed istreniranih mreža. Najčešće korištene među njima su arhitekture **ResNet**, koje je razvila Microsoft, i **Inception** od Googlea. Na primjer, istražimo arhitekturu najjednostavnijeg modela ResNet-50 (ResNet je obitelj modela s različitim dubinama, možete eksperimentirati s ResNet-152 ako želite vidjeti kako izgleda zaista dubok model):\n" + "VGG-16 je jedna od najjednostavnijih arhitektura računalnog vida. Keras pruža mnogo više unaprijed istreniranih mreža. Najčešće korištene među njima su **ResNet** arhitekture, razvijene od strane Microsofta, i **Inception** od Googlea. Na primjer, istražimo arhitekturu najjednostavnijeg ResNet-50 modela (ResNet je obitelj modela s različitom dubinom, možete eksperimentirati s ResNet-152 ako želite vidjeti kako izgleda zaista duboki model):\n" ] }, { @@ -1441,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kao što možete vidjeti, model sadrži iste poznate građevne blokove: konvolucijske slojeve, slojeve za pooling i završni gusti klasifikator. Ovaj model možemo koristiti na potpuno isti način kao što smo koristili VGG-16 za transferno učenje. Možete pokušati eksperimentirati s gornjim kodom, koristeći različite ResNet modele kao osnovni model, i vidjeti kako se to odražava na točnost.\n", + "Kao što možete vidjeti, model sadrži iste dobro poznate građevne blokove: konvolucijske slojeve, slojeve za grupiranje i konačni gusti klasifikator. Možemo koristiti ovaj model na isti način na koji smo koristili VGG-16 za prenošenje učenja. Možete eksperimentirati s gornjim kodom, koristeći različite ResNet modele kao osnovni model i vidjeti kako se točnost mijenja.\n", "\n", - "## Batch Normalizacija\n", + "## Normalizacija paketa\n", "\n", - "Ova mreža sadrži još jednu vrstu sloja: **Batch Normalizacija**. Ideja batch normalizacije je dovesti vrijednosti koje prolaze kroz neuronsku mrežu u ispravan interval. Obično neuronske mreže najbolje rade kada su sve vrijednosti u rasponu od [-1,1] ili [0,1], i zato skaliramo/normaliziramo ulazne podatke u skladu s tim. Međutim, tijekom treniranja duboke mreže može se dogoditi da vrijednosti značajno izađu iz tog raspona, što otežava treniranje. Batch normalizacijski sloj izračunava prosjek i standardnu devijaciju za sve vrijednosti trenutnog minibatcha i koristi ih za normalizaciju signala prije nego što ga proslijedi kroz sloj neuronske mreže. Ovo značajno poboljšava stabilnost dubokih mreža.\n" + "Ova mreža sadrži još jednu vrstu sloja: **Normalizaciju paketa**. Ideja normalizacije paketa je dovesti vrijednosti koje prolaze kroz neuronsku mrežu u odgovarajući interval. Obično neuronske mreže najbolje rade kada su sve vrijednosti u rasponu [-1,1] ili [0,1], i zato skaliramo/normaliziramo naše ulazne podatke u skladu s tim. Međutim, tijekom treniranja duboke mreže može se dogoditi da vrijednosti značajno izađu izvan ovog raspona, što otežava treniranje. Sloj za normalizaciju paketa računa prosjek i standardnu devijaciju za sve vrijednosti trenutnog minibatcha, i koristi ih za normalizaciju signala prije nego što ga proslijedi kroz sloj neuronske mreže. Ovo značajno poboljšava stabilnost dubokih mreža.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Ključne točke\n", + "## Zaključak\n", "\n", - "Korištenjem prijenosnog učenja, uspjeli smo brzo sastaviti klasifikator za naš zadatak prilagođene klasifikacije objekata i postići visoku točnost. Međutim, ovaj primjer nije bio potpuno pravedan, jer je originalna VGG-16 mreža prethodno trenirana za prepoznavanje mačaka i pasa, pa smo samo ponovno koristili već postojeće obrasce u mreži. Možete očekivati nižu točnost kod egzotičnijih objekata specifičnih za određene domene, poput detalja na proizvodnoj liniji u tvornici ili različitih listova drveća.\n", + "Korištenjem transfernog učenja, uspjeli smo brzo sastaviti klasifikator za naš zadatak prilagođene klasifikacije objekata i postići visoku točnost. Međutim, ovaj primjer nije bio potpuno fer, jer je izvorna VGG-16 mreža prethodno trenirana za prepoznavanje mačaka i pasa, pa smo tako zapravo ponovno koristili većinu obrazaca koji su već bili prisutni u mreži. Možete očekivati nižu točnost na egzotičnijim specifičnim domenama objekata, poput detalja na proizvodnoj liniji u tvornici ili različitih vrsta lišća.\n", "\n", - "Možete primijetiti da složeniji zadaci koje sada rješavamo zahtijevaju veću računalnu snagu i ne mogu se lako riješiti na CPU-u. U sljedećoj jedinici pokušat ćemo koristiti lakšu implementaciju za treniranje istog modela koristeći manje računalne resurse, što rezultira samo neznatno nižom točnošću.\n" + "Možete vidjeti da složeniji zadaci koje sada rješavamo zahtijevaju veću računalnu snagu i ne mogu se lako riješiti na CPU-u. U sljedećem dijelu pokušat ćemo koristiti laganiju implementaciju za treniranje istog modela koristeći manje računalnih resursa, što rezultira samo malo nižom točnošću.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Odricanje od odgovornosti**: \nOvaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.\n" + "---\n\n\n**Napomena**:\nOvaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.\n\n" ] } ], @@ -1484,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-30T07:22:12+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "hr" } }, "nbformat": 4, diff --git a/translations/hr/lessons/5-NLP/README.md b/translations/hr/lessons/5-NLP/README.md index e5fc75b5..349e15d5 100644 --- a/translations/hr/lessons/5-NLP/README.md +++ b/translations/hr/lessons/5-NLP/README.md @@ -1,51 +1,51 @@ # Obrada Prirodnog Jezika -![Sažetak NLP zadataka u crtežu](../../../../translated_images/hr/ai-nlp.b22dcb8ca4707cea.webp) +![Sažetak NLP zadataka u doodle-u](../../../../translated_images/hr/ai-nlp.b22dcb8ca4707cea.webp) -U ovom dijelu fokusirat ćemo se na korištenje neuronskih mreža za rješavanje zadataka povezanih s **Obradom Prirodnog Jezika (NLP)**. Postoji mnogo NLP problema koje želimo da računala mogu riješiti: +U ovom odjeljku fokusirat ćemo se na korištenje neuronskih mreža za rješavanje zadataka vezanih uz **Obradu Prirodnog Jezika (NLP)**. Postoji mnogo NLP problema koje želimo da računala budu sposobna riješiti: -* **Klasifikacija teksta** je tipičan problem klasifikacije koji se odnosi na tekstualne sekvence. Primjeri uključuju klasifikaciju e-mail poruka kao spam ili ne-spam, ili kategorizaciju članaka kao sport, biznis, politika itd. Također, pri razvoju chat botova često trebamo razumjeti što korisnik želi reći — u tom slučaju bavimo se **klasifikacijom namjere**. Često, kod klasifikacije namjere, moramo raditi s mnogo kategorija. -* **Analiza sentimenta** je tipičan regresijski problem, gdje trebamo dodijeliti broj (sentiment) koji odgovara tome koliko je značenje rečenice pozitivno/negativno. Naprednija verzija analize sentimenta je **analiza sentimenta po aspektima** (ABSA), gdje sentiment ne dodjeljujemo cijeloj rečenici, već različitim dijelovima (aspektima), npr. *U ovom restoranu mi se svidjela kuhinja, ali atmosfera je bila grozna*. -* **Prepoznavanje imenovanih entiteta** (NER) odnosi se na problem izdvajanja određenih entiteta iz teksta. Na primjer, trebamo razumjeti da u frazi *Moram letjeti za Pariz sutra* riječ *sutra* označava DATUM, a *Pariz* je LOKACIJA. -* **Ekstrakcija ključnih riječi** je slična NER-u, ali trebamo automatski izdvojiti riječi važne za značenje rečenice, bez prethodnog treniranja za specifične tipove entiteta. -* **Grupiranje teksta** može biti korisno kada želimo grupirati slične rečenice, na primjer, slične zahtjeve u razgovorima tehničke podrške. -* **Odgovaranje na pitanja** odnosi se na sposobnost modela da odgovori na specifično pitanje. Model prima tekstualni odlomak i pitanje kao ulaz, te treba pružiti mjesto u tekstu gdje se nalazi odgovor na pitanje (ili, ponekad, generirati tekst odgovora). -* **Generiranje teksta** je sposobnost modela da generira novi tekst. To se može smatrati zadatkom klasifikacije koji predviđa sljedeće slovo/riječ na temelju nekog *tekstualnog upita*. Napredni modeli za generiranje teksta, poput GPT-3, mogu rješavati druge NLP zadatke poput klasifikacije koristeći tehniku zvanu [programiranje upita](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ili [inženjering upita](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Klasifikacija teksta** je tipični problem klasifikacije koji se odnosi na tekstualne nizove. Primjeri uključuju klasifikaciju e-mail poruka kao spam ili ne-spam, ili kategorizaciju članaka kao sport, posao, politika itd. Također, pri razvoju chat botova često trebamo razumjeti što je korisnik želio reći – u tom slučaju radimo s **klasifikacijom namjere**. Često kod klasifikacije namjere trebamo imati posla s mnogim kategorijama. +* **Analiza sentimenta** je tipični problem regresije, gdje trebamo pridružiti broj (sentiment) koji odgovara koliko je značenje rečenice pozitivno/negativno. Naprednija verzija analize sentimenta je **analiza sentimenta bazirana na aspektima** (ABSA), gdje sentiment pridružujemo ne cijeloj rečenici, već različitim njezinim dijelovima (aspektima), npr. *U ovom restoranu svidjela mi se kuhinja, ali atmosfera je bila užasna*. +* **Prepoznavanje imenovanih entiteta** (NER) odnosi se na problem izdvajanja određenih entiteta iz teksta. Na primjer, mogli bismo trebati razumjeti da u frazi *Moram letjeti u Pariz sutra* riječ *sutra* označava DATUM, a *Pariz* je LOKACIJA. +* **Izdvajanje ključnih riječi** sličan je NER-u, ali trebamo automatski izdvojiti riječi važne za značenje rečenice, bez predtreniravanja za specifične vrste entiteta. +* **Grupiranje teksta** može biti korisno kada želimo grupirati slične rečenice, primjerice slične zahtjeve u razgovorima tehničke podrške. +* **Odgovaranje na pitanja** odnosi se na sposobnost modela da odgovori na specifično pitanje. Model prima tekstovni odlomak i pitanje kao ulaze, a treba pružiti mjesto u tekstu gdje se nalazi odgovor na pitanje (ili, ponekad, generirati tekstualni odgovor). +* **Generiranje teksta** je sposobnost modela da generira novi tekst. To se može smatrati klasifikacijskim zadatkom koji predviđa sljedeće slovo/riječ na temelju nekog *tekstualnog uvoda*. Napredni modeli za generiranje teksta, poput GPT-3, sposobni su riješiti i druge NLP zadatke poput klasifikacije koristeći tehniku zvanu [prompt programiranje](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ili [prompt inženjering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) * **Sažimanje teksta** je tehnika kada želimo da računalo "pročita" dugi tekst i sažme ga u nekoliko rečenica. -* **Strojno prevođenje** može se promatrati kao kombinacija razumijevanja teksta na jednom jeziku i generiranja teksta na drugom jeziku. +* **Strojno prevođenje** može se promatrati kao kombinacija razumijevanja teksta na jednom jeziku i generiranje teksta na drugom jeziku. -U početku su se većina NLP zadataka rješavala tradicionalnim metodama poput gramatika. Na primjer, u strojnome prevođenju parseri su se koristili za transformaciju početne rečenice u sintaktičko stablo, zatim su se izdvajale semantičke strukture višeg nivoa kako bi se predstavilo značenje rečenice, a na temelju tog značenja i gramatike ciljnog jezika generirao se rezultat. Danas se mnogi NLP zadaci učinkovitije rješavaju pomoću neuronskih mreža. +U početku su većina NLP zadataka rješavana korištenjem klasičnih metoda poput gramatika. Primjerice, pri strojnome prevođenju koristili su se parseri za transformaciju početne rečenice u sintaksno stablo, zatim su izdvajane semantičke strukture viših razina za predstavljanje značenja rečenice, a na temelju tog značenja i gramatike ciljnog jezika generiran je rezultat. Danas se mnogi NLP zadaci učinkovitije rješavaju koristeći neuronske mreže. -> Mnoge klasične NLP metode implementirane su u Python biblioteci [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Dostupna je izvrsna [NLTK knjiga](https://www.nltk.org/book/) online koja pokriva kako se različiti NLP zadaci mogu riješiti pomoću NLTK-a. +> Mnoge klasične NLP metode implementirane su u [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python biblioteci. Postoji sjajna [NLTK Knjiga](https://www.nltk.org/book/) dostupna online koja objašnjava kako se različiti NLP zadaci mogu riješiti koristeći NLTK. Na našem tečaju uglavnom ćemo se fokusirati na korištenje neuronskih mreža za NLP, a NLTK ćemo koristiti gdje je potrebno. -Već smo naučili kako koristiti neuronske mreže za rad s tabličnim podacima i slikama. Glavna razlika između tih vrsta podataka i teksta je ta što je tekst sekvenca promjenjive duljine, dok je veličina ulaza u slučaju slika unaprijed poznata. Dok konvolucijske mreže mogu izdvojiti uzorke iz ulaznih podataka, uzorci u tekstu su složeniji. Na primjer, negacija može biti odvojena od subjekta za mnogo riječi (npr. *Ne volim naranče* naspram *Ne volim one velike šarene ukusne naranče*), i to bi se još uvijek trebalo interpretirati kao jedan uzorak. Stoga, za obradu jezika trebamo uvesti nove vrste neuronskih mreža, poput *rekurentnih mreža* i *transformera*. +Već smo naučili o korištenju neuronskih mreža za rad s tabličnim podacima i slikama. Glavna razlika između tih vrsta podataka i teksta jest u tome što je tekst niz varijabilne duljine, dok je veličina ulaza kod slika unaprijed poznata. Dok konvolucijske mreže mogu izdvajati obrasce iz ulaznih podataka, obrasci u tekstu su složeniji. Npr., negacija može biti odvojena od subjekta proizvoljnim brojem riječi (npr. *Ne volim naranče*, vs. *Ne volim te velike šarene ukusne naranče*), a to se još uvijek treba interpretirati kao jedan obrazac. Zato za obradu jezika trebamo uvesti nove vrste neuronskih mreža, poput *rekurentnih mreža* i *transformera*. ## Instalacija Biblioteka -Ako koristite lokalnu Python instalaciju za pokretanje ovog tečaja, možda ćete trebati instalirati sve potrebne biblioteke za NLP pomoću sljedećih naredbi: +Ako koristite lokalnu Python instalaciju za izvođenje ovog tečaja, možda ćete trebati instalirati sve potrebne biblioteke za NLP koristeći sljedeće naredbe: **Za PyTorch** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **Za TensorFlow** ```bash pip install -r requirements-tf.txt ``` -> NLP s TensorFlowom možete isprobati na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> NLP s TensorFlow možete isprobati na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) -## Upozorenje o GPU-u +## Upozorenje za GPU -U ovom dijelu, u nekim primjerima trenirat ćemo prilično velike modele. -* **Koristite računalo s GPU-om**: Preporučuje se pokretanje vaših bilježnica na računalu s GPU-om kako biste smanjili vrijeme čekanja pri radu s velikim modelima. -* **Ograničenja GPU memorije**: Pokretanje na GPU-u može dovesti do situacija u kojima vam ponestane GPU memorije, posebno pri treniranju velikih modela. -* **Potrošnja GPU memorije**: Količina GPU memorije koja se troši tijekom treniranja ovisi o raznim faktorima, uključujući veličinu minibatch-a. -* **Smanjite veličinu minibatch-a**: Ako naiđete na probleme s GPU memorijom, razmislite o smanjenju veličine minibatch-a u vašem kodu kao potencijalnom rješenju. -* **Oslobađanje GPU memorije u TensorFlowu**: Starije verzije TensorFlowa možda neće pravilno osloboditi GPU memoriju pri treniranju više modela unutar jednog Python kernela. Kako biste učinkovito upravljali korištenjem GPU memorije, možete konfigurirati TensorFlow da alocira GPU memoriju samo po potrebi. -* **Uključivanje koda**: Da biste postavili TensorFlow da alocira GPU memoriju samo kada je to potrebno, uključite sljedeći kod u svoje bilježnice: +U ovom odjeljku u nekim ćemo primjerima trenirati prilično velike modele. +* **Koristite računalo s podrškom za GPU**: Preporučuje se pokretanje vaših bilježnica na računalu s podrškom za GPU kako biste smanjili vrijeme čekanja pri radu s velikim modelima. +* **Ograničenja memorije GPU-a**: Pokretanje na GPU može dovesti do situacija u kojima vam ponestane memorije GPU-a, osobito pri treniranju velikih modela. +* **Potrošnja memorije GPU-a**: Količina memorije GPU-a koju model troši tijekom treniranja ovisi o raznim čimbenicima, uključujući veličinu minibatch-a. +* **Minimizirajte veličinu minibatch-a**: Ako naiđete na probleme s memorijom GPU-a, razmislite o smanjenju veličine minibatch-a u vašem kodu kao potencijalnom rješenju. +* **Otpust memorije GPU-a u TensorFlowu**: Starije verzije TensorFlowa možda neće pravilno otpustiti memoriju GPU-a kada trenirate više modela u jednoj Python sesiji. Za učinkovito upravljanje potrošnjom memorije na GPU-u, možete konfigurirati TensorFlow da alocira memoriju GPU-a samo po potrebi. +* **Uključivanje koda**: Da biste postavili TensorFlow da povećava alokaciju memorije GPU-a samo kada je potrebna, uključite sljedeći kod u vaše bilježnice: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Ako vas zanima učenje o NLP-u iz perspektive klasičnog ML-a, posjetite [ovaj niz lekcija](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Ako ste zainteresirani za učenje o NLP-u iz klasične perspektive strojnog učenja, posjetite [ovaj skup lekcija](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## U ovom dijelu -U ovom dijelu naučit ćemo o: +## U ovom odjeljku +U ovom odjeljku naučit ćemo o: * [Predstavljanje teksta kao tenzora](13-TextRep/README.md) -* [Ugrađivanje riječi](14-Emdeddings/README.md) +* [Word Embeddings](14-Emdeddings/README.md) * [Modeliranje jezika](15-LanguageModeling/README.md) * [Rekurentne neuronske mreže](16-RNN/README.md) * [Generativne mreže](17-GenerativeNetworks/README.md) * [Transformeri](18-Transformers/README.md) -**Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file +--- + + +**Napomena**: +Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda. + \ No newline at end of file diff --git a/translations/my/.co-op-translator.json b/translations/my/.co-op-translator.json index b2cf6751..a0760f2d 100644 --- a/translations/my/.co-op-translator.json +++ b/translations/my/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "my" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T19:56:30+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "my" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:33:41+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "my" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "my", + "failure_date": "2026-07-08T19:54:55+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "etc/CODE_OF_CONDUCT.md": { "original_hash": "c06b12caf3c901eb3156e3dd5b0aea56", "translation_date": "2025-08-26T00:45:17+00:00", @@ -54,8 +73,8 @@ "language_code": "my" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:35:15+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T19:48:45+00:00", "source_file": "examples/README.md", "language_code": "my" }, @@ -66,8 +85,8 @@ "language_code": "my" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:16:07+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T19:50:30+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "my" }, @@ -79,7 +98,7 @@ }, "lessons/1-Intro/README.md": { "original_hash": "f57e8aa46141fd220b16ffed8f11aec7", - "translation_date": "2025-11-18T22:13:19+00:00", + "translation_date": "2026-07-08T19:50:07+00:00", "source_file": "lessons/1-Intro/README.md", "language_code": "my" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "my" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T19:38:00+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "my" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-25T23:17:32+00:00", @@ -330,8 +355,8 @@ "language_code": "my" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-25T21:31:03+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T19:51:07+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "my" }, @@ -355,7 +380,7 @@ }, "lessons/6-Other/23-MultiagentSystems/README.md": { "original_hash": "38a1185ae3d54b180378bbd71ae3ef16", - "translation_date": "2025-09-23T15:12:50+00:00", + "translation_date": "2026-07-08T19:56:00+00:00", "source_file": "lessons/6-Other/23-MultiagentSystems/README.md", "language_code": "my" }, diff --git a/translations/my/CONTRIBUTING.md b/translations/my/CONTRIBUTING.md new file mode 100644 index 00000000..3cf538de --- /dev/null +++ b/translations/my/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# AI-For-Beginners သို့ ဝေစုခြင်း + +AI-For-Beginners သို့ ဝေစုရန် စိတ်ဝင်စားမှုအတွက် ကျေးဇူးတင်ပါသည်! ဘာသာပြန်ခြင်း၊ သင်ခန်းစာပြင်ဆင်ခြင်းနှင့် ဖော်မတ် အမှားပြင်ဆင်ခြင်းများကို ကြိုဆိုပါသည်။ + +## Microsoft Contributor License Agreement (CLA) + +ဤပရောဂျက်သည် ဝေစုမှုများနှင့် အကြံပြုချက်များကို ကြိုဆိုသည်။ ပိုင်းဝေမည့်အများစုသည် သင်၏ ဝေစုခွင့်ကို သင်ပိုင်သည်ဟု ကြေညာသည့် Contributor License Agreement (CLA) သို့ သဘောတူရန် လိုအပ်သည်။ အသေးစိတ်အချက်အလက်များအတွက် [https://cla.microsoft.com](https://cla.microsoft.com) တွင် ကြည့်ပါ။ + +သင်သည် pull request တင်သည့်အခါ CLA-bot အလိုအလျှောက် CLA လိုအပ်မလား အတည်ပြု၍ PR သို့ သင့်တော်သော အမှတ်တံဆိပ်၊ မှတ်ချက်များ ထည့်သွင်းပေးပါလိမ့်မည်။ bot မှ ညွှန်ကြားသောနည်းလမ်းများကို အတိုင်းလိုက်နာရုံပါပဲ။ ဤလုပ်ဆောင်ချက်ကို CLA ကို အသုံးပြုသည့် repository များအားလုံးအတွင်း တစ်ခါတည်းသာ လိုအပ်ပါမည်။ + +## ဝေစုပုံ + +### ၁။ အက္ခရာလွဲ / ကုဒ် အမှားပြင်ခြင်း +Jupyter notebook သို့မဟုတ် သင်ခန်းစာ markdown ဖိုင်တွင် အက္ခရာလွဲ သို့မဟုတ် အမှား တွေ့လျှင်- +၁။ repository ကို fork လုပ်ပါ။ +၂။ အက္ခရာလွဲ သို့မဟုတ် ချို့ယွင်းနေသောလင့်ခ်ကို ပြင်ဆင်ပါ။ +၃။ ပြုပြင်ချက် ရှင်းလင်းသော ဖော်ပြချက်ဖြင့် Pull Request တင်ပါ။ + +### ၂။ ဘာသာပြန်မှုတင်သွင်းခြင်း +ကျွန်ုပ်တို့သည် သင်ခန်းစာများကို အခြားဘာသာစကားများသို့ ဘာသာပြန်ရန် ကြိုဆိုပါသည်။ `translations/` ဖိုလ်ဒါအောက်တွင် ရှိပြီးသားဖိုလ်ဒါနာမည်များကို အသုံးပြု၍ ဘာသာပြန်ခြင်းများကိုထားပါ (ဥပမာ `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`)။ + +အသေးစိတ်အတွက် [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md) ကို ကြည့်ပါ။ + +--- + + +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ + \ No newline at end of file diff --git a/translations/my/examples/README.md b/translations/my/examples/README.md index 791423b7..7314fc39 100644 --- a/translations/my/examples/README.md +++ b/translations/my/examples/README.md @@ -1,85 +1,87 @@ -# AI စတင်လေ့လာသူများအတွက် နမူနာများ +# စတင်သုံးရန်အဆင်ပြေသော AI ကိုအသုံးပြုရန် နမူနာများ -ကြိုဆိုပါတယ်! ဒီ directory မှာ AI နဲ့ machine learning ကို စတင်လေ့လာဖို့အတွက် လွယ်ကူပြီး တစ်ခုချင်းစီ standalone နမူနာများ ပါဝင်ပါတယ်။ နမူနာတစ်ခုချင်းစီကို စတင်လေ့လာသူများအတွက် သက်သာစေဖို့ အကြောင်းအရာများကို အသေးစိတ် ရှင်းပြထားပြီး အဆင့်ဆင့် လမ်းညွှန်ချက်များ ပါဝင်ပါတယ်။ +ကြိုဆိုပါသည်! ဤဖိုလ်ဒါတွင် AI နှင့် စက်ရုပ်သင်ယူမှုကို စတင်လေ့လာနိုင်ရန် ရိုးရှင်း၍ သပ်သပ်ရပ်ရပ် နမူနာများ ပါဝင်သည်။ နမူနာတိုင်းကို စတင်သုံးသူများအတွက် အသင့်ပြင်ထားပြီး အသေးစိတ် မှတ်ချက်များနှင့် ခြေလှမ်းလိုက်ရှင်းပြချက်များပါဝင်ပါသည်။ -## 📚 နမူနာများအကြောင်းအကျဉ်း +## 📚 နမူနာများ အနှစ်ချုပ် -| နမူနာ | ဖော်ပြချက် | အခက်အခဲအဆင့် | လိုအပ်ချက်များ | -|-------|------------|----------------|----------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | သင့်ရဲ့ ပထမဆုံး AI အစီအစဉ် - လွယ်ကူတဲ့ pattern recognition | ⭐ စတင်လေ့လာသူ | Python အခြေခံ | -| [Simple Neural Network](../../../examples/02-simple-neural-network.py) | Neural network ကို အခြေခံကနေ တည်ဆောက်ခြင်း | ⭐⭐ စတင်လေ့လာသူ+ | Python, အခြေခံဂဏန်းသိပ္ပံ | -| [Image Classifier](./03-image-classifier.ipynb) | Pre-trained model နဲ့ ပုံတွေကို အမျိုးအစားခွဲခြားခြင်း | ⭐⭐ စတင်လေ့လာသူ+ | Python, numpy | -| [Text Sentiment](../../../examples/04-text-sentiment.py) | စာသား sentiment (အပြုသဘော/အဆိုးသဘော) ကို ခွဲခြားခြင်း | ⭐⭐ စတင်လေ့လာသူ+ | Python | +| နမူနာ | ဖော်ပြချက် | အခက်အခဲ | မတိုင်မီ လေ့လာထားရန် | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | သင်၏ ပထမဆုံး AI အစီအစဉ် - ရိုးရှင်းသော ပုံစံသိရှိခြင်း | ⭐ စတင်သုံးသူ | Python အခြေခံ | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Neural Network ကို အစပြု၍ တည်ဆောက်ခြင်း | ⭐⭐ စတင်+ | Python, အခြေခံ သင်္ချာ | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | အရင်ဆုံး လေ့လာထားသော မော်ဒယ်ဖြင့် ဓာတ်ပုံခွဲခြားခြင်း | ⭐⭐ စတင်+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | စာသား၏ ခံစားချက် ခွဲခြားခြင်း (ကောင်း/မကောင်း) | ⭐⭐ စတင်+ | Python | -## 🚀 စတင်လေ့လာခြင်း +## 🚀 စတင်အသုံးပြုခြင်း -### လိုအပ်ချက်များ +### မတိုင်မီ လိုအပ်ချက်များ -Python (3.8 သို့မဟုတ် အထက်) ကို install လုပ်ထားပါ။ လိုအပ်တဲ့ packages တွေကို install လုပ်ပါ: +Python ကို တပ်ဆင်ထားသည်ကို သေချာစေပါ (3.8 နှင့်အထက်အကြံပြုသည်)။ လိုအပ်သော package များကို တပ်ဆင်ပါ။ ```bash -# For Python scripts +# Python စက္ရုပ်များအတွက် pip install numpy -# For Jupyter notebooks (image classifier) +# Jupyter စာအုပ်များအတွက် (ပုံများ စစ်ဆေးသူ) pip install jupyter numpy pillow tensorflow ``` -သို့မဟုတ် main curriculum မှ conda environment ကို အသုံးပြုပါ: +ဒါမှမဟုတ် မြောက်မြားသော သင်တန်းအတွင်းပါဝင်သော conda ပတ်ဝန်းကျင်ကို အသုံးပြုနိုင်သည်။ ```bash conda env create --name ai4beg --file ../environment.yml conda activate ai4beg ``` -### နမူနာများကို အလုပ်လုပ်စေခြင်း +### နမူနာများကို လုပ်ဆောင်ခြင်း -**Python scripts (.py files) အတွက်:** +**Python စကရစ်(.py ဖိုင်) များအတွက်:** ```bash python 01-hello-ai-world.py ``` -**Jupyter notebooks (.ipynb files) အတွက်:** +**Jupyter မှတ်စုစာအုပ်(.ipynb ဖိုင်) များအတွက်:** ```bash jupyter notebook 03-image-classifier.ipynb ``` -## 📖 လေ့လာရေးလမ်းကြောင်း +## 📖 သင်ယူရေးလမ်းကြောင်း -နမူနာများကို အစဉ်လိုက် လေ့လာဖို့ အကြံပြုပါတယ်: +နမူနာများကို အဆင့်လိုက် နားလည်ကြည့်ပါ။ -1. **"Hello AI World" နဲ့ စတင်ပါ** - pattern recognition အခြေခံကို လေ့လာပါ -2. **Simple Neural Network တည်ဆောက်ပါ** - neural networks ဘယ်လိုအလုပ်လုပ်သလဲ နားလည်ပါ -3. **Image Classifier ကို စမ်းကြည့်ပါ** - အမှန်တကယ် ပုံတွေနဲ့ AI အလုပ်လုပ်ပုံကို ကြည့်ပါ -4. **Text Sentiment ကို ခွဲခြားပါ** - natural language processing ကို စမ်းကြည့်ပါ +1. **"Hello AI World" နှင့် စတင်ပါ** - ပုံစံသိရှိခြင်း အခြေခံကို သင်ယူပါ +2. **ရိုးရှင်းသော Neural Network တည်ဆောက်ပါ** - Neural Network များသည် မည်သို့ လုပ်ဆောင်ကြသည်ကို နားလည်ပါ +3. **ဓာတ်ပုံခွဲခြားစက်ကို ကြိုးစားပါ** - အမှန်တကယ် AI ကို တင်ပြခြင်း +4. **စာသားခံစားချက် ကို ခွဲခြားပါ** - သဘာဝဘာသာစကားဖြင့် လေ့လာမှုကို စူးစမ်းပါ -## 💡 စတင်လေ့လာသူများအတွက် အကြံပေးချက်များ +## 💡 စတင်သုံးသူများအတွက်အကြံပြုချက်များ -- **Code မှာပါတဲ့ မှတ်ချက်တွေကို သေချာဖတ်ပါ** - တစ်ကြောင်းချင်းစီ ဘာလုပ်သလဲ ရှင်းပြထားပါတယ် -- **စမ်းကြည့်ပါ!** - တန်ဖိုးတွေကို ပြောင်းပြီး ဘာဖြစ်မလဲ ကြည့်ပါ -- **အရာအားလုံးကို နားလည်ဖို့ စိတ်ပူမထားပါနဲ့** - လေ့လာခြင်းက အချိန်ယူရပါတယ် -- **မေးမြန်းပါ** - [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) ကို အသုံးပြုပါ +- **ကုဒ် မှတ်ချက်များကို ဂရုစိုက်ဖတ်ပါ** - တစ်ကြောင်းခြင်းစီ ရည်ရွယ်ချက်ကို ရှင်းပြထားသည် +- **စမ်းသပ်ကြည့်ပါ!** - တန်ဖိုးများကို ပြောင်းလဲ၍ ဖြစ်တတ်သည်ကို ကြည့်ရှုပါ +- **အားလုံးကို နားလည်ဖို့ စိုးရိမ် မနေပါနှင့်** - သင်ယူမှုသည် အချိန်ယူသည် +- **မေးခွန်း မေးနိုင်ပါသည်** - [ဆွေးနွေးပွဲအဖွဲ့](https://github.com/microsoft/AI-For-Beginners/discussions) ကို အသုံးပြုပါ ## 🔗 နောက်တစ်ဆင့်များ -ဒီနမူနာတွေကို ပြီးမြောက်ပြီးနောက်မှာ အပြည့်အစုံ curriculum ကို လေ့လာပါ: -- [AI အကျဉ်းချုပ်](../lessons/1-Intro/README.md) +ဤနမူနာများပြီးစီးပြီးနောက် ထပ်မံ လေ့လာလိုပါက: +- [AI နည်းပညာမိတ်ဆက်ခြင်း](../lessons/1-Intro/README.md) - [Neural Networks](../lessons/3-NeuralNetworks/README.md) -- [Computer Vision](../lessons/4-ComputerVision/README.md) -- [Natural Language Processing](../lessons/5-NLP/README.md) +- [ကွန်ပျူတာမြင်ကွင်း](../lessons/4-ComputerVision/README.md) +- [သဘာဝဘာသာစကား နှင့်ဖြေရှင်းမှု](../lessons/5-NLP/README.md) -## 🤝 အထောက်အပံ့ပေးခြင်း +## 🤝 ဝေမျှပါ -ဒီနမူနာတွေကို အသုံးဝင်တယ်လို့ တွေ့ရင် ကျွန်တော်တို့ကို အကောင်းပြောပါ: -- ပြဿနာတွေကို report လုပ်ပါ သို့မဟုတ် တိုးတက်မှုအကြံပေးပါ -- စတင်လေ့လာသူများအတွက် နမူနာတွေ ပိုမိုထည့်ပါ -- Documentation နဲ့ မှတ်ချက်တွေကို တိုးတက်အောင်လုပ်ပါ +ဤနမူနာများကို အသုံးဝင်သည်ဟု တွေ့လျှင် ကျေးဇူးပြု၍ တိုးတတ်မှုတွင် အကူအညီ ပေးပါ။ +- ပြဿနာများတင်ပြခြင်း သို့မဟုတ် တိုးတတ်မှုဆွေးနွေးခြင်း +- စတင်သုံးသူများအတွက် နမူနာများ ထပ်ထည့်ပေးခြင်း +- စာတမ်းနှင့် မှတ်ချက်များ တိုးတတ်စေခြင်း --- -*သတိရပါ: ကျွမ်းကျင်သူတိုင်းဟာ တစ်ချိန်က စတင်လေ့လာသူတစ်ဦးဖြစ်ခဲ့ပါတယ်။ လေ့လာမှုကို ပျော်ရွှင်စွာ ဆက်လက်ပါ! 🎓* +*သတိပြုရန်: စွမ်းကျင်သူတိုင်းသည် အစပိုင်းတွင် စတင်သုံးသူ ဖြစ်ခဲ့သည်။ ပျော်ရွှင်စွာ သင်ယူပါ! 🎓* --- -**အကြောင်းကြားချက်**: -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွဲအချော်များ သို့မဟုတ် အနားယူမှုမှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file + +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ + \ No newline at end of file diff --git a/translations/my/lessons/0-course-setup/how-to-run.md b/translations/my/lessons/0-course-setup/how-to-run.md index 76ad6f99..45990b7b 100644 --- a/translations/my/lessons/0-course-setup/how-to-run.md +++ b/translations/my/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ -# နည်းလမ်း အတိုင်း ကုတ်ကို လည်ပတ်ရန် +# ကုဒ်ကို run လုပ်နည်း -ဒီ သင်ခန်းစာဟာ အလုပ်လုပ်နိုင်တဲ့ ဥပမာတွေ နဲ့ လက်တွေ့လေ့ကျင့်ခန်းတွေ များစွာ ပါဝင်ပြီး သင် လည်ပတ်ချင်မယ်။ ဒါကို လုပ်ဖို့ သင် လိုအပ်တာက ဒီသင်ခန်းစာ၏ အစိတ်အပိုင်းတစ်ခုအနေဖြင့် ပေးထားတဲ့ Jupyter Notebooks ထဲမှာ Python ကုတ်ကို လည်ပတ်နိုင်စွမ်းရှိဖို့ ဖြစ်ပါတယ်။ ကုတ်ကို လည်ပတ်ဖို့ အနည်းငယ် ရွေးချယ်စရာရှိပါတယ်- +ဒီသင်ရိုးတွင် run လုပ်လိုစိတ်ရှိမယ့် executable ဥပမာနဲ့ စမ်းသပ်မှုတွေ များပြားနေပါတယ်။ ဒါကိုလုပ်ဖို့အတွက်, သင်ရိုးအချက်အချာတွင်ပါဝင်တဲ့ Jupyter Notebooks ဂြိုဟ်တွင် Python ကုဒ်ကို run လုပ်နိုင်စွမ်းလိုအပ်ပါတယ်။ Run လုပ်ရာမှာတော့ ရွေးချယ်စရာစုံရှိပါတယ်။ -## သင့် ကွန်ပျူတာပေါ်မှာ ဒေသခံ လည်ပတ်ရန် +## ကိုယ့်ကွန်ပျူတာပေါ်မှာ locally run လုပ်ခြင်း -သင့် ကွန်ပျူတာပေါ်မှာ ဒေသခံ လည်ပတ်ဖို့ Python တပ်ဆင်ထားဖို့ လိုအပ်ပါတယ်။ တစ်ခုအတွဲအနေနဲ့ အကြံပြုတာက **[miniconda](https://conda.io/en/latest/miniconda.html)** ကို တပ်ဆင်ဖို့ ဖြစ်ပြီး ဒါဟာ `conda` package manager ကို ထောက်ပံ့တဲ့ ပိုလွယ်ကူတဲ့ Python **virtual environment** များအတွက် တပ်ဆင်ဖို့ တစ်ခုလေးပါ။ +ကိုယ့်ကွန်ပျူတာပေါ်မှာ locally run လုပ်ဖို့ Python installation လိုအပ်ပါတယ်။ တစ်ခုအကြံပြုချင်တာက **[miniconda](https://conda.io/en/latest/miniconda.html)** ကို install လုပ်တာပါ - ဒါက လွယ်ကူဘဲ 설치 ဖြစ်ပြီး Python နဲ့အမျိုးမျိုးသော **virtual environments** အတွက် `conda` package manager ကို support လုပ်ပါတယ်။ -miniconda တပ်ဆင်ပြီးပါက repository ကို clone ဆွဲပြီး ဒီသင်တန်းအတွက် အသုံးပြုမဲ့ virtual environment တစ်ခု ဖန်တီးပါ- +miniconda install လုပ်ပြီးတဲ့နောက်, repository ကို clone လုပ်ပြီး သင်တန်းအတွက် အသုံးပြုမယ့် virtual environment တစ်ခုကို တည်ဆောက်ပါ။ ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,19 +15,19 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Visual Studio Code ကို Python Extension နဲ့ အသုံးပြုခြင်း +### Visual Studio Code ကို Python Extension နှင့် သုံးခြင်း -ဒီ သင်ခန်းစာကို အသုံးပြုရာမှာ [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) ကို [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) နဲ့ဖွင့်၍ သုံးလို့ အကောင်းဆုံးပါ။ +ဒီသင်ရိုးကို အကောင်းဆုံးအသုံးပြုဖို့အတွက် [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) ကို [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) နဲ့ကောင်းကောင်းဖွင့်သုံးပါ။ -> **မှတ်ချက်**: VS Code ထဲမှာ directory ကို clone ဆွဲပြီးဖွင့်လိုက်တာနဲ့ Python extensions ကို အလိုအလျောက် တပ်ဆင်ဖို့ ပေးရှုံ့ပေးမှာ ဖြစ်ပါတယ်။ အထက်မှာ ဖော်ပြထားတဲ့အတိုင်း miniconda ကိုလည်း တပ်ဆင်ထားဖို့ လိုအပ်မှာ ဖြစ်ပါတယ်။ +> **မှတ်ချက်**: repository ကို clone လုပ်ပြီး VS Code မှာဖွင့်မယ်ဆိုရင် Python extensions ကို install လုပ်ဖို့ အလိုအလျောက် sugesst လုပ်ပါလိမ့်မယ်။ အထက်ဖေါ်ပြခဲ့တဲ့အတိုင်း miniconda ကိုလည်း install လုပ်ထားဖို့လိုပါပဲ။ -> **မှတ်ချက်**: VS Code က container အတွင်းမှာ repo ကို ပြန်ဖွင့်ဖို့ 제안လာရင် ဒေသခံ Python တပ်ဆင်မှုကို အသုံးပြုဖို့ ထို ပြန်ဖွင့်ခြင်းကို ငြင်းဆန်သင့်ပါတယ်။ +> **မှတ်ချက်**: VS Code က repository ကို container တစ်ခုအဖြစ်ပြန်ဖွင့်ဖို့ sugesst လုပ်လာရင် local Python installation သုံးဖို့ အဲ့ဒီတောင်းဆိုမှုကို ပယ်ချသင့်ပါတယ်။ -### Browser တွင် Jupyter အသုံးပြုခြင်း +### Browser မှ Jupyter သုံးခြင်း -သင့် ရှိရာ ကွန်ပျူတာမှာ browser မှတစ်ဆင့် Jupyter ပတ်ဝန်းကျင်ကိုလည်း အသုံးပြုနိုင်ပါတယ်။ classical Jupyter နဲ့ JupyterHub နှစ်ခုလုံးမှာ auto-completion, ကုတ်အလင်းပေးခြင်း စသည်တို့ ပါဝင်တဲ့ သက်တောင့်သက်သာ ဖွံ့ဖြိုးမှုပတ်ဝန်းကျင်ကို ရရှိစေပါတယ်။ +ကိုယ့်ကိုယ်ပိုင်ကွန်ပျူတာပေါ်မှာ browser ကနေ Jupyter environment ကိုသုံးနိုင်ပါတယ်။ classic Jupyter နဲ့ JupyterHub ဖွင့်တဲ့အခါမှာ auto-completion, code highlighting စတာတွေပါဝင်တဲ့ ထောက်ပံ့ရေးကောင်းတဲ့ဖွံ့ဖြိုးရေး အခြေအနေကိုရရှိပါတယ်။ -ဒေသခံ Jupyter ကို စတင်ရန် သင်တန်း folder ကိုသွားပြီး အောက်ပါအတိုင်း လည်ပတ်ပါ- +Jupyter ကို locally စလိုချင်ရင် သင်တန်းဖိုင်ရှိတဲ့ directory ကို သွားပြီး အောက်ပါ command ကို run လုပ်ပါ - ```bash jupyter notebook @@ -36,36 +36,36 @@ or ```bash jupyterhub ``` -ပြီးရင် `.ipynb` ဖိုင် ဘယ်ဟာမဆို သွားရှာဖွေ၊ ဖွင့်ပြီး အလုပ်ဆောင်နိုင်ပါပြီ။ +ပြီးရင် `.ipynb` ဖိုင်တွေကိုရွေးပြီးဖွင့်နိုင်ပါပြီ၊ မိမိလုပ်ဆောင်စတင်နိုင်ပါပြီ။ -### Container မှာ လည်ပတ်ခြင်း +### Container ထဲမှာ run လုပ်ခြင်း -Python တပ်ဆင်မထားဘဲ container ထဲမှာ ကုတ်တွေ လည်ပတ်လိုက်ရင်နည်းလမ်းတစ်ခုရှိပါတယ်။ ကျွန်တော်တို့ရဲ့ repo ထဲမှာ `.devcontainer` ဆိုတဲ့ folder က container ဖန်တီးနည်းကို ဖော်ပြပေးတာကြောင့် VS Code က container မှာ repo ကို ပြန်ဖွင့်ဖို့ အခွင့်အလမ်းပေးပါတယ်။ ဒီအတွက် Docker ကို တပ်ဆင်ထားရမှာဖြစ်ပြီး ပိုကြမ်းတမ်းရှုပ်ထွေးတဲ့ နယ်ပယ်ဖြစ်လို့ နည်းပညာပိုင်းမှာ ကျွမ်းကျင်သူတွေအတွက်သာ အသုံးပြုဖို့ အကြံပြုပါတယ်။ +Python installation အစား container ထဲ run လုပ်နိုင်ပါတယ်။ ကျွန်တော်တို့ repo မှာ `.devcontainer` ဆိုတဲ့ folder တစ်ခု ထည့်ထားပြီး container ပြုပြင်ဖွဲ့စည်းနည်း ဖော်ပြပေးထားတာကြောင့် VS Code မှာ container အဖြစ် အလွယ်တကူဖွင့်စီမံရန် အခွင့်အရေးပေးပါတယ်။ ဒါအတွက် Docker installation လိုအပ်ပြီး အနည်းငယ်ရှုပ်ထွေးတာကြောင့် အတွေ့အကြုံရှိသူတွေကို အကြံပြုပါတယ်။ -## Cloud မှာ လည်ပတ်ခြင်း +## Cloud မှာ run လုပ်ခြင်း -Python ကို ဒေသခံမှာ တပ်ဆင်ချင် မထားဘူး၊ cloud資源အသုံးပြုခွင့်ရှိရင် cloud မှာ ကုတ်ကို လည်ပတ်အသုံးပြုဖို့ ကောင်းတဲ့ နည်းလမ်းများ ရှိပါတယ်- +Python ကို ကိုယ့်ကွန်ပျူတာမှာ install မလုပ်ချင်ဘူးဆိုရင်နဲ့ cloud resource တွေကိုအသုံးချနိုင်တယ်ဆိုရင် cloud မှာ run လုပ်ရတာကောင်းသောရွေးချယ်စရာတခုဖြစ်ပါတယ်။ တွဲချိတ် run လုပ်နည်းအများအပြားရှိတယ် - -* **[GitHub Codespaces](https://github.com/features/codespaces)** ကို အသုံးပြုခြင်း။ GitHub မှာ သင့်အတွက် virtual environment ဖန်တီးပေးပြီး VS Code browser များဖြင့် ရရှိနိုင်ပါတယ်။ Codespaces အသုံးပြုခွင့် ရှိရင် repo မှာ **Code** ခလုတ်ကို နှိပ်ပြီး codespace စတင်ပြီး အခက်အခဲမရှိတတ်နိုင်ပြီ။ -* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** ကို အသုံးပြုခြင်း။ [Binder](https://mybinder.org) က GitHub မှာရှိတဲ့ ကုတ်တွေကို စမ်းသပ်ဖို့အတွက် cloud မှကွန်ပျူတာ အရင်းအမြစ်များကို အခမဲ့ ပေးအပ်ပါတယ်။ repo ကို Binder မှာဖွင့်ဖို့ front page မှာ ခလုတ်တစ်ခုရှိပြီး ၎င်းက သင့်အတွက် container တစ်ခုပြုလုပ်ပြီး Jupyter web interface ကို စတင်ပေးပါလိမ့်မယ်။ +* **[GitHub Codespaces](https://github.com/features/codespaces)** ကိုသုံးခြင်း - GitHub ပေါ်မှာ virtual environment တစ်ခု ဖန်တီးပေးပြီး VS Code browser interface ကနေ ဝင်ရောက် အသုံးပြုနိုင်ပါတယ်။ Codespaces ကိုရနိုင်သူဆိုရင် repo မှာ **Code** ခလုတ်ကိုနှိပ်ပြီး codespace ကို စတင်၍ အချိန်မကုန် run လုပ်လို့ရပါတယ်။ +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** ကိုသုံးခြင်း။ [Binder](https://mybinder.org) က GitHub အတွက် cloud ပေါ်က ဝေစုစရင်းလွတ်လပ်သော computing resource ကို ပေးသည်။ Repo ကို Binder နှင့်ဖွင့်ရန် အရင်စာမျက်နှာမှာ ခလုတ်ရှိပြီး အဲ့ဒီနေရာကို ဦးတည်သွားသလို container တည်ဆောက်ပြီး Jupyter web interface ကို မည်သည့်အဆင်ပြေလွယ်ကူစွာ စတင်ပေးပါမယ်။ -> **မှတ်ချက်**: မမှန်ကန်စွာ အသုံးပြုမှု တားမြစ်ဖို့ Binder ကတချို့ web resources များကို ပိတ်ထားပါတယ်။ ထို့ကြောင့် မော်ဒယ်များ သို့မဟုတ် ဒေတာအစုံများကို အွန်လိုင်းမှ ယူလာတဲ့ ကုတ်တချို့ ဘာလုပ်မရဘူး ဖြစ်နိုင်ပါတယ်။ အလုပ်ဖြေရှင်းနည်းခြင်းတွေလည်း လိုအပ်နိုင်ပါတယ်။ ထို့အပြင် Binder ပေးတဲ့ ကွန်ပျူတာ အရင်းအမြစ်တွေ အခြေခံအဆင့်ဖြစ်လို့ သင်ကြားမှု မြန်မရနိုင်ပါ၊ အထူးသဖြင့် နောက်ပိုင်းမှာ ပိုခက်ခဲမယ့် သင်ခန်းစာများမှာပြသနာဖြစ်နိုင်ပါတယ်။ +> **မှတ်ချက်**: မမှန်ကန်သင့်စွဲမှုများကို ကာကွယ်ရန် Binder မှ အချို့ web resource များကို ပိတ်ထားသည်။ ဒါက model များနဲ့ ဒေတာကို ပြင်ပ အင်တာနက်မှ ရယူတဲ့ ကုဒ်များ အလုပ်မလုပ်ပဲရပ်တန့်နိုင်သလို အခြားနည်းလမ်းရှာဖွေရန် လိုအပ်နိုင်ပါတယ်။ ထို့အပြင် Binder ကပေးတဲ့ တိုက္ခိုက်မှု resource များမကြာခဏမလုံလောက်ကြောင်းကြောင့် စိတ်ဝင်စားဖွယ် training တွေ အထူးသဖြင့် နောက်ပိုင်း ရှုပ်ထွေးတဲ့ သင်ခန်းစာတွင် နှေးကွေးတတ်ပါတယ်။ -## GPU ပါ Cloud မှာ လည်ပတ်ခြင်း +## GPU ပါရှိသည့် Cloud မှာ run လုပ်ခြင်း -ဒီသင်ခန်းစာအတွင်း နောက်ပိုင်းသင်ခန်းစာအချို့မှာ GPU ပံ့ပိုးမှုက အလွန် အကျိုးရှိပါလိမ့်မယ်။ မော်ဒယ် သင်ကြားမှုကို ပိုမြန်စေမှာ ဖြစ်ပြီး မရှိမဖြစ်လိုအပ်ပါတယ်။ [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) သို့မဟုတ် သင့်တက္ကသိုလ်မှတဆင့် cloud ရရှိသူတွေ အတွက် အောက်ပါနည်းလမ်းများ ရှိပါတယ်- +ဒီသင်ရိုးအချို့ နောက်ပိုင်းသင်ခန်းစာများအတွက် GPU support ရှိဖို့ အရေးကြီးပါတယ်။ နမူနာအတွက် model training က မဖြစ်မနေမြန်ကာတတ်ပါတယ်။ cloud ကို အသုံးပြုခြင်းအထူးသဖြင့် [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) သို့မဟုတ် သင်တန်းတက်နေလို့ ရနိုင်တဲ့ အဖွဲ့အစည်းမှ cloud ကို မှတ်ပုံတင်ထားပြီးပိုမိုကောင်းမွန်သော အစီအစဉ်များအတွက် အောက်ပါနည်းလမ်းများ ရှိပါတယ်။ -* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) တစ်ခု ဖန်တီးပြီး Jupyter မှတစ်ဆင့် ချိတ်ဆက်ပြီး အသုံးပြုနိုင်ပါတယ်။ repo ကို တိုက်ရိုက် machine မှာ clone ဆွဲပြီး စတင်လေ့လာနိုင်ပါတယ်။ NC-series VMs တွေဟာ GPU ပါဝင်ပါတယ်။ +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) တစ်ခု ဖန်တီးပြီး Jupyter နဲ့ချိတ်ဆက်ပါ။ အဲဒီအခြေအနေမှာ repo ကို တိုက်ရိုက် machine ထဲ clone လုပ်ပြီး သင်ယူစတင်နိုင်ပါတယ်။ NC-series VM များတွင် GPU support ပါဝင်သည်။ -> **မှတ်ချက်**: Azure for Students စသည့် subscription တချို့ဟာ ပုံမှန်အတိုင်း GPU ပံ့ပိုးမှု မပေးပါ၊ technical support ကနေ GPU cores ပိုများအောင် တောင်းဆိုရပါမယ်။ +> **မှတ်ချက်**: Azure for Students အပါအဝင် အချို့ subscription များတွင် GPU support ကို ပူးတွဲပေးခြင်း မရှိနိုင်ပါ။ အပို GPU core များရရန် နည်းပညာဆိုင်ရာ မေးခွန်းတင်ရန် လိုအပ်တတ်ပါသည်။ -* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) တစ်ခု ဖန်တီးပြီး Notebook feature ကို အသုံးပြုနိုင်ပါတယ်။ [ဤဗီဒီယို](https://azure-for-academics.github.io/quickstart/azureml-papers/) သည် Azure ML Notebook တွင် repo တစ်ခုကို clone ဆွဲပြီး အသုံးပြုနည်းကို ပြသထားပါတယ်။ +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) တည်ဆောက်ပြီး အဲဒီမှာ Notebook အပြင်ဆင်ချက်ကို အသုံးပြုနိုင်သည်။ [ဒီဗွီဒီယို](https://azure-for-academics.github.io/quickstart/azureml-papers/) မှာ Azure ML notebook တွင် repository ကို clone လုပ်ပြီး သုံးပုံပြပေးထားပါတယ်။ -Google Colab ကိုလည်း အသုံးပြုနိုင်ပြီး အခမဲ့ GPU ပံ့ပိုးမှု နဲ့ Jupyter Notebooks တွေကို တစ်ခုချင်းစီ တင်ပြီး လည်ပတ်နိုင်ပါတယ်။ +Google Colab ကိုလည်း အသုံးပြုနိုင်ပြီး ဒါဟာ အခမဲ့ GPU မှာရှိ၊ Jupyter Notebooks ကို တစ်ခါတိုင်းတင်ပြီး run လုပ်နိုင်ပါတယ်။ --- -**အကြောင်းကြားချက်**: -ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ မှန်ကန်မှုအတွက် ကြိုးစားပေမယ့် စက်မြန်မာဘာသာပြန်ချက်များတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် အပ်ပါသည်။ မူရင်းစာတမ်းကို မိခင်ဘာသာဖြင့်သာ ထောက်ခံချက်အဖြစ်ယူဆသင့်ပါသည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက်တော့ တတ်ကျွမ်းသော လူ့ဘာသာပြန်သူများ၏ ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုမှုမှဖြစ်ပေါ်လာသော လွဲမှား သို့မဟုတ် နားလည်မှုမှားများအတွက် ကျွန်ုပ်တို့ မည်သည့် တာဝန်မရှိပါ။ +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ \ No newline at end of file diff --git a/translations/my/lessons/1-Intro/README.md b/translations/my/lessons/1-Intro/README.md index a5a0e6ca..dd2df864 100644 --- a/translations/my/lessons/1-Intro/README.md +++ b/translations/my/lessons/1-Intro/README.md @@ -1,97 +1,162 @@ -# AI အကြောင်းအကျဉ်း +# AI ကိုမိတ်ဆက်ခြင်း -![AI အကြောင်းအကျဉ်းအကြောင်းအရာကို ရေးဆွဲထားသော ပုံ](../../../../translated_images/my/ai-intro.bf28d1ac4235881c.webp) +![AI မိတ်ဆက်မှုအကြောင်းအရာ၏ ဓာတ်ပုံဆွဲချက် အကျဉ်း](../../../../translated_images/my/ai-intro.bf28d1ac4235881c.webp) -> [Tomomi Imura](https://twitter.com/girlie_mac) မှ Sketchnote +> [Tomomi Imura](https://twitter.com/girlie_mac) မှ ဆွဲထားသော စကက်ချ်နိုက် -## [သင်ခန်းစာမတိုင်မီ စမ်းမေးခွန်း](https://ff-quizzes.netlify.app/en/ai/quiz/1) +## [မှန်ကန်မှုစမ်းသပ်မှုမတိုင်ခင် စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ai/quiz/1) -**Artificial Intelligence** ဆိုတာ လူသားတွေက လုပ်နိုင်တဲ့ အရာတွေကို ကွန်ပျူတာတွေက လုပ်နိုင်အောင် စမ်းသပ်လေ့လာတဲ့ သိပ္ပံနယ်ပယ်တစ်ခုဖြစ်ပါတယ်။ +**ကွန်ပျူတာ ပြုလုပ်သူ၏ ဉာဏ်ရည်ဖြစ်စေရေးသိပ္ပံအကျင့်သုတေသန** သည် ကွန်ပျူတာများကို လူသားကြားထွက်ရှိသော ဉာဏ်ရည်ပြုမူတူ ဖော်ပြနိုင်သည့် နည်းလမ်းများကို လေ့လာသုံးသပ်သော စိတ်လှုပ်ရှားဖွယ် သိပ္ပံလောကဖြစ်သည်။ -မူလကတော့ ကွန်ပျူတာတွေကို [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) က အလွန်သေချာတဲ့ နည်းလမ်းတစ်ခုဖြင့် နံပါတ်တွေကို လုပ်ဆောင်နိုင်ဖို့ တီထွင်ခဲ့တာပါ။ ယနေ့ခေတ်ကွန်ပျူတာတွေဟာ ၁၉ ရာစုက မူလပုံစံထက် အလွန်တိုးတက်လာပြီးသားဖြစ်ပေမယ့်လည်း ထိန်းချုပ်ထားတဲ့တွက်ချက်မှုတွေကို အခြေခံထားတဲ့ အယူအဆကိုပဲ ဆက်လက်လိုက်နာနေပါတယ်။ ဒါကြောင့် ရည်မှန်းချက်ကို ရရှိဖို့ လိုအပ်တဲ့ အဆင့်ဆင့်လုပ်ဆောင်မှုတွေကို သိထားရင် ကွန်ပျူတာကို အစီအစဉ်ရေးသားပြီး လုပ်ဆောင်နိုင်ပါတယ်။ +မူလတန်းအနေဖြင့် ကွန်ပျူတာများကို [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) မှ နံပါတ်များအပေါ် တိတိကျကျလုပ်ဆောင်ရန် ရောဂါအတိုင်း (algorithm) ထည့်သွင်းသုံးစွဲရန် ဖန်တီးခဲ့သည်။ ၁၉ ရာစုတွင် ပင်ခံထားမှုရှိသော်လည်း ယနေ့ခေတ်ကွန်ပျူတာများမှာ ထိုအတွေးအခေါ်ကို ဆက်လက်လိုက်နာသည်။ ထို့ကြောင့် ရည်မှန်းချက်တစ်ခုရရှိရန် လိုအပ်သော တိကျချက်ရှိသည့် အဆင့်လိုက် ခုံမူကြီးကို သိမ်းဆည်းတည်ဆောက်နိုင်ပါက ကွန်ပျူတာတစ်ခုကို အစီအစဉ်ရေးနိုင်သည်။ -![လူတစ်ဦး၏ ဓာတ်ပုံ](../../../../translated_images/my/dsh_age.d212a30d4e54fb5f.webp) +![ပုံတစ်ပုံ](../../../../translated_images/my/dsh_age.d212a30d4e54fb5f.webp) > [Vickie Soshnikova](http://twitter.com/vickievalerie) မှ ဓာတ်ပုံ -> ✅ လူတစ်ဦး၏ ဓာတ်ပုံမှ အသက်ကို သတ်မှတ်ဖို့ဆိုတာ အတိအကျအစီအစဉ်ရေးသားလို့မရတဲ့ အလုပ်တစ်ခုဖြစ်ပါတယ်၊ အကြောင်းကတော့ လူသားတွေဟာ အဲ့ဒီနည်းလမ်းကို သူတို့ရဲ့ ဦးနှောက်ထဲမှာ ဘယ်လိုထွက်လာတယ်ဆိုတာ မသိကြလို့ပါ။ +> ✅ ပုံတစ်ပုံမှ သူတစ်ပါး၏ အသက်သတ်မှတ်ခြင်းသည် တိတိကျကျ အစီအစဉ်ရေး၍ မရနိုင်သော အလုပ်တစ်ခုဖြစ်သည်၊ အကြောင်းမှာ ပြုလုပ်သောအခါ ဦးထုပ်ထဲတွင် အဲဒီနံပါတ်ကို မည်သို့ ရတယ်ဆိုသည်ကို မသိကြောင်းဖြစ်သည်။ --- -သို့သော်လည်း အတိအကျ မသိတဲ့ အလုပ်တစ်ချို့လည်း ရှိပါတယ်။ လူတစ်ဦး၏ ဓာတ်ပုံမှ အသက်ကို သတ်မှတ်ဖို့ကို စဉ်းစားကြည့်ပါ။ လူသားတွေဟာ အသက်အရွယ်အမျိုးမျိုးရှိတဲ့ လူတွေကို အများကြီးတွေ့ဖူးလို့ အဲ့ဒီအလုပ်ကို လုပ်တတ်လာကြပေမယ့် ဘယ်လိုလုပ်တတ်လာတယ်ဆိုတာကို အတိအကျရှင်းပြလို့မရပါဘူး။ ဒါ့အပြင် ကွန်ပျူတာကိုလည်း အဲ့ဒီအလုပ်ကို အတိအကျအစီအစဉ်ရေးသားပေးလို့မရပါဘူး။ ဒီလိုအလုပ်တွေက **Artificial Intelligence** (AI) ရဲ့ စိတ်ဝင်စားစရာအလုပ်တွေဖြစ်ပါတယ်။ +သို့သော် လူတို့ မကြၽမ်းတမ်းသိသည့် တချို့ အလုပ်များလည်း ရှိသည်။ သူတစ်ပါး၏ ဓာတ်ပုံမှ အသက်ကို သတ်မှတ်ခြင်းကို လေ့လာကြည့်ပါ။ လူအသက်အမျိုးမျိုးကို မြင်တွေ့ခဲ့ကြောင်းကြောင့် ကျွန်ုပ်တို့ သင်ယူနိုင်ချိန်ရှိပြီး၊ ဘယ်လိုသတ်မှတ်တာလဲဆိုသည်ကို မတိတိကျကျ ဖော်ပြ/အကြောင်းကြားနိုင်၊ မျှ ကွန်ပျူတာကို မပရိုဂရမ်းနိုင်ပါ။ ဤကဲ့သို့ အလုပ်သည် **ကွန်ပျူတာ ဉာဏ်ရည်** (AI) ၏ စိတ်ဝင်စားဖွယ် အလုပ်ဖြစ်သည်။ -✅ AI က အကျိုးရှိမယ့် အလုပ်တွေကို ကွန်ပျူတာကို အပ်နှံနိုင်မယ့် အလုပ်တစ်ချို့ကို စဉ်းစားကြည့်ပါ။ ဘဏ္ဍာရေး၊ ဆေးဘက်ဆိုင်ရာနဲ့ အနုပညာနယ်ပယ်တွေမှာ AI က ဘယ်လိုအကျိုးရှိနေပြီလဲဆိုတာ တွေးကြည့်ပါ။ +✅ AI ကို အသုံးပြုကူညီစရာ ကွန်ပျူတာသို့ အလိုအလျောက်လုပ်ပေးလိုသော အလုပ်အချို့ကို စဉ်းစားပါ။ ငွေကြေး၊ ဆေးပညာနှင့် အနုပညာ တို့ဆိုင်ရာကဏ္ဍများတွင် AI သည် ယနေ့ဘယ်လိုအကျိုးရှိပါသလဲဆိုသည်ကို စဉ်းစားကြည့်ပါ။ -## အားနည်း AI နဲ့ အားကောင်း AI +## အနိမ့် AI နှင့် အလိုက်ကျ AI -အားနည်း AI | အားကောင်း AI +အနိမ့် AI | အလိုက်ကျ AI ---------------------------------------|------------------------------------- -အားနည်း AI ဆိုတာ သီးသန့်အလုပ်တစ်ခု သို့မဟုတ် အလုပ်အနည်းငယ်အတွက် အထူးပြုပြီး ဒီဇိုင်းရေးဆွဲထားတဲ့ AI စနစ်တွေကို ဆိုလိုပါတယ်။ | အားကောင်း AI (သို့မဟုတ် Artificial General Intelligence - AGI) ဆိုတာ လူသားတွေရဲ့ ဉာဏ်ရည်နဲ့ နားလည်မှုအဆင့်ရှိတဲ့ AI စနစ်တွေကို ဆိုလိုပါတယ်။ -ဒီ AI စနစ်တွေဟာ အထွေထွေဉာဏ်ရည်မရှိပါဘူး၊ သတ်မှတ်ထားတဲ့ အလုပ်တစ်ခုမှာသာ ထူးချွန်ပြီး အမှန်တကယ် နားလည်မှု သို့မဟုတ် သတိရှိမှုမရှိပါဘူး။ | ဒီ AI စနစ်တွေဟာ လူသားတွေလို အလုပ်တွေကို လုပ်ဆောင်နိုင်ပြီး၊ နယ်ပယ်အမျိုးမျိုးကို လိုက်လျောညီထွေဖြစ်နိုင်ပြီး သတိရှိမှု သို့မဟုတ် ကိုယ်ပိုင်သဘောထားရှိပါတယ်။ -အားနည်း AI ရဲ့ ဥပမာတွေမှာ Siri သို့မဟုတ် Alexa လို အကူအညီပေးစနစ်တွေ၊ streaming service တွေမှာ သုံးတဲ့ အကြံပြု algorithm တွေ၊ သတ်မှတ်ထားတဲ့ ဖောက်သည်ဝန်ဆောင်မှုအတွက် chatbots တွေ ပါဝင်ပါတယ်။ | အားကောင်း AI ရရှိဖို့ဆိုတာ AI သုတေသနရဲ့ ရေရှည်ရည်မှန်းချက်ဖြစ်ပြီး၊ ဉာဏ်ရည်၊ သင်ယူမှု၊ နားလည်မှုနဲ့ အလုပ်အမျိုးမျိုးကို လိုက်လျောညီထွေဖြစ်စေဖို့လိုအပ်ပါတယ်။ -အားနည်း AI ဟာ အထူးပြုထားပြီး လူသားတွေရဲ့ ဉာဏ်ရည်ဆိုင်ရာ အရည်အချင်း သို့မဟုတ် အထွေထွေပြဿနာဖြေရှင်းနိုင်စွမ်းမရှိပါဘူး။ | အားကောင်း AI ဟာ လက်ရှိအဆင့်မှာ သီအိုရီအဆင့်သာရှိပြီး၊ အဲ့ဒီအဆင့်ကို ရောက်ရှိထားတဲ့ AI စနစ်မရှိသေးပါဘူး။ +အနိမ့် AI သည် တစ်ခု သို့မဟုတ် ဆင်တူရှိသော အလုပ်အသေးများကို အထူးသီးသန့် ဒီဇိုင်းဆွဲ သင်ကြားပေးထားသည့် AI စနစ်များဖြစ်သည်။ | အလိုက်ကျ AI သို့မဟုတ် Artificial General Intelligence (AGI) သည် လူနည်းကျွမ်းကျင်မှုနှင့် နားလည်မှုတစ်ခုရှိသည့် AI စနစ်များဖြစ်သည်။ +ယင်း AI စနစ်များတွင် တစ်မျိုးတည်းသော ချီးမြှင့်သော ဉာဏ်ရည် မရှိ၊ သတ်မှတ်ထားသည့် အလုပ်အတွက်သာ အထူးပြုသောကြောင့် အမှန်တကယ် နားလည်မှု သို့မဟုတ် အသိရှိမှု မရှိ။ | ဤ AI စနစ်များသည် လူတစ်ဦးက ပြုလုပ်နိုင်သော ဉာဏ်ရည်ဆိုင်ရာ အလုပ်များအားလုံး ပြုလုပ်နိုင်ပြီး၊ ကဏ္ဍများအတည်အကျ ယုံကြည် ကြည့်နိုင်ခြင်း နှင့် ကိုယ်တိုင်အသိစိတ်တစ်ရပ် ကိုင်ဆောင်ထားသည်။ +အနိမ့် AI များဖြစ်သော ဥပမာများမှာ Siri သို့မဟုတ် Alexa ကဲ့သို့ အဓိကအသုံးပြုသူ ဝန်ဆောင်မှုပေးရာတွင် သီးသန့်ပြုလုပ်ထားသော အွန်လိုင်းအကူအညီစက်များ၊ ကစားသမားနည်းလမ်း ကျွမ်းကျင်မှု စနစ်များဖြစ်သည်။ | အလိုက်ကျ AI ရရှိရေးသည် AI သုတေသန တာဝန်ကာလရှည် နောက်ခံ အစီအစဉ်ဖြစ်ပြီး နားလည်မှု၊ စဉ်းစားတတ်မှု၊ သင်ယူနိုင်မှုနှင့် လိုအပ်ချက် အမျိုးမျိုးအတွက် အသုံးပြုနိုင်မှုရှိစေရန် လုပ်ဆောင်ရေးဖြစ်သည်။ +အနိမ့် AI သည် အထူးပြုစုထားပြီး လူ့ ဉာဏ်ရည်တူစွမ်းရည် သို့မဟုတ် စုပေါင်းပြဿနာမှုပြုပြင်နိုင်မှု မူရင်းကနေပေမဲ့ ကျော်လွှားခြင်း မရှိ။ | အလိုက်ကျ AI သည် လက်ရှိတွင် သီအိုရီသာဖြစ်ပြီး၊ ဘယ် AI စနစ်မှ မရောက်ရှိသေးသော နေရာဖြစ်သည်။ -ပိုမိုသိရှိလိုပါက **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) ကို ဖတ်ရှုပါ။ +ပိုမိုသိရှိလိုလျှင် **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) ကို ရှာဖွေပါ။ +## ဉာဏ်ရည်၏ အဓိပ္ပါယ် နှင့် Turing စမ်းသပ်မှု -## ဉာဏ်ရည်ရဲ့ အဓိပ္ပါယ်နဲ့ Turing Test +**[Intelligence](https://en.wikipedia.org/wiki/Intelligence)** ဆိုသောစကားလုံးကို ဆက်စပ်ရာတွင် ပြဿနာတစ်ခုမှာ သုတေသနတွင် မှတ်သားထားသော ရှင်းလင်းသောရေးရန် မရှိခြင်း ဖြစ်သည်။ ဉာဏ်ရည်ကို **စိတ်ပညာအကြောင်းအရာ abstraction** သို့မဟုတ် **ကိုယ်တိုင်အသိစိတ်** နှင့် ဆက်စပ်သည် ဟု ဆိုနိုင်သော်လည်း မမှန်ကန်စွာ သတ်မှတ်၍ မရနိုင်ပါ။ -**[Intelligence](https://en.wikipedia.org/wiki/Intelligence)** ဆိုတဲ့ စကားလုံးကို သုံးတဲ့အခါမှာ အဓိပ္ပါယ်ရှင်းလင်းမှုမရှိတာက ပြဿနာတစ်ခုဖြစ်ပါတယ်။ ဉာဏ်ရည်ဆိုတာ **အထွေထွေစဉ်းစားနိုင်စွမ်း** သို့မဟုတ် **ကိုယ့်ကိုယ်ကိုသိမြင်မှု** နဲ့ ဆက်စပ်နေတယ်လို့ ဆိုနိုင်ပေမယ့် အတိအကျ သတ်မှတ်လို့မရပါဘူး။ +![ကြောင်ပုံ](../../../../translated_images/my/photo-cat.8c8e8fb760ffe457.webp) -![ကြောင်တစ်ကောင်ရဲ့ ဓာတ်ပုံ](../../../../translated_images/my/photo-cat.8c8e8fb760ffe457.webp) +> [ဓာတ်ပုံ](https://unsplash.com/photos/75715CVEJhI) ကို [Amber Kipp](https://unsplash.com/@sadmax) မှ Unsplash သမားမှ ယူဆောင်ထားခြင်း -> [Amber Kipp](https://unsplash.com/@sadmax) မှ [ဓာတ်ပုံ](https://unsplash.com/photos/75715CVEJhI) (Unsplash မှ) +*intelligence* စကားလုံး၏ မရှင်းလင်းမှုကို မြင်ရန် "ကြောင်သည် ဉာဏ်ရှိပါသလား?" ဟူသောမေးခွန်းကို ဖြေကြည့်ပါ။ လူများတစ်ဦးချင်းစီတွင် မတူညီသော အဖြေများရှိနိုင်သည့် အကြောင်းမှာ အဆိုအမှန်ကို သက်သေပြတဲ့ စမ်းသပ်မှုက အများအပြား ရှိမှုမရှိခြင်း ဖြစ်ပါသည်။ စိတ်ကူးတစ်ခုရှိ၍ သော့ပုံသဏ္ဍာန်စစ်ဆေးစကားရှက်စစ်ဆေးမှု ခွဲမြှောက်မှု ကဲ့သို့ နိုင်ငံတော် IQ စမ်းသပ်မှုမှ တစ်ခုပါ။ -*ဉာဏ်ရည်* ဆိုတဲ့ စကားလုံးရဲ့ မရေရာမှုကို မြင်နိုင်ဖို့ "ကြောင်တစ်ကောင် ဉာဏ်ရည်ရှိလား?" ဆိုတဲ့ မေးခွန်းကို ဖြေကြည့်ပါ။ လူတွေက အမျိုးမျိုးအဖြေပြတတ်ကြပြီး၊ အဲ့ဒီအဆိုကို အမှန်တစ်ကယ် သက်သေပြနိုင်မယ့် စမ်းသပ်မှုတစ်ခုလည်း မရှိပါဘူး။ အဲ့ဒါရှိတယ်လို့ ထင်ရင်တော့ ကြောင်ကို IQ စမ်းသပ်မှုနဲ့ စမ်းကြည့်ပါ... - -✅ ဉာဏ်ရည်ကို သင်ဘယ်လိုသတ်မှတ်တယ်ဆိုတာ တစ်မိနစ်လောက် စဉ်းစားကြည့်ပါ။ အစားအစာရဖို့ maze ဖြေရှင်းနိုင်တဲ့ ကြက်ငှက်တစ်ကောင် ဉာဏ်ရည်ရှိလား? ကလေးတစ်ယောက် ဉာဏ်ရည်ရှိလား? +✅ သင်၏ စိတ်ထဲတွင် ဉာဏ်ရည်ကို တစ်မိနစ် အာရုံစိုက်စဉ်းစားပါ။ လမ်းကြောင်းရှာ ဆောင်ရွက်ပြီး အစားအသောက် ရသော မိုမိုငှက်တစ်ကောင်ကို ဉာဏ်ရှိသလား? ကလေးတစ်ယောက်ကို ဉာဏ်ရှိသလားဟု သတ်မှတ်ပါ။ --- -AGI အကြောင်းပြောတဲ့အခါမှာ တကယ့်ဉာဏ်ရည်ရှိတဲ့ စနစ်တစ်ခုကို ဖန်တီးနိုင်ပြီလားဆိုတာ သတ်မှတ်ဖို့ နည်းလမ်းတစ်ခုလိုအပ်ပါတယ်။ [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) က **[Turing Test](https://en.wikipedia.org/wiki/Turing_test)** ဆိုတဲ့ နည်းလမ်းတစ်ခုကို အကြံပြုခဲ့ပြီး၊ ဒါဟာ ဉာဏ်ရည်ရဲ့ သတ်မှတ်ချက်တစ်ခုအဖြစ်လည်း သုံးနိုင်ပါတယ်။ ဒီစမ်းသပ်မှုက တစ်စနစ်ကို လူသားတစ်ဦးနဲ့ နှိုင်းယှဉ်ပြီး၊ အလိုအလျောက်နှိုင်းယှဉ်မှုကို ကွန်ပျူတာအစီအစဉ်တစ်ခုက လွှဲချော်နိုင်တာကြောင့် လူသားစစ်ဆေးသူတစ်ဦးကို သုံးပါတယ်။ ဒါကြောင့် လူသားတစ်ဦးက စာသားအခြေပြု ဆွေးနွေးမှုမှာ တကယ့်လူနဲ့ ကွန်ပျူတာစနစ်ကို ခွဲခြားမရဘူးဆိုရင် - အဲ့ဒီစနစ်ကို ဉာဏ်ရည်ရှိတယ်လို့ သတ်မှတ်ပါတယ်။ +AGI ကို ပြောရပါက တကယ့် ဉာဏ်ရှိသောစနစ်တစ်ခု ဖန်တီးခဲ့သည်ဟု သိရှိရန် နည်းလမ်းတစ်ခုလိုအပ်သည်။ [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) မှ တီထွင်ထုတ်ဖော်ခဲ့သည့် **[Turing Test](https://en.wikipedia.org/wiki/Turing_test)** သည် ဉာဏ်ရည်၏ သတ်မှတ်ချက်အဖြစ်လည်း လုပ်ဆောင်သည်။ စမ်းသပ်မှုသည် လူသားတကယ်ရှိသူတစ်ဦးနှင့်စနစ်တစ်ခုကို စာသားအခြေခံပြောဆိုမှုတွင် ခွဲခြားကျွှံနိုင်မှု မရှိပါက စနစ်ကို ဉာဏ်ရှိဟု သတ်မှတ်သည်။ -> [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) ဆိုတဲ့ chat-bot တစ်ခုဟာ ၂၀၁၄ ခုနှစ်မှာ Turing Test ကို အနီးကပ်ဖြေရှင်းနိုင်ခဲ့ပါတယ်။ အဲ့ဒီ bot ဟာ သူ့ကိုယ်သူ ၁၃ နှစ်အရွယ် ယူကရိန်းကလေးလို့ ပြောကြားပြီး၊ ဗဟုသုတနည်းနည်းနဲ့ စာသားထဲမှာ မတူညီမှုတွေရှိတာကို ရှင်းပြခဲ့ပါတယ်။ Bot ဟာ ၅ မိနစ်စာဆွေးနွေးမှုအတွင်းမှာ စီရင်သူတွေရဲ့ ၃၀% ကို လူသားဖြစ်တယ်လို့ ယုံကြည်စေခဲ့ပါတယ်။ ဒါပေမယ့် ဒီဟာက ဉာဏ်ရည်ရှိတဲ့စနစ်တစ်ခုကို ဖန်တီးနိုင်ပြီလို့ သက်သေပြတာမဟုတ်ပါဘူး၊ ဒါမှမဟုတ် ကွန်ပျူတာစနစ်က လူသားစစ်ဆေးသူကို လှည့်စားနိုင်တာလည်း မဟုတ်ပါဘူး - Bot ရဲ့ ဖန်တီးသူတွေက လူသားတွေကို လှည့်စားခဲ့တာပါ။ +> [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) ဟုခေါ်သော စကားပြောစက်တစ်ခုကို ရုရှား St.Petersburg တွင် ဖန်တီးခဲ့ပြီး ၂၀၁၄ ခုနှစ်တွင် Turing စမ်းသပ်မှုပုံစံမှတစ်ဝက်လောက်ခံနိုင်ခဲ့သည်။ ထိုစက်သည် သူကျားမ ၁၃ နှစ်အရွယ် အူကရိန်းကလေးဟု ကြေညာခြင်းအားဖြင့် အချက်အလက်မရှိမှုနှင့် စာသားတွင် မတူညီမှုအချို့ ဖော်ပြနိုင်သည်။ ဤစက်သည် စစ်မှတ်သူများ၏ ၃၀% ကို လူဖြစ်ကြောင်း ယုံကြည်စေပြီး Turing သည် ၂၀၀၀ ခုနှစ်တွင် စက်ပစ္စည်းများသည် ဒီဆင်ခြင်မှုကို ဖြတ်ကျော်နိုင်မည်ဟု ယုံကြည်သည်။ သို့သော် ဤသည်သည် အဖြေမှန်သော ဉာဏ်ရှိစနစ်ဖန်တီးမှုကို ပြသခြင်း မဟုတ်၊ စက်ပစ္စည်းသည် စစ်မှတ်သူကို လိမ်တတ်ခြင်း မဟုတ်၊ စက်ဖန်တီးသူများသာ လိမ်မြှောက်နိုင်ခြင်း ဖြစ်သည်ကို နားလည်သင့်သည်။ -✅ Chat bot တစ်ခုက လူသားနဲ့ စကားပြောနေတာလို့ သင်ကိုယ်တိုင် ယုံကြည်ခဲ့ဖူးလား? ဘယ်လိုလှည့်စားနိုင်ခဲ့လဲ? -> ဓာတ်ပုံကို Dmitry Soshnikov မှ ရေးဆွဲထားပြီး [ဓာတ်ပုံ](https://unsplash.com/photos/r8LmVbUKgns) ကို [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) မှ ရိုက်ကူးထားသည်၊ Unsplash +✅ စကားပြောစက်တစ်ခုကြောင့် သင်သည် လူတစ်ဦးနှင့် စကားပြောနေသည်ဟု ယူဆဖူးပါသလား? ၎င်းသည် ဘယ်လို ယုံကြည်စေခဲ့ပါသလဲ? -## AI သုတေသန၏ နောက်ဆုံးရလေ့လာမှုများ +## AI သို့ ယူဆချက် အမျိုးမျိုး -နယူးရယ်နက်ဝက်များ (Neural Networks) သုတေသန၏ အလွန်ကြီးမားသော တိုးတက်မှုသည် ၂၀၁၀ ခုနှစ်လောက်တွင် စတင်ခဲ့ပြီး အများပြည်သူအသုံးပြုနိုင်သော ဒေတာများ စတင်ရရှိလာခဲ့သည်။ [ImageNet](https://en.wikipedia.org/wiki/ImageNet) ဟုခေါ်သော ၁၄ သန်းကျော်သော အမှတ်အသားပြုထားသော ပုံများစုစည်းမှုကြီးသည် [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) ကို မွေးဖွားပေးခဲ့သည်။ +ကွန်ပျူတာသည် လူတစ်ဦးကဲ့သို့ အပြုအမူပြုရန်လိုလျှင်၊ လူတို့၏ စဉ်းစားပုံကို ကွန်ပျူတာအတွင်း မော်ဒယ်တည်ဆောက်ရမည် ဖြစ်သည်။ အတိုင်းအတာအရ လူ့ဥာဏ်ရည်ကို ဘယ်အရာတွေကြောင့် ရှိနေတာလဲ ဆိုတာ နားလည်ရန် လိုအပ်သည်။ + +> ဉာဏ်ရည်ကို စက်ပစ္စည်းတစ်ခုထဲ ထည့်လိုပါက၊ ကျွန်ုပ်တို့၏ ဆုံးဖြတ်ချက် ပြုလုပ်သည့် ဦးနှောက်စနစ် ဘယ်လို လုပ်ဆောင်သည်ကို နားလည်ရမည်။ မိမိကိုယ်ကို ပြန်လည် သုံးသပ်ကြည့်ပါက၊ သတိမထားဘဲဖြစ်ပွားသည့် လုပ်ငန်းစဉ်များ ရှိကြောင်း သိရှိမည်၊ ဥပမာ ကြောင်နှင့်ခွေးကို မစဉ်းစားပဲ ခွဲခြားနိုင်ခြင်း၊ ဒါမှမဟုတ် အခြား အာရုံဆိုင်ရာ စဉ်းစားမှုများပါဝင်ခြင်း။ + +ဤပြဿနာကို ခေါ်ကြည့်ပုံ နှစ်မျိုး ရှိသည်။ + +အပေါ် မှ အောက်သို့ ပုံစံ (အသိအမှတ်ပြု စဉ်းစားမှု) | အောက်မှ အပေါ်သို့ ပုံစံ (နယူးရွယ် နက်ဝတ်) +---------------------------------------|------------------------------------- +အပေါ်မှ အောက်သို့ နည်းလမ်းသည် လူတစ်ဦး၏ စဥ်းစားနည်းကို မော်ဒယ်တည်ဆောက်သော နည်းဖြစ်သည်။ လူဆရာ၏ **အသိပညာ** ကို ကောက်ယူ၍ ကွန်ပျူတာဖတ်နိုင်သောပုံစံသို့ ပြောင်းလဲပုံကိန်းသည်လိုအပ်သည်။ ထို့နောက် **စဉ်းစားမှု** ကို ကွန်ပျူတာတွင် မော်ဒယ်တည်ဆောက်ရန် လိုအပ်သည်။ | အောက်မှ အပေါ်သို့ နည်းလမ်းသည် လူ့ဦးနှောက်တွင်ပါသော လေးစားထိုက်သော ယူနစ် (neuron) များစုပေါင်းစက်မှုကို မော်ဒယ်တည်ဆောက်ခြင်းဖြစ်သည်။ ယင်း neuron တစ်ခုသည် input များကို အလေးချိန်ပေါင်းဖြင့် ပျမ်းမျှလိုက်စားသည့် အပိုင်းဖြစ်သည်။ အများအပြား neuron များစီစဉ်ထားသော နက်ဝတ်ကို သင်ကြားပေးပြီး အသုံးဝင်သော ပြဿနာများကို ဖြေရှင်းရန်သင်ကြားနိုင်သည်။ + +ဉာဏ်ရည်ဆိုင်ရာ အခြားနည်းလမ်းများလည်း ရှိသည်။ + +* **ပေါ်ပေါက်မှု ရှိသော**, **ပေါင်းစည်းမှု ရှိသော** သို့မဟုတ် **အများ Agent (multi-agent) နည်းလမ်း** များမှာ၊ ရိုးရှင်းသော Agent အများအပြား လုပ်ဆောင်မှု လှုပ်ရှားမှုမှ စုပေါင်းသိပ္ပံပညာရှာဖွေမှုဖြစ်သည်။ [ဉာဏ်ရည်ဗေဒ](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) အရ၊ ဉာဏ်ရည်မှာ ရိုးရှင်းပြီး တုံ့ပြန်မှုရှိသော အပြုအမူမှ metasystem ပြောင်းရွှေ့မှု လုပ်ငန်းစဉ်အတွင်း *ပေါ်ပေါက်* တတ်သည်။ + +* **ဖွံ့ဖြိုးတိုးတက်မှု နည်းလမ်း** သို့မဟုတ် **ဂျီနက်တစ်အယ်လဂေါရီသမ်** သည် ဖွံ့ဖြိုးတိုးတက်မှု အခြေခံ အကောင်းဆုံးဖြေရှင်းနည်းတစ်ခုဖြစ်သည်။ + +မနည်းနည်းပိုပြီး နည်းလမ်းများကို သင်ယူလာမည်၌ အခြေခံထားရမည်မှာ အပေါ်မှ အောက်သို့ နှင့် အောက်မှ အပေါ်သို့ နည်းလမ်းနှစ်မျိုးဖြစ်သည်။ + +### အပေါ်မှ အောက်သို့ နည်းလမ်း + +အပေါ်မှ အောက်သို့ နည်းလမ်းတွင် ကျွန်ုပ်တို့၏စဉ်းစားမှုကို မော်ဒယ်တည်ဆောက်ရန် ကြိုးစားသည်။ ကျွန်ုပ်တို့သည် စဉ်းစားသောအခါ မိမိထင်ထားသည့်အတိုင်း နားလည်သည်ကို တွေ့နိုင်သည်၊ ထို့ကြောင့် ၎င်းလုပ်ငန်းစဉ်ကို ပုံမှန်အဆင့်ဖြင့် အစီအစဉ်ရေးနိုင်သည်။ ဤကို **အသိအမှတ်ပြု စဉ်းစားမှု** ဟုခေါ်သည်။ + +လူများသည် ဆုံးဖြတ်ချက်လုပ်ရာတွင် လမ်းညွှန်သော စည်းကမ်းများရှိသည်။ ဥပမာ၊ ဆရာဝန်တစ်ဦးသည် လူနာကို ရောဂါသတ်မှတ်ရာတွင် ဖျားနွေးမှု ရှိသည်ကို တွေ့ရှိကာ။ တစ်ခုခု ပြင်းထန်သော ရောင်ရမ်းမှုရှိကြောင်း ခန့်မှန်းနိုင်သည်။ စည်းကမ်းစနစ်များစွာကို သတ်မှတ်ထားသောကြောင့် ဆရာဝန်များသည် နောက်ဆုံးဆုံးဖြတ်ချက်ရေးနိုင်မည် ဖြစ်သည်။ + +ဤနည်းလမ်းသည် **အသိပညာကို ကိုယ်စားပြုခြင်း** နှင့် **စဉ်းစားမှု** တွင် အလေးပေးသည်။ လူနားလည်သူ အပေါင်းချုပ်ထံမှ အသိပညာကို ထုတ်ယူခြင်းမှာ အခက်အခဲဆုံးဖြစ်နိုင်သည်၊ ဆရာဝန်တစ်ဦးသည် အချို့အိမ်စာ ရောဂါသတ်မှတ်မှု ကို မတိတိကျကျ သိမှတ်ရောက်မှု မရှိသည့် အခြေအနေများ ရှိသောကြောင့် ဖြစ်သည်။ တချို့အလုပ်များသည် ဥပမာ အသက်သတ်မှတ်မှုကဲ့သို့ ဉာဏ်ပညာကို စီမံခန့်ခွဲခြင်းမှ လုံးဝ မဖြစ်နိုင်ပါ။ + +### အောက်မှ အပေါ်သို့ နည်းလမ်း + +မတူညီစွာ၊ ဦးနှောက်အတွင်းရှိ အလယ်အလတ်ဆုံး အစိတ်အပိုင်း neuron ကို မော်ဒယ်တည်ဆောက်နိုင်သည်။ ကွန်ပျူတာအတွင်း **အတုနယူးရွယ် နက်ဝတ်** တည်ဆောက်ပြီး ဥပမာများ ပေးကာ ပြဿနာများဖြေရှင်းရန် သင်ကြားနိုင်သည်။ ၎င်းလုပ်ငန်းစဉ်သည် ကလေးမွေးဖွားအသစ်တစ်ဦး၏ သဘာဝပတ်ဝန်းကျင်အကြောင်းသင်ယူမှုနှင့် ဆင်တူသည်။ + +✅ ကလေးများ သင်ယူနေကျမှုအကြောင်း သုတေသန တစ်ခု ပြုလုပ်ပါ။ ကလေးများ၏ ဦးနှောက် အခြေခံအပိုင်းအစများ ဘာများလဲ? + +> | ML အကြောင်း? | | +> |--------------|-----------| +> | အတုနယူးရွယ် နက်ဝတ်တွင် အခြေခံပြီး သတင်းအချက်အလက်အရ ပြဿနာ ဖြေရှင်းရန် ကွန်ပျူတာမှ သင်ယူခြင်း ဖြစ်သော AI ၏ အပိုင်းကို **စက်လေ့လာမှု (Machine Learning)** ဟုခေါ်သည်။ ဒီသင်တန်းတွင် ရိုးရိုးစက်လေ့လာမှုအား မဖော်ပြသဖြစ်ဘဲ၊ သေးငယ်သော သင်ကြားမှု **[Machine Learning for Beginners](http://aka.ms/ml-beginners)** ကို ဆက်လက်ကြိုးပမ်းကြည့်ပါ။ | ![မူလ ML သင်ကြားမှု](../../../../translated_images/my/ml-for-beginners.9e4fed176fd5817d.webp) | + +## AI ၏ အနှစ်ချုပ် သမိုင်းကြောင်း + +ကွန်ပျူတာ ဉာဏ်ရည် (AI) သည် ၂၀၄၀ ပြည့်နှစ်အတွင်း စတင်ခဲ့သည်။ ပထမကာလတွင် အသိအမှတ်ပြု စဉ်းစားမှု ပုံစံ ရေပန်းစားပြီး၊ နောက်ဆက်တွဲ ထူးချွန်မှုများဖြစ်ခဲ့သည်၊ ဥပမာ အတတ်ပညာရှင်စနစ်များ – ကန့်သတ်ထားသော ပြဿနာကဏ္ဍများတွင် ထူးချွန်အဆင့် ရရှိသော ကွန်ပျူတာအစီအစဉ်များ ဖြစ်သည်။ သို့သော် ဤနည်းလမ်းသည် ထပ်မံချဲ့ထွင်ရန် မမှန်ကန်ကြောင်း သိသာလာသည်။ အသိပညာ ကောက်ယူခြင်းနှင့် မှန်ကန်မှုကိုထိန်းသိမ်းထားခြင်းသည် အလွန်ခက်ခဲသောကိစ္စ ဖြစ်ပြီး အကျုံးဝင်မှု များပြားသည့် ဧ။်ရာများတွင် ကိုင်တွယ်ရန် စရိတ်မြင့်သည်။ ၎င်းကြောင့် ၁၉၇၀ ခုနှစ်များတွင် [AI Winter](https://en.wikipedia.org/wiki/AI_winter) ဖြစ်စေခဲ့သည်။ + +AI အနှစ်ချုပ် သမိုင်း + +> ပုံကို [Dmitry Soshnikov](http://soshnikov.com) မှ ပေးပို့သည် + +အချိန်ကျလာသည်နှင့်အမျှ များစွာကွန်ပျူတာ စွမ်းအားများ ပိုမိုချိုသာလာ၍၊ ဒေတာများ ပိုမိုရရှိလာပြီးနောက် နယူးရွယ် နက်ဝတ် နည်းလမ်းများသည် ကွန်ပျူတာမြင်ကွင်း၊ အသံနားထောင်မှုစသည်တို့အဘို်တွေ့ရှိမှု ပိုမိုကောင်းမွန်လာခဲ့သည်။ နောက်ဆုံး ၁၁ နှစ်အတွင်း၊ Artificial Intelligence ဟု ခေါ်ဆိုသည်မှာ နယူးရွယ် နက်ဝတ်နည်းပညာ၏ အချည်းနှီးအမည် ဖြစ်လာပြီး AI အောင်မြင်မှုများအစိတ်အပိုင်း အများစုသည် ၎င်းတွင် အခြေခံသည်။ + +နေရာတစ်ခု၏ စတင်အခြေအနေတွင် စာရင်းထားမှုတစ်ခုစားကြည့်ပါ: + +* စတင်အဆင့် ကစားသမားကွန်ပျူတာများသည် ရှာဖွေရေးမှီတင်ိ၍ ဖန်တီးခဲ့ကြသည် – အချိန်ရောက်ပါက လိုက်နာမည့် ရှေ့လှည့်မိခ်လမ်းကြောင်းများ ကြောင်းကိုခန့်မှန်းပြီး အကောင်းဆုံးလှည့်မှန်ကို ရွေးချယ်သည်။ ဤသည်သည် [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) ရှာဖွေရေးနည်းအား ဖြန့်ချိခဲ့သည်။ +* ရှာဖွေရေးနည်းလမ်းများသည် ဂိမ်းနှောင်းပိုင်းတွင် ကောင်းမွန်သည်၊ ရှာဖွေရေးအကွာအဝေး သေးငယ်သောကြောင့်ဖြစ်သည်။ သို့သော် ဂိမ်းအစအစတွင် ရှာဖွေရေးအကွာအဝေး ကြီးမားပြီး သင်ခန်းစာများမှ သင်ယူမှုများဖြင့် အဆင်ပြေကြမ္မာပြုပြင်နိုင်သည်။ နောက်တော်ပြန် ဆန်းစစ်မှုများတွင် [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning) ကို အသုံးပြုရာ၌ လက်ရှိ ဂိမ်းနေရာနှင့် အလွန်ဆင်တူသော နမူနာအခြေအနေများကို အသိပညာစနစ်မှ ရှာဖွေလိုက်သည်။ +* လူများထက်အောင်မြင်သော ခေတ်မှီအစီအစဉ်များမှာ နယူးရွယ် နက်ဝတ်များ နှင့် [reinforcement learning](https://en.wikipedia.org/wiki/Reinforcement_learning) အား အခြေခံပြီး၊ ကိုယ့်ကိုယ်ပေါ် ဆော့ကစားခြင်းဖြင့် သင်ယူသည်၊ လူများက ခြုံဆော့ကစားရန် သင်ယူချိန်ကဲ့သို့ဖြစ်သည်။ သို့သော် ကွန်ပျူတာသည် လူများထက် လုပ်ဆောင်နိုင်သောကစားနည်း အရေအတွက်များပြီး ပြီးမြောက်ချိန် နည်းသောကြောင့် ပိုမိုမြန်ဆန်စွာ သင်ယူနိုင်သည်။ + +✅ AI နှင့်ကစားသည့် အခြားဂိမ်းများကို ရှာဖွေ့လေ့လာပါ။ + +တူညီစွာ "စကားပြောနိုင်သောအစီအစဉ်များ" ဖန်တီးမှု (Turing စမ်းသပ်မှု ဖြတ်သန်းနိုင်သော) အား ဘယ်လိုပြောင်းလဲခဲ့သည် ဟု ကြည့်ပါ။ + +* ဒါ့အရစကာ တို့ကဲ့သို့ ဇာတ်ကောင်မူရင်း စနစ်များမှာ အလွန်ရိုးရှင်းသော သဒ္ဒါနည်နည်းများနှင့် ဝင်ရောက်သော သဒ္ဒါများကို မေးခွန်းအဖြစ် ပြောင်းလဲခြင်းဖြစ်သည်။ +* Cortana၊ Siri၊ Google Assistant ကဲ့သို့ ခေတ်မှီကူညီစနစ်များသည် စကားများကို စာသားသို့ နှင့် ရည်ရွယ်ချက် သိရှိရန် နယူးရွယ်နက်ဝတ်များအသုံးပြုပြီး ချက်အချင်းကော်ပွဲသင့် စနစ်ကို အသုံးပြုသည်။ +* အနာဂတ်၌ စကားပြောမှုကို ကိုယ်တိုင်ထိန်းချုပ်ပေးနိုင်သော စွမ်းရည်ကြီးမားသော နယူးရွယ်စနစ်အပြည့်အစုံ ရှိနိုင်သည်ဟု ခန့်မှန်းပါသည်။ မကြာသေးမီက GPT နှင့် [Turing-NLG](https://www.microsoft.com/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft) နည်းလမ်းများမှာ ဆန်းသစ်မှုကြီးများ ပြသထားသည်။ + +Turing စမ်းသပ်မှု၏ ဖွံ့ဖြိုးတိုးတက်မှု + + +> Dmitry Soshnikov မှ ရိုက်ကူးထားသော ပုံ၊ [ဓာတ်ပုံ](https://unsplash.com/photos/r8LmVbUKgns) ကို [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) မှ Unsplash တွင် ပေးသော + +## နောက်ဆုံး AI သုတေအာရုံစူးစိုက်မှု + +နယူးရယ်ကွန်ယက် သုတေသနလုပ်ငန်း၏ ကြီးမားသော တိုးတက်မှုသည် ၂၀၁၀ ခုနှစ်အနီးစပ်တွင် စတင်ခဲ့ပြီး၊ အများပြည်သူအသုံးပြုနိုင်သော ဒေတာစုစည်းမှုကြီးများ ပေါ်လာသည်။ [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) မှ ရေးဆွဲထားသည် +> [Dmitry Soshnikov](http://soshnikov.com) မှ ရိုက်ကူးသည် -၂၀၁၂ ခုနှစ်တွင် [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) ကို ပုံများအမျိုးအစားခွဲခြင်းတွင် ပထမဆုံးအသုံးပြုခဲ့ပြီး အမှားများကို အလွန်လျော့ချနိုင်ခဲ့သည် (၃၀% ခန့်မှ ၁၆.၄% အထိ လျော့ချနိုင်ခဲ့သည်)။ ၂၀၁၅ ခုနှစ်တွင် Microsoft Research မှ ResNet architecture သည် [လူ့အဆင့်တန်းမှန်ကန်မှု](https://doi.org/10.1109/ICCV.2015.123) ကို ရရှိခဲ့သည်။ +၂၀၁၂ ခုနှစ်တွင်၊ [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) ကို ပထမဆုံး ပုံခွဲခြားရေးတွင် အသုံးပြုခဲ့ပြီး၊ အမှားအယွင်းများကို အလွန်ထူးခြားစွာ လျော့နည်းစေခဲ့သည် (၂၉% ခန့်မှ ၁၆.၄% သို့ လျှော့ချ)။ ၂၀၁၅ တွင် Microsoft Research ၏ ResNet ဖွဲ့စည်းပုံသည် လူ့အဆင့် တိကျမှန်ကန်မှုကို [မှီဝဲခဲ့သည်](https://doi.org/10.1109/ICCV.2015.123)။ -ထိုအချိန်မှစ၍ နယူးရယ်နက်ဝက်များသည် အလုပ်များစွာတွင် အလွန်အောင်မြင်သော အပြုအမူများကို ပြသခဲ့သည်- +ထိုကတည်းက နယူးရယ်ကွန်ယက်များသည် အလုပ်များစွာတွင် အောင်မြင်မှု အလွန်ကြီးမားစွာ ပြသခဲ့သည်။ --- -နှစ် | လူ့အဆင့်တန်းမှန်ကန်မှုရရှိမှု +နှစ် | လူမှုရည်မှန်းချက်ရရှိသော -----|-------- -၂၀၁၅ | [ပုံအမျိုးအစားခွဲခြင်း](https://doi.org/10.1109/ICCV.2015.123) -၂၀၁၆ | [စကားပြောအသံမှတ်တမ်းဖော်ခြင်း](https://arxiv.org/abs/1610.05256) -၂၀၁၈ | [အလိုအလျောက်ဘာသာပြန်ခြင်း](https://arxiv.org/abs/1803.05567) (တရုတ်-အင်္ဂလိပ်) -၂၀၂၀ | [ပုံအကြောင်းဖော်ပြခြင်း](https://arxiv.org/abs/2009.13682) +၂၀၁၅ | [ပုံခွဲခြားရေး](https://doi.org/10.1109/ICCV.2015.123) +၂၀၁၆ | [စကားပြောများ ဖတ်တတ်ခြင်း](https://arxiv.org/abs/1610.05256) +၂၀၁၈ | [အလိုအလျောက် စက်ဘာသာပြန်ခြင်း](https://arxiv.org/abs/1803.05567) (တရုတ်မှ အင်္ဂလိပ်) +၂၀၂၀ | [ပုံဖော်ပြချက်ရေးခြင်း](https://arxiv.org/abs/2009.13682) -နောက်ဆုံးနှစ်များအတွင်း BERT နှင့် GPT-3 ကဲ့သို့သော စကားလုံးကြီးမားသော မော်ဒယ်များတွင် အလွန်အောင်မြင်မှုများကို တွေ့မြင်ခဲ့ရသည်။ ၎င်းသည် အများပြည်သူအသုံးပြုနိုင်သော စာသားဒေတာများစွာ ရရှိနိုင်မှုကြောင့် ဖြစ်လာခဲ့သည်။ ၎င်းတို့ကို စာသားများ၏ ဖွဲ့စည်းမှုနှင့် အဓိပ္ပာယ်ကို ဖမ်းဆီးနိုင်ရန် မော်ဒယ်များကို လေ့ကျင့်ပေးပြီး စာသားစုစည်းမှုများတွင် ပုံမှန်လေ့ကျင့်ပေးပြီး ထိုမော်ဒယ်များကို အထူးလုပ်ငန်းများအတွက် အထူးပြုစေသည်။ [Natural Language Processing](../5-NLP/README.md) အကြောင်းကို ဒီသင်ခန်းစာတွင် နောက်ပိုင်းတွင် ပိုမိုလေ့လာပါမည်။ +ယခုနှစ်ပိုင်းအတွင်း BERT နှင့် GPT-3 ကဲ့သို့သော အကြီးစား ဘာသာစကားမော်ဒယ်များအတွက် ကြီးမားသော အောင်မြင်မှုများကို မြင်တွေ့ခဲ့သည်။ ၎င်းသည် အများပြည်သူ အသုံးပြုနိုင်သော စာသားဒေတာ များစွာ ရှိခြင်းကြောင့်ဖြစ်ပြီး၊ မော်ဒယ်များကို စာသားအမှုများ၏ ဖွဲ့စည်းပုံနှင့် အဓိပ္ပါယ်များကို ဖမ်းယူနိုင်ရန် သင်ကြားတတ်ကြပြီး၊ စာသားစုစည်းမှုများတွင် ကြိုတင်သင်ကြားပြီးနောက်၊ ပိုပြီး အသေးစိတ် တာဝန်များအတွက် မော်ဒယ်များကို အထူးပြု သုံးနိုင်ကြသည်။ ဒီသင်တန်းတွင် နောက်ပိုင်းတွင် [ဘာသာစကားလုပ်ထုံးလုပ်နည်းဆိုင်ရာ](../5-NLP/README.md) မျက်နှာသာများကို နည်းမည့်အကြောင်းကို မည်မည်သာ သင်ယူသွားမည်ဖြစ်သည်။ -## 🚀 စိန်ခေါ်မှု +## 🚀 ပြိုင်ပွဲ -အင်တာနက်ပတ်လည်လေ့လာပြီး AI ကို သင့်အမြင်အရ အကျိုးရှိဆုံးအသုံးပြုနေသောနေရာကို သတ်မှတ်ပါ။ ၎င်းသည် မြေပုံဆွဲခြင်း app တစ်ခုမှာလား၊ စကားပြောမှ စာသားပြောင်းခြင်းဝန်ဆောင်မှုတစ်ခုမှာလား၊ သို့မဟုတ် ဗီဒီယိုဂိမ်းတစ်ခုမှာလား။ စနစ်ကို ဘယ်လိုတည်ဆောက်ခဲ့သည်ကို လေ့လာပါ။ +သင့်အမြင်အရ AI ကို အကျိုးရှိဆုံး အသုံးပြုထားသည့်နေရာကို အင်တာနက်တွင် လေ့လာလုပ်ဆောင်ပါ။ အဲသည် Mapping app တစ်ခုတွင် ဖြစ်ပါသလား၊ စကားပြောမှ စာသားသို့ ဝန်ဆောင်မှုတစ်ခုတွင် တွေ့ရပါသလား၊ သို့မဟုတ် ဗီဒီယိုဂိမ်းတစ်ခုတွင်လား? စနစ်ကို မည်သို့ ဖွဲ့စည်းဆောက်လုပ်ထားသည်ကို သုတေသနပါ။ -## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ai/quiz/2) +## [သင်ခန်းစာပြီးစီးပြီး စစ်တမ်း](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) မှတဆင့် ပြန်လည်သုံးသပ်ပါ။ အထက်ပါသင်ခန်းစာ၏ sketchnote မှတစ်ခု သို့မဟုတ် ဒီသင်ခန်းစာမှတစ်ခုကို ရွေးပြီး ၎င်း၏ တိုးတက်မှုကို သက်ဆိုင်ရာ ယဉ်ကျေးမှုအခြေအနေများကို နားလည်ရန် ပိုမိုနက်နက်ရှိုင်းရှိုင်းလေ့လာပါ။ +AI နှင့် ML ရဲ့ သမိုင်းကြောင်းကို [ဒီသင်ခန်းစာ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) အတွင်း ဖတ်ရှု၍ ပြန်လည်သုံးသပ်ပါ။ ထိုသင်ခန်းစာ၏ အထက်ရှိ ဆွဲထုတ်မှတ်စုတစ်ခုမှ အချက်တစ်ချက်ကို ရွေးချယ်ပြီး ၎င်း၏ ယဉ်ကျေးမှုရင်းမြစ်များနှင့် ရေရာမှု အကြောင်းအရာများကို ပိုမိုနက်ရှိုင်းစွာ စုံစမ်းလေ့လာပါ။ -**အလုပ်ပေးစာ**: [Game Jam](assignment.md) +**တာဝန်ကျေမှု**: [ဂိမ်းဂျမ်](assignment.md) --- -**အကြောင်းကြားချက်**: -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/my/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index 611a938c..6622f761 100644 --- a/translations/my/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/my/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# ကြိုတင်လေ့ကျင့်ထားသော မော်ဒယ်များနှင့် အသုံးပြုနိုင်သော လေ့ကျင့်မှု\n", + "# ကြိုတင်လေ့ကျင့်ထားသော မော်ဒယ်များနှင့် လွှဲပြောင်းသင်ယူမှု\n", "\n", - "CNN များကို လေ့ကျင့်ရန် အချိန်များစွာ လိုအပ်ပြီး၊ အချက်အလက်များစွာလည်း လိုအပ်ပါသည်။ သို့သော်၊ အချိန်အများစုကို ကွန်ယက်တစ်ခုက ပုံများမှ ပုံစံများကို ထုတ်ယူရန် အသုံးပြုသော အနိမ့်အဆင့် ဖီလ်တာများကို သင်ယူရန် အသုံးပြုရသည်။ သဘာဝအတိုင်း မေးခွန်းတစ်ခု ထွက်ပေါ်လာသည် - ကွန်ယက်တစ်ခုကို တစ်ခုသော dataset ပေါ်တွင် လေ့ကျင့်ထားပြီး၊ အခြားပုံများကို အပြည့်အဝ လေ့ကျင့်မှုမလိုအပ်ဘဲ ခွဲခြားနိုင်ရန် ပြောင်းလဲအသုံးပြုနိုင်မလား?\n", + "CNN မော်ဒယ်များကို လေ့ကျင့်ရန် အချိန် များစွာ လိုအပ်ပြီး၊ ထိုလုပ်ငန်းအတွက် ဒေတာ များစွာ လိုအပ်သည်။ သို့သော် အချိန်အများအပြားကို ကွန်ယက်သည် ပုံများမှ ပုံသဏ္ဍာန်များ ထုတ်ယူရန် အကောင်းဆုံး အနိမ့်အဆင့် ဖင်တာများကို သင်ယူရာတွင် ကုန်ကျသည်။ သဘာဝက မေးခွန်းတစ်ခု ထွက်ပေါ်လာသည် - သင်ခန့်ထားပြီးသား ဒေတာဆက်တစ်ခုတွင် လေ့ကျင့်ထားသော နျူးရယ်ကွန်ယက်တစ်ခုကို အသုံးပြုပြီး၊ အပြည့်အစုံလေ့ကျင့်ခြင်း မလိုဘဲ အခြားပုံများကို သတ်မှတ်ရန် ညှိနှိုင်းနိုင်ပါသလား?\n", "\n", - "ဒီနည်းလမ်းကို **လေ့ကျင့်မှု ပြောင်းလဲအသုံးပြုမှု** (transfer learning) ဟု ခေါ်သည်၊ အကြောင်းမှာ တစ်ခုသော နယူးရယ်ကွန်ယက်မော်ဒယ်မှ အခြားမော်ဒယ်သို့ အချို့သော အသိပညာကို ပြောင်းလဲအသုံးပြုခြင်း ဖြစ်သည်။ လေ့ကျင့်မှု ပြောင်းလဲအသုံးပြုမှုတွင်၊ ကျွန်ုပ်တို့သည် ပုံမှန်အားဖြင့် **ImageNet** ကဲ့သို့သော ပုံကြီး dataset တစ်ခုပေါ်တွင် လေ့ကျင့်ထားသော ကြိုတင်မော်ဒယ်တစ်ခုဖြင့် စတင်ပါသည်။ အဲဒီမော်ဒယ်များသည် အများအားဖြင့် ပုံများမှ အမျိုးမျိုးသော အင်္ဂါရပ်များကို ထုတ်ယူနိုင်ပြီး၊ အများသောအားဖြင့် ထိုထုတ်ယူထားသော အင်္ဂါရပ်များပေါ်တွင် classifier တစ်ခုတည်ဆောက်ခြင်းကလည်း ရလဒ်ကောင်းများ ရနိုင်ပါသည်။\n" + "ထိုနည်းလမ်းကို **လွှဲပြောင်းသင်ယူမှု** ဟု ခေါ်ပြီး၊ နျူးရယ်ကွန်ယက် မော်ဒယ်တစ်ခုမှ နောက်တစ်ခုသို့ အသိပညာ တစ်စိတ်တစ်ပိုင်းကို လွှဲပြောင်းပို့ဆောင်ခြင်း ဖြစ်သည်။ လွှဲပြောင်းသင်ယူမှုတွင် မကြာခဏ ကြိုတင်လေ့ကျင့်ထားသော မော်ဒယ်တစ်ခုဖြင့် စတင်ပြီး၊ ၎င်းသည် **ImageNet** ကဲ့သို့ လက်ရှိမှာ ကြီးမားသော ပုံဒေတာစုစည်းမှု တစ်ခုအပေါ်တွင် လေ့ကျင့်ပြီးသား ဖြစ်သည်။ ထို့ကြောင့် ထိုမော်ဒယ်များသည် စုံလင်သောပုံများမှ မတူညီသော လက္ခဏာများ ထုတ်ယူရာတွင် ကောင်းမွန်စွာ ဆောင်ရွက်နိုင်ပြီး၊ အများစုကတော့ ထုတ်ယူထားသော လက္ခဏာများအပေါ်တွင် ကလပ်စီဖိုင်ယား တစ်ခု တည်ဆောက်ခြင်းကောင်းစွာ ရလဒ်ရနိုင်ပါသည်။\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ကြောင်များနှင့် ခွေးများ ဒေတာစု\n", + "## ကြောင်များနှင့် ခွေးများ ဒေတာစုစည်းမှု\n", "\n", - "ဒီယူနစ်မှာ ကြောင်ပုံများနဲ့ ခွေးပုံများကို ခွဲခြားနိုင်ရေးအတွက် အမှန်တကယ်ဖြစ်ပျက်နေတဲ့ ပြဿနာတစ်ခုကို ဖြေရှင်းသွားမှာဖြစ်ပါတယ်။ ဒီအတွက် [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats) ကို အသုံးပြုသွားမှာဖြစ်ပြီး၊ [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) မှလည်း ဒေတာကို ဒေါင်းလုဒ်လုပ်နိုင်ပါတယ်။\n", + "ဒီဌာနတွင် ကျွန်ုပ်တို့သည် ကြောင်များနှင့် ခွေးများ၏ပုံများကို သတ်မှတ်ခွဲခြားခြင်းဆိုင်ရာ အမှန်တကယ်ကြုံတွေ့ရသော ပြဿနာကို ဖြေရှင်းမည်ဖြစ်သည်။ ထို့ကြောင့် ကျွန်ုပ်တို့သည် [Kaggle ကြောင်များနှင့် ခွေးများ ဒေတာစုစည်းမှု](https://www.kaggle.com/c/dogs-vs-cats) ကို အသုံးပြုမည် ဖြစ်ပြီး၊ ၎င်းကို [Microsoft မှလည်း ဒေါင်းလုပ် ဆွဲယူနိုင်ပါသည်](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste)။\n", "\n", - "ဒီဒေတာကို ဒေါင်းလုဒ်လုပ်ပြီး `data` directory ထဲမှာ ထုတ်ယူပါ (ဒီလုပ်ငန်းစဉ်အချိန်အတော်ကြာနိုင်ပါတယ်!):\n" + "ဒီဒေတာစုစည်းမှုကို ဒေါင်းလုပ်ဆွဲ၍ `data` ဖိုလ်ဒါထဲသို့ ဖော်ထုတ်ကြရအောင် (ဒီလုပ်ဆောင်ချက်မှာ အချိန်အနည်းငယ်ယူနိုင်ပါသည်။)။\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "အကောင်းမဖြစ်ဘဲ၊ ဒေတာစုတွဲထဲမှာ ပျက်စီးနေတဲ့ ပုံဖိုင်တွေ ရှိပါတယ်။ ပျက်စီးနေတဲ့ ဖိုင်တွေကို စစ်ဆေးဖို့ အမြန်လျှင်မြန်လုပ်ဆောင်ဖို့ လိုအပ်ပါတယ်။ ဒီသင်ခန်းစာကို မပျက်စီးစေဖို့အတွက်၊ ဒေတာစုတွဲကို အတည်ပြုဖို့ ကုဒ်ကို module တစ်ခုထဲကို ရွှေ့ထားပါတယ်။\n" + "ဒေတာစနစ်ထဲတွင် ပျက်စီးသွားသော ပုံဖိုင်အချို့ ရှိနေပါသည်။ ပျက်စီးထားသောဖိုင်များကို စစ်ဆေးဖို့ အမြန်သန့်ရှင်းမှု လုပ်ရန် လိုအပ်ပါသည်။ ဒီသင်ခန်းစာကို ပကုန်မဖြစ်စေရန်အတွက်၊ ဒေတာစနစ်စစ်ဆေးရန်ကုဒ်ကို မော်ဂျူးအဖြစ် ရ 옮လိုသည်။\n" ] }, { @@ -333,13 +333,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ဒေတာစနစ်ကို တင်သွင်းခြင်း\n", + "## ဒေတာစုစည်းမှုကို လုပ်ဆောင်ခြင်း\n", "\n", - "ယခင်ဥပမာများတွင် Keras တွင် built-in အဖြစ်ပါဝင်သော ဒေတာစနစ်များကို တင်သွင်းခဲ့ကြသည်။ ယခုအခါတွင် ကျွန်ုပ်တို့၏ ကိုယ်ပိုင် ဒေတာစနစ်ကို ကိုင်တွယ်ရမည်ဖြစ်ပြီး၊ ၎င်းကို ပုံများပါဝင်သော ဖိုင်တိုက်မှ တင်သွင်းရမည်ဖြစ်သည်။\n", + "ယခင်ဥပမာများတွင် ကျွန်ုပ်တို့သည် Keras တွင် built-in ထားသော ဒေတာစုစည်းမှုများကို လုပ်ဆောင်နေခဲ့ပါသည်။ ယခုတွင် ကျွန်ုပ်တို့သည် ဓာတ်ပုံ ဖိုင်များ အမှုထမ်းဆောင်ရာ ဒါရိုက်တာရီမှ ဒေတာကို လုပ်ဆောင်ရန်ရှိသည်။\n", "\n", - "အမှန်တကယ်တွင် ပုံဒေတာစနစ်များ၏ အရွယ်အစားသည် အတော်လေးကြီးနိုင်ပြီး၊ ဒေတာအားလုံးကို မှတ်ဉာဏ်ထဲသို့ ထည့်နိုင်မည်ဟု မယုံကြည်နိုင်ပါ။ ထို့ကြောင့် ဒေတာစနစ်များကို များသောအားဖြင့် **ဂျင်နရေးတာများ** အဖြစ် ကိုယ်စားပြုကြပြီး၊ ၎င်းတို့သည် လေ့ကျင့်မှုအတွက် သင့်တော်သော minibatch များအဖြစ် ဒေတာကို ပြန်ပေးနိုင်သည်။\n", + "နေ့ရက်တိုင်းတွင် ဓာတ်ပုံ ဒေတာစုစည်းမှုများ၏ အရွယ်အစားသည် အလွန်ကြီးမားနိုင်ပြီး၊ အချက်အလက်အားလုံးကို မemory ထဲထည့်၍ မရနိုင်တာဖြစ်နိုင်သည်။ ထို့ကြောင့် ဒေတာစုစည်းမှုများကို training အတွက် သင့်တော်သော ဒေတာ အစုအဖွဲ့များ (minibatches) ဖြင့် ပြန်တယ်နိုင်သော **generator** များအလားအလာဖြင့်ဖော်ပြသည်။\n", "\n", - "ပုံအမျိုးအစားခွဲခြားမှုကို ကိုင်တွယ်ရန် Keras တွင် `image_dataset_from_directory` ဟုခေါ်သော အထူးလုပ်ဆောင်ချက်တစ်ခု ပါဝင်ပြီး၊ ၎င်းသည် အမျိုးအစားအမျိုးမျိုးကို ကိုယ်စားပြုသော subdirectory များမှ ပုံများကို တင်သွင်းနိုင်သည်။ ဤလုပ်ဆောင်ချက်သည် ပုံများကို အရွယ်အစားချိန်ညှိခြင်းကိုလည်း စီမံဆောင်ရွက်နိုင်ပြီး၊ ဒေတာစနစ်ကို လေ့ကျင့်မှုနှင့် စမ်းသပ်မှုအပိုင်းများအဖြစ် ခွဲခြားနိုင်ပါသည်။\n" + "ပုံသဏ္ဍာန် ခွဲခြားခြင်းအတွက် Keras တွင် `image_dataset_from_directory` ဟူသော ထူးခြားသော function ရှိပြီး၊ သီးခြား class များနှင့် ကိုက်ညီသည့် subdirectory မှ images များကို load ဆွဲသွားနိုင်သည်။ ဤ function သည် ဓာတ်ပုံများကို scale လုပ်ပေးရန်လည်း ရှိပြီး၊ ဒေတာစုစည်းမှုကို train နှင့် test အပိုင်းများအဖြစ်ခွဲထားနိုင်ပါသည်။\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ပုံများကို သင်ကြားမှုနှင့် စမ်းသပ်မှု ဒေတာစုများအကြား ခွဲခြားမှုကို သက်ရောက်စေသောကြောင့် `seed` အတူတူတန်ဖိုးကို နှစ်ခေါက်လုံးတွင် သတ်မှတ်ထားရန် အရေးကြီးပါသည်။\n", + "နှစ်ခုလုံးခေါ်သောအခါအတွက် `seed` တန်ဖိုးတူညီစွာ သတ်မှတ်ပေးရန် အရေးကြီးသည်၊ ၎င်းသည် ပုံများကို train နှင့် test ဒေတာအစုအတွက် ကွဲပြားခြားနားမှုကို ထိခိုက်စေသည်။\n", "\n", - "Dataset သည် အလိုအလျောက် ဖိုင်တွဲများမှ အတန်းအမည်များကို ရယူပြီး၊ လိုအပ်ပါက အောက်ပါအတိုင်း ခေါ်ယူနိုင်ပါသည် -\n" + "Dataset သည် ဒိုက်ရက်ထရီများမှ အလိုအလျောက် class အမည်များကို ရယူပြီး၊ လိုအပ်ပါက အောက်ပါအတိုင်း ခေါ်နိုင်ပါသည်။\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Datasets များကို `fit` function သို့တိုက်ရိုက်ပို့ပြီး မော်ဒယ်ကိုလေ့ကျင့်နိုင်ပါသည်။ ၎င်းတွင် ပုံများနှင့် label များနှစ်ခုစလုံးပါဝင်ပြီး အောက်ပါဖွဲ့စည်းမှုကို အသုံးပြု၍ loop ပြုလုပ်နိုင်ပါသည်။\n" + "ကျွန်ုပ်တို့ရရှိထားသော ဒေတာစုစည်းမှုများကို မော်ဒယ်ကိုလေ့ကျင့်ရန် `fit` function သို့တိုက်ရိုက်ပေးပို့နိုင်သည်။ ၎င်းတို့တွင် သက်ဆိုင်ရာရုပ်ပုံများနှင့် အမှတ်အသားများပါဝင်ပြီး၊ အောက်ပါဖွဲ့စည်းမှုဖြင့် loop လုပ်နိုင်သည်။\n" ] }, { @@ -453,16 +453,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **မှတ်ချက်**: ဒေတာစုပေါင်းအတွင်းရှိ ပုံများအားလုံးကို 0-255 အကွာအဝေးရှိ floatint point tensors အဖြစ် ကိုယ်စားပြုထားသည်။ Neural network သို့ ပေးပို့မည်မီ၌ အဆိုပါတန်ဖိုးများကို 0-1 အကွာအဝေးသို့ အတိုင်းအတာချထားရန် လိုအပ်သည်။ ပုံများကို ရှုထောင့်တွင်ဖော်ပြမည်ဆိုပါကလည်း အတူတူလုပ်ဆောင်ရန် သို့မဟုတ် `int` အမျိုးအစားသို့ ပြောင်းလဲရန် (အထက်ပါကုဒ်တွင် ပြုလုပ်ထားသည်) လိုအပ်ပြီး၊ `matplotlib` ကို မူရင်းအတိုင်းအတာမထားသော ပုံကို ဖော်ပြလိုကြောင်း ပြသရန် လိုအပ်သည်။\n" + "> **မှတ်ချက်**: ဒေတာစုစည်းမှုရှိဓာတ်ပုံများအားလုံးသည် 0-255 အပြောင်းအလဲရှိ floatint point tensors အဖြစ် ကိုယ်စားပြုထားသည်။ ၎င်းတို့အား နယူးရယ်ကွန်ယက်သို့ ပို့မည့်အခါ 0-1 အကွာအဝေးသို့ ကိုအတိုင်းအတာချရန် လိုအပ်သည်။ ဓာတ်ပုံများကို ရုပ်ပုံတင်ချင်ပါကလည်း တူညီစွာလုပ်ရမည့် သို့မဟုတ် မူလမတိုင်းတာထားသော ဓာတ်ပုံကို `matplotlib` သို့ ပြသလိုကြောင်း ပြသရန် `int` အမျိုးအစားသို့ ပြောင်းလဲရပါမည်(အထက်ပါကုဒ်တွင်ပြုလုပ်ထားသည်)။\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## ကြိုတင်လေ့ကျင့်ထားသော မော်ဒယ်များ\n", + "## အကြိုလေ့ကျင့်ထားသော မော်ဒယ်များ\n", "\n", - "ပုံများကို အမျိုးအစားခွဲခြားရန် လုပ်ငန်းများစွာအတွက် ကြိုတင်လေ့ကျင့်ထားသော နယူးရယ်နက်ဝက် မော်ဒယ်များကို ရှာဖွေတွေ့ရှိနိုင်ပါသည်။ မော်ဒယ်များအများအပြားကို `keras.applications` နေ့စပေ့စ်အတွင်းတွင် ရရှိနိုင်ပြီး၊ အင်တာနက်ပေါ်တွင် မော်ဒယ်များ ပိုမိုများပြားစွာ ရှာဖွေတွေ့ရှိနိုင်ပါသည်။ အလွယ်ဆုံး VGG-16 မော်ဒယ်ကို မည်သို့ လုပ်ဆောင်ပြီး အသုံးပြုနိုင်သည်ကို ကြည့်ကြရအောင်-\n" + "ပုံများ အမျိုးအစားခွဲခြားမှု လုပ်ငန်းများအတွက် အကြိုလေ့ကျင့်ထားသည့် နကြာ ရုပ်သံကွန်ယက် မော်ဒယ်များကို ရှာဖွေတွေ့ရှိနိုင်ပါသည်။ ယင်း မော်ဒယ်များအများစုကို `keras.applications` နေရာအတွင်း တွေ့နိုင်ပြီး၊ အင်တာနေറ്റ്ပေါ်တွင် ထပ်မံပေါင်းများစွာရှိသည်။ အခြား ဗီဂျီဂျီ-၁၆ (VGG-16) စနစ် အလွယ်တကူကို မည်သို့ ဖွင့်လှစ်အသုံးပြုနိုင်သည်ကို ကြည့်ပါစို့။\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -510,20 +520,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "အရေးကြီးသောအချက်အချို့ရှိပါတယ် -\n", - "\n", - "* မည်သည့် pre-trained network ကိုမဆို အသုံးပြုမည့်အခါမှာ အရင်ဆုံး input ကို သတ်မှတ်ထားတဲ့နည်းလမ်းတစ်ရပ်နဲ့ ပြင်ဆင်ပေးရမယ်။ ဒီအလုပ်ကို `preprocess_input` function ကိုခေါ်သုံးပြီး ပြုလုပ်နိုင်ပါတယ်။ ဒီ function က ရုပ်ပုံများကို batch အနေနဲ့ လက်ခံပြီး၊ ပြင်ဆင်ပြီးသားပုံစံကို ပြန်ပေးပါမယ်။ VGG-16 ရဲ့အတွက်ဆိုရင်၊ ရုပ်ပုံတွေကို normalize လုပ်ပြီး၊ channel တစ်ခုချင်းစီအတွက် သတ်မှတ်ထားတဲ့ အလယ်ပျမ်းမျှတန်ဖိုးကို နုတ်ပစ်ပါတယ်။ ဒါဟာ VGG-16 ကို ဒီ pre-processing နဲ့ စတင်လေ့ကျင့်ထားလို့ ဖြစ်ပါတယ်။\n", - "\n", - "* Neural network ကို input batch ပေါ်မှာ အသုံးပြုပြီးနောက်၊ ရလဒ်အနေနဲ့ 1000-element tensors ရဲ့ batch တစ်ခုကို ရရှိပါမယ်။ ဒီ tensors က အတန်းတစ်ခုချင်းစီရဲ့ probability ကို ပြသပါတယ်။ အများဆုံးဖြစ်နိုင်တဲ့ အတန်းနံပါတ်ကို `argmax` function ကို သုံးပြီး ရှာနိုင်ပါတယ်။\n", - "\n", - "* ရရှိလာတဲ့ရလဒ်က [ImageNet အတန်းနံပါတ်](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a) တစ်ခုဖြစ်ပါတယ်။ ဒီရလဒ်ကို ပိုမိုနားလည်နိုင်ဖို့ `decode_predictions` function ကို သုံးနိုင်ပါတယ်။ ဒီ function က အထက်ဆုံး n အတန်းနဲ့ သူတို့ရဲ့ အမည်တွေကို ပြန်ပေးပါမယ်။\n" + "ဒီမှာ အရေးကြီးတဲ့အချက်အချို့ ရှိပါတယ်။\n", + "* မည်သည့် pre-trained နက်ဝပ်စ်ထဲကိုမဆို input တစ်ခု ပေးမည့်အခါ၌ ယင်း input ကို အချို့သောနည်းဖြင့် pre-process လုပ်ရပါမည်။ ၎င်းကို `preprocess_input` function ကို ခေါ်၍ လုပ်ဆောင်သည်၊ ၎င်းသည် ပုံများလက်က်ဇယား (batch) တစ်ခုကို လက်ခံပြီး ၎င်းတို့၏ လုပ်ဆောင်ပြီးသော ပုံစံကို ပြန်လည်ပေးပို့သည်။ VGG-16 ၏အခြေအနေတွင် ပုံများကို ပုံမှန်ပြုလုပ်ပြီး အလိုအလျောက်သတ်မှတ်ထားသော channel တစ်ခုချင်းစီအတွက် တွက်ချက်ထားသော အပျမ်းမျှတန်ဖိုးကို နှုတ်ဆက်ပါသည်။ ၎င်းသည် VGG-16 ကို မူလက ဤ pre-processing ဖြင့် သင်ယူခဲ့ကြောင်းကြောင့်ပါ။\n", + "* နက်ဝပ်စ်ကို input batch တွင်အထိ အကောင်အထည်ဖော်ပြီး ရလဒ်အနေဖြင့် class တစ်ခုစီ၏ဖြစ်နိုင်မည့်မှုကို ပြသသည့် ၁၀၀၀-အချက် အတိုင်းအတာ (tensor) ထုတ်ယူရပါမည်။ ယင်း tensor ပေါ်တွင် `argmax` ကို ခေါ်၍ ဖြစ်နိုင်နိုင်ဆုံး class နံပါတ်ကို ရှာဖွေနိုင်သည်။\n", + "* ရရှိသူ ရလဒ်သည် [ImageNet class နံပါတ်](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a) ဖြစ်သည်။ ယင်းရလဒ်ကို နားလည်ရန်အတွက် top n class များနှင့် ၎င်းတို့၏ အမည်များကို ပြန်ထုတ်ပေးသော `decode_predictions` function ကိုလည်း အသုံးပြုနိုင်ပါသည်။\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "အောက်တွင် VGG-16 ကွန်ယက်၏ ဖွဲ့စည်းပုံကိုလည်း ကြည့်ရှုကြပါစို့:\n" + "VGG-16 ကွန်ယက်၏ ပြုပြင်ဆောက်လုပ်မှုကိုလည်း ကြည့်လိုက်ရအောင်။ \n" ] }, { @@ -600,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## GPU တွင်တွက်ချက်ခြင်း\n", + "## GPU တွင်တွက်ချက်မှုများ\n", "\n", - "VGG-16 နှင့် အခြားနောက်ဆုံးပေါ် architecture များကဲ့သို့သော deep neural networks များကို run လုပ်ရန်အတွက် အလွန်များသောတွက်ချက်စွမ်းအားလိုအပ်သည်။ GPU acceleration ရရှိနိုင်ပါက အသုံးပြုခြင်းသည် make sense ဖြစ်ပါသည်။ ကံကောင်းစွာ Keras သည် GPU ရှိပါက အလိုအလျောက်တွက်ချက်မှုများကို မြန်ဆန်စေပါသည်။ Tensorflow သည် GPU ကိုအသုံးပြုနိုင်မရှိစစ်ဆေးရန် အောက်ပါ code ကို အသုံးပြုနိုင်ပါသည်။\n" + "VGG-16 နှင့် အခြားတိုးတက်ပုံစံအသစ်များကဲ့သို့သော နက်ရှိုင်းသော နယူးရယ်ကွန်ယက်များမှာ အလွန်အမင်းတွက်ချက်မှုစွမ်းအားများလိုအပ်သည်။ GPU အားကောင်းမှု ရှိပါက အကြံပြုသင့်သည်။ ကံကောင်းစွာ Keras သည် GPU ရှိပါက အလိုအလျောက်တွက်ချက်မှုများအား မြန်ဆန်စေသည်။ Tensorflow သည် GPU ကို အသုံးပြုနိုင်သည့်အခြေအနေကို အောက်ပါကုဒ်အတိုင်း စစ်ဆေးနိုင်သည်။\n" ] }, { @@ -629,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## VGG အင်္ဂါရပ်များကို ထုတ်ယူခြင်း\n", "\n", - "ကျွန်တော်တို့ရဲ့ ပုံများမှ အင်္ဂါရပ်များကို ထုတ်ယူရန် VGG-16 ကို အသုံးပြုလိုပါက နောက်ဆုံး အတန်းခွဲခြားမှု အလွှာများမပါသော မော်ဒယ်ကို လိုအပ်ပါသည်။ အပေါ်ဆုံး အလွှာများမပါသော VGG-16 မော်ဒယ်ကို အောက်ပါကုဒ်ကို အသုံးပြု၍ ဖန်တီးနိုင်ပါသည်။\n" + "## VGG လက္ခဏာများ ထုတ်ယူခြင်း\n", + "\n", + "ဓာတ်ပုံများမှ လက္ခဏာများ ထုတ်ယူရန် VGG-16 ကိုအသုံးပြုလိုပါက နောက်ဆုံးသတ်မှတ်ခြင်းအလွှာများမပါသော မော်ဒယ်လိုအပ်ပါသည်။ ထိပ်တန်းအလွှာများမပါသော VGG-16 မော်ဒယ်ကို အောက်ပါကုဒ်ဖြင့် instantiate ပြုလုပ်နိုင်ပါသည်- \n" ] }, { @@ -683,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Feature tensor ၏ အတိုင်းအတာမှာ 7x7x512 ဖြစ်ပါတယ်၊ ဒါပေမယ့် အဲဒါကို မြင်နိုင်ဖို့အတွက် 2D ပုံစံအဖြစ် ပြောင်းလဲဖို့ လိုအပ်ခဲ့ပါတယ်။\n", + "Feature tensor ၏ အတိုင်းအတာမှာ 7x7x512 ဖြစ်ပါတယ်၊ သို့သော် ဒါကို မြင်သာအောင် ပြသရန်အတွက် 2D ပုံစံသို့ ပြောင်းလဲရန် လိုအပ်ခဲ့ပါတယ်။\n", "\n", - "အခုတော့ အဲဒီ feature တွေကို ပုံရိပ်တွေကို အမျိုးအစားခွဲဖို့ အသုံးပြုလို့ရမလားဆိုတာ ကြိုးစားကြည့်ရအောင်။ ပုံရိပ်တစ်ချို့ကို ကိုယ်တိုင်ရွေးပြီး (ကျွန်တော်တို့အတွက် 50 minibatches) feature vector တွေကို ကြိုတင်တွက်ချက်ကြည့်ရအောင်။ Tensorflow **dataset** API ကို ဒီအတွက် အသုံးပြုနိုင်ပါတယ်။ `map` function က dataset တစ်ခုကို ယူပြီး သတ်မှတ်ထားတဲ့ lambda-function ကို အသုံးပြုကာ ပြောင်းလဲပေးပါတယ်။ ဒီနည်းလမ်းကို အသုံးပြုပြီး VGG ကနေ ရရှိတဲ့ feature တွေကို ပါဝင်ထားတဲ့ dataset အသစ်တွေဖြစ်တဲ့ `ds_features_train` နဲ့ `ds_features_test` ကို တည်ဆောက်ပါတယ်၊ အဲဒါတွေမှာ မူလပုံရိပ်တွေမပါဘဲ feature တွေကိုသာ ပါဝင်စေပါတယ်။\n" + "အခု ထို feature များကို ပုံရိပ်များကို အမျိုးအစားခွဲဖို့ အသုံးပြုနိုင်မလား စမ်းကြည့်ကြရအောင်။ ပုံရိပ်အပိုင်းတစ်ချို့ (ကျွန်တော်တို့က 50 minibatches) ကို ကိုယ်တိုင် ရွေးပြီး၎င်းတို့၏ feature vectors များကို ယခင်မှာတွက်ချက်ထားကြပါစို့။ ဒါကိုလုပ်ဖို့ Tensorflow **dataset** API ကို အသုံးပြုနိုင်ပါတယ်။ `map` function သည် dataset တစ်ခုကို ကျရောက်ပြီး ပေးထားသော lambda-function ဖြင့် ပြောင်းလဲတတ်ပါတယ်။ ဤစနစ်အတွက် အသုံးပြု၍ VGG ဖြင့် ထုတ်ယူထားသော features များပါရှိသည့် နယူး dataset များ `ds_features_train` နှင့် `ds_features_test` ကို တည်ဆောက်ပါမယ်၊ အဲဒါက မူလပုံရိပ်များအစား Feature များကို ပါဝင်စေပါတယ်။\n" ] }, { @@ -715,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ကျွန်တော်တို့ `.take(50)` ကို အသုံးပြုပြီး dataset အရွယ်အစားကို ကန့်သတ်ထားတာက ဒီအတန်းမိတ်ဆက်ကို မြန်ဆန်စေဖို့အတွက်ပါ။ သင် full dataset ပေါ်မှာ ဒီစမ်းသပ်မှုကို လုပ်ဆောင်နိုင်ပါတယ်။\n", + "ကျွန်တော်တို့ဟာ `.take(50)` ဆိုတဲ့ ကွန်စထရပ်ရှင်းကို အသုံးပြုပြီး ဒေတာစုံလင်မှုအရွယ်အစားကို ကန့်သတ်ထားပါတယ်၊ ဒီတော့ အစမ်းအဖြစ် ပိုမြန်စေဖို့ပါ။ သင့်တော်တယ်ဆိုရင် ဘာဆိုဒ်ပြည့်ပြီး ဒေတာပေါ်မှာ ဒီစမ်းသပ်မှုကို ပြုလုပ်နိုင်ပါတယ်။\n", "\n", - "အခု feature တွေကို extract လုပ်ပြီးသား dataset ရှိပြီဆိုတော့ ကျွန်တော်တို့ simple dense classifier တစ်ခုကို သင်ကြားနိုင်ပါပြီ။ ဒီ network က (7,7,512) shape ရှိ feature vector ကို ယူပြီး output တစ်ခုကို ထုတ်ပေးပါမယ်၊ output က ခွေးတစ်ကောင် ဒါမှမဟုတ် ကြောင်တစ်ကောင်ကို ကိုယ်စားပြုပါတယ်။ ဒါက binary classification ဖြစ်တဲ့အတွက် `sigmoid` activation function နဲ့ `binary_crossentropy` loss ကို အသုံးပြုပါတယ်။\n" + "အခု feature တွေ ကောက်ယူပြီး ဒေတာစုံသေြောင်းထောက်ထားပြီဖြစ်လို့၊ ကြောင်နှင့် ခွေးကို ချုပ်ချားခွဲခြားပေးနိုင်မယ့် အရိုးရှင်းဆုံး dense classifier တစ်ခုကို ချိတ်ဆွဲနိုင်ပါပြီ။ ဒီနက်ဝက် network က feature vector အရွယ်အစား (7,7,512) ကို လက်ခံပြီး ခွေးဖြစ်ခြင်း သို့မဟုတ် ကြောင်ဖြစ်ခြင်းကို ကိုယ်စားပြုတဲ့ output တစ်ခု ထုတ်ပေးပါလိမ့်မယ်။ ဒါက binary classification ဖြစ်တဲ့အတွက် `sigmoid` activation function နဲ့ `binary_crossentropy` loss ကို အသုံးပြုပါတယ်။\n" ] }, { @@ -746,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ရလဒ်ကအရမ်းကောင်းပါတယ်၊ ကျွန်တော်တို့က ကြောင်နဲ့ ခွေးကို ၉၅% လောက်အတိအကျ ခွဲခြားနိုင်ပါတယ်! ဒါပေမယ့် ဒီနည်းလမ်းကို ရုပ်ပုံအားလုံးမှာ စမ်းသပ်တာမဟုတ်ဘဲ၊ ရုပ်ပုံတစ်ချို့ကိုသာ စမ်းသပ်ထားတာဖြစ်ပါတယ်၊ အကြောင်းကတော့ လက်ဖြင့် feature extraction လုပ်ရတာ အချိန်အတော်ကြာလို့ပါ။\n", + "ရလဒ်က အံ့သြဖွယ်ကောင်းပြီး၊ ကြောင်နဲ့ခွေးကို ခန့်မှန်းချိန် ၉၅% ခန့်တိကျစွာခွဲခြားနိုင်ပါတယ်! သို့သော်ကျွန်ုပ်တို့ ဒီနည်းလမ်းကို ပုံပြင်အားလုံးထဲမှ တစိတ်တပိုင်းပဲ စမ်းသပ်ထားပါသေးသည်၊ မန်ျူဝယ်ဖြင့် feature များကို ထုတ်ယူသည်မှာ အချိန်များသည့်အတွက်ဖြစ်ပါသည်။\n", "\n", - "## VGG network တစ်ခုကို အသုံးပြုပြီး Transfer Learning\n", + "## VGG တစ်ခု အသုံးပြု၍ Transfer learning ပြုလုပ်ခြင်း\n", "\n", - "လက်ဖြင့် feature တွေကို ကြိုတင်တွက်ချက်ရတာကို ရှောင်ရှားနိုင်ဖို့အတွက် VGG-16 network ကို training အတွင်းမှာ တစ်ခုတည်းအဖြစ် အသုံးပြုနိုင်ပါတယ်၊ feature extractor ကို network ရဲ့ ပထမဆုံးအလွှာအဖြစ် ထည့်သွင်းပေးရုံပါပဲ။\n", + "နည်းလမ်းကို manual feature extraction မလုပ်ဘဲ Training အတွင်းတွင် မူလ VGG-16 network ကိုအပြည့်အစုံအသုံးပြုပြီး feature extractor ကို အဆင့်ပထမအဖြစ် ဝင်ပါသည့် network ထဲထည့်၍ရှေ့ဆက်နိုင်ပါတယ်။\n", "\n", - "Keras architecture ရဲ့ အလှတရားကတော့ ကျွန်တော်တို့ အထက်မှာ သတ်မှတ်ထားတဲ့ VGG-16 model ကို neural network တစ်ခုရဲ့ အလွှာတစ်ခုအဖြစ်ပါ အသုံးပြုနိုင်တာပါ! ကျွန်တော်တို့ လိုအပ်တာကတော့ ဒီ model ရဲ့ အပေါ်မှာ dense classifier နဲ့ network တစ်ခုကို တည်ဆောက်ပြီး၊ ပြီးတော့ network အားလုံးကို back propagation နည်းလမ်းနဲ့ training လုပ်ရုံပါပဲ။\n" + "Keras အင်ဂျင်နီယာနည်းဗျူဟာ၏ အလှတရားမှာ ရှေ့မှဖော်ပြထားသည့် VGG-16 မော်ဒယ်သည် အခြား neural network ၏ layer အဖြစ်လည်း အသုံးပြုနိုင်ခြင်းနှင့် ပတ်သက်ပါသည်! ကျွန်ုပ်တို့ လိုအပ်တာက ရှေ့မှာ dense classifier ပါရှိသည့် network တစ်ခု ဖွဲ့စည်းပြီး အပြီးသတ် network အားလုံးကို back propagation ပုံစံဖြင့် သင်ကြားလိုက်ရုံပဲ ဖြစ်ပါတယ်။\n" ] }, { @@ -796,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ဒီမော်ဒယ်ဟာ အဆုံးမှအဆုံးသို့ အမျိုးအစားခွဲခြားမှုကွန်ယက်လိုပဲ ဖြစ်ပြီး ပုံတစ်ပုံကိုယူပြီး အမျိုးအစားကို ပြန်ပေးပါတယ်။ သို့သော် အခက်အခဲတစ်ခုက VGG16 ကို အင်္ဂါရပ်ထုတ်ယူသူအဖြစ် သုံးချင်တာဖြစ်ပြီး ပြန်လည်လေ့ကျင့်မလုပ်ချင်တာပါ။ ဒါကြောင့် **convolutional feature extractor ရဲ့ အလေးချိန်တွေကို ချုပ်ထားဖို့** လိုအပ်ပါတယ်။ ကွန်ယက်ရဲ့ ပထမဆုံးအလွှာကို `model.layers[0]` ကိုခေါ်ပြီး ဝင်ရောက်နိုင်ပြီး `trainable` property ကို `False` အဖြစ် သတ်မှတ်ရုံပဲ လိုအပ်ပါတယ်။\n", + "ဒီမော်ဒယ်က ဓာတ်ပုံတစ်ပုံကိုယူပြီး အတန်းခွဲမည့် အဆုံးစွန်ခွဲခြားခြင်းကွန်ယက်တစ်ခုလို ပြောင်းလဲပုံဖော်ထားပါတယ်။ သို့သော် ပြဿနာတစ်ခုက VGG16 ကို feature extractor အဖြစ် အသုံးပြုချင်တာဖြစ်ပြီး ထပ်မံလေ့ကျင့်ချင်ခြင်းမရှိပါဘူး။ ထို့ကြောင့် **convolutional feature extractor ၏ အလေးချိန်များကို ဖရိုက် (freeze) လုပ်ရန်** လိုအပ်ပါတယ်။ ကွန်ယက်၏ ပထမဆုံး အလွှာကို `model.layers[0]` ဖြင့် ဆက်သွယ်နိုင်ပြီး `trainable` ပိုင်ဆိုင်မှုကို `False` အဖြစ် သတ်မှတ်ရုံသာ လိုအပ်ပါတယ်။\n", "\n", - "> **Note**: Feature extractor ရဲ့ အလေးချိန်တွေကို ချုပ်ထားဖို့ လိုအပ်တာက မလေ့ကျင့်ထားတဲ့ classifier layer က convolutional extractor ရဲ့ မူရင်းလေ့ကျင့်ထားတဲ့ အလေးချိန်တွေကို ဖျက်ဆီးနိုင်တဲ့အတွက် ဖြစ်ပါတယ်။\n", + "> **သတိပေးချက်**: Feature extractor ၏ အလေးချိန်များကို ဖရိုစ် လုပ်ခြင်းသည် လိုအပ်သည်၊ မဟုတ်လျှင် လေ့ကျင့်မကြောင်းဖြစ်သည့် classifier အလွှာက မူလ ကြိုတင်လေ့ကျင့်ပြီးသား convolutional extractor ၏ အလေးချိန်များကို ပျက်စီးနိုင်ပါတယ်။\n", "\n", - "ကွန်ယက်ရဲ့ parameter အရေအတွက်စုစုပေါင်းဟာ ၁၅ သန်းလောက်ရှိပေမယ့် ကျွန်တော်တို့ လေ့ကျင့်နေတဲ့ parameter တွေက ၂၅,၀၀၀ ပဲရှိတာကို သတိပြုနိုင်ပါတယ်။ အခြေခံ convolutional filter တွေရဲ့ အခြား parameter တွေကတော့ မူရင်းလေ့ကျင့်ထားပြီးသားဖြစ်ပါတယ်။ ဒါက အကောင်းဆုံးဖြစ်ပါတယ်၊ အကြောင်းက parameter အနည်းငယ်ကို နမူနာအနည်းငယ်နဲ့ လေ့ကျင့်ပြီး fine-tune လုပ်နိုင်တာကြောင့်ပါ။\n", + "ကျွန်ုပ်တို့၏ ကွန်ယက်ထဲရှိ စုစုပေါင်း ပရမားတာ(Parameters)ဟာ ၁၅ မီလ်လီယံ နီးပါးရှိပေမယ့် ကျွန်ုပ်တို့ လေ့ကျင့်လိုက်မယ့် ပရမားတာက ၂၅,၀၀၀ ပဲ ဖြစ်ပါတယ်။ အပေါ်ဆုံး convolutional filter များရှိတဲ့ အခြားပရမားတာအားလုံးကို ကြိုတင်လေ့ကျင့်ပြီးသား ဖြစ်ပါတယ်။ ဒါက အကောင်းပါ၊ ရှားပါးတဲ့ နမူနာ နဲ့ ပရမားတာ နည်းငယ်ကိုသာ မိမိ အလိုက်သင့် လေ့ကျင့်နိုင်ပါတယ်။\n", "\n", - "အခု ကျွန်တော်တို့ရဲ့ ကွန်ယက်ကို လေ့ကျင့်ပြီး ဘယ်လောက်ကောင်းနိုင်မလဲ ကြည့်မယ်။ အချိန်ကြာမြင့်စွာ လုပ်ဆောင်ရမယ်လို့ မျှော်လင့်ပါ၊ အကောင်အထည်မပေါ်သလို ခံစားရတဲ့အချိန်တွေရှိရင်လည်း စိတ်မပူပါနဲ့။\n" + "ယခု ကျွန်ုပ်တို့ ကွန်ယက်ကို လေ့ကျင့်ပြီး ဘယ်လောက်ကောင်းမလဲ ကြည့်ရအောင်။ အချိန် ကြာခန့်ကြာနိုင်တာမျိုးမျှမစိုးပါနဲ့၊ နောက်ဆုံးကိရိယာတစ်ချိန်လို့ ပိတ်ဆို့နေသလို တွေ့ရင်လည်း စိတ်မပူပါနှင့်။\n" ] }, { @@ -827,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ကျွန်တော်တို့မှာ ကြောင်နဲ့ ခွေးတွေကို ခွဲခြားနိုင်တဲ့ အတော်လေးတိကျတဲ့ မော်ဒယ်တစ်ခု ရရှိထားပြီလို့ ထင်ရပါတယ်!\n", + "ကျွန်ုပ်တို့သည် စိတျခနျးတျောကျသော ကြောင်များနှင့် ခွေးများ ခွဲခြားသူကို ရရှိထားသည့်သကဲ့သို့ ပြသနာဖြေရှင်းထားသကဲ့သို့ သြားသည်!\n", "\n", - "## မော်ဒယ်ကို သိမ်းဆည်းခြင်းနှင့် ပြန်လည်ဖွင့်ခြင်း\n", + "## မော်ဒယ်ကို သိမ်းဆည်းခြင်းနှင့် ဖတ်ယူခြင်း\n", "\n", - "မော်ဒယ်ကို လေ့ကျင့်ပြီးသွားတဲ့အခါမှာ မော်ဒယ်၏ ဖွဲ့စည်းပုံနှင့် လေ့ကျင့်ပြီးသား အလေးချိန်တွေကို အနာဂတ်မှာ အသုံးပြုနိုင်ဖို့ ဖိုင်တစ်ခုအဖြစ် သိမ်းဆည်းနိုင်ပါတယ်:\n" + "မော်ဒယ်အား လေ့ကျင့်ပြီးနောက်၊ အနာဂတ် အသုံးပြုမှုအတွက် မော်ဒယ် ဖွဲ့စည်းပုံနှင့် လေ့ကျင့်ပြီးပါက အလေးချိန်များကို ဖိုင်တစ်ခုအဖြစ် သိမ်းဆည်းနိုင်ပါသည်။\n" ] }, { @@ -855,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ကျွန်ုပ်တို့သည် မော်ဒယ်ကို ဖိုင်မှ မည်သည့်အချိန်တွင်မဆို ပြန်လည်တင်နိုင်ပါသည်။ နောက်တစ်ကြိမ် စမ်းသပ်မှုက မော်ဒယ်ကို ဖျက်ဆီးသွားမည်ဆိုပါက အစမှ ပြန်စရန် မလိုအပ်တော့ရန် အလွန်အသုံးဝင်နိုင်သည်။\n" + "ကျွန်ုပ်တို့သည် မျက်နှာစာတစ်ခုမှ မော်ဒယ်ကို အချိန်မရွေး ဖိုင်မှ တင်နိုင်ပါသည်။ နောက်ထပ် စမ်းသပ်မှုက မော်ဒယ်ကို ဖျက်စီးစေခဲ့ပါက ပြန်လည်စတင်ရန် မလိုအပ်တော့ဘဲ အသုံးဝင်နိုင်ပါသည်။\n" ] }, { @@ -871,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Transfer Learning ကို Fine-tuning လုပ်ခြင်း\n", + "## အဆင့်မြှင့်ဖြင့် ထပ်မံသင်ကြားခြင်း\n", "\n", - "အရင်ပိုင်းအခန်းမှာတော့ ကျွန်တော်တို့ရဲ့ dataset ထဲက ပုံတွေကို ခွဲခြားနိုင်ဖို့အတွက် နောက်ဆုံး classifier layer ကို training လုပ်ခဲ့ပါတယ်။ ဒါပေမယ့် feature extractor ကို ပြန်လည် training မလုပ်ခဲ့ပါဘူး၊ ကျွန်တော်တို့ရဲ့ model က ImageNet data မှာ သင်ယူထားတဲ့ features တွေပေါ်မှာ အခြေခံထားပါတယ်။ သင့်ရဲ့ objects တွေဟာ ImageNet ပုံတွေထက် အမြင်အနေနဲ့ ကွဲပြားနေခဲ့ရင်တော့ ဒီ features တွေဟာ အကောင်းဆုံးအလုပ်မလုပ်နိုင်ပါဘူး။ ဒါကြောင့် convolutional layers တွေကိုလည်း training လုပ်ဖို့ စတင်ရင် make sense ဖြစ်ပါတယ်။\n", + "ယခင်ပိုင်းတွင် ကျွန်ုပ်တို့သည် မိမိ dataset ၏ ရုပ်ပုံများကို वर्गीकरण နိုင်ရန် နောက်ဆုံးကလပ်စီဖိုင်ယာ အလွှာကို သင်ကြားခဲ့ပြီးဖြစ်သည်။ သို့သော် feature extractor ကို ပြန်လည်သင်ကြားခြင်း မပြုခဲ့ပါ၊ မော်ဒယ်သည် ImageNet ဒေတာ၌ တင်ထားသော features များကို မူတည်ခဲ့သည်။ သင်၏ ပစ္စည်းများသည် ပုံမှန် ImageNet ရုပ်ပုံများနှင့် ကြည့်ရှုလျှင် ကွဲပြားပါက ဤ features ပေါင်းစပ်မှုသည် အကောင်းဆုံး မဖြစ်နိုင်ပါ။ ထို့ကြောင့် convolutional အလွှာများကိုလည်း သင်ကြားစတင်သင့်သည်ဟု သဘောရသည်။\n", "\n", - "ဒါကိုလုပ်ဖို့အတွက် ကျွန်တော်တို့ရဲ့ အရင်က freeze လုပ်ထားတဲ့ convolutional filter parameters တွေကို unfreeze လုပ်နိုင်ပါတယ်။\n", + "သို့လုပ်ရန်အတွက် ယခင်က ချုပ်ပြီးခဲ့သော convolutional filter ပါရာမီတာများကို ပြန်လည်နွေ့လျှော့နိုင်သည်။\n", "\n", - "> **Note:** Parameters တွေကို အရင်ဆုံး freeze လုပ်ပြီး classification layer ရဲ့ weights တွေကို တည်ငြိမ်အောင်လုပ်ဖို့ အချိန်အနည်းငယ် training လုပ်ဖို့ အရေးကြီးပါတယ်။ Parameters တွေကို unfrozen လုပ်ပြီး အကုန်လုံးကို training လုပ်ဖို့ စတင်လိုက်ရင်တော့ convolutional layers ထဲမှာ pre-trained weights တွေကို error ကြီးတွေ destroy လုပ်နိုင်ပါတယ်။\n", + "> **မှတ်ချက်**၊ classification အလွှာရှိ ဝိတ်များကို တည်ငြိမ်စေရန် ယခင်တွင် ပါရာမီတာချက်များကို ချုပ်၍ သင်ကြားမှုများအတော်များစွာ ပြုလုပ်ရသည်မှာ အရေးကြီးသည်။ ပါရာမီတာ ချုပ်မထားဘဲ ချက်ဆက်ပြီး များစွာ သင်ကြားခြင်းဖြင့် convolutional အလွှာရှိ မိမိ သင်ကြားထားသော ဝိတ်များ ပျက်စီးနိုင်ခြင်းများ ရှိနိုင်သည်။\n", "\n", - "ကျွန်တော်တို့ရဲ့ convolutional VGG-16 model ဟာ ပထမဆုံး layer ထဲမှာရှိပြီး၊ အဲဒီ model ဟာ layer အများကြီးပါဝင်ပါတယ်။ ကျွန်တော်တို့ model ရဲ့ structure ကို ကြည့်နိုင်ပါတယ်။\n" + "ကျွန်ုပ်တို့၏ convolutional VGG-16 မော်ဒယ်သည် ပထမအလွှာအတွင်းရှိပြီး များစွာအလွှာများပါဝင်သည်။ ၎င်း၏ ဖွဲ့စည်းပုံကို ကြည့်နိုင်ပါသည်။\n" ] }, { @@ -947,7 +955,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ကျွန်ုပ်တို့သည် convolutional base ၏ ဘာသာအားလုံးကို unfroze လုပ်နိုင်ပါသည်။\n" + ] }, { "cell_type": "code", @@ -962,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "သို့သော်၊ အားလုံးကို တစ်ချိန်တည်းမှာ အရေပြားမဖျော်သင့်ပါဘူး။ အရင်ဆုံး convolution အလွှာအနည်းငယ်ကိုသာ အရေပြားဖျော်နိုင်ပါတယ်၊ အကြောင်းကတော့ အဲဒီအလွှာတွေမှာ ကျွန်တော်တို့ရဲ့ ပုံရိပ်တွေအတွက် သက်ဆိုင်တဲ့ အဆင့်မြင့် ပုံစံတွေ ပါဝင်လို့ပါ။ ဥပမာ၊ စတင်ဖို့အတွက် နောက်ဆုံး ၄ ခုကို မပါဘဲ အလွှာအားလုံးကို အရေပြားဖျော်ထားနိုင်ပါတယ်။\n" + "သို့သော်၊ အားလုံးကို တပြိုင်နက် ကျပ်တည်းမှုကင်းလွတ်စေခြင်းသည် အကောင်းဆုံး အကြံမဟုတ်ပါ။ ငါတို့ ပထမဆုံး အနည်းငယ်သော နောက်ဆုံး convolution အလွှာများကိုသာ ကျပ်တည်းမှုကင်းလွတ်စေပါမယ်၊ အကြောင်းမှာ ၎င်းတို့တွင် ကွန်ရက်ပုံရိပ်များနှင့် သက်ဆိုင်သော အဆင့်မြင့် ပုံစံများ ပါဝင်နေပါသည်။ ဥပမာ၊ စတင်ရန်အတွက် နောက်ဆုံး ၄ အလွှာကို ထားပြီး အခြားအားလုံးကို ကျပ်တည်းစေပါ: \n" ] }, { @@ -1001,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "သင်ကြားနိုင်သော parameters အရေအတွက်မှာ အလွန်များပြားလာသော်လည်း၊ အားလုံးသော parameters ရဲ့ ၅၀% ခန့်ပဲရှိနေသေးပါတယ်။\n", + "သင်ကြားနိုင်သော ပါရာမီတာအရေအတွက် ကြီးမားစွာတိုးလာသည်ကို သတိထားကြည့်ပါ၊ သို့သော် ၎င်းမှာ စုစုပေါင်းပါရာမီတာအားလုံး၏ ၅၀% အနီးအနားသာရှိသည်။\n", "\n", - "Unfreezing ပြုလုပ်ပြီးနောက်မှာ၊ သင်တစ်ချို့သော epochs ကို ထပ်မံလေ့ကျင့်နိုင်ပါတယ် (ဤဥပမာတွင်၊ တစ်ခုသာလုပ်မည်ဖြစ်သည်)။ သင်သည် learning rate ကို ပိုနိမ့်သောတန်ဖိုးရွေးချယ်နိုင်ပြီး၊ pre-trained weights အပေါ်သက်ရောက်မှုကို လျှော့ချနိုင်ပါသည်။ သို့သော် learning rate နိမ့်နိမ့်ဖြင့်တောင်၊ လေ့ကျင့်မှုအစပိုင်းတွင် accuracy က ကျဆင်းနိုင်သည်ကို မျှော်လင့်ရမည်ဖြစ်ပြီး၊ fixed weights ရဲ့အခြေအနေထက် အနည်းငယ်ပိုမိုမြင့်မားသောအဆင့်ကို နောက်ဆုံးရောက်ရှိမည်ဖြစ်သည်။\n", + "unfreeze ပြုလုပ်ပြီးနောက်၊ သင်ကြားမှုအပိုင်းများကို ကျွန်ုပ်တို့၏ နမူနာတွင် တစ်ကြိမ်သာလုပ်မည့်အဖြစ် အနည်းငယ်ပိုများစွာလုပ်နိုင်သည်။ ပြီးလျှင် ပထမဆုံး သင်ကြားမှုမှာ pre-trained ကိုယ်လက်များအား အနည်းဆုံး ထိခိုက်မှု ရှိရန်အတွက် အတက်နှုန်းသင်ယူမှုကို လျော့ချနိုင်သည်။ သို့သော် အတက်နှုန်းသင်ယူမှုနိမ့် များပြီးဖြင့်လည်း၊ သင်တန်းအစပိုင်းတွင် တိကျမှန်ကန်မှုကျဆင်းမှုကို မျှော်လင့်နိုင်ပြီး နောက်ဆုံးတွင် fixed weights ဖြစ်စဉ်နှင့်နှိုင်းယှဉ်၍ နည်းနည်းပိုမိုမြင့်မားသည့် အဆင့်ကို ရောက်ရှိမည်ဖြစ်သည်။\n", "\n", - "> **Note:** ဤလေ့ကျင့်မှုသည် အလွန်နှေးကွေးစွာဖြစ်ပေါ်သည်၊ အကြောင်းမှာ gradient များကို network ရဲ့အလွှာများစွာမှ ပြန်လည်ပျံ့နှံ့စေရန်လိုအပ်သောကြောင့်ဖြစ်သည်!\n" + "> **မှတ်ချက်။** ဤသင်ကြားမှုသည် အလွန်နာနှင့်သည့်အတွက် ကျွန်ုပ်တို့ ကြိုးစားကြိုးစားအနက် ယောက်ျားများသည် ဂရေဒီယင့်များကို နက်ရှိုင်းသော အလွှာများမှ ရှေ့သို့ ပြန်လည် သယ်ဆောင်ရသောကြောင့် ဖြစ်သည်။\n" ] }, { @@ -1029,18 +1039,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ကျွန်ုပ်တို့သည် ပိုမိုအစွမ်းထက်သော network ကို အသုံးပြုပြီး parameter များပိုမိုများပြားသောကြောင့် training accuracy ပိုမိုမြင့်မားလာနိုင်ပါသည်။ သို့သော် validation accuracy သည် အလွန်များမတက်နိုင်ပါ။\n", + "ကျွန်ုပ်တို့သည် ပိုမိုစွမ်းအားမြင့်ပြီး ပါရာမီတာများပိုမိုရှိသော နက်ဝက်ခ်ကို အသုံးပြုနေသောကြောင့် ပိုမိုမြင့်မားသော လေ့ကျင့်မှုတိကျမှုကို ရရှိနိုင်ရန် ဆင်ခြင်နိုင်သော်လည်း၊ အတည်ပြုမှုတိကျမှုမှာ အတော်လေးတိုးမလာနိုင်ပါ။\n", "\n", - "Network ၏ layer အချို့ကို ထပ်မံဖွင့်လှစ်ပြီး training ပြုလုပ်ရန် လွတ်လပ်စွာ စမ်းသပ်ကြည့်ပါ၊ accuracy ပိုမိုမြင့်မားစေရန် အောင်မြင်နိုင်မလား စမ်းကြည့်ပါ!\n" + "နက်ဝက်ခ်နှင့် ပိုမိုလွှတ်ချရန်အလွယ်ကူဆုံးအလွှာအနည်းငယ်ကို လွှတ်ချပြီး ပိုမိုလေ့ကျင့်ကြည့်ခြင်းအားဖြင့် ပိုမိုမြင့်မားသော တိကျမှုရရှိနိုင်မလား ရှုမြင်ကြည့်ပါ!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## အခြားသော ကွန်ပျူတာမြင်ကွင်း မော်ဒယ်များ\n", + "## အခြားကွန်ပျူတာမြင်ကွင်း မော်ဒယ်များ\n", "\n", - "VGG-16 သည် အလွန်ရိုးရှင်းသော ကွန်ပျူတာမြင်ကွင်း အဆောက်အအုံများထဲမှ တစ်ခုဖြစ်သည်။ Keras တွင် ကြိုတင်လေ့ကျင့်ထားသော ကွန်ယက်များ အများအပြား ပါဝင်သည်။ ၎င်းတို့အနက် အများဆုံးအသုံးပြုကြသည်မှာ Microsoft မှ ဖန်တီးထားသော **ResNet** အဆောက်အအုံများနှင့် Google မှ ဖန်တီးထားသော **Inception** ဖြစ်သည်။ ဥပမာအားဖြင့် ရိုးရှင်းဆုံး ResNet-50 မော်ဒယ်၏ အဆောက်အအုံကို စူးစမ်းကြည့်ရအောင် (ResNet သည် အနက်ရှိုင်းမှုအမျိုးမျိုးရှိသော မော်ဒယ်များ၏ မိသားစုဖြစ်ပြီး၊ အလွန်နက်ရှိုင်းသော မော်ဒယ်တစ်ခုကို ကြည့်လိုပါက ResNet-152 ကို စမ်းသပ်ကြည့်နိုင်ပါသည်)။\n" + "VGG-16 သည် ကွန်ပျူတာမြင်ကွင်း ‌ဆောက်လုပ်ပုံများတွင် အလွန်ရိုးရှင်းဆုံးတစ်ခုဖြစ်သည်။ Keras သည် မကြာသေးမှီက သင်ကြားပြီးသားကွန်ယက်များစွာကို ပံ့ပိုးပေးသည်။ ထိုအနက် အများဆုံး အသုံးပြုရသောများမှာ Microsoft မှ ဖန်တီးထားသည့် **ResNet** ဆောက်လုပ်ပုံများနှင့် Google မှ ဖန်တီးထားသည့် **Inception** ဖြစ်သည်။ ဥပမာအားဖြင့် အလွန်ရိုးရှင်းဆုံး ResNet-50 မော်ဒယ် (ResNet သည် အနက်အမျိုးမျိုးရှိပြီး အနက်အနက်အမျိုးမျိုးရှိသည်၊ မျက်နှာအနက်တစ်ခု ဥပမာ- ResNet-152 ကို စမ်းသပ်ကြည့်နိုင်ပါတယ်- တကယ်ကိုနက်ရှိုင်းတဲ့မော်ဒယ်က ဘယ်လိုမျိုးဖြစ်လဲ ဆိုတာကိုကြည့်ရန်) ၏ ဆောက်လုပ်ပုံကို လေ့လာကြမယ်။\n" ] }, { @@ -1442,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "မော်ဒယ်တွင် ရိုးရိုးသိပ်မိုက်သော အဆောက်အအုံများဖြစ်သော convolutional layers, pooling layers နှင့် နောက်ဆုံး dense classifier တို့ပါဝင်သည်ကို တွေ့နိုင်ပါသည်။ ဤမော်ဒယ်ကို VGG-16 ကို transfer learning အတွက် အသုံးပြုခဲ့သည့်နည်းလမ်းတူတူပင် အသုံးပြုနိုင်ပါသည်။ အထက်ပါ code ကို အသုံးပြု၍ မူလမော်ဒယ်အဖြစ် အမျိုးမျိုးသော ResNet မော်ဒယ်များကို စမ်းသပ်ကြည့်ပြီး အတိအကျမှု (accuracy) ပြောင်းလဲမှုကို ကြည့်ရှုနိုင်ပါသည်။\n", + "သင့်မြင်နိုင်သလောက် မော်ဒယ်မှာ တူညီသော ရိုးရိုးရှင်းရှင်း စက်ဆင့်ခွဲပုံများပါဝင်ပါတယ်။ convolutional မျက်နှာပြင်များ၊ pooling မျက်နှာပြင်များနဲ့ နောက်ဆုံး dense classifier ပါဝင်ပါတယ်။ ဤမော်ဒယ်ကို VGG-16 ကို transfer learning အတွက် အသုံးပြုနေသလို တိတိကျကျ အသုံးပြုနိုင်ပါတယ်။ အထက်ပါ ကုဒ်ကို အသုံးပြုပြီး အခြေခံမော်ဒယ်အဖြစ် အမျိုးမျိုးသော ResNet မော်ဒယ်များသုံးပြီး စမ်းကြည့်နိုင်ပြီး တိကျမှန်ကန်မှု ဘယ်လို တိုးတက်သွားသည်ကို ကြည့်ရှုနိုင်ပါတယ်။\n", "\n", "## Batch Normalization\n", "\n", - "ဤကွန်ယက်တွင် အခြားသော အလွှာအမျိုးအစားတစ်ခုဖြစ်သော **Batch Normalization** ပါဝင်သည်။ Batch normalization ၏ အကြောင်းအရာမှာ နယူးရယ်ကွန်ယက်မှတဆင့် စီးဆင်းနေသော တန်ဖိုးများကို သင့်တော်သော interval သို့ ရောက်အောင် ပြုလုပ်ရန်ဖြစ်သည်။ သာမန်အားဖြင့် နယူးရယ်ကွန်ယက်များသည် တန်ဖိုးများ [-1,1] သို့မဟုတ် [0,1] interval အတွင်းရှိသည့်အခါ အကောင်းဆုံးအလုပ်လုပ်နိုင်ပြီး ထို့ကြောင့် input data ကို scale/normalize ပြုလုပ်ရသည်။ သို့သော် deep network ကို training ပြုလုပ်နေစဉ်တွင် တန်ဖိုးများသည် အဆိုပါ interval မှ အလွန်အကျွံ ကျော်လွန်သွားနိုင်ပြီး training ကို အခက်အခဲဖြစ်စေသည်။ Batch normalization layer သည် လက်ရှိ minibatch ၏ တန်ဖိုးများအားလုံးအတွက် အလယ်တန်းနှင့် စံချိန်ကွက်ကိုတွက်ချက်ပြီး signal ကို နယူးရယ်ကွန်ယက် layer မှတဆင့် ဖြတ်သန်းမည့်အခါ normalize ပြုလုပ်သည်။ ဤအရာသည် deep networks ၏ တည်ငြိမ်မှုကို အလွန်တိုးတက်စေပါသည်။\n" + "ဤကွန်ရက်တွင် အမျိုးအစားတစ်ခု ဖန်တီးသော မျက်နှာပြင်ရှိပါသည် - **Batch Normalization**။ Batch normalization ၏ အယူအဆမှာ နယူးရယ်ကွန်ရက်မှတဆင့် ဝင်ရောက်သောတန်ဖိုးများကို သင့်တော်သော အတွင်းတန်းသို့ ပြောင်းလဲပေးခြင်းဖြစ်သည်။ ပုံမှန်အားဖြင့် နယူးရယ်ကွန်ရက်များသည် တန်ဖိုးအားလုံးသည် [-1,1] သို့ မဟုတ် [0,1] အတွင်းရှိသောအခါ အကောင်းဆုံး လုပ်ဆောင်ကြသည်။ ဒါကြောင့် မိမိတို့ စတင်ထည့်သွင်းသော ဒေတာကို အဲဒီအတိုင်း စမိတ် / normalize လုပ်သည်။ သို့ရာတွင် နက်ရှိုင်းသော ကွန်ရက်ကို သင်ကြားစဉ် တွက်ချက်မိရင် တန်ဖိုးများမှာ ဤအတွင်းတန်းမှ အလွန်ကျွန်းကျင်၍ ဖြစ်နိုင်ပြီး သင်ကြားမှု အခက်အခဲ ဖြစ်စေသည်။ Batch normalization မျက်နှာပြင်သည် လက်ရှိ မီနီဘတ်ခ်ရှိ တန်ဖိုးအားလုံးအတွက် ပျမ်းမျှနှင့် စံချိန်တော်ကို တွက်ချက်ပြီး ဒါတို့ကို အသုံးပြု၍ စင်တင် signal ကို နယူးရယ်ကွန်ရက်မျက်နှာပြင်သို့ ပို့ခြင်းမပြုမီ normalize လုပ်တယ်။ ဒါက နက်ရှိုင်းသော ကွန်ရက်များ၏ တည်ငြိမ်မှုကို အများအပြား တိုးတက်စေသည်။\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## အဓိကအချက်\n", + "## အချက်ချုပ်\n", "\n", - "Transfer learning ကို အသုံးပြုခြင်းအားဖြင့်၊ ကျွန်ုပ်တို့၏ အထူးပြု object classification အလုပ်ကို အလွယ်တကူ classifier တစ်ခုတည်ဆောက်နိုင်ခဲ့ပြီး၊ မြင့်မားသော တိကျမှုရလဒ်ကို ရရှိခဲ့ပါသည်။ သို့သော်၊ ဤဥပမာသည် လုံးဝတရားမျှတမှုမရှိပါ၊ အကြောင်းမှာ မူရင်း VGG-16 network ကို ကြောင်များနှင့် ခွေးများကို အသိအမှတ်ပြုရန် pre-trained လုပ်ထားပြီး၊ network အတွင်းရှိ pattern များကို အများအားဖြင့် ပြန်လည်အသုံးပြုခြင်းသာ ဖြစ်ခဲ့ပါသည်။ ထို့ကြောင့် စက်ရုံထဲရှိ ထုတ်လုပ်မှုလိုင်း၏ အသေးစိတ်များ၊ သစ်ပင်ရွက်မျိုးစုံကဲ့သို့သော ပိုမိုထူးခြားသော domain-specific object များတွင် accuracy ပိုမိုနိမ့်ကျနိုင်သည်ကို မျှော်လင့်နိုင်ပါသည်။\n", + "transfer learning ကို အသုံးပြု၍ ကျွန်ုပ်တို့အနေနဲ့ မိမိတို့၏ ကိုယ်ပိုင် ပစ္စည်း အမျိုးအစားကောက်ချက် ရေးရာ အတွက် အချိန်တိုအတွင်း အမျိုးအစားခွဲထုတ်စက်ကို ပြုလုပ်နိုင်ခဲ့ပြီး တိကျမှုမြင့်မားစွာ ရရှိနိုင်ခဲ့ပါသည်။ သို့ဖြစ်ပေမဲ့ ဤဥပမာသည် ပြည့်စုံမှုအတွက် မဟုတ်ပါ၊ အရင် VGG-16 ကွန်ယက်သည် ကြောင်နှင့် ခွေးများကို မှတ်သားရန် အရင်က သင်ကြားပြီးသားဖြစ်သောကြောင့် ကျွန်ုပ်တို့သည် အများစုမှာ အဲဒီကွန်ယက်တွင် ရှိပြီးသား ပုံစံများကို ပြန်လည်အသုံးပြုနေခဲ့သည်။ သင်မြင်နိုင်သော ပိုမိုရှုပ်ထွေးပြီး သီးသန့်နယ်ပယ် အရာဝတ္ထုများ၊ ဥပမာ- စက်ရုံထုတ်လုပ်မှုလိုင်းပေါ်ရှိအသေးစိတ်များ သို့မဟုတ် မတူညီသော သစ်ရွက်များအပေါ်တွင် တိကျမှုနည်းပါးမှု ဖြစ်တတ်သည်။\n", "\n", - "ကျွန်ုပ်တို့အနေနှင့် ယခုဖြေရှင်းနေသော ပိုမိုရှုပ်ထွေးသော အလုပ်များသည် မြင့်မားသော ကွန်ပျူတာစွမ်းအားကို လိုအပ်လာပြီး၊ CPU ပေါ်တွင် အလွယ်တကူ ဖြေရှင်းနိုင်မည်မဟုတ်ပါ။ နောက်ထပ် unit တွင်၊ compute resources ပိုနည်းသော implementation ကို အသုံးပြု၍ အတူတူသော model ကို training လုပ်ရန် ကြိုးစားမည်ဖြစ်ပြီး၊ accuracy အနည်းငယ်သာ နိမ့်ကျသည့် ရလဒ်ကို ရရှိမည်ဖြစ်သည်။\n" + "အခု ကျွန်ုပ်တို့ဖြေရှင်းနေသော ပိုမိုရှုပ်ထွေးသော အလုပ်တွေမှာ ကြာမြင့်စွာတွက်ချက်ရမယ့် စွမ်းဆောင်ရည်မြင့် ကွန်ပျူတာတစ်ခုလိုအပ်ပြီး CPU ပေါ်မှာ လွယ်လွယ်ကူကူ မဖြေရှင်းနိုင်ကြောင်း တွေ့မြင်နိုင်ပါသည်။ နောက်တစ်ကျဆုံးအပိုင်းတွင် ပိုမို အလေးချိန်နည်းသော အကောင်အထည်ဖော်မှုကို အသုံးပြု၍ ဆက်လက်တည်ဆောက်သွားပြီး အနည်းငယ်သာ တိကျမှုနည်းပါးသော်လည်း နှိုင်းယှဉ်ကြည့်မည်ဖြစ်သည်။\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**အကြောင်းကြားချက်**: \nဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။\n" + "---\n\n\n**ပြောကြားချက်**\nဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။\n\n" ] } ], @@ -1485,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-30T09:12:34+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "my" } }, "nbformat": 4, diff --git a/translations/my/lessons/5-NLP/README.md b/translations/my/lessons/5-NLP/README.md index 0fbf398a..ee16d6da 100644 --- a/translations/my/lessons/5-NLP/README.md +++ b/translations/my/lessons/5-NLP/README.md @@ -1,51 +1,51 @@ -# သဘာဝဘာသာစကားလုပ်ငန်းဆောင်တာ +# သဘာဝဘာသာစကား အလုပ်ဆောင်ချက် -![NLP လုပ်ငန်းဆောင်တာများကို ရေးဆွဲထားသော ပုံ](../../../../translated_images/my/ai-nlp.b22dcb8ca4707cea.webp) +![NLP အလုပ်များအကျဉ်းချုပ် ဒူလာ](../../../../translated_images/my/ai-nlp.b22dcb8ca4707cea.webp) -ဤအပိုင်းတွင် **သဘာဝဘာသာစကားလုပ်ငန်းဆောင်တာ (NLP)** နှင့်ဆက်စပ်သောအလုပ်များကို Neural Networks အသုံးပြု၍ ဖြေရှင်းပုံကို အဓိကထားဆွေးနွေးသွားမည်ဖြစ်သည်။ ကွန်ပျူတာများကို ဖြေရှင်းစေလိုသော NLP ပြဿနာများစွာရှိသည်။ +ဒီအပိုင်းမှာ ကျွန်တော်တို့ Neural Networks ကို သဘာဝဘာသာစကား အလုပ်နဲ့ပါတ်သတ်တဲ့လုပ်ငန်းတွေကို ကိုင်တွယ်ဖို့ အထူးပြုစွမ်းဆောင်သွားမှာ ဖြစ်ပါတယ်။ ကွန်ပြူတာတွေကိုဖြေရှင်းနိုင်ဖို့လိုချင်တဲ့ NLP ပြဿနာများက များပြားပါတယ်။ -* **စာသားအမျိုးအစားခွဲခြားခြင်း** သည် စာသားအတိုင်းအတာများနှင့်ဆက်စပ်သော အမျိုးအစားခွဲခြားမှုပြဿနာတစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့် အီးမေးလ်များကို spam နှင့် non-spam အဖြစ်ခွဲခြားခြင်း၊ သို့မဟုတ် ဆောင်းပါးများကို အားကစား၊ စီးပွားရေး၊ နိုင်ငံရေး စသည်ဖြင့် အမျိုးအစားခွဲခြားခြင်းတို့ ပါဝင်သည်။ ထို့အပြင် chat bots ဖွံ့ဖြိုးရေးတွင် အသုံးပြုသူ၏ ရည်ရွယ်ချက်ကို နားလည်ရန်လိုအပ်သည်။ ဤကိစ္စတွင် **ရည်ရွယ်ချက်ခွဲခြားခြင်း** (intent classification) ကို ဖြေရှင်းရမည်ဖြစ်သည်။ ရည်ရွယ်ချက်ခွဲခြားမှုတွင် အမျိုးအစားများစွာနှင့် ရင်ဆိုင်ရတတ်သည်။ -* **ခံစားချက်ခွဲခြားခြင်း** သည် regression ပြဿနာတစ်ခုဖြစ်ပြီး စာကြောင်း၏ အဓိပ္ပါယ်သည် အပေါင်း/အပြားဘယ်လောက်ရှိသည်ကို သတ်မှတ်ရန် နံပါတ် (ခံစားချက်) တစ်ခုကို သတ်မှတ်ရမည်ဖြစ်သည်။ ခံစားချက်ခွဲခြားမှု၏ အဆင့်မြင့်ဗားရှင်းတစ်ခုမှာ **အပိုင်းအခြေခံခံစားချက်ခွဲခြားခြင်း** (ABSA) ဖြစ်ပြီး စာကြောင်းတစ်ခုလုံးကို မဟုတ်ဘဲ အပိုင်းအခြေများ (aspects) ကို ခံစားချက်သတ်မှတ်ရမည်ဖြစ်သည်။ ဥပမာအားဖြင့် *ဤစားသောက်ဆိုင်တွင် အစားအစာကို ကြိုက်ခဲ့ပေမယ့် ပတ်ဝန်းကျင်က ဆိုးရွားခဲ့သည်*။ -* **နာမည်ရရှိထားသောအရာများကို မှတ်သားခြင်း** (NER) သည် စာသားမှ အချို့သောအရာများကို ထုတ်ယူရန် ပြဿနာဖြစ်သည်။ ဥပမာအားဖြင့် *မနက်ဖြန် ပဲရစ်ကို ပျံသန်းရန်လိုအပ်သည်* ဆိုသော စာကြောင်းတွင် *မနက်ဖြန်* သည် DATE ကို ရည်ညွှန်းပြီး *ပဲရစ်* သည် LOCATION ဖြစ်သည်ကို နားလည်ရန်လိုအပ်သည်။ -* **အဓိကချက်များထုတ်ယူခြင်း** သည် NER နှင့် ဆင်တူပြီး စာကြောင်း၏ အဓိပ္ပါယ်အတွက် အရေးပါသော စကားလုံးများကို အလိုအလျောက်ထုတ်ယူရန်လိုအပ်သည်။ သတ်မှတ်ထားသောအရာအမျိုးအစားများအတွက် ကြိုတင်လေ့ကျင့်မှုမလိုအပ်ပါ။ -* **စာသားစုစည်းခြင်း** သည် နည်းပညာပံ့ပိုးမှုစကားဝိုင်းများတွင် တူညီသောတောင်းဆိုမှုများကို အုပ်စုဖွဲ့လိုသောအခါ အသုံးဝင်သည်။ -* **မေးခွန်းဖြေဆိုခြင်း** သည် မေးခွန်းတစ်ခုကို ဖြေဆိုနိုင်စွမ်းကို ရည်ညွှန်းသည်။ မော်ဒယ်သည် စာသားအပိုင်းနှင့် မေးခွန်းကို input အဖြစ်ရရှိပြီး မေးခွန်း၏ အဖြေပါဝင်သောနေရာကို စာသားတွင် ရှာဖွေရန် (တခါတလေ အဖြေစာသားကို ဖန်တီးရန်) လိုအပ်သည်။ -* **စာသားဖန်တီးခြင်း** သည် စာသားအသစ်ကို ဖန်တီးနိုင်စွမ်းဖြစ်သည်။ ၎င်းကို *text prompt* အပေါ်အခြေခံပြီး နောက်ထပ်အက္ခရာ/စကားလုံးကို ခန့်မှန်းသော အမျိုးအစားခွဲခြားမှုအလုပ်တစ်ခုအဖြစ် သတ်မှတ်နိုင်သည်။ 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 အလုပ်များကို ဖြေရှင်းနိုင်သည်။ -* **စာသားအကျဉ်းချုပ်ရေးခြင်း** သည် ရှည်လျားသောစာသားကို "ဖတ်"၍ အနည်းငယ်သောစာကြောင်းများဖြင့် အကျဉ်းချုပ်ရေးရန်လိုအပ်သောနည်းလမ်းဖြစ်သည်။ -* **စက်ဖြင့်ဘာသာပြန်ခြင်း** သည် ဘာသာစကားတစ်ခုတွင် စာသားနားလည်ခြင်းနှင့် အခြားဘာသာစကားတွင် စာသားဖန်တီးခြင်းတို့၏ ပေါင်းစပ်အဖြစ်မြင်နိုင်သည်။ +* **စာသားခွဲခြားခြင်း** သည် စာသားလိုက်တာတွေ အပေါ် အထွေထွေခွဲခြားခြင်းပြဿနာ ဖြစ်သည်။ ဥပမာအနေနဲ့ အီးမေးလ်များကို spam နှင့် no-spam အဖြစ်ခွဲခြားခြင်း၊ သို့မဟုတ် ဆောင်းပါးများကို ကစားကွင်း၊ စီးပွားရေး၊ နိုင်ငံရေး စသဖြင့် အမျိုးအစားခွဲခြင်းတို့ ပါဝင်တယ်။ ထို့အပြင်, မေးလ်တုံ့ပြန်သူများ ဖန်တီးရာတွင် အသုံးပြုသူကဘာပြောလိုကြောင်း ဘာယူလိုကြောင်းကို နားမလည်ခဲ့ရင် **ရည်ရွယ်ချက်ခွဲခြားခြင်း** လုပ်ရတယ်။ အများအားဖြင့်, ရည်ရွယ်ချက်ခွဲခြားခြင်းမှာ အမျိုးအစားများစွာကို ကိုင်တွယ်ရတတ်သည်။ +* **ခံစားချက်ခွဲခြားခြင်း** သည် အထွေထွေ ရင်းနှီးထက်မြက်မှု ပြဿနာ ဖြစ်သည်၊ ဒီမှာ စာကြောင်းတစ်ကြောင်း၏ အဓိပ္ပါယ်က ဘယ်လောက် အပေါင်/အချိုးမမှန် ဖြစ်သလဲဆိုတာကို နံပါတ်တစ်ခု (ခံစားချက်) ပေးရတယ်။ ခံစားချက်ခွဲခြားနည်း ရှုပ်ထွေးတဲ့ဗားရှင်းတစ်ခုက **အချက်အလက်အခြေခံခံစားချက်ခွဲခြားခြင်း** (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 အလုပ်များအများစုကို ဓလေ့ကျင့်နည်းများဖြင့် ဖြေရှင်းခဲ့သည်။ ဥပမာအားဖြင့် စက်ဖြင့်ဘာသာပြန်ခြင်းတွင် စာကြောင်းကို syntax tree အဖြစ်ပြောင်းလဲရန် parsers ကို အသုံးပြုခဲ့ပြီး sentence ၏ အဓိပ္ပါယ်ကို ကိုယ်စားပြုသော semantic structures များကို ထုတ်ယူခဲ့သည်။ ထို့နောက် target ဘာသာစကား၏ grammar အပေါ်အခြေခံ၍ ရလဒ်ကို ဖန်တီးခဲ့သည်။ ယနေ့တွင် Neural Networks ကို အသုံးပြု၍ NLP အလုပ်များစွာကို ပိုမိုထိရောက်စွာ ဖြေရှင်းနိုင်သည်။ +အစပိုင်းမှာ NLP အလုပ်များအချို့ကို ဂရမ်မာများကဲ့သို့ ရိုးရာနည်းလမ်းများဖြင့် ဖြေရှင်းခဲ့ကြသည်။ ဥပမာ၊ စက်ဘာသာပြန်ခြင်းတွင် စာကြောင်းကို စာလုံးပုံစံသစ်သစ်ဖြင့် ပြောင်းရန် ပတ်ဆင်သက်သာမှုများကို လေ့လာဖော်ထုတ်ပြီး စာကြောင်းအဓိပ္ပါယ်အပြည့်အဝ ကိုယ်စားပြုရန် အဆင့်မြင့် တိုင်းတာမှုများ ကို စုဆောင်းသုံးစွဲခဲ့သည်။ ယနေ့မှာတော့ NLP အလုပ်များစွာကို neural networks ဖြင့် ပိုမိုထိရောက်စွာ ဖြေရှင်းကြသည်။ -> [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python library တွင် classical NLP နည်းလမ်းများစွာကို အကောင်အထည်ဖော်ထားသည်။ [NLTK Book](https://www.nltk.org/book/) သည် NLTK ကို အသုံးပြု၍ NLP အလုပ်များကို ဖြေရှင်းပုံကို ဖော်ပြထားသော အွန်လိုင်းစာအုပ်တစ်ခုဖြစ်သည်။ +> ကျယ်ပြန့်စွာအသုံးပြုသော ရိုးရာ NLP နည်းလမ်းများကို [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python လိုင်ဘ်ရရီတွင် အကောင်အထည်ဖော်ထားသည်။ NLTK ဖြင့် မည်သည့် NLP လုပ်ငန်းများကို ဖြေရှင်းနိုင်သည်ကို ဖော်ပြသော အွန်လိုင်းတွင် ရနိုင်သော [NLTK စာအုပ်](https://www.nltk.org/book/) တစ်အုပ် ရှိသည်။ -ဤသင်ခန်းစာတွင် Neural Networks ကို အသုံးပြု၍ NLP ကို အဓိကထားမည်ဖြစ်ပြီး NLTK ကို လိုအပ်သည့်နေရာတွင် အသုံးပြုမည်ဖြစ်သည်။ +ကျွန်တော်တို့ သင်ခန်းစာ၌ အဓိကအားဖြင့် Neural Networks အသုံးပြုပြီး NLP ကိုဆောင်ရွက်တော့မှာ ဖြစ်ပြီး NLTK ကို လိုအပ်သလို သုံးမှာပါ။ -ကျွန်ုပ်တို့သည် tabular data နှင့် images ကို Neural Networks အသုံးပြု၍ ဖြေရှင်းပုံကို ရှင်းလင်းခဲ့ပြီးဖြစ်သည်။ data အမျိုးအစားများနှင့် စာသားအကြား အဓိကကွာခြားချက်မှာ စာသားသည် အရွယ်အစားမတူညီသော အတိုင်းအတာဖြစ်ပြီး images ၏ input size ကို ကြိုတင်သိနိုင်သည်။ Convolutional networks သည် input data မှ pattern များကို ထုတ်ယူနိုင်သော်လည်း စာသားတွင် pattern များသည် ပိုမိုရှုပ်ထွေးသည်။ ဥပမာအားဖြင့် negation သည် subject နှင့် အကွာအဝေးရှိသော စကားလုံးများဖြင့် ခွဲထားနိုင်သည် (*I do not like oranges* နှင့် *I do not like those big colorful tasty oranges*)၊ ၎င်းကို pattern တစ်ခုအဖြစ် သတ်မှတ်နိုင်ရမည်ဖြစ်သည်။ ထို့ကြောင့် ဘာသာစကားကို ကိုင်တွယ်ရန် *recurrent networks* နှင့် *transformers* ကဲ့သို့သော Neural Network အမျိုးအစားအသစ်များကို မိတ်ဆက်ရန်လိုအပ်သည်။ +ကျွန်တော်တို့ နောက်ဆုံးတွင်တော့ တ(tabular)ဒေတာနဲ့ ပုံရိပ်များအတွက် နယူးရယ်နက်ရွက်အသုံးပြုပြီး အလုပ်လုပ်နည်းများကိုသင်ခဲ့ပြီးသားဖြစ်တယ်။ ဒီထက်ကွာခြားချက်က စာသားမှာ အရွယ်အစား မတူညီသော လိုက်တစ်ခုဖြစ်ပြီး၊ ပုံရိပ်မှာတော့ အရင်ကသိထားတဲ့ input အရွယ်အစားရှိတယ်။ Convolutional network တွေက input data မှတစ်ဆင့် ပုံစံများကို ထုတ်ယူနိုင်ပေမဲ့ စာသားထဲမှာ ပုံစံတွေ ပိုရှုပ်ထွေးတယ်။ ဥပမာ- ငြင်းဆန်မှုအုပ်စုက ဘာသာရပ်ခေါင်းစဉ်ထဲက နေရာကွာခြားမှု ကြီးတဲ့ စကားဝိုင်းတွေဖြစ်နေတာကို ကျွန်တော်တို့တွေ များသောအားဖြင့် တူညီတဲ့ ပုံစံတစ်ခုလို သတ်မှတ်ရတယ် (ဥပမာ- *ကျွန်တော် မုန့်သုတ် oranges မနှစ်သက်ပါ၊* နှင့် *ကျွန်တော် အဲဒီသေးငယ်ရောင်စုံထမင်းသုတ် oranges မနှစ်သက်ပါ*)။ ဒါကြောင့် ဘာသာစကားကို ကိုင်တွယ်ရာမှာ *recurrent networks* နဲ့ *transformers* ကဲ့သို့ နယူးရယ်နက်ရွက်အသစ်များ ထည့်သွင်းရမယ်။ -## Libraries ကို Install လုပ်ခြင်း +## စာကြည့်တိုက်များ ထည့်သွင်းခြင်း -ဤသင်ခန်းစာကို local Python installation တွင် run လုပ်မည်ဆိုပါက NLP အတွက်လိုအပ်သော libraries များကို အောက်ပါ command များဖြင့် install လုပ်ရန်လိုအပ်နိုင်သည်။ +သင်ခန်းစာကို အိမ်ပြင် Python ထည့်သွင်းထားတဲ့ စနစ်တွင် စတင်သုံးမယ် ဆိုရင် NLP အတွက် လိုအပ်သော စာကြည့်တိုက်များအားလုံးကို အောက်ပါ အမိန့်များဖြင့် ထည့်သွင်းရမှာ ဖြစ်တယ်။ **PyTorch အတွက်** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.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) တွင် စမ်းသပ်နိုင်သည်။ +> [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) တွင် TensorFlow နှင့် အတူ NLP ကို စမ်းသပ်နိုင်ပါသည်။ -## GPU သတိပေးချက် +## GPU အသိပေးချက် -ဤအပိုင်းတွင် မော်ဒယ်များကို training လုပ်ရန် အချို့သော ဥပမာများတွင် ကြီးမားသော မော်ဒယ်များကို training လုပ်မည်ဖြစ်သည်။ -* **GPU-enabled ကွန်ပျူတာကို အသုံးပြုပါ**: ကြီးမားသောမော်ဒယ်များနှင့်အလုပ်လုပ်သောအခါ စောင့်ဆိုင်းချိန်များကို လျှော့ချရန် GPU-enabled ကွန်ပျူတာတွင် notebooks များကို run လုပ်ရန် အကြံပြုပါသည်။ -* **GPU memory အကန့်အသတ်များ**: GPU တွင် run လုပ်ခြင်းသည် ကြီးမားသောမော်ဒယ်များကို training လုပ်သောအခါ GPU memory ကုန်ဆုံးမှုဖြစ်နိုင်သည်။ -* **GPU memory သုံးစွဲမှု**: Training လုပ်စဉ် GPU memory သုံးစွဲမှုသည် minibatch size အပါအဝင် အမျိုးမျိုးသောအချက်များပေါ်မူတည်သည်။ -* **Minibatch size ကို လျှော့ချပါ**: GPU memory ပြဿနာများနှင့် ရင်ဆိုင်ပါက minibatch size ကို လျှော့ချရန် code တွင် ပြင်ဆင်ပါ။ -* **TensorFlow GPU memory ဖြန့်ချိမှု**: TensorFlow ၏ အဟောင်းဗားရှင်းများသည် Python kernel တစ်ခုတွင် မော်ဒယ်များစွာကို training လုပ်သောအခါ GPU memory ကို မှန်ကန်စွာ ဖြန့်ချိမထားနိုင်ပါ။ GPU memory သုံးစွဲမှုကို ထိန်းချုပ်ရန် TensorFlow ကိုလိုအပ်သည့်အခါ GPU memory ကိုသာ allocate လုပ်ရန် configure လုပ်နိုင်သည်။ -* **Code ထည့်သွင်းခြင်း**: TensorFlow ကိုလိုအပ်သည့်အခါ GPU memory allocation ကိုသာ ကြီးထွားစေရန် notebooks တွင် အောက်ပါ code ကို ထည့်သွင်းပါ: +ဒီအပိုင်း၌ အချို့ ဥပမာများတွင် အလွန်ကြီးမားသော မော်ဒယ်များကို လေ့ကျင့်မယ်။ +* **GPU ပါရှိသော ကွန်ပျူတာ အသုံးပြုပါ** - ကြီးမားသော မော်ဒယ်များကို အသုံးပြုရာ၌ စောင့်ဆိုင်းမှုအချိန် လျှော့ချရန် GPU ပါရှိသော ကွန်ပျူတာမှာ notebook များ ပုံမှန်ထိန်းသိမ်းသွားခြင်း စနစ်ဖြစ်ပါသည်။ +* **GPU မှတ်ဉာဏ် ကန့်သတ်ချက်** - ကြီးမားသော မော်ဒယ်များ လေ့ကျင့်ရာ၌ GPU မှတ်ဉာဏ် ကန့်သတ်မှု ကြုံတွေ့ရနိုင်သည်။ +* **GPU မှတ်ဉာဏ် စားသုံးမှု** - လေ့ကျင့်မှုကာလ GPU မှတ်ဉာဏ် အသုံးပြုမှုသည် မတူညီသော အချက်အလက်ပါဝင်မှုများ၊ အထူးသဖြင့် minibatch အရွယ်အစားပေါ် မူတည်သည်။ +* **minibatch အရွယ်အစား လျှော့ချရန်** - GPU မှတ်ဉာဏ် ပြဿနာများ ကြုံတွေ့ခဲ့ရင် သင့်ဒေတာ အပိုင်းအရွယ်အစားကို လျှော့ချပြီး သုံးသင့်သည်။ +* **TensorFlow GPU မှတ်ဉာဏ် ပြန်လည်လွှတ်ပေးမှု** - TensorFlow ဗားရှင်းဟောင်းများတွင် Python kernel တစ်ခုထဲ အတွင်း မော်ဒယ်များစွာ လေ့ကျင့်လျှင် GPU မှတ်ဉာဏ် မမှန်ကန်စွာ လွှတ်မပေးနိုင်ပါ။ GPU မှတ်ဉာဏ်အသုံးပြုမှု ကို ထိန်းချုပ်ရန် TensorFlow ကို GPU မှတ်ဉာဏ် ယူစရာလိုအပ်ချိန်တွင်သာ ယူမည့် အနေအထား သို့ စီစဉ်နိုင်သည်။ +* **ကုတ် ထည့်သွင်းခြင်း** - TensorFlow ကို GPU မှတ်ဉာဏ် မလိုအပ်သေးသောအချိန်တွင်သာ ယူရန် သင့် notebook များတွင် အောက်ပါ ကုတ်ကို ထည့်သွင်း၍ စီမံခန့်ခွဲနိုင်သည်။ ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Classic ML အမြင်မှ NLP ကို လေ့လာလိုပါက [ဤသင်ခန်းစာများ](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ကို သွားရောက်ကြည့်ရှုပါ။ +ရိုးရာ စက်သင်ယူမှု အမြင်မှ NLP ကိုလေ့လာလိုပါက [ဤသင်ခန်းစာ စုံတွဲ](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) သို့ သွားရောက်ကြည့်ရှုနိုင်သည်။ -## ဤအပိုင်းတွင် -ဤအပိုင်းတွင် ကျွန်ုပ်တို့သည် အောက်ပါအကြောင်းအရာများကို လေ့လာမည်ဖြစ်သည်- +## ဒီအပိုင်း၌ +ဒီအပိုင်းမှာ ကျွန်တော်တို့ သင်ကြားသွားမယ့် အကြောင်းများမှာ - -* [စာသားကို tensors အဖြစ် ကိုယ်စားပြုခြင်း](13-TextRep/README.md) -* [Word Embeddings](14-Emdeddings/README.md) -* [ဘာသာစကားမော်ဒယ်ရေးခြင်း](15-LanguageModeling/README.md) -* [Recurrent Neural Networks](16-RNN/README.md) -* [Generative Networks](17-GenerativeNetworks/README.md) -* [Transformers](18-Transformers/README.md) +* [စာသားကို tensor အဖြစ် ကိုယ်စားပြုခြင်း](13-TextRep/README.md) +* [စကားလုံးထည့်သွင်းခြင်း](14-Emdeddings/README.md) +* [ဘာသာစကားပုံစံဖန်တီးခြင်း](15-LanguageModeling/README.md) +* [ကျန်ကြွယ်လာသော နယူးရယ်နက်ရွက်များ](16-RNN/README.md) +* [ဖန်တီးရေးကွန်ယက်များ](17-GenerativeNetworks/README.md) +* [Transformer များ](18-Transformers/README.md) -**အကြောင်းကြားချက်**: -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် ရှုလေ့လာသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file +--- + + +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ + \ No newline at end of file diff --git a/translations/my/lessons/6-Other/23-MultiagentSystems/README.md b/translations/my/lessons/6-Other/23-MultiagentSystems/README.md index 796f2516..4cb7098e 100644 --- a/translations/my/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/my/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,38 @@ -# Multi-Agent Systems +# မျိုးစုံဧရာအေဂျင့်စနစ်များ -တစ်ခုတည်းသောနည်းလမ်းဖြင့် ဉာဏ်ရည်ရှိမှုကို ရရှိစေခြင်းသည် **ပေါ်ပေါက်မှု** (သို့မဟုတ် **synergetic**) နည်းလမ်းအပေါ် အခြေခံထားသည်။ ၎င်းသည် အလွန်ရိုးရှင်းသော agent များစွာ၏ ပေါင်းစပ်အပြုအမူသည် စနစ်တစ်ခုလုံး၏ ပိုမိုရှုပ်ထွေးသော (သို့မဟုတ် ဉာဏ်ရည်ရှိသော) အပြုအမူကို ဖြစ်ပေါ်စေသည်ဟု ဆိုသည်။ သီအိုရီအရ၊ ၎င်းသည် [Collective Intelligence](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentism](https://en.wikipedia.org/wiki/Global_brain) နှင့် [Evolutionary Cybernetics](https://en.wikipedia.org/wiki/Global_brain) ၏ မူဝါဒများအပေါ် အခြေခံထားသည်။ ၎င်းတို့က အဆင့်မြင့်စနစ်များသည် အဆင့်နိမ့်စနစ်များမှ သင့်တော်စွာ ပေါင်းစည်းခြင်းဖြင့် တန်ဖိုးတစ်ခုခုကို ထပ်မံရရှိနိုင်သည်ဟု ဆိုသည် (*principle of metasystem transition* ဟုခေါ်သည်)။ +ဉာဏ်ရည်ရရှိရန်ဖြစ်နိုင်သောနည်းလမ်းတစ်ခုမှာ **မျိုးစုံပေါ်ပေါက်မှု** (သို့) **ပူးပေါင်းဆောင်ရွက်မှု** နည်းလမ်းဖြစ်ပြီး၊ အလယ်အလတ်လွယ်ကူသောအေဂျင့်များစွာ၏ ပေါင်းစပ်လှုပ်ရှားမှုသည် စနစ်တစ်ခုလုံး၏ ပိုမိုရှုပ်ထွေး (သို့) ဉာဏ်ရည်ရှိသော လှုပ်ရှားမှုကို ဖြစ်ပေါ်စေနိုင်ကြောင်းအခြေခံသည်။ ယဉ်ကျေးတန်ဖိုးအနေဖြင့်၊ ၎င်းသည် [စုစုပေါင်း ဉာဏ်ရည်](https://en.wikipedia.org/wiki/Collective_intelligence), [ပေါ်ပေါက်မှု သဘောတရား](https://en.wikipedia.org/wiki/Global_brain) နှင့် [အင်အားသဘောတရား ဖြင့် တိုးတက်တည်ဆောက်မှု](https://en.wikipedia.org/wiki/Global_brain) များ၏အခြေခံအယူအဆများအပေါ်တွင် အခြေခံသည်၊ ၎င်းများမှာ အဆင့်မြင့်စနစ်များသည် အဆင့်နိမ့်စနစ်များမှ သင့်တော်စွာပေါင်းစပ်ကာ တန်ဖိုးတချို့ရရှိကြောင်း ပြောကြားသည် (ကိုးကားအားဖြင့် *အမျိုးမျိုး စနစ်ရဲ့ ပြောင်းလဲမှု သဘောတရား*) ။ -## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ai/quiz/45) +## [မကြာခဏ မေးခွန်းမေးစရာ](https://ff-quizzes.netlify.app/en/ai/quiz/45) -**Multi-Agent Systems** ၏ လမ်းကြောင်းသည် 1990 ခုနှစ်များတွင် အင်တာနက်နှင့် ဖြန့်ဖြူးထားသော စနစ်များ၏ တိုးတက်မှုအဖြစ် AI တွင် ပေါ်ပေါက်လာခဲ့သည်။ AI စာအုပ်များထဲမှ တစ်ခုဖြစ်သော [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) သည် Multi-agent systems ၏ ရှုထောင့်မှ classical AI ကို အဓိကထား၍ ရေးသားထားသည်။ +**မျိုးစုံဧရာအေဂျင့်စနစ်များ** ၏ ဦးတည်မှုပုံစံကို 1990s တွင် အင်တာနက်နှင့် ဖြန့်ဝေထားသည့်စနစ်များတိုးတက်မှုဖြစ်လာခြင်းကို တုံ့ပြန်မှုအဖြစ် AI တွင် ဖော်ထုတ်လာကြောင်းသိရသည်။ ရိုးရာ AI သင်ခန်းစာစာအုပ်တစ်အုပ်ဖြစ်သော [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) မှာ ပုံမှန် AI ကို မျိုးစုံအေဂျင့်စနစ်များ၏ မြင်ကွင်းမှ ကြည့်ခိုင်းထားသည်။ -Multi-agent နည်းလမ်း၏ အဓိကမှာ **Agent** ဆိုသော အယူအဆဖြစ်သည်။ Agent သည် **environment** တစ်ခုတွင် နေထိုင်ပြီး ၎င်းကို သိရှိနိုင်ပြီး လုပ်ဆောင်နိုင်သည်။ ၎င်းသည် အလွန်ကျယ်ပြန့်သော အဓိပ္ပာယ်ဖြစ်ပြီး agent များအမျိုးအစားများစွာ ရှိနိုင်သည်- +မျိုးစုံအေဂျင့်နည်းလမ်း၏ အဓိကအယူအဆမှာ **အေဂျင့်** ဟု ခေါ်သည့်အရာဖြစ်ပြီး၊ ၎င်းသည် ၎င်း၏ **ပတ်ဝန်းကျင်** တွင် တည်ရှိကာ ကြည့်ရှုနိုင်ပြီး လှုပ်ရှားဆောင်ရွက်နိုင်သော အရာတစ်ခုဖြစ်သည်။ ၎င်းသည် ကျယ်ပြန့်သော အဓိပ္ပာယ်ဖြစ်သဖြင့် အေဂျင့်အမျိုးအစားများနှင့် အမျိုးအစားအတွဲများ များစွာရှိနိုင်သည်။ -* **Reason** လုပ်နိုင်စွမ်းအပေါ် အခြေခံ၍: - - **Reactive** agents သည် ရိုးရှင်းသော request-response အပြုအမူကိုသာ ရှိသည်။ - - **Deliberative** agents သည် logical reasoning သို့မဟုတ် planning စွမ်းရည်များကို အသုံးပြုသည်။ -* Agent code ကို အကောင်အထည်ဖော်ရာနေရာအပေါ် အခြေခံ၍: - - **Static** agents သည် သီးသန့် network node တွင် လုပ်ဆောင်သည်။ - - **Mobile** agents သည် network node များအကြား code ကို ရွှေ့နိုင်သည်။ -* အပြုအမူအပေါ် အခြေခံ၍: - - **Passive agents** သည် ရည်ရွယ်ချက်မရှိပါ။ ၎င်းတို့သည် အပြင်ပန်းအတုအယောင်များကို တုံ့ပြန်နိုင်သော်လည်း ကိုယ်တိုင် လှုပ်ရှားမှုများကို စတင်မလုပ်ပါ။ - - **Active agents** သည် ရည်ရွယ်ချက်တစ်ခုခုကို လိုက်နာသည်။ - - **Cognitive agents** သည် ရှုပ်ထွေးသော planning နှင့် reasoning ကို ပါဝင်သည်။ +* ၎င်းတို့၏ အတွေးအမြင်စွမ်းရည်ပေါ်မူတည်၍ - + - **ပြန်ကြောင်းအဖြေ ပြုလုပ်သူ (Reactive)** အေဂျင့်များသည် ရိုးရှင်းသော တုံ့ပြန်မှုအမျိုးအစား ဖြစ်တတ်သည် + - **စဉ်းစားရန်တုံ့ပြန်သူ (Deliberative)** အေဂျင့်များသည် တစ်စုံတစ်ဦး အတွေးအမြင် အသုံးပြုခြင်း ( သို့) စီမံချက်များကို အသုံးပြုသည် +* အေဂျင့်၏ ကိုယ်ပိုင် ကုဒ်ကို မည်သည့်နေရာတွင် အကောင်အထည်ဖော်သည်ကို မူတည်၍ - + - **တည်နေရာတစ်နေရာတွင် အလုပ်လုပ်သူ (Static)** အေဂျင့်များသည် အော်ပရိတ်နက်ဝပ်စ်အုပ်စုတစ်ခုတွင်သာ အလုပ်လုပ်သည် + - **မျိုးရိုးရှာမှု ရှိ သော (Mobile)** နေရာများအကြား ကုဒ်ကို ရွေ့နိုင်သော အေဂျင့်များ +* ၎င်းတို့၏ လုပ်ဆောင်မှုအပေါ်မူတည်၍ - + - **ပေးအပ်မှုမရှိသည့် (Passive)** အေဂျင့်များတွင် ရည်မှန်းချက်များမရှိ။ ၎င်းတို့သည် ပြင်ပ လှုပ်ရှားမှုများအပေါ် တုံ့ပြန်နိုင်သော်လည်း ကိုယ့်အလှုပ်အရှားကို မစစ်ဆင်နိုင်။ + - **ပါဝင်ဆောင်ရွက်သူ (Active)** အေဂျင့်များတွင် ရည်မှန်းချက် ရှိပြီး ၎င်းတို့ကို လိုက်လံဆောင်ရွက်သည်။ + - **သဘောတရားအသုံးပြုသူ (Cognitive)** အေဂျင့်များတွင် ထူးခြားပြီး စီမံချက်ရေးဆွဲခြင်းနှင့် အတွေးအမြင် ပါဝင်သည်။ -Multi-agent systems များကို ယနေ့ခေတ်တွင် အပလီကေးရှင်းများစွာတွင် အသုံးပြုနေသည်- +ယနေ့တွင် မျိုးစုံအေဂျင့်စနစ်များကို အများအပြား လုပ်ငန်းများတွင် အသုံးပြုကြသည်။ -* ဂိမ်းများတွင် non-player characters များသည် AI တစ်ခုခုကို အသုံးပြုပြီး ဉာဏ်ရည်ရှိသော agent များအဖြစ် သတ်မှတ်နိုင်သည်။ -* ဗီဒီယိုထုတ်လုပ်မှုတွင် လူအုပ်များပါဝင်သော ရှုပ်ထွေးသော 3D ရှုခင်းများကို multi-agent simulation အသုံးပြု၍ typically rendering လုပ်သည်။ -* စနစ်များကို မော်ဒယ်တူလုပ်ဆောင်ရာတွင် multi-agent နည်းလမ်းကို ရှုပ်ထွေးသော မော်ဒယ်၏ အပြုအမူကို simulation လုပ်ရန် အသုံးပြုသည်။ ဥပမာအားဖြင့် multi-agent နည်းလမ်းကို COVID-19 ရောဂါကူးစက်မှုကို ကမ္ဘာတစ်ဝှမ်းတွင် ခန့်မှန်းရန် အောင်မြင်စွာ အသုံးပြုခဲ့သည်။ ထိုနည်းလမ်းကို မြို့တွင်း traffic ကို မော်ဒယ်တူလုပ်ဆောင်ရန် အသုံးပြုနိုင်ပြီး traffic စည်းကမ်းများပြောင်းလဲမှုအပေါ် ၎င်း၏ တုံ့ပြန်မှုကို ကြည့်နိုင်သည်။ -* ရှုပ်ထွေးသော automation စနစ်များတွင် တစ်ခုချင်းစီသော device သည် independent agent အဖြစ် လုပ်ဆောင်နိုင်ပြီး စနစ်တစ်ခုလုံးကို ပိုမိုခိုင်မာစေသည်။ +* ဂိမ်းများတွင် မဟာစာပါယ်များစွာသုံးသောအနေဖြင့် AI အနည်းငယ်ပါဝင်သည်နှင့် ဉာဏ်ရည်ရှိသော အေဂျင့်အဖြစ် ယူဆနိုင်သည်။ +* ဗီဒီယို ထုတ်လုပ်မှုများတွင် အုပ်စုများပါဝင်သော ရှုပ်ထွေးသော 3D အမြင်များကို ဖန်တီးရန် မျိုးစုံအေဂျင့် မော်ဒယ်လုပ်ငန်းသုံးသည်။ +* စနစ် မော်ဒယ်ရေးရာများတွင် မျိုးစုံအေဂျင့် နည်းလမ်းဖြင့် ရှုပ်ထွေးသော မော်ဒယ်၏ လုပ်ရပ်များကို မော်ကွန်းပြုလုပ်သည်။ ဥပမာ တစ်ခုမှာ COVID-19 ရောဂါဖြန့်ပြားမှုကို ကမ္ဘာတစ်ဝှမ်း၌ ခန့်မှန်းခဲ့သည့်အခါ တွေ့ရှိခဲ့သည်။ ညီမျှသောနည်းလမ်းဖြင့် မြို့တော်ယာဉ်လမ်းကြောင်းများကို မော်ဒယ်ရေးပြီး ယာဉ်အလှုပ်အရှားများအပေါ် တရားဥပဒေပြောင်းလဲမှုတွေ့သော လှိုင်းထွက်မှုကို ကြည့်ရှုနိုင်သည်။ +* ရှုပ်ထွေးသော အလိုအလျောက်စနစ်များတွင် ကိရိယာတစ်ခုချင်းစီသည် လွတ်လပ်သော အေဂျင့်တစ်ခုအဖြစ် လုပ်ဆောင်နိုင်ပြီး စနစ်တစ်ခုလုံးကို တစ်ခုတည်းခြင်းမှ ကင်းလွတ်ပြီး ခိုင်မာစေသည်။ -ကျွန်ုပ်တို့သည် multi-agent systems အကြောင်းကို အလွန်နက်ရှိုင်းစွာ မလေ့လာပါ၊ သို့သော် **Multi-Agent Modeling** ၏ ဥပမာတစ်ခုကို စဉ်းစားပါမည်။ +မျိုးစုံအေဂျင့်စနစ်များအကြောင်း အနက်ကြီးထဲသို့ မဝင်သွားပါဘဲ၊ **မျိုးစုံအေဂျင့် မော်ဒယ်တွက်ချက်ခြင်း** တစ်ခုကို နမူနာပြကြမည်။ ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) သည် [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programming language ၏ ပြင်ဆင်ထားသော version အပေါ် အခြေခံထားသော multi-agent modeling environment ဖြစ်သည်။ ၎င်းသည် programming concepts များကို ကလေးများကို သင်ကြားရန် ဖန်တီးထားပြီး **turtle** ဟုခေါ်သော agent ကို ထိန်းချုပ်နိုင်သည်။ turtle သည် trace ကို ကျန်ထားပြီး ရွှေ့နိုင်သည်။ ၎င်းသည် agent ၏ အပြုအမူကို နားလည်ရန် ရှုပ်ထွေးသော geometric figures များကို ဖန်တီးရန် visual နည်းလမ်းတစ်ခုဖြစ်သည်။ +[NetLogo](https://ccl.northwestern.edu/netlogo/) သည် ပြင်ဆင်ထားသော [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) ပrogramming ဘာသာစကားအခြေခံ၍ ဆောက်ထားသော မျိုးစုံအေဂျင့် မော်ဒယ်တွက်ချက်ပတ်ဝန်းကျင်ဖြစ်သည်။ ၎င်း ဘာသာစကားကို ကလေးများအတွက် ပရိုဂရမ်းမင်း အယူအဆများသင်ကြားရန် ဖန်တီးထားပြီး၊ **kura** ဟုခေါ်သော အေဂျင့်ကို ထိန်းချုပ်နိုင်သည်၊ kura သည် လှည့်စားပြီး လမ်းလျှောက်နိုင်သည်။ ၎င်းသည် ချိတ်ဆက်ထားသော သံတမန်များဖန်တီးရန် အခြေခံဖောင် အနေဖြင့် အသုံးပြုနိုင်သည်။ -NetLogo တွင် `create-turtles` command ကို အသုံးပြု၍ turtle များစွာကို ဖန်တီးနိုင်သည်။ ထို့နောက် turtle များအားလုံးကို လုပ်ဆောင်မှုတစ်ခုခုကို လုပ်ဆောင်ရန် command ပေးနိုင်သည် (အောက်ပါဥပမာတွင် - 10 point forward ရွှေ့ရန်): +NetLogo တွင် `create-turtles` ကမ်းမလေးကို အသုံးပြု၍ kura များစွာ ဖန်တီးနိုင်သည်။ ထိုနောက် kura များအားလုံးကို လုပ်ဆောင်ရန်အမိန့် ပေးနိုင်သည် (နမူနာတွင် - ၁၀ ချက်အထိ ရှေ့သို့ရွေ့သည်)။ ``` create-turtles 10 @@ -41,39 +41,39 @@ ask turtles [ ] ``` -တစ်ချို့သော turtle များကို `ask` command ဖြင့် အုပ်စုဖွဲ့၍ လုပ်ဆောင်မှုများကို လုပ်ဆောင်နိုင်သည်။ ဥပမာအားဖြင့် တစ်ခုချင်းစီသော point ၏ အနီးအနားရှိ turtle များကို command ပေးနိုင်သည်။ ထို့အပြင် `breed [cats cat]` command ကို အသုံးပြု၍ turtle များကို *breeds* အမျိုးအစားများဖြင့် ဖန်တီးနိုင်သည်။ ဤနေရာတွင် `cat` သည် breed ၏ အမည်ဖြစ်ပြီး singular နှင့် plural စကားလုံးနှစ်ခုစလုံးကို သတ်မှတ်ရန် လိုအပ်သည်။ command များက ပိုမိုရှင်းလင်းစေရန် အမျိုးအစားကွဲပြားမှုကို အသုံးပြုသည်။ +တကယ်တော့ kura အားလုံးတူတူ လုပ်ဆောင်ကြတာ မစိတ်ဝင်စားဖွယ် မဟုတ်ပါလို့ `ask` ဖြင့် kura အုပ်စုတစ်စုကို မေးမြန်းနိုင်သည်၊ ဥပမာ အချို့ kura များသည် အတိအကျ တစ်နေရာလည်းအနီးအစပ်တွင်ရှိသည် ဟု အမှတ်အသားပြုနိုင်သည်။ လဲပြောင်းနိုင်သော kura အမျိုးအစားများကို `breed [cats cat]` ကမ်းမလေးဖြင့်ဖန်တီးနိုင်သည်။ ဒီမှာ `cat` သည် အမျိုးအစား အမည်ဖြစ်ပြီး၊ တစ်ခုချင်းနှင့် များစုဖြစ်စေရန် ဖော်ပြရပါမည်၊ အကြောင်းက ကမ်းမလေး အမျိုးမျိုးသည် ဖော်ပြပုံကွဲပြားမှု ရှိပါသည်။ -> ✅ NetLogo language ကို သင်ယူရန် ကျွန်ုပ်တို့ မသွားပါ။ သို့သော် [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) ကို သွားရောက်လေ့လာနိုင်သည်။ +> ✅ NetLogo ဘာသာစကားကို မပေါက်ဖွားရန် ကြိုးစားတော့မည်မဟုတ်ပါ - ပိုမိုသိရှိလိုသူများအတွက် ထူးချွန်သော [အစွမ်းထက် စတင်သင်ကြားရေး NetLogo အဘိဓါန်](https://ccl.northwestern.edu/netlogo/bind/) ကို တွေ့ရှိနိုင်သည်။ -NetLogo ကို [download](https://ccl.northwestern.edu/netlogo/download.shtml) လုပ်ပြီး install လုပ်ကာ စမ်းသပ်နိုင်သည်။ +NetLogo ကို [ဒေါင်းလုဒ်](https://ccl.northwestern.edu/netlogo/download.shtml) လုပ်ပြီး တပ်ဆင်ပြီး စမ်းသပ်နိုင်သည်။ -### Models Library +### မော်ဒယ်များ စုစည်းရာစာရင်း -NetLogo ၏ အထူးကောင်းမွန်မှုမှာ ၎င်းတွင် စမ်းသပ်နိုင်သော working models များ library ပါဝင်သည်။ **File → Models Library** သို့ သွားပါ၊ ၎င်းတွင် models အမျိုးအစားများစွာ ရွေးချယ်နိုင်သည်။ +NetLogo ၏ ပိုမိုကောင်းမွန်သော အချက်တစ်ခုမှာ စမ်းသပ်နိုင်သော အသုံးပြုပုံ မော်ဒယ် စာကြည့်တိုက်ပါရှိခြင်း ဖြစ်သည်။ **File → Models Library** ကို ဝင်ရောက်ပြီး မော်ဒယ် များစွာရှိသည့် အမျိုးအစားများကို ရွေးချယ်နိုင်သည်။ NetLogo Models Library -> Dmitry Soshnikov ၏ models library screenshot +> Dmitry Soshnikov မှ လက်ခံရရှိသော မော်ဒယ် စာကြည့်တိုက်၏ ရုပ်ပုံတစ်ခု -models တစ်ခုကို ဖွင့်နိုင်သည်၊ ဥပမာအားဖြင့် **Biology → Flocking** ကို ဖွင့်ပါ။ +မော်ဒယ်တစ်ခု ဖွင့်ကြည့်နိုင်ပြီး ဥပမာအားဖြင့် **Biology → Flocking** ကို ရွေးချယ်နိုင်သည်။ -### Main Principles +### အဓိက ယဥ်ကျေးမှုပဲြ -model ကို ဖွင့်ပြီးနောက် NetLogo ၏ အဓိက screen သို့ ရောက်ရှိသည်။ ဤနေရာတွင် finite resources (grass) ရှိသော wolves နှင့် sheep ၏ population ကို ဖော်ပြသော sample model တစ်ခုကို တွေ့နိုင်သည်။ +မော်ဒယ်ဖွင့်သည်နှင့် စနစ်တန်းတွင် NetLogo ဖြင့် ပင်မ စခန်းသို့ ရောက်ရှိမည်။ ၎င်းမှာ အငွေ့အမြစ်စနစ်ရှိပြီး သားနားချင့်နှင့် ပြေးရဲတို့၏ လူဦးရေသတ်မှတ်ချက် ပါရှိသော မော်ဒယ်နမူနာဖြစ်သည်။ ![NetLogo Main Screen](../../../../../translated_images/my/NetLogo-Main.32653711ec1a01b3.webp) -> Dmitry Soshnikov ၏ screenshot +> Dmitry Soshnikov မှ ရိုက်ကူးထားသော ရုပ်ပုံ -ဤ screen တွင် တွေ့နိုင်သည်- +ဒီ စခရင်တွင်၊ တွေ့နိုင်သော အရာများမှာ - -* **Interface** အပိုင်းတွင်: - - Agent များနေထိုင်သော main field - - Buttons, sliders စသည်ဖြင့် controls များ - - Simulation ၏ parameters များကို ဖော်ပြရန် graphs -* **Code** tab တွင် NetLogo program ကို ရေးသားရန် editor ပါဝင်သည်။ +* **အင်တာဖေ့စ် (Interface)** ကိုယ်အပိုင်းမှာ - + - အေဂျင့်များရာ မြေပြင်အဓိက ကွင်း + - ခလုတ်များ၊ တဟောင်းလျှော့ခြင်းများ စသည့် ထိန်းချုပ်မှုများ + - စမ်းသပ်မှု ပရမတ်တာများပြပါ Graph များ +* **ကုဒ် (Code)** အစိတ်အပိုင်းမှာ NetLogo ပရိုဂရမ်း ရေးရန်အတွက် အယ်ဒီတာပါရှိသည် -Interface တွင် **Setup** button ပါဝင်ပြီး simulation state ကို initialize လုပ်သည်။ **Go** button သည် execution ကို စတင်သည်။ ၎င်းတို့ကို code တွင် အောက်ပါ handler များဖြင့် ထိန်းချုပ်သည်- +များသောအားဖြင့် အင်တာဖေ့စ်တွင် **Setup** ခလုတ်ရှိပြီး စမ်းသပ်မှုအဆင့် စတင်ရန်တာဝန်ယူပြီး၊ **Go** ခလုတ်က စတင် လည်ပတ်စေသည်။ ၎င်းတို့အတွက်နောက်တွင် အောက်ပါ ကုဒ်အတိုင်း handler အား စီမံထားသည်။ ``` to go [ @@ -81,52 +81,79 @@ to go [ ] ``` -NetLogo ၏ ကမ္ဘာသည် အောက်ပါ objects များဖြင့် ဖွဲ့စည်းထားသည်- +NetLogo ၏ ကမ္ဘာမှာ အောက်ပါ အရာများပါ၀င်သည် - -* **Agents** (turtles) သည် field အတွင်း ရွှေ့နိုင်ပြီး တစ်ခုခုလုပ်ဆောင်နိုင်သည်။ `ask turtles [...]` syntax ကို အသုံးပြု၍ agent များအား command ပေးနိုင်သည်။ brackets အတွင်း code ကို *turtle mode* တွင် agent များအားလုံးက လုပ်ဆောင်သည်။ -* **Patches** သည် field ၏ square areas ဖြစ်ပြီး agent များနေထိုင်သည်။ patch အပေါ်ရှိ agent များအားလုံးကို ရည်ညွှန်းနိုင်သည်၊ patch color များနှင့် properties များကို ပြောင်းနိုင်သည်။ `ask patches` ကို အသုံးပြု၍ patch များကို တစ်ခုခုလုပ်ဆောင်စေနိုင်သည်။ -* **Observer** သည် unique agent ဖြစ်ပြီး ကမ္ဘာကို ထိန်းချုပ်သည်။ Button handler များကို *observer mode* တွင် လုပ်ဆောင်သည်။ +* **အေဂျင့်များ (turtles)** စုစုပေါင်း ကွင်းများပေါ်တွင် လှုပ်ရှားပြီး လုပ်ဆောင်သည်။ `ask turtles [...]` စနစ်ကိုအသုံး ပြု၍ အေဂျင့်များကို အမိန့်ပေးပြီး bracket ဗဟိုတည်နေရာတွင် ရေးထားသည့်ကုဒ်များကို တဖြည်းဖြည်း စီရင်ထားသော *turtle mode*မှာ လုပ်ဆောင်ကြသည်။ +* **Patches** ဟာ ကွင်းတွင် စတုရန်း အကျယ်ရှိသောနယ်မြေများဖြစ်ပြီး အေဂျင့်များ စွန့်ဝင်နေရာဖြစ်သည်။ တူညီသော patch တွင်ရှိသောအေဂျင့်များကို ဆက်သွယ်နိုင်ပြီး၊ patch အရောင်များ ပုံသေနည်းများပြင်နိုင်သည်။ `ask patches` ကိုလည်း အသုံးပြုနိုင်သည်။ +* **Observer** ဆိုသည်မှာ ကမ္ဘာကို ထိန်းချုပ်သော ထူးခြားသော အေဂျင့်ဖြစ်ပြီး။ ခလုတ်များ handler တွေကို *observer mode* တွင် လုပ်ဆောင်သည်။ -> ✅ Multi-agent environment ၏ အလှတရားမှာ turtle mode သို့မဟုတ် patch mode တွင် လုပ်ဆောင်သော code ကို agent များအားလုံးက တစ်ချိန်တည်းတွင် parallel အဖြစ် လုပ်ဆောင်သည်။ ထို့ကြောင့် agent တစ်ခုချင်းစီ၏ အပြုအမူကို programming လုပ်၍ simulation system တစ်ခုလုံး၏ ရှုပ်ထွေးသော အပြုအမူကို ဖန်တီးနိုင်သည်။ +> ✅ မျိုးစုံအေဂျင့် ပတ်ဝန်းကျင်၏ အားသာချက်မှာ turtle mode နှင့် patch mode တွင် ကုဒ်များကို တပြိုင်နက် စုပေါင်းလည်ပတ်နိုင်ခြင်း ဖြစ်သည်။ ထိုကြောင့် ပုဂ္ဂိုလ်အသီးသီး၏ လုပ်ဆောင်မှုကို အနည်းငယ်ပေါင်းပြီး စနစ်တစ်ခုလုံး၏ ရေရှည်လှုပ်ရှားမှုကို ဖန်တီးနိုင်သည်။ -### Flocking +### Flocking (အုပ်စုတက်ခြင်း) -Multi-agent အပြုအမူ၏ ဥပမာအနေနှင့် **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** ကို စဉ်းစားပါ။ Flocking သည် ဂဏန်းပေါင်းများစွာသော ငှက်များ ပျံသန်းပုံနှင့် ဆင်တူသော ရှုပ်ထွေးသော pattern ဖြစ်သည်။ ၎င်းတို့၏ ပျံသန်းပုံကို ကြည့်ရှုသောအခါ ၎င်းတို့သည် collective algorithm တစ်ခုခုကို လိုက်နာသည်ဟု သို့မဟုတ် *collective intelligence* တစ်ခုခုကို ပိုင်ဆိုင်သည်ဟု ထင်ရသည်။ သို့သော် ဤရှုပ်ထွေးသော အပြုအမူသည် agent တစ်ခုချင်းစီ (ဤကိစ္စတွင် *bird*) သည် အနီးအနားရှိ agent များကိုသာ ကြည့်ရှုပြီး အောက်ပါ ရိုးရှင်းသော စည်းမျဉ်း ၃ ခုကို လိုက်နာသောအခါ ဖြစ်ပေါ်သည်- +မျိုးစုံအေဂျင့် လုပ်ဆောင်မှုနမူနာအနေနဲ့ **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** ကို ဆိုလိုသည်။ Flocking သည် ငှက်အုပ်များပျံသန်းပုံနှင့် များစွာဆင်တူသော ရှုပ်ထွေးသော ပုံစံဖြစ်သည်။ ၎င်းတို့ကို ကြည့်လျှင် သက်သေပြနိုင်သော သဘာဝပေါင်းစပ်နည်း (collective algorithm) သို့မဟုတ် *စုစုပေါင်း ဉာဏ်ရည်* ရှိကြောင်း ထင်မြင်နိုင်သည်။ သို့သော် ယခု ရှုပ်ထွေးသော လုပ်ဆောင်မှုသည် လျှင်မြန်သော ကျော်သွားကာ ပတ်ဝန်းကျင်မှ နီးစပ်နေသော အေဂျင့် အချို့ကိုသာ ကြည့်ရှုကာ အောက်ပါသုံးချက်ကိုလိုက်နာသည်မှာ ဖြစ်သည် - -* **Alignment** - အနီးအနားရှိ agent များ၏ heading ပျမ်းမျှကို လိုက်နာသည်။ -* **Cohesion** - အနီးအနားရှိ agent များ၏ position ပျမ်းမျှကို လိုက်နာသည် (*long range attraction*) -* **Separation** - အခြား agent များနှင့် အလွန်နီးကပ်လာသောအခါ ရှောင်ရှားရန် ကြိုးစားသည် (*short range repulsion*) +* **ညီလာခံမှု (Alignment)** - နီးစပ်သော အေဂျင့်များ၏ ပျမ်းမျှ ဦးတည်ချက်သို့ ဦးတည်စွာ လှိုင်းထွက်အောင် လှမ်းကိုင်သည်။ +* **ပေါင်းစည်းမှု (Cohesion)** - နီးစပ်သော နေရာရပ်တည်ရာတွင် ဦးတည်ခြင်းကြောင့် (*ရှည်လျားသော ဆွဲဆောင်မှု*) +* **ခွဲခြားမှု (Separation)** - အသားတင်သော ငှက်များနီးကပ်လာလျှင် သက်ဆိုင်ရာ အကွာအဝေးကို ထားခိုင်းသော (*တိုအကွာအဝေး ပြန်ဆုတ်မှု*) -Flocking ဥပမာကို run လုပ်ပြီး အပြုအမူကို ကြည့်ရှုနိုင်သည်။ *degree of separation* သို့မဟုတ် *viewing range* ကဲ့သို့သော parameters များကို ပြောင်းလဲနိုင်သည်။ Viewing range ကို 0 သို့ လျှော့ချပါက ငှက်များအားလုံးက မျက်ကန်းဖြစ်ပြီး flocking ရပ်တန့်သည်။ Separation ကို 0 သို့ လျှော့ချပါက ငှက်များအားလုံးက တန်းတစ်ခုအဖြစ် စုပုံသည်။ +flocking နမူနာကို လည်ပတ်ကြည့်နိုင်ပြီး လုပ်ဆောင်မှုကို ကြည့်ရှုနိုင်သည်။ *ခွဲခြားမှု အတတ်နိုင်ဆုံး မှတ်ချက်* အပါအဝင် *ကြည့်ရှု အကွာအဝေး* စသည်တို့ကို စပ်ဆိုင်ပြင်ဆင်နိုင်သည်။ ကြည့်ရှု အကွာအဝေးကို 0 သို့ လျှော့ချပ်လျှင် ၎င်းတို့အားလုံးမှ မမြင်နိုင်တော့မည်နှင့် flocking လည်ပတ်မှု ရပ်တန့်သွားမည်ဟု ရှင်းပြနိုင်သည်။ ခွဲခြားမှုကို 0 သို့ နည်းအောင်ပြုလုပ်လျှင် ငှက်များသည် ညီတန်းလိုက် တစုတဝေး ရှိလာမည်ဖြစ်သည်။ -> ✅ **Code** tab သို့ ပြောင်းပြီး flocking ၏ စည်းမျဉ်း ၃ ခု (alignment, cohesion နှင့် separation) ကို code တွင် ဘယ်နေရာတွင် အကောင်အထည်ဖော်ထားသည်ကို ကြည့်ပါ။ *sight* အတွင်းရှိ agent များကိုသာ ရည်ညွှန်းပုံကို သတိပြုပါ။ +> ✅ **Code** အပိုင်းသို့ ပြောင်းလဲပြီး flocking ၏ သုံးချက် (alignment, cohesion နှင့် separation) သည် ဘယ်နေရာတွင် ကုဒ်ဖြင့် အကောင်အထည်ဖော်ထားကြောင်း ကြည့်ရှုပါ။ ရှေ့တွင်သာ ၎င်းတို့ သက်ဆိုင်ရာ အသီးသီးသော အေဂျင့်များကို ကိုးကားသည်ကို မှတ်သားပါ။ -### Other Models to see +### အခြား မော်ဒယ်တွေကို ကြည့်ရှုရန် -စမ်းသပ်နိုင်သော model များအနက် အခြား model များကို ကြည့်ရှုနိုင်သည်- +စမ်းသပ်ရန် စိတ်၀င်စားစရာ မော်ဒယ်အချို့မှာ - -* **Art → Fireworks** သည် individual fire streams များ၏ collective behavior ကို ဖော်ပြသည်။ -* **Social Science → Traffic Basic** နှင့် **Social Science → Traffic Grid** သည် traffic lights ရှိ/မရှိ 1D နှင့် 2D Grid တွင် မြို့ traffic မော်ဒယ်ကို ဖော်ပြသည်။ Simulation တွင် တစ်စီးချင်းစီသော ကားသည် အောက်ပါ စည်းမျဉ်းများကို လိုက်နာသည်- - - ရှေ့တွင် အခွင့်အာနရှိပါက အရှိန်မြှင့် (အမြင့်ဆုံးအရှိန်အထိ) - - ရှေ့တွင် အတားအဆီးကို တွေ့ပါက အရှိန်လျှော့ (driver ၏ မြင်နိုင်မှုကို ပြောင်းလဲနိုင်သည်) -* **Social Science → Party** သည် cocktail party အတွင်း လူများအုပ်စုဖွဲ့ပုံကို ဖော်ပြသည်။ အုပ်စု၏ အမြန်ဆုံး happiness တိုးတက်မှုကို ရရှိစေသော parameters များကို ရှာဖွေနိုင်သည်။ +* **အနုပညာ → ပန်းပွင့်ပဲပြည့်ခြင်း** သည် တစ်စည်းတည်းသော အပန်းပေါက် ဖောက်ခြင်းကို စုပေါင်းသော လုပ်ဆောင်မှုအဖြစ် ဖော်ပြသည်။ +* **လူမှုရေးသိပ္ပံ → Traffic Basic** နှင့် **လူမှုရေးသိပ္ပံ → Traffic Grid** သည် ၁D နှင့် ၂D grid ပုံစံဖြင့် မြို့ယာဉ်လမ်းနည်းပုံကို ပြသသည်။ ယာဉ်တစ်စီးစက်ရပ်တစ်နေရာတွင် အောက်ပါ စည်းမျဉ်းများလိုက်နာသည်။ + - ၎င်းရှေ့ရှိ နေရာ သိမ်းဆည်းမရှိလျှင် အရှိန်မြှင့်သည် (အမြင့်ဆုံးအမြန်နှုန်းအထိ) + - ရှေ့ရှိ အတားအဆီးတွေ့လျှင် ဘရိတ်ကြပ်သည် (အမြင်အကွာအဝေးကို ပြင်ဆင်နိုင်) +* **လူမှုရေးသိပ္ပံ → Party** သည် လူများသည် မိတ်ဆက်ပွဲတွင် အုပ်စုဖွဲ့၍ စုပေါင်းသင့်သည်ကို ဖော်ပြသည်။ အုပ်စု၏ ပျော်ရွှင်မှု မြန်ဆန်စေရန် ဖြစ်စဉ်များကို တွေ့ရှိနိုင်သည်။ -ဤဥပမာများမှ တွေ့ရသည့်အတိုင်း multi-agent simulations များသည် logic တူ/ဆင်တူသော individual များပါဝင်သော ရှုပ်ထွေးသော စနစ်၏ အပြုအမူကို နားလည်ရန် အလွန်အသုံးဝင်သည်။ ၎င်းကို computer games တွင် [NPCs](https://en.wikipedia.org/wiki/NPC) သို့မဟုတ် 3D animated worlds တွင် agent များကို ထိန်းချုပ်ရန် အသုံးပြုနိုင်သည်။ +ဤနမူနာများမှ တွေ့နိုင်ရာ၊ မျိုးစုံအေဂျင့် စနစ်များသည် တူညီသော် (သို့) ဆင်တူသော ဒီဇိုင်းများကို လိုက်နာသည့် စနစ်တစ်ခု၏ အလုပ်ဆောင်မှုကို နားလည်ရန် အထောက်အကူဖြစ်စေသည်။ မျိုးဆက်ဆက် လွှမ်းခြုံကာ virtual agent များ (ဥပမာ [NPC](https://en.wikipedia.org/wiki/NPC) များ၊ 3D animation ကမ္ဘာများရှိ အေဂျင့်များ) ကို ထိန်းချုပ်ရာတွင်လည်း အသုံးပြုနိုင်သည်။ -## Deliberative Agents +## စဉ်းစားထားသော အေဂျင့်များ -အထက်ဖော်ပြထားသော agent များသည် environment ၏ ပြောင်းလဲမှုများကို algorithm တစ်ခုခုဖြင့် တုံ့ပြန်သော **reactive agents** ဖြစ်သည်။ သို့သော် agent များသည် sometimes reasoning နှင့် planning လုပ်နိုင်ပြီး **deliberative** ဟုခေါ်သည်။ +အထက် ဖော်ပြသည့် အေဂျင့်များသည် ခက်ခဲမှုမရှိဘဲ ပတ်ဝန်းကျင်ပြောင်းလဲမှုများကို တုံ့ပြန်သည့် ရိုးရှင်းဆုံးအေဂျင့်များ ဖြစ်ကြသည်။ ဤလိုအမျိုးကို **ပြန်ကြောင်းအဖြေ ပြုလုပ်သူ** ဟု ခေါ်သည်။ သို့သော် မကြာခဏ အေဂျင့်များသည် အတွေးခြင်းနှင့် စီမံခြင်းတို့ကို သုံး၍ စီစဉ်လှုပ်ရှားမည်ဆိုလျှင် ၎င်းတို့ကို **စဉ်းစားထားသော** ဟု ခေါ်သည်။ -ဥပမာအားဖြင့် human မှ vacation tour ကို book လုပ်ရန် instruction ရရှိသော personal agent ကို စဉ်းစားပါ။ အင်တာနက်တွင် agent များစွာရှိပြီး ၎င်းကို ကူညီနိုင်သည်။ ၎င်းသည် flight များရရှိနိုင်မှုကို စစ်ဆေးရန်၊ hotel price များကို ရက်စွဲအလိုက် ကြည့်ရန်၊ အကောင်းဆုံးစျေးနှုန်းကို ညှိနှိုင်းရန် အခြား agent များကို ဆက်သွယ်ရမည်။ Vacation plan ကို owner မှ အတည်ပြုပြီးနောက် booking လုပ်နိုင်သည်။ +ဥပမာတစ်ခုမှာ လူ့အမိန့်ခံ၍ ခရီးသွားအစီအစဉ် ကို ရယူရန် ပုဂ္ဂိုလ်ရေး အေဂျင့်ဖြစ်သည်။ အင်တာနက်ပေါ်မှာ အကူအညီပေးနိုင်သော အေဂျင့်များစွာ ရှိသည်။ ထိုအေဂျင့်တွင် ခရီးသွားလေကြောင်းပျံသန်းမှုရှိသည့်နေရာများနှင့် ဟိုတယ်စျေးနှုန်းများကို စုံစမ်းရန် နောက်ထပ် အေဂျင့်များကို ဆက်သွယ်ပြီး အကောင်းဆုံး စျေးနှုန်းရရှိရန် ဆွေးနွေးမည်။ ခရီးစီမံချက် အတည်ပြုပြီးနောက်မှာမှာကြားမှုဆောင်ရွက်မည်။ -ဤလုပ်ဆောင်မှုအတွက် agent များသည် **communicate** လုပ်ရန် လိုအပ်သည်။ အောင်မြင်သော communication အတွက် ၎င်းတို့သည်- +၎င်းတို့သည် ဆက်သွယ်ဆက်ဆံရန်လိုအပ်သည်။ သေချာသော ဆက်သွယ်မှုအတွက် အောက်ပါအချက်များလိုအပ်သည်။ -* [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) ကဲ့သို့သော **knowledge ကို ဖလှယ်ရန် standard languages** တစ်ခုခုလိုအပ်သည်။ ၎င်းတို့ကို [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) အပေါ် အခြေခံ၍ ဖန်တီးထားသည်။ -* **Negotiations protocols** များနှင့် **auction types** များအပေါ် အခြေခံ၍ protocols ပါဝင်ရမည်။ -* **Common ontology** တစ်ခုလိုအပ်သည်၊ ထို့ကြောင့် semantics ကို သိရှိပြီး concept များကို ရည်ညွှန်းနိုင်သည်။ -* **Discover** လုပ်နိုင်ရန် နည်းလမ်းတစ်ခုလိုအပ်သည်၊ ၎င်းကို ontology အပေါ် အခြေခံထားသည်။ +* [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) အပေါ် မူတည်၍ ဒီဇိုင်းပြီး။ +* နေရာချိန်း ဆွေးနွေးမှုများအတွက် **မူဝါဒ(ပရိုတိုကော)များ** ပါဝင်ရန်လိုအပ်သည်၊ အမျိုးမျိုးသော **အော်ကေးရှင်းပုံစံများ** ပေါ် မူတည်၍။ +* တူညီသည့် အယူအဆကို ရည်ညွှန်းရန်အတွက် **ရင်းမြစ်အကြောင်းအရာ (ontology)** ရှိရန်လိုအပ်သည်။ +* ၎င်းတို့ ရွေးချယ်နိုင်သော အခြားအေဂျင့်များ၏ လုပ်နိုင်မှုများကို လေ့လာ ရှာဖွေရန် ကိရိယာ တစ်ခုလိုအပ်သည်၊ ရင်းမြစ်အကြောင်းအရာအပေါ် မူတည်၍။ -Deliberative agents မ +စဉ်းစားထားသော အေဂျင့်များသည် ပြန်ကြောင်းအဖြေ ပြုလုပ်သူများထက် ပို၍ ရှုပ်ထွေးပြီး ပတ်ဝန်းကျင်ပြောင်းလဲမှုများအားသာ တုံ့ပြန်ခြင်းမက လှုပ်ရှားမှုများကို *စတင် ပြုလုပ်* နိုင်ရမည်ဖြစ်သည်။ စဉ်းစားထားသော အေဂျင့်များအတွက် တင်ပြထားသည့် ပုံတစ်ခုမှာ အမည်ရှိသည့် Belief-Desire-Intention (BDI) အေဂျင့်ဖြစ်သည်။ + +* **Beliefs** သည် အေဂျင့်၏ လုပ်ကိုင်သည့်ပတ်ဝန်းကျင်အကြောင်း သတင်းအချက်အလက် စုစည်းချက်ဖြစ်သည်။ ၎င်းကို knowledge base သို့မဟုတ် ပတ္တမြားချုပ်များ အဖြစ် တည်ဆောက်နိုင်ပြီး သတ်မှတ် ပတ်ဝန်းကျင် အခြေအနေ များတွင် သတ်မှတ်ဆုံးဖြတ်ချက်များ ချမှတ်ရန် အသုံးပြုသည်။ +* **Desires** သည် အေဂျင့်၏ ရွေးချယ်လိုသည့် အမူအရာ (ရည်မှန်းချက်) ကို သတ်မှတ်သည်။ ဥပမာ အထက်ဖော်ပြပါ ပုဂ္ဂိုလ်ရေး အစီအစဉ်အတွက် ရည်ရွယ်ချက်မှာ ခရီးသွား စီစဉ်ခြင်းဖြစ်ပြီး၊ ဟိုတယ် အေဂျင့်မှာ သက်ဆိုင်ရာ အမြတ်များ များပြားစေရန်ရည်ရွယ်သည်။ +* **Intentions** သည် အေဂျင့်၏ ရည်ရွယ်ချက်များအား ပြည့်မီစေရန် စီစဉ်ထားသော လုပ်ဆောင်ချက်များဖြစ်သည်။ ၎င်းတို့သည် လူမှုဆက်ဆံရေးနှင့် ပတ်ဝန်းကျင်ပြောင်းလဲမှုကို ဖြစ်စေသည်။ + +မျိုးစုံအေဂျင့်စနစ် တည်ဆောက်ရာတွင် အသုံးပြုသင့်သော ပလက်ဖောင်းများ များစွာ ရရှိနိုင်ပါသည်၊ ဥပမာ [JADE](https://jade.tilab.com/)။ [ဤစာတမ်း](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) တွင် မျိုးစုံအေဂျင့်ပလက်ဖောင်းများ များစွာနှင့် မျိုးစုံအေဂျင့်စနစ်များ၊ အသုံးပြုမှုများအကြောင်း အနှစ်ချုပ်ပါဝင်သည်။ + +## သုံးသပ်ချက် + +မျိုးစုံအေဂျင့်စနစ်များသည် မျိုးစုံပုံစံများရှိပြီး အသုံးပြုနိုင်သည့် နယ်ပယ်များစွာ တွင် အသုံးဝင်သည်။ +၎င်းတို့သည် တစ်ဦးချင်းအေဂျင့်၏ ရိုးရှင်းသော လုပ်ဆောင်မှုကို ဦးတည်ပြီး၊ **ပူးပေါင်းဆောင်ရွက်မှု ထိရောက်မှု** ကြောင့် စနစ်စုစုပေါင်း၏ ရှုပ်ထွေးသော လုပ်ဆောင်မှုထိရောက်စေသည်။ + +## 🚀 စိန်ခေါ်မှု + +ဤသင်ခန်းစာအတိုင်း လက်တွေ့လောကသို့ ယူဆောင်ပြီး ပြဿနာများကို ဖြေရှင်းနိုင်သော မျိုးစုံအေဂျင့်စနစ်ကို စဉ်းစားပါ။ ဥပမာ၊ ကျောင်းယာဉ်လမ်းကြောင်း ကောင်းမွန်စေရန် မျိုးစုံအေဂျင့် စနစ်သည် ဘာလုပ်ရမည်နည်း? မုန့်ဖုတ်ဂိုဒေါင်တွင် ပြင်ဆင်နိုင်မည့်နည်းလမ်းများက ဘာတွေလဲ? + +## [ဘာသာရပ်မှတ်ချက် မေးခွန်းများ](https://ff-quizzes.netlify.app/en/ai/quiz/46) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +ထိုစနစ်မျိုးကို စက်မှုလုပ်ငန်း (manufacturing) သို့မဟုတ် ဗီဒီယိုဂိမ်း စက်မှုကဏ္ဍ (game industry) ကဲ့သို့သော နယ်ပယ်များအတွက် သုံးစွဲပုံကို သုံးသပ်ကြည့်ပါ။ မျိုးစုံအေဂျင့်စနစ်များသည် ထူးခြားသော ပြဿနာများကို မည်သို့ ဖြေရှင်းနိုင်ကြောင်း သိရှိပါ။ + +## [NetLogo အတွက် တာဝန်](assignment.md) --- + +**ပြောကြားချက်** +ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။ + \ No newline at end of file diff --git a/translations/sl/.co-op-translator.json b/translations/sl/.co-op-translator.json index d68ddf7b..41c69d8a 100644 --- a/translations/sl/.co-op-translator.json +++ b/translations/sl/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "sl" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T19:56:20+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "sl" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:31:26+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "sl" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "sl", + "failure_date": "2026-07-08T19:48:24+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "etc/CODE_OF_CONDUCT.md": { "original_hash": "c06b12caf3c901eb3156e3dd5b0aea56", "translation_date": "2025-08-26T00:45:04+00:00", @@ -54,8 +73,8 @@ "language_code": "sl" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:35:04+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T19:43:20+00:00", "source_file": "examples/README.md", "language_code": "sl" }, @@ -66,8 +85,8 @@ "language_code": "sl" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:10:42+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T19:43:42+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "sl" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "sl" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T19:35:58+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "sl" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-25T23:17:15+00:00", @@ -330,8 +355,8 @@ "language_code": "sl" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-25T21:30:03+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T19:44:11+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "sl" }, diff --git a/translations/sl/CONTRIBUTING.md b/translations/sl/CONTRIBUTING.md new file mode 100644 index 00000000..c43ec296 --- /dev/null +++ b/translations/sl/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Prispevanje k AI-For-Beginners + +Hvala za vaš interes za prispevanje k AI-For-Beginners! Veselimo se prevodov, popravkov lekcij in popravkov oblikovanja. + +## Microsoft Contributor License Agreement (CLA) + +Ta projekt sprejema prispevke in predloge. Večina prispevkov zahteva, da se strinjate s pogodbo Contributor License Agreement (CLA), v kateri izjavite, da imate pravico, in ji dejansko podelite pravice za uporabo vašega prispevka. Za podrobnosti obiščite [https://cla.microsoft.com](https://cla.microsoft.com). + +Ko oddate pull request, bo CLA-bot samodejno ugotovil, ali morate predložiti CLA, in ustrezno označil PR (npr. z nalepko, komentarjem). Preprosto sledite navodilom, ki jih poda bot. To bo treba storiti samo enkrat za vse repozitorije, ki uporabljajo naš CLA. + +## Kako prispevati + +### 1. Popravljanje tipkarskih napak / kodnih napak +Če najdete tipkarsko napako ali napako v kateri koli Jupyter beležnici ali markdown datoteki lekcije: +1. Forkajte repozitorij. +2. Popravite tipkarsko napako ali pokvarjeno povezavo. +3. Pošljite Pull Request z jasnim opisom popravka. + +### 2. Oddaja prevodov +Veselimo se prevodov lekcij v druge jezike! Prosimo, da prevode postavite v mapo `translations/` z uporabo obstoječih imen map (na primer `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Za več podrobnosti glejte [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sl/examples/README.md b/translations/sl/examples/README.md index a2914fc4..449c470c 100644 --- a/translations/sl/examples/README.md +++ b/translations/sl/examples/README.md @@ -1,31 +1,31 @@ -# Primeri umetne inteligence za začetnike +# Primeri AI za začetnike -Dobrodošli! Ta imenik vsebuje preproste, samostojne primere, ki vam bodo pomagali začeti z umetno inteligenco in strojno učenje. Vsak primer je zasnovan tako, da je prijazen začetnikom, z natančnimi komentarji in razlagami korak za korakom. +Dobrodošli! Ta imenik vsebuje preproste, samostojne primere, ki vam pomagajo začeti z umetno inteligenco in strojno učenje. Vsak primer je zasnovan tako, da je prijazen do začetnikov z podrobnimi komentarji in pojasnili korak za korakom. ## 📚 Pregled primerov -| Primer | Opis | Težavnost | Predznanje | -|--------|------|-----------|------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Vaš prvi program umetne inteligence - preprosto prepoznavanje vzorcev | ⭐ Začetnik | Osnove Pythona | -| [Preprosta nevronska mreža](../../../examples/02-simple-neural-network.py) | Zgradite nevronsko mrežo iz nič | ⭐⭐ Začetnik+ | Python, osnovna matematika | -| [Razvrščevalnik slik](./03-image-classifier.ipynb) | Razvrščajte slike s predhodno naučenim modelom | ⭐⭐ Začetnik+ | Python, numpy | -| [Besedilni sentiment](../../../examples/04-text-sentiment.py) | Analizirajte sentiment besedila (pozitivno/negativno) | ⭐⭐ Začetnik+ | Python | +| Primer | Opis | Težavnost | Predpogoji | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Vaš prvi AI program – prepoznavanje preprostih vzorcev | ⭐ Začetnik | Osnove Pythona | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Ustvarite nevronsko mrežo iz nič | ⭐⭐ Začetnik+ | Python, osnovna matematika | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Razvrščanje slik z vnaprej usposobljenim modelom | ⭐⭐ Začetnik+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Analiza čustvenega tona besedila (pozitivno/negativno) | ⭐⭐ Začetnik+ | Python | ## 🚀 Začetek ### Predpogoji -Prepričajte se, da imate nameščen Python (priporočena različica 3.8 ali višja). Namestite potrebne pakete: +Poskrbite, da imate nameščen Python (priporočena različica 3.8 ali novejša). Namestite zahtevane pakete: ```bash -# For Python scripts +# Za Python skripte pip install numpy -# For Jupyter notebooks (image classifier) +# Za Jupyter zvezke (razvrščevalnik slik) pip install jupyter numpy pillow tensorflow ``` -Ali uporabite conda okolje iz glavnega kurikuluma: +Ali uporabite conda okolje iz glavnega učnega načrta: ```bash conda env create --name ai4beg --file ../environment.yml @@ -39,47 +39,49 @@ conda activate ai4beg python 01-hello-ai-world.py ``` -**Za Jupyter beležke (.ipynb datoteke):** +**Za Jupyter zapiske (.ipynb datoteke):** ```bash jupyter notebook 03-image-classifier.ipynb ``` ## 📖 Učni načrt -Priporočamo, da sledite primerom po vrsti: +Priporočamo, da sledite primerom po vrstnem redu: -1. **Začnite z "Hello AI World"** - Spoznajte osnove prepoznavanja vzorcev -2. **Zgradite preprosto nevronsko mrežo** - Razumite, kako delujejo nevronske mreže -3. **Preizkusite razvrščevalnik slik** - Oglejte si umetno inteligenco v akciji s pravimi slikami -4. **Analizirajte besedilni sentiment** - Raziščite obdelavo naravnega jezika +1. **Začnite s "Hello AI World"** – Spoznajte osnove prepoznavanja vzorcev +2. **Zgradite preprosto nevronsko mrežo** – Razumite, kako delujejo nevronske mreže +3. **Preizkusite razvrščevalec slik** – Oglejte si AI pri delu z resničnimi slikami +4. **Analizirajte čustveni ton besedila** – Raziskujte obdelavo naravnega jezika ## 💡 Nasveti za začetnike -- **Pozorno preberite komentarje v kodi** - Razložijo, kaj počne vsaka vrstica -- **Eksperimentirajte!** - Poskusite spreminjati vrednosti in opazujte rezultate -- **Ne skrbite, če ne razumete vsega** - Učenje zahteva čas -- **Postavljajte vprašanja** - Uporabite [diskusijsko ploščo](https://github.com/microsoft/AI-For-Beginners/discussions) +- **Pozorno preberite komentarje v kodi** – Pojasnjujejo, kaj naredi vsak vrstica +- **Eksperimentirajte!** – Spreminjajte vrednosti in opazujte, kaj se zgodi +- **Ne skrbite, če ne razumete vsega takoj** – Učenje zahteva čas +- **Postavljajte vprašanja** – Uporabite [forum za razpravo](https://github.com/microsoft/AI-For-Beginners/discussions) ## 🔗 Naslednji koraki -Ko zaključite te primere, raziščite celoten kurikulum: -- [Uvod v umetno inteligenco](../lessons/1-Intro/README.md) +Ko končate s temi primeri, si oglejte celotni učni načrt: +- [Uvod v AI](../lessons/1-Intro/README.md) - [Nevronske mreže](../lessons/3-NeuralNetworks/README.md) - [Računalniški vid](../lessons/4-ComputerVision/README.md) - [Obdelava naravnega jezika](../lessons/5-NLP/README.md) -## 🤝 Prispevanje +## 🤝 Prispevki -So vam bili ti primeri v pomoč? Pomagajte nam jih izboljšati: -- Prijavite težave ali predlagajte izboljšave +So vam ti primeri v pomoč? Pomagajte nam jih izboljšati: +- Poročajte o težavah ali predlagajte izboljšave - Dodajte več primerov za začetnike - Izboljšajte dokumentacijo in komentarje --- -*Zapomnite si: Vsak strokovnjak je bil nekoč začetnik. Veselo učenje! 🎓* +*Zapomnite si: Vsak strokovnjak je bil nekoč začetnik. Srečno učenje! 🎓* --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sl/lessons/0-course-setup/how-to-run.md b/translations/sl/lessons/0-course-setup/how-to-run.md index 03a2ea2f..12dd90c9 100644 --- a/translations/sl/lessons/0-course-setup/how-to-run.md +++ b/translations/sl/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ # Kako zagnati kodo -Ta učni načrt vsebuje veliko izvajalnih primerov in laboratorijskih vaj, ki jih boste želeli zagnati. Da bi to naredili, morate imeti možnost izvajanja Python kode v Jupyter beležnicah, ki so vključene v ta učni načrt. Za izvajanje kode imate več možnosti: +Ta učni načrt vsebuje veliko izvedljivih primerov in laboratorijskih vaj, ki jih boste želeli zagnati. Za to potrebujete možnost izvajanja Pythona v Jupyter zvezkih, ki so del tega učnega načrta. Na voljo imate več možnosti za zagon kode: ## Zagon lokalno na vašem računalniku -Za lokalni zagon kode na vašem računalniku je potrebna namestitev Pythona. Ena izmed priporočil je namestitev **[miniconda](https://conda.io/en/latest/miniconda.html)** – gre za dokaj lahko namestitev, ki podpira upravitelja paketov `conda` za različna Python **virtualna okolja**. +Za zagon kode lokalno na vašem računalniku je potrebna Python namestitev. Priporočamo namestitev **[miniconda](https://conda.io/en/latest/miniconda.html)** – gre za razmeroma lahko namestitev, ki podpira upravljanje paketov `conda` za različna Python **virtualna okolja**. -Ko namestite minicondo, klonirajte repozitorij in ustvarite virtualno okolje, ki bo uporabljeno za ta tečaj: +Po namestitvi miniconde klonirajte repozitorij in ustvarite virtualno okolje, ki bo uporabljeno za ta tečaj: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,17 +17,17 @@ conda activate ai4beg ### Uporaba Visual Studio Code z razširitvijo Python -Ta učni načrt je najbolje uporabljati, ko ga odprete v [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) z [razširitvijo Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Ta učni načrt je najbolje uporabljati, če ga odprete v [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) z [razširitvijo Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Opomba**: Ko klonirate in odprete mapo v VS Code, vam bo samodejno predlagal, da namestite Python razširitve. Prav tako boste morali namestiti minicondo, kot je opisano zgoraj. +> **Opomba**: Ko klonirate in odprete mapo v VS Code, vam bo samodejno predlagal namestitev Python razširitev. Prav tako boste morali namestiti minicondo, kot je opisano zgoraj. -> **Opomba**: Če vam VS Code predlaga, da ponovno odprete repozitorij v vsebniku, to zavrnite, da uporabite lokalno namestitev Pythona. +> **Opomba**: Če vam VS Code predlaga, da repozitorij ponovno odprete v vsebniku, tega zavrnite, da boste uporabljali lokalno Python namestitev. ### Uporaba Jupyter v brskalniku -Lahko uporabite tudi Jupyter okolje prek brskalnika na vašem računalniku. Tako klasični Jupyter kot JupyterHub nudita priročno razvojno okolje z avtomatskim dokončevanjem, poudarkom kode itd. +Jupyter okolje lahko uporabljate tudi iz brskalnika na svojem računalniku. Tako klasični Jupyter kot JupyterHub nudita priročno razvojno okolje z avto-dokončevanjem, poudarjanjem kode itd. -Za zagon Juypterja lokalno pojdite v mapo s tečajem in izvedite: +Za zagon Jupyterja lokalno pojdite v mapo s tečajem in zaženite: ```bash jupyter notebook @@ -36,36 +36,36 @@ ali ```bash jupyterhub ``` -Nato lahko odprete katerokoli `.ipynb` datoteko in začnete z delom. +Nato lahko odprete katere koli `.ipynb` datoteke in začnete z delom. ### Zagon v vsebniku -Ena alternativa lokalni namestitvi Pythona je zagon kode v vsebniku. Ker naš repozitorij vsebuje posebno mapo `.devcontainer`, ki navodila za gradnjo vsebnika za ta repozitorij, VS Code ponuja možnost ponovnega odpiranja kode v vsebniku. To zahteva namestitev Dockerja in je nekoliko bolj zapleteno, zato priporočamo to bolj izkušenim uporabnikom. +Ena alternativa Python namestitvi je zagon kode v vsebniku. Ker naš repozitorij vsebuje posebno mapo `.devcontainer`, ki določa, kako zgraditi vsebnik za ta repozitorij, VS Code ponuja možnost ponovnega odpiranja kode v vsebniku. To zahteva namestitev Dockerja in je nekoliko bolj zapleteno, zato priporočamo to izkušenejšim uporabnikom. ## Zagon v oblaku -Če ne želite namestiti Pythona lokalno in imate dostop do oblačnih virov, je dobra alternativa zagon kode v oblaku. Obstaja več načinov, kako to storite: +Če ne želite namestiti Pythona lokalno in imate dostop do oblakov, je dobra alternativa zagon kode v oblaku. Obstaja več načinov za to: -* Uporaba **[GitHub Codespaces](https://github.com/features/codespaces)**, ki je virtualno okolje, ustvarjeno za vas na GitHubu, dostopno prek brskalniškega vmesnika VS Code. Če imate dostop do Codespaces, lahko preprosto kliknete gumb **Code** v repozitoriju, začnete codespace in kmalu zaženete okolje. -* Uporaba **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) nudi brezplačne računalniške vire v oblaku, da lahko uporabniki, kot ste vi, preizkusijo kodo na GitHubu. Na začetni strani je gumb za odpiranje repozitorija v Binderju – s tem boste hitro preusmerjeni na Binder spletno mesto, ki bo zgradilo osnovni vsebnik in brez težav zagnalo Jupyter spletni vmesnik. +* Uporaba **[GitHub Codespaces](https://github.com/features/codespaces)**, ki je virtualno okolje, ustvarjeno za vas na GitHubu, dostopno preko VS Code v brskalniku. Če imate dostop do Codespaces, lahko kliknete gumb **Code** v repozitoriju, zaženete codespace in začnete v hipu. +* Uporaba **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) nudi brezplačne računske vire v oblaku za ljudi, ki želijo preizkusiti kodo na GitHubu. Na vstupni strani je gumb za odprtje repozitorija v Binderju – to vas bo hitro odpeljalo na Binder spletno stran, ki bo zgradila osnovni vsebnik in brez težav zagnala Jupyter spletni vmesnik. -> **Opomba**: Da bi preprečili zlorabe, Binder blokira dostop do določenih spletnih virov. To lahko prepreči delovanje nekaterih kod, ki nalagajo modele in/ali podatkovne nabore iz interneta. Morda boste morali poiskati kakšne rešitve. Prav tako so računalniški viri, ki jih nudi Binder, precej osnovni, zato bo učenje zanje počasnejše, zlasti v kasnejših, bolj zahtevnih lekcijah. +> **Opomba**: Da prepreči zlorabe, ima Binder blokiran dostop do nekatere spletne vsebine. To lahko prepreči delovanje kode, ki prenese modele in/ali podatkovne nize iz javnega interneta. Morda boste morali najti načine za zaobid. Računski viri, ki jih nudi Binder, so precej osnovni, zato bo učenje, zlasti v poznejših, bolj zapletenih lekcijah, počasno. ## Zagon v oblaku z GPU -Nekatere kasnejše lekcije tega učnega načrta bi zelo koristile podporo GPU. Na primer, treniranje modelov je drugače lahko zelo počasen proces. Nekaj možnosti imate še posebej, če imate dostop do oblačnih virov preko [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ali vaše institucije: +Nekatere poznejše lekcije v tem učnem načrtu bi močno koristi podpora GPU. Na primer, trening modela je sicer lahko zelo počasen. Obstaja nekaj možnosti, ki jih lahko uporabite, še posebej, če imate dostop do oblaka preko [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ali prek svoje institucije: -* Ustvarite [virtualni stroj za znanost o podatkih](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) in se povežite z njim prek Jupyter. Nato lahko klonirate repozitorij neposredno na stroj in začnete z učenjem. NC-serije VM-jev imajo podporo za GPU. +* Ustvarite [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) in se povežite nanjo preko Jupyterja. Nato lahko replicirate repozitorij neposredno v stroj in začnete z učenjem. NC-serija VM-jev ima podporo za GPU. -> **Opomba**: Nekatere naročnine, vključno z Azure for Students, ne zagotavljajo podpore za GPU privzeto. Morda boste morali preko tehnične podpore zaprositi za dodatna GPU jedra. +> **Opomba**: Nekateri naročniški paketi, vključno z Azure for Students, ne nudijo podpore za GPU takoj. Morda boste morali zaprositi za dodatne GPU jedra s tehnično podporo. -* Ustvarite [delovno okolje Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) in uporabite funkcijo beležnice tam. [Ta video](https://azure-for-academics.github.io/quickstart/azureml-papers/) prikazuje, kako klonirati repozitorij v Azure ML beležnico in začeti z uporabo. +* Ustvarite [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) in nato uporabite funkcijo Notebook tam. [Ta video](https://azure-for-academics.github.io/quickstart/azureml-papers/) prikazuje, kako replicirati repozitorij v Azure ML notebook in ga začeti uporabljati. -Lahko uporabite tudi Google Colab, ki nudi nekaj brezplačne podpore za GPU, in naložite Jupyter beležnice, da jih izvajate eno za drugo. +Prav tako lahko uporabite Google Colab, ki nudi nekaj brezplačne podpore za GPU, in naložite Jupyter zvezke tam za izvajanje posamezno. --- **Omejitev odgovornosti**: -To besedilo je bilo prevedeno z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, upoštevajte, da lahko avtomatski prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvorno jeziku velja za zanesljiv vir. Za pomembne informacije priporočamo strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne razlage, ki nastanejo zaradi uporabe tega prevoda. +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index d0e2bff3..79d6f947 100644 --- a/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Vnaprej naučeni modeli in prenos učenja\n", + "# Predhodno naučeni modeli in prenosno učenje\n", "\n", - "Učenje CNN-jev lahko vzame veliko časa, poleg tega pa je za to nalogo potrebnih tudi veliko podatkov. Vendar pa se velik del časa porabi za učenje najboljših nizkonivojskih filtrov, ki jih mreža uporablja za izločanje vzorcev iz slik. Naravno se pojavi vprašanje - ali lahko uporabimo nevronsko mrežo, naučeno na enem naboru podatkov, in jo prilagodimo za razvrščanje drugih slik brez celotnega procesa učenja?\n", + "Učenje CNN-jev lahko traja veliko časa, za to nalogo pa je potrebnih tudi veliko podatkov. Vendar pa večino časa porabimo za učenje najboljših nizkonivojskih filtrov, ki jih omrežje uporablja za izločanje vzorcev iz slik. Naravno vprašanje se pojavi - ali lahko uporabimo nevronsko omrežje, naučeno na enem naboru podatkov, in ga prilagodimo za razvrščanje različnih slik brez celotnega procesa učenja?\n", "\n", - "Ta pristop se imenuje **prenos učenja**, saj prenesemo nekaj znanja iz enega modela nevronske mreže na drugega. Pri prenosu učenja običajno začnemo z vnaprej naučenim modelom, ki je bil naučen na velikem naboru slikovnih podatkov, kot je na primer **ImageNet**. Ti modeli že dobro opravljajo nalogo izločanja različnih značilnosti iz splošnih slik, in v mnogih primerih lahko že samo z gradnjo klasifikatorja na podlagi teh izločenih značilnosti dosežemo dobre rezultate.\n" + "Ta pristop se imenuje **prenosno učenje**, ker prenašamo nekaj znanja iz enega modela nevronskega omrežja v drugega. Pri prenosnem učenju običajno začnemo s predhodno naučenim modelom, ki je bil usposobljen na velikem naboru slik, kot je **ImageNet**. Ti modeli že dobro opravljajo delo pri izločanju različnih lastnosti iz generičnih slik, in v mnogih primerih lahko samo izgradnja klasifikatorja na vrhu teh izločenih lastnosti prinese dober rezultat.\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Dataset Mačke proti Psom\n", + "## Podatkovni niz Mačke proti Psom\n", "\n", - "V tej enoti bomo reševali resničen problem razvrščanja slik mačk in psov. Za ta namen bomo uporabili [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), ki ga lahko prenesete tudi [z Microsofta](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "V tej enoti bomo rešili resničen problem razvrščanja slik mačk in psov. Za ta namen bomo uporabili [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), ki ga je mogoče tudi prenesti [pri Microsoftu](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Prenesimo ta nabor podatkov in ga razširimo v imenik `data` (ta postopek lahko traja nekaj časa!):\n" + "Prenesimo ta podatkovni niz in ga razpakirajmo v imenik `data` (ta postopek lahko traja nekaj časa!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Na žalost je v naboru podatkov nekaj poškodovanih slikovnih datotek. Hitro čiščenje moramo opraviti, da preverimo poškodovane datoteke. Da ne bi preobremenili tega priročnika, smo kodo za preverjanje nabora podatkov premaknili v modul.\n" + "Na žalost je v naboru podatkov nekaj poškodovanih slikovnih datotek. Potrebno je hitro čiščenje za preverjanje poškodovanih datotek. Da ne bi poremetili tega vodiča, smo kodo za preverjanje nabora podatkov premaknili v modul.\n" ] }, { @@ -333,13 +333,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Nalaganje podatkovnega nabora\n", + "## Nalaganje nabora podatkov\n", "\n", - "V prejšnjih primerih smo nalagali podatkovne nabore, ki so že vgrajeni v Keras. Zdaj se bomo ukvarjali z lastnim podatkovnim naborom, ki ga moramo naložiti iz imenika slik.\n", + "V prejšnjih primerih smo nalagali nabore podatkov, ki so vgrajeni v Keras. Zdaj pa bomo obravnavali lasten nabor podatkov, ki ga moramo naložiti iz imenika slik.\n", "\n", - "V resničnem življenju so velikosti podatkovnih naborov slik lahko precej velike, zato se ne moremo zanašati na to, da bodo vsi podatki lahko shranjeni v pomnilniku. Zaradi tega so podatkovni nabori pogosto predstavljeni kot **generatorji**, ki lahko vračajo podatke v manjših serijah, primernih za učenje.\n", + "V resničnem življenju so lahko velikosti naborov slik precej velike in ni mogoče računati, da se vsi podatki lahko shranijo v pomnilnik. Zato so nabori podatkov pogosto predstavljeni kot **generatorji**, ki lahko vračajo podatke v minibatchih, primernih za učenje.\n", "\n", - "Za obravnavo klasifikacije slik Keras vključuje posebno funkcijo `image_dataset_from_directory`, ki lahko naloži slike iz podimenikov, ki ustrezajo različnim razredom. Ta funkcija prav tako poskrbi za skaliranje slik in lahko razdeli podatkovni nabor na učne in testne podnabor:\n" + "Za obravnavo klasifikacije slik Keras vključuje posebno funkcijo `image_dataset_from_directory`, ki lahko naloži slike iz podimenikov, ki ustrezajo različnim razredom. Ta funkcija poskrbi tudi za skaliranje slik, prav tako pa lahko razdeli nabor podatkov na podnabor treninga in testa:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Pomembno je nastaviti enako vrednost `seed` za oba klica, saj to vpliva na razdelitev slik med učnim in testnim naborom podatkov.\n", + "Pomembno je nastaviti enako vrednost `seed` za oba klica, saj to vpliva na razdelitev slik med učni in testni nabor podatkov.\n", "\n", - "Nabor podatkov samodejno prepozna imena razredov iz imenikov, do njih pa lahko dostopate, če je potrebno, z naslednjim klicem:\n" + "Nabor podatkov samodejno zajame imena razredov iz imenikov, in do njih lahko dostopate, če je to potrebno, z klicem:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Podatkovne zbirke, ki smo jih pridobili, lahko neposredno posredujemo funkciji `fit` za treniranje modela. Vsebujejo tako ustrezne slike kot oznake, ki jih lahko pregledujemo z naslednjo konstrukcijo:\n" + "Nabore podatkov, ki smo jih pridobili, je mogoče neposredno posredovati funkciji `fit` za učenje modela. Vsebujejo tako ustrezne slike kot oznake, preko katerih je mogoče zanko izvesti z naslednjo konstrukcijo:\n" ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Opomba**: Vse slike v podatkovnem naboru so predstavljene kot plavajoče točkovne tenzorje z razponom 0-255. Preden jih posredujemo nevronski mreži, moramo te vrednosti skalirati v razpon 0-1. Pri risanju slik moramo storiti enako ali pretvoriti vrednosti v tip `int` (kar naredimo v zgornji kodi), da `matplotlib` pokažemo, da želimo narisati izvirno neskalirano sliko.\n" + "> **Opomba**: Vse slike v podatkovnem naboru so predstavljene kot plavajoče točke tenzorji z razponom 0-255. Preden jih posredujemo nevronski mreži, moramo te vrednosti skalirati v razpon 0-1. Pri risanju slik moramo enako storiti ali pa vrednosti pretvoriti v tip `int` (kar naredimo v zgornji kodi), da pokažemo `matplotlib`, da želimo narisati izvirno neskalirano sliko.\n" ] }, { @@ -462,7 +462,7 @@ "source": [ "## Vnaprej naučeni modeli\n", "\n", - "Za številne naloge razvrščanja slik lahko najdemo vnaprej naučene modele nevronskih mrež. Veliko teh modelov je na voljo v imenskem prostoru `keras.applications`, še več modelov pa je mogoče najti na internetu. Poglejmo, kako lahko naložimo in uporabimo najpreprostejši model VGG-16:\n" + "Za številne naloge razvrščanja slik lahko najdemo vnaprej naučene modele nevronskih mrež. Veliko teh modelov je na voljo znotraj imenskega prostora `keras.applications`, še več modelov pa lahko najdemo na internetu. Poglejmo, kako lahko najpreprostejši model VGG-16 naložimo in uporabimo:\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -510,17 +520,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Obstaja nekaj pomembnih stvari tukaj:\n", - "* Preden posredujemo vhodne podatke kateremu koli vnaprej naučenemu omrežju, jih je treba predhodno obdelati na določen način. To se izvede z uporabo ustrezne funkcije `preprocess_input`, ki prejme serijo slik in vrne njihovo obdelano obliko. V primeru VGG-16 so slike normalizirane, nato pa se odšteje vnaprej določena povprečna vrednost za vsak kanal. To je zato, ker je bil VGG-16 prvotno naučen s to predhodno obdelavo.\n", - "* Nevronsko omrežje se uporabi na vhodni seriji, rezultat pa je serija 1000-elementnih tenzorjev, ki prikazujejo verjetnost za vsak razred. Najbolj verjetno številko razreda lahko najdemo z uporabo funkcije `argmax` na tem tenzorju.\n", - "* Pridobljeni rezultat je [številka razreda `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Da bi ta rezultat razumeli, lahko uporabimo tudi funkcijo `decode_predictions`, ki vrne n najboljših razredov skupaj z njihovimi imeni.\n" + "Tukaj je nekaj pomembnih stvari:\n", + "* Preden vhod podamo kateremu koli predhodno naučenemu omrežju, ga je treba na določen način predobdelati. To se naredi z uporabo ustrezne funkcije `preprocess_input`, ki prejme serijo slik in vrne njihovo predoblikovano obliko. V primeru VGG-16 so slike normalizirane in od vsakega kanala je odšteta vnaprej določena povprečna vrednost. To je zato, ker je bil VGG-16 prvotno treniran s to predobdelavo.\n", + "* Nevronska mreža se uporabi na vhodno serijo, kot rezultat pa dobimo serijo tenzorjev s 1000 elementi, ki prikazujejo verjetnost za vsako kategorijo. Najverjetnejšo kategorijo najdemo z uporabo `argmax` na tem tenzorju.\n", + "* Pridobljen rezultat je [številka `ImageNet` kategorije](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Za razumevanje tega rezultata lahko uporabimo tudi funkcijo `decode_predictions`, ki vrne najbolj verjetne n razredov skupaj z njihovimi imeni.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Poglejmo si tudi arhitekturo omrežja VGG-16:\n" + "Poglejmo tudi arhitekturo omrežja VGG-16:\n" ] }, { @@ -597,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Izračuni na GPU\n", + "## Izračuni z GPU\n", "\n", - "Globoke nevronske mreže, kot je VGG-16 in druge sodobnejše arhitekture, zahtevajo precej računske moči za delovanje. Smiselno je uporabiti pospeševanje z GPU, če je na voljo. Na srečo Keras samodejno pospeši izračune na GPU, če je ta na voljo. Preverimo lahko, ali Tensorflow lahko uporablja GPU, z naslednjo kodo:\n" + "Globoke nevronske mreže, kot so VGG-16 in druge bolj sodobne arhitekture, zahtevajo precej računske moči za delovanje. Smiselno je uporabiti pospeševanje z GPU, če je na voljo. Na srečo Keras samodejno pohitri izračune na GPU, če je ta na voljo. Preverimo lahko, ali Tensorflow lahko uporablja GPU z naslednjo kodo:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Ekstrakcija značilnosti z VGG\n", "\n", - "Če želimo uporabiti VGG-16 za ekstrakcijo značilnosti iz naših slik, potrebujemo model brez končnih slojev za klasifikacijo. Model VGG-16 brez zgornjih slojev lahko ustvarimo z naslednjo kodo:\n" + "## Izvlečenje VGG značilk\n", + "\n", + "Če želimo uporabiti VGG-16 za izvlečenje značilk iz naših slik, potrebujemo model brez končnih klasifikacijskih plasti. Model VGG-16 brez zgornjih plasti lahko ustvarimo z naslednjo kodo:\n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dimenzija tenzorja značilnosti je 7x7x512, vendar smo ga morali za vizualizacijo preoblikovati v 2D obliko.\n", + "Dimenzija tensorskih značilk je 7x7x512, vendar smo jo za vizualizacijo morali preoblikovati v 2D obliko.\n", "\n", - "Zdaj poskusimo ugotoviti, ali lahko te značilnosti uporabimo za razvrščanje slik. Ročno bomo vzeli del slik (v našem primeru 50 mini serij) in vnaprej izračunali njihove vektorske značilnosti. Za to lahko uporabimo Tensorflow **dataset** API. Funkcija `map` vzame podatkovni niz in nanj uporabi podano lambda-funkcijo za transformacijo. Ta mehanizem uporabimo za konstrukcijo novih podatkovnih nizov, `ds_features_train` in `ds_features_test`, ki vsebujejo značilnosti, pridobljene z VGG, namesto originalnih slik.\n" + "Zdaj poskusimo ugotoviti, ali je mogoče te značilke uporabiti za razvrščanje slik. Ročno bomo vzeli nekaj delov slik (50 mini paketov, v našem primeru) in predhodno izračunali njihove vektorske značilke. Za to lahko uporabimo Tensorflow **dataset** API. Funkcija `map` vzame podatkovni niz in uporabi dano lambda-funkcijo za njegovo transformacijo. Ta mehanizem uporabljamo za ustvarjanje novih podatkovnih nizov, `ds_features_train` in `ds_features_test`, ki namesto izvirnih slik vsebujejo značilke, pridobljene z VGG.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Uporabili smo konstrukcijo `.take(50)`, da smo omejili velikost nabora podatkov in s tem pospešili našo predstavitev. Seveda lahko ta eksperiment izvedete na celotnem naboru podatkov.\n", + "Uporabljali smo konstrukcijo `.take(50)`, da omejimo velikost nabora podatkov, s čimer smo pospešili našo demonstracijo. Seveda lahko ta eksperiment izvedete na celotnem naboru podatkov.\n", "\n", - "Zdaj, ko imamo nabor podatkov z izluščenimi značilnostmi, lahko naučimo preprost gost klasifikator za razlikovanje med mačkami in psi. Ta mreža bo sprejela vektorsko značilnost oblike (7,7,512) in proizvedla en izhod, ki ustreza bodisi psu bodisi mački. Ker gre za binarno klasifikacijo, uporabimo aktivacijsko funkcijo `sigmoid` in izgubo `binary_crossentropy`.\n" + "Zdaj, ko imamo nabor podatkov z izvlečenimi značilnostmi, lahko naučimo preprost gosto povezan klasifikator za razlikovanje med mačkami in psi. Ta nevronska mreža bo sprejela vektor značilnosti oblike (7,7,512) in proizvedla en izhod, ki ustreza psu ali mački. Ker gre za binarno klasifikacijo, uporabljamo aktivacijsko funkcijo `sigmoid` in funkcijo izgube `binary_crossentropy`.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Rezultat je odličen, saj lahko z skoraj 95-odstotno verjetnostjo ločimo med mačko in psom! Vendar smo ta pristop testirali le na podmnožici vseh slik, ker ročno pridobivanje značilnosti zahteva veliko časa.\n", + "Rezultat je odličen, razlikujemo lahko med mačko in psom z skoraj 95-odstotno verjetnostjo! Vendar smo ta pristop preizkusili le na podmnožici vseh slik, saj se zdi ročno izvlečenje značilk zelo časovno zahtevno.\n", "\n", - "## Prenos učenja z uporabo ene VGG mreže\n", + "## Prenosno učenje z uporabo enega VGG omrežja\n", "\n", - "Ročnega predhodnega izračunavanja značilnosti se lahko izognemo tudi tako, da med treningom uporabimo celotno izvirno mrežo VGG-16, tako da dodamo ekstraktor značilnosti kot prvo plast v našo mrežo.\n", + "Prav tako se lahko izognemo ročnemu predračunanju značilk tako, da uporabimo izvirno VGG-16 omrežje kot celoto med treniranjem, tako, da našemu omrežju kot prvo plast dodamo ekstraktor značilk. \n", "\n", - "Lepota arhitekture Keras je v tem, da se model VGG-16, ki smo ga definirali zgoraj, lahko uporabi tudi kot plast v drugi nevronski mreži! Potrebno je le sestaviti mrežo z gostim klasifikatorjem na vrhu in nato celotno mrežo trenirati z uporabo povratnega razširjanja.\n" + "Lepota Keras arhitekture je, da lahko VGG-16 model, ki smo ga definirali zgoraj, uporabimo tudi kot plast v drugem nevronskem omrežju! Potrebno je le sestaviti omrežje z gostim klasifikatorjem na vrhu in nato celotno omrežje trenirati z metodo povratnega širjenja napake.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ta model je videti kot mreža za klasifikacijo od začetka do konca, ki sprejme sliko in vrne razred. Vendar je zapleteno to, da želimo, da VGG16 deluje kot ekstraktor značilnosti in da se ne ponovno uči. Zato moramo **zamrzniti uteži konvolucijskega ekstraktorja značilnosti**. Do prve plasti mreže lahko dostopamo z ukazom `model.layers[0]`, nato pa moramo samo nastaviti lastnost `trainable` na `False`.\n", + "Ta model izgleda kot celovita klasifikacijska mreža, ki vzame sliko in vrne razred. Vendar je zapleteno to, da želimo, da VGG16 deluje kot extractor značilk in da se ne trenira znova. Zato moramo **zamrzniti uteži konvolucijskega extractorja značilk**. Do prve plasti mreže lahko dostopamo z `model.layers[0]`, in samo nastaviti moramo lastnost `trainable` na `False`.\n", "\n", - "> **Opomba**: Zamrznitev uteži ekstraktorja značilnosti je potrebna, ker lahko neizurjena plast klasifikatorja uniči originalne predhodno naučene uteži konvolucijskega ekstraktorja.\n", + "> **Opomba**: Zamrzovanje uteži extractorja značilk je potrebno, ker bi sicer netrenirana klasifikacijska plast lahko uničila prvotne predtrenirane uteži konvolucijskega extractorja.\n", "\n", - "Opazite lahko, da čeprav je skupno število parametrov v naši mreži približno 15 milijonov, treniramo le 25 tisoč parametrov. Vsi drugi parametri konvolucijskih filtrov na višji ravni so predhodno naučeni. To je dobro, saj lahko prilagodimo manjše število parametrov z manjšim številom primerov.\n", + "Opazili boste, da je medtem ko je skupno število parametrov v naši mreži okoli 15 milijonov, treniramo samo 25 tisoč parametrov. Vsi drugi parametri konvolucijskih filtrov najvišje ravni so predtrenirani. To je dobro, ker lahko tako fino nastavimo manjše število parametrov z manjšim številom primerov.\n", "\n", - "Zdaj bomo trenirali našo mrežo in preverili, kako dobro lahko dosežemo. Pričakujte precej dolgo trajanje izvajanja, in ne skrbite, če se zdi, da je izvajanje za nekaj časa zamrznjeno.\n" + "Sedaj bomo trenirali našo mrežo in videli, kako dobri lahko postanemo. Pričakujte precej dolgo trajanje in ne skrbite, če se bo izvajanje za nekaj časa zdelo zaustavljeno.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zdi se, da smo pridobili dokaj natančen klasifikator za mačke in pse!\n", + "Izgleda, da smo pridobili razmeroma natančen razvrščevalnik mačk proti psom! \n", "\n", "## Shranjevanje in nalaganje modela\n", "\n", - "Ko model enkrat treniramo, lahko arhitekturo modela in naučene uteži shranimo v datoteko za prihodnjo uporabo:\n" + "Ko enkrat naučimo model, lahko arhitekturo modela in naučene uteži shranimo v datoteko za prihodnjo uporabo:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Model lahko nato kadar koli naložimo iz datoteke. To je lahko koristno, če naslednji poskus uniči model - ne bi vam bilo treba začeti znova od začetka.\n" + "Model lahko nato kadar koli naložimo iz datoteke. To se vam lahko zdi uporabno v primeru, da naslednji eksperiment uniči model - ne bi se vam bilo treba znova začeti od začetka.\n" ] }, { @@ -868,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Fino uglaševanje prenosa učenja\n", + "## Prenova prenosnega učenja s fino nastavljenjem\n", "\n", - "V prejšnjem poglavju smo izurili zadnji sloj klasifikatorja za razvrščanje slik v našem lastnem naboru podatkov. Vendar pa nismo ponovno izurili ekstraktorja značilnosti, zato se je naš model zanašal na značilnosti, ki jih je model naučil na podatkih ImageNet. Če se vaši objekti vizualno razlikujejo od običajnih slik ImageNet, ta kombinacija značilnosti morda ne bo delovala najbolje. Zato je smiselno začeti trenirati tudi konvolucijske sloje.\n", + "V prejšnjem razdelku smo usposobili zadnjo klasifikacijsko plast za razvrščanje slik v našem lastnem naboru podatkov. Vendar pa nismo ponovno usposobili izvlečka značilk in naš model je temeljil na značilkah, ki se jih je model naučil na podatkih ImageNet. Če se vaši objekti vizualno razlikujejo od običajnih slik ImageNet, ta kombinacija značilk morda ne bo najbolj učinkovita. Zato je smiselno začeti usposabljati tudi konvolucijske plasti.\n", "\n", - "Da to storimo, lahko odmrznemo parametre konvolucijskih filtrov, ki smo jih prej zamrznili.\n", + "Za to lahko odmrznemo parametre konvolucijskih filtrov, ki smo jih prej zamrznili.\n", "\n", - "> **Opomba:** Pomembno je, da najprej zamrznete parametre in izvedete več epoh treniranja, da stabilizirate uteži v klasifikacijskem sloju. Če takoj začnete trenirati celotno mrežo z odmrznjenimi parametri, bodo velike napake verjetno uničile vnaprej naučene uteži v konvolucijskih slojih.\n", + "> **Opomba:** Pomembno je, da najprej zamrznete parametre in izvedete več epoh usposabljanja, da stabilizirate uteži v klasifikacijski plasti. Če takoj začnete usposabljati celotno omrežje z odmrznjenimi parametri, lahko velike napake uničijo vnaprej usposobljene uteži v konvolucijskih plasteh.\n", "\n", - "Naš konvolucijski model VGG-16 se nahaja znotraj prvega sloja in je sestavljen iz več slojev. Lahko si ogledamo njegovo strukturo:\n" + "Naš konvolucijski VGG-16 model se nahaja znotraj prve plasti in je sam sestavljen iz mnogih plasti. Lahko si pogledamo njegovo strukturo:\n" ] }, { @@ -945,7 +956,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lahko odmrznemo vse plasti konvolucijske osnove:\n" + "Vse plasti konvolucijske baze lahko odklenemo:\n" ] }, { @@ -961,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vendar odmrznitev vseh naenkrat ni najboljša ideja. Najprej lahko odmrznemo le nekaj zadnjih slojev konvolucij, saj ti vsebujejo višjenivojske vzorce, ki so pomembni za naše slike. Na primer, za začetek lahko zamrznemo vse sloje razen zadnjih 4:\n" + "Vendar pa odmrzovanje vseh hkrati ni najboljša ideja. Najprej lahko odmrznemo le nekaj zadnjih slojev konvolucij, ker vsebujejo višje nivojske vzorce, ki so pomembni za naše slike. Na primer, lahko najprej zamrznemo vse sloje razen zadnjih 4:\n" ] }, { @@ -1000,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Opazite, da se je število učljivih parametrov znatno povečalo, vendar je še vedno približno 50 % vseh parametrov.\n", + "Opazimo, da se je število učnih parametrov bistveno povečalo, a je še vedno okoli 50 % vseh parametrov.\n", "\n", - "Po odmrznitvi lahko izvedemo še nekaj epochov učenja (v našem primeru bomo izvedli le enega). Prav tako lahko izberete nižjo hitrost učenja, da zmanjšate vpliv na vnaprej naučene uteži. Vendar pa lahko tudi pri nizki hitrosti učenja pričakujete, da bo natančnost na začetku učenja padla, dokler končno ne doseže nekoliko višje ravni kot v primeru fiksnih uteži.\n", + "Po odmrzovanju lahko izvedemo še nekaj epoh učenja (v našem primeru bomo izvedli samo eno). Prav tako lahko izberete nižjo hitrost učenja, da zmanjšate vpliv na že naučene uteži. Vendar pa lahko tudi pri nizki hitrosti učenja pričakujete, da bo natančnost na začetku učenja padla, dokler na koncu ne doseže nekoliko višje ravni kot v primeru fiksnih uteži.\n", "\n", - "> **Opomba:** To učenje poteka veliko počasneje, saj moramo propagirati gradientne vrednosti nazaj skozi številne plasti mreže!\n" + "> **Opomba:** To učenje poteka veliko počasneje, saj moramo propagirati gradient nazaj skozi veliko slojev nevronske mreže!\n" ] }, { @@ -1028,9 +1039,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Verjetno bomo dosegli višjo natančnost pri učenju, saj uporabljamo močnejšo mrežo z več parametri, vendar pa se natančnost pri validaciji ne bo povečala v enaki meri.\n", + "Verjetno bomo dosegli višjo natančnost učenja, ker uporabljamo zmogljivejšo mrežo z več parametri, vendar se bo natančnost na validaciji povečala ne toliko.\n", "\n", - "Lahko sprostite še nekaj dodatnih slojev mreže in nadaljujete z učenjem, da preverite, ali lahko dosežete višjo natančnost!\n" + "Brez zadržkov odmrznite še nekaj plasti mreže in trenirajte naprej, da vidite, ali lahko dosežete višjo natančnost!\n" ] }, { @@ -1039,7 +1050,7 @@ "source": [ "## Drugi modeli računalniškega vida\n", "\n", - "VGG-16 je ena najpreprostejših arhitektur za računalniški vid. Keras ponuja še veliko več predhodno naučenih omrežij. Med najpogosteje uporabljenimi so arhitekture **ResNet**, ki jih je razvilo podjetje Microsoft, in **Inception**, ki ga je razvil Google. Na primer, raziščimo arhitekturo najpreprostejšega modela ResNet-50 (ResNet je družina modelov z različno globino, lahko poskusite eksperimentirati z ResNet-152, če želite videti, kako izgleda res globok model):\n" + "VGG-16 je ena izmed najpreprostejših arhitektur računalniškega vida. Keras ponuja še mnogo več predhodno izurjenih mrež. Med najbolj pogosto uporabljenimi so **ResNet** arhitekture, ki jih je razvilo Microsoft, in **Inception** podjetja Google. Na primer, raziskujmo arhitekturo najpreprostejšega modela ResNet-50 (ResNet je družina modelov z različnimi globinami, lahko poskusiš tudi z ResNet-152, če želiš videti, kako izgleda res globok model):\n" ] }, { @@ -1441,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kot lahko vidite, model vsebuje iste poznane gradnike: konvolucijske plasti, plasti za združevanje (pooling) in končno gosto klasifikacijsko plast. Ta model lahko uporabimo na popolnoma enak način, kot smo uporabljali VGG-16 za prenosno učenje. Lahko poskusite eksperimentirati s kodo zgoraj, uporabite različne modele ResNet kot osnovni model in opazujete, kako se spreminja natančnost.\n", + "Kot lahko vidite, model vsebuje enake znane gradnike: konvolucijske plasti, sloje združevanja in končni gosti klasifikator. Ta model lahko uporabljamo na točno enak način, kot smo uporabljali VGG-16 za prenosno učenje. Lahko poskusite eksperimentirati s kodo zgoraj, uporabite različne modele ResNet kot osnovni model in si ogledate, kako se spreminja natančnost.\n", "\n", - "## Normalizacija serij (Batch Normalization)\n", + "## Normalizacija serije\n", "\n", - "Ta mreža vsebuje še eno vrsto plasti: **Normalizacija serij**. Ideja normalizacije serij je, da vrednosti, ki tečejo skozi nevronsko mrežo, pripeljemo v pravi interval. Običajno nevronske mreže najbolje delujejo, ko so vse vrednosti v razponu [-1,1] ali [0,1], zato ustrezno prilagodimo/normaliziramo vhodne podatke. Vendar pa se med učenjem globoke mreže lahko zgodi, da vrednosti močno presežejo ta razpon, kar otežuje učenje. Plast za normalizacijo serij izračuna povprečje in standardni odklon za vse vrednosti trenutne mini serije ter jih uporabi za normalizacijo signala, preden ga prenese skozi plast nevronske mreže. To bistveno izboljša stabilnost globokih mrež.\n" + "Ta nevronska mreža vsebuje še en tip plasti: **normalizacija serije**. Ideja normalizacije serije je pripeljati vrednosti, ki tečejo skozi nevronsko mrežo, v pravilen interval. Običajno nevronske mreže najbolje delujejo, ko so vse vrednosti v območju [-1,1] ali [0,1], zato ustrezno skaliramo/normaliziramo vhodne podatke. Vendar pa se lahko med učenjem globoke mreže zgodi, da vrednosti močno odstopajo od tega območja, kar oteži učenje. Plast normalizacije serije izračuna povprečje in standardni odklon za vse vrednosti trenutne minibatch skupine in ju uporabi za normalizacijo signala, preden ga preda naprej skozi plast nevronske mreže. To bistveno izboljša stabilnost globokih mrež.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Ključne točke\n", + "## Ključna ugotovitev\n", "\n", - "S pomočjo prenosa učenja smo lahko hitro sestavili klasifikator za našo nalogo klasifikacije prilagojenih objektov in dosegli visoko natančnost. Vendar pa ta primer ni bil povsem pravičen, saj je bila originalna mreža VGG-16 predhodno naučena prepoznavati mačke in pse, zato smo zgolj ponovno uporabili večino vzorcev, ki so že bili prisotni v mreži. Pričakujete lahko nižjo natančnost pri bolj eksotičnih, specifičnih objektih, kot so detajli na proizvodni liniji v tovarni ali različni listi dreves.\n", + "Z uporabo prenosnega učenja smo lahko hitro sestavili klasifikator za naše prilagojeno nalogo klasifikacije objektov in dosegli visoko natančnost. Vendar ta primer ni bil povsem pošten, saj je bil izvirni VGG-16 omrežje predhodno naučeno prepoznavati mačke in pse, zato smo le ponovno uporabili večino vzorcev, ki so že bili prisotni v omrežju. Pri bolj eksotičnih objektih, značilnih za določen področje, kot so podrobnosti na proizvodni liniji v tovarni ali različni listi dreves, lahko pričakujete manjšo natančnost.\n", "\n", - "Vidite lahko, da bolj kompleksne naloge, ki jih rešujemo zdaj, zahtevajo večjo računsko moč in jih ni mogoče enostavno rešiti na CPU-ju. V naslednji enoti bomo poskusili uporabiti bolj lahkotno implementacijo za treniranje istega modela z nižjimi računalniškimi viri, kar bo prineslo le rahlo nižjo natančnost.\n" + "Vidite lahko, da bolj kompleksne naloge, ki jih zdaj rešujemo, zahtevajo večjo računalniško moč in jih ni mogoče enostavno rešiti na CPU-ju. V naslednji enoti bomo poskusili uporabiti bolj lahkotno implementacijo za usposabljanje istega modela z nižjimi računalniškimi viri, kar bo privedlo do nekoliko manjše natančnosti.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.\n" + "---\n\n\n**Omejitev odgovornosti**:\nTa dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.\n\n" ] } ], @@ -1484,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-30T07:23:31+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "sl" } }, "nbformat": 4, diff --git a/translations/sl/lessons/5-NLP/README.md b/translations/sl/lessons/5-NLP/README.md index 29568bad..cb48573f 100644 --- a/translations/sl/lessons/5-NLP/README.md +++ b/translations/sl/lessons/5-NLP/README.md @@ -2,25 +2,25 @@ ![Povzetek nalog NLP v skici](../../../../translated_images/sl/ai-nlp.b22dcb8ca4707cea.webp) -V tem poglavju se bomo osredotočili na uporabo nevronskih mrež za reševanje nalog, povezanih z **obdelavo naravnega jezika (NLP)**. Obstaja veliko NLP problemov, ki jih želimo, da jih računalniki rešujejo: +V tem poglavju se bomo osredotočili na uporabo nevronskih mrež za obdelavo nalog, povezanih z **obdelavo naravnega jezika (NLP)**. Obstaja veliko problemov NLP, ki jih želimo, da jih računalniki znajo rešiti: -* **Razvrščanje besedil** je tipičen problem razvrščanja, ki se nanaša na zaporedja besedil. Primeri vključujejo razvrščanje e-poštnih sporočil kot spam ali ne-spam, ali kategorizacijo člankov kot šport, posel, politika itd. Prav tako pri razvoju klepetalnih robotov pogosto potrebujemo razumeti, kaj uporabnik želi povedati – v tem primeru gre za **razvrščanje namenov**. Pri razvrščanju namenov se pogosto soočamo z mnogimi kategorijami. -* **Analiza sentimenta** je tipičen regresijski problem, kjer moramo pripisati številko (sentiment), ki ustreza temu, kako pozitiven/negativen je pomen stavka. Naprednejša različica analize sentimenta je **analiza sentimenta po vidikih** (ABSA), kjer sentiment ne pripisujemo celotnemu stavku, temveč različnim delom (vidikom), npr. *V tej restavraciji mi je bila všeč kuhinja, vendar je bila atmosfera grozna*. -* **Prepoznavanje imenovanih entitet** (NER) se nanaša na problem izločanja določenih entitet iz besedila. Na primer, razumeti moramo, da v stavku *Jutri moram leteti v Pariz* beseda *jutri* pomeni DATUM, medtem ko je *Pariz* LOKACIJA. -* **Izvleček ključnih besed** je podoben NER, vendar moramo samodejno izločiti besede, ki so pomembne za pomen stavka, brez predhodnega učenja za specifične tipe entitet. -* **Združevanje besedil** je uporabno, ko želimo združiti podobne stavke, na primer podobne zahteve v pogovorih tehnične podpore. -* **Odgovarjanje na vprašanja** se nanaša na sposobnost modela, da odgovori na specifično vprašanje. Model prejme besedilni odlomek in vprašanje kot vhod, nato pa mora zagotoviti mesto v besedilu, kjer je odgovor na vprašanje (ali včasih generirati besedilo odgovora). -* **Generiranje besedila** je sposobnost modela, da ustvari novo besedilo. To lahko obravnavamo kot nalogo razvrščanja, kjer model napoveduje naslednjo črko/besedo na podlagi nekega *besedilnega poziva*. Napredni modeli za generiranje besedila, kot je GPT-3, lahko rešujejo tudi druge NLP naloge, kot je razvrščanje, z uporabo tehnike, imenovane [programiranje s pozivi](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ali [inženiring pozivov](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Povzemanje besedila** je tehnika, pri kateri želimo, da računalnik "prebere" dolgo besedilo in ga povzame v nekaj stavkih. -* **Strojno prevajanje** lahko obravnavamo kot kombinacijo razumevanja besedila v enem jeziku in generiranja besedila v drugem jeziku. +* **Klasifikacija besedil** je tipičen problem klasifikacije, ki se nanaša na besedilne zaporedja. Primeri vključujejo klasifikacijo e-poštnih sporočil kot spam ali ne-spam, ali kategorizacijo člankov kot šport, poslovanje, politika itd. Prav tako, ko razvijamo klepetalne bote, pogosto želimo razumeti, kaj je uporabnik hotel povedati — v tem primeru se ukvarjamo z **klasifikacijo namena**. Pogosto moramo pri klasifikaciji namena obravnavati veliko kategorij. +* **Analiza sentimenta** je tipičen problem regresije, kjer moramo pripisati številko (sentiment), ki ustreza stopnji pozitivnosti/negativnosti pomena stavka. Bolj napredna različica analize sentimenta je **analiza sentimenta na osnovi vidikov** (ABSA), kjer sentiment pripisujemo ne celotnemu stavku, ampak različnim delom (vidikom), npr. *V tej restavraciji mi je bila všeč kulinarika, vendar je bila atmosfera grozna*. +* **Prepoznavanje imenovanih entitet** (NER) se nanaša na problem izvlečenja določenih entitet iz besedila. Na primer, morda moramo razumeti, da v frazi *Moram jutri poleteti v Pariz* beseda *jutri* označuje DATUM, *Pariz* pa LOKACIJO. +* **Izvlečenje ključnih besed** je podobno kot NER, vendar moramo samodejno izluščiti besede, pomembne za pomen stavka, brez predhodnega treniranja za specifične tipe entitet. +* **Gručenje besedil** je uporabno, ko želimo združiti podobne stavke, na primer podobne zahteve v pogovorih tehnične podpore. +* **Odgovarjanje na vprašanja** pomeni sposobnost modela, da odgovori na specifično vprašanje. Model prejme besedilni odlomek in vprašanje kot vhod, ter mora zagotovi mesto v besedilu, kjer je odgovor na vprašanje vsebovan (ali pa včasih generirati besedilni odgovor). +* **Generiranje besedila** je sposobnost modela, da ustvari novo besedilo. Lahko ga obravnavamo kot nalogo klasifikacije, ki napove naslednjo črko/besedo na osnovi nekega *besedilnega poziva*. Napredni modeli generiranja besedila, kot je GPT-3, zmorejo reševati tudi druge naloge NLP, kot je klasifikacija, z uporabo tehnike, imenovane [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ali [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Povzemanje besedil** je tehnika, ko želimo, da računalnik "prebere" dolgo besedilo in ga strne v nekaj stavkov. +* **Strojno prevajanje** lahko razumemo kot kombinacijo razumevanja besedila v enem jeziku in generiranja besedila v drugem jeziku. -Sprva so bile večina NLP nalog reševane z uporabo tradicionalnih metod, kot so slovnice. Na primer, pri strojnem prevajanju so se uporabljali analizatorji za pretvorbo začetnega stavka v sintaktično drevo, nato so se izločile višje ravni semantičnih struktur za predstavitev pomena stavka, na podlagi tega pomena in slovnice ciljnega jezika pa je bil ustvarjen rezultat. Danes se mnoge NLP naloge učinkoviteje rešujejo z uporabo nevronskih mrež. +Sprva so bile večina NLP nalog rešljive z uporabo tradicionalnih metod, kot so slovnice. Na primer, pri strojnih prevodih so parserji iskali transformacijo začetnega stavka v sintaktično drevo, nato so ekstrahirali višje semantične strukture, ki predstavljajo pomen stavka, in na osnovi tega pomena ter slovnice ciljanega jezika so ustvarili rezultat. Danes se številne naloge NLP učinkoviteje rešujejo z nevronskimi mrežami. -> Veliko klasičnih NLP metod je implementiranih v Python knjižnici [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Na voljo je odlična [NLTK knjiga](https://www.nltk.org/book/), ki pokriva, kako lahko različne NLP naloge rešujemo z uporabo NLTK. +> Mnoge klasične metode NLP so implementirane v Python knjižnici [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Na voljo je odlična [NLTK knjiga](https://www.nltk.org/book/), ki pojasnjuje, kako lahko z NLTK rešujemo različne NLP naloge. -V našem tečaju se bomo večinoma osredotočili na uporabo nevronskih mrež za NLP, NLTK pa bomo uporabili, kjer bo potrebno. +V našem tečaju se bomo večinoma osredotočili na uporabo nevronskih mrež za NLP in uporabili bomo NLTK, kjer bo potrebno. -Že smo se naučili uporabljati nevronske mreže za delo s tabelarnimi podatki in slikami. Glavna razlika med temi vrstami podatkov in besedilom je, da je besedilo zaporedje spremenljive dolžine, medtem ko je velikost vhodnih podatkov pri slikah znana vnaprej. Čeprav konvolucijske mreže lahko izločajo vzorce iz vhodnih podatkov, so vzorci v besedilu bolj zapleteni. Na primer, zanikanje je lahko ločeno od subjekta z mnogimi besedami (npr. *Ne maram pomaranč* proti *Ne maram tistih velikih pisanih okusnih pomaranč*), kar bi moralo biti še vedno interpretirano kot en vzorec. Zato za obdelavo jezika potrebujemo nove vrste nevronskih mrež, kot so *rekurentne mreže* in *transformerji*. +Že smo se naučili uporabljati nevronske mreže za delo s tabelaričnimi podatki in slikami. Glavna razlika med temi vrstami podatkov in besedilom je, da je besedilo zaporedje poljubne dolžine, medtem ko je vhodna velikost pri slikah vnaprej znana. Medtem ko konvolucijske mreže ekstrahirajo vzorce iz vhodnih podatkov, so vzorci v besedilu bolj kompleksni. Npr., negacija je lahko ločena od subjekta za poljubno število besed (npr. *Ne maram pomaranč*, v nasprotju z *Ne maram tistih velikih, pisanih, okusnih pomaranč*), in to je treba še vedno razumeti kot en vzorec. Zato moramo za obdelavo jezika uvesti nove vrste nevronskih mrež, kot so *rekurentne mreže* in *transformatorji*. ## Namestitev knjižnic @@ -28,24 +28,24 @@ V našem tečaju se bomo večinoma osredotočili na uporabo nevronskih mrež za **Za PyTorch** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **Za TensorFlow** ```bash pip install -r requirements-tf.txt ``` -> NLP s TensorFlow lahko preizkusite na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> NLP lahko preizkusite z uporabo TensorFlow na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) ## Opozorilo glede GPU -V tem poglavju bomo v nekaterih primerih trenirali precej velike modele. -* **Uporabite računalnik z GPU**: Priporočljivo je, da svoje zapiske izvajate na računalniku z omogočenim GPU, da zmanjšate čakalne čase pri delu z velikimi modeli. -* **Omejitve pomnilnika GPU**: Uporaba GPU lahko privede do situacij, ko vam zmanjka pomnilnika GPU, še posebej pri treniranju velikih modelov. -* **Poraba pomnilnika GPU**: Količina pomnilnika GPU, porabljenega med treniranjem, je odvisna od različnih dejavnikov, vključno z velikostjo minibatcha. -* **Zmanjšajte velikost minibatcha**: Če naletite na težave s pomnilnikom GPU, razmislite o zmanjšanju velikosti minibatcha v svoji kodi kot možni rešitvi. -* **Sprostitev pomnilnika GPU v TensorFlow**: Starejše različice TensorFlow morda ne sprostijo pomnilnika GPU pravilno, ko trenirate več modelov znotraj enega Python jedra. Za učinkovito upravljanje porabe pomnilnika GPU lahko TensorFlow nastavite tako, da dodeli pomnilnik GPU le po potrebi. -* **Vključitev kode**: Če želite nastaviti TensorFlow, da raste dodelitev pomnilnika GPU le, ko je to potrebno, vključite naslednjo kodo v svoje zapiske: +V tem poglavju bomo za nekatere primere trenirali precej velike modele. +* **Uporabljajte računalnik z omogočenim GPU**: priporočljivo je, da svoje zvezke izvajate na računalniku z omogočenim GPU, da zmanjšate čakanje pri delu z velikimi modeli. +* **Omejitve pomnilnika GPU**: izvajanje na GPU lahko povzroči primere, ko zmanjka pomnilnika na GPU, zlasti med treniranjem velikih modelov. +* **Poraba pomnilnika GPU**: količina pomnilnika GPU, ki se porabi med treniranjem, je odvisna od različnih dejavnikov, vključno z velikostjo minipaketa. +* **Zmanjšajte velikost minipaketa**: če se soočite s težavami z GPU pomnilnikom, razmislite o zmanjšanju velikosti minipaketa v vaši kodi kot možni rešitvi. +* **Prostost pomnilnika TensorFlow na GPU**: starejše različice TensorFlow morda ne sprostijo pravilno pomnilnika GPU, ko trenirate več modelov znotraj enega Pythona. Za učinkovito upravljanje rabe pomnilnika GPU lahko nastavite TensorFlow tako, da alocira pomnilnik GPU le po potrebi. +* **Vključitev kode**: da nastavite TensorFlow, da povečuje alokacijo pomnilnika GPU le, ko je potrebno, vključite naslednjo kodo v svoje zvezke: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Če vas zanima učenje NLP z vidika klasičnega strojnega učenja, obiščite [to zbirko lekcij](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Če vas zanima učenje NLP z vidika klasičnega strojnega učenja, obiščite [ta sklop lekcij](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ## V tem poglavju -V tem poglavju bomo spoznali: +V tem poglavju se bomo naučili o: -* [Predstavljanje besedila kot tenzorjev](13-TextRep/README.md) -* [Vgrajevanje besed](14-Emdeddings/README.md) -* [Modeliranje jezika](15-LanguageModeling/README.md) +* [Predstavljanje besedila kot tenzorji](13-TextRep/README.md) +* [Vgradnje besed (Word Embeddings)](14-Emdeddings/README.md) +* [Jezikovno modeliranje](15-LanguageModeling/README.md) * [Rekurentne nevronske mreže](16-RNN/README.md) * [Generativne mreže](17-GenerativeNetworks/README.md) -* [Transformerji](18-Transformers/README.md) +* [Transformatorji](18-Transformers/README.md) -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file +--- + + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file