diff --git a/translations/de/README.md b/translations/de/README.md index 926256c4..29029812 100644 --- a/translations/de/README.md +++ b/translations/de/README.md @@ -1,140 +1,155 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Künstliche Intelligenz für Anfänger - Ein Lehrplan +# Künstliche Intelligenz für Anfänger – Ein Curriculum -|![ Sketchnote von [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| KI für Anfänger - _Sketchnote von [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote von [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| KI für Anfänger – _Sketchnote von [@girlie_mac](https://twitter.com/girlie_mac)_ | -Entdecken Sie die Welt der **Künstlichen Intelligenz** (KI) mit unserem 12-wöchigen, 24-Lektion umfassenden Lehrplan! Er umfasst praktische Lektionen, Quizze und Labore. Der Lehrplan ist anfängerfreundlich und behandelt Werkzeuge wie TensorFlow und PyTorch sowie ethische Aspekte der KI. +Entdecken Sie die Welt der **Künstlichen Intelligenz** (KI) mit unserem 12-wöchigen Curriculum, das aus 24 Lektionen besteht! Es enthält praktische Lektionen, Quizze und Labore. Das Curriculum ist anfängerfreundlich und behandelt Tools wie TensorFlow und PyTorch sowie ethische Aspekte der KI. -## Was Sie lernen werden +## Was Sie lernen werden -**[Mindmap des Kurses](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Mindmap des Kurses](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -In diesem Lehrplan werden Sie lernen: +In diesem Curriculum lernen Sie: -* Verschiedene Ansätze zur Künstlichen Intelligenz, einschließlich des "guten alten" symbolischen Ansatzes mit **Wissensrepräsentation** und Schlussfolgerungen ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Neuronale Netzwerke** und **Deep Learning**, die im Zentrum der modernen KI stehen. Wir werden die Konzepte hinter diesen wichtigen Themen anhand von Code in zwei der beliebtesten Frameworks - [TensorFlow](http://Tensorflow.org) und [PyTorch](http://pytorch.org) - veranschaulichen. -* **Neuronale Architekturen** für die Arbeit mit Bildern und Texten. Wir werden aktuelle Modelle behandeln, aber möglicherweise nicht die neuesten Entwicklungen. -* Weniger populäre KI-Ansätze, wie **Genetische Algorithmen** und **Multi-Agenten-Systeme**. +* Verschiedene Ansätze der Künstlichen Intelligenz, einschließlich des "klassischen" symbolischen Ansatzes mit **Wissensrepräsentation** und Schlussfolgerung ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neuronale Netze** und **Deep Learning**, die im Zentrum moderner KI stehen. Wir veranschaulichen die Konzepte hinter diesen wichtigen Themen mit Code in zwei der beliebtesten Frameworks – [TensorFlow](http://Tensorflow.org) und [PyTorch](http://pytorch.org). +* **Neuronale Architekturen** für die Arbeit mit Bildern und Text. Wir behandeln aktuelle Modelle, könnten aber bei den neuesten Entwicklungen etwas hinterherhinken. +* Weniger populäre KI-Ansätze wie **Genetische Algorithmen** und **Multi-Agenten-Systeme**. -Was wir in diesem Lehrplan nicht behandeln werden: +Was wir in diesem Curriculum nicht behandeln: -> [Finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn-Sammlung](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Geschäftsanwendungen der **KI im Geschäft**. Erwägen Sie, den Lernpfad [Einführung in KI für Geschäftsanwender](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) auf Microsoft Learn zu belegen oder die **AI Business School** ([AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)), die in Zusammenarbeit mit [INSEAD](https://www.insead.edu/) entwickelt wurde. -* **Klassisches maschinelles Lernen**, das in unserem [Lehrplan für maschinelles Lernen für Anfänger](http://github.com/Microsoft/ML-for-Beginners) gut beschrieben ist. -* Praktische KI-Anwendungen, die mit **[Kognitiven Diensten](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** erstellt wurden. Dafür empfehlen wir, mit den Modulen von Microsoft Learn für [Bildverarbeitung](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natürliche Sprachverarbeitung](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative KI mit Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** und anderen zu beginnen. -* Spezifische ML **Cloud-Frameworks**, wie [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) oder [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Ziehen Sie in Betracht, die Lernpfade [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) und [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) zu nutzen. -* **Konversationelle KI** und **Chatbots**. Es gibt einen separaten Lernpfad [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), und Sie können auch [diesen Blogbeitrag](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) für weitere Details konsultieren. -* **Tiefe Mathematik** hinter Deep Learning. Dafür empfehlen wir das Buch [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) von Ian Goodfellow, Yoshua Bengio und Aaron Courville, das auch online unter [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) verfügbar ist. +* Geschäftsanwendungen von **KI im Business**. Ziehen Sie in Betracht, den Lernpfad [Einführung in KI für Geschäftsanwender](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) auf Microsoft Learn oder die [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum) zu absolvieren, die in Zusammenarbeit mit [INSEAD](https://www.insead.edu/) entwickelt wurde. +* **Klassisches maschinelles Lernen**, das in unserem [Maschinelles Lernen für Anfänger Curriculum](http://github.com/Microsoft/ML-for-Beginners) gut beschrieben ist. +* Praktische KI-Anwendungen, die mit **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** erstellt wurden. Dafür empfehlen wir, mit den Microsoft Learn-Modulen für [Vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [Natural Language Processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative KI mit Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** und anderen zu beginnen. +* Spezifische ML-**Cloud-Frameworks** wie [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) oder [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Ziehen Sie die Lernpfade [Erstellen und Betreiben von maschinellen Lernlösungen mit Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) und [Erstellen und Betreiben von maschinellen Lernlösungen mit Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) in Betracht. +* **Konversationelle KI** und **Chatbots**. Es gibt einen separaten Lernpfad [Erstellen von konversationellen KI-Lösungen](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), und Sie können auch [diesen Blogbeitrag](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) für weitere Details konsultieren. +* **Tiefgehende Mathematik** hinter Deep Learning. Dafür empfehlen wir [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) von Ian Goodfellow, Yoshua Bengio und Aaron Courville, das auch online verfügbar ist unter [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -Für eine sanfte Einführung in die Themen _KI in der Cloud_ könnten Sie den Lernpfad [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) in Betracht ziehen. +Für eine sanfte Einführung in _KI in der Cloud_ können Sie den Lernpfad [Erste Schritte mit künstlicher Intelligenz auf Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) in Betracht ziehen. -# Inhalt +# Inhalt -| | Link zur Lektion | PyTorch/Keras/TensorFlow | Lab | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Kurssetup](./lessons/0-course-setup/setup.md) | [Entwicklungsumgebung einrichten](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Einführung in KI**](./lessons/1-Intro/README.md) | | | -| 01 | [Einführung und Geschichte der KI](./lessons/1-Intro/README.md) | - | - | -| II | **Symbolische KI** | -| 02 | [Wissenrepräsentation und Expertensysteme](./lessons/2-Symbolic/README.md) | [Expertensysteme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Konzeptgraph](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Einführung in neuronale Netzwerke**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Perzeptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notizbuch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Mehrschichtiges Perzeptron und Erstellen unseres eigenen Frameworks](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notizbuch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Einführung in Frameworks (PyTorch/TensorFlow) und Überanpassung](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Computer Vision**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Entdecken Sie Computer Vision auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Einführung in die Computer Vision. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Labor](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Konvolutionale Neuronale Netzwerke](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN-Architekturen](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Labor](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Vortrainierte Netzwerke und Transferlernen](./lessons/4-ComputerVision/08-TransferLearning/README.md) und [Trainingstricks](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Labor](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| | Lektion Link | PyTorch/Keras/TensorFlow | Labor | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Kurs-Setup](./lessons/0-course-setup/setup.md) | [Einrichtung Ihrer Entwicklungsumgebung](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Einführung in KI**](./lessons/1-Intro/README.md) | | | +| 01 | [Einführung und Geschichte der KI](./lessons/1-Intro/README.md) | - | - | +| II | **Symbolische KI** | +| 02 | [Wissensrepräsentation und Expertensysteme](./lessons/2-Symbolic/README.md) | [Expertensysteme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Konzeptgraph](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Einführung in neuronale Netze**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perzeptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Labor](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Mehrschichtiges Perzeptron und Erstellung eines eigenen Frameworks](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Labor](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Einführung in Frameworks (PyTorch/TensorFlow) und Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Labor](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Computer Vision**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Erkunden Sie Computer Vision auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Einführung in Computer Vision. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Labor](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Convolutional Neural Networks](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN-Architekturen](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Labor](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Vortrainierte Netzwerke und Transferlernen](./lessons/4-ComputerVision/08-TransferLearning/README.md) und [Trainingstricks](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | | 09 | [Autoencoder und VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Generative Adversarial Networks & Stilübertragung](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | -| 11 | [Objekterkennung](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Labor](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Semantische Segmentierung. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | -| V | [**Verarbeitung natürlicher Sprache**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Erforschen Sie die Verarbeitung natürlicher Sprache auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| -| 13 | [Textdarstellung. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [Semantische Wort-Einbettungen. Word2Vec und GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Sprachmodellierung. Trainieren Sie Ihre eigenen Einbettungen](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Labor](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 10 | [Generative Adversarial Networks & Künstlerischer Stiltransfer](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Objekterkennung](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantische Segmentierung. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Verarbeitung natürlicher Sprache**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Erkunde die Verarbeitung natürlicher Sprache auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Textrepräsentation. BoW/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Semantische Wort-Embeddings. Word2Vec und GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Sprachmodellierung. Eigene Embeddings trainieren](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | | 16 | [Rekurrente Neuronale Netze](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Generative Rekurrente Netze](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Labor](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | -| 18 | [Transformatoren. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [Erkennung benannter Entitäten](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Labor](./lessons/5-NLP/19-NER/lab/README.md) | +| 17 | [Generative Rekurrente Netze](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Named Entity Recognition](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | | 20 | [Große Sprachmodelle, Prompt-Programmierung und Few-Shot-Aufgaben](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | | VI | **Andere KI-Techniken** || | | 21 | [Genetische Algorithmen](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Deep Reinforcement Learning](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Multi-Agent-Systeme](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **KI-Ethische Aspekte** | | | -| 24 | [KI-Ethische Grundsätze und verantwortungsvolle KI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Grundsätze für verantwortungsvolle KI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| 22 | [Tiefes Verstärkungslernen](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Multi-Agenten-Systeme](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **KI-Ethik** | | | +| 24 | [KI-Ethik und Verantwortungsvolle KI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Prinzipien für verantwortungsvolle KI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | | IX | **Extras** | | | -| 25 | [Multi-Modal-Netzwerke, CLIP und VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 25 | [Multi-Modale Netzwerke, CLIP und VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | ## Jede Lektion enthält -* Vorbereitende Materialien -* Ausführbare Jupyter-Notebooks, die oft spezifisch für das Framework (**PyTorch** oder **TensorFlow**) sind. Das ausführbare Notebook enthält auch viele theoretische Inhalte, daher sollten Sie mindestens eine Version des Notebooks (entweder PyTorch oder TensorFlow) durchgehen, um das Thema zu verstehen. +* Vorbereitendes Lesematerial +* Ausführbare Jupyter-Notebooks, die oft spezifisch für das Framework (**PyTorch** oder **TensorFlow**) sind. Die ausführbaren Notebooks enthalten auch viele theoretische Inhalte, daher ist es wichtig, mindestens eine Version des Notebooks (entweder PyTorch oder TensorFlow) durchzugehen, um das Thema zu verstehen. * **Labs**, die für einige Themen verfügbar sind und Ihnen die Möglichkeit geben, das Gelernte auf ein spezifisches Problem anzuwenden. -* Einige Abschnitte enthalten Links zu [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) Modulen, die verwandte Themen abdecken. +* Einige Abschnitte enthalten Links zu [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)-Modulen, die verwandte Themen behandeln. ## Erste Schritte -- Wir haben eine [Einrichtungslektion](./lessons/0-course-setup/setup.md) erstellt, um Ihnen bei der Einrichtung Ihrer Entwicklungsumgebung zu helfen. - Für Lehrende haben wir ebenfalls eine [Lehrpläne-Einrichtungslektion](./lessons/0-course-setup/for-teachers.md) erstellt! -- So [führen Sie den Code in VSCode oder Codepace aus](./lessons/0-course-setup/how-to-run.md) +- Wir haben eine [Setup-Lektion](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) erstellt, um Ihnen bei der Einrichtung Ihrer Entwicklungsumgebung zu helfen. - Für Lehrkräfte haben wir auch eine [Curricula-Setup-Lektion](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) erstellt! +- Wie man [den Code in VSCode oder einem Codespace ausführt](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) -Befolgen Sie diese Schritte: +Folgen Sie diesen Schritten: -Forken Sie das Repository: Klicken Sie auf die Schaltfläche "Fork" in der oberen rechten Ecke dieser Seite. +Forken Sie das Repository: Klicken Sie auf die Schaltfläche "Fork" oben rechts auf dieser Seite. Klonen Sie das Repository: `git clone https://github.com/microsoft/AI-For-Beginners.git` -Vergessen Sie nicht, dieses Repo zu star (🌟), um es später leichter zu finden. +Vergessen Sie nicht, dieses Repository mit einem Stern (🌟) zu markieren, damit Sie es später leichter finden. -## Lernen Sie andere Lernende kennen +## Treffen Sie andere Lernende -Treten Sie unserem [offiziellen KI-Discord-Server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) bei, um andere Lernende, die diesen Kurs belegen, zu treffen und sich zu vernetzen sowie Unterstützung zu erhalten. +Treten Sie unserem [offiziellen AI-Discord-Server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) bei, um andere Lernende dieses Kurses zu treffen und sich zu vernetzen sowie Unterstützung zu erhalten. -## Quizze +Wenn Sie Feedback zu Produkten oder Fragen während des Aufbaus haben, besuchen Sie unser [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) -> **Eine Anmerkung zu Quizzen**: Alle Quizze befinden sich im Ordner Quiz-app in etc\quiz-app. Sie sind von den Lektionen aus verlinkt. Die Quiz-App kann lokal ausgeführt oder auf Azure bereitgestellt werden; folgen Sie den Anweisungen im `quiz-app` Ordner. Sie werden schrittweise lokalisiert. +## Quizze +> **Eine Anmerkung zu den Quiz**: Alle Quiz befinden sich im Ordner Quiz-app unter etc\quiz-app. Sie sind mit den Lektionen verknüpft. Die Quiz-App kann lokal ausgeführt oder auf Azure bereitgestellt werden; folgen Sie den Anweisungen im Ordner `quiz-app`. Sie werden nach und nach lokalisiert. +## Hilfe gesucht -## Hilfe gewünscht - -Haben Sie Vorschläge oder haben Sie Schreib- oder Codefehler gefunden? Erstellen Sie ein Issue oder einen Pull Request. +Hast du Vorschläge oder Fehler in der Rechtschreibung oder im Code gefunden? Erstelle ein Issue oder einen Pull Request. ## Besonderer Dank -* **✍️ Hauptautor:** [Dmitry Soshnikov](http://soshnikov.com), PhD -* **🔥 Redakteur:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Sketchnote-Illustrator:** [Tomomi Imura](https://twitter.com/girlie_mac) -* **✅ Quiz-Ersteller:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 Hauptbeitragsleistende:** [Evgenii Pishchik](https://github.com/Pe4enIks) +* **✍️ Hauptautor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Redakteurin:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Sketchnote-Illustratorin:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Quiz-Erstellerin:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Hauptbeitragende:** [Evgenii Pishchik](https://github.com/Pe4enIks) ## Weitere Lehrpläne -Unser Team produziert auch andere Lehrpläne! Schauen Sie sich an: +Unser Team erstellt auch andere Lehrpläne! Schau dir diese an: -* [Data Science für Anfänger](https://aka.ms/ds4beginners) -* [**Version 2.0** Generative KI für Anfänger](https://aka.ms/genai-beginners) -* [**NEU** Cybersicherheit für Anfänger](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Webentwicklung für Anfänger](https://aka.ms/webdev-beginners) -* [IoT für Anfänger](https://aka.ms/iot-beginners) -* [Maschinelles Lernen für Anfänger](https://aka.ms/ml4beginners) -* [XR-Entwicklung für Anfänger](https://aka.ms/xr-dev-for-beginners) -* [GitHub Copilot für KI-gestütztes Programmieren meistern](https://aka.ms/GitHubCopilotAI) +- [Generative KI für Anfänger](https://aka.ms/genai-beginners) +- [Generative KI für Anfänger .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative KI mit JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative KI mit Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [KI für Anfänger](https://aka.ms/ai-beginners) +- [Datenwissenschaft für Anfänger](https://aka.ms/datascience-beginners) +- [Maschinelles Lernen für Anfänger](https://aka.ms/ml-beginners) +- [Cybersicherheit für Anfänger](https://github.com/microsoft/Security-101) +- [Webentwicklung für Anfänger](https://aka.ms/webdev-beginners) +- [IoT für Anfänger](https://aka.ms/iot-beginners) +- [XR-Entwicklung für Anfänger](https://github.com/microsoft/xr-development-for-beginners) +- [GitHub Copilot meistern für agentische Nutzung](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [GitHub Copilot meistern für C#/.NET-Entwickler](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Wähle dein eigenes Copilot-Abenteuer](https://github.com/microsoft/CopilotAdventures) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/SECURITY.md b/translations/de/SECURITY.md index 8e0ecb21..023e8110 100644 --- a/translations/de/SECURITY.md +++ b/translations/de/SECURITY.md @@ -1,40 +1,49 @@ + ## Sicherheit -Microsoft nimmt die Sicherheit unserer Softwareprodukte und -dienste ernst, einschließlich aller Quellcode-Repositorys, die über unsere GitHub-Organisationen verwaltet werden, darunter [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) und [unsere GitHub-Organisationen](https://opensource.microsoft.com/). +Microsoft nimmt die Sicherheit seiner Softwareprodukte und -dienste sehr ernst, einschließlich aller Quellcode-Repositories, die über unsere GitHub-Organisationen verwaltet werden. Dazu gehören [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) und [unsere GitHub-Organisationen](https://opensource.microsoft.com/). -Wenn Sie glauben, eine Sicherheitsanfälligkeit in einem Microsoft-eigenen Repository gefunden zu haben, die [Microsofts Definition einer Sicherheitsanfälligkeit](https://aka.ms/opensource/security/definition) erfüllt, melden Sie dies bitte wie unten beschrieben. +Wenn Sie der Meinung sind, eine Sicherheitslücke in einem von Microsoft verwalteten Repository gefunden zu haben, die [Microsofts Definition einer Sicherheitslücke](https://aka.ms/opensource/security/definition) entspricht, melden Sie diese bitte wie unten beschrieben. -## Meldung von Sicherheitsproblemen +## Melden von Sicherheitsproblemen -**Bitte melden Sie Sicherheitsanfälligkeiten nicht über öffentliche GitHub-Issues.** +**Bitte melden Sie Sicherheitslücken nicht über öffentliche GitHub-Issues.** -Stattdessen melden Sie diese bitte an das Microsoft Security Response Center (MSRC) unter [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). +Stattdessen melden Sie diese bitte dem Microsoft Security Response Center (MSRC) unter [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Wenn Sie lieber ohne Anmeldung einreichen möchten, senden Sie eine E-Mail an [secure@microsoft.com](mailto:secure@microsoft.com). Wenn möglich, verschlüsseln Sie Ihre Nachricht mit unserem PGP-Schlüssel; bitte laden Sie ihn von der [Microsoft Security Response Center PGP Key-Seite](https://aka.ms/opensource/security/pgpkey) herunter. +Falls Sie lieber ohne Anmeldung einreichen möchten, senden Sie eine E-Mail an [secure@microsoft.com](mailto:secure@microsoft.com). Wenn möglich, verschlüsseln Sie Ihre Nachricht mit unserem PGP-Schlüssel; laden Sie diesen von der [Microsoft Security Response Center PGP Key-Seite](https://aka.ms/opensource/security/pgpkey) herunter. -Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Wenn Sie aus irgendeinem Grund keine Antwort erhalten, folgen Sie bitte per E-Mail nach, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen finden Sie unter [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Falls dies aus irgendeinem Grund nicht geschieht, folgen Sie bitte per E-Mail nach, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen finden Sie unter [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). -Bitte fügen Sie die angeforderten Informationen aufgelistet unten (so viel wie Sie bereitstellen können) hinzu, um uns zu helfen, die Natur und den Umfang des möglichen Problems besser zu verstehen: +Bitte geben Sie die unten aufgeführten Informationen (so weit wie möglich) an, um uns zu helfen, die Art und den Umfang des möglichen Problems besser zu verstehen: - * Art des Problems (z.B. Bufferüberlauf, SQL-Injection, Cross-Site-Scripting usw.) - * Vollständige Pfade der Quellcodedatei(en), die mit dem Auftreten des Problems zusammenhängen - * Der Standort des betroffenen Quellcodes (Tag/Branch/Commit oder direkte URL) - * Alle speziellen Konfigurationen, die erforderlich sind, um das Problem zu reproduzieren - * Schritt-für-Schritt-Anleitungen zur Reproduktion des Problems - * Proof-of-Concept oder Exploit-Code (wenn möglich) - * Auswirkungen des Problems, einschließlich wie ein Angreifer das Problem ausnutzen könnte + * Art des Problems (z. B. Buffer Overflow, SQL-Injection, Cross-Site-Scripting usw.) + * Vollständige Pfade der Quellcodedatei(en), die mit dem Problem in Zusammenhang stehen + * Der Ort des betroffenen Quellcodes (Tag/Branch/Commit oder direkte URL) + * Besondere Konfigurationen, die erforderlich sind, um das Problem zu reproduzieren + * Schritt-für-Schritt-Anleitung zur Reproduktion des Problems + * Proof-of-Concept- oder Exploit-Code (falls möglich) + * Auswirkungen des Problems, einschließlich der möglichen Ausnutzung durch einen Angreifer -Diese Informationen helfen uns, Ihren Bericht schneller zu triagieren. +Diese Informationen helfen uns, Ihren Bericht schneller zu priorisieren. -Wenn Sie für ein Bug-Bounty berichten, können vollständigere Berichte zu einer höheren Belohnung führen. Bitte besuchen Sie unsere Seite [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) für weitere Details zu unseren aktiven Programmen. +Wenn Sie im Rahmen eines Bug-Bounty-Programms berichten, können vollständigere Berichte zu einer höheren Prämie führen. Besuchen Sie unsere Seite zum [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty), um weitere Details zu unseren aktiven Programmen zu erhalten. ## Bevorzugte Sprachen -Wir bevorzugen, dass alle Kommunikationen in Englisch erfolgen. +Wir bevorzugen alle Kommunikation in Englisch. ## Richtlinie -Microsoft folgt dem Prinzip der [Koordinierten Verwundbarkeitsoffenlegung](https://aka.ms/opensource/security/cvd). +Microsoft folgt dem Prinzip der [koordinierten Offenlegung von Sicherheitslücken](https://aka.ms/opensource/security/cvd). **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/CODE_OF_CONDUCT.md b/translations/de/etc/CODE_OF_CONDUCT.md index d74cc0a4..9311c9c1 100644 --- a/translations/de/etc/CODE_OF_CONDUCT.md +++ b/translations/de/etc/CODE_OF_CONDUCT.md @@ -1,3 +1,12 @@ + # Microsoft Open Source Verhaltenskodex Dieses Projekt hat den [Microsoft Open Source Verhaltenskodex](https://opensource.microsoft.com/codeofconduct/) übernommen. @@ -6,7 +15,7 @@ Ressourcen: - [Microsoft Open Source Verhaltenskodex](https://opensource.microsoft.com/codeofconduct/) - [Microsoft Verhaltenskodex FAQ](https://opensource.microsoft.com/codeofconduct/faq/) -- Kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei Fragen oder Bedenken. +- Kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei Fragen oder Bedenken **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/etc/CONTRIBUTING.md b/translations/de/etc/CONTRIBUTING.md index 84a4786e..ae9ec3b1 100644 --- a/translations/de/etc/CONTRIBUTING.md +++ b/translations/de/etc/CONTRIBUTING.md @@ -1,20 +1,29 @@ -# Mitwirken + +# Beiträge -Dieses Projekt freut sich über Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, in der erklärt wird, dass Sie das Recht haben, und tatsächlich auch, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren. Für weitere Informationen besuchen Sie bitte https://cla.microsoft.com. +Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, die erklärt, dass Sie das Recht haben und tatsächlich gewähren, uns die Rechte zur Nutzung Ihres Beitrags zu übertragen. Weitere Details finden Sie unter https://cla.microsoft.com. -Wenn Sie einen Pull Request einreichen, wird ein CLA-Bot automatisch bestimmen, ob Sie eine CLA bereitstellen müssen, und den PR entsprechend kennzeichnen (z. B. Label, Kommentar). Befolgen Sie einfach die Anweisungen des Bots. Sie müssen dies nur einmal für alle Repositories tun, die unsere CLA verwenden. +Wenn Sie eine Pull-Anfrage einreichen, wird ein CLA-Bot automatisch feststellen, ob Sie eine CLA bereitstellen müssen, und die PR entsprechend kennzeichnen (z. B. Label, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Dies müssen Sie nur einmal für alle Repositories tun, die unsere CLA verwenden. -Dieses Projekt hat den [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) übernommen. Für weitere Informationen siehe die [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) oder kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei weiteren Fragen oder Anmerkungen. +Dieses Projekt hat den [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) übernommen. Weitere Informationen finden Sie in den [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) oder kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei zusätzlichen Fragen oder Kommentaren. -# Suche nach Beiträgen +# Gesuchte Beiträge -Wir suchen derzeit aktiv nach Beiträgen zu folgenden Themen: +Wir suchen derzeit aktiv nach Beiträgen zu den folgenden Themen: - [ ] Abschnitt über Deep Reinforcement Learning schreiben - [ ] Abschnitt + Notebook zur Objekterkennung verbessern - [ ] PyTorch Lightning (für [diesen Abschnitt](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Abschnitt + Beispiele zur Named Entity Recognition schreiben -- [ ] Beispiele für das Training unserer eigenen Embeddings für [diesen Abschnitt](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) erstellen +- [ ] Abschnitt + Beispiele zu Named Entity Recognition schreiben +- [ ] Beispiele erstellen, um eigene Embeddings für [diesen Abschnitt](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) zu trainieren **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/etc/Mindmap.md b/translations/de/etc/Mindmap.md index 450bf631..a69d8289 100644 --- a/translations/de/etc/Mindmap.md +++ b/translations/de/etc/Mindmap.md @@ -1,24 +1,33 @@ + # KI ## [Einführung in KI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - Definition von KI - Geschichte der KI - - Ansätze zur KI + - Ansätze der KI - Top-down/Symbolisch - - Bottom-up/Neural + - Bottom-up/Neuronale - Evolutionär - - Synergetische / Emergent KI + - Synergetisch / Entstehende KI - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) ## [Symbolische KI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - - Wissensdarstellung + - Wissensrepräsentation - [Expertensysteme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - [Ontologien](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - Semantisches Web -## [Neuronale Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) +## [Neuronale Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - [Perzeptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - - [Mehrschichtige Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Mehrschichtige Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - [Einführung in Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) @@ -26,46 +35,48 @@ ## [Computer Vision](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - Auf MS Learn - - [KI-Grundlagen: Erkunde Computer Vision](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [KI-Grundlagen: Einführung in Computer Vision](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - [CV mit PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - [CV mit TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - [Einführung in CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - - [Faltungsnetzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Konvolutionale Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - [CNN-Architekturen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [Transferlernen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [Trainingstricks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Transfer-Lernen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trainings-Tricks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - [Autoencoder und VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - [Generative Adversarial Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - - [Stilübertragung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Stiltransfer](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - [Objekterkennung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - [Segmentierung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) -## [Verarbeitung natürlicher Sprache](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) +## [Verarbeitung natürlicher Sprache (NLP)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - Auf MS Learn - - [KI-Grundlagen: Erkunde NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [KI-Grundlagen: Einführung in NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - [NLP mit PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - [NLP mit TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Textdarstellung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - [Textrepräsentation](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - Bag of Words - TF/IDF - [Semantische Einbettungen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - [Sprachmodellierung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - - [Rekurrente Neuronale Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - [Rekurrente Neuronale Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU - - [Generative Rekurrente Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Generative Rekurrente Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - [Transformatoren und BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - [Erkennung benannter Entitäten](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - [Textgenerierung und GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + ## Andere Techniken - [Genetische Algorithmen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - - [Tiefes Verstärkendes Lernen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Deep Reinforcement Learning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - [Multi-Agenten-Systeme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) -## [KI-Ethische Grundsätze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) +## [KI-Ethik](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - [MS Learn über verantwortungsvolle KI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + ## Extras - [Multimodale Netzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) @@ -73,4 +84,4 @@ - VQ-GAN **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/SUPPORT.md b/translations/de/etc/SUPPORT.md index c1d1f686..6cc0a58a 100644 --- a/translations/de/etc/SUPPORT.md +++ b/translations/de/etc/SUPPORT.md @@ -1,16 +1,23 @@ + # Unterstützung ## So melden Sie Probleme und erhalten Hilfe -Dieses Projekt verwendet GitHub Issues, um Fehler und Funktionsanfragen zu verfolgen. Bitte durchsuchen Sie die vorhandenen -Probleme, bevor Sie neue Probleme melden, um Duplikate zu vermeiden. Für neue Probleme melden Sie Ihren Fehler oder -Ihre Funktionsanfrage als neues Issue. +Dieses Projekt verwendet GitHub Issues, um Fehler und Funktionsanfragen zu verfolgen. Bitte durchsuchen Sie die vorhandenen Issues, bevor Sie neue erstellen, um Duplikate zu vermeiden. Für neue Issues melden Sie Ihren Fehler oder Ihre Funktionsanfrage als neues Issue. Für Hilfe und Fragen zur Nutzung dieses Projekts nutzen Sie bitte die Diskussionsforen. -## Microsoft Support-Richtlinie +## Microsoft-Support-Richtlinie -Die Unterstützung für dieses Projekt ist auf die oben aufgeführten Ressourcen beschränkt. +Die Unterstützung für dieses Projekt beschränkt sich auf die oben aufgeführten Ressourcen. **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/etc/TRANSLATIONS.md b/translations/de/etc/TRANSLATIONS.md index 19a6abf1..a57be792 100644 --- a/translations/de/etc/TRANSLATIONS.md +++ b/translations/de/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ + # Beiträge durch Übersetzung von Lektionen -Wir freuen uns über Übersetzungen der Lektionen in diesem Curriculum! +Wir freuen uns über Übersetzungen der Lektionen in diesem Lehrplan! ## Richtlinien -In jedem Lektion-Ordner und im Ordner der Lektionseinführung gibt es Unterordner, die die übersetzten Markdown-Dateien enthalten. +In jedem Lektionen-Ordner und Einführungsordner der Lektionen gibt es Unterordner, die die übersetzten Markdown-Dateien enthalten. -> Hinweis: Bitte übersetze keinen Code in den Beispiel-Code-Dateien; die einzigen Dinge, die übersetzt werden sollen, sind README, Aufgaben und die Quizze. Danke! +> Hinweis: Bitte übersetzen Sie keinen Code in den Codebeispieldateien; die einzigen Dinge, die übersetzt werden sollen, sind README, Aufgaben und die Quizfragen. Danke! -Übersetzte Dateien sollten diesem Namensschema folgen: +Übersetzte Dateien sollten folgendem Namensschema folgen: **README._[language]_.md** -wobei _[language]_ eine zweibuchstabige Sprachabkürzung gemäß dem ISO 639-1 Standard ist (z.B. `README.es.md` für Spanisch und `README.nl.md` für Niederländisch). +wobei _[language]_ eine zweibuchstabige Sprachabkürzung gemäß dem ISO 639-1-Standard ist (z. B. `README.es.md` für Spanisch und `README.nl.md` für Niederländisch). **assignment._[language]_.md** -Ähnlich wie bei den Readme-Dateien, bitte auch die Aufgaben übersetzen. +Ähnlich wie bei den Readme-Dateien, übersetzen Sie bitte auch die Aufgaben. -**Quizze** +**Quizfragen** -1. Füge deine Übersetzung zur Quiz-App hinzu, indem du eine Datei hier hinzufügst: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, mit der richtigen Namenskonvention (en.json, fr.json). **Bitte lokalisiere jedoch die Wörter 'true' oder 'false' nicht. Danke!** +1. Fügen Sie Ihre Übersetzung zur Quiz-App hinzu, indem Sie hier eine Datei hinzufügen: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, mit dem richtigen Namensschema (en.json, fr.json). **Bitte lokalisieren Sie jedoch nicht die Wörter 'true' oder 'false'. Danke!** -2. Füge deinen Sprachcode zum Dropdown-Menü in der App.vue-Datei der Quiz-App hinzu. +2. Fügen Sie Ihren Sprachcode zum Dropdown-Menü in der App.vue-Datei der Quiz-App hinzu. -3. Bearbeite die [translations index.js Datei](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) der Quiz-App, um deine Sprache hinzuzufügen. +3. Bearbeiten Sie die [translations index.js Datei](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) der Quiz-App, um Ihre Sprache hinzuzufügen. -4. Schließlich bearbeite ALLE Quiz-Links in deinen übersetzten README.md-Dateien, damit sie direkt auf dein übersetztes Quiz verweisen: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 wird zu https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. Bearbeiten Sie schließlich ALLE Quiz-Links in Ihren übersetzten README.md-Dateien, damit sie direkt auf Ihr übersetztes Quiz verweisen: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 wird zu https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id **DANKE** -Wir schätzen deine Bemühungen sehr! +Wir schätzen Ihre Bemühungen wirklich sehr! **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/etc/quiz-app/README.md b/translations/de/etc/quiz-app/README.md index 875897e7..0c36d298 100644 --- a/translations/de/etc/quiz-app/README.md +++ b/translations/de/etc/quiz-app/README.md @@ -1,18 +1,27 @@ -# Quizze + +# Quizfragen -Diese Quizze sind die Vor- und Nach-Lecture-Quizze für das KI-Curriculum unter https://aka.ms/ai-beginners +Diese Quizfragen sind die Vor- und Nachbereitungsquizfragen für den KI-Lehrplan unter https://aka.ms/ai-beginners -## Hinzufügen eines übersetzten Quizsets +## Hinzufügen eines übersetzten Quiz-Sets -Fügen Sie eine Quizübersetzung hinzu, indem Sie passende Quizstrukturen in den `assets/translations`-Ordnern erstellen. Die kanonischen Quizze befinden sich in `assets/translations/en`. Die Quizze sind in mehrere Gruppen nach Lektionen unterteilt. Stellen Sie sicher, dass die Nummerierung mit dem entsprechenden Quizabschnitt übereinstimmt. In diesem Curriculum gibt es insgesamt 40 Quizze, beginnend bei 0. +Füge eine Quiz-Übersetzung hinzu, indem du passende Quizstrukturen in den Ordnern `assets/translations` erstellst. Die ursprünglichen Quizfragen befinden sich in `assets/translations/en`. Die Quizfragen sind nach Lektionen in mehrere Gruppen unterteilt. Achte darauf, die Nummerierung mit dem entsprechenden Quizabschnitt abzugleichen. Insgesamt gibt es 40 Quizfragen in diesem Lehrplan, beginnend mit der Nummer 0. -Nach der Bearbeitung der Übersetzungen bearbeiten Sie die index.js-Datei im Übersetzungsordner, um alle Dateien gemäß den Konventionen in `en` zu importieren. +Nach dem Bearbeiten der Übersetzungen bearbeite die Datei `index.js` im Übersetzungsordner, um alle Dateien gemäß den Konventionen in `en` zu importieren. -Bearbeiten Sie die `index.js`-Datei in `assets/translations`, um die neuen übersetzten Dateien zu importieren. +Bearbeite die Datei `index.js` in `assets/translations`, um die neuen übersetzten Dateien zu importieren. -Dann bearbeiten Sie das Dropdown-Menü in `App.vue` in dieser App, um Ihre Sprache hinzuzufügen. Passen Sie die lokalisierte Abkürzung an den Ordnernamen Ihrer Sprache an. +Bearbeite anschließend das Dropdown-Menü in `App.vue` in dieser App, um deine Sprache hinzuzufügen. Passe die lokalisierte Abkürzung an den Ordnernamen deiner Sprache an. -Schließlich bearbeiten Sie alle Quizlinks in den übersetzten Lektionen, falls vorhanden, um diese Lokalisierung als Abfrageparameter einzuschließen: `?loc=fr` zum Beispiel. +Schließlich bearbeite alle Quiz-Links in den übersetzten Lektionen, falls vorhanden, um diese Lokalisierung als Abfrageparameter hinzuzufügen: z. B. `?loc=fr`. ## Projektsetup @@ -26,13 +35,13 @@ npm install npm run serve ``` -### Konstruiert und minimiert für die Produktion +### Kompiliert und minimiert für die Produktion ``` npm run build ``` -### Linter und behebt Dateien +### Überprüft und behebt Dateien ``` npm run lint @@ -42,55 +51,56 @@ npm run lint Siehe [Konfigurationsreferenz](https://cli.vuejs.org/config/). -Credits: Vielen Dank an die ursprüngliche Version dieser Quiz-App: https://github.com/arpan45/simple-quiz-vue +Credits: Dank an die ursprüngliche Version dieser Quiz-App: https://github.com/arpan45/simple-quiz-vue -## Bereitstellung in Azure +## Bereitstellung auf Azure -Hier ist eine Schritt-für-Schritt-Anleitung, um Ihnen den Einstieg zu erleichtern: +Hier ist eine Schritt-für-Schritt-Anleitung, um dir den Einstieg zu erleichtern: -1. Forken Sie ein GitHub-Repository -Stellen Sie sicher, dass Ihr Code für die statische Web-App in Ihrem GitHub-Repository vorhanden ist. Forken Sie dieses Repository. +1. Forke ein GitHub-Repository +Stelle sicher, dass sich der Code deiner statischen Web-App in deinem GitHub-Repository befindet. Forke dieses Repository. -2. Erstellen Sie eine Azure Static Web App -- Erstellen Sie ein [Azure-Konto](http://azure.microsoft.com) -- Gehen Sie zum [Azure-Portal](https://portal.azure.com) -- Klicken Sie auf „Ressource erstellen“ und suchen Sie nach „Static Web App“. -- Klicken Sie auf „Erstellen“. +2. Erstelle eine Azure Static Web App +- Erstelle ein [Azure-Konto](http://azure.microsoft.com) +- Gehe zum [Azure-Portal](https://portal.azure.com) +- Klicke auf „Ressource erstellen“ und suche nach „Static Web App“. +- Klicke auf „Erstellen“. -3. Konfigurieren Sie die Static Web App -- Grundlagen: Abonnement: Wählen Sie Ihr Azure-Abonnement aus. -- Ressourcengruppe: Erstellen Sie eine neue Ressourcengruppe oder verwenden Sie eine vorhandene. -- Name: Geben Sie einen Namen für Ihre statische Web-App an. -- Region: Wählen Sie die Region, die Ihren Nutzern am nächsten ist. +3. Konfiguriere die Static Web App +- Grundlagen: + - Abonnement: Wähle dein Azure-Abonnement aus. + - Ressourcengruppe: Erstelle eine neue Ressourcengruppe oder verwende eine bestehende. + - Name: Gib deiner statischen Web-App einen Namen. + - Region: Wähle die Region, die deinen Nutzern am nächsten liegt. -- #### Bereitstellungsdetails: -- Quelle: Wählen Sie „GitHub“. -- GitHub-Konto: Autorisieren Sie Azure, auf Ihr GitHub-Konto zuzugreifen. -- Organisation: Wählen Sie Ihre GitHub-Organisation aus. -- Repository: Wählen Sie das Repository, das Ihre statische Web-App enthält. -- Branch: Wählen Sie den Branch aus, den Sie bereitstellen möchten. +- #### Bereitstellungsdetails: + - Quelle: Wähle „GitHub“. + - GitHub-Konto: Autorisiere Azure, auf dein GitHub-Konto zuzugreifen. + - Organisation: Wähle deine GitHub-Organisation aus. + - Repository: Wähle das Repository, das deine statische Web-App enthält. + - Branch: Wähle den Branch, von dem aus du bereitstellen möchtest. -- #### Build-Details: -- Build-Voreinstellungen: Wählen Sie das Framework, mit dem Ihre App erstellt wurde (z. B. React, Angular, Vue usw.). -- App-Standort: Geben Sie den Ordner an, der Ihren App-Code enthält (z. B. /, wenn es sich im Stammverzeichnis befindet). -- API-Standort: Wenn Sie eine API haben, geben Sie deren Standort an (optional). -- Ausgabeort: Geben Sie den Ordner an, in dem die Build-Ausgabe generiert wird (z. B. build oder dist). +- #### Build-Details: + - Build-Voreinstellungen: Wähle das Framework, mit dem deine App erstellt wurde (z. B. React, Angular, Vue usw.). + - App-Standort: Gib den Ordner an, der deinen App-Code enthält (z. B. /, wenn er sich im Root-Verzeichnis befindet). + - API-Standort: Falls du eine API hast, gib deren Standort an (optional). + - Ausgabe-Standort: Gib den Ordner an, in dem die Build-Ausgabe generiert wird (z. B. build oder dist). -4. Überprüfen und Erstellen -Überprüfen Sie Ihre Einstellungen und klicken Sie auf „Erstellen“. Azure wird die erforderlichen Ressourcen einrichten und einen GitHub Actions-Workflow in Ihrem Repository erstellen. +4. Überprüfen und Erstellen +Überprüfe deine Einstellungen und klicke auf „Erstellen“. Azure wird die erforderlichen Ressourcen einrichten und einen GitHub Actions-Workflow in deinem Repository erstellen. -5. GitHub Actions Workflow -Azure wird automatisch eine GitHub Actions-Workflow-Datei in Ihrem Repository erstellen (.github/workflows/azure-static-web-apps-.yml). Dieser Workflow wird den Build- und Bereitstellungsprozess verwalten. +5. GitHub Actions-Workflow +Azure erstellt automatisch eine GitHub Actions-Workflow-Datei in deinem Repository (.github/workflows/azure-static-web-apps-.yml). Dieser Workflow übernimmt den Build- und Bereitstellungsprozess. -6. Überwachen der Bereitstellung -Gehen Sie zum Tab „Aktionen“ in Ihrem GitHub-Repository. -Sie sollten einen laufenden Workflow sehen. Dieser Workflow wird Ihre statische Web-App in Azure erstellen und bereitstellen. -Sobald der Workflow abgeschlossen ist, wird Ihre App unter der angegebenen Azure-URL live sein. +6. Überwache die Bereitstellung +Gehe zum Tab „Actions“ in deinem GitHub-Repository. +Du solltest sehen, dass ein Workflow ausgeführt wird. Dieser Workflow wird deine statische Web-App auf Azure erstellen und bereitstellen. +Sobald der Workflow abgeschlossen ist, ist deine App unter der bereitgestellten Azure-URL live. -### Beispiel-Workflow-Datei +### Beispiel für eine Workflow-Datei -Hier ist ein Beispiel dafür, wie die GitHub Actions-Workflow-Datei aussehen könnte: -name: Azure Static Web Apps CI/CD +Hier ist ein Beispiel, wie die GitHub Actions-Workflow-Datei aussehen könnte: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Zusätzliche Ressourcen -- [Dokumentation zu Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Dokumentation zu GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Zusätzliche Ressourcen +- [Azure Static Web Apps Dokumentation](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Dokumentation](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/for-teachers.md b/translations/de/lessons/0-course-setup/for-teachers.md index 40d64131..11388455 100644 --- a/translations/de/lessons/0-course-setup/for-teachers.md +++ b/translations/de/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ + # Für Lehrkräfte -Möchten Sie diesen Lehrplan in Ihrem Unterricht verwenden? Fühlen Sie sich frei dazu! +Möchten Sie dieses Curriculum in Ihrem Unterricht verwenden? Fühlen Sie sich frei, es zu nutzen! -Tatsächlich können Sie ihn direkt in GitHub verwenden, indem Sie GitHub Classroom nutzen. +Tatsächlich können Sie es direkt auf GitHub verwenden, indem Sie GitHub Classroom nutzen. -Dazu müssen Sie dieses Repo forken. Sie müssen für jede Lektion ein eigenes Repo erstellen, also müssen Sie jeden Ordner in ein separates Repo extrahieren. Auf diese Weise kann [GitHub Classroom](https://classroom.github.com/classrooms) jede Lektion separat erfassen. +Dazu müssen Sie dieses Repository forken. Sie müssen für jede Lektion ein eigenes Repository erstellen, indem Sie jeden Ordner in ein separates Repository extrahieren. Auf diese Weise kann [GitHub Classroom](https://classroom.github.com/classrooms) jede Lektion einzeln erfassen. Diese [vollständigen Anweisungen](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) geben Ihnen eine Vorstellung davon, wie Sie Ihr Klassenzimmer einrichten können. -## Verwendung des Repos wie es ist +## Nutzung des Repos wie es ist -Wenn Sie dieses Repo so verwenden möchten, wie es derzeit ist, ohne GitHub Classroom zu nutzen, ist das ebenfalls möglich. Sie müssten mit Ihren Schülern kommunizieren, welche Lektion sie gemeinsam durcharbeiten sollen. +Wenn Sie dieses Repository in seiner aktuellen Form verwenden möchten, ohne GitHub Classroom zu nutzen, ist das ebenfalls möglich. Sie müssten Ihren Schülern mitteilen, welche Lektion Sie gemeinsam durcharbeiten möchten. -In einem Online-Format (Zoom, Teams oder ähnliches) könnten Sie Breakout-Räume für die Quizze bilden und die Schüler betreuen, um ihnen beim Lernen zu helfen. Dann laden Sie die Schüler ein, die Quizze zu machen und ihre Antworten zu einem bestimmten Zeitpunkt als 'Issues' einzureichen. Sie könnten dasselbe mit Aufgaben machen, wenn Sie möchten, dass die Schüler offen und kollaborativ arbeiten. +In einem Online-Format (Zoom, Teams oder andere) könnten Sie Breakout-Räume für die Quizfragen einrichten und die Schüler unterstützen, damit sie bereit sind zu lernen. Anschließend können Sie die Schüler einladen, die Quizfragen zu bearbeiten und ihre Antworten zu einem bestimmten Zeitpunkt als 'Issues' einzureichen. Dasselbe könnten Sie mit Aufgaben machen, wenn Sie möchten, dass die Schüler offen und kollaborativ arbeiten. -Wenn Sie ein privateres Format bevorzugen, bitten Sie Ihre Schüler, den Lehrplan lektion für lektion in ihre eigenen GitHub-Repos als private Repos zu forken und Ihnen Zugang zu gewähren. Dann können sie Quizze und Aufgaben privat abschließen und diese über Issues in Ihrem Klassenrepo einreichen. +Wenn Sie ein privateres Format bevorzugen, bitten Sie Ihre Schüler, das Curriculum Lektion für Lektion in ihre eigenen privaten GitHub-Repositories zu forken und Ihnen Zugriff zu gewähren. So können sie Quizfragen und Aufgaben privat bearbeiten und diese über Issues in Ihrem Klassen-Repository einreichen. -Es gibt viele Möglichkeiten, dies in einem Online-Klassenraumformat zu gestalten. Bitte lassen Sie uns wissen, was für Sie am besten funktioniert! +Es gibt viele Möglichkeiten, dies in einem Online-Klassenzimmer-Format umzusetzen. Lassen Sie uns wissen, was für Sie am besten funktioniert! -## Bitte teilen Sie uns Ihre Gedanken mit +## Bitte teilen Sie uns Ihre Meinung mit -Wir möchten, dass dieser Lehrplan für Sie und Ihre Schüler funktioniert. Bitte geben Sie uns Feedback in den Diskussionsforen! +Wir möchten, dass dieses Curriculum für Sie und Ihre Schüler funktioniert. Bitte geben Sie uns Feedback in den Diskussionsforen! **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/how-to-run.md b/translations/de/lessons/0-course-setup/how-to-run.md index b7827178..e6bcc713 100644 --- a/translations/de/lessons/0-course-setup/how-to-run.md +++ b/translations/de/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # So führen Sie den Code aus -Dieser Lehrplan enthält viele ausführbare Beispiele und Laborübungen, die Sie ausführen möchten. Um dies zu tun, benötigen Sie die Möglichkeit, Python-Code in Jupyter-Notebooks auszuführen, die Teil dieses Lehrplans sind. Sie haben mehrere Optionen, um den Code auszuführen: +Dieses Curriculum enthält viele ausführbare Beispiele und Übungen, die Sie ausprobieren möchten. Um dies zu tun, benötigen Sie die Möglichkeit, Python-Code in den Jupyter-Notebooks auszuführen, die Teil dieses Curriculums sind. Es gibt mehrere Möglichkeiten, den Code auszuführen: ## Lokal auf Ihrem Computer ausführen -Um den Code lokal auf Ihrem Computer auszuführen, müssen Sie eine Version von Python installiert haben. Ich empfehle persönlich die Installation von **[miniconda](https://conda.io/en/latest/miniconda.html)** - es handelt sich um eine recht leichte Installation, die den `conda` Paketmanager für verschiedene Python **virtuelle Umgebungen** unterstützt. +Um den Code lokal auf Ihrem Computer auszuführen, benötigen Sie eine installierte Python-Version. Ich empfehle persönlich die Installation von **[miniconda](https://conda.io/en/latest/miniconda.html)** – eine schlanke Installation, die den `conda`-Paketmanager für verschiedene Python-**virtuelle Umgebungen** unterstützt. -Nachdem Sie miniconda installiert haben, müssen Sie das Repository klonen und eine virtuelle Umgebung erstellen, die für diesen Kurs verwendet wird: +Nachdem Sie Miniconda installiert haben, müssen Sie das Repository klonen und eine virtuelle Umgebung für diesen Kurs erstellen: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,51 +26,51 @@ conda activate ai4beg ### Verwendung von Visual Studio Code mit Python-Erweiterung -Wahrscheinlich ist der beste Weg, den Lehrplan zu nutzen, ihn in [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) mit der [Python-Erweiterung](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) zu öffnen. +Die wahrscheinlich beste Möglichkeit, das Curriculum zu nutzen, besteht darin, es in [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) mit der [Python-Erweiterung](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) zu öffnen. -> **Hinweis**: Sobald Sie das Verzeichnis in VS Code klonen und öffnen, wird Ihnen automatisch vorgeschlagen, Python-Erweiterungen zu installieren. Sie müssen auch miniconda installieren, wie oben beschrieben. +> **Hinweis**: Sobald Sie das Verzeichnis in VS Code klonen und öffnen, wird Ihnen automatisch vorgeschlagen, die Python-Erweiterungen zu installieren. Sie müssen auch Miniconda wie oben beschrieben installieren. -> **Hinweis**: Wenn VS Code Ihnen vorschlägt, das Repository im Container erneut zu öffnen, müssen Sie dies ablehnen, um die lokale Python-Installation zu verwenden. +> **Hinweis**: Wenn VS Code Ihnen vorschlägt, das Repository in einem Container zu öffnen, sollten Sie dies ablehnen, um die lokale Python-Installation zu verwenden. ### Verwendung von Jupyter im Browser -Sie können auch die Jupyter-Umgebung direkt über den Browser auf Ihrem eigenen Computer verwenden. Tatsächlich bieten sowohl klassisches Jupyter als auch Jupyter Hub eine recht bequeme Entwicklungsumgebung mit Autovervollständigung, Code-Hervorhebung usw. +Sie können die Jupyter-Umgebung auch direkt im Browser auf Ihrem eigenen Computer nutzen. Tatsächlich bieten sowohl das klassische Jupyter als auch Jupyter Hub eine recht komfortable Entwicklungsumgebung mit Autovervollständigung, Syntaxhervorhebung usw. Um Jupyter lokal zu starten, gehen Sie in das Verzeichnis des Kurses und führen Sie aus: ```bash jupyter notebook -``` -oder +``` +oder ```bash jupyterhub -``` -Sie können dann zu einem der `.ipynb` files, open them and start working. +``` +Anschließend können Sie zu einer der `.ipynb`-Dateien navigieren, diese öffnen und mit der Arbeit beginnen. -### Running in container +### Ausführung in einem Container -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer`-Ordner navigieren, der Anweisungen gibt, wie ein Container für dieses Repo erstellt wird. VS Code würde Ihnen anbieten, den Code im Container erneut zu öffnen. Dies erfordert die Installation von Docker und wäre auch komplexer, daher empfehlen wir dies erfahrenen Benutzern. +Eine Alternative zur Python-Installation besteht darin, den Code in einem Container auszuführen. Da unser Repository einen speziellen `.devcontainer`-Ordner enthält, der Anweisungen zum Erstellen eines Containers für dieses Repository bereitstellt, wird Ihnen VS Code anbieten, den Code in einem Container zu öffnen. Dies erfordert die Installation von Docker und ist auch etwas komplexer, daher empfehlen wir dies eher erfahrenen Nutzern. -## Ausführen in der Cloud +## Ausführung in der Cloud -Wenn Sie Python nicht lokal installieren möchten und Zugang zu einigen Cloud-Ressourcen haben, wäre eine gute Alternative, den Code in der Cloud auszuführen. Es gibt mehrere Möglichkeiten, dies zu tun: +Wenn Sie Python nicht lokal installieren möchten und Zugriff auf Cloud-Ressourcen haben, ist eine gute Alternative, den Code in der Cloud auszuführen. Es gibt mehrere Möglichkeiten, dies zu tun: -* Verwenden von **[GitHub Codespaces](https://github.com/features/codespaces)**, einem virtuellen Umfeld, das für Sie auf GitHub erstellt wird und über die VS Code-Browseroberfläche zugänglich ist. Wenn Sie Zugriff auf Codespaces haben, können Sie einfach auf die Schaltfläche **Code** im Repo klicken, einen Codespace starten und im Handumdrehen loslegen. -* Verwenden von **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) ist eine kostenlose Rechenressource, die in der Cloud für Menschen wie Sie bereitgestellt wird, um etwas Code auf GitHub auszuprobieren. Es gibt eine Schaltfläche auf der Startseite, um das Repository in Binder zu öffnen - dies sollte Sie schnell zur Binder-Website bringen, die den zugrunde liegenden Container erstellt und die Jupyter-Weboberfläche nahtlos für Sie startet. +* Verwendung von **[GitHub Codespaces](https://github.com/features/codespaces)**, einer virtuellen Umgebung, die für Sie auf GitHub erstellt wird und über die Browseroberfläche von VS Code zugänglich ist. Wenn Sie Zugriff auf Codespaces haben, können Sie einfach auf die Schaltfläche **Code** im Repository klicken, einen Codespace starten und sofort loslegen. +* Verwendung von **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) bietet kostenlose Rechenressourcen in der Cloud, mit denen Sie Code auf GitHub testen können. Auf der Startseite gibt es eine Schaltfläche, um das Repository in Binder zu öffnen – dies sollte Sie schnell zur Binder-Seite führen, die den zugrunde liegenden Container erstellt und nahtlos die Jupyter-Weboberfläche startet. -> **Hinweis**: Um Missbrauch zu verhindern, hat Binder den Zugriff auf einige Webressourcen blockiert. Dies kann verhindern, dass ein Teil des Codes funktioniert, der Modelle und/oder Datensätze aus dem öffentlichen Internet abruft. Möglicherweise müssen Sie einige Umgehungen finden. Außerdem sind die von Binder bereitgestellten Rechenressourcen ziemlich grundlegend, sodass das Training langsam sein wird, insbesondere in späteren, komplexeren Lektionen. +> **Hinweis**: Um Missbrauch zu verhindern, hat Binder den Zugriff auf einige Webressourcen blockiert. Dies kann dazu führen, dass bestimmter Code, der Modelle und/oder Datensätze aus dem öffentlichen Internet abruft, nicht funktioniert. Sie müssen möglicherweise Workarounds finden. Außerdem sind die von Binder bereitgestellten Rechenressourcen recht begrenzt, sodass das Training, insbesondere in späteren komplexeren Lektionen, langsam sein wird. -## Ausführen in der Cloud mit GPU +## Ausführung in der Cloud mit GPU -Einige der späteren Lektionen in diesem Lehrplan würden erheblich von GPU-Unterstützung profitieren, da das Training sonst schmerzhaft langsam sein wird. Es gibt einige Optionen, die Sie verfolgen können, insbesondere wenn Sie über [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) oder über Ihre Institution Zugang zur Cloud haben: +Einige der späteren Lektionen in diesem Curriculum profitieren stark von GPU-Unterstützung, da das Training sonst extrem langsam wäre. Es gibt einige Optionen, die Sie nutzen können, insbesondere wenn Sie über [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) oder Ihre Institution Zugang zur Cloud haben: -* Erstellen Sie eine [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) und verbinden Sie sich über Jupyter damit. Sie können das Repo dann direkt auf der Maschine klonen und mit dem Lernen beginnen. NC-Serie VMs haben GPU-Unterstützung. +* Erstellen Sie eine [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) und verbinden Sie sich über Jupyter mit ihr. Sie können das Repository dann direkt auf die Maschine klonen und mit dem Lernen beginnen. NC-Serien-VMs unterstützen GPUs. -> **Hinweis**: Einige Abonnements, einschließlich Azure for Students, bieten nicht standardmäßig GPU-Unterstützung. Möglicherweise müssen Sie zusätzliche GPU-Kerne über eine technische Supportanfrage anfordern. +> **Hinweis**: Einige Abonnements, einschließlich Azure for Students, bieten standardmäßig keine GPU-Unterstützung. Sie müssen möglicherweise zusätzliche GPU-Kerne über eine technische Supportanfrage anfordern. -* Erstellen Sie einen [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) und verwenden Sie dann die Notebook-Funktion dort. [Dieses Video](https://azure-for-academics.github.io/quickstart/azureml-papers/) zeigt, wie man ein Repository in ein Azure ML-Notebook klont und es zu verwenden beginnt. +* Erstellen Sie einen [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) und nutzen Sie dort die Notebook-Funktion. [Dieses Video](https://azure-for-academics.github.io/quickstart/azureml-papers/) zeigt, wie Sie ein Repository in ein Azure ML-Notebook klonen und es verwenden können. -Sie können auch Google Colab verwenden, das mit einer gewissen kostenlosen GPU-Unterstützung kommt, und dort Jupyter-Notebooks hochladen, um sie nacheinander auszuführen. +Sie können auch Google Colab verwenden, das einige kostenlose GPU-Ressourcen bietet, und Jupyter-Notebooks hochladen, um sie dort Schritt für Schritt auszuführen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/setup.md b/translations/de/lessons/0-course-setup/setup.md index d8d29fe8..42664a3a 100644 --- a/translations/de/lessons/0-course-setup/setup.md +++ b/translations/de/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ + # Einstieg in dieses Curriculum ## Bist du ein Student? Beginne mit den folgenden Ressourcen: -* [Student Hub-Seite](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Auf dieser Seite findest du Ressourcen für Anfänger, Studentensets und sogar Möglichkeiten, einen kostenlosen Zertifikatsgutschein zu erhalten. Dies ist eine Seite, die du dir merken und von Zeit zu Zeit überprüfen solltest, da wir die Inhalte mindestens monatlich wechseln. -* [Microsoft Student Learn Botschafter](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Trete einer globalen Gemeinschaft von Studentbotschaftern bei, dies könnte dein Zugang zu Microsoft sein. +* [Student Hub-Seite](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Auf dieser Seite findest du Ressourcen für Anfänger, Student Packs und sogar Möglichkeiten, einen kostenlosen Zertifikatsgutschein zu erhalten. Diese Seite solltest du dir unbedingt als Lesezeichen speichern und regelmäßig besuchen, da wir den Inhalt mindestens monatlich aktualisieren. +* [Microsoft Student Learn Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Werde Teil einer globalen Gemeinschaft von Studentenbotschaftern – dies könnte dein Einstieg bei Microsoft sein. -**Studierende**, es gibt mehrere Möglichkeiten, das Curriculum zu nutzen. Zunächst kannst du den Text einfach lesen und den Code direkt auf GitHub durchsehen. Wenn du den Code in einem der Notebooks ausführen möchtest - [lies unsere Anweisungen](./etc/how-to-run.md), und finde weitere Ratschläge, wie du es [in diesem Blogbeitrag](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) tun kannst. +**Studenten**, es gibt mehrere Möglichkeiten, das Curriculum zu nutzen. Zunächst kannst du einfach den Text lesen und den Code direkt auf GitHub durchsehen. Wenn du den Code in einem der Notebooks ausführen möchtest, [lies unsere Anweisungen](./etc/how-to-run.md) und finde weitere Tipps dazu [in diesem Blogbeitrag](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Hinweis**: [Anweisungen zum Ausführen des Codes in diesem Curriculum](/how-to-run.md) +> **Hinweis**: [Anweisungen, wie man den Code in diesem Curriculum ausführt](./how-to-run.md) ## Selbststudium -Wenn du jedoch den Kurs als Selbststudienprojekt durchführen möchtest, empfehlen wir dir, das gesamte Repository in dein eigenes GitHub-Konto zu fork und die Übungen selbstständig oder in einer Gruppe abzuschließen: +Falls du den Kurs als Selbststudienprojekt absolvieren möchtest, empfehlen wir dir, das gesamte Repository in deinen eigenen GitHub-Account zu forken und die Übungen eigenständig oder in einer Gruppe zu bearbeiten: * Beginne mit einem Quiz vor der Vorlesung. * Lies den Einführungstext zur Vorlesung. -* Wenn die Vorlesung zusätzliche Notebooks enthält, gehe diese durch, indem du den Code liest und ausführst. Wenn sowohl TensorFlow- als auch PyTorch-Notebooks bereitgestellt werden, kannst du dich auf eines von ihnen konzentrieren - wähle dein bevorzugtes Framework. -* Notebooks enthalten oft einige Herausforderungen, die es erfordern, den Code ein wenig anzupassen, um zu experimentieren. +* Falls die Vorlesung zusätzliche Notebooks enthält, arbeite diese durch, indem du den Code liest und ausführst. Wenn sowohl TensorFlow- als auch PyTorch-Notebooks bereitgestellt werden, kannst du dich auf eines davon konzentrieren – wähle dein bevorzugtes Framework. +* Notebooks enthalten oft Herausforderungen, bei denen du den Code ein wenig anpassen musst, um zu experimentieren. * Mache das Quiz nach der Vorlesung. -* Wenn ein Labor an das Modul angehängt ist - schließe die Aufgabe ab. +* Falls ein Labor mit dem Modul verbunden ist, bearbeite die Aufgabe. * Besuche das [Diskussionsforum](https://github.com/microsoft/AI-For-Beginners/discussions), um "laut zu lernen". -> Für weiterführende Studien empfehlen wir, diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) Module und Lernpfade zu verfolgen. +> Für weiterführendes Lernen empfehlen wir, diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste)-Module und Lernpfade zu verfolgen. -**Lehrkräfte**, wir haben [einige Vorschläge](/for-teachers.md) zur Nutzung dieses Curriculums aufgenommen. +**Lehrer**, wir haben [einige Vorschläge](/for-teachers.md) aufgenommen, wie dieses Curriculum genutzt werden kann. --- ## Pädagogik -Wir haben beim Aufbau dieses Curriculums zwei pädagogische Grundsätze gewählt: sicherzustellen, dass es praxisorientiert **projektbasiert** ist und dass es **häufige Quizze** enthält. +Wir haben zwei pädagogische Grundsätze gewählt, während wir dieses Curriculum erstellt haben: sicherzustellen, dass es **projektbasiert** und **hands-on** ist und dass es **häufige Quizfragen** enthält. -Durch die Ausrichtung der Inhalte auf Projekte wird der Prozess für die Studierenden ansprechender gestaltet und die Beibehaltung von Konzepten wird gefördert. Darüber hinaus setzt ein niedrigschwelliges Quiz vor einer Klasse die Absicht des Studierenden, ein Thema zu lernen, während ein zweites Quiz nach der Klasse die weitere Beibehaltung sichert. Dieses Curriculum wurde so gestaltet, dass es flexibel und unterhaltsam ist und ganz oder teilweise absolviert werden kann. Die Projekte beginnen klein und werden bis zum Ende des 12-wöchigen Zyklus zunehmend komplexer. +Indem wir sicherstellen, dass der Inhalt auf Projekte abgestimmt ist, wird der Lernprozess für Studenten ansprechender und das Verständnis der Konzepte wird verbessert. Außerdem setzt ein niedrigschwelliges Quiz vor einer Klasse die Absicht des Studenten, ein Thema zu lernen, während ein zweites Quiz nach der Klasse das Verständnis weiter festigt. Dieses Curriculum wurde so gestaltet, dass es flexibel und unterhaltsam ist und entweder vollständig oder teilweise absolviert werden kann. Die Projekte beginnen klein und werden im Laufe des 12-Wochen-Zyklus zunehmend komplexer. -> **Eine Anmerkung zu Quizzen**: Alle Quizze sind [in dieser App](https://red-field-0a6ddfd03.1.azurestaticapps.net/) enthalten, insgesamt 50 Quizze mit jeweils drei Fragen. Sie sind aus den Lektionen heraus verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folge den Anweisungen im `etc/quiz-app`-Ordner. +> **Ein Hinweis zu den Quizfragen**: Alle Quizfragen sind [in dieser App](https://red-field-0a6ddfd03.1.azurestaticapps.net/) enthalten, insgesamt 50 Quizfragen mit jeweils drei Fragen. Sie sind in den Lektionen verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folge den Anweisungen im `etc/quiz-app`-Ordner. ## Offline-Zugriff -Du kannst diese Dokumentation offline ausführen, indem du [Docsify](https://docsify.js.org/#/) verwendest. Forke dieses Repository, [installiere Docsify](https://docsify.js.org/#/quickstart) auf deinem lokalen Rechner und tippe dann im `etc/docsify`-Ordner dieses Repositories `docsify serve` ein. Die Website wird auf Port 3000 auf deinem localhost bereitgestellt: `localhost:3000`. Eine PDF des Curriculums ist [unter diesem Link](../../../../../../etc/pdf/readme.pdf) verfügbar. +Du kannst diese Dokumentation offline nutzen, indem du [Docsify](https://docsify.js.org/#/) verwendest. Forke dieses Repository, [installiere Docsify](https://docsify.js.org/#/quickstart) auf deinem lokalen Rechner und gib dann im Root-Ordner dieses Repositories `docsify serve` ein. Die Website wird auf Port 3000 auf deinem localhost bereitgestellt: `localhost:3000`. Eine PDF-Version des Curriculums ist [unter diesem Link](../../../../../../../../../etc/pdf/readme.pdf) verfügbar. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/1-Intro/README.md b/translations/de/lessons/1-Intro/README.md index 990c76dc..6d6cc591 100644 --- a/translations/de/lessons/1-Intro/README.md +++ b/translations/de/lessons/1-Intro/README.md @@ -1,38 +1,66 @@ + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +Mit der Zeit wurden Rechenressourcen günstiger, und es standen mehr Daten zur Verfügung, sodass Ansätze mit neuronalen Netzwerken in vielen Bereichen, wie z. B. der Computer-Vision oder der Spracherkennung, große Fortschritte zeigten und mit Menschen konkurrieren konnten. In den letzten zehn Jahren wurde der Begriff Künstliche Intelligenz (KI) größtenteils als Synonym für neuronale Netzwerke verwendet, da die meisten Erfolge der KI, von denen wir hören, auf diesen basieren. + +Wir können beobachten, wie sich die Ansätze verändert haben, zum Beispiel bei der Entwicklung eines Schachprogramms: + +* Frühe Schachprogramme basierten auf Suchalgorithmen – ein Programm versuchte explizit, mögliche Züge eines Gegners für eine bestimmte Anzahl von Zügen im Voraus abzuschätzen und wählte den optimalen Zug basierend auf der besten Position, die in wenigen Zügen erreicht werden konnte. Dies führte zur Entwicklung des sogenannten [Alpha-Beta-Suchalgorithmus](https://de.wikipedia.org/wiki/Alpha-Beta-Suche). +* Suchstrategien funktionieren gut gegen Ende des Spiels, wenn der Suchraum durch eine geringe Anzahl möglicher Züge begrenzt ist. Zu Beginn des Spiels ist der Suchraum jedoch riesig, und der Algorithmus kann durch das Lernen aus bestehenden Partien zwischen menschlichen Spielern verbessert werden. Spätere Experimente nutzten das sogenannte [fallbasierte Schließen](https://de.wikipedia.org/wiki/Fallbasiertes_Schlie%C3%9Fen), bei dem das Programm in der Wissensdatenbank nach Fällen suchte, die der aktuellen Spielsituation sehr ähnlich sind. +* Moderne Programme, die menschliche Spieler besiegen, basieren auf neuronalen Netzwerken und [Reinforcement Learning](https://de.wikipedia.org/wiki/Best%C3%A4rkendes_Lernen), bei dem die Programme allein durch das Spielen gegen sich selbst über einen langen Zeitraum lernen und aus ihren eigenen Fehlern lernen – ähnlich wie Menschen, wenn sie Schach spielen lernen. Ein Computerprogramm kann jedoch viel mehr Partien in viel kürzerer Zeit spielen und somit viel schneller lernen. + +✅ Recherchieren Sie ein wenig über andere Spiele, die von KI gespielt wurden. + +Ähnlich können wir sehen, wie sich der Ansatz zur Entwicklung von „sprechenden Programmen“ (die den Turing-Test bestehen könnten) verändert hat: + +* Frühe Programme dieser Art, wie [Eliza](https://de.wikipedia.org/wiki/ELIZA), basierten auf sehr einfachen grammatikalischen Regeln und der Umformulierung des Eingabesatzes in eine Frage. +* Moderne Assistenten wie Cortana, Siri oder Google Assistant sind hybride Systeme, die neuronale Netzwerke nutzen, um Sprache in Text umzuwandeln und unsere Absicht zu erkennen, und dann einige logische Schlussfolgerungen oder explizite Algorithmen anwenden, um die erforderlichen Aktionen auszuführen. +* In der Zukunft können wir erwarten, dass ein vollständig neuronales Modell den Dialog eigenständig bewältigt. Die neueren neuronalen Netzwerke der GPT- und [Turing-NLG](https://turing.microsoft.com/)-Familie zeigen in diesem Bereich große Erfolge. + > Bild von Dmitry Soshnikov, [Foto](https://unsplash.com/photos/r8LmVbUKgns) von [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash -## Aktuelle AI-Forschung +## Aktuelle KI-Forschung -Das enorme Wachstum der Forschung zu neuronalen Netzwerken begann etwa 2010, als große öffentliche Datensätze verfügbar wurden. Eine riesige Sammlung von Bildern namens [ImageNet](https://en.wikipedia.org/wiki/ImageNet), die etwa 14 Millionen annotierte Bilder enthält, gab den Anstoß zur [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). +Das enorme Wachstum der Forschung zu neuronalen Netzwerken begann um 2010, als große öffentliche Datensätze verfügbar wurden. Eine riesige Sammlung von Bildern namens [ImageNet](https://en.wikipedia.org/wiki/ImageNet), die etwa 14 Millionen annotierte Bilder enthält, führte zur [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). ![ILSVRC Genauigkeit](../../../../lessons/1-Intro/images/ilsvrc.gif) > Bild von [Dmitry Soshnikov](http://soshnikov.com) -Im Jahr 2012 wurden [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) erstmals in der Bildklassifizierung eingesetzt, was zu einem signifikanten Rückgang der Klassifizierungsfehler führte (von fast 30% auf 16,4%). Im Jahr 2015 erreichte die ResNet-Architektur von Microsoft Research [eine menschenähnliche Genauigkeit](https://doi.org/10.1109/ICCV.2015.123). -Seitdem haben Neuronale Netzwerke in vielen Aufgaben ein sehr erfolgreiches Verhalten gezeigt: +Im Jahr 2012 wurden [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) erstmals für die Bildklassifikation eingesetzt, was zu einem signifikanten Rückgang der Klassifikationsfehler führte (von fast 30 % auf 16,4 %). Im Jahr 2015 erreichte die ResNet-Architektur von Microsoft Research [menschliche Genauigkeit](https://doi.org/10.1109/ICCV.2015.123). + +Seitdem haben neuronale Netzwerke in vielen Aufgaben sehr erfolgreiche Ergebnisse gezeigt: --- -Jahr | Erreichte Menschenparität +Jahr | Menschliche Gleichwertigkeit erreicht -----|-------- -2015 | [Bildklassifizierung](https://doi.org/10.1109/ICCV.2015.123) -2016 | [Gesprächs-Spracherkennung](https://arxiv.org/abs/1610.05256) -2018 | [Automatische maschinelle Übersetzung](https://arxiv.org/abs/1803.05567) (Chinesisch-zu-Englisch) -2020 | [Bildunterschriftenerstellung](https://arxiv.org/abs/2009.13682) +2015 | [Bildklassifikation](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Gesprächsbasierte Spracherkennung](https://arxiv.org/abs/1610.05256) +2018 | [Automatische maschinelle Übersetzung](https://arxiv.org/abs/1803.05567) (Chinesisch-Englisch) +2020 | [Bildbeschreibung](https://arxiv.org/abs/2009.13682) -In den letzten Jahren haben wir enorme Erfolge mit großen Sprachmodellen wie BERT und GPT-3 erlebt. Dies geschah hauptsächlich aufgrund der Tatsache, dass eine große Menge an allgemeinen Textdaten verfügbar ist, die es uns ermöglicht, Modelle zu trainieren, um die Struktur und Bedeutung von Texten zu erfassen, sie auf allgemeinen Textsammlungen vorzutrainen und diese Modelle dann für spezifischere Aufgaben zu spezialisieren. Wir werden später in diesem Kurs mehr über [Natural Language Processing](../5-NLP/README.md) lernen. +In den letzten Jahren haben wir große Erfolge mit großen Sprachmodellen wie BERT und GPT-3 erlebt. Dies geschah vor allem aufgrund der Tatsache, dass es eine große Menge an allgemeinen Textdaten gibt, die es uns ermöglichen, Modelle zu trainieren, um die Struktur und Bedeutung von Texten zu erfassen, sie auf allgemeinen Textsammlungen vorzutrainieren und diese Modelle dann für spezifischere Aufgaben zu spezialisieren. Wir werden später in diesem Kurs mehr über [Natural Language Processing](../5-NLP/README.md) lernen. ## 🚀 Herausforderung -Machen Sie eine Internettour, um zu bestimmen, wo Ihrer Meinung nach KI am effektivsten eingesetzt wird. Ist es in einer Karten-App, einem Spracherkennungsdienst oder einem Videospiel? Recherchieren Sie, wie das System aufgebaut wurde. +Machen Sie eine Internetrecherche, um herauszufinden, wo KI Ihrer Meinung nach am effektivsten eingesetzt wird. Ist es in einer Karten-App, einem Sprach-zu-Text-Dienst oder einem Videospiel? Recherchieren Sie, wie das System aufgebaut wurde. -## [Nach der Vorlesung Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Überprüfen Sie die Geschichte von KI und ML, indem Sie [diese Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) durchlesen. Nehmen Sie ein Element aus dem Sketchnote am Anfang dieser Lektion oder dieser hier und recherchieren Sie es eingehender, um den kulturellen Kontext zu verstehen, der seine Entwicklung beeinflusst hat. +Überblicken Sie die Geschichte der KI und des maschinellen Lernens, indem Sie [diese Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) durchlesen. Nehmen Sie ein Element aus der Sketchnote am Anfang dieser oder jener Lektion und recherchieren Sie es genauer, um den kulturellen Kontext zu verstehen, der seine Entwicklung beeinflusst hat. **Aufgabe**: [Game Jam](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/1-Intro/assignment.md b/translations/de/lessons/1-Intro/assignment.md index 709468ed..de645f83 100644 --- a/translations/de/lessons/1-Intro/assignment.md +++ b/translations/de/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Spiele sind ein Bereich, der stark von den Entwicklungen in KI und ML beeinflusst wurde. In dieser Aufgabe schreiben Sie ein kurzes Papier über ein Spiel, das Ihnen gefällt und das von der Entwicklung der KI beeinflusst wurde. Es sollte ein ausreichend altes Spiel sein, das von verschiedenen Arten von Computerverarbeitungssystemen beeinflusst wurde. Ein gutes Beispiel sind Schach oder Go, aber schauen Sie sich auch Videospiele wie Pong oder Pac-Man an. Schreiben Sie einen Aufsatz, der die Vergangenheit, die Gegenwart und die zukünftige Rolle der KI im Spiel behandelt. +Spiele sind ein Bereich, der stark von Entwicklungen in KI und ML beeinflusst wurde. In dieser Aufgabe sollst du ein kurzes Essay über ein Spiel schreiben, das dir gefällt und das von der Entwicklung der KI beeinflusst wurde. Es sollte ein Spiel sein, das alt genug ist, um von verschiedenen Arten von Computersystemen beeinflusst worden zu sein. Ein gutes Beispiel ist Schach oder Go, aber schaue dir auch Videospiele wie Pong oder Pac-Man an. Schreibe ein Essay, das die Vergangenheit, Gegenwart und die Zukunft des Spiels im Hinblick auf KI diskutiert. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/2-Symbolic/README.md b/translations/de/lessons/2-Symbolic/README.md index d1cecbd7..4980bd59 100644 --- a/translations/de/lessons/2-Symbolic/README.md +++ b/translations/de/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ -# Wissensdarstellung und Expertensysteme + +# Wissensrepräsentation und Expertensysteme -![Zusammenfassung des Inhalts der symbolischen KI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.de.png) +![Zusammenfassung des Symbolischen KI-Inhalts](../../../../lessons/sketchnotes/ai-symbolic.png) > Sketchnote von [Tomomi Imura](https://twitter.com/girlie_mac) -Die Suche nach künstlicher Intelligenz basiert auf dem Streben nach Wissen, um die Welt ähnlich wie Menschen zu verstehen. Aber wie geht man dabei vor? +Die Suche nach künstlicher Intelligenz basiert auf dem Streben nach Wissen, um die Welt ähnlich wie Menschen zu verstehen. Aber wie kann man das erreichen? -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -In den frühen Tagen der KI war der Top-Down-Ansatz zur Schaffung intelligenter Systeme (der im vorherigen Kapitel besprochen wurde) populär. Die Idee war, das Wissen von Menschen in eine maschinenlesbare Form zu extrahieren und es dann zur automatischen Problemlösung zu verwenden. Dieser Ansatz basierte auf zwei großen Ideen: +In den frühen Tagen der KI war der Top-Down-Ansatz zur Erstellung intelligenter Systeme (im vorherigen Kapitel besprochen) beliebt. Die Idee war, das Wissen von Menschen in eine maschinenlesbare Form zu extrahieren und es dann zu nutzen, um Probleme automatisch zu lösen. Dieser Ansatz basierte auf zwei großen Ideen: -* Wissensdarstellung +* Wissensrepräsentation * Schlussfolgerung -## Wissensdarstellung +## Wissensrepräsentation -Eines der wichtigen Konzepte in der symbolischen KI ist **Wissen**. Es ist wichtig, Wissen von *Information* oder *Daten* zu unterscheiden. Zum Beispiel kann man sagen, dass Bücher Wissen enthalten, weil man Bücher studieren und ein Experte werden kann. Was Bücher jedoch enthalten, wird tatsächlich als *Daten* bezeichnet, und durch das Lesen von Büchern und die Integration dieser Daten in unser Weltmodell wandeln wir diese Daten in Wissen um. +Eines der wichtigen Konzepte in der symbolischen KI ist **Wissen**. Es ist wichtig, Wissen von *Information* oder *Daten* zu unterscheiden. Zum Beispiel könnte man sagen, dass Bücher Wissen enthalten, weil man durch das Studium von Büchern ein Experte werden kann. Tatsächlich enthalten Bücher jedoch *Daten*, und durch das Lesen und Integrieren dieser Daten in unser Weltmodell wandeln wir diese Daten in Wissen um. -> ✅ **Wissen** ist etwas, das in unserem Kopf enthalten ist und unser Verständnis der Welt repräsentiert. Es wird durch einen aktiven **Lernprozess** erlangt, der die Informationen, die wir erhalten, in unser aktives Weltmodell integriert. +> ✅ **Wissen** ist etwas, das in unserem Kopf enthalten ist und unsere Vorstellung von der Welt repräsentiert. Es wird durch einen aktiven **Lernprozess** gewonnen, der die erhaltenen Informationen in unser aktives Weltmodell integriert. -Meistens definieren wir Wissen nicht streng, sondern stellen es in Beziehung zu anderen verwandten Konzepten mithilfe der [DIKW-Pyramide](https://en.wikipedia.org/wiki/DIKW_pyramid). Sie enthält die folgenden Konzepte: +Meistens definieren wir Wissen nicht streng, sondern ordnen es anderen verwandten Konzepten mithilfe der [DIKW-Pyramide](https://de.wikipedia.org/wiki/DIKW-Pyramide) zu. Sie enthält die folgenden Konzepte: -* **Daten** sind etwas, das in physischen Medien dargestellt wird, wie geschriebenem Text oder gesprochenen Worten. Daten existieren unabhängig von Menschen und können zwischen Personen ausgetauscht werden. -* **Information** ist, wie wir Daten in unserem Kopf interpretieren. Zum Beispiel, wenn wir das Wort *Computer* hören, haben wir ein gewisses Verständnis davon, was es ist. -* **Wissen** ist Information, die in unser Weltmodell integriert wird. Zum Beispiel, sobald wir lernen, was ein Computer ist, beginnen wir, einige Ideen darüber zu haben, wie er funktioniert, wie viel er kostet und wofür er verwendet werden kann. Dieses Netzwerk von miteinander verbundenen Konzepten bildet unser Wissen. -* **Weisheit** ist eine weitere Ebene unseres Verständnisses der Welt und repräsentiert *Meta-Wissen*, z.B. eine Vorstellung davon, wie und wann das Wissen verwendet werden sollte. +* **Daten** sind etwas, das in physischem Medium dargestellt wird, wie geschriebener Text oder gesprochene Worte. Daten existieren unabhängig von Menschen und können zwischen ihnen weitergegeben werden. +* **Information** ist, wie wir Daten in unserem Kopf interpretieren. Zum Beispiel haben wir eine Vorstellung davon, was ein *Computer* ist, wenn wir das Wort hören. +* **Wissen** ist Information, die in unser Weltmodell integriert wird. Sobald wir lernen, was ein Computer ist, entwickeln wir Ideen darüber, wie er funktioniert, wie viel er kostet und wofür er verwendet werden kann. Dieses Netzwerk von miteinander verbundenen Konzepten bildet unser Wissen. +* **Weisheit** ist eine weitere Ebene unseres Weltverständnisses und repräsentiert *Meta-Wissen*, z. B. eine Vorstellung davon, wie und wann Wissen verwendet werden sollte. - +*Bild [von Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), von Longlivetheux - Eigenes Werk, CC BY-SA 4.0* -*Bild [von Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Von Longlivetheux - Eigenes Werk, CC BY-SA 4.0* +Das Problem der **Wissensrepräsentation** besteht also darin, eine effektive Möglichkeit zu finden, Wissen in Form von Daten in einem Computer darzustellen, um es automatisch nutzbar zu machen. Dies kann als Spektrum betrachtet werden: -Das Problem der **Wissensdarstellung** besteht also darin, eine effektive Möglichkeit zu finden, Wissen in einem Computer in Form von Daten darzustellen, um es automatisch nutzbar zu machen. Dies kann als Spektrum betrachtet werden: - -![Spektrum der Wissensdarstellung](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.de.png) +![Spektrum der Wissensrepräsentation](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) > Bild von [Dmitry Soshnikov](http://soshnikov.com) -* Links befinden sich sehr einfache Arten von Wissensdarstellungen, die effektiv von Computern genutzt werden können. Die einfachste ist algorithmisch, wenn Wissen durch ein Computerprogramm dargestellt wird. Dies ist jedoch nicht der beste Weg, Wissen darzustellen, da es nicht flexibel ist. Wissen in unserem Kopf ist oft nicht-algorithmisch. -* Rechts gibt es Darstellungen wie natürlichen Text. Es ist die mächtigste Form, kann jedoch nicht für automatisches Schließen verwendet werden. +* Links befinden sich sehr einfache Arten der Wissensrepräsentation, die effektiv von Computern genutzt werden können. Die einfachste ist die algorithmische Darstellung, bei der Wissen durch ein Computerprogramm repräsentiert wird. Dies ist jedoch keine flexible Methode, da Wissen in unserem Kopf oft nicht algorithmisch ist. +* Rechts befinden sich Darstellungen wie natürlicher Text. Diese sind am mächtigsten, können jedoch nicht für automatisches Schließen verwendet werden. -> ✅ Denke einen Moment darüber nach, wie du Wissen in deinem Kopf darstellst und es in Notizen umwandelst. Gibt es ein bestimmtes Format, das dir hilft, es zu behalten? +> ✅ Überlege kurz, wie du Wissen in deinem Kopf darstellst und in Notizen umwandelst. Gibt es ein bestimmtes Format, das dir hilft, es besser zu behalten? -## Klassifizierung von Computer-Wissensdarstellungen +## Klassifizierung von Wissensrepräsentationen in Computern -Wir können verschiedene Methoden zur Wissensdarstellung im Computer in die folgenden Kategorien einteilen: +Wir können verschiedene Methoden der Wissensrepräsentation in Computern in folgende Kategorien einteilen: -* **Netzwerkdarstellungen** basieren auf der Tatsache, dass wir ein Netzwerk von miteinander verbundenen Konzepten in unserem Kopf haben. Wir können versuchen, die gleichen Netzwerke als Graphen in einem Computer zu reproduzieren - ein sogenanntes **semantisches Netzwerk**. +* **Netzwerkrepräsentationen** basieren auf der Tatsache, dass wir ein Netzwerk miteinander verbundener Konzepte in unserem Kopf haben. Wir können versuchen, dieselben Netzwerke als Graphen in einem Computer nachzubilden - ein sogenanntes **semantisches Netzwerk**. -1. **Objekt-Attribut-Wert-Triple** oder **Attribut-Wert-Paare**. Da ein Graph in einem Computer als Liste von Knoten und Kanten dargestellt werden kann, können wir ein semantisches Netzwerk durch eine Liste von Tripeln darstellen, die Objekte, Attribute und Werte enthalten. Zum Beispiel bauen wir die folgenden Tripel über Programmiersprachen: +1. **Objekt-Attribut-Wert-Tripel** oder **Attribut-Wert-Paare**. Da ein Graph in einem Computer als Liste von Knoten und Kanten dargestellt werden kann, können wir ein semantisches Netzwerk durch eine Liste von Tripeln darstellen, die Objekte, Attribute und Werte enthalten. Zum Beispiel erstellen wir die folgenden Tripel über Programmiersprachen: Objekt | Attribut | Wert --------|-----------|------ -Python | ist | Ungetypte-Sprache +-------|----------|----- +Python | ist | Untyped-Language Python | erfunden-von | Guido van Rossum Python | Block-Syntax | Einrückung -Ungetypte-Sprache | hat-keine | Typdefinitionen +Untyped-Language | hat nicht | Typdefinitionen > ✅ Überlege, wie Tripel verwendet werden können, um andere Arten von Wissen darzustellen. -2. **Hierarchische Darstellungen** betonen die Tatsache, dass wir oft eine Hierarchie von Objekten in unserem Kopf erstellen. Zum Beispiel wissen wir, dass ein Kanarienvogel ein Vogel ist und alle Vögel Flügel haben. Wir haben auch eine Vorstellung davon, welche Farbe ein Kanarienvogel normalerweise hat und wie schnell er fliegen kann. +2. **Hierarchische Repräsentationen** betonen die Tatsache, dass wir oft eine Hierarchie von Objekten in unserem Kopf erstellen. Zum Beispiel wissen wir, dass ein Kanarienvogel ein Vogel ist und alle Vögel Flügel haben. Wir haben auch eine Vorstellung davon, welche Farbe ein Kanarienvogel normalerweise hat und wie schnell er fliegen kann. - - **Frame-Darstellung** basiert darauf, jedes Objekt oder jede Klasse von Objekten als **Frame** darzustellen, der **Slots** enthält. Slots haben mögliche Standardwerte, Wertbeschränkungen oder gespeicherte Prozeduren, die aufgerufen werden können, um den Wert eines Slots zu erhalten. Alle Frames bilden eine Hierarchie, die einer Objekt-Hierarchie in objektorientierten Programmiersprachen ähnelt. - - **Szenarien** sind spezielle Arten von Frames, die komplexe Situationen darstellen, die sich im Laufe der Zeit entfalten können. + - **Frame-Repräsentation** basiert darauf, jedes Objekt oder jede Klasse von Objekten als **Frame** darzustellen, der **Slots** enthält. Slots haben mögliche Standardwerte, Wertbeschränkungen oder gespeicherte Prozeduren, die aufgerufen werden können, um den Wert eines Slots zu erhalten. Alle Frames bilden eine Hierarchie, ähnlich einer Objekt-Hierarchie in objektorientierten Programmiersprachen. + - **Szenarien** sind spezielle Arten von Frames, die komplexe Situationen darstellen, die sich im Laufe der Zeit entwickeln können. **Python** Slot | Wert | Standardwert | Intervall | ------|-------|---------------|----------| +-----|------|--------------|----------| Name | Python | | | -Ist-Ein | Ungetypte-Sprache | | | -Variablenfall | | CamelCase | | +Ist-Ein | Untyped-Language | | | +Variable-Schreibweise | | CamelCase | | Programmlänge | | | 5-5000 Zeilen | -Blocksyntax | Einrückung | | | +Block-Syntax | Einrückung | | | -3. **Prozedurale Darstellungen** basieren auf der Darstellung von Wissen durch eine Liste von Aktionen, die ausgeführt werden können, wenn eine bestimmte Bedingung eintritt. - - Produktionsregeln sind Wenn-Dann-Aussagen, die es uns ermöglichen, Schlussfolgerungen zu ziehen. Zum Beispiel kann ein Arzt eine Regel haben, die besagt, dass **WENN** ein Patient Fieber hat **ODER** einen hohen Wert für C-reaktives Protein im Bluttest hat **DANN** hat er eine Entzündung. Sobald wir eine der Bedingungen treffen, können wir eine Schlussfolgerung über die Entzündung ziehen und diese dann in weiteren Überlegungen verwenden. - - Algorithmen können als eine andere Form der prozeduralen Darstellung betrachtet werden, obwohl sie fast nie direkt in wissensbasierten Systemen verwendet werden. +3. **Prozedurale Repräsentationen** basieren darauf, Wissen durch eine Liste von Aktionen darzustellen, die ausgeführt werden können, wenn eine bestimmte Bedingung eintritt. + - Produktionsregeln sind Wenn-Dann-Aussagen, die es uns ermöglichen, Schlussfolgerungen zu ziehen. Zum Beispiel könnte ein Arzt eine Regel haben, die besagt: **WENN** ein Patient hohes Fieber **ODER** einen hohen C-reaktiven Proteinspiegel im Bluttest hat, **DANN** hat er eine Entzündung. Sobald wir eine der Bedingungen feststellen, können wir eine Schlussfolgerung über die Entzündung ziehen und diese dann für weitere Überlegungen verwenden. + - Algorithmen können als eine andere Form der prozeduralen Repräsentation betrachtet werden, obwohl sie fast nie direkt in wissensbasierten Systemen verwendet werden. -4. **Logik** wurde ursprünglich von Aristoteles als eine Möglichkeit vorgeschlagen, universelles menschliches Wissen darzustellen. - - Prädikatenlogik als mathematische Theorie ist zu reich, um berechenbar zu sein, daher wird normalerweise eine Teilmenge davon verwendet, wie Horn-Klauseln, die in Prolog verwendet werden. - - Beschreibende Logik ist eine Familie von logischen Systemen, die verwendet werden, um Hierarchien von Objekten in verteilten Wissensdarstellungen wie dem *semantischen Web* darzustellen und darüber nachzudenken. +4. **Logik** wurde ursprünglich von Aristoteles als Methode vorgeschlagen, universelles menschliches Wissen darzustellen. + - Prädikatenlogik als mathematische Theorie ist zu komplex, um berechenbar zu sein, daher wird normalerweise ein Teil davon verwendet, wie Horn-Klauseln in Prolog. + - Beschreibungslogik ist eine Familie logischer Systeme, die verwendet wird, um Hierarchien von Objekten und verteilte Wissensrepräsentationen wie das *semantische Web* darzustellen und darüber zu schlussfolgern. ## Expertensysteme -Einer der frühen Erfolge der symbolischen KI waren die sogenannten **Expertensysteme** - Computersysteme, die dazu entworfen wurden, als Experte in einem bestimmten begrenzten Problembereich zu agieren. Sie basierten auf einer **Wissensbasis**, die aus einem oder mehreren menschlichen Experten extrahiert wurde, und sie enthielten eine **Schlussfolgerungsmaschine**, die darauf basierend einige Überlegungen anstellte. +Einer der frühen Erfolge der symbolischen KI waren sogenannte **Expertensysteme** - Computersysteme, die so konzipiert waren, dass sie in einem begrenzten Problembereich als Experte agieren. Sie basierten auf einer **Wissensbasis**, die von einem oder mehreren menschlichen Experten extrahiert wurde, und enthielten eine **Schlussfolgerungsmaschine**, die darauf basierende Überlegungen anstellte. -![Menschliche Architektur](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.de.png) | ![Wissensbasiertes System](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.de.png) ----------------------------------------------|------------------------------------------------ -Vereinfachte Struktur eines menschlichen neuronalen Systems | Architektur eines wissensbasierten Systems +![Menschliche Architektur](../../../../lessons/2-Symbolic/images/arch-human.png) | ![Wissensbasiertes System](../../../../lessons/2-Symbolic/images/arch-kbs.png) +--------------------------------------------------|----------------------------------------------- +Vereinfachte Struktur des menschlichen Nervensystems | Architektur eines wissensbasierten Systems -Expertensysteme sind aufgebaut wie das menschliche Denk-System, das **Kurzzeitgedächtnis** und **Langzeitgedächtnis** enthält. Ähnlich unterscheiden wir in wissensbasierten Systemen die folgenden Komponenten: +Expertensysteme sind ähnlich aufgebaut wie das menschliche Denksystem, das **Kurzzeitgedächtnis** und **Langzeitgedächtnis** enthält. Ebenso unterscheiden wir in wissensbasierten Systemen die folgenden Komponenten: -* **Problemerinnerung**: enthält das Wissen über das aktuell zu lösende Problem, z.B. die Temperatur oder den Blutdruck eines Patienten, ob er eine Entzündung hat oder nicht usw. Dieses Wissen wird auch als **statisches Wissen** bezeichnet, da es einen Schnappschuss dessen enthält, was wir derzeit über das Problem wissen - den sogenannten *Problemzustand*. -* **Wissensbasis**: repräsentiert langfristiges Wissen über ein Problembereich. Es wird manuell von menschlichen Experten extrahiert und ändert sich nicht von Konsultation zu Konsultation. Da es uns ermöglicht, von einem Problemzustand zu einem anderen zu navigieren, wird es auch als **dynamisches Wissen** bezeichnet. -* **Schlussfolgerungsmaschine**: orchestriert den gesamten Prozess der Suche im Problembereich und stellt dem Benutzer bei Bedarf Fragen. Sie ist auch dafür verantwortlich, die richtigen Regeln zu finden, die auf jeden Zustand angewendet werden sollen. +* **Problemgedächtnis**: enthält das Wissen über das aktuell zu lösende Problem, z. B. die Temperatur oder den Blutdruck eines Patienten, ob er eine Entzündung hat oder nicht usw. Dieses Wissen wird auch als **statisches Wissen** bezeichnet, da es eine Momentaufnahme dessen enthält, was wir derzeit über das Problem wissen - den sogenannten *Problemzustand*. +* **Wissensbasis**: repräsentiert langfristiges Wissen über einen Problembereich. Es wird manuell von menschlichen Experten extrahiert und ändert sich nicht von einer Konsultation zur nächsten. Da es uns ermöglicht, von einem Problemzustand zum anderen zu navigieren, wird es auch als **dynamisches Wissen** bezeichnet. +* **Schlussfolgerungsmaschine**: orchestriert den gesamten Prozess der Suche im Problemzustandsraum und stellt dem Benutzer bei Bedarf Fragen. Sie ist auch dafür verantwortlich, die richtigen Regeln für jeden Zustand zu finden. -Als Beispiel betrachten wir folgendes Expertensystem zur Bestimmung eines Tieres basierend auf seinen physischen Eigenschaften: +Als Beispiel betrachten wir das folgende Expertensystem zur Bestimmung eines Tieres basierend auf seinen physischen Merkmalen: -![AND-OR-Baum](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.de.png) +![AND-OR-Baum](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) > Bild von [Dmitry Soshnikov](http://soshnikov.com) -Dieses Diagramm wird als **AND-OR-Baum** bezeichnet und ist eine grafische Darstellung einer Menge von Produktionsregeln. Das Zeichnen eines Baumes ist zu Beginn der Wissensgewinnung von Nutzen. Um das Wissen im Computer darzustellen, ist es bequemer, Regeln zu verwenden: +Dieses Diagramm wird als **AND-OR-Baum** bezeichnet und ist eine grafische Darstellung einer Reihe von Produktionsregeln. Das Zeichnen eines Baums ist nützlich zu Beginn der Wissensextraktion vom Experten. Um das Wissen im Computer darzustellen, ist es jedoch praktischer, Regeln zu verwenden: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Du wirst feststellen, dass jede Bedingung auf der linken Seite der Regel und die Aktion im Wesentlichen Objekt-Attribut-Wert (OAV) Tripel sind. **Arbeitsgedächtnis** enthält die Menge der OAV-Triple, die dem aktuell zu lösenden Problem entsprechen. Eine **Regelmaschine** sucht nach Regeln, für die eine Bedingung erfüllt ist, und wendet sie an, indem sie ein weiteres Tripel zum Arbeitsgedächtnis hinzufügt. +Man kann erkennen, dass jede Bedingung auf der linken Seite der Regel und die Aktion im Wesentlichen Objekt-Attribut-Wert (OAV)-Tripel sind. **Arbeitsgedächtnis** enthält die Menge von OAV-Tripeln, die dem aktuell zu lösenden Problem entsprechen. Eine **Regelmaschine** sucht nach Regeln, deren Bedingungen erfüllt sind, und wendet sie an, indem sie ein weiteres Tripel zum Arbeitsgedächtnis hinzufügt. -> ✅ Schreibe deinen eigenen AND-OR-Baum zu einem Thema, das dir gefällt! +> ✅ Erstelle deinen eigenen AND-OR-Baum zu einem Thema, das dir gefällt! -### Vorwärts- vs. Rückwärtsinferenz +### Vorwärts- vs. Rückwärts-Schlussfolgerung -Der oben beschriebene Prozess wird als **Vorwärtsinferenz** bezeichnet. Er beginnt mit einigen Anfangsdaten über das Problem, die im Arbeitsgedächtnis verfügbar sind, und führt dann die folgende Schlussfolgerungsschleife aus: +Der oben beschriebene Prozess wird als **Vorwärts-Schlussfolgerung** bezeichnet. Er beginnt mit einigen Anfangsdaten über das Problem, die im Arbeitsgedächtnis verfügbar sind, und führt dann die folgende Schlussfolgerungsschleife aus: -1. Wenn das Zielattribut im Arbeitsgedächtnis vorhanden ist - stoppe und gib das Ergebnis an -2. Suche nach allen Regeln, deren Bedingung derzeit erfüllt ist - erhalte die **Konfliktmenge** von Regeln. -3. Führe die **Konfliktlösung** durch - wähle eine Regel aus, die in diesem Schritt ausgeführt wird. Es könnte verschiedene Strategien zur Konfliktlösung geben: +1. Wenn das Zielattribut im Arbeitsgedächtnis vorhanden ist - stoppen und das Ergebnis ausgeben +2. Suche nach allen Regeln, deren Bedingungen derzeit erfüllt sind - erhalte den **Konfliktset** von Regeln. +3. Führe **Konfliktlösung** durch - wähle eine Regel aus, die in diesem Schritt ausgeführt wird. Es können verschiedene Konfliktlösungsstrategien angewendet werden: - Wähle die erste anwendbare Regel in der Wissensbasis - Wähle eine zufällige Regel - - Wähle eine *spezifischere* Regel, d.h. diejenige, die die meisten Bedingungen auf der "linken Seite" (LHS) erfüllt -4. Wende die ausgewählte Regel an und füge neues Wissen in den Problemzustand ein + - Wähle eine *spezifischere* Regel, d. h. diejenige, die die meisten Bedingungen auf der "linken Seite" (LHS) erfüllt +4. Wende die ausgewählte Regel an und füge ein neues Wissenselement zum Problemzustand hinzu 5. Wiederhole ab Schritt 1. -In einigen Fällen möchten wir jedoch vielleicht mit einem leeren Wissen über das Problem beginnen und Fragen stellen, die uns helfen, zu einer Schlussfolgerung zu gelangen. Zum Beispiel führen wir bei einer medizinischen Diagnose normalerweise nicht alle medizinischen Analysen im Voraus durch, bevor wir mit der Diagnose des Patienten beginnen. Wir möchten vielmehr Analysen durchführen, wenn eine Entscheidung getroffen werden muss. +In einigen Fällen möchten wir jedoch mit leerem Wissen über das Problem beginnen und Fragen stellen, die uns helfen, zur Schlussfolgerung zu gelangen. Zum Beispiel führen wir bei medizinischen Diagnosen normalerweise nicht alle medizinischen Analysen im Voraus durch, bevor wir mit der Diagnose des Patienten beginnen. Stattdessen möchten wir Analysen durchführen, wenn eine Entscheidung getroffen werden muss. -Dieser Prozess kann mit **Rückwärtsinferenz** modelliert werden. Er wird durch das **Ziel** gesteuert - den Attributwert, den wir zu finden versuchen: +Dieser Prozess kann mithilfe der **Rückwärts-Schlussfolgerung** modelliert werden. Sie wird durch das **Ziel** angetrieben - den Attributwert, den wir finden möchten: -1. Wähle alle Regeln aus, die uns den Wert eines Ziels geben können (d.h. mit dem Ziel auf der RHS ("rechten Seite")) - eine Konfliktmenge -1. Wenn es keine Regeln für dieses Attribut gibt oder eine Regel besagt, dass wir den Wert vom Benutzer abfragen sollten - frage danach, andernfalls: -1. Verwende die Konfliktlösungsstrategie, um eine Regel auszuwählen, die wir als *Hypothese* verwenden werden - wir werden versuchen, sie zu beweisen +1. Wähle alle Regeln aus, die uns den Wert eines Ziels geben können (d. h. mit dem Ziel auf der RHS ("rechte Seite")) - ein Konfliktset +1. Wenn es keine Regeln für dieses Attribut gibt oder eine Regel besagt, dass wir den Wert vom Benutzer erfragen sollen - frage danach, andernfalls: +1. Verwende eine Konfliktlösungsstrategie, um eine Regel auszuwählen, die wir als *Hypothese* verwenden werden - wir versuchen, sie zu beweisen 1. Wiederhole den Prozess rekursiv für alle Attribute auf der LHS der Regel und versuche, sie als Ziele zu beweisen -1. Wenn der Prozess an irgendeinem Punkt fehlschlägt - verwende eine andere Regel in Schritt 3. +1. Wenn der Prozess zu irgendeinem Zeitpunkt fehlschlägt - verwende eine andere Regel in Schritt 3. -> ✅ In welchen Situationen ist Vorwärtsinferenz geeigneter? Und Rückwärtsinferenz? +> ✅ In welchen Situationen ist die Vorwärts-Schlussfolgerung besser geeignet? Und wie sieht es mit der Rückwärts-Schlussfolgerung aus? ### Implementierung von Expertensystemen Expertensysteme können mit verschiedenen Werkzeugen implementiert werden: -* Direkt in einer Hochsprache programmieren. Das ist nicht die beste Idee, da der Hauptvorteil eines wissensbasierten Systems darin besteht, dass Wissen von der Schlussfolgerung getrennt ist, und potenziell sollte ein Experte im Problembereich in der Lage sein, Regeln zu schreiben, ohne die Details des Schlussfolgerungsprozesses zu verstehen. -* Verwendung einer **Expertensystem-Schale**, d.h. eines Systems, das speziell dafür entworfen wurde, mit Wissen unter Verwendung einer bestimmten Wissensdarstellungssprache befüllt zu werden. +* Direkte Programmierung in einer Hochsprache. Dies ist keine optimale Lösung, da der Hauptvorteil eines wissensbasierten Systems darin besteht, dass Wissen von der Schlussfolgerung getrennt ist und ein Fachexperte potenziell Regeln schreiben können sollte, ohne die Details des Schlussfolgerungsprozesses zu verstehen. +* Verwendung einer **Expertensystem-Shell**, d. h. eines Systems, das speziell dafür entwickelt wurde, mit Wissen in einer Wissensrepräsentationssprache gefüllt zu werden. -## ✍️ Übung: Tierinferenz +## ✍️ Übung: Tier-Schlussfolgerung -Siehe [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) für ein Beispiel zur Implementierung eines Expertensystems für Vorwärts- und Rückwärtsinferenz. +Siehe [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) für ein Beispiel zur Implementierung eines Expertensystems mit Vorwärts- und Rückwärts-Schlussfolgerung. +> **Hinweis**: Dieses Beispiel ist ziemlich einfach und vermittelt lediglich eine Vorstellung davon, wie ein Expertensystem aussieht. Sobald Sie beginnen, ein solches System zu erstellen, werden Sie erst ab einer bestimmten Anzahl von Regeln, etwa 200+, ein gewisses *intelligentes* Verhalten bemerken. Ab einem bestimmten Punkt werden die Regeln so komplex, dass es schwierig wird, alle im Kopf zu behalten, und an diesem Punkt könnten Sie sich fragen, warum das System bestimmte Entscheidungen trifft. Eine wichtige Eigenschaft von wissensbasierten Systemen ist jedoch, dass Sie immer genau *erklären* können, wie jede Entscheidung getroffen wurde. +## Ontologien und das Semantische Web -> **Hinweis**: Dieses Beispiel ist recht einfach und vermittelt nur eine Vorstellung davon, wie ein Expertensystem aussieht. Sobald du anfängst, ein solches System zu erstellen, wirst du erst dann einige *intelligente* Verhaltensweisen bemerken, wenn du eine bestimmte Anzahl von Regeln erreichst, etwa 200+. Irgendwann werden die Regeln zu komplex, um alle im Kopf zu behalten, und an diesem Punkt wirst du dich fragen, warum ein System bestimmte Entscheidungen trifft. Dennoch ist die wichtige Eigenschaft wissensbasierter Systeme, dass du immer genau *erklären* kannst, wie eine der Entscheidungen getroffen wurde. +Ende des 20. Jahrhunderts gab es eine Initiative, die Wissensrepräsentation nutzte, um Internetressourcen zu annotieren, sodass Ressourcen gefunden werden konnten, die sehr spezifischen Anfragen entsprechen. Diese Bewegung wurde **Semantisches Web** genannt und basierte auf mehreren Konzepten: -## Ontologien und das semantische Web - -Am Ende des 20. Jahrhunderts gab es eine Initiative, Wissensdarstellung zu verwenden, um Internetressourcen zu annotieren, sodass es möglich wäre, Ressourcen zu finden, die sehr spezifischen Anfragen entsprechen. Diese Bewegung wurde als **semantisches Web** bezeichnet und basierte auf mehreren Konzepten: - -- Eine spezielle Wissensdarstellung, die auf **[Beschreibungslogiken](https://en.wikipedia.org/wiki/Description_logic)** (DL) basiert. Sie ähnelt der Frame-Wissensdarstellung, da sie eine Hierarchie von Objekten mit Eigenschaften aufbaut, jedoch formale logische Semantik und Schlussfolgerung hat. Es gibt eine ganze Familie von DLs, die zwischen Ausdruckskraft und algorithmischer Komplexität der Schlussfolgerung balancieren. -- Verteilte Wissensdarstellung, bei der alle Konzepte durch einen globalen URI-Identifikator dargestellt werden, was es ermöglicht, Wissenshierarchien zu erstellen, die sich über das Internet erstrecken. +- Eine spezielle Wissensrepräsentation basierend auf **[Beschreibungssprachen](https://en.wikipedia.org/wiki/Description_logic)** (DL). Sie ähnelt der Rahmen-Wissensrepräsentation, da sie eine Hierarchie von Objekten mit Eigenschaften aufbaut, hat jedoch formale logische Semantik und Schlussfolgerungen. Es gibt eine ganze Familie von DLs, die zwischen Ausdruckskraft und algorithmischer Komplexität der Schlussfolgerungen balancieren. +- Verteilte Wissensrepräsentation, bei der alle Konzepte durch einen globalen URI-Identifikator repräsentiert werden, was es ermöglicht, Wissenshierarchien zu erstellen, die das Internet umfassen. - Eine Familie von XML-basierten Sprachen zur Wissensbeschreibung: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). -Ein zentrales Konzept im semantischen Web ist das Konzept der **Ontologie**. Es bezieht sich auf eine explizite Spezifikation eines Problembereichs unter Verwendung einer formalen Wissensdarstellung. Die einfachste Ontologie kann einfach eine Hierarchie von Objekten in einem Problembereich sein, aber komplexere Ontologien werden Regeln enthalten, die für Schlussfolgerungen verwendet werden können. +Ein Kernkonzept im Semantischen Web ist das Konzept der **Ontologie**. Es bezieht sich auf eine explizite Spezifikation eines Problemfeldes unter Verwendung einer formalen Wissensrepräsentation. Die einfachste Ontologie kann einfach eine Hierarchie von Objekten in einem Problemfeld sein, aber komplexere Ontologien beinhalten Regeln, die für Schlussfolgerungen verwendet werden können. -Im semantischen Web basieren alle Darstellungen auf Tripeln. Jedes Objekt und jede Relation sind eindeutig durch die URI identifiziert. Zum Beispiel, wenn wir den Fakt angeben wollen, dass dieser KI-Lehrplan von Dmitry Soshnikov am 1. Januar 2022 entwickelt wurde - hier sind die Tripel, die wir verwenden können: +Im Semantischen Web basieren alle Darstellungen auf Tripeln. Jedes Objekt und jede Beziehung werden eindeutig durch den URI identifiziert. Zum Beispiel, wenn wir die Tatsache ausdrücken möchten, dass dieses KI-Curriculum von Dmitry Soshnikov am 1. Januar 2022 entwickelt wurde, könnten wir die folgenden Tripel verwenden: @@ -173,17 +178,17 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Hier `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` sind einige bekannte und allgemein akzeptierte URIs, um die Konzepte von *Schöpfer* und *Erstellungsdatum* auszudrücken. +> ✅ Hier sind `http://www.example.com/terms/creation-date` und `http://purl.org/dc/elements/1.1/creator` einige bekannte und allgemein akzeptierte URIs, um die Konzepte von *Ersteller* und *Erstellungsdatum* auszudrücken. -In einem komplexeren Fall, wenn wir eine Liste von Schöpfern definieren möchten, können wir einige in RDF definierte Datenstrukturen verwenden. +In einem komplexeren Fall, wenn wir eine Liste von Erstellern definieren möchten, können wir einige in RDF definierte Datenstrukturen verwenden. > Diagramme oben von [Dmitry Soshnikov](http://soshnikov.com) -Der Fortschritt beim Aufbau des semantischen Webs wurde durch den Erfolg von Suchmaschinen und Techniken der natürlichen Sprachverarbeitung, die es ermöglichen, strukturierte Daten aus Texten zu extrahieren, etwas verlangsamt. Dennoch gibt es in einigen Bereichen weiterhin erhebliche Bemühungen, Ontologien und Wissensbasen zu pflegen. Einige Projekte, die erwähnenswert sind: +Der Fortschritt beim Aufbau des Semantischen Webs wurde durch den Erfolg von Suchmaschinen und Techniken der natürlichen Sprachverarbeitung etwas verlangsamt, die es ermöglichen, strukturierte Daten aus Texten zu extrahieren. Dennoch gibt es in einigen Bereichen weiterhin bedeutende Bemühungen, Ontologien und Wissensbasen zu pflegen. Einige bemerkenswerte Projekte: -* [WikiData](https://wikidata.org/) ist eine Sammlung von maschinenlesbaren Wissensbasen, die mit Wikipedia verbunden sind. Die meisten Daten stammen aus den Wikipedia *InfoBoxen*, Stücken strukturierten Inhalts innerhalb von Wikipedia-Seiten. Du kannst [abfragen](https://query.wikidata.org/) wikidata in SPARQL, einer speziellen Abfragesprache für das semantische Web. Hier ist eine Beispielabfrage, die die beliebtesten Augenfarben unter Menschen anzeigt: +* [WikiData](https://wikidata.org/) ist eine Sammlung maschinenlesbarer Wissensbasen, die mit Wikipedia verbunden sind. Die meisten Daten werden aus den Wikipedia *InfoBoxes* extrahiert, strukturierten Inhalten innerhalb der Wikipedia-Seiten. Sie können [WikiData abfragen](https://query.wikidata.org/) mit SPARQL, einer speziellen Abfragesprache für das Semantische Web. Hier ist eine Beispielabfrage, die die beliebtesten Augenfarben unter Menschen anzeigt: ```sparql #defaultView:BubbleChart @@ -197,13 +202,47 @@ WHERE GROUP BY ?eyeColorLabel ``` -* [DBpedia](https://www.dbpedia.org/) ist ein weiterer Versuch, ähnlich wie WikiData. +* [DBpedia](https://www.dbpedia.org/) ist ein weiteres Projekt, das WikiData ähnelt. -> ✅ Wenn du mit dem Erstellen deiner eigenen Ontologien oder dem Öffnen bestehender experimentieren möchtest, gibt es einen großartigen visuellen Ontologie-Editor namens [Protégé](https://protege.stanford.edu/). Lade ihn herunter oder benutze ihn online. +> ✅ Wenn Sie mit dem Aufbau eigener Ontologien oder dem Öffnen bestehender experimentieren möchten, gibt es einen großartigen visuellen Ontologie-Editor namens [Protégé](https://protege.stanford.edu/). Laden Sie ihn herunter oder nutzen Sie ihn online. +*Web Protégé Editor geöffnet mit der Romanov-Familienontologie. Screenshot von Dmitry Soshnikov* +## ✍️ Übung: Eine Familienontologie + +Sehen Sie sich [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) an, um ein Beispiel für die Verwendung von Techniken des Semantischen Webs zur Analyse von Familienbeziehungen zu sehen. Wir werden einen Familienstammbaum im üblichen GEDCOM-Format und eine Ontologie von Familienbeziehungen verwenden, um einen Graphen aller Familienbeziehungen für eine gegebene Gruppe von Individuen zu erstellen. + +## Microsoft Concept Graph + +In den meisten Fällen werden Ontologien sorgfältig von Hand erstellt. Es ist jedoch auch möglich, Ontologien aus unstrukturierten Daten zu **extrahieren**, beispielsweise aus Texten in natürlicher Sprache. + +Ein solcher Versuch wurde von Microsoft Research unternommen und führte zum [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Es handelt sich um eine große Sammlung von Entitäten, die mithilfe der `is-a`-Vererbungsbeziehung gruppiert wurden. Damit können Fragen wie "Was ist Microsoft?" beantwortet werden – die Antwort könnte etwa lauten: "Ein Unternehmen mit einer Wahrscheinlichkeit von 0,87 und eine Marke mit einer Wahrscheinlichkeit von 0,75". + +Der Graph ist entweder als REST-API oder als große herunterladbare Textdatei verfügbar, die alle Entitätspaare auflistet. + +## ✍️ Übung: Ein Concept Graph + +Probieren Sie das [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb)-Notebook aus, um zu sehen, wie wir den Microsoft Concept Graph verwenden können, um Nachrichtenartikel in verschiedene Kategorien zu gruppieren. + +## Fazit + +Heutzutage wird KI oft als Synonym für *Maschinelles Lernen* oder *Neuronale Netze* betrachtet. Ein Mensch zeigt jedoch auch explizites Denken, etwas, das derzeit von neuronalen Netzen nicht behandelt wird. In realen Projekten wird explizites Denken weiterhin verwendet, um Aufgaben auszuführen, die Erklärungen erfordern oder die Fähigkeit, das Verhalten des Systems auf kontrollierte Weise zu ändern. + +## 🚀 Herausforderung + +Im Family Ontology Notebook, das mit dieser Lektion verbunden ist, gibt es die Möglichkeit, mit anderen Familienbeziehungen zu experimentieren. Versuchen Sie, neue Verbindungen zwischen Personen im Familienstammbaum zu entdecken. + +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Überprüfung & Selbststudium + +Recherchieren Sie im Internet, um Bereiche zu entdecken, in denen Menschen versucht haben, Wissen zu quantifizieren und zu kodifizieren. Schauen Sie sich Bloom's Taxonomy an und gehen Sie in der Geschichte zurück, um zu erfahren, wie Menschen versucht haben, ihre Welt zu verstehen. Erkunden Sie die Arbeit von Linnaeus zur Erstellung einer Taxonomie von Organismen und beobachten Sie, wie Dmitri Mendelejew eine Methode zur Beschreibung und Gruppierung chemischer Elemente entwickelte. Welche anderen interessanten Beispiele können Sie finden? + +**Aufgabe**: [Erstellen Sie eine Ontologie](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/2-Symbolic/assignment.md b/translations/de/lessons/2-Symbolic/assignment.md index f4e5c871..aa23100e 100644 --- a/translations/de/lessons/2-Symbolic/assignment.md +++ b/translations/de/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# Eine Ontologie erstellen + +# Erstellen Sie eine Ontologie -Der Aufbau einer Wissensdatenbank dreht sich darum, ein Modell zu kategorisieren, das Fakten über ein Thema repräsentiert. Wählen Sie ein Thema - wie eine Person, einen Ort oder eine Sache - und erstellen Sie dann ein Modell dieses Themas. Verwenden Sie einige der Techniken und Modellierungsstrategien, die in dieser Lektion beschrieben werden. Ein Beispiel wäre die Erstellung einer Ontologie für ein Wohnzimmer mit Möbeln, Beleuchtung und so weiter. Wie unterscheidet sich das Wohnzimmer von der Küche? Vom Badezimmer? Wie wissen Sie, dass es sich um ein Wohnzimmer und nicht um ein Esszimmer handelt? Verwenden Sie [Protégé](https://protege.stanford.edu/), um Ihre Ontologie zu erstellen. +Eine Wissensbasis zu erstellen bedeutet, ein Modell zu kategorisieren, das Fakten zu einem bestimmten Thema darstellt. Wählen Sie ein Thema – wie eine Person, einen Ort oder ein Objekt – und erstellen Sie dann ein Modell zu diesem Thema. Verwenden Sie einige der in dieser Lektion beschriebenen Techniken und Strategien zur Modellerstellung. Ein Beispiel wäre das Erstellen einer Ontologie eines Wohnzimmers mit Möbeln, Lampen und so weiter. Worin unterscheidet sich das Wohnzimmer von der Küche? Dem Badezimmer? Woran erkennen Sie, dass es sich um ein Wohnzimmer und nicht um ein Esszimmer handelt? Verwenden Sie [Protégé](https://protege.stanford.edu/), um Ihre Ontologie zu erstellen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md index 8480c822..456cfa4d 100644 --- a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,8 +1,17 @@ + # Einführung in Neuronale Netze: Perzeptron -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Einer der ersten Versuche, etwas Ähnliches wie ein modernes neuronales Netzwerk zu implementieren, wurde 1957 von Frank Rosenblatt vom Cornell Aeronautical Laboratory unternommen. Es handelte sich um eine Hardware-Implementierung namens "Mark-1", die darauf ausgelegt war, primitive geometrische Figuren wie Dreiecke, Quadrate und Kreise zu erkennen. +Einer der ersten Versuche, etwas Ähnliches wie ein modernes neuronales Netz zu implementieren, wurde 1957 von Frank Rosenblatt vom Cornell Aeronautical Laboratory unternommen. Es handelte sich um eine Hardware-Implementierung namens "Mark-1", die entwickelt wurde, um primitive geometrische Figuren wie Dreiecke, Quadrate und Kreise zu erkennen. | | | |--------------|-----------| @@ -10,39 +19,39 @@ Einer der ersten Versuche, etwas Ähnliches wie ein modernes neuronales Netzwerk > Bilder [von Wikipedia](https://en.wikipedia.org/wiki/Perceptron) -Ein Eingabebild wurde durch ein 20x20-Photodetektor-Array dargestellt, sodass das neuronale Netzwerk 400 Eingaben und eine binäre Ausgabe hatte. Ein einfaches Netzwerk bestand aus einem Neuron, das auch als **Schwellwertlogikeinheit** bezeichnet wird. Die Gewichte des neuronalen Netzwerks wirkten wie Potentiometer, die während der Trainingsphase manuell angepasst werden mussten. +Ein Eingabebild wurde durch ein 20x20-Photodioden-Array dargestellt, sodass das neuronale Netz 400 Eingaben und eine binäre Ausgabe hatte. Ein einfaches Netzwerk bestand aus einem Neuron, das auch als **Schwellenwert-Logikeinheit** bezeichnet wird. Die Gewichte des neuronalen Netzes wirkten wie Potentiometer, die während der Trainingsphase manuell angepasst werden mussten. -> ✅ Ein Potentiometer ist ein Gerät, das es dem Benutzer ermöglicht, den Widerstand eines Schaltkreises anzupassen. +> ✅ Ein Potentiometer ist ein Gerät, das es dem Benutzer ermöglicht, den Widerstand eines Stromkreises einzustellen. -> Die New York Times schrieb zu dieser Zeit über das Perzeptron: *der Embryo eines elektronischen Computers, von dem [die Marine] erwartet, dass er gehen, sprechen, sehen, schreiben, sich selbst reproduzieren und sich seiner Existenz bewusst sein wird.* +> Die New York Times schrieb damals über das Perzeptron: *der Embryo eines elektronischen Computers, von dem [die Marine] erwartet, dass er laufen, sprechen, sehen, schreiben, sich selbst reproduzieren und sich seiner Existenz bewusst sein wird.* ## Perzeptron-Modell -Angenommen, wir haben N Merkmale in unserem Modell, in diesem Fall wäre der Eingangsvektor ein Vektor der Größe N. Ein Perzeptron ist ein **binäres Klassifikations**modell, d.h. es kann zwischen zwei Klassen von Eingabedaten unterscheiden. Wir nehmen an, dass für jeden Eingangsvektor x die Ausgabe unseres Perzeptrons entweder +1 oder -1 beträgt, je nach Klasse. Die Ausgabe wird mit der Formel berechnet: +Angenommen, wir haben N Merkmale in unserem Modell, dann wäre der Eingabevektor ein Vektor der Größe N. Ein Perzeptron ist ein Modell zur **binären Klassifikation**, d.h. es kann zwischen zwei Klassen von Eingabedaten unterscheiden. Wir nehmen an, dass für jeden Eingabevektor x die Ausgabe unseres Perzeptrons entweder +1 oder -1 ist, abhängig von der Klasse. Die Ausgabe wird mit der folgenden Formel berechnet: y(x) = f(wTx) -wobei f eine Schritt-Aktivierungsfunktion ist. +wobei f eine Stufenaktivierungsfunktion ist. ## Training des Perzeptrons -Um ein Perzeptron zu trainieren, müssen wir einen Gewichtungsvektor w finden, der die meisten Werte korrekt klassifiziert, d.h. der den kleinsten **Fehler** ergibt. Dieser Fehler E wird durch das **Perzeptron-Kriterium** wie folgt definiert: +Um ein Perzeptron zu trainieren, müssen wir einen Gewichtsvektor w finden, der die meisten Werte korrekt klassifiziert, d.h. den kleinsten **Fehler** ergibt. Dieser Fehler E wird durch das **Perzeptron-Kriterium** wie folgt definiert: E(w) = -∑wTxiti wobei: -* die Summe über die Trainingsdatenpunkte i genommen wird, die zu einer falschen Klassifikation führen -* xi die Eingabedaten sind und ti für negative und positive Beispiele entsprechend -1 oder +1 ist. +* die Summe über jene Trainingsdatenpunkte i gebildet wird, die zu einer falschen Klassifikation führen +* xi die Eingabedaten sind und ti entweder -1 oder +1 für negative bzw. positive Beispiele ist. -Dieses Kriterium wird als Funktion der Gewichte w betrachtet, und wir müssen es minimieren. Oft wird eine Methode namens **Gradientenabstieg** verwendet, bei der wir mit einigen Anfangsgewichten w(0) beginnen und dann bei jedem Schritt die Gewichte gemäß der Formel aktualisieren: +Dieses Kriterium wird als Funktion der Gewichte w betrachtet, und wir müssen es minimieren. Oft wird eine Methode namens **Gradientenabstieg** verwendet, bei der wir mit einigen Anfangsgewichten w(0) beginnen und dann in jedem Schritt die Gewichte nach der Formel aktualisieren: w(t+1) = w(t) - η∇E(w) -Hierbei ist η die sogenannte **Lernrate**, und ∇E(w) bezeichnet den **Gradienten** von E. Nachdem wir den Gradienten berechnet haben, erhalten wir +Hierbei ist η die sogenannte **Lernrate**, und ∇E(w) bezeichnet den **Gradienten** von E. Nachdem wir den Gradienten berechnet haben, erhalten wir: w(t+1) = w(t) + ∑ηxiti @@ -70,27 +79,26 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): ## Fazit -In dieser Lektion haben Sie über ein Perzeptron gelernt, das ein binäres Klassifikationsmodell ist, und wie man es mit einem Gewichtungsvektor trainiert. +In dieser Lektion haben Sie ein Perzeptron kennengelernt, ein Modell zur binären Klassifikation, und wie man es mit einem Gewichtsvektor trainiert. ## 🚀 Herausforderung -Wenn Sie versuchen möchten, Ihr eigenes Perzeptron zu bauen, probieren Sie [dieses Labor auf Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), das den [Azure ML Designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) verwendet. +Wenn Sie versuchen möchten, Ihr eigenes Perzeptron zu erstellen, probieren Sie [dieses Lab auf Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) aus, das den [Azure ML Designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) verwendet. -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Um zu sehen, wie wir das Perzeptron zur Lösung eines Spielzeugsproblems sowie realer Probleme verwenden können und um weiter zu lernen - gehen Sie zum [Perzeptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) Notizbuch. +Um zu sehen, wie wir ein Perzeptron verwenden können, um ein einfaches Problem sowie reale Probleme zu lösen, und um weiterzulernen, gehen Sie zum [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb)-Notebook. -Hier ist ein interessanter [Artikel über Perzeptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 -) ebenfalls. +Hier ist ein interessanter [Artikel über Perzeptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). ## [Aufgabe](lab/README.md) -In dieser Lektion haben wir ein Perzeptron für die binäre Klassifizierungsaufgabe implementiert und es verwendet, um zwischen zwei handgeschriebenen Ziffern zu klassifizieren. In diesem Labor sind Sie aufgefordert, das Problem der Ziffernklassifizierung vollständig zu lösen, d.h. zu bestimmen, welche Ziffer am wahrscheinlichsten einem gegebenen Bild entspricht. +In dieser Lektion haben wir ein Perzeptron für eine binäre Klassifikationsaufgabe implementiert und es verwendet, um zwischen zwei handgeschriebenen Ziffern zu klassifizieren. In diesem Lab sollen Sie das Problem der Ziffernklassifikation vollständig lösen, d.h. bestimmen, welche Ziffer am wahrscheinlichsten zu einem gegebenen Bild gehört. -* [Anleitungen](lab/README.md) -* [Notizbuch](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Anleitung](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index 062d07a6..40b9086d 100644 --- a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ + # Mehrklassenklassifikation mit Perzeptron Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Verwenden Sie den Code, den wir in dieser Lektion für die binäre Klassifikation von handgeschriebenen MNIST-Ziffern entwickelt haben, um einen Mehrklassenklassifikator zu erstellen, der in der Lage ist, jede Ziffer zu erkennen. Berechnen Sie die Klassifikationsgenauigkeit auf dem Trainings- und Testdatensatz und drucken Sie die Verwirrungsmatrix aus. +Verwenden Sie den Code, den wir in dieser Lektion für die binäre Klassifikation von MNIST-Handschriftziffern entwickelt haben, um einen Mehrklassenklassifikator zu erstellen, der jede Ziffer erkennen kann. Berechnen Sie die Klassifikationsgenauigkeit für das Trainings- und Testdatenset und geben Sie die Verwirrungsmatrix aus. ## Hinweise -1. Erstellen Sie für jede Ziffer einen Datensatz für den binären Klassifikator "diese Ziffer vs. alle anderen Ziffern" -1. Trainieren Sie 10 verschiedene Perzeptrons für die binäre Klassifikation (eines für jede Ziffer) -1. Definieren Sie eine Funktion, die eine Eingabenziffer klassifiziert +1. Erstellen Sie für jede Ziffer ein Datenset für einen binären Klassifikator von „diese Ziffer vs. alle anderen Ziffern“. +1. Trainieren Sie 10 verschiedene Perzeptrons für die binäre Klassifikation (jeweils eines für jede Ziffer). +1. Definieren Sie eine Funktion, die eine Eingabeziffer klassifiziert. -> **Hinweis**: Wenn wir die Gewichte aller 10 Perzeptrons in eine Matrix kombinieren, sollten wir in der Lage sein, alle 10 Perzeptrons auf die Eingabenziffern durch eine Matrixmultiplikation anzuwenden. Die wahrscheinlichste Ziffer kann dann einfach durch die Anwendung der `argmax`-Operation auf die Ausgabe gefunden werden. +> **Hinweis**: Wenn wir die Gewichte aller 10 Perzeptrons in einer Matrix kombinieren, sollten wir in der Lage sein, alle 10 Perzeptrons durch eine einzige Matrixmultiplikation auf die Eingabeziffern anzuwenden. Die wahrscheinlichste Ziffer kann dann einfach durch die Anwendung der `argmax`-Operation auf die Ausgabe gefunden werden. -## Notizbuch starten +## Start-Notebook -Starten Sie das Labor, indem Sie [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) öffnen. +Beginnen Sie das Labor, indem Sie [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) öffnen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md index dda900be..939b0a51 100644 --- a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Einführung in Neuronale Netzwerke. Mehrschichtiger Perzeptron + +# Einführung in Neuronale Netze. Mehrschichtiger Perzeptron -Im vorherigen Abschnitt haben Sie das einfachste Modell eines neuronalen Netzwerks kennengelernt - den einlagigen Perzeptron, ein lineares Klassifikationsmodell für zwei Klassen. +Im vorherigen Abschnitt hast du das einfachste Modell eines neuronalen Netzes kennengelernt – den einlagigen Perzeptron, ein lineares Klassifikationsmodell für zwei Klassen. -In diesem Abschnitt werden wir dieses Modell zu einem flexibleren Rahmen erweitern, der es uns ermöglicht: +In diesem Abschnitt erweitern wir dieses Modell zu einem flexibleren Framework, das uns ermöglicht: -* **Mehrklassenklassifikation** zusätzlich zur Zwei-Klassen-Klassifikation durchzuführen +* **Mehrklassenklassifikation** zusätzlich zur Zweiklassenklassifikation durchzuführen * **Regressionsprobleme** zusätzlich zur Klassifikation zu lösen * Klassen zu trennen, die nicht linear separierbar sind -Wir werden auch unser eigenes modulares Framework in Python entwickeln, das es uns ermöglicht, verschiedene Architekturen neuronaler Netzwerke zu konstruieren. +Wir werden außerdem unser eigenes modulares Framework in Python entwickeln, mit dem wir verschiedene Architekturen neuronaler Netze erstellen können. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Formalisierung des Maschinellen Lernens +## Formalisierung des maschinellen Lernens -Lassen Sie uns mit der Formalisierung des Problems des Maschinellen Lernens beginnen. Angenommen, wir haben einen Trainingsdatensatz **X** mit Labels **Y**, und wir müssen ein Modell *f* erstellen, das die genauesten Vorhersagen trifft. Die Qualität der Vorhersagen wird durch die **Verlustfunktion** ℒ gemessen. Folgende Verlustfunktionen werden häufig verwendet: +Beginnen wir mit der Formalisierung des Problems des maschinellen Lernens. Angenommen, wir haben einen Trainingsdatensatz **X** mit Labels **Y**, und wir müssen ein Modell *f* erstellen, das möglichst genaue Vorhersagen trifft. Die Qualität der Vorhersagen wird durch die **Verlustfunktion** ℒ gemessen. Die folgenden Verlustfunktionen werden häufig verwendet: -* Für das Regressionsproblem, wenn wir eine Zahl vorhersagen müssen, können wir den **absoluten Fehler** ∑i|f(x(i))-y(i)| oder den **quadratischen Fehler** ∑i(f(x(i))-y(i))2 verwenden -* Für die Klassifikation verwenden wir den **0-1 Fehler** (der im Wesentlichen dasselbe wie die **Genauigkeit** des Modells ist) oder den **logistischen Fehler**. +* Für Regressionsprobleme, bei denen wir eine Zahl vorhersagen müssen, können wir den **absoluten Fehler** ∑i|f(x(i))-y(i)| oder den **quadratischen Fehler** ∑i(f(x(i))-y(i))2 verwenden. +* Für Klassifikationen verwenden wir den **0-1-Verlust** (der im Wesentlichen der **Genauigkeit** des Modells entspricht) oder den **logistischen Verlust**. -Für den einlagigen Perzeptron wurde die Funktion *f* als lineare Funktion *f(x)=wx+b* definiert (hier ist *w* die Gewichtsmatrix, *x* der Vektor der Eingangsmerkmale und *b* der Bias-Vektor). Für verschiedene Architekturen neuronaler Netzwerke kann diese Funktion komplexere Formen annehmen. +Für den einlagigen Perzeptron wurde die Funktion *f* als lineare Funktion definiert: *f(x)=wx+b* (hierbei ist *w* die Gewichtsmatrix, *x* der Vektor der Eingabefeatures und *b* der Bias-Vektor). Für verschiedene Architekturen neuronaler Netze kann diese Funktion eine komplexere Form annehmen. -> Im Falle der Klassifikation ist es oft wünschenswert, Wahrscheinlichkeiten der entsprechenden Klassen als Netzwerk-Ausgabe zu erhalten. Um willkürliche Zahlen in Wahrscheinlichkeiten umzuwandeln (z.B. um die Ausgabe zu normalisieren), verwenden wir oft die **Softmax**-Funktion σ, und die Funktion *f* wird zu *f(x)=σ(wx+b)* +> Im Fall der Klassifikation ist es oft wünschenswert, Wahrscheinlichkeiten der entsprechenden Klassen als Ausgabe des Netzes zu erhalten. Um beliebige Zahlen in Wahrscheinlichkeiten umzuwandeln (z. B. um die Ausgabe zu normalisieren), verwenden wir oft die **Softmax-Funktion** σ, und die Funktion *f* wird zu *f(x)=σ(wx+b)*. -In der obigen Definition von *f* werden *w* und *b* als **Parameter** θ=⟨*w,b*⟩ bezeichnet. Gegebenen den Datensatz ⟨**X**,**Y**⟩ können wir einen Gesamter Fehler über den gesamten Datensatz als Funktion der Parameter θ berechnen. +In der obigen Definition von *f* werden *w* und *b* als **Parameter** θ=⟨*w,b*⟩ bezeichnet. Gegeben den Datensatz ⟨**X**,**Y**⟩, können wir den Gesamterror für den gesamten Datensatz als Funktion der Parameter θ berechnen. -> ✅ **Das Ziel des Trainings eines neuronalen Netzwerks besteht darin, den Fehler durch Variieren der Parameter θ zu minimieren.** +> ✅ **Das Ziel des Trainings eines neuronalen Netzes ist es, den Fehler durch Variation der Parameter θ zu minimieren.** -## Gradientabstieg-Optimierung +## Gradient-Descent-Optimierung -Es gibt eine bekannte Methode zur Optimierung von Funktionen, die als **Gradientenabstieg** bezeichnet wird. Die Idee ist, dass wir die Ableitung (im mehrdimensionalen Fall als **Gradient** bezeichnet) der Verlustfunktion bezüglich der Parameter berechnen und die Parameter so variieren, dass der Fehler sinkt. Dies kann wie folgt formalisiert werden: +Es gibt eine bekannte Methode zur Optimierung von Funktionen, die als **Gradient Descent** bezeichnet wird. Die Idee ist, dass wir eine Ableitung (im mehrdimensionalen Fall als **Gradient** bezeichnet) der Verlustfunktion in Bezug auf die Parameter berechnen und die Parameter so variieren können, dass der Fehler abnimmt. Dies kann wie folgt formalisiert werden: -* Initialisieren Sie die Parameter mit zufälligen Werten w(0), b(0) -* Wiederholen Sie den folgenden Schritt viele Male: +* Initialisiere die Parameter mit zufälligen Werten w(0), b(0) +* Wiederhole die folgenden Schritte viele Male: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -Während des Trainings sollen die Optimierungsschritte unter Berücksichtigung des gesamten Datensatzes berechnet werden (denken Sie daran, dass der Verlust als Summe über alle Trainingsproben berechnet wird). In der Praxis nehmen wir jedoch kleine Portionen des Datensatzes, die als **Minibatches** bezeichnet werden, und berechnen die Gradienten basierend auf einer Teilmenge von Daten. Da die Teilmenge jedes Mal zufällig ausgewählt wird, wird diese Methode als **stochastischer Gradientabstieg** (SGD) bezeichnet. +Während des Trainings sollten die Optimierungsschritte unter Berücksichtigung des gesamten Datensatzes berechnet werden (denk daran, dass der Verlust als Summe über alle Trainingsbeispiele berechnet wird). In der Praxis nehmen wir jedoch kleine Teile des Datensatzes, sogenannte **Minibatches**, und berechnen die Gradienten basierend auf einem Teil der Daten. Da der Teil jedes Mal zufällig ausgewählt wird, wird diese Methode als **stochastischer Gradient Descent** (SGD) bezeichnet. -## Mehrschichtige Perzeptrons und Rückpropagation +## Mehrschichtige Perzeptrons und Backpropagation -Das einlagige Netzwerk, wie wir oben gesehen haben, ist in der Lage, linear separierbare Klassen zu klassifizieren. Um ein reichhaltigeres Modell zu erstellen, können wir mehrere Schichten des Netzwerks kombinieren. Mathematisch würde das bedeuten, dass die Funktion *f* eine komplexere Form annehmen würde und in mehreren Schritten berechnet wird: +Ein einlagiges Netzwerk, wie wir oben gesehen haben, ist in der Lage, linear separierbare Klassen zu klassifizieren. Um ein komplexeres Modell zu erstellen, können wir mehrere Schichten des Netzwerks kombinieren. Mathematisch bedeutet dies, dass die Funktion *f* eine komplexere Form annimmt und in mehreren Schritten berechnet wird: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) -Hier ist α eine **nicht-lineare Aktivierungsfunktion**, σ ist eine Softmax-Funktion, und die Parameter sind θ=<*w1,b1,w2,b2*>. +Hierbei ist α eine **nichtlineare Aktivierungsfunktion**, σ eine Softmax-Funktion, und die Parameter θ=<*w1,b1,w2,b2*>. -Der Gradientabstiegsalgorithmus bleibt derselbe, aber es wird schwieriger, die Gradienten zu berechnen. Gegebenen der Kettenregel für Ableitungen können wir die Ableitungen wie folgt berechnen: +Der Gradient-Descent-Algorithmus bleibt derselbe, aber die Berechnung der Gradienten wird schwieriger. Mithilfe der Kettenregel der Differentiation können wir die Ableitungen wie folgt berechnen: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ Die Kettenregel wird verwendet, um die Ableitungen der Verlustfunktion bezüglich der Parameter zu berechnen. +> ✅ Die Kettenregel der Differentiation wird verwendet, um die Ableitungen der Verlustfunktion in Bezug auf die Parameter zu berechnen. -Beachten Sie, dass der linkeste Teil all dieser Ausdrücke gleich ist, und somit können wir die Ableitungen effektiv berechnen, indem wir von der Verlustfunktion ausgehen und "rückwärts" durch den Berechnungsgraphen gehen. Daher wird die Methode zum Trainieren eines mehrschichtigen Perzeptrons als **Rückpropagation** oder 'Backprop' bezeichnet. +Beachte, dass der linke Teil all dieser Ausdrücke identisch ist, und daher können wir die Ableitungen effizient berechnen, indem wir von der Verlustfunktion ausgehend "rückwärts" durch den Berechnungsgraphen gehen. Daher wird die Methode zum Trainieren eines mehrschichtigen Perzeptrons als **Backpropagation** oder 'Backprop' bezeichnet. Berechnungsgraph > TODO: Bildnachweis -> ✅ Wir werden die Rückpropagation in unserem Notizbuchbeispiel viel detaillierter behandeln. +> ✅ Wir werden Backpropagation in unserem Notebook-Beispiel noch viel detaillierter behandeln. ## Fazit -In dieser Lektion haben wir unsere eigene Bibliothek für neuronale Netzwerke erstellt und sie für eine einfache zweidimensionale Klassifikationsaufgabe verwendet. +In dieser Lektion haben wir unsere eigene Bibliothek für neuronale Netze erstellt und sie für eine einfache zweidimensionale Klassifikationsaufgabe verwendet. ## 🚀 Herausforderung -Im begleitenden Notizbuch werden Sie Ihr eigenes Framework zur Erstellung und zum Training von mehrschichtigen Perzeptrons implementieren. Sie werden im Detail sehen, wie moderne neuronale Netzwerke funktionieren. +Im begleitenden Notebook wirst du dein eigenes Framework zur Erstellung und zum Training mehrschichtiger Perzeptrons implementieren. Du wirst im Detail sehen, wie moderne neuronale Netze funktionieren. -Gehen Sie zum Notizbuch [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) und arbeiten Sie es durch. +Gehe zum [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) Notebook und arbeite es durch. -## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Rückpropagation ist ein gängiger Algorithmus, der in KI und ML verwendet wird und es wert ist, [im Detail](https://wikipedia.org/wiki/Backpropagation) studiert zu werden. +Backpropagation ist ein gängiger Algorithmus in KI und ML, der es wert ist, [im Detail](https://wikipedia.org/wiki/Backpropagation) studiert zu werden. ## [Aufgabe](lab/README.md) -In diesem Labor werden Sie gebeten, das Framework, das Sie in dieser Lektion erstellt haben, zu verwenden, um die Klassifikation handgeschriebener Ziffern im MNIST-Datensatz zu lösen. +In diesem Labor wirst du das Framework, das du in dieser Lektion erstellt hast, verwenden, um die Klassifikation handgeschriebener Ziffern aus dem MNIST-Datensatz zu lösen. -* [Anleitungen](lab/README.md) -* [Notizbuch](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +* [Anweisungen](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index 644891a6..3361ee06 100644 --- a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ + # MNIST-Klassifikation mit unserem eigenen Framework Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Löse das Problem der Klassifikation handgeschriebener Ziffern im MNIST-Datensatz mithilfe von 1-, 2- und 3-schichtigen Perzeptronen. Nutze das neuronale Netzwerk-Framework, das wir in der Lektion entwickelt haben. +Lösen Sie das MNIST-Problem der handschriftlichen Ziffernklassifikation mithilfe eines 1-, 2- und 3-schichtigen Perzeptrons. Verwenden Sie das neuronale Netzwerk-Framework, das wir in der Lektion entwickelt haben. -## Notebook starten +## Start-Notebook -Beginne das Labor, indem du [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) öffnest. +Beginnen Sie das Labor, indem Sie [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) öffnen. ## Fragen -Versuche als Ergebnis dieses Labors die folgenden Fragen zu beantworten: +Versuchen Sie, als Ergebnis dieses Labors die folgenden Fragen zu beantworten: -- Beeinflusst die Aktivierungsfunktion zwischen den Schichten die Leistung des Netzwerks? +- Beeinflusst die Aktivierungsfunktion zwischen den Schichten die Netzwerkleistung? - Benötigen wir für diese Aufgabe ein 2- oder 3-schichtiges Netzwerk? -- Hattest du Probleme beim Trainieren des Netzwerks? Besonders als die Anzahl der Schichten zunahm. -- Wie verhalten sich die Gewichte des Netzwerks während des Trainings? Du kannst den maximalen Absolutwert der Gewichte im Vergleich zur Epoche auftragen, um die Beziehung zu verstehen. +- Sind während des Trainings des Netzwerks Probleme aufgetreten? Besonders, wenn die Anzahl der Schichten zunahm. +- Wie verhalten sich die Gewichte des Netzwerks während des Trainings? Sie können den maximalen absoluten Wert der Gewichte im Vergleich zur Epoche plotten, um die Beziehung zu verstehen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md index 752e0b35..e29e1cbb 100644 --- a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,37 +1,46 @@ -# Frameworks für Neuronale Netzwerke + +# Neuronale Netzwerk-Frameworks -Wie wir bereits gelernt haben, um neuronale Netzwerke effizient zu trainieren, müssen wir zwei Dinge tun: +Wie wir bereits gelernt haben, müssen wir zwei Dinge tun, um neuronale Netzwerke effizient trainieren zu können: -* Mit Tensors arbeiten, z. B. multiplizieren, addieren und Funktionen wie Sigmoid oder Softmax berechnen -* Die Gradienten aller Ausdrücke berechnen, um die Optimierung durch Gradientenabstieg durchzuführen +* Mit Tensoren arbeiten, z. B. multiplizieren, addieren und Funktionen wie Sigmoid oder Softmax berechnen +* Gradienten aller Ausdrücke berechnen, um die Gradientenabstiegsoptimierung durchzuführen -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Während die `numpy` Bibliothek den ersten Teil erledigen kann, benötigen wir einen Mechanismus zur Berechnung von Gradienten. In [unserem Framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), das wir im vorherigen Abschnitt entwickelt haben, mussten wir alle Ableitungsfunktionen manuell innerhalb der `backward` Methode programmieren, die Backpropagation durchführt. Idealerweise sollte ein Framework uns die Möglichkeit geben, die Gradienten *jeden Ausdrucks* zu berechnen, den wir definieren können. +Während die Bibliothek `numpy` den ersten Teil übernehmen kann, benötigen wir einen Mechanismus, um Gradienten zu berechnen. In [unserem Framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), das wir im vorherigen Abschnitt entwickelt haben, mussten wir alle Ableitungsfunktionen manuell im `backward`-Methodenprogrammieren, die die Rückwärtspropagation durchführt. Idealerweise sollte ein Framework uns die Möglichkeit geben, Gradienten für *jeden Ausdruck* zu berechnen, den wir definieren können. -Ein weiterer wichtiger Aspekt ist die Fähigkeit, Berechnungen auf der GPU oder anderen spezialisierten Recheneinheiten wie [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) durchzuführen. Das Training tiefer neuronaler Netzwerke erfordert *eine Menge* Berechnungen, und die Möglichkeit, diese Berechnungen auf GPUs zu parallelisieren, ist von großer Bedeutung. +Ein weiterer wichtiger Punkt ist die Möglichkeit, Berechnungen auf der GPU oder anderen spezialisierten Recheneinheiten wie [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) durchzuführen. Das Training tiefer neuronaler Netzwerke erfordert *sehr viele* Berechnungen, und die Möglichkeit, diese Berechnungen auf GPUs zu parallelisieren, ist von großer Bedeutung. > ✅ Der Begriff 'parallelisieren' bedeutet, die Berechnungen auf mehrere Geräte zu verteilen. -Derzeit sind die beiden beliebtesten neuronalen Frameworks: [TensorFlow](http://TensorFlow.org) und [PyTorch](https://pytorch.org/). Beide bieten eine Low-Level-API, um mit Tensors sowohl auf CPU als auch auf GPU zu arbeiten. Darüber hinaus gibt es eine höherstufige API, die entsprechend [Keras](https://keras.io/) und [PyTorch Lightning](https://pytorchlightning.ai/) genannt wird. +Derzeit sind die beiden beliebtesten neuronalen Frameworks: [TensorFlow](http://TensorFlow.org) und [PyTorch](https://pytorch.org/). Beide bieten eine Low-Level-API, um mit Tensoren sowohl auf der CPU als auch auf der GPU zu arbeiten. Zusätzlich zur Low-Level-API gibt es auch eine High-Level-API, die entsprechend [Keras](https://keras.io/) und [PyTorch Lightning](https://pytorchlightning.ai/) genannt wird. Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) --------------|-------------------------------------|-------------------------------- -High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +High-Level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**Low-Level APIs** in beiden Frameworks ermöglichen es Ihnen, sogenannte **Berechnungsgraphen** zu erstellen. Dieser Graph definiert, wie man die Ausgabe (normalerweise die Verlustfunktion) mit gegebenen Eingabeparametern berechnet und kann zur Berechnung auf der GPU verschoben werden, wenn diese verfügbar ist. Es gibt Funktionen, um diesen Berechnungsgraphen zu differenzieren und Gradienten zu berechnen, die dann zur Optimierung der Modellparameter verwendet werden können. +**Low-Level-APIs** in beiden Frameworks ermöglichen es, sogenannte **Rechengraphen** zu erstellen. Dieser Graph definiert, wie die Ausgabe (normalerweise die Verlustfunktion) mit gegebenen Eingabeparametern berechnet wird, und kann zur Berechnung auf die GPU übertragen werden, falls verfügbar. Es gibt Funktionen, um diesen Rechengraphen zu differenzieren und Gradienten zu berechnen, die dann zur Optimierung der Modellparameter verwendet werden können. -**High-Level APIs** betrachten neuronale Netzwerke im Wesentlichen als eine **Folge von Schichten** und erleichtern den Aufbau der meisten neuronalen Netzwerke erheblich. Das Training des Modells erfordert normalerweise die Vorbereitung der Daten und dann das Aufrufen einer `fit` Funktion, um die Arbeit zu erledigen. +**High-Level-APIs** betrachten neuronale Netzwerke im Wesentlichen als eine **Abfolge von Schichten** und erleichtern den Aufbau der meisten neuronalen Netzwerke erheblich. Das Training des Modells erfordert in der Regel die Vorbereitung der Daten und dann das Aufrufen einer `fit`-Funktion, um die Arbeit zu erledigen. -Die hochgradige API ermöglicht es Ihnen, typische neuronale Netzwerke sehr schnell zu konstruieren, ohne sich um viele Details kümmern zu müssen. Gleichzeitig bieten Low-Level-APIs viel mehr Kontrolle über den Trainingsprozess, und daher werden sie häufig in der Forschung verwendet, wenn es darum geht, neue Architekturen neuronaler Netzwerke zu entwickeln. +Die High-Level-API ermöglicht es, typische neuronale Netzwerke sehr schnell zu erstellen, ohne sich um viele Details kümmern zu müssen. Gleichzeitig bieten Low-Level-APIs viel mehr Kontrolle über den Trainingsprozess und werden daher häufig in der Forschung verwendet, wenn man mit neuen Architekturen neuronaler Netzwerke arbeitet. -Es ist auch wichtig zu verstehen, dass Sie beide APIs zusammen verwenden können, z. B. können Sie Ihre eigene Netzwerkarchitektur mit der Low-Level-API entwickeln und sie dann in das größere Netzwerk einfügen, das mit der High-Level-API konstruiert und trainiert wurde. Oder Sie können ein Netzwerk mit der High-Level-API als Folge von Schichten definieren und dann Ihre eigene Low-Level-Trainingsschleife verwenden, um die Optimierung durchzuführen. Beide APIs verwenden die gleichen grundlegenden zugrunde liegenden Konzepte und sind so gestaltet, dass sie gut zusammenarbeiten. +Es ist auch wichtig zu verstehen, dass beide APIs zusammen verwendet werden können, z. B. kann man eine eigene Netzwerkschichtarchitektur mit der Low-Level-API entwickeln und diese dann in einem größeren Netzwerk verwenden, das mit der High-Level-API erstellt und trainiert wurde. Oder man definiert ein Netzwerk mit der High-Level-API als Abfolge von Schichten und verwendet dann eine eigene Low-Level-Trainingsschleife zur Optimierung. Beide APIs basieren auf denselben grundlegenden Konzepten und sind so konzipiert, dass sie gut zusammenarbeiten. ## Lernen -In diesem Kurs bieten wir den Großteil des Inhalts sowohl für PyTorch als auch für TensorFlow an. Sie können Ihr bevorzugtes Framework auswählen und nur die entsprechenden Notebooks durchgehen. Wenn Sie sich nicht sicher sind, welches Framework Sie wählen sollen, lesen Sie einige Diskussionen im Internet über **PyTorch vs. TensorFlow**. Sie können auch beide Frameworks betrachten, um ein besseres Verständnis zu bekommen. +In diesem Kurs bieten wir die meisten Inhalte sowohl für PyTorch als auch für TensorFlow an. Sie können Ihr bevorzugtes Framework auswählen und nur die entsprechenden Notebooks durchgehen. Wenn Sie sich nicht sicher sind, welches Framework Sie wählen sollen, lesen Sie einige Diskussionen im Internet über **PyTorch vs. TensorFlow**. Sie können sich auch beide Frameworks ansehen, um ein besseres Verständnis zu bekommen. -Wo immer möglich, werden wir High-Level-APIs zur Vereinfachung verwenden. Wir glauben jedoch, dass es wichtig ist, zu verstehen, wie neuronale Netzwerke von Grund auf funktionieren, weshalb wir zu Beginn mit der Low-Level-API und Tensors arbeiten. Wenn Sie jedoch schnell vorankommen und nicht viel Zeit mit dem Lernen dieser Details verbringen möchten, können Sie diese überspringen und direkt zu den High-Level-API-Notebooks gehen. +Wo möglich, verwenden wir High-Level-APIs der Einfachheit halber. Wir glauben jedoch, dass es wichtig ist, zu verstehen, wie neuronale Netzwerke von Grund auf funktionieren. Daher beginnen wir zunächst mit der Arbeit mit Low-Level-APIs und Tensoren. Wenn Sie jedoch schnell loslegen möchten und nicht viel Zeit mit diesen Details verbringen möchten, können Sie diese überspringen und direkt zu den High-Level-API-Notebooks wechseln. ## ✍️ Übungen: Frameworks @@ -39,65 +48,65 @@ Setzen Sie Ihr Lernen in den folgenden Notebooks fort: Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) --------------|-------------------------------------|-------------------------------- -High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +High-Level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -Nachdem Sie die Frameworks gemeistert haben, lassen Sie uns das Konzept des Overfittings zusammenfassen. +Nachdem Sie die Frameworks gemeistert haben, lassen Sie uns das Konzept des Overfittings rekapitulieren. # Overfitting Overfitting ist ein äußerst wichtiges Konzept im maschinellen Lernen, und es ist sehr wichtig, es richtig zu verstehen! -Betrachten Sie das folgende Problem, 5 Punkte (dargestellt durch `x` in den Grafiken unten) zu approximieren: +Betrachten Sie das folgende Problem der Annäherung an 5 Punkte (dargestellt durch `x` in den untenstehenden Diagrammen): -![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.de.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.de.jpg) +![linear](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![overfit](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) -------------------------|-------------------------- **Lineares Modell, 2 Parameter** | **Nicht-lineares Modell, 7 Parameter** -Training Fehler = 5.3 | Training Fehler = 0 +Trainingsfehler = 5.3 | Trainingsfehler = 0 Validierungsfehler = 5.1 | Validierungsfehler = 20 -* Links sehen wir eine gute gerade Linienapproximation. Da die Anzahl der Parameter angemessen ist, erfasst das Modell die Idee hinter der Punktverteilung gut. -* Rechts ist das Modell zu mächtig. Da wir nur 5 Punkte haben und das Modell 7 Parameter hat, kann es sich so anpassen, dass es durch alle Punkte verläuft, was den Trainingsfehler auf 0 reduziert. Dies hindert das Modell jedoch daran, das korrekte Muster hinter den Daten zu verstehen, sodass der Validierungsfehler sehr hoch ist. +* Links sehen wir eine gute lineare Annäherung. Da die Anzahl der Parameter angemessen ist, erfasst das Modell die Verteilung der Punkte korrekt. +* Rechts ist das Modell zu mächtig. Da wir nur 5 Punkte haben und das Modell 7 Parameter hat, kann es sich so anpassen, dass es durch alle Punkte verläuft, wodurch der Trainingsfehler 0 wird. Dies verhindert jedoch, dass das Modell das richtige Muster hinter den Daten versteht, was zu einem sehr hohen Validierungsfehler führt. -Es ist sehr wichtig, ein korrektes Gleichgewicht zwischen der Komplexität des Modells (Anzahl der Parameter) und der Anzahl der Trainingsproben zu finden. +Es ist sehr wichtig, ein korrektes Gleichgewicht zwischen der Komplexität des Modells (Anzahl der Parameter) und der Anzahl der Trainingsbeispiele zu finden. ## Warum Overfitting auftritt - * Nicht genügend Trainingsdaten + * Zu wenig Trainingsdaten * Zu mächtiges Modell * Zu viel Rauschen in den Eingabedaten ## Wie man Overfitting erkennt -Wie Sie aus dem obigen Diagramm sehen können, kann Overfitting durch einen sehr niedrigen Trainingsfehler und einen hohen Validierungsfehler erkannt werden. Normalerweise sehen wir während des Trainings, dass sowohl der Trainings- als auch der Validierungsfehler zu sinken beginnen, und dann kann der Validierungsfehler an einem bestimmten Punkt aufhören zu sinken und anfangen zu steigen. Dies wird ein Zeichen für Overfitting sein und der Hinweis, dass wir wahrscheinlich an dieser Stelle das Training stoppen sollten (oder zumindest einen Snapshot des Modells erstellen sollten). +Wie Sie aus dem obigen Diagramm sehen können, kann Overfitting durch einen sehr niedrigen Trainingsfehler und einen hohen Validierungsfehler erkannt werden. Normalerweise sehen wir während des Trainings, dass sowohl der Trainings- als auch der Validierungsfehler zunächst abnehmen. An einem bestimmten Punkt könnte der Validierungsfehler jedoch aufhören zu sinken und anfangen zu steigen. Dies ist ein Zeichen für Overfitting und ein Hinweis darauf, dass wir das Training an diesem Punkt wahrscheinlich stoppen sollten (oder zumindest einen Schnappschuss des Modells machen sollten). -![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.de.png) +![overfitting](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) ## Wie man Overfitting verhindert -Wenn Sie sehen, dass Overfitting auftritt, können Sie Folgendes tun: +Wenn Sie feststellen, dass Overfitting auftritt, können Sie Folgendes tun: - * Erhöhen Sie die Menge an Trainingsdaten - * Verringern Sie die Komplexität des Modells - * Verwenden Sie eine [Regularisierungstechnik](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), wie z. B. [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), die wir später betrachten werden. + * Die Menge der Trainingsdaten erhöhen + * Die Komplexität des Modells verringern + * Eine [Regularisierungstechnik](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) verwenden, wie z. B. [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), die wir später betrachten werden. -## Overfitting und Bias-Varianz-Handel +## Overfitting und Bias-Varianz-Abwägung -Overfitting ist tatsächlich ein Fall eines allgemeineren Problems in der Statistik, das als [Bias-Varianz-Handel](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) bekannt ist. Wenn wir die möglichen Fehlerquellen in unserem Modell betrachten, können wir zwei Arten von Fehlern sehen: +Overfitting ist tatsächlich ein Fall eines allgemeineren Problems in der Statistik, das als [Bias-Varianz-Abwägung](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) bezeichnet wird. Wenn wir die möglichen Fehlerquellen in unserem Modell betrachten, können wir zwei Arten von Fehlern erkennen: -* **Bias-Fehler** entstehen, weil unser Algorithmus nicht in der Lage ist, die Beziehung zwischen den Trainingsdaten korrekt zu erfassen. Dies kann darauf zurückzuführen sein, dass unser Modell nicht mächtig genug ist (**Underfitting**). -* **Varianz-Fehler**, die entstehen, weil das Modell Rauschen in den Eingabedaten anstelle von bedeutungsvollen Beziehungen approximiert (**Overfitting**). +* **Bias-Fehler** entstehen dadurch, dass unser Algorithmus die Beziehung zwischen den Trainingsdaten nicht korrekt erfassen kann. Dies kann darauf zurückzuführen sein, dass unser Modell nicht mächtig genug ist (**Underfitting**). +* **Varianz-Fehler**, die dadurch entstehen, dass das Modell Rauschen in den Eingabedaten anstelle einer sinnvollen Beziehung approximiert (**Overfitting**). -Während des Trainings nimmt der Bias-Fehler ab (da unser Modell lernt, die Daten zu approximieren), und der Varianz-Fehler nimmt zu. Es ist wichtig, das Training zu stoppen - entweder manuell (wenn wir Overfitting erkennen) oder automatisch (durch Einführung von Regularisierung) - um Overfitting zu verhindern. +Während des Trainings nimmt der Bias-Fehler ab (da unser Modell lernt, die Daten zu approximieren), und der Varianz-Fehler nimmt zu. Es ist wichtig, das Training zu stoppen - entweder manuell (wenn wir Overfitting erkennen) oder automatisch (durch Einführung von Regularisierung) -, um Overfitting zu verhindern. ## Fazit -In dieser Lektion haben Sie die Unterschiede zwischen den verschiedenen APIs der beiden beliebtesten KI-Frameworks, TensorFlow und PyTorch, kennengelernt. Darüber hinaus haben Sie ein sehr wichtiges Thema, Overfitting, behandelt. +In dieser Lektion haben Sie die Unterschiede zwischen den verschiedenen APIs der beiden beliebtesten KI-Frameworks, TensorFlow und PyTorch, kennengelernt. Außerdem haben Sie ein sehr wichtiges Thema, Overfitting, behandelt. ## 🚀 Herausforderung -In den begleitenden Notebooks finden Sie am Ende 'Aufgaben'; arbeiten Sie die Notebooks durch und erfüllen Sie die Aufgaben. +In den begleitenden Notebooks finden Sie 'Aufgaben' am Ende; arbeiten Sie die Notebooks durch und lösen Sie die Aufgaben. -## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) ## Überprüfung & Selbststudium @@ -114,10 +123,10 @@ Stellen Sie sich die folgenden Fragen: ## [Aufgabe](lab/README.md) -In diesem Labor werden Sie gebeten, zwei Klassifikationsprobleme mit ein- und mehrschichtigen voll verbundenen Netzwerken mit PyTorch oder TensorFlow zu lösen. +In diesem Labor sollen Sie zwei Klassifikationsprobleme mit ein- und mehrschichtigen vollständig verbundenen Netzwerken mithilfe von PyTorch oder TensorFlow lösen. -* [Anweisungen](lab/README.md) +* [Anleitung](lab/README.md) * [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 982b2d9d..5c8e2c9f 100644 --- a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ + # Klassifikation mit PyTorch/TensorFlow Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Lösen Sie zwei Klassifikationsprobleme mithilfe von ein- und mehrschichtigen vollständig verbundenen Netzwerken mit PyTorch oder TensorFlow: +Lösen Sie zwei Klassifikationsprobleme mit ein- und mehrschichtigen vollständig verbundenen Netzwerken unter Verwendung von PyTorch oder TensorFlow: -1. **[Iris-Klassifikation](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - ein Beispiel für ein Problem mit tabellarischen Eingabedaten, das mit klassischem maschinellem Lernen bearbeitet werden kann. Ihr Ziel ist es, Irisblumen in 3 Klassen basierend auf 4 numerischen Parametern zu klassifizieren. -2. **MNIST** Klassifikation handgeschriebener Ziffern, die wir bereits gesehen haben. +1. **[Iris-Klassifikation](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - ein Beispiel für ein Problem mit tabellarischen Eingabedaten, das durch klassische maschinelle Lernmethoden gelöst werden kann. Ihr Ziel ist es, Iris-Blumen basierend auf 4 numerischen Parametern in 3 Klassen zu klassifizieren. +1. **MNIST**-Handschriftenerkennung, ein Problem, das wir bereits zuvor behandelt haben. -Probieren Sie verschiedene Netzwerkarchitekturen aus, um die bestmögliche Genauigkeit zu erreichen. +Probieren Sie verschiedene Netzwerkarchitekturen aus, um die bestmögliche Genauigkeit zu erzielen. -## Notizbuch starten +## Start-Notebook Beginnen Sie das Labor, indem Sie [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) öffnen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/README.md b/translations/de/lessons/3-NeuralNetworks/README.md index 2de01914..015faabd 100644 --- a/translations/de/lessons/3-NeuralNetworks/README.md +++ b/translations/de/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ + # Einführung in Neuronale Netzwerke -![Zusammenfassung des Inhalts zu Einführung in Neuronale Netzwerke in einem Doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.de.png) +![Zusammenfassung des Inhalts zu neuronalen Netzwerken in einer Skizze](../../../../lessons/sketchnotes/ai-neuralnetworks.png) -Wie wir in der Einführung besprochen haben, ist eine der Möglichkeiten, Intelligenz zu erreichen, ein **Computermodell** oder ein **künstliches Gehirn** zu trainieren. Seit der Mitte des 20. Jahrhunderts haben Forscher verschiedene mathematische Modelle ausprobiert, bis sich in den letzten Jahren diese Richtung als äußerst erfolgreich erwies. Solche mathematischen Modelle des Gehirns werden als **neuronale Netzwerke** bezeichnet. +Wie wir in der Einführung besprochen haben, ist eine Möglichkeit, Intelligenz zu erreichen, das Training eines **Computermodells** oder eines **künstlichen Gehirns**. Seit Mitte des 20. Jahrhunderts haben Forscher verschiedene mathematische Modelle ausprobiert, bis sich in den letzten Jahren dieser Ansatz als äußerst erfolgreich erwiesen hat. Solche mathematischen Modelle des Gehirns werden als **neuronale Netzwerke** bezeichnet. -> Manchmal werden neuronale Netzwerke als *Künstliche Neuronale Netzwerke* (ANNs) bezeichnet, um zu verdeutlichen, dass wir von Modellen und nicht von echten Netzwerken von Neuronen sprechen. +> Manchmal werden neuronale Netzwerke als *Künstliche Neuronale Netzwerke* (Artificial Neural Networks, ANNs) bezeichnet, um klarzustellen, dass es sich um Modelle handelt und nicht um echte Netzwerke von Neuronen. ## Maschinelles Lernen -Neuronale Netzwerke sind ein Teil eines größeren Fachgebiets, das **Maschinelles Lernen** genannt wird, dessen Ziel es ist, Daten zu verwenden, um Computermodelle zu trainieren, die in der Lage sind, Probleme zu lösen. Maschinelles Lernen ist ein großer Teil der Künstlichen Intelligenz, jedoch behandeln wir klassisches ML in diesem Lehrplan nicht. +Neuronale Netzwerke sind Teil einer größeren Disziplin namens **Maschinelles Lernen**, deren Ziel es ist, Daten zu nutzen, um Computermodelle zu trainieren, die Probleme lösen können. Maschinelles Lernen macht einen großen Teil der Künstlichen Intelligenz aus, jedoch behandeln wir in diesem Lehrplan nicht das klassische ML. > Besuchen Sie unseren separaten **[Maschinelles Lernen für Anfänger](http://github.com/microsoft/ml-for-beginners)** Lehrplan, um mehr über klassisches Maschinelles Lernen zu erfahren. -Im Maschinellen Lernen nehmen wir an, dass wir einen Datensatz von Beispielen **X** und die entsprechenden Ausgabewerte **Y** haben. Beispiele sind oft N-dimensionale Vektoren, die aus **Merkmalen** bestehen, und Ausgaben werden als **Labels** bezeichnet. +Im Maschinellen Lernen gehen wir davon aus, dass wir einen Datensatz mit Beispielen **X** und den entsprechenden Ausgabewerten **Y** haben. Beispiele sind oft N-dimensionale Vektoren, die aus **Merkmalen** bestehen, und Ausgaben werden als **Labels** bezeichnet. -Wir werden die zwei häufigsten Probleme des maschinellen Lernens betrachten: +Wir betrachten die zwei häufigsten Probleme des Maschinellen Lernens: -* **Klassifikation**, bei der wir ein Eingabeobjekt in zwei oder mehr Klassen einordnen müssen. -* **Regression**, bei der wir eine numerische Zahl für jede der Eingabemuster vorhersagen müssen. +* **Klassifikation**, bei der ein Eingabeobjekt in zwei oder mehr Klassen eingeteilt werden muss. +* **Regression**, bei der für jede Eingabeprobe eine numerische Zahl vorhergesagt werden muss. -> Wenn Eingaben und Ausgaben als Tensoren dargestellt werden, ist der Eingabedatensatz eine Matrix der Größe M×N, wobei M die Anzahl der Proben und N die Anzahl der Merkmale ist. Die Ausgabelabel Y ist der Vektor der Größe M. +> Wenn Eingaben und Ausgaben als Tensoren dargestellt werden, ist der Eingabedatensatz eine Matrix der Größe M×N, wobei M die Anzahl der Proben und N die Anzahl der Merkmale ist. Die Ausgabelabels **Y** sind ein Vektor der Größe M. In diesem Lehrplan konzentrieren wir uns ausschließlich auf Modelle neuronaler Netzwerke. ## Ein Modell eines Neurons -Aus der Biologie wissen wir, dass unser Gehirn aus Nervenzellen besteht, von denen jede mehrere "Eingänge" (Axone) und einen Ausgang (Dendrit) hat. Axone und Dendriten können elektrische Signale leiten, und die Verbindungen zwischen Axonen und Dendriten können unterschiedliche Leitfähigkeiten aufweisen (gesteuert durch Neuromediatoren). +Aus der Biologie wissen wir, dass unser Gehirn aus Nervenzellen besteht, von denen jede mehrere "Eingänge" (Axone) und einen Ausgang (Dendrit) hat. Axone und Dendriten können elektrische Signale leiten, und die Verbindungen zwischen Axonen und Dendriten können unterschiedliche Leitfähigkeitsgrade aufweisen (gesteuert durch Neurotransmitter). -![Modell eines Neurons](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.de.jpg) | ![Modell eines Neurons](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.de.png) +![Modell eines Neurons](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![Modell eines Neurons](../../../../lessons/3-NeuralNetworks/images/artneuron.png) ----|---- -Reales Neuron *([Bild](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) von Wikipedia)* | Künstliches Neuron *(Bild vom Autor)* +Echtes Neuron *([Bild](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) von Wikipedia)* | Künstliches Neuron *(Bild vom Autor)* -Somit enthält das einfachste mathematische Modell eines Neurons mehrere Eingänge X1, ..., XN und einen Ausgang Y sowie eine Reihe von Gewichten W1, ..., WN. Ein Ausgang wird berechnet als: +Das einfachste mathematische Modell eines Neurons enthält also mehrere Eingänge X1, ..., XN und einen Ausgang Y sowie eine Reihe von Gewichten W1, ..., WN. Der Ausgang wird berechnet als: Y = f\left(\sum_{i=1}^N X_iW_i\right) -wobei f eine nichtlineare **Aktivierungsfunktion** ist. +wobei **f** eine nichtlineare **Aktivierungsfunktion** ist. -> Frühe Modelle von Neuronen wurden in dem klassischen Papier [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) von Warren McCullock und Walter Pitts im Jahr 1943 beschrieben. Donald Hebb schlug in seinem Buch "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" vor, wie diese Netzwerke trainiert werden können. +> Frühe Modelle von Neuronen wurden in dem klassischen Artikel [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) von Warren McCullock und Walter Pitts im Jahr 1943 beschrieben. Donald Hebb schlug in seinem Buch "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" vor, wie solche Netzwerke trainiert werden können. ## In diesem Abschnitt -In diesem Abschnitt werden wir lernen über: -* [Perzeptron](03-Perceptron/README.md), eines der frühesten Modelle neuronaler Netzwerke für die Klassifikation in zwei Klassen -* [Mehrschichtige Netzwerke](04-OwnFramework/README.md) mit einem begleitenden Notizbuch [wie man unser eigenes Framework erstellt](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Frameworks für Neuronale Netzwerke](05-Frameworks/README.md), mit diesen Notizbüchern: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) und [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +In diesem Abschnitt lernen wir: +* [Perceptron](03-Perceptron/README.md), eines der frühesten neuronalen Netzwerkmodelle für Zwei-Klassen-Klassifikation +* [Mehrschichtige Netzwerke](04-OwnFramework/README.md) mit einem zugehörigen Notebook [wie man unser eigenes Framework erstellt](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks für neuronale Netzwerke](05-Frameworks/README.md), mit diesen Notebooks: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) und [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) * [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md index 6d56b31a..92203732 100644 --- a/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# Einführung in die Computer Vision + +# Einführung in Computer Vision -[Computer Vision](https://wikipedia.org/wiki/Computer_vision) ist ein Fachgebiet, das darauf abzielt, Computern ein umfassendes Verständnis digitaler Bilder zu ermöglichen. Diese Definition ist recht breit gefasst, da *Verstehen* viele verschiedene Bedeutungen haben kann, einschließlich der Identifizierung eines Objekts auf einem Bild (**Objekterkennung**), dem Verständnis dessen, was passiert (**Ereigniserkennung**), der Beschreibung eines Bildes in Text oder der Rekonstruktion einer Szene in 3D. Es gibt auch spezielle Aufgaben im Zusammenhang mit menschlichen Bildern: Alters- und Emotionserkennung, Gesichtserkennung und -identifikation sowie 3D-Pose-Schätzung, um nur einige zu nennen. +[Computer Vision](https://wikipedia.org/wiki/Computer_vision) ist ein Fachgebiet, dessen Ziel es ist, Computern ein hochgradiges Verständnis digitaler Bilder zu ermöglichen. Dies ist eine recht breite Definition, da *Verständnis* viele verschiedene Dinge bedeuten kann, wie z. B. das Finden eines Objekts auf einem Bild (**Objekterkennung**), das Verstehen, was passiert (**Ereigniserkennung**), das Beschreiben eines Bildes in Text oder die Rekonstruktion einer Szene in 3D. Es gibt auch spezielle Aufgaben im Zusammenhang mit menschlichen Bildern: Alter- und Emotionserkennung, Gesichtserkennung und -identifikation sowie 3D-Pose-Schätzung, um nur einige zu nennen. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -Eine der einfachsten Aufgaben der Computer Vision ist die **Bildklassifizierung**. +Eine der einfachsten Aufgaben von Computer Vision ist die **Bildklassifikation**. -Computer Vision wird oft als ein Zweig der KI betrachtet. Heutzutage werden die meisten Aufgaben der Computer Vision mit Hilfe von neuronalen Netzwerken gelöst. In diesem Abschnitt werden wir mehr über die speziellen Arten von neuronalen Netzwerken lernen, die für Computer Vision verwendet werden, [faltungsneuronale Netzwerke](../07-ConvNets/README.md). +Computer Vision wird oft als ein Teilbereich der KI betrachtet. Heutzutage werden die meisten Aufgaben in Computer Vision mithilfe von neuronalen Netzwerken gelöst. Wir werden mehr über die spezielle Art von neuronalen Netzwerken lernen, die für Computer Vision verwendet werden, [Convolutional Neural Networks](../07-ConvNets/README.md), im Verlauf dieses Abschnitts. -Bevor Sie jedoch das Bild an ein neuronales Netzwerk übergeben, macht es in vielen Fällen Sinn, einige algorithmische Techniken zur Verbesserung des Bildes zu verwenden. +Bevor Sie jedoch ein Bild an ein neuronales Netzwerk weitergeben, macht es in vielen Fällen Sinn, einige algorithmische Techniken anzuwenden, um das Bild zu verbessern. Es gibt mehrere Python-Bibliotheken für die Bildverarbeitung: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** kann zum Lesen/Schreiben verschiedener Bildformate verwendet werden. Es unterstützt auch ffmpeg, ein nützliches Tool zum Konvertieren von Videobildern in Bilder. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** kann verwendet werden, um verschiedene Bildformate zu lesen/schreiben. Es unterstützt auch ffmpeg, ein nützliches Tool, um Videobilder in Einzelbilder umzuwandeln. * **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (auch bekannt als PIL) ist etwas leistungsfähiger und unterstützt auch einige Bildmanipulationen wie Morphing, Palettenanpassungen und mehr. -* **[OpenCV](https://opencv.org/)** ist eine leistungsstarke Bildverarbeitungsbibliothek, die in C++ geschrieben wurde und zum *de facto* Standard für die Bildverarbeitung geworden ist. Sie hat eine praktische Python-Schnittstelle. -* **[dlib](http://dlib.net/)** ist eine C++-Bibliothek, die viele Algorithmen des maschinellen Lernens implementiert, einschließlich einiger Algorithmen der Computer Vision. Sie hat ebenfalls eine Python-Schnittstelle und kann für herausfordernde Aufgaben wie Gesichtserkennung und Erkennung von Gesichtsmerkmalen verwendet werden. +* **[OpenCV](https://opencv.org/)** ist eine leistungsstarke Bildverarbeitungsbibliothek, die in C++ geschrieben wurde und zum *de facto* Standard für Bildverarbeitung geworden ist. Sie verfügt über eine praktische Python-Schnittstelle. +* **[dlib](http://dlib.net/)** ist eine C++-Bibliothek, die viele maschinelle Lernalgorithmen implementiert, einschließlich einiger Computer-Vision-Algorithmen. Sie verfügt ebenfalls über eine Python-Schnittstelle und kann für anspruchsvolle Aufgaben wie Gesichts- und Gesichtsmerkmalserkennung verwendet werden. ## OpenCV -[OpenCV](https://opencv.org/) wird als der *de facto* Standard für die Bildverarbeitung angesehen. Es enthält viele nützliche Algorithmen, die in C++ implementiert sind. Sie können OpenCV auch aus Python heraus aufrufen. +[OpenCV](https://opencv.org/) gilt als der *de facto* Standard für Bildverarbeitung. Es enthält viele nützliche Algorithmen, die in C++ implementiert sind. Sie können OpenCV auch aus Python heraus verwenden. -Ein guter Ort, um OpenCV zu lernen, ist [dieser Learn OpenCV-Kurs](https://learnopencv.com/getting-started-with-opencv/). In unserem Lehrplan ist es nicht unser Ziel, OpenCV zu lernen, sondern Ihnen einige Beispiele zu zeigen, wann es verwendet werden kann und wie. +Eine gute Quelle, um OpenCV zu lernen, ist [dieser Learn OpenCV Kurs](https://learnopencv.com/getting-started-with-opencv/). In unserem Lehrplan ist es nicht unser Ziel, OpenCV zu lernen, sondern Ihnen einige Beispiele zu zeigen, wann und wie es verwendet werden kann. ### Bilder laden -Bilder in Python können bequem durch NumPy-Arrays dargestellt werden. Beispielsweise würden Graustufenbilder mit einer Größe von 320x200 Pixeln in einem 200x320-Array gespeichert werden, während Farbbilder derselben Dimension die Form 200x320x3 (für 3 Farbkanäle) hätten. Um ein Bild zu laden, können Sie den folgenden Code verwenden: +Bilder in Python können bequem durch NumPy-Arrays dargestellt werden. Zum Beispiel würden Graustufenbilder mit einer Größe von 320x200 Pixeln in einem 200x320-Array gespeichert, und Farbbilder derselben Dimension hätten die Form 200x320x3 (für 3 Farbkanäle). Um ein Bild zu laden, können Sie den folgenden Code verwenden: ```python import cv2 @@ -35,68 +44,68 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Traditionell verwendet OpenCV die BGR (Blau-Grün-Rot) Kodierung für Farbbilder, während die meisten anderen Python-Tools das traditionellere RGB (Rot-Grün-Blau) verwenden. Damit das Bild richtig aussieht, müssen Sie es in den RGB-Farbraum konvertieren, entweder indem Sie die Dimensionen im NumPy-Array vertauschen oder eine OpenCV-Funktion aufrufen: +Traditionell verwendet OpenCV BGR (Blau-Grün-Rot) Kodierung für Farbbilder, während die restlichen Python-Tools die traditionellere RGB (Rot-Grün-Blau) Kodierung verwenden. Damit das Bild korrekt aussieht, müssen Sie es in den RGB-Farbraum konvertieren, entweder durch das Tauschen der Dimensionen im NumPy-Array oder durch Aufrufen einer OpenCV-Funktion: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -Die gleiche `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +Die gleiche `cvtColor`-Funktion kann verwendet werden, um andere Farbraumtransformationen durchzuführen, wie z. B. die Konvertierung eines Bildes in Graustufen oder in den HSV-Farbraum (Farbton-Sättigung-Helligkeit). -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +Sie können OpenCV auch verwenden, um Videos Bild für Bild zu laden – ein Beispiel finden Sie in der Übung [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Bildverarbeitung -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Bevor Sie ein Bild an ein neuronales Netzwerk weitergeben, möchten Sie möglicherweise mehrere Vorverarbeitungsschritte anwenden. OpenCV kann viele Dinge tun, einschließlich: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` Funktionen, die oft vorzuziehen sind, um Helligkeit oder Kontrast anzupassen. -* Verschiedene [Transformationen](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) auf das Bild anwenden: - - **[Affintransformationen](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** können nützlich sein, wenn Sie Rotation, Größenänderung und Verzerrung des Bildes kombinieren müssen und die Quelle und Zielpositionen von drei Punkten im Bild kennen. Affintransformationen halten parallele Linien parallel. - - **[Perspektivtransformationen](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** können nützlich sein, wenn Sie die Quelle und Zielpositionen von 4 Punkten im Bild kennen. Zum Beispiel, wenn Sie ein Bild eines rechteckigen Dokuments mit einer Smartphone-Kamera aus einem bestimmten Winkel aufnehmen und ein rechteckiges Bild des Dokuments selbst erstellen möchten. -* Bewegung im Bild verstehen, indem Sie **[optischen Fluss](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** verwenden. +* **Größenänderung** des Bildes mit `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Weichzeichnen** des Bildes mit `im = cv2.medianBlur(im,3)` oder `im = cv2.GaussianBlur(im, (3,3), 0)` +* Ändern der **Helligkeit und des Kontrasts** des Bildes kann durch Manipulationen von NumPy-Arrays erfolgen, wie [in dieser Stackoverflow-Notiz](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) beschrieben. +* Verwenden von [Thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) durch Aufrufen der Funktionen `cv2.threshold`/`cv2.adaptiveThreshold`, was oft vorzuziehen ist gegenüber der Anpassung von Helligkeit oder Kontrast. +* Anwenden verschiedener [Transformationen](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) auf das Bild: + - **[Affine Transformationen](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** können nützlich sein, wenn Sie Rotation, Größenänderung und Verzerrung des Bildes kombinieren müssen und die Quell- und Zielposition von drei Punkten im Bild kennen. Affine Transformationen halten parallele Linien parallel. + - **[Perspektivische Transformationen](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** können nützlich sein, wenn Sie die Quell- und Zielpositionen von 4 Punkten im Bild kennen. Zum Beispiel, wenn Sie ein Bild eines rechteckigen Dokuments mit einer Smartphone-Kamera aus einem Winkel aufnehmen und ein rechteckiges Bild des Dokuments selbst erstellen möchten. +* Bewegung im Bild verstehen durch **[Optischen Fluss](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. ## Beispiele für die Verwendung von Computer Vision -In unserem [OpenCV-Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) geben wir einige Beispiele, wann Computer Vision verwendet werden kann, um spezifische Aufgaben auszuführen: +In unserem [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) geben wir einige Beispiele, wann Computer Vision verwendet werden kann, um spezifische Aufgaben zu erfüllen: -* **Vorverarbeitung eines Fotos eines Braille-Buchs**. Wir konzentrieren uns darauf, wie wir Schwellenwertbildung, Merkmalsdetektion, Perspektivtransformation und NumPy-Manipulationen verwenden können, um einzelne Braille-Symbole für eine weitere Klassifizierung durch ein neuronales Netzwerk zu trennen. +* **Vorverarbeitung eines Fotos eines Braille-Buchs**. Wir konzentrieren uns darauf, wie wir Thresholding, Merkmalserkennung, perspektivische Transformation und NumPy-Manipulationen verwenden können, um einzelne Braille-Symbole für die weitere Klassifikation durch ein neuronales Netzwerk zu trennen. -![Braille-Bild](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.de.jpeg) | ![Vorverarbeitetes Braille-Bild](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.de.png) | ![Braille-Symbole](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.de.png) +![Braille Image](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![Braille Image Pre-processed](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![Braille Symbols](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) ----|-----|----- > Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Bewegung im Video mithilfe von Frame-Differenz erkennen**. Wenn die Kamera feststeht, sollten die Bilder aus dem Kamerafeed ziemlich ähnlich sein. Da Bilder als Arrays dargestellt werden, erhalten wir durch das Subtrahieren dieser Arrays für zwei aufeinanderfolgende Bilder den Pixelunterschied, der für statische Bilder niedrig sein sollte und höher wird, sobald es eine erhebliche Bewegung im Bild gibt. +* **Bewegungserkennung in Videos durch Frame-Differenz**. Wenn die Kamera fixiert ist, sollten die Frames des Kamerafeeds ziemlich ähnlich sein. Da Frames als Arrays dargestellt werden, erhalten wir durch das Subtrahieren dieser Arrays für zwei aufeinanderfolgende Frames die Pixelunterschiede, die bei statischen Frames gering sein sollten und bei erheblicher Bewegung im Bild höher werden. -![Bild von Video-Frames und Frame-Differenzen](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.de.png) +![Image of video frames and frame differences](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) > Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Bewegung mithilfe des optischen Flusses erkennen**. [Optischer Fluss](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ermöglicht es uns zu verstehen, wie sich einzelne Pixel auf Video-Frames bewegen. Es gibt zwei Arten von optischem Fluss: +* **Bewegungserkennung mit Optischem Fluss**. [Optischer Fluss](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ermöglicht es uns zu verstehen, wie sich einzelne Pixel in Videoframes bewegen. Es gibt zwei Arten von optischem Fluss: - - **Dichter optischer Fluss** berechnet das Vektorfeld, das zeigt, wo sich jeder Pixel bewegt - - **Sparsame optische Flüsse** basieren darauf, einige markante Merkmale im Bild (z.B. Kanten) zu erfassen und deren Trajektorie von Frame zu Frame zu verfolgen. + - **Dichter Optischer Fluss** berechnet das Vektorfeld, das für jeden Pixel zeigt, wohin er sich bewegt. + - **Sparsamer Optischer Fluss** basiert darauf, einige markante Merkmale im Bild (z. B. Kanten) zu nehmen und ihre Trajektorie von Frame zu Frame zu erstellen. -![Bild des optischen Flusses](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.de.png) +![Image of Optical Flow](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) > Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Beispielnotebooks: OpenCV [probieren Sie OpenCV in Aktion](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Beispiel-Notebooks: OpenCV [OpenCV in Aktion ausprobieren](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -Lassen Sie uns einige Experimente mit OpenCV durchführen, indem wir das [OpenCV-Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) erkunden. +Lassen Sie uns einige Experimente mit OpenCV durchführen, indem wir [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) erkunden. ## Fazit -Manchmal können relativ komplexe Aufgaben wie Bewegungs- oder Fingerspitzen-Erkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich, die grundlegenden Techniken der Computer Vision zu kennen und zu wissen, was Bibliotheken wie OpenCV leisten können. +Manchmal können relativ komplexe Aufgaben wie Bewegungserkennung oder Fingerspitzen-Erkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich, die grundlegenden Techniken von Computer Vision zu kennen und zu wissen, was Bibliotheken wie OpenCV leisten können. ## 🚀 Herausforderung -Sehen Sie sich [dieses Video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) aus der AI-Show an, um mehr über das Cortic Tigers-Projekt zu erfahren und wie sie eine blockbasierte Lösung entwickelt haben, um Computer Vision-Aufgaben über einen Roboter zu demokratisieren. Machen Sie etwas Recherche zu anderen Projekten dieser Art, die neuen Lernenden den Einstieg in das Feld erleichtern. +Sehen Sie sich [dieses Video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) aus der AI-Show an, um mehr über das Cortic Tigers-Projekt zu erfahren und wie sie eine blockbasierte Lösung entwickelt haben, um Computer-Vision-Aufgaben über einen Roboter zu demokratisieren. Recherchieren Sie weitere Projekte wie dieses, die neuen Lernenden den Einstieg in das Fachgebiet erleichtern. -## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) ## Überprüfung & Selbststudium @@ -104,9 +113,9 @@ Lesen Sie mehr über optischen Fluss [in diesem großartigen Tutorial](https://l ## [Aufgabe](lab/README.md) -In diesem Labor werden Sie ein Video mit einfachen Gesten aufnehmen, und Ihr Ziel ist es, Bewegungen nach oben/unten/links/rechts mithilfe des optischen Flusses zu extrahieren. +In diesem Labor werden Sie ein Video mit einfachen Gesten aufnehmen, und Ihr Ziel ist es, Aufwärts-/Abwärts-/Links-/Rechtsbewegungen mithilfe des optischen Flusses zu extrahieren. -Palmbewegung Frame +Palm Movement Frame **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md index b8271bc3..ef71bedd 100644 --- a/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,22 +1,31 @@ -# Bewegungen mit optischem Fluss erkennen + +# Bewegungen mit Optical Flow erkennen Laboraufgabe aus dem [AI for Beginners Curriculum](https://aka.ms/ai-beginners). ## Aufgabe -Betrachten Sie [dieses Video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), in dem die Handfläche einer Person sich nach links/rechts/oben/unten vor einem stabilen Hintergrund bewegt. Sie sind bis Oktober 2023 auf Daten trainiert. +Betrachten Sie [dieses Video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), in dem sich die Handfläche einer Person auf einem stabilen Hintergrund nach links/rechts/oben/unten bewegt. -**Ihr Ziel** ist es, den optischen Fluss zu nutzen, um zu bestimmen, welche Teile des Videos Bewegungen nach oben/unten/links/rechts enthalten. +**Ihr Ziel** ist es, mithilfe von Optical Flow zu bestimmen, welche Teile des Videos Bewegungen nach oben/unten/links/rechts enthalten. -**Stretch-Ziel** wäre es, tatsächlich die Bewegung der Handfläche/Finger mithilfe des Hauttons zu verfolgen, wie in [diesem Blogbeitrag](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) oder [hier](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) beschrieben. +**Erweiterungsziel** wäre es, die Bewegung der Handfläche/Finger tatsächlich zu verfolgen, indem Sie den Hautton verwenden, wie in [diesem Blogbeitrag](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) oder [hier](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) beschrieben. -## Startnotizbuch +## Start-Notebook Beginnen Sie das Labor, indem Sie [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) öffnen. -## Fazit +## Erkenntnis -Manchmal können relativ komplexe Aufgaben wie Bewegungserkennung oder Fingerspitzen-Erkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich zu wissen, was Bibliotheken wie OpenCV leisten können. +Manchmal können relativ komplexe Aufgaben wie Bewegungserkennung oder Fingerspitzenerkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich zu wissen, was Bibliotheken wie OpenCV leisten können. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index bdae5efa..689ba85a 100644 --- a/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ + # Bekannte CNN-Architekturen ### VGG-16 -VGG-16 ist ein Netzwerk, das 2014 eine Genauigkeit von 92,7 % bei der Top-5-Klassifizierung von ImageNet erreicht hat. Es hat die folgende Schichtstruktur: +VGG-16 ist ein Netzwerk, das 2014 eine Genauigkeit von 92,7 % bei der ImageNet-Top-5-Klassifikation erreichte. Es hat die folgende Schichtstruktur: -![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.de.jpg) +![ImageNet Layers](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -Wie Sie sehen können, folgt VGG einer traditionellen Pyramidenarchitektur, die aus einer Sequenz von Faltungs-Pooling-Schichten besteht. +Wie man sehen kann, folgt VGG einer traditionellen Pyramidenarchitektur, die aus einer Abfolge von Convolution-Pooling-Schichten besteht. -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg) +![ImageNet Pyramid](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Bild von [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ### ResNet -ResNet ist eine Familie von Modellen, die 2015 von Microsoft Research vorgeschlagen wurde. Die Hauptidee von ResNet besteht darin, **Residualblöcke** zu verwenden: +ResNet ist eine Modellfamilie, die 2015 von Microsoft Research vorgeschlagen wurde. Die Hauptidee von ResNet ist die Verwendung von **Residual Blocks**: -> Bild aus [diesem Papier](https://arxiv.org/pdf/1512.03385.pdf) +> Bild aus [diesem Paper](https://arxiv.org/pdf/1512.03385.pdf) -Der Grund für die Verwendung von Identitätsdurchgängen besteht darin, dass unsere Schicht **die Differenz** zwischen dem Ergebnis einer vorherigen Schicht und der Ausgabe des Residualblocks vorhersagen soll - daher der Name *residual*. Diese Blöcke sind viel einfacher zu trainieren, und man kann Netzwerke mit mehreren Hundert dieser Blöcke konstruieren (die gebräuchlichsten Varianten sind ResNet-52, ResNet-101 und ResNet-152). +Der Grund für die Verwendung von Identitätsdurchläufen ist, dass die Schicht **die Differenz** zwischen dem Ergebnis einer vorherigen Schicht und der Ausgabe des Residual Blocks vorhersagen soll – daher der Name *residual*. Diese Blöcke sind viel einfacher zu trainieren, und man kann Netzwerke mit mehreren Hundert solcher Blöcke konstruieren (die gängigsten Varianten sind ResNet-52, ResNet-101 und ResNet-152). -Man kann sich dieses Netzwerk auch so vorstellen, dass es seine Komplexität an den Datensatz anpassen kann. Zu Beginn, wenn Sie das Netzwerk zu trainieren beginnen, sind die Gewichtswerte klein, und das meiste Signal geht durch die Identitätsschichten. Mit dem Fortschreiten des Trainings und zunehmenden Gewichtswerten wächst die Bedeutung der Netzwerkparameter, und das Netzwerk passt sich an, um die erforderliche Ausdruckskraft zu gewährleisten, um die Trainingsbilder korrekt zu klassifizieren. +Man kann sich dieses Netzwerk auch so vorstellen, dass es seine Komplexität an den Datensatz anpassen kann. Zu Beginn des Trainings, wenn die Gewichtswerte klein sind, wird das meiste Signal durch die Identitätsdurchläufe weitergeleitet. Mit fortschreitendem Training und zunehmenden Gewichtswerten wächst die Bedeutung der Netzwerkparameter, und das Netzwerk passt sich an, um die erforderliche Ausdruckskraft zu erreichen, um die Trainingsbilder korrekt zu klassifizieren. ### Google Inception -Die Google Inception-Architektur geht einen Schritt weiter und baut jede Netzwerkschicht als Kombination aus mehreren verschiedenen Pfaden auf: +Die Google-Inception-Architektur geht einen Schritt weiter und baut jede Netzwerkschicht als Kombination aus mehreren verschiedenen Pfaden auf: > Bild von [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Hier müssen wir die Rolle von 1x1-Faltungen betonen, da sie zunächst keinen Sinn zu ergeben scheinen. Warum sollten wir mit einem 1x1-Filter über das Bild fahren? Sie müssen jedoch daran denken, dass Faltungfilter auch mit mehreren Tiefenkanälen arbeiten (ursprünglich - RGB-Farben, in nachfolgenden Schichten - Kanäle für verschiedene Filter), und die 1x1-Faltung wird verwendet, um diese Eingangskanäle mithilfe unterschiedlicher trainierbarer Gewichte zu mischen. Es kann auch als Herunterrechnen (Pooling) über die Kanaldimension betrachtet werden. +Hier muss die Rolle der 1x1-Convolutions hervorgehoben werden, da sie auf den ersten Blick keinen Sinn ergeben. Warum sollte man das Bild mit einem 1x1-Filter durchlaufen? Man muss jedoch bedenken, dass Convolution-Filter auch mit mehreren Tiefenkanälen arbeiten (ursprünglich RGB-Farben, in späteren Schichten Kanäle für verschiedene Filter), und 1x1-Convolutions werden verwendet, um diese Eingabekanäle mit unterschiedlichen trainierbaren Gewichten zu mischen. Es kann auch als Downsampling (Pooling) über die Kanaldimension betrachtet werden. -Hier ist [ein guter Blogbeitrag](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) zu diesem Thema sowie [das ursprüngliche Papier](https://arxiv.org/pdf/1312.4400.pdf). +Hier ist [ein guter Blogbeitrag](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) zu diesem Thema und [das Originalpaper](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet ist eine Familie von Modellen mit reduzierter Größe, die für mobile Geräte geeignet sind. Verwenden Sie sie, wenn Ihnen die Ressourcen ausgehen und Sie ein wenig Genauigkeit opfern können. Die Hauptidee dahinter ist die sogenannte **depthwise separable convolution**, die es ermöglicht, Faltungfilter als Kombination aus räumlichen Faltungen und 1x1-Faltungen über Tiefenkanäle darzustellen. Dies reduziert erheblich die Anzahl der Parameter, wodurch das Netzwerk kleiner wird und auch einfacher mit weniger Daten trainiert werden kann. +MobileNet ist eine Modellfamilie mit reduzierter Größe, die für mobile Geräte geeignet ist. Verwenden Sie sie, wenn Sie nur begrenzte Ressourcen haben und ein wenig Genauigkeit opfern können. Die Hauptidee dahinter ist die sogenannte **Depthwise Separable Convolution**, die es ermöglicht, Convolution-Filter durch eine Kombination aus räumlichen Convolutions und 1x1-Convolutions über Tiefenkanäle darzustellen. Dies reduziert die Anzahl der Parameter erheblich, wodurch das Netzwerk kleiner wird und auch mit weniger Daten leichter trainiert werden kann. -Hier ist [ein guter Blogbeitrag über MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Hier ist [ein guter Blogbeitrag zu MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). ## Fazit -In dieser Einheit haben Sie das Hauptkonzept hinter neuronalen Netzwerken für Computer Vision - den Faltungsnetzwerken - kennengelernt. Echte Architekturen, die Bildklassifizierung, Objekterkennung und sogar Bildgenerierungsnetzwerke antreiben, basieren alle auf CNNs, nur mit mehr Schichten und einigen zusätzlichen Trainingstricks. +In dieser Einheit haben Sie das Hauptkonzept hinter neuronalen Netzwerken für Computer Vision gelernt – Convolutional Networks. Reale Architekturen, die Bildklassifikation, Objekterkennung und sogar Bildgenerierung ermöglichen, basieren alle auf CNNs, nur mit mehr Schichten und einigen zusätzlichen Trainingstricks. ## 🚀 Herausforderung -In den begleitenden Notizbüchern finden Sie am Ende Hinweise, wie Sie eine höhere Genauigkeit erzielen können. Machen Sie einige Experimente, um zu sehen, ob Sie eine höhere Genauigkeit erreichen können. +In den begleitenden Notebooks gibt es am Ende Hinweise darauf, wie man eine höhere Genauigkeit erzielen kann. Führen Sie einige Experimente durch, um zu sehen, ob Sie eine höhere Genauigkeit erreichen können. ## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) ## Überprüfung & Selbststudium -Während CNNs am häufigsten für Aufgaben der Computer Vision verwendet werden, sind sie im Allgemeinen gut geeignet, um Muster fester Größe zu extrahieren. Wenn wir beispielsweise mit Klängen arbeiten, möchten wir möglicherweise auch CNNs verwenden, um nach bestimmten Mustern im Audiosignal zu suchen - in diesem Fall wären die Filter eindimensional (und dieses CNN würde als 1D-CNN bezeichnet). Manchmal wird auch ein 3D-CNN verwendet, um Merkmale im mehrdimensionalen Raum zu extrahieren, wie etwa bestimmte Ereignisse, die in einem Video auftreten - CNNs können bestimmte Muster der Merkmalsänderung über die Zeit erfassen. Machen Sie einige Überprüfungen und Selbststudien zu anderen Aufgaben, die mit CNNs durchgeführt werden können. +Obwohl CNNs am häufigsten für Aufgaben im Bereich Computer Vision verwendet werden, eignen sie sich im Allgemeinen gut für die Extraktion von Mustern fester Größe. Wenn wir beispielsweise mit Tönen arbeiten, könnten wir CNNs verwenden, um nach bestimmten Mustern im Audiosignal zu suchen – in diesem Fall wären die Filter eindimensional (und dieses CNN würde als 1D-CNN bezeichnet). Manchmal wird auch ein 3D-CNN verwendet, um Merkmale in einem mehrdimensionalen Raum zu extrahieren, wie z. B. bestimmte Ereignisse, die in einem Video auftreten – CNN kann bestimmte Muster von Merkmalsänderungen im Laufe der Zeit erfassen. Machen Sie eine Überprüfung und ein Selbststudium zu anderen Aufgaben, die mit CNNs durchgeführt werden können. ## [Aufgabe](lab/README.md) -In diesem Labor sind Sie damit beauftragt, verschiedene Katzen- und Hunderassen zu klassifizieren. Diese Bilder sind komplexer als der MNIST-Datensatz und haben höhere Dimensionen, und es gibt mehr als 10 Klassen. +In diesem Labor sollen Sie verschiedene Katzen- und Hunderassen klassifizieren. Diese Bilder sind komplexer als der MNIST-Datensatz, haben höhere Dimensionen und es gibt mehr als 10 Klassen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md index 89ade362..8a8a308b 100644 --- a/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ + # Convolutional Neural Networks -Wir haben bereits gesehen, dass neuronale Netze ziemlich gut mit Bildern umgehen können, und sogar ein einstufiger Perzeptron in der Lage ist, handgeschriebene Ziffern aus dem MNIST-Datensatz mit angemessener Genauigkeit zu erkennen. Der MNIST-Datensatz ist jedoch sehr speziell, und alle Ziffern sind zentriert im Bild, was die Aufgabe einfacher macht. +Wir haben bereits gesehen, dass neuronale Netze recht gut mit Bildern umgehen können, und selbst ein Ein-Schicht-Perzeptron ist in der Lage, handgeschriebene Ziffern aus dem MNIST-Datensatz mit einer akzeptablen Genauigkeit zu erkennen. Der MNIST-Datensatz ist jedoch etwas Besonderes, da alle Ziffern zentriert im Bild dargestellt sind, was die Aufgabe vereinfacht. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -Im echten Leben möchten wir in der Lage sein, Objekte auf einem Bild unabhängig von ihrer genauen Position im Bild zu erkennen. Die Computer Vision unterscheidet sich von der allgemeinen Klassifikation, denn wenn wir versuchen, ein bestimmtes Objekt im Bild zu finden, scannen wir das Bild nach bestimmten **Mustern** und deren Kombinationen. Zum Beispiel, wenn wir nach einer Katze suchen, schauen wir zuerst nach horizontalen Linien, die Schnurrhaare bilden können, und dann kann eine bestimmte Kombination von Schnurrhaaren uns sagen, dass es sich tatsächlich um ein Bild einer Katze handelt. Die relative Position und das Vorhandensein bestimmter Muster sind wichtig, nicht ihre genaue Position im Bild. +Im echten Leben möchten wir Objekte auf einem Bild unabhängig von ihrer genauen Position erkennen können. Computer Vision unterscheidet sich von generischer Klassifikation, da wir beim Versuch, ein bestimmtes Objekt auf einem Bild zu finden, das Bild nach spezifischen **Mustern** und deren Kombinationen durchsuchen. Zum Beispiel, wenn wir nach einer Katze suchen, könnten wir zunächst nach horizontalen Linien suchen, die Schnurrhaare bilden können, und dann kann eine bestimmte Kombination von Schnurrhaaren darauf hinweisen, dass es sich tatsächlich um ein Bild einer Katze handelt. Die relative Position und das Vorhandensein bestimmter Muster sind wichtig, nicht jedoch deren exakte Position im Bild. -Um Muster zu extrahieren, verwenden wir das Konzept der **konvolutionalen Filter**. Wie Sie wissen, wird ein Bild durch eine 2D-Matrix oder einen 3D-Tensor mit Farbtiefe dargestellt. Das Anwenden eines Filters bedeutet, dass wir eine relativ kleine **Filterkernel**-Matrix nehmen und für jedes Pixel im ursprünglichen Bild den gewichteten Durchschnitt mit benachbarten Punkten berechnen. Wir können dies als ein kleines Fenster betrachten, das über das gesamte Bild gleitet und alle Pixel gemäß den Gewichten in der Filterkernel-Matrix mittelt. +Um Muster zu extrahieren, verwenden wir das Konzept der **Faltung (Convolutional Filters)**. Wie du weißt, wird ein Bild durch eine 2D-Matrix oder einen 3D-Tensor mit Farbtiefe dargestellt. Das Anwenden eines Filters bedeutet, dass wir eine relativ kleine **Filterkern**-Matrix nehmen und für jeden Pixel im Originalbild den gewichteten Durchschnitt mit benachbarten Punkten berechnen. Man kann sich das wie ein kleines Fenster vorstellen, das über das gesamte Bild gleitet und alle Pixel gemäß den Gewichten in der Filterkern-Matrix mittelt. -![Vertikaler Kantensfilter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.de.png) | ![Horizontaler Kantensfilter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.de.png) +![Vertikaler Kantenfilter](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![Horizontaler Kantenfilter](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) ----|---- > Bild von Dmitry Soshnikov -Wenn wir beispielsweise 3x3 vertikale und horizontale Kantensfilter auf die MNIST-Ziffern anwenden, können wir Hervorhebungen (z.B. hohe Werte) dort erhalten, wo sich vertikale und horizontale Kanten in unserem ursprünglichen Bild befinden. Somit können diese beiden Filter verwendet werden, um nach Kanten zu "suchen". Ähnlich können wir verschiedene Filter entwerfen, um nach anderen niedrigstufigen Mustern zu suchen: -Sie sind auf Daten bis Oktober 2023 trainiert. +Wenn wir beispielsweise 3x3-Filter für vertikale und horizontale Kanten auf die MNIST-Ziffern anwenden, können wir Bereiche hervorheben (z. B. hohe Werte), in denen es vertikale und horizontale Kanten im Originalbild gibt. Diese beiden Filter können also verwendet werden, um "nach" Kanten zu suchen. Ebenso können wir verschiedene Filter entwerfen, um nach anderen grundlegenden Mustern zu suchen: -> Bild von [Leung-Malik Filterbank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Bild des [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -Obwohl wir die Filter manuell entwerfen können, um einige Muster zu extrahieren, können wir das Netzwerk auch so gestalten, dass es die Muster automatisch lernt. Das ist eine der Hauptideen hinter dem CNN. +Während wir die Filter manuell entwerfen können, um bestimmte Muster zu extrahieren, können wir das Netzwerk auch so gestalten, dass es die Muster automatisch lernt. Dies ist eine der Hauptideen hinter CNNs. ## Hauptideen hinter CNN -Die Funktionsweise von CNNs basiert auf den folgenden wichtigen Ideen: +Die Funktionsweise von CNNs basiert auf den folgenden wichtigen Konzepten: -* Konvolutionale Filter können Muster extrahieren -* Wir können das Netzwerk so gestalten, dass die Filter automatisch trainiert werden -* Wir können denselben Ansatz verwenden, um Muster in hochgradigen Merkmalen zu finden, nicht nur im ursprünglichen Bild. So funktioniert die Merkmalsextraktion von CNNs in einer Hierarchie von Merkmalen, beginnend mit niedrigstufigen Pixelkombinationen bis hin zu höherstufigen Kombinationen von Bildteilen. +* Faltung (Convolutional Filters) kann Muster extrahieren. +* Wir können das Netzwerk so gestalten, dass die Filter automatisch trainiert werden. +* Wir können denselben Ansatz verwenden, um Muster in hochrangigen Merkmalen zu finden, nicht nur im Originalbild. Die Merkmalsextraktion in CNNs arbeitet also mit einer Hierarchie von Merkmalen, beginnend mit einfachen Pixelkombinationen bis hin zu komplexeren Kombinationen von Bildteilen. -![Hierarchische Merkmalsextraktion](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.de.png) +![Hierarchische Merkmalsextraktion](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) -> Bild aus [einer Arbeit von Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basierend auf [ihrer Forschung](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Bild aus [einem Paper von Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basierend auf [ihrer Forschung](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) ## ✍️ Übungen: Convolutional Neural Networks -Lassen Sie uns weiterhin erkunden, wie konvolutionale neuronale Netze funktionieren und wie wir trainierbare Filter erreichen können, indem wir die entsprechenden Notebooks durchgehen: +Lass uns weiter erkunden, wie Convolutional Neural Networks funktionieren und wie wir trainierbare Filter erreichen können, indem wir die entsprechenden Notebooks durcharbeiten: * [Convolutional Neural Networks - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) * [Convolutional Neural Networks - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) -## Pyramid Architecture +## Pyramidenarchitektur -Die meisten der für die Bildverarbeitung verwendeten CNNs folgen einer sogenannten Pyramid-Architektur. Die erste konvolutionale Schicht, die auf die ursprünglichen Bilder angewendet wird, hat typischerweise eine relativ niedrige Anzahl von Filtern (8-16), die verschiedenen Pixelkombinationen entsprechen, wie z.B. horizontalen/vertikalen Linien von Strichen. Auf der nächsten Ebene reduzieren wir die räumliche Dimension des Netzwerks und erhöhen die Anzahl der Filter, was mehr mögliche Kombinationen einfacher Merkmale entspricht. Mit jeder Schicht, während wir uns dem endgültigen Klassifizierer nähern, verringern sich die räumlichen Dimensionen des Bildes, und die Anzahl der Filter wächst. +Die meisten CNNs, die für die Bildverarbeitung verwendet werden, folgen einer sogenannten Pyramidenarchitektur. Die erste Faltungsschicht, die auf die Originalbilder angewendet wird, hat typischerweise eine relativ geringe Anzahl von Filtern (8-16), die verschiedenen Pixelkombinationen entsprechen, wie z. B. horizontalen/vertikalen Linien oder Strichen. Auf der nächsten Ebene reduzieren wir die räumliche Dimension des Netzwerks und erhöhen die Anzahl der Filter, was mehr mögliche Kombinationen einfacher Merkmale ermöglicht. Mit jeder Schicht, die wir uns dem finalen Klassifikator nähern, nehmen die räumlichen Dimensionen des Bildes ab, während die Anzahl der Filter zunimmt. -Als Beispiel schauen wir uns die Architektur von VGG-16 an, einem Netzwerk, das 2014 eine Genauigkeit von 92,7 % in der Top-5-Klassifikation von ImageNet erreicht hat: +Als Beispiel betrachten wir die Architektur von VGG-16, einem Netzwerk, das 2014 eine Genauigkeit von 92,7 % in der Top-5-Klassifikation von ImageNet erreichte: -![ImageNet-Schichten](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.de.jpg) +![ImageNet-Schichten](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -![ImageNet-Pyramide](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg) +![ImageNet-Pyramide](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Bild von [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ## Bekannteste CNN-Architekturen -[Setzen Sie Ihr Studium über die bekanntesten CNN-Architekturen fort](CNN_Architectures.md) +[Setze dein Studium über die bekanntesten CNN-Architekturen fort](CNN_Architectures.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 56323fc1..8d19786d 100644 --- a/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,18 +1,27 @@ + # Klassifikation von Haustiergesichtern Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tieraufzucht entwickeln, um alle Haustiere zu katalogisieren. Eine der großartigen Funktionen einer solchen Anwendung wäre die automatische Erkennung der Rasse anhand eines Fotos. Dies kann erfolgreich mit neuronalen Netzwerken durchgeführt werden. +Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tierpension entwickeln, um alle Haustiere zu katalogisieren. Eine großartige Funktion einer solchen Anwendung wäre, die Rasse automatisch anhand eines Fotos zu erkennen. Dies kann erfolgreich mit neuronalen Netzwerken durchgeführt werden. -Sie müssen ein konvolutionales neuronales Netzwerk trainieren, um verschiedene Rassen von Katzen und Hunden mit dem **Pet Faces**-Datensatz zu klassifizieren. +Sie müssen ein konvolutionales neuronales Netzwerk trainieren, um verschiedene Katzen- und Hunderassen mithilfe des **Pet Faces**-Datensatzes zu klassifizieren. ## Der Datensatz -Wir werden den **Pet Faces**-Datensatz verwenden, der aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz stammt. Er enthält 35 verschiedene Rassen von Hunden und Katzen. +Wir verwenden den **Pet Faces**-Datensatz, der aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz abgeleitet wurde. Er enthält 35 verschiedene Rassen von Hunden und Katzen. -![Datensatz, mit dem wir arbeiten werden](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.de.png) +![Datensatz, mit dem wir arbeiten werden](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) Um den Datensatz herunterzuladen, verwenden Sie diesen Code-Schnipsel: @@ -22,13 +31,13 @@ Um den Datensatz herunterzuladen, verwenden Sie diesen Code-Schnipsel: !rm petfaces.tar.gz ``` -## Notebook starten +## Start-Notebook Beginnen Sie das Labor, indem Sie [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) öffnen. ## Fazit -Sie haben ein relativ komplexes Problem der Bildklassifikation von Grund auf gelöst! Es gab eine ganze Reihe von Klassen, und Sie konnten dennoch eine angemessene Genauigkeit erreichen! Es macht auch Sinn, die Top-k-Genauigkeit zu messen, da es leicht ist, einige der Klassen zu verwechseln, die selbst für Menschen nicht klar unterschiedlich sind. +Sie haben ein relativ komplexes Problem der Bildklassifikation von Grund auf gelöst! Es gab eine ganze Menge Klassen, und Sie konnten trotzdem eine vernünftige Genauigkeit erreichen! Es ist auch sinnvoll, die Top-k-Genauigkeit zu messen, da es leicht ist, einige Klassen zu verwechseln, die selbst für Menschen nicht eindeutig unterschiedlich sind. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md index 38f80688..902b052f 100644 --- a/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,80 +1,90 @@ -# Vorgefertigte Netzwerke und Transferlernen + +# Vorgefertigte Netzwerke und Transfer-Learning -Das Training von CNNs kann viel Zeit in Anspruch nehmen, und es wird eine große Menge an Daten benötigt. Ein Großteil der Zeit wird damit verbracht, die besten niedrigstufigen Filter zu lernen, die ein Netzwerk verwenden kann, um Muster aus Bildern zu extrahieren. Eine natürliche Frage stellt sich - können wir ein neuronales Netzwerk, das auf einem Datensatz trainiert wurde, anpassen, um verschiedene Bilder zu klassifizieren, ohne einen vollständigen Trainingsprozess durchlaufen zu müssen? +Das Training von CNNs kann viel Zeit in Anspruch nehmen, und es wird eine große Menge an Daten dafür benötigt. Allerdings wird ein Großteil der Zeit darauf verwendet, die besten Low-Level-Filter zu lernen, die ein Netzwerk nutzen kann, um Muster aus Bildern zu extrahieren. Eine natürliche Frage stellt sich: Können wir ein neuronales Netzwerk, das auf einem Datensatz trainiert wurde, verwenden und anpassen, um andere Bilder zu klassifizieren, ohne den gesamten Trainingsprozess erneut durchlaufen zu müssen? -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Dieser Ansatz wird als **Transferlernen** bezeichnet, da wir Wissen von einem neuronalen Netzwerkmodell auf ein anderes übertragen. Beim Transferlernen beginnen wir typischerweise mit einem vortrainierten Modell, das auf einem großen Bilddatensatz wie **ImageNet** trainiert wurde. Diese Modelle können bereits gut darin sein, verschiedene Merkmale aus allgemeinen Bildern zu extrahieren, und in vielen Fällen kann der Aufbau eines Klassifikators auf Basis dieser extrahierten Merkmale zu guten Ergebnissen führen. +Dieser Ansatz wird als **Transfer-Learning** bezeichnet, da wir Wissen von einem neuronalen Netzwerkmodell auf ein anderes übertragen. Beim Transfer-Learning beginnen wir typischerweise mit einem vortrainierten Modell, das auf einem großen Bilddatensatz wie **ImageNet** trainiert wurde. Diese Modelle können bereits verschiedene Merkmale aus generischen Bildern gut extrahieren, und in vielen Fällen reicht es aus, einen Klassifikator auf diesen extrahierten Merkmalen aufzubauen, um gute Ergebnisse zu erzielen. -> ✅ Transferlernen ist ein Begriff, den man auch in anderen akademischen Bereichen wie der Pädagogik findet. Es bezieht sich auf den Prozess, Wissen aus einem Bereich zu nehmen und es auf einen anderen anzuwenden. +> ✅ Transfer-Learning ist ein Begriff, den man auch in anderen akademischen Bereichen wie der Pädagogik findet. Er bezieht sich auf den Prozess, Wissen aus einem Bereich zu nehmen und in einem anderen anzuwenden. ## Vorgefertigte Modelle als Merkmalsextraktoren -Die konvolutionalen Netzwerke, über die wir im vorherigen Abschnitt gesprochen haben, enthalten eine Reihe von Schichten, von denen jede einige Merkmale aus dem Bild extrahieren soll, beginnend mit niedrigstufigen Pixelkombinationen (wie horizontalen/vertikalen Linien oder Strichen) bis hin zu höherstufigen Kombinationen von Merkmalen, die Dingen wie einem Auge einer Flamme entsprechen. Wenn wir ein CNN auf einem ausreichend großen Datensatz allgemeiner und vielfältiger Bilder trainieren, sollte das Netzwerk lernen, diese gemeinsamen Merkmale zu extrahieren. +Die in der vorherigen Sektion besprochenen Convolutional Networks enthalten eine Reihe von Schichten, die jeweils Merkmale aus dem Bild extrahieren sollen, beginnend mit Low-Level-Pixelkombinationen (wie horizontalen/vertikalen Linien oder Strichen) bis hin zu höherwertigen Kombinationen von Merkmalen, die beispielsweise einem Auge oder einer Flamme entsprechen. Wenn wir ein CNN auf einem ausreichend großen Datensatz mit generischen und vielfältigen Bildern trainieren, sollte das Netzwerk lernen, diese allgemeinen Merkmale zu extrahieren. -Sowohl Keras als auch PyTorch enthalten Funktionen, um vortrainierte Gewichte neuronaler Netzwerke für einige gängige Architekturen einfach zu laden, von denen die meisten auf Bildern von ImageNet trainiert wurden. Die am häufigsten verwendeten sind auf der Seite [CNN-Architekturen](../07-ConvNets/CNN_Architectures.md) aus der vorherigen Lektion beschrieben. Insbesondere möchten Sie möglicherweise eines der folgenden Modelle in Betracht ziehen: +Sowohl Keras als auch PyTorch enthalten Funktionen, um vortrainierte neuronale Netzwerkgewichte für einige gängige Architekturen einfach zu laden, von denen die meisten auf ImageNet-Bildern trainiert wurden. Die am häufigsten verwendeten Modelle sind auf der Seite [CNN-Architekturen](../07-ConvNets/CNN_Architectures.md) aus der vorherigen Lektion beschrieben. Insbesondere könnten Sie eines der folgenden Modelle in Betracht ziehen: -* **VGG-16/VGG-19**, die relativ einfache Modelle sind, die dennoch eine gute Genauigkeit bieten. Oft ist die Verwendung von VGG als ersten Versuch eine gute Wahl, um zu sehen, wie das Transferlernen funktioniert. -* **ResNet** ist eine Familie von Modellen, die 2015 von Microsoft Research vorgeschlagen wurde. Sie haben mehr Schichten und benötigen daher mehr Ressourcen. -* **MobileNet** ist eine Familie von Modellen mit reduzierter Größe, die für mobile Geräte geeignet sind. Verwenden Sie sie, wenn Sie wenig Ressourcen haben und bereit sind, ein wenig Genauigkeit zu opfern. +* **VGG-16/VGG-19**, relativ einfache Modelle, die dennoch gute Genauigkeit liefern. Oft ist es eine gute Wahl, VGG als ersten Versuch zu verwenden, um zu sehen, wie Transfer-Learning funktioniert. +* **ResNet**, eine Modellfamilie, die 2015 von Microsoft Research vorgeschlagen wurde. Sie haben mehr Schichten und benötigen daher mehr Ressourcen. +* **MobileNet**, eine Modellfamilie mit reduzierter Größe, geeignet für mobile Geräte. Verwenden Sie sie, wenn Sie wenig Ressourcen haben und ein wenig Genauigkeit opfern können. -Hier sind Beispiele für Merkmale, die von einem Bild einer Katze durch das VGG-16-Netzwerk extrahiert wurden: +Hier sind Beispielmerkmale, die von einem Bild einer Katze durch das VGG-16-Netzwerk extrahiert wurden: -![Merkmale, die von VGG-16 extrahiert wurden](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.de.png) +![Merkmale extrahiert durch VGG-16](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) -## Katzen- und Hundedatensatz +## Datensatz: Katzen vs. Hunde -In diesem Beispiel verwenden wir einen Datensatz von [Katzen und Hunden](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), der sehr nah an einem realen Bildklassifizierungsszenario ist. +In diesem Beispiel verwenden wir einen Datensatz von [Katzen und Hunden](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), der einem realen Szenario der Bildklassifikation sehr nahe kommt. -## ✍️ Übung: Transferlernen +## ✍️ Übung: Transfer-Learning -Lassen Sie uns das Transferlernen in den entsprechenden Notebooks in Aktion sehen: +Lassen Sie uns Transfer-Learning in Aktion in den entsprechenden Notebooks sehen: -* [Transferlernen - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Transferlernen - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Transfer-Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer-Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Visualisierung des adversarialen Katers +## Visualisierung einer adversarialen Katze -Das vortrainierte neuronale Netzwerk enthält verschiedene Muster in seinem *Gehirn*, einschließlich Vorstellungen von **idealen Katzen** (sowie idealen Hunden, idealen Zebras usw.). Es wäre interessant, dieses Bild irgendwie **zu visualisieren**. Allerdings ist das nicht einfach, da die Muster über die Netzwerkgewichte verteilt und auch in einer hierarchischen Struktur organisiert sind. +Ein vortrainiertes neuronales Netzwerk enthält verschiedene Muster in seinem *Gehirn*, einschließlich Vorstellungen von einer **idealen Katze** (sowie einem idealen Hund, idealen Zebra usw.). Es wäre interessant, dieses Bild irgendwie **zu visualisieren**. Allerdings ist das nicht einfach, da die Muster über die Netzwerkgewichte verteilt und in einer hierarchischen Struktur organisiert sind. -Ein Ansatz, den wir verfolgen können, besteht darin, mit einem zufälligen Bild zu beginnen und dann die Technik der **Gradientenabstieg-Optimierung** zu verwenden, um dieses Bild so anzupassen, dass das Netzwerk anfängt zu denken, es sei eine Katze. +Ein Ansatz, den wir verfolgen können, ist, mit einem zufälligen Bild zu beginnen und dann die Technik der **Gradientenabstiegsoptimierung** zu verwenden, um dieses Bild so anzupassen, dass das Netzwerk denkt, es sei eine Katze. -![Bildoptimierungsschleife](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.de.png) +![Bildoptimierungsschleife](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) -Wenn wir dies jedoch tun, erhalten wir etwas, das sehr ähnlich wie Rauschen aussieht. Das liegt daran, dass *es viele Möglichkeiten gibt, das Netzwerk glauben zu lassen, dass das Eingabebild eine Katze ist*, einschließlich einiger, die visuell keinen Sinn ergeben. Während diese Bilder viele Muster enthalten, die typisch für eine Katze sind, gibt es nichts, was sie visuell unterscheidbar macht. +Wenn wir dies jedoch tun, erhalten wir etwas, das einem zufälligen Rauschen sehr ähnlich ist. Dies liegt daran, dass *es viele Möglichkeiten gibt, das Netzwerk glauben zu lassen, dass das Eingabebild eine Katze ist*, einschließlich einiger, die visuell keinen Sinn ergeben. Während diese Bilder viele Muster enthalten, die typisch für eine Katze sind, gibt es nichts, das sie visuell unterscheidbar macht. -Um das Ergebnis zu verbessern, können wir einen weiteren Begriff in die Verlustfunktion einfügen, der als **Variationsverlust** bezeichnet wird. Es handelt sich um eine Metrik, die zeigt, wie ähnlich benachbarte Pixel des Bildes sind. Die Minimierung des Variationsverlusts macht das Bild glatter und beseitigt Rauschen – wodurch ansprechendere Muster sichtbar werden. Hier ist ein Beispiel für solche "idealen" Bilder, die mit hoher Wahrscheinlichkeit als Katze und als Zebra klassifiziert werden: +Um das Ergebnis zu verbessern, können wir einen weiteren Term in die Verlustfunktion hinzufügen, der als **Variationsverlust** bezeichnet wird. Dies ist eine Metrik, die zeigt, wie ähnlich benachbarte Pixel des Bildes sind. Die Minimierung des Variationsverlusts macht das Bild glatter und beseitigt Rauschen – wodurch visuell ansprechendere Muster sichtbar werden. Hier ist ein Beispiel für solche "idealen" Bilder, die mit hoher Wahrscheinlichkeit als Katze und Zebra klassifiziert werden: -![Ideale Katze](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.de.png) | ![Ideales Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.de.png) +![Ideale Katze](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![Ideales Zebra](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) -----|----- *Ideale Katze* | *Ideales Zebra* -Ein ähnlicher Ansatz kann verwendet werden, um sogenannte **adversariale Angriffe** auf ein neuronales Netzwerk durchzuführen. Angenommen, wir möchten ein neuronales Netzwerk täuschen und einen Hund wie eine Katze aussehen lassen. Wenn wir ein Bild eines Hundes nehmen, das von einem Netzwerk als Hund erkannt wird, können wir es dann ein wenig anpassen, indem wir die Gradientenabstieg-Optimierung verwenden, bis das Netzwerk beginnt, es als Katze zu klassifizieren: +Ein ähnlicher Ansatz kann verwendet werden, um sogenannte **adversariale Angriffe** auf ein neuronales Netzwerk durchzuführen. Angenommen, wir möchten ein neuronales Netzwerk täuschen und einen Hund wie eine Katze aussehen lassen. Wenn wir das Bild eines Hundes nehmen, das vom Netzwerk als Hund erkannt wird, können wir es ein wenig anpassen, indem wir die Gradientenabstiegsoptimierung verwenden, bis das Netzwerk es als Katze klassifiziert: -![Bild eines Hundes](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.de.png) | ![Bild eines Hundes, der als Katze klassifiziert wird](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.de.png) +![Bild eines Hundes](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![Bild eines Hundes, der als Katze klassifiziert wird](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) -----|----- -*Ursprüngliches Bild eines Hundes* | *Bild eines Hundes, der als Katze klassifiziert wird* +*Originalbild eines Hundes* | *Bild eines Hundes, der als Katze klassifiziert wird* -Siehe den Code, um die oben genannten Ergebnisse im folgenden Notebook zu reproduzieren: +Sehen Sie sich den Code an, um die oben genannten Ergebnisse in folgendem Notebook zu reproduzieren: * [Ideale und adversariale Katze - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + ## Fazit -Mit Transferlernen können Sie schnell einen Klassifikator für eine benutzerdefinierte Objektklassifizierungsaufgabe zusammenstellen und eine hohe Genauigkeit erreichen. Sie können sehen, dass komplexere Aufgaben, die wir jetzt lösen, mehr Rechenleistung erfordern und nicht einfach auf der CPU gelöst werden können. In der nächsten Einheit werden wir versuchen, eine leichtere Implementierung zu verwenden, um dasselbe Modell mit geringeren Rechenressourcen zu trainieren, was zu einer nur geringfügig niedrigeren Genauigkeit führt. +Mit Transfer-Learning können Sie schnell einen Klassifikator für eine benutzerdefinierte Objektklassifikationsaufgabe zusammenstellen und eine hohe Genauigkeit erzielen. Sie sehen, dass komplexere Aufgaben, die wir jetzt lösen, eine höhere Rechenleistung erfordern und nicht einfach auf der CPU gelöst werden können. Im nächsten Abschnitt werden wir versuchen, eine leichtere Implementierung zu verwenden, um dasselbe Modell mit geringeren Rechenressourcen zu trainieren, was zu einer nur geringfügig niedrigeren Genauigkeit führt. ## 🚀 Herausforderung -In den begleitenden Notebooks gibt es Hinweise am Ende, wie der Wissenstransfer am besten mit einigermaßen ähnlichen Trainingsdaten funktioniert (vielleicht eine neue Tierart). Experimentieren Sie mit völlig neuen Bildtypen, um zu sehen, wie gut oder schlecht Ihre Modelle für den Wissenstransfer abschneiden. +In den begleitenden Notebooks gibt es am Ende Hinweise darauf, dass Transfer-Wissen am besten mit einigermaßen ähnlichen Trainingsdaten funktioniert (zum Beispiel eine neue Tierart). Experimentieren Sie mit völlig neuen Bildtypen, um zu sehen, wie gut oder schlecht Ihre Transfer-Wissen-Modelle abschneiden. -## [Nachlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Überprüfung & Selbststudium -Lesen Sie [TrainingTricks.md](TrainingTricks.md) durch, um Ihr Wissen über einige andere Möglichkeiten zu vertiefen, wie Sie Ihre Modelle trainieren können. +Lesen Sie [TrainingTricks.md](TrainingTricks.md), um Ihr Wissen über andere Möglichkeiten zur Modellschulung zu vertiefen. ## [Aufgabe](lab/README.md) -In diesem Labor werden wir den realen [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz mit 35 Rassen von Katzen und Hunden verwenden und einen Klassifikator für das Transferlernen erstellen. +In diesem Lab verwenden wir den realen [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz mit 35 Katzen- und Hunderassen und erstellen einen Transfer-Learning-Klassifikator. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index 10f0f16d..0bef203d 100644 --- a/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# Tricks für das Training von Deep Learning + +# Deep Learning Training Tricks -Mit zunehmender Tiefe von neuronalen Netzwerken wird der Trainingsprozess immer herausfordernder. Ein großes Problem sind die sogenannten [verschwindenen Gradienten](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) oder [explodierenden Gradienten](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Dieser Beitrag](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) bietet eine gute Einführung in diese Probleme. +Je tiefer neuronale Netzwerke werden, desto herausfordernder wird ihr Training. Ein Hauptproblem sind die sogenannten [verschwindenden Gradienten](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) oder [explodierenden Gradienten](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Dieser Artikel](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) bietet eine gute Einführung in diese Probleme. -Um das Training tiefer Netzwerke effizienter zu gestalten, können einige Techniken verwendet werden. +Um das Training tiefer Netzwerke effizienter zu gestalten, gibt es einige Techniken, die angewendet werden können. -## Werte in einem angemessenen Intervall halten +## Werte in einem vernünftigen Bereich halten -Um numerische Berechnungen stabiler zu machen, möchten wir sicherstellen, dass alle Werte in unserem neuronalen Netzwerk innerhalb eines angemessenen Bereichs liegen, typischerweise [-1..1] oder [0..1]. Dies ist keine sehr strenge Anforderung, aber die Natur der Gleitkomma-Berechnungen ist so, dass Werte unterschiedlicher Größenordnung nicht genau zusammen manipuliert werden können. Wenn wir beispielsweise 10-10 und 1010 addieren, erhalten wir wahrscheinlich 1010, weil der kleinere Wert "in die gleiche Größenordnung" wie der größere umgewandelt wird, und somit die Mantisse verloren geht. +Um numerische Berechnungen stabiler zu machen, sollten alle Werte innerhalb des neuronalen Netzwerks in einem vernünftigen Bereich liegen, typischerweise [-1..1] oder [0..1]. Dies ist keine strikte Anforderung, aber die Natur von Gleitkomma-Berechnungen ist so, dass Werte unterschiedlicher Größenordnungen nicht genau zusammen verarbeitet werden können. Zum Beispiel, wenn wir 10-10 und 1010 addieren, erhalten wir wahrscheinlich 1010, da der kleinere Wert auf die gleiche Größenordnung wie der größere "umgerechnet" wird und somit die Mantisse verloren geht. -Die meisten Aktivierungsfunktionen haben Nichtlinearitäten im Bereich von [-1..1], daher macht es Sinn, alle Eingabedaten auf den Intervall [-1..1] oder [0..1] zu skalieren. +Die meisten Aktivierungsfunktionen haben Nichtlinearitäten im Bereich von [-1..1], daher macht es Sinn, alle Eingabedaten auf den Bereich [-1..1] oder [0..1] zu skalieren. -## Initiale Gewichtsinitalisierung +## Initialisierung der Gewichte -Idealerweise möchten wir, dass die Werte nach dem Durchlaufen der Netzwerkebenen im gleichen Bereich liegen. Daher ist es wichtig, die Gewichte so zu initialisieren, dass die Verteilung der Werte erhalten bleibt. +Idealerweise sollten die Werte nach dem Durchlaufen der Netzwerkschichten im gleichen Bereich bleiben. Daher ist es wichtig, die Gewichte so zu initialisieren, dass die Verteilung der Werte erhalten bleibt. -Eine normale Verteilung **N(0,1)** ist keine gute Idee, denn wenn wir *n* Eingaben haben, wäre die Standardabweichung des Outputs *n*, und die Werte würden wahrscheinlich aus dem Intervall [0..1] herausspringen. +Eine Normalverteilung **N(0,1)** ist keine gute Idee, da bei *n* Eingaben die Standardabweichung der Ausgabe *n* wäre und die Werte wahrscheinlich aus dem Bereich [0..1] herausfallen. Die folgenden Initialisierungen werden häufig verwendet: * Gleichverteilung -- `uniform` * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** garantiert, dass für Eingaben mit einem Mittelwert von null und einer Standardabweichung von 1 der gleiche Mittelwert/die gleiche Standardabweichung erhalten bleibt. - * **N(0,√2/(n_in+n_out))** -- die sogenannte **Xavier-Initalisierung** (`glorot`), sie hilft, die Signale während der Vorwärts- und Rückwärtspropagation im Bereich zu halten. + * **N(0,1/√n_in)** garantiert, dass für Eingaben mit einem Mittelwert von 0 und einer Standardabweichung von 1 der gleiche Mittelwert/Standardabweichung erhalten bleibt + * **N(0,√2/(n_in+n_out))** -- die sogenannte **Xavier-Initialisierung** (`glorot`), die hilft, die Signale während der Vorwärts- und Rückwärtsausbreitung im Bereich zu halten ## Batch-Normalisierung -Selbst bei einer ordnungsgemäßen Gewichtsinitalisierung können die Gewichte während des Trainings willkürlich groß oder klein werden, was dazu führt, dass die Signale aus dem richtigen Bereich herauskommen. Wir können die Signale zurückbringen, indem wir eine der **Normalisierung**-Techniken verwenden. Während es mehrere davon gibt (Gewichtsnormierung, Schichtnormalisierung), wird die am häufigsten verwendete Batch-Normalisierung. +Selbst bei ordnungsgemäßer Initialisierung der Gewichte können diese während des Trainings beliebig groß oder klein werden und die Signale aus dem richtigen Bereich bringen. Wir können die Signale mit einer der **Normalisierungstechniken** wieder in den Bereich bringen. Während es mehrere davon gibt (Gewichtsnormierung, Schichtnormierung), wird am häufigsten die Batch-Normalisierung verwendet. -Die Idee der **Batch-Normalisierung** besteht darin, alle Werte über das Minibatch hinweg zu berücksichtigen und die Normalisierung (d.h. Mittelwert subtrahieren und durch die Standardabweichung teilen) auf der Grundlage dieser Werte durchzuführen. Sie wird als Netzwerkschicht implementiert, die diese Normalisierung nach der Anwendung der Gewichte, aber vor der Aktivierungsfunktion durchführt. Infolgedessen sehen wir wahrscheinlich eine höhere endgültige Genauigkeit und ein schnelleres Training. +Die Idee der **Batch-Normalisierung** besteht darin, alle Werte innerhalb des Minibatches zu berücksichtigen und eine Normalisierung (d. h. Mittelwert abziehen und durch Standardabweichung teilen) basierend auf diesen Werten durchzuführen. Sie wird als Netzwerkschicht implementiert, die diese Normalisierung nach der Anwendung der Gewichte, aber vor der Aktivierungsfunktion durchführt. Dadurch erreichen wir in der Regel eine höhere Endgenauigkeit und schnelleres Training. -Hier ist das [ursprüngliche Papier](https://arxiv.org/pdf/1502.03167.pdf) zur Batch-Normalisierung, die [Erklärung auf Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) und [ein guter einführender Blogbeitrag](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (und der [auf Russisch](https://habrahabr.ru/post/309302/)). +Hier ist das [Originalpapier](https://arxiv.org/pdf/1502.03167.pdf) zur Batch-Normalisierung, die [Erklärung auf Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) und [ein guter einführender Blogbeitrag](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (und einer [auf Russisch](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout** ist eine interessante Technik, die während des Trainings einen bestimmten Prozentsatz zufälliger Neuronen entfernt. Sie wird ebenfalls als Schicht mit einem Parameter (Prozentsatz der zu entfernenden Neuronen, typischerweise 10%-50%) implementiert, und während des Trainings werden zufällige Elemente des Eingangsvektors auf null gesetzt, bevor sie an die nächste Schicht weitergegeben werden. +**Dropout** ist eine interessante Technik, bei der ein bestimmter Prozentsatz zufälliger Neuronen während des Trainings entfernt wird. Es wird ebenfalls als Schicht mit einem Parameter (Prozentsatz der zu entfernenden Neuronen, typischerweise 10%-50%) implementiert, und während des Trainings werden zufällige Elemente des Eingabevektors auf null gesetzt, bevor sie an die nächste Schicht weitergegeben werden. -Obwohl dies seltsam erscheinen mag, können Sie den Effekt von Dropout auf das Training eines MNIST-Ziffernklassifikators im [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) Notizbuch sehen. Es beschleunigt das Training und ermöglicht es uns, in weniger Trainings-Epochen eine höhere Genauigkeit zu erreichen. +Auch wenn dies seltsam klingen mag, können Sie die Wirkung von Dropout beim Training eines MNIST-Ziffernklassifikators im [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb)-Notebook sehen. Es beschleunigt das Training und ermöglicht es uns, in weniger Trainingsepochen eine höhere Genauigkeit zu erreichen. Dieser Effekt kann auf verschiedene Weise erklärt werden: - * Es kann als ein zufälliger Schockfaktor für das Modell betrachtet werden, der die Optimierung aus dem lokalen Minimum herausnimmt. - * Es kann als *implizite Modellmittelung* betrachtet werden, weil wir sagen können, dass wir während des Dropouts ein leicht anderes Modell trainieren. + * Es kann als zufälliger Schockfaktor für das Modell betrachtet werden, der die Optimierung aus einem lokalen Minimum herausführt + * Es kann als *implizites Modellmittelwertbilden* betrachtet werden, da man sagen kann, dass während des Dropouts leicht unterschiedliche Modelle trainiert werden -> *Einige Leute sagen, dass wenn eine betrunkene Person versucht, etwas zu lernen, sie sich am nächsten Morgen besser daran erinnert als eine nüchterne Person, weil das Gehirn mit einigen defekten Neuronen versucht, sich besser anzupassen, um den Sinn zu erfassen. Wir haben nie getestet, ob das wahr ist oder nicht.* +> *Manche Leute sagen, dass eine betrunkene Person, die versucht, etwas zu lernen, sich dies am nächsten Morgen besser merken kann als eine nüchterne Person, weil ein Gehirn mit einigen fehlerhaften Neuronen besser versucht, den Sinn zu erfassen. Wir haben nie getestet, ob das stimmt oder nicht.* ## Überanpassung verhindern -Ein sehr wichtiger Aspekt des Deep Learning ist die Fähigkeit, [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) zu verhindern. Obwohl es verlockend sein könnte, ein sehr leistungsstarkes neuronales Netzwerkmodell zu verwenden, sollten wir immer die Anzahl der Modellparameter mit der Anzahl der Trainingsproben in Einklang bringen. +Ein sehr wichtiger Aspekt des Deep Learnings ist es, [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) zu verhindern. Auch wenn es verlockend sein mag, ein sehr leistungsstarkes neuronales Netzwerkmodell zu verwenden, sollten wir die Anzahl der Modellparameter immer mit der Anzahl der Trainingsbeispiele in Einklang bringen. -> Stellen Sie sicher, dass Sie das Konzept der [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), das wir zuvor eingeführt haben, verstehen! +> Stellen Sie sicher, dass Sie das Konzept der [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) verstanden haben, das wir zuvor eingeführt haben! Es gibt mehrere Möglichkeiten, Überanpassung zu verhindern: - * Frühes Stoppen -- kontinuierliche Überwachung des Fehlers im Validierungsdatensatz und das Stoppen des Trainings, wenn der Validierungsfehler zu steigen beginnt. - * Explizite Gewichtsnormierung / Regularisierung -- Hinzufügen einer zusätzlichen Strafe zur Verlustfunktion für hohe absolute Werte der Gewichte, was verhindert, dass das Modell sehr instabile Ergebnisse erzielt. - * Modellmittelung -- Training mehrerer Modelle und anschließendes Mittelung des Ergebnisses. Dies hilft, die Varianz zu minimieren. - * Dropout (implizite Modellmittelung). + * Frühes Stoppen -- kontinuierliches Überwachen des Fehlers auf dem Validierungsdatensatz und Beenden des Trainings, wenn der Validierungsfehler zu steigen beginnt. + * Expliziter Gewichtsrückgang / Regularisierung -- Hinzufügen einer zusätzlichen Strafe zur Verlustfunktion für hohe absolute Werte der Gewichte, was verhindert, dass das Modell sehr instabile Ergebnisse liefert + * Modellmittelwertbildung -- Training mehrerer Modelle und anschließendes Mitteln der Ergebnisse. Dies hilft, die Varianz zu minimieren. + * Dropout (implizite Modellmittelwertbildung) ## Optimierer / Trainingsalgorithmen Ein weiterer wichtiger Aspekt des Trainings ist die Wahl eines guten Trainingsalgorithmus. Während der klassische **Gradientenabstieg** eine vernünftige Wahl ist, kann er manchmal zu langsam sein oder andere Probleme verursachen. -Im Deep Learning verwenden wir **Stochastic Gradient Descent** (SGD), was ein Gradientabstieg ist, der auf Minibatches angewendet wird, die zufällig aus dem Trainingssatz ausgewählt werden. Die Gewichte werden mit dieser Formel angepasst: +Im Deep Learning verwenden wir den **stochastischen Gradientenabstieg** (SGD), der ein Gradientenabstieg ist, der auf Minibatches angewendet wird, die zufällig aus dem Trainingssatz ausgewählt werden. Die Gewichte werden mit dieser Formel angepasst: wt+1 = wt - η∇ℒ ### Momentum -Im **Momentum SGD** behalten wir einen Teil des Gradienten aus vorherigen Schritten bei. Es ist ähnlich, als würden wir uns mit Trägheit bewegen und einen Stoß in eine andere Richtung erhalten; unsere Trajektorie ändert sich nicht sofort, sondern behält einen Teil der ursprünglichen Bewegung bei. Hier führen wir einen weiteren Vektor v ein, um die *Geschwindigkeit* darzustellen: +Beim **Momentum-SGD** behalten wir einen Teil des Gradienten aus vorherigen Schritten bei. Es ist ähnlich wie bei einer Bewegung mit Trägheit: Wenn wir in eine Richtung unterwegs sind und einen Stoß in eine andere Richtung erhalten, ändert sich unsere Flugbahn nicht sofort, sondern behält einen Teil der ursprünglichen Bewegung bei. Hier führen wir einen weiteren Vektor v ein, um die *Geschwindigkeit* darzustellen: * vt+1 = γ vt - η∇ℒ -* wt+1 = wt + vt+1 +* wt+1 = wt+vt+1 -Hier gibt der Parameter γ an, inwieweit wir die Trägheit berücksichtigen: γ=0 entspricht dem klassischen SGD; γ=1 ist eine reine Bewegungsgleichung. +Hier gibt der Parameter γ an, in welchem Maße wir die Trägheit berücksichtigen: γ=0 entspricht dem klassischen SGD; γ=1 ist eine reine Bewegungsgleichung. -### Adam, Adagrad usw. +### Adam, Adagrad, etc. -Da wir in jeder Schicht Signale mit einer Matrix Wi multiplizieren, kann der Gradient je nach ||Wi|| entweder abnehmen und nahe bei 0 sein oder unbegrenzt steigen. Dies ist das Wesen des Problems der explodierenden/verschwindenen Gradienten. +Da in jeder Schicht Signale mit einer Matrix Wi multipliziert werden, kann der Gradient je nach ||Wi|| entweder verschwinden und nahe 0 sein oder unbegrenzt ansteigen. Dies ist das Wesen des Exploding/Vanishing-Gradients-Problems. -Eine der Lösungen für dieses Problem besteht darin, nur die Richtung des Gradienten in der Gleichung zu verwenden und den absoluten Wert zu ignorieren, d.h. +Eine Lösung für dieses Problem besteht darin, in der Gleichung nur die Richtung des Gradienten zu verwenden und den absoluten Wert zu ignorieren, d. h. wt+1 = wt - η(∇ℒ/||∇ℒ||), wobei ||∇ℒ|| = √∑(∇ℒ)2 -Dieser Algorithmus wird **Adagrad** genannt. Weitere Algorithmen, die dieselbe Idee verwenden: **RMSProp**, **Adam**. +Dieser Algorithmus wird **Adagrad** genannt. Andere Algorithmen, die dieselbe Idee verwenden: **RMSProp**, **Adam** -> **Adam** gilt als sehr effizienter Algorithmus für viele Anwendungen, also wenn Sie sich nicht sicher sind, welchen Sie verwenden sollen - verwenden Sie Adam. +> **Adam** gilt als ein sehr effizienter Algorithmus für viele Anwendungen. Wenn Sie sich nicht sicher sind, welchen Sie verwenden sollen, nehmen Sie Adam. -### Gradientenbeschneidung +### Gradient Clipping -Gradientenbeschneidung ist eine Erweiterung der obigen Idee. Wenn ||∇ℒ|| ≤ θ, berücksichtigen wir den ursprünglichen Gradienten bei der Gewichtoptimierung, und wenn ||∇ℒ|| > θ - teilen wir den Gradienten durch seine Norm. Hier ist θ ein Parameter, in den meisten Fällen können wir θ=1 oder θ=10 wählen. +Gradient Clipping ist eine Erweiterung der obigen Idee. Wenn ||∇ℒ|| ≤ θ, verwenden wir den ursprünglichen Gradienten in der Gewichtsoptimierung, und wenn ||∇ℒ|| > θ, teilen wir den Gradienten durch seine Norm. Hier ist θ ein Parameter, in den meisten Fällen können wir θ=1 oder θ=10 wählen. -### Lernratenverfall +### Lernratenabnahme -Der Erfolg des Trainings hängt oft vom Lernratenparameter η ab. Es ist logisch anzunehmen, dass größere Werte von η zu schnellerem Training führen, was wir typischerweise zu Beginn des Trainings wollen, und dann kleinere Werte von η uns ermöglichen, das Netzwerk fein abzustimmen. Daher möchten wir in den meisten Fällen η während des Trainings verringern. +Der Erfolg des Trainings hängt oft vom Lernratenparameter η ab. Es ist logisch anzunehmen, dass größere Werte von η zu schnellerem Training führen, was wir typischerweise zu Beginn des Trainings wollen, und dass kleinere Werte von η es uns ermöglichen, das Netzwerk fein abzustimmen. Daher möchten wir in den meisten Fällen η im Verlauf des Trainings verringern. -Dies kann erreicht werden, indem η nach jeder Trainings-Epoche mit einer bestimmten Zahl (z.B. 0,98) multipliziert wird oder durch die Verwendung eines komplizierteren **Lernratenplans**. +Dies kann erreicht werden, indem η nach jeder Epoche des Trainings mit einer Zahl (z. B. 0,98) multipliziert wird, oder durch die Verwendung eines komplizierteren **Lernratenplans**. ## Verschiedene Netzwerkarchitekturen -Die Auswahl der richtigen Netzwerkarchitektur für Ihr Problem kann knifflig sein. Normalerweise würden wir eine Architektur wählen, die sich für unsere spezifische Aufgabe (oder eine ähnliche) bewährt hat. Hier ist eine [gute Übersicht](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) über neuronale Netzwerkarchitekturen für die Computer Vision. +Die Auswahl der richtigen Netzwerkarchitektur für Ihr Problem kann knifflig sein. Normalerweise würden wir eine Architektur wählen, die sich für unsere spezifische Aufgabe (oder eine ähnliche) bewährt hat. Hier ist ein [guter Überblick](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) über neuronale Netzwerkarchitekturen für Computer Vision. -> Es ist wichtig, eine Architektur auszuwählen, die leistungsfähig genug für die Anzahl der Trainingsproben ist, die wir haben. Eine zu leistungsstarke Modellwahl kann zu [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) führen. +> Es ist wichtig, eine Architektur zu wählen, die leistungsstark genug für die Anzahl der Trainingsbeispiele ist, die wir haben. Eine zu leistungsstarke Modellwahl kann zu [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) führen. -Ein weiterer guter Weg wäre, eine Architektur zu verwenden, die sich automatisch an die erforderliche Komplexität anpasst. Bis zu einem gewissen Grad sind die Architekturen **ResNet** und **Inception** selbstanpassend. [Mehr zu Architekturen der Computer Vision](../07-ConvNets/CNN_Architectures.md) +Eine weitere gute Möglichkeit wäre die Verwendung einer Architektur, die sich automatisch an die erforderliche Komplexität anpasst. Bis zu einem gewissen Grad sind die **ResNet**-Architektur und **Inception** selbstanpassend. [Mehr zu Computer-Vision-Architekturen](../07-ConvNets/CNN_Architectures.md) **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ausgangssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index f358eada..2d2ec247 100644 --- a/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,10 +1,19 @@ -# Klassifizierung von Oxford-Haustieren mit Transferlernen + +# Klassifikation von Oxford-Haustieren mit Transfer-Learning Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tieraufzucht entwickeln, um alle Haustiere zu katalogisieren. Eine der großartigen Funktionen einer solchen Anwendung wäre die automatische Erkennung der Rasse anhand eines Fotos. In dieser Aufgabe werden wir Transferlernen nutzen, um echte Haustierbilder aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustier-Datensatz zu klassifizieren. +Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tierpension entwickeln, um alle Haustiere zu katalogisieren. Eine großartige Funktion einer solchen Anwendung wäre die automatische Erkennung der Rasse anhand eines Fotos. In dieser Aufgabe werden wir Transfer-Learning verwenden, um echte Bilder von Haustieren aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustier-Datensatz zu klassifizieren. ## Der Datensatz @@ -18,13 +27,13 @@ Um den Datensatz herunterzuladen, verwenden Sie diesen Code-Schnipsel: !rm images.tar.gz ``` -## Notebook starten +## Start des Notebooks Beginnen Sie das Labor, indem Sie [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) öffnen. -## Fazit +## Erkenntnis -Transferlernen und vortrainierte Netzwerke ermöglichen es uns, reale Bildklassifizierungsprobleme relativ einfach zu lösen. Allerdings funktionieren vortrainierte Netzwerke gut bei Bildern ähnlicher Art, und wenn wir beginnen, sehr unterschiedliche Bilder (z. B. medizinische Bilder) zu klassifizieren, werden wir wahrscheinlich viel schlechtere Ergebnisse erzielen. +Transfer-Learning und vortrainierte Netzwerke ermöglichen es uns, reale Bildklassifikationsprobleme relativ einfach zu lösen. Allerdings funktionieren vortrainierte Netzwerke gut bei Bildern ähnlicher Art, und wenn wir anfangen, sehr unterschiedliche Bilder zu klassifizieren (z. B. medizinische Bilder), werden die Ergebnisse wahrscheinlich deutlich schlechter ausfallen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md index eac32645..77ee20f3 100644 --- a/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,58 +1,67 @@ + # Autoencoder -Beim Training von CNNs besteht eines der Probleme darin, dass wir eine große Menge an beschrifteten Daten benötigen. Im Falle der Bildklassifikation müssen wir Bilder in verschiedene Klassen unterteilen, was einen manuellen Aufwand erfordert. +Beim Training von CNNs besteht eines der Probleme darin, dass wir viele gelabelte Daten benötigen. Im Fall der Bildklassifikation müssen wir Bilder in verschiedene Klassen unterteilen, was manuell erfolgen muss. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Wir möchten jedoch möglicherweise rohe (unbeschriftete) Daten für das Training von CNN-Feature-Extraktoren verwenden, was als **selbstüberwachtes Lernen** bezeichnet wird. Anstelle von Beschriftungen verwenden wir Trainingsbilder sowohl als Eingabe als auch als Ausgabe des Netzwerks. Die Hauptidee des **Autoencoders** ist, dass wir ein **Encoder-Netzwerk** haben, das das Eingangsbild in einen **latent space** (normalerweise ein Vektor einer kleineren Größe) umwandelt, und dann das **Decoder-Netzwerk**, dessen Ziel es ist, das ursprüngliche Bild wiederherzustellen. +Wir möchten jedoch möglicherweise rohe (nicht gelabelte) Daten verwenden, um CNN-Feature-Extraktoren zu trainieren, was als **selbstüberwachtes Lernen** bezeichnet wird. Anstelle von Labels verwenden wir Trainingsbilder sowohl als Netzwerkeingabe als auch als -ausgabe. Die Hauptidee des **Autoencoders** besteht darin, dass wir ein **Encoder-Netzwerk** haben, das das Eingabebild in einen **latenten Raum** umwandelt (normalerweise ist dies einfach ein Vektor mit kleinerer Größe), und dann ein **Decoder-Netzwerk**, dessen Ziel es ist, das ursprüngliche Bild zu rekonstruieren. -> ✅ Ein [Autoencoder](https://wikipedia.org/wiki/Autoencoder) ist "eine Art künstliches neuronales Netzwerk, das verwendet wird, um effiziente Kodierungen von unbeschrifteten Daten zu lernen." +> ✅ Ein [Autoencoder](https://wikipedia.org/wiki/Autoencoder) ist "eine Art künstliches neuronales Netzwerk, das verwendet wird, um effiziente Kodierungen von nicht gelabelten Daten zu lernen." Da wir einen Autoencoder trainieren, um so viele Informationen wie möglich aus dem ursprünglichen Bild für eine genaue Rekonstruktion zu erfassen, versucht das Netzwerk, die beste **Einbettung** der Eingabebilder zu finden, um die Bedeutung zu erfassen. -![AutoEncoder Diagramm](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.de.jpg) +![AutoEncoder Diagramm](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) > Bild von [Keras Blog](https://blog.keras.io/building-autoencoders-in-keras.html) ## Szenarien für die Verwendung von Autoencodern -Obwohl die Rekonstruktion ursprünglicher Bilder an sich nicht nützlich erscheint, gibt es einige Szenarien, in denen Autoencoder besonders nützlich sind: +Obwohl die Rekonstruktion ursprünglicher Bilder an sich nicht nützlich erscheint, gibt es einige Szenarien, in denen Autoencoder besonders hilfreich sind: -* **Reduzierung der Dimension von Bildern zur Visualisierung** oder **Training von Bild-Einbettungen**. In der Regel liefern Autoencoder bessere Ergebnisse als PCA, da sie die räumliche Natur von Bildern und hierarchische Merkmale berücksichtigen. -* **Rauschunterdrückung**, d.h. das Entfernen von Rauschen aus dem Bild. Da Rauschen viele nutzlose Informationen enthält, kann der Autoencoder diese nicht alle in den relativ kleinen latenten Raum einfügen und erfasst daher nur den wichtigen Teil des Bildes. Beim Training von Rauschunterdrückern beginnen wir mit den Originalbildern und verwenden Bilder mit künstlich hinzugefügtem Rauschen als Eingabe für den Autoencoder. -* **Superauflösung**, d.h. Erhöhung der Bildauflösung. Wir beginnen mit hochauflösenden Bildern und verwenden das Bild mit niedrigerer Auflösung als Eingabe für den Autoencoder. +* **Reduzierung der Dimension von Bildern zur Visualisierung** oder **Training von Bild-Einbettungen**. Autoencoder liefern normalerweise bessere Ergebnisse als PCA, da sie die räumliche Natur von Bildern und hierarchische Merkmale berücksichtigen. +* **Rauschunterdrückung**, d.h. das Entfernen von Rauschen aus dem Bild. Da Rauschen viele unnütze Informationen enthält, kann der Autoencoder nicht alles in den relativ kleinen latenten Raum einpassen und erfasst daher nur den wichtigen Teil des Bildes. Beim Training von Rauschunterdrückern beginnen wir mit den ursprünglichen Bildern und verwenden Bilder mit künstlich hinzugefügtem Rauschen als Eingabe für den Autoencoder. +* **Superauflösung**, Erhöhung der Bildauflösung. Wir beginnen mit hochauflösenden Bildern und verwenden das Bild mit niedrigerer Auflösung als Eingabe für den Autoencoder. * **Generative Modelle**. Sobald wir den Autoencoder trainiert haben, kann der Decoder-Teil verwendet werden, um neue Objekte aus zufälligen latenten Vektoren zu erstellen. ## Variationale Autoencoder (VAE) -Traditionelle Autoencoder reduzieren die Dimension der Eingabedaten auf irgendeine Weise, indem sie die wichtigen Merkmale der Eingabebilder herausfinden. Allerdings machen latente Vektoren oft nicht viel Sinn. Mit anderen Worten, wenn wir das MNIST-Dataset als Beispiel nehmen, ist es keine einfache Aufgabe herauszufinden, welche Ziffern verschiedenen latenten Vektoren entsprechen, da nahe latente Vektoren nicht unbedingt den gleichen Ziffern entsprechen. +Traditionelle Autoencoder reduzieren die Dimension der Eingabedaten auf irgendeine Weise und identifizieren die wichtigen Merkmale der Eingabebilder. Allerdings machen latente Vektoren oft wenig Sinn. Mit anderen Worten, wenn wir das MNIST-Dataset als Beispiel nehmen, ist es nicht einfach herauszufinden, welche Ziffern zu verschiedenen latenten Vektoren gehören, da nahe latente Vektoren nicht unbedingt denselben Ziffern entsprechen. -Andererseits ist es besser, um *generative* Modelle zu trainieren, ein gewisses Verständnis des latenten Raums zu haben. Diese Idee führt uns zu **variational auto-encoder** (VAE). +Um generative Modelle zu trainieren, ist es jedoch besser, ein Verständnis des latenten Raums zu haben. Diese Idee führt uns zu **variationalen Autoencodern** (VAE). -VAE ist der Autoencoder, der lernt, die *statistische Verteilung* der latenten Parameter, die sogenannte **latente Verteilung**, vorherzusagen. Zum Beispiel möchten wir, dass latente Vektoren normal verteilt sind mit einem Mittelwert zmean und einer Standardabweichung zsigma (sowohl Mittelwert als auch Standardabweichung sind Vektoren einer bestimmten Dimension d). Der Encoder in VAE lernt, diese Parameter vorherzusagen, und dann nimmt der Decoder einen zufälligen Vektor aus dieser Verteilung, um das Objekt zu rekonstruieren. +Ein VAE ist ein Autoencoder, der lernt, die *statistische Verteilung* der latenten Parameter vorherzusagen, die sogenannte **latente Verteilung**. Zum Beispiel möchten wir möglicherweise, dass latente Vektoren normal verteilt sind mit einem Mittelwert zmean und einer Standardabweichung zsigma (sowohl Mittelwert als auch Standardabweichung sind Vektoren einer bestimmten Dimensionalität d). Der Encoder im VAE lernt, diese Parameter vorherzusagen, und der Decoder nimmt dann einen zufälligen Vektor aus dieser Verteilung, um das Objekt zu rekonstruieren. -Zusammenfassend: +Zusammengefasst: - * Vom Eingangsvektor sagen wir `z_mean` und `z_log_sigma` voraus (anstatt die Standardabweichung selbst vorherzusagen, sagen wir ihren Logarithmus voraus) - * Wir ziehen einen Vektor `sample` aus der Verteilung N(zmean,exp(zlog\_sigma)) - * Der Decoder versucht, das ursprüngliche Bild unter Verwendung von `sample` als Eingangsvektor zu decodieren +* Aus dem Eingabevektor sagen wir `z_mean` und `z_log_sigma` voraus (anstatt die Standardabweichung selbst vorherzusagen, sagen wir deren Logarithmus voraus). +* Wir entnehmen einen Vektor `sample` aus der Verteilung N(zmean,exp(zlog\_sigma)). +* Der Decoder versucht, das ursprüngliche Bild mithilfe von `sample` als Eingabevektor zu dekodieren. - + -> Bild von [diesem Blogbeitrag](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) von Isaak Dykeman +> Bild aus [diesem Blogbeitrag](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) von Isaak Dykeman Variationale Autoencoder verwenden eine komplexe Verlustfunktion, die aus zwei Teilen besteht: -* **Rekonstruktionsverlust** ist die Verlustfunktion, die zeigt, wie nah ein rekonstruiertes Bild am Zielbild ist (es kann der Mittlere Quadratische Fehler, oder MSE, sein). Es ist dieselbe Verlustfunktion wie bei normalen Autoencodern. -* **KL-Verlust**, der sicherstellt, dass die Verteilungen der latenten Variablen nahe an der Normalverteilung bleiben. Er basiert auf dem Konzept der [Kullback-Leibler-Divergenz](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - eine Metrik zur Schätzung, wie ähnlich zwei statistische Verteilungen sind. +* **Rekonstruktionsverlust** ist die Verlustfunktion, die zeigt, wie nah ein rekonstruiertes Bild am Ziel ist (es kann Mean Squared Error oder MSE sein). Es ist dieselbe Verlustfunktion wie bei normalen Autoencodern. +* **KL-Verlust**, der sicherstellt, dass die Verteilung der latenten Variablen nahe an der Normalverteilung bleibt. Er basiert auf dem Konzept der [Kullback-Leibler-Divergenz](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - einem Maß zur Schätzung der Ähnlichkeit zweier statistischer Verteilungen. -Ein wichtiger Vorteil von VAEs ist, dass sie es uns ermöglichen, relativ einfach neue Bilder zu generieren, da wir wissen, aus welcher Verteilung wir latente Vektoren ziehen können. Wenn wir beispielsweise VAE mit einem 2D-latenten Vektor auf MNIST trainieren, können wir dann die Komponenten des latenten Vektors variieren, um verschiedene Ziffern zu erhalten: +Ein wichtiger Vorteil von VAEs ist, dass sie es uns ermöglichen, relativ einfach neue Bilder zu generieren, da wir wissen, aus welcher Verteilung wir latente Vektoren entnehmen müssen. Wenn wir beispielsweise einen VAE mit einem 2D-latenten Vektor auf MNIST trainieren, können wir dann die Komponenten des latenten Vektors variieren, um verschiedene Ziffern zu erhalten: vaemnist > Bild von [Dmitry Soshnikov](http://soshnikov.com) -Beobachten Sie, wie die Bilder ineinander übergehen, während wir latente Vektoren aus verschiedenen Bereichen des latenten Parameterraums erhalten. Wir können diesen Raum auch in 2D visualisieren: +Beobachten Sie, wie Bilder ineinander übergehen, wenn wir beginnen, latente Vektoren aus verschiedenen Bereichen des latenten Parameterraums zu entnehmen. Wir können diesen Raum auch in 2D visualisieren: vaemnist cluster @@ -60,41 +69,41 @@ Beobachten Sie, wie die Bilder ineinander übergehen, während wir latente Vekto ## ✍️ Übungen: Autoencoder -Erfahren Sie mehr über Autoencoder in diesen entsprechenden Notizbüchern: +Erfahren Sie mehr über Autoencoder in den entsprechenden Notebooks: -* [Autoencoders in TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) -* [Autoencoders in PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) +* [Autoencoder in TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoder in PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) ## Eigenschaften von Autoencodern -* **Daten-spezifisch** - sie funktionieren nur gut mit der Art von Bildern, auf denen sie trainiert wurden. Wenn wir beispielsweise ein Superauflösungsnetzwerk auf Blumen trainieren, wird es bei Porträts nicht gut abschneiden. Das liegt daran, dass das Netzwerk ein hochauflösendes Bild erzeugen kann, indem es feine Details aus den im Trainingsdatensatz gelernten Merkmalen entnimmt. -* **Verlustbehaftet** - das rekonstruierte Bild ist nicht dasselbe wie das ursprüngliche Bild. Die Art des Verlusts wird durch die *Verlustfunktion* definiert, die während des Trainings verwendet wird. -* Funktioniert mit **unbeschrifteten Daten**. +* **Daten-spezifisch** - sie funktionieren nur gut mit der Art von Bildern, auf denen sie trainiert wurden. Wenn wir beispielsweise ein Superauflösungsnetzwerk auf Blumen trainieren, wird es bei Porträts nicht gut funktionieren. Dies liegt daran, dass das Netzwerk ein hochauflösendes Bild erzeugen kann, indem es feine Details aus den Merkmalen des Trainingsdatensatzes entnimmt. +* **Verlustbehaftet** - das rekonstruierte Bild ist nicht identisch mit dem ursprünglichen Bild. Die Art des Verlusts wird durch die *Verlustfunktion* definiert, die während des Trainings verwendet wird. +* Funktioniert mit **nicht gelabelten Daten** -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## Fazit -In dieser Lektion haben Sie die verschiedenen Arten von Autoencodern kennengelernt, die für den KI-Wissenschaftler verfügbar sind. Sie haben gelernt, wie man sie baut und wie man sie zur Rekonstruktion von Bildern verwendet. Sie haben auch über den VAE gelernt und wie man ihn verwendet, um neue Bilder zu generieren. +In dieser Lektion haben Sie die verschiedenen Arten von Autoencodern kennengelernt, die einem KI-Wissenschaftler zur Verfügung stehen. Sie haben gelernt, wie man sie erstellt und wie man sie verwendet, um Bilder zu rekonstruieren. Sie haben auch den VAE kennengelernt und erfahren, wie man ihn verwendet, um neue Bilder zu generieren. ## 🚀 Herausforderung -In dieser Lektion haben Sie gelernt, wie man Autoencoder für Bilder verwendet. Aber sie können auch für Musik verwendet werden! Schauen Sie sich das Projekt [MusicVAE](https://magenta.tensorflow.org/music-vae) des Magenta-Projekts an, das Autoencoder verwendet, um zu lernen, Musik zu rekonstruieren. Machen Sie einige [Experimente](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) mit dieser Bibliothek, um zu sehen, was Sie erstellen können. +In dieser Lektion haben Sie gelernt, wie man Autoencoder für Bilder verwendet. Aber sie können auch für Musik verwendet werden! Schauen Sie sich das [MusicVAE](https://magenta.tensorflow.org/music-vae)-Projekt des Magenta-Projekts an, das Autoencoder verwendet, um Musik zu rekonstruieren. Machen Sie einige [Experimente](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) mit dieser Bibliothek, um zu sehen, was Sie erstellen können. -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Überprüfung & Selbststudium -Zur Referenz lesen Sie mehr über Autoencoder in diesen Ressourcen: +Lesen Sie zur Referenz mehr über Autoencoder in diesen Ressourcen: -* [Autoencoder in Keras erstellen](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) * [Blogbeitrag auf NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) -* [Variationale Autoencoder erklärt](https://kvfrans.com/variational-autoencoders-explained/) -* [Bedingte Variationale Autoencoder](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) +* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/) +* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ## Aufgabe -Am Ende von [diesem Notizbuch mit TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) finden Sie eine 'Aufgabe' - verwenden Sie dies als Ihre Aufgabe. +Am Ende [dieses Notebooks mit TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) finden Sie eine 'Aufgabe' - verwenden Sie diese als Ihre Aufgabe. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/10-GANs/README.md b/translations/de/lessons/4-ComputerVision/10-GANs/README.md index 6126f9be..65cad2d7 100644 --- a/translations/de/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/de/lessons/4-ComputerVision/10-GANs/README.md @@ -1,10 +1,19 @@ + # Generative Adversarial Networks -Im vorherigen Abschnitt haben wir über **generative Modelle** gelernt: Modelle, die neue Bilder erzeugen können, die den Bildern im Trainingsdatensatz ähnlich sind. VAE war ein gutes Beispiel für ein generatives Modell. +Im vorherigen Abschnitt haben wir über **generative Modelle** gelernt: Modelle, die neue Bilder erzeugen können, die den Bildern im Trainingsdatensatz ähneln. VAE war ein gutes Beispiel für ein generatives Modell. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Wenn wir jedoch versuchen, etwas wirklich Sinnvolles zu generieren, wie ein Gemälde in angemessener Auflösung, mit VAE, werden wir feststellen, dass das Training nicht gut konvergiert. Für diesen Anwendungsfall sollten wir über eine andere Architektur lernen, die speziell auf generative Modelle abzielt - **Generative Adversarial Networks**, oder GANs. +Wenn wir jedoch versuchen, etwas wirklich Bedeutungsvolles zu generieren, wie ein Gemälde in vernünftiger Auflösung, werden wir feststellen, dass das Training mit VAE nicht gut konvergiert. Für diesen Anwendungsfall sollten wir eine andere Architektur kennenlernen, die speziell auf generative Modelle ausgerichtet ist - **Generative Adversarial Networks**, oder GANs. Die Hauptidee eines GANs besteht darin, zwei neuronale Netzwerke zu haben, die gegeneinander trainiert werden: @@ -12,90 +21,90 @@ Die Hauptidee eines GANs besteht darin, zwei neuronale Netzwerke zu haben, die g > Bild von [Dmitry Soshnikov](http://soshnikov.com) -> ✅ Ein kleines Vokabular: -> * **Generator** ist ein Netzwerk, das einen zufälligen Vektor nimmt und als Ergebnis das Bild erzeugt -> * **Discriminator** ist ein Netzwerk, das ein Bild nimmt und feststellen sollte, ob es sich um ein echtes Bild (aus dem Trainingsdatensatz) handelt oder ob es von einem Generator erzeugt wurde. Es ist im Wesentlichen ein Bildklassifizierer. +> ✅ Ein bisschen Vokabular: +> * **Generator** ist ein Netzwerk, das einen zufälligen Vektor nimmt und daraus ein Bild erzeugt. +> * **Discriminator** ist ein Netzwerk, das ein Bild nimmt und entscheiden soll, ob es sich um ein echtes Bild (aus dem Trainingsdatensatz) oder ein vom Generator erzeugtes Bild handelt. Es ist im Wesentlichen ein Bildklassifikator. ### Discriminator -Die Architektur des Discriminators unterscheidet sich nicht von einem gewöhnlichen Bildklassifizierungsnetzwerk. Im einfachsten Fall kann es ein vollständig verbundener Klassifizierer sein, aber höchstwahrscheinlich wird es ein [konvolutionales Netzwerk](../07-ConvNets/README.md) sein. +Die Architektur des Discriminators unterscheidet sich nicht von einem gewöhnlichen Bildklassifikationsnetzwerk. Im einfachsten Fall kann es ein vollständig verbundenes Klassifikationsnetzwerk sein, aber höchstwahrscheinlich wird es ein [Convolutional Network](../07-ConvNets/README.md) sein. -> ✅ Ein auf konvolutionalen Netzwerken basierendes GAN wird als [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) bezeichnet. +> ✅ Ein GAN, das auf Convolutional Networks basiert, wird als [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) bezeichnet. -Ein CNN-Discriminator besteht aus den folgenden Schichten: mehreren Faltungen+Pooling (mit abnehmender räumlicher Größe) und einer oder mehreren vollständig verbundenen Schichten, um den "Merkmalsvektor" zu erhalten, und einem endgültigen binären Klassifizierer. +Ein CNN-Discriminator besteht aus den folgenden Schichten: mehreren Convolutions+Poolings (mit abnehmender räumlicher Größe) und einer oder mehreren vollständig verbundenen Schichten, um einen "Feature-Vektor" zu erhalten, sowie einem abschließenden binären Klassifikator. -> ✅ Ein 'Pooling' in diesem Kontext ist eine Technik, die die Größe des Bildes reduziert. "Pooling-Schichten reduzieren die Dimensionen der Daten, indem sie die Ausgaben von Neuronengruppen in einer Schicht in ein einzelnes Neuron in der nächsten Schicht kombinieren." - [Quelle](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ Ein 'Pooling' in diesem Kontext ist eine Technik, die die Größe des Bildes reduziert. "Pooling-Schichten reduzieren die Dimensionen der Daten, indem sie die Ausgaben von Neuronenclustern in einer Schicht zu einem einzelnen Neuron in der nächsten Schicht kombinieren." - [Quelle](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### Generator -Ein Generator ist etwas kniffliger. Man kann ihn als umgekehrten Discriminator betrachten. Ausgehend von einem latenten Vektor (anstatt eines Merkmalsvektors) hat er eine vollständig verbundene Schicht, um ihn in die erforderliche Größe/Form zu konvertieren, gefolgt von Dekonvolutionen+Hochskalierung. Dies ähnelt dem *Decoder*-Teil eines [Autoencoders](../09-Autoencoders/README.md). +Ein Generator ist etwas komplizierter. Man kann ihn als umgekehrten Discriminator betrachten. Ausgehend von einem latenten Vektor (anstelle eines Feature-Vektors) hat er eine vollständig verbundene Schicht, um ihn in die erforderliche Größe/Form umzuwandeln, gefolgt von Deconvolutions+Upscaling. Dies ähnelt dem *Decoder*-Teil eines [Autoencoders](../09-Autoencoders/README.md). -> ✅ Da die Faltungsschicht als linearer Filter implementiert ist, der das Bild durchläuft, ist die Dekonvolution im Wesentlichen ähnlich wie die Faltung und kann mit derselben Schichtlogik implementiert werden. +> ✅ Da die Convolution-Schicht als linearer Filter implementiert ist, der das Bild durchläuft, ist Deconvolution im Wesentlichen ähnlich wie Convolution und kann mit derselben Schichtlogik implementiert werden. > Bild von [Dmitry Soshnikov](http://soshnikov.com) -### Training des GAN +### Training des GANs GANs werden als **adversarial** bezeichnet, weil es einen ständigen Wettbewerb zwischen dem Generator und dem Discriminator gibt. Während dieses Wettbewerbs verbessern sich sowohl der Generator als auch der Discriminator, sodass das Netzwerk lernt, immer bessere Bilder zu erzeugen. Das Training erfolgt in zwei Phasen: -* **Training des Discriminators**. Diese Aufgabe ist ziemlich einfach: Wir erzeugen eine Charge von Bildern mit dem Generator, kennzeichnen sie mit 0, was für ein gefälschtes Bild steht, und nehmen eine Charge von Bildern aus dem Eingabedatensatz (mit dem Label 1, echtes Bild). Wir erhalten einen *Discriminator-Verlust* und führen die Rückpropagation durch. -* **Training des Generators**. Dies ist etwas kniffliger, da wir den erwarteten Ausgang für den Generator nicht direkt kennen. Wir nehmen das gesamte GAN-Netzwerk, das aus einem Generator gefolgt von einem Discriminator besteht, füttern es mit einigen zufälligen Vektoren und erwarten, dass das Ergebnis 1 ist (entsprechend echten Bildern). Dann frieren wir die Parameter des Discriminators ein (wir möchten nicht, dass er in diesem Schritt trainiert wird) und führen die Rückpropagation durch. +* **Training des Discriminators**. Diese Aufgabe ist ziemlich einfach: Wir generieren eine Charge von Bildern mit dem Generator, kennzeichnen sie mit 0 (was für ein gefälschtes Bild steht), und nehmen eine Charge von Bildern aus dem Eingabedatensatz (mit dem Label 1, echtes Bild). Wir erhalten einen *Discriminator Loss* und führen Backpropagation durch. +* **Training des Generators**. Dies ist etwas komplizierter, da wir die erwartete Ausgabe für den Generator nicht direkt kennen. Wir nehmen das gesamte GAN-Netzwerk, das aus einem Generator und einem Discriminator besteht, füttern es mit zufälligen Vektoren und erwarten, dass das Ergebnis 1 ist (entsprechend echten Bildern). Dann frieren wir die Parameter des Discriminators ein (wir wollen ihn in diesem Schritt nicht trainieren) und führen Backpropagation durch. -Während dieses Prozesses sinken die Verluste von sowohl Generator als auch Discriminator nicht signifikant. In der idealen Situation sollten sie oszillieren, was bedeutet, dass beide Netzwerke ihre Leistung verbessern. +Während dieses Prozesses sinken die Verluste des Generators und des Discriminators nicht signifikant. Im Idealfall sollten sie oszillieren, was darauf hinweist, dass beide Netzwerke ihre Leistung verbessern. ## ✍️ Übungen: GANs -* [GAN-Notebook in TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [GAN-Notebook in PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [GAN Notebook in TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook in PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) ### Probleme beim Training von GANs -Es ist bekannt, dass GANs besonders schwierig zu trainieren sind. Hier sind einige Probleme: +GANs sind dafür bekannt, besonders schwierig zu trainieren zu sein. Hier sind einige Probleme: -* **Mode Collapse**. Mit diesem Begriff meinen wir, dass der Generator lernt, ein erfolgreiches Bild zu erzeugen, das den Discriminator täuscht, und nicht eine Vielzahl unterschiedlicher Bilder. -* **Empfindlichkeit gegenüber Hyperparametern**. Oft sieht man, dass ein GAN überhaupt nicht konvergiert, und dann plötzlich der Lernrate sinkt, was zur Konvergenz führt. -* Den **Ausgleich** zwischen Generator und Discriminator halten. In vielen Fällen kann der Discriminator-Verlust relativ schnell auf null sinken, was dazu führt, dass der Generator nicht weiter trainiert werden kann. Um dies zu überwinden, können wir versuchen, unterschiedliche Lernraten für den Generator und den Discriminator festzulegen oder das Training des Discriminators zu überspringen, wenn der Verlust bereits zu niedrig ist. -* Training für **hohe Auflösung**. Dies spiegelt dasselbe Problem wie bei Autoencodern wider; dieses Problem wird ausgelöst, weil das Rekonstruieren zu vieler Schichten eines konvolutionalen Netzwerks zu Artefakten führt. Dieses Problem wird typischerweise mit dem sogenannten **progressiven Wachsen** gelöst, bei dem zunächst einige Schichten mit niedrig aufgelösten Bildern trainiert werden und dann Schichten "freigeschaltet" oder hinzugefügt werden. Eine andere Lösung wäre, zusätzliche Verbindungen zwischen den Schichten hinzuzufügen und mehrere Auflösungen gleichzeitig zu trainieren - siehe dazu das [Multi-Scale Gradient GANs-Papier](https://arxiv.org/abs/1903.06048) für weitere Details. +* **Mode Collapse**. Damit ist gemeint, dass der Generator lernt, ein erfolgreiches Bild zu erzeugen, das den Discriminator täuscht, aber keine Vielfalt an verschiedenen Bildern produziert. +* **Empfindlichkeit gegenüber Hyperparametern**. Oft kann man beobachten, dass ein GAN überhaupt nicht konvergiert, und dann plötzlich durch eine Verringerung der Lernrate zur Konvergenz gelangt. +* Das **Gleichgewicht** zwischen Generator und Discriminator aufrechterhalten. In vielen Fällen kann der Verlust des Discriminators relativ schnell auf null sinken, was dazu führt, dass der Generator nicht weiter trainiert werden kann. Um dies zu überwinden, können wir versuchen, unterschiedliche Lernraten für Generator und Discriminator festzulegen oder das Training des Discriminators zu überspringen, wenn der Verlust bereits zu niedrig ist. +* Training für **hohe Auflösung**. Ähnlich wie bei Autoencodern tritt dieses Problem auf, weil das Rekonstruieren zu vieler Schichten eines Convolutional Networks zu Artefakten führt. Dieses Problem wird typischerweise durch sogenanntes **progressives Wachstum** gelöst, bei dem zunächst einige Schichten auf niedrig aufgelösten Bildern trainiert werden und dann Schichten "freigeschaltet" oder hinzugefügt werden. Eine andere Lösung wäre, zusätzliche Verbindungen zwischen den Schichten hinzuzufügen und mehrere Auflösungen gleichzeitig zu trainieren - siehe dieses [Multi-Scale Gradient GANs Paper](https://arxiv.org/abs/1903.06048) für Details. -## Stiltransfer +## Style Transfer -GANs sind eine großartige Möglichkeit, künstlerische Bilder zu generieren. Eine weitere interessante Technik ist der sogenannte **Stiltransfer**, bei dem ein **Inhaltsbild** genommen und in einem anderen Stil neu gezeichnet wird, indem Filter aus einem **Stilbild** angewendet werden. +GANs sind eine großartige Möglichkeit, künstlerische Bilder zu generieren. Eine weitere interessante Technik ist der sogenannte **Style Transfer**, bei dem ein **Inhaltsbild** genommen und in einem anderen Stil neu gezeichnet wird, indem Filter aus einem **Stilbild** angewendet werden. So funktioniert es: -* Wir beginnen mit einem Bild aus zufälligem Rauschen (oder mit einem Inhaltsbild, aber um es besser zu verstehen, ist es einfacher, mit zufälligem Rauschen zu beginnen) -* Unser Ziel wäre es, ein solches Bild zu erstellen, das sowohl dem Inhaltsbild als auch dem Stilbild nahekommt. Dies würde durch zwei Verlustfunktionen bestimmt: - - **Inhaltsverlust** wird basierend auf den Merkmalen berechnet, die von der CNN in einigen Schichten aus dem aktuellen Bild und dem Inhaltsbild extrahiert werden - - **Stilverlust** wird auf clevere Weise zwischen dem aktuellen Bild und dem Stilbild unter Verwendung von Gram-Matrizen berechnet (weitere Details im [Beispiel-Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) -* Um das Bild glatter zu machen und Rauschen zu entfernen, führen wir auch einen **Variationsverlust** ein, der die durchschnittliche Distanz zwischen benachbarten Pixeln berechnet -* Die Hauptoptimierungsschleife passt das aktuelle Bild unter Verwendung von Gradientenabstieg (oder einem anderen Optimierungsalgorithmus) an, um den Gesamtschaden zu minimieren, der eine gewichtete Summe aller drei Verluste ist. +* Wir beginnen mit einem zufälligen Rauschbild (oder mit einem Inhaltsbild, aber der Einfachheit halber ist es leichter, mit zufälligem Rauschen zu beginnen). +* Unser Ziel ist es, ein Bild zu erstellen, das sowohl dem Inhaltsbild als auch dem Stilbild nahekommt. Dies wird durch zwei Verlustfunktionen bestimmt: + - **Content Loss** wird basierend auf den Merkmalen berechnet, die von der CNN in einigen Schichten aus dem aktuellen Bild und dem Inhaltsbild extrahiert werden. + - **Style Loss** wird zwischen dem aktuellen Bild und dem Stilbild auf clevere Weise unter Verwendung von Gram-Matrizen berechnet (mehr Details im [Beispiel-Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Um das Bild glatter zu machen und Rauschen zu entfernen, führen wir auch einen **Variation Loss** ein, der den durchschnittlichen Abstand zwischen benachbarten Pixeln berechnet. +* Die Hauptoptimierungsschleife passt das aktuelle Bild mithilfe von Gradient Descent (oder einem anderen Optimierungsalgorithmus) an, um den Gesamtabstand zu minimieren, der eine gewichtete Summe aller drei Verluste ist. -## ✍️ Beispiel: [Stiltransfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ Beispiel: [Style Transfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Nachlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## Fazit -In dieser Lektion haben Sie über GANs gelernt und wie man sie trainiert. Sie haben auch über die speziellen Herausforderungen gelernt, mit denen dieser Typ von neuronalen Netzwerken konfrontiert sein kann, sowie über einige Strategien, um darüber hinwegzukommen. +In dieser Lektion haben Sie über GANs und deren Training gelernt. Sie haben auch die besonderen Herausforderungen kennengelernt, denen diese Art von neuronalen Netzwerken begegnen kann, und einige Strategien, wie man diese überwinden kann. ## 🚀 Herausforderung -Durchlaufen Sie das [Stiltransfer-Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) mit Ihren eigenen Bildern. +Arbeiten Sie das [Style Transfer Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) mit Ihren eigenen Bildern durch. -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium -Zur Referenz lesen Sie mehr über GANs in diesen Ressourcen: +Zur Vertiefung lesen Sie mehr über GANs in diesen Ressourcen: -* Marco Pasini, [10 Lektionen, die ich beim Training von GANs für ein Jahr gelernt habe](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), eine *de facto* GAN-Architektur, die in Betracht gezogen werden sollte -* [Erstellung generativer Kunst mit GANs auf Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) +* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), eine *de facto* GAN-Architektur, die man in Betracht ziehen sollte. +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) ## Aufgabe -Überarbeiten Sie eines der beiden Notebooks, die mit dieser Lektion verbunden sind, und trainieren Sie das GAN mit Ihren eigenen Bildern neu. Was können Sie erschaffen? +Besuchen Sie eines der beiden Notebooks zu dieser Lektion erneut und trainieren Sie das GAN mit Ihren eigenen Bildern. Was können Sie erschaffen? **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md index 62c2ee8e..edc9f285 100644 --- a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,63 +1,74 @@ -## Objekt Erkennung + +# Objekterkennung -Die Bildklassifizierungsmodelle, mit denen wir bisher gearbeitet haben, nahmen ein Bild und lieferten ein kategoriales Ergebnis, wie die Klasse 'Zahl' in einem MNIST-Problem. In vielen Fällen wollen wir jedoch nicht nur wissen, dass ein Bild Objekte darstellt - wir wollen in der Lage sein, ihren genauen Standort zu bestimmen. Genau das ist der Punkt der **Objekt Erkennung**. +Die Bildklassifikationsmodelle, die wir bisher behandelt haben, nahmen ein Bild und lieferten ein kategorisches Ergebnis, wie beispielsweise die Klasse "Zahl" in einem MNIST-Problem. In vielen Fällen möchten wir jedoch nicht nur wissen, dass ein Bild Objekte darstellt – wir möchten auch deren genaue Position bestimmen können. Genau darum geht es bei der **Objekterkennung**. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) -![Objekt Erkennung](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.de.png) +![Objekterkennung](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) > Bild von [YOLO v2 Webseite](https://pjreddie.com/darknet/yolov2/) -## Ein Naiver Ansatz zur Objekt Erkennung +## Ein naiver Ansatz zur Objekterkennung -Angenommen, wir wollten eine Katze auf einem Bild finden, ein sehr naiver Ansatz zur Objekt Erkennung wäre folgender: +Angenommen, wir wollten eine Katze auf einem Bild finden, dann wäre ein sehr naiver Ansatz zur Objekterkennung folgender: -1. Zerlegen Sie das Bild in eine Anzahl von Kacheln. -2. Führen Sie die Bildklassifizierung auf jeder Kachel durch. -3. Die Kacheln, die eine ausreichend hohe Aktivierung ergeben, können als solche betrachtet werden, die das betreffende Objekt enthalten. +1. Zerlege das Bild in eine Anzahl von Kacheln. +2. Führe eine Bildklassifikation auf jeder Kachel durch. +3. Die Kacheln, die eine ausreichend hohe Aktivierung ergeben, können als die Kacheln betrachtet werden, die das gesuchte Objekt enthalten. -![Naive Objekt Erkennung](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.de.png) +![Naive Objekterkennung](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) -> *Bild aus [Übungsnotizbuch](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* +> *Bild aus [Übungsnotebook](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* -Dieser Ansatz ist jedoch alles andere als ideal, da er es dem Algorithmus nur ermöglicht, die Begrenzungsbox des Objekts sehr ungenau zu lokalisieren. Für eine genauere Lokalisierung müssen wir eine Art **Regression** durchführen, um die Koordinaten der Begrenzungsrahmen vorherzusagen - und dafür benötigen wir spezifische Datensätze. +Dieser Ansatz ist jedoch alles andere als ideal, da er es dem Algorithmus nur erlaubt, die Begrenzungsbox des Objekts sehr ungenau zu lokalisieren. Für eine präzisere Lokalisierung müssen wir eine Art **Regression** durchführen, um die Koordinaten der Begrenzungsboxen vorherzusagen – und dafür benötigen wir spezifische Datensätze. -## Regression zur Objekt Erkennung +## Regression für Objekterkennung -[Dieser Blogbeitrag](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) bietet eine großartige sanfte Einführung in die Erkennung von Formen. +[Dieser Blogbeitrag](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) bietet eine großartige Einführung in die Erkennung von Formen. -## Datensätze zur Objekt Erkennung +## Datensätze für Objekterkennung -Sie könnten auf die folgenden Datensätze für diese Aufgabe stoßen: +Für diese Aufgabe könnten Sie auf die folgenden Datensätze stoßen: -* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 Klassen -* [COCO](http://cocodataset.org/#home) - Gemeinsame Objekte im Kontext. 80 Klassen, Begrenzungsrahmen und Segmentierungs-Masken +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) – 20 Klassen +* [COCO](http://cocodataset.org/#home) – Common Objects in Context. 80 Klassen, Begrenzungsboxen und Segmentierungsmasken -![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.de.jpg) +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) -## Metriken zur Objekt Erkennung +## Metriken für Objekterkennung -### Schnittmenge über Vereinigung +### Intersection over Union -Während es bei der Bildklassifizierung einfach ist, zu messen, wie gut der Algorithmus funktioniert, müssen wir bei der Objekt Erkennung sowohl die Richtigkeit der Klasse als auch die Präzision des abgeleiteten Begrenzungsrahmenstandorts messen. Für letzteres verwenden wir die sogenannte **Schnittmenge über Vereinigung** (IoU), die misst, wie gut zwei Boxen (oder zwei beliebige Bereiche) überlappen. +Während es bei der Bildklassifikation einfach ist, die Leistung des Algorithmus zu messen, müssen wir bei der Objekterkennung sowohl die Korrektheit der Klasse als auch die Präzision der vorhergesagten Begrenzungsbox-Position messen. Für Letzteres verwenden wir die sogenannte **Intersection over Union** (IoU), die misst, wie gut sich zwei Boxen (oder zwei beliebige Bereiche) überlappen. -![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.de.png) +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) > *Abbildung 2 aus [diesem ausgezeichneten Blogbeitrag über IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* -Die Idee ist einfach - wir teilen die Fläche der Schnittmenge zwischen zwei Figuren durch die Fläche ihrer Vereinigung. Für zwei identische Bereiche wäre IoU 1, während es für vollständig disjunkte Bereiche 0 sein würde. Ansonsten variiert es von 0 bis 1. Wir berücksichtigen typischerweise nur diejenigen Begrenzungsrahmen, für die IoU über einem bestimmten Wert liegt. +Die Idee ist einfach – wir teilen die Fläche der Überschneidung zwischen zwei Figuren durch die Fläche ihrer Vereinigung. Für zwei identische Flächen wäre IoU 1, während es für vollständig getrennte Flächen 0 wäre. Ansonsten variiert es zwischen 0 und 1. Wir betrachten typischerweise nur die Begrenzungsboxen, für die IoU über einem bestimmten Wert liegt. ### Durchschnittliche Präzision -Angenommen, wir wollen messen, wie gut eine gegebene Klasse von Objekten $C$ erkannt wird. Um dies zu messen, verwenden wir **Durchschnittliche Präzisions**-Metriken, die wie folgt berechnet werden: +Angenommen, wir möchten messen, wie gut eine bestimmte Objektklasse $C$ erkannt wird. Um dies zu messen, verwenden wir die **Durchschnittliche Präzision** (Average Precision, AP), die wie folgt berechnet wird: -1. Betrachten Sie die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt. -2. Je nach Schwellenwert erhalten wir mehr oder weniger Objekte, die im Bild erkannt werden, und unterschiedliche Werte für Präzision und Rückruf. -3. Die Kurve sieht folgendermaßen aus: +1. Betrachte die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt. +2. Abhängig vom Schwellenwert werden mehr oder weniger Objekte im Bild erkannt, und es ergeben sich unterschiedliche Werte für Präzision und Recall. +3. Die Kurve sieht wie folgt aus: + + > *Bild aus [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* -Die durchschnittliche Präzision für eine gegebene Klasse $C$ ist die Fläche unter dieser Kurve. Genauer gesagt, wird die Recall-Achse typischerweise in 10 Teile unterteilt, und die Präzision wird über all diese Punkte gemittelt: +Die durchschnittliche Präzision für eine gegebene Klasse $C$ ist die Fläche unter dieser Kurve. Genauer gesagt wird die Recall-Achse typischerweise in 10 Teile unterteilt, und die Präzision wird über alle diese Punkte gemittelt: $$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) @@ -65,108 +76,113 @@ $$ ### AP und IoU -Wir werden nur diejenigen Erkennungen berücksichtigen, für die IoU über einem bestimmten Wert liegt. Zum Beispiel wird im PASCAL VOC-Datensatz typischerweise $\mbox{IoU-Schwellenwert} = 0.5$ angenommen, während im COCO AP für unterschiedliche Werte von $\mbox{IoU-Schwellenwert}$ gemessen wird. +Wir betrachten nur die Erkennungen, für die IoU über einem bestimmten Wert liegt. Beispielsweise wird im PASCAL VOC-Datensatz typischerweise $\mbox{IoU Threshold} = 0.5$ angenommen, während im COCO-Datensatz AP für verschiedene Werte von $\mbox{IoU Threshold}$ gemessen wird. -### Durchschnittliche Durchschnittliche Präzision - mAP + -Die Hauptmetrik für die Objekt Erkennung wird **Durchschnittliche Durchschnittliche Präzision** oder **mAP** genannt. Es ist der Wert der Durchschnittlichen Präzision, gemittelt über alle Objektklassen und manchmal auch über $\mbox{IoU-Schwellenwert}$. Im Detail wird der Prozess zur Berechnung von **mAP** in -[diesem Blogbeitrag](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) beschrieben, und auch [hier mit Codebeispielen](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). +> *Bild aus [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* -## Verschiedene Ansätze zur Objekt Erkennung +### Mittlere Durchschnittliche Präzision – mAP -Es gibt zwei breite Klassen von Algorithmen zur Objekt Erkennung: +Die Hauptmetrik für die Objekterkennung wird **Mittlere Durchschnittliche Präzision** (Mean Average Precision, mAP) genannt. Sie ist der Wert der Durchschnittlichen Präzision, gemittelt über alle Objektklassen und manchmal auch über $\mbox{IoU Threshold}$. Der Prozess zur Berechnung von **mAP** wird ausführlich beschrieben +[in diesem Blogbeitrag](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)) und auch [hier mit Codebeispielen](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). -* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). Die Hauptidee besteht darin, **Regionen von Interessen** (ROI) zu generieren und CNN darüber laufen zu lassen, um maximale Aktivierung zu suchen. Es ist ein wenig ähnlich wie der naive Ansatz, mit der Ausnahme, dass ROIs auf eine cleverere Weise generiert werden. Einer der größten Nachteile solcher Methoden ist, dass sie langsam sind, da wir viele Durchläufe des CNN-Klassifikators über das Bild benötigen. -* **Einmalige** (YOLO, SSD, RetinaNet) Methoden. In diesen Architekturen entwerfen wir das Netzwerk, um sowohl Klassen als auch ROIs in einem Durchgang vorherzusagen. +## Verschiedene Ansätze zur Objekterkennung + +Es gibt zwei große Klassen von Objekterkennungsalgorithmen: + +* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). Die Hauptidee ist, **Regions of Interest** (ROI) zu generieren und CNN darüber laufen zu lassen, um maximale Aktivierung zu suchen. Es ist ein bisschen ähnlich wie der naive Ansatz, mit dem Unterschied, dass ROIs auf eine intelligentere Weise generiert werden. Ein Hauptnachteil solcher Methoden ist, dass sie langsam sind, da viele Durchläufe des CNN-Klassifikators über das Bild erforderlich sind. +* **One-pass** (YOLO, SSD, RetinaNet) Methoden. In diesen Architekturen wird das Netzwerk so gestaltet, dass es sowohl Klassen als auch ROIs in einem Durchgang vorhersagt. ### R-CNN: Region-Based CNN -[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) verwendet [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf), um eine hierarchische Struktur von ROI-Regionen zu generieren, die dann durch CNN-Feature-Extraktoren und SVM-Klassifizierer geleitet werden, um die Objektklasse zu bestimmen, und durch lineare Regression, um die *Begrenzungsrahmen*-Koordinaten zu bestimmen. [Offizielles Papier](https://arxiv.org/pdf/1506.01497v1.pdf) +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) verwendet [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf), um eine hierarchische Struktur von ROI-Regionen zu generieren, die dann durch CNN-Feature-Extraktoren und SVM-Klassifikatoren geleitet werden, um die Objektklasse zu bestimmen, und durch lineare Regression, um die *Koordinaten der Begrenzungsbox* zu bestimmen. [Offizielles Paper](https://arxiv.org/pdf/1506.01497v1.pdf) -![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.de.png) +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) > *Bild von van de Sande et al. ICCV’11* -![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.de.png) +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) > *Bilder aus [diesem Blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* -### F-RCNN - Fast R-CNN +### F-RCNN – Fast R-CNN -Dieser Ansatz ähnelt R-CNN, aber die Regionen werden definiert, nachdem die Faltungsschichten angewendet wurden. +Dieser Ansatz ähnelt R-CNN, aber die Regionen werden definiert, nachdem die Convolution-Schichten angewendet wurden. -![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.de.png) +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) -> Bild aus [dem offiziellen Papier](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 +> Bild aus [dem offiziellen Paper](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 ### Faster R-CNN -Die Hauptidee dieses Ansatzes ist es, ein neuronales Netzwerk zu verwenden, um ROIs vorherzusagen - so genannte *Region Proposal Network*. [Papier](https://arxiv.org/pdf/1506.01497.pdf), 2016 +Die Hauptidee dieses Ansatzes ist es, ein neuronales Netzwerk zu verwenden, um ROIs vorherzusagen – das sogenannte *Region Proposal Network*. [Paper](https://arxiv.org/pdf/1506.01497.pdf), 2016 -![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.de.png) +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) -> Bild aus [dem offiziellen Papier](https://arxiv.org/pdf/1506.01497.pdf) +> Bild aus [dem offiziellen Paper](https://arxiv.org/pdf/1506.01497.pdf) ### R-FCN: Region-Based Fully Convolutional Network Dieser Algorithmus ist sogar schneller als Faster R-CNN. Die Hauptidee ist folgende: -1. Wir extrahieren Merkmale mit ResNet-101. -2. Merkmale werden durch **Positionssensitives Score Map** verarbeitet. Jedes Objekt aus $C$ Klassen wird in $k\times k$ Regionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen. -3. Für jedes Teil aus $k\times k$ Regionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimme wird ausgewählt. +1. Wir extrahieren Features mit ResNet-101. +2. Die Features werden durch **Position-Sensitive Score Map** verarbeitet. Jedes Objekt aus $C$ Klassen wird in $k\times k$ Regionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen. +3. Für jeden Teil aus den $k\times k$ Regionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimme wird ausgewählt. -![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.de.png) +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) -> Bild aus [offiziellen Papier](https://arxiv.org/abs/1605.06409) +> Bild aus [offiziellem Paper](https://arxiv.org/abs/1605.06409) -### YOLO - You Only Look Once +### YOLO – You Only Look Once -YOLO ist ein Echtzeit-Einmal-Algorithmus. Die Hauptidee ist folgende: +YOLO ist ein Echtzeit-Ein-Pass-Algorithmus. Die Hauptidee ist folgende: -* Das Bild wird in $S\times S$ Regionen unterteilt. -* Für jede Region sagt **CNN** $n$ mögliche Objekte, *Begrenzungsrahmen*-Koordinaten und *Konfidenz*=*Wahrscheinlichkeit* * IoU voraus. + * Das Bild wird in $S\times S$ Regionen unterteilt. + * Für jede Region sagt **CNN** $n$ mögliche Objekte, *Koordinaten der Begrenzungsbox* und *Confidence*=*Wahrscheinlichkeit* * IoU voraus. -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.de.png) -> Bild aus [offiziellen Papier](https://arxiv.org/abs/1506.02640) + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) + +> Bild aus [offiziellem Paper](https://arxiv.org/abs/1506.02640) ### Andere Algorithmen -* RetinaNet: [offizielles Papier](https://arxiv.org/abs/1708.02002) +* RetinaNet: [offizielles Paper](https://arxiv.org/abs/1708.02002) - [PyTorch-Implementierung in Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - [Keras-Implementierung](https://github.com/fizyr/keras-retinanet) - [Objekterkennung mit RetinaNet](https://keras.io/examples/vision/retinanet/) in Keras-Beispielen -* SSD (Single Shot Detector): [offizielles Papier](https://arxiv.org/abs/1512.02325) +* SSD (Single Shot Detector): [offizielles Paper](https://arxiv.org/abs/1512.02325) ## ✍️ Übungen: Objekterkennung -Setze dein Lernen im folgenden Notizbuch fort: +Setzen Sie Ihr Lernen im folgenden Notebook fort: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) ## Fazit -In dieser Lektion hast du eine rasante Tour durch die verschiedenen Möglichkeiten der Objekterkennung gemacht! +In dieser Lektion haben Sie einen Überblick über die verschiedenen Möglichkeiten zur Objekterkennung erhalten! ## 🚀 Herausforderung -Lies dir diese Artikel und Notizbücher über YOLO durch und probiere sie selbst aus. +Lesen Sie diese Artikel und Notebooks über YOLO und probieren Sie sie selbst aus: -* [Guter Blogbeitrag](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) der YOLO beschreibt - * [Offizielle Seite](https://pjreddie.com/darknet/yolo/) - * Yolo: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notizbuch](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notizbuch](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) +* [Guter Blogbeitrag](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) über YOLO + * [Offizielle Webseite](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Nach der Vorlesung Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) ## Überprüfung & Selbststudium * [Objekterkennung](https://tjmachinelearning.com/lectures/1718/obj/) von Nikhil Sardana -* [Ein guter Vergleich von Algorithmen zur Objekterkennung](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Überprüfung von Deep Learning-Algorithmen zur Objekterkennung](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [Eine Schritt-für-Schritt-Einführung in die grundlegenden Algorithmen zur Objekterkennung](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Implementierung von Faster R-CNN in Python zur Objekterkennung](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Ein guter Vergleich von Objekterkennungsalgorithmen](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Überblick über Deep-Learning-Algorithmen für Objekterkennung](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Eine Schritt-für-Schritt-Einführung in die grundlegenden Objekterkennungsalgorithmen](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementierung von Faster R-CNN in Python für Objekterkennung](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) ## [Aufgabe: Objekterkennung](lab/README.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index 578be184..ff33bbdf 100644 --- a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Kopfdetektion mit dem Hollywood Heads Dataset + +# Kopferkennung mit dem Hollywood Heads Dataset Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -Die Zählung der Anzahl von Personen im Videoüberwachungs-Kamerastream ist eine wichtige Aufgabe, die es uns ermöglicht, die Anzahl der Besucher in Geschäften, Stoßzeiten in einem Restaurant usw. zu schätzen. Um diese Aufgabe zu lösen, müssen wir in der Lage sein, menschliche Köpfe aus verschiedenen Blickwinkeln zu erkennen. Um ein Objekt-Erkennungsmodell zur Erkennung menschlicher Köpfe zu trainieren, können wir das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) verwenden. +Das Zählen der Anzahl von Personen in einem Videoüberwachungsstream ist eine wichtige Aufgabe, die es uns ermöglicht, die Anzahl der Besucher in Geschäften, Stoßzeiten in Restaurants usw. zu schätzen. Um diese Aufgabe zu lösen, müssen wir in der Lage sein, menschliche Köpfe aus verschiedenen Blickwinkeln zu erkennen. Um ein Objekterkennungsmodell zu trainieren, das menschliche Köpfe erkennt, können wir das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) verwenden. ## Das Dataset -Das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) enthält 369.846 menschliche Köpfe, die in 224.740 Filmframes aus Hollywood-Filmen annotiert sind. Es wird im [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) Format bereitgestellt, wobei für jedes Bild auch eine XML-Beschreibungsdatei vorhanden ist, die so aussieht: +Das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) enthält 369.846 menschliche Köpfe, die in 224.740 Filmframes aus Hollywood-Filmen annotiert sind. Es wird im [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC)-Format bereitgestellt, bei dem es zu jedem Bild auch eine XML-Beschreibungsdatei gibt, die so aussieht: ```xml @@ -48,19 +57,19 @@ Das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetectio ``` -In diesem Dataset gibt es nur eine Klasse von Objekten `head`, und für jeden Kopf erhältst du die Koordinaten des Begrenzungsrahmens. Du kannst XML mit Python-Bibliotheken parsen oder [diese Bibliothek](https://pypi.org/project/pascal-voc/) verwenden, um direkt mit dem PASCAL VOC-Format zu arbeiten. +In diesem Datensatz gibt es nur eine Objektklasse `head`, und für jeden Kopf erhält man die Koordinaten des Begrenzungsrahmens. Sie können XML mit Python-Bibliotheken analysieren oder [diese Bibliothek](https://pypi.org/project/pascal-voc/) verwenden, um direkt mit dem PASCAL VOC-Format zu arbeiten. ## Training der Objekterkennung -Du kannst ein Objekt-Erkennungsmodell auf eine der folgenden Arten trainieren: +Sie können ein Objekterkennungsmodell auf eine der folgenden Arten trainieren: -* Verwende [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) und dessen Python-API, um das Modell programmgesteuert in der Cloud zu trainieren. Die benutzerdefinierte Vision kann nicht mehr als einige hundert Bilder für das Training des Modells verwenden, daher musst du das Dataset möglicherweise einschränken. -* Verwende das Beispiel aus dem [Keras-Tutorial](https://keras.io/examples/vision/retinanet/), um das RetunaNet-Modell zu trainieren. -* Verwende das eingebaute Modul [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) in torchvision. +* Mit [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) und dessen Python-API, um das Modell programmgesteuert in der Cloud zu trainieren. Custom Vision kann jedoch nicht mehr als ein paar hundert Bilder für das Training des Modells verwenden, sodass Sie den Datensatz möglicherweise begrenzen müssen. +* Mit dem Beispiel aus dem [Keras-Tutorial](https://keras.io/examples/vision/retinanet/), um ein RetunaNet-Modell zu trainieren. +* Mit dem [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html)-Modul, das in torchvision integriert ist. ## Fazit -Die Objekterkennung ist eine Aufgabe, die in der Industrie häufig erforderlich ist. Während es einige Dienste gibt, die zur Durchführung der Objekterkennung verwendet werden können (wie [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), ist es wichtig zu verstehen, wie Objekterkennung funktioniert und in der Lage zu sein, eigene Modelle zu trainieren. +Die Objekterkennung ist eine Aufgabe, die in der Industrie häufig benötigt wird. Während es einige Dienste gibt, die zur Durchführung der Objekterkennung verwendet werden können (wie z. B. [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), ist es wichtig zu verstehen, wie Objekterkennung funktioniert, und in der Lage zu sein, eigene Modelle zu trainieren. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md index 4f9bb640..41253dfb 100644 --- a/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,13 +1,22 @@ + # Segmentierung -Wir haben zuvor über Objekterkennung gelernt, die es uns ermöglicht, Objekte im Bild zu lokalisieren, indem wir ihre *Umrandungsrahmen* vorhersagen. Für einige Aufgaben benötigen wir jedoch nicht nur Umrandungsrahmen, sondern auch eine genauere Lokalisierung der Objekte. Diese Aufgabe wird als **Segmentierung** bezeichnet. +Wir haben zuvor über Objekterkennung gelernt, die es uns ermöglicht, Objekte in einem Bild durch Vorhersage ihrer *Bounding Boxes* zu lokalisieren. Für einige Aufgaben benötigen wir jedoch nicht nur Bounding Boxes, sondern auch eine präzisere Objektlokalisierung. Diese Aufgabe nennt man **Segmentierung**. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -Segmentierung kann als **Pixelklassifikation** betrachtet werden, wobei für **jedes** Pixel des Bildes seine Klasse vorhergesagt werden muss (hintergrund ist eine der Klassen). Es gibt zwei Hauptalgorithmen für die Segmentierung: +Segmentierung kann als **Pixelklassifikation** betrachtet werden, bei der für **jeden** Pixel des Bildes seine Klasse vorhergesagt werden muss (*Hintergrund* ist dabei eine der Klassen). Es gibt zwei Hauptalgorithmen für die Segmentierung: -* **Semantische Segmentierung** gibt nur die Pixelklasse an und unterscheidet nicht zwischen verschiedenen Objekten derselben Klasse. -* **Instanzsegmentierung** unterteilt Klassen in verschiedene Instanzen. +* **Semantische Segmentierung** gibt nur die Klasse des Pixels an und unterscheidet nicht zwischen verschiedenen Objekten derselben Klasse. +* **Instanzsegmentierung** teilt Klassen in verschiedene Instanzen auf. Bei der Instanzsegmentierung sind diese Schafe unterschiedliche Objekte, während bei der semantischen Segmentierung alle Schafe durch eine Klasse repräsentiert werden. @@ -15,55 +24,55 @@ Bei der Instanzsegmentierung sind diese Schafe unterschiedliche Objekte, währen > Bild aus [diesem Blogbeitrag](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Es gibt verschiedene neuronale Architekturen für die Segmentierung, aber sie haben alle die gleiche Struktur. In gewisser Weise ähnelt es dem Autoencoder, den Sie zuvor gelernt haben, aber anstatt das ursprüngliche Bild zu dekonstruierten, besteht unser Ziel darin, eine **Maske** zu dekodieren. Daher hat ein Segmentierungsnetzwerk die folgenden Teile: +Es gibt verschiedene neuronale Architekturen für die Segmentierung, aber sie haben alle dieselbe Struktur. In gewisser Weise ähnelt sie dem Autoencoder, den Sie zuvor kennengelernt haben, aber anstatt das ursprüngliche Bild zu rekonstruieren, ist unser Ziel, eine **Maske** zu rekonstruieren. Eine Segmentierungsnetzwerk hat daher folgende Bestandteile: -* **Encoder** extrahiert Merkmale aus dem Eingangsbild. -* **Decoder** transformiert diese Merkmale in das **Maskenbild**, mit der gleichen Größe und Anzahl von Kanälen, die der Anzahl der Klassen entsprechen. +* **Encoder** extrahiert Merkmale aus dem Eingabebild. +* **Decoder** transformiert diese Merkmale in das **Maskenbild**, mit derselben Größe und einer Anzahl von Kanälen, die der Anzahl der Klassen entspricht. -> Bild aus [dieser Veröffentlichung](https://arxiv.org/pdf/2001.05566.pdf) +> Bild aus [dieser Publikation](https://arxiv.org/pdf/2001.05566.pdf) -Besonders erwähnenswert ist die Verlustfunktion, die für die Segmentierung verwendet wird. Bei klassischen Autoencodern müssen wir die Ähnlichkeit zwischen zwei Bildern messen, und wir können dazu den mittleren quadratischen Fehler (MSE) verwenden. In der Segmentierung repräsentiert jedes Pixel im Zielmaskenbild die Klassennummer (one-hot-encoded entlang der dritten Dimension), sodass wir Verlustfunktionen verwenden müssen, die spezifisch für die Klassifikation sind - Kreuzentropieverlust, gemittelt über alle Pixel. Wenn die Maske binär ist, wird **binärer Kreuzentropieverlust** (BCE) verwendet. +Besonders erwähnenswert ist die Verlustfunktion, die für die Segmentierung verwendet wird. Bei klassischen Autoencodern müssen wir die Ähnlichkeit zwischen zwei Bildern messen, wofür wir den mittleren quadratischen Fehler (MSE) verwenden können. Bei der Segmentierung repräsentiert jeder Pixel im Zielmaskenbild die Klassennummer (one-hot-encoded entlang der dritten Dimension), daher müssen wir Verlustfunktionen verwenden, die speziell für Klassifikationen geeignet sind - Kreuzentropieverlust, gemittelt über alle Pixel. Wenn die Maske binär ist, wird der **binäre Kreuzentropieverlust** (BCE) verwendet. -> ✅ One-Hot-Encoding ist eine Methode, um ein Klassenlabel in einen Vektor der Länge zu kodieren, die der Anzahl der Klassen entspricht. Schauen Sie sich [diesen Artikel](https://datagy.io/sklearn-one-hot-encode/) zu dieser Technik an. +> ✅ One-Hot-Encoding ist eine Methode, um eine Klassenbezeichnung in einen Vektor mit einer Länge zu kodieren, die der Anzahl der Klassen entspricht. Schauen Sie sich [diesen Artikel](https://datagy.io/sklearn-one-hot-encode/) zu dieser Technik an. ## Segmentierung in der medizinischen Bildgebung -In dieser Lektion werden wir die Segmentierung in Aktion sehen, indem wir das Netzwerk trainieren, um menschliche Nävi (auch als Muttermale bekannt) auf medizinischen Bildern zu erkennen. Wir werden die PH2 Datenbank von Dermatoskopiebildern als Bildquelle verwenden. Dieses Dataset enthält 200 Bilder von drei Klassen: typischer Nevus, atypischer Nevus und Melanom. Alle Bilder enthalten auch eine entsprechende **Maske**, die den Nevus umreißt. +In dieser Lektion werden wir die Segmentierung in Aktion sehen, indem wir ein Netzwerk trainieren, um menschliche Nävi (auch bekannt als Muttermale) auf medizinischen Bildern zu erkennen. Wir verwenden die PH2-Datenbank mit Dermatoskopiebildern als Bildquelle. Dieses Datenset enthält 200 Bilder von drei Klassen: typischer Nävus, atypischer Nävus und Melanom. Alle Bilder enthalten auch eine entsprechende **Maske**, die den Nävus umreißt. -> ✅ Diese Technik ist besonders geeignet für diese Art der medizinischen Bildgebung, aber welche anderen realen Anwendungen könnten Sie sich vorstellen? +> ✅ Diese Technik ist besonders geeignet für diese Art der medizinischen Bildgebung, aber welche anderen Anwendungen in der realen Welt könnten Sie sich vorstellen? navi -> Bild aus der PH2 Datenbank +> Bild aus der PH2-Datenbank -Wir werden ein Modell trainieren, um jeden Nevus von seinem Hintergrund zu segmentieren. +Wir werden ein Modell trainieren, um jeden Nävus vom Hintergrund zu segmentieren. ## ✍️ Übungen: Semantische Segmentierung -Öffnen Sie die folgenden Notebooks, um mehr über verschiedene Architekturen der semantischen Segmentierung zu erfahren, mit ihnen zu üben und sie in Aktion zu sehen. +Öffnen Sie die untenstehenden Notebooks, um mehr über verschiedene Architekturen der semantischen Segmentierung zu erfahren, mit ihnen zu arbeiten und sie in Aktion zu sehen. * [Semantische Segmentierung Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) * [Semantische Segmentierung TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## Fazit -Segmentierung ist eine sehr leistungsfähige Technik für die Bildklassifikation, die über Umrandungsrahmen hinaus zur Klassifikation auf Pixel-Ebene übergeht. Sie ist eine Technik, die in der medizinischen Bildgebung und anderen Anwendungen verwendet wird. +Segmentierung ist eine sehr leistungsstarke Technik für die Bildklassifikation, die über Bounding Boxes hinausgeht und eine Klassifikation auf Pixelebene ermöglicht. Sie wird unter anderem in der medizinischen Bildgebung eingesetzt. ## 🚀 Herausforderung -Die Körpersegmentierung ist nur eine der häufigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Weitere wichtige Aufgaben sind **Skelettdetektion** und **Posenerkennung**. Probieren Sie die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) Bibliothek aus, um zu sehen, wie die Posenerkennung verwendet werden kann. +Die Segmentierung des Körpers ist nur eine der häufigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Andere wichtige Aufgaben umfassen **Skelett-Erkennung** und **Posenerkennung**. Probieren Sie die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)-Bibliothek aus, um zu sehen, wie Posenerkennung verwendet werden kann. -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Dieser [Wikipedia-Artikel](https://wikipedia.org/wiki/Image_segmentation) bietet einen guten Überblick über die verschiedenen Anwendungen dieser Technik. Lernen Sie selbst mehr über die Teilbereiche der Instanzsegmentierung und der panoptischen Segmentierung in diesem Forschungsfeld. +Dieser [Wikipedia-Artikel](https://wikipedia.org/wiki/Image_segmentation) bietet einen guten Überblick über die verschiedenen Anwendungen dieser Technik. Informieren Sie sich selbst über die Teilbereiche der Instanzsegmentierung und der Panoptischen Segmentierung in diesem Forschungsfeld. ## [Aufgabe](lab/README.md) -In diesem Labor versuchen Sie die **Segmentierung des menschlichen Körpers** mithilfe des [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle. +In diesem Labor versuchen Sie die **Segmentierung des menschlichen Körpers** mit dem [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 0936da41..38452536 100644 --- a/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ + # Segmentierung des menschlichen Körpers Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -In der Videoproduktion, zum Beispiel in Wettervorhersagen, müssen wir oft ein menschliches Bild aus der Kamera ausschneiden und es über andere Aufnahmen legen. Dies geschieht typischerweise mit **Chroma-Key**-Techniken, bei denen ein Mensch vor einem einfarbigen Hintergrund gefilmt wird, der dann entfernt wird. In diesem Labor werden wir ein neuronales Netzwerkmodell trainieren, um die menschliche Silhouette auszuschneiden. +In der Videoproduktion, beispielsweise bei Wettervorhersagen, müssen wir oft ein menschliches Bild aus der Kamera ausschneiden und es über anderes Filmmaterial legen. Dies wird typischerweise mit **Chroma-Key**-Techniken durchgeführt, bei denen eine Person vor einem einfarbigen Hintergrund gefilmt wird, der anschließend entfernt wird. In diesem Labor werden wir ein neuronales Netzwerk trainieren, um die Silhouette eines Menschen auszuschneiden. ## Der Datensatz -Wir werden den [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle verwenden. Laden Sie den Datensatz manuell von Kaggle herunter. +Wir verwenden den [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle. Laden Sie den Datensatz manuell von Kaggle herunter. -## Notebook starten +## Start-Notebook -Starten Sie das Labor, indem Sie [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) öffnen. +Beginnen Sie das Labor, indem Sie [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) öffnen. -## Fazit +## Erkenntnis -Die Segmentierung des Körpers ist nur eine der häufigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Weitere wichtige Aufgaben sind **Skelett-Erkennung** und **Pose-Erkennung**. Schauen Sie sich die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) Bibliothek an, um zu sehen, wie diese Aufgaben umgesetzt werden können. +Die Segmentierung des Körpers ist nur eine der gängigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Weitere wichtige Aufgaben umfassen **Skelett-Erkennung** und **Pose-Erkennung**. Schauen Sie sich die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)-Bibliothek an, um zu sehen, wie diese Aufgaben umgesetzt werden können. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/README.md b/translations/de/lessons/4-ComputerVision/README.md index 8f93448e..659c6e2f 100644 --- a/translations/de/lessons/4-ComputerVision/README.md +++ b/translations/de/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ + # Computer Vision -![Zusammenfassung der Inhalte zur Computer Vision in einem Doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.de.png) +![Zusammenfassung der Inhalte zu Computer Vision in einer Skizze](../../../../lessons/sketchnotes/ai-computervision.png) -In diesem Abschnitt werden wir lernen über: +In diesem Abschnitt lernen wir über: * [Einführung in Computer Vision und OpenCV](06-IntroCV/README.md) -* [Faltung neuronaler Netzwerke](07-ConvNets/README.md) -* [Vortrainierte Netzwerke und Transferlernen](08-TransferLearning/README.md) +* [Convolutional Neural Networks](07-ConvNets/README.md) +* [Vortrainierte Netzwerke und Transfer Learning](08-TransferLearning/README.md) * [Autoencoder](09-Autoencoders/README.md) * [Generative Adversarial Networks](10-GANs/README.md) * [Objekterkennung](11-ObjectDetection/README.md) * [Semantische Segmentierung](12-Segmentation/README.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/13-TextRep/README.md b/translations/de/lessons/5-NLP/13-TextRep/README.md index 2bb2d09e..93a7b0bc 100644 --- a/translations/de/lessons/5-NLP/13-TextRep/README.md +++ b/translations/de/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Text als Tensoren darstellen + +# Darstellung von Text als Tensoren -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) ## Textklassifikation -Im ersten Teil dieses Abschnitts konzentrieren wir uns auf die Aufgabe der **Textklassifikation**. Wir verwenden den [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) Datensatz, der Nachrichtenartikel wie die folgenden enthält: +Im ersten Teil dieses Abschnitts konzentrieren wir uns auf die Aufgabe der **Textklassifikation**. Wir verwenden das [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset)-Datenset, das Nachrichtenartikel wie den folgenden enthält: -* Kategorie: Sci/Tech -* Titel: Ky. Unternehmen gewinnt Zuschuss zur Untersuchung von Peptiden (AP) -* Text: AP - Ein Unternehmen, das von einem Chemieforscher an der Universität von Louisville gegründet wurde, hat einen Zuschuss erhalten, um... +* Kategorie: Wissenschaft/Technik +* Titel: Ky. Unternehmen erhält Zuschuss zur Erforschung von Peptiden (AP) +* Inhalt: AP - Ein Unternehmen, das von einem Chemieforscher der Universität von Louisville gegründet wurde, erhielt einen Zuschuss zur Entwicklung... -Unser Ziel wird es sein, den Nachrichtenartikel basierend auf dem Text in eine der Kategorien einzuordnen. +Unser Ziel wird es sein, die Nachricht basierend auf dem Text einer der Kategorien zuzuordnen. -## Text darstellen +## Darstellung von Text -Wenn wir Aufgaben der Verarbeitung natürlicher Sprache (NLP) mit neuronalen Netzwerken lösen wollen, benötigen wir eine Möglichkeit, Text als Tensoren darzustellen. Computer stellen bereits textuelle Zeichen als Zahlen dar, die auf Schriftarten auf Ihrem Bildschirm mithilfe von Kodierungen wie ASCII oder UTF-8 abgebildet werden. +Wenn wir Aufgaben der natürlichen Sprachverarbeitung (NLP) mit neuronalen Netzwerken lösen wollen, benötigen wir eine Methode, um Text als Tensoren darzustellen. Computer stellen Zeichen bereits als Zahlen dar, die mithilfe von Codierungen wie ASCII oder UTF-8 auf die Schriftarten auf Ihrem Bildschirm abgebildet werden. -Bild, das ein Diagramm zeigt, das ein Zeichen einer ASCII- und binären Darstellung zuordnet +Bild zeigt ein Diagramm, das ein Zeichen einer ASCII- und binären Darstellung zuordnet > [Bildquelle](https://www.seobility.net/en/wiki/ASCII) -Als Menschen verstehen wir, was jeder Buchstabe **darstellt**, und wie alle Zeichen zusammenkommen, um die Wörter eines Satzes zu bilden. Computer hingegen haben ein solches Verständnis nicht, und neuronale Netzwerke müssen die Bedeutung während des Trainings lernen. +Als Menschen verstehen wir, was jeder Buchstabe **repräsentiert** und wie alle Zeichen zusammenkommen, um die Wörter eines Satzes zu bilden. Computer hingegen haben von sich aus kein solches Verständnis, und ein neuronales Netzwerk muss die Bedeutung während des Trainings lernen. -Daher können wir verschiedene Ansätze zur Darstellung von Text verwenden: +Daher können wir verschiedene Ansätze verwenden, um Text darzustellen: -* **Zeichenebene Darstellung**, bei der wir Text darstellen, indem wir jedes Zeichen als eine Zahl behandeln. Angenommen, wir haben *C* verschiedene Zeichen in unserem Textkorpus, würde das Wort *Hallo* durch einen 5x*C* Tensor dargestellt. Jeder Buchstabe würde einer Tensor-Spalte in der One-Hot-Kodierung entsprechen. -* **Wortebene Darstellung**, bei der wir ein **Wörterbuch** aller Wörter in unserem Text erstellen und dann Wörter mithilfe von One-Hot-Kodierung darstellen. Dieser Ansatz ist in gewisser Weise besser, da jeder Buchstabe für sich genommen nicht viel Bedeutung hat, und indem wir somit höherwertige semantische Konzepte - Wörter - verwenden, vereinfachen wir die Aufgabe für das neuronale Netzwerk. Aufgrund der großen Wörterbuchgröße müssen wir jedoch mit hochdimensionalen spärlichen Tensoren umgehen. +* **Zeichenbasierte Darstellung**, bei der wir Text darstellen, indem wir jedes Zeichen als Zahl behandeln. Angenommen, wir haben *C* verschiedene Zeichen in unserem Textkorpus, dann würde das Wort *Hello* durch einen 5x*C*-Tensor dargestellt. Jedes Zeichen würde einer Spalte im Tensor in One-Hot-Codierung entsprechen. +* **Wortbasierte Darstellung**, bei der wir ein **Vokabular** aller Wörter in unserem Text erstellen und dann Wörter mithilfe von One-Hot-Codierung darstellen. Dieser Ansatz ist in gewisser Weise besser, da jedes Zeichen für sich genommen nicht viel Bedeutung hat. Durch die Verwendung höherer semantischer Konzepte – Wörter – vereinfachen wir die Aufgabe für das neuronale Netzwerk. Aufgrund der großen Wörterbuchgröße müssen wir jedoch mit hochdimensionalen, spärlichen Tensoren umgehen. -Unabhängig von der Darstellung müssen wir den Text zunächst in eine Sequenz von **Tokens** umwandeln, wobei ein Token entweder ein Zeichen, ein Wort oder manchmal sogar ein Teil eines Wortes ist. Dann wandeln wir das Token in eine Zahl um, typischerweise unter Verwendung eines **Wörterbuchs**, und diese Zahl kann über One-Hot-Kodierung in ein neuronales Netzwerk eingespeist werden. +Unabhängig von der Darstellung müssen wir den Text zunächst in eine Sequenz von **Tokens** umwandeln, wobei ein Token entweder ein Zeichen, ein Wort oder manchmal sogar ein Teil eines Wortes ist. Anschließend konvertieren wir das Token in eine Zahl, typischerweise mithilfe eines **Vokabulars**, und diese Zahl kann mithilfe von One-Hot-Codierung in ein neuronales Netzwerk eingespeist werden. ## N-Gramme -In der natürlichen Sprache kann die genaue Bedeutung von Wörtern nur im Kontext bestimmt werden. Zum Beispiel sind die Bedeutungen von *neuronales Netzwerk* und *Fischernetz* völlig unterschiedlich. Eine Möglichkeit, dies zu berücksichtigen, besteht darin, unser Modell auf Wortpaaren aufzubauen und Wortpaare als separate Wörterbuch-Token zu betrachten. Auf diese Weise wird der Satz *Ich gehe gerne angeln* durch die folgende Token-Sequenz dargestellt: *Ich gehe*, *gehe gerne*, *gerne angeln*. Das Problem mit diesem Ansatz ist, dass die Wörterbuchgröße erheblich wächst und Kombinationen wie *gehe angeln* und *gehe einkaufen* durch unterschiedliche Tokens dargestellt werden, die trotz des gleichen Verbs keine semantische Ähnlichkeit aufweisen. +In der natürlichen Sprache kann die genaue Bedeutung von Wörtern nur im Kontext bestimmt werden. Zum Beispiel haben *neuronales Netzwerk* und *Fischernetz* völlig unterschiedliche Bedeutungen. Eine Möglichkeit, dies zu berücksichtigen, besteht darin, unser Modell auf Wortpaaren aufzubauen und Wortpaare als separate Vokabular-Tokens zu betrachten. Auf diese Weise wird der Satz *Ich gehe gerne angeln* durch die folgende Sequenz von Tokens dargestellt: *Ich gehe*, *gehe gerne*, *gerne angeln*. Das Problem bei diesem Ansatz ist, dass die Wörterbuchgröße erheblich wächst und Kombinationen wie *gerne angeln* und *gerne einkaufen* durch unterschiedliche Tokens dargestellt werden, die trotz des gleichen Verbs keine semantische Ähnlichkeit teilen. -In einigen Fällen können wir auch Tri-Gramme - Kombinationen von drei Wörtern - in Betracht ziehen. Daher wird dieser Ansatz oft als **n-Gramme** bezeichnet. Es macht auch Sinn, n-Gramme mit der Zeichenebene Darstellung zu verwenden, wobei n-Gramme grob unterschiedlichen Silben entsprechen. +In einigen Fällen können wir auch Tri-Gramme – Kombinationen aus drei Wörtern – in Betracht ziehen. Daher wird dieser Ansatz oft als **n-Gramme** bezeichnet. Es macht auch Sinn, n-Gramme mit zeichenbasierter Darstellung zu verwenden, wobei n-Gramme in diesem Fall grob verschiedenen Silben entsprechen. ## Bag-of-Words und TF/IDF -Bei der Lösung von Aufgaben wie der Textklassifikation müssen wir in der Lage sein, Text durch einen festgelegten Vektor fester Größe darzustellen, den wir als Eingabe für den abschließenden dichten Klassifizierer verwenden. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, alle individuellen Wortdarstellungen zu kombinieren, z.B. indem wir sie addieren. Wenn wir die One-Hot-Kodierungen jedes Wortes addieren, erhalten wir einen Vektor von Frequenzen, der zeigt, wie oft jedes Wort im Text erscheint. Eine solche Textdarstellung wird als **Bag of Words** (BoW) bezeichnet. +Bei Aufgaben wie der Textklassifikation müssen wir in der Lage sein, Text durch einen festen Vektor darzustellen, den wir als Eingabe für den abschließenden dichten Klassifikator verwenden. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, alle einzelnen Wortdarstellungen zu kombinieren, z. B. indem wir sie addieren. Wenn wir die One-Hot-Codierungen jedes Wortes addieren, erhalten wir einen Frequenzvektor, der zeigt, wie oft jedes Wort im Text vorkommt. Eine solche Darstellung von Text wird als **Bag-of-Words** (BoW) bezeichnet. > Bild vom Autor -Ein BoW stellt im Wesentlichen dar, welche Wörter im Text erscheinen und in welchen Mengen, was tatsächlich ein guter Hinweis darauf sein kann, worum es im Text geht. Zum Beispiel enthält ein Nachrichtenartikel über Politik wahrscheinlich Wörter wie *Präsident* und *Land*, während eine wissenschaftliche Publikation etwas wie *Collider*, *entdeckt* usw. enthalten würde. Daher können Wortfrequenzen in vielen Fällen ein guter Indikator für den Textinhalt sein. +Ein BoW zeigt im Wesentlichen, welche Wörter im Text vorkommen und in welchen Mengen, was tatsächlich ein guter Hinweis darauf sein kann, worum es im Text geht. Ein Nachrichtenartikel über Politik enthält beispielsweise wahrscheinlich Wörter wie *Präsident* und *Land*, während eine wissenschaftliche Veröffentlichung Begriffe wie *Kollider*, *entdeckt* usw. enthalten könnte. Daher können Wortfrequenzen in vielen Fällen ein guter Indikator für den Textinhalt sein. -Das Problem mit BoW ist, dass bestimmte häufige Wörter, wie *und*, *ist* usw., in den meisten Texten erscheinen und die höchsten Frequenzen aufweisen, wodurch die Wörter, die wirklich wichtig sind, in den Hintergrund gedrängt werden. Wir können die Bedeutung dieser Wörter verringern, indem wir die Häufigkeit berücksichtigen, mit der Wörter in der gesamten Dokumentensammlung auftreten. Dies ist die Hauptidee hinter dem TF/IDF-Ansatz, der in den Notebooks, die zu dieser Lektion gehören, detaillierter behandelt wird. +Das Problem bei BoW ist, dass bestimmte häufige Wörter wie *und*, *ist* usw. in den meisten Texten vorkommen und die höchsten Frequenzen aufweisen, wodurch die wirklich wichtigen Wörter in den Hintergrund treten. Wir können die Bedeutung dieser Wörter verringern, indem wir die Häufigkeit berücksichtigen, mit der Wörter in der gesamten Dokumentensammlung vorkommen. Dies ist die Hauptidee hinter dem TF/IDF-Ansatz, der in den zu dieser Lektion gehörenden Notebooks ausführlicher behandelt wird. -Allerdings können keine dieser Ansätze die **Semantik** des Textes vollständig berücksichtigen. Wir benötigen leistungsfähigere Modelle neuronaler Netzwerke, um dies zu tun, was wir später in diesem Abschnitt besprechen werden. +Allerdings können keine dieser Ansätze die **Semantik** des Textes vollständig berücksichtigen. Dafür benötigen wir leistungsstärkere neuronale Netzwerkmodelle, die wir später in diesem Abschnitt besprechen werden. ## ✍️ Übungen: Textdarstellung Setzen Sie Ihr Lernen in den folgenden Notebooks fort: -* [Textdarstellung mit PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Textdarstellung mit PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) * [Textdarstellung mit TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## Fazit -Bis jetzt haben wir Techniken untersucht, die Frequenzgewichtungen für verschiedene Wörter hinzufügen können. Sie sind jedoch nicht in der Lage, Bedeutung oder Reihenfolge darzustellen. Wie der berühmte Linguist J. R. Firth 1935 sagte: "Die vollständige Bedeutung eines Wortes ist immer kontextabhängig, und kein Studium der Bedeutung, das vom Kontext getrennt ist, kann ernst genommen werden." Wir werden später im Kurs lernen, wie man kontextuelle Informationen aus Text mithilfe von Sprachmodellen erfasst. +Bisher haben wir Techniken untersucht, die Frequenzgewichte für verschiedene Wörter hinzufügen können. Sie sind jedoch nicht in der Lage, Bedeutung oder Reihenfolge darzustellen. Wie der berühmte Linguist J. R. Firth 1935 sagte: "Die vollständige Bedeutung eines Wortes ist immer kontextabhängig, und keine Untersuchung der Bedeutung ohne Kontext kann ernst genommen werden." Später im Kurs werden wir lernen, wie man kontextuelle Informationen aus Text mithilfe von Sprachmodellen erfasst. ## 🚀 Herausforderung -Versuchen Sie einige andere Übungen mit Bag-of-Words und verschiedenen Datenmodellen. Sie könnten inspiriert werden von diesem [Wettbewerb auf Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Probieren Sie einige andere Übungen mit Bag-of-Words und verschiedenen Datenmodellen aus. Vielleicht inspiriert Sie dieser [Wettbewerb auf Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). -## [Nach dem Vortrag Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium -Üben Sie Ihre Fähigkeiten mit Text-Embeddings und Bag-of-Words-Techniken auf [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Üben Sie Ihre Fähigkeiten mit Text-Embeddings und Bag-of-Words-Techniken auf [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste). ## [Aufgabe: Notebooks](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/13-TextRep/assignment.md b/translations/de/lessons/5-NLP/13-TextRep/assignment.md index 0dc07778..c0430ca0 100644 --- a/translations/de/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/de/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ + # Aufgabe: Notebooks -Verwenden Sie die mit dieser Lektion verbundenen Notebooks (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, möglicherweise einem von Kaggle, unter Angabe der Quelle. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse hervorzuheben. Probieren Sie einige innovative Datensätze aus, die überraschend sein könnten, wie [diesen über UFO-Sichtungen](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) von NUFORC. +Verwenden Sie die Notebooks, die zu dieser Lektion gehören (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz aus, möglicherweise einem von Kaggle, unter Angabe der Quelle. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse hervorzuheben. Probieren Sie einige innovative Datensätze aus, die überraschend sein könnten, wie zum Beispiel [diesen über UFO-Sichtungen](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) von NUFORC. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/14-Embeddings/README.md b/translations/de/lessons/5-NLP/14-Embeddings/README.md index 3f2e0350..d987f7c8 100644 --- a/translations/de/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/de/lessons/5-NLP/14-Embeddings/README.md @@ -1,16 +1,25 @@ + # Einbettungen -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -Beim Training von Klassifikatoren, die auf BoW oder TF/IDF basieren, haben wir mit hochdimensionalen Bag-of-Words-Vektoren mit einer Länge von `vocab_size` gearbeitet und explizit von niedrigdimensionalen positionsbasierten Repräsentationsvektoren in spärliche One-Hot-Repräsentationen umgewandelt. Diese One-Hot-Repräsentation ist jedoch nicht speichereffizient. Darüber hinaus wird jedes Wort unabhängig voneinander behandelt, d.h. One-Hot-kodierte Vektoren drücken keine semantische Ähnlichkeit zwischen Wörtern aus. +Beim Training von Klassifikatoren basierend auf BoW oder TF/IDF arbeiteten wir mit hochdimensionalen Bag-of-Words-Vektoren der Länge `vocab_size` und konvertierten explizit von niedrigdimensionalen Positionsdarstellungsvektoren in spärliche One-Hot-Darstellungen. Diese One-Hot-Darstellung ist jedoch nicht speichereffizient. Außerdem wird jedes Wort unabhängig von den anderen behandelt, d. h. One-Hot-codierte Vektoren drücken keine semantische Ähnlichkeit zwischen Wörtern aus. -Die Idee der **Einbettung** besteht darin, Wörter durch niederdimensionale dichte Vektoren darzustellen, die in gewisser Weise die semantische Bedeutung eines Wortes widerspiegeln. Wir werden später besprechen, wie man sinnvolle Wort-Einbettungen erstellt, aber für den Moment denken wir einfach an Einbettungen als eine Möglichkeit, die Dimensionalität eines Wortvektors zu verringern. +Die Idee der **Einbettung** besteht darin, Wörter durch niedrigdimensionale dichte Vektoren darzustellen, die irgendwie die semantische Bedeutung eines Wortes widerspiegeln. Später werden wir besprechen, wie man sinnvolle Wort-Einbettungen erstellt, aber vorerst betrachten wir Einbettungen einfach als eine Möglichkeit, die Dimensionalität eines Wortvektors zu reduzieren. -Die Einbettungsschicht würde ein Wort als Eingabe nehmen und einen Ausgabvektor der angegebenen `embedding_size` erzeugen. In gewissem Sinne ähnelt es einer `Linear`-Schicht, aber anstatt einen One-Hot-kodierten Vektor zu verwenden, kann es eine Wortnummer als Eingabe akzeptieren, was es uns ermöglicht, große One-Hot-kodierte Vektoren zu vermeiden. +Die Einbettungsschicht würde also ein Wort als Eingabe nehmen und einen Ausgabesektor mit einer bestimmten `embedding_size` erzeugen. In gewisser Weise ist sie einer `Linear`-Schicht sehr ähnlich, aber anstatt einen One-Hot-codierten Vektor zu verwenden, kann sie eine Wortnummer als Eingabe akzeptieren, wodurch wir große One-Hot-codierte Vektoren vermeiden können. -Durch die Verwendung einer Einbettungsschicht als erste Schicht in unserem Klassifikator-Netzwerk können wir von einem Bag-of-Words- zu einem **Einbettungsbeutel**-Modell wechseln, bei dem wir zunächst jedes Wort in unserem Text in die entsprechende Einbettung umwandeln und dann eine aggregierte Funktion über all diese Einbettungen berechnen, wie z.B. `sum`, `average` oder `max`. +Durch die Verwendung einer Einbettungsschicht als erste Schicht in unserem Klassifikator-Netzwerk können wir von einem Bag-of-Words-Modell zu einem **Embedding-Bag-Modell** wechseln, bei dem wir zunächst jedes Wort in unserem Text in die entsprechende Einbettung umwandeln und dann eine Aggregatfunktion über alle diese Einbettungen berechnen, wie z. B. `sum`, `average` oder `max`. -![Bild, das einen Einbettungsklassifikator für fünf aufeinanderfolgende Wörter zeigt.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.de.png) +![Bild, das einen Einbettungsklassifikator für fünf Sequenzwörter zeigt.](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) > Bild vom Autor @@ -22,47 +31,47 @@ Setze dein Lernen in den folgenden Notebooks fort: ## Semantische Einbettungen: Word2Vec -Während die Einbettungsschicht gelernt hat, Wörter in Vektorrepräsentationen abzubilden, hatte diese Repräsentation nicht unbedingt viel semantische Bedeutung. Es wäre schön, eine Vektorrepräsentation zu lernen, sodass ähnliche Wörter oder Synonyme Vektoren entsprechen, die in Bezug auf eine bestimmte Vektordistanz (z.B. euklidische Distanz) nah beieinander liegen. +Während die Einbettungsschicht gelernt hat, Wörter in Vektordarstellungen zu überführen, hat diese Darstellung jedoch nicht unbedingt eine große semantische Bedeutung. Es wäre wünschenswert, eine Vektordarstellung zu lernen, bei der ähnliche Wörter oder Synonyme Vektoren entsprechen, die in Bezug auf eine Vektordistanz (z. B. euklidische Distanz) nahe beieinander liegen. -Um dies zu erreichen, müssen wir unser Einbettungsmodell auf eine bestimmte Weise auf einer großen Textsammlung vortrainieren. Eine Möglichkeit, semantische Einbettungen zu trainieren, nennt sich [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Es basiert auf zwei Hauptarchitekturen, die verwendet werden, um eine verteilte Repräsentation von Wörtern zu erzeugen: +Um dies zu erreichen, müssen wir unser Einbettungsmodell auf einer großen Textsammlung in einer bestimmten Weise vortrainieren. Eine Methode, um semantische Einbettungen zu trainieren, wird [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) genannt. Sie basiert auf zwei Hauptarchitekturen, die verwendet werden, um eine verteilte Darstellung von Wörtern zu erzeugen: - - **Kontinuierlicher Bag-of-Words** (CBoW) — In dieser Architektur trainieren wir das Modell, um ein Wort aus dem umgebenden Kontext vorherzusagen. Gegeben das ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ besteht das Ziel des Modells darin, $W_0$ aus $(W_{-2},W_{-1},W_1,W_2)$ vorherzusagen. - - **Kontinuierliches Skip-Gram** ist das Gegenteil von CBoW. Das Modell verwendet das umgebende Fenster von Kontextwörtern, um das aktuelle Wort vorherzusagen. + - **Continuous Bag-of-Words** (CBoW) — In dieser Architektur trainieren wir das Modell, ein Wort aus dem umgebenden Kontext vorherzusagen. Gegeben das ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, ist das Ziel des Modells, $W_0$ aus $(W_{-2},W_{-1},W_1,W_2)$ vorherzusagen. + - **Continuous Skip-Gram** ist das Gegenteil von CBoW. Das Modell verwendet das umgebende Fenster von Kontextwörtern, um das aktuelle Wort vorherzusagen. -CBoW ist schneller, während Skip-Gram langsamer ist, aber eine bessere Darstellung seltener Wörter liefert. +CBoW ist schneller, während Skip-Gram langsamer ist, aber eine bessere Darstellung von seltenen Wörtern liefert. -![Bild, das sowohl CBoW- als auch Skip-Gram-Algorithmen zur Umwandlung von Wörtern in Vektoren zeigt.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png) +![Bild, das sowohl CBoW- als auch Skip-Gram-Algorithmen zur Umwandlung von Wörtern in Vektoren zeigt.](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) -> Bild aus [diesem Papier](https://arxiv.org/pdf/1301.3781.pdf) +> Bild aus [diesem Paper](https://arxiv.org/pdf/1301.3781.pdf) -Vortrainierte Word2Vec-Einbettungen (sowie andere ähnliche Modelle wie GloVe) können auch anstelle der Einbettungsschicht in neuronalen Netzwerken verwendet werden. Allerdings müssen wir uns mit Vokabularen auseinandersetzen, da das Vokabular, das zum Vortrainieren von Word2Vec/GloVe verwendet wird, wahrscheinlich von dem Vokabular in unserem Textkorpus abweicht. Sieh dir die oben genannten Notebooks an, um zu sehen, wie dieses Problem gelöst werden kann. +Word2Vec vortrainierte Einbettungen (sowie andere ähnliche Modelle wie GloVe) können auch anstelle der Einbettungsschicht in neuronalen Netzwerken verwendet werden. Allerdings müssen wir mit Vokabularen umgehen, da das Vokabular, das zum Vortrainieren von Word2Vec/GloVe verwendet wurde, wahrscheinlich von dem Vokabular in unserem Textkorpus abweicht. Schau dir die oben genannten Notebooks an, um zu sehen, wie dieses Problem gelöst werden kann. ## Kontextuelle Einbettungen -Eine wesentliche Einschränkung traditioneller vortrainierter Einbettungsrepräsentationen wie Word2Vec ist das Problem der Mehrdeutigkeit von Wörtern. Während vortrainierte Einbettungen einige Bedeutungen von Wörtern im Kontext erfassen können, wird jede mögliche Bedeutung eines Wortes in der gleichen Einbettung kodiert. Dies kann Probleme in nachgelagerten Modellen verursachen, da viele Wörter, wie das Wort 'play', je nach verwendetem Kontext unterschiedliche Bedeutungen haben. +Eine zentrale Einschränkung traditioneller vortrainierter Einbettungsdarstellungen wie Word2Vec ist das Problem der Wortbedeutungsunterscheidung. Während vortrainierte Einbettungen einen Teil der Bedeutung von Wörtern im Kontext erfassen können, wird jede mögliche Bedeutung eines Wortes in derselben Einbettung kodiert. Dies kann in nachgelagerten Modellen Probleme verursachen, da viele Wörter, wie das Wort 'play', je nach Kontext unterschiedliche Bedeutungen haben. -Zum Beispiel haben die Wörter 'play' in diesen beiden verschiedenen Sätzen eine ganz andere Bedeutung: +Zum Beispiel hat das Wort 'play' in diesen beiden Sätzen eine ganz unterschiedliche Bedeutung: - Ich ging zu einem **Theaterstück**. - John möchte mit seinen Freunden **spielen**. -Die vortrainierten Einbettungen oben repräsentieren beide Bedeutungen des Wortes 'play' in der gleichen Einbettung. Um diese Einschränkung zu überwinden, müssen wir Einbettungen auf der Grundlage des **Sprachmodells** erstellen, das auf einem großen Textkorpus trainiert wurde und *weiß*, wie Wörter in unterschiedlichen Kontexten zusammengefügt werden können. Die Diskussion über kontextuelle Einbettungen fällt außerhalb des Rahmens dieses Tutorials, aber wir werden später im Kurs darauf zurückkommen, wenn wir über Sprachmodelle sprechen. +Die oben genannten vortrainierten Einbettungen repräsentieren beide Bedeutungen des Wortes 'play' in derselben Einbettung. Um diese Einschränkung zu überwinden, müssen wir Einbettungen basierend auf dem **Sprachmodell** erstellen, das auf einem großen Textkorpus trainiert wurde und *weiß*, wie Wörter in verschiedenen Kontexten zusammengefügt werden können. Die Diskussion über kontextuelle Einbettungen liegt außerhalb des Rahmens dieses Tutorials, aber wir werden darauf zurückkommen, wenn wir später im Kurs über Sprachmodelle sprechen. ## Fazit -In dieser Lektion hast du entdeckt, wie man Einbettungsschichten in TensorFlow und Pytorch erstellt und verwendet, um die semantischen Bedeutungen von Wörtern besser widerzuspiegeln. +In dieser Lektion hast du gelernt, wie man Einbettungsschichten in TensorFlow und PyTorch erstellt und verwendet, um die semantische Bedeutung von Wörtern besser widerzuspiegeln. ## 🚀 Herausforderung -Word2Vec wurde für einige interessante Anwendungen verwendet, einschließlich der Generierung von Songtexten und Poesie. Schau dir [diesen Artikel](https://www.politetype.com/blog/word2vec-color-poems) an, der erklärt, wie der Autor Word2Vec zur Erstellung von Poesie verwendet hat. Schau dir auch [dieses Video von Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) an, um eine andere Erklärung dieser Technik zu entdecken. Versuche dann, diese Techniken auf deinen eigenen Textkorpus anzuwenden, vielleicht aus Kaggle. +Word2Vec wurde für einige interessante Anwendungen verwendet, einschließlich der Generierung von Songtexten und Gedichten. Schau dir [diesen Artikel](https://www.politetype.com/blog/word2vec-color-poems) an, der erklärt, wie der Autor Word2Vec verwendet hat, um Gedichte zu generieren. Sieh dir auch [dieses Video von Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) an, um eine andere Erklärung dieser Technik zu entdecken. Versuche dann, diese Techniken auf deinen eigenen Textkorpus anzuwenden, vielleicht aus Kaggle. -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium -Lies dir dieses Papier über Word2Vec durch: [Effiziente Schätzung von Wortdarstellungen im Vektorraum](https://arxiv.org/pdf/1301.3781.pdf) +Lies dieses Paper über Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) ## [Aufgabe: Notebooks](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/14-Embeddings/assignment.md b/translations/de/lessons/5-NLP/14-Embeddings/assignment.md index 59bd98e7..7eb319b0 100644 --- a/translations/de/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/de/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ + # Aufgabe: Notebooks -Verwenden Sie die Notebooks, die mit dieser Lektion verbunden sind (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, möglicherweise einem von Kaggle, wobei Sie die Quelle angeben. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse zu unterstreichen. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse, indem Sie Texte wie [diese Beatles-Lyrics](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) verwenden. +Verwenden Sie die Notebooks, die mit dieser Lektion verbunden sind (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, vielleicht einem von Kaggle, der mit entsprechender Quellenangabe verwendet wird. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse hervorzuheben. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse, indem Sie beispielsweise Texte wie [diese Beatles-Songtexte](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) verwenden. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/15-LanguageModeling/README.md b/translations/de/lessons/5-NLP/15-LanguageModeling/README.md index 7802fc48..698dd3ca 100644 --- a/translations/de/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/de/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ + # Sprachmodellierung -Semantische Einbettungen, wie Word2Vec und GloVe, sind in der Tat ein erster Schritt in Richtung **Sprachmodellierung** - Modelle zu erstellen, die irgendwie die Natur der Sprache *verstehen* (oder *darstellen*). +Semantische Einbettungen wie Word2Vec und GloVe sind tatsächlich ein erster Schritt in Richtung **Sprachmodellierung** – Modelle zu erstellen, die die Natur der Sprache irgendwie *verstehen* (oder *repräsentieren*). -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -Die Hauptidee hinter der Sprachmodellierung besteht darin, sie auf unlabeled Datensätzen auf unüberwachtem Weg zu trainieren. Dies ist wichtig, da wir große Mengen an unlabeled Text zur Verfügung haben, während die Menge an labeled Text immer durch den Aufwand, den wir für das Labeling aufwenden können, begrenzt ist. Oft können wir Sprachmodelle erstellen, die **fehlende Wörter** im Text vorhersagen, da es einfach ist, ein zufälliges Wort im Text zu maskieren und es als Trainingsbeispiel zu verwenden. +Die Hauptidee hinter der Sprachmodellierung besteht darin, Modelle auf unbeschrifteten Datensätzen in einer unüberwachten Weise zu trainieren. Das ist wichtig, da uns riesige Mengen an unbeschriftetem Text zur Verfügung stehen, während die Menge an beschriftetem Text immer durch den Aufwand begrenzt ist, den wir für die Beschriftung aufbringen können. Meistens können wir Sprachmodelle erstellen, die **fehlende Wörter** im Text vorhersagen, da es einfach ist, ein zufälliges Wort im Text auszublenden und es als Trainingsbeispiel zu verwenden. -## Einbettungen trainieren +## Training von Einbettungen -In unseren vorherigen Beispielen haben wir vortrainierte semantische Einbettungen verwendet, aber es ist interessant zu sehen, wie diese Einbettungen trainiert werden können. Es gibt mehrere mögliche Ansätze, die verwendet werden können: +In unseren bisherigen Beispielen haben wir vortrainierte semantische Einbettungen verwendet, aber es ist interessant zu sehen, wie diese Einbettungen trainiert werden können. Es gibt mehrere mögliche Ansätze, die verwendet werden können: -* **N-Gram** Sprachmodellierung, wenn wir ein Token vorhersagen, indem wir auf N vorherige Tokens (N-gram) schauen. -* **Continuous Bag-of-Words** (CBoW), wenn wir das mittlere Token $W_0$ in einer Token-Sequenz $W_{-N}$, ..., $W_N$ vorhersagen. -* **Skip-gram**, wo wir eine Menge benachbarter Tokens {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} aus dem mittleren Token $W_0$ vorhersagen. +* **N-Gramm**-Sprachmodellierung, bei der wir ein Token vorhersagen, indem wir auf die N vorherigen Tokens (N-Gramm) schauen. +* **Continuous Bag-of-Words** (CBoW), bei dem wir das mittlere Token $W_0$ in einer Token-Sequenz $W_{-N}$, ..., $W_N$ vorhersagen. +* **Skip-Gram**, bei dem wir eine Menge benachbarter Tokens {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} aus dem mittleren Token $W_0$ vorhersagen. -![Bild aus dem Papier zur Umwandlung von Wörtern in Vektoren](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png) +![Bild aus einem Paper über die Umwandlung von Wörtern in Vektoren](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) -> Bild aus [diesem Papier](https://arxiv.org/pdf/1301.3781.pdf) +> Bild aus [diesem Paper](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Beispiel-Notebooks: CBoW-Modell trainieren +## ✍️ Beispiel-Notebooks: Training eines CBoW-Modells -Setzen Sie Ihr Lernen in den folgenden Notebooks fort: +Setze dein Lernen in den folgenden Notebooks fort: -* [Training CBoW Word2Vec mit TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Training CBoW Word2Vec mit PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Training von CBoW Word2Vec mit TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Training von CBoW Word2Vec mit PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## Fazit -In der vorherigen Lektion haben wir gesehen, dass Wort-Einbettungen wie Magie funktionieren! Jetzt wissen wir, dass das Trainieren von Wort-Einbettungen keine sehr komplexe Aufgabe ist und wir in der Lage sein sollten, unsere eigenen Wort-Einbettungen für domänenspezifischen Text zu trainieren, falls erforderlich. +In der vorherigen Lektion haben wir gesehen, dass Wort-Einbettungen wie Magie funktionieren! Jetzt wissen wir, dass das Training von Wort-Einbettungen keine sehr komplexe Aufgabe ist, und wir sollten in der Lage sein, unsere eigenen Wort-Einbettungen für textspezifische Domänen zu trainieren, falls erforderlich. -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium * [Offizielles PyTorch-Tutorial zur Sprachmodellierung](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -* [Offizielles TensorFlow-Tutorial zum Training des Word2Vec-Modells](https://www.TensorFlow.org/tutorials/text/word2vec). -* Die Verwendung des **gensim**-Frameworks, um die am häufigsten verwendeten Einbettungen in wenigen Codezeilen zu trainieren, wird [in dieser Dokumentation](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) beschrieben. +* [Offizielles TensorFlow-Tutorial zum Training eines Word2Vec-Modells](https://www.TensorFlow.org/tutorials/text/word2vec). +* Die Verwendung des **gensim**-Frameworks, um die am häufigsten verwendeten Einbettungen mit nur wenigen Codezeilen zu trainieren, wird [in dieser Dokumentation](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) beschrieben. -## 🚀 [Aufgabe: Trainiere Skip-Gram-Modell](lab/README.md) +## 🚀 [Aufgabe: Trainiere ein Skip-Gram-Modell](lab/README.md) -Im Labor fordern wir Sie heraus, den Code aus dieser Lektion zu ändern, um ein Skip-Gram-Modell anstelle von CBoW zu trainieren. [Lesen Sie die Details](lab/README.md) +Im Labor fordern wir dich heraus, den Code aus dieser Lektion zu modifizieren, um ein Skip-Gram-Modell anstelle von CBoW zu trainieren. [Lies die Details](lab/README.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md index 0e855b76..d6deaa49 100644 --- a/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Training Skip-Gram Modell + +# Training eines Skip-Gram-Modells Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -In diesem Labor fordern wir dich heraus, ein Word2Vec-Modell mit der Skip-Gram-Technik zu trainieren. Trainiere ein Netzwerk mit Einbettungen, um benachbarte Wörter in einem $N$-Tokens-breiten Skip-Gram-Fenster vorherzusagen. Du kannst [den Code aus dieser Lektion](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) verwenden und ihn leicht anpassen. +In diesem Labor fordern wir Sie heraus, ein Word2Vec-Modell mit der Skip-Gram-Technik zu trainieren. Trainieren Sie ein Netzwerk mit Embedding, um benachbarte Wörter in einem $N$-Tokens-breiten Skip-Gram-Fenster vorherzusagen. Sie können den [Code aus dieser Lektion](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) verwenden und leicht anpassen. ## Der Datensatz -Du kannst jedes Buch verwenden. Viele kostenlose Texte findest du bei [Project Gutenberg](https://www.gutenberg.org/), zum Beispiel hier ist ein direkter Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) von Lewis Carroll. Oder du kannst die Stücke von Shakespeare verwenden, die du mit dem folgenden Code erhalten kannst: +Sie können jedes beliebige Buch verwenden. Viele kostenlose Texte finden Sie bei [Project Gutenberg](https://www.gutenberg.org/), zum Beispiel gibt es hier einen direkten Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) von Lewis Carroll. Alternativ können Sie auch die Stücke von Shakespeare verwenden, die Sie mit folgendem Code abrufen können: ```python path_to_file = tf.keras.utils.get_file( @@ -17,13 +26,13 @@ path_to_file = tf.keras.utils.get_file( text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ``` -## Erforschen! +## Erkunden Sie! -Wenn du Zeit hast und tiefer in das Thema eintauchen möchtest, versuche mehrere Dinge zu erkunden: +Wenn Sie Zeit haben und tiefer in das Thema eintauchen möchten, versuchen Sie, mehrere Dinge zu erforschen: -* Wie beeinflusst die Größe der Einbettung die Ergebnisse? -* Wie beeinflussen verschiedene Textstile das Ergebnis? -* Nimm mehrere sehr unterschiedliche Wortarten und deren Synonyme, erhalte ihre Vektordarstellungen, wende PCA an, um die Dimensionen auf 2 zu reduzieren, und plotiere sie im 2D-Raum. Siehst du irgendwelche Muster? +* Wie beeinflusst die Größe des Embeddings die Ergebnisse? +* Wie beeinflussen unterschiedliche Textstile das Ergebnis? +* Nehmen Sie mehrere sehr unterschiedliche Worttypen und deren Synonyme, erhalten Sie deren Vektorrepräsentationen, wenden Sie PCA an, um die Dimensionen auf 2 zu reduzieren, und plotten Sie sie im 2D-Raum. Erkennen Sie irgendwelche Muster? **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/16-RNN/README.md b/translations/de/lessons/5-NLP/16-RNN/README.md index 27d5d38c..1064b6e2 100644 --- a/translations/de/lessons/5-NLP/16-RNN/README.md +++ b/translations/de/lessons/5-NLP/16-RNN/README.md @@ -1,87 +1,96 @@ + # Rekurrente Neuronale Netze -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -In den vorherigen Abschnitten haben wir reichhaltige semantische Darstellungen von Texten und einen einfachen linearen Klassifikator auf den Embeddings verwendet. Was diese Architektur tut, ist, die aggregierte Bedeutung von Wörtern in einem Satz zu erfassen, jedoch berücksichtigt sie nicht die **Reihenfolge** der Wörter, da die Aggregationsoperation über den Embeddings diese Information aus dem ursprünglichen Text entfernt hat. Da diese Modelle nicht in der Lage sind, die Wortreihenfolge zu modellieren, können sie komplexere oder mehrdeutige Aufgaben wie Textgenerierung oder Fragenbeantwortung nicht lösen. +In den vorherigen Abschnitten haben wir reichhaltige semantische Repräsentationen von Text und einen einfachen linearen Klassifikator auf den Einbettungen verwendet. Diese Architektur erfasst die aggregierte Bedeutung der Wörter in einem Satz, berücksichtigt jedoch nicht die **Reihenfolge** der Wörter, da die Aggregationsoperation auf den Einbettungen diese Information aus dem ursprünglichen Text entfernt hat. Da diese Modelle die Wortreihenfolge nicht modellieren können, sind sie nicht in der Lage, komplexere oder mehrdeutige Aufgaben wie Textgenerierung oder Beantwortung von Fragen zu lösen. -Um die Bedeutung einer Textsequenz zu erfassen, müssen wir eine andere Architektur neuronaler Netze verwenden, die als **rekurrentes neuronales Netz** oder RNN bezeichnet wird. Im RNN leiten wir unseren Satz symbolweise durch das Netzwerk, und das Netzwerk erzeugt einen **Zustand**, den wir dann erneut mit dem nächsten Symbol an das Netzwerk übergeben. +Um die Bedeutung einer Textsequenz zu erfassen, müssen wir eine andere Architektur neuronaler Netze verwenden, die als **rekurrentes neuronales Netz** oder RNN bezeichnet wird. Im RNN führen wir unseren Satz ein Symbol nach dem anderen durch das Netzwerk, und das Netzwerk erzeugt einen **Zustand**, den wir dann mit dem nächsten Symbol erneut in das Netzwerk einspeisen. -![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.de.png) +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) > Bild vom Autor -Gegeben die Eingabesequenz von Token X0,...,Xn erstellt das RNN eine Sequenz von neuronalen Netzwerkblöcken und trainiert diese Sequenz End-to-End mithilfe von Rückpropagation. Jeder Netzwerkblock nimmt ein Paar (Xi,Si) als Eingabe und produziert Si+1 als Ergebnis. Der endgültige Zustand Sn oder (Ausgabe Yn) geht in einen linearen Klassifikator, um das Ergebnis zu produzieren. Alle Netzwerkblöcke teilen sich die gleichen Gewichte und werden End-to-End mit einem Rückpropagationsdurchlauf trainiert. +Angenommen, wir haben eine Eingabesequenz von Token X0,...,Xn, erstellt RNN eine Sequenz von neuronalen Netzwerkblöcken und trainiert diese Sequenz end-to-end mittels Backpropagation. Jeder Netzwerkblock nimmt ein Paar (Xi,Si) als Eingabe und erzeugt Si+1 als Ergebnis. Der finale Zustand Sn oder (Ausgabe Yn) wird in einen linearen Klassifikator eingespeist, um das Ergebnis zu erzeugen. Alle Netzwerkblöcke teilen sich die gleichen Gewichte und werden end-to-end mit einem Backpropagation-Durchlauf trainiert. -Da Zustandsvektoren S0,...,Sn durch das Netzwerk geleitet werden, ist es in der Lage, die sequentiellen Abhängigkeiten zwischen Wörtern zu lernen. Zum Beispiel, wenn das Wort *not* irgendwo in der Sequenz erscheint, kann es lernen, bestimmte Elemente innerhalb des Zustandsvektors zu negieren, was zu einer Negation führt. +Da die Zustandsvektoren S0,...,Sn durch das Netzwerk weitergegeben werden, kann es die sequentiellen Abhängigkeiten zwischen Wörtern lernen. Zum Beispiel, wenn das Wort *nicht* irgendwo in der Sequenz erscheint, kann es lernen, bestimmte Elemente im Zustandsvektor zu negieren, was zu einer Verneinung führt. -> ✅ Da die Gewichte aller RNN-Blöcke im obigen Bild geteilt werden, kann dasselbe Bild als ein Block (rechts) mit einer rekurrenten Rückkopplungsschleife dargestellt werden, die den Ausgangszustand des Netzwerks zurück an den Eingang übergibt. +> ✅ Da die Gewichte aller RNN-Blöcke im obigen Bild geteilt werden, kann dasselbe Bild als ein Block (rechts) mit einer rekurrenten Rückkopplungsschleife dargestellt werden, die den Ausgabestatus des Netzwerks zurück an die Eingabe weitergibt. ## Anatomie einer RNN-Zelle -Schauen wir uns an, wie eine einfache RNN-Zelle organisiert ist. Sie akzeptiert den vorherigen Zustand Si-1 und das aktuelle Symbol Xi als Eingaben und muss den Ausgangszustand Si produzieren (und manchmal interessieren wir uns auch für eine andere Ausgabe Yi, wie im Fall von generativen Netzwerken). +Schauen wir uns an, wie eine einfache RNN-Zelle organisiert ist. Sie akzeptiert den vorherigen Zustand Si-1 und das aktuelle Symbol Xi als Eingaben und muss den Ausgabestatus Si erzeugen (und manchmal sind wir auch an einer anderen Ausgabe Yi interessiert, wie im Fall von generativen Netzwerken). -Eine einfache RNN-Zelle hat zwei Gewichtsmatrizen: eine transformiert ein Eingabesymbol (nennen wir sie W) und eine andere transformiert einen Eingabestatus (H). In diesem Fall wird der Ausgang des Netzwerks als σ(W×Xi+H×Si-1+b) berechnet, wobei σ die Aktivierungsfunktion ist und b der zusätzliche Bias. +Eine einfache RNN-Zelle hat zwei Gewichtsmatrizen: eine transformiert ein Eingabesymbol (wir nennen sie W), und eine andere transformiert einen Eingabezustand (H). In diesem Fall wird die Ausgabe des Netzwerks als σ(W×Xi+H×Si-1+b) berechnet, wobei σ die Aktivierungsfunktion ist und b ein zusätzlicher Bias. Anatomie einer RNN-Zelle > Bild vom Autor -In vielen Fällen werden Eingabetoken vor dem Eintritt in das RNN durch die Embedding-Schicht geleitet, um die Dimensionalität zu reduzieren. In diesem Fall, wenn die Dimension der Eingangsvektoren *emb_size* beträgt und der Zustandsvektor *hid_size* - die Größe von W ist *emb_size*×*hid_size* und die Größe von H ist *hid_size*×*hid_size*. +In vielen Fällen werden Eingabetoken vor dem Eintritt in das RNN durch die Einbettungsschicht geleitet, um die Dimensionalität zu reduzieren. In diesem Fall, wenn die Dimension der Eingabevektoren *emb_size* ist und der Zustandsvektor *hid_size* ist - beträgt die Größe von W *emb_size*×*hid_size*, und die Größe von H ist *hid_size*×*hid_size*. -## Langzeit-Kurzzeitgedächtnis (LSTM) +## Long Short Term Memory (LSTM) -Eines der Hauptprobleme klassischer RNNs ist das sogenannte **verschwinden der Gradienten**-Problem. Da RNNs End-to-End in einem Rückpropagationsdurchlauf trainiert werden, hat es Schwierigkeiten, den Fehler auf die ersten Schichten des Netzwerks zu propagieren, und daher kann das Netzwerk keine Beziehungen zwischen weit entfernten Token lernen. Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, eine **explizite Zustandsverwaltung** durch die Verwendung sogenannter **Tore** einzuführen. Es gibt zwei bekannte Architekturen dieser Art: **Langzeit-Kurzzeitgedächtnis** (LSTM) und **Gated Relay Unit** (GRU). +Eines der Hauptprobleme klassischer RNNs ist das sogenannte **Vanishing-Gradients-Problem**. Da RNNs end-to-end in einem Backpropagation-Durchlauf trainiert werden, fällt es ihnen schwer, Fehler an die ersten Schichten des Netzwerks weiterzuleiten, und das Netzwerk kann daher keine Beziehungen zwischen weit entfernten Token lernen. Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, eine **explizite Zustandsverwaltung** durch sogenannte **Gates** einzuführen. Es gibt zwei bekannte Architekturen dieser Art: **Long Short Term Memory** (LSTM) und **Gated Relay Unit** (GRU). -![Bild, das ein Beispiel für eine Langzeit-Kurzzeitgedächtniszelle zeigt](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Bild eines Beispiels einer Long Short Term Memory-Zelle](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) > Bildquelle TBD -Das LSTM-Netzwerk ist ähnlich wie das RNN organisiert, aber es gibt zwei Zustände, die von Schicht zu Schicht übergeben werden: den aktuellen Zustand C und den versteckten Vektor H. An jeder Einheit wird der versteckte Vektor Hi mit dem Eingabevektor Xi verknüpft, und sie steuern, was mit dem Zustand C über die **Tore** geschieht. Jedes Tor ist ein neuronales Netzwerk mit sigmoidaler Aktivierung (Ausgabe im Bereich [0,1]), das als bitweiser Maske betrachtet werden kann, wenn es mit dem Zustandsvektor multipliziert wird. Es gibt die folgenden Tore (von links nach rechts im obigen Bild): +Das LSTM-Netzwerk ist ähnlich wie ein RNN organisiert, aber es gibt zwei Zustände, die von Schicht zu Schicht weitergegeben werden: den tatsächlichen Zustand C und den versteckten Vektor H. In jeder Einheit wird der versteckte Vektor Hi mit der Eingabe Xi verkettet, und sie steuern, was mit dem Zustand C über **Gates** geschieht. Jedes Gate ist ein neuronales Netzwerk mit Sigmoid-Aktivierung (Ausgabe im Bereich [0,1]), das als bitweises Maskieren betrachtet werden kann, wenn es mit dem Zustandsvektor multipliziert wird. Es gibt die folgenden Gates (von links nach rechts im obigen Bild): -* Das **Vergessenstor** nimmt einen versteckten Vektor und bestimmt, welche Komponenten des Vektors C wir vergessen müssen und welche durchgelassen werden sollen. -* Das **Eingangstor** nimmt einige Informationen aus den Eingabe- und versteckten Vektoren und fügt sie in den Zustand ein. -* Das **Ausgangstor** transformiert den Zustand über eine lineare Schicht mit *tanh*-Aktivierung und wählt dann einige seiner Komponenten unter Verwendung eines versteckten Vektors Hi aus, um einen neuen Zustand Ci+1 zu erzeugen. +* Das **Vergessens-Gate** nimmt einen versteckten Vektor und bestimmt, welche Komponenten des Vektors C wir vergessen und welche wir durchlassen müssen. +* Das **Eingabe-Gate** nimmt einige Informationen aus den Eingabe- und versteckten Vektoren und fügt sie in den Zustand ein. +* Das **Ausgabe-Gate** transformiert den Zustand über eine lineare Schicht mit *tanh*-Aktivierung und wählt dann einige seiner Komponenten mithilfe eines versteckten Vektors Hi aus, um einen neuen Zustand Ci+1 zu erzeugen. -Die Komponenten des Zustands C können als einige Flags betrachtet werden, die ein- und ausgeschaltet werden können. Wenn wir zum Beispiel im Verlauf der Sequenz auf einen Namen wie *Alice* stoßen, möchten wir vielleicht annehmen, dass es sich um eine weibliche Figur handelt, und das Flag im Zustand erhöhen, dass wir ein weibliches Substantiv im Satz haben. Wenn wir dann auf die Phrasen *und Tom* stoßen, heben wir das Flag, dass wir ein Pluralnoun haben. So können wir durch die Manipulation des Zustands angeblich die grammatikalischen Eigenschaften von Satzteilen im Auge behalten. +Komponenten des Zustands C können als Flags betrachtet werden, die ein- und ausgeschaltet werden können. Zum Beispiel, wenn wir in der Sequenz den Namen *Alice* finden, könnten wir annehmen, dass es sich um eine weibliche Figur handelt, und das Flag im Zustand setzen, dass wir ein weibliches Substantiv im Satz haben. Wenn wir später die Phrase *und Tom* finden, setzen wir das Flag, dass wir ein Plural-Substantiv haben. Durch die Manipulation des Zustands können wir also möglicherweise die grammatikalischen Eigenschaften von Satzteilen verfolgen. -> ✅ Eine hervorragende Ressource zum Verständnis der Interna von LSTM ist dieser großartige Artikel [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) von Christopher Olah. +> ✅ Eine ausgezeichnete Ressource, um die Interna von LSTM zu verstehen, ist dieser großartige Artikel [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) von Christopher Olah. ## Bidirektionale und mehrschichtige RNNs -Wir haben rekurrente Netze besprochen, die in eine Richtung arbeiten, vom Anfang einer Sequenz bis zum Ende. Das wirkt natürlich, da es der Art und Weise ähnelt, wie wir lesen und Sprache hören. Da wir jedoch in vielen praktischen Fällen zufälligen Zugriff auf die Eingabesequenz haben, kann es sinnvoll sein, die rekursive Berechnung in beide Richtungen auszuführen. Solche Netzwerke werden **bidirektionale** RNNs genannt. Bei der Arbeit mit einem bidirektionalen Netzwerk benötigen wir zwei versteckte Zustandsvektoren, einen für jede Richtung. +Wir haben rekurrente Netzwerke besprochen, die in eine Richtung arbeiten, vom Anfang einer Sequenz bis zum Ende. Das erscheint natürlich, da es der Art und Weise ähnelt, wie wir lesen und Sprache hören. Da wir jedoch in vielen praktischen Fällen zufälligen Zugriff auf die Eingabesequenz haben, könnte es sinnvoll sein, die rekurrente Berechnung in beide Richtungen auszuführen. Solche Netzwerke werden als **bidirektionale** RNNs bezeichnet. Bei der Arbeit mit einem bidirektionalen Netzwerk benötigen wir zwei versteckte Zustandsvektoren, einen für jede Richtung. -Ein rekurrentes Netzwerk, ob einseitig oder bidirektional, erfasst bestimmte Muster innerhalb einer Sequenz und kann sie in einem Zustandsvektor speichern oder in die Ausgabe übergeben. Wie bei konvolutionalen Netzwerken können wir eine weitere rekursive Schicht über der ersten aufbauen, um höhere Muster zu erfassen und von den von der ersten Schicht extrahierten niederwertigen Mustern aufzubauen. Dies führt uns zum Begriff eines **mehrschichtigen RNN**, das aus zwei oder mehr rekurrenten Netzwerken besteht, wobei die Ausgabe der vorherigen Schicht als Eingabe an die nächste Schicht übergeben wird. +Ein rekurrentes Netzwerk, sei es eindirektional oder bidirektional, erfasst bestimmte Muster innerhalb einer Sequenz und kann diese in einem Zustandsvektor speichern oder in die Ausgabe weitergeben. Wie bei konvolutionalen Netzwerken können wir eine weitere rekurrente Schicht auf die erste aufbauen, um höherstufige Muster zu erfassen und aus den von der ersten Schicht extrahierten niedrigstufigen Mustern aufzubauen. Dies führt uns zum Konzept eines **mehrschichtigen RNN**, das aus zwei oder mehr rekurrenten Netzwerken besteht, wobei die Ausgabe der vorherigen Schicht als Eingabe an die nächste Schicht weitergegeben wird. -![Bild, das ein mehrschichtiges Langzeit-Kurzzeitgedächtnis-RNN zeigt](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.de.jpg) +![Bild eines mehrschichtigen Long-Short-Term-Memory-RNNs](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) -*Bild von [diesem wunderbaren Beitrag](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) von Fernando López* +*Bild aus [diesem wunderbaren Beitrag](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) von Fernando López* -## ✍️ Übungen: Embeddings +## ✍️ Übungen: Einbettungen -Setze dein Lernen in den folgenden Notebooks fort: +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: * [RNNs mit PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) * [RNNs mit TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) ## Fazit -In dieser Einheit haben wir gesehen, dass RNNs für die Sequenzklassifizierung verwendet werden können, aber tatsächlich können sie viele weitere Aufgaben bewältigen, wie Textgenerierung, maschinelle Übersetzung und mehr. Diese Aufgaben werden wir in der nächsten Einheit betrachten. +In dieser Einheit haben wir gesehen, dass RNNs für die Sequenzklassifikation verwendet werden können, aber tatsächlich können sie viele weitere Aufgaben bewältigen, wie Textgenerierung, maschinelle Übersetzung und mehr. Diese Aufgaben werden wir in der nächsten Einheit betrachten. ## 🚀 Herausforderung -Lies einige Literatur über LSTMs und ziehe deren Anwendungen in Betracht: +Lesen Sie einige Literatur über LSTMs und überlegen Sie sich deren Anwendungen: - [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) - [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) -## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium - [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) von Christopher Olah. ## [Aufgabe: Notebooks](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/16-RNN/assignment.md b/translations/de/lessons/5-NLP/16-RNN/assignment.md index dc7e3a60..df4fd5b3 100644 --- a/translations/de/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/de/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ + # Aufgabe: Notebooks -Verwenden Sie die mit dieser Lektion verbundenen Notebooks (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie erneut mit Ihrem eigenen Datensatz aus, möglicherweise einem von Kaggle, wobei Sie die Quelle angeben. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse zu betonen. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse mit Texten wie [diesem Kaggle-Wettbewerbsdatensatz über Wettertweets](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Verwenden Sie die Notebooks, die mit dieser Lektion verbunden sind (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, möglicherweise einem von Kaggle, unter Angabe der Quelle. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse hervorzuheben. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse, beispielsweise mit Text wie [diesem Kaggle-Wettbewerbsdatensatz über Wetter-Tweets](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir um Genauigkeit bemüht sind, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md index 4de304d9..4755f655 100644 --- a/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,31 +1,40 @@ + # Generative Netzwerke -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Recurrent Neural Networks (RNNs) und ihre gated Cell-Varianten wie Long Short Term Memory Cells (LSTMs) und Gated Recurrent Units (GRUs) bieten einen Mechanismus für das Sprachmodellieren, da sie die Wortreihenfolge lernen und Vorhersagen für das nächste Wort in einer Sequenz machen können. Dies ermöglicht es uns, RNNs für **generative Aufgaben** zu verwenden, wie zum Beispiel die gewöhnliche Textgenerierung, maschinelle Übersetzung und sogar Bildbeschriftung. +Rekurrente Neuronale Netzwerke (RNNs) und ihre Varianten mit Gated Cells wie Long Short Term Memory Cells (LSTMs) und Gated Recurrent Units (GRUs) bieten einen Mechanismus für Sprachmodellierung, da sie die Wortreihenfolge lernen und Vorhersagen für das nächste Wort in einer Sequenz treffen können. Dies ermöglicht es uns, RNNs für **generative Aufgaben** zu nutzen, wie z. B. die Generierung von gewöhnlichem Text, maschinelle Übersetzung und sogar Bildbeschreibungen. -> ✅ Denk darüber nach, wie oft du von generativen Aufgaben wie der Textvervollständigung beim Tippen profitiert hast. Recherchiere deine Lieblingsanwendungen, um zu sehen, ob sie RNNs genutzt haben. +> ✅ Denke an all die Male, in denen du von generativen Aufgaben wie der automatischen Textvervollständigung profitiert hast. Recherchiere zu deinen Lieblingsanwendungen, um herauszufinden, ob sie RNNs verwendet haben. -In der RNN-Architektur, die wir in der vorherigen Einheit besprochen haben, erzeugte jede RNN-Einheit den nächsten verborgenen Zustand als Ausgabe. Wir können jedoch auch eine weitere Ausgabe zu jeder rekurrenten Einheit hinzufügen, die es uns ermöglichen würde, eine **Sequenz** auszugeben (die in der Länge der ursprünglichen Sequenz entspricht). Darüber hinaus können wir RNN-Einheiten verwenden, die nicht bei jedem Schritt eine Eingabe akzeptieren, sondern einfach einen anfänglichen Zustandsvektor nehmen und dann eine Sequenz von Ausgaben erzeugen. +In der RNN-Architektur, die wir in der vorherigen Einheit besprochen haben, erzeugte jede RNN-Einheit den nächsten versteckten Zustand als Ausgabe. Wir können jedoch auch eine weitere Ausgabe zu jeder rekurrenten Einheit hinzufügen, die es uns ermöglicht, eine **Sequenz** auszugeben (die genauso lang ist wie die ursprüngliche Sequenz). Darüber hinaus können wir RNN-Einheiten verwenden, die bei jedem Schritt keine Eingabe akzeptieren, sondern nur einen anfänglichen Zustandsvektor aufnehmen und dann eine Sequenz von Ausgaben erzeugen. -Dies ermöglicht verschiedene neuronale Architekturen, die im Bild unten gezeigt sind: +Dies ermöglicht verschiedene neuronale Architekturen, die im folgenden Bild dargestellt sind: -![Bild, das gängige Muster rekurrenter neuronaler Netzwerke zeigt.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg) +![Bild, das gängige Muster von rekurrenten neuronalen Netzwerken zeigt.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> Bild aus dem Blogbeitrag [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpaty](http://karpathy.github.io/) +> Bild aus dem Blogpost [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpaty](http://karpathy.github.io/) -* **Eins-zu-eins** ist ein traditionelles neuronales Netzwerk mit einer Eingabe und einer Ausgabe -* **Eins-zu-viele** ist eine generative Architektur, die einen Eingabewert akzeptiert und eine Sequenz von Ausgabewerten erzeugt. Wenn wir beispielsweise ein **Bildbeschriftungs**-Netzwerk trainieren möchten, das eine textuelle Beschreibung eines Bildes erzeugt, können wir ein Bild als Eingabe nehmen, es durch ein CNN leiten, um seinen verborgenen Zustand zu erhalten, und dann eine rekursive Kette verwenden, um die Beschriftung Wort für Wort zu generieren -* **Viele-zu-eins** entspricht den RNN-Architekturen, die wir in der vorherigen Einheit beschrieben haben, wie z.B. der Textklassifikation -* **Viele-zu-viele**, oder **Sequenz-zu-Sequenz**, entspricht Aufgaben wie **maschineller Übersetzung**, bei denen wir zuerst ein RNN haben, das alle Informationen aus der Eingabesequenz in den verborgenen Zustand aufnimmt, und eine andere RNN-Kette diesen Zustand in die Ausgabesequenz entrollt. +* **One-to-one** ist ein traditionelles neuronales Netzwerk mit einer Eingabe und einer Ausgabe. +* **One-to-many** ist eine generative Architektur, die einen Eingabewert akzeptiert und eine Sequenz von Ausgabewerten erzeugt. Zum Beispiel, wenn wir ein **Bildbeschreibungsnetzwerk** trainieren möchten, das eine textuelle Beschreibung eines Bildes erzeugt, können wir ein Bild als Eingabe verwenden, es durch ein CNN leiten, um seinen versteckten Zustand zu erhalten, und dann eine rekurrente Kette Wort für Wort die Beschreibung generieren lassen. +* **Many-to-one** entspricht den RNN-Architekturen, die wir in der vorherigen Einheit beschrieben haben, wie z. B. Textklassifikation. +* **Many-to-many**, oder **Sequenz-zu-Sequenz**, entspricht Aufgaben wie der **maschinellen Übersetzung**, bei der ein erstes RNN alle Informationen aus der Eingabesequenz in den versteckten Zustand sammelt und eine andere RNN-Kette diesen Zustand in die Ausgabesequenz entfaltet. -In dieser Einheit werden wir uns auf einfache generative Modelle konzentrieren, die uns helfen, Text zu generieren. Zur Vereinfachung verwenden wir die Zeichenebene Tokenisierung. +In dieser Einheit konzentrieren wir uns auf einfache generative Modelle, die uns helfen, Text zu generieren. Der Einfachheit halber verwenden wir eine Tokenisierung auf Zeichenebene. -Wir werden dieses RNN trainieren, um Text Schritt für Schritt zu generieren. Bei jedem Schritt nehmen wir eine Sequenz von Zeichen der Länge `nchars` und bitten das Netzwerk, das nächste Ausgabesymbol für jedes Eingabesymbol zu generieren: +Wir werden dieses RNN trainieren, um Text Schritt für Schritt zu generieren. Bei jedem Schritt nehmen wir eine Zeichenfolge der Länge `nchars` und lassen das Netzwerk das nächste Zeichen für jedes Eingabezeichen generieren: -![Bild, das ein Beispiel für die RNN-Generierung des Wortes 'HELLO' zeigt.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.de.png) +![Bild, das ein Beispiel für die RNN-Generierung des Wortes 'HELLO' zeigt.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) -Beim Generieren von Text (während der Inferenz) beginnen wir mit einem **Prompt**, der durch RNN-Zellen geleitet wird, um seinen Zwischenzustand zu erzeugen, und dann beginnt die Generierung von diesem Zustand. Wir generieren ein Zeichen nach dem anderen und übergeben den Zustand und das generierte Zeichen an eine andere RNN-Zelle, um das nächste zu generieren, bis wir genügend Zeichen generiert haben. +Beim Generieren von Text (während der Inferenz) beginnen wir mit einem **Prompt**, der durch die RNN-Zellen geleitet wird, um seinen Zwischenzustand zu erzeugen. Von diesem Zustand aus beginnt die Generierung. Wir generieren ein Zeichen nach dem anderen und übergeben den Zustand und das generierte Zeichen an eine weitere RNN-Zelle, um das nächste zu generieren, bis wir genügend Zeichen erzeugt haben. @@ -38,42 +47,42 @@ Setze dein Lernen in den folgenden Notebooks fort: * [Generative Netzwerke mit PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) * [Generative Netzwerke mit TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) -## Sanfte Textgenerierung und Temperatur +## Weiche Textgenerierung und Temperatur -Die Ausgabe jeder RNN-Zelle ist eine Wahrscheinlichkeitsverteilung von Zeichen. Wenn wir immer das Zeichen mit der höchsten Wahrscheinlichkeit als nächstes Zeichen im generierten Text nehmen, kann der Text oft zwischen denselben Zeichenfolgen "zyklisch" werden, wie in diesem Beispiel: +Die Ausgabe jeder RNN-Zelle ist eine Wahrscheinlichkeitsverteilung von Zeichen. Wenn wir immer das Zeichen mit der höchsten Wahrscheinlichkeit als nächstes Zeichen im generierten Text auswählen, kann der Text oft in "Schleifen" geraten, in denen sich dieselben Zeichenfolgen immer wiederholen, wie in diesem Beispiel: ``` today of the second the company and a second the company ... ``` -Wenn wir jedoch die Wahrscheinlichkeitsverteilung für das nächste Zeichen betrachten, könnte es sein, dass der Unterschied zwischen den höchsten Wahrscheinlichkeiten nicht groß ist, z.B. könnte ein Zeichen eine Wahrscheinlichkeit von 0.2 haben, ein anderes - 0.19, usw. Wenn wir nach dem nächsten Zeichen in der Sequenz '*play*' suchen, könnte das nächste Zeichen ebenso gut ein Leerzeichen oder **e** (wie im Wort *player*) sein. +Wenn wir jedoch die Wahrscheinlichkeitsverteilung für das nächste Zeichen betrachten, könnte es sein, dass der Unterschied zwischen den höchsten Wahrscheinlichkeiten nicht groß ist, z. B. könnte ein Zeichen eine Wahrscheinlichkeit von 0,2 haben, ein anderes 0,19 usw. Zum Beispiel könnte das nächste Zeichen in der Sequenz '*play*' genauso gut ein Leerzeichen oder ein **e** sein (wie im Wort *player*). -Dies führt uns zu dem Schluss, dass es nicht immer "fair" ist, das Zeichen mit der höheren Wahrscheinlichkeit auszuwählen, da die Wahl des zweithöchsten uns immer noch zu bedeutungsvollem Text führen könnte. Es ist klüger, Zeichen aus der Wahrscheinlichkeitsverteilung zu **sample**n, die durch die Netzwerkausgabe gegeben wird. Wir können auch einen Parameter, **Temperatur**, verwenden, der die Wahrscheinlichkeitsverteilung abflacht, falls wir mehr Zufälligkeit hinzufügen möchten, oder sie steiler machen, wenn wir uns mehr an den Zeichen mit der höchsten Wahrscheinlichkeit orientieren möchten. +Das führt uns zu der Erkenntnis, dass es nicht immer "fair" ist, das Zeichen mit der höchsten Wahrscheinlichkeit auszuwählen, da die Wahl des zweitwahrscheinlichsten Zeichens dennoch zu sinnvollem Text führen könnte. Es ist klüger, Zeichen aus der Wahrscheinlichkeitsverteilung zu **samplen**, die durch die Netzwerkausgabe gegeben ist. Wir können auch einen Parameter, die **Temperatur**, verwenden, um die Wahrscheinlichkeitsverteilung abzuflachen, falls wir mehr Zufälligkeit hinzufügen möchten, oder sie steiler machen, wenn wir uns stärker an die Zeichen mit der höchsten Wahrscheinlichkeit halten wollen. -Erforsche, wie diese sanfte Textgenerierung in den oben verlinkten Notebooks implementiert ist. +Erforsche, wie diese weiche Textgenerierung in den oben verlinkten Notebooks implementiert ist. ## Fazit -Obwohl die Textgenerierung an sich nützlich sein kann, kommen die größten Vorteile von der Fähigkeit, Text mithilfe von RNNs aus einem anfänglichen Merkmalsvektor zu generieren. Zum Beispiel wird die Textgenerierung als Teil der maschinellen Übersetzung verwendet (Sequenz-zu-Sequenz, in diesem Fall wird der Zustandsvektor aus dem *Encoder* verwendet, um die übersetzte Nachricht zu generieren oder *zu dekodieren*), oder um eine textuelle Beschreibung eines Bildes zu erzeugen (in diesem Fall würde der Merkmalsvektor aus dem CNN-Extractor stammen). +Während die Textgenerierung an sich nützlich sein kann, liegen die Hauptvorteile in der Fähigkeit, Text mit RNNs aus einem anfänglichen Merkmalsvektor zu generieren. Zum Beispiel wird die Textgenerierung als Teil der maschinellen Übersetzung verwendet (Sequenz-zu-Sequenz, in diesem Fall wird der Zustandsvektor des *Encoders* verwendet, um die übersetzte Nachricht zu generieren oder zu *decodieren*), oder um eine textuelle Beschreibung eines Bildes zu erzeugen (in diesem Fall würde der Merkmalsvektor aus einem CNN-Extraktor stammen). ## 🚀 Herausforderung -Nehmt an einigen Lektionen auf Microsoft Learn zu diesem Thema teil +Nimm an einigen Lektionen auf Microsoft Learn zu diesem Thema teil: * Textgenerierung mit [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) -## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Hier sind einige Artikel, um dein Wissen zu erweitern +Hier sind einige Artikel, um dein Wissen zu erweitern: -* Verschiedene Ansätze zur Textgenerierung mit Markov-Kette, LSTM und GPT-2: [Blogbeitrag](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* Textgenerierungsbeispiel in der [Keras-Dokumentation](https://keras.io/examples/generative/lstm_character_level_text_generation/) +* Verschiedene Ansätze zur Textgenerierung mit Markov-Ketten, LSTM und GPT-2: [Blogpost](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Beispiel zur Textgenerierung in der [Keras-Dokumentation](https://keras.io/examples/generative/lstm_character_level_text_generation/) ## [Aufgabe](lab/README.md) Wir haben gesehen, wie man Text Zeichen für Zeichen generiert. Im Labor wirst du die Textgenerierung auf Wortebene erkunden. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 990f294f..31a4156f 100644 --- a/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ + # Wortbasierte Textgenerierung mit RNNs Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -In diesem Labor müssen Sie ein beliebiges Buch auswählen und es als Datensatz verwenden, um einen wortbasierten Textgenerator zu trainieren. +In diesem Labor sollen Sie ein beliebiges Buch verwenden und es als Datensatz nutzen, um einen wortbasierten Textgenerator zu trainieren. ## Der Datensatz -Sie können jedes Buch verwenden. Sie finden viele kostenlose Texte auf [Project Gutenberg](https://www.gutenberg.org/). Zum Beispiel, hier ist ein direkter Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) von Lewis Carroll. +Sie können jedes beliebige Buch verwenden. Viele kostenlose Texte finden Sie bei [Project Gutenberg](https://www.gutenberg.org/), zum Beispiel gibt es hier einen direkten Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) von Lewis Carroll. **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/18-Transformers/README.md b/translations/de/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..8561f5eb --- /dev/null +++ b/translations/de/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Aufmerksamkeitsmechanismen und Transformer + +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Eines der wichtigsten Probleme im Bereich der NLP ist die **maschinelle Übersetzung**, eine wesentliche Aufgabe, die Tools wie Google Translate zugrunde liegt. In diesem Abschnitt konzentrieren wir uns auf die maschinelle Übersetzung oder allgemeiner auf jede *Sequence-to-Sequence*-Aufgabe (auch **Satztransduktion** genannt). + +Mit RNNs wird Sequence-to-Sequence durch zwei rekurrente Netzwerke implementiert, wobei ein Netzwerk, der **Encoder**, eine Eingabesequenz in einen versteckten Zustand zusammenfasst, während ein anderes Netzwerk, der **Decoder**, diesen versteckten Zustand in ein übersetztes Ergebnis entfaltet. Es gibt jedoch einige Probleme bei diesem Ansatz: + +* Der Endzustand des Encoder-Netzwerks hat Schwierigkeiten, sich an den Anfang eines Satzes zu erinnern, was zu einer schlechten Modellqualität bei langen Sätzen führt. +* Alle Wörter in einer Sequenz haben den gleichen Einfluss auf das Ergebnis. In der Realität haben jedoch bestimmte Wörter in der Eingabesequenz oft mehr Einfluss auf die sequentiellen Ausgaben als andere. + +**Aufmerksamkeitsmechanismen** bieten eine Möglichkeit, den kontextuellen Einfluss jedes Eingabevektors auf jede Ausgabewahrscheinlichkeit des RNN zu gewichten. Dies wird durch die Erstellung von Abkürzungen zwischen den Zwischenzuständen des Eingabe-RNN und des Ausgabe-RNN umgesetzt. Auf diese Weise berücksichtigen wir bei der Generierung des Ausgabesymbols yt alle versteckten Eingabezustände hi, mit unterschiedlichen Gewichtungskoeffizienten αt,i. + +![Bild eines Encoder/Decoder-Modells mit einer additiven Aufmerksamkeits-Schicht](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> Das Encoder-Decoder-Modell mit additivem Aufmerksamkeitsmechanismus aus [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), zitiert aus [diesem Blogbeitrag](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Die Aufmerksamkeitsmatrix {αi,j} würde den Grad darstellen, in dem bestimmte Eingabewörter bei der Generierung eines bestimmten Wortes in der Ausgabesequenz eine Rolle spielen. Unten ist ein Beispiel für eine solche Matrix: + +![Bild eines Beispiel-Alignments, gefunden von RNNsearch-50, entnommen aus Bahdanau - arviz.org](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> Abbildung aus [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Aufmerksamkeitsmechanismen sind verantwortlich für viele der aktuellen oder nahezu aktuellen Spitzenleistungen in der NLP. Das Hinzufügen von Aufmerksamkeit erhöht jedoch die Anzahl der Modellparameter erheblich, was zu Skalierungsproblemen mit RNNs führte. Eine wichtige Einschränkung bei der Skalierung von RNNs ist, dass die rekurrente Natur der Modelle es schwierig macht, das Training zu batchen und zu parallelisieren. In einem RNN muss jedes Element einer Sequenz in der Reihenfolge verarbeitet werden, was bedeutet, dass es nicht leicht parallelisiert werden kann. + +![Encoder Decoder mit Aufmerksamkeit](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Abbildung aus [Googles Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Die Einführung von Aufmerksamkeitsmechanismen in Kombination mit dieser Einschränkung führte zur Entwicklung der heute bekannten und genutzten Transformer-Modelle wie BERT und Open-GPT3, die den aktuellen Stand der Technik darstellen. + +## Transformer-Modelle + +Eine der Hauptideen hinter Transformern ist es, die sequentielle Natur von RNNs zu vermeiden und ein Modell zu schaffen, das während des Trainings parallelisierbar ist. Dies wird durch die Implementierung von zwei Ideen erreicht: + +* Positionskodierung +* Verwendung des Selbstaufmerksamkeitsmechanismus, um Muster zu erfassen, anstatt RNNs (oder CNNs) zu verwenden (deshalb heißt das Papier, das Transformer einführt, *[Attention is all you need](https://arxiv.org/abs/1706.03762)*). + +### Positionskodierung/-einbettung + +Die Idee der Positionskodierung ist folgende: +1. Bei der Verwendung von RNNs wird die relative Position der Tokens durch die Anzahl der Schritte dargestellt und muss daher nicht explizit dargestellt werden. +2. Sobald wir jedoch zu Aufmerksamkeit wechseln, müssen wir die relativen Positionen der Tokens innerhalb einer Sequenz kennen. +3. Um Positionskodierung zu erhalten, ergänzen wir unsere Sequenz von Tokens mit einer Sequenz von Token-Positionen in der Sequenz (d.h. einer Sequenz von Zahlen 0,1, ...). +4. Wir mischen dann die Token-Position mit einem Token-Einbettungsvektor. Um die Position (Ganzzahl) in einen Vektor zu transformieren, können wir verschiedene Ansätze verwenden: + +* Trainierbare Einbettung, ähnlich wie Token-Einbettung. Dies ist der Ansatz, den wir hier betrachten. Wir wenden Einbettungsschichten sowohl auf Tokens als auch auf ihre Positionen an, was zu Einbettungsvektoren derselben Dimensionen führt, die wir dann zusammen addieren. +* Feste Positionskodierungsfunktion, wie im ursprünglichen Papier vorgeschlagen. + + + +> Bild vom Autor + +Das Ergebnis, das wir mit Positionskodierung erhalten, bettet sowohl das ursprüngliche Token als auch seine Position innerhalb einer Sequenz ein. + +### Multi-Head Selbstaufmerksamkeit + +Als Nächstes müssen wir einige Muster innerhalb unserer Sequenz erfassen. Um dies zu tun, verwenden Transformer einen **Selbstaufmerksamkeitsmechanismus**, der im Wesentlichen Aufmerksamkeit ist, die auf dieselbe Sequenz als Eingabe und Ausgabe angewendet wird. Die Anwendung von Selbstaufmerksamkeit ermöglicht es uns, den **Kontext** innerhalb des Satzes zu berücksichtigen und zu sehen, welche Wörter miteinander in Beziehung stehen. Zum Beispiel ermöglicht es uns zu sehen, welche Wörter durch Koreferenzen wie *es* referenziert werden, und auch den Kontext zu berücksichtigen: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> Bild aus dem [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +In Transformern verwenden wir **Multi-Head Attention**, um dem Netzwerk die Fähigkeit zu geben, verschiedene Arten von Abhängigkeiten zu erfassen, z. B. langfristige vs. kurzfristige Wortbeziehungen, Koreferenz vs. etwas anderes usw. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) enthält weitere Details zur Implementierung von Transformer-Schichten. + +### Encoder-Decoder Aufmerksamkeit + +In Transformern wird Aufmerksamkeit an zwei Stellen verwendet: + +* Um Muster innerhalb des Eingabetextes mit Selbstaufmerksamkeit zu erfassen +* Um Sequenzübersetzung durchzuführen - dies ist die Aufmerksamkeits-Schicht zwischen Encoder und Decoder. + +Encoder-Decoder Aufmerksamkeit ist der Aufmerksamkeitsmechanismus, der in RNNs verwendet wird, wie zu Beginn dieses Abschnitts beschrieben. Dieses animierte Diagramm erklärt die Rolle der Encoder-Decoder Aufmerksamkeit. + +![Animiertes GIF, das zeigt, wie die Bewertungen in Transformer-Modellen durchgeführt werden.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Da jede Eingabeposition unabhängig auf jede Ausgabeposition abgebildet wird, können Transformer besser parallelisieren als RNNs, was viel größere und ausdrucksstärkere Sprachmodelle ermöglicht. Jeder Aufmerksamkeitskopf kann verwendet werden, um verschiedene Beziehungen zwischen Wörtern zu lernen, was die nachgelagerten Aufgaben der natürlichen Sprachverarbeitung verbessert. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) ist ein sehr großes mehrschichtiges Transformer-Netzwerk mit 12 Schichten für *BERT-base* und 24 für *BERT-large*. Das Modell wird zunächst auf einem großen Textkorpus (Wikipedia + Bücher) mit unüberwachtem Training (Vorhersage maskierter Wörter in einem Satz) vortrainiert. Während des Vortrainings absorbiert das Modell signifikante Sprachverständnisfähigkeiten, die dann mit anderen Datensätzen durch Feinabstimmung genutzt werden können. Dieser Prozess wird als **Transfer Learning** bezeichnet. + +![Bild von http://jalammar.github.io/illustrated-bert/](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> Bild [Quelle](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Übungen: Transformer + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [Transformer in PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformer in TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Fazit + +In dieser Lektion haben Sie Transformer und Aufmerksamkeitsmechanismen kennengelernt, die wesentliche Werkzeuge im NLP-Werkzeugkasten sind. Es gibt viele Variationen von Transformer-Architekturen, darunter BERT, DistilBERT, BigBird, OpenGPT3 und mehr, die fein abgestimmt werden können. Das [HuggingFace-Paket](https://github.com/huggingface/) bietet ein Repository für das Training vieler dieser Architekturen mit sowohl PyTorch als auch TensorFlow. + +## 🚀 Herausforderung + +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Überprüfung & Selbststudium + +* [Blogbeitrag](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), der das klassische [Attention is all you need](https://arxiv.org/abs/1706.03762)-Papier über Transformer erklärt. +* [Eine Serie von Blogbeiträgen](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) über Transformer, die die Architektur im Detail erklären. + +## [Aufgabe](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/18-Transformers/assignment.md b/translations/de/lessons/5-NLP/18-Transformers/assignment.md index b50eec68..d524d5b7 100644 --- a/translations/de/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/de/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Aufgabe: Transformer + +# Aufgabe: Transformers -Experimentiere mit Transformers auf HuggingFace! Probiere einige der Skripte aus, die sie bereitstellen, um mit den verschiedenen Modellen zu arbeiten, die auf ihrer Seite verfügbar sind: https://huggingface.co/docs/transformers/run_scripts. Teste einen ihrer Datensätze, importiere dann einen eigenen aus diesem Lehrplan oder von Kaggle und schaue, ob du interessante Texte generieren kannst. Erstelle ein Notizbuch mit deinen Ergebnissen. +Experimentiere mit Transformers auf HuggingFace! Probiere einige der Skripte aus, die sie bereitstellen, um mit den verschiedenen Modellen auf ihrer Website zu arbeiten: https://huggingface.co/docs/transformers/run_scripts. Teste eines ihrer Datensätze, importiere dann einen eigenen aus diesem Lehrplan oder von Kaggle und schau, ob du interessante Texte generieren kannst. Erstelle ein Notebook mit deinen Ergebnissen. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/19-NER/README.md b/translations/de/lessons/5-NLP/19-NER/README.md index f718e07e..25b3dd52 100644 --- a/translations/de/lessons/5-NLP/19-NER/README.md +++ b/translations/de/lessons/5-NLP/19-NER/README.md @@ -1,28 +1,37 @@ -# Benannte Entitätenerkennung + +# Erkennung benannter Entitäten -Bis jetzt haben wir uns hauptsächlich auf eine NLP-Aufgabe - Klassifikation - konzentriert. Es gibt jedoch auch andere NLP-Aufgaben, die mit neuronalen Netzwerken durchgeführt werden können. Eine dieser Aufgaben ist die **[Benannte Entitätenerkennung](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), die sich mit der Erkennung spezifischer Entitäten innerhalb von Texten befasst, wie z.B. Orte, Personennamen, Zeiträume, chemische Formeln und so weiter. +Bis jetzt haben wir uns hauptsächlich auf eine NLP-Aufgabe konzentriert – die Klassifikation. Es gibt jedoch auch andere NLP-Aufgaben, die mit neuronalen Netzwerken gelöst werden können. Eine dieser Aufgaben ist die **[Erkennung benannter Entitäten](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), bei der spezifische Entitäten im Text erkannt werden, wie z. B. Orte, Personennamen, Datums- und Zeitangaben, chemische Formeln und vieles mehr. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) ## Beispiel für die Verwendung von NER -Angenommen, Sie möchten einen Chatbot für natürliche Sprache entwickeln, ähnlich wie Amazon Alexa oder Google Assistant. Die Funktionsweise intelligenter Chatbots besteht darin, zu *verstehen*, was der Benutzer möchte, indem sie eine Textklassifikation auf dem eingegebenen Satz durchführen. Das Ergebnis dieser Klassifikation ist die sogenannte **Intention**, die bestimmt, was ein Chatbot tun sollte. +Angenommen, Sie möchten einen Chatbot für natürliche Sprache entwickeln, ähnlich wie Amazon Alexa oder Google Assistant. Intelligente Chatbots funktionieren, indem sie *verstehen*, was der Benutzer möchte, indem sie eine Textklassifikation auf den Eingabesatz anwenden. Das Ergebnis dieser Klassifikation ist die sogenannte **Intention**, die bestimmt, was der Chatbot tun soll. Bot NER > Bild vom Autor -Ein Benutzer kann jedoch einige Parameter als Teil des Satzes angeben. Wenn sie beispielsweise nach dem Wetter fragt, kann sie einen Ort oder ein Datum angeben. Ein Bot sollte in der Lage sein, diese Entitäten zu verstehen und die Parameter entsprechend auszufüllen, bevor er die Aktion ausführt. Genau hier kommt NER ins Spiel. +Ein Benutzer könnte jedoch einige Parameter als Teil der Phrase angeben. Wenn er beispielsweise nach dem Wetter fragt, könnte er einen Ort oder ein Datum angeben. Ein Bot sollte in der Lage sein, diese Entitäten zu verstehen und die Parameter entsprechend auszufüllen, bevor er die Aktion ausführt. Genau hier kommt NER ins Spiel. -> ✅ Ein weiteres Beispiel wäre [die Analyse wissenschaftlicher medizinischer Arbeiten](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Eine der Hauptsachen, auf die wir achten müssen, sind spezifische medizinische Begriffe, wie Krankheiten und medizinische Substanzen. Während eine kleine Anzahl von Krankheiten wahrscheinlich mit Substring-Suche extrahiert werden kann, erfordern komplexere Entitäten, wie chemische Verbindungen und Medikamentennamen, einen komplexeren Ansatz. +> ✅ Ein weiteres Beispiel wäre [die Analyse wissenschaftlicher medizinischer Artikel](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Eine der Hauptaufgaben besteht darin, spezifische medizinische Begriffe wie Krankheiten und medizinische Substanzen zu identifizieren. Während eine kleine Anzahl von Krankheiten wahrscheinlich durch Substring-Suche extrahiert werden kann, erfordern komplexere Entitäten wie chemische Verbindungen und Medikamentennamen einen komplexeren Ansatz. ## NER als Token-Klassifikation -NER-Modelle sind im Wesentlichen **Token-Klassifikationsmodelle**, da wir für jedes der Eingabetokens entscheiden müssen, ob es zu einer Entität gehört oder nicht, und wenn ja - zu welcher Entitätsklasse. +NER-Modelle sind im Wesentlichen **Token-Klassifikationsmodelle**, da wir für jedes Eingabetoken entscheiden müssen, ob es zu einer Entität gehört oder nicht, und falls ja, zu welcher Entitätsklasse. -Betrachten Sie den folgenden Titel einer Arbeit: +Betrachten wir den folgenden Titel eines Artikels: -**Trikuspidalklappeninsuffizienz** und **Lithiumcarbonat** **Toxizität** bei einem Neugeborenen. +**Trikuspidalklappeninsuffizienz** und **Lithiumcarbonat**-**Toxizität** bei einem Neugeborenen. Die Entitäten hier sind: @@ -30,55 +39,54 @@ Die Entitäten hier sind: * Lithiumcarbonat ist eine chemische Substanz (`CHEM`) * Toxizität ist ebenfalls eine Krankheit (`DIS`) -Beachten Sie, dass eine Entität mehrere Tokens umfassen kann. Und, wie in diesem Fall, müssen wir zwischen zwei aufeinanderfolgenden Entitäten unterscheiden. Daher ist es üblich, zwei Klassen für jede Entität zu verwenden - eine, die das erste Token der Entität angibt (häufig wird das `B-`-Präfix verwendet, für **b**eginning), und eine andere - die Fortsetzung einer Entität (`I-`, für **i**nner token). Wir verwenden auch `O` als Klasse, um alle **o**ther Tokens darzustellen. Solches Token-Tagging wird als [BIO-Tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (oder IOB) bezeichnet. Wenn wir unseren Titel taggen, sieht er folgendermaßen aus: +Beachten Sie, dass eine Entität aus mehreren Tokens bestehen kann. Und wie in diesem Fall müssen wir zwischen zwei aufeinanderfolgenden Entitäten unterscheiden. Daher ist es üblich, zwei Klassen für jede Entität zu verwenden – eine, die das erste Token der Entität angibt (oft wird das Präfix `B-` für **b**eginning verwendet), und eine andere für die Fortsetzung einer Entität (`I-`, für **i**nner Token). Wir verwenden auch `O` als Klasse, um alle **o**ther Tokens darzustellen. Diese Token-Kennzeichnung wird als [BIO-Tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (oder IOB) bezeichnet. Nach der Kennzeichnung sieht unser Titel so aus: Token | Tag ------|----- -Trikuspidal | B-DIS -klappe | I-DIS +Trikuspidalklappen | B-DIS insuffizienz | I-DIS und | O -lithium | B-CHEM +Lithium | B-CHEM carbonat | I-CHEM -toxizität | B-DIS +Toxizität | B-DIS bei | O einem | O -neugeborenen | O +Neugeborenen | O . | O -Da wir eine Eins-zu-eins-Zuordnung zwischen Tokens und Klassen herstellen müssen, können wir ein rechtsseitiges **viele-zu-viele** neuronales Netzwerkmodell aus diesem Bild trainieren: +Da wir eine Eins-zu-eins-Korrespondenz zwischen Tokens und Klassen herstellen müssen, können wir ein **many-to-many**-neuronales Netzwerkmodell wie in diesem Bild trainieren: -![Bild zeigt gängige Muster wiederkehrender neuronaler Netzwerke.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg) +![Bild zeigt gängige Muster von rekurrenten neuronalen Netzwerken.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> *Bild aus [diesem Blogbeitrag](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpathy](http://karpathy.github.io/). NER-Token-Klassifikationsmodelle entsprechen der ganz rechts stehenden Netzwerkarchitektur in diesem Bild.* +> *Bild aus [diesem Blogbeitrag](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpathy](http://karpathy.github.io/). NER-Token-Klassifikationsmodelle entsprechen der Architektur des Netzwerks ganz rechts in diesem Bild.* ## Training von NER-Modellen -Da ein NER-Modell im Wesentlichen ein Token-Klassifikationsmodell ist, können wir RNNs verwenden, mit denen wir bereits vertraut sind. In diesem Fall gibt jeder Block des rekurrenten Netzwerks die Token-ID zurück. Das folgende Beispiel-Notebook zeigt, wie man LSTM für die Token-Klassifikation trainiert. +Da ein NER-Modell im Wesentlichen ein Token-Klassifikationsmodell ist, können wir RNNs, die wir bereits kennen, für diese Aufgabe verwenden. In diesem Fall gibt jeder Block des rekurrenten Netzwerks die Token-ID zurück. Das folgende Beispiel-Notebook zeigt, wie man ein LSTM für die Token-Klassifikation trainiert. ## ✍️ Beispiel-Notebooks: NER -Setzen Sie Ihr Lernen im folgenden Notebook fort: +Setzen Sie Ihr Lernen mit dem folgenden Notebook fort: * [NER mit TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) ## Fazit -Ein NER-Modell ist ein **Token-Klassifikationsmodell**, was bedeutet, dass es zur Durchführung der Token-Klassifikation verwendet werden kann. Dies ist eine sehr gängige Aufgabe im NLP, die hilft, spezifische Entitäten innerhalb von Texten zu erkennen, einschließlich Orte, Namen, Daten und mehr. +Ein NER-Modell ist ein **Token-Klassifikationsmodell**, was bedeutet, dass es zur Token-Klassifikation verwendet werden kann. Dies ist eine sehr häufige Aufgabe in der NLP, die hilft, spezifische Entitäten im Text zu erkennen, einschließlich Orte, Namen, Daten und mehr. ## 🚀 Herausforderung -Schließen Sie die unten verlinkte Aufgabe ab, um ein Modell zur Benannten Entitätenerkennung für medizinische Begriffe zu trainieren, und testen Sie es dann an einem anderen Datensatz. +Bearbeiten Sie die unten verlinkte Aufgabe, um ein Modell zur Erkennung benannter medizinischer Entitäten zu trainieren, und testen Sie es anschließend mit einem anderen Datensatz. -## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium -Lesen Sie den Blog [Die unangemessene Effektivität von rekurrenten neuronalen Netzwerken](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) und folgen Sie dem Abschnitt Weiterführende Literatur in diesem Artikel, um Ihr Wissen zu vertiefen. +Lesen Sie den Blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) und arbeiten Sie die Sektion "Weiterführende Literatur" in diesem Artikel durch, um Ihr Wissen zu vertiefen. ## [Aufgabe](lab/README.md) -In der Aufgabe für diese Lektion müssen Sie ein Modell zur Erkennung medizinischer Entitäten trainieren. Sie können mit dem Training eines LSTM-Modells beginnen, wie in dieser Lektion beschrieben, und dann das BERT-Transformator-Modell verwenden. Lesen Sie [die Anweisungen](lab/README.md), um alle Details zu erhalten. +In der Aufgabe zu dieser Lektion müssen Sie ein Modell zur Erkennung medizinischer Entitäten trainieren. Sie können mit dem Training eines LSTM-Modells beginnen, wie in dieser Lektion beschrieben, und anschließend das BERT-Transformermodell verwenden. Lesen Sie [die Anweisungen](lab/README.md), um alle Details zu erfahren. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/19-NER/lab/README.md b/translations/de/lessons/5-NLP/19-NER/lab/README.md index fa04df4a..5a986a01 100644 --- a/translations/de/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/de/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Aufgabe -In diesem Labor müssen Sie ein Modell zur Erkennung benannter Entitäten für medizinische Begriffe trainieren. +In diesem Labor müssen Sie ein Modell zur Erkennung benannter Entitäten (NER) für medizinische Begriffe trainieren. ## Der Datensatz -Um das NER-Modell zu trainieren, benötigen wir einen richtig beschrifteten Datensatz mit medizinischen Entitäten. Der [BC5CDR-Datensatz](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) enthält beschriftete Krankheiten und chemische Entitäten aus mehr als 1500 Arbeiten. Sie können den Datensatz herunterladen, nachdem Sie sich auf ihrer Website registriert haben. +Um ein NER-Modell zu trainieren, benötigen wir einen korrekt gekennzeichneten Datensatz mit medizinischen Entitäten. Der [BC5CDR-Datensatz](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) enthält gekennzeichnete Krankheits- und Chemikalienentitäten aus mehr als 1500 wissenschaftlichen Artikeln. Sie können den Datensatz nach der Registrierung auf deren Website herunterladen. -Der BC5CDR-Datensatz sieht folgendermaßen aus: +Der BC5CDR-Datensatz sieht wie folgt aus: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ Der BC5CDR-Datensatz sieht folgendermaßen aus: ... ``` -In diesem Datensatz befinden sich der Titel und die Zusammenfassung der Arbeit in den ersten beiden Zeilen, gefolgt von einzelnen Entitäten mit Anfangs- und Endpositionen im Titel+Zusammenfassungsblock. Zusätzlich zum Entitätstyp erhalten Sie die Ontologie-ID dieser Entität innerhalb einer medizinischen Ontologie. +In diesem Datensatz befinden sich der Titel und die Zusammenfassung des Artikels in den ersten beiden Zeilen, gefolgt von den einzelnen Entitäten mit Anfangs- und Endpositionen innerhalb des Titel+Zusammenfassungsblocks. Zusätzlich zur Entitätstyp erhalten Sie die Ontologie-ID dieser Entität innerhalb einer medizinischen Ontologie. -Sie müssen einige Python-Codes schreiben, um dies in BIO-Codierung umzuwandeln. +Sie müssen etwas Python-Code schreiben, um dies in BIO-Codierung umzuwandeln. ## Das Netzwerk -Der erste Versuch zur NER kann unter Verwendung eines LSTM-Netzwerks erfolgen, wie in unserem Beispiel, das Sie während der Lektion gesehen haben. In NLP-Aufgaben zeigen jedoch [Transformator-Architekturen](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) und insbesondere [BERT-Sprachmodelle](https://en.wikipedia.org/wiki/BERT_(language_model)) deutlich bessere Ergebnisse. Vorgefertigte BERT-Modelle verstehen die allgemeine Struktur einer Sprache und können mit relativ kleinen Datensätzen und geringen Rechenkosten für spezifische Aufgaben feinabgestimmt werden. +Ein erster Versuch mit NER kann mit einem LSTM-Netzwerk durchgeführt werden, wie Sie es in unserem Beispiel während der Lektion gesehen haben. Allerdings zeigen bei NLP-Aufgaben die [Transformer-Architektur](https://de.wikipedia.org/wiki/Transformer_(machine_learning_model)) und speziell [BERT-Sprachmodelle](https://de.wikipedia.org/wiki/BERT_(language_model)) deutlich bessere Ergebnisse. Vorgefertigte BERT-Modelle verstehen die allgemeine Struktur einer Sprache und können mit relativ kleinen Datensätzen und geringem Rechenaufwand für spezifische Aufgaben feinabgestimmt werden. -Da wir planen, NER im medizinischen Szenario anzuwenden, ist es sinnvoll, ein BERT-Modell zu verwenden, das auf medizinischen Texten trainiert wurde. Microsoft Research hat ein vortrainiertes Modell namens [PubMedBERT][PubMedBERT] ([Veröffentlichung][PubMedBERT-Pub]) veröffentlicht, das mithilfe von Texten aus dem [PubMed](https://pubmed.ncbi.nlm.nih.gov/) Repository feinabgestimmt wurde. +Da wir planen, NER in einem medizinischen Szenario anzuwenden, macht es Sinn, ein BERT-Modell zu verwenden, das auf medizinischen Texten trainiert wurde. Microsoft Research hat ein vortrainiertes Modell namens [PubMedBERT][PubMedBERT] ([Publikation][PubMedBERT-Pub]) veröffentlicht, das mit Texten aus dem [PubMed](https://pubmed.ncbi.nlm.nih.gov/) Repository feinabgestimmt wurde. -Der *de facto* Standard für das Training von Transformator-Modellen ist die [Hugging Face Transformers](https://huggingface.co/) Bibliothek. Sie enthält auch ein Repository von von der Community gewarteten vortrainierten Modellen, einschließlich PubMedBERT. Um dieses Modell zu laden und zu verwenden, benötigen wir nur ein paar Zeilen Code: +Der *de facto* Standard für das Training von Transformer-Modellen ist die [Hugging Face Transformers](https://huggingface.co/) Bibliothek. Sie enthält auch ein Repository mit von der Community gepflegten vortrainierten Modellen, einschließlich PubMedBERT. Um dieses Modell zu laden und zu verwenden, benötigen wir nur ein paar Zeilen Code: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Dies gibt uns das `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer`-Objekt, das den Eingabetext in Tokens aufteilen kann. Sie müssen den Datensatz in das BIO-Format umwandeln und dabei die Tokenisierung von PubMedBERT berücksichtigen. Sie können [diesen Python-Code](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) als Inspiration verwenden. +Dies liefert uns das `model` selbst, das für die Token-Klassifikationsaufgabe mit `classes` Anzahl von Klassen gebaut wurde, sowie das `tokenizer`-Objekt, das den Eingabetext in Tokens aufteilen kann. Sie müssen den Datensatz in BIO-Format umwandeln und dabei die Tokenisierung von PubMedBERT berücksichtigen. Sie können [dieses Stück Python-Code](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) als Inspiration verwenden. ## Fazit -Diese Aufgabe ist sehr nah an der tatsächlichen Aufgabe, die Sie wahrscheinlich haben werden, wenn Sie mehr Einblicke in große Mengen an Texten in natürlicher Sprache gewinnen möchten. In unserem Fall können wir unser trainiertes Modell auf den [Datensatz von COVID-bezogenen Arbeiten](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) anwenden und sehen, welche Erkenntnisse wir gewinnen können. [Dieser Blogbeitrag](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) und [dieses Papier](https://www.mdpi.com/2504-2289/6/1/4) beschreiben die Forschung, die an diesem Korpus von Arbeiten unter Verwendung von NER durchgeführt werden kann. +Diese Aufgabe ist der tatsächlichen Arbeit sehr nahe, die Sie wahrscheinlich durchführen werden, wenn Sie tiefere Einblicke in große Mengen an natürlichen Sprachtexten gewinnen möchten. In unserem Fall können wir unser trainiertes Modell auf den [Datensatz von COVID-bezogenen Artikeln](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) anwenden und sehen, welche Erkenntnisse wir daraus gewinnen können. [Dieser Blogbeitrag](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) und [dieses Paper](https://www.mdpi.com/2504-2289/6/1/4) beschreiben die Forschung, die mit diesem Korpus von Artikeln unter Verwendung von NER durchgeführt werden kann. **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/20-LangModels/README.md b/translations/de/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..ac7dc9bc --- /dev/null +++ b/translations/de/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Vorgefertigte große Sprachmodelle + +In all unseren bisherigen Aufgaben haben wir ein neuronales Netzwerk trainiert, um eine bestimmte Aufgabe mithilfe eines beschrifteten Datensatzes auszuführen. Mit großen Transformermodellen wie BERT verwenden wir Sprachmodellierung in selbstüberwachter Weise, um ein Sprachmodell zu erstellen, das anschließend durch weitere domänenspezifische Trainings für spezifische nachgelagerte Aufgaben spezialisiert wird. Es wurde jedoch gezeigt, dass große Sprachmodelle viele Aufgaben auch ohne jegliches domänenspezifisches Training lösen können. Eine Familie von Modellen, die dazu in der Lage ist, wird **GPT** genannt: Generative Pre-Trained Transformer. + +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Textgenerierung und Perplexität + +Die Idee, dass ein neuronales Netzwerk allgemeine Aufgaben ohne nachgelagertes Training ausführen kann, wird im Papier [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) vorgestellt. Der Hauptgedanke ist, dass viele andere Aufgaben mithilfe der **Textgenerierung** modelliert werden können, da das Verstehen von Text im Wesentlichen bedeutet, ihn produzieren zu können. Da das Modell auf einer riesigen Menge an Text trainiert wird, die menschliches Wissen umfasst, wird es auch über eine Vielzahl von Themen informiert. + +> Text zu verstehen und produzieren zu können, bedeutet auch, etwas über die Welt um uns herum zu wissen. Menschen lernen ebenfalls in großem Maße durch Lesen, und das GPT-Netzwerk ist in dieser Hinsicht ähnlich. + +Textgenerierungsnetzwerke arbeiten, indem sie die Wahrscheinlichkeit des nächsten Wortes $$P(w_N)$$ vorhersagen. Die bedingungslose Wahrscheinlichkeit des nächsten Wortes entspricht jedoch der Häufigkeit dieses Wortes im Textkorpus. GPT ist in der Lage, uns die **bedingte Wahrscheinlichkeit** des nächsten Wortes zu geben, basierend auf den vorherigen: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Mehr über Wahrscheinlichkeiten können Sie in unserem [Data Science für Anfänger Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) lesen. + +Die Qualität eines sprachgenerierenden Modells kann mithilfe der **Perplexität** definiert werden. Es handelt sich um eine intrinsische Metrik, die es uns ermöglicht, die Modellqualität ohne einen aufgabenspezifischen Datensatz zu messen. Sie basiert auf dem Konzept der *Wahrscheinlichkeit eines Satzes* – das Modell weist einem Satz, der wahrscheinlich real ist (d.h. das Modell ist nicht **verwirrt** davon), eine hohe Wahrscheinlichkeit zu und Sätzen, die weniger Sinn ergeben (z.B. *Kann es was tun?*), eine niedrige Wahrscheinlichkeit. Wenn wir unserem Modell Sätze aus einem echten Textkorpus geben, erwarten wir, dass sie eine hohe Wahrscheinlichkeit und eine niedrige **Perplexität** haben. Mathematisch wird sie als normalisierte inverse Wahrscheinlichkeit des Testsets definiert: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Sie können mit der Textgenerierung experimentieren, indem Sie den [GPT-gestützten Texteditor von Hugging Face](https://transformer.huggingface.co/doc/gpt2-large) verwenden.** In diesem Editor beginnen Sie, Ihren Text zu schreiben, und durch Drücken von **[TAB]** werden Ihnen mehrere Abschlussoptionen angeboten. Wenn diese zu kurz sind oder Sie nicht zufrieden sind, drücken Sie erneut [TAB], und Sie erhalten weitere Optionen, einschließlich längerer Textstücke. + +## GPT ist eine Familie + +GPT ist kein einzelnes Modell, sondern vielmehr eine Sammlung von Modellen, die von [OpenAI](https://openai.com) entwickelt und trainiert wurden. + +Innerhalb der GPT-Modelle haben wir: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Sprachmodell mit bis zu 1,5 Milliarden Parametern. | Sprachmodell mit bis zu 175 Milliarden Parametern | 100T Parameter und akzeptiert sowohl Bild- als auch Texteingaben und gibt Text aus. | + +Die GPT-3- und GPT-4-Modelle sind verfügbar [als kognitiver Dienst von Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) und als [OpenAI API](https://openai.com/api/). + +## Prompt Engineering + +Da GPT auf großen Datenmengen trainiert wurde, um Sprache und Code zu verstehen, liefert es Ausgaben als Reaktion auf Eingaben (Prompts). Prompts sind GPT-Eingaben oder Abfragen, bei denen man den Modellen Anweisungen zu den Aufgaben gibt, die sie als Nächstes ausführen sollen. Um ein gewünschtes Ergebnis zu erzielen, benötigt man den effektivsten Prompt, der die Auswahl der richtigen Wörter, Formate, Phrasen oder sogar Symbole umfasst. Dieser Ansatz wird [Prompt Engineering](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) genannt. + +[Diese Dokumentation](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) bietet Ihnen weitere Informationen zum Prompt Engineering. + +## ✍️ Beispiel-Notebook: [Spielen mit OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [Textgenerierung mit OpenAI-GPT und Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Fazit + +Neue allgemeine vortrainierte Sprachmodelle modellieren nicht nur die Sprachstruktur, sondern enthalten auch eine große Menge an natürlicher Sprache. Daher können sie effektiv verwendet werden, um einige NLP-Aufgaben in Zero-Shot- oder Few-Shot-Szenarien zu lösen. + +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Haftungsausschluss**: +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/README.md b/translations/de/lessons/5-NLP/README.md index 250720e1..5a04f4c6 100644 --- a/translations/de/lessons/5-NLP/README.md +++ b/translations/de/lessons/5-NLP/README.md @@ -1,69 +1,78 @@ + # Verarbeitung natürlicher Sprache -![Zusammenfassung der NLP-Aufgaben in einem Doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.de.png) +![Zusammenfassung der NLP-Aufgaben in einer Skizze](../../../../lessons/sketchnotes/ai-nlp.png) -In diesem Abschnitt konzentrieren wir uns darauf, neuronale Netzwerke für Aufgaben im Bereich der **Verarbeitung natürlicher Sprache (NLP)** zu nutzen. Es gibt viele NLP-Probleme, die wir möchten, dass Computer lösen können: +In diesem Abschnitt konzentrieren wir uns darauf, neuronale Netzwerke für Aufgaben im Bereich der **Verarbeitung natürlicher Sprache (Natural Language Processing, NLP)** einzusetzen. Es gibt viele NLP-Probleme, die wir möchten, dass Computer lösen können: -* **Textklassifikation** ist ein typisches Klassifikationsproblem, das sich auf Textsequenzen bezieht. Beispiele sind die Klassifizierung von E-Mail-Nachrichten als Spam oder Nicht-Spam oder die Kategorisierung von Artikeln in Sport, Wirtschaft, Politik usw. Auch bei der Entwicklung von Chatbots müssen wir oft verstehen, was ein Benutzer sagen wollte – in diesem Fall beschäftigen wir uns mit **Intent-Klassifikation**. Oft müssen wir bei der Intent-Klassifikation mit vielen Kategorien umgehen. -* **Sentimentanalyse** ist ein typisches Regressionsproblem, bei dem wir einer Zahl (einem Sentiment) zuordnen müssen, wie positiv oder negativ die Bedeutung eines Satzes ist. Eine fortgeschrittenere Version der Sentimentanalyse ist die **aspektbasierte Sentimentanalyse** (ABSA), bei der wir das Sentiment nicht dem gesamten Satz, sondern verschiedenen Teilen davon (Aspekten) zuordnen, z. B. *In diesem Restaurant mochte ich die Küche, aber die Atmosphäre war schrecklich*. -* **Named Entity Recognition** (NER) bezieht sich auf das Problem, bestimmte Entitäten aus Text zu extrahieren. Zum Beispiel müssen wir möglicherweise verstehen, dass im Satz *Ich muss morgen nach Paris fliegen* das Wort *morgen* auf DATUM verweist und *Paris* ein ORT ist. -* **Schlüsselwortextraktion** ähnelt NER, aber wir müssen automatisch Wörter extrahieren, die für die Bedeutung des Satzes wichtig sind, ohne eine Vorab-Trainierung für spezifische Entitätstypen. -* **Textclustering** kann nützlich sein, wenn wir ähnliche Sätze gruppieren möchten, beispielsweise ähnliche Anfragen in technischen Supportgesprächen. -* **Fragenbeantwortung** bezieht sich auf die Fähigkeit eines Modells, eine spezifische Frage zu beantworten. Das Modell erhält einen Textabschnitt und eine Frage als Eingaben und muss einen Ort im Text angeben, an dem die Antwort auf die Frage enthalten ist (oder manchmal den Antworttext generieren). -* **Textgenerierung** ist die Fähigkeit eines Modells, neuen Text zu generieren. Sie kann als Klassifikationsaufgabe betrachtet werden, die den nächsten Buchstaben/Wort basierend auf einem *Text-Prompt* vorhersagt. Fortgeschrittene Textgenerierungsmodelle, wie GPT-3, sind in der Lage, andere NLP-Aufgaben wie Klassifikation mit einer Technik namens [Prompt-Programmierung](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) oder [Prompt-Engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) zu lösen. -* **Textzusammenfassung** ist eine Technik, bei der wir möchten, dass ein Computer langen Text "liest" und ihn in wenigen Sätzen zusammenfasst. -* **Maschinelle Übersetzung** kann als Kombination aus Textverständnis in einer Sprache und Textgenerierung in einer anderen angesehen werden. +* **Textklassifikation** ist ein typisches Klassifikationsproblem, das sich auf Textsequenzen bezieht. Beispiele sind das Klassifizieren von E-Mails als Spam oder Nicht-Spam oder das Kategorisieren von Artikeln in Sport, Wirtschaft, Politik usw. Auch bei der Entwicklung von Chatbots müssen wir oft verstehen, was ein Benutzer sagen wollte – in diesem Fall handelt es sich um **Intent-Klassifikation**. Häufig müssen wir bei der Intent-Klassifikation mit vielen Kategorien umgehen. +* **Sentiment-Analyse** ist ein typisches Regressionsproblem, bei dem wir einer Zahl (einem Sentiment) zuordnen müssen, wie positiv/negativ die Bedeutung eines Satzes ist. Eine fortgeschrittenere Version der Sentiment-Analyse ist die **aspektbasierte Sentiment-Analyse** (ABSA), bei der wir das Sentiment nicht dem gesamten Satz, sondern verschiedenen Teilen davon (Aspekten) zuordnen, z. B. *In diesem Restaurant mochte ich die Küche, aber die Atmosphäre war schrecklich*. +* **Erkennung benannter Entitäten** (Named Entity Recognition, NER) bezieht sich auf das Problem, bestimmte Entitäten aus Text zu extrahieren. Zum Beispiel müssen wir verstehen, dass in der Phrase *Ich muss morgen nach Paris fliegen* das Wort *morgen* ein DATUM und *Paris* ein ORT ist. +* **Schlüsselwortextraktion** ist ähnlich wie NER, aber hier müssen wir automatisch Wörter extrahieren, die für die Bedeutung des Satzes wichtig sind, ohne vorheriges Training für spezifische Entitätstypen. +* **Text-Clustering** kann nützlich sein, wenn wir ähnliche Sätze gruppieren möchten, z. B. ähnliche Anfragen in technischen Supportgesprächen. +* **Fragebeantwortung** bezieht sich auf die Fähigkeit eines Modells, eine spezifische Frage zu beantworten. Das Modell erhält einen Textabschnitt und eine Frage als Eingaben und muss eine Stelle im Text angeben, an der die Antwort auf die Frage enthalten ist (oder manchmal die Antwort generieren). +* **Textgenerierung** ist die Fähigkeit eines Modells, neuen Text zu generieren. Dies kann als Klassifikationsaufgabe betrachtet werden, bei der der nächste Buchstabe/das nächste Wort basierend auf einem *Textprompt* vorhergesagt wird. Fortgeschrittene Textgenerierungsmodelle wie GPT-3 können andere NLP-Aufgaben wie Klassifikation mithilfe einer Technik namens [Prompt Programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) oder [Prompt Engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) lösen. +* **Textzusammenfassung** ist eine Technik, bei der wir möchten, dass ein Computer einen langen Text "liest" und ihn in wenigen Sätzen zusammenfasst. +* **Maschinelle Übersetzung** kann als Kombination aus Textverständnis in einer Sprache und Textgenerierung in einer anderen betrachtet werden. -Ursprünglich wurden die meisten NLP-Aufgaben mit traditionellen Methoden wie Grammatiken gelöst. Zum Beispiel wurden in der maschinellen Übersetzung Parser verwendet, um den ursprünglichen Satz in einen Syntaxbaum zu transformieren, dann wurden höhere semantische Strukturen extrahiert, um die Bedeutung des Satzes darzustellen, und basierend auf dieser Bedeutung und der Grammatik der Zielsprache wurde das Ergebnis generiert. Heutzutage werden viele NLP-Aufgaben effektiver mit neuronalen Netzwerken gelöst. +Anfangs wurden die meisten NLP-Aufgaben mit traditionellen Methoden wie Grammatiken gelöst. Zum Beispiel wurden in der maschinellen Übersetzung Parser verwendet, um einen Ausgangssatz in einen Syntaxbaum zu transformieren, dann wurden semantische Strukturen höherer Ebene extrahiert, um die Bedeutung des Satzes darzustellen, und basierend auf dieser Bedeutung und der Grammatik der Zielsprache wurde das Ergebnis generiert. Heutzutage werden viele NLP-Aufgaben effektiver mit neuronalen Netzwerken gelöst. -> Viele klassische NLP-Methoden sind in der Python-Bibliothek [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) implementiert. Es gibt ein großartiges [NLTK-Buch](https://www.nltk.org/book/), das online verfügbar ist und behandelt, wie verschiedene NLP-Aufgaben mit NLTK gelöst werden können. +> Viele klassische NLP-Methoden sind in der Python-Bibliothek [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) implementiert. Es gibt ein großartiges [NLTK-Buch](https://www.nltk.org/book/), das online verfügbar ist und zeigt, wie verschiedene NLP-Aufgaben mit NLTK gelöst werden können. -In unserem Kurs werden wir uns hauptsächlich auf die Verwendung neuronaler Netzwerke für NLP konzentrieren und NLTK dort einsetzen, wo es notwendig ist. +In unserem Kurs konzentrieren wir uns hauptsächlich auf die Verwendung neuronaler Netzwerke für NLP und verwenden NLTK, wo es erforderlich ist. -Wir haben bereits gelernt, wie man neuronale Netzwerke für die Verarbeitung von tabellarischen Daten und Bildern einsetzt. Der Hauptunterschied zwischen diesen Datentypen und Text ist, dass Text eine Sequenz variabler Länge ist, während die Eingangsgröße im Fall von Bildern im Voraus bekannt ist. Während konvolutionale Netzwerke Muster aus Eingabedaten extrahieren können, sind Muster in Text komplexer. Zum Beispiel kann die Negation für viele Wörter vom Subjekt getrennt sein (z. B. *Ich mag keine Orangen* vs. *Ich mag diese großen bunten leckeren Orangen nicht*), und das sollte immer noch als ein Muster interpretiert werden. Daher müssen wir zur Handhabung von Sprache neue Arten von neuronalen Netzwerken einführen, wie *rekurrente Netzwerke* und *Transformatoren*. +Wir haben bereits gelernt, wie neuronale Netzwerke für tabellarische Daten und Bilder verwendet werden können. Der Hauptunterschied zwischen diesen Datentypen und Text besteht darin, dass Text eine Sequenz variabler Länge ist, während die Eingabegröße bei Bildern im Voraus bekannt ist. Während konvolutionale Netzwerke Muster aus Eingabedaten extrahieren können, sind Muster in Texten komplexer. Zum Beispiel kann eine Verneinung vom Subjekt durch viele Wörter getrennt sein (z. B. *Ich mag keine Orangen* vs. *Ich mag diese großen bunten leckeren Orangen nicht*), und das sollte dennoch als ein Muster interpretiert werden. Daher müssen wir zur Verarbeitung von Sprache neue Arten von neuronalen Netzwerken einführen, wie z. B. *rekurrente Netzwerke* und *Transformers*. ## Bibliotheken installieren -Wenn Sie eine lokale Python-Installation verwenden, um diesen Kurs durchzuführen, müssen Sie möglicherweise alle erforderlichen Bibliotheken für NLP mit den folgenden Befehlen installieren: +Wenn Sie eine lokale Python-Installation verwenden, um diesen Kurs auszuführen, müssen Sie möglicherweise alle erforderlichen Bibliotheken für NLP mit den folgenden Befehlen installieren: -**Für PyTorch** +**Für PyTorch** ```bash pip install -r requirements-torch.txt -``` -**Für TensorFlow** +``` +**Für TensorFlow** ```bash pip install -r requirements-tf.txt -``` +``` > Sie können NLP mit TensorFlow auf [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) ausprobieren. ## GPU-Warnung -In diesem Abschnitt werden wir in einigen Beispielen recht große Modelle trainieren. -* **Verwenden Sie einen GPU-fähigen Computer**: Es wird empfohlen, Ihre Notebooks auf einem GPU-fähigen Computer auszuführen, um die Wartezeiten beim Arbeiten mit großen Modellen zu reduzieren. -* **GPU-Speicherbeschränkungen**: Das Ausführen auf einer GPU kann zu Situationen führen, in denen der GPU-Speicher erschöpft ist, insbesondere beim Trainieren großer Modelle. -* **GPU-Speicherverbrauch**: Die Menge an GPU-Speicher, die während des Trainings verbraucht wird, hängt von verschiedenen Faktoren ab, einschließlich der Mini-Batch-Größe. -* **Mini-Batch-Größe minimieren**: Wenn Sie auf GPU-Speicherprobleme stoßen, ziehen Sie in Betracht, die Mini-Batch-Größe in Ihrem Code als potenzielle Lösung zu reduzieren. -* **TensorFlow GPU-Speicherfreigabe**: Ältere Versionen von TensorFlow geben den GPU-Speicher möglicherweise nicht korrekt frei, wenn mehrere Modelle innerhalb eines Python-Kernels trainiert werden. Um die GPU-Speichernutzung effektiv zu verwalten, können Sie TensorFlow so konfigurieren, dass GPU-Speicher nur nach Bedarf zugewiesen wird. -* **Code-Einbeziehung**: Um TensorFlow so einzustellen, dass die GPU-Speicherzuweisung nur bei Bedarf wächst, fügen Sie den folgenden Code in Ihre Notebooks ein: +In diesem Abschnitt werden wir in einigen Beispielen recht große Modelle trainieren. +* **Verwenden Sie einen Computer mit GPU-Unterstützung**: Es wird empfohlen, Ihre Notebooks auf einem Computer mit GPU-Unterstützung auszuführen, um die Wartezeiten beim Arbeiten mit großen Modellen zu reduzieren. +* **GPU-Speicherbeschränkungen**: Das Ausführen auf einer GPU kann dazu führen, dass der GPU-Speicher ausgeht, insbesondere beim Training großer Modelle. +* **GPU-Speicherverbrauch**: Die Menge des während des Trainings verbrauchten GPU-Speichers hängt von verschiedenen Faktoren ab, einschließlich der Minibatch-Größe. +* **Minimieren Sie die Minibatch-Größe**: Wenn Sie auf GPU-Speicherprobleme stoßen, sollten Sie die Minibatch-Größe in Ihrem Code reduzieren. +* **TensorFlow GPU-Speicherfreigabe**: Ältere Versionen von TensorFlow geben den GPU-Speicher möglicherweise nicht korrekt frei, wenn mehrere Modelle innerhalb eines Python-Kernels trainiert werden. Um den GPU-Speicher effektiv zu verwalten, können Sie TensorFlow so konfigurieren, dass GPU-Speicher nur bei Bedarf zugewiesen wird. +* **Code-Einbindung**: Um TensorFlow so einzustellen, dass GPU-Speicher nur bei Bedarf wächst, fügen Sie den folgenden Code in Ihre Notebooks ein: ```python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) -``` +``` -Wenn Sie daran interessiert sind, NLP aus einer klassischen ML-Perspektive zu lernen, besuchen Sie [diese Reihe von Lektionen](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Wenn Sie daran interessiert sind, NLP aus der Perspektive des klassischen maschinellen Lernens zu lernen, besuchen Sie [diese Lektionenreihe](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). ## In diesem Abschnitt -In diesem Abschnitt werden wir lernen über: +In diesem Abschnitt werden wir lernen: -* [Text als Tensoren darstellen](13-TextRep/README.md) -* [Wort-Einbettungen](14-Emdeddings/README.md) -* [Sprachmodellierung](15-LanguageModeling/README.md) -* [Rekurrente neuronale Netzwerke](16-RNN/README.md) -* [Generative Netzwerke](17-GenerativeNetworks/README.md) -* [Transformatoren](18-Transformers/README.md) +* [Text als Tensoren darstellen](13-TextRep/README.md) +* [Wort-Embeddings](14-Emdeddings/README.md) +* [Sprachmodellierung](15-LanguageModeling/README.md) +* [Rekurrente neuronale Netzwerke](16-RNN/README.md) +* [Generative Netzwerke](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md index 1aff5f16..93492915 100644 --- a/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,44 +1,53 @@ + # Genetische Algorithmen -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Genetische Algorithmen** (GA) basieren auf einem **evolutionären Ansatz** für KI, bei dem Methoden der Evolution einer Population verwendet werden, um eine optimale Lösung für ein gegebenes Problem zu finden. Sie wurden 1975 von [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) vorgeschlagen. +**Genetische Algorithmen** (GA) basieren auf einem **evolutionären Ansatz** der KI, bei dem Methoden der Evolution einer Population genutzt werden, um eine optimale Lösung für ein gegebenes Problem zu finden. Sie wurden 1975 von [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) vorgeschlagen. -Genetische Algorithmen beruhen auf den folgenden Ideen: +Genetische Algorithmen basieren auf den folgenden Ideen: -* Gültige Lösungen für das Problem können als **Gene** dargestellt werden. -* **Crossover** ermöglicht es uns, zwei Lösungen zu kombinieren, um eine neue gültige Lösung zu erhalten. -* **Selektion** wird verwendet, um optimalere Lösungen mithilfe einer **Fitnessfunktion** auszuwählen. -* **Mutationen** werden eingeführt, um die Optimierung zu destabilisieren und uns aus dem lokalen Minimum herauszuholen. +* Gültige Lösungen des Problems können als **Gene** dargestellt werden. +* Durch **Crossover** können zwei Lösungen kombiniert werden, um eine neue gültige Lösung zu erhalten. +* **Selektion** wird verwendet, um mithilfe einer **Fitnessfunktion** optimalere Lösungen auszuwählen. +* **Mutationen** werden eingeführt, um die Optimierung zu destabilisieren und aus lokalen Minima herauszukommen. Wenn Sie einen genetischen Algorithmus implementieren möchten, benötigen Sie Folgendes: -* Eine Methode zu finden, um unsere Problemlösungen mit **Genen** g∈Γ zu codieren. -* Auf der Menge der Gene Γ müssen wir eine **Fitnessfunktion** fit: Γ→**R** definieren. Kleinere Funktionswerte entsprechen besseren Lösungen. -* Einen **Crossover**-Mechanismus zu definieren, um zwei Gene zu kombinieren, um eine neue gültige Lösung zu erhalten: crossover: Γ2→Γ. -* Einen **Mutations**-Mechanismus zu definieren: mutate: Γ→Γ. + * Eine Methode, um Problemlösungen mithilfe von **Genen** g∈Γ zu kodieren. + * Auf der Menge der Gene Γ muss eine **Fitnessfunktion** fit: Γ→**R** definiert werden. Kleinere Funktionswerte entsprechen besseren Lösungen. + * Einen **Crossover-Mechanismus**, um zwei Gene zu kombinieren und eine neue gültige Lösung zu erhalten: crossover: Γ2→Γ. + * Einen **Mutationsmechanismus**: mutate: Γ→Γ. -In vielen Fällen sind Crossover und Mutation recht einfache Algorithmen, um Gene als numerische Sequenzen oder Bitvektoren zu manipulieren. +In vielen Fällen sind Crossover und Mutation recht einfache Algorithmen, die Gene als numerische Sequenzen oder Bitvektoren manipulieren. Die spezifische Implementierung eines genetischen Algorithmus kann von Fall zu Fall variieren, aber die allgemeine Struktur ist wie folgt: -1. Wählen Sie eine Anfangspopulation G⊂Γ aus. -2. Wählen Sie zufällig eine der Operationen aus, die in diesem Schritt durchgeführt werden: Crossover oder Mutation. +1. Wählen Sie eine Anfangspopulation G⊂Γ. +2. Wählen Sie zufällig eine der Operationen aus, die in diesem Schritt ausgeführt werden sollen: Crossover oder Mutation. 3. **Crossover**: - * Wählen Sie zufällig zwei Gene g1, g2 ∈ G aus. - * Berechnen Sie das Crossover g=crossover(g1,g2). - * Wenn fit(g)1) oder fit(g)2) - ersetzen Sie das entsprechende Gen in der Population durch g. -4. **Mutation** - wählen Sie ein zufälliges Gen g∈G aus und ersetzen Sie es durch mutate(g). -5. Wiederholen Sie Schritt 2, bis wir einen ausreichend kleinen Wert für fit erhalten oder bis die Grenze für die Anzahl der Schritte erreicht ist. + * Wählen Sie zufällig zwei Gene g1, g2 ∈ G aus. + * Berechnen Sie den Crossover g=crossover(g1,g2). + * Wenn fit(g)1) oder fit(g)2), ersetzen Sie das entsprechende Gen in der Population durch g. +4. **Mutation** - Wählen Sie ein zufälliges Gen g∈G aus und ersetzen Sie es durch mutate(g). +5. Wiederholen Sie ab Schritt 2, bis ein ausreichend kleiner Wert von fit erreicht ist oder das Limit der Schrittanzahl erreicht wurde. ## Typische Aufgaben -Typische Aufgaben, die durch genetische Algorithmen gelöst werden, umfassen: +Typische Aufgaben, die mit genetischen Algorithmen gelöst werden, umfassen: -1. Terminoptimierung -1. Optimale Verpackung +1. Optimierung von Zeitplänen +1. Optimales Packen 1. Optimales Schneiden -1. Beschleunigung der exhaustiven Suche +1. Beschleunigung von erschöpfenden Suchverfahren ## ✍️ Übungen: Genetische Algorithmen @@ -46,35 +55,35 @@ Setzen Sie Ihr Lernen in den folgenden Notebooks fort: Gehen Sie zu [diesem Notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), um zwei Beispiele für die Verwendung genetischer Algorithmen zu sehen: -1. Gerechte Aufteilung von Schätzen +1. Gerechte Aufteilung eines Schatzes 1. 8-Damen-Problem ## Fazit -Genetische Algorithmen werden verwendet, um viele Probleme zu lösen, einschließlich Logistik- und Suchprobleme. Das Feld ist inspiriert von Forschungen, die Themen aus Psychologie und Informatik zusammengeführt haben. +Genetische Algorithmen werden verwendet, um viele Probleme zu lösen, einschließlich Logistik- und Suchprobleme. Das Feld ist inspiriert von Forschung, die Themen aus Psychologie und Informatik miteinander verbindet. ## 🚀 Herausforderung -"Genetische Algorithmen sind einfach zu implementieren, aber ihr Verhalten ist schwer zu verstehen." [Quelle](https://wikipedia.org/wiki/Genetic_algorithm) Machen Sie einige Recherchen, um eine Implementierung eines genetischen Algorithmus zu finden, wie z.B. das Lösen eines Sudoku-Rätsels, und erklären Sie, wie es funktioniert, als Skizze oder Flussdiagramm. +"Genetische Algorithmen sind einfach zu implementieren, aber ihr Verhalten ist schwer zu verstehen." [Quelle](https://wikipedia.org/wiki/Genetic_algorithm) Recherchieren Sie eine Implementierung eines genetischen Algorithmus, z. B. zur Lösung eines Sudoku-Puzzles, und erklären Sie, wie er funktioniert, in Form einer Skizze oder eines Flussdiagramms. -## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Überprüfung & Selbststudium +## Wiederholung & Selbststudium -Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das darüber spricht, wie Computer lernen können, Super Mario mit Hilfe von neuronalen Netzwerken zu spielen, die durch genetische Algorithmen trainiert wurden. Wir werden mehr darüber lernen, wie Computer Spiele wie dieses spielen [im nächsten Abschnitt](../22-DeepRL/README.md). +Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das zeigt, wie ein Computer lernen kann, Super Mario zu spielen, indem neuronale Netzwerke mit genetischen Algorithmen trainiert werden. Wir werden mehr darüber lernen, wie Computer solche Spiele spielen können [im nächsten Abschnitt](../22-DeepRL/README.md). ## [Aufgabe: Diophantische Gleichung](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Ihr Ziel ist es, die sogenannte **diophantische Gleichung** zu lösen - eine Gleichung mit ganzzahligen Wurzeln. Betrachten Sie zum Beispiel die Gleichung a+2b+3c+4d=30. Sie müssen die ganzzahligen Wurzeln finden, die diese Gleichung erfüllen. +Ihr Ziel ist es, die sogenannte **diophantische Gleichung** zu lösen – eine Gleichung mit ganzzahligen Wurzeln. Betrachten Sie zum Beispiel die Gleichung a+2b+3c+4d=30. Sie müssen die ganzzahligen Wurzeln finden, die diese Gleichung erfüllen. *Diese Aufgabe ist inspiriert von [diesem Beitrag](https://habr.com/post/128704/).* Hinweise: -1. Sie können die Wurzeln im Intervall [0;30] betrachten. -1. Verwenden Sie als Gen die Liste der Wurzelwerte. +1. Sie können Wurzeln im Intervall [0;30] betrachten. +1. Als Gen können Sie die Liste der Wurzelwerte verwenden. Verwenden Sie [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) als Ausgangspunkt. **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/22-DeepRL/README.md b/translations/de/lessons/6-Other/22-DeepRL/README.md index 7ecf9070..3e48f671 100644 --- a/translations/de/lessons/6-Other/22-DeepRL/README.md +++ b/translations/de/lessons/6-Other/22-DeepRL/README.md @@ -1,31 +1,40 @@ + # Deep Reinforcement Learning -Reinforcement Learning (RL) wird als eines der grundlegenden Paradigmen des maschinellen Lernens angesehen, neben dem überwachten und unüberwachten Lernen. Während wir im überwachten Lernen auf Datensätze mit bekannten Ergebnissen angewiesen sind, basiert RL auf **Lernen durch Handeln**. Zum Beispiel, wenn wir ein Computer-Spiel zum ersten Mal sehen, fangen wir an zu spielen, selbst ohne die Regeln zu kennen, und bald sind wir in der Lage, unsere Fähigkeiten allein durch das Spielen und Anpassen unseres Verhaltens zu verbessern. +Reinforcement Learning (RL) wird als eines der grundlegenden Paradigmen des maschinellen Lernens angesehen, neben überwachten und unüberwachten Lernen. Während wir beim überwachten Lernen auf Datensätze mit bekannten Ergebnissen angewiesen sind, basiert RL auf dem Prinzip des **Lernens durch Handeln**. Zum Beispiel: Wenn wir ein Computerspiel zum ersten Mal sehen, beginnen wir zu spielen, auch ohne die Regeln zu kennen, und verbessern unsere Fähigkeiten allein durch das Spielen und Anpassen unseres Verhaltens. -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) Um RL durchzuführen, benötigen wir: -* Eine **Umgebung** oder **Simulation**, die die Regeln des Spiels festlegt. Wir sollten in der Lage sein, die Experimente in der Simulation durchzuführen und die Ergebnisse zu beobachten. -* Eine **Belohnungsfunktion**, die angibt, wie erfolgreich unser Experiment war. Im Fall des Lernens, ein Computerspiel zu spielen, wäre die Belohnung unser Endpunktestand. +* Eine **Umgebung** oder einen **Simulator**, der die Regeln des Spiels festlegt. Wir sollten in der Lage sein, Experimente im Simulator durchzuführen und die Ergebnisse zu beobachten. +* Eine **Belohnungsfunktion**, die angibt, wie erfolgreich unser Experiment war. Im Fall des Lernens, ein Computerspiel zu spielen, wäre die Belohnung unsere Endpunktzahl. -Basierend auf der Belohnungsfunktion sollten wir in der Lage sein, unser Verhalten anzupassen und unsere Fähigkeiten zu verbessern, damit wir beim nächsten Mal besser spielen. Der Hauptunterschied zwischen anderen Arten des maschinellen Lernens und RL besteht darin, dass wir im RL typischerweise nicht wissen, ob wir gewinnen oder verlieren, bis wir das Spiel beenden. Daher können wir nicht sagen, ob ein bestimmter Zug allein gut oder schlecht ist - wir erhalten die Belohnung erst am Ende des Spiels. +Basierend auf der Belohnungsfunktion sollten wir unser Verhalten anpassen und unsere Fähigkeiten verbessern, sodass wir beim nächsten Mal besser spielen. Der Hauptunterschied zwischen anderen Arten des maschinellen Lernens und RL besteht darin, dass wir bei RL normalerweise nicht wissen, ob wir gewinnen oder verlieren, bis das Spiel beendet ist. Daher können wir nicht sagen, ob ein bestimmter Zug allein gut oder schlecht ist – wir erhalten die Belohnung erst am Ende des Spiels. -Während des RL führen wir typischerweise viele Experimente durch. Während jedes Experiments müssen wir ein Gleichgewicht finden zwischen der Verfolgung der optimalen Strategie, die wir bisher gelernt haben (**Exploitation**), und der Erkundung neuer möglicher Zustände (**Exploration**). +Während des RL führen wir typischerweise viele Experimente durch. Bei jedem Experiment müssen wir zwischen der Anwendung der optimalen Strategie, die wir bisher gelernt haben (**Ausnutzung**), und der Erforschung neuer möglicher Zustände (**Erkundung**) abwägen. ## OpenAI Gym -Ein großartiges Werkzeug für RL ist das [OpenAI Gym](https://gym.openai.com/) - eine **Simulationsumgebung**, die viele verschiedene Umgebungen simulieren kann, von Atari-Spielen bis hin zur Physik hinter dem Balancieren eines Mastes. Es ist eine der beliebtesten Simulationsumgebungen zur Schulung von Reinforcement-Learning-Algorithmen und wird von [OpenAI](https://openai.com/) gepflegt. +Ein großartiges Werkzeug für RL ist das [OpenAI Gym](https://gym.openai.com/) – eine **Simulationsumgebung**, die viele verschiedene Umgebungen simulieren kann, von Atari-Spielen bis hin zur Physik des Balancierens von Stangen. Es ist eine der beliebtesten Simulationsumgebungen für das Training von Reinforcement-Learning-Algorithmen und wird von [OpenAI](https://openai.com/) gepflegt. -> **Hinweis**: Sie können alle verfügbaren Umgebungen von OpenAI Gym [hier](https://gym.openai.com/envs/#classic_control) einsehen. +> **Hinweis**: Sie können alle verfügbaren Umgebungen von OpenAI Gym [hier](https://gym.openai.com/envs/#classic_control) sehen. -## CartPole Balancing +## CartPole-Balancieren -Sie haben wahrscheinlich alle moderne Balanciergeräte wie den *Segway* oder *Gyroscooter* gesehen. Diese sind in der Lage, automatisch zu balancieren, indem sie ihre Räder als Reaktion auf ein Signal von einem Beschleunigungsmesser oder Gyroskop anpassen. In diesem Abschnitt werden wir lernen, wie man ein ähnliches Problem löst - das Balancieren eines Mastes. Es ist vergleichbar mit einer Situation, in der ein Zirkuskünstler einen Mast auf seiner Hand balancieren muss - jedoch findet dieses Balancieren nur in 1D statt. +Ihr kennt wahrscheinlich moderne Balanciergeräte wie den *Segway* oder *Gyroscooter*. Sie können sich automatisch ausbalancieren, indem sie ihre Räder entsprechend einem Signal von einem Beschleunigungsmesser oder Gyroskop anpassen. In diesem Abschnitt lernen wir, wie man ein ähnliches Problem löst – das Balancieren einer Stange. Es ähnelt der Situation, in der ein Zirkuskünstler eine Stange auf seiner Hand balancieren muss – aber dieses Balancieren erfolgt nur in einer Dimension. -Eine vereinfachte Version des Balancierens ist als **CartPole**-Problem bekannt. In der CartPole-Welt haben wir einen horizontalen Schieber, der sich nach links oder rechts bewegen kann, und das Ziel ist es, einen vertikalen Mast oben auf dem Schieber auszubalancieren, während er sich bewegt. +Eine vereinfachte Version des Balancierens ist als **CartPole-Problem** bekannt. In der CartPole-Welt haben wir einen horizontalen Schlitten, der sich nach links oder rechts bewegen kann, und das Ziel ist es, eine vertikale Stange oben auf dem Schlitten zu balancieren, während er sich bewegt. -ein cartpole +a cartpole Um diese Umgebung zu erstellen und zu nutzen, benötigen wir ein paar Zeilen Python-Code: @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -Jede Umgebung kann auf genau die gleiche Weise aufgerufen werden: -* `env.reset` starts a new experiment -* `env.step` führt einen Simulationsschritt durch. Es erhält eine **Aktion** aus dem **Aktionsraum** und gibt eine **Beobachtung** (aus dem Beobachtungsraum) sowie eine Belohnung und ein Beendigungsflag zurück. +Jede Umgebung kann auf genau dieselbe Weise angesprochen werden: +* `env.reset` startet ein neues Experiment +* `env.step` führt einen Simulationsschritt aus. Es erhält eine **Aktion** aus dem **Aktionsraum** und gibt eine **Beobachtung** (aus dem Beobachtungsraum) sowie eine Belohnung und ein Abbruchflag zurück. Im obigen Beispiel führen wir bei jedem Schritt eine zufällige Aktion aus, weshalb die Lebensdauer des Experiments sehr kurz ist: -![nicht balancierendes cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -Das Ziel eines RL-Algorithmus ist es, ein Modell - die sogenannte **Politik** π - zu trainieren, das die Aktion als Antwort auf einen gegebenen Zustand zurückgibt. Wir können die Politik auch als probabilistisch betrachten, d.h. für jeden Zustand *s* und jede Aktion *a* gibt sie die Wahrscheinlichkeit π(*a*|*s*) zurück, dass wir *a* im Zustand *s* wählen sollten. +Das Ziel eines RL-Algorithmus ist es, ein Modell zu trainieren – die sogenannte **Policy** π –, die die Aktion als Antwort auf einen gegebenen Zustand zurückgibt. Wir können die Policy auch als probabilistisch betrachten, z. B. für jeden Zustand *s* und jede Aktion *a* gibt sie die Wahrscheinlichkeit π(*a*|*s*) zurück, dass wir *a* im Zustand *s* ausführen sollten. -## Policy Gradients Algorithmus +## Policy-Gradient-Algorithmus -Der offensichtlichste Weg, eine Politik zu modellieren, besteht darin, ein neuronales Netzwerk zu erstellen, das Zustände als Eingabe nimmt und die entsprechenden Aktionen (oder besser gesagt die Wahrscheinlichkeiten aller Aktionen) zurückgibt. In gewissem Sinne wäre es ähnlich wie bei einer normalen Klassifikationsaufgabe, mit einem wesentlichen Unterschied - wir wissen im Voraus nicht, welche Aktionen wir in jedem Schritt ausführen sollten. +Die offensichtlichste Möglichkeit, eine Policy zu modellieren, besteht darin, ein neuronales Netzwerk zu erstellen, das Zustände als Eingabe nimmt und entsprechende Aktionen (oder vielmehr die Wahrscheinlichkeiten aller Aktionen) zurückgibt. In gewisser Weise wäre es ähnlich wie eine normale Klassifikationsaufgabe, mit einem großen Unterschied – wir wissen im Voraus nicht, welche Aktionen wir bei jedem Schritt ausführen sollten. -Die Idee hier ist, diese Wahrscheinlichkeiten zu schätzen. Wir erstellen einen Vektor von **kumulierten Belohnungen**, der unsere Gesamtbelohnung in jedem Schritt des Experiments zeigt. Wir wenden auch **Belohnungsdiskontierung** an, indem wir frühere Belohnungen mit einem Koeffizienten γ=0.99 multiplizieren, um die Rolle der früheren Belohnungen zu verringern. Dann verstärken wir die Schritte entlang des Experimentpfades, die größere Belohnungen erzielen. +Die Idee hier ist, diese Wahrscheinlichkeiten zu schätzen. Wir erstellen einen Vektor von **kumulierten Belohnungen**, der unsere Gesamtbelohnung bei jedem Schritt des Experiments zeigt. Wir wenden auch **Belohnungsdiskontierung** an, indem wir frühere Belohnungen mit einem Koeffizienten γ=0.99 multiplizieren, um die Rolle früherer Belohnungen zu verringern. Dann verstärken wir die Schritte entlang des Experimentpfads, die größere Belohnungen bringen. > Erfahren Sie mehr über den Policy-Gradient-Algorithmus und sehen Sie ihn in Aktion im [Beispiel-Notebook](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). -## Actor-Critic Algorithmus +## Actor-Critic-Algorithmus -Eine verbesserte Version des Policy-Gradients-Ansatzes wird als **Actor-Critic** bezeichnet. Die Hauptidee dahinter ist, dass das neuronale Netzwerk trainiert wird, um zwei Dinge zurückzugeben: +Eine verbesserte Version des Policy-Gradient-Ansatzes wird **Actor-Critic** genannt. Die Hauptidee dahinter ist, dass das neuronale Netzwerk so trainiert wird, dass es zwei Dinge zurückgibt: -* Die Politik, die bestimmt, welche Aktion zu ergreifen ist. Dieser Teil wird **Actor** genannt. -* Die Schätzung der Gesamtbelohnung, die wir in diesem Zustand erwarten können - dieser Teil wird **Critic** genannt. +* Die Policy, die bestimmt, welche Aktion ausgeführt werden soll. Dieser Teil wird **Actor** genannt. +* Die Schätzung der Gesamtbelohnung, die wir in diesem Zustand erwarten können – dieser Teil wird **Critic** genannt. -In gewissem Sinne ähnelt diese Architektur einem [GAN](../../4-ComputerVision/10-GANs/README.md), bei dem wir zwei Netzwerke haben, die gegeneinander trainiert werden. Im Actor-Critic-Modell schlägt der Actor die Aktion vor, die wir ausführen müssen, und der Critic versucht, kritisch zu sein und das Ergebnis zu schätzen. Unser Ziel ist es jedoch, diese Netzwerke gemeinsam zu trainieren. +In gewisser Weise ähnelt diese Architektur einem [GAN](../../4-ComputerVision/10-GANs/README.md), bei dem wir zwei Netzwerke haben, die gegeneinander trainiert werden. Im Actor-Critic-Modell schlägt der Actor die Aktion vor, die wir ausführen müssen, und der Critic versucht kritisch zu sein und das Ergebnis zu schätzen. Unser Ziel ist es jedoch, diese Netzwerke im Einklang zu trainieren. -Da wir sowohl die tatsächlichen kumulierten Belohnungen als auch die Ergebnisse, die der Critic während des Experiments zurückgibt, kennen, ist es relativ einfach, eine Verlustfunktion zu erstellen, die den Unterschied zwischen ihnen minimiert. Das würde uns **Critic-Verlust** geben. Wir können **Actor-Verlust** berechnen, indem wir denselben Ansatz wie im Policy-Gradient-Algorithmus verwenden. +Da wir sowohl die tatsächlichen kumulierten Belohnungen als auch die vom Critic während des Experiments zurückgegebenen Ergebnisse kennen, ist es relativ einfach, eine Verlustfunktion zu erstellen, die die Differenz zwischen ihnen minimiert. Das würde uns den **Critic-Loss** geben. Wir können den **Actor-Loss** mit demselben Ansatz wie im Policy-Gradient-Algorithmus berechnen. -Nach dem Ausführen eines dieser Algorithmen können wir erwarten, dass unser CartPole so aussieht: +Nach dem Ausführen eines dieser Algorithmen können wir erwarten, dass unser CartPole sich wie folgt verhält: -![ein balancierendes cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ Übungen: Policy Gradients und Actor-Critic RL +## ✍️ Übungen: Policy-Gradient und Actor-Critic RL Setzen Sie Ihr Lernen in den folgenden Notebooks fort: * [RL in TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) * [RL in PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) -## Weitere RL-Aufgaben +## Andere RL-Aufgaben Reinforcement Learning ist heutzutage ein schnell wachsendes Forschungsfeld. Einige interessante Beispiele für Reinforcement Learning sind: -* Einem Computer beibringen, **Atari-Spiele** zu spielen. Der herausfordernde Teil dieses Problems besteht darin, dass wir keinen einfachen Zustand in Form eines Vektors haben, sondern eher einen Screenshot - und wir müssen das CNN verwenden, um dieses Bildschirmbild in einen Merkmalsvektor zu konvertieren oder Belohnungsinformationen zu extrahieren. Atari-Spiele sind im Gym verfügbar. -* Einem Computer beibringen, Brettspiele wie Schach und Go zu spielen. Kürzlich wurden hochmoderne Programme wie **Alpha Zero** von zwei Agenten, die gegeneinander spielten und sich mit jedem Schritt verbesserten, von Grund auf trainiert. -* In der Industrie wird RL verwendet, um Steuerungssysteme aus Simulationen zu erstellen. Ein Dienst namens [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) wurde speziell dafür entwickelt. +* Einem Computer beibringen, **Atari-Spiele** zu spielen. Die Herausforderung bei diesem Problem besteht darin, dass wir keinen einfachen Zustand als Vektor haben, sondern einen Screenshot – und wir müssen ein CNN verwenden, um dieses Bildschirmbild in einen Feature-Vektor umzuwandeln oder Belohnungsinformationen zu extrahieren. Atari-Spiele sind im Gym verfügbar. +* Einem Computer beibringen, Brettspiele wie Schach und Go zu spielen. Kürzlich wurden Programme wie **Alpha Zero** von Grund auf durch zwei Agenten trainiert, die gegeneinander spielen und sich bei jedem Schritt verbessern. +* In der Industrie wird RL verwendet, um Steuerungssysteme aus Simulationen zu erstellen. Ein Dienst namens [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) ist speziell dafür konzipiert. ## Fazit -Wir haben nun gelernt, wie man Agenten trainiert, um gute Ergebnisse zu erzielen, indem wir ihnen eine Belohnungsfunktion bereitstellen, die den gewünschten Zustand des Spiels definiert, und ihnen die Möglichkeit geben, den Suchraum intelligent zu erkunden. Wir haben erfolgreich zwei Algorithmen ausprobiert und in relativ kurzer Zeit ein gutes Ergebnis erzielt. Dies ist jedoch nur der Anfang Ihrer Reise in das RL, und Sie sollten auf jeden Fall in Betracht ziehen, einen separaten Kurs zu belegen, wenn Sie tiefer eintauchen möchten. +Wir haben nun gelernt, wie man Agenten trainiert, um gute Ergebnisse zu erzielen, indem man ihnen lediglich eine Belohnungsfunktion bereitstellt, die den gewünschten Zustand des Spiels definiert, und ihnen die Möglichkeit gibt, den Suchraum intelligent zu erkunden. Wir haben erfolgreich zwei Algorithmen ausprobiert und in relativ kurzer Zeit ein gutes Ergebnis erzielt. Dies ist jedoch nur der Anfang Ihrer Reise in RL, und Sie sollten definitiv einen separaten Kurs in Betracht ziehen, wenn Sie tiefer eintauchen möchten. ## 🚀 Herausforderung -Erforschen Sie die in der Rubrik 'Weitere RL-Aufgaben' aufgeführten Anwendungen und versuchen Sie, eine zu implementieren! +Erkunden Sie die Anwendungen, die im Abschnitt "Andere RL-Aufgaben" aufgeführt sind, und versuchen Sie, eine davon umzusetzen! -## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) ## Überprüfung & Selbststudium -Erfahren Sie mehr über klassisches Reinforcement Learning in unserem [Maschinenlernen für Anfänger Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). +Erfahren Sie mehr über klassisches Reinforcement Learning in unserem [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das darüber spricht, wie ein Computer lernen kann, Super Mario zu spielen. +Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das zeigt, wie ein Computer lernen kann, Super Mario zu spielen. -## Aufgabe: [Trainiere ein Mountain Car](lab/README.md) +## Aufgabe: [Trainieren Sie ein Mountain Car](lab/README.md) -Ihr Ziel während dieser Aufgabe wäre es, eine andere Gym-Umgebung zu trainieren - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Ihr Ziel bei dieser Aufgabe ist es, eine andere Gym-Umgebung zu trainieren – [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). **Haftungsausschluss**: -Dieses Dokument wurde mit Hilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/22-DeepRL/lab/README.md b/translations/de/lessons/6-Other/22-DeepRL/lab/README.md index 5a5bc26b..064548de 100644 --- a/translations/de/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/de/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,23 @@ -# Training Mountain Car to Escape - -Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). - -## Aufgabe - -Ihr Ziel ist es, den RL-Agenten zu trainieren, um [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) in der OpenAI-Umgebung zu steuern. Sie werden mit Daten bis Oktober 2023 trainiert. - + ## Die Umgebung -Die Mountain Car-Umgebung besteht aus einem Auto, das in einem Tal gefangen ist. Ihr Ziel ist es, aus dem Tal zu springen und die Flagge zu erreichen. Die Aktionen, die Sie ausführen können, sind, nach links zu beschleunigen, nach rechts zu beschleunigen oder nichts zu tun. Sie können die Position des Autos entlang der x-Achse und die Geschwindigkeit beobachten. +Die Mountain Car-Umgebung besteht aus einem Auto, das in einem Tal gefangen ist. Dein Ziel ist es, aus dem Tal herauszuspringen und die Fahne zu erreichen. Die Aktionen, die du ausführen kannst, sind: nach links beschleunigen, nach rechts beschleunigen oder nichts tun. Du kannst die Position des Autos entlang der x-Achse und die Geschwindigkeit beobachten. -## Notebook starten +## Start-Notebook -Starten Sie das Labor, indem Sie [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) öffnen. +Beginne das Lab, indem du [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) öffnest. -## Fazit +## Erkenntnis -Sie sollten während dieses Labors lernen, dass die Anpassung von RL-Algorithmen an eine neue Umgebung oft recht unkompliziert ist, da das OpenAI Gym für alle Umgebungen dieselbe Schnittstelle hat und Algorithmen somit nicht stark von der Natur der Umgebung abhängen. Sie können sogar den Python-Code so umstrukturieren, dass jede Umgebung als Parameter an den RL-Algorithmus übergeben wird. +Während dieses Labs solltest du lernen, dass die Anpassung von RL-Algorithmen an eine neue Umgebung oft recht unkompliziert ist, da OpenAI Gym für alle Umgebungen dieselbe Schnittstelle bietet und die Algorithmen im Allgemeinen nicht stark von der Art der Umgebung abhängen. Du kannst den Python-Code sogar so umstrukturieren, dass jede Umgebung als Parameter an den RL-Algorithmus übergeben werden kann. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/23-MultiagentSystems/README.md b/translations/de/lessons/6-Other/23-MultiagentSystems/README.md index e0c0b6f1..dcc9bec5 100644 --- a/translations/de/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/de/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ -# Multi-Agent-Systeme + +# Multi-Agenten-Systeme -Eine der möglichen Wege, Intelligenz zu erreichen, ist der sogenannte **emergente** (oder **synergetische**) Ansatz, der darauf basiert, dass das kombinierte Verhalten vieler relativ einfacher Agenten zu einem insgesamt komplexeren (oder intelligenten) Verhalten des Systems als Ganzes führen kann. Theoretisch beruht dies auf den Prinzipien der [kollektiven Intelligenz](https://de.wikipedia.org/wiki/Kollektive_Intelligenz), [Emergentismus](https://de.wikipedia.org/wiki/Emergentismus) und [evolutionären Kybernetik](https://de.wikipedia.org/wiki/Evolution%C3%A4re_Kybernetik), die besagen, dass höherstufige Systeme einen gewissen Mehrwert gewinnen, wenn sie richtig aus niederstufigen Systemen kombiniert werden (sogenanntes *Prinzip des Metasystemübergangs*). +Eine der möglichen Methoden, Intelligenz zu erreichen, ist der sogenannte **emergente** (oder **synergetische**) Ansatz, der auf der Tatsache basiert, dass das kombinierte Verhalten vieler relativ einfacher Agenten zu einem insgesamt komplexeren (oder intelligenteren) Verhalten des Systems als Ganzes führen kann. Theoretisch basiert dies auf den Prinzipien der [kollektiven Intelligenz](https://en.wikipedia.org/wiki/Collective_intelligence), des [Emergentismus](https://en.wikipedia.org/wiki/Global_brain) und der [evolutionären Kybernetik](https://en.wikipedia.org/wiki/Global_brain), die besagen, dass höherstufige Systeme einen Mehrwert erhalten, wenn sie richtig aus niedrigeren Systemen kombiniert werden (das sogenannte *Prinzip des Übergangs zu Metasystemen*). -## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Quiz vor der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -Der Bereich der **Multi-Agent-Systeme** hat sich in den 1990er Jahren als Reaktion auf das Wachstum des Internets und verteilter Systeme in der KI entwickelt. Eines der klassischen KI-Lehrbücher, [Künstliche Intelligenz: Ein moderner Ansatz](https://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz:_Ein_moderner_Ansatz), konzentriert sich auf die Sichtweise der klassischen KI aus der Perspektive von Multi-Agent-Systemen. +Die Richtung der **Multi-Agenten-Systeme** entstand in den 1990er Jahren in der KI als Reaktion auf das Wachstum des Internets und verteilter Systeme. Eines der klassischen Lehrbücher der KI, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), betrachtet die klassische KI aus der Perspektive von Multi-Agenten-Systemen. -Zentral für den Multi-Agenten-Ansatz ist der Begriff des **Agenten** - eine Entität, die in einer bestimmten **Umgebung** lebt, die sie wahrnehmen und beeinflussen kann. Dies ist eine sehr breite Definition, und es könnte viele verschiedene Arten und Klassifikationen von Agenten geben: +Im Mittelpunkt des Multi-Agenten-Ansatzes steht der Begriff des **Agenten** – eine Entität, die in einer **Umgebung** lebt, die sie wahrnehmen und auf die sie einwirken kann. Dies ist eine sehr breite Definition, und es gibt viele verschiedene Typen und Klassifikationen von Agenten: -* Nach ihrer Fähigkeit zu schlussfolgern: - - **Reaktive** Agenten haben in der Regel ein einfaches Anfrage-Antwort-Verhalten - - **Deliberative** Agenten verwenden eine Art logisches Denken und/oder Planungsfähigkeiten +* Nach ihrer Fähigkeit zu denken: + - **Reaktive** Agenten haben normalerweise ein einfaches Anfrage-Antwort-Verhalten. + - **Deliberative** Agenten nutzen eine Art logisches Denken und/oder Planungsfähigkeiten. * Nach dem Ort, an dem der Agent seinen Code ausführt: - - **Statische** Agenten arbeiten auf einem dedizierten Netzwerk-Knoten - - **Mobile** Agenten können ihren Code zwischen Netzwerk-Knoten bewegen + - **Statische** Agenten arbeiten auf einem dedizierten Netzwerkknoten. + - **Mobile** Agenten können ihren Code zwischen Netzwerkknoten verschieben. * Nach ihrem Verhalten: - - **Passive Agenten** haben keine spezifischen Ziele. Solche Agenten können auf externe Reize reagieren, initiieren jedoch selbst keine Aktionen. - - **Aktive Agenten** verfolgen bestimmte Ziele - - **Kognitive Agenten** beinhalten komplexe Planung und Schlussfolgerungen + - **Passive Agenten** haben keine spezifischen Ziele. Solche Agenten können auf externe Reize reagieren, initiieren jedoch keine eigenen Aktionen. + - **Aktive Agenten** verfolgen bestimmte Ziele. + - **Kognitive Agenten** beinhalten komplexe Planung und Denken. -Multi-Agent-Systeme werden heutzutage in einer Vielzahl von Anwendungen eingesetzt: +Multi-Agenten-Systeme werden heutzutage in einer Reihe von Anwendungen eingesetzt: -* In Spielen verwenden viele Nicht-Spieler-Charaktere eine Art von KI und können als intelligente Agenten betrachtet werden. -* In der Videoproduktion wird das Rendern komplexer 3D-Szenen, die Menschenmengen beinhalten, typischerweise durch Multi-Agenten-Simulationen durchgeführt. -* In der Systemmodellierung wird der Multi-Agenten-Ansatz verwendet, um das Verhalten eines komplexen Modells zu simulieren. Zum Beispiel wurde der Multi-Agenten-Ansatz erfolgreich genutzt, um die Ausbreitung der COVID-19-Krankheit weltweit vorherzusagen. Ein ähnlicher Ansatz kann verwendet werden, um den Verkehr in der Stadt zu modellieren und zu sehen, wie er auf Änderungen der Verkehrsregeln reagiert. -* In komplexen Automatisierungssystemen kann jedes Gerät als unabhängiger Agent fungieren, was das gesamte System weniger monolithisch und robuster macht. +* In Spielen nutzen viele Nicht-Spieler-Charaktere eine Art KI und können als intelligente Agenten betrachtet werden. +* In der Videoproduktion wird das Rendern komplexer 3D-Szenen, die Menschenmengen beinhalten, typischerweise mithilfe von Multi-Agenten-Simulationen durchgeführt. +* In der Systemmodellierung wird der Multi-Agenten-Ansatz verwendet, um das Verhalten eines komplexen Modells zu simulieren. Beispielsweise wurde der Multi-Agenten-Ansatz erfolgreich eingesetzt, um die weltweite Ausbreitung der COVID-19-Krankheit vorherzusagen. Ein ähnlicher Ansatz kann verwendet werden, um den Verkehr in einer Stadt zu modellieren und zu sehen, wie er auf Änderungen der Verkehrsregeln reagiert. +* In komplexen Automatisierungssystemen kann jedes Gerät als unabhängiger Agent agieren, wodurch das gesamte System weniger monolithisch und robuster wird. -Wir werden nicht viel Zeit damit verbringen, tief in Multi-Agent-Systeme einzutauchen, sondern ein Beispiel für **Multi-Agenten-Modellierung** betrachten. +Wir werden nicht viel Zeit damit verbringen, tief in Multi-Agenten-Systeme einzutauchen, sondern ein Beispiel für **Multi-Agenten-Modellierung** betrachten. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) ist eine Multi-Agenten-Modellierungsumgebung, die auf einer modifizierten Version der [Logo](https://de.wikipedia.org/wiki/Logo_(Programmiersprache))-Programmiersprache basiert. Diese Sprache wurde entwickelt, um Programmierkonzepte Kindern beizubringen, und ermöglicht es Ihnen, einen Agenten namens **Schildkröte** zu steuern, der sich bewegen und dabei eine Spur hinterlassen kann. Dies ermöglicht die Erstellung komplexer geometrischer Figuren, was eine sehr visuelle Art ist, das Verhalten eines Agenten zu verstehen. +[NetLogo](https://ccl.northwestern.edu/netlogo/) ist eine Multi-Agenten-Modellierungsumgebung, die auf einer modifizierten Version der [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language))-Programmiersprache basiert. Diese Sprache wurde entwickelt, um Kindern Programmierkonzepte beizubringen, und ermöglicht es, einen Agenten namens **Turtle** zu steuern, der sich bewegen und dabei eine Spur hinterlassen kann. Dies ermöglicht die Erstellung komplexer geometrischer Figuren, was eine sehr visuelle Möglichkeit ist, das Verhalten eines Agenten zu verstehen. -In NetLogo können wir viele Schildkröten erstellen, indem wir den `create-turtles`-Befehl verwenden. Wir können dann alle Schildkröten anweisen, einige Aktionen auszuführen (im folgenden Beispiel - 10 Punkte nach vorne): +In NetLogo können wir viele Turtles mit dem Befehl `create-turtles` erstellen. Anschließend können wir alle Turtles anweisen, bestimmte Aktionen auszuführen (im folgenden Beispiel - 10 Punkte vorwärts bewegen): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Natürlich ist es nicht interessant, wenn alle Schildkröten dasselbe tun, also können wir `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` ist der Name einer Rasse, und wir müssen sowohl das Singular- als auch das Pluralwort angeben, da verschiedene Befehle unterschiedliche Formen zur Klarheit verwenden. +Natürlich ist es nicht interessant, wenn alle Turtles dasselbe tun, daher können wir Gruppen von Turtles mit `ask` ansprechen, z. B. diejenigen, die sich in der Nähe eines bestimmten Punktes befinden. Wir können auch Turtles verschiedener *Rassen* mit dem Befehl `breed [cats cat]` erstellen. Hier ist `cat` der Name einer Rasse, und wir müssen sowohl das Singular- als auch das Pluralwort angeben, da verschiedene Befehle unterschiedliche Formen für Klarheit verwenden. -> ✅ Wir werden nicht in die Sprache NetLogo selbst eintauchen - Sie können die brillante [Interaktive NetLogo-Wörterbuch für Anfänger](https://ccl.northwestern.edu/netlogo/bind/) Ressource besuchen, wenn Sie mehr lernen möchten. +> ✅ Wir werden nicht in die NetLogo-Sprache selbst eintauchen – Sie können die großartige Ressource [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) besuchen, wenn Sie mehr lernen möchten. Sie können [NetLogo herunterladen](https://ccl.northwestern.edu/netlogo/download.shtml) und installieren, um es auszuprobieren. -### Modelle-Bibliothek +### Modellbibliothek -Eine großartige Sache an NetLogo ist, dass es eine Bibliothek von funktionierenden Modellen enthält, die Sie ausprobieren können. Gehen Sie zu **Datei → Modelle-Bibliothek**, und Sie haben viele Kategorien von Modellen zur Auswahl. +Ein großartiges Merkmal von NetLogo ist, dass es eine Bibliothek mit funktionierenden Modellen enthält, die Sie ausprobieren können. Gehen Sie zu **Datei → Modellbibliothek**, und Sie haben viele Kategorien von Modellen zur Auswahl. -NetLogo Modelle-Bibliothek +NetLogo Models Library -> Ein Screenshot der Modelle-Bibliothek von Dmitry Soshnikov +> Ein Screenshot der Modellbibliothek von Dmitry Soshnikov -Sie können eines der Modelle öffnen, zum Beispiel **Biologie → Vogelschwarm**. +Sie können eines der Modelle öffnen, zum Beispiel **Biologie → Flocking**. ### Hauptprinzipien -Nach dem Öffnen des Modells gelangen Sie zum Hauptbildschirm von NetLogo. Hier ist ein Beispielmodell, das die Population von Wölfen und Schafen beschreibt, bei begrenzten Ressourcen (Gras). +Nach dem Öffnen des Modells gelangen Sie zum Hauptbildschirm von NetLogo. Hier ist ein Beispielmodell, das die Population von Wölfen und Schafen beschreibt, basierend auf begrenzten Ressourcen (Gras). -![NetLogo Hauptbildschirm](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.de.png) +![NetLogo Main Screen](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) > Screenshot von Dmitry Soshnikov Auf diesem Bildschirm sehen Sie: -* Den Abschnitt **Schnittstelle**, der enthält: - - Das Hauptfeld, in dem alle Agenten leben - - Verschiedene Steuerungen: Tasten, Schieberegler usw. - - Grafiken, die Sie verwenden können, um Parameter der Simulation anzuzeigen -* Den **Code**-Tab, der den Editor enthält, in dem Sie NetLogo-Programme eingeben können +* Den **Interface**-Bereich, der Folgendes enthält: + - Das Hauptfeld, auf dem alle Agenten leben + - Verschiedene Steuerungen: Schaltflächen, Schieberegler usw. + - Diagramme, die Sie verwenden können, um Parameter der Simulation anzuzeigen +* Den **Code**-Tab, der den Editor enthält, in dem Sie NetLogo-Programme schreiben können -In den meisten Fällen hätte die Schnittstelle eine **Setup**-Taste, die den Simulationszustand initialisiert, und eine **Go**-Taste, die die Ausführung startet. Diese werden von den entsprechenden Handlern im Code behandelt, die so aussehen: +In den meisten Fällen enthält die Benutzeroberfläche eine **Setup**-Schaltfläche, die den Simulationszustand initialisiert, und eine **Go**-Schaltfläche, die die Ausführung startet. Diese werden von entsprechenden Handlern im Code gesteuert, die wie folgt aussehen: ``` to go [ @@ -83,72 +92,73 @@ to go [ Die Welt von NetLogo besteht aus den folgenden Objekten: -* **Agenten** (Schildkröten), die sich über das Feld bewegen und etwas tun können. Sie befehlen Agenten mit `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches`, um etwas zu tun. -* **Beobachter** ist ein einzigartiger Agent, der die Welt kontrolliert. Alle Button-Handler werden im *Beobachtungsmodus* ausgeführt. +* **Agenten** (Turtles), die sich über das Feld bewegen und etwas tun können. Sie steuern Agenten mit der Syntax `ask turtles [...]`, und der Code in den Klammern wird von allen Agenten im *Turtle-Modus* ausgeführt. +* **Patches** sind quadratische Bereiche des Feldes, auf denen Agenten leben. Sie können auf alle Agenten auf demselben Patch verweisen oder die Farben und einige andere Eigenschaften des Patches ändern. Sie können auch `ask patches` verwenden, um etwas zu tun. +* **Observer** ist ein einzigartiger Agent, der die Welt kontrolliert. Alle Button-Handler werden im *Observer-Modus* ausgeführt. -> ✅ Die Schönheit einer Multi-Agenten-Umgebung besteht darin, dass der Code, der im Schildkrötenmodus oder im Patchmodus ausgeführt wird, gleichzeitig von allen Agenten parallel ausgeführt wird. Durch das Schreiben eines kleinen Codes und das Programmieren des Verhaltens des einzelnen Agenten können Sie komplexes Verhalten des Simulationssystems als Ganzes erzeugen. +> ✅ Die Schönheit einer Multi-Agenten-Umgebung liegt darin, dass der Code, der im Turtle-Modus oder im Patch-Modus ausgeführt wird, gleichzeitig von allen Agenten parallel ausgeführt wird. Indem Sie also wenig Code schreiben und das Verhalten eines einzelnen Agenten programmieren, können Sie ein komplexes Verhalten des gesamten Simulationssystems erzeugen. -### Vogelschwarm +### Flocking -Als Beispiel für multi-agenten Verhalten betrachten wir **[Vogelschwarm](https://de.wikipedia.org/wiki/Vogelschwarm_(Verhalten))**. Vogelschwarm ist ein komplexes Muster, das dem ähnelt, wie Vogelschwärme fliegen. Wenn man ihnen beim Fliegen zusieht, könnte man denken, dass sie einem kollektiven Algorithmus folgen oder dass sie eine Form von *kollektiver Intelligenz* besitzen. Dieses komplexe Verhalten entsteht jedoch, wenn jeder einzelne Agent (in diesem Fall ein *Vogel*) nur einige andere Agenten in kurzer Distanz von sich beobachtet und drei einfache Regeln befolgt: +Als Beispiel für Multi-Agenten-Verhalten betrachten wir **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking ist ein komplexes Muster, das dem Flug von Vogelschwärmen sehr ähnlich ist. Wenn man sie fliegen sieht, könnte man denken, dass sie einer Art kollektivem Algorithmus folgen oder eine Form von *kollektiver Intelligenz* besitzen. Dieses komplexe Verhalten entsteht jedoch, wenn jeder einzelne Agent (in diesem Fall ein *Vogel*) nur einige andere Agenten in kurzer Entfernung beobachtet und drei einfache Regeln befolgt: -* **Ausrichtung** - er steuert in Richtung des durchschnittlichen Kurs der benachbarten Agenten -* **Kohäsion** - er versucht, in Richtung der durchschnittlichen Position der Nachbarn zu steuern (*langfristige Anziehung*) -* **Trennung** - wenn er zu nah an anderen Vögeln ist, versucht er, sich zu entfernen (*kurzfristige Abstoßung*) +* **Ausrichtung** – es steuert in Richtung der durchschnittlichen Flugrichtung benachbarter Agenten. +* **Kohäsion** – es versucht, sich in Richtung der durchschnittlichen Position der Nachbarn zu bewegen (*langreichweite Anziehung*). +* **Trennung** – wenn es anderen Vögeln zu nahe kommt, versucht es, sich zu entfernen (*kurzreichweite Abstoßung*). -Sie können das Vogelschwarm-Beispiel ausführen und das Verhalten beobachten. Sie können auch Parameter anpassen, wie den *Grad der Trennung* oder den *Sichtbereich*, der definiert, wie weit jeder Vogel sehen kann. Beachten Sie, dass, wenn Sie den Sichtbereich auf 0 reduzieren, alle Vögel blind werden und der Vogelschwarm stoppt. Wenn Sie die Trennung auf 0 reduzieren, versammeln sich alle Vögel in einer geraden Linie. +Sie können das Flocking-Beispiel ausführen und das Verhalten beobachten. Sie können auch Parameter anpassen, wie z. B. den *Grad der Trennung* oder die *Sichtweite*, die definiert, wie weit jeder Vogel sehen kann. Beachten Sie, dass alle Vögel blind werden und das Flocking stoppt, wenn Sie die Sichtweite auf 0 reduzieren. Wenn Sie die Trennung auf 0 reduzieren, sammeln sich alle Vögel in einer geraden Linie. -> ✅ Wechseln Sie zum **Code**-Tab und sehen Sie, wo die drei Regeln des Vogelschwarmes (Ausrichtung, Kohäsion und Trennung) im Code implementiert sind. Beachten Sie, wie wir uns nur auf die Agenten beziehen, die in Sichtweite sind. +> ✅ Wechseln Sie zum **Code**-Tab und sehen Sie, wo die drei Regeln des Flockings (Ausrichtung, Kohäsion und Trennung) im Code implementiert sind. Beachten Sie, wie wir uns nur auf die Agenten beziehen, die in Sichtweite sind. ### Weitere Modelle zum Ausprobieren -Es gibt noch einige weitere interessante Modelle, mit denen Sie experimentieren können: +Es gibt einige weitere interessante Modelle, die Sie ausprobieren können: -* **Kunst → Feuerwerk** zeigt, wie ein Feuerwerk als kollektives Verhalten individueller Feuerströme betrachtet werden kann. -* **Sozialwissenschaft → Verkehr Grundlegend** und **Sozialwissenschaft → Verkehr Raster** zeigen das Modell des Stadtverkehrs in 1D und 2D Rastern mit oder ohne Ampeln. Jedes Auto in der Simulation folgt den folgenden Regeln: - - Wenn der Raum vor ihm leer ist - beschleunigen (bis zu einer bestimmten Höchstgeschwindigkeit) - - Wenn es ein Hindernis vor sich sieht - bremsen (und Sie können anpassen, wie weit ein Fahrer sehen kann) -* **Sozialwissenschaft → Party** zeigt, wie Menschen sich während einer Cocktailparty gruppieren. Sie können die Kombination von Parametern finden, die zu einer schnellsten Steigerung des Glücks der Gruppe führen. +* **Kunst → Feuerwerk** zeigt, wie ein Feuerwerk als kollektives Verhalten einzelner Feuerströme betrachtet werden kann. +* **Sozialwissenschaften → Verkehr Basic** und **Sozialwissenschaften → Verkehr Grid** zeigen das Modell des Stadtverkehrs in 1D und 2D-Gitter mit oder ohne Ampeln. Jedes Auto in der Simulation folgt den folgenden Regeln: + - Wenn der Raum vor ihm leer ist – beschleunigen (bis zu einer bestimmten Maximalgeschwindigkeit). + - Wenn es ein Hindernis vor sich sieht – bremsen (und Sie können anpassen, wie weit ein Fahrer sehen kann). +* **Sozialwissenschaften → Party** zeigt, wie sich Menschen während einer Cocktailparty gruppieren. Sie können die Kombination von Parametern finden, die zu einer schnelleren Steigerung der Gruppenfreude führt. -Wie Sie an diesen Beispielen sehen können, können Multi-Agenten-Simulationen eine nützliche Möglichkeit sein, das Verhalten eines komplexen Systems zu verstehen, das aus Individuen besteht, die der gleichen oder ähnlichen Logik folgen. Sie können auch verwendet werden, um virtuelle Agenten zu steuern, wie [NPCs](https://de.wikipedia.org/wiki/NPC) in Computerspielen oder Agenten in 3D-animierten Welten. +Wie Sie aus diesen Beispielen sehen können, können Multi-Agenten-Simulationen eine nützliche Möglichkeit sein, das Verhalten eines komplexen Systems zu verstehen, das aus Individuen besteht, die derselben oder ähnlichen Logik folgen. Es kann auch verwendet werden, um virtuelle Agenten wie [NPCs](https://en.wikipedia.org/wiki/NPC) in Computerspielen oder Agenten in 3D-animierten Welten zu steuern. ## Deliberative Agenten -Die oben beschriebenen Agenten sind sehr einfach und reagieren auf Veränderungen in der Umgebung mithilfe einer Art Algorithmus. Daher sind sie **reaktive Agenten**. Manchmal können Agenten jedoch auch schlussfolgern und ihre Aktionen planen, in diesem Fall werden sie als **deliberative** bezeichnet. +Die oben beschriebenen Agenten sind sehr einfach und reagieren auf Änderungen in der Umgebung mithilfe einer Art Algorithmus. Als solche sind sie **reaktive Agenten**. Manchmal können Agenten jedoch denken und ihre Aktionen planen, in diesem Fall werden sie als **deliberative** bezeichnet. -Ein typisches Beispiel wäre ein persönlicher Agent, der eine Anweisung von einem Menschen erhält, um eine Urlaubsreise zu buchen. Angenommen, es gibt viele Agenten, die im Internet leben und ihm helfen können. Er sollte dann andere Agenten kontaktieren, um zu sehen, welche Flüge verfügbar sind, wie die Hotelpreise an verschiedenen Daten sind, und versuchen, den besten Preis auszuhandeln. Wenn der Urlaubsplan abgeschlossen und vom Besitzer bestätigt ist, kann er mit der Buchung fortfahren. +Ein typisches Beispiel wäre ein persönlicher Agent, der von einem Menschen die Anweisung erhält, eine Urlaubsreise zu buchen. Angenommen, es gibt viele Agenten im Internet, die ihm helfen können. Er sollte dann andere Agenten kontaktieren, um herauszufinden, welche Flüge verfügbar sind, wie hoch die Hotelpreise für verschiedene Daten sind, und versuchen, den besten Preis auszuhandeln. Wenn der Urlaubsplan abgeschlossen und vom Besitzer bestätigt ist, kann er mit der Buchung fortfahren. Um dies zu tun, müssen Agenten **kommunizieren**. Für eine erfolgreiche Kommunikation benötigen sie: -* Einige **Standardsprachen zum Austausch von Wissen**, wie [Knowledge Interchange Format](https://de.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) und [Knowledge Query and Manipulation Language](https://de.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Diese Sprachen sind auf der Grundlage der [Sprechakt-Theorie](https://de.wikipedia.org/wiki/Sprechakt) entworfen. -* Diese Sprachen sollten auch einige **Protokolle für Verhandlungen** beinhalten, basierend auf verschiedenen **Auktionsarten**. -* Eine **gemeinsame Ontologie**, die verwendet wird, damit sie sich auf die gleichen Konzepte beziehen und deren Semantik kennen. -* Eine Möglichkeit, um zu **entdecken**, was verschiedene Agenten tun können, ebenfalls basierend auf einer Art Ontologie. +* Einige **Standardsprachen zum Austausch von Wissen**, wie [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) und [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Diese Sprachen basieren auf der [Sprechakttheorie](https://en.wikipedia.org/wiki/Speech_act). +* Diese Sprachen sollten auch einige **Protokolle für Verhandlungen** enthalten, basierend auf verschiedenen **Auktionstypen**. +* Eine **gemeinsame Ontologie**, damit sie sich auf dieselben Konzepte beziehen und deren Semantik kennen. +* Eine Möglichkeit, herauszufinden, was verschiedene Agenten tun können, ebenfalls basierend auf einer Art Ontologie. -Deliberative Agenten sind viel komplexer als reaktive, da sie nicht nur auf Veränderungen in der Umgebung reagieren, sondern auch in der Lage sein sollten, Aktionen *zu initiieren*. Eine der vorgeschlagenen Architekturen für deliberative Agenten ist der sogenannte Belief-Desire-Intention (BDI) Agent: +Deliberative Agenten sind viel komplexer als reaktive, da sie nicht nur auf Änderungen in der Umgebung reagieren, sondern auch Aktionen initiieren können. Eine der vorgeschlagenen Architekturen für deliberative Agenten ist der sogenannte Belief-Desire-Intention (BDI)-Agent: -* **Überzeugungen** bilden ein Set von Wissen über die Umgebung eines Agenten. Es kann als Wissensbasis oder Regelset strukturiert sein, das ein Agent auf eine spezifische Situation in der Umgebung anwenden kann. -* **Wünsche** definieren, was ein Agent tun möchte, d.h. seine Ziele. Zum Beispiel ist das Ziel des oben genannten persönlichen Assistenten, eine Reise zu buchen, und das Ziel eines Hotelagenten ist es, den Gewinn zu maximieren. -* **Absichten** sind spezifische Aktionen, die ein Agent plant, um seine Ziele zu erreichen. Aktionen verändern typischerweise die Umgebung und verursachen Kommunikation mit anderen Agenten. +* **Beliefs** bilden eine Wissensbasis über die Umgebung eines Agenten. Sie können als Wissensdatenbank oder Regelwerk strukturiert sein, das ein Agent auf eine bestimmte Situation in der Umgebung anwenden kann. +* **Desires** definieren, was ein Agent tun möchte, d. h. seine Ziele. Zum Beispiel ist das Ziel des persönlichen Assistenten-Agenten oben, eine Reise zu buchen, und das Ziel eines Hotel-Agenten ist es, den Gewinn zu maximieren. +* **Intentions** sind spezifische Aktionen, die ein Agent plant, um seine Ziele zu erreichen. Aktionen ändern typischerweise die Umgebung und führen zu Kommunikation mit anderen Agenten. -Es gibt einige Plattformen, die für den Aufbau von Multi-Agenten-Systemen verfügbar sind, wie [JADE](https://jade.tilab.com/). [Dieses Papier](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) enthält eine Übersicht über Multi-Agenten-Plattformen, zusammen mit einer kurzen Geschichte der Multi-Agenten-Systeme und ihren verschiedenen Anwendungsszenarien. +Es gibt einige Plattformen, die für den Aufbau von Multi-Agenten-Systemen verfügbar sind, wie [JADE](https://jade.tilab.com/). [Dieses Papier](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) enthält eine Übersicht über Multi-Agenten-Plattformen sowie eine kurze Geschichte der Multi-Agenten-Systeme und ihrer verschiedenen Anwendungsszenarien. ## Fazit -Multi-Agent-Systeme können sehr unterschiedliche Formen annehmen und in vielen verschiedenen Anwendungen eingesetzt werden. Sie konzentrieren sich alle auf das einfachere Verhalten eines einzelnen Agenten und erreichen komplexeres Verhalten des Gesamtsystems aufgrund des **synergetischen Effekts**. +Multi-Agenten-Systeme können sehr unterschiedliche Formen annehmen und in vielen verschiedenen Anwendungen eingesetzt werden. +Sie konzentrieren sich alle auf das einfachere Verhalten eines einzelnen Agenten und erreichen ein komplexeres Verhalten des Gesamtsystems durch den **synergetischen Effekt**. ## 🚀 Herausforderung -Bringen Sie diese Lektion in die reale Welt und versuchen Sie, ein Multi-Agenten-System zu konzipieren, das ein Problem lösen kann. Was müsste ein Multi-Agenten-System beispielsweise tun, um eine Schulbusroute zu optimieren? Wie könnte es in einer Bäckerei funktionieren? +Übertragen Sie diese Lektion in die reale Welt und versuchen Sie, ein Multi-Agenten-System zu konzeptualisieren, das ein Problem lösen kann. Was müsste ein Multi-Agenten-System beispielsweise tun, um eine Schulbusroute zu optimieren? Wie könnte es in einer Bäckerei funktionieren? -## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) ## Überprüfung & Selbststudium -Überprüfen Sie die Verwendung dieses Typs von Systemen in der Industrie. Wählen Sie ein Gebiet wie die Fertigung oder die Videospielindustrie aus und entdecken Sie, wie Multi-Agenten-Systeme verwendet werden können, um einzigartige Probleme zu lösen. +Überprüfen Sie die Verwendung dieses Systemtyps in der Industrie. Wählen Sie einen Bereich wie die Fertigung oder die Videospielindustrie und entdecken Sie, wie Multi-Agenten-Systeme verwendet werden können, um einzigartige Probleme zu lösen. ## [NetLogo Aufgabe](assignment.md) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md index 5ec16f49..6e5c7f37 100644 --- a/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ + # NetLogo Aufgabe -Wählen Sie eines der Modelle aus der Bibliothek von NetLogo und verwenden Sie es, um eine reale Situation so genau wie möglich zu simulieren. Ein gutes Beispiel wäre, das Virus-Modell im Ordner Alternative Visualisierungen anzupassen, um zu zeigen, wie es verwendet werden kann, um die Verbreitung von COVID-19 zu modellieren. Können Sie ein Modell erstellen, das eine reale virale Verbreitung nachahmt? +Nehmen Sie eines der Modelle aus der NetLogo-Bibliothek und verwenden Sie es, um eine reale Situation so genau wie möglich zu simulieren. Ein gutes Beispiel wäre, das Virus-Modell im Ordner Alternative Visualisierungen anzupassen, um zu zeigen, wie es verwendet werden kann, um die Ausbreitung von COVID-19 zu modellieren. Können Sie ein Modell erstellen, das die Ausbreitung eines echten Virus nachahmt? Zeigen Sie Ihre Arbeit, indem Sie eine Kopie speichern und ein Video-Demo erstellen, das erklärt, wie das Modell mit einer realen Situation verbunden ist. **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/7-Ethics/README.md b/translations/de/lessons/7-Ethics/README.md index 2f576bb0..d19a0bbc 100644 --- a/translations/de/lessons/7-Ethics/README.md +++ b/translations/de/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# Ethische und Verantwortungsvolle KI + +# Ethische und verantwortungsvolle KI -Sie haben diesen Kurs fast abgeschlossen, und ich hoffe, dass Sie inzwischen klar erkennen, dass KI auf einer Reihe von formalen mathematischen Methoden basiert, die es uns ermöglichen, Beziehungen in Daten zu finden und Modelle zu trainieren, um einige Aspekte menschlichen Verhaltens zu replizieren. An diesem Punkt in der Geschichte betrachten wir KI als ein sehr mächtiges Werkzeug, um Muster aus Daten zu extrahieren und diese Muster anzuwenden, um neue Probleme zu lösen. +Sie haben diesen Kurs fast abgeschlossen, und ich hoffe, dass Sie mittlerweile klar erkennen, dass KI auf einer Reihe formaler mathematischer Methoden basiert, die es uns ermöglichen, Beziehungen in Daten zu finden und Modelle zu trainieren, um bestimmte Aspekte menschlichen Verhaltens nachzubilden. Zu diesem Zeitpunkt in der Geschichte betrachten wir KI als ein sehr mächtiges Werkzeug, um Muster aus Daten zu extrahieren und diese Muster anzuwenden, um neue Probleme zu lösen. -## [Vorlesungsquiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Quiz vor der Vorlesung](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -In der Science-Fiction sehen wir jedoch oft Geschichten, in denen KI eine Gefahr für die Menschheit darstellt. In der Regel konzentrieren sich diese Geschichten auf eine Art von KI-Rebellion, wenn KI beschließt, sich den Menschen zu widersetzen. Das impliziert, dass KI eine Art von Emotion hat oder Entscheidungen trifft, die von ihren Entwicklern nicht vorhergesehen wurden. +In der Science-Fiction sehen wir jedoch oft Geschichten, in denen KI eine Gefahr für die Menschheit darstellt. Diese Geschichten drehen sich meist um eine Art KI-Rebellion, bei der die KI beschließt, sich gegen die Menschen zu stellen. Dies impliziert, dass KI eine Art Emotion besitzt oder Entscheidungen treffen kann, die von ihren Entwicklern nicht vorhergesehen wurden. -Die Art von KI, die wir in diesem Kurs kennengelernt haben, ist nichts weiter als große Matrizenarithmetik. Es ist ein sehr mächtiges Werkzeug, das uns hilft, unsere Probleme zu lösen, und wie jedes andere mächtige Werkzeug kann es sowohl für gute als auch für schlechte Zwecke eingesetzt werden. Wichtig ist, dass es *missbraucht* werden kann. +Die Art von KI, die wir in diesem Kurs kennengelernt haben, ist nichts anderes als umfangreiche Matrizenarithmetik. Es ist ein sehr mächtiges Werkzeug, das uns hilft, unsere Probleme zu lösen, und wie jedes andere mächtige Werkzeug kann es sowohl für gute als auch für schlechte Zwecke eingesetzt werden. Wichtig ist, dass es *missbraucht* werden kann. -## Prinzipien der Verantwortungsvolle KI +## Prinzipien der verantwortungsvollen KI -Um diesen unbeabsichtigten oder absichtlichen Missbrauch von KI zu vermeiden, gibt Microsoft die wichtigen [Prinzipien der Verantwortungsvolle KI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) an. Die folgenden Konzepte bilden die Grundlage für diese Prinzipien: +Um einen zufälligen oder absichtlichen Missbrauch von KI zu vermeiden, hat Microsoft die wichtigen [Prinzipien der verantwortungsvollen KI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) definiert. Die folgenden Konzepte bilden die Grundlage dieser Prinzipien: -* **Fairness** hängt mit dem wichtigen Problem der *Modellverzerrungen* zusammen, die durch die Verwendung von voreingenommenen Daten für das Training verursacht werden können. Zum Beispiel, wenn wir die Wahrscheinlichkeit vorhersagen wollen, dass eine Person einen Job als Softwareentwickler erhält, wird das Modell wahrscheinlich Männern eine höhere Präferenz einräumen – nur weil der Trainingsdatensatz wahrscheinlich auf ein männliches Publikum ausgerichtet war. Wir müssen die Trainingsdaten sorgfältig ausbalancieren und das Modell untersuchen, um Verzerrungen zu vermeiden und sicherzustellen, dass das Modell relevantere Merkmale berücksichtigt. -* **Zuverlässigkeit und Sicherheit**. Aufgrund ihrer Natur können KI-Modelle Fehler machen. Ein neuronales Netzwerk gibt Wahrscheinlichkeiten zurück, und wir müssen dies bei Entscheidungen berücksichtigen. Jedes Modell hat eine gewisse Präzision und Rückrufquote, und wir müssen verstehen, dass wir Schäden, die falsche Ratschläge verursachen können, verhindern müssen. -* **Datenschutz und Sicherheit** haben einige KI-spezifische Implikationen. Zum Beispiel, wenn wir einige Daten zum Trainieren eines Modells verwenden, werden diese Daten irgendwie "integriert" in das Modell. Einerseits erhöht das die Sicherheit und den Datenschutz, andererseits müssen wir uns daran erinnern, auf welchen Daten das Modell trainiert wurde. -* **Inklusivität** bedeutet, dass wir KI nicht entwickeln, um Menschen zu ersetzen, sondern um Menschen zu unterstützen und unsere Arbeit kreativer zu gestalten. Es hängt auch mit Fairness zusammen, denn im Umgang mit unterrepräsentierten Gemeinschaften sind die meisten Datensätze, die wir sammeln, wahrscheinlich voreingenommen, und wir müssen sicherstellen, dass diese Gemeinschaften einbezogen und korrekt von der KI behandelt werden. -* **Transparenz**. Dazu gehört, dass wir immer klar kommunizieren, dass KI verwendet wird. Auch wo immer möglich, möchten wir KI-Systeme nutzen, die *interpretierbar* sind. -* **Rechenschaftspflicht**. Wenn KI-Modelle Entscheidungen treffen, ist nicht immer klar, wer für diese Entscheidungen verantwortlich ist. Wir müssen sicherstellen, dass wir verstehen, wo die Verantwortung für KI-Entscheidungen liegt. In den meisten Fällen möchten wir Menschen in den Entscheidungsprozess einbeziehen, damit tatsächliche Personen zur Rechenschaft gezogen werden. +* **Fairness** bezieht sich auf das wichtige Problem der *Modellverzerrungen*, die durch die Verwendung von voreingenommenen Trainingsdaten verursacht werden können. Zum Beispiel, wenn wir versuchen, die Wahrscheinlichkeit vorherzusagen, dass eine Person einen Job als Softwareentwickler bekommt, wird das Modell wahrscheinlich Männern den Vorzug geben – einfach weil der Trainingsdatensatz wahrscheinlich auf eine männliche Zielgruppe ausgerichtet war. Wir müssen die Trainingsdaten sorgfältig ausbalancieren und das Modell untersuchen, um Verzerrungen zu vermeiden und sicherzustellen, dass das Modell relevantere Merkmale berücksichtigt. +* **Zuverlässigkeit und Sicherheit**. KI-Modelle können von Natur aus Fehler machen. Ein neuronales Netzwerk liefert Wahrscheinlichkeiten, und das müssen wir bei Entscheidungen berücksichtigen. Jedes Modell hat eine bestimmte Präzision und einen bestimmten Rückrufwert, und wir müssen das verstehen, um Schäden zu vermeiden, die durch falsche Ratschläge entstehen können. +* **Privatsphäre und Sicherheit** haben einige KI-spezifische Implikationen. Zum Beispiel wird die verwendete Trainingsdaten irgendwie in das Modell "integriert". Einerseits erhöht das die Sicherheit und Privatsphäre, andererseits müssen wir uns daran erinnern, welche Daten für das Training des Modells verwendet wurden. +* **Inklusivität** bedeutet, dass wir KI nicht entwickeln, um Menschen zu ersetzen, sondern um sie zu unterstützen und unsere Arbeit kreativer zu gestalten. Es steht auch in Zusammenhang mit Fairness, denn wenn wir mit unterrepräsentierten Gemeinschaften arbeiten, sind die meisten der gesammelten Datensätze wahrscheinlich voreingenommen. Wir müssen sicherstellen, dass diese Gemeinschaften einbezogen und korrekt von der KI behandelt werden. +* **Transparenz**. Dazu gehört, dass wir immer klarstellen, wenn KI verwendet wird. Außerdem möchten wir, wo immer möglich, KI-Systeme verwenden, die *interpretierbar* sind. +* **Verantwortlichkeit**. Wenn KI-Modelle Entscheidungen treffen, ist nicht immer klar, wer für diese Entscheidungen verantwortlich ist. Wir müssen sicherstellen, dass wir verstehen, wo die Verantwortung für KI-Entscheidungen liegt. In den meisten Fällen möchten wir Menschen in den Entscheidungsprozess einbeziehen, damit tatsächliche Personen zur Verantwortung gezogen werden können. -## Werkzeuge für Verantwortungsvolle KI +## Werkzeuge für verantwortungsvolle KI -Microsoft hat die [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) entwickelt, die eine Reihe von Werkzeugen enthält: +Microsoft hat das [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) entwickelt, das eine Reihe von Werkzeugen enthält: -* Interpretierbarkeit-Dashboard (InterpretML) -* Fairness-Dashboard (FairLearn) -* Fehleranalyse-Dashboard -* Verantwortungsvolles KI-Dashboard, das Folgendes umfasst +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, das Folgendes umfasst: - - EconML - ein Werkzeug für Kausalanalyse, das sich auf Was-wäre-wenn-Fragen konzentriert - - DiCE - ein Werkzeug für kontrafaktische Analysen, mit dem Sie sehen können, welche Merkmale geändert werden müssen, um die Entscheidung des Modells zu beeinflussen + - EconML – ein Tool für Kausalanalysen, das sich auf Was-wäre-wenn-Fragen konzentriert + - DiCE – ein Tool für kontrafaktische Analysen, mit dem Sie sehen können, welche Merkmale geändert werden müssen, um die Entscheidung des Modells zu beeinflussen -Für weitere Informationen über KI-Ethische Grundsätze besuchen Sie bitte [diese Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) im Lehrplan für maschinelles Lernen, der Aufgaben enthält. +Weitere Informationen zur KI-Ethik finden Sie in [dieser Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) im Machine Learning Curriculum, das auch Aufgaben enthält. ## Überprüfung & Selbststudium -Nehmen Sie diesen [Lernpfad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), um mehr über verantwortungsvolle KI zu erfahren. +Nehmen Sie an diesem [Lernpfad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) teil, um mehr über verantwortungsvolle KI zu erfahren. -## [Nachlesungsquiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Quiz nach der Vorlesung](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/README.md b/translations/de/lessons/README.md index fdb6e6d6..b2aae705 100644 --- a/translations/de/lessons/README.md +++ b/translations/de/lessons/README.md @@ -1,8 +1,17 @@ -# Übersicht + +# Überblick -![Übersicht in einem Doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.de.png) +![Überblick in einer Kritzelei](../../../lessons/sketchnotes/ai-overview.png) > Sketchnote von [Tomomi Imura](https://twitter.com/girlie_mac) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/X-Extras/X1-MultiModal/README.md b/translations/de/lessons/X-Extras/X1-MultiModal/README.md index 98cf2596..f0416fe7 100644 --- a/translations/de/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/de/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ -# Multi-Modal Netzwerke + +# Multi-Modale Netzwerke -Nach dem Erfolg von Transformermodellen zur Lösung von NLP-Aufgaben wurden dieselben oder ähnliche Architekturen auf Aufgaben der Computer Vision angewendet. Das Interesse wächst, Modelle zu entwickeln, die die Fähigkeiten von Vision und natürlicher Sprache *kombinieren*. Ein solcher Versuch wurde von OpenAI unternommen und trägt den Namen CLIP und DALL.E. +Nach dem Erfolg von Transformer-Modellen bei der Lösung von NLP-Aufgaben wurden ähnliche Architekturen auch auf Aufgaben der Computer Vision angewendet. Es gibt ein wachsendes Interesse daran, Modelle zu entwickeln, die Vision- und Sprachfähigkeiten *kombinieren*. Ein solcher Versuch wurde von OpenAI unternommen und nennt sich CLIP und DALL.E. -## Kontrastives Bildvortraining (CLIP) +## Contrastive Image Pre-Training (CLIP) -Die Hauptidee von CLIP besteht darin, Textaufforderungen mit einem Bild zu vergleichen und zu bestimmen, wie gut das Bild zur Aufforderung passt. +Die Hauptidee von CLIP ist, Textaufforderungen mit einem Bild vergleichen zu können und zu bestimmen, wie gut das Bild zur Aufforderung passt. -![CLIP Architektur](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.de.png) +![CLIP Architektur](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) > *Bild aus [diesem Blogbeitrag](https://openai.com/blog/clip/)* -Das Modell wird mit Bildern aus dem Internet und deren Beschreibungen trainiert. Für jede Batch nehmen wir N Paare von (Bild, Text) und wandeln sie in einige Vektorrepräsentationen um. Diese Repräsentationen werden dann zusammengeführt. Die Verlustfunktion ist so definiert, dass die Kosinusähnlichkeit zwischen Vektoren eines Paares (z.B. I und T) maximiert und die Kosinusähnlichkeit zwischen allen anderen Paaren minimiert wird. Das ist der Grund, warum dieser Ansatz als **kontrastiv** bezeichnet wird. +Das Modell wird mit Bildern aus dem Internet und deren Beschreibungen trainiert. Für jede Batch nehmen wir N Paare aus (Bild, Text) und konvertieren sie in Vektorrepräsentationen I, ..., I / T, ..., T. Diese Repräsentationen werden dann miteinander abgeglichen. Die Verlustfunktion ist so definiert, dass die Kosinusähnlichkeit zwischen den Vektoren eines Paares (z. B. I und T) maximiert und die Kosinusähnlichkeit zwischen allen anderen Paaren minimiert wird. Aus diesem Grund wird dieser Ansatz als **kontrastiv** bezeichnet. -Das CLIP-Modell/bibliothek ist von [OpenAI GitHub](https://github.com/openai/CLIP) verfügbar. Der Ansatz wird in [diesem Blogbeitrag](https://openai.com/blog/clip/) beschrieben und detaillierter in [diesem Papier](https://arxiv.org/pdf/2103.00020.pdf). +Die CLIP-Bibliothek/Modell ist verfügbar auf [OpenAI GitHub](https://github.com/openai/CLIP). Der Ansatz wird in [diesem Blogbeitrag](https://openai.com/blog/clip/) beschrieben und ausführlicher in [diesem Paper](https://arxiv.org/pdf/2103.00020.pdf). -Sobald dieses Modell vortrainiert ist, können wir ihm eine Batch von Bildern und eine Batch von Textaufforderungen geben, und es wird uns den Tensor mit Wahrscheinlichkeiten zurückgeben. CLIP kann für mehrere Aufgaben verwendet werden: +Sobald dieses Modell vortrainiert ist, können wir ihm eine Batch von Bildern und eine Batch von Textaufforderungen geben, und es wird einen Tensor mit Wahrscheinlichkeiten zurückgeben. CLIP kann für verschiedene Aufgaben verwendet werden: **Bildklassifikation** -Angenommen, wir müssen Bilder zwischen, sagen wir, Katzen, Hunden und Menschen klassifizieren. In diesem Fall können wir dem Modell ein Bild und eine Reihe von Textaufforderungen geben: "*ein Bild einer Katze*", "*ein Bild eines Hundes*", "*ein Bild eines Menschen*". In dem resultierenden Vektor von 3 Wahrscheinlichkeiten müssen wir nur den Index mit dem höchsten Wert auswählen. +Angenommen, wir müssen Bilder zwischen Katzen, Hunden und Menschen klassifizieren. In diesem Fall können wir dem Modell ein Bild und eine Reihe von Textaufforderungen geben: "*ein Bild einer Katze*", "*ein Bild eines Hundes*", "*ein Bild eines Menschen*". Im resultierenden Vektor mit 3 Wahrscheinlichkeiten müssen wir nur den Index mit dem höchsten Wert auswählen. -![CLIP für Bildklassifikation](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.de.png) +![CLIP für Bildklassifikation](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) > *Bild aus [diesem Blogbeitrag](https://openai.com/blog/clip/)* **Textbasierte Bildsuche** -Wir können auch das Gegenteil tun. Wenn wir eine Sammlung von Bildern haben, können wir diese Sammlung dem Modell übergeben und eine Textaufforderung - das wird uns das Bild zurückgeben, das der gegebenen Aufforderung am ähnlichsten ist. +Wir können auch das Gegenteil tun. Wenn wir eine Sammlung von Bildern haben, können wir diese Sammlung dem Modell übergeben und eine Textaufforderung - dies wird uns das Bild geben, das am ähnlichsten zur gegebenen Aufforderung ist. ## ✍️ Beispiel: [CLIP für Bildklassifikation und Bildsuche verwenden](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -Öffnen Sie das [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) Notizbuch, um CLIP in Aktion zu sehen. +Öffne das [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb)-Notebook, um CLIP in Aktion zu sehen. -## Bildgenerierung mit VQGAN+ CLIP +## Bildgenerierung mit VQGAN+CLIP -CLIP kann auch für die **Bildgenerierung** aus einer Textaufforderung verwendet werden. Um dies zu tun, benötigen wir ein **Generator-Modell**, das in der Lage ist, Bilder basierend auf einem Vektor-Input zu erzeugen. Eines dieser Modelle wird [VQGAN](https://compvis.github.io/taming-transformers/) (Vektor-Quantisierter GAN) genannt. +CLIP kann auch für die **Bildgenerierung** aus einer Textaufforderung verwendet werden. Dazu benötigen wir ein **Generator-Modell**, das Bilder basierend auf einer Vektoreingabe generieren kann. Eines dieser Modelle nennt sich [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). -Die Hauptideen von VQGAN, die es von gewöhnlichen [GAN](../../4-ComputerVision/10-GANs/README.md) unterscheiden, sind die folgenden: -* Verwendung einer autoregressiven Transformer-Architektur zur Generierung einer Sequenz von kontextreichen visuellen Teilen, die das Bild zusammensetzen. Diese visuellen Teile werden wiederum von [CNN](../../4-ComputerVision/07-ConvNets/README.md) gelernt. -* Verwendung eines Subbild-Discriminators, der erkennt, ob Teile des Bildes "echt" oder "falsch" sind (im Gegensatz zu dem "Alles-oder-Nichts"-Ansatz in traditionellen GANs). +Die Hauptideen von VQGAN, die es von gewöhnlichen [GAN](../../4-ComputerVision/10-GANs/README.md) unterscheiden, sind folgende: +* Verwendung einer autoregressiven Transformer-Architektur, um eine Sequenz kontextreicher visueller Teile zu generieren, die das Bild zusammensetzen. Diese visuellen Teile werden wiederum von [CNN](../../4-ComputerVision/07-ConvNets/README.md) gelernt. +* Einsatz eines Sub-Bild-Diskriminators, der erkennt, ob Teile des Bildes "echt" oder "gefälscht" sind (im Gegensatz zum "Alles-oder-Nichts"-Ansatz bei traditionellen GANs). -Erfahren Sie mehr über VQGAN auf der Website [Taming Transformers](https://compvis.github.io/taming-transformers/). +Erfahre mehr über VQGAN auf der [Taming Transformers](https://compvis.github.io/taming-transformers/) Webseite. -Einer der wichtigen Unterschiede zwischen VQGAN und traditionellen GAN ist, dass letztere aus jedem Eingangsvektor ein annehmbares Bild erzeugen können, während VQGAN wahrscheinlich ein Bild erzeugt, das nicht kohärent wäre. Daher müssen wir den Bildschaffungsprozess weiter leiten, und das kann mit CLIP erfolgen. +Ein wichtiger Unterschied zwischen VQGAN und traditionellen GANs ist, dass letztere ein brauchbares Bild aus jedem Eingabevektor erzeugen können, während VQGAN wahrscheinlich ein Bild erzeugt, das nicht kohärent ist. Daher müssen wir den Bildgenerierungsprozess weiter steuern, und das kann mit CLIP erfolgen. -![VQGAN+CLIP Architektur](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.de.png) +![VQGAN+CLIP Architektur](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) -Um ein Bild zu erzeugen, das einer Textaufforderung entspricht, beginnen wir mit einem zufälligen Kodierungsvektor, der durch VQGAN geleitet wird, um ein Bild zu erzeugen. Dann wird CLIP verwendet, um eine Verlustfunktion zu erzeugen, die zeigt, wie gut das Bild zur Textaufforderung passt. Das Ziel ist es dann, diesen Verlust zu minimieren, indem wir die Eingangsvektorparameter mittels Rückpropagation anpassen. +Um ein Bild zu erzeugen, das einer Textaufforderung entspricht, beginnen wir mit einem zufälligen Codierungsvektor, der durch VQGAN geleitet wird, um ein Bild zu erzeugen. Dann wird CLIP verwendet, um eine Verlustfunktion zu erzeugen, die zeigt, wie gut das Bild zur Textaufforderung passt. Ziel ist es, diesen Verlust zu minimieren, indem die Parameter des Eingabevektors mittels Backpropagation angepasst werden. Eine großartige Bibliothek, die VQGAN+CLIP implementiert, ist [Pixray](http://github.com/pixray/pixray). -![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.de.png) +![Bild von Pixray erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![Bild von Pixray erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![Bild von Pixray erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) ----|----|---- -Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Aquarell-Porträt eines jungen männlichen Lehrers für Literatur mit einem Buch* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt einer jungen weiblichen Lehrerin für Informatik mit einem Computer* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt eines alten männlichen Lehrers für Mathematik vor einer Tafel* +Bild generiert aus der Aufforderung *ein Nahaufnahme-Aquarellporträt eines jungen männlichen Literaturlehrers mit einem Buch* | Bild generiert aus der Aufforderung *ein Nahaufnahme-Ölporträt einer jungen weiblichen Informatiklehrerin mit einem Computer* | Bild generiert aus der Aufforderung *ein Nahaufnahme-Ölporträt eines alten männlichen Mathematiklehrers vor einer Tafel* -> Bilder aus der Sammlung **Künstliche Lehrer** von [Dmitry Soshnikov](http://soshnikov.com) +> Bilder aus der **Artificial Teachers**-Sammlung von [Dmitry Soshnikov](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E ist eine Version von GPT-3, die darauf trainiert wurde, Bilder aus Aufforderungen zu generieren. Es wurde mit 12 Milliarden Parametern trainiert. +DALL-E ist eine Version von GPT-3, die darauf trainiert ist, Bilder aus Aufforderungen zu generieren. Es wurde mit 12 Milliarden Parametern trainiert. -Im Gegensatz zu CLIP erhält DALL-E sowohl Text als auch Bild als einen einzigen Stream von Tokens für Bilder und Text. Daher können Sie aus mehreren Aufforderungen Bilder basierend auf dem Text generieren. +Im Gegensatz zu CLIP erhält DALL-E sowohl Text als auch Bild als einen einzigen Strom von Tokens für Bilder und Text. Daher können aus mehreren Aufforderungen Bilder basierend auf dem Text generiert werden. ### [DALL-E 2](https://openai.com/dall-e-2) -Der Hauptunterschied zwischen DALL-E 1 und 2 besteht darin, dass es realistischere Bilder und Kunstwerke generiert. +Der Hauptunterschied zwischen DALL-E 1 und 2 besteht darin, dass es realistischere Bilder und Kunstwerke erzeugt. Beispiele für Bildgenerierungen mit DALL-E: -![Bild von Pixray erzeugt](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.de.png) +![Bild von DALL-E erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![Bild von DALL-E erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![Bild von DALL-E erzeugt](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) ----|----|---- -Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Aquarell-Porträt eines jungen männlichen Lehrers für Literatur mit einem Buch* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt einer jungen weiblichen Lehrerin für Informatik mit einem Computer* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt eines alten männlichen Lehrers für Mathematik vor einer Tafel* +Bild generiert aus der Aufforderung *ein Nahaufnahme-Aquarellporträt eines jungen männlichen Literaturlehrers mit einem Buch* | Bild generiert aus der Aufforderung *ein Nahaufnahme-Ölporträt einer jungen weiblichen Informatiklehrerin mit einem Computer* | Bild generiert aus der Aufforderung *ein Nahaufnahme-Ölporträt eines alten männlichen Mathematiklehrers vor einer Tafel* ## Referenzen -* VQGAN Papier: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* CLIP Papier: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) +* VQGAN Paper: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP Paper: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) **Haftungsausschluss**: -Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/sketchnotes/LICENSE.md b/translations/de/lessons/sketchnotes/LICENSE.md index 376bce8e..0a737fa5 100644 --- a/translations/de/lessons/sketchnotes/LICENSE.md +++ b/translations/de/lessons/sketchnotes/LICENSE.md @@ -1,150 +1,151 @@ -Attribution-ShareAlike 4.0 International + +Attribution-Weitergabe unter gleichen Bedingungen 4.0 International ======================================================================= -Die Creative Commons Corporation ("Creative Commons") ist kein Rechtsanwalt und bietet keine rechtlichen Dienstleistungen oder Rechtsberatung an. Die Verbreitung der Creative Commons-Publik lizenzen begründet keine Anwalt- Mandanten- oder andere Beziehungen. Creative Commons stellt seine Lizenzen und die zugehörigen Informationen auf einer „wie sie sind“-Basis zur Verfügung. Creative Commons gibt keine Garantien in Bezug auf seine Lizenzen, Materialien, die unter deren Bedingungen lizenziert sind, oder verwandte Informationen. Creative Commons schließt jegliche Haftung für Schäden, die aus ihrer Nutzung resultieren, im größtmöglichen Umfang aus. +Die Creative Commons Corporation ("Creative Commons") ist keine Anwaltskanzlei und bietet keine juristischen Dienstleistungen oder Rechtsberatung an. Die Verbreitung von Creative-Commons-Lizenzen begründet keine Anwalts-Mandanten-Beziehung oder eine andere Beziehung. Creative Commons stellt seine Lizenzen und die dazugehörigen Informationen auf einer "wie besehen"-Basis zur Verfügung. Creative Commons übernimmt keine Garantien in Bezug auf seine Lizenzen, das unter deren Bedingungen lizenzierte Material oder die dazugehörigen Informationen. Creative Commons lehnt jegliche Haftung für Schäden, die aus ihrer Nutzung resultieren, im größtmöglichen gesetzlich zulässigen Umfang ab. -Verwendung der Creative Commons-Publiklizenzen +Verwendung von Creative-Commons-Lizenzen -Die Creative Commons-Publiklizenzen bieten einen standardisierten Satz von Bedingungen und Konditionen, die Urheber und andere Rechteinhaber nutzen können, um originale Werke der Urheberschaft und andere urheberrechtlich geschützte Materialien sowie bestimmte andere Rechte, die in der untenstehenden öffentlichen Lizenz angegeben sind, zu teilen. Die folgenden Überlegungen dienen nur zu Informationszwecken, sind nicht abschließend und bilden keinen Bestandteil unserer Lizenzen. +Creative-Commons-Lizenzen bieten eine standardisierte Reihe von Bedingungen, die Urheber und andere Rechteinhaber nutzen können, um originale Werke und anderes urheberrechtlich geschütztes Material sowie bestimmte andere Rechte zu teilen, wie in der untenstehenden Lizenz beschrieben. Die folgenden Überlegungen dienen nur zu Informationszwecken, sind nicht abschließend und sind kein Bestandteil unserer Lizenzen. - Überlegungen für Lizenzgeber: Unsere Publik lizenzen sind für die Nutzung durch diejenigen gedacht, die befugt sind, der Öffentlichkeit die Erlaubnis zu erteilen, Materialien auf eine Weise zu verwenden, die durch Urheberrecht und bestimmte andere Rechte eingeschränkt ist. Unsere Lizenzen sind unwiderruflich. Lizenzgeber sollten die Bedingungen und Konditionen der Lizenz, die sie wählen, sorgfältig lesen und verstehen, bevor sie sie anwenden. Lizenzgeber sollten auch alle notwendigen Rechte sichern, bevor sie unsere Lizenzen anwenden, damit die Öffentlichkeit das Material wie erwartet wiederverwenden kann. Lizenzgeber sollten deutlich kennzeichnen, welches Material nicht unter die Lizenz fällt. Dazu gehören andere CC-lizenzierte Materialien oder Materialien, die unter einer Ausnahme oder Einschränkung des Urheberrechts verwendet werden. Weitere Überlegungen für Lizenzgeber: wiki.creativecommons.org/Considerations_for_licensors + Überlegungen für Lizenzgeber: Unsere Lizenzen sind für diejenigen gedacht, die berechtigt sind, der Öffentlichkeit die Nutzung von Material zu gestatten, das ansonsten durch Urheberrecht und bestimmte andere Rechte eingeschränkt ist. Unsere Lizenzen sind unwiderruflich. Lizenzgeber sollten die Bedingungen der gewählten Lizenz lesen und verstehen, bevor sie diese anwenden. Lizenzgeber sollten auch sicherstellen, dass sie alle notwendigen Rechte besitzen, bevor sie unsere Lizenzen anwenden, damit die Öffentlichkeit das Material wie erwartet wiederverwenden kann. Lizenzgeber sollten klar kennzeichnen, welches Material nicht unter die Lizenz fällt. Dies schließt anderes CC-lizenziertes Material oder Material ein, das unter eine Ausnahme oder Einschränkung des Urheberrechts fällt. Weitere Überlegungen für Lizenzgeber: + wiki.creativecommons.org/Considerations_for_licensors - Überlegungen für die Öffentlichkeit: Durch die Verwendung einer unserer Publik lizenzen gewährt ein Lizenzgeber der Öffentlichkeit die Erlaubnis, das lizenzierte Material unter den angegebenen Bedingungen zu verwenden. Wenn die Erlaubnis des Lizenzgebers aus irgendeinem Grund nicht erforderlich ist – beispielsweise aufgrund einer anwendbaren Ausnahme oder Einschränkung des Urheberrechts – dann unterliegt diese Nutzung nicht der Lizenz. Unsere Lizenzen gewähren nur die Erlaubnis unter dem Urheberrecht und bestimmten anderen Rechten, die ein Lizenzgeber erteilen kann. Die Verwendung des lizenzierten Materials kann aus anderen Gründen weiterhin eingeschränkt sein, insbesondere weil andere Urheberrechte oder andere Rechte an dem Material bestehen. Ein Lizenzgeber kann besondere Anforderungen stellen, wie z.B. die Bitte, dass alle Änderungen gekennzeichnet oder beschrieben werden. Obwohl dies von unseren Lizenzen nicht gefordert wird, werden Sie ermutigt, diese Anforderungen, wo angemessen, zu respektieren. Weitere Überlegungen für die Öffentlichkeit: wiki.creativecommons.org/Considerations_for_licensees + Überlegungen für die Öffentlichkeit: Durch die Nutzung einer unserer Lizenzen gewährt ein Lizenzgeber der Öffentlichkeit die Erlaubnis, das lizenzierte Material unter den angegebenen Bedingungen zu nutzen. Wenn die Erlaubnis des Lizenzgebers aus irgendeinem Grund nicht erforderlich ist – zum Beispiel aufgrund einer anwendbaren Ausnahme oder Einschränkung des Urheberrechts – wird diese Nutzung nicht durch die Lizenz geregelt. Unsere Lizenzen gewähren nur Rechte im Rahmen des Urheberrechts und bestimmter anderer Rechte, die ein Lizenzgeber zu gewähren berechtigt ist. Die Nutzung des lizenzierten Materials kann aus anderen Gründen weiterhin eingeschränkt sein, einschließlich der Tatsache, dass andere Personen Urheberrechte oder andere Rechte an dem Material besitzen. Ein Lizenzgeber kann besondere Wünsche äußern, wie z. B. die Bitte, dass alle Änderungen gekennzeichnet oder beschrieben werden. Obwohl dies nicht durch unsere Lizenzen vorgeschrieben ist, wird empfohlen, solche Wünsche, soweit vernünftig, zu respektieren. Weitere Überlegungen für die Öffentlichkeit: + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Attribution-ShareAlike 4.0 International Public License +Creative Commons Attribution-Weitergabe unter gleichen Bedingungen 4.0 Internationale Lizenz -Durch die Ausübung der lizenzierten Rechte (wie unten definiert) akzeptieren und erklären Sie sich mit den Bedingungen dieser Creative Commons Attribution-ShareAlike 4.0 International Public License ("Öffentliche Lizenz") einverstanden. Soweit diese öffentliche Lizenz als Vertrag ausgelegt werden kann, werden Ihnen die lizenzierten Rechte in Anbetracht Ihrer Zustimmung zu diesen Bedingungen und Konditionen gewährt, und der Lizenzgeber gewährt Ihnen diese Rechte in Anbetracht der Vorteile, die der Lizenzgeber aus der Bereitstellung des lizenzierten Materials unter diesen Bedingungen und Konditionen erhält. +Durch die Ausübung der lizenzierten Rechte (wie unten definiert) akzeptieren Sie die Bedingungen dieser Creative Commons Attribution-Weitergabe unter gleichen Bedingungen 4.0 Internationalen Lizenz ("Öffentliche Lizenz"). Soweit diese Öffentliche Lizenz als Vertrag ausgelegt werden kann, werden Ihnen die lizenzierten Rechte im Gegenzug für Ihre Annahme dieser Bedingungen gewährt, und der Lizenzgeber gewährt Ihnen diese Rechte im Gegenzug für die Vorteile, die der Lizenzgeber durch die Bereitstellung des lizenzierten Materials unter diesen Bedingungen erhält. Abschnitt 1 – Definitionen. - a. Abgeleitetes Material bedeutet Material, das dem Urheberrecht und ähnlichen Rechten unterliegt und das aus dem lizenzierten Material abgeleitet oder darauf basiert und in dem das lizenzierte Material übersetzt, verändert, angeordnet, transformiert oder anderweitig in einer Weise modifiziert wird, die eine Genehmigung gemäß dem Urheberrecht und ähnlichen Rechten erfordert, die vom Lizenzgeber gehalten werden. Für die Zwecke dieser öffentlichen Lizenz wird abgeleitetes Material immer produziert, wenn das lizenzierte Material in zeitlichem Zusammenhang mit einem bewegten Bild synchronisiert wird. + a. Bearbeitetes Material bezeichnet Material, das dem Urheberrecht und ähnlichen Rechten unterliegt und das aus dem lizenzierten Material abgeleitet oder darauf basierend erstellt wurde, wobei das lizenzierte Material übersetzt, verändert, arrangiert, umgestaltet oder anderweitig in einer Weise modifiziert wurde, die eine Genehmigung gemäß dem Urheberrecht und ähnlichen Rechten des Lizenzgebers erfordert. Für die Zwecke dieser Öffentlichen Lizenz wird bearbeitetes Material immer dann erstellt, wenn das lizenzierte Material in zeitlicher Abstimmung mit einem bewegten Bild synchronisiert wird, sofern es sich um ein musikalisches Werk, eine Aufführung oder eine Tonaufnahme handelt. - b. Lizenz des Adapters bedeutet die Lizenz, die Sie auf Ihr Urheberrecht und ähnliche Rechte an Ihren Beiträgen zu abgeleitetem Material gemäß den Bedingungen dieser öffentlichen Lizenz anwenden. + b. Lizenz des Bearbeiters bezeichnet die Lizenz, die Sie auf Ihre Urheberrechte und ähnlichen Rechte an Ihren Beiträgen zu bearbeitetem Material gemäß den Bedingungen dieser Öffentlichen Lizenz anwenden. - c. BY-SA-kompatible Lizenz bedeutet eine Lizenz, die auf creativecommons.org/compatiblelicenses aufgeführt ist und von Creative Commons als im Wesentlichen gleichwertig mit dieser öffentlichen Lizenz genehmigt wurde. + c. BY-SA-kompatible Lizenz bezeichnet eine Lizenz, die unter creativecommons.org/compatiblelicenses aufgeführt ist und von Creative Commons als im Wesentlichen gleichwertig mit dieser Öffentlichen Lizenz anerkannt wurde. - d. Urheberrecht und ähnliche Rechte bedeutet Urheberrecht und/oder ähnliche Rechte, die eng mit dem Urheberrecht verbunden sind, einschließlich, aber nicht beschränkt auf, Aufführung, Rundfunk, Tonaufnahme und Sui Generis-Datenbankrechte, unabhängig davon, wie die Rechte bezeichnet oder kategorisiert werden. Für die Zwecke dieser öffentlichen Lizenz sind die in Abschnitt 2(b)(1)-(2) angegebenen Rechte keine Urheberrechte und ähnlichen Rechte. + d. Urheberrecht und ähnliche Rechte bezeichnet das Urheberrecht und/oder ähnliche Rechte, die eng mit dem Urheberrecht verbunden sind, einschließlich, aber nicht beschränkt auf Aufführungs-, Rundfunk-, Tonaufnahme- und Sui-Generis-Datenbankrechte, unabhängig davon, wie diese Rechte bezeichnet oder kategorisiert werden. Für die Zwecke dieser Öffentlichen Lizenz sind die in Abschnitt 2(b)(1)-(2) genannten Rechte keine Urheberrechte und ähnlichen Rechte. - e. Effektive technologische Maßnahmen bedeuten solche Maßnahmen, die, in Abwesenheit der ordnungsgemäßen Autorität, nicht umgangen werden dürfen, gemäß den Gesetzen, die Verpflichtungen gemäß Artikel 11 des WIPO-Urheberrechtsvertrags, der am 20. Dezember 1996 angenommen wurde, und/oder ähnlichen internationalen Abkommen erfüllen. + e. Wirksame technische Maßnahmen bezeichnet Maßnahmen, die ohne ordnungsgemäße Autorisierung nicht umgangen werden dürfen, gemäß Gesetzen, die Verpflichtungen aus Artikel 11 des WIPO-Urheberrechtsvertrags vom 20. Dezember 1996 und/oder ähnlichen internationalen Abkommen erfüllen. - f. Ausnahmen und Einschränkungen bedeuten faire Nutzung, faire Behandlung und/oder jede andere Ausnahme oder Einschränkung des Urheberrechts und ähnlicher Rechte, die auf Ihre Nutzung des lizenzierten Materials anwendbar ist. + f. Ausnahmen und Einschränkungen bezeichnet Fair Use, Fair Dealing und/oder andere Ausnahmen oder Einschränkungen des Urheberrechts und ähnlicher Rechte, die für Ihre Nutzung des lizenzierten Materials gelten. - g. Lizenzbestandteile bedeuten die Lizenzattribute, die im Namen einer Creative Commons-Publiklizenz aufgeführt sind. Die Lizenzbestandteile dieser öffentlichen Lizenz sind Namensnennung und Weitergabe unter gleichen Bedingungen. + g. Lizenzbestandteile bezeichnet die Lizenzattribute, die im Namen einer Creative-Commons-Lizenz aufgeführt sind. Die Lizenzbestandteile dieser Öffentlichen Lizenz sind Namensnennung und Weitergabe unter gleichen Bedingungen. - h. Lizenziertes Material bedeutet das künstlerische oder literarische Werk, die Datenbank oder anderes Material, auf das der Lizenzgeber diese öffentliche Lizenz angewendet hat. + h. Lizenziertes Material bezeichnet das künstlerische oder literarische Werk, die Datenbank oder anderes Material, auf das der Lizenzgeber diese Öffentliche Lizenz angewendet hat. - i. Lizenzierte Rechte bedeuten die Ihnen unterliegen den Bedingungen dieser öffentlichen Lizenz gewährten Rechte, die auf alle Urheberrechte und ähnlichen Rechte beschränkt sind, die auf Ihre Nutzung des lizenzierten Materials anwendbar sind und die der Lizenzgeber lizenziert. + i. Lizenzierte Rechte bezeichnet die Ihnen unter den Bedingungen dieser Öffentlichen Lizenz gewährten Rechte, die auf alle Urheberrechte und ähnlichen Rechte beschränkt sind, die für Ihre Nutzung des lizenzierten Materials gelten und die der Lizenzgeber zu lizenzieren berechtigt ist. - j. Lizenzgeber bedeutet die Person(en) oder Einheit(en), die Rechte unter dieser öffentlichen Lizenz gewähren. + j. Lizenzgeber bezeichnet die Person(en) oder Organisation(en), die Rechte unter dieser Öffentlichen Lizenz gewähren. - k. Teilen bedeutet, Material der Öffentlichkeit durch alle Mittel oder Verfahren zur Verfügung zu stellen, die eine Genehmigung gemäß den lizenzierten Rechten erfordern, wie z.B. Vervielfältigung, öffentliche Anzeige, öffentliche Aufführung, Verteilung, Verbreitung, Kommunikation oder Einfuhr, und Material der Öffentlichkeit zur Verfügung zu stellen, einschließlich in einer Weise, dass Mitglieder der Öffentlichkeit auf das Material von einem Ort und zu einem Zeitpunkt, den sie individuell gewählt haben, zugreifen können. + k. Teilen bezeichnet die Bereitstellung von Material für die Öffentlichkeit durch jegliche Mittel oder Verfahren, die eine Genehmigung gemäß den lizenzierten Rechten erfordern, wie Vervielfältigung, öffentliche Darstellung, öffentliche Aufführung, Verbreitung, Weitergabe, Kommunikation oder Import sowie die Bereitstellung von Material für die Öffentlichkeit, einschließlich auf eine Weise, die es Mitgliedern der Öffentlichkeit ermöglicht, das Material von einem Ort und zu einer Zeit ihrer Wahl zu nutzen. - l. Sui Generis-Datenbankrechte bedeuten Rechte, die über das Urheberrecht hinausgehen und aus der Richtlinie 96/9/EG des Europäischen Parlaments und des Rates vom 11. März 1996 zum rechtlichen Schutz von Datenbanken resultieren, wie geändert und/oder ersetzt, sowie andere im Wesentlichen gleichwertige Rechte überall auf der Welt. + l. Sui-Generis-Datenbankrechte bezeichnet andere als urheberrechtliche Rechte, die sich aus der Richtlinie 96/9/EG des Europäischen Parlaments und des Rates vom 11. März 1996 über den rechtlichen Schutz von Datenbanken ergeben, in der jeweils gültigen Fassung oder Nachfolgeversion, sowie andere im Wesentlichen gleichwertige Rechte weltweit. - m. Sie bedeutet die Person oder Einheit, die die lizenzierten Rechte gemäß dieser öffentlichen Lizenz ausübt. Ihr hat eine entsprechende Bedeutung. + m. Sie bezeichnet die Person oder Organisation, die die lizenzierten Rechte unter dieser Öffentlichen Lizenz ausübt. Ihr hat eine entsprechende Bedeutung. Abschnitt 2 – Umfang. a. Lizenzgewährung. - 1. Vorbehaltlich der Bedingungen dieser öffentlichen Lizenz gewährt der Lizenzgeber Ihnen hiermit eine weltweite, lizenzgebührenfreie, nicht übertragbare, nicht-exklusive, unwiderrufliche Lizenz zur Ausübung der lizenzierten Rechte am lizenzierten Material, um: + 1. Vorbehaltlich der Bedingungen dieser Öffentlichen Lizenz gewährt der Lizenzgeber Ihnen hiermit eine weltweite, gebührenfreie, nicht unterlizenzierbare, nicht exklusive, unwiderrufliche Lizenz zur Ausübung der lizenzierten Rechte am lizenzierten Material, um: a. das lizenzierte Material ganz oder teilweise zu vervielfältigen und zu teilen; und - b. abgeleitetes Material zu erstellen, zu vervielfältigen und zu teilen. + b. bearbeitetes Material zu erstellen, zu vervielfältigen und zu teilen. - 2. Ausnahmen und Einschränkungen. Um Zweifel zu vermeiden, wenn Ausnahmen und Einschränkungen auf Ihre Nutzung anwendbar sind, gilt diese öffentliche Lizenz nicht, und Sie müssen die Bedingungen dieser Lizenz nicht einhalten. + 2. Ausnahmen und Einschränkungen. Zur Klarstellung: Wenn Ausnahmen und Einschränkungen für Ihre Nutzung gelten, findet diese Öffentliche Lizenz keine Anwendung, und Sie müssen ihre Bedingungen nicht einhalten. - 3. Laufzeit. Die Laufzeit dieser öffentlichen Lizenz ist in Abschnitt 6(a) festgelegt. + 3. Laufzeit. Die Laufzeit dieser Öffentlichen Lizenz ist in Abschnitt 6(a) festgelegt. - 4. Medien und Formate; technische Änderungen erlaubt. Der Lizenzgeber autorisiert Sie, die lizenzierten Rechte in allen Medien und Formaten, die jetzt bekannt sind oder später erstellt werden, auszuüben und technische Änderungen vorzunehmen, die dafür erforderlich sind. Der Lizenzgeber verzichtet auf und/oder erklärt sich nicht damit einverstanden, Ihnen das Verbot von technischen Änderungen, die erforderlich sind, um die lizenzierten Rechte auszuüben, einschließlich technischer Änderungen, die erforderlich sind, um effektive technologische Maßnahmen zu umgehen, zu untersagen. Für die Zwecke dieser öffentlichen Lizenz führt das bloße Vornehmen von Änderungen, die durch diesen Abschnitt 2(a)(4) autorisiert sind, niemals zu abgeleitetem Material. + 4. Medien und Formate; technische Änderungen erlaubt. Der Lizenzgeber autorisiert Sie, die lizenzierten Rechte in allen Medien und Formaten auszuüben, die jetzt bekannt sind oder später entwickelt werden, und technische Änderungen vorzunehmen, die dafür erforderlich sind. Der Lizenzgeber verzichtet auf und/oder erklärt sich damit einverstanden, keine Rechte oder Befugnisse geltend zu machen, die Sie daran hindern, technische Änderungen vorzunehmen, die für die Ausübung der lizenzierten Rechte erforderlich sind, einschließlich technischer Änderungen, die notwendig sind, um wirksame technische Maßnahmen zu umgehen. Für die Zwecke dieser Öffentlichen Lizenz führt das bloße Vornehmen von Änderungen, die gemäß diesem Abschnitt 2(a)(4) autorisiert sind, niemals zur Erstellung von bearbeitetem Material. 5. Nachgelagerte Empfänger. - a. Angebot des Lizenzgebers – lizenziertes Material. Jeder Empfänger des lizenzierten Materials erhält automatisch ein Angebot des Lizenzgebers zur Ausübung der lizenzierten Rechte unter den Bedingungen dieser öffentlichen Lizenz. + a. Angebot des Lizenzgebers – Lizenziertes Material. Jeder Empfänger des lizenzierten Materials erhält automatisch ein Angebot des Lizenzgebers, die lizenzierten Rechte unter den Bedingungen dieser Öffentlichen Lizenz auszuüben. - b. Zusätzliches Angebot des Lizenzgebers – abgeleitetes Material. Jeder Empfänger von abgeleitetem Material von Ihnen erhält automatisch ein Angebot des Lizenzgebers zur Ausübung der lizenzierten Rechte an dem abgeleiteten Material unter den Bedingungen der Lizenz des Adapters, die Sie anwenden. + b. Zusätzliches Angebot des Lizenzgebers – Bearbeitetes Material. Jeder Empfänger von bearbeitetem Material von Ihnen erhält automatisch ein Angebot des Lizenzgebers, die lizenzierten Rechte am bearbeiteten Material unter den Bedingungen der von Ihnen angewendeten Lizenz des Bearbeiters auszuüben. - c. Keine nachgelagerten Einschränkungen. Sie dürfen keine zusätzlichen oder anderen Bedingungen auf das lizenzierte Material anwenden oder auferlegen oder effektive technologische Maßnahmen auf das lizenzierte Material anwenden, wenn dies die Ausübung der lizenzierten Rechte durch einen Empfänger des lizenzierten Materials einschränkt. + c. Keine nachgelagerten Einschränkungen. Sie dürfen keine zusätzlichen oder abweichenden Bedingungen auferlegen oder wirksame technische Maßnahmen auf das lizenzierte Material anwenden, wenn dies die Ausübung der lizenzierten Rechte durch einen Empfänger des lizenzierten Materials einschränkt. - 6. Keine Billigung. Nichts in dieser öffentlichen Lizenz stellt eine Genehmigung dar oder kann so ausgelegt werden, dass Sie oder Ihre Nutzung des lizenzierten Materials mit dem Lizenzgeber oder anderen, die als Empfänger von Namensnennung gemäß Abschnitt 3(a)(1)(A)(i) bezeichnet sind, verbunden, gesponsert, genehmigt oder offiziell anerkannt sind. + 6. Keine Billigung. Nichts in dieser Öffentlichen Lizenz stellt eine Erlaubnis dar oder kann so ausgelegt werden, dass Sie oder Ihre Nutzung des lizenzierten Materials mit dem Lizenzgeber oder anderen, die gemäß Abschnitt 3(a)(1)(A)(i) genannt werden, verbunden, gesponsert, unterstützt oder offiziell anerkannt sind. b. Andere Rechte. - 1. Moralische Rechte, wie das Recht auf Integrität, sind unter dieser öffentlichen Lizenz nicht lizenziert, ebenso wenig wie Werbe-, Datenschutz- und/oder andere ähnliche Persönlichkeitsrechte; jedoch verzichtet der Lizenzgeber, soweit möglich, auf und/oder erklärt sich nicht damit einverstanden, solche Rechte, die vom Lizenzgeber gehalten werden, in dem begrenzten Umfang geltend zu machen, der erforderlich ist, damit Sie die lizenzierten Rechte ausüben können, jedoch nicht darüber hinaus. + 1. Persönlichkeitsrechte, wie das Recht auf Integrität, sind nicht durch diese Öffentliche Lizenz lizenziert, ebenso wenig wie Rechte auf Öffentlichkeit, Privatsphäre und/oder andere ähnliche Persönlichkeitsrechte; jedoch verzichtet der Lizenzgeber, soweit möglich, auf und/oder erklärt sich damit einverstanden, keine solchen Rechte geltend zu machen, die der Lizenzgeber besitzt, soweit dies erforderlich ist, um Ihnen die Ausübung der lizenzierten Rechte zu ermöglichen, jedoch nicht darüber hinaus. - 2. Patent- und Markenrechte sind unter dieser öffentlichen Lizenz nicht lizenziert. + 2. Patent- und Markenrechte sind nicht durch diese Öffentliche Lizenz lizenziert. - 3. Soweit möglich, verzichtet der Lizenzgeber auf das Recht, von Ihnen Lizenzgebühren für die Ausübung der lizenzierten Rechte zu verlangen, sei es direkt oder über eine Verwertungsgesellschaft im Rahmen eines freiwilligen oder abdingbaren gesetzlichen oder zwingenden Lizenzierungsprogramms. In allen anderen Fällen behält sich der Lizenzgeber ausdrücklich das Recht vor, solche Lizenzgebühren zu erheben. + 3. Soweit möglich, verzichtet der Lizenzgeber auf jegliches Recht, von Ihnen Lizenzgebühren für die Ausübung der lizenzierten Rechte zu erheben, sei es direkt oder über eine Verwertungsgesellschaft im Rahmen eines freiwilligen oder verzichtbaren gesetzlichen oder zwingenden Lizenzierungssystems. In allen anderen Fällen behält sich der Lizenzgeber ausdrücklich das Recht vor, solche Lizenzgebühren zu erheben. +Rechte, dann die Datenbank, in der Sie Sui Generis-Datenbankrechte haben (aber nicht deren einzelne Inhalte), ist angepasstes Material, -Abschnitt 3 – Lizenzbedingungen. +einschließlich für die Zwecke von Abschnitt 3(b); und +c. Sie müssen die Bedingungen in Abschnitt 3(a) einhalten, wenn Sie die gesamte oder einen wesentlichen Teil der Inhalte der Datenbank weitergeben. -Ihre Ausübung der lizenzierten Rechte unterliegt ausdrücklich den folgenden Bedingungen. - - a. Namensnennung. - - 1. Wenn Sie das lizenzierte Material (einschließlich in modifizierter Form) teilen, müssen Sie: - - a. die folgenden Informationen beibehalten, wenn sie vom Lizenzgeber mit dem lizenzierten Material bereitgestellt werden: - - i. Identifizierung der Schöpfer des lizenzierten Materials und anderer, die zur Namensnennung vorgesehen sind, in einer angemessenen Weise, die vom Lizenzgeber angefordert wird (einschließlich Pseudonym, falls angegeben); - - ii. einen Urheberrechtshinweis; - - iii. einen Hinweis, der auf diese öffentliche Lizenz verweist; - - iv. einen Hinweis, der auf den Haftungsausschluss verweist; - - v. eine URI oder einen Hyperlink zum lizenzierten Material, soweit dies angemessen möglich ist; - - b. angeben, ob Sie das lizenzierte Material modifiziert haben, und eine Angabe über vorherige Änderungen beibehalten; und - - c. angeben, dass das lizierte Material unter dieser öffentlichen Lizenz lizenziert ist, und den Text oder die URI oder den Hyperlink zu dieser öffentlichen Lizenz einfügen. - - 2. Sie können die Bedingungen in Abschnitt 3(a)(1) auf jede angemessene Weise erfüllen, die auf dem Medium, den Mitteln und dem Kontext basiert, in dem Sie das lizierte Material teilen. Zum Beispiel kann es angemessen sein, die Bedingungen zu erfüllen, indem Sie eine URI oder einen Hyperlink zu einer Ressource bereitstellen, die die erforderlichen Informationen enthält. - - 3. Wenn der Lizenzgeber dies verlangt, müssen Sie alle Informationen, die in Abschnitt 3(a)(1)(A) erforderlich sind, in dem angemessenen Umfang entfernen. - - b. Weitergabe unter gleichen Bedingungen. - - Zusätzlich zu den Bedingungen in Abschnitt 3(a) gelten die folgenden Bedingungen, wenn Sie abgeleitetes Material teilen, das Sie erstellen. - - 1. Die Lizenz des Adapters, die Sie anwenden, muss eine Creative Commons-Lizenz mit denselben Lizenzbestandteilen, dieser Version oder einer späteren, oder eine BY-SA-kompatible Lizenz sein. - - 2. Sie müssen den Text oder die URI oder den Hyperlink zu der Lizenz des Adapters, die Sie anwenden, einfügen. Sie können diese Bedingung auf jede angemessene Weise erfüllen, die auf dem Medium, den Mitteln und dem Kontext basiert, in dem Sie abgeleitetes Material teilen. - - 3. Sie dürfen keine zusätzlichen oder anderen Bedingungen auf abgeleitetes Material anwenden oder auferlegen oder effektive technologische Maßnahmen auf abgeleitetes Material anwenden, die die Ausübung der Rechte, die unter der Lizenz des Adapters gewährt werden, einschränken. - -Abschnitt 4 – Sui Generis-Datenbankrechte. - -Soweit die lizenzierten Rechte Sui Generis-Datenbankrechte umfassen, die auf Ihre Nutzung des lizenzierten Materials anwendbar sind: - - a. Um Zweifel zu vermeiden, gewährt Abschnitt 2(a)(1) Ihnen das Recht, alle oder einen wesentlichen Teil des Inhalts der Datenbank zu extrahieren, wiederzuverwenden, zu reproduzieren und zu teilen; - - b. Wenn Sie alle oder einen wesentlichen Teil des Inhalts der Datenbank in einer Datenbank einfügen, in der Sie Sui Generis-Datenbankrechte haben, dann ist die Datenbank, in der Sie Sui Generis-Datenbankrechte haben (aber nicht deren einzelne Inhalte), abgeleitetes Material, einschließlich für die Zwecke von Abschnitt 3(b); und - - c. Sie müssen die Bedingungen in Abschnitt 3(a) einhalten, wenn Sie alle oder einen wesentlichen Teil des Inhalts der Datenbank teilen. - -Um Zweifel zu vermeiden, ergänzt dieser Abschnitt 4 Ihre Verpflichtungen unter dieser öffentlichen Lizenz, wenn die lizenzierten Rechte andere Urheberrechte und ähnliche Rechte umfassen. +Zur Klarstellung: Dieser Abschnitt 4 ergänzt und ersetzt nicht Ihre Verpflichtungen aus dieser öffentlichen Lizenz, wenn die lizenzierten Rechte andere Urheberrechte und ähnliche Rechte umfassen. + Abschnitt 5 – Haftungsausschluss und Haftungsbeschränkung. - a. SOFERN NICHT ANDERS VON DEM LIZENZGEBER GETROFFEN, BIETET DER LIZENZGEBER DAS LIZENZIERTE MATERIAL SO WIE ES IST UND SO WIE VERFÜGBAR AN UND GIBT KEINE ERKLÄRUNGEN ODER GARANTIEN JEDER ART IN BEZUG AUF DAS LIZENZIERTE MATERIAL AB, OB AUSDRÜCKLICH, STILLSCHWEIGEND, GESETZLICH ODER ANDERWEITIG. DIES BEINHALTET, OHNE EINSCHRÄNKUNG, GARANTIEN FÜR EIGENTUM, MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, NICHTVERLETZUNG, FEHLEN ODER ANDERE MÄNGEL, GENAUIGKEIT ODER DAS VORHANDENSEIN ODER FEHLEN VON FEHLERN, UNABHÄNGIG DAVON, OB BEKANNT ODER ENTDECKBAR. WENN HAFTUNGSAUSSCHLÜSSE NICHT VOLLSTÄNDIG ODER TEILWEISE ERLAUBT SIND, GILT DIESER HAFTUNGSAUSSCHLUSS MÖGLICHERWEISE NICHT FÜR SIE. +a. SOFERN NICHT ANDERS VOM LIZENZGEBER SEPARAT VEREINBART, STELLT DER LIZENZGEBER DAS LIZENZIERTE MATERIAL SOWEIT MÖGLICH "WIE BESEHEN" UND "WIE VERFÜGBAR" ZUR VERFÜGUNG UND GIBT KEINE ZUSICHERUNGEN ODER GARANTIEN IRGENDEINER ART IN BEZUG AUF DAS LIZENZIERTE MATERIAL AB, WEDER AUSDRÜCKLICH, IMPLIZIT, GESETZLICH NOCH ANDERWEITIG. DIES UMFASST UNTER ANDEREM GARANTIEN BEZÜGLICH EIGENTUM, MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, NICHTVERLETZUNG, ABWESENHEIT VON VERBORGENEN ODER ANDEREN MÄNGELN, GENAUIGKEIT ODER DAS VORHANDENSEIN ODER NICHTVORHANDENSEIN VON FEHLERN, OB BEKANNT ODER ENTDECKBAR. WO HAFTUNGSAUSSCHLÜSSE VON GARANTIEN NICHT VOLLSTÄNDIG ODER TEILWEISE ZULÄSSIG SIND, KANN DIESER HAFTUNGSAUSSCHLUSS FÜR SIE NICHT GELTEN. - b. SOWEIT MÖGLICH, WIRD DER LIZENZGEBER IN KEINEM FALL FÜR SIE AUF GRUNDLAGE IRGENDEINER RECHTSTHEORIE (EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT AUF, FAHRLÄSSIGKEIT) ODER ANDERWEITIG FÜR DIREKTE, SPEZIELLE, INDIREKTE, NEBEN-, FOLGE-, STRAF-, EXEMPLARISCHE ODER ANDERE VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN, DIE AUS DIESER ÖFFENTLICHEN LIZENZ ODER DER NUTZUNG DES LIZENZIERTEN MATERIALS ENTSTEHEN, HAFTBAR GEMACHT WERDEN, SELBST WENN DER LIZENZGEBER AUF DIE MÖGLICHKEIT SOLCHER VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN HINGEWIESEN WURDE. WENN EINE HAFTUNGSBESCHRÄNKUNG NICHT VOLLSTÄNDIG ODER TEILWEISE ERLAUBT IST, GILT DIESE BESCHRÄNKUNG MÖGLICHERWEISE NICHT FÜR SIE. +b. SOWEIT MÖGLICH, HAFTET DER LIZENZGEBER UNTER KEINEN UMSTÄNDEN IHNEN GEGENÜBER AUF GRUNDLAGE IRGENDEINER RECHTSTHEORIE (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF FAHRLÄSSIGKEIT) ODER ANDERWEITIG FÜR DIREKTE, BESONDERE, INDIREKTE, ZUFÄLLIGE, FOLGE-, STRAF-, EXEMPLARISCHE ODER ANDERE VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN, DIE AUS DIESER ÖFFENTLICHEN LIZENZ ODER DER NUTZUNG DES LIZENZIERTEN MATERIALS ENTSTEHEN, SELBST WENN DER LIZENZGEBER ÜBER DIE MÖGLICHKEIT SOLCHER VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN INFORMIERT WURDE. WO EINE HAFTUNGSBESCHRÄNKUNG NICHT VOLLSTÄNDIG ODER TEILWEISE ZULÄSSIG IST, KANN DIESE BESCHRÄNKUNG FÜR SIE NICHT GELTEN. - c. Der Haftungsausschluss für Garantien und die Haftungsbeschränkung, die oben angegeben sind, werden so ausgelegt, dass sie, soweit möglich, einem absoluten Haftungsausschluss und einem Verzicht auf alle Haftungen am nächsten kommen. +c. Der oben genannte Haftungsausschluss und die Haftungsbeschränkung sind so auszulegen, dass sie, soweit möglich, einem absoluten Haftungsausschluss und Verzicht auf jegliche Haftung am nächsten kommen. + Abschnitt 6 – Laufzeit und Beendigung. - a. Diese öffentliche Lizenz gilt für die Laufzeit des hier lizenzierten Urheberrechts und ähnlicher Rechte. Wenn Sie jedoch gegen diese öffentliche Lizenz verstoßen, erlöschen Ihre Rechte unter dieser öffentlichen Lizenz automatisch. +a. Diese öffentliche Lizenz gilt für die Dauer der hier lizenzierten Urheberrechte und ähnlichen Rechte. Wenn Sie jedoch gegen diese öffentliche Lizenz verstoßen, enden Ihre Rechte aus dieser öffentlichen Lizenz automatisch. - b. Wenn Ihr Recht, das lizenzierte Material zu nutzen, gemäß Abschnitt 6(a) erloschen ist, wird es wiederhergestellt: +b. Wenn Ihr Recht zur Nutzung des lizenzierten Materials gemäß Abschnitt 6(a) beendet wurde, wird es wiederhergestellt: - 1. automatisch ab dem Datum, an dem der Verstoß behoben wird, vorausgesetzt, er wird innerhalb von 30 Tagen nach Ihrer Entdeckung +1. automatisch ab dem Datum, an dem der Verstoß behoben wird, vorausgesetzt, dies geschieht innerhalb von 30 Tagen nach Ihrer Entdeckung des Verstoßes; oder +2. durch ausdrückliche Wiederherstellung durch den Lizenzgeber. + +Zur Klarstellung: Dieser Abschnitt 6(b) berührt nicht das Recht des Lizenzgebers, Rechtsmittel wegen Ihrer Verstöße gegen diese öffentliche Lizenz einzulegen. + +c. Zur Klarstellung: Der Lizenzgeber kann das lizenzierte Material auch unter separaten Bedingungen oder Konditionen anbieten oder die Verbreitung des lizenzierten Materials jederzeit einstellen; dies beendet jedoch nicht diese öffentliche Lizenz. + +d. Die Abschnitte 1, 5, 6, 7 und 8 bleiben auch nach Beendigung dieser öffentlichen Lizenz in Kraft. + + +Abschnitt 7 – Andere Bedingungen. + +a. Der Lizenzgeber ist nicht an zusätzliche oder abweichende Bedingungen gebunden, die Sie mitteilen, es sei denn, sie wurden ausdrücklich vereinbart. + +b. Alle Vereinbarungen, Absprachen oder Abmachungen in Bezug auf das lizenzierte Material, die hier nicht aufgeführt sind, sind unabhängig von und getrennt von den Bedingungen dieser öffentlichen Lizenz. + + +Abschnitt 8 – Auslegung. + +a. Zur Klarstellung: Diese öffentliche Lizenz schränkt nicht ein, begrenzt nicht, beschränkt nicht und auferlegt keine Bedingungen für die Nutzung des lizenzierten Materials, die ohne Erlaubnis gemäß dieser öffentlichen Lizenz rechtmäßig erfolgen könnte. + +b. Soweit möglich, wird jede Bestimmung dieser öffentlichen Lizenz, die als nicht durchsetzbar erachtet wird, automatisch auf das Mindestmaß reformiert, das erforderlich ist, um sie durchsetzbar zu machen. Wenn die Bestimmung nicht reformiert werden kann, wird sie von dieser öffentlichen Lizenz getrennt, ohne die Durchsetzbarkeit der verbleibenden Bedingungen zu beeinträchtigen. + +c. Kein Begriff oder keine Bedingung dieser öffentlichen Lizenz wird aufgehoben, und kein Versäumnis, die Einhaltung zu verlangen, wird zugestimmt, es sei denn, dies wurde ausdrücklich vom Lizenzgeber vereinbart. + +d. Nichts in dieser öffentlichen Lizenz stellt eine Einschränkung oder einen Verzicht auf Privilegien und Immunitäten dar, die für den Lizenzgeber oder Sie gelten, einschließlich solcher, die sich aus den rechtlichen Verfahren einer Gerichtsbarkeit oder Behörde ergeben. + + +======================================================================= + +Creative Commons ist keine Partei ihrer öffentlichen Lizenzen. Ungeachtet dessen kann Creative Commons wählen, eine seiner öffentlichen Lizenzen auf von ihr veröffentlichte Materialien anzuwenden, und wird in diesen Fällen als „Lizenzgeber“ betrachtet. Der Text der Creative Commons-Lizenzen ist dem Gemeingut unter der CC0 Public Domain Dedication gewidmet. Mit Ausnahme des begrenzten Zwecks, anzuzeigen, dass Material unter einer Creative Commons-Lizenz geteilt wird, oder wie anderweitig in den Creative Commons-Richtlinien unter creativecommons.org/policies gestattet, autorisiert Creative Commons nicht die Verwendung der Marke „Creative Commons“ oder einer anderen Marke oder eines Logos von Creative Commons ohne vorherige schriftliche Zustimmung, einschließlich, aber nicht beschränkt auf, in Verbindung mit nicht autorisierten Änderungen an einer ihrer öffentlichen Lizenzen oder anderen Vereinbarungen, Absprachen oder Abmachungen in Bezug auf die Nutzung des lizenzierten Materials. Zur Klarstellung: Dieser Absatz ist nicht Teil der öffentlichen Lizenzen. + +Creative Commons kann unter creativecommons.org kontaktiert werden. **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/de/lessons/sketchnotes/README.md b/translations/de/lessons/sketchnotes/README.md index cc29912c..615cdfde 100644 --- a/translations/de/lessons/sketchnotes/README.md +++ b/translations/de/lessons/sketchnotes/README.md @@ -1,3 +1,12 @@ + Alle Sketchnotes des Lehrplans können hier heruntergeladen werden. 🎨 Erstellt von: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) @@ -5,4 +14,4 @@ Alle Sketchnotes des Lehrplans können hier heruntergeladen werden. [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) **Haftungsausschluss**: -Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file diff --git a/translations/es/README.md b/translations/es/README.md index c2423a52..11d189d9 100644 --- a/translations/es/README.md +++ b/translations/es/README.md @@ -1,99 +1,108 @@ -[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![Contribuyentes de GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuidores de GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![Forks de GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Bifurcaciones de GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Inteligencia Artificial para Principiantes - Un Currículo +# Inteligencia Artificial para Principiantes - Un Currículo -|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| AI Para Principiantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI Para Principiantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | -¡Explora el mundo de la **Inteligencia Artificial** (IA) con nuestro currículo de 12 semanas y 24 lecciones! Incluye lecciones prácticas, cuestionarios y laboratorios. El currículo es amigable para principiantes y abarca herramientas como TensorFlow y PyTorch, así como la ética en la IA. +Explora el mundo de la **Inteligencia Artificial** (IA) con nuestro currículo de 12 semanas y 24 lecciones. Incluye lecciones prácticas, cuestionarios y laboratorios. El currículo está diseñado para principiantes y cubre herramientas como TensorFlow y PyTorch, además de ética en IA. -## Lo que aprenderás +## Lo que aprenderás -**[Mapa mental del curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Mapa mental del curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -En este currículo, aprenderás: +En este currículo, aprenderás: -* Diferentes enfoques de la Inteligencia Artificial, incluido el "buen viejo" enfoque simbólico con **Representación del Conocimiento** y razonamiento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Redes Neuronales** y **Aprendizaje Profundo**, que son el núcleo de la IA moderna. Ilustraremos los conceptos detrás de estos temas importantes utilizando código en dos de los marcos más populares: [TensorFlow](http://Tensorflow.org) y [PyTorch](http://pytorch.org). -* **Arquitecturas Neuronales** para trabajar con imágenes y texto. Cubriremos modelos recientes, aunque puede que no estemos completamente al día con el estado del arte. -* Enfoques de IA menos populares, como **Algoritmos Genéticos** y **Sistemas Multi-Agente**. +* Diferentes enfoques de la Inteligencia Artificial, incluyendo el enfoque simbólico "de la vieja escuela" con **Representación del Conocimiento** y razonamiento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neuronales** y **Aprendizaje Profundo**, que son el núcleo de la IA moderna. Ilustraremos los conceptos detrás de estos temas importantes utilizando código en dos de los marcos más populares: [TensorFlow](http://Tensorflow.org) y [PyTorch](http://pytorch.org). +* **Arquitecturas Neuronales** para trabajar con imágenes y texto. Cubriremos modelos recientes, aunque puede que no incluyamos lo más avanzado. +* Enfoques menos populares de IA, como **Algoritmos Genéticos** y **Sistemas Multi-Agente**. -Lo que no cubriremos en este currículo: +Lo que no cubriremos en este currículo: -> [Encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Casos de negocio sobre el uso de **IA en los Negocios**. Considera tomar la ruta de aprendizaje [Introducción a la IA para usuarios de negocios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) en Microsoft Learn, o [Escuela de Negocios de IA](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desarrollada en cooperación con [INSEAD](https://www.insead.edu/). -* **Aprendizaje Automático Clásico**, que está bien descrito en nuestro [Currículo de Aprendizaje Automático para Principiantes](http://github.com/Microsoft/ML-for-Beginners). -* Aplicaciones prácticas de IA construidas usando **[Servicios Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para esto, te recomendamos que comiences con los módulos de Microsoft Learn para [visión](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesamiento de lenguaje natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa con Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** y otros. -* **Frameworks de ML específicos en la nube**, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera utilizar las rutas de aprendizaje [Construir y operar soluciones de aprendizaje automático con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) y [Construir y operar soluciones de aprendizaje automático con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). -* **IA Conversacional** y **Bots de Chat**. Hay una ruta de aprendizaje separada llamada [Crear soluciones de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), y también puedes consultar [esta publicación de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para más detalles. -* **Matemáticas Avanzadas** detrás del aprendizaje profundo. Para esto, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio y Aaron Courville, que también está disponible en línea en [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* Casos de negocio sobre el uso de **IA en los negocios**. Considera tomar el camino de aprendizaje [Introducción a la IA para usuarios empresariales](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) en Microsoft Learn, o [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desarrollado en cooperación con [INSEAD](https://www.insead.edu/). +* **Aprendizaje Automático Clásico**, que está bien descrito en nuestro [Currículo de Aprendizaje Automático para Principiantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicaciones prácticas de IA construidas utilizando **[Servicios Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para esto, recomendamos comenzar con los módulos de Microsoft Learn para [visión](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesamiento de lenguaje natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa con Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** y otros. +* Marcos específicos de ML en la **nube**, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera usar los caminos de aprendizaje [Construir y operar soluciones de aprendizaje automático con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) y [Construir y operar soluciones de aprendizaje automático con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** y **Chat Bots**. Hay un camino de aprendizaje separado [Crear soluciones de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), y también puedes consultar [esta publicación de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para más detalles. +* **Matemáticas profundas** detrás del aprendizaje profundo. Para esto, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio y Aaron Courville, que también está disponible en línea en [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -Para una introducción suave a los temas de _IA en la Nube_, puedes considerar tomar la ruta de aprendizaje [Introducción a la inteligencia artificial en Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). +Para una introducción sencilla a los temas de _IA en la nube_, puedes considerar tomar el camino de aprendizaje [Comienza con inteligencia artificial en Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). -# Contenido +# Contenido -| | Enlace de la Lección | PyTorch/Keras/TensorFlow | Lab | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Configuración del Curso](./lessons/0-course-setup/setup.md) | [Configura tu Entorno de Desarrollo](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Introducción a la IA**](./lessons/1-Intro/README.md) | | | -| 01 | [Introducción e Historia de la IA](./lessons/1-Intro/README.md) | - | - | -| II | **IA Simbólica** | -| 02 | [Representación del Conocimiento y Sistemas Expertos](./lessons/2-Symbolic/README.md) | [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontología](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Gráfico de Conceptos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Introducción a las Redes Neuronales**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Perceptrón](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Perceptrón Multicapa y Creando nuestro propio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Introducción a Frameworks (PyTorch/TensorFlow) y Sobreajuste](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Visión por Computadora**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explorar Visión por Computadora en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Introducción a la Visión por Computadora. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratorio](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Redes Neuronales Convolucionales](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquitecturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratorio](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Redes Pre-entrenadas y Aprendizaje por Transferencia](./lessons/4-ComputerVision/08-TransferLearning/README.md) y [Trucos de Entrenamiento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratorio](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| | Enlace de la Lección | PyTorch/Keras/TensorFlow | Laboratorio | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuración del Curso](./lessons/0-course-setup/setup.md) | [Configura tu entorno de desarrollo](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introducción a la IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introducción e Historia de la IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representación del Conocimiento y Sistemas Expertos](./lessons/2-Symbolic/README.md) | [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontología](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Gráfico de Conceptos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introducción a Redes Neuronales**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptrón](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratorio](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptrón Multicapa y Creación de nuestro propio Marco](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratorio](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introducción a Marcos (PyTorch/TensorFlow) y Sobreajuste](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratorio](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visión por Computadora**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explora Visión por Computadora en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introducción a Visión por Computadora. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratorio](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Redes Neuronales Convolucionales](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquitecturas CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratorio](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Redes preentrenadas y aprendizaje por transferencia](./lessons/4-ComputerVision/08-TransferLearning/README.md) y [Trucos de entrenamiento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratorio](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | | 09 | [Autoencoders y VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Redes Generativas Antagónicas y Transferencia de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 10 | [Redes Generativas Adversarias y Transferencia de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | | 11 | [Detección de Objetos](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratorio](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Segmentación Semántica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| 12 | [Segmentación Semántica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | | V | [**Procesamiento de Lenguaje Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explora el Procesamiento de Lenguaje Natural en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| | 13 | [Representación de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | | 14 | [Embeddings semánticos de palabras. Word2Vec y GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Modelado del Lenguaje. Entrenando tus propios embeddings](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratorio](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 15 | [Modelado de Lenguaje. Entrenando tus propios embeddings](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratorio](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | | 16 | [Redes Neuronales Recurrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Redes Generativas Recurrentes](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratorio](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | -| 18 | [Transformadores. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 17 | [Redes Recurrentes Generativas](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratorio](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | | 19 | [Reconocimiento de Entidades Nombradas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorio](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Modelos de Lenguaje Grandes, Programación de Prompts y Tareas de Pocos Ejemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| 20 | [Modelos de Lenguaje Grandes, Programación con Prompts y Tareas de Few-Shot](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | | VI | **Otras Técnicas de IA** || | -| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | | 22 | [Aprendizaje por Refuerzo Profundo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratorio](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Sistemas Multiagente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **Ética en IA** | | | -| 24 | [Ética en IA y IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principios de IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| 23 | [Sistemas Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Ética en la IA** | | | +| 24 | [Ética en la IA y IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principios de IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | | IX | **Extras** | | | -| 25 | [Redes Multi-Modal, CLIP y VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 25 | [Redes Multimodales, CLIP y VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | ## Cada lección contiene -* Material de lectura previa -* Cuadernos Jupyter ejecutables, que a menudo son específicos del marco (**PyTorch** o **TensorFlow**). El cuaderno ejecutable también contiene mucho material teórico, por lo que para entender el tema necesitas revisar al menos una versión del cuaderno (ya sea de PyTorch o TensorFlow). -* **Laboratorios** disponibles para algunos temas, que te brindan la oportunidad de intentar aplicar el material que has aprendido a un problema específico. +* Material de lectura previa. +* Notebooks ejecutables de Jupyter, que a menudo son específicos para el framework (**PyTorch** o **TensorFlow**). El notebook ejecutable también incluye mucho material teórico, por lo que para entender el tema necesitas revisar al menos una versión del notebook (ya sea PyTorch o TensorFlow). +* **Laboratorios** disponibles para algunos temas, que te dan la oportunidad de aplicar el material aprendido a un problema específico. * Algunas secciones contienen enlaces a módulos de [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que cubren temas relacionados. ## Comenzando -- Hemos creado una [lección de configuración](./lessons/0-course-setup/setup.md) para ayudarte a configurar tu entorno de desarrollo. - Para educadores, también hemos creado una [lección de configuración curricular](./lessons/0-course-setup/for-teachers.md) para ti. -- Cómo [Ejecutar el código en VSCode o Codepace](./lessons/0-course-setup/how-to-run.md) +- Hemos creado una [lección de configuración](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) para ayudarte a configurar tu entorno de desarrollo. - Para educadores, también hemos creado una [lección de configuración de currículum](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md). +- Cómo [Ejecutar el código en VSCode o Codespace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md). Sigue estos pasos: @@ -101,40 +110,46 @@ Haz un fork del repositorio: Haz clic en el botón "Fork" en la esquina superior Clona el repositorio: `git clone https://github.com/microsoft/AI-For-Beginners.git` -No olvides marcar (🌟) este repositorio para encontrarlo más fácilmente después. +No olvides darle una estrella (🌟) a este repositorio para encontrarlo más fácilmente más tarde. -## Conoce a otros Aprendices +## Conoce a otros estudiantes -Únete a nuestro [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conocer y hacer networking con otros aprendices que están tomando este curso y obtener apoyo. +Únete a nuestro [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conocer y conectar con otros estudiantes que están tomando este curso y obtener soporte. -## Cuestionarios - -> **Una nota sobre los cuestionarios**: Todos los cuestionarios se encuentran en la carpeta Quiz-app en etc\quiz-app. Están vinculados desde dentro de las lecciones, la aplicación de cuestionarios se puede ejecutar localmente o desplegarse en Azure; sigue las instrucciones en la carpeta `quiz-app`. Están siendo localizados gradualmente. +Si tienes comentarios sobre el producto o preguntas mientras construyes, visita nuestro [Foro de Desarrolladores de Azure AI Foundry](https://aka.ms/foundry/forum). +## Cuestionarios +> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos en la carpeta Quiz-app en etc\quiz-app. Están vinculados desde las lecciones, y la aplicación de cuestionarios se puede ejecutar localmente o desplegar en Azure; sigue las instrucciones en la carpeta `quiz-app`. Se están localizando gradualmente. ## Se Busca Ayuda -¿Tienes sugerencias o encontraste errores de ortografía o de código? Abre un problema o crea una solicitud de extracción. +¿Tienes sugerencias o encontraste errores de ortografía o código? Crea un issue o un pull request. ## Agradecimientos Especiales * **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD -* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **🔥 Editora:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustradora de Sketchnotes:** [Tomomi Imura](https://twitter.com/girlie_mac) * **✅ Creadora de Cuestionarios:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 Contribuidores Clave:** [Evgenii Pishchik](https://github.com/Pe4enIks) +* **🙏 Contribuyentes Principales:** [Evgenii Pishchik](https://github.com/Pe4enIks) ## Otros Currículos -¡Nuestro equipo produce otros currículos! Echa un vistazo a: +¡Nuestro equipo produce otros currículos! Échales un vistazo: -* [Ciencia de Datos para Principiantes](https://aka.ms/ds4beginners) -* [**Versión 2.0** IA Generativa para Principiantes](https://aka.ms/genai-beginners) -* [**NUEVO** Ciberseguridad para Principiantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Desarrollo Web para Principiantes](https://aka.ms/webdev-beginners) -* [IoT para Principiantes](https://aka.ms/iot-beginners) -* [Aprendizaje Automático para Principiantes](https://aka.ms/ml4beginners) -* [Desarrollo XR para Principiantes](https://aka.ms/xr-dev-for-beginners) -* [Dominando GitHub Copilot para Programación en Pareja con IA](https://aka.ms/GitHubCopilotAI) +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/SECURITY.md b/translations/es/SECURITY.md index 3c786cc9..c2fd76d0 100644 --- a/translations/es/SECURITY.md +++ b/translations/es/SECURITY.md @@ -1,32 +1,41 @@ + ## Seguridad -Microsoft se toma muy en serio la seguridad de nuestros productos y servicios de software, lo que incluye todos los repositorios de código fuente gestionados a través de nuestras organizaciones en GitHub, que incluyen [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) y [nuestras organizaciones en GitHub](https://opensource.microsoft.com/). +Microsoft se toma muy en serio la seguridad de nuestros productos y servicios de software, lo que incluye todos los repositorios de código fuente gestionados a través de nuestras organizaciones de GitHub, que incluyen [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) y [nuestras organizaciones de GitHub](https://opensource.microsoft.com/). -Si crees que has encontrado una vulnerabilidad de seguridad en algún repositorio de Microsoft que cumpla con [la definición de vulnerabilidad de seguridad de Microsoft](https://aka.ms/opensource/security/definition), por favor repórtala a nosotros como se describe a continuación. +Si crees que has encontrado una vulnerabilidad de seguridad en algún repositorio propiedad de Microsoft que cumpla con [la definición de vulnerabilidad de seguridad de Microsoft](https://aka.ms/opensource/security/definition), por favor repórtala como se describe a continuación. ## Reportar Problemas de Seguridad -**Por favor, no reportes vulnerabilidades de seguridad a través de problemas públicos de GitHub.** +**Por favor, no reportes vulnerabilidades de seguridad a través de problemas públicos en GitHub.** En su lugar, repórtalas al Centro de Respuesta de Seguridad de Microsoft (MSRC) en [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Si prefieres enviar tu reporte sin iniciar sesión, envía un correo electrónico a [secure@microsoft.com](mailto:secure@microsoft.com). Si es posible, cifra tu mensaje con nuestra clave PGP; por favor descárgala de la [página de Clave PGP del Centro de Respuesta de Seguridad de Microsoft](https://aka.ms/opensource/security/pgpkey). +Si prefieres enviar tu reporte sin iniciar sesión, envía un correo electrónico a [secure@microsoft.com](mailto:secure@microsoft.com). Si es posible, encripta tu mensaje con nuestra clave PGP; descárgala desde la [página de Clave PGP del Centro de Respuesta de Seguridad de Microsoft](https://aka.ms/opensource/security/pgpkey). -Deberías recibir una respuesta dentro de 24 horas. Si por alguna razón no lo haces, por favor haz un seguimiento por correo electrónico para asegurarte de que recibimos tu mensaje original. Puedes encontrar información adicional en [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Deberías recibir una respuesta dentro de las 24 horas. Si por alguna razón no la recibes, por favor haz un seguimiento por correo electrónico para asegurarte de que recibimos tu mensaje original. Puedes encontrar información adicional en [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). -Por favor incluye la información solicitada que se detalla a continuación (tanto como puedas proporcionar) para ayudarnos a entender mejor la naturaleza y el alcance del posible problema: +Por favor, incluye la información solicitada que se detalla a continuación (tanto como puedas proporcionar) para ayudarnos a comprender mejor la naturaleza y el alcance del posible problema: * Tipo de problema (por ejemplo, desbordamiento de búfer, inyección SQL, scripting entre sitios, etc.) * Rutas completas de los archivos fuente relacionados con la manifestación del problema - * La ubicación del código fuente afectado (etiqueta/rama/confirmación o URL directa) + * La ubicación del código fuente afectado (etiqueta/ramo/commit o URL directa) * Cualquier configuración especial requerida para reproducir el problema * Instrucciones paso a paso para reproducir el problema - * Prueba de concepto o código de explotación (si es posible) - * Impacto del problema, incluyendo cómo un atacante podría explotar el problema + * Código de prueba de concepto o de explotación (si es posible) + * Impacto del problema, incluyendo cómo un atacante podría explotarlo -Esta información nos ayudará a clasificar tu reporte más rápidamente. +Esta información nos ayudará a priorizar tu reporte más rápidamente. -Si estás reportando para un programa de recompensas por errores, reportes más completos pueden contribuir a una mayor recompensa. Por favor visita nuestra página del [Programa de Recompensas por Errores de Microsoft](https://aka.ms/opensource/security/bounty) para más detalles sobre nuestros programas activos. +Si estás reportando para un programa de recompensas por errores, los reportes más completos pueden contribuir a obtener una recompensa mayor. Por favor, visita nuestra página del [Programa de Recompensas por Errores de Microsoft](https://aka.ms/opensource/security/bounty) para más detalles sobre nuestros programas activos. ## Idiomas Preferidos @@ -37,4 +46,4 @@ Preferimos que todas las comunicaciones sean en inglés. Microsoft sigue el principio de [Divulgación Coordinada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por un humano. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/CODE_OF_CONDUCT.md b/translations/es/etc/CODE_OF_CONDUCT.md index 00885f3b..600b966b 100644 --- a/translations/es/etc/CODE_OF_CONDUCT.md +++ b/translations/es/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ -# Código de Conducta de Microsoft para Código Abierto + +# Código de Conducta de Código Abierto de Microsoft -Este proyecto ha adoptado el [Código de Conducta de Microsoft para Código Abierto](https://opensource.microsoft.com/codeofconduct/). +Este proyecto ha adoptado el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). Recursos: -- [Código de Conducta de Microsoft para Código Abierto](https://opensource.microsoft.com/codeofconduct/) -- [Preguntas Frecuentes sobre el Código de Conducta de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) -- Contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) si tienes preguntas o inquietudes. +- [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Preguntas frecuentes sobre el Código de Conducta de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) para preguntas o inquietudes **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/CONTRIBUTING.md b/translations/es/etc/CONTRIBUTING.md index b155fbee..1177c41d 100644 --- a/translations/es/etc/CONTRIBUTING.md +++ b/translations/es/etc/CONTRIBUTING.md @@ -1,20 +1,30 @@ -# Contribuyendo + +# Contribuir -Este proyecto da la bienvenida a contribuciones y sugerencias. La mayoría de las contribuciones requieren que aceptes un Acuerdo de Licencia de Contribuidor (CLA) que declara que tienes el derecho de, y realmente lo haces, otorgarnos los derechos para usar tu contribución. Para más detalles, visita https://cla.microsoft.com. +Este proyecto da la bienvenida a contribuciones y sugerencias. La mayoría de las contribuciones requieren que aceptes un Acuerdo de Licencia de Contribuidor (CLA) declarando que tienes el derecho de, y efectivamente otorgas, los derechos para usar tu contribución. Para más detalles, visita https://cla.microsoft.com. -Cuando envíes una solicitud de extracción, un bot de CLA determinará automáticamente si necesitas proporcionar un CLA y decorará la PR de manera apropiada (por ejemplo, etiqueta, comentario). Simplemente sigue las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que utilicen nuestro CLA. +Cuando envíes una solicitud de extracción (pull request), un CLA-bot determinará automáticamente si necesitas proporcionar un CLA y decorará la PR adecuadamente (por ejemplo, etiqueta, comentario). Simplemente sigue las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que utilicen nuestro CLA. -Este proyecto ha adoptado el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). Para más información, consulta las [Preguntas Frecuentes sobre el Código de Conducta](https://opensource.microsoft.com/codeofconduct/faq/) o contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) con cualquier pregunta o comentario adicional. +Este proyecto ha adoptado el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). +Para más información, consulta las [Preguntas Frecuentes sobre el Código de Conducta](https://opensource.microsoft.com/codeofconduct/faq/) o contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) para cualquier pregunta o comentario adicional. # Buscando Contribuciones -Actualmente estamos buscando activamente contribuciones sobre los siguientes temas: +Actualmente estamos buscando activamente contribuciones en los siguientes temas: -- [ ] Escribir sección sobre Aprendizaje por Refuerzo Profundo -- [ ] Mejorar la sección + cuaderno sobre Detección de Objetos -- [ ] PyTorch Lightning (para [esta sección](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Escribir sección + ejemplos sobre Reconocimiento de Entidades Nombradas -- [ ] Crear ejemplos para entrenar nuestras propias incrustaciones para [esta sección](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) +- [ ] Escribir una sección sobre Aprendizaje por Refuerzo Profundo +- [ ] Mejorar la sección + notebook sobre Detección de Objetos +- [ ] PyTorch Lightning (para [esta sección](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escribir una sección + ejemplos sobre Reconocimiento de Entidades Nombradas +- [ ] Crear ejemplos para entrenar nuestros propios embeddings para [esta sección](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/Mindmap.md b/translations/es/etc/Mindmap.md index a5431495..b2f0e8e4 100644 --- a/translations/es/etc/Mindmap.md +++ b/translations/es/etc/Mindmap.md @@ -1,14 +1,23 @@ + # IA ## [Introducción a la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - Definición de IA - Historia de la IA - Enfoques de la IA - - De arriba hacia abajo/Simbólico + - De arriba hacia abajo/Simbólica - De abajo hacia arriba/Neuronal - - Evolutivo - - IA Sinérgica / Emergente - - [Escuela de Negocios de IA de Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - Evolutiva + - Sinérgica / IA Emergente + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) ## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - Representación del Conocimiento @@ -19,53 +28,55 @@ ## [Redes Neuronales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - [Perceptrón](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - [Redes Multicapa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - - [Introducción a los Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [Introducción a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) - [Sobreajuste](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) ## [Visión por Computadora](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - En MS Learn - - [Fundamentos de IA: Explorar Visión por Computadora](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Fundamentos de IA: Explora Visión por Computadora](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - [Visión por Computadora con PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - [Visión por Computadora con TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - - [Introducción a CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Introducción a Visión por Computadora. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - [Redes Convolucionales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - [Arquitecturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - [Aprendizaje por Transferencia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - [Trucos de Entrenamiento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - [Autoencoders y VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Redes Generativas Antagónicas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Redes Generativas Adversarias](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - [Transferencia de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - [Detección de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - [Segmentación](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) ## [Procesamiento de Lenguaje Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - En MS Learn - - [Fundamentos de IA: Explorar PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [Fundamentos de IA: Explora PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - [PLN con PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - [PLN con TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Representación de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - [Representación de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - Bolsa de Palabras - TF/IDF - - [Incrustaciones Semánticas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - [Embeddings Semánticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - [Modelado de Lenguaje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - [Redes Neuronales Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU - - [Redes Generativas Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Redes Recurrentes Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - [Transformers y BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - [Reconocimiento de Entidades Nombradas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - [Generación de Texto y GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + ## Otras Técnicas - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - [Aprendizaje por Refuerzo Profundo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [Sistemas Multiagente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + - [Sistemas Multi-Agente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) -## [Ética de la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) +## [Ética en la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - [MS Learn sobre IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + ## Extras - [Redes Multimodales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) @@ -73,4 +84,4 @@ - VQ-GAN **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/SUPPORT.md b/translations/es/etc/SUPPORT.md index 195f1e49..930db449 100644 --- a/translations/es/etc/SUPPORT.md +++ b/translations/es/etc/SUPPORT.md @@ -1,14 +1,23 @@ + # Soporte ## Cómo reportar problemas y obtener ayuda -Este proyecto utiliza GitHub Issues para rastrear errores y solicitudes de funciones. Por favor, busca en los problemas existentes antes de presentar nuevos problemas para evitar duplicados. Para nuevos problemas, presenta tu error o solicitud de función como un nuevo Issue. +Este proyecto utiliza GitHub Issues para rastrear errores y solicitudes de funciones. Por favor, busca en los problemas existentes antes de reportar nuevos problemas para evitar duplicados. Para nuevos problemas, reporta tu error o solicitud de función como un nuevo Issue. -Para ayuda y preguntas sobre el uso de este proyecto, por favor utiliza los Foros de Discusión. +Para obtener ayuda y resolver dudas sobre el uso de este proyecto, utiliza los Tableros de Discusión. -## Política de Soporte de Microsoft +## Política de soporte de Microsoft -El soporte para este proyecto está limitado a los recursos mencionados anteriormente. +El soporte para este proyecto se limita a los recursos mencionados anteriormente. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/TRANSLATIONS.md b/translations/es/etc/TRANSLATIONS.md index be2ea661..af0f3526 100644 --- a/translations/es/etc/TRANSLATIONS.md +++ b/translations/es/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ + # Contribuye traduciendo lecciones -¡Damos la bienvenida a las traducciones de las lecciones en este currículo! +¡Damos la bienvenida a las traducciones de las lecciones en este plan de estudios! ## Directrices -Hay carpetas en cada carpeta de lección y en la carpeta de introducción de la lección que contienen los archivos markdown traducidos. +Hay carpetas en cada carpeta de lección y en la carpeta de introducción de lección que contienen los archivos markdown traducidos. -> Nota: por favor, no traduzcas ningún código en los archivos de muestra de código; las únicas cosas que se deben traducir son README, tareas y cuestionarios. ¡Gracias! +> Nota: por favor, no traduzcas ningún código en los archivos de ejemplo de código; lo único que se debe traducir son los README, las tareas y los cuestionarios. ¡Gracias! -Los archivos traducidos deben seguir esta convención de nomenclatura: +Los archivos traducidos deben seguir esta convención de nombres: **README._[language]_.md** -donde _[language]_ es una abreviatura de dos letras para el idioma según el estándar ISO 639-1 (por ejemplo, `README.es.md` para español y `README.nl.md` para neerlandés). +donde _[language]_ es una abreviatura de dos letras del idioma siguiendo el estándar ISO 639-1 (por ejemplo, `README.es.md` para español y `README.nl.md` para neerlandés). **assignment._[language]_.md** -Similar a los Readme, por favor traduce también las tareas. +De manera similar a los README, por favor traduce también las tareas. **Cuestionarios** -1. Agrega tu traducción al quiz-app añadiendo un archivo aquí: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, con la convención de nomenclatura adecuada (en.json, fr.json). **Sin embargo, por favor no localices las palabras 'true' o 'false'. ¡Gracias!** +1. Agrega tu traducción a la aplicación de cuestionarios añadiendo un archivo aquí: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, con la convención de nombres adecuada (en.json, fr.json). **Por favor, no localices las palabras 'true' o 'false'. ¡Gracias!** -2. Agrega tu código de idioma al menú desplegable en el archivo App.vue del quiz-app. +2. Agrega tu código de idioma al menú desplegable en el archivo App.vue de la aplicación de cuestionarios. -3. Edita el archivo [translations index.js del quiz-app](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para añadir tu idioma. +3. Edita el [archivo index.js de traducciones](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) de la aplicación de cuestionarios para añadir tu idioma. -4. Finalmente, edita TODOS los enlaces de cuestionarios en tus archivos README.md traducidos para que apunten directamente a tu cuestionario traducido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se convierte en https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. Finalmente, edita TODOS los enlaces de los cuestionarios en tus archivos README.md traducidos para que apunten directamente a tu cuestionario traducido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se convierte en https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id -**GRACIAS** +**¡GRACIAS!** -¡Apreciamos sinceramente tus esfuerzos! +¡Realmente apreciamos tus esfuerzos! **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/quiz-app/README.md b/translations/es/etc/quiz-app/README.md index d3e1126e..48de0502 100644 --- a/translations/es/etc/quiz-app/README.md +++ b/translations/es/etc/quiz-app/README.md @@ -1,18 +1,27 @@ + # Cuestionarios -Estos cuestionarios son los cuestionarios de antes y después de la conferencia para el currículo de IA en https://aka.ms/ai-beginners +Estos cuestionarios son los cuestionarios previos y posteriores a las lecciones del currículo de IA en https://aka.ms/ai-beginners ## Agregar un conjunto de cuestionarios traducidos -Agrega una traducción de cuestionario creando estructuras de cuestionarios coincidentes en las carpetas `assets/translations`. Los cuestionarios canónicos están en `assets/translations/en`. Los cuestionarios están divididos en varios grupos por lección. Asegúrate de alinear la numeración con la sección de cuestionarios correspondiente. Hay un total de 40 cuestionarios en este currículo, comenzando desde 0. +Agrega una traducción de cuestionarios creando estructuras de cuestionarios correspondientes en las carpetas `assets/translations`. Los cuestionarios originales están en `assets/translations/en`. Los cuestionarios están divididos en varios grupos por lección. Asegúrate de alinear la numeración con la sección de cuestionarios adecuada. Hay un total de 40 cuestionarios en este currículo, comenzando desde el número 0. Después de editar las traducciones, edita el archivo index.js en la carpeta de traducción para importar todos los archivos siguiendo las convenciones en `en`. Edita el archivo `index.js` en `assets/translations` para importar los nuevos archivos traducidos. -Luego, edita el menú desplegable en `App.vue` en esta aplicación para agregar tu idioma. Asegúrate de que la abreviatura localizada coincida con el nombre de la carpeta de tu idioma. +Luego, edita el menú desplegable en `App.vue` en esta aplicación para agregar tu idioma. Haz coincidir la abreviatura localizada con el nombre de la carpeta de tu idioma. -Finalmente, edita todos los enlaces de cuestionarios en las lecciones traducidas, si existen, para incluir esta localización como un parámetro de consulta: `?loc=fr`, por ejemplo. +Finalmente, edita todos los enlaces de los cuestionarios en las lecciones traducidas, si existen, para incluir esta localización como un parámetro de consulta: `?loc=fr`, por ejemplo. ## Configuración del proyecto @@ -20,7 +29,7 @@ Finalmente, edita todos los enlaces de cuestionarios en las lecciones traducidas npm install ``` -### Compila y recarga en caliente para desarrollo +### Compila y recarga automáticamente para desarrollo ``` npm run serve @@ -32,65 +41,65 @@ npm run serve npm run build ``` -### Lint y corrige archivos +### Revisa y corrige archivos ``` npm run lint ``` -### Personaliza la configuración +### Personalizar configuración Consulta [Referencia de Configuración](https://cli.vuejs.org/config/). Créditos: Gracias a la versión original de esta aplicación de cuestionarios: https://github.com/arpan45/simple-quiz-vue -## Despliegue en Azure +## Desplegar en Azure Aquí tienes una guía paso a paso para ayudarte a comenzar: -1. Haz un fork de un repositorio de GitHub +1. Haz un fork del repositorio de GitHub Asegúrate de que el código de tu aplicación web estática esté en tu repositorio de GitHub. Haz un fork de este repositorio. -2. Crea una Aplicación Web Estática de Azure -- Crea una [cuenta de Azure](http://azure.microsoft.com) -- Ve al [portal de Azure](https://portal.azure.com) -- Haz clic en “Crear un recurso” y busca “Aplicación Web Estática”. -- Haz clic en “Crear”. +2. Crea una aplicación web estática en Azure +- Crea una [cuenta de Azure](http://azure.microsoft.com) +- Ve al [portal de Azure](https://portal.azure.com) +- Haz clic en “Crear un recurso” y busca “Aplicación Web Estática”. +- Haz clic en “Crear”. -3. Configura la Aplicación Web Estática -- Básicos: Suscripción: Selecciona tu suscripción de Azure. -- Grupo de Recursos: Crea un nuevo grupo de recursos o usa uno existente. -- Nombre: Proporciona un nombre para tu aplicación web estática. -- Región: Elige la región más cercana a tus usuarios. +3. Configura la aplicación web estática +- Básicos: Suscripción: Selecciona tu suscripción de Azure. +- Grupo de recursos: Crea un nuevo grupo de recursos o utiliza uno existente. +- Nombre: Proporciona un nombre para tu aplicación web estática. +- Región: Elige la región más cercana a tus usuarios. -- #### Detalles de Despliegue: -- Fuente: Selecciona “GitHub”. -- Cuenta de GitHub: Autoriza a Azure para acceder a tu cuenta de GitHub. -- Organización: Selecciona tu organización de GitHub. -- Repositorio: Elige el repositorio que contiene tu aplicación web estática. -- Rama: Selecciona la rama desde la que deseas desplegar. +- #### Detalles de implementación: +- Fuente: Selecciona “GitHub”. +- Cuenta de GitHub: Autoriza a Azure para acceder a tu cuenta de GitHub. +- Organización: Selecciona tu organización de GitHub. +- Repositorio: Elige el repositorio que contiene tu aplicación web estática. +- Rama: Selecciona la rama desde la que deseas desplegar. -- #### Detalles de Construcción: -- Presets de Construcción: Elige el framework con el que está construida tu aplicación (por ejemplo, React, Angular, Vue, etc.). -- Ubicación de la Aplicación: Especifica la carpeta que contiene el código de tu aplicación (por ejemplo, / si está en la raíz). -- Ubicación de la API: Si tienes una API, especifica su ubicación (opcional). -- Ubicación de Salida: Especifica la carpeta donde se genera la salida de la construcción (por ejemplo, build o dist). +- #### Detalles de compilación: +- Presets de compilación: Elige el framework con el que está construida tu aplicación (por ejemplo, React, Angular, Vue, etc.). +- Ubicación de la aplicación: Especifica la carpeta que contiene el código de tu aplicación (por ejemplo, / si está en la raíz). +- Ubicación de la API: Si tienes una API, especifica su ubicación (opcional). +- Ubicación de salida: Especifica la carpeta donde se genera la salida de la compilación (por ejemplo, build o dist). -4. Revisa y Crea -Revisa tus configuraciones y haz clic en “Crear”. Azure configurará los recursos necesarios y creará un flujo de trabajo de GitHub Actions en tu repositorio. +4. Revisa y crea +Revisa tu configuración y haz clic en “Crear”. Azure configurará los recursos necesarios y creará un archivo de flujo de trabajo de GitHub Actions en tu repositorio. -5. Flujo de Trabajo de GitHub Actions -Azure creará automáticamente un archivo de flujo de trabajo de GitHub Actions en tu repositorio (.github/workflows/azure-static-web-apps-.yml). Este flujo de trabajo manejará el proceso de construcción y despliegue. +5. Flujo de trabajo de GitHub Actions +Azure creará automáticamente un archivo de flujo de trabajo de GitHub Actions en tu repositorio (.github/workflows/azure-static-web-apps-.yml). Este flujo de trabajo manejará el proceso de compilación y despliegue. -6. Monitorea el Despliegue -Ve a la pestaña “Actions” en tu repositorio de GitHub. -Deberías ver un flujo de trabajo en ejecución. Este flujo de trabajo construirá y desplegará tu aplicación web estática en Azure. -Una vez que el flujo de trabajo se complete, tu aplicación estará activa en la URL de Azure proporcionada. +6. Monitorea el despliegue +Ve a la pestaña “Actions” en tu repositorio de GitHub. +Deberías ver un flujo de trabajo en ejecución. Este flujo de trabajo compilará y desplegará tu aplicación web estática en Azure. +Una vez que el flujo de trabajo se complete, tu aplicación estará en vivo en la URL proporcionada por Azure. -### Ejemplo de Archivo de Flujo de Trabajo +### Ejemplo de archivo de flujo de trabajo -Aquí tienes un ejemplo de cómo podría verse el archivo de flujo de trabajo de GitHub Actions: -name: Azure Static Web Apps CI/CD +Aquí tienes un ejemplo de cómo podría verse el archivo de flujo de trabajo de GitHub Actions: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +128,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Recursos Adicionales -- [Documentación de Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Documentación de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Recursos adicionales +- [Documentación de Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentación de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/for-teachers.md b/translations/es/lessons/0-course-setup/for-teachers.md index fb382468..16f969ae 100644 --- a/translations/es/lessons/0-course-setup/for-teachers.md +++ b/translations/es/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ + # Para Educadores -¿Te gustaría utilizar este currículo en tu aula? ¡Siéntete libre de hacerlo! +¿Te gustaría usar este plan de estudios en tu aula? ¡Siéntete libre de hacerlo! -De hecho, puedes usarlo dentro de GitHub mismo utilizando GitHub Classroom. +De hecho, puedes usarlo directamente en GitHub utilizando GitHub Classroom. -Para hacerlo, haz un fork de este repositorio. Necesitarás crear un repositorio para cada lección, así que tendrás que extraer cada carpeta en un repositorio separado. De esa manera, [GitHub Classroom](https://classroom.github.com/classrooms) puede recoger cada lección por separado. +Para hacerlo, haz un fork de este repositorio. Necesitarás crear un repositorio para cada lección, por lo que tendrás que extraer cada carpeta en un repositorio separado. De esta manera, [GitHub Classroom](https://classroom.github.com/classrooms) podrá identificar cada lección por separado. Estas [instrucciones completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) te darán una idea de cómo configurar tu aula. -## Usando el repositorio tal como está +## Usar el repositorio tal como está -Si deseas utilizar este repositorio tal como está actualmente, sin usar GitHub Classroom, también se puede hacer. Tendrás que comunicarte con tus estudiantes sobre qué lección trabajar juntos. +Si prefieres usar este repositorio tal como está, sin utilizar GitHub Classroom, también es posible. Necesitarás comunicarte con tus estudiantes para indicarles qué lección trabajar juntos. -En un formato en línea (Zoom, Teams u otro), podrías formar salas de grupo para los cuestionarios y guiar a los estudiantes para ayudarles a prepararse para aprender. Luego, invita a los estudiantes a participar en los cuestionarios y enviar sus respuestas como 'issues' en un momento determinado. Podrías hacer lo mismo con las tareas, si deseas que los estudiantes trabajen colaborativamente de manera abierta. +En un formato en línea (Zoom, Teams u otro), podrías formar salas de trabajo para los cuestionarios y guiar a los estudiantes para que se preparen para aprender. Luego, invítalos a realizar los cuestionarios y enviar sus respuestas como 'issues' en un momento determinado. Podrías hacer lo mismo con las tareas, si deseas que los estudiantes trabajen de manera colaborativa y abierta. -Si prefieres un formato más privado, pide a tus estudiantes que hagan un fork del currículo, lección por lección, a sus propios repositorios de GitHub como repositorios privados y te den acceso. Así podrán completar cuestionarios y tareas de forma privada y enviártelos a través de issues en tu repositorio del aula. +Si prefieres un formato más privado, pide a tus estudiantes que hagan un fork del plan de estudios, lección por lección, en sus propios repositorios privados de GitHub y te den acceso. De esta manera, podrán completar los cuestionarios y tareas de forma privada y enviártelos a través de issues en tu repositorio de aula. -Hay muchas maneras de hacer que esto funcione en un formato de aula en línea. ¡Por favor, háznos saber qué funciona mejor para ti! +Existen muchas maneras de hacer que esto funcione en un aula en línea. ¡Por favor, cuéntanos qué funciona mejor para ti! ## Por favor, danos tu opinión -Queremos que este currículo funcione para ti y tus estudiantes. ¡Por favor, déjanos tus comentarios en los foros de discusión! +Queremos que este plan de estudios funcione para ti y tus estudiantes. ¡Déjanos tus comentarios en los foros de discusión! **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/how-to-run.md b/translations/es/lessons/0-course-setup/how-to-run.md index 4b6a02e3..72bedd8f 100644 --- a/translations/es/lessons/0-course-setup/how-to-run.md +++ b/translations/es/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # Cómo Ejecutar el Código -Este plan de estudios contiene muchos ejemplos y laboratorios ejecutables que querrás correr. Para hacer esto, necesitas la capacidad de ejecutar código Python en los Jupyter Notebooks proporcionados como parte de este plan de estudios. Tienes varias opciones para ejecutar el código: +Este curso contiene muchos ejemplos ejecutables y laboratorios que querrás ejecutar. Para hacerlo, necesitas la capacidad de ejecutar código Python en Jupyter Notebooks proporcionados como parte de este curso. Tienes varias opciones para ejecutar el código: ## Ejecutar localmente en tu computadora -Para ejecutar el código localmente en tu computadora, necesitas tener alguna versión de Python instalada. Personalmente, recomiendo instalar **[miniconda](https://conda.io/en/latest/miniconda.html)**; es una instalación bastante ligera que soporta el gestor de paquetes `conda` para diferentes **entornos virtuales** de Python. +Para ejecutar el código localmente en tu computadora, necesitas tener alguna versión de Python instalada. Personalmente, recomiendo instalar **[miniconda](https://conda.io/en/latest/miniconda.html)**: es una instalación bastante ligera que soporta el gestor de paquetes `conda` para diferentes **entornos virtuales** de Python. -Después de instalar miniconda, necesitas clonar el repositorio y crear un entorno virtual que se utilizará para este curso: +Después de instalar miniconda, necesitas clonar el repositorio y crear un entorno virtual para usar en este curso: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,17 +24,17 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Usando Visual Studio Code con la Extensión de Python +### Usar Visual Studio Code con la Extensión de Python -Probablemente, la mejor manera de utilizar el plan de estudios es abrirlo en [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con la [Extensión de Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Probablemente la mejor manera de usar el curso es abrirlo en [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con la [Extensión de Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Nota**: Una vez que clones y abras el directorio en VS Code, te sugerirá automáticamente instalar las extensiones de Python. También tendrás que instalar miniconda como se describió anteriormente. +> **Nota**: Una vez que clones y abras el directorio en VS Code, automáticamente te sugerirá instalar las extensiones de Python. También tendrás que instalar miniconda como se describió anteriormente. -> **Nota**: Si VS Code te sugiere reabrir el repositorio en un contenedor, debes rechazar esto para usar la instalación local de Python. +> **Nota**: Si VS Code te sugiere reabrir el repositorio en un contenedor, necesitas rechazar esta opción para usar la instalación local de Python. -### Usando Jupyter en el Navegador +### Usar Jupyter en el Navegador -También puedes usar el entorno de Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub proporcionan un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. +También puedes usar el entorno de Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub ofrecen un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. Para iniciar Jupyter localmente, ve al directorio del curso y ejecuta: @@ -36,32 +45,32 @@ o ```bash jupyterhub ``` -Luego puedes navegar a cualquiera de las carpetas `.ipynb` files, open them and start working. +Luego puedes navegar a cualquiera de los archivos `.ipynb`, abrirlos y comenzar a trabajar. -### Running in container +### Ejecutar en un contenedor -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que indican cómo construir un contenedor para este repositorio; VS Code te ofrecerá reabrir el código en un contenedor. Esto requerirá la instalación de Docker y también será más complejo, por lo que recomendamos esto a usuarios más experimentados. +Una alternativa a la instalación de Python sería ejecutar el código en un contenedor. Dado que nuestro repositorio contiene una carpeta especial `.devcontainer` que indica cómo construir un contenedor para este repositorio, VS Code te ofrecerá reabrir el código en un contenedor. Esto requerirá la instalación de Docker y será más complejo, por lo que recomendamos esta opción para usuarios más experimentados. -## Ejecutando en la Nube +## Ejecutar en la Nube -Si no deseas instalar Python localmente y tienes acceso a algunos recursos en la nube, una buena alternativa sería ejecutar el código en la nube. Hay varias formas de hacerlo: +Si no deseas instalar Python localmente y tienes acceso a algunos recursos en la nube, una buena alternativa sería ejecutar el código en la nube. Hay varias maneras de hacerlo: -* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que es un entorno virtual creado para ti en GitHub, accesible a través de la interfaz del navegador de VS Code. Si tienes acceso a Codespaces, solo necesitas hacer clic en el botón **Code** en el repositorio, iniciar un codespace y comenzar a trabajar en poco tiempo. -* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) es un recurso de computación gratuito proporcionado en la nube para que personas como tú prueben algún código en GitHub. Hay un botón en la página principal para abrir el repositorio en Binder; esto te llevará rápidamente al sitio de Binder, que construirá el contenedor subyacente y comenzará la interfaz web de Jupyter sin problemas. +* Usar **[GitHub Codespaces](https://github.com/features/codespaces)**, que es un entorno virtual creado para ti en GitHub, accesible a través de la interfaz del navegador de VS Code. Si tienes acceso a Codespaces, simplemente puedes hacer clic en el botón **Code** en el repositorio, iniciar un codespace y comenzar a trabajar rápidamente. +* Usar **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) proporciona recursos de computación gratuitos en la nube para personas como tú que quieren probar código en GitHub. Hay un botón en la página principal para abrir el repositorio en Binder, lo que debería llevarte rápidamente al sitio de Binder, que construirá el contenedor subyacente y comenzará la interfaz web de Jupyter de manera fluida. -> **Nota**: Para prevenir el uso indebido, Binder tiene acceso bloqueado a algunos recursos web. Esto puede impedir que parte del código funcione, especialmente el que obtiene modelos y/o conjuntos de datos de Internet público. Es posible que necesites encontrar algunas soluciones alternativas. Además, los recursos de computación proporcionados por Binder son bastante básicos, por lo que el entrenamiento será lento, especialmente en lecciones más complejas más adelante. +> **Nota**: Para prevenir el mal uso, Binder tiene acceso bloqueado a algunos recursos web. Esto puede impedir que funcione parte del código que descarga modelos y/o conjuntos de datos desde Internet público. Es posible que necesites buscar algunas soluciones alternativas. Además, los recursos de computación proporcionados por Binder son bastante básicos, por lo que el entrenamiento será lento, especialmente en lecciones más complejas. -## Ejecutando en la Nube con GPU +## Ejecutar en la Nube con GPU -Algunas de las lecciones posteriores en este plan de estudios se beneficiarían enormemente del soporte de GPU, porque de lo contrario el entrenamiento será dolorosamente lento. Hay algunas opciones que puedes seguir, especialmente si tienes acceso a la nube ya sea a través de [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o a través de tu institución: +Algunas de las lecciones más avanzadas de este curso se beneficiarían enormemente del soporte de GPU, ya que de lo contrario el entrenamiento será extremadamente lento. Hay algunas opciones que puedes seguir, especialmente si tienes acceso a la nube, ya sea a través de [Azure para Estudiantes](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o a través de tu institución: -* Crea una [Máquina Virtual de Ciencia de Datos](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) y conéctate a ella a través de Jupyter. Luego puedes clonar el repositorio directamente en la máquina y comenzar a aprender. Las máquinas virtuales de la serie NC tienen soporte para GPU. +* Crear una [Máquina Virtual de Ciencia de Datos](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) y conectarte a ella a través de Jupyter. Luego puedes clonar el repositorio directamente en la máquina y comenzar a aprender. Las máquinas virtuales de la serie NC tienen soporte para GPU. -> **Nota**: Algunas suscripciones, incluyendo Azure for Students, no proporcionan soporte de GPU por defecto. Es posible que necesites solicitar núcleos de GPU adicionales a través de una solicitud de soporte técnico. +> **Nota**: Algunas suscripciones, incluyendo Azure para Estudiantes, no proporcionan soporte para GPU de manera predeterminada. Es posible que necesites solicitar núcleos de GPU adicionales a través de una solicitud de soporte técnico. -* Crea un [Espacio de Trabajo de Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) y luego utiliza la función de Notebook allí. [Este video](https://azure-for-academics.github.io/quickstart/azureml-papers/) muestra cómo clonar un repositorio en un notebook de Azure ML y comenzar a usarlo. +* Crear un [Espacio de Trabajo de Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) y luego usar la función de Notebook allí. [Este video](https://azure-for-academics.github.io/quickstart/azureml-papers/) muestra cómo clonar un repositorio en el notebook de Azure ML y comenzar a usarlo. -También puedes utilizar Google Colab, que viene con algo de soporte gratuito de GPU, y subir Jupyter Notebooks allí para ejecutarlos uno por uno. +También puedes usar Google Colab, que incluye soporte gratuito para GPU, y subir los Jupyter Notebooks allí para ejecutarlos uno por uno. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/setup.md b/translations/es/lessons/0-course-setup/setup.md index 20f19a92..67b73c2c 100644 --- a/translations/es/lessons/0-course-setup/setup.md +++ b/translations/es/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# Introducción a este Currículo + +# Comenzando con este Currículo -## ¿Eres un estudiante? +## ¿Eres estudiante? Comienza con los siguientes recursos: -* [Página del Hub para Estudiantes](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) En esta página, encontrarás recursos para principiantes, paquetes para estudiantes e incluso formas de obtener un vale de certificación gratuito. Esta es una página que querrás marcar y revisar de vez en cuando, ya que cambiamos el contenido al menos una vez al mes. +* [Página del Hub para estudiantes](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) En esta página encontrarás recursos para principiantes, paquetes para estudiantes e incluso formas de obtener un voucher gratuito para certificación. Es una página que querrás marcar como favorita y revisar de vez en cuando, ya que actualizamos el contenido al menos una vez al mes. * [Embajadores de Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Únete a una comunidad global de embajadores estudiantiles, esta podría ser tu puerta de entrada a Microsoft. -**Estudiantes**, hay un par de maneras de usar el currículo. Primero que todo, puedes simplemente leer el texto y revisar el código directamente en GitHub. Si deseas ejecutar el código en cualquiera de los cuadernos - [lee nuestras instrucciones](./etc/how-to-run.md), y encuentra más consejos sobre cómo hacerlo [en esta publicación del blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**Estudiantes**, hay un par de formas de usar el currículo. Primero, puedes simplemente leer el texto y revisar el código directamente en GitHub. Si deseas ejecutar el código en cualquiera de los notebooks - [lee nuestras instrucciones](./etc/how-to-run.md) y encuentra más consejos sobre cómo hacerlo [en este artículo de blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Nota**: [Instrucciones sobre cómo ejecutar el código en este currículo](/how-to-run.md) +> **Nota**: [Instrucciones sobre cómo ejecutar el código en este currículo](./how-to-run.md) -## Autoestudio +## Estudio autónomo -Sin embargo, si deseas tomar el curso como un proyecto de autoestudio, te sugerimos que hagas un fork del repositorio completo a tu propia cuenta de GitHub y completes los ejercicios por tu cuenta o con un grupo: +Sin embargo, si prefieres tomar el curso como un proyecto de autoestudio, te sugerimos que hagas un fork de todo el repositorio en tu propia cuenta de GitHub y completes los ejercicios por tu cuenta o con un grupo: * Comienza con un cuestionario previo a la clase. -* Lee el texto introductorio de la clase. -* Si la clase tiene cuadernos adicionales, revísalos, leyendo y ejecutando el código. Si se proporcionan cuadernos de TensorFlow y PyTorch, puedes enfocarte en uno de ellos: elige tu framework favorito. -* Los cuadernos a menudo contienen algunos de los desafíos que requieren que ajustes un poco el código para experimentar. +* Lee el texto introductorio de la lección. +* Si la lección tiene notebooks adicionales, revísalos, lee y ejecuta el código. Si se proporcionan notebooks tanto de TensorFlow como de PyTorch, puedes enfocarte en uno de ellos: elige tu framework favorito. +* Los notebooks a menudo contienen algunos desafíos que requieren que ajustes el código un poco para experimentar. * Realiza el cuestionario posterior a la clase. * Si hay un laboratorio adjunto al módulo, completa la tarea. -* Visita el [foro de discusión](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender en voz alta". +* Visita el [tablero de discusión](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender en voz alta". -> Para un estudio adicional, recomendamos seguir estos módulos y rutas de aprendizaje de [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). +> Para estudios adicionales, recomendamos seguir estos módulos y rutas de aprendizaje de [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). -**Profesores**, hemos [incluido algunas sugerencias](/for-teachers.md) sobre cómo utilizar este currículo. +**Profesores**, hemos [incluido algunas sugerencias](/for-teachers.md) sobre cómo usar este currículo. --- ## Pedagogía -Hemos elegido dos principios pedagógicos al construir este currículo: asegurar que sea **basado en proyectos** y que incluya **cuestionarios frecuentes**. +Hemos elegido dos principios pedagógicos al construir este currículo: asegurarnos de que sea **basado en proyectos** prácticos y que incluya **cuestionarios frecuentes**. -Al asegurar que el contenido esté alineado con proyectos, el proceso se vuelve más atractivo para los estudiantes y se incrementa la retención de conceptos. Además, un cuestionario de bajo riesgo antes de una clase establece la intención del estudiante hacia el aprendizaje de un tema, mientras que un segundo cuestionario después de la clase asegura una mayor retención. Este currículo fue diseñado para ser flexible y divertido y puede ser tomado en su totalidad o en parte. Los proyectos comienzan pequeños y se vuelven cada vez más complejos al final del ciclo de 12 semanas. +Al garantizar que el contenido esté alineado con proyectos, el proceso se vuelve más atractivo para los estudiantes y se mejora la retención de conceptos. Además, un cuestionario de bajo riesgo antes de la clase establece la intención del estudiante hacia el aprendizaje de un tema, mientras que un segundo cuestionario después de la clase asegura una mayor retención. Este currículo fue diseñado para ser flexible y divertido, y puede tomarse en su totalidad o en partes. Los proyectos comienzan pequeños y se vuelven cada vez más complejos al final del ciclo de 12 semanas. -> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos [en esta aplicación](https://red-field-0a6ddfd03.1.azurestaticapps.net/), con un total de 50 cuestionarios de tres preguntas cada uno. Están vinculados desde las lecciones, pero la aplicación de cuestionarios puede ejecutarse localmente; sigue las instrucciones en la carpeta `etc/quiz-app`. +> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos [en esta aplicación](https://red-field-0a6ddfd03.1.azurestaticapps.net/), con un total de 50 cuestionarios de tres preguntas cada uno. Están vinculados dentro de las lecciones, pero la aplicación de cuestionarios puede ejecutarse localmente; sigue las instrucciones en la carpeta `etc/quiz-app`. ## Acceso sin conexión -Puedes ejecutar esta documentación sin conexión utilizando [Docsify](https://docsify.js.org/#/). Haz un fork de este repositorio, [instala Docsify](https://docsify.js.org/#/quickstart) en tu máquina local, y luego en la carpeta `etc/docsify` de este repositorio, escribe `docsify serve`. El sitio web se servirá en el puerto 3000 en tu localhost: `localhost:3000`. Un pdf del currículo está disponible [en este enlace](../../../../../../etc/pdf/readme.pdf). +Puedes ejecutar esta documentación sin conexión utilizando [Docsify](https://docsify.js.org/#/). Haz un fork de este repositorio, [instala Docsify](https://docsify.js.org/#/quickstart) en tu máquina local y luego, en la carpeta raíz de este repositorio, escribe `docsify serve`. El sitio web se servirá en el puerto 3000 de tu localhost: `localhost:3000`. Un pdf del currículo está disponible [en este enlace](../../../../../../../../../etc/pdf/readme.pdf). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/1-Intro/README.md b/translations/es/lessons/1-Intro/README.md index cf49e000..bbf0bdc3 100644 --- a/translations/es/lessons/1-Intro/README.md +++ b/translations/es/lessons/1-Intro/README.md @@ -1,31 +1,138 @@ -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +# Introducción a la IA -A medida que pasó el tiempo, los recursos informáticos se volvieron más baratos y más datos se hicieron disponibles, por lo que los enfoques de redes neuronales comenzaron a demostrar un gran rendimiento en la competencia con los seres humanos en muchas áreas, como la visión por computadora o la comprensión del habla. En la última década, el término Inteligencia Artificial se ha utilizado principalmente como un sinónimo de Redes Neuronales, ya que la mayoría de los éxitos de IA de los que escuchamos se basan en ellas. +![Resumen del contenido de Introducción a la IA en un dibujo](../../../../lessons/sketchnotes/ai-intro.png) -Podemos observar cómo cambiaron los enfoques, por ejemplo, en la creación de un programa de computadora para jugar ajedrez: +> Dibujo por [Tomomi Imura](https://twitter.com/girlie_mac) -* Los primeros programas de ajedrez se basaban en la búsqueda: un programa intentaba estimar explícitamente los posibles movimientos de un oponente para un número determinado de movimientos siguientes y seleccionaba un movimiento óptimo basado en la posición óptima que se puede lograr en unos pocos movimientos. Esto llevó al desarrollo del algoritmo de búsqueda llamado [poda alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). -* Las estrategias de búsqueda funcionan bien hacia el final del juego, donde el espacio de búsqueda está limitado por un pequeño número de posibles movimientos. Sin embargo, al principio del juego, el espacio de búsqueda es enorme, y el algoritmo se puede mejorar aprendiendo de partidas existentes entre jugadores humanos. Experimentos posteriores emplearon el llamado [razonamiento basado en casos](https://en.wikipedia.org/wiki/Case-based_reasoning), donde el programa buscaba casos en la base de conocimientos muy similares a la posición actual en el juego. -* Los programas modernos que ganan a los jugadores humanos se basan en redes neuronales y [aprendizaje por refuerzo](https://en.wikipedia.org/wiki/Reinforcement_learning), donde los programas aprenden a jugar únicamente jugando mucho tiempo contra sí mismos y aprendiendo de sus propios errores, de manera similar a como lo hacen los seres humanos al aprender a jugar ajedrez. Sin embargo, un programa de computadora puede jugar muchos más juegos en mucho menos tiempo, y así puede aprender mucho más rápido. +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**Inteligencia Artificial** es una disciplina científica fascinante que estudia cómo podemos hacer que las computadoras exhiban un comportamiento inteligente, es decir, que realicen aquellas cosas en las que los seres humanos somos buenos. + +Originalmente, las computadoras fueron inventadas por [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) para operar con números siguiendo un procedimiento bien definido: un algoritmo. Las computadoras modernas, aunque significativamente más avanzadas que el modelo original propuesto en el siglo XIX, aún siguen la misma idea de cálculos controlados. Por lo tanto, es posible programar una computadora para hacer algo si conocemos la secuencia exacta de pasos necesarios para lograr el objetivo. + +![Foto de una persona](../../../../lessons/1-Intro/images/dsh_age.png) + +> Foto por [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Definir la edad de una persona a partir de su fotografía es una tarea que no puede ser programada explícitamente, porque no sabemos cómo llegamos a un número en nuestra mente cuando lo hacemos. + +--- + +Sin embargo, hay algunas tareas que no sabemos resolver explícitamente. Consideremos determinar la edad de una persona a partir de su fotografía. De alguna manera aprendemos a hacerlo porque hemos visto muchos ejemplos de personas de diferentes edades, pero no podemos explicar explícitamente cómo lo hacemos, ni podemos programar una computadora para hacerlo. Este es exactamente el tipo de tarea que interesa a la **Inteligencia Artificial** (IA). + +✅ Piensa en algunas tareas que podrías delegar a una computadora y que se beneficiarían de la IA. Considera los campos de las finanzas, la medicina y las artes: ¿cómo se están beneficiando hoy en día de la IA? + +## IA Débil vs. IA Fuerte + +IA Débil | IA Fuerte +---------------------------------------|------------------------------------- +La IA débil se refiere a sistemas de IA diseñados y entrenados para una tarea específica o un conjunto limitado de tareas.|La IA fuerte, o Inteligencia Artificial General (AGI), se refiere a sistemas de IA con un nivel de inteligencia y comprensión similar al humano. +Estos sistemas de IA no son generalmente inteligentes; sobresalen en realizar una tarea predefinida pero carecen de verdadera comprensión o conciencia.|Estos sistemas de IA tienen la capacidad de realizar cualquier tarea intelectual que un ser humano pueda hacer, adaptarse a diferentes dominios y poseer una forma de conciencia o autoconciencia. +Ejemplos de IA débil incluyen asistentes virtuales como Siri o Alexa, algoritmos de recomendación utilizados por servicios de streaming y chatbots diseñados para tareas específicas de atención al cliente.|Lograr la IA fuerte es un objetivo a largo plazo de la investigación en IA y requeriría el desarrollo de sistemas de IA que puedan razonar, aprender, comprender y adaptarse a una amplia gama de tareas y contextos. +La IA débil está altamente especializada y no posee habilidades cognitivas similares a las humanas ni capacidades generales de resolución de problemas más allá de su dominio limitado.|La IA fuerte es actualmente un concepto teórico, y ningún sistema de IA ha alcanzado este nivel de inteligencia general. + +Para más información, consulta **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## La Definición de Inteligencia y la Prueba de Turing + +Uno de los problemas al tratar con el término **[Inteligencia](https://en.wikipedia.org/wiki/Intelligence)** es que no hay una definición clara de este término. Se puede argumentar que la inteligencia está conectada con el **pensamiento abstracto** o con la **autoconciencia**, pero no podemos definirla adecuadamente. + +![Foto de un gato](../../../../lessons/1-Intro/images/photo-cat.jpg) + +> [Foto](https://unsplash.com/photos/75715CVEJhI) por [Amber Kipp](https://unsplash.com/@sadmax) de Unsplash + +Para ver la ambigüedad del término *inteligencia*, intenta responder a la pregunta: "¿Es un gato inteligente?". Diferentes personas tienden a dar respuestas diferentes a esta pregunta, ya que no hay una prueba universalmente aceptada para demostrar si la afirmación es verdadera o no. Y si crees que la hay, intenta hacer que tu gato pase una prueba de coeficiente intelectual... + +✅ Piensa por un momento en cómo defines la inteligencia. ¿Es un cuervo que puede resolver un laberinto para conseguir comida inteligente? ¿Es un niño inteligente? + +--- + +Cuando hablamos de AGI, necesitamos alguna forma de determinar si hemos creado un sistema verdaderamente inteligente. [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) propuso un método llamado **[Prueba de Turing](https://en.wikipedia.org/wiki/Turing_test)**, que también actúa como una definición de inteligencia. La prueba compara un sistema dado con algo inherentemente inteligente: un ser humano real. Y dado que cualquier comparación automática puede ser eludida por un programa de computadora, usamos un interrogador humano. Así, si un ser humano no puede distinguir entre una persona real y un sistema informático en un diálogo basado en texto, el sistema se considera inteligente. + +> Un chatbot llamado [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman), desarrollado en San Petersburgo, estuvo cerca de pasar la prueba de Turing en 2014 utilizando un truco de personalidad ingenioso. Anunció desde el principio que era un niño ucraniano de 13 años, lo que explicaría la falta de conocimiento y algunas discrepancias en el texto. El bot convenció al 30% de los jueces de que era humano después de un diálogo de 5 minutos, una métrica que Turing creía que una máquina podría superar para el año 2000. Sin embargo, hay que entender que esto no indica que hayamos creado un sistema inteligente, o que un sistema informático haya engañado al interrogador humano: ¡el sistema no engañó a los humanos, sino que los creadores del bot lo hicieron! + +✅ ¿Alguna vez un chatbot te ha hecho creer que estabas hablando con un humano? ¿Cómo te convenció? + +## Diferentes Enfoques de la IA + +Si queremos que una computadora se comporte como un humano, necesitamos de alguna manera modelar dentro de una computadora nuestra forma de pensar. En consecuencia, necesitamos tratar de entender qué hace que un ser humano sea inteligente. + +> Para poder programar inteligencia en una máquina, necesitamos entender cómo funcionan nuestros propios procesos de toma de decisiones. Si haces un poco de introspección, te darás cuenta de que hay algunos procesos que ocurren de manera subconsciente, por ejemplo, podemos distinguir un gato de un perro sin pensarlo, mientras que otros implican razonamiento. + +Hay dos posibles enfoques para este problema: + +Enfoque de Arriba hacia Abajo (Razonamiento Simbólico) | Enfoque de Abajo hacia Arriba (Redes Neuronales) +---------------------------------------|------------------------------------- +Un enfoque de arriba hacia abajo modela la forma en que una persona razona para resolver un problema. Implica extraer **conocimiento** de un ser humano y representarlo en un formato legible por computadora. También necesitamos desarrollar una forma de modelar el **razonamiento** dentro de una computadora. | Un enfoque de abajo hacia arriba modela la estructura del cerebro humano, que consiste en un gran número de unidades simples llamadas **neuronas**. Cada neurona actúa como un promedio ponderado de sus entradas, y podemos entrenar una red de neuronas para resolver problemas útiles proporcionando **datos de entrenamiento**. + +También hay otros enfoques posibles para la inteligencia: + +* Un enfoque **Emergente**, **Sinérgico** o de **múltiples agentes** se basa en el hecho de que un comportamiento inteligente complejo puede obtenerse mediante la interacción de un gran número de agentes simples. Según la [cibernética evolutiva](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics), la inteligencia puede *emerger* de un comportamiento más simple y reactivo en el proceso de *transición de metasisistema*. + +* Un enfoque **Evolutivo**, o **algoritmo genético**, es un proceso de optimización basado en los principios de la evolución. + +Consideraremos estos enfoques más adelante en el curso, pero por ahora nos centraremos en dos direcciones principales: de arriba hacia abajo y de abajo hacia arriba. + +### El Enfoque de Arriba hacia Abajo + +En un **enfoque de arriba hacia abajo**, intentamos modelar nuestro razonamiento. Dado que podemos seguir nuestros pensamientos cuando razonamos, podemos intentar formalizar este proceso y programarlo dentro de la computadora. Esto se llama **razonamiento simbólico**. + +Las personas tienden a tener algunas reglas en su mente que guían sus procesos de toma de decisiones. Por ejemplo, cuando un médico diagnostica a un paciente, puede darse cuenta de que una persona tiene fiebre y, por lo tanto, podría haber alguna inflamación en el cuerpo. Al aplicar un gran conjunto de reglas a un problema específico, un médico puede llegar al diagnóstico final. + +Este enfoque depende en gran medida de la **representación del conocimiento** y el **razonamiento**. Extraer conocimiento de un experto humano puede ser la parte más difícil, porque un médico, en muchos casos, no sabría exactamente por qué llega a un diagnóstico en particular. A veces, la solución simplemente aparece en su mente sin un pensamiento explícito. Algunas tareas, como determinar la edad de una persona a partir de una fotografía, no pueden reducirse en absoluto a la manipulación del conocimiento. + +### Enfoque de Abajo hacia Arriba + +Alternativamente, podemos intentar modelar los elementos más simples dentro de nuestro cerebro: una neurona. Podemos construir una **red neuronal artificial** dentro de una computadora y luego intentar enseñarle a resolver problemas dándole ejemplos. Este proceso es similar a cómo un niño recién nacido aprende sobre su entorno al hacer observaciones. + +✅ Investiga un poco sobre cómo aprenden los bebés. ¿Cuáles son los elementos básicos del cerebro de un bebé? + +> | ¿Qué pasa con el ML? | | +> |--------------|-----------| +> | Parte de la Inteligencia Artificial que se basa en que la computadora aprenda a resolver un problema a partir de algunos datos se llama **Aprendizaje Automático**. No consideraremos el aprendizaje automático clásico en este curso; te remitimos a un plan de estudios separado de [Machine Learning for Beginners](http://aka.ms/ml-beginners). | ![ML para Principiantes](../../../../lessons/1-Intro/images/ml-for-beginners.png) | + +## Breve Historia de la IA + +La Inteligencia Artificial comenzó como un campo a mediados del siglo XX. Inicialmente, el razonamiento simbólico era el enfoque predominante, y condujo a una serie de éxitos importantes, como los sistemas expertos: programas de computadora que podían actuar como expertos en algunos dominios de problemas limitados. Sin embargo, pronto quedó claro que este enfoque no escala bien. Extraer el conocimiento de un experto, representarlo en una computadora y mantener esa base de conocimiento precisa resulta ser una tarea muy compleja y demasiado costosa para ser práctica en muchos casos. Esto llevó al llamado [Invierno de la IA](https://en.wikipedia.org/wiki/AI_winter) en la década de 1970. + +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) + +Con el tiempo, los recursos informáticos se volvieron más baratos y se dispuso de más datos, por lo que los enfoques de redes neuronales comenzaron a demostrar un gran rendimiento al competir con los seres humanos en muchas áreas, como la visión por computadora o la comprensión del habla. En la última década, el término Inteligencia Artificial se ha utilizado principalmente como sinónimo de Redes Neuronales, porque la mayoría de los éxitos de la IA de los que escuchamos se basan en ellas. + +Podemos observar cómo han cambiado los enfoques, por ejemplo, al crear un programa de computadora para jugar al ajedrez: + +* Los primeros programas de ajedrez se basaban en la búsqueda: un programa intentaba explícitamente estimar los posibles movimientos de un oponente para un número dado de movimientos futuros y seleccionaba un movimiento óptimo basado en la posición óptima que se podía lograr en unos pocos movimientos. Esto llevó al desarrollo del llamado algoritmo de búsqueda [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Las estrategias de búsqueda funcionan bien hacia el final del juego, donde el espacio de búsqueda está limitado por un pequeño número de movimientos posibles. Sin embargo, al comienzo del juego, el espacio de búsqueda es enorme, y el algoritmo puede mejorarse aprendiendo de partidas existentes entre jugadores humanos. Experimentos posteriores emplearon el llamado [razonamiento basado en casos](https://en.wikipedia.org/wiki/Case-based_reasoning), donde el programa buscaba casos en la base de conocimiento muy similares a la posición actual en el juego. +* Los programas modernos que vencen a jugadores humanos se basan en redes neuronales y [aprendizaje por refuerzo](https://en.wikipedia.org/wiki/Reinforcement_learning), donde los programas aprenden a jugar únicamente jugando durante mucho tiempo contra sí mismos y aprendiendo de sus propios errores, de manera muy similar a como los seres humanos aprenden a jugar al ajedrez. Sin embargo, un programa de computadora puede jugar muchas más partidas en mucho menos tiempo y, por lo tanto, puede aprender mucho más rápido. ✅ Investiga un poco sobre otros juegos que han sido jugados por IA. -De manera similar, podemos ver cómo cambió el enfoque hacia la creación de "programas que hablan" (que podrían pasar la prueba de Turing): +De manera similar, podemos ver cómo ha cambiado el enfoque hacia la creación de "programas parlantes" (que podrían pasar la prueba de Turing): -* Los primeros programas de este tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), se basaban en reglas gramaticales muy simples y la reformulación de la oración de entrada en una pregunta. +* Los primeros programas de este tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), se basaban en reglas gramaticales muy simples y en la reformulación de la oración de entrada en una pregunta. * Los asistentes modernos, como Cortana, Siri o Google Assistant, son todos sistemas híbridos que utilizan redes neuronales para convertir el habla en texto y reconocer nuestra intención, y luego emplean algún razonamiento o algoritmos explícitos para realizar las acciones requeridas. -* En el futuro, podemos esperar un modelo completamente basado en redes neuronales para manejar el diálogo por sí mismo. Las recientes redes neuronales de la familia GPT y [Turing-NLG](https://turing.microsoft.com/) muestran un gran éxito en esto. +* En el futuro, podríamos esperar un modelo completamente basado en redes neuronales que maneje el diálogo por sí mismo. Las recientes redes neuronales de la familia GPT y [Turing-NLG](https://turing.microsoft.com/) muestran un gran éxito en esto. -> Imagen de Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) de [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash +> Imagen de Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) por [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash ## Investigación reciente en IA -El enorme crecimiento reciente en la investigación de redes neuronales comenzó alrededor de 2010, cuando comenzaron a estar disponibles grandes conjuntos de datos públicos. Una enorme colección de imágenes llamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contiene alrededor de 14 millones de imágenes anotadas, dio origen al [Desafío de Reconocimiento Visual a Gran Escala de ImageNet](https://image-net.org/challenges/LSVRC/). +El enorme crecimiento reciente en la investigación de redes neuronales comenzó alrededor de 2010, cuando empezaron a estar disponibles grandes conjuntos de datos públicos. Una enorme colección de imágenes llamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contiene alrededor de 14 millones de imágenes anotadas, dio lugar al [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). ![Precisión de ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) > Imagen de [Dmitry Soshnikov](http://soshnikov.com) -En 2012, se utilizaron por primera vez las [Redes Neuronales Convolucionales](../4-ComputerVision/07-ConvNets/README.md) en la clasificación de imágenes, lo que llevó a una disminución significativa de los errores de clasificación (de casi 30% a 16.4%). En 2015, la arquitectura ResNet de Microsoft Research [alcanzó una precisión a nivel humano](https://doi.org/10.1109/ICCV.2015.123). + +En 2012, las [Redes Neuronales Convolucionales](../4-ComputerVision/07-ConvNets/README.md) se usaron por primera vez en la clasificación de imágenes, lo que llevó a una reducción significativa en los errores de clasificación (de casi un 30% a un 16.4%). En 2015, la arquitectura ResNet de Microsoft Research [logró una precisión a nivel humano](https://doi.org/10.1109/ICCV.2015.123). Desde entonces, las Redes Neuronales han demostrado un comportamiento muy exitoso en muchas tareas: @@ -35,22 +142,22 @@ Año | Paridad Humana alcanzada -----|-------- 2015 | [Clasificación de Imágenes](https://doi.org/10.1109/ICCV.2015.123) 2016 | [Reconocimiento de Voz Conversacional](https://arxiv.org/abs/1610.05256) -2018 | [Traducción Automática de Máquinas](https://arxiv.org/abs/1803.05567) (chino-inglés) +2018 | [Traducción Automática](https://arxiv.org/abs/1803.05567) (Chino a Inglés) 2020 | [Generación de Descripciones de Imágenes](https://arxiv.org/abs/2009.13682) -En los últimos años hemos sido testigos de grandes éxitos con modelos de lenguaje de gran tamaño, como BERT y GPT-3. Esto ocurrió principalmente debido al hecho de que hay una gran cantidad de datos de texto general disponibles que nos permiten entrenar modelos para capturar la estructura y el significado de los textos, preentrenarlos en colecciones de texto generales y luego especializar esos modelos para tareas más específicas. Aprenderemos más sobre [Procesamiento de Lenguaje Natural](../5-NLP/README.md) más adelante en este curso. +En los últimos años hemos sido testigos de grandes éxitos con modelos de lenguaje de gran escala, como BERT y GPT-3. Esto ocurrió principalmente debido a la gran cantidad de datos de texto general disponibles, lo que permite entrenar modelos para capturar la estructura y el significado de los textos, preentrenarlos en colecciones de texto general y luego especializarlos para tareas más específicas. Aprenderemos más sobre [Procesamiento de Lenguaje Natural](../5-NLP/README.md) más adelante en este curso. ## 🚀 Desafío -Haz un recorrido por internet para determinar dónde, en tu opinión, se utiliza la IA de manera más efectiva. ¿Es en una aplicación de mapeo, en algún servicio de reconocimiento de voz a texto o en un videojuego? Investiga cómo se construyó el sistema. +Haz un recorrido por internet para determinar dónde, en tu opinión, se utiliza la IA de manera más efectiva. ¿Es en una aplicación de mapas, algún servicio de conversión de voz a texto o un videojuego? Investiga cómo se construyó el sistema. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## Revisión y Autoestudio +## Revisión y autoestudio -Revisa la historia de la IA y el ML leyendo [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Toma un elemento de la sketchnote en la parte superior de esa lección o de esta y investígalo más a fondo para entender el contexto cultural que informa su evolución. +Revisa la historia de la IA y el aprendizaje automático leyendo [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Toma un elemento del sketchnote al inicio de esa lección o de esta y profundiza en su investigación para comprender el contexto cultural que influyó en su evolución. **Tarea**: [Game Jam](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/1-Intro/assignment.md b/translations/es/lessons/1-Intro/assignment.md index dd5adcb9..2cffc9e3 100644 --- a/translations/es/lessons/1-Intro/assignment.md +++ b/translations/es/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Los juegos son un área que ha sido fuertemente influenciada por los desarrollos en IA y ML. En esta tarea, escribe un breve ensayo sobre un juego que te guste y que haya sido influenciado por la evolución de la IA. Debe ser un juego lo suficientemente antiguo como para haber sido influenciado por varios tipos de sistemas de procesamiento informático. Un buen ejemplo es el ajedrez o el go, pero también echa un vistazo a videojuegos como pong o Pac-Man. Escribe un ensayo que discuta el pasado, presente y futuro de IA del juego. +Los juegos son un área que ha sido fuertemente influenciada por los avances en IA y ML. En esta tarea, escribe un breve ensayo sobre un juego que te guste y que haya sido influenciado por la evolución de la IA. Debe ser un juego lo suficientemente antiguo como para haber sido afectado por varios tipos de sistemas de procesamiento informático. Un buen ejemplo es el ajedrez o el Go, pero también considera videojuegos como Pong o Pac-Man. Escribe un ensayo que analice el pasado, presente y futuro de la IA en el juego. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/2-Symbolic/README.md b/translations/es/lessons/2-Symbolic/README.md index 49e6a7ae..a989055d 100644 --- a/translations/es/lessons/2-Symbolic/README.md +++ b/translations/es/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ + # Representación del Conocimiento y Sistemas Expertos -![Resumen del contenido de IA Simbólica](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.es.png) +![Resumen del contenido de IA Simbólica](../../../../lessons/sketchnotes/ai-symbolic.png) -> Sketchnote de [Tomomi Imura](https://twitter.com/girlie_mac) +> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) -La búsqueda de inteligencia artificial se basa en la búsqueda de conocimiento, para entender el mundo de manera similar a como lo hacen los humanos. Pero, ¿cómo se puede llevar a cabo esto? +La búsqueda de la inteligencia artificial se basa en la búsqueda de conocimiento, para entender el mundo de manera similar a como lo hacen los humanos. Pero, ¿cómo se puede lograr esto? -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -En los primeros días de la IA, el enfoque de arriba hacia abajo para crear sistemas inteligentes (discutido en la lección anterior) era popular. La idea era extraer el conocimiento de las personas en una forma legible por máquina y luego usarlo para resolver problemas automáticamente. Este enfoque se basaba en dos grandes ideas: +En los primeros días de la IA, el enfoque de arriba hacia abajo para crear sistemas inteligentes (discutido en la lección anterior) era popular. La idea era extraer el conocimiento de las personas en una forma legible por máquinas y luego usarlo para resolver problemas automáticamente. Este enfoque se basaba en dos grandes ideas: * Representación del Conocimiento * Razonamiento ## Representación del Conocimiento -Uno de los conceptos importantes en la IA Simbólica es el **conocimiento**. Es importante diferenciar el conocimiento de la *información* o *datos*. Por ejemplo, se puede decir que los libros contienen conocimiento, porque uno puede estudiar libros y convertirse en un experto. Sin embargo, lo que contienen los libros se llama en realidad *datos*, y al leer libros e integrar estos datos en nuestro modelo del mundo, convertimos estos datos en conocimiento. +Uno de los conceptos importantes en la IA Simbólica es el **conocimiento**. Es importante diferenciar el conocimiento de la *información* o los *datos*. Por ejemplo, se puede decir que los libros contienen conocimiento, porque uno puede estudiarlos y convertirse en un experto. Sin embargo, lo que los libros contienen en realidad se llama *datos*, y al leerlos e integrar estos datos en nuestro modelo del mundo, convertimos estos datos en conocimiento. -> ✅ **El conocimiento** es algo que está contenido en nuestra cabeza y representa nuestra comprensión del mundo. Se obtiene a través de un proceso activo de **aprendizaje**, que integra piezas de información que recibimos en nuestro modelo activo del mundo. +> ✅ **Conocimiento** es algo que está contenido en nuestra mente y representa nuestra comprensión del mundo. Se obtiene mediante un proceso activo de **aprendizaje**, que integra piezas de información que recibimos en nuestro modelo activo del mundo. -A menudo, no definimos estrictamente el conocimiento, sino que lo alineamos con otros conceptos relacionados utilizando la [Pirámide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Contiene los siguientes conceptos: +A menudo, no definimos estrictamente el conocimiento, pero lo alineamos con otros conceptos relacionados utilizando la [Pirámide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Contiene los siguientes conceptos: -* **Datos** son algo representado en medios físicos, como texto escrito o palabras habladas. Los datos existen independientemente de los seres humanos y pueden ser transmitidos entre personas. -* **Información** es cómo interpretamos los datos en nuestra cabeza. Por ejemplo, cuando escuchamos la palabra *computadora*, tenemos alguna comprensión de lo que es. -* **Conocimiento** es la información que se integra en nuestro modelo del mundo. Por ejemplo, una vez que aprendemos lo que es una computadora, comenzamos a tener algunas ideas sobre cómo funciona, cuánto cuesta y para qué se puede usar. Esta red de conceptos interrelacionados forma nuestro conocimiento. -* **Sabiduría** es un nivel más de nuestra comprensión del mundo y representa *meta-conocimiento*, es decir, alguna noción sobre cómo y cuándo se debe usar el conocimiento. - - +* **Datos**: algo representado en medios físicos, como texto escrito o palabras habladas. Los datos existen independientemente de los seres humanos y pueden ser transmitidos entre personas. +* **Información**: cómo interpretamos los datos en nuestra mente. Por ejemplo, cuando escuchamos la palabra *computadora*, tenemos alguna idea de lo que es. +* **Conocimiento**: la información integrada en nuestro modelo del mundo. Por ejemplo, una vez que aprendemos qué es una computadora, comenzamos a tener ideas sobre cómo funciona, cuánto cuesta y para qué se puede usar. Esta red de conceptos interrelacionados forma nuestro conocimiento. +* **Sabiduría**: un nivel más de nuestra comprensión del mundo, que representa el *meta-conocimiento*, es decir, una noción sobre cómo y cuándo debe usarse el conocimiento. *Imagen [de Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Por Longlivetheux - Trabajo propio, CC BY-SA 4.0* -Así, el problema de la **representación del conocimiento** es encontrar alguna manera efectiva de representar el conocimiento dentro de una computadora en forma de datos, para que sea automáticamente utilizable. Esto puede verse como un espectro: +Por lo tanto, el problema de la **representación del conocimiento** es encontrar una forma efectiva de representar el conocimiento dentro de una computadora en forma de datos, para que sea automáticamente utilizable. Esto puede verse como un espectro: -![Espectro de representación del conocimiento](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.es.png) +![Espectro de representación del conocimiento](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) -* A la izquierda, hay tipos de representaciones de conocimiento muy simples que pueden ser utilizados efectivamente por las computadoras. La más simple es algorítmica, cuando el conocimiento es representado por un programa de computadora. Sin embargo, esta no es la mejor manera de representar el conocimiento, porque no es flexible. El conocimiento dentro de nuestra cabeza a menudo es no algorítmico. -* A la derecha, hay representaciones como el texto natural. Es la más poderosa, pero no puede ser utilizada para razonamiento automático. +* A la izquierda, hay tipos muy simples de representaciones de conocimiento que pueden ser utilizados de manera efectiva por las computadoras. El más simple es el algorítmico, cuando el conocimiento se representa mediante un programa de computadora. Sin embargo, esta no es la mejor manera de representar el conocimiento, porque no es flexible. El conocimiento en nuestra mente a menudo no es algorítmico. +* A la derecha, hay representaciones como el texto natural. Es la más poderosa, pero no puede ser utilizada para el razonamiento automático. -> ✅ Piensa un momento en cómo representas el conocimiento en tu cabeza y lo conviertes en notas. ¿Hay un formato particular que funcione bien para ti para ayudar en la retención? +> ✅ Piensa por un momento en cómo representas el conocimiento en tu mente y lo conviertes en notas. ¿Hay algún formato en particular que funcione bien para ti y te ayude a retenerlo? -## Clasificación de Representaciones de Conocimiento Computacional +## Clasificación de Representaciones de Conocimiento en Computadoras -Podemos clasificar diferentes métodos de representación de conocimiento computacional en las siguientes categorías: +Podemos clasificar diferentes métodos de representación del conocimiento en computadoras en las siguientes categorías: -* **Representaciones en red** se basan en el hecho de que tenemos una red de conceptos interrelacionados dentro de nuestra cabeza. Podemos intentar reproducir las mismas redes como un gráfico dentro de una computadora - una llamada **red semántica**. +* **Representaciones en red**: se basan en el hecho de que tenemos una red de conceptos interrelacionados en nuestra mente. Podemos intentar reproducir las mismas redes como un grafo dentro de una computadora, una llamada **red semántica**. -1. **Tripletas Objeto-Atributo-Valor** o **pares atributo-valor**. Dado que un gráfico puede ser representado dentro de una computadora como una lista de nodos y aristas, podemos representar una red semántica mediante una lista de tripletas, que contienen objetos, atributos y valores. Por ejemplo, construimos las siguientes tripletas sobre lenguajes de programación: +1. **Tríadas Objeto-Atributo-Valor** o **pares atributo-valor**. Dado que un grafo puede representarse dentro de una computadora como una lista de nodos y aristas, podemos representar una red semántica mediante una lista de tríadas que contienen objetos, atributos y valores. Por ejemplo, construimos las siguientes tríadas sobre lenguajes de programación: Objeto | Atributo | Valor --------|-----------|------ -Python | es | Lenguaje-Sin-Tipo +-------|----------|------ +Python | es | Lenguaje-No-Tipado Python | inventado-por | Guido van Rossum Python | sintaxis-de-bloque | indentación -Lenguaje-Sin-Tipo | no tiene | definiciones de tipo +Lenguaje-No-Tipado | no tiene | definiciones de tipo -> ✅ Piensa en cómo se pueden usar tripletas para representar otros tipos de conocimiento. +> ✅ Piensa cómo las tríadas pueden ser utilizadas para representar otros tipos de conocimiento. -2. **Representaciones jerárquicas** enfatizan el hecho de que a menudo creamos una jerarquía de objetos dentro de nuestra cabeza. Por ejemplo, sabemos que un canario es un pájaro, y todos los pájaros tienen alas. También tenemos alguna idea sobre de qué color es un canario generalmente, y cuál es su velocidad de vuelo. +2. **Representaciones jerárquicas**: enfatizan el hecho de que a menudo creamos una jerarquía de objetos en nuestra mente. Por ejemplo, sabemos que un canario es un pájaro, y que todos los pájaros tienen alas. También tenemos alguna idea sobre el color típico de un canario y su velocidad de vuelo. - - **Representación en marco** se basa en representar cada objeto o clase de objetos como un **marco** que contiene **slots**. Los slots tienen posibles valores predeterminados, restricciones de valor o procedimientos almacenados que pueden ser llamados para obtener el valor de un slot. Todos los marcos forman una jerarquía similar a una jerarquía de objetos en lenguajes de programación orientados a objetos. - - **Escenarios** son un tipo especial de marcos que representan situaciones complejas que pueden desarrollarse en el tiempo. + - **Representación mediante marcos**: se basa en representar cada objeto o clase de objetos como un **marco** que contiene **ranuras**. Las ranuras tienen posibles valores predeterminados, restricciones de valor o procedimientos almacenados que pueden ser llamados para obtener el valor de una ranura. Todos los marcos forman una jerarquía similar a una jerarquía de objetos en lenguajes de programación orientados a objetos. + - **Escenarios**: son un tipo especial de marcos que representan situaciones complejas que pueden desarrollarse en el tiempo. **Python** -Slot | Valor | Valor predeterminado | Intervalo | ------|-------|----------------------|----------| +Ranura | Valor | Valor predeterminado | Intervalo | +-------|-------|----------------------|----------| Nombre | Python | | | -Es-Un | Lenguaje-Sin-Tipo | | | +Es-Un | Lenguaje-No-Tipado | | | Caso de Variable | | CamelCase | | Longitud del Programa | | | 5-5000 líneas | Sintaxis de Bloque | Indentación | | | -3. **Representaciones procedimentales** se basan en representar el conocimiento mediante una lista de acciones que pueden ser ejecutadas cuando ocurre una cierta condición. - - Las reglas de producción son declaraciones si-entonces que nos permiten llegar a conclusiones. Por ejemplo, un médico puede tener una regla que diga que **SI** un paciente tiene fiebre alta **O** un alto nivel de proteína C-reactiva en el análisis de sangre **ENTONCES** tiene una inflamación. Una vez que encontramos una de las condiciones, podemos llegar a una conclusión sobre la inflamación, y luego usarla en un razonamiento posterior. - - Los algoritmos pueden considerarse otra forma de representación procedimental, aunque casi nunca se utilizan directamente en sistemas basados en conocimiento. +3. **Representaciones procedimentales**: se basan en representar el conocimiento mediante una lista de acciones que pueden ejecutarse cuando ocurre una cierta condición. + - Las reglas de producción son declaraciones del tipo si-entonces que nos permiten sacar conclusiones. Por ejemplo, un médico puede tener una regla que diga que **SI** un paciente tiene fiebre alta **O** un nivel alto de proteína C reactiva en un análisis de sangre, **ENTONCES** tiene una inflamación. Una vez que encontramos una de las condiciones, podemos concluir que hay inflamación y luego usar esta información en razonamientos posteriores. + - Los algoritmos pueden considerarse otra forma de representación procedimental, aunque casi nunca se usan directamente en sistemas basados en conocimiento. -4. **Lógica** fue propuesta originalmente por Aristóteles como una forma de representar el conocimiento humano universal. - - La Lógica de Predicados como teoría matemática es demasiado rica para ser computable, por lo tanto, normalmente se utiliza algún subconjunto de ella, como las cláusulas de Horn utilizadas en Prolog. - - La Lógica Descriptiva es una familia de sistemas lógicos utilizados para representar y razonar sobre jerarquías de objetos en representaciones de conocimiento distribuidas como la *web semántica*. +4. **Lógica**: fue propuesta originalmente por Aristóteles como una forma de representar el conocimiento humano universal. + - La Lógica de Predicados como teoría matemática es demasiado rica para ser computable, por lo que normalmente se utiliza un subconjunto de ella, como las cláusulas de Horn utilizadas en Prolog. + - La Lógica Descriptiva es una familia de sistemas lógicos utilizados para representar y razonar sobre jerarquías de objetos y representaciones de conocimiento distribuidas como la *web semántica*. ## Sistemas Expertos -Uno de los primeros éxitos de la IA simbólica fueron los llamados **sistemas expertos** - sistemas computacionales diseñados para actuar como un experto en un dominio de problema limitado. Se basaban en una **base de conocimiento** extraída de uno o más expertos humanos, y contenían un **motor de inferencia** que realizaba algún razonamiento sobre ella. +Uno de los primeros éxitos de la IA simbólica fueron los llamados **sistemas expertos**: sistemas informáticos diseñados para actuar como un experto en un dominio de problemas limitado. Se basaban en una **base de conocimiento** extraída de uno o más expertos humanos, y contenían un **motor de inferencia** que realizaba razonamientos sobre esta base. -![Arquitectura Humana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.es.png) | ![Sistema Basado en Conocimiento](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.es.png) +![Arquitectura Humana](../../../../lessons/2-Symbolic/images/arch-human.png) | ![Sistema Basado en Conocimiento](../../../../lessons/2-Symbolic/images/arch-kbs.png) ---------------------------------------------|------------------------------------------------ -Estructura simplificada de un sistema neural humano | Arquitectura de un sistema basado en conocimiento +Estructura simplificada del sistema neural humano | Arquitectura de un sistema basado en conocimiento -Los sistemas expertos están construidos como el sistema de razonamiento humano, que contiene **memoria a corto plazo** y **memoria a largo plazo**. De manera similar, en los sistemas basados en conocimiento distinguimos los siguientes componentes: +Los sistemas expertos están construidos de manera similar al sistema de razonamiento humano, que contiene **memoria a corto plazo** y **memoria a largo plazo**. De manera similar, en los sistemas basados en conocimiento distinguimos los siguientes componentes: -* **Memoria del problema**: contiene el conocimiento sobre el problema que se está resolviendo actualmente, es decir, la temperatura o presión arterial de un paciente, si tiene inflamación o no, etc. Este conocimiento también se llama **conocimiento estático**, porque contiene una instantánea de lo que actualmente sabemos sobre el problema - el llamado *estado del problema*. -* **Base de conocimiento**: representa el conocimiento a largo plazo sobre un dominio de problema. Se extrae manualmente de expertos humanos y no cambia de consulta a consulta. Debido a que nos permite navegar de un estado de problema a otro, también se llama **conocimiento dinámico**. -* **Motor de inferencia**: orquesta todo el proceso de búsqueda en el espacio del estado del problema, haciendo preguntas al usuario cuando es necesario. También es responsable de encontrar las reglas adecuadas que se aplicarán a cada estado. +* **Memoria del problema**: contiene el conocimiento sobre el problema que se está resolviendo actualmente, es decir, la temperatura o la presión arterial de un paciente, si tiene inflamación o no, etc. Este conocimiento también se llama **conocimiento estático**, porque contiene una instantánea de lo que sabemos actualmente sobre el problema: el llamado *estado del problema*. +* **Base de conocimiento**: representa el conocimiento a largo plazo sobre un dominio de problemas. Se extrae manualmente de expertos humanos y no cambia de una consulta a otra. Debido a que nos permite navegar de un estado del problema a otro, también se llama **conocimiento dinámico**. +* **Motor de inferencia**: orquesta todo el proceso de búsqueda en el espacio de estados del problema, haciendo preguntas al usuario cuando sea necesario. También es responsable de encontrar las reglas correctas para aplicar en cada estado. Como ejemplo, consideremos el siguiente sistema experto para determinar un animal basado en sus características físicas: -![Árbol AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.es.png) +![Árbol AND-OR](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) -Este diagrama se llama un **árbol AND-OR**, y es una representación gráfica de un conjunto de reglas de producción. Dibujar un árbol es útil al principio para extraer conocimiento del experto. Para representar el conocimiento dentro de la computadora es más conveniente usar reglas: +Este diagrama se llama un **árbol AND-OR**, y es una representación gráfica de un conjunto de reglas de producción. Dibujar un árbol es útil al comienzo de la extracción de conocimiento del experto. Para representar el conocimiento dentro de la computadora, es más conveniente usar reglas: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Puedes notar que cada condición en el lado izquierdo de la regla y la acción son esencialmente tripletas objeto-atributo-valor (OAV). **La memoria de trabajo** contiene el conjunto de tripletas OAV que corresponden al problema que se está resolviendo actualmente. Un **motor de reglas** busca reglas para las cuales se cumple una condición y las aplica, añadiendo otra tripleta a la memoria de trabajo. +Puedes notar que cada condición en el lado izquierdo de la regla y la acción son esencialmente tríadas Objeto-Atributo-Valor (OAV). La **memoria de trabajo** contiene el conjunto de tríadas OAV que corresponden al problema que se está resolviendo actualmente. Un **motor de reglas** busca reglas cuyas condiciones estén satisfechas y las aplica, agregando otra tríada a la memoria de trabajo. > ✅ ¡Escribe tu propio árbol AND-OR sobre un tema que te guste! -### Inferencia hacia adelante vs. Inferencia hacia atrás +### Inferencia hacia Adelante vs. Inferencia hacia Atrás -El proceso descrito anteriormente se llama **inferencia hacia adelante**. Comienza con algunos datos iniciales sobre el problema disponibles en la memoria de trabajo, y luego ejecuta el siguiente bucle de razonamiento: +El proceso descrito anteriormente se llama **inferencia hacia adelante**. Comienza con algunos datos iniciales sobre el problema disponibles en la memoria de trabajo y luego ejecuta el siguiente ciclo de razonamiento: -1. Si el atributo objetivo está presente en la memoria de trabajo - detente y da el resultado -2. Busca todas las reglas cuya condición esté actualmente satisfecha - obtén el **conjunto de conflictos** de reglas. -3. Realiza **resolución de conflictos** - selecciona una regla que se ejecutará en este paso. Podría haber diferentes estrategias de resolución de conflictos: - - Selecciona la primera regla aplicable en la base de conocimiento - - Selecciona una regla aleatoria - - Selecciona una regla *más específica*, es decir, aquella que cumple con más condiciones en el "lado izquierdo" (LHS) -4. Aplica la regla seleccionada e inserta un nuevo conocimiento en el estado del problema +1. Si el atributo objetivo está presente en la memoria de trabajo, detente y da el resultado. +2. Busca todas las reglas cuyas condiciones estén actualmente satisfechas: obtén el **conjunto de conflicto** de reglas. +3. Realiza la **resolución de conflictos**: selecciona una regla que se ejecutará en este paso. Podría haber diferentes estrategias de resolución de conflictos: + - Seleccionar la primera regla aplicable en la base de conocimiento. + - Seleccionar una regla al azar. + - Seleccionar una regla *más específica*, es decir, la que cumpla con más condiciones en el lado izquierdo ("LHS"). +4. Aplica la regla seleccionada e inserta un nuevo conocimiento en el estado del problema. 5. Repite desde el paso 1. -Sin embargo, en algunos casos podemos querer comenzar con un conocimiento vacío sobre el problema y hacer preguntas que nos ayuden a llegar a la conclusión. Por ejemplo, al realizar un diagnóstico médico, generalmente no realizamos todos los análisis médicos por adelantado antes de comenzar a diagnosticar al paciente. Más bien, queremos realizar análisis cuando se necesita tomar una decisión. +Sin embargo, en algunos casos podríamos querer comenzar con un conocimiento vacío sobre el problema y hacer preguntas que nos ayuden a llegar a la conclusión. Por ejemplo, al realizar un diagnóstico médico, generalmente no realizamos todos los análisis médicos de antemano antes de comenzar a diagnosticar al paciente. Más bien, queremos realizar análisis cuando sea necesario tomar una decisión. -Este proceso se puede modelar utilizando **inferencia hacia atrás**. Está impulsado por el **objetivo** - el valor del atributo que estamos buscando: +Este proceso puede modelarse utilizando **inferencia hacia atrás**. Está impulsado por el **objetivo**: el valor del atributo que buscamos encontrar: -1. Selecciona todas las reglas que pueden darnos el valor de un objetivo (es decir, con el objetivo en el RHS ("lado derecho")) - un conjunto de conflictos -1. Si no hay reglas para este atributo, o hay una regla que dice que debemos preguntar el valor al usuario - pregúntalo, de lo contrario: -1. Usa una estrategia de resolución de conflictos para seleccionar una regla que usaremos como *hipótesis* - intentaremos probarla -1. Repetidamente repite el proceso para todos los atributos en el LHS de la regla, intentando probarlos como objetivos -1. Si en algún momento el proceso falla - usa otra regla en el paso 3. +1. Selecciona todas las reglas que puedan darnos el valor de un objetivo (es decir, con el objetivo en el lado derecho ("RHS")): un conjunto de conflicto. +1. Si no hay reglas para este atributo, o hay una regla que dice que debemos preguntar el valor al usuario, pregúntalo; de lo contrario: +1. Usa una estrategia de resolución de conflictos para seleccionar una regla que usaremos como *hipótesis*: intentaremos probarla. +1. Repite recursivamente el proceso para todos los atributos en el lado izquierdo de la regla, intentando probarlos como objetivos. +1. Si en algún momento el proceso falla, usa otra regla en el paso 3. -> ✅ ¿En qué situaciones es más apropiada la inferencia hacia adelante? ¿Qué hay de la inferencia hacia atrás? +> ✅ ¿En qué situaciones es más apropiada la inferencia hacia adelante? ¿Y la inferencia hacia atrás? ### Implementación de Sistemas Expertos Los sistemas expertos pueden implementarse utilizando diferentes herramientas: -* Programándolos directamente en algún lenguaje de programación de alto nivel. Esta no es la mejor idea, porque la principal ventaja de un sistema basado en conocimiento es que el conocimiento está separado de la inferencia, y potencialmente un experto en el dominio del problema debería ser capaz de escribir reglas sin entender los detalles del proceso de inferencia. -* Usando **shell de sistemas expertos**, es decir, un sistema diseñado específicamente para ser poblado por conocimiento utilizando algún lenguaje de representación del conocimiento. +* Programándolos directamente en algún lenguaje de programación de alto nivel. Esto no es la mejor idea, porque la principal ventaja de un sistema basado en conocimiento es que el conocimiento está separado de la inferencia, y potencialmente un experto en el dominio del problema debería poder escribir reglas sin entender los detalles del proceso de inferencia. +* Usando un **shell de sistemas expertos**, es decir, un sistema diseñado específicamente para ser poblado con conocimiento utilizando algún lenguaje de representación del conocimiento. -## ✍️ Ejercicio: Inferencia Animal - -Consulta [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para un ejemplo de implementación de un sistema experto de inferencia hacia adelante y hacia atrás. - -> **Nota**: Este ejemplo es bastante simple y solo da una idea de cómo se ve un sistema experto. Una vez que comiences a crear tal sistema, solo notarás algún comportamiento *inteligente* de él una vez que alcances un cierto número de reglas, alrededor de 200+. En algún momento, las reglas se vuelven demasiado complejas para mantener todas en mente, y en este punto puedes comenzar a preguntarte por qué un sistema toma ciertas decisiones. Sin embargo, la característica importante de los sistemas basados en conocimiento es que siempre puedes *explicar* exactamente cómo se tomaron las decisiones. +## ✍️ Ejercicio: Inferencia de Animales +Consulta [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para un ejemplo de implementación de un sistema experto con inferencia hacia adelante y hacia atrás. +> **Nota**: Este ejemplo es bastante simple y solo da una idea de cómo se ve un sistema experto. Una vez que comiences a crear un sistema de este tipo, solo notarás un comportamiento *inteligente* cuando alcances un cierto número de reglas, alrededor de 200 o más. En algún momento, las reglas se vuelven demasiado complejas para recordarlas todas, y en ese punto podrías empezar a preguntarte por qué el sistema toma ciertas decisiones. Sin embargo, una de las características importantes de los sistemas basados en conocimiento es que siempre puedes *explicar* exactamente cómo se tomó cada decisión. ## Ontologías y la Web Semántica -A finales del siglo XX, hubo una iniciativa para usar la representación del conocimiento para anotar recursos de Internet, de modo que fuera posible encontrar recursos que correspondieran a consultas muy específicas. Este movimiento se llamó **Web Semántica**, y se basó en varios conceptos: +A finales del siglo XX, surgió una iniciativa para usar la representación del conocimiento con el fin de anotar recursos de Internet, de manera que fuera posible encontrar recursos que correspondieran a consultas muy específicas. Este movimiento se llamó **Web Semántica**, y se basó en varios conceptos: -- Una representación especial del conocimiento basada en **[lógicas de descripción](https://en.wikipedia.org/wiki/Description_logic)** (DL). Es similar a la representación de conocimiento en marcos, porque construye una jerarquía de objetos con propiedades, pero tiene semántica lógica formal e inferencia. Hay toda una familia de DLs que equilibran entre expresividad y complejidad algorítmica de la inferencia. -- Representación de conocimiento distribuido, donde todos los conceptos están representados por un identificador URI global, lo que hace posible crear jerarquías de conocimiento que abarcan Internet. -- Una familia de lenguajes basados en XML para la descripción del conocimiento: RDF (Marco de Descripción de Recursos), RDFS (Esquema RDF), OWL (Lenguaje de Ontología Web). +- Una representación especial del conocimiento basada en **[lógicas descriptivas](https://en.wikipedia.org/wiki/Description_logic)** (DL). Es similar a la representación del conocimiento en marcos, ya que construye una jerarquía de objetos con propiedades, pero tiene semántica lógica formal e inferencia. Existe toda una familia de DLs que equilibran entre expresividad y la complejidad algorítmica de la inferencia. +- Representación del conocimiento distribuida, donde todos los conceptos están representados por un identificador URI global, lo que permite crear jerarquías de conocimiento que abarcan Internet. +- Una familia de lenguajes basados en XML para la descripción del conocimiento: RDF (Marco de Descripción de Recursos), RDFS (Esquema RDF), OWL (Lenguaje de Ontologías Web). -Un concepto central en la Web Semántica es el concepto de **Ontología**. Se refiere a una especificación explícita de un dominio de problema utilizando alguna representación formal del conocimiento. La ontología más simple puede ser solo una jerarquía de objetos en un dominio de problema, pero ontologías más complejas incluirán reglas que pueden ser utilizadas para inferencia. +Un concepto central en la Web Semántica es el concepto de **Ontología**. Se refiere a una especificación explícita de un dominio de problema utilizando alguna representación formal del conocimiento. La ontología más simple puede ser solo una jerarquía de objetos en un dominio de problema, pero las ontologías más complejas incluirán reglas que pueden usarse para inferencias. -En la web semántica, todas las representaciones se basan en tripletas. Cada objeto y cada relación están identificados de manera única por la URI. Por ejemplo, si queremos afirmar que este Currículo de IA ha sido desarrollado por Dmitry Soshnikov el 1 de enero de 2022, aquí están las tripletas que podemos usar: +En la Web Semántica, todas las representaciones se basan en tríadas. Cada objeto y cada relación están identificados de manera única por un URI. Por ejemplo, si queremos declarar el hecho de que este Currículum de IA fue desarrollado por Dmitry Soshnikov el 1 de enero de 2022, estas son las tríadas que podemos usar: @@ -173,17 +178,17 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Aquí `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` son algunas URIs bien conocidas y universalmente aceptadas para expresar los conceptos de *creador* y *fecha de creación*. +> ✅ Aquí `http://www.example.com/terms/creation-date` y `http://purl.org/dc/elements/1.1/creator` son algunos URIs bien conocidos y universalmente aceptados para expresar los conceptos de *creador* y *fecha de creación*. En un caso más complejo, si queremos definir una lista de creadores, podemos usar algunas estructuras de datos definidas en RDF. -> Diagramas arriba por [Dmitry Soshnikov](http://soshnikov.com) +> Diagramas anteriores por [Dmitry Soshnikov](http://soshnikov.com) -El progreso en la construcción de la Web Semántica se vio algo ralentizado por el éxito de los motores de búsqueda y las técnicas de procesamiento de lenguaje natural, que permiten extraer datos estructurados de texto. Sin embargo, en algunas áreas aún hay esfuerzos significativos para mantener ontologías y bases de conocimiento. Algunos proyectos que vale la pena mencionar: +El progreso en la construcción de la Web Semántica se vio algo ralentizado por el éxito de los motores de búsqueda y las técnicas de procesamiento del lenguaje natural, que permiten extraer datos estructurados del texto. Sin embargo, en algunas áreas todavía hay esfuerzos significativos para mantener ontologías y bases de conocimiento. Algunos proyectos destacados: -* [WikiData](https://wikidata.org/) es una colección de bases de conocimiento legibles por máquina asociadas con Wikipedia. La mayor parte de los datos se extraen de las *InfoBoxes* de Wikipedia, piezas de contenido estructurado dentro de las páginas de Wikipedia. Puedes [consultar](https://query.wikidata.org/) wikidata en SPARQL, un lenguaje de consulta especial para la Web Semántica. Aquí hay una consulta de muestra que muestra los colores de ojos más populares entre los humanos: +* [WikiData](https://wikidata.org/) es una colección de bases de conocimiento legibles por máquinas asociadas con Wikipedia. La mayor parte de los datos se extraen de las *InfoBoxes* de Wikipedia, piezas de contenido estructurado dentro de las páginas de Wikipedia. Puedes [consultar](https://query.wikidata.org/) WikiData en SPARQL, un lenguaje de consulta especial para la Web Semántica. Aquí hay una consulta de ejemplo que muestra los colores de ojos más populares entre los humanos: ```sparql #defaultView:BubbleChart @@ -199,23 +204,45 @@ GROUP BY ?eyeColorLabel * [DBpedia](https://www.dbpedia.org/) es otro esfuerzo similar a WikiData. -> ✅ Si deseas experimentar con la construcción de tus propias ontologías, o abrir las existentes, hay un gran editor visual de ontologías llamado [Protégé](https://protege.stanford.edu/). Descárgalo o úsalo en línea. +> ✅ Si deseas experimentar con la construcción de tus propias ontologías o abrir ontologías existentes, hay un excelente editor visual de ontologías llamado [Protégé](https://protege.stanford.edu/). Descárgalo o úsalo en línea. -*Editor Web Protégé abierto con la ontología de la Familia Romanov. Captura de pantalla de Dmitry Soshnikov* +*Editor Web Protégé abierto con la ontología de la Familia Romanov. Captura de pantalla por Dmitry Soshnikov* ## ✍️ Ejercicio: Una Ontología Familiar -Consulta [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para un ejemplo de uso de técnicas de Web Semántica para razonar sobre relaciones familiares. Tomaremos un árbol genealógico representado en el formato GEDCOM común y una ontología de relaciones familiares y construiremos un gráfico de todas las relaciones familiares para un conjunto dado de individuos. +Consulta [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para un ejemplo de uso de técnicas de la Web Semántica para razonar sobre relaciones familiares. Tomaremos un árbol genealógico representado en el formato común GEDCOM y una ontología de relaciones familiares para construir un gráfico de todas las relaciones familiares para un conjunto dado de individuos. -## Grafo de Conceptos de Microsoft +## Microsoft Concept Graph -En la mayoría de los casos, las ontologías son creadas cuidadosamente a mano. Sin embargo, también es posible **extraer** ontologías de datos no estructurados, por ejemplo, de textos en lenguaje natural. +En la mayoría de los casos, las ontologías se crean cuidadosamente a mano. Sin embargo, también es posible **extraer** ontologías de datos no estructurados, por ejemplo, de textos en lenguaje natural. -Un intento de este tipo fue realizado por Microsoft Research, y resultó en el [Grafo de Conceptos de Microsoft](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). +Un intento de este tipo fue realizado por Microsoft Research, y resultó en [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). -Es una gran colección de entidades agrupadas mediante la relación de herencia `is-a`. Permite responder preguntas como "¿Qué es Microsoft?" +Es una gran colección de entidades agrupadas utilizando la relación de herencia `es-un`. Permite responder preguntas como "¿Qué es Microsoft?" - la respuesta sería algo como "una empresa con probabilidad 0.87, y una marca con probabilidad 0.75". + +El gráfico está disponible como API REST o como un gran archivo de texto descargable que enumera todos los pares de entidades. + +## ✍️ Ejercicio: Un Concept Graph + +Prueba el cuaderno [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) para ver cómo podemos usar Microsoft Concept Graph para agrupar artículos de noticias en varias categorías. + +## Conclusión + +Hoy en día, la IA a menudo se considera sinónimo de *Aprendizaje Automático* o *Redes Neuronales*. Sin embargo, los seres humanos también exhiben razonamiento explícito, algo que actualmente no manejan las redes neuronales. En proyectos del mundo real, el razonamiento explícito todavía se utiliza para realizar tareas que requieren explicaciones o la capacidad de modificar el comportamiento del sistema de manera controlada. + +## 🚀 Desafío + +En el cuaderno de la Ontología Familiar asociado a esta lección, hay una oportunidad para experimentar con otras relaciones familiares. Intenta descubrir nuevas conexiones entre las personas en el árbol genealógico. + +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Revisión y Autoestudio + +Investiga en Internet para descubrir áreas donde los humanos han intentado cuantificar y codificar el conocimiento. Echa un vistazo a la Taxonomía de Bloom y retrocede en la historia para aprender cómo los humanos intentaron comprender su mundo. Explora el trabajo de Linneo para crear una taxonomía de organismos y observa cómo Dmitri Mendeléyev creó una forma de describir y agrupar los elementos químicos. ¿Qué otros ejemplos interesantes puedes encontrar? + +**Tarea**: [Construye una Ontología](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/2-Symbolic/assignment.md b/translations/es/lessons/2-Symbolic/assignment.md index 529dd887..ef7e9cf7 100644 --- a/translations/es/lessons/2-Symbolic/assignment.md +++ b/translations/es/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ + # Construir una Ontología -Construir una base de conocimientos se trata de categorizar un modelo que representa hechos sobre un tema. Elige un tema, como una persona, un lugar o una cosa, y luego construye un modelo de ese tema. Utiliza algunas de las técnicas y estrategias de construcción de modelos descritas en esta lección. Un ejemplo podría ser crear una ontología de una sala de estar con muebles, luces, y así sucesivamente. ¿En qué se diferencia la sala de estar de la cocina? ¿Del baño? ¿Cómo sabes que es una sala de estar y no un comedor? Usa [Protégé](https://protege.stanford.edu/) para construir tu ontología. +Construir una base de conocimiento consiste en categorizar un modelo que representa hechos sobre un tema. Elige un tema, como una persona, un lugar o un objeto, y luego construye un modelo de ese tema. Utiliza algunas de las técnicas y estrategias de construcción de modelos descritas en esta lección. Un ejemplo sería crear una ontología de una sala de estar con muebles, luces, etc. ¿En qué se diferencia la sala de estar de la cocina? ¿Del baño? ¿Cómo sabes que es una sala de estar y no un comedor? Utiliza [Protégé](https://protege.stanford.edu/) para construir tu ontología. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md index d1f53154..29ab6592 100644 --- a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,6 +1,15 @@ -# Introducción a las Redes Neuronales: Perceptrón + +# Introducción a Redes Neuronales: Perceptrón -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) Uno de los primeros intentos de implementar algo similar a una red neuronal moderna fue realizado por Frank Rosenblatt del Laboratorio Aeronáutico de Cornell en 1957. Fue una implementación de hardware llamada "Mark-1", diseñada para reconocer figuras geométricas primitivas, como triángulos, cuadrados y círculos. @@ -10,7 +19,7 @@ Uno de los primeros intentos de implementar algo similar a una red neuronal mode > Imágenes [de Wikipedia](https://en.wikipedia.org/wiki/Perceptron) -Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada **unidad de lógica de umbral**. Los pesos de la red neuronal actuaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento. +Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada una **unidad lógica de umbral**. Los pesos de la red neuronal actuaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento. > ✅ Un potenciómetro es un dispositivo que permite al usuario ajustar la resistencia de un circuito. @@ -18,31 +27,31 @@ Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20 ## Modelo de Perceptrón -Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de **clasificación binaria**, es decir, puede distinguir entre dos clases de datos de entrada. Supondremos que para cada vector de entrada x, la salida de nuestro perceptrón sería +1 o -1, dependiendo de la clase. La salida se calculará utilizando la fórmula: +Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de **clasificación binaria**, es decir, puede distinguir entre dos clases de datos de entrada. Supondremos que para cada vector de entrada x, la salida de nuestro perceptrón será +1 o -1, dependiendo de la clase. La salida se calculará usando la fórmula: y(x) = f(wTx) -donde f es una función de activación escalonada. +donde f es una función de activación escalón. ## Entrenamiento del Perceptrón -Para entrenar un perceptrón necesitamos encontrar un vector de pesos w que clasifique correctamente la mayoría de los valores, es decir, que resulte en el menor **error**. Este error E se define mediante el **criterio del perceptrón** de la siguiente manera: +Para entrenar un perceptrón, necesitamos encontrar un vector de pesos w que clasifique la mayoría de los valores correctamente, es decir, que resulte en el menor **error**. Este error E se define mediante el **criterio del perceptrón** de la siguiente manera: E(w) = -∑wTxiti donde: -* la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta -* xi son los datos de entrada, y ti es -1 o +1 para ejemplos negativos y positivos, respectivamente. +* la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta. +* xi es el dato de entrada, y ti es -1 o +1 para ejemplos negativos y positivos, respectivamente. -Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo, se utiliza un método llamado **descenso por gradiente**, en el que comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos según la fórmula: +Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo, se utiliza un método llamado **descenso de gradiente**, en el cual comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos según la fórmula: w(t+1) = w(t) - η∇E(w) -Aquí η es la llamada **tasa de aprendizaje**, y ∇E(w) denota el **gradiente** de E. Después de calcular el gradiente, terminamos con +Aquí η es la llamada **tasa de aprendizaje**, y ∇E(w) denota el **gradiente** de E. Después de calcular el gradiente, obtenemos: w(t+1) = w(t) + ∑ηxiti @@ -74,22 +83,22 @@ En esta lección, aprendiste sobre un perceptrón, que es un modelo de clasifica ## 🚀 Desafío -Si deseas intentar construir tu propio perceptrón, prueba [este laboratorio en Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que utiliza el [diseñador de Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). +Si deseas intentar construir tu propio perceptrón, prueba [este laboratorio en Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), que utiliza el [diseñador de Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Revisión y Autoestudio +## Repaso y Autoestudio -Para ver cómo podemos usar el perceptrón para resolver un problema simple así como problemas de la vida real, y para continuar aprendiendo, ve al cuaderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). +Para ver cómo podemos usar un perceptrón para resolver un problema sencillo, así como problemas de la vida real, y para continuar aprendiendo, ve al cuaderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). -Aquí hay un interesante [artículo sobre perceptrones](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) también. +Aquí tienes un interesante [artículo sobre perceptrones](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). -## [Asignación](lab/README.md) +## [Tarea](lab/README.md) -En esta lección, hemos implementado un perceptrón para la tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos manuscritos. En este laboratorio, se te pide que resuelvas el problema de clasificación de dígitos por completo, es decir, determinar qué dígito es más probable que corresponda a una imagen dada. +En esta lección, hemos implementado un perceptrón para una tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos escritos a mano. En este laboratorio, se te pide resolver el problema de clasificación de dígitos por completo, es decir, determinar qué dígito corresponde más probablemente a una imagen dada. * [Instrucciones](lab/README.md) * [Cuaderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index 7dcb8925..130378dc 100644 --- a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ + # Clasificación Multiclase con Perceptrón -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Usando el código que hemos desarrollado en esta lección para la clasificación binaria de dígitos manuscritos MNIST, crea un clasificador multiclase que sea capaz de reconocer cualquier dígito. Calcula la precisión de clasificación en el conjunto de datos de entrenamiento y prueba, y muestra la matriz de confusión. +Usando el código que hemos desarrollado en esta lección para la clasificación binaria de los dígitos manuscritos de MNIST, crea un clasificador multiclase que sea capaz de reconocer cualquier dígito. Calcula la precisión de clasificación en los conjuntos de datos de entrenamiento y prueba, y muestra la matriz de confusión. -## Consejos +## Pistas -1. Para cada dígito, crea un conjunto de datos para el clasificador binario de "este dígito vs. todos los demás dígitos". -2. Entrena 10 perceptrones diferentes para clasificación binaria (uno para cada dígito). -3. Define una función que clasifique un dígito de entrada. +1. Para cada dígito, crea un conjunto de datos para un clasificador binario de "este dígito vs. todos los demás dígitos". +1. Entrena 10 perceptrones diferentes para la clasificación binaria (uno para cada dígito). +1. Define una función que clasifique un dígito de entrada. -> **Consejo**: Si combinamos los pesos de los 10 perceptrones en una sola matriz, deberíamos poder aplicar los 10 perceptrones a los dígitos de entrada mediante una multiplicación de matrices. El dígito más probable se puede encontrar simplemente aplicando la operación `argmax` en la salida. +> **Pista**: Si combinamos los pesos de los 10 perceptrones en una sola matriz, deberíamos poder aplicar los 10 perceptrones a los dígitos de entrada mediante una sola multiplicación de matrices. El dígito más probable se puede encontrar simplemente aplicando la operación `argmax` en la salida. -## Notebook de Inicio +## Notebook Inicial -Comienza el laboratorio abriendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). +Comienza el laboratorio abriendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md index b7bf4d24..80b64f11 100644 --- a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Introducción a las Redes Neuronales. Perceptrón Multicapa + +# Introducción a Redes Neuronales. Perceptrón Multicapa -En la sección anterior, aprendiste sobre el modelo de red neuronal más simple: el perceptrón de una sola capa, un modelo de clasificación lineal de dos clases. +En la sección anterior, aprendiste sobre el modelo más simple de red neuronal: el perceptrón de una sola capa, un modelo lineal de clasificación binaria. -En esta sección, ampliaremos este modelo a un marco más flexible, que nos permitirá: +En esta sección, extenderemos este modelo a un marco más flexible, permitiéndonos: -* realizar **clasificación de múltiples clases** además de la clasificación de dos clases -* resolver **problemas de regresión** además de la clasificación -* separar clases que no son linealmente separables +* realizar **clasificación multiclase** además de clasificación binaria +* resolver **problemas de regresión** además de clasificación +* separar clases que no son linealmente separables También desarrollaremos nuestro propio marco modular en Python que nos permitirá construir diferentes arquitecturas de redes neuronales. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) ## Formalización del Aprendizaje Automático -Comencemos formalizando el problema del Aprendizaje Automático. Supongamos que tenemos un conjunto de datos de entrenamiento **X** con etiquetas **Y**, y necesitamos construir un modelo *f* que haga las predicciones más precisas. La calidad de las predicciones se mide mediante la **función de pérdida** ℒ. Las siguientes funciones de pérdida se utilizan a menudo: +Comencemos formalizando el problema de Aprendizaje Automático. Supongamos que tenemos un conjunto de datos de entrenamiento **X** con etiquetas **Y**, y necesitamos construir un modelo *f* que haga predicciones lo más precisas posible. La calidad de las predicciones se mide mediante la **función de pérdida** ℒ. Las siguientes funciones de pérdida se utilizan con frecuencia: -* Para el problema de regresión, cuando necesitamos predecir un número, podemos usar el **error absoluto** ∑i|f(x(i))-y(i)|, o el **error cuadrático** ∑i(f(x(i))-y(i))2 -* Para la clasificación, utilizamos la **pérdida 0-1** (que es esencialmente lo mismo que la **exactitud** del modelo), o la **pérdida logística**. +* Para problemas de regresión, cuando necesitamos predecir un número, podemos usar el **error absoluto** ∑i|f(x(i))-y(i)|, o el **error cuadrático** ∑i(f(x(i))-y(i))2 +* Para clasificación, usamos la **pérdida 0-1** (que es esencialmente lo mismo que la **precisión** del modelo) o la **pérdida logística**. -Para el perceptrón de una sola capa, la función *f* se definió como una función lineal *f(x)=wx+b* (aquí *w* es la matriz de pesos, *x* es el vector de características de entrada, y *b* es el vector de sesgo). Para diferentes arquitecturas de redes neuronales, esta función puede tomar una forma más compleja. +Para un perceptrón de una sola capa, la función *f* se definía como una función lineal *f(x)=wx+b* (donde *w* es la matriz de pesos, *x* es el vector de características de entrada, y *b* es el vector de sesgo). Para diferentes arquitecturas de redes neuronales, esta función puede tomar una forma más compleja. -> En el caso de la clasificación, a menudo es deseable obtener probabilidades de las clases correspondientes como salida de la red. Para convertir números arbitrarios en probabilidades (por ejemplo, para normalizar la salida), a menudo utilizamos la función **softmax** σ, y la función *f* se convierte en *f(x)=σ(wx+b)* +> En el caso de clasificación, a menudo es deseable obtener probabilidades de las clases correspondientes como salida de la red. Para convertir números arbitrarios en probabilidades (por ejemplo, para normalizar la salida), a menudo usamos la función **softmax** σ, y la función *f* se convierte en *f(x)=σ(wx+b)*. -En la definición de *f* anterior, *w* y *b* se llaman **parámetros** θ=⟨*w,b*⟩. Dado el conjunto de datos ⟨**X**,**Y**⟩, podemos calcular un error general en todo el conjunto de datos como una función de los parámetros θ. +En la definición de *f* anterior, *w* y *b* se denominan **parámetros** θ=⟨*w,b*⟩. Dado el conjunto de datos ⟨**X**,**Y**⟩, podemos calcular un error general en todo el conjunto de datos como una función de los parámetros θ. -> ✅ **El objetivo del entrenamiento de la red neuronal es minimizar el error variando los parámetros θ** +> ✅ **El objetivo del entrenamiento de redes neuronales es minimizar el error variando los parámetros θ** ## Optimización por Descenso de Gradiente -Hay un método bien conocido de optimización de funciones llamado **descenso de gradiente**. La idea es que podemos calcular una derivada (en el caso multidimensional llamada **gradiente**) de la función de pérdida con respecto a los parámetros, y variar los parámetros de tal manera que el error disminuya. Esto se puede formalizar de la siguiente manera: +Existe un método bien conocido de optimización de funciones llamado **descenso de gradiente**. La idea es que podemos calcular una derivada (en el caso multidimensional llamada **gradiente**) de la función de pérdida con respecto a los parámetros, y variar los parámetros de tal manera que el error disminuya. Esto se puede formalizar de la siguiente manera: -* Inicializar los parámetros con algunos valores aleatorios w(0), b(0) -* Repetir el siguiente paso muchas veces: - - w(i+1) = w(i)-η∂ℒ/∂w - - b(i+1) = b(i)-η∂ℒ/∂b +* Inicializar los parámetros con algunos valores aleatorios w(0), b(0) +* Repetir el siguiente paso muchas veces: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b -Durante el entrenamiento, se supone que los pasos de optimización se calculan considerando todo el conjunto de datos (recuerda que la pérdida se calcula como una suma a través de todas las muestras de entrenamiento). Sin embargo, en la vida real tomamos pequeñas porciones del conjunto de datos llamadas **minibatches**, y calculamos gradientes basados en un subconjunto de datos. Debido a que el subconjunto se toma aleatoriamente cada vez, este método se llama **descenso de gradiente estocástico** (SGD). +Durante el entrenamiento, se supone que los pasos de optimización se calculan considerando todo el conjunto de datos (recuerda que la pérdida se calcula como una suma a través de todas las muestras de entrenamiento). Sin embargo, en la práctica tomamos pequeñas porciones del conjunto de datos llamadas **minilotes**, y calculamos los gradientes basándonos en un subconjunto de datos. Debido a que el subconjunto se toma aleatoriamente cada vez, este método se llama **descenso de gradiente estocástico** (SGD). ## Perceptrones Multicapa y Retropropagación -La red de una sola capa, como hemos visto anteriormente, es capaz de clasificar clases que son linealmente separables. Para construir un modelo más rico, podemos combinar varias capas de la red. Matemáticamente, esto significaría que la función *f* tendría una forma más compleja y se calcularía en varios pasos: -* z1=w1x+b1 -* z2=w2α(z1)+b2 -* f = σ(z2) +Una red de una sola capa, como hemos visto anteriormente, es capaz de clasificar clases linealmente separables. Para construir un modelo más rico, podemos combinar varias capas de la red. Matemáticamente, esto significaría que la función *f* tendría una forma más compleja y se calcularía en varios pasos: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) -Aquí, α es una **función de activación no lineal**, σ es una función softmax, y los parámetros son θ=<*w1,b1,w2,b2*. +Aquí, α es una **función de activación no lineal**, σ es una función softmax, y los parámetros θ=<*w1,b1,w2,b2*>. -El algoritmo de descenso de gradiente seguiría siendo el mismo, pero sería más difícil calcular los gradientes. Dada la regla de diferenciación en cadena, podemos calcular las derivadas como: +El algoritmo de descenso de gradiente permanecería igual, pero sería más difícil calcular los gradientes. Dado el principio de la regla de la cadena, podemos calcular las derivadas como: -* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) -* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ La regla de diferenciación en cadena se utiliza para calcular las derivadas de la función de pérdida con respecto a los parámetros. +> ✅ La regla de la cadena se utiliza para calcular las derivadas de la función de pérdida con respecto a los parámetros. -Ten en cuenta que la parte más a la izquierda de todas esas expresiones es la misma, y así podemos calcular efectivamente las derivadas comenzando desde la función de pérdida y yendo "hacia atrás" a través del gráfico computacional. Así, el método de entrenamiento de un perceptrón multicapa se llama **retropropagación**, o 'backprop'. +Nota que la parte más a la izquierda de todas estas expresiones es la misma, y por lo tanto podemos calcular las derivadas de manera eficiente comenzando desde la función de pérdida y yendo "hacia atrás" a través del grafo computacional. Por lo tanto, el método de entrenamiento de un perceptrón multicapa se llama **retropropagación**, o 'backprop'. -gráfico de computación +grafo computacional > TODO: cita de la imagen -> ✅ Cubriremos la retropropagación con mucho más detalle en nuestro ejemplo de cuaderno. +> ✅ Cubriremos la retropropagación con mucho más detalle en nuestro ejemplo en el notebook. ## Conclusión -En esta lección, hemos construido nuestra propia biblioteca de redes neuronales y la hemos utilizado para una simple tarea de clasificación bidimensional. +En esta lección, hemos construido nuestra propia biblioteca de redes neuronales y la hemos utilizado para una tarea simple de clasificación bidimensional. ## 🚀 Desafío -En el cuaderno que acompaña, implementarás tu propio marco para construir y entrenar perceptrones multicapa. Podrás ver en detalle cómo operan las redes neuronales modernas. +En el notebook adjunto, implementarás tu propio marco para construir y entrenar perceptrones multicapa. Podrás ver en detalle cómo operan las redes neuronales modernas. -Procede al cuaderno [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) y trabaja en él. +Continúa con el notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) y trabaja en él. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) ## Revisión y Autoestudio -La retropropagación es un algoritmo comúnmente utilizado en IA y ML, que vale la pena estudiar [con más detalle](https://wikipedia.org/wiki/Backpropagation) +La retropropagación es un algoritmo común en IA y ML, vale la pena estudiarlo [en más detalle](https://wikipedia.org/wiki/Backpropagation). -## [Asignación](lab/README.md) +## [Tarea](lab/README.md) -En este laboratorio, se te pide que uses el marco que construiste en esta lección para resolver la clasificación de dígitos manuscritos de MNIST. +En este laboratorio, se te pide que uses el marco que construiste en esta lección para resolver la clasificación de dígitos escritos a mano de MNIST. -* [Instrucciones](lab/README.md) -* [Cuaderno](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +* [Instrucciones](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index 70200219..33c90ebc 100644 --- a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,12 +1,21 @@ -# Clasificación MNIST con Nuestro Propio Marco + +# Clasificación MNIST con Nuestro Propio Framework -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Resuelve el problema de clasificación de dígitos manuscritos MNIST utilizando perceptrones de 1, 2 y 3 capas. Usa el marco de red neuronal que hemos desarrollado en la lección. +Resuelve el problema de clasificación de dígitos escritos a mano de MNIST utilizando perceptrones de 1, 2 y 3 capas. Usa el framework de redes neuronales que hemos desarrollado en la lección. -## Inicio del Notebook +## Notebook Inicial Comienza el laboratorio abriendo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) @@ -16,8 +25,8 @@ Como resultado de este laboratorio, intenta responder las siguientes preguntas: - ¿La función de activación entre capas afecta el rendimiento de la red? - ¿Necesitamos una red de 2 o 3 capas para esta tarea? -- ¿Experimentaste algún problema al entrenar la red? Especialmente a medida que aumentaba el número de capas. -- ¿Cómo se comportan los pesos de la red durante el entrenamiento? Puedes graficar el valor absoluto máximo de los pesos vs. época para entender la relación. +- ¿Tuviste algún problema entrenando la red? Especialmente cuando aumentó el número de capas. +- ¿Cómo se comportan los pesos de la red durante el entrenamiento? Puedes graficar el valor absoluto máximo de los pesos frente a las épocas para entender la relación. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md index 1b1ca149..dbb010fe 100644 --- a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,47 +1,56 @@ -# Marcos de Redes Neuronales + +# Frameworks de Redes Neuronales -Como ya hemos aprendido, para poder entrenar redes neuronales de manera eficiente necesitamos hacer dos cosas: +Como ya hemos aprendido, para entrenar redes neuronales de manera eficiente necesitamos hacer dos cosas: -* Operar con tensores, es decir, multiplicar, sumar y calcular algunas funciones como sigmoid o softmax. -* Calcular gradientes de todas las expresiones, con el fin de realizar la optimización por descenso de gradiente. +* Operar con tensores, por ejemplo, multiplicar, sumar y calcular funciones como sigmoid o softmax. +* Calcular gradientes de todas las expresiones, para realizar la optimización por descenso de gradiente. ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Mientras que la biblioteca `numpy` puede realizar la primera parte, necesitamos algún mecanismo para calcular gradientes. En [nuestro marco](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que hemos desarrollado en la sección anterior, tuvimos que programar manualmente todas las funciones derivadas dentro del método `backward`, que realiza la retropropagación. Idealmente, un marco debería brindarnos la oportunidad de calcular gradientes de *cualquier expresión* que podamos definir. +Aunque la biblioteca `numpy` puede realizar la primera parte, necesitamos algún mecanismo para calcular gradientes. En [nuestro framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desarrollamos en la sección anterior, tuvimos que programar manualmente todas las funciones derivadas dentro del método `backward`, que realiza la retropropagación. Idealmente, un framework debería permitirnos calcular los gradientes de *cualquier expresión* que podamos definir. -Otra cosa importante es poder realizar cálculos en GPU, o en cualquier otra unidad de computación especializada, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). El entrenamiento de redes neuronales profundas requiere *muchos* cálculos, y poder paralelizar esos cálculos en GPUs es muy importante. +Otra cosa importante es poder realizar cálculos en GPU, o en otras unidades de cómputo especializadas, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). El entrenamiento de redes neuronales profundas requiere *muchos* cálculos, y poder paralelizar esos cálculos en GPUs es muy importante. > ✅ El término 'paralelizar' significa distribuir los cálculos entre múltiples dispositivos. -Actualmente, los dos marcos neuronales más populares son: [TensorFlow](http://TensorFlow.org) y [PyTorch](https://pytorch.org/). Ambos proporcionan una API de bajo nivel para operar con tensores tanto en CPU como en GPU. Encima de la API de bajo nivel, también hay una API de alto nivel, llamada [Keras](https://keras.io/) y [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. +Actualmente, los dos frameworks de redes neuronales más populares son: [TensorFlow](http://TensorFlow.org) y [PyTorch](https://pytorch.org/). Ambos proporcionan una API de bajo nivel para operar con tensores tanto en CPU como en GPU. Además de la API de bajo nivel, también existe una API de alto nivel, llamada [Keras](https://keras.io/) y [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. -API de Bajo Nivel | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) -------------------|-------------------------------------|-------------------------------- -API de Alto Nivel | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +API de bajo nivel | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +-------------------|-------------------------------------|-------------------------------- +API de alto nivel | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**Las APIs de bajo nivel** en ambos marcos permiten construir lo que se llama **gráficas computacionales**. Esta gráfica define cómo calcular la salida (normalmente la función de pérdida) con los parámetros de entrada dados, y puede ser enviada para cálculo en GPU, si está disponible. Existen funciones para diferenciar esta gráfica computacional y calcular gradientes, que luego pueden ser utilizados para optimizar los parámetros del modelo. +Las **APIs de bajo nivel** en ambos frameworks permiten construir los llamados **gráficos computacionales**. Este gráfico define cómo calcular el resultado (usualmente la función de pérdida) con los parámetros de entrada dados, y puede ser enviado para cálculo en GPU, si está disponible. Hay funciones para diferenciar este gráfico computacional y calcular gradientes, que luego pueden ser utilizados para optimizar los parámetros del modelo. -**Las APIs de alto nivel** consideran las redes neuronales como una **secuencia de capas**, y facilitan la construcción de la mayoría de las redes neuronales. Entrenar el modelo generalmente requiere preparar los datos y luego llamar a una función `fit` para realizar el trabajo. +Las **APIs de alto nivel** consideran las redes neuronales como una **secuencia de capas**, y facilitan mucho la construcción de la mayoría de las redes neuronales. Entrenar el modelo generalmente requiere preparar los datos y luego llamar a una función `fit` para realizar el trabajo. -La API de alto nivel permite construir redes neuronales típicas muy rápidamente sin preocuparse por muchos detalles. Al mismo tiempo, la API de bajo nivel ofrece mucho más control sobre el proceso de entrenamiento, y por lo tanto se utiliza mucho en investigación, cuando se trabaja con nuevas arquitecturas de redes neuronales. +La API de alto nivel permite construir redes neuronales típicas muy rápidamente sin preocuparse por muchos detalles. Al mismo tiempo, la API de bajo nivel ofrece mucho más control sobre el proceso de entrenamiento, y por eso se utiliza mucho en investigación, cuando se trabaja con nuevas arquitecturas de redes neuronales. -También es importante entender que puedes usar ambas APIs juntas, es decir, puedes desarrollar tu propia arquitectura de capa de red utilizando la API de bajo nivel, y luego usarla dentro de la red más grande construida y entrenada con la API de alto nivel. O puedes definir una red usando la API de alto nivel como una secuencia de capas, y luego usar tu propio bucle de entrenamiento de bajo nivel para realizar la optimización. Ambas APIs utilizan los mismos conceptos básicos subyacentes y están diseñadas para funcionar bien juntas. +También es importante entender que se pueden usar ambas APIs juntas. Por ejemplo, puedes desarrollar tu propia arquitectura de capa de red utilizando la API de bajo nivel, y luego usarla dentro de una red más grande construida y entrenada con la API de alto nivel. O puedes definir una red utilizando la API de alto nivel como una secuencia de capas, y luego usar tu propio bucle de entrenamiento de bajo nivel para realizar la optimización. Ambas APIs utilizan los mismos conceptos básicos subyacentes y están diseñadas para trabajar bien juntas. ## Aprendizaje -En este curso, ofrecemos la mayor parte del contenido tanto para PyTorch como para TensorFlow. Puedes elegir tu marco preferido y solo pasar por los cuadernos correspondientes. Si no estás seguro de qué marco elegir, lee algunas discusiones en internet sobre **PyTorch vs. TensorFlow**. También puedes echar un vistazo a ambos marcos para obtener una mejor comprensión. +En este curso, ofrecemos la mayoría del contenido tanto para PyTorch como para TensorFlow. Puedes elegir tu framework preferido y solo revisar los notebooks correspondientes. Si no estás seguro de qué framework elegir, lee algunas discusiones en internet sobre **PyTorch vs. TensorFlow**. También puedes echar un vistazo a ambos frameworks para obtener una mejor comprensión. -Donde sea posible, utilizaremos APIs de alto nivel por simplicidad. Sin embargo, creemos que es importante entender cómo funcionan las redes neuronales desde cero, por lo que al principio comenzamos trabajando con la API de bajo nivel y tensores. Sin embargo, si deseas avanzar rápidamente y no quieres pasar mucho tiempo aprendiendo estos detalles, puedes saltarte eso e ir directamente a los cuadernos de la API de alto nivel. +Cuando sea posible, utilizaremos APIs de alto nivel por simplicidad. Sin embargo, creemos que es importante entender cómo funcionan las redes neuronales desde cero, por lo que al principio comenzamos trabajando con la API de bajo nivel y tensores. Sin embargo, si quieres avanzar rápidamente y no deseas dedicar mucho tiempo a aprender estos detalles, puedes omitirlos e ir directamente a los notebooks de la API de alto nivel. -## ✍️ Ejercicios: Marcos +## ✍️ Ejercicios: Frameworks -Continúa tu aprendizaje en los siguientes cuadernos: +Continúa tu aprendizaje en los siguientes notebooks: -API de Bajo Nivel | [Cuaderno TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) -------------------|-------------------------------------|-------------------------------- -API de Alto Nivel | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +API de bajo nivel | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +-------------------|-------------------------------------|-------------------------------- +API de alto nivel | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -Después de dominar los marcos, recapitularemos la noción de sobreajuste. +Después de dominar los frameworks, repasemos el concepto de sobreajuste. # Sobreajuste @@ -49,75 +58,75 @@ El sobreajuste es un concepto extremadamente importante en el aprendizaje autom Considera el siguiente problema de aproximar 5 puntos (representados por `x` en los gráficos a continuación): -![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.es.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.es.jpg) +![linear](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![overfit](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) -------------------------|-------------------------- **Modelo lineal, 2 parámetros** | **Modelo no lineal, 7 parámetros** Error de entrenamiento = 5.3 | Error de entrenamiento = 0 Error de validación = 5.1 | Error de validación = 20 -* A la izquierda, vemos una buena aproximación de línea recta. Debido a que el número de parámetros es adecuado, el modelo capta la idea detrás de la distribución de puntos correctamente. -* A la derecha, el modelo es demasiado potente. Dado que solo tenemos 5 puntos y el modelo tiene 7 parámetros, puede ajustarse de tal manera que pase por todos los puntos, haciendo que el error de entrenamiento sea 0. Sin embargo, esto impide que el modelo entienda el patrón correcto detrás de los datos, por lo que el error de validación es muy alto. +* A la izquierda, vemos una buena aproximación con una línea recta. Debido a que el número de parámetros es adecuado, el modelo entiende correctamente la distribución de los puntos. +* A la derecha, el modelo es demasiado poderoso. Debido a que solo tenemos 5 puntos y el modelo tiene 7 parámetros, puede ajustarse de tal manera que pase por todos los puntos, haciendo que el error de entrenamiento sea 0. Sin embargo, esto impide que el modelo entienda el patrón correcto detrás de los datos, por lo que el error de validación es muy alto. Es muy importante encontrar un equilibrio correcto entre la riqueza del modelo (número de parámetros) y la cantidad de muestras de entrenamiento. ## Por qué ocurre el sobreajuste * No hay suficientes datos de entrenamiento. - * Modelo demasiado potente. - * Demasiado ruido en los datos de entrada. + * El modelo es demasiado poderoso. + * Hay demasiado ruido en los datos de entrada. ## Cómo detectar el sobreajuste -Como puedes ver en el gráfico anterior, el sobreajuste se puede detectar por un error de entrenamiento muy bajo y un error de validación alto. Normalmente, durante el entrenamiento, veremos que tanto el error de entrenamiento como el de validación comienzan a disminuir, y luego en algún momento el error de validación puede dejar de disminuir y comenzar a aumentar. Esto será una señal de sobreajuste y un indicador de que probablemente deberíamos detener el entrenamiento en este punto (o al menos hacer una instantánea del modelo). +Como puedes ver en el gráfico anterior, el sobreajuste puede detectarse por un error de entrenamiento muy bajo y un error de validación alto. Normalmente, durante el entrenamiento veremos que tanto el error de entrenamiento como el de validación comienzan a disminuir, y luego en algún momento el error de validación podría dejar de disminuir y comenzar a aumentar. Esto será una señal de sobreajuste y un indicador de que probablemente deberíamos detener el entrenamiento en ese punto (o al menos hacer una captura del modelo). -![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.es.png) +![overfitting](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) ## Cómo prevenir el sobreajuste -Si puedes ver que ocurre el sobreajuste, puedes hacer una de las siguientes acciones: +Si detectas que ocurre sobreajuste, puedes hacer lo siguiente: * Aumentar la cantidad de datos de entrenamiento. * Disminuir la complejidad del modelo. - * Utilizar alguna [técnica de regularización](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos más adelante. + * Usar alguna [técnica de regularización](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos más adelante. -## Sobreajuste y el Compromiso Bias-Varianza +## Sobreajuste y el equilibrio entre sesgo y varianza -El sobreajuste es en realidad un caso de un problema más genérico en estadística llamado [Compromiso Bias-Varianza](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Si consideramos las posibles fuentes de error en nuestro modelo, podemos ver dos tipos de errores: +El sobreajuste es en realidad un caso de un problema más general en estadística llamado [Equilibrio entre sesgo y varianza](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Si consideramos las posibles fuentes de error en nuestro modelo, podemos ver dos tipos de errores: -* **Errores de sesgo** son causados por el hecho de que nuestro algoritmo no puede capturar correctamente la relación entre los datos de entrenamiento. Puede resultar del hecho de que nuestro modelo no es lo suficientemente potente (**subajuste**). -* **Errores de varianza**, que son causados por el modelo que aproxima el ruido en los datos de entrada en lugar de una relación significativa (**sobreajuste**). +* **Errores de sesgo** son causados por nuestro algoritmo al no poder capturar correctamente la relación entre los datos de entrenamiento. Esto puede resultar del hecho de que nuestro modelo no es lo suficientemente poderoso (**subajuste**). +* **Errores de varianza**, que son causados por el modelo al aproximar el ruido en los datos de entrada en lugar de la relación significativa (**sobreajuste**). -Durante el entrenamiento, el error de sesgo disminuye (a medida que nuestro modelo aprende a aproximar los datos), y el error de varianza aumenta. Es importante detener el entrenamiento - ya sea manualmente (cuando detectamos sobreajuste) o automáticamente (introduciendo regularización) - para prevenir el sobreajuste. +Durante el entrenamiento, el error de sesgo disminuye (a medida que nuestro modelo aprende a aproximar los datos) y el error de varianza aumenta. Es importante detener el entrenamiento, ya sea manualmente (cuando detectamos sobreajuste) o automáticamente (introduciendo regularización), para prevenir el sobreajuste. ## Conclusión -En esta lección, aprendiste sobre las diferencias entre las diversas APIs para los dos marcos de IA más populares, TensorFlow y PyTorch. Además, aprendiste sobre un tema muy importante, el sobreajuste. +En esta lección, aprendiste sobre las diferencias entre las diversas APIs de los dos frameworks de IA más populares, TensorFlow y PyTorch. Además, aprendiste sobre un tema muy importante: el sobreajuste. ## 🚀 Desafío -En los cuadernos acompañantes, encontrarás 'tareas' al final; trabaja a través de los cuadernos y completa las tareas. +En los notebooks acompañantes, encontrarás 'tareas' al final; trabaja en los notebooks y completa las tareas. ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) -## Revisión y Autoestudio +## Revisión y autoestudio -Realiza una investigación sobre los siguientes temas: +Investiga sobre los siguientes temas: - TensorFlow - PyTorch - Sobreajuste -Pregúntate las siguientes cuestiones: +Pregúntate lo siguiente: - ¿Cuál es la diferencia entre TensorFlow y PyTorch? - ¿Cuál es la diferencia entre sobreajuste y subajuste? ## [Asignación](lab/README.md) -En este laboratorio, se te pide resolver dos problemas de clasificación utilizando redes completamente conectadas de una y múltiples capas usando PyTorch o TensorFlow. +En este laboratorio, se te pide resolver dos problemas de clasificación utilizando redes completamente conectadas de una y varias capas con PyTorch o TensorFlow. * [Instrucciones](lab/README.md) -* [Cuaderno](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 064f2ccf..471463d3 100644 --- a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ + # Clasificación con PyTorch/TensorFlow -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Resuelve dos problemas de clasificación utilizando redes completamente conectadas de una sola capa y multicapa usando PyTorch o TensorFlow: +Resuelve dos problemas de clasificación utilizando redes completamente conectadas de una y varias capas con PyTorch o TensorFlow: -1. Problema de **[clasificación de iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un ejemplo de un problema con datos de entrada tabulares, que puede ser manejado por el aprendizaje automático clásico. Tu objetivo será clasificar las iris en 3 clases, basándote en 4 parámetros numéricos. -1. Problema de clasificación de dígitos manuscritos **MNIST** que ya hemos visto antes. +1. Problema de **[clasificación de Iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)**: un ejemplo de problema con datos de entrada tabulares, que puede ser manejado por aprendizaje automático clásico. Tu objetivo será clasificar iris en 3 clases, basándote en 4 parámetros numéricos. +1. Problema de clasificación de dígitos manuscritos **MNIST**, que ya hemos visto antes. Prueba diferentes arquitecturas de red para lograr la mejor precisión posible. -## Notebook de Inicio +## Notebook Inicial Comienza el laboratorio abriendo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/README.md b/translations/es/lessons/3-NeuralNetworks/README.md index db308b43..97eaa56d 100644 --- a/translations/es/lessons/3-NeuralNetworks/README.md +++ b/translations/es/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ + # Introducción a las Redes Neuronales -![Resumen del contenido de Introducción a Redes Neuronales en un garabato](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.es.png) +![Resumen del contenido de Introducción a Redes Neuronales en un dibujo](../../../../lessons/sketchnotes/ai-neuralnetworks.png) -Como discutimos en la introducción, una de las formas de lograr inteligencia es entrenar un **modelo de computadora** o un **cerebro artificial**. Desde mediados del siglo XX, los investigadores han probado diferentes modelos matemáticos, hasta que en los últimos años esta dirección ha demostrado ser enormemente exitosa. Tales modelos matemáticos del cerebro se llaman **redes neuronales**. +Como discutimos en la introducción, una de las formas de lograr inteligencia es entrenar un **modelo computacional** o un **cerebro artificial**. Desde mediados del siglo XX, los investigadores probaron diferentes modelos matemáticos, hasta que en años recientes esta dirección demostró ser enormemente exitosa. Estos modelos matemáticos del cerebro se llaman **redes neuronales**. -> A veces, las redes neuronales se denominan *Redes Neuronales Artificiales*, ANNs, para indicar que estamos hablando de modelos, no de redes reales de neuronas. +> A veces las redes neuronales se llaman *Redes Neuronales Artificiales* o ANNs, para indicar que estamos hablando de modelos, no de redes reales de neuronas. ## Aprendizaje Automático -Las Redes Neuronales son parte de una disciplina más amplia llamada **Aprendizaje Automático**, cuyo objetivo es utilizar datos para entrenar modelos de computadora que sean capaces de resolver problemas. El Aprendizaje Automático constituye una gran parte de la Inteligencia Artificial; sin embargo, no cubrimos el aprendizaje automático clásico en este currículo. +Las Redes Neuronales forman parte de una disciplina más amplia llamada **Aprendizaje Automático** (Machine Learning), cuyo objetivo es usar datos para entrenar modelos computacionales capaces de resolver problemas. El Aprendizaje Automático constituye una gran parte de la Inteligencia Artificial, sin embargo, no cubrimos el aprendizaje automático clásico en este plan de estudios. -> Visita nuestro currículo separado **[Aprendizaje Automático para Principiantes](http://github.com/microsoft/ml-for-beginners)** para aprender más sobre el aprendizaje automático clásico. +> Visita nuestro plan de estudios separado **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** para aprender más sobre el Aprendizaje Automático clásico. -En el Aprendizaje Automático, asumimos que tenemos un conjunto de datos de ejemplos **X**, y valores de salida correspondientes **Y**. Los ejemplos son a menudo vectores N-dimensionales que consisten en **características**, y las salidas se llaman **etiquetas**. +En el Aprendizaje Automático, asumimos que tenemos un conjunto de datos de ejemplos **X** y valores de salida correspondientes **Y**. Los ejemplos suelen ser vectores N-dimensionales que consisten en **características**, y las salidas se llaman **etiquetas**. -Consideraremos los dos problemas más comunes en el aprendizaje automático: +Consideraremos los dos problemas más comunes del aprendizaje automático: * **Clasificación**, donde necesitamos clasificar un objeto de entrada en dos o más clases. -* **Regresión**, donde necesitamos predecir un número numérico para cada una de las muestras de entrada. +* **Regresión**, donde necesitamos predecir un valor numérico para cada una de las muestras de entrada. -> Al representar entradas y salidas como tensores, el conjunto de datos de entrada es una matriz de tamaño M×N, donde M es el número de muestras y N es el número de características. Las etiquetas de salida Y son el vector de tamaño M. +> Al representar entradas y salidas como tensores, el conjunto de datos de entrada es una matriz de tamaño M×N, donde M es el número de muestras y N es el número de características. Las etiquetas de salida Y son un vector de tamaño M. -En este currículo, nos enfocaremos únicamente en modelos de redes neuronales. +En este plan de estudios, nos centraremos únicamente en modelos de redes neuronales. ## Un Modelo de Neurona -Desde la biología sabemos que nuestro cerebro consiste en células neuronales, cada una de ellas teniendo múltiples "entradas" (axones) y una salida (dendrita). Los axones y dendritas pueden conducir señales eléctricas, y las conexiones entre axones y dendritas pueden exhibir diferentes grados de conductividad (controlados por neuromediadores). +De la biología sabemos que nuestro cerebro está compuesto por células neuronales, cada una de las cuales tiene múltiples "entradas" (axones) y una salida (dendrita). Los axones y dendritas pueden conducir señales eléctricas, y las conexiones entre axones y dendritas pueden mostrar diferentes grados de conductividad (controlados por neuromediadores). -![Modelo de una Neurona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.es.jpg) | ![Modelo de una Neurona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.es.png) +![Modelo de una Neurona](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![Modelo de una Neurona](../../../../lessons/3-NeuralNetworks/images/artneuron.png) ----|---- Neurona Real *([Imagen](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de Wikipedia)* | Neurona Artificial *(Imagen del Autor)* -Así, el modelo matemático más simple de una neurona contiene varias entradas X1, ..., XN y una salida Y, y una serie de pesos W1, ..., WN. Una salida se calcula como: +Por lo tanto, el modelo matemático más simple de una neurona contiene varias entradas X1, ..., XN y una salida Y, junto con una serie de pesos W1, ..., WN. La salida se calcula como: Y = f\left(\sum_{i=1}^N X_iW_i\right) donde f es alguna **función de activación** no lineal. -> Los primeros modelos de neuronas fueron descritos en el artículo clásico [Un cálculo lógico de las ideas inmanentes en la actividad nerviosa](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) por Warren McCullock y Walter Pitts en 1943. Donald Hebb en su libro "[La Organización del Comportamiento: Una Teoría Neuropsicológica](https://books.google.com/books?id=VNetYrB8EBoC)" propuso la forma en que estas redes pueden ser entrenadas. +> Los primeros modelos de neurona fueron descritos en el artículo clásico [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) por Warren McCullock y Walter Pitts en 1943. Donald Hebb, en su libro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", propuso la forma en que estas redes pueden ser entrenadas. ## En esta Sección En esta sección aprenderemos sobre: -* [Perceptrón](03-Perceptron/README.md), uno de los primeros modelos de red neuronal para clasificación de dos clases -* [Redes multicapa](04-OwnFramework/README.md) con un cuaderno emparejado [cómo construir nuestro propio marco](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Frameworks de Redes Neuronales](05-Frameworks/README.md), con estos cuadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) y [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) -* [Sobreajuste](../../../../lessons/3-NeuralNetworks/05-Frameworks) +* [Perceptrón](03-Perceptron/README.md), uno de los primeros modelos de redes neuronales para clasificación en dos clases. +* [Redes multicapa](04-OwnFramework/README.md) con un cuaderno asociado [cómo construir nuestro propio marco](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb). +* [Marcos de Redes Neuronales](05-Frameworks/README.md), con estos cuadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) y [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb). +* [Sobreajuste](../../../../lessons/3-NeuralNetworks/05-Frameworks). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md index 8bfd64f7..6873235f 100644 --- a/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,29 +1,38 @@ + # Introducción a la Visión por Computadora -[Visión por Computadora](https://wikipedia.org/wiki/Computer_vision) es una disciplina cuyo objetivo es permitir que las computadoras obtengan una comprensión de alto nivel de las imágenes digitales. Esta es una definición bastante amplia, porque *comprender* puede significar muchas cosas diferentes, incluyendo encontrar un objeto en una imagen (**detección de objetos**), entender lo que está sucediendo (**detección de eventos**), describir una imagen en texto, o reconstruir una escena en 3D. También hay tareas especiales relacionadas con imágenes humanas: estimación de edad y emoción, detección e identificación de rostros, y estimación de pose en 3D, por nombrar algunas. +[Visión por Computadora](https://wikipedia.org/wiki/Computer_vision) es una disciplina cuyo objetivo es permitir que las computadoras obtengan una comprensión de alto nivel de las imágenes digitales. Esta es una definición bastante amplia, ya que *comprender* puede significar muchas cosas, incluyendo encontrar un objeto en una imagen (**detección de objetos**), entender qué está sucediendo (**detección de eventos**), describir una imagen en texto o reconstruir una escena en 3D. También hay tareas especiales relacionadas con imágenes humanas: estimación de edad y emociones, detección e identificación de rostros, y estimación de poses en 3D, por nombrar algunas. ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -Una de las tareas más simples de la visión por computadora es **clasificación de imágenes**. +Una de las tareas más simples de la visión por computadora es la **clasificación de imágenes**. -La visión por computadora a menudo se considera una rama de la IA. Hoy en día, la mayoría de las tareas de visión por computadora se resuelven utilizando redes neuronales. Aprenderemos más sobre el tipo especial de redes neuronales utilizadas para la visión por computadora, [redes neuronales convolucionales](../07-ConvNets/README.md), a lo largo de esta sección. +La visión por computadora a menudo se considera una rama de la IA. Hoy en día, la mayoría de las tareas de visión por computadora se resuelven utilizando redes neuronales. Aprenderemos más sobre el tipo especial de redes neuronales utilizadas para visión por computadora, [redes neuronales convolucionales](../07-ConvNets/README.md), a lo largo de esta sección. -Sin embargo, antes de pasar la imagen a una red neuronal, en muchos casos tiene sentido utilizar algunas técnicas algorítmicas para mejorar la imagen. +Sin embargo, antes de pasar la imagen a una red neuronal, en muchos casos tiene sentido usar algunas técnicas algorítmicas para mejorar la imagen. -Hay varias bibliotecas de Python disponibles para el procesamiento de imágenes: +Existen varias bibliotecas de Python disponibles para el procesamiento de imágenes: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** se puede usar para leer/escribir diferentes formatos de imagen. También soporta ffmpeg, una herramienta útil para convertir fotogramas de video en imágenes. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (también conocido como PIL) es un poco más poderosa y también soporta algunas manipulaciones de imágenes como morfología, ajustes de paleta, y más. -* **[OpenCV](https://opencv.org/)** es una poderosa biblioteca de procesamiento de imágenes escrita en C++, que se ha convertido en el estándar *de facto* para el procesamiento de imágenes. Tiene una interfaz conveniente para Python. -* **[dlib](http://dlib.net/)** es una biblioteca de C++ que implementa muchos algoritmos de aprendizaje automático, incluidos algunos de los algoritmos de Visión por Computadora. También tiene una interfaz de Python y se puede usar para tareas desafiantes como la detección de rostros y puntos de referencia faciales. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** se puede usar para leer/escribir diferentes formatos de imágenes. También admite ffmpeg, una herramienta útil para convertir fotogramas de video en imágenes. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (también conocido como PIL) es un poco más potente y también admite algunas manipulaciones de imágenes como morphing, ajustes de paleta y más. +* **[OpenCV](https://opencv.org/)** es una biblioteca de procesamiento de imágenes escrita en C++, que se ha convertido en el estándar *de facto* para el procesamiento de imágenes. Tiene una interfaz conveniente en Python. +* **[dlib](http://dlib.net/)** es una biblioteca en C++ que implementa muchos algoritmos de aprendizaje automático, incluyendo algunos de los algoritmos de visión por computadora. También tiene una interfaz en Python y se puede usar para tareas desafiantes como la detección de rostros y puntos clave faciales. ## OpenCV -[OpenCV](https://opencv.org/) se considera el estándar *de facto* para el procesamiento de imágenes. Contiene muchos algoritmos útiles, implementados en C++. También puedes llamar a OpenCV desde Python. +[OpenCV](https://opencv.org/) se considera el estándar *de facto* para el procesamiento de imágenes. Contiene muchos algoritmos útiles, implementados en C++. También puedes usar OpenCV desde Python. -Un buen lugar para aprender OpenCV es [este curso de Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). En nuestro plan de estudios, nuestro objetivo no es aprender OpenCV, sino mostrarte algunos ejemplos de cuándo se puede utilizar y cómo. +Un buen lugar para aprender OpenCV es [este curso de Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). En nuestro plan de estudios, nuestro objetivo no es aprender OpenCV, sino mostrarte algunos ejemplos de cuándo se puede usar y cómo. -### Cargando Imágenes +### Cargar imágenes Las imágenes en Python se pueden representar convenientemente mediante arreglos de NumPy. Por ejemplo, las imágenes en escala de grises con un tamaño de 320x200 píxeles se almacenarían en un arreglo de 200x320, y las imágenes en color de la misma dimensión tendrían una forma de 200x320x3 (para 3 canales de color). Para cargar una imagen, puedes usar el siguiente código: @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Tradicionalmente, OpenCV utiliza codificación BGR (Azul-Verde-Rojo) para imágenes en color, mientras que el resto de las herramientas de Python utilizan el más tradicional RGB (Rojo-Verde-Azul). Para que la imagen se vea correctamente, necesitas convertirla al espacio de color RGB, ya sea intercambiando dimensiones en el arreglo de NumPy o llamando a una función de OpenCV: +Tradicionalmente, OpenCV utiliza codificación BGR (Azul-Verde-Rojo) para imágenes en color, mientras que el resto de las herramientas de Python utilizan la más tradicional RGB (Rojo-Verde-Azul). Para que la imagen se vea correctamente, necesitas convertirla al espacio de color RGB, ya sea intercambiando dimensiones en el arreglo de NumPy o llamando a una función de OpenCV: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -Las mismas funciones `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +La misma función `cvtColor` se puede usar para realizar otras transformaciones de espacio de color, como convertir una imagen a escala de grises o al espacio de color HSV (Matiz-Saturación-Valor). -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +También puedes usar OpenCV para cargar fotogramas de video uno por uno; se da un ejemplo en el ejercicio [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Procesamiento de imágenes -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Antes de alimentar una imagen a una red neuronal, es posible que desees aplicar varios pasos de preprocesamiento. OpenCV puede hacer muchas cosas, incluyendo: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que a menudo son preferibles a ajustar el brillo o el contraste. -* Aplicando diferentes [transformaciones](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) a la imagen: - - **[Transformaciones afines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pueden ser útiles si necesitas combinar rotación, redimensionamiento y sesgo en la imagen y conoces la ubicación de origen y destino de tres puntos en la imagen. Las transformaciones afines mantienen paralelas las líneas paralelas. - - **[Transformaciones de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pueden ser útiles cuando conoces las posiciones de origen y destino de 4 puntos en la imagen. Por ejemplo, si tomas una foto de un documento rectangular a través de la cámara de un smartphone desde algún ángulo, y quieres hacer una imagen rectangular del documento mismo. -* Entendiendo el movimiento dentro de la imagen utilizando **[flujo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. +* **Redimensionar** la imagen usando `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Desenfocar** la imagen usando `im = cv2.medianBlur(im,3)` o `im = cv2.GaussianBlur(im, (3,3), 0)` +* Cambiar el **brillo y contraste** de la imagen se puede hacer mediante manipulaciones de arreglos de NumPy, como se describe [en esta nota de Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Usar [umbralización](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) llamando a las funciones `cv2.threshold`/`cv2.adaptiveThreshold`, lo cual a menudo es preferible a ajustar el brillo o contraste. +* Aplicar diferentes [transformaciones](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) a la imagen: + - **[Transformaciones afines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pueden ser útiles si necesitas combinar rotación, redimensionamiento e inclinación en la imagen y conoces la ubicación de origen y destino de tres puntos en la imagen. Las transformaciones afines mantienen las líneas paralelas paralelas. + - **[Transformaciones de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pueden ser útiles cuando conoces las posiciones de origen y destino de 4 puntos en la imagen. Por ejemplo, si tomas una foto de un documento rectangular con la cámara de un smartphone desde algún ángulo y quieres hacer una imagen rectangular del documento en sí. +* Entender el movimiento dentro de la imagen usando **[flujo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. ## Ejemplos de uso de la Visión por Computadora -En nuestro [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos algunos ejemplos de cuándo se puede usar la visión por computadora para realizar tareas específicas: +En nuestro [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos algunos ejemplos de cuándo se puede usar la visión por computadora para realizar tareas específicas: -* **Preprocesamiento de una fotografía de un libro en Braille**. Nos enfocamos en cómo podemos usar umbralización, detección de características, transformación de perspectiva y manipulaciones de NumPy para separar símbolos individuales de Braille para su posterior clasificación por una red neuronal. +* **Preprocesar una fotografía de un libro en Braille**. Nos enfocamos en cómo podemos usar umbralización, detección de características, transformación de perspectiva y manipulaciones de NumPy para separar símbolos individuales de Braille para su posterior clasificación por una red neuronal. -![Imagen de Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.es.jpeg) | ![Imagen de Braille Preprocesada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.es.png) | ![Símbolos de Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.es.png) +![Imagen Braille](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![Imagen Braille Preprocesada](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![Símbolos Braille](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) ----|-----|----- > Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectando movimiento en video utilizando la diferencia de fotogramas**. Si la cámara está fija, entonces los fotogramas de la transmisión de la cámara deberían ser bastante similares entre sí. Dado que los fotogramas se representan como arreglos, al restar esos arreglos de dos fotogramas subsiguientes obtendremos la diferencia de píxeles, que debería ser baja para fotogramas estáticos y aumentar una vez que haya un movimiento sustancial en la imagen. +* **Detectar movimiento en video usando diferencia de fotogramas**. Si la cámara está fija, entonces los fotogramas del flujo de la cámara deberían ser bastante similares entre sí. Dado que los fotogramas se representan como arreglos, simplemente al restar esos arreglos de dos fotogramas consecutivos obtendremos la diferencia de píxeles, que debería ser baja para fotogramas estáticos y volverse más alta cuando haya un movimiento sustancial en la imagen. -![Imagen de fotogramas de video y diferencias de fotogramas](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.es.png) +![Imagen de fotogramas de video y diferencias de fotogramas](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) > Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectando movimiento utilizando Flujo Óptico**. [El flujo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender cómo se mueven los píxeles individuales en los fotogramas de video. Hay dos tipos de flujo óptico: +* **Detectar movimiento usando Flujo Óptico**. [Flujo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender cómo se mueven los píxeles individuales en los fotogramas de video. Hay dos tipos de flujo óptico: - - **Flujo Óptico Denso** calcula el campo de vectores que muestra para cada píxel hacia dónde se está moviendo. - - **Flujo Óptico Escaso** se basa en tomar algunas características distintivas en la imagen (por ejemplo, bordes) y construir su trayectoria de un fotograma a otro. + - **Flujo Óptico Denso** calcula el campo vectorial que muestra para cada píxel hacia dónde se está moviendo. + - **Flujo Óptico Escaso** se basa en tomar algunas características distintivas en la imagen (por ejemplo, bordes) y construir su trayectoria de fotograma a fotograma. -![Imagen de Flujo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.es.png) +![Imagen de Flujo Óptico](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) > Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Cuadernos de Ejemplo: OpenCV [intenta OpenCV en Acción](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Ejemplo de Notebooks: OpenCV [prueba OpenCV en acción](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) Hagamos algunos experimentos con OpenCV explorando [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ## Conclusión -A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente con visión por computadora. Por lo tanto, es muy útil conocer las técnicas básicas de visión por computadora y lo que bibliotecas como OpenCV pueden hacer. +A veces, tareas relativamente complejas como la detección de movimiento o la detección de la punta de los dedos se pueden resolver únicamente mediante visión por computadora. Por lo tanto, es muy útil conocer las técnicas básicas de visión por computadora y lo que bibliotecas como OpenCV pueden hacer. ## 🚀 Desafío -Mira [este video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) del AI show para aprender sobre el proyecto Cortic Tigers y cómo construyeron una solución basada en bloques para democratizar las tareas de visión por computadora a través de un robot. Investiga otros proyectos como este que ayuden a incorporar nuevos aprendices en el campo. +Mira [este video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) del AI Show para aprender sobre el proyecto Cortic Tigers y cómo construyeron una solución basada en bloques para democratizar las tareas de visión por computadora mediante un robot. Investiga otros proyectos como este que ayudan a nuevos aprendices a iniciarse en el campo. ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) ## Revisión y Autoestudio -Lee más sobre el flujo óptico [en este gran tutorial](https://learnopencv.com/optical-flow-in-opencv/). +Lee más sobre flujo óptico [en este excelente tutorial](https://learnopencv.com/optical-flow-in-opencv/). -## [Tarea](lab/README.md) +## [Asignación](lab/README.md) -En este laboratorio, tomarás un video con gestos simples, y tu objetivo es extraer movimientos arriba/abajo/izquierda/derecha utilizando flujo óptico. +En este laboratorio, tomarás un video con gestos simples, y tu objetivo será extraer movimientos hacia arriba/abajo/izquierda/derecha usando flujo óptico. -Marco de Movimiento de Palma +Fotograma de Movimiento de Palma **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md index d21f5ab3..b2257d0a 100644 --- a/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,23 +1,31 @@ -# Detección de Movimientos usando Flujo Óptico + +# Detectando Movimientos usando Flujo Óptico -Tarea del [Currículo de IA para Principiantes](https://aka.ms/ai-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://aka.ms/ai-beginners). ## Tarea -Considera [este video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), en el que la palma de una persona se mueve hacia la izquierda/derecha/arriba/abajo sobre un fondo estable. -Has sido entrenado con datos hasta octubre de 2023. +Considera [este video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), en el cual la palma de una persona se mueve hacia la izquierda/derecha/arriba/abajo sobre un fondo estable. -**Tu objetivo** sería poder utilizar el Flujo Óptico para determinar qué partes del video contienen movimientos hacia arriba/abajo/izquierda/derecha. +**Tu objetivo** sería usar Flujo Óptico para determinar qué partes del video contienen movimientos hacia arriba/abajo/izquierda/derecha. -**Objetivo adicional** sería rastrear el movimiento de la palma/dedo utilizando el tono de piel, como se describe [en esta publicación de blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [aquí](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). +**Objetivo adicional** sería rastrear el movimiento de la palma/dedo utilizando el tono de piel, como se describe [en este artículo](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [aquí](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). -## Cuaderno de Inicio +## Notebook Inicial -Inicia el laboratorio abriendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) +Comienza el laboratorio abriendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) ## Conclusión -A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente mediante visión por computadora. Por lo tanto, es muy útil saber lo que bibliotecas como OpenCV pueden hacer. +A veces, tareas relativamente complejas como la detección de movimiento o la detección de la punta de los dedos pueden resolverse únicamente mediante visión por computadora. Por lo tanto, es muy útil saber lo que bibliotecas como OpenCV pueden hacer. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index cfd4e275..6ad54b92 100644 --- a/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,14 +1,23 @@ -# Arquitecturas de CNN Bien Conocidas + +# Arquitecturas Conocidas de Redes Neuronales Convolucionales (CNN) ### VGG-16 -VGG-16 es una red que logró una precisión del 92.7% en la clasificación top-5 de ImageNet en 2014. Tiene la siguiente estructura de capas: +VGG-16 es una red que alcanzó un 92.7% de precisión en la clasificación top-5 de ImageNet en 2014. Tiene la siguiente estructura de capas: -![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.es.jpg) +![Capas de ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -Como puedes ver, VGG sigue una arquitectura de pirámide tradicional, que es una secuencia de capas de convolución y agrupamiento. +Como puedes ver, VGG sigue una arquitectura piramidal tradicional, que consiste en una secuencia de capas de convolución y pooling. -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg) +![Pirámide de ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) @@ -20,9 +29,9 @@ ResNet es una familia de modelos propuesta por Microsoft Research en 2015. La id > Imagen de [este artículo](https://arxiv.org/pdf/1512.03385.pdf) -La razón para usar la conexión de identidad es permitir que nuestra capa prediga **la diferencia** entre el resultado de una capa anterior y la salida del bloque residual; de ahí el nombre *residual*. Estos bloques son mucho más fáciles de entrenar, y se pueden construir redes con varios cientos de esos bloques (las variantes más comunes son ResNet-52, ResNet-101 y ResNet-152). +La razón para usar un paso de identidad es que nuestra capa prediga **la diferencia** entre el resultado de una capa previa y la salida del bloque residual, de ahí el nombre *residual*. Estos bloques son mucho más fáciles de entrenar, y se pueden construir redes con varios cientos de estos bloques (las variantes más comunes son ResNet-52, ResNet-101 y ResNet-152). -También puedes pensar en esta red como capaz de ajustar su complejidad al conjunto de datos. Inicialmente, cuando comienzas a entrenar la red, los valores de los pesos son pequeños, y la mayor parte de la señal pasa a través de capas de identidad. A medida que avanza el entrenamiento y los pesos se vuelven más grandes, la importancia de los parámetros de la red crece, y la red se ajusta para acomodar el poder expresivo requerido para clasificar correctamente las imágenes de entrenamiento. +También puedes pensar en esta red como una que ajusta su complejidad al conjunto de datos. Al principio, cuando comienzas a entrenar la red, los valores de los pesos son pequeños, y la mayor parte de la señal pasa a través de las capas de identidad. A medida que el entrenamiento avanza y los pesos se hacen más grandes, la importancia de los parámetros de la red crece, y la red se ajusta para acomodar el poder expresivo necesario para clasificar correctamente las imágenes de entrenamiento. ### Google Inception @@ -32,33 +41,33 @@ La arquitectura Google Inception lleva esta idea un paso más allá y construye > Imagen de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Aquí, necesitamos enfatizar el papel de las convoluciones 1x1, porque al principio no tienen sentido. ¿Por qué necesitaríamos pasar por la imagen con un filtro 1x1? Sin embargo, debes recordar que los filtros de convolución también trabajan con varios canales de profundidad (originalmente - colores RGB, en capas subsiguientes - canales para diferentes filtros), y la convolución 1x1 se utiliza para mezclar esos canales de entrada utilizando diferentes pesos entrenables. También puede verse como un muestreo (agrupamiento) sobre la dimensión de los canales. +Aquí, debemos destacar el papel de las convoluciones 1x1, porque al principio no tienen mucho sentido. ¿Por qué necesitaríamos recorrer la imagen con un filtro 1x1? Sin embargo, debes recordar que los filtros de convolución también trabajan con varios canales de profundidad (originalmente - colores RGB, en capas posteriores - canales para diferentes filtros), y la convolución 1x1 se utiliza para mezclar esos canales de entrada utilizando diferentes pesos entrenables. También puede verse como una reducción de dimensiones (pooling) sobre la dimensión de los canales. -Aquí hay [una buena publicación de blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre el tema, y [el artículo original](https://arxiv.org/pdf/1312.4400.pdf). +Aquí tienes [un buen artículo](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre el tema, y [el artículo original](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet es una familia de modelos de tamaño reducido, adecuada para dispositivos móviles. Úsalos si tienes pocos recursos y puedes sacrificar un poco de precisión. La idea principal detrás de ellos es la llamada **convolución separable en profundidad**, que permite representar los filtros de convolución mediante una composición de convoluciones espaciales y convoluciones 1x1 sobre los canales de profundidad. Esto reduce significativamente el número de parámetros, haciendo que la red sea más pequeña en tamaño y también más fácil de entrenar con menos datos. +MobileNet es una familia de modelos de tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes recursos limitados y puedes sacrificar un poco de precisión. La idea principal detrás de ellos es la llamada **convolución separable en profundidad**, que permite representar los filtros de convolución como una composición de convoluciones espaciales y convoluciones 1x1 sobre los canales de profundidad. Esto reduce significativamente el número de parámetros, haciendo que la red sea más pequeña en tamaño y también más fácil de entrenar con menos datos. -Aquí hay [una buena publicación de blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Aquí tienes [un buen artículo sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). ## Conclusión -En esta unidad, has aprendido el concepto principal detrás de las redes neuronales de visión por computadora: las redes convolucionales. Las arquitecturas de la vida real que impulsan la clasificación de imágenes, la detección de objetos e incluso las redes de generación de imágenes se basan en CNN, solo que con más capas y algunos trucos de entrenamiento adicionales. +En esta unidad, has aprendido el concepto principal detrás de las redes neuronales para visión por computadora: las redes convolucionales. Las arquitecturas reales que impulsan la clasificación de imágenes, la detección de objetos e incluso las redes de generación de imágenes están todas basadas en CNNs, solo que con más capas y algunos trucos adicionales de entrenamiento. ## 🚀 Desafío -En los cuadernos adjuntos, hay notas al final sobre cómo obtener una mayor precisión. Realiza algunos experimentos para ver si puedes lograr una mayor precisión. +En los cuadernos adjuntos, hay notas al final sobre cómo obtener mayor precisión. Realiza algunos experimentos para ver si puedes lograr una mayor precisión. -## [Cuestionario posterior a la conferencia](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) ## Revisión y Autoestudio -Aunque las CNN se utilizan más comúnmente para tareas de Visión por Computadora, son generalmente buenas para extraer patrones de tamaño fijo. Por ejemplo, si estamos tratando con sonidos, también podríamos querer usar CNN para buscar algunos patrones específicos en la señal de audio; en cuyo caso los filtros serían unidimensionales (y esta CNN se llamaría 1D-CNN). Además, a veces se utiliza 3D-CNN para extraer características en un espacio multidimensional, como ciertos eventos que ocurren en un video; la CNN puede capturar ciertos patrones de cambio de características a lo largo del tiempo. Realiza algunas revisiones y autoestudios sobre otras tareas que se pueden realizar con CNN. +Aunque las CNNs se utilizan con mayor frecuencia para tareas de Visión por Computadora, en general son buenas para extraer patrones de tamaño fijo. Por ejemplo, si estamos trabajando con sonidos, también podríamos querer usar CNNs para buscar patrones específicos en señales de audio, en cuyo caso los filtros serían unidimensionales (y esta CNN se llamaría 1D-CNN). Además, a veces se utiliza una 3D-CNN para extraer características en un espacio multidimensional, como ciertos eventos que ocurren en un video - la CNN puede capturar ciertos patrones de cambio de características a lo largo del tiempo. Realiza una revisión y autoestudio sobre otras tareas que se pueden realizar con CNNs. -## [Asignación](lab/README.md) +## [Tarea](lab/README.md) -En este laboratorio, se te encarga clasificar diferentes razas de gatos y perros. Estas imágenes son más complejas que el conjunto de datos MNIST y de dimensiones más altas, y hay más de 10 clases. +En este laboratorio, tu tarea es clasificar diferentes razas de gatos y perros. Estas imágenes son más complejas que el conjunto de datos MNIST, tienen dimensiones más altas y hay más de 10 clases. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md index 2cf2e092..1e595d7a 100644 --- a/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ + # Redes Neuronales Convolucionales -Hemos visto anteriormente que las redes neuronales son bastante efectivas para trabajar con imágenes, e incluso un perceptrón de una sola capa es capaz de reconocer dígitos manuscritos del conjunto de datos MNIST con una precisión razonable. Sin embargo, el conjunto de datos MNIST es muy especial, y todos los dígitos están centrados dentro de la imagen, lo que hace que la tarea sea más sencilla. +Hemos visto anteriormente que las redes neuronales son bastante buenas para trabajar con imágenes, e incluso un perceptrón de una sola capa es capaz de reconocer dígitos escritos a mano del conjunto de datos MNIST con una precisión razonable. Sin embargo, el conjunto de datos MNIST es muy especial, ya que todos los dígitos están centrados dentro de la imagen, lo que simplifica la tarea. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -En la vida real, queremos ser capaces de reconocer objetos en una imagen sin importar su ubicación exacta en ella. La visión por computadora es diferente de la clasificación genérica, porque cuando intentamos encontrar un cierto objeto en la imagen, estamos escaneando la imagen en busca de ciertos **patrones** y sus combinaciones. Por ejemplo, al buscar un gato, primero podemos buscar líneas horizontales, que pueden formar bigotes, y luego una combinación específica de bigotes puede indicarnos que en realidad es una imagen de un gato. La posición relativa y la presencia de ciertos patrones es importante, y no su posición exacta en la imagen. +En la vida real, queremos ser capaces de reconocer objetos en una imagen independientemente de su ubicación exacta en la misma. La visión por computadora es diferente de la clasificación genérica, porque cuando intentamos encontrar un objeto específico en una imagen, escaneamos la imagen buscando ciertos **patrones** y sus combinaciones. Por ejemplo, al buscar un gato, primero podríamos buscar líneas horizontales que formen los bigotes, y luego una cierta combinación de bigotes podría indicarnos que, efectivamente, es una imagen de un gato. La posición relativa y la presencia de ciertos patrones son importantes, no su posición exacta en la imagen. -Para extraer patrones, utilizaremos la noción de **filtros convolucionales**. Como saben, una imagen está representada por una matriz 2D, o un tensor 3D con profundidad de color. Aplicar un filtro significa que tomamos una matriz de **núcleo de filtro** relativamente pequeña, y para cada píxel en la imagen original calculamos el promedio ponderado con los puntos vecinos. Podemos ver esto como una pequeña ventana deslizándose sobre toda la imagen, promediando todos los píxeles de acuerdo con los pesos en la matriz del núcleo del filtro. +Para extraer patrones, utilizaremos el concepto de **filtros convolucionales**. Como sabes, una imagen se representa mediante una matriz 2D o un tensor 3D con profundidad de color. Aplicar un filtro significa que tomamos una matriz relativamente pequeña llamada **núcleo del filtro**, y para cada píxel en la imagen original calculamos el promedio ponderado con los puntos vecinos. Podemos imaginar esto como una pequeña ventana que se desliza sobre toda la imagen, promediando todos los píxeles según los pesos en la matriz del núcleo del filtro. -![Filtro de Borde Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.es.png) | ![Filtro de Borde Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.es.png) +![Filtro de borde vertical](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![Filtro de borde horizontal](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) ----|---- -> Imagen de Dmitry Soshnikov +> Imagen por Dmitry Soshnikov -Por ejemplo, si aplicamos filtros de borde vertical y horizontal de 3x3 a los dígitos MNIST, podemos obtener resaltados (por ejemplo, valores altos) donde hay bordes verticales y horizontales en nuestra imagen original. Así, esos dos filtros pueden ser utilizados para "buscar" bordes. De manera similar, podemos diseñar diferentes filtros para buscar otros patrones de bajo nivel: -Estás entrenado con datos hasta octubre de 2023. +Por ejemplo, si aplicamos filtros de borde vertical y horizontal de 3x3 a los dígitos de MNIST, podemos resaltar (por ejemplo, valores altos) donde hay bordes verticales y horizontales en nuestra imagen original. Por lo tanto, esos dos filtros pueden usarse para "buscar" bordes. De manera similar, podemos diseñar diferentes filtros para buscar otros patrones de bajo nivel: -> Imagen de [Banco de Filtros Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Imagen del [Banco de Filtros de Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -Sin embargo, aunque podemos diseñar los filtros para extraer algunos patrones manualmente, también podemos diseñar la red de tal manera que aprenda los patrones automáticamente. Esta es una de las ideas principales detrás de la CNN. +Sin embargo, aunque podemos diseñar manualmente los filtros para extraer algunos patrones, también podemos diseñar la red de tal manera que aprenda los patrones automáticamente. Esta es una de las ideas principales detrás de las CNN. -## Ideas principales detrás de la CNN +## Ideas principales detrás de las CNN -La forma en que funcionan las CNN se basa en las siguientes ideas importantes: +El funcionamiento de las CNN se basa en las siguientes ideas importantes: -* Los filtros convolucionales pueden extraer patrones -* Podemos diseñar la red de tal manera que los filtros se entrenen automáticamente -* Podemos utilizar el mismo enfoque para encontrar patrones en características de alto nivel, no solo en la imagen original. Así, la extracción de características de la CNN trabaja en una jerarquía de características, comenzando desde combinaciones de píxeles de bajo nivel, hasta combinaciones de partes de la imagen de nivel superior. +* Los filtros convolucionales pueden extraer patrones. +* Podemos diseñar la red de tal manera que los filtros se entrenen automáticamente. +* Podemos usar el mismo enfoque para encontrar patrones en características de alto nivel, no solo en la imagen original. Así, la extracción de características en las CNN funciona en una jerarquía de características, comenzando con combinaciones de píxeles de bajo nivel hasta combinaciones de partes de la imagen de nivel superior. -![Extracción de Características Jerárquicas](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.es.png) +![Extracción jerárquica de características](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) > Imagen de [un artículo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basado en [su investigación](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) ## ✍️ Ejercicios: Redes Neuronales Convolucionales -Continuemos explorando cómo funcionan las redes neuronales convolucionales, y cómo podemos lograr filtros entrenables, trabajando a través de los cuadernos correspondientes: +Continuemos explorando cómo funcionan las redes neuronales convolucionales y cómo podemos lograr filtros entrenables trabajando con los cuadernos correspondientes: * [Redes Neuronales Convolucionales - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) * [Redes Neuronales Convolucionales - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) ## Arquitectura Piramidal -La mayoría de las CNN utilizadas para el procesamiento de imágenes siguen una arquitectura piramidal. La primera capa convolucional aplicada a las imágenes originales típicamente tiene un número relativamente bajo de filtros (8-16), que corresponden a diferentes combinaciones de píxeles, como líneas de trazos horizontales/verticales. En el siguiente nivel, reducimos la dimensión espacial de la red, y aumentamos el número de filtros, lo que corresponde a más posibles combinaciones de características simples. Con cada capa, a medida que avanzamos hacia el clasificador final, las dimensiones espaciales de la imagen disminuyen, y el número de filtros aumenta. +La mayoría de las CNN utilizadas para el procesamiento de imágenes siguen una arquitectura llamada piramidal. La primera capa convolucional aplicada a las imágenes originales generalmente tiene un número relativamente bajo de filtros (8-16), que corresponden a diferentes combinaciones de píxeles, como líneas horizontales o verticales. En el siguiente nivel, reducimos la dimensión espacial de la red y aumentamos el número de filtros, lo que corresponde a más combinaciones posibles de características simples. Con cada capa, a medida que nos acercamos al clasificador final, las dimensiones espaciales de la imagen disminuyen y el número de filtros aumenta. -Como ejemplo, veamos la arquitectura de VGG-16, una red que logró una precisión del 92.7% en la clasificación top-5 de ImageNet en 2014: +Como ejemplo, veamos la arquitectura de VGG-16, una red que logró un 92.7% de precisión en la clasificación top-5 de ImageNet en 2014: -![Capas de ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.es.jpg) +![Capas de ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -![Pirámide de ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg) +![Pirámide de ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) -## Arquitecturas de CNN Más Conocidas +## Arquitecturas de CNN más conocidas [Continúa tu estudio sobre las arquitecturas de CNN más conocidas](CNN_Architectures.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 0ff9e0bf..23b4ebf9 100644 --- a/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ + # Clasificación de Caras de Mascotas -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todas las mascotas. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. Esto se puede hacer con éxito utilizando redes neuronales. +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar a todas las mascotas. Una de las grandes características de dicha aplicación sería descubrir automáticamente la raza a partir de una fotografía. Esto se puede lograr con éxito utilizando redes neuronales. -Necesitas entrenar una red neuronal convolucional para clasificar diferentes razas de gatos y perros utilizando el conjunto de datos **Caras de Mascotas**. +Necesitas entrenar una red neuronal convolucional para clasificar diferentes razas de gatos y perros utilizando el conjunto de datos **Pet Faces**. ## El Conjunto de Datos -Usaremos el conjunto de datos **Caras de Mascotas**, derivado del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 razas diferentes de perros y gatos. +Usaremos el conjunto de datos **Pet Faces**, derivado del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 razas diferentes de perros y gatos. -![Conjunto de datos con el que trabajaremos](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.es.png) +![Conjunto de datos con el que trabajaremos](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) -Para descargar el conjunto de datos, usa este fragmento de código: +Para descargar el conjunto de datos, utiliza este fragmento de código: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ Para descargar el conjunto de datos, usa este fragmento de código: !rm petfaces.tar.gz ``` -## Iniciando el Notebook +## Cuaderno Inicial Comienza el laboratorio abriendo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) ## Conclusión -¡Has resuelto un problema relativamente complejo de clasificación de imágenes desde cero! Hubo muchas clases, ¡y aún así lograste obtener una precisión razonable! También tiene sentido medir la precisión top-k, porque es fácil confundir algunas de las clases que no son claramente diferentes incluso para los seres humanos. +¡Has resuelto un problema relativamente complejo de clasificación de imágenes desde cero! Había bastantes clases, y aun así lograste obtener una precisión razonable. También tiene sentido medir la precisión top-k, porque es fácil confundir algunas de las clases que no son claramente diferentes, incluso para los seres humanos. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md index 059c42c5..8e3d0c9e 100644 --- a/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,26 +1,35 @@ -# Redes Neuronales Pre-entrenadas y Aprendizaje por Transferencia + +# Redes Pre-entrenadas y Aprendizaje por Transferencia -Entrenar CNNs puede llevar mucho tiempo, y se requiere una gran cantidad de datos para esa tarea. Sin embargo, gran parte del tiempo se dedica a aprender los mejores filtros de bajo nivel que una red puede utilizar para extraer patrones de las imágenes. Surge una pregunta natural: ¿podemos usar una red neuronal entrenada en un conjunto de datos y adaptarla para clasificar diferentes imágenes sin necesidad de un proceso de entrenamiento completo? +Entrenar redes neuronales convolucionales (CNN) puede llevar mucho tiempo y requiere una gran cantidad de datos. Sin embargo, gran parte del tiempo se invierte en aprender los mejores filtros de bajo nivel que una red puede usar para extraer patrones de las imágenes. Surge una pregunta natural: ¿podemos usar una red neuronal entrenada en un conjunto de datos y adaptarla para clasificar imágenes diferentes sin necesidad de un proceso de entrenamiento completo? -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Este enfoque se llama **aprendizaje por transferencia**, porque transferimos parte del conocimiento de un modelo de red neuronal a otro. En el aprendizaje por transferencia, normalmente comenzamos con un modelo pre-entrenado, que ha sido entrenado en un gran conjunto de datos de imágenes, como **ImageNet**. Esos modelos ya pueden hacer un buen trabajo extrayendo diferentes características de imágenes genéricas, y en muchos casos, simplemente construir un clasificador sobre esas características extraídas puede dar un buen resultado. +Este enfoque se llama **aprendizaje por transferencia**, porque transferimos conocimiento de un modelo de red neuronal a otro. En el aprendizaje por transferencia, normalmente comenzamos con un modelo pre-entrenado, que ha sido entrenado en un gran conjunto de datos de imágenes, como **ImageNet**. Estos modelos ya son buenos extrayendo diferentes características de imágenes genéricas, y en muchos casos, simplemente construir un clasificador sobre esas características extraídas puede dar buenos resultados. -> ✅ El Aprendizaje por Transferencia es un término que se encuentra en otros campos académicos, como la Educación. Se refiere al proceso de tomar conocimiento de un dominio y aplicarlo a otro. +> ✅ El Aprendizaje por Transferencia es un término que también se encuentra en otros campos académicos, como la Educación. Se refiere al proceso de tomar conocimiento de un dominio y aplicarlo en otro. ## Modelos Pre-entrenados como Extractores de Características -Las redes convolucionales de las que hemos hablado en la sección anterior contenían una serie de capas, cada una de las cuales se supone que extrae algunas características de la imagen, comenzando desde combinaciones de píxeles de bajo nivel (como líneas horizontales/verticales o trazos), hasta combinaciones de características de nivel superior, que corresponden a cosas como el ojo de una llama. Si entrenamos una CNN en un conjunto de datos suficientemente grande de imágenes genéricas y diversas, la red debería aprender a extraer esas características comunes. +Las redes convolucionales de las que hablamos en la sección anterior contienen varias capas, cada una de las cuales está diseñada para extraer características de la imagen, comenzando con combinaciones de píxeles de bajo nivel (como líneas horizontales/verticales o trazos), hasta combinaciones de características de nivel superior, como un ojo o una llama. Si entrenamos una CNN en un conjunto de datos suficientemente grande y diverso, la red debería aprender a extraer esas características comunes. -Tanto Keras como PyTorch contienen funciones para cargar fácilmente los pesos de redes neuronales pre-entrenadas para algunas arquitecturas comunes, la mayoría de las cuales fueron entrenadas en imágenes de ImageNet. Las más utilizadas se describen en la página de [Arquitecturas CNN](../07-ConvNets/CNN_Architectures.md) de la lección anterior. En particular, es posible que desees considerar el uso de uno de los siguientes: +Tanto Keras como PyTorch contienen funciones para cargar fácilmente pesos de redes neuronales pre-entrenadas para algunas arquitecturas comunes, la mayoría de las cuales fueron entrenadas en imágenes de ImageNet. Las más utilizadas se describen en la página [Arquitecturas de CNN](../07-ConvNets/CNN_Architectures.md) de la lección anterior. En particular, podrías considerar usar una de las siguientes: -* **VGG-16/VGG-19**, que son modelos relativamente simples que aún ofrecen buena precisión. A menudo, usar VGG como primer intento es una buena elección para ver cómo funciona el aprendizaje por transferencia. -* **ResNet** es una familia de modelos propuestos por Microsoft Research en 2015. Tienen más capas y, por lo tanto, requieren más recursos. -* **MobileNet** es una familia de modelos de tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes recursos limitados y puedes sacrificar un poco de precisión. +* **VGG-16/VGG-19**, que son modelos relativamente simples pero con buena precisión. Usar VGG como primer intento es una buena opción para ver cómo funciona el aprendizaje por transferencia. +* **ResNet**, una familia de modelos propuesta por Microsoft Research en 2015. Tienen más capas y, por lo tanto, requieren más recursos. +* **MobileNet**, una familia de modelos de tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes recursos limitados y puedes sacrificar un poco de precisión. -Aquí hay ejemplos de características extraídas de una imagen de un gato por la red VGG-16: +Aquí hay características de ejemplo extraídas de una imagen de un gato por la red VGG-16: -![Características extraídas por VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.es.png) +![Características extraídas por VGG-16](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) ## Conjunto de Datos de Gatos vs. Perros @@ -28,53 +37,54 @@ En este ejemplo, utilizaremos un conjunto de datos de [Gatos y Perros](https://w ## ✍️ Ejercicio: Aprendizaje por Transferencia -Veamos el aprendizaje por transferencia en acción en los siguientes cuadernos: +Veamos el aprendizaje por transferencia en acción en los notebooks correspondientes: * [Aprendizaje por Transferencia - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) * [Aprendizaje por Transferencia - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Visualizando el Gato Adversarial +## Visualizando un Gato Adversarial -Una red neuronal pre-entrenada contiene diferentes patrones dentro de su *cerebro*, incluyendo nociones de **gato ideal** (así como perro ideal, cebra ideal, etc.). Sería interesante de alguna manera **visualizar esta imagen**. Sin embargo, no es sencillo, porque los patrones están distribuidos por todos los pesos de la red y también organizados en una estructura jerárquica. +Una red neuronal pre-entrenada contiene diferentes patrones en su *cerebro*, incluyendo nociones de un **gato ideal** (así como un perro ideal, una cebra ideal, etc.). Sería interesante de alguna manera **visualizar esta imagen**. Sin embargo, no es sencillo, porque los patrones están distribuidos por todos los pesos de la red y organizados en una estructura jerárquica. -Un enfoque que podemos tomar es comenzar con una imagen aleatoria y luego intentar usar la técnica de **optimización por descenso de gradiente** para ajustar esa imagen de tal manera que la red comience a pensar que es un gato. +Un enfoque que podemos tomar es comenzar con una imagen aleatoria y luego usar la técnica de **optimización por descenso de gradiente** para ajustar esa imagen de tal manera que la red comience a pensar que es un gato. -![Bucle de Optimización de Imagen](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.es.png) +![Bucle de Optimización de Imagen](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) -Sin embargo, si hacemos esto, obtendremos algo muy similar a un ruido aleatorio. Esto se debe a que *hay muchas formas de hacer que la red piense que la imagen de entrada es un gato*, incluyendo algunas que no tienen sentido visualmente. Aunque esas imágenes contienen muchos patrones típicos de un gato, no hay nada que las restrinja a ser visualmente distintivas. +Sin embargo, si hacemos esto, obtendremos algo muy similar a un ruido aleatorio. Esto se debe a que *hay muchas formas de hacer que la red piense que la imagen de entrada es un gato*, incluidas algunas que no tienen sentido visualmente. Aunque esas imágenes contienen muchos patrones típicos de un gato, no hay nada que las obligue a ser visualmente distintivas. -Para mejorar el resultado, podemos agregar otro término a la función de pérdida, que se llama **pérdida de variación**. Es una métrica que muestra cuán similares son los píxeles vecinos de la imagen. Minimizar la pérdida de variación hace que la imagen sea más suave y elimina el ruido, revelando así patrones más visualmente atractivos. Aquí hay un ejemplo de tales imágenes "ideales", que son clasificadas como gato y como cebra con alta probabilidad: +Para mejorar el resultado, podemos agregar otro término a la función de pérdida, llamado **pérdida de variación**. Es una métrica que muestra cuán similares son los píxeles vecinos de la imagen. Minimizar la pérdida de variación hace que la imagen sea más suave y elimina el ruido, revelando así patrones más atractivos visualmente. Aquí hay un ejemplo de tales imágenes "ideales", clasificadas como gato y como cebra con alta probabilidad: -![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.es.png) | ![Cebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.es.png) +![Gato Ideal](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![Cebra Ideal](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) -----|----- - *Gato Ideal* | *Cebra Ideal* +*Gato Ideal* | *Cebra Ideal* -Un enfoque similar puede utilizarse para realizar lo que se llama **ataques adversariales** en una red neuronal. Supongamos que queremos engañar a una red neuronal y hacer que un perro se vea como un gato. Si tomamos la imagen de un perro, que es reconocida por una red como un perro, podemos ajustarla un poco usando optimización por descenso de gradiente, hasta que la red comience a clasificarla como un gato: +Un enfoque similar puede usarse para realizar los llamados **ataques adversariales** en una red neuronal. Supongamos que queremos engañar a una red neuronal y hacer que un perro parezca un gato. Si tomamos la imagen de un perro, que la red reconoce como un perro, podemos modificarla un poco usando optimización por descenso de gradiente, hasta que la red comience a clasificarla como un gato: -![Imagen de un Perro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.es.png) | ![Imagen de un perro clasificado como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.es.png) +![Imagen de un Perro](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![Imagen de un perro clasificado como un gato](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) -----|----- -*Imagen original de un perro* | *Imagen de un perro clasificado como gato* +*Imagen original de un perro* | *Imagen de un perro clasificado como un gato* -Consulta el código para reproducir los resultados anteriores en el siguiente cuaderno: +Consulta el código para reproducir los resultados anteriores en el siguiente notebook: * [Gato Ideal y Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + ## Conclusión -Usando el aprendizaje por transferencia, puedes rápidamente armar un clasificador para una tarea de clasificación de objetos personalizada y lograr alta precisión. Puedes ver que las tareas más complejas que estamos resolviendo ahora requieren mayor poder computacional y no pueden resolverse fácilmente en la CPU. En la próxima unidad, intentaremos usar una implementación más liviana para entrenar el mismo modelo utilizando recursos computacionales más bajos, lo que resulta en una precisión ligeramente inferior. +Usando el aprendizaje por transferencia, puedes armar rápidamente un clasificador para una tarea de clasificación de objetos personalizada y lograr alta precisión. Puedes ver que las tareas más complejas que estamos resolviendo ahora requieren mayor potencia computacional y no pueden resolverse fácilmente en la CPU. En la próxima unidad, intentaremos usar una implementación más ligera para entrenar el mismo modelo utilizando menos recursos computacionales, lo que resulta en una precisión ligeramente menor. ## 🚀 Desafío -En los cuadernos adjuntos, hay notas al final sobre cómo el transferir conocimiento funciona mejor con datos de entrenamiento algo similares (quizás un nuevo tipo de animal). Realiza algunos experimentos con tipos de imágenes completamente nuevos para ver qué tan bien o mal funcionan tus modelos de transferencia de conocimiento. +En los notebooks adjuntos, hay notas al final sobre cómo el conocimiento transferido funciona mejor con datos de entrenamiento algo similares (quizás un nuevo tipo de animal). Realiza experimentos con tipos completamente nuevos de imágenes para ver qué tan bien o mal funcionan tus modelos de conocimiento transferido. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Revisión y Autoestudio -Lee [TrainingTricks.md](TrainingTricks.md) para profundizar tu conocimiento sobre algunas otras formas de entrenar tus modelos. +Lee [TrainingTricks.md](TrainingTricks.md) para profundizar tu conocimiento sobre otras formas de entrenar tus modelos. -## [Tarea](lab/README.md) +## [Asignación](lab/README.md) -En este laboratorio, utilizaremos un conjunto de datos de mascotas de la vida real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) con 35 razas de gatos y perros, y construiremos un clasificador de aprendizaje por transferencia. +En este laboratorio, utilizaremos el conjunto de datos real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) de mascotas con 35 razas de gatos y perros, y construiremos un clasificador de aprendizaje por transferencia. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index 95af8a90..38516165 100644 --- a/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# Trucos de Entrenamiento en Aprendizaje Profundo + +# Trucos para el Entrenamiento de Redes Neuronales Profundas -A medida que las redes neuronales se vuelven más profundas, el proceso de su entrenamiento se vuelve cada vez más desafiante. Un problema importante es el llamado [gradientes que se desvanecen](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) o [gradientes que explotan](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Esta publicación](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ofrece una buena introducción a estos problemas. +A medida que las redes neuronales se vuelven más profundas, el proceso de entrenamiento se vuelve cada vez más desafiante. Uno de los principales problemas son los llamados [gradientes que desaparecen](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) o [gradientes que explotan](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Este artículo](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ofrece una buena introducción a estos problemas. Para hacer que el entrenamiento de redes profundas sea más eficiente, se pueden utilizar algunas técnicas. -## Manteniendo valores en un intervalo razonable +## Mantener los valores en un intervalo razonable -Para hacer que los cálculos numéricos sean más estables, queremos asegurarnos de que todos los valores dentro de nuestra red neuronal estén en una escala razonable, típicamente [-1..1] o [0..1]. No es un requisito muy estricto, pero la naturaleza de los cálculos en punto flotante es tal que los valores de diferentes magnitudes no pueden ser manipulados con precisión juntos. Por ejemplo, si sumamos 10-10 y 1010, probablemente obtendremos 1010, porque el valor más pequeño se "convertiría" al mismo orden que el mayor, y así se perdería la mantisa. +Para que los cálculos numéricos sean más estables, queremos asegurarnos de que todos los valores dentro de nuestra red neuronal estén en una escala razonable, típicamente [-1..1] o [0..1]. No es un requisito muy estricto, pero la naturaleza de los cálculos en punto flotante es tal que los valores de diferentes magnitudes no pueden manipularse con precisión juntos. Por ejemplo, si sumamos 10-10 y 1010, es probable que obtengamos 1010, porque el valor más pequeño se "convertirá" al mismo orden que el más grande, y así se perderá la mantisa. La mayoría de las funciones de activación tienen no linealidades alrededor de [-1..1], por lo que tiene sentido escalar todos los datos de entrada al intervalo [-1..1] o [0..1]. -## Inicialización de Pesos Inicial +## Inicialización de Pesos -Idealmente, queremos que los valores estén en el mismo rango después de pasar a través de las capas de la red. Por lo tanto, es importante inicializar los pesos de tal manera que se preserve la distribución de valores. +Idealmente, queremos que los valores estén en el mismo rango después de pasar por las capas de la red. Por lo tanto, es importante inicializar los pesos de manera que se preserve la distribución de los valores. -La distribución normal **N(0,1)** no es una buena idea, porque si tenemos *n* entradas, la desviación estándar de la salida sería *n*, y los valores probablemente saldrían del intervalo [0..1]. +La distribución normal **N(0,1)** no es una buena idea, porque si tenemos *n* entradas, la desviación estándar de la salida sería *n*, y los valores probablemente saldrán del intervalo [0..1]. -Las siguientes inicializaciones son a menudo utilizadas: +Las siguientes inicializaciones se usan con frecuencia: * Distribución uniforme -- `uniform` * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** garantiza que para entradas con media cero y desviación estándar de 1, la misma media/desviación estándar se mantendrá - * **N(0,√2/(n_in+n_out))** -- la llamada **inicialización de Xavier** (`glorot`), ayuda a mantener las señales en rango durante la propagación hacia adelante y hacia atrás + * **N(0,1/√n_in)** garantiza que para entradas con media cero y desviación estándar de 1, se mantendrán la misma media y desviación estándar + * **N(0,√2/(n_in+n_out))** -- la llamada **inicialización de Xavier** (`glorot`), ayuda a mantener las señales en rango tanto en la propagación hacia adelante como hacia atrás ## Normalización por Lotes -Incluso con una correcta inicialización de pesos, estos pueden volverse arbitrariamente grandes o pequeños durante el entrenamiento, y traerán señales fuera del rango adecuado. Podemos devolver las señales utilizando una de las técnicas de **normalización**. Aunque hay varias de ellas (Normalización de peso, Normalización de capa), la más utilizada es la Normalización por lotes. +Incluso con una inicialización adecuada de los pesos, estos pueden volverse arbitrariamente grandes o pequeños durante el entrenamiento, sacando las señales del rango adecuado. Podemos devolver las señales al rango correcto utilizando una de las técnicas de **normalización**. Aunque existen varias (normalización de pesos, normalización por capas), la más utilizada es la Normalización por Lotes. -La idea de la **normalización por lotes** es tener en cuenta todos los valores a través del minibatch, y realizar la normalización (es decir, restar la media y dividir por la desviación estándar) en función de esos valores. Se implementa como una capa de red que realiza esta normalización después de aplicar los pesos, pero antes de la función de activación. Como resultado, es probable que veamos una mayor precisión final y un entrenamiento más rápido. +La idea de la **normalización por lotes** es tener en cuenta todos los valores dentro del minibatch y realizar una normalización (es decir, restar la media y dividir por la desviación estándar) basada en esos valores. Se implementa como una capa de red que realiza esta normalización después de aplicar los pesos, pero antes de la función de activación. Como resultado, es probable que veamos una mayor precisión final y un entrenamiento más rápido. -Aquí está el [artículo original](https://arxiv.org/pdf/1502.03167.pdf) sobre la normalización por lotes, la [explicación en Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), y [una buena publicación introductoria en un blog](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (y una [en ruso](https://habrahabr.ru/post/309302/)). +Aquí está el [artículo original](https://arxiv.org/pdf/1502.03167.pdf) sobre normalización por lotes, la [explicación en Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) y [un buen artículo introductorio](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (y otro [en ruso](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout** es una técnica interesante que elimina un cierto porcentaje de neuronas aleatorias durante el entrenamiento. También se implementa como una capa con un parámetro (porcentaje de neuronas a eliminar, típicamente del 10% al 50%), y durante el entrenamiento, pone a cero elementos aleatorios del vector de entrada, antes de pasarlo a la siguiente capa. +**Dropout** es una técnica interesante que elimina un cierto porcentaje de neuronas aleatorias durante el entrenamiento. También se implementa como una capa con un parámetro (porcentaje de neuronas a eliminar, típicamente 10%-50%), y durante el entrenamiento pone en cero elementos aleatorios del vector de entrada antes de pasarlo a la siguiente capa. -Aunque esto puede sonar como una idea extraña, puedes ver el efecto de dropout en el entrenamiento de un clasificador de dígitos MNIST en el cuaderno [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Acelera el entrenamiento y nos permite lograr una mayor precisión en menos épocas de entrenamiento. +Aunque esto pueda sonar como una idea extraña, puedes ver el efecto del dropout al entrenar un clasificador de dígitos MNIST en el notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Acelera el entrenamiento y nos permite lograr mayor precisión en menos épocas de entrenamiento. Este efecto puede explicarse de varias maneras: - * Puede considerarse un factor de choque aleatorio para el modelo, que saca la optimización del mínimo local - * Puede considerarse como *promedio implícito del modelo*, porque podemos decir que durante el dropout estamos entrenando un modelo ligeramente diferente + * Puede considerarse como un factor de choque aleatorio para el modelo, que lo saca de mínimos locales + * Puede considerarse como un *promedio implícito de modelos*, ya que durante el dropout estamos entrenando un modelo ligeramente diferente -> *Algunas personas dicen que cuando una persona borracha intenta aprender algo, lo recordará mejor a la mañana siguiente, en comparación con una persona sobria, porque un cerebro con algunos neuronas malfuncionantes intenta adaptarse mejor para captar el significado. Nunca hemos probado si esto es cierto o no* +> *Algunas personas dicen que cuando una persona ebria intenta aprender algo, lo recordará mejor a la mañana siguiente, en comparación con una persona sobria, porque un cerebro con algunas neuronas disfuncionales intenta adaptarse mejor para captar el significado. Nunca hemos probado si esto es cierto o no.* -## Previniendo el sobreajuste +## Prevención del sobreajuste -Uno de los aspectos muy importantes del aprendizaje profundo es poder prevenir el [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Aunque puede ser tentador usar un modelo de red neuronal muy poderoso, siempre debemos equilibrar el número de parámetros del modelo con el número de muestras de entrenamiento. +Uno de los aspectos más importantes del aprendizaje profundo es poder prevenir el [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Aunque puede ser tentador usar un modelo de red neuronal muy potente, siempre debemos equilibrar el número de parámetros del modelo con el número de muestras de entrenamiento. -> ¡Asegúrate de entender el concepto de [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que hemos introducido anteriormente! +> Asegúrate de entender el concepto de [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que hemos introducido anteriormente. Hay varias formas de prevenir el sobreajuste: - * Parada temprana -- monitorear continuamente el error en el conjunto de validación y detener el entrenamiento cuando el error de validación comienza a aumentar. - * Decaimiento de peso explícito / Regularización -- agregar una penalización extra a la función de pérdida por valores absolutos altos de los pesos, lo que evita que el modelo obtenga resultados muy inestables + * Detención temprana -- monitorear continuamente el error en el conjunto de validación y detener el entrenamiento cuando el error de validación comience a aumentar. + * Decaimiento explícito de pesos / Regularización -- agregar una penalización extra a la función de pérdida para valores absolutos altos de los pesos, lo que evita que el modelo obtenga resultados muy inestables * Promedio de modelos -- entrenar varios modelos y luego promediar el resultado. Esto ayuda a minimizar la varianza. - * Dropout (Promedio implícito del modelo) + * Dropout (Promedio implícito de modelos) ## Optimizadores / Algoritmos de Entrenamiento -Otro aspecto importante del entrenamiento es elegir un buen algoritmo de entrenamiento. Aunque el **descenso de gradiente** clásico es una elección razonable, a veces puede ser demasiado lento o resultar en otros problemas. +Otro aspecto importante del entrenamiento es elegir un buen algoritmo de entrenamiento. Aunque el **descenso de gradiente clásico** es una elección razonable, a veces puede ser demasiado lento o causar otros problemas. -En el aprendizaje profundo, utilizamos **Descenso de Gradiente Estocástico** (SGD), que es un descenso de gradiente aplicado a minibatches, seleccionados aleatoriamente del conjunto de entrenamiento. Los pesos se ajustan utilizando esta fórmula: +En aprendizaje profundo, usamos **Descenso de Gradiente Estocástico** (SGD), que es un descenso de gradiente aplicado a minibatches seleccionados aleatoriamente del conjunto de entrenamiento. Los pesos se ajustan usando esta fórmula: wt+1 = wt - η∇ℒ -### Momento +### Momentum -En **SGD con momento**, mantenemos una porción de un gradiente de pasos anteriores. Es similar a cuando nos movemos con inercia, y recibimos un golpe en una dirección diferente; nuestra trayectoria no cambia de inmediato, sino que mantiene parte del movimiento original. Aquí introducimos otro vector v para representar la *velocidad*: +En el **SGD con momentum**, mantenemos una porción del gradiente de pasos anteriores. Es similar a cuando nos movemos con inercia y recibimos un golpe en una dirección diferente; nuestra trayectoria no cambia inmediatamente, sino que conserva parte del movimiento original. Aquí introducimos otro vector v para representar la *velocidad*: * vt+1 = γ vt - η∇ℒ * wt+1 = wt+vt+1 -Aquí, el parámetro γ indica el grado en que tomamos en cuenta la inercia: γ=0 corresponde al SGD clásico; γ=1 es una ecuación de movimiento puro. +El parámetro γ indica hasta qué punto tomamos en cuenta la inercia: γ=0 corresponde al SGD clásico; γ=1 es una ecuación de movimiento puro. ### Adam, Adagrad, etc. -Dado que en cada capa multiplicamos señales por alguna matriz Wi, dependiendo de ||Wi||, el gradiente puede disminuir y acercarse a 0, o aumentar indefinidamente. Esta es la esencia del problema de los Gradientes que Explotan/Desvanecen. +Dado que en cada capa multiplicamos señales por alguna matriz Wi, dependiendo de ||Wi||, el gradiente puede disminuir y acercarse a 0, o aumentar indefinidamente. Este es el núcleo del problema de Gradientes que Desaparecen/Explotan. -Una de las soluciones a este problema es usar solo la dirección del gradiente en la ecuación, e ignorar el valor absoluto, es decir, +Una de las soluciones a este problema es usar solo la dirección del gradiente en la ecuación e ignorar el valor absoluto, es decir: wt+1 = wt - η(∇ℒ/||∇ℒ||), donde ||∇ℒ|| = √∑(∇ℒ)2 -Este algoritmo se llama **Adagrad**. Otros algoritmos que utilizan la misma idea son: **RMSProp**, **Adam** +Este algoritmo se llama **Adagrad**. Otros algoritmos que usan la misma idea: **RMSProp**, **Adam** > **Adam** se considera un algoritmo muy eficiente para muchas aplicaciones, así que si no estás seguro de cuál usar, utiliza Adam. -### Recorte de Gradiente +### Recorte de gradientes -El recorte de gradiente es una extensión de la idea anterior. Cuando ||∇ℒ|| ≤ θ, consideramos el gradiente original en la optimización de pesos, y cuando ||∇ℒ|| > θ - dividimos el gradiente por su norma. Aquí θ es un parámetro, en la mayoría de los casos podemos tomar θ=1 o θ=10. +El recorte de gradientes es una extensión de la idea anterior. Cuando ||∇ℒ|| ≤ θ, consideramos el gradiente original en la optimización de pesos, y cuando ||∇ℒ|| > θ, dividimos el gradiente por su norma. Aquí θ es un parámetro; en la mayoría de los casos podemos tomar θ=1 o θ=10. ### Decaimiento de la tasa de aprendizaje -El éxito del entrenamiento a menudo depende del parámetro de tasa de aprendizaje η. Es lógico suponer que valores más grandes de η resultan en un entrenamiento más rápido, que es algo que normalmente queremos al principio del entrenamiento, y luego un valor más pequeño de η nos permite afinar la red. Por lo tanto, en la mayoría de los casos queremos disminuir η en el proceso del entrenamiento. +El éxito del entrenamiento a menudo depende del parámetro de tasa de aprendizaje η. Es lógico asumir que valores más grandes de η resultan en un entrenamiento más rápido, algo que típicamente queremos al inicio del entrenamiento, y luego valores más pequeños de η nos permiten ajustar finamente la red. Por lo tanto, en la mayoría de los casos queremos disminuir η durante el proceso de entrenamiento. -Esto se puede hacer multiplicando η por algún número (por ejemplo, 0.98) después de cada época de entrenamiento, o utilizando un **programa de tasa de aprendizaje** más complicado. +Esto puede hacerse multiplicando η por algún número (por ejemplo, 0.98) después de cada época de entrenamiento, o utilizando un **programa de tasa de aprendizaje** más complicado. -## Diferentes Arquitecturas de Red +## Diferentes Arquitecturas de Redes -Seleccionar la arquitectura de red adecuada para tu problema puede ser complicado. Normalmente, elegiríamos una arquitectura que ha demostrado funcionar para nuestra tarea específica (o una similar). Aquí hay una [buena visión general](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) de arquitecturas de redes neuronales para visión por computadora. +Seleccionar la arquitectura de red adecuada para tu problema puede ser complicado. Normalmente, tomaríamos una arquitectura que haya demostrado funcionar para nuestra tarea específica (o una similar). Aquí hay una [buena visión general](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) de arquitecturas de redes neuronales para visión por computadora. -> Es importante seleccionar una arquitectura que sea lo suficientemente poderosa para el número de muestras de entrenamiento que tenemos. Seleccionar un modelo demasiado poderoso puede resultar en [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). +> Es importante seleccionar una arquitectura que sea lo suficientemente potente para el número de muestras de entrenamiento que tenemos. Seleccionar un modelo demasiado potente puede resultar en [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). -Otra buena forma sería utilizar una arquitectura que se ajuste automáticamente a la complejidad requerida. Hasta cierto punto, la arquitectura **ResNet** y **Inception** son autoajustables. [Más sobre arquitecturas de visión por computadora](../07-ConvNets/CNN_Architectures.md) +Otra buena opción sería usar una arquitectura que se ajuste automáticamente a la complejidad requerida. Hasta cierto punto, las arquitecturas **ResNet** e **Inception** son autoajustables. [Más sobre arquitecturas de visión por computadora](../07-ConvNets/CNN_Architectures.md). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index eff33f38..64a7fac3 100644 --- a/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,14 +1,23 @@ + # Clasificación de Mascotas de Oxford usando Aprendizaje por Transferencia -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. En esta tarea, utilizaremos el aprendizaje por transferencia para clasificar imágenes de mascotas de la vida real del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar a todas las mascotas. Una de las grandes características de dicha aplicación sería identificar automáticamente la raza a partir de una fotografía. En esta asignación, utilizaremos aprendizaje por transferencia para clasificar imágenes reales de mascotas del conjunto de datos de [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). ## El Conjunto de Datos -Usaremos el conjunto de datos original de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contiene 35 razas diferentes de perros y gatos. +Usaremos el conjunto de datos original de [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contiene 35 razas diferentes de perros y gatos. Para descargar el conjunto de datos, utiliza este fragmento de código: @@ -18,13 +27,13 @@ Para descargar el conjunto de datos, utiliza este fragmento de código: !rm images.tar.gz ``` -## Iniciando el Notebook +## Iniciando el Cuaderno Comienza el laboratorio abriendo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) ## Conclusión -El aprendizaje por transferencia y las redes preentrenadas nos permiten resolver problemas de clasificación de imágenes del mundo real de manera relativamente sencilla. Sin embargo, las redes preentrenadas funcionan bien con imágenes de tipos similares, y si comenzamos a clasificar imágenes muy diferentes (por ejemplo, imágenes médicas), es probable que obtengamos resultados mucho peores. +El aprendizaje por transferencia y las redes preentrenadas nos permiten resolver problemas reales de clasificación de imágenes de manera relativamente sencilla. Sin embargo, las redes preentrenadas funcionan bien con imágenes de un tipo similar, y si comenzamos a clasificar imágenes muy diferentes (por ejemplo, imágenes médicas), es probable que obtengamos resultados mucho peores. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md index 21159365..36daf941 100644 --- a/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,77 +1,86 @@ + # Autoencoders -Al entrenar CNNs, uno de los problemas es que necesitamos una gran cantidad de datos etiquetados. En el caso de la clasificación de imágenes, necesitamos separar las imágenes en diferentes clases, lo cual es un esfuerzo manual. +Al entrenar redes neuronales convolucionales (CNNs), uno de los problemas es que necesitamos una gran cantidad de datos etiquetados. En el caso de la clasificación de imágenes, necesitamos separar las imágenes en diferentes clases, lo cual requiere un esfuerzo manual. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Sin embargo, podríamos querer utilizar datos en bruto (no etiquetados) para entrenar extractores de características de CNN, lo que se llama **aprendizaje auto-supervisado**. En lugar de etiquetas, utilizaremos imágenes de entrenamiento como entrada y salida de la red. La idea principal de un **autoencoder** es que tendremos una **red codificadora** que convierte la imagen de entrada en un **espacio latente** (normalmente es solo un vector de un tamaño menor), y luego la **red decodificadora**, cuyo objetivo será reconstruir la imagen original. +Sin embargo, podríamos querer usar datos sin procesar (no etiquetados) para entrenar extractores de características de CNN, lo que se conoce como **aprendizaje auto-supervisado**. En lugar de etiquetas, utilizaremos las imágenes de entrenamiento tanto como entrada como salida de la red. La idea principal de un **autoencoder** es que tendremos una **red codificadora** que convierte la imagen de entrada en algún **espacio latente** (normalmente es solo un vector de menor tamaño), y luego una **red decodificadora**, cuyo objetivo será reconstruir la imagen original. > ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) es "un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados." -Dado que estamos entrenando un autoencoder para capturar la mayor cantidad de información de la imagen original posible para una reconstrucción precisa, la red intenta encontrar la mejor **inmersión** de las imágenes de entrada para captar el significado. +Dado que estamos entrenando un autoencoder para capturar la mayor cantidad de información posible de la imagen original para una reconstrucción precisa, la red intenta encontrar la mejor **representación** de las imágenes de entrada para capturar su significado. -![Diagrama de Autoencoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.es.jpg) +![Diagrama de Autoencoder](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) -> Imagen de [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) +> Imagen del [blog de Keras](https://blog.keras.io/building-autoencoders-in-keras.html) ## Escenarios para usar Autoencoders Aunque reconstruir imágenes originales no parece útil por sí mismo, hay algunos escenarios donde los autoencoders son especialmente útiles: -* **Reducir la dimensión de las imágenes para visualización** o **entrenar incrustaciones de imágenes**. Generalmente, los autoencoders ofrecen mejores resultados que PCA, porque tienen en cuenta la naturaleza espacial de las imágenes y las características jerárquicas. -* **Eliminación de ruido**, es decir, quitar el ruido de la imagen. Debido a que el ruido contiene mucha información inútil, el autoencoder no puede ajustarlo todo en un espacio latente relativamente pequeño, y así solo captura la parte importante de la imagen. Al entrenar eliminadores de ruido, comenzamos con imágenes originales y usamos imágenes con ruido añadido artificialmente como entrada para el autoencoder. -* **Super-resolución**, aumentando la resolución de la imagen. Comenzamos con imágenes de alta resolución y utilizamos la imagen con menor resolución como entrada del autoencoder. +* **Reducir la dimensión de las imágenes para visualización** o **entrenar representaciones de imágenes**. Generalmente, los autoencoders ofrecen mejores resultados que PCA, porque tienen en cuenta la naturaleza espacial de las imágenes y las características jerárquicas. +* **Eliminación de ruido**, es decir, eliminar el ruido de la imagen. Como el ruido contiene mucha información inútil, el autoencoder no puede ajustarlo todo en un espacio latente relativamente pequeño, y por lo tanto captura solo la parte importante de la imagen. Al entrenar eliminadores de ruido, comenzamos con imágenes originales y usamos imágenes con ruido artificialmente añadido como entrada para el autoencoder. +* **Superresolución**, aumentar la resolución de las imágenes. Comenzamos con imágenes de alta resolución y usamos la imagen con menor resolución como entrada del autoencoder. * **Modelos generativos**. Una vez que entrenamos el autoencoder, la parte decodificadora puede usarse para crear nuevos objetos a partir de vectores latentes aleatorios. ## Autoencoders Variacionales (VAE) -Los autoencoders tradicionales reducen la dimensión de los datos de entrada de alguna manera, identificando las características importantes de las imágenes de entrada. Sin embargo, los vectores latentes a menudo no tienen mucho sentido. En otras palabras, tomando el conjunto de datos MNIST como ejemplo, averiguar qué dígitos corresponden a diferentes vectores latentes no es una tarea fácil, porque vectores latentes cercanos no necesariamente corresponden a los mismos dígitos. +Los autoencoders tradicionales reducen la dimensión de los datos de entrada de alguna manera, identificando las características importantes de las imágenes de entrada. Sin embargo, los vectores latentes a menudo no tienen mucho sentido. En otras palabras, tomando como ejemplo el conjunto de datos MNIST, identificar qué dígitos corresponden a diferentes vectores latentes no es una tarea sencilla, porque vectores latentes cercanos no necesariamente corresponden a los mismos dígitos. -Por otro lado, para entrenar modelos *generativos*, es mejor tener cierta comprensión del espacio latente. Esta idea nos lleva al **autoencoder variacional** (VAE). +Por otro lado, para entrenar modelos *generativos* es mejor tener cierta comprensión del espacio latente. Esta idea nos lleva al **autoencoder variacional** (VAE). -El VAE es el autoencoder que aprende a predecir la *distribución estadística* de los parámetros latentes, la llamada **distribución latente**. Por ejemplo, podemos querer que los vectores latentes se distribuyan normalmente con una media zmean y una desviación estándar zsigma (tanto la media como la desviación estándar son vectores de alguna dimensionalidad d). El codificador en el VAE aprende a predecir esos parámetros, y luego el decodificador toma un vector aleatorio de esta distribución para reconstruir el objeto. +El VAE es un autoencoder que aprende a predecir una *distribución estadística* de los parámetros latentes, llamada **distribución latente**. Por ejemplo, podríamos querer que los vectores latentes se distribuyan normalmente con una media zmean y una desviación estándar zsigma (tanto la media como la desviación estándar son vectores de alguna dimensionalidad d). El codificador en el VAE aprende a predecir esos parámetros, y luego el decodificador toma un vector aleatorio de esta distribución para reconstruir el objeto. -Para resumir: +En resumen: -* Desde el vector de entrada, predecimos `z_mean` y `z_log_sigma` (en lugar de predecir la desviación estándar en sí, predecimos su logaritmo) -* Muestreamos un vector `sample` de la distribución N(zmean,exp(zlog\_sigma)) -* El decodificador intenta decodificar la imagen original utilizando `sample` como vector de entrada + * A partir del vector de entrada, predecimos `z_mean` y `z_log_sigma` (en lugar de predecir directamente la desviación estándar, predecimos su logaritmo). + * Muestreamos un vector `sample` de la distribución N(zmean,exp(zlog\_sigma)). + * El decodificador intenta decodificar la imagen original usando `sample` como vector de entrada. - + -> Imagen de [este artículo del blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) por Isaak Dykeman +> Imagen de [este artículo](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) por Isaak Dykeman Los autoencoders variacionales utilizan una función de pérdida compleja que consta de dos partes: -* **Pérdida de reconstrucción** es la función de pérdida que muestra cuán cerca está una imagen reconstruida del objetivo (puede ser el Error Cuadrático Medio, o MSE). Es la misma función de pérdida que en los autoencoders normales. -* **Pérdida KL**, que asegura que las distribuciones de las variables latentes se mantengan cerca de la distribución normal. Se basa en la noción de [divergencia Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - una métrica para estimar cuán similares son dos distribuciones estadísticas. +* **Pérdida de reconstrucción**, que es la función de pérdida que muestra qué tan cerca está una imagen reconstruida del objetivo (puede ser el Error Cuadrático Medio, o MSE). Es la misma función de pérdida que en los autoencoders normales. +* **Pérdida KL**, que asegura que las distribuciones de las variables latentes se mantengan cercanas a una distribución normal. Se basa en la noción de [divergencia de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained), una métrica para estimar qué tan similares son dos distribuciones estadísticas. -Una ventaja importante de los VAEs es que nos permiten generar nuevas imágenes de manera relativamente sencilla, porque sabemos de qué distribución muestrear vectores latentes. Por ejemplo, si entrenamos un VAE con un vector latente 2D en MNIST, podemos variar los componentes del vector latente para obtener diferentes dígitos: +Una ventaja importante de los VAEs es que nos permiten generar nuevas imágenes con relativa facilidad, porque sabemos de qué distribución muestrear los vectores latentes. Por ejemplo, si entrenamos un VAE con un vector latente 2D en MNIST, podemos variar los componentes del vector latente para obtener diferentes dígitos: vaemnist -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) Observa cómo las imágenes se mezclan entre sí, a medida que comenzamos a obtener vectores latentes de diferentes porciones del espacio de parámetros latentes. También podemos visualizar este espacio en 2D: vaemnist cluster -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) ## ✍️ Ejercicios: Autoencoders -Aprende más sobre autoencoders en estos cuadernos correspondientes: +Aprende más sobre autoencoders en estos notebooks correspondientes: * [Autoencoders en TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) * [Autoencoders en PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) ## Propiedades de los Autoencoders -* **Específicos para datos** - solo funcionan bien con el tipo de imágenes con las que han sido entrenados. Por ejemplo, si entrenamos una red de super-resolución en flores, no funcionará bien en retratos. Esto se debe a que la red puede producir una imagen de mayor resolución al tomar detalles finos de las características aprendidas del conjunto de datos de entrenamiento. -* **Con pérdida** - la imagen reconstruida no es la misma que la imagen original. La naturaleza de la pérdida está definida por la *función de pérdida* utilizada durante el entrenamiento. +* **Específicos de los datos** - solo funcionan bien con el tipo de imágenes con las que han sido entrenados. Por ejemplo, si entrenamos una red de superresolución en flores, no funcionará bien en retratos. Esto se debe a que la red puede producir imágenes de mayor resolución tomando detalles finos de las características aprendidas del conjunto de datos de entrenamiento. +* **Con pérdida** - la imagen reconstruida no es igual a la imagen original. La naturaleza de la pérdida está definida por la *función de pérdida* utilizada durante el entrenamiento. * Funciona con **datos no etiquetados**. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## Conclusión @@ -79,22 +88,22 @@ En esta lección, aprendiste sobre los diversos tipos de autoencoders disponible ## 🚀 Desafío -En esta lección, aprendiste sobre el uso de autoencoders para imágenes. ¡Pero también se pueden usar para música! Consulta el proyecto [MusicVAE](https://magenta.tensorflow.org/music-vae) del proyecto Magenta, que utiliza autoencoders para aprender a reconstruir música. Realiza algunos [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con esta biblioteca para ver qué puedes crear. +En esta lección, aprendiste sobre el uso de autoencoders para imágenes. ¡Pero también pueden usarse para música! Explora el proyecto [MusicVAE](https://magenta.tensorflow.org/music-vae) del proyecto Magenta, que utiliza autoencoders para aprender a reconstruir música. Realiza algunos [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con esta biblioteca para ver qué puedes crear. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Revisión y Autoestudio Para referencia, lee más sobre autoencoders en estos recursos: * [Construyendo Autoencoders en Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -* [Artículo del blog en NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Artículo en NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) * [Autoencoders Variacionales Explicados](https://kvfrans.com/variational-autoencoders-explained/) * [Autoencoders Variacionales Condicionales](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) -## Asignación +## Tarea -Al final de [este cuaderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrarás una 'tarea': utiliza esto como tu asignación. +Al final de [este notebook usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrarás una 'tarea': úsala como tu asignación. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/10-GANs/README.md b/translations/es/lessons/4-ComputerVision/10-GANs/README.md index efc59bf4..59aa67e5 100644 --- a/translations/es/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/es/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ + # Redes Generativas Antagónicas -En la sección anterior, aprendimos sobre **modelos generativos**: modelos que pueden generar nuevas imágenes similares a las del conjunto de datos de entrenamiento. VAE fue un buen ejemplo de un modelo generativo. +En la sección anterior, aprendimos sobre los **modelos generativos**: modelos que pueden generar nuevas imágenes similares a las del conjunto de datos de entrenamiento. VAE fue un buen ejemplo de un modelo generativo. ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Sin embargo, si intentamos generar algo realmente significativo, como una pintura en una resolución razonable, con VAE, veremos que el entrenamiento no converge bien. Para este caso de uso, debemos aprender sobre otra arquitectura específicamente diseñada para modelos generativos: **Redes Generativas Antagónicas**, o GANs. +Sin embargo, si intentamos generar algo realmente significativo, como una pintura con una resolución razonable, usando VAE, veremos que el entrenamiento no converge bien. Para este caso de uso, debemos aprender sobre otra arquitectura específicamente orientada a modelos generativos: las **Redes Generativas Antagónicas**, o GANs. -La idea principal de una GAN es tener dos redes neuronales que se entrenan entre sí: +La idea principal de una GAN es tener dos redes neuronales que se entrenan una contra la otra: -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) > ✅ Un poco de vocabulario: -> * **Generador** es una red que toma un vector aleatorio y produce la imagen como resultado. -> * **Discriminador** es una red que toma una imagen y debe decir si es una imagen real (del conjunto de datos de entrenamiento) o fue generada por un generador. Es esencialmente un clasificador de imágenes. +> * **Generador** es una red que toma un vector aleatorio y produce una imagen como resultado. +> * **Discriminador** es una red que toma una imagen y debe determinar si es una imagen real (del conjunto de datos de entrenamiento) o si fue generada por un generador. Es esencialmente un clasificador de imágenes. ### Discriminador -La arquitectura del discriminador no difiere de una red de clasificación de imágenes ordinaria. En el caso más simple, puede ser un clasificador totalmente conectado, pero lo más probable es que sea una [red convolucional](../07-ConvNets/README.md). +La arquitectura del discriminador no difiere de una red de clasificación de imágenes ordinaria. En el caso más simple, puede ser un clasificador completamente conectado, pero lo más probable es que sea una [red convolucional](../07-ConvNets/README.md). > ✅ Una GAN basada en redes convolucionales se llama [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) -Un discriminador CNN consta de las siguientes capas: varias convoluciones + agrupamientos (con tamaño espacial decreciente) y, una o más capas totalmente conectadas para obtener el "vector de características", el clasificador binario final. +Un discriminador CNN consta de las siguientes capas: varias convoluciones+poolings (con tamaño espacial decreciente) y una o más capas completamente conectadas para obtener un "vector de características", clasificador binario final. -> ✅ Un 'agrupamiento' en este contexto es una técnica que reduce el tamaño de la imagen. "Las capas de agrupamiento reducen las dimensiones de los datos combinando las salidas de grupos de neuronas en una capa en una sola neurona en la siguiente capa." - [fuente](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ Un 'pooling' en este contexto es una técnica que reduce el tamaño de la imagen. "Las capas de pooling reducen las dimensiones de los datos combinando las salidas de los grupos de neuronas en una capa en una sola neurona en la siguiente capa." - [fuente](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### Generador -Un generador es un poco más complicado. Se puede considerar como un discriminador invertido. Comenzando desde un vector latente (en lugar de un vector de características), tiene una capa totalmente conectada para convertirlo en el tamaño/forma requeridos, seguida de deconvoluciones + aumento de escala. Esto es similar a la parte de *decodificador* de un [autoencoder](../09-Autoencoders/README.md). +Un generador es un poco más complicado. Puedes considerarlo como un discriminador invertido. Comenzando desde un vector latente (en lugar de un vector de características), tiene una capa completamente conectada para convertirlo en el tamaño/forma requerida, seguida de deconvoluciones+escalado. Esto es similar a la parte de *decodificador* de un [autoencoder](../09-Autoencoders/README.md). -> ✅ Dado que la capa de convolución se implementa como un filtro lineal que recorre la imagen, la deconvolución es esencialmente similar a la convolución y puede implementarse utilizando la misma lógica de capa. +> ✅ Debido a que la capa de convolución se implementa como un filtro lineal que recorre la imagen, la deconvolución es esencialmente similar a la convolución y puede implementarse utilizando la misma lógica de capa. -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Imagen por [Dmitry Soshnikov](http://soshnikov.com) -### Entrenando la GAN +### Entrenamiento de la GAN -Las GAN se llaman **antagónicas** porque hay una competencia constante entre el generador y el discriminador. Durante esta competencia, tanto el generador como el discriminador mejoran, por lo que la red aprende a producir imágenes cada vez mejores. +Las GANs se llaman **antagónicas** porque hay una competencia constante entre el generador y el discriminador. Durante esta competencia, tanto el generador como el discriminador mejoran, y la red aprende a producir imágenes cada vez mejores. El entrenamiento ocurre en dos etapas: -* **Entrenando al discriminador**. Esta tarea es bastante directa: generamos un lote de imágenes con el generador, etiquetándolas como 0, que representa una imagen falsa, y tomamos un lote de imágenes del conjunto de datos de entrada (con etiqueta 1, imagen real). Obtenemos una *pérdida del discriminador* y realizamos retropropagación. -* **Entrenando al generador**. Esto es un poco más complicado, porque no conocemos la salida esperada para el generador directamente. Tomamos toda la red GAN compuesta por un generador seguido de un discriminador, le proporcionamos algunos vectores aleatorios y esperamos que el resultado sea 1 (correspondiente a imágenes reales). Luego congelamos los parámetros del discriminador (no queremos que se entrene en este paso) y realizamos la retropropagación. +* **Entrenamiento del discriminador**. Esta tarea es bastante sencilla: generamos un lote de imágenes con el generador, etiquetándolas como 0, lo que significa imagen falsa, y tomamos un lote de imágenes del conjunto de datos de entrada (con etiqueta 1, imagen real). Obtenemos una *pérdida del discriminador* y realizamos retropropagación. +* **Entrenamiento del generador**. Esto es un poco más complicado porque no conocemos directamente la salida esperada para el generador. Tomamos toda la red GAN que consiste en un generador seguido por un discriminador, la alimentamos con algunos vectores aleatorios y esperamos que el resultado sea 1 (correspondiente a imágenes reales). Luego congelamos los parámetros del discriminador (no queremos que se entrene en este paso) y realizamos la retropropagación. Durante este proceso, las pérdidas tanto del generador como del discriminador no disminuyen significativamente. En la situación ideal, deberían oscilar, lo que corresponde a que ambas redes mejoran su rendimiento. ## ✍️ Ejercicios: GANs -* [Cuaderno GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [Cuaderno GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [Notebook de GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook de GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### Problemas con el entrenamiento de GAN +### Problemas con el entrenamiento de GANs -Se sabe que las GAN son especialmente difíciles de entrenar. Aquí hay algunos problemas: +Las GANs son conocidas por ser especialmente difíciles de entrenar. Aquí hay algunos problemas: -* **Colapso de modo**. Por este término nos referimos a que el generador aprende a producir una imagen exitosa que engaña al discriminador, y no una variedad de imágenes diferentes. -* **Sensibilidad a los hiperparámetros**. A menudo se puede ver que una GAN no converge en absoluto, y luego, de repente, disminuye en la tasa de aprendizaje, lo que lleva a la convergencia. -* Mantener un **equilibrio** entre el generador y el discriminador. En muchos casos, la pérdida del discriminador puede caer a cero relativamente rápido, lo que resulta en que el generador no puede entrenar más. Para superar esto, podemos intentar establecer diferentes tasas de aprendizaje para el generador y el discriminador, o saltar el entrenamiento del discriminador si la pérdida ya es demasiado baja. -* Entrenamiento para **alta resolución**. Reflejando el mismo problema que con los autoencoders, este problema se activa porque reconstruir demasiadas capas de una red convolucional conduce a artefactos. Este problema se resuelve típicamente con el llamado **crecimiento progresivo**, cuando primero se entrenan algunas capas en imágenes de baja resolución y luego se "desbloquean" o añaden capas. Otra solución sería agregar conexiones adicionales entre capas y entrenar varias resoluciones a la vez; consulte este [artículo sobre GANs de Gradiente Multi-escala](https://arxiv.org/abs/1903.06048) para más detalles. +* **Colapso de modo**. Este término se refiere a que el generador aprende a producir una imagen exitosa que engaña al discriminador, pero no una variedad de imágenes diferentes. +* **Sensibilidad a los hiperparámetros**. A menudo puedes ver que una GAN no converge en absoluto, y luego, de repente, una disminución en la tasa de aprendizaje lleva a la convergencia. +* Mantener un **equilibrio** entre el generador y el discriminador. En muchos casos, la pérdida del discriminador puede caer a cero relativamente rápido, lo que resulta en que el generador no pueda entrenarse más. Para superar esto, podemos intentar establecer diferentes tasas de aprendizaje para el generador y el discriminador, o saltar el entrenamiento del discriminador si la pérdida ya es demasiado baja. +* Entrenamiento para **alta resolución**. Reflejando el mismo problema que con los autoencoders, este problema se desencadena porque reconstruir demasiadas capas de una red convolucional lleva a artefactos. Este problema se resuelve típicamente con el llamado **crecimiento progresivo**, donde primero se entrenan algunas capas con imágenes de baja resolución y luego se "desbloquean" o se agregan capas. Otra solución sería agregar conexiones adicionales entre capas y entrenar varias resoluciones a la vez; consulta este artículo [Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) para más detalles. -## Transferencia de Estilo +## Transferencia de estilo -Las GAN son una excelente manera de generar imágenes artísticas. Otra técnica interesante es la llamada **transferencia de estilo**, que toma una **imagen de contenido** y la vuelve a dibujar en un estilo diferente, aplicando filtros de la **imagen de estilo**. +Las GANs son una excelente manera de generar imágenes artísticas. Otra técnica interesante es la llamada **transferencia de estilo**, que toma una **imagen de contenido** y la redibuja en un estilo diferente, aplicando filtros de una **imagen de estilo**. -La forma en que funciona es la siguiente: -* Comenzamos con una imagen de ruido aleatorio (o con una imagen de contenido, pero para fines de comprensión es más fácil comenzar desde ruido aleatorio). -* Nuestro objetivo sería crear una imagen que esté cerca tanto de la imagen de contenido como de la imagen de estilo. Esto se determinaría mediante dos funciones de pérdida: +El funcionamiento es el siguiente: +* Comenzamos con una imagen de ruido aleatorio (o con una imagen de contenido, pero para entenderlo es más fácil comenzar con ruido aleatorio). +* Nuestro objetivo sería crear una imagen que esté cerca tanto de la imagen de contenido como de la imagen de estilo. Esto se determinará mediante dos funciones de pérdida: - **Pérdida de contenido** se calcula en función de las características extraídas por la CNN en algunas capas de la imagen actual y la imagen de contenido. - - **Pérdida de estilo** se calcula entre la imagen actual y la imagen de estilo de una manera inteligente utilizando matrices de Gram (más detalles en el [cuaderno de ejemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). + - **Pérdida de estilo** se calcula entre la imagen actual y la imagen de estilo de una manera ingeniosa utilizando matrices de Gram (más detalles en el [notebook de ejemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). * Para hacer la imagen más suave y eliminar el ruido, también introducimos **pérdida de variación**, que calcula la distancia promedio entre píxeles vecinos. -* El bucle de optimización principal ajusta la imagen actual utilizando descenso de gradiente (o algún otro algoritmo de optimización) para minimizar la pérdida total, que es una suma ponderada de las tres pérdidas. +* El bucle principal de optimización ajusta la imagen actual utilizando descenso de gradiente (u otro algoritmo de optimización) para minimizar la pérdida total, que es una suma ponderada de todas las pérdidas. -## ✍️ Ejemplo: [Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ Ejemplo: [Transferencia de estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## Conclusión -En esta lección, aprendiste sobre las GAN y cómo entrenarlas. También aprendiste sobre los desafíos especiales que este tipo de red neuronal puede enfrentar y algunas estrategias sobre cómo superarlos. +En esta lección, aprendiste sobre las GANs y cómo entrenarlas. También aprendiste sobre los desafíos especiales que este tipo de red neuronal puede enfrentar y algunas estrategias para superarlos. ## 🚀 Desafío -Ejecuta el [cuaderno de Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) utilizando tus propias imágenes. +Ejecuta el [notebook de transferencia de estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) usando tus propias imágenes. -## Revisión y Autoestudio +## Revisión y autoestudio -Para referencia, lee más sobre las GAN en estos recursos: +Para referencia, lee más sobre GANs en estos recursos: -* Marco Pasini, [10 Lecciones que Aprendí Entrenando GANs durante un Año](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), una arquitectura GAN *de facto* a considerar -* [Creando Arte Generativo usando GANs en Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) +* Marco Pasini, [10 Lecciones que aprendí entrenando GANs durante un año](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), una arquitectura GAN *de facto* a considerar. +* [Creando arte generativo usando GANs en Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) ## Tarea -Revisita uno de los dos cuadernos asociados a esta lección y vuelve a entrenar la GAN con tus propias imágenes. ¿Qué puedes crear? +Revisita uno de los dos notebooks asociados a esta lección y vuelve a entrenar la GAN con tus propias imágenes. ¿Qué puedes crear? **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md index 0b193272..b128adb6 100644 --- a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,20 +1,157 @@ -### YOLO - Solo Miras Una Vez + +# Detección de Objetos -YOLO es un algoritmo en tiempo real de un solo pase. La idea principal es la siguiente: +Los modelos de clasificación de imágenes que hemos visto hasta ahora toman una imagen y producen un resultado categórico, como la clase 'número' en un problema de MNIST. Sin embargo, en muchos casos no solo queremos saber que una imagen contiene objetos, sino que también queremos determinar su ubicación precisa. Esto es exactamente el objetivo de la **detección de objetos**. -* La imagen se divide en regiones de $S\times S$. -* Para cada región, **CNN** predice $n$ posibles objetos, las coordenadas del *bounding box* y *confianza* = *probabilidad* * IoU. +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.es.png) -> Imagen del [documento oficial](https://arxiv.org/abs/1506.02640) +![Detección de Objetos](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) + +> Imagen de [sitio web de YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Un Enfoque Ingenuo para la Detección de Objetos + +Supongamos que queremos encontrar un gato en una imagen. Un enfoque muy ingenuo para la detección de objetos sería el siguiente: + +1. Dividir la imagen en varias secciones o mosaicos. +2. Ejecutar un modelo de clasificación de imágenes en cada mosaico. +3. Aquellos mosaicos que resulten en una activación suficientemente alta pueden considerarse como que contienen el objeto en cuestión. + +![Detección Ingenua](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) + +> *Imagen del [Cuaderno de Ejercicios](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Sin embargo, este enfoque está lejos de ser ideal, ya que solo permite al algoritmo localizar la caja delimitadora del objeto de manera muy imprecisa. Para una ubicación más precisa, necesitamos ejecutar algún tipo de **regresión** para predecir las coordenadas de las cajas delimitadoras, y para ello necesitamos conjuntos de datos específicos. + +## Regresión para la Detección de Objetos + +[Esta publicación de blog](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ofrece una excelente introducción a la detección de formas. + +## Conjuntos de Datos para la Detección de Objetos + +Es posible que encuentres los siguientes conjuntos de datos para esta tarea: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 clases +* [COCO](http://cocodataset.org/#home) - Objetos Comunes en Contexto. 80 clases, cajas delimitadoras y máscaras de segmentación + +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) + +## Métricas de Detección de Objetos + +### Intersección sobre Unión + +Mientras que para la clasificación de imágenes es fácil medir qué tan bien funciona el algoritmo, para la detección de objetos necesitamos medir tanto la corrección de la clase como la precisión de la ubicación inferida de la caja delimitadora. Para esto último, usamos la llamada **Intersección sobre Unión** (IoU), que mide qué tan bien se superponen dos cajas (o dos áreas arbitrarias). + +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) + +> *Figura 2 de [esta excelente publicación sobre IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +La idea es simple: dividimos el área de intersección entre dos figuras por el área de su unión. Para dos áreas idénticas, IoU sería 1, mientras que para áreas completamente disjuntas será 0. En otros casos, variará entre 0 y 1. Normalmente solo consideramos aquellas cajas delimitadoras para las que IoU supera un cierto valor. + +### Precisión Promedio + +Supongamos que queremos medir qué tan bien se reconoce una clase de objetos $C$ dada. Para medirlo, usamos la métrica de **Precisión Promedio**, que se calcula de la siguiente manera: + +1. Consideramos la curva de Precisión-Recall, que muestra la precisión dependiendo de un valor umbral de detección (de 0 a 1). +2. Dependiendo del umbral, obtendremos más o menos objetos detectados en la imagen, y diferentes valores de precisión y recall. +3. La curva se verá así: + + + +> *Imagen de [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +La Precisión Promedio para una clase $C$ dada es el área bajo esta curva. Más precisamente, el eje de Recall se divide típicamente en 10 partes, y la Precisión se promedia en todos esos puntos: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP e IoU + +Solo consideraremos aquellas detecciones para las que IoU esté por encima de un cierto valor. Por ejemplo, en el conjunto de datos PASCAL VOC típicamente se asume $\mbox{IoU Threshold} = 0.5$, mientras que en COCO AP se mide para diferentes valores de $\mbox{IoU Threshold}$. + + + +> *Imagen de [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Precisión Promedio Media - mAP + +La métrica principal para la Detección de Objetos se llama **Precisión Promedio Media**, o **mAP**. Es el valor de la Precisión Promedio, promediado entre todas las clases de objetos, y a veces también sobre $\mbox{IoU Threshold}$. El proceso de cálculo de **mAP** se describe en detalle +[en esta publicación de blog](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3), y también [aquí con ejemplos de código](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Diferentes Enfoques para la Detección de Objetos + +Existen dos grandes clases de algoritmos de detección de objetos: + +* **Redes de Propuesta de Regiones** (R-CNN, Fast R-CNN, Faster R-CNN). La idea principal es generar **Regiones de Interés** (ROI) y ejecutar una CNN sobre ellas, buscando la activación máxima. Es un poco similar al enfoque ingenuo, con la excepción de que las ROI se generan de una manera más inteligente. Una de las principales desventajas de estos métodos es que son lentos, ya que se necesitan muchos pases del clasificador CNN sobre la imagen. +* Métodos de **una sola pasada** (YOLO, SSD, RetinaNet). En estas arquitecturas diseñamos la red para predecir tanto las clases como las ROI en un solo pase. + +### R-CNN: CNN Basada en Regiones + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) utiliza [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) para generar una estructura jerárquica de regiones ROI, que luego se pasan por extractores de características CNN y clasificadores SVM para determinar la clase del objeto, y regresión lineal para determinar las coordenadas de la *caja delimitadora*. [Artículo oficial](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) + +> *Imagen de van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) + +> *Imágenes de [este blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Este enfoque es similar a R-CNN, pero las regiones se definen después de que se han aplicado las capas de convolución. + +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) + +> Imagen del [Artículo Oficial](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +La idea principal de este enfoque es usar una red neuronal para predecir las ROI, la llamada *Red de Propuesta de Regiones*. [Artículo](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) + +> Imagen del [artículo oficial](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Red Completamente Convolucional Basada en Regiones + +Este algoritmo es incluso más rápido que Faster R-CNN. La idea principal es la siguiente: + +1. Extraemos características usando ResNet-101. +2. Las características se procesan mediante un **Mapa de Puntuación Sensible a la Posición**. Cada objeto de las clases $C$ se divide en regiones de $k\times k$, y entrenamos para predecir partes de los objetos. +3. Para cada parte de las regiones $k\times k$, todas las redes votan por las clases de objetos, y se selecciona la clase de objeto con el máximo voto. + +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) + +> Imagen del [artículo oficial](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO es un algoritmo de una sola pasada en tiempo real. La idea principal es la siguiente: + + * La imagen se divide en regiones de $S\times S$. + * Para cada región, **CNN** predice $n$ posibles objetos, las coordenadas de la *caja delimitadora* y la *confianza* = *probabilidad* * IoU. + + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) + +> Imagen del [artículo oficial](https://arxiv.org/abs/1506.02640) ### Otros Algoritmos -* RetinaNet: [documento oficial](https://arxiv.org/abs/1708.02002) +* RetinaNet: [artículo oficial](https://arxiv.org/abs/1708.02002) - [Implementación en PyTorch en Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - [Implementación en Keras](https://github.com/fizyr/keras-retinanet) - - [Detección de Objetos con RetinaNet](https://keras.io/examples/vision/retinanet/) en Keras Samples -* SSD (Detector de Un Solo Disparo): [documento oficial](https://arxiv.org/abs/1512.02325) + - [Detección de Objetos con RetinaNet](https://keras.io/examples/vision/retinanet/) en ejemplos de Keras +* SSD (Single Shot Detector): [artículo oficial](https://arxiv.org/abs/1512.02325) ## ✍️ Ejercicios: Detección de Objetos @@ -24,28 +161,28 @@ Continúa tu aprendizaje en el siguiente cuaderno: ## Conclusión -En esta lección hiciste un recorrido rápido por las diversas maneras en que se puede llevar a cabo la detección de objetos. +En esta lección hiciste un recorrido rápido por las diversas formas en que se puede lograr la detección de objetos. ## 🚀 Desafío -Lee estos artículos y cuadernos sobre YOLO y pruébalos tú mismo. +Lee estos artículos y cuadernos sobre YOLO y pruébalos por ti mismo: -* [Buen artículo de blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) que describe YOLO +* [Buen artículo](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) que describe YOLO * [Sitio oficial](https://pjreddie.com/darknet/yolo/) - * Yolo: [implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo: [Implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) ## Revisión y Autoestudio * [Detección de Objetos](https://tjmachinelearning.com/lectures/1718/obj/) por Nikhil Sardana * [Una buena comparación de algoritmos de detección de objetos](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Revisión de Algoritmos de Aprendizaje Profundo para Detección de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [Una Introducción Paso a Paso a los Algoritmos Básicos de Detección de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Implementación de Faster R-CNN en Python para Detección de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Revisión de Algoritmos de Aprendizaje Profundo para la Detección de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Introducción paso a paso a los algoritmos básicos de detección de objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementación de Faster R-CNN en Python para la Detección de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) ## [Asignación: Detección de Objetos](lab/README.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index 0a61aeea..7d388401 100644 --- a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Detección de Cabezas usando el Conjunto de Datos de Hollywood + +# Detección de Cabezas usando el Conjunto de Datos Hollywood Heads -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -Contar el número de personas en el flujo de cámaras de vigilancia es una tarea importante que nos permitirá estimar el número de visitantes en tiendas, horas pico en un restaurante, etc. Para resolver esta tarea, necesitamos ser capaces de detectar cabezas humanas desde diferentes ángulos. Para entrenar un modelo de detección de objetos que detecte cabezas humanas, podemos utilizar el [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/). +Contar el número de personas en la transmisión de una cámara de vigilancia es una tarea importante que nos permite estimar el número de visitantes en tiendas, las horas pico en un restaurante, etc. Para resolver esta tarea, necesitamos ser capaces de detectar cabezas humanas desde diferentes ángulos. Para entrenar un modelo de detección de objetos que detecte cabezas humanas, podemos usar el [Conjunto de Datos Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). ## El Conjunto de Datos -El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369,846 cabezas humanas anotadas en 224,740 fotogramas de películas de Hollywood. Se proporciona en formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), donde para cada imagen también hay un archivo de descripción XML que se ve así: +El [Conjunto de Datos Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369,846 cabezas humanas anotadas en 224,740 fotogramas de películas de Hollywood. Se proporciona en formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), donde para cada imagen también hay un archivo de descripción XML que se ve así: ```xml @@ -48,19 +57,19 @@ El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headde ``` -En este conjunto de datos, solo hay una clase de objetos `head`, y para cada cabeza, obtienes las coordenadas de la caja delimitadora. Puedes analizar XML usando bibliotecas de Python, o usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para trabajar directamente con el formato PASCAL VOC. +En este conjunto de datos, solo hay una clase de objetos `head`, y para cada cabeza se obtienen las coordenadas del cuadro delimitador. Puedes analizar los archivos XML usando bibliotecas de Python, o usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para trabajar directamente con el formato PASCAL VOC. ## Entrenamiento de Detección de Objetos -Puedes entrenar un modelo de detección de objetos usando una de las siguientes maneras: +Puedes entrenar un modelo de detección de objetos usando una de las siguientes opciones: -* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) y su API de Python para entrenar programáticamente el modelo en la nube. La visión personalizada no podrá usar más de unas pocas centenas de imágenes para entrenar el modelo, por lo que es posible que necesites limitar el conjunto de datos. -* Usando el ejemplo del [tutorial de Keras](https://keras.io/examples/vision/retinanet/) para entrenar el modelo RetinaNet. +* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) y su API de Python para entrenar el modelo programáticamente en la nube. Custom Vision no podrá usar más de unos pocos cientos de imágenes para entrenar el modelo, por lo que puede ser necesario limitar el conjunto de datos. +* Usando el ejemplo del [tutorial de Keras](https://keras.io/examples/vision/retinanet/) para entrenar el modelo RetunaNet. * Usando el módulo integrado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) en torchvision. ## Conclusión -La detección de objetos es una tarea que se requiere con frecuencia en la industria. Aunque hay algunos servicios que se pueden utilizar para realizar la detección de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), es importante entender cómo funciona la detección de objetos y poder entrenar tus propios modelos. +La detección de objetos es una tarea que se requiere con frecuencia en la industria. Aunque existen algunos servicios que se pueden usar para realizar detección de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), es importante entender cómo funciona la detección de objetos y ser capaz de entrenar tus propios modelos. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md index 0b588034..a65d6b63 100644 --- a/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,36 +1,45 @@ + # Segmentación -Anteriormente aprendimos sobre la Detección de Objetos, que nos permite localizar objetos en la imagen prediciendo sus *cajas delimitadoras*. Sin embargo, para algunas tareas no solo necesitamos cajas delimitadoras, sino también una localización de objetos más precisa. Esta tarea se llama **segmentación**. +Anteriormente hemos aprendido sobre la Detección de Objetos, que nos permite localizar objetos en una imagen prediciendo sus *cajas delimitadoras*. Sin embargo, para algunas tareas no solo necesitamos cajas delimitadoras, sino también una localización más precisa de los objetos. Esta tarea se llama **segmentación**. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -La segmentación se puede ver como **clasificación de píxeles**, donde para **cada** píxel de la imagen debemos predecir su clase (*fondo* siendo una de las clases). Hay dos algoritmos principales de segmentación: +La segmentación puede considerarse como **clasificación de píxeles**, donde para **cada** píxel de la imagen debemos predecir su clase (*fondo* siendo una de las clases). Existen dos principales algoritmos de segmentación: -* **Segmentación semántica** solo indica la clase del píxel y no hace distinción entre diferentes objetos de la misma clase. -* **Segmentación por instancias** divide las clases en diferentes instancias. +* **Segmentación semántica** solo indica la clase del píxel, y no distingue entre diferentes objetos de la misma clase. +* **Segmentación por instancia** divide las clases en diferentes instancias. -Por ejemplo, en la segmentación por instancias, estas ovejas son objetos diferentes, pero para la segmentación semántica todas las ovejas se representan con una sola clase. +En la segmentación por instancia, estas ovejas son objetos diferentes, pero en la segmentación semántica todas las ovejas están representadas por una sola clase. -> Imagen de [este blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) +> Imagen de [esta publicación de blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Existen diferentes arquitecturas neuronales para la segmentación, pero todas tienen la misma estructura. De alguna manera, es similar al autoencoder que aprendiste anteriormente, pero en lugar de descomponer la imagen original, nuestro objetivo es descomponer una **máscara**. Así, una red de segmentación tiene las siguientes partes: +Existen diferentes arquitecturas neuronales para la segmentación, pero todas tienen la misma estructura. De cierta manera, es similar al autoencoder que aprendiste anteriormente, pero en lugar de descomponer la imagen original, nuestro objetivo es descomponer una **máscara**. Por lo tanto, una red de segmentación tiene las siguientes partes: -* **Encoder** extrae características de la imagen de entrada. -* **Decoder** transforma esas características en la **imagen de máscara**, con el mismo tamaño y número de canales correspondiente al número de clases. +* **Codificador** extrae características de la imagen de entrada. +* **Decodificador** transforma esas características en la **imagen de máscara**, con el mismo tamaño y número de canales correspondientes al número de clases. > Imagen de [esta publicación](https://arxiv.org/pdf/2001.05566.pdf) -Debemos mencionar especialmente la función de pérdida que se utiliza para la segmentación. Al usar autoencoders clásicos, necesitamos medir la similitud entre dos imágenes, y podemos usar el error cuadrático medio (MSE) para hacerlo. En la segmentación, cada píxel en la imagen de máscara objetivo representa el número de clase (codificado en one-hot a lo largo de la tercera dimensión), por lo que necesitamos usar funciones de pérdida específicas para la clasificación: pérdida de entropía cruzada, promediada sobre todos los píxeles. Si la máscara es binaria, se utiliza **pérdida de entropía cruzada binaria** (BCE). +Debemos mencionar especialmente la función de pérdida que se utiliza para la segmentación. Al usar autoencoders clásicos, necesitamos medir la similitud entre dos imágenes, y podemos usar el error cuadrático medio (MSE) para hacerlo. En la segmentación, cada píxel en la imagen de máscara objetivo representa el número de clase (codificado en formato one-hot a lo largo de la tercera dimensión), por lo que necesitamos usar funciones de pérdida específicas para clasificación: pérdida de entropía cruzada, promediada sobre todos los píxeles. Si la máscara es binaria, se utiliza la **pérdida de entropía cruzada binaria** (BCE). -> ✅ La codificación one-hot es una forma de codificar una etiqueta de clase en un vector de longitud igual al número de clases. Echa un vistazo a [este artículo](https://datagy.io/sklearn-one-hot-encode/) sobre esta técnica. +> ✅ La codificación one-hot es una forma de codificar una etiqueta de clase en un vector de longitud igual al número de clases. Consulta [este artículo](https://datagy.io/sklearn-one-hot-encode/) sobre esta técnica. ## Segmentación para Imágenes Médicas -En esta lección, veremos la segmentación en acción entrenando la red para reconocer nevos humanos (también conocidos como lunares) en imágenes médicas. Usaremos la Base de Datos PH2 de imágenes de dermatoscopia como fuente de imágenes. Este conjunto de datos contiene 200 imágenes de tres clases: nevo típico, nevo atípico y melanoma. Todas las imágenes también contienen una **máscara** correspondiente que delimita el nevo. +En esta lección, veremos la segmentación en acción entrenando una red para reconocer nevos humanos (también conocidos como lunares) en imágenes médicas. Utilizaremos la Base de Datos PH2 de imágenes de dermoscopía como fuente de imágenes. Este conjunto de datos contiene 200 imágenes de tres clases: nevo típico, nevo atípico y melanoma. Todas las imágenes también contienen una **máscara** correspondiente que delimita el nevo. > ✅ Esta técnica es particularmente adecuada para este tipo de imágenes médicas, pero ¿qué otras aplicaciones del mundo real podrías imaginar? @@ -42,12 +51,12 @@ Entrenaremos un modelo para segmentar cualquier nevo de su fondo. ## ✍️ Ejercicios: Segmentación Semántica -Abre los cuadernos a continuación para aprender más sobre diferentes arquitecturas de segmentación semántica, practicar con ellas y verlas en acción. +Abre los siguientes notebooks para aprender más sobre diferentes arquitecturas de segmentación semántica, practicar con ellas y verlas en acción. * [Segmentación Semántica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) * [Segmentación Semántica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## Conclusión @@ -55,15 +64,15 @@ La segmentación es una técnica muy poderosa para la clasificación de imágene ## 🚀 Desafío -La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Prueba la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se puede utilizar la detección de poses. +La segmentación corporal es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Prueba la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se puede utilizar la detección de poses. ## Revisión y Autoestudio -Este [artículo de Wikipedia](https://wikipedia.org/wiki/Image_segmentation) ofrece una buena visión general de las diversas aplicaciones de esta técnica. Aprende más por tu cuenta sobre los subdominios de la segmentación por instancias y la segmentación panóptica en este campo de estudio. +Este [artículo de Wikipedia](https://wikipedia.org/wiki/Image_segmentation) ofrece una buena visión general de las diversas aplicaciones de esta técnica. Aprende más por tu cuenta sobre los subdominios de la segmentación por instancia y la segmentación panóptica en este campo de investigación. -## [Tarea](lab/README.md) +## [Asignación](lab/README.md) -En este laboratorio, intenta **segmentación del cuerpo humano** utilizando el [Conjunto de Datos de Segmentación del Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. +En este laboratorio, intenta la **segmentación del cuerpo humano** utilizando el [Conjunto de Datos de Segmentación Corporal Completa MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 62a6c157..e619b48e 100644 --- a/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ + # Segmentación del Cuerpo Humano -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -En la producción de video, por ejemplo, en pronósticos del tiempo, a menudo necesitamos recortar una imagen humana de la cámara y colocarla sobre otro metraje. Esto se hace típicamente utilizando técnicas de **chroma key**, cuando una persona es filmada frente a un fondo de color uniforme, que luego se elimina. En este laboratorio, entrenaremos un modelo de red neuronal para recortar la silueta humana. +En la producción de video, por ejemplo, en los pronósticos del tiempo, a menudo necesitamos recortar la imagen de una persona capturada por la cámara y colocarla sobre otro metraje. Esto se realiza típicamente utilizando técnicas de **chroma key**, donde se graba a una persona frente a un fondo de color uniforme, que luego se elimina. En este laboratorio, entrenaremos un modelo de red neuronal para recortar la silueta humana. ## El Conjunto de Datos -Usaremos el [Conjunto de Datos de Segmentación de Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Descarga el conjunto de datos manualmente desde Kaggle. +Utilizaremos el [Conjunto de Datos de Segmentación de Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Descarga el conjunto de datos manualmente desde Kaggle. -## Iniciando el Notebook +## Cuaderno Inicial Comienza el laboratorio abriendo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) ## Conclusión -La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen **detección de esqueletos** y **detección de poses**. Consulta la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se pueden implementar esas tareas. +La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Consulta la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se pueden implementar estas tareas. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/README.md b/translations/es/lessons/4-ComputerVision/README.md index 69e45bc6..330e8c10 100644 --- a/translations/es/lessons/4-ComputerVision/README.md +++ b/translations/es/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ + # Visión por Computadora -![Resumen del contenido de Visión por Computadora en un doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.es.png) +![Resumen del contenido de Visión por Computadora en un dibujo](../../../../lessons/sketchnotes/ai-computervision.png) En esta sección aprenderemos sobre: * [Introducción a la Visión por Computadora y OpenCV](06-IntroCV/README.md) * [Redes Neuronales Convolucionales](07-ConvNets/README.md) -* [Redes Preentrenadas y Aprendizaje por Transferencia](08-TransferLearning/README.md) +* [Redes Pre-entrenadas y Aprendizaje por Transferencia](08-TransferLearning/README.md) * [Autoencoders](09-Autoencoders/README.md) * [Redes Generativas Antagónicas](10-GANs/README.md) * [Detección de Objetos](11-ObjectDetection/README.md) * [Segmentación Semántica](12-Segmentation/README.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/13-TextRep/README.md b/translations/es/lessons/5-NLP/13-TextRep/README.md index f5ec4add..10b1ef92 100644 --- a/translations/es/lessons/5-NLP/13-TextRep/README.md +++ b/translations/es/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Representación de Texto como Tensores + +# Representación de texto como tensores ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) -## Clasificación de Texto +## Clasificación de texto -A lo largo de la primera parte de esta sección, nos centraremos en la tarea de **clasificación de texto**. Utilizaremos el conjunto de datos [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contiene artículos de noticias como los siguientes: +En la primera parte de esta sección, nos enfocaremos en la tarea de **clasificación de texto**. Utilizaremos el conjunto de datos [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contiene artículos de noticias como el siguiente: -* Categoría: Sci/Tech -* Título: La empresa de Ky. gana una subvención para estudiar péptidos (AP) -* Cuerpo: AP - Una empresa fundada por un investigador en química en la Universidad de Louisville ganó una subvención para desarrollar... +* Categoría: Ciencia/Tecnología +* Título: Empresa de Ky. gana subvención para estudiar péptidos (AP) +* Cuerpo: AP - Una empresa fundada por un investigador de química de la Universidad de Louisville ganó una subvención para desarrollar... -Nuestro objetivo será clasificar el artículo de noticias en una de las categorías basadas en el texto. +Nuestro objetivo será clasificar el artículo de noticias en una de las categorías basándonos en el texto. -## Representación del texto +## Representación de texto -Si queremos resolver tareas de Procesamiento de Lenguaje Natural (NLP) con redes neuronales, necesitamos alguna forma de representar el texto como tensores. Las computadoras ya representan caracteres textuales como números que se asignan a fuentes en tu pantalla utilizando codificaciones como ASCII o UTF-8. +Si queremos resolver tareas de Procesamiento de Lenguaje Natural (NLP) con redes neuronales, necesitamos una forma de representar el texto como tensores. Las computadoras ya representan caracteres textuales como números que se asignan a fuentes en tu pantalla utilizando codificaciones como ASCII o UTF-8. Imagen que muestra un diagrama que mapea un carácter a una representación ASCII y binaria > [Fuente de la imagen](https://www.seobility.net/en/wiki/ASCII) -Como humanos, entendemos lo que cada letra **representa**, y cómo todos los caracteres se combinan para formar las palabras de una oración. Sin embargo, las computadoras por sí solas no tienen tal comprensión, y la red neuronal tiene que aprender el significado durante el entrenamiento. +Como humanos, entendemos lo que cada letra **representa** y cómo todos los caracteres se combinan para formar las palabras de una oración. Sin embargo, las computadoras por sí solas no tienen tal comprensión, y la red neuronal tiene que aprender el significado durante el entrenamiento. -Por lo tanto, podemos usar diferentes enfoques al representar el texto: +Por lo tanto, podemos usar diferentes enfoques al representar texto: -* **Representación a nivel de carácter**, cuando representamos el texto tratando cada carácter como un número. Dado que tenemos *C* caracteres diferentes en nuestro corpus de texto, la palabra *Hola* se representaría mediante un tensor de 5x*C*. Cada letra correspondería a una columna del tensor en codificación one-hot. -* **Representación a nivel de palabra**, en la que creamos un **vocabulario** de todas las palabras en nuestro texto, y luego representamos las palabras utilizando codificación one-hot. Este enfoque es algo mejor, porque cada letra por sí sola no tiene mucho significado, y así, al usar conceptos semánticos de mayor nivel - palabras - simplificamos la tarea para la red neuronal. Sin embargo, dado el gran tamaño del diccionario, necesitamos lidiar con tensores dispersos de alta dimensión. +* **Representación a nivel de caracteres**, cuando representamos el texto tratando cada carácter como un número. Dado que tenemos *C* caracteres diferentes en nuestro corpus de texto, la palabra *Hello* se representaría por un tensor de 5x*C*. Cada letra correspondería a una columna del tensor en codificación one-hot. +* **Representación a nivel de palabras**, en la que creamos un **vocabulario** de todas las palabras en nuestro texto y luego representamos las palabras utilizando codificación one-hot. Este enfoque es algo mejor, porque cada letra por sí sola no tiene mucho significado, y al usar conceptos semánticos de nivel superior - palabras - simplificamos la tarea para la red neuronal. Sin embargo, dado el tamaño del diccionario, necesitamos manejar tensores dispersos de alta dimensión. -Independientemente de la representación, primero necesitamos convertir el texto en una secuencia de **tokens**, donde un token puede ser un carácter, una palabra, o a veces incluso parte de una palabra. Luego, convertimos el token en un número, típicamente usando un **vocabulario**, y este número puede ser alimentado a una red neuronal utilizando codificación one-hot. +Independientemente de la representación, primero necesitamos convertir el texto en una secuencia de **tokens**, siendo un token un carácter, una palabra o, a veces, incluso parte de una palabra. Luego, convertimos el token en un número, típicamente utilizando un **vocabulario**, y este número puede ser alimentado a una red neuronal utilizando codificación one-hot. -## N-Grams +## N-Gramas -En el lenguaje natural, el significado preciso de las palabras solo puede determinarse en contexto. Por ejemplo, los significados de *red neuronal* y *red de pesca* son completamente diferentes. Una de las formas de tener esto en cuenta es construir nuestro modelo sobre pares de palabras, considerando los pares de palabras como tokens de vocabulario separados. De esta manera, la oración *Me gusta ir a pescar* se representará mediante la siguiente secuencia de tokens: *Me gusta*, *gusta ir*, *ir a*, *a pescar*. El problema con este enfoque es que el tamaño del diccionario crece significativamente, y combinaciones como *ir a pescar* y *ir de compras* se presentan con diferentes tokens, que no comparten ninguna similitud semántica a pesar de tener el mismo verbo. +En el lenguaje natural, el significado preciso de las palabras solo puede determinarse en contexto. Por ejemplo, los significados de *red neuronal* y *red de pesca* son completamente diferentes. Una de las formas de tener esto en cuenta es construir nuestro modelo basado en pares de palabras, considerando los pares de palabras como tokens separados del vocabulario. De esta manera, la oración *Me gusta ir a pescar* se representará con la siguiente secuencia de tokens: *Me gusta*, *gusta ir*, *ir a*, *a pescar*. El problema con este enfoque es que el tamaño del diccionario crece significativamente, y combinaciones como *a pescar* y *a comprar* se presentan como tokens diferentes, que no comparten ninguna similitud semántica a pesar del mismo verbo. -En algunos casos, también podemos considerar el uso de tri-gramas -- combinaciones de tres palabras --. Así, el enfoque se denomina a menudo **n-grams**. Además, tiene sentido usar n-grams con representación a nivel de carácter, en cuyo caso los n-grams corresponderán aproximadamente a diferentes sílabas. +En algunos casos, podemos considerar usar tri-gramas -- combinaciones de tres palabras -- también. Por lo tanto, este enfoque se denomina comúnmente **n-gramas**. Además, tiene sentido usar n-gramas con representación a nivel de caracteres, en cuyo caso los n-gramas corresponderán aproximadamente a diferentes sílabas. -## Bolsa de Palabras y TF/IDF +## Bag-of-Words y TF/IDF -Al resolver tareas como la clasificación de texto, necesitamos poder representar el texto mediante un vector de tamaño fijo, que utilizaremos como entrada para el clasificador denso final. Una de las formas más simples de hacerlo es combinar todas las representaciones de palabras individuales, por ejemplo, sumándolas. Si sumamos las codificaciones one-hot de cada palabra, terminaremos con un vector de frecuencias, que muestra cuántas veces aparece cada palabra dentro del texto. Tal representación del texto se llama **bolsa de palabras** (BoW). +Cuando resolvemos tareas como la clasificación de texto, necesitamos poder representar el texto mediante un vector de tamaño fijo, que utilizaremos como entrada para el clasificador denso final. Una de las formas más simples de hacerlo es combinar todas las representaciones individuales de palabras, por ejemplo, sumándolas. Si sumamos las codificaciones one-hot de cada palabra, terminaremos con un vector de frecuencias, que muestra cuántas veces aparece cada palabra dentro del texto. Tal representación del texto se llama **bag of words** (BoW). > Imagen del autor -Un BoW representa esencialmente qué palabras aparecen en el texto y en qué cantidades, lo que puede ser una buena indicación de lo que trata el texto. Por ejemplo, un artículo de noticias sobre política es probable que contenga palabras como *presidente* y *país*, mientras que una publicación científica tendría algo como *colisionador*, *descubierto*, etc. Así, las frecuencias de palabras pueden ser en muchos casos un buen indicador del contenido del texto. +Un BoW esencialmente representa qué palabras aparecen en el texto y en qué cantidades, lo que puede ser una buena indicación de qué trata el texto. Por ejemplo, un artículo de noticias sobre política probablemente contenga palabras como *presidente* y *país*, mientras que una publicación científica podría tener algo como *colisionador*, *descubierto*, etc. Por lo tanto, las frecuencias de palabras pueden ser en muchos casos un buen indicador del contenido del texto. -El problema con BoW es que ciertas palabras comunes, como *y*, *es*, etc., aparecen en la mayoría de los textos, y tienen las frecuencias más altas, ocultando las palabras que son realmente importantes. Podemos reducir la importancia de esas palabras teniendo en cuenta la frecuencia con la que ocurren en toda la colección de documentos. Esta es la idea principal detrás del enfoque TF/IDF, que se cubre con más detalle en los cuadernos adjuntos a esta lección. +El problema con BoW es que ciertas palabras comunes, como *y*, *es*, etc., aparecen en la mayoría de los textos y tienen las frecuencias más altas, ocultando las palabras que realmente son importantes. Podemos reducir la importancia de esas palabras teniendo en cuenta la frecuencia con la que ocurren en toda la colección de documentos. Esta es la idea principal detrás del enfoque TF/IDF, que se cubre en más detalle en los cuadernos adjuntos a esta lección. -Sin embargo, ninguno de estos enfoques puede tener en cuenta completamente la **semántica** del texto. Necesitamos modelos de redes neuronales más poderosos para hacer esto, que discutiremos más adelante en esta sección. +Sin embargo, ninguno de estos enfoques puede tener en cuenta completamente la **semántica** del texto. Necesitamos modelos de redes neuronales más poderosos para hacerlo, lo cual discutiremos más adelante en esta sección. -## ✍️ Ejercicios: Representación de Texto +## ✍️ Ejercicios: Representación de texto Continúa tu aprendizaje en los siguientes cuadernos: -* [Representación de Texto con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) -* [Representación de Texto con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) +* [Representación de texto con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representación de texto con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## Conclusión -Hasta ahora, hemos estudiado técnicas que pueden agregar peso de frecuencia a diferentes palabras. Sin embargo, no son capaces de representar el significado o el orden. Como dijo el famoso lingüista J. R. Firth en 1935, "El significado completo de una palabra siempre es contextual, y ningún estudio de significado separado del contexto puede tomarse en serio." Aprenderemos más adelante en el curso cómo capturar la información contextual del texto utilizando modelado de lenguaje. +Hasta ahora, hemos estudiado técnicas que pueden agregar peso de frecuencia a diferentes palabras. Sin embargo, estas técnicas no son capaces de representar el significado o el orden. Como dijo el famoso lingüista J. R. Firth en 1935: "El significado completo de una palabra siempre es contextual, y ningún estudio de significado aparte del contexto puede tomarse en serio". Más adelante en el curso aprenderemos cómo capturar información contextual del texto utilizando modelos de lenguaje. ## 🚀 Desafío -Intenta algunos otros ejercicios utilizando bolsa de palabras y diferentes modelos de datos. Podrías inspirarte en esta [competencia en Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Prueba algunos otros ejercicios utilizando bag-of-words y diferentes modelos de datos. Podrías inspirarte en esta [competencia en Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Revisión y Autoestudio +## Revisión y autoestudio -Practica tus habilidades con técnicas de embeddings de texto y bolsa de palabras en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Practica tus habilidades con técnicas de embeddings de texto y bag-of-words en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) ## [Asignación: Cuadernos](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/13-TextRep/assignment.md b/translations/es/lessons/5-NLP/13-TextRep/assignment.md index 77e2fd11..4683516a 100644 --- a/translations/es/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/es/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ -# Tarea: Notebooks + +# Tarea: Cuadernos -Utilizando los notebooks asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, utilizado con atribución. Reescribe el notebook para resaltar tus propios hallazgos. Prueba algunos conjuntos de datos innovadores que podrían resultar sorprendentes, como [este sobre avistamientos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, tal vez uno de Kaggle, usado con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con algunos conjuntos de datos innovadores que puedan resultar sorprendentes, como [este sobre avistamientos de ovnis](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/14-Embeddings/README.md b/translations/es/lessons/5-NLP/14-Embeddings/README.md index 20dda9e2..f17a872a 100644 --- a/translations/es/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/es/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ + # Embeddings -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -Al entrenar clasificadores basados en BoW o TF/IDF, operamos con vectores de bolsa de palabras de alta dimensión con longitud `vocab_size`, y estábamos convirtiendo explícitamente vectores de representación posicional de baja dimensión en una representación one-hot dispersa. Sin embargo, esta representación one-hot no es eficiente en términos de memoria. Además, cada palabra se trata de manera independiente, es decir, los vectores codificados en one-hot no expresan ninguna similitud semántica entre las palabras. +Cuando entrenamos clasificadores basados en BoW o TF/IDF, trabajamos con vectores de bolsa de palabras de alta dimensión con una longitud de `vocab_size`, y estábamos convirtiendo explícitamente de vectores de representación posicional de baja dimensión a representaciones dispersas de una sola posición activa (one-hot). Sin embargo, esta representación de una sola posición activa no es eficiente en términos de memoria. Además, cada palabra se trata de manera independiente, es decir, los vectores codificados en una sola posición activa no expresan ninguna similitud semántica entre palabras. -La idea de **embedding** es representar palabras mediante vectores densos de menor dimensión, que de alguna manera reflejan el significado semántico de una palabra. Más adelante discutiremos cómo construir embeddings significativos, pero por ahora pensemos en los embeddings como una forma de reducir la dimensionalidad de un vector de palabras. +La idea de **embedding** es representar las palabras mediante vectores densos de menor dimensión, que de alguna manera reflejen el significado semántico de una palabra. Más adelante discutiremos cómo construir embeddings de palabras significativos, pero por ahora pensemos en los embeddings como una forma de reducir la dimensionalidad de un vector de palabras. -Así, la capa de embedding tomaría una palabra como entrada y produciría un vector de salida de tamaño especificado `embedding_size`. En cierto sentido, es muy similar a una capa `Linear`, pero en lugar de tomar un vector codificado en one-hot, podrá aceptar un número de palabra como entrada, lo que nos permite evitar crear grandes vectores codificados en one-hot. +Entonces, la capa de embedding tomaría una palabra como entrada y produciría un vector de salida con un tamaño especificado por `embedding_size`. En cierto sentido, es muy similar a una capa `Linear`, pero en lugar de tomar un vector codificado en una sola posición activa, podrá tomar un número de palabra como entrada, permitiéndonos evitar la creación de grandes vectores codificados en una sola posición activa. -Al utilizar una capa de embedding como primera capa en nuestra red de clasificador, podemos cambiar de un modelo de bolsa de palabras a un modelo de **embedding bag**, donde primero convertimos cada palabra en nuestro texto en el embedding correspondiente, y luego calculamos alguna función agregada sobre todos esos embeddings, como `sum`, `average` o `max`. +Al usar una capa de embedding como la primera capa en nuestra red de clasificación, podemos cambiar de un modelo de bolsa de palabras a un modelo de **embedding bag**, donde primero convertimos cada palabra en nuestro texto en su embedding correspondiente, y luego calculamos alguna función de agregación sobre todos esos embeddings, como `sum`, `average` o `max`. -![Imagen que muestra un clasificador de embedding para cinco palabras en secuencia.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.es.png) +![Imagen que muestra un clasificador con embeddings para cinco palabras en una secuencia.](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) -> Imagen del autor +> Imagen por el autor ## ✍️ Ejercicios: Embeddings -Continúa tu aprendizaje en los siguientes cuadernos: +Continúa tu aprendizaje en los siguientes notebooks: * [Embeddings con PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +* [Embeddings con TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) ## Embeddings Semánticos: Word2Vec -Mientras que la capa de embedding aprendió a mapear palabras a una representación vectorial, esta representación no necesariamente tenía mucho significado semántico. Sería ideal aprender una representación vectorial tal que palabras similares o sinónimos correspondan a vectores que están cerca unos de otros en términos de alguna distancia vectorial (por ejemplo, distancia euclidiana). +Aunque la capa de embedding aprendió a mapear palabras a representaciones vectoriales, esta representación no necesariamente tiene mucho significado semántico. Sería ideal aprender una representación vectorial tal que palabras similares o sinónimos correspondan a vectores que estén cerca unos de otros en términos de alguna distancia vectorial (por ejemplo, distancia euclidiana). -Para lograr esto, necesitamos pre-entrenar nuestro modelo de embedding en una gran colección de texto de una manera específica. Una forma de entrenar embeddings semánticos se llama [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se basa en dos arquitecturas principales que se utilizan para producir una representación distribuida de las palabras: +Para lograr esto, necesitamos preentrenar nuestro modelo de embedding en una gran colección de texto de una manera específica. Una forma de entrenar embeddings semánticos se llama [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se basa en dos arquitecturas principales que se utilizan para producir una representación distribuida de palabras: - **Bolsa de palabras continua** (CBoW) — en esta arquitectura, entrenamos el modelo para predecir una palabra a partir del contexto circundante. Dado el ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, el objetivo del modelo es predecir $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. - - **Skip-gram continuo** es opuesto a CBoW. El modelo utiliza una ventana de palabras de contexto circundante para predecir la palabra actual. + - **Skip-gram continuo** es opuesto a CBoW. El modelo utiliza una ventana de palabras de contexto circundantes para predecir la palabra actual. -CBoW es más rápido, mientras que skip-gram es más lento, pero hace un mejor trabajo al representar palabras poco frecuentes. +CBoW es más rápido, mientras que skip-gram es más lento, pero hace un mejor trabajo representando palabras poco frecuentes. -![Imagen que muestra ambos algoritmos CBoW y Skip-Gram para convertir palabras en vectores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png) +![Imagen que muestra los algoritmos CBoW y Skip-Gram para convertir palabras en vectores.](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) > Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) -Los embeddings preentrenados de Word2Vec (así como otros modelos similares, como GloVe) también se pueden utilizar en lugar de la capa de embedding en redes neuronales. Sin embargo, necesitamos lidiar con vocabularios, porque el vocabulario utilizado para preentrenar Word2Vec/GloVe probablemente difiera del vocabulario en nuestro corpus de texto. Echa un vistazo a los cuadernos anteriores para ver cómo se puede resolver este problema. +Los embeddings preentrenados de Word2Vec (así como otros modelos similares, como GloVe) también pueden ser utilizados en lugar de la capa de embedding en redes neuronales. Sin embargo, necesitamos manejar los vocabularios, porque el vocabulario utilizado para preentrenar Word2Vec/GloVe probablemente difiera del vocabulario en nuestro corpus de texto. Revisa los notebooks mencionados anteriormente para ver cómo se puede resolver este problema. ## Embeddings Contextuales -Una limitación clave de las representaciones de embedding preentrenadas tradicionales, como Word2Vec, es el problema de la desambiguación del sentido de las palabras. Mientras que los embeddings preentrenados pueden capturar algo del significado de las palabras en contexto, cada posible significado de una palabra se codifica en el mismo embedding. Esto puede causar problemas en los modelos posteriores, ya que muchas palabras, como la palabra 'play', tienen diferentes significados dependiendo del contexto en el que se usen. +Una limitación clave de las representaciones tradicionales de embeddings preentrenados como Word2Vec es el problema de la desambiguación del sentido de las palabras. Aunque los embeddings preentrenados pueden capturar parte del significado de las palabras en contexto, cada posible significado de una palabra se codifica en el mismo embedding. Esto puede causar problemas en los modelos posteriores, ya que muchas palabras, como la palabra 'play', tienen diferentes significados dependiendo del contexto en el que se utilizan. -Por ejemplo, la palabra 'play' en estas dos oraciones diferentes tiene un significado bastante distinto: +Por ejemplo, la palabra 'play' en estas dos oraciones tiene significados bastante diferentes: - Fui a una **obra** en el teatro. - John quiere **jugar** con sus amigos. -Los embeddings preentrenados anteriores representan ambos significados de la palabra 'play' en el mismo embedding. Para superar esta limitación, necesitamos construir embeddings basados en el **modelo de lenguaje**, que se entrena en un gran corpus de texto y *sabe* cómo se pueden combinar las palabras en diferentes contextos. Discutir los embeddings contextuales está fuera del alcance de este tutorial, pero volveremos a ellos cuando hablemos sobre modelos de lenguaje más adelante en el curso. +Los embeddings preentrenados mencionados anteriormente representan ambos significados de la palabra 'play' en el mismo embedding. Para superar esta limitación, necesitamos construir embeddings basados en el **modelo de lenguaje**, que se entrena en un gran corpus de texto y *sabe* cómo las palabras pueden combinarse en diferentes contextos. Discutir embeddings contextuales está fuera del alcance de este tutorial, pero volveremos a ellos cuando hablemos de modelos de lenguaje más adelante en el curso. ## Conclusión -En esta lección, descubriste cómo construir y usar capas de embedding en TensorFlow y Pytorch para reflejar mejor los significados semánticos de las palabras. +En esta lección, descubriste cómo construir y usar capas de embedding en TensorFlow y PyTorch para reflejar mejor los significados semánticos de las palabras. ## 🚀 Desafío -Word2Vec se ha utilizado para algunas aplicaciones interesantes, incluyendo la generación de letras de canciones y poesía. Echa un vistazo a [este artículo](https://www.politetype.com/blog/word2vec-color-poems) que explica cómo el autor utilizó Word2Vec para generar poesía. También mira [este video de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descubrir una explicación diferente de esta técnica. Luego intenta aplicar estas técnicas a tu propio corpus de texto, quizás obtenido de Kaggle. +Word2Vec se ha utilizado para algunas aplicaciones interesantes, incluyendo la generación de letras de canciones y poesía. Echa un vistazo a [este artículo](https://www.politetype.com/blog/word2vec-color-poems) que explica cómo el autor utilizó Word2Vec para generar poesía. Mira [este video de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) también para descubrir una explicación diferente de esta técnica. Luego intenta aplicar estas técnicas a tu propio corpus de texto, quizás obtenido de Kaggle. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) ## Revisión y Autoestudio -Lee este artículo sobre Word2Vec: [Estimación Eficiente de Representaciones de Palabras en Espacio Vectorial](https://arxiv.org/pdf/1301.3781.pdf) +Lee este artículo sobre Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [Tarea: Cuadernos](assignment.md) +## [Asignación: Notebooks](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/14-Embeddings/assignment.md b/translations/es/lessons/5-NLP/14-Embeddings/assignment.md index d14c4fc1..70170acc 100644 --- a/translations/es/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/es/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ + # Asignación: Cuadernos -Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, utilizado con atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Intenta con un tipo diferente de conjunto de datos y documenta tus hallazgos, utilizando texto como [estas letras de los Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o TensorFlow), vuelve a ejecutarlos utilizando tu propio conjunto de datos, tal vez uno de Kaggle, usado con atribución. Reescribe el cuaderno para destacar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus descubrimientos, utilizando texto como [estas letras de los Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/15-LanguageModeling/README.md b/translations/es/lessons/5-NLP/15-LanguageModeling/README.md index 6d9ca116..813097d4 100644 --- a/translations/es/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/es/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ -# Modelado de Lenguaje + +# Modelado del Lenguaje -Las incrustaciones semánticas, como Word2Vec y GloVe, son en realidad un primer paso hacia el **modelado de lenguaje**: crear modelos que de alguna manera *entiendan* (o *representen*) la naturaleza del lenguaje. +Las incrustaciones semánticas, como Word2Vec y GloVe, son de hecho un primer paso hacia el **modelado del lenguaje**: crear modelos que de alguna manera *entiendan* (o *representen*) la naturaleza del lenguaje. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -La idea principal detrás del modelado de lenguaje es entrenarlos en conjuntos de datos no etiquetados de manera no supervisada. Esto es importante porque tenemos enormes cantidades de texto no etiquetado disponible, mientras que la cantidad de texto etiquetado siempre estará limitada por el esfuerzo que podamos dedicar a etiquetar. Más a menudo, podemos construir modelos de lenguaje que puedan **predecir palabras faltantes** en el texto, porque es fácil enmascarar una palabra aleatoria en el texto y usarla como una muestra de entrenamiento. +La idea principal detrás del modelado del lenguaje es entrenarlos en conjuntos de datos no etiquetados de manera no supervisada. Esto es importante porque tenemos enormes cantidades de texto no etiquetado disponible, mientras que la cantidad de texto etiquetado siempre estará limitada por el esfuerzo que podamos dedicar a etiquetarlo. Muy a menudo, podemos construir modelos de lenguaje que puedan **predecir palabras faltantes** en el texto, ya que es fácil ocultar una palabra aleatoria en el texto y usarla como muestra de entrenamiento. ## Entrenamiento de Incrustaciones -En nuestros ejemplos anteriores, utilizamos incrustaciones semánticas preentrenadas, pero es interesante ver cómo se pueden entrenar esas incrustaciones. Hay varias ideas posibles que se pueden utilizar: +En nuestros ejemplos anteriores, utilizamos incrustaciones semánticas preentrenadas, pero es interesante ver cómo se pueden entrenar esas incrustaciones. Hay varias ideas posibles que se pueden usar: -* Modelado de lenguaje **N-Gram**, cuando predecimos un token observando N tokens anteriores (N-gram) -* **Bolsa de Palabras Continua** (CBoW), cuando predecimos el token del medio $W_0$ en una secuencia de tokens $W_{-N}$, ..., $W_N$. -* **Skip-gram**, donde predecimos un conjunto de tokens vecinos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir del token del medio $W_0$. +* Modelado de lenguaje con **N-Gram**, donde predecimos un token observando los N tokens anteriores (N-grama). +* **Continuous Bag-of-Words** (CBoW), donde predecimos el token central $W_0$ en una secuencia de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, donde predecimos un conjunto de tokens vecinos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir del token central $W_0$. -![imagen del artículo sobre la conversión de palabras a vectores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png) +![imagen del artículo sobre la conversión de palabras a vectores](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) > Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Notebooks de Ejemplo: Entrenamiento del modelo CBoW +## ✍️ Cuadernos de Ejemplo: Entrenamiento del modelo CBoW -Continúa tu aprendizaje en los siguientes notebooks: +Continúa tu aprendizaje en los siguientes cuadernos: -* [Entrenamiento de CBoW Word2Vec con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Entrenamiento de CBoW Word2Vec con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Entrenamiento de Word2Vec CBoW con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Entrenamiento de Word2Vec CBoW con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## Conclusión -En la lección anterior hemos visto que las incrustaciones de palabras funcionan como magia. Ahora sabemos que entrenar incrustaciones de palabras no es una tarea muy compleja, y deberíamos ser capaces de entrenar nuestras propias incrustaciones de palabras para texto específico de dominio si es necesario. +En la lección anterior vimos que las incrustaciones de palabras funcionan como magia. ¡Ahora sabemos que entrenar incrustaciones de palabras no es una tarea muy compleja, y deberíamos ser capaces de entrenar nuestras propias incrustaciones de palabras para texto específico de un dominio si es necesario! -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) ## Revisión y Autoestudio -* [Tutorial oficial de PyTorch sobre Modelado de Lenguaje](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial de PyTorch sobre Modelado del Lenguaje](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). * [Tutorial oficial de TensorFlow sobre el entrenamiento del modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). * Usar el marco **gensim** para entrenar las incrustaciones más comúnmente utilizadas en unas pocas líneas de código se describe [en esta documentación](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -## 🚀 [Tarea: Entrenar el Modelo Skip-Gram](lab/README.md) +## 🚀 [Tarea: Entrenar Modelo Skip-Gram](lab/README.md) -En el laboratorio, te retamos a modificar el código de esta lección para entrenar un modelo skip-gram en lugar de CBoW. [Lee los detalles](lab/README.md) +En el laboratorio, te desafiamos a modificar el código de esta lección para entrenar un modelo skip-gram en lugar de CBoW. [Lee los detalles](lab/README.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md index 34e935ba..0d345a36 100644 --- a/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Modelo de Skip-Gram para Entrenamiento + +# Entrenando el Modelo Skip-Gram -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -En este laboratorio, te desafiamos a entrenar un modelo Word2Vec utilizando la técnica Skip-Gram. Entrena una red con incrustaciones para predecir palabras vecinas en una ventana Skip-Gram de $N$-tokens de ancho. Puedes usar el [código de esta lección](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) y modificarlo ligeramente. +En este laboratorio, te desafiamos a entrenar un modelo Word2Vec utilizando la técnica Skip-Gram. Entrena una red con embeddings para predecir palabras vecinas en una ventana Skip-Gram de $N$ tokens de ancho. Puedes usar el [código de esta lección](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) y modificarlo ligeramente. ## El Conjunto de Datos -Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/), por ejemplo, aquí tienes un enlace directo a [Las aventuras de Alicia en el país de las maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. O, puedes usar las obras de Shakespeare, que puedes obtener utilizando el siguiente código: +Puedes usar cualquier libro que desees. Hay muchos textos gratuitos disponibles en [Project Gutenberg](https://www.gutenberg.org/), por ejemplo, aquí tienes un enlace directo a [Las aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. O bien, puedes usar las obras de Shakespeare, las cuales puedes obtener con el siguiente código: ```python path_to_file = tf.keras.utils.get_file( @@ -21,9 +30,9 @@ text = open(path_to_file, 'rb').read().decode(encoding='utf-8') Si tienes tiempo y quieres profundizar en el tema, intenta explorar varias cosas: -* ¿Cómo afecta el tamaño de la incrustación a los resultados? +* ¿Cómo afecta el tamaño del embedding a los resultados? * ¿Cómo afectan los diferentes estilos de texto al resultado? -* Toma varios tipos de palabras muy diferentes y sus sinónimos, obtén sus representaciones vectoriales, aplica PCA para reducir las dimensiones a 2 y trázalas en un espacio 2D. ¿Ves algún patrón? +* Toma varios tipos de palabras muy diferentes y sus sinónimos, obtén sus representaciones vectoriales, aplica PCA para reducir las dimensiones a 2 y represéntalos en un espacio 2D. ¿Ves algún patrón? **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/16-RNN/README.md b/translations/es/lessons/5-NLP/16-RNN/README.md index 0c307718..734fb5a3 100644 --- a/translations/es/lessons/5-NLP/16-RNN/README.md +++ b/translations/es/lessons/5-NLP/16-RNN/README.md @@ -1,60 +1,69 @@ + # Redes Neuronales Recurrentes ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -En secciones anteriores, hemos estado utilizando representaciones semánticas ricas del texto y un clasificador lineal simple sobre las incrustaciones. Lo que hace esta arquitectura es capturar el significado agregado de las palabras en una oración, pero no toma en cuenta el **orden** de las palabras, ya que la operación de agregación sobre las incrustaciones eliminó esta información del texto original. Debido a que estos modelos no pueden modelar el orden de las palabras, no pueden resolver tareas más complejas o ambiguas, como la generación de texto o la respuesta a preguntas. +En secciones anteriores, hemos estado utilizando representaciones semánticas ricas de texto y un clasificador lineal simple sobre las incrustaciones. Lo que hace esta arquitectura es capturar el significado agregado de las palabras en una oración, pero no toma en cuenta el **orden** de las palabras, ya que la operación de agregación sobre las incrustaciones elimina esta información del texto original. Debido a que estos modelos no pueden modelar el orden de las palabras, no pueden resolver tareas más complejas o ambiguas como la generación de texto o la respuesta a preguntas. -Para capturar el significado de la secuencia de texto, necesitamos utilizar otra arquitectura de red neuronal, que se llama **red neuronal recurrente**, o RNN. En una RNN, pasamos nuestra oración a través de la red un símbolo a la vez, y la red produce algún **estado**, que luego pasamos a la red nuevamente con el siguiente símbolo. +Para capturar el significado de una secuencia de texto, necesitamos usar otra arquitectura de red neuronal, llamada **red neuronal recurrente**, o RNN. En una RNN, pasamos nuestra oración a través de la red un símbolo a la vez, y la red produce un **estado**, que luego pasamos nuevamente a la red junto con el siguiente símbolo. -![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.es.png) +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) > Imagen del autor -Dada la secuencia de entrada de tokens X0,...,Xn, la RNN crea una secuencia de bloques de red neuronal y entrena esta secuencia de extremo a extremo utilizando retropropagación. Cada bloque de red toma un par (Xi,Si) como entrada y produce Si+1 como resultado. El estado final Sn o (salida Yn) entra en un clasificador lineal para producir el resultado. Todos los bloques de red comparten los mismos pesos y se entrenan de extremo a extremo utilizando un pase de retropropagación. +Dada la secuencia de entrada de tokens X0,...,Xn, la RNN crea una secuencia de bloques de red neuronal y entrena esta secuencia de extremo a extremo utilizando retropropagación. Cada bloque de red toma un par (Xi,Si) como entrada y produce Si+1 como resultado. El estado final Sn o (salida Yn) pasa a un clasificador lineal para producir el resultado. Todos los bloques de red comparten los mismos pesos y se entrenan de extremo a extremo utilizando una sola pasada de retropropagación. -Debido a que los vectores de estado S0,...,Sn se pasan a través de la red, es capaz de aprender las dependencias secuenciales entre las palabras. Por ejemplo, cuando la palabra *not* aparece en algún lugar de la secuencia, puede aprender a negar ciertos elementos dentro del vector de estado, resultando en negación. +Debido a que los vectores de estado S0,...,Sn se pasan a través de la red, esta es capaz de aprender las dependencias secuenciales entre palabras. Por ejemplo, cuando la palabra *no* aparece en algún lugar de la secuencia, puede aprender a negar ciertos elementos dentro del vector de estado, lo que resulta en negación. -> ✅ Dado que los pesos de todos los bloques RNN en la imagen anterior se comparten, la misma imagen puede representarse como un bloque (a la derecha) con un bucle de retroalimentación recurrente, que pasa el estado de salida de la red de vuelta a la entrada. +> ✅ Dado que los pesos de todos los bloques de RNN en la imagen anterior son compartidos, la misma imagen puede representarse como un solo bloque (a la derecha) con un bucle de retroalimentación recurrente, que pasa el estado de salida de la red nuevamente a la entrada. -## Anatomía de una Celda RNN +## Anatomía de una Célula RNN -Veamos cómo está organizada una celda RNN simple. Acepta el estado anterior Si-1 y el símbolo actual Xi como entradas, y tiene que producir el estado de salida Si (y, a veces, también estamos interesados en alguna otra salida Yi, como en el caso de las redes generativas). +Veamos cómo está organizada una célula RNN simple. Acepta el estado anterior Si-1 y el símbolo actual Xi como entradas, y debe producir el estado de salida Si (y, a veces, también estamos interesados en alguna otra salida Yi, como en el caso de redes generativas). -Una celda RNN simple tiene dos matrices de pesos en su interior: una transforma un símbolo de entrada (llamémosla W), y otra transforma un estado de entrada (H). En este caso, la salida de la red se calcula como σ(W×Xi+H×Si-1+b), donde σ es la función de activación y b es un sesgo adicional. +Una célula RNN simple tiene dos matrices de pesos internas: una transforma un símbolo de entrada (llamémosla W) y otra transforma un estado de entrada (H). En este caso, la salida de la red se calcula como σ(W×Xi+H×Si-1+b), donde σ es la función de activación y b es un sesgo adicional. -Anatomía de la Celda RNN +Anatomía de una célula RNN > Imagen del autor -En muchos casos, los tokens de entrada se pasan a través de la capa de incrustación antes de entrar en la RNN para reducir la dimensionalidad. En este caso, si la dimensión de los vectores de entrada es *emb_size*, y el vector de estado es *hid_size* - el tamaño de W es *emb_size*×*hid_size*, y el tamaño de H es *hid_size*×*hid_size*. +En muchos casos, los tokens de entrada se pasan a través de la capa de incrustación antes de ingresar a la RNN para reducir la dimensionalidad. En este caso, si la dimensión de los vectores de entrada es *emb_size* y el vector de estado es *hid_size*, el tamaño de W es *emb_size*×*hid_size*, y el tamaño de H es *hid_size*×*hid_size*. ## Memoria a Largo y Corto Plazo (LSTM) -Uno de los principales problemas de las RNN clásicas es el problema de los **gradientes que desaparecen**. Debido a que las RNN se entrenan de extremo a extremo en un solo pase de retropropagación, tienen dificultades para propagar el error a las primeras capas de la red, y por lo tanto, la red no puede aprender relaciones entre tokens distantes. Una de las formas de evitar este problema es introducir **gestión de estado explícita** mediante el uso de lo que se llama **puertas**. Hay dos arquitecturas bien conocidas de este tipo: **Memoria a Largo y Corto Plazo** (LSTM) y **Unidad de Relé con Puerta** (GRU). +Uno de los principales problemas de las RNN clásicas es el llamado problema de **gradientes que se desvanecen**. Debido a que las RNN se entrenan de extremo a extremo en una sola pasada de retropropagación, tienen dificultad para propagar el error a las primeras capas de la red, y por lo tanto, la red no puede aprender relaciones entre tokens distantes. Una de las formas de evitar este problema es introducir **gestión explícita del estado** utilizando los llamados **puertas**. Hay dos arquitecturas bien conocidas de este tipo: **Memoria a Largo y Corto Plazo** (LSTM) y **Unidad de Relevo con Puerta** (GRU). -![Imagen que muestra un ejemplo de celda de memoria a largo y corto plazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Imagen mostrando un ejemplo de célula de memoria a largo y corto plazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> Fuente de la imagen TBD +> Fuente de la imagen por determinar -La Red LSTM está organizada de manera similar a la RNN, pero hay dos estados que se pasan de capa a capa: el estado actual C y el vector oculto H. En cada unidad, el vector oculto Hi se concatena con la entrada Xi, y ellos controlan lo que sucede con el estado C a través de **puertas**. Cada puerta es una red neuronal con activación sigmoide (salida en el rango [0,1]), que se puede considerar como una máscara a nivel de bits cuando se multiplica por el vector de estado. Hay las siguientes puertas (de izquierda a derecha en la imagen anterior): +La red LSTM está organizada de manera similar a la RNN, pero hay dos estados que se pasan de capa a capa: el estado actual C y el vector oculto H. En cada unidad, el vector oculto Hi se concatena con la entrada Xi, y controlan lo que sucede con el estado C a través de **puertas**. Cada puerta es una red neuronal con activación sigmoide (salida en el rango [0,1]), que puede considerarse como una máscara bit a bit cuando se multiplica por el vector de estado. Hay las siguientes puertas (de izquierda a derecha en la imagen anterior): * La **puerta de olvido** toma un vector oculto y determina qué componentes del vector C necesitamos olvidar y cuáles pasar. -* La **puerta de entrada** toma cierta información de los vectores de entrada y ocultos e inserta en el estado. +* La **puerta de entrada** toma información de los vectores de entrada y ocultos e inserta esta información en el estado. * La **puerta de salida** transforma el estado a través de una capa lineal con activación *tanh*, luego selecciona algunos de sus componentes utilizando un vector oculto Hi para producir un nuevo estado Ci+1. -Los componentes del estado C se pueden considerar como algunas banderas que pueden activarse y desactivarse. Por ejemplo, cuando encontramos un nombre *Alice* en la secuencia, podemos querer suponer que se refiere a un personaje femenino y activar la bandera en el estado de que tenemos un sustantivo femenino en la oración. Cuando encontramos más adelante las frases *and Tom*, levantaremos la bandera de que tenemos un sustantivo plural. Así, manipulando el estado, supuestamente podemos hacer un seguimiento de las propiedades gramaticales de las partes de la oración. +Los componentes del estado C pueden considerarse como algunas banderas que pueden activarse o desactivarse. Por ejemplo, cuando encontramos un nombre *Alice* en la secuencia, podemos asumir que se refiere a un personaje femenino y activar la bandera en el estado que indica que tenemos un sustantivo femenino en la oración. Cuando más adelante encontramos frases como *y Tom*, activaremos la bandera que indica que tenemos un sustantivo plural. Así, manipulando el estado, podemos supuestamente realizar un seguimiento de las propiedades gramaticales de las partes de la oración. -> ✅ Un recurso excelente para entender los entresijos de LSTM es este gran artículo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. +> ✅ Un recurso excelente para entender los detalles internos de LSTM es este gran artículo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. -## RNNs Bidireccionales y Multicapa +## RNN Bidireccionales y Multicapa -Hemos discutido redes recurrentes que operan en una dirección, desde el comienzo de una secuencia hasta el final. Esto parece natural, ya que se asemeja a la forma en que leemos y escuchamos el habla. Sin embargo, dado que en muchos casos prácticos tenemos acceso aleatorio a la secuencia de entrada, podría tener sentido realizar cálculos recurrentes en ambas direcciones. Tales redes se llaman RNNs **bidireccionales**. Al tratar con una red bidireccional, necesitaríamos dos vectores de estado oculto, uno para cada dirección. +Hemos discutido redes recurrentes que operan en una dirección, desde el inicio de una secuencia hasta el final. Parece natural, porque se asemeja a la forma en que leemos y escuchamos el habla. Sin embargo, dado que en muchos casos prácticos tenemos acceso aleatorio a la secuencia de entrada, podría tener sentido realizar cálculos recurrentes en ambas direcciones. Estas redes se llaman **RNN bidireccionales**. Al trabajar con una red bidireccional, necesitaríamos dos vectores de estado oculto, uno para cada dirección. -Una red recurrente, ya sea unidireccional o bidireccional, captura ciertos patrones dentro de una secuencia y puede almacenarlos en un vector de estado o pasarlos a la salida. Al igual que con las redes convolucionales, podemos construir otra capa recurrente sobre la primera para capturar patrones de nivel superior y construir a partir de patrones de bajo nivel extraídos por la primera capa. Esto nos lleva a la noción de una **RNN multicapa** que consiste en dos o más redes recurrentes, donde la salida de la capa anterior se pasa a la siguiente capa como entrada. +Una red recurrente, ya sea unidireccional o bidireccional, captura ciertos patrones dentro de una secuencia y puede almacenarlos en un vector de estado o pasarlos a la salida. Al igual que con las redes convolucionales, podemos construir otra capa recurrente sobre la primera para capturar patrones de nivel superior y construir a partir de los patrones de bajo nivel extraídos por la primera capa. Esto nos lleva a la noción de una **RNN multicapa**, que consiste en dos o más redes recurrentes, donde la salida de la capa anterior se pasa a la siguiente capa como entrada. -![Imagen que muestra una RNN multicapa de memoria a largo y corto plazo](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.es.jpg) +![Imagen mostrando una RNN multicapa de memoria a largo y corto plazo](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) -*Imagen de [esta maravillosa publicación](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* +*Imagen de [este maravilloso artículo](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* ## ✍️ Ejercicios: Incrustaciones @@ -65,7 +74,7 @@ Continúa tu aprendizaje en los siguientes cuadernos: ## Conclusión -En esta unidad, hemos visto que las RNNs se pueden utilizar para la clasificación de secuencias, pero de hecho, pueden manejar muchas más tareas, como la generación de texto, la traducción automática y más. Consideraremos esas tareas en la próxima unidad. +En esta unidad, hemos visto que las RNN pueden usarse para la clasificación de secuencias, pero de hecho, pueden manejar muchas más tareas, como generación de texto, traducción automática y más. Consideraremos esas tareas en la próxima unidad. ## 🚀 Desafío @@ -77,11 +86,11 @@ Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Revisión y Autoestudio +## Revisión y Estudio Autónomo - [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. ## [Asignación: Cuadernos](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/16-RNN/assignment.md b/translations/es/lessons/5-NLP/16-RNN/assignment.md index d26eea36..d41073db 100644 --- a/translations/es/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/es/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ + # Tarea: Cuadernos -Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, usado con atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus hallazgos, utilizando texto como [este conjunto de datos de competencia de Kaggle sobre tweets del clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, tal vez uno de Kaggle, usado con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus descubrimientos, utilizando texto como [este conjunto de datos de una competencia de Kaggle sobre tweets relacionados con el clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md index 85977790..b175f39f 100644 --- a/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,79 +1,88 @@ + # Redes generativas ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Las Redes Neuronales Recurrentes (RNNs) y sus variantes con puertas, como las Celdas de Memoria a Largo y Corto Plazo (LSTMs) y las Unidades Recurrentes con Puertas (GRUs), proporcionaron un mecanismo para el modelado del lenguaje en el que pueden aprender el orden de las palabras y ofrecer predicciones para la siguiente palabra en una secuencia. Esto nos permite usar RNNs para **tareas generativas**, como la generación de texto ordinario, la traducción automática e incluso la creación de descripciones para imágenes. +Las Redes Neuronales Recurrentes (RNNs) y sus variantes con celdas de compuerta, como las Celdas de Memoria a Largo Plazo (LSTMs) y las Unidades Recurrentes de Compuerta (GRUs), proporcionan un mecanismo para modelar el lenguaje, ya que pueden aprender el orden de las palabras y ofrecer predicciones para la siguiente palabra en una secuencia. Esto nos permite usar RNNs para **tareas generativas**, como la generación de texto ordinario, la traducción automática e incluso la generación de subtítulos para imágenes. -> ✅ Piensa en todas las ocasiones en que te has beneficiado de tareas generativas, como la finalización de texto mientras escribes. Investiga tus aplicaciones favoritas para ver si aprovecharon RNNs. +> ✅ Piensa en todas las veces que te has beneficiado de tareas generativas, como la autocompletación de texto mientras escribes. Investiga tus aplicaciones favoritas para ver si han utilizado RNNs. -En la arquitectura de RNN que discutimos en la unidad anterior, cada unidad RNN producía el siguiente estado oculto como salida. Sin embargo, también podemos añadir otra salida a cada unidad recurrente, lo que nos permitiría generar una **secuencia** (que es igual en longitud a la secuencia original). Además, podemos utilizar unidades RNN que no aceptan una entrada en cada paso, y simplemente toman un vector de estado inicial y luego producen una secuencia de salidas. +En la arquitectura de RNN que discutimos en la unidad anterior, cada unidad RNN producía el siguiente estado oculto como salida. Sin embargo, también podemos agregar otra salida a cada unidad recurrente, lo que nos permitiría generar una **secuencia** (que tiene la misma longitud que la secuencia original). Además, podemos usar unidades RNN que no aceptan una entrada en cada paso, y simplemente toman un vector de estado inicial y luego producen una secuencia de salidas. -Esto permite diferentes arquitecturas neuronales que se muestran en la imagen a continuación: +Esto permite diferentes arquitecturas neuronales, como se muestra en la imagen a continuación: -![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg) +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> Imagen del artículo del blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) +> Imagen del artículo [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpaty](http://karpathy.github.io/) * **Uno a uno** es una red neuronal tradicional con una entrada y una salida. -* **Uno a muchos** es una arquitectura generativa que acepta un valor de entrada y genera una secuencia de valores de salida. Por ejemplo, si queremos entrenar una red de **creación de descripciones de imágenes** que produzca una descripción textual de una imagen, podemos tomar una imagen como entrada, pasarla a través de una CNN para obtener su estado oculto y luego tener una cadena recurrente que genere la descripción palabra por palabra. +* **Uno a muchos** es una arquitectura generativa que acepta un valor de entrada y genera una secuencia de valores de salida. Por ejemplo, si queremos entrenar una red de **generación de subtítulos para imágenes** que produzca una descripción textual de una imagen, podemos tomar una imagen como entrada, pasarla por una CNN para obtener su estado oculto y luego usar una cadena recurrente para generar los subtítulos palabra por palabra. * **Muchos a uno** corresponde a las arquitecturas RNN que describimos en la unidad anterior, como la clasificación de texto. -* **Muchos a muchos**, o **secuencia a secuencia**, corresponde a tareas como **traducción automática**, donde primero una RNN recopila toda la información de la secuencia de entrada en el estado oculto, y otra cadena RNN despliega este estado en la secuencia de salida. +* **Muchos a muchos**, o **secuencia a secuencia**, corresponde a tareas como la **traducción automática**, donde primero una RNN recopila toda la información de la secuencia de entrada en el estado oculto, y otra cadena RNN despliega este estado en la secuencia de salida. -En esta unidad, nos enfocaremos en modelos generativos simples que nos ayuden a generar texto. Para simplificar, utilizaremos la tokenización a nivel de caracteres. +En esta unidad, nos enfocaremos en modelos generativos simples que nos ayuden a generar texto. Para simplificar, utilizaremos tokenización a nivel de caracteres. -Entrenaremos esta RNN para generar texto paso a paso. En cada paso, tomaremos una secuencia de caracteres de longitud `nchars` y le pediremos a la red que genere el siguiente carácter de salida para cada carácter de entrada: +Entrenaremos esta RNN para generar texto paso a paso. En cada paso, tomaremos una secuencia de caracteres de longitud `nchars` y pediremos a la red que genere el siguiente carácter de salida para cada carácter de entrada: -![Imagen que muestra un ejemplo de generación RNN de la palabra 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.es.png) +![Imagen que muestra un ejemplo de generación de la palabra 'HELLO' con una RNN.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) -Al generar texto (durante la inferencia), comenzamos con un **mensaje inicial**, que se pasa a través de las celdas RNN para generar su estado intermedio, y luego desde este estado comienza la generación. Generamos un carácter a la vez y pasamos el estado y el carácter generado a otra celda RNN para generar el siguiente, hasta que generamos suficientes caracteres. +Cuando generamos texto (durante la inferencia), comenzamos con un **indicador inicial**, que se pasa por las celdas RNN para generar su estado intermedio, y luego desde este estado comienza la generación. Generamos un carácter a la vez y pasamos el estado y el carácter generado a otra celda RNN para generar el siguiente, hasta que generamos suficientes caracteres. > Imagen del autor -## ✍️ Ejercicios: Redes Generativas +## ✍️ Ejercicios: Redes generativas Continúa tu aprendizaje en los siguientes cuadernos: -* [Redes Generativas con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) -* [Redes Generativas con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) +* [Redes generativas con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Redes generativas con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) ## Generación de texto suave y temperatura -La salida de cada celda RNN es una distribución de probabilidad de caracteres. Si siempre tomamos el carácter con la mayor probabilidad como el siguiente carácter en el texto generado, el texto a menudo puede "ciclarse" entre las mismas secuencias de caracteres una y otra vez, como en este ejemplo: +La salida de cada celda RNN es una distribución de probabilidad de caracteres. Si siempre tomamos el carácter con la mayor probabilidad como el siguiente carácter en el texto generado, el texto puede volverse "cíclico", repitiendo las mismas secuencias de caracteres una y otra vez, como en este ejemplo: ``` today of the second the company and a second the company ... ``` -Sin embargo, si observamos la distribución de probabilidad para el siguiente carácter, podría ser que la diferencia entre algunas de las probabilidades más altas no sea enorme; por ejemplo, un carácter puede tener una probabilidad de 0.2, otro - 0.19, etc. Por ejemplo, al buscar el siguiente carácter en la secuencia '*play*', el siguiente carácter puede ser igualmente un espacio o **e** (como en la palabra *player*). +Sin embargo, si observamos la distribución de probabilidad para el siguiente carácter, podría ser que la diferencia entre algunas de las probabilidades más altas no sea muy grande, por ejemplo, un carácter puede tener una probabilidad de 0.2 y otro de 0.19, etc. Por ejemplo, al buscar el siguiente carácter en la secuencia '*play*', el siguiente carácter podría ser igualmente un espacio o **e** (como en la palabra *player*). -Esto nos lleva a la conclusión de que no siempre es "justo" seleccionar el carácter con una mayor probabilidad, porque elegir el segundo más alto aún podría llevarnos a un texto significativo. Es más sabio **muestrear** caracteres de la distribución de probabilidad dada por la salida de la red. También podemos usar un parámetro, **temperatura**, que aplanará la distribución de probabilidad en caso de que queramos agregar más aleatoriedad, o la hará más pronunciada si queremos ceñirnos más a los caracteres de mayor probabilidad. +Esto nos lleva a la conclusión de que no siempre es "justo" seleccionar el carácter con mayor probabilidad, ya que elegir el segundo más alto aún podría llevarnos a texto significativo. Es más sabio **muestrear** caracteres de la distribución de probabilidad dada por la salida de la red. También podemos usar un parámetro, **temperatura**, que suaviza la distribución de probabilidad si queremos agregar más aleatoriedad, o la hace más pronunciada si queremos ceñirnos más a los caracteres con mayor probabilidad. -Explora cómo se implementa esta generación de texto suave en los cuadernos vinculados arriba. +Explora cómo se implementa esta generación de texto suave en los cuadernos vinculados anteriormente. ## Conclusión -Si bien la generación de texto puede ser útil por derecho propio, los principales beneficios provienen de la capacidad de generar texto utilizando RNNs a partir de algún vector de características inicial. Por ejemplo, la generación de texto se utiliza como parte de la traducción automática (secuencia a secuencia, en este caso el vector de estado del *codificador* se utiliza para generar o *decodificar* el mensaje traducido), o para generar descripciones textuales de una imagen (en cuyo caso el vector de características provendría de un extractor CNN). +Aunque la generación de texto puede ser útil por sí misma, los mayores beneficios provienen de la capacidad de generar texto utilizando RNNs a partir de algún vector de características inicial. Por ejemplo, la generación de texto se utiliza como parte de la traducción automática (secuencia a secuencia, en este caso el vector de estado del *codificador* se utiliza para generar o *decodificar* el mensaje traducido), o para generar descripciones textuales de una imagen (en cuyo caso el vector de características provendría de un extractor CNN). ## 🚀 Desafío -Toma algunas lecciones en Microsoft Learn sobre este tema +Toma algunas lecciones en Microsoft Learn sobre este tema: -* Generación de Texto con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) +* Generación de texto con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Revisión y Autoestudio +## Revisión y autoestudio -Aquí hay algunos artículos para ampliar tu conocimiento +Aquí tienes algunos artículos para ampliar tu conocimiento: -* Diferentes enfoques para la generación de texto con Cadenas de Markov, LSTM y GPT-2: [artículo del blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* Ejemplo de generación de texto en [documentación de Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) +* Diferentes enfoques para la generación de texto con Markov Chain, LSTM y GPT-2: [artículo](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Ejemplo de generación de texto en la [documentación de Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) -## [Asignación](lab/README.md) +## [Tarea](lab/README.md) Hemos visto cómo generar texto carácter por carácter. En el laboratorio, explorarás la generación de texto a nivel de palabras. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index e0aeef84..915b0b1b 100644 --- a/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,6 +1,15 @@ -# Generación de texto a nivel de palabra utilizando RNNs + +# Generación de texto a nivel de palabra usando RNNs -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea @@ -8,7 +17,7 @@ En este laboratorio, necesitas tomar cualquier libro y usarlo como un conjunto d ## El Conjunto de Datos -Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí hay un enlace directo a [Las aventuras de Alicia en el país de las maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. +Puedes usar cualquier libro que desees. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/), por ejemplo, aquí tienes un enlace directo a [Las aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/18-Transformers/README.md b/translations/es/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..948405a8 --- /dev/null +++ b/translations/es/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mecanismos de Atención y Transformadores + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Uno de los problemas más importantes en el ámbito de NLP es la **traducción automática**, una tarea esencial que sustenta herramientas como Google Translate. En esta sección, nos centraremos en la traducción automática o, más generalmente, en cualquier tarea de *secuencia a secuencia* (también llamada **transducción de oraciones**). + +Con las RNNs, la tarea de secuencia a secuencia se implementa mediante dos redes recurrentes, donde una red, el **codificador**, comprime una secuencia de entrada en un estado oculto, mientras que otra red, el **decodificador**, despliega este estado oculto en un resultado traducido. Hay algunos problemas con este enfoque: + +* El estado final de la red codificadora tiene dificultades para recordar el inicio de una oración, lo que provoca una baja calidad del modelo para oraciones largas. +* Todas las palabras en una secuencia tienen el mismo impacto en el resultado. Sin embargo, en la realidad, palabras específicas en la secuencia de entrada suelen tener más impacto en las salidas secuenciales que otras. + +Los **mecanismos de atención** proporcionan un medio para ponderar el impacto contextual de cada vector de entrada en cada predicción de salida de la RNN. La forma en que se implementa es creando atajos entre los estados intermedios de la RNN de entrada y la RNN de salida. De esta manera, al generar el símbolo de salida yt, tomaremos en cuenta todos los estados ocultos de entrada hi, con diferentes coeficientes de peso αt,i. + +![Imagen que muestra un modelo codificador/decodificador con una capa de atención aditiva](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> El modelo codificador-decodificador con mecanismo de atención aditiva en [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citado de [este blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +La matriz de atención {αi,j} representaría el grado en que ciertas palabras de entrada influyen en la generación de una palabra dada en la secuencia de salida. A continuación, se muestra un ejemplo de dicha matriz: + +![Imagen que muestra una alineación de muestra encontrada por RNNsearch-50, tomada de Bahdanau - arviz.org](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> Figura de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Los mecanismos de atención son responsables de gran parte del estado del arte actual o cercano al actual en NLP. Sin embargo, agregar atención aumenta significativamente el número de parámetros del modelo, lo que llevó a problemas de escalabilidad con las RNNs. Una restricción clave para escalar las RNNs es que la naturaleza recurrente de los modelos dificulta el procesamiento en lotes y la paralelización del entrenamiento. En una RNN, cada elemento de una secuencia necesita ser procesado en orden secuencial, lo que significa que no se puede paralelizar fácilmente. + +![Codificador-Decodificador con Atención](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura del [Blog de Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +La adopción de mecanismos de atención combinada con esta restricción llevó a la creación de los modelos transformadores, ahora estado del arte, que conocemos y usamos hoy en día, como BERT y Open-GPT3. + +## Modelos Transformadores + +Una de las ideas principales detrás de los transformadores es evitar la naturaleza secuencial de las RNNs y crear un modelo que sea paralelizable durante el entrenamiento. Esto se logra implementando dos ideas: + +* codificación posicional +* uso del mecanismo de auto-atención para capturar patrones en lugar de RNNs (o CNNs) (por eso el artículo que introduce los transformadores se llama *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codificación/Embebido Posicional + +La idea de la codificación posicional es la siguiente: +1. Al usar RNNs, la posición relativa de los tokens está representada por el número de pasos, y por lo tanto no necesita ser representada explícitamente. +2. Sin embargo, una vez que cambiamos a atención, necesitamos conocer las posiciones relativas de los tokens dentro de una secuencia. +3. Para obtener la codificación posicional, ampliamos nuestra secuencia de tokens con una secuencia de posiciones de tokens en la secuencia (es decir, una secuencia de números 0,1, ...). +4. Luego mezclamos la posición del token con un vector de embebido del token. Para transformar la posición (entero) en un vector, podemos usar diferentes enfoques: + +* Embebido entrenable, similar al embebido de tokens. Este es el enfoque que consideramos aquí. Aplicamos capas de embebido tanto a los tokens como a sus posiciones, lo que da como resultado vectores de embebido de las mismas dimensiones, que luego sumamos. +* Función de codificación posicional fija, como se propone en el artículo original. + + + +> Imagen del autor + +El resultado que obtenemos con el embebido posicional incluye tanto el token original como su posición dentro de una secuencia. + +### Auto-Atención Multi-Cabezal + +A continuación, necesitamos capturar algunos patrones dentro de nuestra secuencia. Para hacerlo, los transformadores utilizan un mecanismo de **auto-atención**, que es esencialmente atención aplicada a la misma secuencia como entrada y salida. Aplicar auto-atención nos permite tomar en cuenta el **contexto** dentro de la oración y ver qué palabras están interrelacionadas. Por ejemplo, nos permite ver qué palabras son referidas por correferencias, como *it*, y también tomar el contexto en cuenta: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> Imagen del [Blog de Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +En los transformadores, usamos **atención multi-cabezal** para darle a la red la capacidad de capturar varios tipos diferentes de dependencias, por ejemplo, relaciones de palabras a largo plazo frente a corto plazo, correferencia frente a algo más, etc. + +[Notebook de TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contiene más detalles sobre la implementación de capas de transformadores. + +### Atención Codificador-Decodificador + +En los transformadores, la atención se utiliza en dos lugares: + +* Para capturar patrones dentro del texto de entrada utilizando auto-atención. +* Para realizar la traducción de secuencias: es la capa de atención entre el codificador y el decodificador. + +La atención codificador-decodificador es muy similar al mecanismo de atención utilizado en las RNNs, como se describió al inicio de esta sección. Este diagrama animado explica el papel de la atención codificador-decodificador. + +![GIF animado que muestra cómo se realizan las evaluaciones en los modelos transformadores.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Dado que cada posición de entrada se mapea independientemente a cada posición de salida, los transformadores pueden paralelizar mejor que las RNNs, lo que permite modelos de lenguaje mucho más grandes y expresivos. Cada cabeza de atención puede usarse para aprender diferentes relaciones entre palabras que mejoran las tareas de procesamiento de lenguaje natural. + +## BERT + +**BERT** (Representaciones de Codificador Bidireccional de Transformadores) es una red transformadora muy grande con múltiples capas: 12 capas para *BERT-base* y 24 para *BERT-large*. El modelo se preentrena primero en un gran corpus de datos de texto (Wikipedia + libros) utilizando entrenamiento no supervisado (predicción de palabras enmascaradas en una oración). Durante el preentrenamiento, el modelo absorbe niveles significativos de comprensión del lenguaje que luego pueden aprovecharse con otros conjuntos de datos mediante ajuste fino. Este proceso se llama **aprendizaje por transferencia**. + +![imagen de http://jalammar.github.io/illustrated-bert/](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> Imagen [fuente](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Ejercicios: Transformadores + +Continúa tu aprendizaje en los siguientes notebooks: + +* [Transformadores en PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformadores en TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusión + +En esta lección aprendiste sobre Transformadores y Mecanismos de Atención, herramientas esenciales en el conjunto de herramientas de NLP. Existen muchas variaciones de arquitecturas de transformadores, incluyendo BERT, DistilBERT, BigBird, OpenGPT3 y más, que pueden ajustarse. El paquete [HuggingFace](https://github.com/huggingface/) proporciona un repositorio para entrenar muchas de estas arquitecturas con PyTorch y TensorFlow. + +## 🚀 Desafío + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisión y Estudio Autónomo + +* [Publicación de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), que explica el clásico artículo [Attention is all you need](https://arxiv.org/abs/1706.03762) sobre transformadores. +* [Una serie de publicaciones de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sobre transformadores, que explican la arquitectura en detalle. + +## [Tarea](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/18-Transformers/assignment.md b/translations/es/lessons/5-NLP/18-Transformers/assignment.md index b15ed6c9..c8c8b752 100644 --- a/translations/es/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/es/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Asignación: Transformadores + +# Asignación: Transformers -¡Experimenta con Transformadores en HuggingFace! Prueba algunos de los scripts que proporcionan para trabajar con los diversos modelos disponibles en su sitio: https://huggingface.co/docs/transformers/run_scripts. Intenta con uno de sus conjuntos de datos, luego importa uno de los tuyos de este currículo o de Kaggle y ve si puedes generar textos interesantes. Produce un cuaderno con tus hallazgos. +¡Experimenta con Transformers en HuggingFace! Prueba algunos de los scripts que ofrecen para trabajar con los diversos modelos disponibles en su sitio: https://huggingface.co/docs/transformers/run_scripts. Prueba uno de sus conjuntos de datos, luego importa uno propio de este currículo o de Kaggle y mira si puedes generar textos interesantes. Produce un cuaderno con tus hallazgos. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/19-NER/README.md b/translations/es/lessons/5-NLP/19-NER/README.md index b2199105..55e5266e 100644 --- a/translations/es/lessons/5-NLP/19-NER/README.md +++ b/translations/es/lessons/5-NLP/19-NER/README.md @@ -1,61 +1,70 @@ + # Reconocimiento de Entidades Nombradas -Hasta ahora, nos hemos concentrado principalmente en una tarea de PLN: la clasificación. Sin embargo, también hay otras tareas de PLN que se pueden realizar con redes neuronales. Una de esas tareas es **[Reconocimiento de Entidades Nombradas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que se ocupa de reconocer entidades específicas dentro del texto, como lugares, nombres de personas, intervalos de fecha y hora, fórmulas químicas, y más. +Hasta ahora, nos hemos concentrado principalmente en una tarea de PLN: la clasificación. Sin embargo, existen otras tareas de PLN que se pueden realizar con redes neuronales. Una de esas tareas es **[Reconocimiento de Entidades Nombradas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER, por sus siglas en inglés), que se ocupa de reconocer entidades específicas dentro de un texto, como lugares, nombres de personas, intervalos de fechas y horas, fórmulas químicas, entre otros. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) ## Ejemplo de Uso de NER -Supongamos que deseas desarrollar un chatbot de lenguaje natural, similar a Amazon Alexa o Google Assistant. La forma en que funcionan los chatbots inteligentes es *entendiendo* lo que el usuario quiere mediante la clasificación de texto de la frase de entrada. El resultado de esta clasificación es lo que se llama **intención**, que determina lo que debe hacer un chatbot. +Supongamos que deseas desarrollar un chatbot de lenguaje natural, similar a Amazon Alexa o Google Assistant. La forma en que funcionan los chatbots inteligentes es *entendiendo* lo que el usuario quiere mediante la clasificación de texto en la frase de entrada. El resultado de esta clasificación es el llamado **intento**, que determina lo que el chatbot debe hacer. Bot NER > Imagen del autor -Sin embargo, un usuario puede proporcionar algunos parámetros como parte de la frase. Por ejemplo, al preguntar por el clima, puede especificar una ubicación o una fecha. Un bot debe ser capaz de entender esas entidades y completar los espacios de parámetros de acuerdo antes de realizar la acción. Aquí es donde entra en juego NER. +Sin embargo, un usuario puede proporcionar algunos parámetros como parte de la frase. Por ejemplo, al preguntar por el clima, puede especificar una ubicación o una fecha. Un bot debe ser capaz de entender esas entidades y completar los espacios de los parámetros en consecuencia antes de realizar la acción. Aquí es exactamente donde entra en juego NER. -> ✅ Otro ejemplo sería [analizar artículos médicos científicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una de las principales cosas que necesitamos buscar son términos médicos específicos, como enfermedades y sustancias médicas. Si bien un pequeño número de enfermedades probablemente se pueden extraer utilizando la búsqueda de subcadenas, entidades más complejas, como compuestos químicos y nombres de medicamentos, requieren un enfoque más complejo. +> ✅ Otro ejemplo sería [analizar artículos científicos médicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una de las principales cosas que necesitamos buscar son términos médicos específicos, como enfermedades y sustancias médicas. Mientras que un pequeño número de enfermedades probablemente se pueda extraer mediante búsqueda de subcadenas, entidades más complejas, como compuestos químicos y nombres de medicamentos, requieren un enfoque más sofisticado. ## NER como Clasificación de Tokens -Los modelos NER son esencialmente **modelos de clasificación de tokens**, porque para cada uno de los tokens de entrada necesitamos decidir si pertenece a una entidad o no, y si lo hace, a qué clase de entidad pertenece. +Los modelos de NER son esencialmente **modelos de clasificación de tokens**, porque para cada uno de los tokens de entrada necesitamos decidir si pertenece a una entidad o no, y si lo hace, a qué clase de entidad pertenece. -Considera el siguiente título de un artículo: +Consideremos el siguiente título de un artículo: -**Regurgitación de la válvula tricúspide** y **toxicidad del carbonato de litio** en un recién nacido. +**Regurgitación de la válvula tricúspide** y **carbonato de litio** **toxicidad** en un recién nacido. Las entidades aquí son: * Regurgitación de la válvula tricúspide es una enfermedad (`DIS`) -* El carbonato de litio es una sustancia química (`CHEM`) +* Carbonato de litio es una sustancia química (`CHEM`) * Toxicidad también es una enfermedad (`DIS`) -Observa que una entidad puede abarcar varios tokens. Y, como en este caso, necesitamos distinguir entre dos entidades consecutivas. Por lo tanto, es común utilizar dos clases para cada entidad: una que especifica el primer token de la entidad (a menudo se utiliza el prefijo `B-`, para **b**eginning), y otra - la continuación de una entidad (`I-`, para **i**nner token). También usamos `O` como una clase para representar todos los **o**tros tokens. Este etiquetado de tokens se llama [etiquetado BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Cuando se etiqueta, nuestro título se verá así: +Observa que una entidad puede abarcar varios tokens. Y, como en este caso, necesitamos distinguir entre dos entidades consecutivas. Por lo tanto, es común usar dos clases para cada entidad: una que especifica el primer token de la entidad (a menudo se usa el prefijo `B-`, para **b**eginning o inicio), y otra para la continuación de una entidad (`I-`, para **i**nner token o token interno). También usamos `O` como clase para representar todos los **o**tros tokens. Este etiquetado de tokens se llama [etiquetado BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Cuando se etiqueta, nuestro título se verá así: Token | Etiqueta -------|----- -Tricúspide | B-DIS -válvula | I-DIS -regurgitación | I-DIS -y | O -litio | B-CHEM -carbonato | I-CHEM -toxicidad | B-DIS -en | O -un | O -recién | O -nacido | O +------|--------- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O . | O -Dado que necesitamos construir una correspondencia uno a uno entre tokens y clases, podemos entrenar un modelo de red neuronal **muchos a muchos** a partir de esta imagen: +Dado que necesitamos construir una correspondencia uno a uno entre tokens y clases, podemos entrenar un modelo neuronal **muchos a muchos** como el que se muestra en esta imagen: -![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg) +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> *Imagen de [esta publicación en el blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Los modelos de clasificación de tokens NER corresponden a la arquitectura de red más a la derecha en esta imagen.* +> *Imagen de [este artículo](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Los modelos de clasificación de tokens NER corresponden a la arquitectura de red más a la derecha en esta imagen.* ## Entrenamiento de Modelos NER -Dado que un modelo NER es esencialmente un modelo de clasificación de tokens, podemos usar RNNs que ya conocemos para esta tarea. En este caso, cada bloque de la red recurrente devolverá el ID del token. El siguiente cuaderno de ejemplo muestra cómo entrenar un LSTM para la clasificación de tokens. +Dado que un modelo NER es esencialmente un modelo de clasificación de tokens, podemos usar RNNs, con las que ya estamos familiarizados, para esta tarea. En este caso, cada bloque de la red recurrente devolverá el ID del token. El siguiente cuaderno de ejemplo muestra cómo entrenar un LSTM para la clasificación de tokens. ## ✍️ Cuadernos de Ejemplo: NER @@ -65,21 +74,21 @@ Continúa tu aprendizaje en el siguiente cuaderno: ## Conclusión -Un modelo NER es un **modelo de clasificación de tokens**, lo que significa que se puede utilizar para realizar clasificación de tokens. Esta es una tarea muy común en PLN, ayudando a reconocer entidades específicas dentro del texto, incluyendo lugares, nombres, fechas, y más. +Un modelo NER es un **modelo de clasificación de tokens**, lo que significa que se puede usar para realizar clasificación de tokens. Esta es una tarea muy común en PLN, que ayuda a reconocer entidades específicas dentro de un texto, incluyendo lugares, nombres, fechas y más. ## 🚀 Desafío Completa la tarea vinculada a continuación para entrenar un modelo de reconocimiento de entidades nombradas para términos médicos, y luego pruébalo en un conjunto de datos diferente. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) ## Revisión y Autoestudio -Lee el blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) y sigue la sección de Lectura Adicional en ese artículo para profundizar tu conocimiento. +Lee el artículo [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) y sigue la sección de Lecturas Adicionales en ese artículo para profundizar tu conocimiento. ## [Tarea](lab/README.md) -En la tarea de esta lección, tendrás que entrenar un modelo de reconocimiento de entidades médicas. Puedes comenzar entrenando un modelo LSTM como se describe en esta lección y continuar usando el modelo de transformador BERT. Lee [las instrucciones](lab/README.md) para obtener todos los detalles. +En la tarea de esta lección, tendrás que entrenar un modelo de reconocimiento de entidades médicas. Puedes comenzar entrenando un modelo LSTM como se describe en esta lección, y luego avanzar al uso del modelo transformador BERT. Lee [las instrucciones](lab/README.md) para obtener todos los detalles. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/19-NER/lab/README.md b/translations/es/lessons/5-NLP/19-NER/lab/README.md index 34efe03b..fdbcd787 100644 --- a/translations/es/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/es/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Asignación de laboratorio del [Currículo de AI para Principiantes](https://github.com/microsoft/ai-for-beginners). ## Tarea -En este laboratorio, necesitas entrenar un modelo de reconocimiento de entidades nombradas para términos médicos. +En este laboratorio, necesitas entrenar un modelo de reconocimiento de entidades nombradas (NER) para términos médicos. ## El Conjunto de Datos -Para entrenar el modelo NER, necesitamos un conjunto de datos debidamente etiquetado con entidades médicas. El [conjunto de datos BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene entidades de enfermedades y químicos etiquetadas de más de 1500 artículos. Puedes descargar el conjunto de datos después de registrarte en su sitio web. +Para entrenar un modelo NER, necesitamos un conjunto de datos etiquetado correctamente con entidades médicas. El [conjunto de datos BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene entidades etiquetadas de enfermedades y productos químicos extraídas de más de 1500 artículos. Puedes descargar el conjunto de datos después de registrarte en su sitio web. -El conjunto de datos BC5CDR se ve así: +El conjunto de datos BC5CDR tiene el siguiente formato: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ El conjunto de datos BC5CDR se ve así: ... ``` -En este conjunto de datos, hay el título del artículo y el resumen en las dos primeras líneas, y luego hay entidades individuales, con posiciones de inicio y fin dentro del bloque de título+resumen. Además del tipo de entidad, obtienes el ID de ontología de esta entidad dentro de alguna ontología médica. +En este conjunto de datos, el título y el resumen del artículo están en las dos primeras líneas, y luego aparecen las entidades individuales, con posiciones de inicio y fin dentro del bloque de título+resumen. Además del tipo de entidad, obtienes el ID de ontología de esta entidad dentro de alguna ontología médica. Necesitarás escribir algo de código en Python para convertir esto en codificación BIO. ## La Red -El primer intento de NER se puede realizar utilizando una red LSTM, como en nuestro ejemplo que has visto durante la lección. Sin embargo, en tareas de PLN, la [arquitectura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), y específicamente los [modelos de lenguaje BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), muestran resultados mucho mejores. Los modelos BERT preentrenados entienden la estructura general de un idioma y pueden ser ajustados para tareas específicas con conjuntos de datos relativamente pequeños y costos computacionales bajos. +El primer intento de NER puede realizarse utilizando una red LSTM, como en nuestro ejemplo que viste durante la lección. Sin embargo, en tareas de procesamiento de lenguaje natural (NLP), la [arquitectura transformer](https://es.wikipedia.org/wiki/Transformer_(modelo_de_aprendizaje_autom%C3%A1tico)), y específicamente los [modelos de lenguaje BERT](https://es.wikipedia.org/wiki/BERT_(modelo_de_lenguaje)) muestran resultados mucho mejores. Los modelos BERT preentrenados comprenden la estructura general de un idioma y pueden ajustarse para tareas específicas con conjuntos de datos relativamente pequeños y costos computacionales bajos. -Dado que planeamos aplicar NER a un escenario médico, tiene sentido usar un modelo BERT entrenado en textos médicos. Microsoft Research ha lanzado un modelo preentrenado llamado [PubMedBERT][PubMedBERT] ([publicación][PubMedBERT-Pub]), que fue ajustado utilizando textos del repositorio de [PubMed](https://pubmed.ncbi.nlm.nih.gov/). +Dado que planeamos aplicar NER a un escenario médico, tiene sentido usar un modelo BERT entrenado en textos médicos. Microsoft Research ha lanzado un modelo preentrenado llamado [PubMedBERT][PubMedBERT] ([publicación][PubMedBERT-Pub]), que fue ajustado utilizando textos del repositorio [PubMed](https://pubmed.ncbi.nlm.nih.gov/). -El estándar *de facto* para entrenar modelos transformer es la biblioteca [Hugging Face Transformers](https://huggingface.co/). También contiene un repositorio de modelos preentrenados mantenidos por la comunidad, incluyendo PubMedBERT. Para cargar y usar este modelo, solo necesitamos un par de líneas de código: +El estándar *de facto* para entrenar modelos transformer es la biblioteca [Hugging Face Transformers](https://huggingface.co/). También contiene un repositorio de modelos preentrenados mantenidos por la comunidad, incluyendo PubMedBERT. Para cargar y usar este modelo, solo necesitamos unas pocas líneas de código: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Esto nos da el objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que puede dividir el texto de entrada en tokens. Necesitarás convertir el conjunto de datos en formato BIO, teniendo en cuenta la tokenización de PubMedBERT. Puedes usar [este fragmento de código en Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiración. +Esto nos proporciona el `model` en sí, construido para la tarea de clasificación de tokens utilizando un número de `classes`, así como el objeto `tokenizer` que puede dividir el texto de entrada en tokens. Necesitarás convertir el conjunto de datos al formato BIO, teniendo en cuenta la tokenización de PubMedBERT. Puedes usar [este fragmento de código en Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiración. ## Conclusión -Esta tarea está muy cerca de la tarea real que probablemente tendrás si deseas obtener más información sobre grandes volúmenes de textos en lenguaje natural. En nuestro caso, podemos aplicar nuestro modelo entrenado al [conjunto de datos de artículos relacionados con COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) y ver qué información podremos obtener. [Esta publicación en el blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) y [este artículo](https://www.mdpi.com/2504-2289/6/1/4) describen la investigación que se puede realizar sobre este corpus de artículos utilizando NER. +Esta tarea está muy cerca de las tareas reales que probablemente tendrás si deseas obtener más información de grandes volúmenes de textos en lenguaje natural. En nuestro caso, podemos aplicar nuestro modelo entrenado al [conjunto de datos de artículos relacionados con COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) y ver qué información podemos obtener. [Este artículo de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) y [este artículo académico](https://www.mdpi.com/2504-2289/6/1/4) describen la investigación que se puede realizar en este corpus de artículos utilizando NER. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/20-LangModels/README.md b/translations/es/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..cd5c557d --- /dev/null +++ b/translations/es/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Modelos de Lenguaje Grandes Preentrenados + +En todas nuestras tareas anteriores, entrenábamos una red neuronal para realizar una tarea específica utilizando un conjunto de datos etiquetado. Con modelos transformadores grandes, como BERT, utilizamos el modelado de lenguaje de manera auto-supervisada para construir un modelo de lenguaje, que luego se especializa en tareas específicas con entrenamiento adicional en dominios específicos. Sin embargo, se ha demostrado que los modelos de lenguaje grandes también pueden resolver muchas tareas sin NINGÚN entrenamiento específico de dominio. Una familia de modelos capaz de hacer esto se llama **GPT**: Generative Pre-Trained Transformer. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generación de Texto y Perplejidad + +La idea de que una red neuronal pueda realizar tareas generales sin entrenamiento adicional se presenta en el artículo [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). La idea principal es que muchas otras tareas pueden modelarse utilizando **generación de texto**, porque comprender el texto esencialmente significa ser capaz de producirlo. Debido a que el modelo está entrenado con una enorme cantidad de texto que abarca el conocimiento humano, también se vuelve conocedor de una amplia variedad de temas. + +> Comprender y ser capaz de producir texto también implica saber algo sobre el mundo que nos rodea. Las personas también aprenden en gran medida leyendo, y la red GPT es similar en este aspecto. + +Las redes de generación de texto funcionan prediciendo la probabilidad de la siguiente palabra $$P(w_N)$$. Sin embargo, la probabilidad incondicional de la siguiente palabra equivale a la frecuencia de esta palabra en el corpus de texto. GPT es capaz de proporcionarnos la **probabilidad condicional** de la siguiente palabra, dadas las anteriores: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Puedes leer más sobre probabilidades en nuestro [Currículo de Ciencia de Datos para Principiantes](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +La calidad de un modelo generador de lenguaje puede definirse utilizando la **perplejidad**. Es una métrica intrínseca que nos permite medir la calidad del modelo sin necesidad de un conjunto de datos específico para la tarea. Se basa en la noción de *probabilidad de una oración*: el modelo asigna alta probabilidad a una oración que probablemente sea real (es decir, el modelo no está **perplejo** por ella) y baja probabilidad a oraciones que tienen menos sentido (por ejemplo, *¿Puede hacer qué?*). Cuando le damos a nuestro modelo oraciones de un corpus de texto real, esperaríamos que tengan alta probabilidad y baja **perplejidad**. Matemáticamente, se define como la probabilidad inversa normalizada del conjunto de prueba: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Puedes experimentar con la generación de texto utilizando el [editor de texto impulsado por GPT de Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. En este editor, comienzas escribiendo tu texto y al presionar **[TAB]** se te ofrecerán varias opciones de completado. Si son demasiado cortas o no estás satisfecho con ellas, presiona [TAB] nuevamente y tendrás más opciones, incluyendo fragmentos de texto más largos. + +## GPT es una Familia + +GPT no es un modelo único, sino más bien una colección de modelos desarrollados y entrenados por [OpenAI](https://openai.com). + +Dentro de los modelos GPT, tenemos: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Modelo de lenguaje con hasta 1.5 mil millones de parámetros. | Modelo de lenguaje con hasta 175 mil millones de parámetros. | 100T parámetros y acepta tanto entradas de imágenes como de texto, y genera texto como salida. | + +Los modelos GPT-3 y GPT-4 están disponibles [como un servicio cognitivo de Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) y como [API de OpenAI](https://openai.com/api/). + +## Ingeniería de Prompts + +Debido a que GPT ha sido entrenado con grandes volúmenes de datos para comprender lenguaje y código, proporciona resultados en respuesta a entradas (prompts). Los prompts son entradas o consultas para GPT en las que se proporcionan instrucciones a los modelos sobre las tareas que deben completar. Para obtener un resultado deseado, necesitas el prompt más efectivo, lo que implica seleccionar las palabras, formatos, frases o incluso símbolos adecuados. Este enfoque se llama [Ingeniería de Prompts](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Esta documentación](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) te proporciona más información sobre ingeniería de prompts. + +## ✍️ Notebook de Ejemplo: [Jugando con OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continúa tu aprendizaje en los siguientes notebooks: + +* [Generación de texto con OpenAI-GPT y Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusión + +Los nuevos modelos de lenguaje preentrenados generales no solo modelan la estructura del lenguaje, sino que también contienen una gran cantidad de lenguaje natural. Por lo tanto, pueden ser utilizados de manera efectiva para resolver algunas tareas de procesamiento de lenguaje natural en configuraciones de cero o pocas muestras. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/README.md b/translations/es/lessons/5-NLP/README.md index a329ef8e..dc7c5fd3 100644 --- a/translations/es/lessons/5-NLP/README.md +++ b/translations/es/lessons/5-NLP/README.md @@ -1,26 +1,35 @@ + # Procesamiento de Lenguaje Natural -![Resumen de tareas de PLN en un garabato](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.es.png) +![Resumen de tareas de PLN en un dibujo](../../../../lessons/sketchnotes/ai-nlp.png) -En esta sección, nos centraremos en el uso de Redes Neuronales para abordar tareas relacionadas con el **Procesamiento de Lenguaje Natural (PLN)**. Existen muchos problemas de PLN que queremos que los ordenadores puedan resolver: +En esta sección, nos enfocaremos en usar Redes Neuronales para manejar tareas relacionadas con el **Procesamiento de Lenguaje Natural (PLN)**. Hay muchos problemas de PLN que queremos que las computadoras puedan resolver: -* **Clasificación de texto** es un problema típico de clasificación relacionado con secuencias de texto. Ejemplos incluyen clasificar mensajes de correo electrónico como spam o no spam, o categorizar artículos como deportes, negocios, política, etc. Además, al desarrollar chatbots, a menudo necesitamos entender lo que un usuario quería decir; en este caso, estamos tratando con **clasificación de intenciones**. A menudo, en la clasificación de intenciones necesitamos lidiar con muchas categorías. -* **Análisis de sentimientos** es un problema típico de regresión, donde necesitamos atribuir un número (un sentimiento) que corresponde a cuán positivo o negativo es el significado de una oración. Una versión más avanzada del análisis de sentimientos es el **análisis de sentimientos basado en aspectos** (ABSA), donde atribuimos el sentimiento no a toda la oración, sino a diferentes partes de ella (aspectos), por ejemplo, *En este restaurante, me gustó la cocina, pero la atmósfera era horrible*. -* **Reconocimiento de Entidades Nombradas** (NER) se refiere al problema de extraer ciertas entidades del texto. Por ejemplo, podríamos necesitar entender que en la frase *Necesito volar a París mañana* la palabra *mañana* se refiere a una FECHA, y *París* es una UBICACIÓN. -* **Extracción de palabras clave** es similar a NER, pero necesitamos extraer automáticamente palabras importantes para el significado de la oración, sin entrenamiento previo para tipos de entidades específicos. -* **Agrupamiento de texto** puede ser útil cuando queremos agrupar oraciones similares, por ejemplo, solicitudes similares en conversaciones de soporte técnico. -* **Respuesta a preguntas** se refiere a la capacidad de un modelo para responder a una pregunta específica. El modelo recibe un pasaje de texto y una pregunta como entradas, y necesita proporcionar un lugar en el texto donde se contiene la respuesta a la pregunta (o, a veces, generar el texto de respuesta). -* **Generación de texto** es la capacidad de un modelo para generar nuevo texto. Puede considerarse como una tarea de clasificación que predice la siguiente letra/palabra basada en un *texto de entrada*. Modelos avanzados de generación de texto, como GPT-3, son capaces de resolver otras tareas de PLN, como clasificación, utilizando una técnica llamada [programación de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingeniería de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Resumen de texto** es una técnica cuando queremos que una computadora "lea" un texto largo y lo resuma en unas pocas oraciones. +* **Clasificación de texto** es un problema típico de clasificación relacionado con secuencias de texto. Ejemplos incluyen clasificar mensajes de correo electrónico como spam o no spam, o categorizar artículos como deporte, negocios, política, etc. Además, al desarrollar chatbots, a menudo necesitamos entender lo que un usuario quiso decir; en este caso estamos tratando con **clasificación de intención**. Frecuentemente, en la clasificación de intención necesitamos manejar muchas categorías. +* **Análisis de sentimientos** es un problema típico de regresión, donde necesitamos atribuir un número (un sentimiento) que corresponda a cuán positivo/negativo es el significado de una oración. Una versión más avanzada del análisis de sentimientos es el **análisis de sentimientos basado en aspectos** (ABSA), donde atribuimos el sentimiento no a toda la oración, sino a diferentes partes de ella (aspectos), por ejemplo: *En este restaurante, me gustó la cocina, pero la atmósfera era horrible*. +* **Reconocimiento de entidades nombradas** (NER) se refiere al problema de extraer ciertas entidades del texto. Por ejemplo, podríamos necesitar entender que en la frase *Necesito volar a París mañana*, la palabra *mañana* se refiere a una FECHA, y *París* es una UBICACIÓN. +* **Extracción de palabras clave** es similar a NER, pero necesitamos extraer palabras importantes para el significado de la oración automáticamente, sin preentrenamiento para tipos específicos de entidades. +* **Agrupación de texto** puede ser útil cuando queremos agrupar oraciones similares, por ejemplo, solicitudes similares en conversaciones de soporte técnico. +* **Respuesta a preguntas** se refiere a la capacidad de un modelo para responder una pregunta específica. El modelo recibe un pasaje de texto y una pregunta como entradas, y necesita proporcionar un lugar en el texto donde se encuentre la respuesta a la pregunta (o, a veces, generar el texto de la respuesta). +* **Generación de texto** es la capacidad de un modelo para generar texto nuevo. Puede considerarse como una tarea de clasificación que predice la siguiente letra/palabra basada en algún *texto inicial*. Modelos avanzados de generación de texto, como GPT-3, son capaces de resolver otras tareas de PLN utilizando una técnica llamada [programación con prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingeniería de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Resumen de texto** es una técnica en la que queremos que una computadora "lea" un texto largo y lo resuma en unas pocas oraciones. * **Traducción automática** puede verse como una combinación de comprensión de texto en un idioma y generación de texto en otro. -Inicialmente, la mayoría de las tareas de PLN se resolvían utilizando métodos tradicionales como gramáticas. Por ejemplo, en la traducción automática se utilizaban analizadores para transformar la oración inicial en un árbol de sintaxis, luego se extraían estructuras semánticas de nivel superior para representar el significado de la oración, y con base en este significado y la gramática del idioma objetivo se generaba el resultado. Hoy en día, muchas tareas de PLN se resuelven de manera más efectiva utilizando redes neuronales. +Inicialmente, la mayoría de las tareas de PLN se resolvían utilizando métodos tradicionales como gramáticas. Por ejemplo, en la traducción automática se utilizaban analizadores para transformar la oración inicial en un árbol sintáctico, luego se extraían estructuras semánticas de nivel superior para representar el significado de la oración, y con base en este significado y la gramática del idioma de destino se generaba el resultado. Hoy en día, muchas tareas de PLN se resuelven de manera más efectiva utilizando redes neuronales. -> Muchos métodos clásicos de PLN están implementados en la biblioteca de Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Hay un excelente [Libro de NLTK](https://www.nltk.org/book/) disponible en línea que cubre cómo se pueden resolver diferentes tareas de PLN utilizando NLTK. +> Muchos métodos clásicos de PLN están implementados en la biblioteca de Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Hay un excelente [Libro de NLTK](https://www.nltk.org/book/) disponible en línea que cubre cómo resolver diferentes tareas de PLN utilizando NLTK. -En nuestro curso, nos centraremos principalmente en el uso de Redes Neuronales para PLN, y utilizaremos NLTK cuando sea necesario. +En nuestro curso, nos enfocaremos principalmente en usar Redes Neuronales para PLN, y utilizaremos NLTK cuando sea necesario. -Ya hemos aprendido sobre el uso de redes neuronales para tratar con datos tabulares y con imágenes. La principal diferencia entre esos tipos de datos y el texto es que el texto es una secuencia de longitud variable, mientras que el tamaño de entrada en el caso de las imágenes se conoce de antemano. Mientras que las redes convolucionales pueden extraer patrones de los datos de entrada, los patrones en el texto son más complejos. Por ejemplo, podemos tener negaciones separadas del sujeto que sean arbitrarias para muchas palabras (por ejemplo, *No me gustan las naranjas*, frente a *No me gustan esas grandes naranjas coloridas y sabrosas*), y eso aún debería interpretarse como un solo patrón. Por lo tanto, para manejar el lenguaje necesitamos introducir nuevos tipos de redes neuronales, como *redes recurrentes* y *transformadores*. +Ya hemos aprendido sobre el uso de redes neuronales para manejar datos tabulares y con imágenes. La principal diferencia entre esos tipos de datos y el texto es que el texto es una secuencia de longitud variable, mientras que el tamaño de entrada en el caso de las imágenes se conoce de antemano. Aunque las redes convolucionales pueden extraer patrones de los datos de entrada, los patrones en el texto son más complejos. Por ejemplo, podemos tener una negación separada del sujeto por muchas palabras arbitrarias (por ejemplo: *No me gustan las naranjas*, vs. *No me gustan esas naranjas grandes, coloridas y sabrosas*), y eso aún debe interpretarse como un solo patrón. Por lo tanto, para manejar el lenguaje necesitamos introducir nuevos tipos de redes neuronales, como *redes recurrentes* y *transformadores*. ## Instalar Bibliotecas @@ -39,13 +48,13 @@ pip install -r requirements-tf.txt ## Advertencia sobre GPU -En esta sección, en algunos de los ejemplos estaremos entrenando modelos bastante grandes. -* **Usa una computadora habilitada para GPU**: Es recomendable ejecutar tus cuadernos en una computadora habilitada para GPU para reducir los tiempos de espera al trabajar con modelos grandes. -* **Restricciones de memoria de GPU**: Ejecutar en una GPU puede llevar a situaciones donde te quedes sin memoria de GPU, especialmente al entrenar modelos grandes. +En esta sección, en algunos de los ejemplos entrenaremos modelos bastante grandes. +* **Usa una computadora con GPU**: Es recomendable ejecutar tus notebooks en una computadora con GPU para reducir los tiempos de espera al trabajar con modelos grandes. +* **Restricciones de memoria de GPU**: Ejecutar en una GPU puede llevar a situaciones en las que te quedes sin memoria de GPU, especialmente al entrenar modelos grandes. * **Consumo de memoria de GPU**: La cantidad de memoria de GPU consumida durante el entrenamiento depende de varios factores, incluido el tamaño del minibatch. * **Minimiza el tamaño del minibatch**: Si encuentras problemas de memoria de GPU, considera reducir el tamaño del minibatch en tu código como una posible solución. -* **Liberación de memoria de GPU en TensorFlow**: Las versiones más antiguas de TensorFlow pueden no liberar correctamente la memoria de GPU al entrenar múltiples modelos dentro de un mismo kernel de Python. Para gestionar el uso de memoria de GPU de manera efectiva, puedes configurar TensorFlow para que asigne memoria de GPU solo según sea necesario. -* **Inclusión de código**: Para configurar TensorFlow para que aumente la asignación de memoria de GPU solo cuando sea necesario, incluye el siguiente código en tus cuadernos: +* **Liberación de memoria de GPU en TensorFlow**: Las versiones antiguas de TensorFlow pueden no liberar correctamente la memoria de GPU al entrenar múltiples modelos dentro de un mismo kernel de Python. Para gestionar el uso de memoria de GPU de manera efectiva, puedes configurar TensorFlow para que asigne memoria de GPU solo según sea necesario. +* **Inclusión de código**: Para configurar TensorFlow para que crezca la asignación de memoria de GPU solo cuando sea necesario, incluye el siguiente código en tus notebooks: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +62,17 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Si estás interesado en aprender sobre PLN desde una perspectiva clásica de ML, visita [este conjunto de lecciones](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Si estás interesado en aprender sobre PLN desde una perspectiva de ML clásico, visita [esta serie de lecciones](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## En esta Sección +## En esta sección En esta sección aprenderemos sobre: -* [Representación de texto como tensores](13-TextRep/README.md) +* [Representar texto como tensores](13-TextRep/README.md) * [Embeddings de palabras](14-Emdeddings/README.md) -* [Modelado del lenguaje](15-LanguageModeling/README.md) +* [Modelado de lenguaje](15-LanguageModeling/README.md) * [Redes Neuronales Recurrentes](16-RNN/README.md) * [Redes Generativas](17-GenerativeNetworks/README.md) * [Transformadores](18-Transformers/README.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md index 71e59689..09eb8d8e 100644 --- a/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ + # Algoritmos Genéticos ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Algoritmos Genéticos** (GA) se basan en un **enfoque evolutivo** para la IA, en el que se utilizan métodos de la evolución de una población para obtener una solución óptima para un problema dado. Fueron propuestos en 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). +Los **Algoritmos Genéticos** (AG) se basan en un **enfoque evolutivo** de la IA, en el que se utilizan métodos de evolución de una población para obtener una solución óptima para un problema dado. Fueron propuestos en 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). Los Algoritmos Genéticos se basan en las siguientes ideas: -* Las soluciones válidas al problema pueden ser representadas como **genes** -* **Crossover** nos permite combinar dos soluciones para obtener una nueva solución válida -* **Selección** se utiliza para seleccionar soluciones más óptimas utilizando alguna **función de aptitud** -* Se introducen **mutaciones** para desestabilizar la optimización y salir del mínimo local +* Las soluciones válidas al problema pueden representarse como **genes**. +* El **cruce** nos permite combinar dos soluciones para obtener una nueva solución válida. +* La **selección** se utiliza para elegir las soluciones más óptimas usando alguna **función de aptitud**. +* Se introducen **mutaciones** para desestabilizar la optimización y salir de mínimos locales. Si deseas implementar un Algoritmo Genético, necesitas lo siguiente: - * Encontrar un método para codificar nuestras soluciones de problema utilizando **genes** g∈Γ - * En el conjunto de genes Γ, necesitamos definir la **función de aptitud** fit: Γ→**R**. Los valores más pequeños de la función corresponden a mejores soluciones. - * Definir un mecanismo de **crossover** para combinar dos genes y obtener una nueva solución válida crossover: Γ2→Γ. + * Encontrar un método para codificar las soluciones de nuestro problema usando **genes** g∈Γ. + * En el conjunto de genes Γ, definir una **función de aptitud** fit: Γ→**R**. Los valores más pequeños de la función corresponden a mejores soluciones. + * Definir un mecanismo de **cruce** para combinar dos genes y obtener una nueva solución válida crossover: Γ2→Γ. * Definir un mecanismo de **mutación** mutate: Γ→Γ. -En muchos casos, el crossover y la mutación son algoritmos bastante simples para manipular genes como secuencias numéricas o vectores de bits. +En muchos casos, los algoritmos de cruce y mutación son bastante simples para manipular genes como secuencias numéricas o vectores de bits. -La implementación específica de un algoritmo genético puede variar de un caso a otro, pero la estructura general es la siguiente: +La implementación específica de un algoritmo genético puede variar según el caso, pero la estructura general es la siguiente: -1. Seleccionar una población inicial G⊂Γ -2. Seleccionar aleatoriamente una de las operaciones que se realizarán en este paso: crossover o mutación -3. **Crossover**: - * Seleccionar aleatoriamente dos genes g1, g2 ∈ G - * Calcular crossover g=crossover(g1,g2) - * Si fit(g)1) o fit(g)2) - reemplazar el gen correspondiente en la población por g. -4. **Mutación** - seleccionar un gen aleatorio g∈G y reemplazarlo por mutate(g) -5. Repetir desde el paso 2, hasta que obtengamos un valor de fit suficientemente pequeño, o hasta que se alcance el límite en el número de pasos. +1. Seleccionar una población inicial G⊂Γ. +2. Seleccionar aleatoriamente una de las operaciones que se realizarán en este paso: cruce o mutación. +3. **Cruce**: + * Seleccionar aleatoriamente dos genes g1, g2 ∈ G. + * Calcular el cruce g=crossover(g1,g2). + * Si fit(g)1) o fit(g)2), reemplazar el gen correspondiente en la población por g. +4. **Mutación**: seleccionar un gen aleatorio g∈G y reemplazarlo por mutate(g). +5. Repetir desde el paso 2, hasta obtener un valor suficientemente pequeño de fit, o hasta alcanzar el límite en el número de pasos. -## Tareas Típicas +## Tareas típicas -Las tareas que normalmente se resuelven con Algoritmos Genéticos incluyen: +Las tareas que suelen resolverse con Algoritmos Genéticos incluyen: 1. Optimización de horarios 1. Empaque óptimo 1. Corte óptimo -1. Aceleración de búsqueda exhaustiva +1. Aceleración de búsquedas exhaustivas ## ✍️ Ejercicios: Algoritmos Genéticos -Continúa tu aprendizaje en los siguientes cuadernos: +Continúa tu aprendizaje en los siguientes notebooks: -Ve a [este cuaderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dos ejemplos de uso de Algoritmos Genéticos: +Ve a [este notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dos ejemplos de uso de Algoritmos Genéticos: -1. División justa del tesoro -1. Problema de las 8 Reinas +1. División justa de un tesoro +1. Problema de las 8 reinas ## Conclusión -Los Algoritmos Genéticos se utilizan para resolver muchos problemas, incluidos problemas de logística y búsqueda. El campo se inspira en investigaciones que fusionaron temas de Psicología y Ciencias de la Computación. +Los Algoritmos Genéticos se utilizan para resolver muchos problemas, incluidos problemas de logística y búsqueda. Este campo está inspirado en investigaciones que fusionaron temas de Psicología y Ciencias de la Computación. ## 🚀 Desafío -"Los algoritmos genéticos son simples de implementar, pero su comportamiento es difícil de entender." [fuente](https://wikipedia.org/wiki/Genetic_algorithm) Realiza una investigación para encontrar una implementación de un algoritmo genético, como resolver un rompecabezas de Sudoku, y explica cómo funciona en un esquema o diagrama de flujo. +"Los algoritmos genéticos son simples de implementar, pero su comportamiento es difícil de entender." [fuente](https://wikipedia.org/wiki/Genetic_algorithm) Investiga para encontrar una implementación de un algoritmo genético, como resolver un rompecabezas de Sudoku, y explica cómo funciona mediante un esquema o diagrama de flujo. ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Revisión y Autoestudio +## Revisión y autoestudio -Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo las computadoras pueden aprender a jugar Super Mario utilizando redes neuronales entrenadas por algoritmos genéticos. Aprenderemos más sobre cómo las computadoras aprenden a jugar juegos como ese [en la siguiente sección](../22-DeepRL/README.md). +Mira [este excelente video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario usando redes neuronales entrenadas por algoritmos genéticos. Aprenderemos más sobre cómo las computadoras aprenden a jugar juegos como este [en la siguiente sección](../22-DeepRL/README.md). -## [Tarea: Ecuación Diofantina](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [Asignación: Ecuación Diofántica](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Tu objetivo es resolver la llamada **ecuación diofantina** - una ecuación con raíces enteras. Por ejemplo, considera la ecuación a+2b+3c+4d=30. Necesitas encontrar las raíces enteras que satisfacen esta ecuación. +Tu objetivo es resolver la llamada **ecuación diofántica**, una ecuación con raíces enteras. Por ejemplo, considera la ecuación a+2b+3c+4d=30. Necesitas encontrar las raíces enteras que satisfacen esta ecuación. -*Esta tarea está inspirada en [esta publicación](https://habr.com/post/128704/).* +*Esta asignación está inspirada en [este artículo](https://habr.com/post/128704/).* -Consejos: +Pistas: -1. Puedes considerar que las raíces están en el intervalo [0;30] -1. Como gen, considera usar la lista de valores de raíz +1. Puedes considerar las raíces en el intervalo [0;30]. +1. Como gen, considera usar la lista de valores de las raíces. -Utiliza [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como punto de partida. +Usa [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como punto de partida. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/22-DeepRL/README.md b/translations/es/lessons/6-Other/22-DeepRL/README.md index 8f121e76..07d54f92 100644 --- a/translations/es/lessons/6-Other/22-DeepRL/README.md +++ b/translations/es/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# Aprendizaje Profundo por Refuerzo + +# Aprendizaje por Refuerzo Profundo -El aprendizaje por refuerzo (RL) se considera uno de los paradigmas básicos del aprendizaje automático, junto al aprendizaje supervisado y no supervisado. Mientras que en el aprendizaje supervisado nos basamos en un conjunto de datos con resultados conocidos, el RL se basa en **aprender haciendo**. Por ejemplo, cuando vemos un videojuego por primera vez, comenzamos a jugar, incluso sin conocer las reglas, y pronto somos capaces de mejorar nuestras habilidades simplemente a través del proceso de jugar y ajustar nuestro comportamiento. +El aprendizaje por refuerzo (RL, por sus siglas en inglés) se considera uno de los paradigmas básicos del aprendizaje automático, junto con el aprendizaje supervisado y no supervisado. Mientras que en el aprendizaje supervisado dependemos de un conjunto de datos con resultados conocidos, el RL se basa en **aprender haciendo**. Por ejemplo, cuando vemos un videojuego por primera vez, comenzamos a jugar, incluso sin conocer las reglas, y pronto somos capaces de mejorar nuestras habilidades simplemente jugando y ajustando nuestro comportamiento. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Cuestionario previo a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) Para realizar RL, necesitamos: -* Un **entorno** o **simulador** que establezca las reglas del juego. Debemos poder ejecutar experimentos en el simulador y observar los resultados. -* Una **función de recompensa**, que indique cuán exitoso fue nuestro experimento. En el caso de aprender a jugar un videojuego, la recompensa sería nuestra puntuación final. +* Un **entorno** o **simulador** que establezca las reglas del juego. Deberíamos poder ejecutar experimentos en el simulador y observar los resultados. +* Alguna **función de recompensa**, que indique qué tan exitoso fue nuestro experimento. En el caso de aprender a jugar un videojuego, la recompensa sería nuestra puntuación final. -Basándonos en la función de recompensa, deberíamos poder ajustar nuestro comportamiento y mejorar nuestras habilidades, de modo que la próxima vez juguemos mejor. La principal diferencia entre otros tipos de aprendizaje automático y el RL es que en el RL típicamente no sabemos si ganamos o perdemos hasta que terminamos el juego. Por lo tanto, no podemos decir si un determinado movimiento por sí solo es bueno o no; solo recibimos una recompensa al final del juego. +Basándonos en la función de recompensa, deberíamos ser capaces de ajustar nuestro comportamiento y mejorar nuestras habilidades, de modo que la próxima vez juguemos mejor. La principal diferencia entre otros tipos de aprendizaje automático y RL es que en RL típicamente no sabemos si ganamos o perdemos hasta que terminamos el juego. Por lo tanto, no podemos decir si un movimiento en particular es bueno o no; solo recibimos una recompensa al final del juego. -Durante el RL, normalmente realizamos muchos experimentos. Durante cada experimento, necesitamos equilibrar entre seguir la estrategia óptima que hemos aprendido hasta ahora (**explotación**) y explorar nuevos estados posibles (**exploración**). +Durante el RL, típicamente realizamos muchos experimentos. En cada experimento, necesitamos equilibrar entre seguir la estrategia óptima que hemos aprendido hasta ahora (**explotación**) y explorar nuevos estados posibles (**exploración**). ## OpenAI Gym -Una gran herramienta para RL es el [OpenAI Gym](https://gym.openai.com/) - un **entorno de simulación**, que puede simular muchos entornos diferentes, desde juegos de Atari hasta la física detrás del equilibrio de un palo. Es uno de los entornos de simulación más populares para entrenar algoritmos de aprendizaje por refuerzo, y es mantenido por [OpenAI](https://openai.com/). +Una gran herramienta para RL es el [OpenAI Gym](https://gym.openai.com/): un **entorno de simulación** que puede simular muchos entornos diferentes, desde juegos de Atari hasta la física detrás del equilibrio de un poste. Es uno de los entornos de simulación más populares para entrenar algoritmos de aprendizaje por refuerzo y es mantenido por [OpenAI](https://openai.com/). > **Nota**: Puedes ver todos los entornos disponibles en OpenAI Gym [aquí](https://gym.openai.com/envs/#classic_control). ## Equilibrio de CartPole -Probablemente todos hayan visto dispositivos de equilibrio modernos como el *Segway* o *Gyroscooters*. Son capaces de equilibrarse automáticamente ajustando sus ruedas en respuesta a una señal de un acelerómetro o giroscopio. En esta sección, aprenderemos cómo resolver un problema similar: equilibrar un palo. Es similar a una situación en la que un artista de circo necesita equilibrar un palo en su mano, pero este equilibrio de palo solo ocurre en 1D. +Probablemente todos han visto dispositivos modernos de equilibrio como el *Segway* o los *Gyroscooters*. Son capaces de equilibrarse automáticamente ajustando sus ruedas en respuesta a una señal de un acelerómetro o giroscopio. En esta sección, aprenderemos a resolver un problema similar: equilibrar un poste. Es similar a la situación en la que un artista de circo necesita equilibrar un poste en su mano, pero este equilibrio ocurre solo en 1D. -Una versión simplificada del equilibrio se conoce como el problema de **CartPole**. En el mundo de cartpole, tenemos un deslizador horizontal que puede moverse hacia la izquierda o hacia la derecha, y el objetivo es equilibrar un palo vertical en la parte superior del deslizador mientras se mueve. +Una versión simplificada de este problema se conoce como el problema de **CartPole**. En el mundo de CartPole, tenemos un deslizador horizontal que puede moverse hacia la izquierda o la derecha, y el objetivo es equilibrar un poste vertical sobre el deslizador mientras se mueve. un cartpole -Para crear y usar este entorno, necesitamos un par de líneas de código en Python: +Para crear y usar este entorno, necesitamos unas pocas líneas de código en Python: ```python import gym @@ -45,52 +54,52 @@ while not done: print(f"Total reward: {total_reward}") ``` -Cada entorno se puede acceder exactamente de la misma manera: -* `env.reset` starts a new experiment -* `env.step` realiza un paso de simulación. Recibe una **acción** del **espacio de acciones**, y devuelve una **observación** (del espacio de observaciones), así como una recompensa y una bandera de terminación. +Cada entorno puede ser accedido exactamente de la misma manera: +* `env.reset` inicia un nuevo experimento. +* `env.step` realiza un paso de simulación. Recibe una **acción** del **espacio de acciones** y devuelve una **observación** (del espacio de observación), así como una recompensa y una bandera de terminación. -En el ejemplo anterior, realizamos una acción aleatoria en cada paso, por lo que la vida del experimento es muy corta: +En el ejemplo anterior, realizamos una acción aleatoria en cada paso, por lo que la duración del experimento es muy corta: ![cartpole sin equilibrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -El objetivo de un algoritmo de RL es entrenar un modelo - la llamada **política** π - que devolverá la acción en respuesta a un estado dado. También podemos considerar la política como probabilística, es decir, para cualquier estado *s* y acción *a* devolverá la probabilidad π(*a*|*s*) de que debamos tomar *a* en el estado *s*. +El objetivo de un algoritmo de RL es entrenar un modelo, la llamada **política** π, que devolverá la acción en respuesta a un estado dado. También podemos considerar la política como probabilística, es decir, para cualquier estado *s* y acción *a*, devolverá la probabilidad π(*a*|*s*) de que deberíamos tomar *a* en el estado *s*. ## Algoritmo de Gradientes de Política -La forma más obvia de modelar una política es creando una red neuronal que tome estados como entrada y devuelva acciones correspondientes (o más bien las probabilidades de todas las acciones). En cierto sentido, sería similar a una tarea de clasificación normal, con una gran diferencia: no sabemos de antemano qué acciones debemos tomar en cada uno de los pasos. +La forma más obvia de modelar una política es creando una red neuronal que tome estados como entrada y devuelva las acciones correspondientes (o más bien las probabilidades de todas las acciones). En cierto sentido, sería similar a una tarea de clasificación normal, con una gran diferencia: no sabemos de antemano qué acciones deberíamos tomar en cada paso. -La idea aquí es estimar esas probabilidades. Construimos un vector de **recompensas acumulativas** que muestra nuestra recompensa total en cada paso del experimento. También aplicamos **descuento de recompensa** multiplicando las recompensas anteriores por algún coeficiente γ=0.99, con el fin de disminuir el papel de las recompensas anteriores. Luego, reforzamos esos pasos a lo largo del camino del experimento que generan mayores recompensas. +La idea aquí es estimar esas probabilidades. Construimos un vector de **recompensas acumulativas** que muestra nuestra recompensa total en cada paso del experimento. También aplicamos un **descuento de recompensas** multiplicando las recompensas anteriores por un coeficiente γ=0.99, para disminuir la importancia de las recompensas más antiguas. Luego, reforzamos aquellos pasos a lo largo del camino del experimento que producen mayores recompensas. -> Aprende más sobre el algoritmo de Gradiente de Política y míralo en acción en el [cuaderno de ejemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). +> Aprende más sobre el algoritmo de Gradientes de Política y míralo en acción en el [notebook de ejemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). ## Algoritmo Actor-Critic -Una versión mejorada del enfoque de Gradientes de Política se llama **Actor-Critic**. La idea principal detrás de esto es que la red neuronal se entrenaría para devolver dos cosas: +Una versión mejorada del enfoque de Gradientes de Política se llama **Actor-Critic**. La idea principal detrás de este enfoque es que la red neuronal se entrene para devolver dos cosas: * La política, que determina qué acción tomar. Esta parte se llama **actor**. -* La estimación de la recompensa total que podemos esperar obtener en este estado - esta parte se llama **crítico**. +* La estimación de la recompensa total que podemos esperar obtener en este estado; esta parte se llama **critic**. -En cierto sentido, esta arquitectura se asemeja a un [GAN](../../4-ComputerVision/10-GANs/README.md), donde tenemos dos redes que se entrenan entre sí. En el modelo actor-crítico, el actor propone la acción que necesitamos tomar, y el crítico intenta ser crítico y estimar el resultado. Sin embargo, nuestro objetivo es entrenar esas redes de manera conjunta. +En cierto sentido, esta arquitectura se asemeja a un [GAN](../../4-ComputerVision/10-GANs/README.md), donde tenemos dos redes que se entrenan una contra la otra. En el modelo actor-critic, el actor propone la acción que necesitamos tomar, y el crítico intenta ser crítico y estimar el resultado. Sin embargo, nuestro objetivo es entrenar estas redes en conjunto. -Dado que conocemos tanto las recompensas acumulativas reales como los resultados devueltos por el crítico durante el experimento, es relativamente fácil construir una función de pérdida que minimice la diferencia entre ellas. Eso nos daría la **pérdida del crítico**. Podemos calcular la **pérdida del actor** utilizando el mismo enfoque que en el algoritmo de gradiente de política. +Dado que conocemos tanto las recompensas acumulativas reales como los resultados devueltos por el crítico durante el experimento, es relativamente fácil construir una función de pérdida que minimice la diferencia entre ellos. Eso nos daría la **pérdida del crítico**. Podemos calcular la **pérdida del actor** utilizando el mismo enfoque que en el algoritmo de gradientes de política. Después de ejecutar uno de estos algoritmos, podemos esperar que nuestro CartPole se comporte así: -![un cartpole en equilibrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![cartpole equilibrado](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ Ejercicios: Gradientes de Política y RL Actor-Critic +## ✍️ Ejercicios: Gradientes de Política y Actor-Critic RL -Continúa tu aprendizaje en los siguientes cuadernos: +Continúa tu aprendizaje en los siguientes notebooks: * [RL en TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) * [RL en PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) ## Otras Tareas de RL -El Aprendizaje por Refuerzo hoy en día es un campo de investigación de rápido crecimiento. Algunos de los ejemplos interesantes de aprendizaje por refuerzo son: +El aprendizaje por refuerzo es actualmente un campo de investigación en rápido crecimiento. Algunos ejemplos interesantes de aprendizaje por refuerzo son: -* Enseñar a una computadora a jugar **Juegos de Atari**. La parte desafiante de este problema es que no tenemos un estado simple representado como un vector, sino más bien una captura de pantalla, y necesitamos usar la CNN para convertir esta imagen de pantalla en un vector de características, o extraer información de recompensa. Los juegos de Atari están disponibles en el Gym. -* Enseñar a una computadora a jugar juegos de mesa, como Ajedrez y Go. Recientemente, programas de vanguardia como **Alpha Zero** fueron entrenados desde cero por dos agentes jugando entre sí y mejorando en cada paso. +* Enseñar a una computadora a jugar **juegos de Atari**. La parte desafiante de este problema es que no tenemos un estado simple representado como un vector, sino más bien una captura de pantalla, y necesitamos usar una CNN para convertir esta imagen en un vector de características o para extraer información de recompensa. Los juegos de Atari están disponibles en el Gym. +* Enseñar a una computadora a jugar juegos de mesa, como Ajedrez y Go. Recientemente, programas de última generación como **Alpha Zero** fueron entrenados desde cero por dos agentes jugando entre sí y mejorando en cada paso. * En la industria, el RL se utiliza para crear sistemas de control a partir de simulaciones. Un servicio llamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) está diseñado específicamente para eso. ## Conclusión @@ -99,19 +108,19 @@ Ahora hemos aprendido cómo entrenar agentes para lograr buenos resultados simpl ## 🚀 Desafío -Explora las aplicaciones enumeradas en la sección 'Otras Tareas de RL' y trata de implementar una. +Explora las aplicaciones enumeradas en la sección 'Otras Tareas de RL' e intenta implementar una. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Cuestionario posterior a la lección](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) ## Revisión y Autoestudio Aprende más sobre el aprendizaje por refuerzo clásico en nuestro [Currículo de Aprendizaje Automático para Principiantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario. +Mira [este excelente video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario. -## Tarea: [Entrenar un Mountain Car](lab/README.md) +## Asignación: [Entrena un Mountain Car](lab/README.md) -Tu objetivo durante esta tarea sería entrenar un entorno diferente de Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Tu objetivo durante esta asignación será entrenar un entorno diferente de Gym: [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/22-DeepRL/lab/README.md b/translations/es/lessons/6-Other/22-DeepRL/lab/README.md index 1652fe86..4d415935 100644 --- a/translations/es/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/es/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,23 @@ -# Entrenando Mountain Car para Escapar - -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). - -## Tarea - -Tu objetivo es entrenar al agente de RL para controlar [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) en el entorno de OpenAI. Estás entrenado con datos hasta octubre de 2023. - + ## El Entorno -El entorno de Mountain Car consiste en un coche atrapado dentro de un valle. Tu objetivo es saltar fuera del valle y alcanzar la bandera. Las acciones que puedes realizar son acelerar hacia la izquierda, hacia la derecha, o no hacer nada. Puedes observar la posición del coche a lo largo del eje x, y la velocidad. +El entorno Mountain Car consiste en un coche atrapado dentro de un valle. Tu objetivo es salir del valle y alcanzar la bandera. Las acciones que puedes realizar son acelerar hacia la izquierda, hacia la derecha o no hacer nada. Puedes observar la posición del coche a lo largo del eje x y su velocidad. -## Iniciando el Notebook +## Notebook Inicial Comienza el laboratorio abriendo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) ## Conclusión -Deberías aprender a lo largo de este laboratorio que adoptar algoritmos de RL a un nuevo entorno es a menudo bastante sencillo, porque el OpenAI Gym tiene la misma interfaz para todos los entornos, y los algoritmos no dependen en gran medida de la naturaleza del entorno. Incluso puedes reestructurar el código de Python de tal manera que se pase cualquier entorno al algoritmo de RL como un parámetro. +A lo largo de este laboratorio deberías aprender que adaptar algoritmos de RL a un nuevo entorno suele ser bastante sencillo, porque OpenAI Gym tiene la misma interfaz para todos los entornos, y los algoritmos en sí no dependen en gran medida de la naturaleza del entorno. Incluso puedes reestructurar el código en Python de tal manera que cualquier entorno se pase al algoritmo de RL como un parámetro. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/23-MultiagentSystems/README.md b/translations/es/lessons/6-Other/23-MultiagentSystems/README.md index f475fece..0fd89247 100644 --- a/translations/es/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/es/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ + # Sistemas Multi-Agente -Una de las formas posibles de alcanzar la inteligencia es el llamado enfoque **emergente** (o **sinerético**), que se basa en el hecho de que el comportamiento combinado de muchos agentes relativamente simples puede resultar en un comportamiento general más complejo (o inteligente) del sistema en su conjunto. Teóricamente, esto se basa en los principios de la [Inteligencia Colectiva](https://en.wikipedia.org/wiki/Collective_intelligence), el [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) y la [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirman que los sistemas de nivel superior obtienen algún tipo de valor añadido cuando se combinan adecuadamente a partir de sistemas de nivel inferior (el llamado *principio de transición de metasistema*). +Una de las posibles formas de lograr inteligencia es el enfoque llamado **emergente** (o **sinérgico**), que se basa en el hecho de que el comportamiento combinado de muchos agentes relativamente simples puede resultar en un comportamiento más complejo (o inteligente) del sistema en su conjunto. Teóricamente, esto se basa en los principios de [Inteligencia Colectiva](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) y [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirman que los sistemas de nivel superior obtienen algún tipo de valor añadido cuando se combinan adecuadamente a partir de sistemas de nivel inferior (el llamado *principio de transición de metasistema*). ## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -La dirección de los **Sistemas Multi-Agente** ha surgido en IA en la década de 1990 como respuesta al crecimiento de Internet y los sistemas distribuidos. Uno de los libros de texto clásicos de IA, [Inteligencia Artificial: Un Enfoque Moderno](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se centra en la visión de la IA clásica desde el punto de vista de los sistemas multi-agente. +La dirección de los **Sistemas Multi-Agente** surgió en la IA en la década de 1990 como respuesta al crecimiento de Internet y los sistemas distribuidos. Uno de los libros de texto clásicos de IA, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se centra en la visión de la IA clásica desde el punto de vista de los sistemas multi-agente. -Central al enfoque multi-agente es la noción de **Agente** - una entidad que vive en algún **entorno**, que puede percibir y actuar sobre él. Esta es una definición muy amplia, y podría haber muchos tipos y clasificaciones diferentes de agentes: +El concepto central del enfoque multi-agente es la noción de **Agente**: una entidad que vive en algún **entorno**, que puede percibir y actuar sobre él. Esta es una definición muy amplia, y puede haber muchos tipos y clasificaciones diferentes de agentes: -* Por su capacidad de razonar: - - Los agentes **reactivos** generalmente tienen un comportamiento simple de tipo solicitud-respuesta. +* Según su capacidad para razonar: + - Los agentes **reactivos** suelen tener un comportamiento simple de tipo solicitud-respuesta. - Los agentes **deliberativos** emplean algún tipo de razonamiento lógico y/o capacidades de planificación. -* Por el lugar donde el agente ejecuta su código: +* Según el lugar donde el agente ejecuta su código: - Los agentes **estáticos** trabajan en un nodo de red dedicado. - Los agentes **móviles** pueden mover su código entre nodos de red. -* Por su comportamiento: - - Los **agentes pasivos** no tienen objetivos específicos. Tales agentes pueden reaccionar a estímulos externos, pero no iniciarán acciones por sí mismos. - - Los **agentes activos** tienen objetivos que persiguen. - - Los **agentes cognitivos** involucran planificación y razonamiento complejos. +* Según su comportamiento: + - Los agentes **pasivos** no tienen objetivos específicos. Estos agentes pueden reaccionar a estímulos externos, pero no iniciarán acciones por sí mismos. + - Los agentes **activos** tienen algunos objetivos que persiguen. + - Los agentes **cognitivos** implican planificación y razonamiento complejos. -Los sistemas multi-agente se utilizan hoy en día en una serie de aplicaciones: +Hoy en día, los sistemas multi-agente se utilizan en varias aplicaciones: -* En los juegos, muchos personajes no jugadores emplean algún tipo de IA y pueden considerarse agentes inteligentes. -* En la producción de video, renderizar escenas 3D complejas que involucran multitudes se realiza típicamente utilizando simulación multi-agente. -* En modelado de sistemas, el enfoque multi-agente se utiliza para simular el comportamiento de un modelo complejo. Por ejemplo, se ha utilizado con éxito el enfoque multi-agente para predecir la propagación de la enfermedad COVID-19 en todo el mundo. Un enfoque similar puede usarse para modelar el tráfico en la ciudad y ver cómo reacciona a los cambios en las normas de tráfico. +* En juegos, muchos personajes no jugadores emplean algún tipo de IA y pueden considerarse agentes inteligentes. +* En la producción de video, la renderización de escenas 3D complejas que involucran multitudes generalmente se realiza mediante simulación multi-agente. +* En la modelización de sistemas, el enfoque multi-agente se utiliza para simular el comportamiento de un modelo complejo. Por ejemplo, el enfoque multi-agente se ha utilizado con éxito para predecir la propagación de la enfermedad COVID-19 en todo el mundo. Un enfoque similar puede usarse para modelar el tráfico en una ciudad y ver cómo reacciona a los cambios en las reglas de tráfico. * En sistemas de automatización complejos, cada dispositivo puede actuar como un agente independiente, lo que hace que todo el sistema sea menos monolítico y más robusto. -No vamos a dedicar mucho tiempo a profundizar en los sistemas multi-agente, pero consideremos un ejemplo de **Modelado Multi-Agente**. +No dedicaremos mucho tiempo a profundizar en los sistemas multi-agente, pero consideraremos un ejemplo de **Modelado Multi-Agente**. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) es un entorno de modelado multi-agente basado en una versión modificada del lenguaje de programación [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Este lenguaje fue desarrollado para enseñar conceptos de programación a niños, y permite controlar un agente llamado **tortuga**, que puede moverse, dejando un rastro detrás. Esto permite crear figuras geométricas complejas, lo que es una forma muy visual de entender el comportamiento de un agente. +[NetLogo](https://ccl.northwestern.edu/netlogo/) es un entorno de modelado multi-agente basado en una versión modificada del lenguaje de programación [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Este lenguaje fue desarrollado para enseñar conceptos de programación a niños y permite controlar un agente llamado **tortuga**, que puede moverse dejando un rastro detrás. Esto permite crear figuras geométricas complejas, lo cual es una forma muy visual de entender el comportamiento de un agente. -En NetLogo, podemos crear muchas tortugas utilizando el comando `create-turtles`. Luego podemos ordenar a todas las tortugas que realicen algunas acciones (en el ejemplo a continuación - avanzar 10 puntos hacia adelante): +En NetLogo, podemos crear muchas tortugas utilizando el comando `create-turtles`. Luego podemos ordenar a todas las tortugas que realicen algunas acciones (en el ejemplo a continuación: avanzar 10 puntos): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Por supuesto, no es interesante cuando todas las tortugas hacen lo mismo, así que podemos `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` es el nombre de una raza, y necesitamos especificar tanto la palabra en singular como en plural, porque diferentes comandos utilizan diferentes formas para mayor claridad. +Por supuesto, no es interesante cuando todas las tortugas hacen lo mismo, por lo que podemos `ask` a grupos de tortugas, por ejemplo, aquellas que están en las cercanías de un cierto punto. También podemos crear tortugas de diferentes *razas* utilizando el comando `breed [cats cat]`. Aquí `cat` es el nombre de una raza, y necesitamos especificar tanto la palabra en singular como en plural, porque diferentes comandos usan diferentes formas para mayor claridad. -> ✅ No vamos a entrar en aprender el lenguaje NetLogo en sí; puedes visitar el brillante [Diccionario Interactivo para Principiantes de NetLogo](https://ccl.northwestern.edu/netlogo/bind/) si estás interesado en aprender más. +> ✅ No profundizaremos en el aprendizaje del lenguaje NetLogo en sí: puedes visitar el brillante recurso [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) si estás interesado en aprender más. Puedes [descargar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar NetLogo para probarlo. ### Biblioteca de Modelos -Una gran ventaja de NetLogo es que contiene una biblioteca de modelos funcionales que puedes probar. Ve a **Archivo → Biblioteca de Modelos**, y tienes muchas categorías de modelos para elegir. +Una gran ventaja de NetLogo es que contiene una biblioteca de modelos funcionales que puedes probar. Ve a **File → Models Library**, y tendrás muchas categorías de modelos para elegir. Biblioteca de Modelos de NetLogo > Una captura de pantalla de la biblioteca de modelos por Dmitry Soshnikov -Puedes abrir uno de los modelos, por ejemplo **Biología → Rebaño**. +Puedes abrir uno de los modelos, por ejemplo **Biology → Flocking**. -### Principios Principales +### Principios Básicos -Después de abrir el modelo, se te lleva a la pantalla principal de NetLogo. Aquí hay un modelo de ejemplo que describe la población de lobos y ovejas, dados recursos finitos (hierba). +Después de abrir el modelo, serás llevado a la pantalla principal de NetLogo. Aquí hay un modelo de ejemplo que describe la población de lobos y ovejas, dadas recursos finitos (hierba). -![Pantalla Principal de NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.es.png) +![Pantalla Principal de NetLogo](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) > Captura de pantalla por Dmitry Soshnikov En esta pantalla, puedes ver: -* La sección de **Interfaz** que contiene: +* La sección **Interface**, que contiene: - El campo principal, donde viven todos los agentes. - Diferentes controles: botones, deslizadores, etc. - Gráficos que puedes usar para mostrar parámetros de la simulación. -* La pestaña de **Código** que contiene el editor, donde puedes escribir el programa NetLogo. +* La pestaña **Code**, que contiene el editor donde puedes escribir el programa NetLogo. -En la mayoría de los casos, la interfaz tendría un botón de **Configuración**, que inicializa el estado de la simulación, y un botón de **Ejecutar** que inicia la ejecución. Estos son manejados por controladores correspondientes en el código que lucen así: +En la mayoría de los casos, la interfaz tendrá un botón **Setup**, que inicializa el estado de la simulación, y un botón **Go**, que inicia la ejecución. Estos son manejados por los controladores correspondientes en el código que se ven así: ``` to go [ @@ -83,73 +92,73 @@ to go [ El mundo de NetLogo consiste en los siguientes objetos: -* **Agentes** (tortugas) que pueden moverse por el campo y hacer algo. Ordenas a los agentes usando `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` para hacer algo. +* **Agentes** (tortugas) que pueden moverse por el campo y hacer algo. Ordenas a los agentes utilizando la sintaxis `ask turtles [...]`, y el código entre corchetes es ejecutado por todos los agentes en *modo tortuga*. +* **Parches** son áreas cuadradas del campo, en las que viven los agentes. Puedes referirte a todos los agentes en el mismo parche, o puedes cambiar los colores del parche y algunas otras propiedades. También puedes `ask patches` que hagan algo. * **Observador** es un agente único que controla el mundo. Todos los controladores de botones se ejecutan en *modo observador*. -> ✅ La belleza de un entorno multi-agente es que el código que se ejecuta en modo tortuga o en modo parche se ejecuta al mismo tiempo por todos los agentes en paralelo. Así, al escribir un poco de código y programar el comportamiento de un agente individual, puedes crear un comportamiento complejo del sistema de simulación en su conjunto. +> ✅ La belleza de un entorno multi-agente es que el código que se ejecuta en modo tortuga o en modo parche es ejecutado al mismo tiempo por todos los agentes en paralelo. Por lo tanto, al escribir un poco de código y programar el comportamiento de un agente individual, puedes crear un comportamiento complejo del sistema de simulación en su conjunto. -### Rebaño +### Flocking -Como ejemplo de comportamiento multi-agente, consideremos **[Rebaño](https://en.wikipedia.org/wiki/Flocking_(behavior))**. El rebaño es un patrón complejo que es muy similar a cómo vuelan los bandadas de aves. Al observarlas volar, puedes pensar que siguen algún tipo de algoritmo colectivo, o que poseen alguna forma de *inteligencia colectiva*. Sin embargo, este comportamiento complejo surge cuando cada agente individual (en este caso, un *pájaro*) solo observa a otros agentes a una corta distancia de él, y sigue tres reglas simples: +Como ejemplo de comportamiento multi-agente, consideremos el **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking es un patrón complejo que es muy similar a cómo vuelan las bandadas de aves. Al observarlas volar, podrías pensar que siguen algún tipo de algoritmo colectivo o que poseen alguna forma de *inteligencia colectiva*. Sin embargo, este comportamiento complejo surge cuando cada agente individual (en este caso, un *pájaro*) solo observa a otros agentes a corta distancia y sigue tres reglas simples: -* **Alineación** - se dirige hacia la dirección promedio de los agentes vecinos. -* **Cohesión** - intenta dirigirse hacia la posición promedio de los vecinos (*atracción a largo alcance*). -* **Separación** - cuando se acerca demasiado a otros pájaros, intenta alejarse (*repulsión a corto alcance*). +* **Alineación**: se dirige hacia la dirección promedio de los agentes vecinos. +* **Cohesión**: intenta dirigirse hacia la posición promedio de los vecinos (*atracción a largo alcance*). +* **Separación**: cuando se acerca demasiado a otros pájaros, intenta alejarse (*repulsión a corto alcance*). -Puedes ejecutar el ejemplo de rebaño y observar el comportamiento. También puedes ajustar parámetros, como el *grado de separación*, o el *rango de visión*, que define cuán lejos puede ver cada pájaro. Ten en cuenta que si reduces el rango de visión a 0, todos los pájaros se vuelven ciegos y el rebaño se detiene. Si reduces la separación a 0, todos los pájaros se agrupan en una línea recta. +Puedes ejecutar el ejemplo de flocking y observar el comportamiento. También puedes ajustar parámetros, como el *grado de separación* o el *rango de visión*, que define qué tan lejos puede ver cada pájaro. Ten en cuenta que si reduces el rango de visión a 0, todos los pájaros se vuelven ciegos y el flocking se detiene. Si reduces la separación a 0, todos los pájaros se agrupan en una línea recta. -> ✅ Cambia a la pestaña de **Código** y observa dónde se implementan las tres reglas del rebaño (alineación, cohesión y separación) en el código. Nota cómo nos referimos solo a aquellos agentes que están a la vista. +> ✅ Cambia a la pestaña **Code** y observa dónde se implementan las tres reglas de flocking (alineación, cohesión y separación) en el código. Nota cómo solo nos referimos a aquellos agentes que están a la vista. ### Otros Modelos para Ver -Hay algunos modelos más interesantes con los que puedes experimentar: +Hay algunos modelos más interesantes que puedes experimentar: -* **Arte → Fuegos Artificiales** muestra cómo un fuego artificial puede considerarse un comportamiento colectivo de flujos individuales de fuego. -* **Ciencias Sociales → Tráfico Básico** y **Ciencias Sociales → Tráfico en Rejilla** muestran el modelo del tráfico de la ciudad en una rejilla 1D y 2D con o sin semáforos. Cada coche en la simulación sigue las siguientes reglas: - - Si el espacio frente a él está vacío - acelera (hasta una cierta velocidad máxima). - - Si ve un obstáculo frente a él - frena (y puedes ajustar cuán lejos puede ver un conductor). -* **Ciencias Sociales → Fiesta** muestra cómo las personas se agrupan durante una fiesta de cócteles. Puedes encontrar la combinación de parámetros que lleva al aumento más rápido de la felicidad del grupo. +* **Art → Fireworks** muestra cómo un fuego artificial puede considerarse un comportamiento colectivo de corrientes individuales de fuego. +* **Social Science → Traffic Basic** y **Social Science → Traffic Grid** muestran el modelo de tráfico urbano en una cuadrícula 1D y 2D con o sin semáforos. Cada coche en la simulación sigue las siguientes reglas: + - Si el espacio frente a él está vacío, acelera (hasta una cierta velocidad máxima). + - Si ve un obstáculo frente a él, frena (y puedes ajustar qué tan lejos puede ver un conductor). +* **Social Science → Party** muestra cómo las personas se agrupan durante una fiesta de cóctel. Puedes encontrar la combinación de parámetros que conduce al aumento más rápido de la felicidad del grupo. -Como puedes ver en estos ejemplos, las simulaciones multi-agente pueden ser una forma bastante útil de entender el comportamiento de un sistema complejo que consiste en individuos que siguen la misma lógica o lógica similar. También puede utilizarse para controlar agentes virtuales, como [NPCs](https://en.wikipedia.org/wiki/NPC) en videojuegos, o agentes en mundos animados en 3D. +Como puedes ver en estos ejemplos, las simulaciones multi-agente pueden ser una forma bastante útil de entender el comportamiento de un sistema complejo compuesto por individuos que siguen la misma lógica o una lógica similar. También puede usarse para controlar agentes virtuales, como [NPCs](https://en.wikipedia.org/wiki/NPC) en videojuegos, o agentes en mundos animados en 3D. ## Agentes Deliberativos -Los agentes descritos anteriormente son muy simples, reaccionando a los cambios en el entorno utilizando algún tipo de algoritmo. Como tales, son **agentes reactivos**. Sin embargo, a veces los agentes pueden razonar y planificar sus acciones, en cuyo caso se les llama **deliberativos**. +Los agentes descritos anteriormente son muy simples, reaccionando a los cambios en el entorno utilizando algún tipo de algoritmo. Como tal, son **agentes reactivos**. Sin embargo, a veces los agentes pueden razonar y planificar sus acciones, en cuyo caso se les llama **deliberativos**. -Un ejemplo típico sería un agente personal que recibe instrucciones de un humano para reservar un tour de vacaciones. Supongamos que hay muchos agentes que viven en Internet, que pueden ayudarlo. Entonces debería contactar a otros agentes para ver qué vuelos están disponibles, cuáles son los precios de los hoteles para diferentes fechas y tratar de negociar el mejor precio. Cuando el plan de vacaciones esté completo y confirmado por el propietario, puede proceder con la reserva. +Un ejemplo típico sería un agente personal que recibe una instrucción de un humano para reservar un paquete de vacaciones. Supongamos que hay muchos agentes que viven en Internet y que pueden ayudarle. Entonces debería contactar a otros agentes para ver qué vuelos están disponibles, cuáles son los precios de los hoteles para diferentes fechas y tratar de negociar el mejor precio. Cuando el plan de vacaciones esté completo y confirmado por el propietario, puede proceder con la reserva. -Para hacer eso, los agentes necesitan **comunicarse**. Para una comunicación exitosa, necesitan: +Para hacer esto, los agentes necesitan **comunicarse**. Para una comunicación exitosa necesitan: -* Algunos **lenguajes estándar para intercambiar conocimiento**, como [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) y [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Estos lenguajes están diseñados en base a la [teoría del acto de habla](https://en.wikipedia.org/wiki/Speech_act). +* Algunos **lenguajes estándar para intercambiar conocimiento**, como [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) y [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Estos lenguajes están diseñados basándose en la [teoría de los actos de habla](https://en.wikipedia.org/wiki/Speech_act). * Estos lenguajes también deben incluir algunos **protocolos para negociaciones**, basados en diferentes **tipos de subastas**. -* Una **ontología común** para usar, para que se refieran a los mismos conceptos conociendo su semántica. -* Una forma de **descubrir** qué pueden hacer los diferentes agentes, también basada en algún tipo de ontología. +* Una **ontología común** para usar, de modo que se refieran a los mismos conceptos conociendo su semántica. +* Una forma de **descubrir** lo que diferentes agentes pueden hacer, también basada en algún tipo de ontología. Los agentes deliberativos son mucho más complejos que los reactivos, porque no solo reaccionan a los cambios en el entorno, sino que también deben ser capaces de *iniciar* acciones. Una de las arquitecturas propuestas para agentes deliberativos es el llamado agente de Creencias-Deseos-Intenciones (BDI): -* **Creencias** forman un conjunto de conocimientos sobre el entorno de un agente. Puede estructurarse como una base de conocimientos o un conjunto de reglas que un agente puede aplicar a una situación específica en el entorno. -* **Deseos** definen lo que un agente quiere hacer, es decir, sus objetivos. Por ejemplo, el objetivo del agente asistente personal mencionado anteriormente es reservar un tour, y el objetivo de un agente hotelero es maximizar las ganancias. -* **Intenciones** son acciones específicas que un agente planea realizar para alcanzar sus objetivos. Las acciones cambian típicamente el entorno y causan comunicación con otros agentes. +* **Creencias** forman un conjunto de conocimiento sobre el entorno del agente. Puede estructurarse como una base de conocimiento o un conjunto de reglas que un agente puede aplicar a una situación específica en el entorno. +* **Deseos** definen lo que un agente quiere hacer, es decir, sus objetivos. Por ejemplo, el objetivo del agente asistente personal mencionado anteriormente es reservar un paquete de vacaciones, y el objetivo de un agente de hotel es maximizar las ganancias. +* **Intenciones** son acciones específicas que un agente planea para alcanzar sus objetivos. Las acciones típicamente cambian el entorno y causan comunicación con otros agentes. -Hay algunas plataformas disponibles para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este documento](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contiene una revisión de plataformas multi-agente, junto con una breve historia de los sistemas multi-agente y sus diferentes escenarios de uso. +Existen algunas plataformas disponibles para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este artículo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contiene una revisión de plataformas multi-agente, junto con una breve historia de los sistemas multi-agente y sus diferentes escenarios de uso. ## Conclusión -Los sistemas multi-agente pueden adoptar formas muy diferentes y utilizarse en muchas aplicaciones distintas. -Todos tienden a centrarse en el comportamiento más simple de un agente individual y lograr un comportamiento más complejo del sistema general debido al **efecto sinérgico**. +Los sistemas multi-agente pueden tomar formas muy diferentes y usarse en muchas aplicaciones distintas. +Todos tienden a centrarse en el comportamiento más simple de un agente individual y logran un comportamiento más complejo del sistema general debido al **efecto sinérgico**. ## 🚀 Desafío -Lleva esta lección al mundo real e intenta conceptualizar un sistema multi-agente que pueda resolver un problema. ¿Qué, por ejemplo, necesitaría hacer un sistema multi-agente para optimizar una ruta de autobús escolar? ¿Cómo podría funcionar en una panadería? +Lleva esta lección al mundo real e intenta conceptualizar un sistema multi-agente que pueda resolver un problema. ¿Qué, por ejemplo, necesitaría hacer un sistema multi-agente para optimizar la ruta de un autobús escolar? ¿Cómo podría funcionar en una panadería? ## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## Revisión y Autoestudio +## Revisión y Estudio Personal -Revisa el uso de este tipo de sistema en la industria. Elige un dominio como la fabricación o la industria de los videojuegos y descubre cómo los sistemas multi-agente pueden utilizarse para resolver problemas únicos. +Revisa el uso de este tipo de sistema en la industria. Elige un dominio como la manufactura o la industria de los videojuegos y descubre cómo los sistemas multi-agente pueden usarse para resolver problemas únicos. ## [Tarea de NetLogo](assignment.md) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md index 24bbc214..e9b205c8 100644 --- a/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ + # Tarea de NetLogo -Toma uno de los modelos de la biblioteca de NetLogo y úsalo para simular una situación de la vida real lo más cercana posible. Un buen ejemplo sería modificar el modelo de Virus en la carpeta de Visualizaciones Alternativas para mostrar cómo se puede utilizar para modelar la propagación del COVID-19. ¿Puedes construir un modelo que imite la propagación viral en la vida real? +Toma uno de los modelos de la biblioteca de NetLogo y úsalo para simular una situación de la vida real lo más fielmente posible. Un buen ejemplo sería ajustar el modelo Virus en la carpeta de Visualizaciones Alternativas para mostrar cómo puede usarse para modelar la propagación del COVID-19. ¿Puedes construir un modelo que imite la propagación viral en la vida real? -Muestra tu trabajo guardando una copia y creando un video de demostración que explique cómo el modelo está conectado a una situación del mundo real. +Muestra tu trabajo guardando una copia y creando un video demo que explique cómo el modelo está conectado con una situación del mundo real. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/7-Ethics/README.md b/translations/es/lessons/7-Ethics/README.md index a56ade5b..2ba93fd2 100644 --- a/translations/es/lessons/7-Ethics/README.md +++ b/translations/es/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ + # IA Ética y Responsable -Has casi terminado este curso, y espero que ahora veas claramente que la IA se basa en una serie de métodos matemáticos formales que nos permiten encontrar relaciones en los datos y entrenar modelos para replicar algunos aspectos del comportamiento humano. En este punto de la historia, consideramos que la IA es una herramienta muy poderosa para extraer patrones de los datos y aplicar esos patrones para resolver nuevos problemas. +Has casi terminado este curso, y espero que para ahora veas claramente que la IA se basa en una serie de métodos matemáticos formales que nos permiten encontrar relaciones en los datos y entrenar modelos para replicar algunos aspectos del comportamiento humano. En este momento de la historia, consideramos que la IA es una herramienta muy poderosa para extraer patrones de los datos y aplicar esos patrones para resolver nuevos problemas. ## [Cuestionario previo a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -Sin embargo, en la ciencia ficción a menudo vemos historias donde la IA representa un peligro para la humanidad. Generalmente, esas historias giran en torno a algún tipo de rebelión de la IA, cuando la IA decide confrontar a los seres humanos. Esto implica que la IA tiene algún tipo de emoción o puede tomar decisiones imprevistas por sus desarrolladores. +Sin embargo, en la ciencia ficción a menudo vemos historias donde la IA representa un peligro para la humanidad. Por lo general, esas historias se centran en algún tipo de rebelión de la IA, cuando esta decide enfrentarse a los seres humanos. Esto implica que la IA tiene algún tipo de emoción o puede tomar decisiones imprevistas por sus desarrolladores. -El tipo de IA que hemos aprendido en este curso no es más que aritmética de matrices grandes. Es una herramienta muy poderosa para ayudarnos a resolver nuestros problemas, y como cualquier otra herramienta poderosa, puede ser utilizada para fines buenos y malos. Es importante señalar que puede ser *mal utilizada*. +El tipo de IA que hemos aprendido en este curso no es más que aritmética de matrices a gran escala. Es una herramienta muy poderosa para ayudarnos a resolver nuestros problemas, y como cualquier otra herramienta poderosa, puede ser utilizada para propósitos buenos o malos. Es importante destacar que puede ser *mal utilizada*. ## Principios de IA Responsable Para evitar este uso accidental o intencionado de la IA, Microsoft establece los importantes [Principios de IA Responsable](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Los siguientes conceptos sustentan estos principios: -* **Equidad** está relacionada con el importante problema de los *sesgos en los modelos*, que pueden ser causados por el uso de datos sesgados para el entrenamiento. Por ejemplo, cuando intentamos predecir la probabilidad de conseguir un trabajo como desarrollador de software para una persona, es probable que el modelo dé mayor preferencia a los hombres, simplemente porque el conjunto de datos de entrenamiento probablemente estaba sesgado hacia una audiencia masculina. Necesitamos equilibrar cuidadosamente los datos de entrenamiento e investigar el modelo para evitar sesgos y asegurarnos de que el modelo tenga en cuenta características más relevantes. -* **Fiabilidad y Seguridad**. Por su naturaleza, los modelos de IA pueden cometer errores. Una red neuronal devuelve probabilidades, y debemos tenerlo en cuenta al tomar decisiones. Cada modelo tiene cierta precisión y recuperación, y necesitamos entender eso para prevenir el daño que puede causar un consejo erróneo. -* **Privacidad y Seguridad** tienen algunas implicaciones específicas de la IA. Por ejemplo, cuando usamos algunos datos para entrenar un modelo, esos datos se integran de alguna manera en el modelo. Por un lado, eso aumenta la seguridad y la privacidad; por otro, necesitamos recordar sobre qué datos se entrenó el modelo. -* **Inclusividad** significa que no estamos construyendo IA para reemplazar a las personas, sino para aumentar a las personas y hacer nuestro trabajo más creativo. También está relacionado con la equidad, porque al tratar con comunidades subrepresentadas, la mayoría de los conjuntos de datos que recopilamos probablemente estén sesgados, y necesitamos asegurarnos de que esas comunidades estén incluidas y manejadas correctamente por la IA. +* **Equidad** está relacionada con el importante problema de los *sesgos en los modelos*, que pueden ser causados por el uso de datos sesgados para el entrenamiento. Por ejemplo, cuando intentamos predecir la probabilidad de que una persona consiga un trabajo como desarrollador de software, el modelo probablemente dará mayor preferencia a los hombres, simplemente porque el conjunto de datos de entrenamiento probablemente estaba sesgado hacia una audiencia masculina. Necesitamos equilibrar cuidadosamente los datos de entrenamiento e investigar el modelo para evitar sesgos y asegurarnos de que el modelo tenga en cuenta características más relevantes. +* **Fiabilidad y Seguridad**. Por su naturaleza, los modelos de IA pueden cometer errores. Una red neuronal devuelve probabilidades, y debemos tenerlo en cuenta al tomar decisiones. Cada modelo tiene cierta precisión y exhaustividad, y necesitamos entender esto para prevenir el daño que un consejo erróneo puede causar. +* **Privacidad y Seguridad** tienen algunas implicaciones específicas de la IA. Por ejemplo, cuando usamos algunos datos para entrenar un modelo, estos datos se integran de alguna manera en el modelo. Por un lado, eso aumenta la seguridad y privacidad, pero por otro, debemos recordar qué datos se utilizaron para entrenar el modelo. +* **Inclusión** significa que no estamos construyendo IA para reemplazar a las personas, sino para complementarlas y hacer nuestro trabajo más creativo. También está relacionado con la equidad, porque al tratar con comunidades subrepresentadas, la mayoría de los conjuntos de datos que recopilamos probablemente estarán sesgados, y debemos asegurarnos de que esas comunidades estén incluidas y tratadas correctamente por la IA. * **Transparencia**. Esto incluye asegurarnos de que siempre seamos claros sobre el uso de la IA. Además, siempre que sea posible, queremos utilizar sistemas de IA que sean *interpretables*. -* **Responsabilidad**. Cuando los modelos de IA toman decisiones, no siempre está claro quién es responsable de esas decisiones. Necesitamos asegurarnos de que entendemos dónde recae la responsabilidad de las decisiones de la IA. En la mayoría de los casos, querríamos incluir a los seres humanos en el proceso de toma de decisiones importantes, para que las personas reales sean responsables. +* **Responsabilidad**. Cuando los modelos de IA toman decisiones, no siempre está claro quién es responsable de esas decisiones. Necesitamos asegurarnos de entender dónde recae la responsabilidad de las decisiones de la IA. En la mayoría de los casos, querríamos incluir a los seres humanos en el proceso de tomar decisiones importantes, para que las personas reales sean responsables. -## Herramientas para la IA Responsable +## Herramientas para IA Responsable -Microsoft ha desarrollado la [Caja de Herramientas de IA Responsable](https://github.com/microsoft/responsible-ai-toolbox) que contiene un conjunto de herramientas: +Microsoft ha desarrollado el [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), que contiene un conjunto de herramientas: -* Tablero de Interpretabilidad (InterpretML) -* Tablero de Equidad (FairLearn) -* Tablero de Análisis de Errores -* Tablero de IA Responsable que incluye +* Panel de Interpretabilidad (InterpretML) +* Panel de Equidad (FairLearn) +* Panel de Análisis de Errores +* Panel de IA Responsable que incluye: - - EconML - herramienta para Análisis Causal, que se centra en preguntas hipotéticas - - DiCE - herramienta para Análisis Contrafactual que te permite ver qué características necesitan cambiarse para afectar la decisión del modelo + - EconML: herramienta para el Análisis Causal, que se centra en preguntas hipotéticas + - DiCE: herramienta para el Análisis Contrafactual que permite ver qué características necesitan cambiarse para afectar la decisión del modelo -Para más información sobre la Ética de la IA, visita [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) en el Currículo de Aprendizaje Automático que incluye tareas. +Para más información sobre Ética en IA, por favor visita [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) en el currículo de Aprendizaje Automático, que incluye tareas. ## Revisión y Autoestudio -Toma este [Camino de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender más sobre la IA responsable. +Toma este [Camino de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender más sobre IA responsable. ## [Cuestionario posterior a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/README.md b/translations/es/lessons/README.md index 2d32eaba..d53f8e33 100644 --- a/translations/es/lessons/README.md +++ b/translations/es/lessons/README.md @@ -1,8 +1,17 @@ -# Resumen + +# Descripción general -![Resumen en un garabato](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.es.png) +![Descripción general en un dibujo](../../../lessons/sketchnotes/ai-overview.png) -> Garabato por [Tomomi Imura](https://twitter.com/girlie_mac) +> Dibujo por [Tomomi Imura](https://twitter.com/girlie_mac) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/X-Extras/X1-MultiModal/README.md b/translations/es/lessons/X-Extras/X1-MultiModal/README.md index 6c3dc660..098e9f48 100644 --- a/translations/es/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/es/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ -# Redes Neuronales Multi-Modales + +# Redes Multi-Modales -Tras el éxito de los modelos de transformadores para resolver tareas de procesamiento de lenguaje natural (NLP), se han aplicado arquitecturas similares a tareas de visión por computadora. Hay un creciente interés en construir modelos que *combinan* capacidades de visión y lenguaje natural. Uno de estos intentos fue realizado por OpenAI, y se llama CLIP y DALL.E. +Tras el éxito de los modelos transformadores para resolver tareas de procesamiento de lenguaje natural (NLP), se han aplicado arquitecturas similares a tareas de visión por computadora. Existe un creciente interés en construir modelos que *combinen* capacidades de visión y lenguaje natural. Uno de estos intentos fue realizado por OpenAI, y se llama CLIP y DALL.E. -## Pre-entrenamiento de Imágenes Contrastivas (CLIP) +## Preentrenamiento Contrastivo de Imágenes (CLIP) La idea principal de CLIP es poder comparar indicaciones de texto con una imagen y determinar qué tan bien la imagen corresponde a la indicación. -![Arquitectura CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.es.png) +![Arquitectura CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) -> *Imagen del [este post del blog](https://openai.com/blog/clip/)* +> *Imagen tomada de [este artículo](https://openai.com/blog/clip/)* -El modelo se entrena con imágenes obtenidas de Internet y sus descripciones. Para cada lote, tomamos N pares de (imagen, texto) y los convertimos en representaciones vectoriales. Esas representaciones se emparejan entre sí. La función de pérdida se define para maximizar la similitud coseno entre los vectores correspondientes a un par (por ejemplo, I y T), y minimizar la similitud coseno entre todos los demás pares. Esa es la razón por la cual este enfoque se llama **contrastivo**. +El modelo se entrena con imágenes obtenidas de Internet y sus subtítulos. Para cada lote, tomamos N pares de (imagen, texto) y los convertimos en representaciones vectoriales I, ..., I / T, ..., T. Estas representaciones se emparejan entre sí. La función de pérdida se define para maximizar la similitud coseno entre los vectores correspondientes a un par (por ejemplo, I y T) y minimizar la similitud coseno entre todos los demás pares. Por esta razón, este enfoque se llama **contrastivo**. -El modelo/biblioteca CLIP está disponible en [OpenAI GitHub](https://github.com/openai/CLIP). El enfoque se describe en [este post del blog](https://openai.com/blog/clip/), y con más detalle en [este artículo](https://arxiv.org/pdf/2103.00020.pdf). +El modelo/biblioteca CLIP está disponible en [GitHub de OpenAI](https://github.com/openai/CLIP). El enfoque se describe en [este artículo](https://openai.com/blog/clip/) y con más detalle en [este documento](https://arxiv.org/pdf/2103.00020.pdf). -Una vez que este modelo está pre-entrenado, podemos darle un lote de imágenes y un lote de indicaciones de texto, y devolverá un tensor con probabilidades. CLIP se puede utilizar para varias tareas: +Una vez que este modelo está preentrenado, podemos darle un lote de imágenes y un lote de indicaciones de texto, y lo que devolverá será un tensor con probabilidades. CLIP puede usarse para varias tareas: **Clasificación de Imágenes** -Supongamos que necesitamos clasificar imágenes entre, digamos, gatos, perros y humanos. En este caso, podemos darle al modelo una imagen y una serie de indicaciones de texto: "*una imagen de un gato*", "*una imagen de un perro*", "*una imagen de un humano*". En el vector resultante de 3 probabilidades, solo necesitamos seleccionar el índice con el valor más alto. +Supongamos que necesitamos clasificar imágenes entre, por ejemplo, gatos, perros y humanos. En este caso, podemos darle al modelo una imagen y una serie de indicaciones de texto: "*una foto de un gato*", "*una foto de un perro*", "*una foto de un humano*". En el vector resultante de 3 probabilidades, solo necesitamos seleccionar el índice con el valor más alto. -![CLIP para Clasificación de Imágenes](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.es.png) +![CLIP para Clasificación de Imágenes](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) -> *Imagen del [este post del blog](https://openai.com/blog/clip/)* +> *Imagen tomada de [este artículo](https://openai.com/blog/clip/)* **Búsqueda de Imágenes Basada en Texto** -También podemos hacer lo opuesto. Si tenemos una colección de imágenes, podemos pasar esta colección al modelo y una indicación de texto; esto nos dará la imagen que es más similar a la indicación dada. +También podemos hacer lo contrario. Si tenemos una colección de imágenes, podemos pasar esta colección al modelo y una indicación de texto; esto nos dará la imagen que sea más similar a la indicación dada. ## ✍️ Ejemplo: [Usando CLIP para Clasificación de Imágenes y Búsqueda de Imágenes](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -Abre el [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook para ver CLIP en acción. +Abre el cuaderno [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) para ver CLIP en acción. -## Generación de Imágenes con VQGAN+ CLIP +## Generación de Imágenes con VQGAN+CLIP -CLIP también se puede utilizar para **generación de imágenes** a partir de una indicación de texto. Para hacer esto, necesitamos un **modelo generador** que pueda generar imágenes basadas en alguna entrada vectorial. Uno de estos modelos se llama [VQGAN](https://compvis.github.io/taming-transformers/) (Generador Antagónico Cuantificado por Vectores). +CLIP también puede usarse para **generación de imágenes** a partir de una indicación de texto. Para hacerlo, necesitamos un **modelo generador** que sea capaz de generar imágenes basadas en alguna entrada vectorial. Uno de estos modelos se llama [VQGAN](https://compvis.github.io/taming-transformers/) (GAN Cuantificado por Vectores). -Las principales ideas de VQGAN que lo diferencian de un [GAN](../../4-ComputerVision/10-GANs/README.md) ordinario son las siguientes: -* Utilizar una arquitectura de transformador autorregresiva para generar una secuencia de partes visuales ricas en contexto que componen la imagen. Esas partes visuales son a su vez aprendidas por [CNN](../../4-ComputerVision/07-ConvNets/README.md). -* Usar un discriminador de sub-imágenes que detecte si partes de la imagen son "reales" o "falsas" (a diferencia del enfoque "todo o nada" en un GAN tradicional). +Las ideas principales de VQGAN que lo diferencian de un [GAN](../../4-ComputerVision/10-GANs/README.md) ordinario son las siguientes: +* Usar una arquitectura transformadora autorregresiva para generar una secuencia de partes visuales contextualmente ricas que componen la imagen. Estas partes visuales, a su vez, son aprendidas por [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Usar un discriminador de sub-imágenes que detecta si las partes de la imagen son "reales" o "falsas" (a diferencia del enfoque "todo o nada" en los GAN tradicionales). -Aprende más sobre VQGAN en el sitio web de [Taming Transformers](https://compvis.github.io/taming-transformers/). +Aprende más sobre VQGAN en el sitio web [Taming Transformers](https://compvis.github.io/taming-transformers/). -Una de las diferencias importantes entre VQGAN y un GAN tradicional es que este último puede producir una imagen decente a partir de cualquier vector de entrada, mientras que VQGAN es probable que produzca una imagen que no sea coherente. Por lo tanto, necesitamos guiar aún más el proceso de creación de la imagen, y eso se puede hacer usando CLIP. +Una de las diferencias importantes entre VQGAN y los GAN tradicionales es que estos últimos pueden producir una imagen decente a partir de cualquier vector de entrada, mientras que VQGAN probablemente produzca una imagen incoherente. Por lo tanto, necesitamos guiar aún más el proceso de creación de imágenes, y eso puede hacerse usando CLIP. -![Arquitectura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.es.png) +![Arquitectura VQGAN+CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) -Para generar una imagen correspondiente a una indicación de texto, comenzamos con algún vector de codificación aleatorio que se pasa a través de VQGAN para producir una imagen. Luego, se utiliza CLIP para producir una función de pérdida que muestra qué tan bien la imagen corresponde a la indicación de texto. El objetivo es minimizar esta pérdida, utilizando retropropagación para ajustar los parámetros del vector de entrada. +Para generar una imagen que corresponda a una indicación de texto, comenzamos con algún vector de codificación aleatorio que se pasa a través de VQGAN para producir una imagen. Luego, CLIP se utiliza para producir una función de pérdida que muestra qué tan bien la imagen corresponde a la indicación de texto. El objetivo es minimizar esta pérdida, utilizando retropropagación para ajustar los parámetros del vector de entrada. -Una gran biblioteca que implementa VQGAN+CLIP es [Pixray](http://github.com/pixray/pixray). +Una excelente biblioteca que implementa VQGAN+CLIP es [Pixray](http://github.com/pixray/pixray). -![Imagen producida por Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.es.png) +![Imagen generada por Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![Imagen generada por Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![Imagen generada por Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) ----|----|---- -Imagen generada a partir de la indicación *un primer plano de un retrato en acuarela de un joven profesor de literatura con un libro* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de una joven profesora de ciencias de la computación con una computadora* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de un viejo profesor de matemáticas frente a una pizarra* +Imagen generada con la indicación *un retrato en acuarela de cerca de un joven profesor de literatura con un libro* | Imagen generada con la indicación *un retrato al óleo de cerca de una joven profesora de informática con una computadora* | Imagen generada con la indicación *un retrato al óleo de cerca de un viejo profesor de matemáticas frente a un pizarrón* -> Imágenes de la colección **Maestros Artificiales** por [Dmitry Soshnikov](http://soshnikov.com). +> Imágenes de la colección **Artificial Teachers** por [Dmitry Soshnikov](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) DALL-E es una versión de GPT-3 entrenada para generar imágenes a partir de indicaciones. Ha sido entrenada con 12 mil millones de parámetros. -A diferencia de CLIP, DALL-E recibe tanto texto como imagen como un único flujo de tokens para imágenes y texto. Por lo tanto, a partir de múltiples indicaciones, puedes generar imágenes basadas en el texto. +A diferencia de CLIP, DALL-E recibe tanto texto como imagen como un único flujo de tokens para ambos. Por lo tanto, a partir de múltiples indicaciones, puedes generar imágenes basadas en el texto. ### [DALL-E 2](https://openai.com/dall-e-2) -La principal diferencia entre DALL-E 1 y 2 es que genera imágenes y arte más realistas. +La principal diferencia entre DALL-E 1 y 2 es que este último genera imágenes y arte más realistas. Ejemplos de generación de imágenes con DALL-E: -![Imagen producida por Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.es.png) +![Imagen generada por DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![Imagen generada por DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![Imagen generada por DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) ----|----|---- -Imagen generada a partir de la indicación *un primer plano de un retrato en acuarela de un joven profesor de literatura con un libro* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de una joven profesora de ciencias de la computación con una computadora* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de un viejo profesor de matemáticas frente a una pizarra* +Imagen generada con la indicación *un retrato en acuarela de cerca de un joven profesor de literatura con un libro* | Imagen generada con la indicación *un retrato al óleo de cerca de una joven profesora de informática con una computadora* | Imagen generada con la indicación *un retrato al óleo de cerca de un viejo profesor de matemáticas frente a un pizarrón* ## Referencias -* Artículo de VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* Artículo de CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) +* Documento de VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Documento de CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/sketchnotes/LICENSE.md b/translations/es/lessons/sketchnotes/LICENSE.md index 1f97bb99..7240dd90 100644 --- a/translations/es/lessons/sketchnotes/LICENSE.md +++ b/translations/es/lessons/sketchnotes/LICENSE.md @@ -1,175 +1,146 @@ -# Atribución-CompartirIgual 4.0 Internacional + +Attribution-ShareAlike 4.0 Internacional ======================================================================= -La Corporación Creative Commons ("Creative Commons") no es un bufete de abogados y no proporciona servicios legales ni asesoría legal. La distribución de las licencias públicas de Creative Commons no crea una relación de abogado-cliente u otra relación. Creative Commons pone a disposición sus licencias e información relacionada en una base "tal cual". Creative Commons no ofrece garantías respecto a sus licencias, cualquier material licenciado bajo sus términos y condiciones, o cualquier información relacionada. Creative Commons renuncia a toda responsabilidad por daños que resulten de su uso en la máxima medida posible. +La Corporación Creative Commons ("Creative Commons") no es un bufete de abogados y no ofrece servicios legales ni asesoramiento legal. La distribución de licencias públicas de Creative Commons no crea una relación abogado-cliente ni ninguna otra relación. Creative Commons pone sus licencias e información relacionada a disposición "tal cual". Creative Commons no ofrece garantías respecto a sus licencias, cualquier material licenciado bajo sus términos y condiciones, o cualquier información relacionada. Creative Commons no se hace responsable de los daños resultantes de su uso en la máxima medida permitida. -## Uso de las Licencias Públicas de Creative Commons +Uso de Licencias Públicas de Creative Commons -Las licencias públicas de Creative Commons proporcionan un conjunto estándar de términos y condiciones que los creadores y otros titulares de derechos pueden usar para compartir obras originales de autoría y otro material sujeto a derechos de autor y ciertos otros derechos especificados en la licencia pública a continuación. Las siguientes consideraciones son solo para fines informativos, no son exhaustivas y no forman parte de nuestras licencias. +Las licencias públicas de Creative Commons proporcionan un conjunto estándar de términos y condiciones que los creadores y otros titulares de derechos pueden usar para compartir obras originales sujetas a derechos de autor y ciertos otros derechos especificados en la licencia pública a continuación. Las siguientes consideraciones son solo para fines informativos, no son exhaustivas y no forman parte de nuestras licencias. -- Consideraciones para los licenciantes: Nuestras licencias públicas están destinadas a ser utilizadas por aquellos autorizados a dar permiso al público para usar material de maneras que de otro modo estarían restringidas por derechos de autor y ciertos otros derechos. Nuestras licencias son irrevocables. Los licenciantes deben leer y comprender los términos y condiciones de la licencia que elijan antes de aplicarla. Los licenciantes también deben asegurar todos los derechos necesarios antes de aplicar nuestras licencias para que el público pueda reutilizar el material como se espera. Los licenciantes deben marcar claramente cualquier material que no esté sujeto a la licencia. Esto incluye otro material licenciado bajo CC, o material utilizado bajo una excepción o limitación al derecho de autor. Más consideraciones para licenciantes: wiki.creativecommons.org/Considerations_for_licensors + Consideraciones para los licenciantes: Nuestras licencias públicas están destinadas a ser utilizadas por quienes están autorizados a otorgar al público permiso para usar material de maneras que de otro modo estarían restringidas por derechos de autor y ciertos otros derechos. Nuestras licencias son irrevocables. Los licenciantes deben leer y comprender los términos y condiciones de la licencia que elijan antes de aplicarla. Los licenciantes también deben asegurarse de tener todos los derechos necesarios antes de aplicar nuestras licencias para que el público pueda reutilizar el material como se espera. Los licenciantes deben marcar claramente cualquier material que no esté sujeto a la licencia. Esto incluye otro material con licencia CC o material utilizado bajo una excepción o limitación de derechos de autor. Más consideraciones para los licenciantes: + wiki.creativecommons.org/Considerations_for_licensors -- Consideraciones para el público: Al usar una de nuestras licencias públicas, un licenciante otorga al público permiso para usar el material licenciado bajo términos y condiciones especificados. Si el permiso del licenciante no es necesario por alguna razón, por ejemplo, debido a alguna excepción o limitación aplicable al derecho de autor, entonces ese uso no está regulado por la licencia. Nuestras licencias otorgan solo permisos bajo derechos de autor y ciertos otros derechos que un licenciante tiene autoridad para otorgar. El uso del material licenciado aún puede estar restringido por otras razones, incluyendo porque otros tienen derechos de autor u otros derechos sobre el material. Un licenciante puede hacer solicitudes especiales, como pedir que todos los cambios sean marcados o descritos. Aunque no es obligatorio por nuestras licencias, se le anima a respetar esas solicitudes donde sea razonable. Más consideraciones para el público: wiki.creativecommons.org/Considerations_for_licensees + Consideraciones para el público: Al usar una de nuestras licencias públicas, un licenciante otorga al público permiso para usar el material licenciado bajo los términos y condiciones especificados. Si el permiso del licenciante no es necesario por alguna razón, por ejemplo, debido a una excepción o limitación aplicable a los derechos de autor, entonces ese uso no está regulado por la licencia. Nuestras licencias solo otorgan permisos bajo derechos de autor y ciertos otros derechos que un licenciante tiene autoridad para otorgar. El uso del material licenciado aún puede estar restringido por otras razones, incluyendo que otros tengan derechos de autor u otros derechos sobre el material. Un licenciante puede hacer solicitudes especiales, como pedir que se marquen o describan todos los cambios. Aunque nuestras licencias no lo requieren, se le anima a respetar esas solicitudes cuando sean razonables. Más consideraciones para el público: + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Licencia Pública de Atribución-CompartirIgual 4.0 Internacional de Creative Commons +Licencia Pública Internacional Creative Commons Attribution-ShareAlike 4.0 -Al ejercer los Derechos Licenciados (definidos a continuación), usted acepta y se compromete a estar sujeto a los términos y condiciones de esta Licencia Pública de Atribución-CompartirIgual 4.0 Internacional de Creative Commons ("Licencia Pública"). En la medida en que esta Licencia Pública pueda ser interpretada como un contrato, se le otorgan los Derechos Licenciados en consideración a su aceptación de estos términos y condiciones, y el Licenciante le otorga tales derechos en consideración a los beneficios que el Licenciante recibe al hacer que el Material Licenciado esté disponible bajo estos términos y condiciones. +Al ejercer los Derechos Licenciados (definidos a continuación), Usted acepta y se compromete a cumplir con los términos y condiciones de esta Licencia Pública Internacional Creative Commons Attribution-ShareAlike 4.0 ("Licencia Pública"). En la medida en que esta Licencia Pública pueda interpretarse como un contrato, se le otorgan los Derechos Licenciados en consideración a su aceptación de estos términos y condiciones, y el Licenciante le otorga dichos derechos en consideración a los beneficios que el Licenciante recibe al poner el Material Licenciado a disposición bajo estos términos y condiciones. -## Sección 1 -- Definiciones. +Sección 1 -- Definiciones. -a. Material Adaptado significa material sujeto a Derechos de Autor y Derechos Similares que se deriva de o se basa en el Material Licenciado y en el cual el Material Licenciado es traducido, alterado, arreglado, transformado, o modificado de otra manera de una manera que requiere permiso bajo los Derechos de Autor y Derechos Similares que posee el Licenciante. A los efectos de esta Licencia Pública, cuando el Material Licenciado es una obra musical, actuación o grabación de sonido, el Material Adaptado se produce siempre que el Material Licenciado esté sincronizado en relación temporal con una imagen en movimiento. + a. Material Adaptado significa material sujeto a Derechos de Autor y Derechos Similares que se deriva o basa en el Material Licenciado y en el cual el Material Licenciado se traduce, altera, organiza, transforma o modifica de alguna manera que requiere permiso bajo los Derechos de Autor y Derechos Similares del Licenciante. Para los fines de esta Licencia Pública, cuando el Material Licenciado es una obra musical, interpretación o grabación sonora, el Material Adaptado siempre se produce cuando el Material Licenciado se sincroniza en relación temporal con una imagen en movimiento. -b. Licencia del Adaptador significa la licencia que usted aplica a sus Derechos de Autor y Derechos Similares en sus contribuciones al Material Adaptado de acuerdo con los términos y condiciones de esta Licencia Pública. + b. Licencia del Adaptador significa la licencia que Usted aplica a Sus Derechos de Autor y Derechos Similares en Sus contribuciones al Material Adaptado de acuerdo con los términos y condiciones de esta Licencia Pública. -c. Licencia Compatible con BY-SA significa una licencia listada en creativecommons.org/compatiblelicenses, aprobada por Creative Commons como esencialmente equivalente a esta Licencia Pública. + c. Licencia Compatible BY-SA significa una licencia enumerada en creativecommons.org/compatiblelicenses, aprobada por Creative Commons como esencialmente equivalente a esta Licencia Pública. -d. Derechos de Autor y Derechos Similares significa derechos de autor y/o derechos similares estrechamente relacionados con el derecho de autor, incluyendo, sin limitación, derechos de actuación, transmisión, grabación de sonido y Derechos de Base de Datos Sui Generis, sin importar cómo se etiqueten o clasifiquen los derechos. A los efectos de esta Licencia Pública, los derechos especificados en la Sección 2(b)(1)-(2) no son Derechos de Autor y Derechos Similares. + d. Derechos de Autor y Derechos Similares significa derechos de autor y/o derechos similares estrechamente relacionados con los derechos de autor, incluyendo, sin limitación, derechos de interpretación, radiodifusión, grabación sonora y Derechos de Base de Datos Sui Generis, sin importar cómo se etiqueten o clasifiquen los derechos. Para los fines de esta Licencia Pública, los derechos especificados en la Sección 2(b)(1)-(2) no son Derechos de Autor y Derechos Similares. -e. Medidas Tecnológicas Efectivas significa aquellas medidas que, en ausencia de la autoridad adecuada, no pueden ser eludidas bajo leyes que cumplen obligaciones bajo el Artículo 11 del Tratado de Derechos de Autor de la OMPI adoptado el 20 de diciembre de 1996, y/o acuerdos internacionales similares. + e. Medidas Tecnológicas Efectivas significa aquellas medidas que, en ausencia de la debida autoridad, no pueden ser eludidas bajo leyes que cumplan con las obligaciones del Artículo 11 del Tratado de la OMPI sobre Derechos de Autor adoptado el 20 de diciembre de 1996, y/o acuerdos internacionales similares. -f. Excepciones y Limitaciones significa uso justo, trato justo y/o cualquier otra excepción o limitación a los Derechos de Autor y Derechos Similares que se aplica a su uso del Material Licenciado. + f. Excepciones y Limitaciones significa uso legítimo, trato justo y/o cualquier otra excepción o limitación a los Derechos de Autor y Derechos Similares que se aplique a Su uso del Material Licenciado. -g. Elementos de la Licencia significa los atributos de la licencia listados en el nombre de una Licencia Pública de Creative Commons. Los Elementos de la Licencia de esta Licencia Pública son Atribución y CompartirIgual. + g. Elementos de la Licencia significa los atributos de la licencia enumerados en el nombre de una Licencia Pública de Creative Commons. Los Elementos de la Licencia de esta Licencia Pública son Atribución y CompartirIgual. -h. Material Licenciado significa la obra artística o literaria, base de datos, u otro material al que el Licenciante aplicó esta Licencia Pública. + h. Material Licenciado significa la obra artística o literaria, base de datos u otro material al que el Licenciante aplicó esta Licencia Pública. -i. Derechos Licenciados significa los derechos que se le otorgan a usted sujetos a los términos y condiciones de esta Licencia Pública, que están limitados a todos los Derechos de Autor y Derechos Similares que se aplican a su uso del Material Licenciado y que el Licenciante tiene autoridad para licenciar. + i. Derechos Licenciados significa los derechos que se le otorgan a Usted sujetos a los términos y condiciones de esta Licencia Pública, que se limitan a todos los Derechos de Autor y Derechos Similares que se aplican a Su uso del Material Licenciado y que el Licenciante tiene autoridad para licenciar. -j. Licenciante significa la(s) persona(s) o entidad(s) que otorgan derechos bajo esta Licencia Pública. + j. Licenciante significa la(s) persona(s) o entidad(es) que otorgan derechos bajo esta Licencia Pública. -k. Compartir significa proporcionar material al público por cualquier medio o proceso que requiera permiso bajo los Derechos Licenciados, como reproducción, exhibición pública, actuación pública, distribución, difusión, comunicación, o importación, y hacer material disponible al público incluyendo de maneras que los miembros del público puedan acceder al material desde un lugar y en un momento elegidos individualmente por ellos. + k. Compartir significa proporcionar material al público por cualquier medio o proceso que requiera permiso bajo los Derechos Licenciados, como reproducción, exhibición pública, interpretación pública, distribución, difusión, comunicación o importación, y poner material a disposición del público, incluyendo de maneras que los miembros del público puedan acceder al material desde un lugar y en un momento elegido individualmente por ellos. -l. Derechos de Base de Datos Sui Generis significa derechos distintos de los derechos de autor que resultan de la Directiva 96/9/CE del Parlamento Europeo y del Consejo del 11 de marzo de 1996 sobre la protección legal de las bases de datos, según enmendada y/o sucedida, así como otros derechos esencialmente equivalentes en cualquier parte del mundo. + l. Derechos de Base de Datos Sui Generis significa derechos distintos de los derechos de autor que resultan de la Directiva 96/9/CE del Parlamento Europeo y del Consejo de 11 de marzo de 1996 sobre la protección jurídica de las bases de datos, según enmendada y/o sucedida, así como otros derechos esencialmente equivalentes en cualquier parte del mundo. -m. Usted significa la persona o entidad que ejerce los Derechos Licenciados bajo esta Licencia Pública. Su tiene un significado correspondiente. + m. Usted significa la persona o entidad que ejerce los Derechos Licenciados bajo esta Licencia Pública. Su tiene un significado correspondiente. -## Sección 2 -- Alcance. +Sección 2 -- Alcance. -a. Otorgamiento de licencia. + a. Concesión de la licencia. -1. Sujeto a los términos y condiciones de esta Licencia Pública, el Licenciante por la presente le otorga a usted una licencia mundial, libre de regalías, no sublicenciable, no exclusiva, irrevocable para ejercer los Derechos Licenciados en el Material Licenciado para: + 1. Sujeto a los términos y condiciones de esta Licencia Pública, el Licenciante le otorga por la presente una licencia mundial, libre de regalías, no sublicenciable, no exclusiva e irrevocable para ejercer los Derechos Licenciados en el Material Licenciado para: - a. reproducir y Compartir el Material Licenciado, en su totalidad o en parte; y + a. reproducir y Compartir el Material Licenciado, en su totalidad o en parte; y - b. producir, reproducir y Compartir Material Adaptado. + b. producir, reproducir y Compartir Material Adaptado. -2. Excepciones y Limitaciones. Para evitar dudas, donde se apliquen Excepciones y Limitaciones a su uso, esta Licencia Pública no se aplica, y no necesita cumplir con sus términos y condiciones. + 2. Excepciones y Limitaciones. Para evitar dudas, cuando se apliquen Excepciones y Limitaciones a Su uso, esta Licencia Pública no se aplica, y Usted no necesita cumplir con sus términos y condiciones. -3. Plazo. El plazo de esta Licencia Pública se especifica en la Sección 6(a). + 3. Plazo. El plazo de esta Licencia Pública se especifica en la Sección 6(a). -4. Medios y formatos; modificaciones técnicas permitidas. El Licenciante le autoriza a ejercer los Derechos Licenciados en todos los medios y formatos, ya sean conocidos ahora o creados en el futuro, y a realizar modificaciones técnicas necesarias para hacerlo. El Licenciante renuncia y/o acuerda no afirmar ningún derecho o autoridad para prohibirle hacer modificaciones técnicas necesarias para ejercer los Derechos Licenciados, incluyendo modificaciones técnicas necesarias para eludir Medidas Tecnológicas Efectivas. A los efectos de esta Licencia Pública, simplemente hacer modificaciones autorizadas por esta Sección 2(a)(4) nunca produce Material Adaptado. + 4. Medios y formatos; modificaciones técnicas permitidas. El Licenciante le autoriza a ejercer los Derechos Licenciados en todos los medios y formatos, ya sean conocidos ahora o creados en el futuro, y a realizar las modificaciones técnicas necesarias para hacerlo. El Licenciante renuncia y/o acuerda no hacer valer ningún derecho o autoridad para prohibirle realizar modificaciones técnicas necesarias para ejercer los Derechos Licenciados, incluyendo modificaciones técnicas necesarias para eludir Medidas Tecnológicas Efectivas. Para los fines de esta Licencia Pública, simplemente realizar modificaciones autorizadas por esta Sección 2(a)(4) nunca produce Material Adaptado. -5. Destinatarios posteriores. + 5. Destinatarios posteriores. - a. Oferta del Licenciante -- Material Licenciado. Cada destinatario del Material Licenciado recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados bajo los términos y condiciones de esta Licencia Pública. + a. Oferta del Licenciante -- Material Licenciado. Cada destinatario del Material Licenciado recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados bajo los términos y condiciones de esta Licencia Pública. - b. Oferta adicional del Licenciante -- Material Adaptado. Cada destinatario de Material Adaptado de usted recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados en el Material Adaptado bajo las condiciones de la Licencia del Adaptador que usted aplica. + b. Oferta adicional del Licenciante -- Material Adaptado. Cada destinatario del Material Adaptado de Usted recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados en el Material Adaptado bajo las condiciones de la Licencia del Adaptador que Usted aplique. - c. Sin restricciones posteriores. No puede ofrecer o imponer términos o condiciones adicionales o diferentes sobre, o aplicar Medidas Tecnológicas Efectivas a, el Material Licenciado si hacerlo restringe el ejercicio de los Derechos Licenciados por cualquier destinatario del Material Licenciado. + c. Sin restricciones posteriores. Usted no puede ofrecer ni imponer términos o condiciones adicionales o diferentes, ni aplicar Medidas Tecnológicas Efectivas al Material Licenciado si al hacerlo restringe el ejercicio de los Derechos Licenciados por parte de cualquier destinatario del Material Licenciado. -6. Sin respaldo. Nada en esta Licencia Pública constituye o puede interpretarse como permiso para afirmar o implicar que usted está, o que su uso del Material Licenciado está, conectado con, o patrocinado, respaldado, o otorgado estatus oficial por, el Licenciante u otros designados para recibir atribución según lo dispuesto en la Sección 3(a)(1)(A)(i). + 6. Sin respaldo. Nada en esta Licencia Pública constituye o puede interpretarse como permiso para afirmar o implicar que Usted está, o que Su uso del Material Licenciado está, conectado con, patrocinado, respaldado o tiene estatus oficial otorgado por el Licenciante u otros designados para recibir atribución según lo dispuesto en la Sección 3(a)(1)(A)(i). -b. Otros derechos. + b. Otros derechos. -1. Los derechos morales, como el derecho a la integridad, no están licenciados bajo esta Licencia Pública, ni tampoco los derechos de publicidad, privacidad y/o otros derechos de personalidad similares; sin embargo, en la medida de lo posible, el Licenciante renuncia y/o acuerda no afirmar tales derechos que posee el Licenciante en la medida limitada necesaria para permitirle ejercer los Derechos Licenciados, pero no de otra manera. + 1. Los derechos morales, como el derecho a la integridad, no están licenciados bajo esta Licencia Pública, ni tampoco los derechos de publicidad, privacidad y/o otros derechos similares de la personalidad; sin embargo, en la medida de lo posible, el Licenciante renuncia y/o acuerda no hacer valer dichos derechos en la medida limitada necesaria para permitirle ejercer los Derechos Licenciados, pero no de otro modo. -2. Los derechos de patentes y marcas comerciales no están licenciados bajo esta Licencia Pública. + 2. Los derechos de patente y marca registrada no están licenciados bajo esta Licencia Pública. -3. En la medida de lo posible, el Licenciante renuncia a cualquier derecho a cobrar regalías de usted por el ejercicio de los Derechos Licenciados, ya sea directamente o a través de una sociedad de gestión bajo cualquier esquema de licencia voluntaria o renunciable o de licencia obligatoria. En todos los demás casos, el Licenciante se reserva expresamente cualquier derecho a cobrar tales regalías. + 3. En la medida de lo posible, el Licenciante renuncia a cualquier derecho a cobrar regalías de Usted por el ejercicio de los Derechos Licenciados, ya sea directamente o a través de una sociedad de gestión colectiva bajo cualquier esquema de licencia voluntaria o legal que pueda ser renunciado. En todos los demás casos, el Licenciante se reserva expresamente cualquier derecho a cobrar dichas regalías. +Derechos, luego la base de datos en la que tienes Derechos de Base de Datos Sui Generis (pero no su contenido individual) es Material Adaptado, -## Sección 3 -- Condiciones de la Licencia. +incluyendo para los propósitos de la Sección 3(b); y +c. Debes cumplir con las condiciones de la Sección 3(a) si compartes todo o una parte sustancial del contenido de la base de datos. -Su ejercicio de los Derechos Licenciados está expresamente sujeto a las siguientes condiciones. +Para evitar dudas, esta Sección 4 complementa y no reemplaza tus obligaciones bajo esta Licencia Pública cuando los Derechos Licenciados incluyen otros Derechos de Autor y Derechos Similares. -a. Atribución. +### Sección 5 -- Renuncia de Garantías y Limitación de Responsabilidad. -1. Si usted Comparte el Material Licenciado (incluyendo en forma modificada), debe: +a. A MENOS QUE EL LICENCIANTE LO HAYA ACORDADO POR SEPARADO, EN LA MEDIDA DE LO POSIBLE, EL LICENCIANTE OFRECE EL MATERIAL LICENCIADO TAL COMO ESTÁ Y SEGÚN DISPONIBILIDAD, Y NO HACE DECLARACIONES NI GARANTÍAS DE NINGÚN TIPO SOBRE EL MATERIAL LICENCIADO, YA SEAN EXPRESAS, IMPLÍCITAS, LEGALES O DE OTRO TIPO. ESTO INCLUYE, SIN LIMITACIÓN, GARANTÍAS DE TITULARIDAD, COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR, NO INFRACCIÓN, AUSENCIA DE DEFECTOS LATENTES U OTROS, EXACTITUD, O LA PRESENCIA O AUSENCIA DE ERRORES, SEAN O NO CONOCIDOS O DESCUBRIBLES. DONDE LAS RENUNCIAS DE GARANTÍAS NO ESTÉN PERMITIDAS TOTAL O PARCIALMENTE, ESTA RENUNCIA PUEDE NO APLICARTE. - a. retener lo siguiente si es proporcionado por el Licenciante junto con el Material Licenciado: +b. EN LA MEDIDA DE LO POSIBLE, EN NINGÚN CASO EL LICENCIANTE SERÁ RESPONSABLE ANTE TI BAJO NINGUNA TEORÍA LEGAL (INCLUYENDO, SIN LIMITACIÓN, NEGLIGENCIA) O DE OTRO MODO POR PÉRDIDAS, COSTOS, GASTOS O DAÑOS DIRECTOS, ESPECIALES, INDIRECTOS, INCIDENTALES, CONSECUENTES, PUNITIVOS, EJEMPLARES U OTROS QUE SURJAN DE ESTA LICENCIA PÚBLICA O DEL USO DEL MATERIAL LICENCIADO, INCLUSO SI EL LICENCIANTE HA SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES PÉRDIDAS, COSTOS, GASTOS O DAÑOS. DONDE UNA LIMITACIÓN DE RESPONSABILIDAD NO ESTÉ PERMITIDA TOTAL O PARCIALMENTE, ESTA LIMITACIÓN PUEDE NO APLICARTE. - i. identificación del creador(es) del Material Licenciado y de cualquier otro designado para recibir atribución, de cualquier manera razonable solicitada por el Licenciante (incluyendo por seudónimo si está designado); +c. La renuncia de garantías y la limitación de responsabilidad proporcionadas anteriormente se interpretarán de manera que, en la medida de lo posible, se aproximen más a una renuncia absoluta y exención de toda responsabilidad. - ii. un aviso de copyright; +### Sección 6 -- Duración y Terminación. - iii. un aviso que se refiera a esta Licencia Pública; +a. Esta Licencia Pública se aplica durante el período de los Derechos de Autor y Derechos Similares licenciados aquí. Sin embargo, si no cumples con esta Licencia Pública, tus derechos bajo esta Licencia Pública se terminan automáticamente. - iv. un aviso que se refiera a la renuncia de garantías; +b. Cuando tu derecho a usar el Material Licenciado haya terminado bajo la Sección 6(a), se restablece: - v. una URI o hipervínculo al Material Licenciado en la medida razonablemente práctica; +1. automáticamente a partir de la fecha en que se subsane la violación, siempre que se subsane dentro de los 30 días posteriores a tu descubrimiento de la violación; o +2. mediante un restablecimiento expreso por parte del Licenciante. - b. indicar si usted modificó el Material Licenciado y retener una indicación de cualquier modificación previa; y - - c. indicar que el Material Licenciado está licenciado bajo esta Licencia Pública, e incluir el texto de, o la URI o hipervínculo a, esta Licencia Pública. - -2. Puede satisfacer las condiciones en la Sección 3(a)(1) de cualquier manera razonable basada en el medio, los medios y el contexto en el que usted Comparte el Material Licenciado. Por ejemplo, puede ser razonable satisfacer las condiciones proporcionando una URI o hipervínculo a un recurso que incluya la información requerida. - -3. Si lo solicita el Licenciante, debe eliminar cualquier información requerida por la Sección 3(a)(1)(A) en la medida razonablemente práctica. - -b. CompartirIgual. - -Además de las condiciones en la Sección 3(a), si usted Comparte Material Adaptado que produce, también se aplican las siguientes condiciones. - -1. La Licencia del Adaptador que usted aplica debe ser una licencia de Creative Commons con los mismos Elementos de Licencia, esta versión o posterior, o una Licencia Compatible con BY-SA. - -2. Debe incluir el texto de, o la URI o hipervínculo a, la Licencia del Adaptador que usted aplica. Puede satisfacer esta condición de cualquier manera razonable basada en el medio, los medios y el contexto en el que usted Comparte Material Adaptado. - -3. No puede ofrecer o imponer términos o condiciones adicionales o diferentes sobre, o aplicar Medidas Tecnológicas Efectivas a, el Material Adaptado que restrinjan el ejercicio de los derechos otorgados bajo la Licencia del Adaptador que usted aplica. - -## Sección 4 -- Derechos de Base de Datos Sui Generis. - -Donde los Derechos Licenciados incluyen Derechos de Base de Datos Sui Generis que se aplican a su uso del Material Licenciado: - -a. para evitar dudas, la Sección 2(a)(1) le otorga el derecho a extraer, reutilizar, reproducir y Compartir todo o una parte sustancial del contenido de la base de datos; - -b. si usted incluye todo o una parte sustancial del contenido de la base de datos en una base de datos en la que tiene Derechos de Base de Datos Sui Generis, entonces la base de datos en la que tiene Derechos de Base de Datos Sui Generis (pero no su contenido individual) es Material Adaptado, - - incluyendo a efectos de la Sección 3(b); y -c. debe cumplir con las condiciones en la Sección 3(a) si usted Comparte todo o una parte sustancial del contenido de la base de datos. - -Para evitar dudas, esta Sección 4 complementa y no reemplaza sus obligaciones bajo esta Licencia Pública donde los Derechos Licenciados incluyen otros Derechos de Autor y Derechos Similares. - -## Sección 5 -- Renuncia de Garantías y Limitación de Responsabilidad. - -a. A MENOS QUE SE ACUERDE SEPARADAMENTE POR EL LICENCIANTE, EN LA MEDIDA POSIBLE, EL LICENCIANTE OFRECE EL MATERIAL LICENCIADO TAL CUAL Y COMO ESTÉ DISPONIBLE, Y NO HACE REPRESENTACIONES O GARANTÍAS DE NINGÚN TIPO CON RESPECTO AL MATERIAL LICENCIADO, YA SEA EXPRESAS, IMPLÍCITAS, ESTATUTARIAS O DE OTRA MANERA. ESTO INCLUYE, SIN LIMITACIÓN, GARANTÍAS DE TITULO, COMERCIALIZABILIDAD, ADECUACIÓN PARA UN PROPÓSITO PARTICULAR, NO INFRACCIÓN, AUSENCIA DE DEFECTOS LATENTES U OTROS, EXACTITUD, O LA PRESENCIA O AUSENCIA DE ERRORES, YA SEA O NO CONOCIDOS O DESCUBRIBLES. DONDE LAS RENUNCIAS DE GARANTÍAS NO SON PERMITIDAS EN SU TOTALIDAD O EN PARTE, ESTA RENUNCIA PUEDE NO APLICARSE A USTED. - -b. EN LA MEDIDA POSIBLE, EN NINGÚN CASO EL LICENCIANTE SERÁ RESPONSABLE ANTE USTED BAJO NINGUNA TEORÍA LEGAL (INCLUYENDO, SIN LIMITACIÓN, NEGLIGENCIA) O DE OTRA MANERA POR CUALQUIER PÉRDIDA, COSTO, GASTO O DAÑO DIRECTO, ESPECIAL, INDIRECTO, INCIDENTAL, CONSECUENTE, PUNITIVO, EJEMPLAR, O DE OTRA MANERA QUE SURJA DE ESTA LICENCIA PÚBLICA O DEL USO DEL MATERIAL LICENCIADO, INCLUSO SI EL LICENCIANTE HA SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES PÉRDIDAS, COSTOS, GASTOS O DAÑOS. DONDE UNA LIMITACIÓN DE RESPONSABILIDAD NO ES PERMITIDA EN SU TOTALIDAD O EN PARTE, ESTA LIMITACIÓN PUEDE NO APLICARSE A USTED. - -c. La renuncia de garantías y la limitación de responsabilidad proporcionadas anteriormente se interpretarán de una manera que, en la medida posible, se aproxime más a una renuncia absoluta y a la exención de toda responsabilidad. - -## Sección 6 -- Plazo y Terminación. - -a. Esta Licencia Pública se aplica por el plazo de los Derechos de Autor y Derechos Similares licenciados aquí. Sin embargo, si usted no cumple con esta Licencia Pública, entonces sus derechos bajo esta Licencia Pública se terminan automáticamente. - -b. Donde su derecho a usar el Material Licenciado ha terminado bajo la Sección 6(a), se restablece: - - 1. automáticamente a partir de la fecha en que se cure la violación, siempre que se cure dentro de los 30 días posteriores a su descubrimiento de la violación; o - - 2. tras el restablecimiento expreso por parte del Licenciante. - - Para evitar dudas, esta Sección 6(b) no afecta ningún derecho que el Licenciante pueda tener para buscar remedios por sus violaciones de esta Licencia Pública. +Para evitar dudas, esta Sección 6(b) no afecta ningún derecho que el Licenciante pueda tener para buscar remedios por tus violaciones de esta Licencia Pública. c. Para evitar dudas, el Licenciante también puede ofrecer el Material Licenciado bajo términos o condiciones separados o dejar de distribuir el Material Licenciado en cualquier momento; sin embargo, hacerlo no terminará esta Licencia Pública. d. Las Secciones 1, 5, 6, 7 y 8 sobreviven a la terminación de esta Licencia Pública. -## Sección 7 -- Otros Términos y Condiciones. +### Sección 7 -- Otros Términos y Condiciones. -a. El Licenciante no estará obligado por ningún término o condición adicional o diferente comunicado por usted a menos que se acuerde expresamente. +a. El Licenciante no estará obligado por términos o condiciones adicionales o diferentes comunicados por ti a menos que lo acuerde expresamente. -b. Cualquier arreglo, entendimiento o acuerdo respecto al Material Licenciado no declarado aquí es independiente y separado de los términos y condiciones de esta Licencia Pública. +b. Cualquier arreglo, entendimiento o acuerdo relacionado con el Material Licenciado que no esté establecido aquí es independiente y separado de los términos y condiciones de esta Licencia Pública. -## Sección 8 -- Interpretación. +### Sección 8 -- Interpretación. -a. Para evitar dudas, esta Licencia Pública no reduce, limita, restringe, ni impone condiciones sobre ningún uso del Material Licenciado que podría hacerse legalmente sin permiso bajo esta Licencia Pública. +a. Para evitar dudas, esta Licencia Pública no reduce, limita, restringe ni impone condiciones sobre ningún uso del Material Licenciado que pueda hacerse legalmente sin permiso bajo esta Licencia Pública. -b. En la medida posible, si alguna disposición de esta Licencia Pública se considera inaplicable, se reformará automáticamente en la medida mínima necesaria para hacerla aplicable. Si la disposición no puede ser reformada, se separará de esta Licencia Pública sin afectar la aplicabilidad de los términos y condiciones restantes. +b. En la medida de lo posible, si alguna disposición de esta Licencia Pública se considera inaplicable, se reformará automáticamente en la medida mínima necesaria para hacerla aplicable. Si la disposición no puede reformarse, se separará de esta Licencia Pública sin afectar la aplicabilidad de los términos y condiciones restantes. -c. Ningún término o condición de esta Licencia Pública será renunciado y ninguna falta de cumplimiento será consentida a menos que sea expresamente acordada por el Licenciante. +c. Ningún término o condición de esta Licencia Pública será renunciado ni se consentirá el incumplimiento a menos que el Licenciante lo acuerde expresamente. -d. Nada en esta Licencia Pública constituye o puede interpretarse como una limitación o renuncia a ningún privilegio +d. Nada en esta Licencia Pública constituye o puede interpretarse como una limitación o renuncia de cualquier privilegio e inmunidad que se aplique al Licenciante o a ti, incluyendo frente a los procesos legales de cualquier jurisdicción o autoridad. + +======================================================================= + +Creative Commons no es parte de sus licencias públicas. No obstante, Creative Commons puede optar por aplicar una de sus licencias públicas al material que publica y, en esos casos, será considerado el “Licenciante”. El texto de las licencias públicas de Creative Commons está dedicado al dominio público bajo la Dedicación de Dominio Público CC0. Excepto con el propósito limitado de indicar que el material se comparte bajo una licencia pública de Creative Commons o según lo permitido por las políticas de Creative Commons publicadas en creativecommons.org/policies, Creative Commons no autoriza el uso de la marca "Creative Commons" ni de ninguna otra marca o logotipo de Creative Commons sin su consentimiento previo por escrito, incluyendo, sin limitación, en relación con cualquier modificación no autorizada de cualquiera de sus licencias públicas o cualquier otro arreglo, entendimiento o acuerdo relacionado con el uso del material licenciado. Para evitar dudas, este párrafo no forma parte de las licencias públicas. + +Creative Commons puede ser contactado en creativecommons.org. **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/sketchnotes/README.md b/translations/es/lessons/sketchnotes/README.md index 7984e304..583b79e6 100644 --- a/translations/es/lessons/sketchnotes/README.md +++ b/translations/es/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -Todos los sketchnotes del currículo se pueden descargar aquí. + +Todas las notas visuales del plan de estudios se pueden descargar aquí. 🎨 Creado por: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file diff --git a/translations/fa/README.md b/translations/fa/README.md new file mode 100644 index 00000000..1a8bb8f8 --- /dev/null +++ b/translations/fa/README.md @@ -0,0 +1,156 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# هوش مصنوعی برای مبتدیان - یک برنامه آموزشی + +|![طرح‌نگاری توسط [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| هوش مصنوعی برای مبتدیان - _طرح‌نگاری توسط [@girlie_mac](https://twitter.com/girlie_mac)_ | + +دنیای **هوش مصنوعی** (AI) را با برنامه آموزشی ۱۲ هفته‌ای و ۲۴ درس ما کشف کنید! این برنامه شامل درس‌های عملی، آزمون‌ها و آزمایشگاه‌ها است. این برنامه آموزشی برای مبتدیان طراحی شده و ابزارهایی مانند TensorFlow و PyTorch و همچنین اخلاق در هوش مصنوعی را پوشش می‌دهد. + +## آنچه خواهید آموخت + +**[نقشه ذهنی دوره](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +در این برنامه آموزشی، شما خواهید آموخت: + +* رویکردهای مختلف به هوش مصنوعی، از جمله رویکرد نمادین "قدیمی خوب" با **نمایش دانش** و استدلال ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **شبکه‌های عصبی** و **یادگیری عمیق** که در قلب هوش مصنوعی مدرن قرار دارند. مفاهیم پشت این موضوعات مهم را با استفاده از کد در دو چارچوب محبوب - [TensorFlow](http://Tensorflow.org) و [PyTorch](http://pytorch.org) توضیح خواهیم داد. +* **معماری‌های عصبی** برای کار با تصاویر و متن. مدل‌های اخیر را پوشش خواهیم داد، اما ممکن است در زمینه پیشرفته‌ترین مدل‌ها کمی کمبود داشته باشیم. +* رویکردهای کمتر محبوب هوش مصنوعی، مانند **الگوریتم‌های ژنتیک** و **سیستم‌های چندعاملی**. + +آنچه در این برنامه آموزشی پوشش داده نمی‌شود: + +> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما پیدا کنید](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* موارد تجاری استفاده از **هوش مصنوعی در کسب‌وکار**. پیشنهاد می‌کنیم مسیر یادگیری [مقدمه‌ای بر هوش مصنوعی برای کاربران کسب‌وکار](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) در Microsoft Learn یا [مدرسه کسب‌وکار هوش مصنوعی](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum) که با همکاری [INSEAD](https://www.insead.edu/) توسعه یافته است، را دنبال کنید. +* **یادگیری ماشین کلاسیک** که به خوبی در برنامه آموزشی [یادگیری ماشین برای مبتدیان](http://github.com/Microsoft/ML-for-Beginners) توضیح داده شده است. +* کاربردهای عملی هوش مصنوعی که با استفاده از **[خدمات شناختی](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ساخته شده‌اند. برای این موضوع، پیشنهاد می‌کنیم با ماژول‌های Microsoft Learn برای [بینایی](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)، [پردازش زبان طبیعی](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)، **[هوش مصنوعی مولد با سرویس Azure OpenAI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** و دیگر موارد شروع کنید. +* چارچوب‌های ابری خاص یادگیری ماشین، مانند [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)، [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum)، یا [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). پیشنهاد می‌کنیم مسیرهای یادگیری [ساخت و اجرای راه‌حل‌های یادگیری ماشین با Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) و [ساخت و اجرای راه‌حل‌های یادگیری ماشین با Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) را دنبال کنید. +* **هوش مصنوعی مکالمه‌ای** و **چت‌بات‌ها**. یک مسیر یادگیری جداگانه [ایجاد راه‌حل‌های هوش مصنوعی مکالمه‌ای](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) وجود دارد، و همچنین می‌توانید به [این پست وبلاگ](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) برای جزئیات بیشتر مراجعه کنید. +* **ریاضیات عمیق** پشت یادگیری عمیق. برای این موضوع، پیشنهاد می‌کنیم کتاب [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) نوشته Ian Goodfellow، Yoshua Bengio و Aaron Courville را مطالعه کنید که به صورت آنلاین نیز در دسترس است [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +برای یک مقدمه ملایم به موضوعات _هوش مصنوعی در ابر_، می‌توانید مسیر یادگیری [شروع با هوش مصنوعی در Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) را دنبال کنید. + +# محتوا + +| | لینک درس | PyTorch/Keras/TensorFlow | آزمایشگاه | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [تنظیم دوره](./lessons/0-course-setup/setup.md) | [تنظیم محیط توسعه خود](./lessons/0-course-setup/how-to-run.md) | | +| I | [**مقدمه‌ای بر هوش مصنوعی**](./lessons/1-Intro/README.md) | | | +| 01 | [مقدمه و تاریخچه هوش مصنوعی](./lessons/1-Intro/README.md) | - | - | +| II | **هوش مصنوعی نمادین** | +| 02 | [نمایش دانش و سیستم‌های خبره](./lessons/2-Symbolic/README.md) | [سیستم‌های خبره](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [هستی‌شناسی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[گراف مفهومی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**مقدمه‌ای بر شبکه‌های عصبی**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [پرسیپترون](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [دفترچه](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [آزمایشگاه](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [پرسیپترون چندلایه و ایجاد چارچوب خودمان](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [دفترچه](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [آزمایشگاه](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [مقدمه‌ای بر چارچوب‌ها (PyTorch/TensorFlow) و بیش‌برازش](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [آزمایشگاه](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**بینایی کامپیوتر**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [کاوش بینایی کامپیوتر در Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [مقدمه‌ای بر بینایی کامپیوتر. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [دفترچه](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [آزمایشگاه](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [شبکه‌های عصبی کانولوشنی](./lessons/4-ComputerVision/07-ConvNets/README.md) & [معماری‌های CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [آزمایشگاه](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [شبکه‌های از پیش آموزش‌دیده و یادگیری انتقالی](./lessons/4-ComputerVision/08-TransferLearning/README.md) و [ترفندهای آموزش](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [آزمایشگاه](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [خودرمزگذارها و VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [شبکه‌های مولد متخاصم و انتقال سبک هنری](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [تشخیص اشیاء](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [آزمایشگاه](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [تقسیم‌بندی معنایی. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**پردازش زبان طبیعی**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [کاوش پردازش زبان طبیعی در Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [نمایش متن. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [تعبیه معنایی کلمات. Word2Vec و GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [مدل‌سازی زبان. آموزش تعبیه‌های خودتان](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [آزمایشگاه](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [شبکه‌های عصبی بازگشتی](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [شبکه‌های بازگشتی مولد](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [آزمایشگاه](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ترانسفورمرها. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [تشخیص موجودیت‌های نام‌دار](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [آزمایشگاه](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [مدل‌های زبانی بزرگ، برنامه‌نویسی با پرامپت و وظایف کم‌شات](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **سایر تکنیک‌های هوش مصنوعی** || | +| 21 | [الگوریتم‌های ژنتیکی](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [دفترچه یادداشت](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [یادگیری تقویتی عمیق](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [آزمایشگاه](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [سیستم‌های چندعاملی](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **اخلاق هوش مصنوعی** | | | +| 24 | [اخلاق هوش مصنوعی و هوش مصنوعی مسئولانه](./lessons/7-Ethics/README.md) | [Microsoft Learn: اصول هوش مصنوعی مسئولانه](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **موارد اضافی** | | | +| 25 | [شبکه‌های چندوجهی، CLIP و VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [دفترچه یادداشت](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## هر درس شامل موارد زیر است + +* مطالب پیش‌خوانی +* دفترچه‌های Jupyter قابل اجرا که اغلب مختص چارچوب (**PyTorch** یا **TensorFlow**) هستند. این دفترچه‌های قابل اجرا همچنین شامل مطالب نظری زیادی هستند، بنابراین برای درک موضوع باید حداقل یک نسخه از دفترچه را مرور کنید (PyTorch یا TensorFlow). +* **آزمایشگاه‌ها** که برای برخی موضوعات در دسترس هستند و به شما فرصت می‌دهند تا مطالبی که یاد گرفته‌اید را روی یک مسئله خاص اعمال کنید. +* برخی بخش‌ها شامل لینک‌هایی به ماژول‌های [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) هستند که موضوعات مرتبط را پوشش می‌دهند. + +## شروع به کار + +- ما یک [درس تنظیمات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) ایجاد کرده‌ایم تا به شما در تنظیم محیط توسعه کمک کند. +- برای مربیان، ما یک [درس تنظیمات برنامه درسی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) نیز ایجاد کرده‌ایم! +- نحوه [اجرای کد در VSCode یا Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +مراحل زیر را دنبال کنید: + +مخزن را فورک کنید: روی دکمه "Fork" در گوشه بالا-راست این صفحه کلیک کنید. + +مخزن را کلون کنید: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +فراموش نکنید که این مخزن را ستاره‌دار کنید (🌟) تا بعداً راحت‌تر آن را پیدا کنید. + +## ملاقات با سایر یادگیرندگان + +به [سرور رسمی دیسکورد هوش مصنوعی](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) ما بپیوندید تا با سایر یادگیرندگان این دوره ملاقات کنید و شبکه‌سازی کنید و پشتیبانی دریافت کنید. + +اگر بازخورد محصول یا سوالاتی در حین ساخت دارید، به [فروم توسعه‌دهندگان Azure AI Foundry](https://aka.ms/foundry/forum) ما مراجعه کنید. + +## آزمون‌ها +> **یادداشتی درباره آزمون‌ها**: تمام آزمون‌ها در پوشه Quiz-app در مسیر etc\quiz-app قرار دارند. این آزمون‌ها از داخل درس‌ها لینک شده‌اند. برنامه آزمون می‌تواند به صورت محلی اجرا شود یا در Azure مستقر گردد؛ دستورالعمل‌های موجود در پوشه `quiz-app` را دنبال کنید. این آزمون‌ها به تدریج بومی‌سازی می‌شوند. +## درخواست کمک + +آیا پیشنهادی دارید یا خطاهای املایی یا کدی پیدا کرده‌اید؟ یک issue ایجاد کنید یا یک pull request ارسال کنید. + +## تشکر ویژه + +* **✍️ نویسنده اصلی:** [Dmitry Soshnikov](http://soshnikov.com)، دکترا +* **🔥 ویراستار:** [Jen Looper](https://twitter.com/jenlooper)، دکترا +* **🎨 تصویرگر یادداشت‌های تصویری:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ سازنده آزمون‌ها:** [Lateefah Bello](https://github.com/CinnamonXI)، [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 مشارکت‌کنندگان اصلی:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## سایر دوره‌ها + +تیم ما دوره‌های دیگری نیز تولید می‌کند! بررسی کنید: + +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/SECURITY.md b/translations/fa/SECURITY.md new file mode 100644 index 00000000..82d8d185 --- /dev/null +++ b/translations/fa/SECURITY.md @@ -0,0 +1,49 @@ + +## امنیت + +مایکروسافت امنیت محصولات و خدمات نرم‌افزاری خود را جدی می‌گیرد، که شامل تمامی مخازن کد منبع مدیریت‌شده از طریق سازمان‌های GitHub ما می‌شود، از جمله [Microsoft](https://github.com/Microsoft)، [Azure](https://github.com/Azure)، [DotNet](https://github.com/dotnet)، [AspNet](https://github.com/aspnet)، [Xamarin](https://github.com/xamarin) و [سازمان‌های GitHub ما](https://opensource.microsoft.com/). + +اگر فکر می‌کنید که یک آسیب‌پذیری امنیتی در هر یک از مخازن متعلق به مایکروسافت پیدا کرده‌اید که با [تعریف مایکروسافت از یک آسیب‌پذیری امنیتی](https://aka.ms/opensource/security/definition) مطابقت دارد، لطفاً آن را به روشی که در زیر توضیح داده شده است گزارش دهید. + +## گزارش مسائل امنیتی + +**لطفاً آسیب‌پذیری‌های امنیتی را از طریق مسائل عمومی GitHub گزارش ندهید.** + +در عوض، لطفاً آن‌ها را به مرکز پاسخگویی امنیتی مایکروسافت (MSRC) در [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) گزارش دهید. + +اگر ترجیح می‌دهید بدون ورود به سیستم گزارش دهید، ایمیلی به [secure@microsoft.com](mailto:secure@microsoft.com) ارسال کنید. در صورت امکان، پیام خود را با کلید PGP ما رمزگذاری کنید؛ لطفاً آن را از [صفحه کلید PGP مرکز پاسخگویی امنیتی مایکروسافت](https://aka.ms/opensource/security/pgpkey) دانلود کنید. + +شما باید ظرف ۲۴ ساعت پاسخی دریافت کنید. اگر به هر دلیلی پاسخی دریافت نکردید، لطفاً از طریق ایمیل پیگیری کنید تا مطمئن شوید پیام اصلی شما به دست ما رسیده است. اطلاعات بیشتر را می‌توانید در [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) پیدا کنید. + +لطفاً اطلاعات درخواستی زیر را (تا جایی که می‌توانید ارائه دهید) برای کمک به ما در درک بهتر ماهیت و دامنه مشکل احتمالی، شامل کنید: + + * نوع مشکل (مثلاً سرریز بافر، تزریق SQL، اسکریپت‌نویسی بین‌سایتی و غیره) + * مسیرهای کامل فایل‌های منبع مرتبط با بروز مشکل + * مکان کد منبع آسیب‌دیده (برچسب/شاخه/تعهد یا URL مستقیم) + * هرگونه پیکربندی خاص مورد نیاز برای بازتولید مشکل + * دستورالعمل‌های گام‌به‌گام برای بازتولید مشکل + * کد اثبات مفهوم یا کد بهره‌برداری (در صورت امکان) + * تأثیر مشکل، از جمله نحوه‌ای که یک مهاجم ممکن است از مشکل سوءاستفاده کند + +این اطلاعات به ما کمک می‌کند گزارش شما را سریع‌تر بررسی کنیم. + +اگر برای یک برنامه جایزه باگ گزارش می‌دهید، گزارش‌های کامل‌تر می‌توانند به دریافت جایزه بالاتری کمک کنند. لطفاً برای جزئیات بیشتر درباره برنامه‌های فعال ما به صفحه [برنامه جایزه باگ مایکروسافت](https://aka.ms/opensource/security/bounty) مراجعه کنید. + +## زبان‌های ترجیحی + +ما ترجیح می‌دهیم تمامی ارتباطات به زبان انگلیسی باشد. + +## سیاست + +مایکروسافت از اصل [افشای هماهنگ‌شده آسیب‌پذیری](https://aka.ms/opensource/security/cvd) پیروی می‌کند. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/CODE_OF_CONDUCT.md b/translations/fa/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..73ff3989 --- /dev/null +++ b/translations/fa/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# منشور رفتار کد متن‌باز مایکروسافت + +این پروژه منشور رفتار کد متن‌باز مایکروسافت را پذیرفته است. [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) + +منابع: + +- [منشور رفتار کد متن‌باز مایکروسافت](https://opensource.microsoft.com/codeofconduct/) +- [پرسش‌های متداول درباره منشور رفتار مایکروسافت](https://opensource.microsoft.com/codeofconduct/faq/) +- برای سوالات یا نگرانی‌ها با [opencode@microsoft.com](mailto:opencode@microsoft.com) تماس بگیرید + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشد. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/CONTRIBUTING.md b/translations/fa/etc/CONTRIBUTING.md new file mode 100644 index 00000000..41db555d --- /dev/null +++ b/translations/fa/etc/CONTRIBUTING.md @@ -0,0 +1,30 @@ + +# مشارکت + +این پروژه از مشارکت‌ها و پیشنهادات استقبال می‌کند. بیشتر مشارکت‌ها نیاز دارند که شما با یک توافق‌نامه مجوز مشارکت‌کننده (CLA) موافقت کنید که اعلام می‌کند شما حق دارید و واقعاً این حق را به ما می‌دهید که از مشارکت شما استفاده کنیم. برای جزئیات بیشتر، به https://cla.microsoft.com مراجعه کنید. + +وقتی یک درخواست pull ارسال می‌کنید، یک ربات CLA به‌طور خودکار تعیین می‌کند که آیا نیاز است یک CLA ارائه دهید و درخواست شما را به‌طور مناسب تزئین می‌کند (مثلاً با برچسب یا نظر). کافی است دستورالعمل‌هایی که توسط ربات ارائه می‌شود را دنبال کنید. شما فقط یک بار نیاز به انجام این کار در تمام مخازن استفاده‌کننده از CLA ما دارید. + +این پروژه [قوانین رفتاری متن‌باز مایکروسافت](https://opensource.microsoft.com/codeofconduct/) را پذیرفته است. +برای اطلاعات بیشتر، به [پرسش‌های متداول قوانین رفتاری](https://opensource.microsoft.com/codeofconduct/faq/) مراجعه کنید یا با [opencode@microsoft.com](mailto:opencode@microsoft.com) تماس بگیرید اگر سوالات یا نظرات بیشتری دارید. + +# به دنبال مشارکت‌ها + +ما در حال حاضر به‌طور فعال به دنبال مشارکت در موضوعات زیر هستیم: + +- [ ] نوشتن بخشی درباره یادگیری تقویتی عمیق +- [ ] بهبود بخش + دفترچه یادداشت درباره تشخیص اشیا +- [ ] PyTorch Lightning (برای [این بخش](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] نوشتن بخش + نمونه‌ها درباره شناسایی موجودیت‌های نام‌دار +- [ ] ایجاد نمونه‌هایی برای آموزش تعبیه‌های خودمان برای [این بخش](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/Mindmap.md b/translations/fa/etc/Mindmap.md new file mode 100644 index 00000000..c7ce6081 --- /dev/null +++ b/translations/fa/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# هوش مصنوعی + +## [مقدمه‌ای بر هوش مصنوعی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - تعریف هوش مصنوعی + - تاریخچه هوش مصنوعی + - رویکردهای هوش مصنوعی + - از بالا به پایین/نمادین + - از پایین به بالا/شبکه عصبی + - تکاملی + - هم‌افزایی / هوش مصنوعی نوظهور + - [مدرسه کسب‌وکار هوش مصنوعی مایکروسافت](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [هوش مصنوعی نمادین](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - نمایش دانش + - [سیستم‌های خبره](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [هستی‌شناسی‌ها](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - وب معنایی + +## [شبکه‌های عصبی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [پرسیپترون](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [شبکه‌های چندلایه](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [مقدمه‌ای بر فریم‌ورک‌ها](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [بیش‌برازش](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [بینایی کامپیوتر](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - در MS Learn + - [مبانی هوش مصنوعی: بررسی بینایی کامپیوتر](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [بینایی کامپیوتر با PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [بینایی کامپیوتر با TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [مقدمه‌ای بر بینایی کامپیوتر. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [شبکه‌های کانولوشنی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [معماری‌های CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [یادگیری انتقالی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ترفندهای آموزش](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [خودرمزگذارها و VAEها](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [شبکه‌های مولد تخاصمی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [انتقال سبک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [تشخیص اشیا](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [بخش‌بندی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [پردازش زبان طبیعی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - در MS Learn + - [مبانی هوش مصنوعی: بررسی پردازش زبان طبیعی](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [پردازش زبان طبیعی با PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [پردازش زبان طبیعی با TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [نمایش متن](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - کیسه کلمات + - TF/IDF + - [تعبیه‌های معنایی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [مدل‌سازی زبان](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [شبکه‌های عصبی بازگشتی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [شبکه‌های بازگشتی مولد](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ترانسفورمرها و BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [تشخیص موجودیت‌های نام‌دار](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [تولید متن و GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## تکنیک‌های دیگر + - [الگوریتم‌های ژنتیکی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [یادگیری تقویتی عمیق](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [سیستم‌های چندعاملی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [اخلاق هوش مصنوعی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn درباره هوش مصنوعی مسئولانه](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## اضافات + - [شبکه‌های چندوجهی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/SUPPORT.md b/translations/fa/etc/SUPPORT.md new file mode 100644 index 00000000..eaacecfc --- /dev/null +++ b/translations/fa/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# پشتیبانی + +## نحوه ثبت مشکلات و دریافت کمک + +این پروژه از GitHub Issues برای پیگیری اشکالات و درخواست‌های ویژگی استفاده می‌کند. لطفاً قبل از ثبت مشکلات جدید، مشکلات موجود را جستجو کنید تا از ایجاد موارد تکراری جلوگیری شود. برای مشکلات جدید، اشکال یا درخواست ویژگی خود را به عنوان یک Issue جدید ثبت کنید. + +برای دریافت کمک و پرسش درباره استفاده از این پروژه، از تابلوهای بحث و گفتگو استفاده کنید. + +## سیاست پشتیبانی مایکروسافت + +پشتیبانی از این پروژه محدود به منابع ذکر شده در بالا است. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/TRANSLATIONS.md b/translations/fa/etc/TRANSLATIONS.md new file mode 100644 index 00000000..85a9da1b --- /dev/null +++ b/translations/fa/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# مشارکت با ترجمه درس‌ها + +ما از ترجمه درس‌های این دوره آموزشی استقبال می‌کنیم! + +## راهنما + +در هر پوشه درس و پوشه معرفی درس، فایل‌های مارک‌داون ترجمه‌شده قرار دارند. + +> توجه: لطفاً هیچ کدی را در فایل‌های نمونه کد ترجمه نکنید؛ تنها مواردی که باید ترجمه شوند README، تکالیف و آزمون‌ها هستند. متشکریم! + +فایل‌های ترجمه‌شده باید از این نام‌گذاری پیروی کنند: + +**README._[language]_.md** + +که در آن _[language]_ یک کد دو حرفی زبان بر اساس استاندارد ISO 639-1 است (مثلاً `README.es.md` برای اسپانیایی و `README.nl.md` برای هلندی). + +**assignment._[language]_.md** + +مشابه README، لطفاً تکالیف را نیز ترجمه کنید. + +**آزمون‌ها** + +1. ترجمه خود را به اپلیکیشن آزمون اضافه کنید با افزودن یک فایل در اینجا: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations، با رعایت نام‌گذاری مناسب (en.json، fr.json). **لطفاً کلمات 'true' یا 'false' را محلی‌سازی نکنید. متشکریم!** + +2. کد زبان خود را به منوی کشویی در فایل App.vue اپلیکیشن آزمون اضافه کنید. + +3. فایل [translations index.js](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) اپلیکیشن آزمون را ویرایش کنید تا زبان خود را اضافه کنید. + +4. در نهایت، تمام لینک‌های آزمون در فایل‌های README.md ترجمه‌شده خود را ویرایش کنید تا مستقیماً به آزمون ترجمه‌شده شما اشاره کنند: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 به https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id تبدیل شود. + +**متشکریم** + +ما واقعاً از تلاش‌های شما قدردانی می‌کنیم! + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشد. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/etc/quiz-app/README.md b/translations/fa/etc/quiz-app/README.md new file mode 100644 index 00000000..88aec17f --- /dev/null +++ b/translations/fa/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# آزمون‌ها + +این آزمون‌ها شامل آزمون‌های قبل و بعد از جلسات آموزشی برای برنامه درسی هوش مصنوعی در https://aka.ms/ai-beginners هستند. + +## افزودن مجموعه آزمون ترجمه‌شده + +برای افزودن ترجمه آزمون، ساختارهای آزمون مشابه را در پوشه‌های `assets/translations` ایجاد کنید. آزمون‌های اصلی در `assets/translations/en` قرار دارند. آزمون‌ها بر اساس درس‌ها به چند گروه تقسیم شده‌اند. مطمئن شوید که شماره‌گذاری با بخش مناسب آزمون هماهنگ باشد. در این برنامه درسی، مجموعاً ۴۰ آزمون وجود دارد که شمارش از ۰ شروع می‌شود. + +پس از ویرایش ترجمه‌ها، فایل index.js در پوشه ترجمه را ویرایش کنید تا تمام فایل‌ها را مطابق با قواعد موجود در `en` وارد کنید. + +فایل `index.js` در `assets/translations` را ویرایش کنید تا فایل‌های ترجمه‌شده جدید را وارد کنید. + +سپس، منوی کشویی در `App.vue` در این برنامه را ویرایش کنید تا زبان خود را اضافه کنید. مخفف محلی را با نام پوشه زبان خود مطابقت دهید. + +در نهایت، تمام لینک‌های آزمون در درس‌های ترجمه‌شده را، در صورت وجود، ویرایش کنید تا این محلی‌سازی را به عنوان یک پارامتر پرس‌وجو اضافه کنید: به عنوان مثال `?loc=fr`. + +## تنظیم پروژه + +``` +npm install +``` + +### کامپایل و بارگذاری مجدد برای توسعه + +``` +npm run serve +``` + +### کامپایل و کوچک‌سازی برای تولید + +``` +npm run build +``` + +### بررسی و رفع مشکلات فایل‌ها + +``` +npm run lint +``` + +### سفارشی‌سازی تنظیمات + +به [مرجع تنظیمات](https://cli.vuejs.org/config/) مراجعه کنید. + +اعتبار: تشکر از نسخه اصلی این برنامه آزمون: https://github.com/arpan45/simple-quiz-vue + +## استقرار در Azure + +در اینجا یک راهنمای گام‌به‌گام برای شروع آورده شده است: + +1. فورک کردن یک مخزن GitHub +اطمینان حاصل کنید که کد برنامه وب استاتیک شما در مخزن GitHub شما قرار دارد. این مخزن را فورک کنید. + +2. ایجاد یک برنامه وب استاتیک Azure +- یک [حساب Azure](http://azure.microsoft.com) ایجاد کنید. +- به [پرتال Azure](https://portal.azure.com) بروید. +- روی "ایجاد یک منبع" کلیک کنید و "Static Web App" را جستجو کنید. +- روی "ایجاد" کلیک کنید. + +3. پیکربندی برنامه وب استاتیک +- اصول: + - اشتراک: اشتراک Azure خود را انتخاب کنید. + - گروه منابع: یک گروه منابع جدید ایجاد کنید یا از یک گروه موجود استفاده کنید. + - نام: یک نام برای برنامه وب استاتیک خود ارائه دهید. + - منطقه: منطقه‌ای را انتخاب کنید که به کاربران شما نزدیک‌تر باشد. + +- #### جزئیات استقرار: + - منبع: "GitHub" را انتخاب کنید. + - حساب GitHub: به Azure اجازه دهید به حساب GitHub شما دسترسی پیدا کند. + - سازمان: سازمان GitHub خود را انتخاب کنید. + - مخزن: مخزنی را که شامل کد برنامه وب استاتیک شما است انتخاب کنید. + - شاخه: شاخه‌ای را که می‌خواهید از آن استقرار انجام دهید انتخاب کنید. + +- #### جزئیات ساخت: + - پیش‌تنظیم‌های ساخت: چارچوبی را که برنامه شما با آن ساخته شده است انتخاب کنید (مانند React، Angular، Vue و غیره). + - مکان برنامه: پوشه‌ای را که شامل کد برنامه شما است مشخص کنید (مانند / اگر در ریشه باشد). + - مکان API: اگر API دارید، مکان آن را مشخص کنید (اختیاری). + - مکان خروجی: پوشه‌ای را که خروجی ساخت در آن تولید می‌شود مشخص کنید (مانند build یا dist). + +4. بررسی و ایجاد +تنظیمات خود را بررسی کنید و روی "ایجاد" کلیک کنید. Azure منابع لازم را تنظیم کرده و یک جریان کاری GitHub Actions در مخزن شما ایجاد خواهد کرد. + +5. جریان کاری GitHub Actions +Azure به طور خودکار یک فایل جریان کاری GitHub Actions در مخزن شما ایجاد خواهد کرد (.github/workflows/azure-static-web-apps-.yml). این جریان کاری فرآیند ساخت و استقرار را مدیریت خواهد کرد. + +6. نظارت بر استقرار +به تب "Actions" در مخزن GitHub خود بروید. +باید یک جریان کاری در حال اجرا را مشاهده کنید. این جریان کاری برنامه وب استاتیک شما را در Azure می‌سازد و مستقر می‌کند. +پس از تکمیل جریان کاری، برنامه شما در URL ارائه‌شده Azure فعال خواهد بود. + +### فایل نمونه جریان کاری + +در اینجا یک نمونه از فایل جریان کاری GitHub Actions آورده شده است: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### منابع اضافی +- [مستندات برنامه‌های وب استاتیک Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [مستندات GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/0-course-setup/for-teachers.md b/translations/fa/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..621be6e8 --- /dev/null +++ b/translations/fa/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# برای معلمان + +آیا دوست دارید از این برنامه درسی در کلاس خود استفاده کنید؟ لطفاً با خیال راحت این کار را انجام دهید! + +در واقع، می‌توانید از آن مستقیماً در گیت‌هاب با استفاده از GitHub Classroom استفاده کنید. + +برای این کار، این مخزن را فورک کنید. شما نیاز دارید برای هر درس یک مخزن جداگانه ایجاد کنید، بنابراین باید هر پوشه را به یک مخزن جداگانه استخراج کنید. به این ترتیب، [GitHub Classroom](https://classroom.github.com/classrooms) می‌تواند هر درس را به صورت جداگانه شناسایی کند. + +این [دستورالعمل‌های کامل](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) به شما ایده‌ای می‌دهد که چگونه کلاس خود را تنظیم کنید. + +## استفاده از مخزن به شکل فعلی + +اگر می‌خواهید از این مخزن به همان شکلی که اکنون هست استفاده کنید، بدون استفاده از GitHub Classroom، این کار نیز امکان‌پذیر است. شما باید با دانش‌آموزان خود هماهنگ کنید که کدام درس را با هم مرور کنند. + +در یک قالب آنلاین (مانند Zoom، Teams یا دیگر ابزارها) می‌توانید اتاق‌های جداگانه‌ای برای آزمون‌ها تشکیل دهید و دانش‌آموزان را راهنمایی کنید تا برای یادگیری آماده شوند. سپس از دانش‌آموزان دعوت کنید که در آزمون‌ها شرکت کنند و پاسخ‌های خود را به عنوان 'issues' در یک زمان مشخص ارسال کنند. می‌توانید همین کار را با تکالیف نیز انجام دهید، اگر می‌خواهید دانش‌آموزان به صورت گروهی و در فضای باز کار کنند. + +اگر یک قالب خصوصی‌تر را ترجیح می‌دهید، از دانش‌آموزان خود بخواهید که برنامه درسی را درس به درس به مخازن گیت‌هاب خود به صورت مخازن خصوصی فورک کنند و به شما دسترسی بدهند. سپس می‌توانند آزمون‌ها و تکالیف را به صورت خصوصی تکمیل کرده و از طریق issues در مخزن کلاس شما به شما ارسال کنند. + +راه‌های زیادی برای اجرای این برنامه درسی در یک کلاس آنلاین وجود دارد. لطفاً به ما اطلاع دهید که چه روشی برای شما بهتر عمل می‌کند! + +## لطفاً نظرات خود را با ما در میان بگذارید + +ما می‌خواهیم این برنامه درسی برای شما و دانش‌آموزانتان مفید باشد. لطفاً بازخورد خود را در تابلوهای بحث با ما به اشتراک بگذارید! + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/0-course-setup/how-to-run.md b/translations/fa/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..fb566080 --- /dev/null +++ b/translations/fa/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# چگونه کد را اجرا کنیم + +این دوره آموزشی شامل مثال‌ها و آزمایش‌های قابل اجرا زیادی است که ممکن است بخواهید آن‌ها را اجرا کنید. برای انجام این کار، باید توانایی اجرای کدهای Python در Jupyter Notebooks که به عنوان بخشی از این دوره ارائه شده‌اند را داشته باشید. چندین گزینه برای اجرای کد وجود دارد: + +## اجرای محلی روی کامپیوتر شما + +برای اجرای کد به صورت محلی روی کامپیوتر خود، باید نسخه‌ای از Python نصب شده باشد. من شخصاً توصیه می‌کنم **[miniconda](https://conda.io/en/latest/miniconda.html)** را نصب کنید - این یک نصب سبک است که از مدیر بسته `conda` برای ایجاد **محیط‌های مجازی** Python پشتیبانی می‌کند. + +پس از نصب miniconda، باید مخزن را کلون کرده و یک محیط مجازی برای استفاده در این دوره ایجاد کنید: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### استفاده از Visual Studio Code با افزونه Python + +احتمالاً بهترین روش برای استفاده از این دوره آموزشی این است که آن را در [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) با [افزونه Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) باز کنید. + +> **توجه**: پس از کلون کردن و باز کردن دایرکتوری در VS Code، به طور خودکار پیشنهاد نصب افزونه‌های Python را دریافت خواهید کرد. همچنین باید miniconda را همانطور که در بالا توضیح داده شد نصب کنید. + +> **توجه**: اگر VS Code پیشنهاد باز کردن مخزن در کانتینر را داد، باید این پیشنهاد را رد کنید تا از نصب محلی Python استفاده کنید. + +### استفاده از Jupyter در مرورگر + +شما همچنین می‌توانید محیط Jupyter را مستقیماً از طریق مرورگر روی کامپیوتر خود استفاده کنید. در واقع، هم Jupyter کلاسیک و هم Jupyter Hub محیط توسعه بسیار راحتی با تکمیل خودکار، برجسته‌سازی کد و غیره ارائه می‌دهند. + +برای شروع Jupyter به صورت محلی، به دایرکتوری دوره بروید و اجرا کنید: + +```bash +jupyter notebook +``` +یا +```bash +jupyterhub +``` +سپس می‌توانید به هر یک از فایل‌های `.ipynb` بروید، آن‌ها را باز کنید و شروع به کار کنید. + +### اجرای در کانتینر + +یک جایگزین برای نصب Python این است که کد را در کانتینر اجرا کنید. از آنجا که مخزن ما شامل پوشه خاص `.devcontainer` است که نحوه ساخت کانتینر برای این مخزن را مشخص می‌کند، VS Code به شما پیشنهاد می‌دهد کد را در کانتینر باز کنید. این نیاز به نصب Docker دارد و همچنین پیچیده‌تر است، بنابراین ما این روش را برای کاربران با تجربه‌تر توصیه می‌کنیم. + +## اجرای در فضای ابری + +اگر نمی‌خواهید Python را به صورت محلی نصب کنید و به برخی منابع ابری دسترسی دارید، یک جایگزین خوب این است که کد را در فضای ابری اجرا کنید. چندین روش برای انجام این کار وجود دارد: + +* استفاده از **[GitHub Codespaces](https://github.com/features/codespaces)**، که یک محیط مجازی است که برای شما در GitHub ایجاد شده و از طریق رابط مرورگر VS Code قابل دسترسی است. اگر به Codespaces دسترسی دارید، می‌توانید فقط روی دکمه **Code** در مخزن کلیک کنید، یک Codespace را شروع کنید و به سرعت اجرا کنید. +* استفاده از **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) منابع محاسباتی رایگانی را در فضای ابری برای افرادی مانند شما فراهم می‌کند تا برخی کدها را در GitHub آزمایش کنند. یک دکمه در صفحه اصلی وجود دارد که مخزن را در Binder باز می‌کند - این باید شما را به سایت Binder هدایت کند، که کانتینر زیرین را می‌سازد و رابط وب Jupyter را برای شما به صورت یکپارچه شروع می‌کند. + +> **توجه**: برای جلوگیری از سوءاستفاده، Binder دسترسی به برخی منابع وب را مسدود کرده است. این ممکن است مانع از اجرای برخی کدها شود که مدل‌ها و/یا مجموعه داده‌ها را از اینترنت عمومی دریافت می‌کنند. ممکن است نیاز به یافتن راه‌حل‌هایی داشته باشید. همچنین، منابع محاسباتی ارائه شده توسط Binder بسیار ابتدایی هستند، بنابراین آموزش کند خواهد بود، به ویژه در درس‌های پیچیده‌تر بعدی. + +## اجرای در فضای ابری با GPU + +برخی از درس‌های بعدی در این دوره آموزشی به شدت از پشتیبانی GPU بهره‌مند خواهند شد، زیرا در غیر این صورت آموزش بسیار کند خواهد بود. چند گزینه وجود دارد که می‌توانید دنبال کنید، به ویژه اگر از طریق [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) یا از طریق مؤسسه خود به فضای ابری دسترسی دارید: + +* ایجاد [ماشین مجازی علوم داده](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) و اتصال به آن از طریق Jupyter. سپس می‌توانید مخزن را مستقیماً روی ماشین کلون کنید و شروع به یادگیری کنید. ماشین‌های سری NC از پشتیبانی GPU برخوردارند. + +> **توجه**: برخی اشتراک‌ها، از جمله Azure for Students، به طور پیش‌فرض پشتیبانی GPU ارائه نمی‌دهند. ممکن است نیاز به درخواست هسته‌های GPU اضافی از طریق درخواست پشتیبانی فنی داشته باشید. + +* ایجاد [فضای کاری Azure Machine Learning](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 کلون کنید و شروع به استفاده از آن کنید. + +شما همچنین می‌توانید از Google Colab استفاده کنید، که با برخی پشتیبانی رایگان GPU ارائه می‌شود، و Jupyter Notebooks را در آنجا آپلود کنید تا آن‌ها را یکی‌یکی اجرا کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/0-course-setup/setup.md b/translations/fa/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..f23e9c62 --- /dev/null +++ b/translations/fa/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# شروع به کار با این برنامه آموزشی + +## آیا شما دانشجو هستید؟ + +با منابع زیر شروع کنید: + +* [صفحه مرکز دانشجویان](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) در این صفحه، منابع مبتدی، بسته‌های دانشجویی و حتی راه‌هایی برای دریافت یک کوپن گواهی رایگان را پیدا خواهید کرد. این صفحه‌ای است که باید آن را نشانه‌گذاری کنید و هر از گاهی بررسی کنید، زیرا ما حداقل ماهیانه محتوا را تغییر می‌دهیم. +* [سفیران دانشجوی یادگیری مایکروسافت](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) به یک جامعه جهانی از سفیران دانشجویی بپیوندید، این می‌تواند راه ورود شما به مایکروسافت باشد. + +**دانشجویان**، چند روش برای استفاده از این برنامه آموزشی وجود دارد. ابتدا، می‌توانید متن را بخوانید و کدها را مستقیماً در GitHub مشاهده کنید. اگر می‌خواهید کدها را در هر یک از نوت‌بوک‌ها اجرا کنید - [دستورالعمل‌های ما را بخوانید](./etc/how-to-run.md)، و توصیه‌های بیشتری در مورد نحوه انجام این کار [در این پست وبلاگ](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) پیدا کنید. + +> **Note**: [دستورالعمل‌هایی برای اجرای کد در این برنامه آموزشی](./how-to-run.md) + +## مطالعه خودآموز + +اگر می‌خواهید این دوره را به عنوان یک پروژه خودآموز بگذرانید، پیشنهاد می‌کنیم که کل مخزن را به حساب GitHub خود فورک کنید و تمرین‌ها را به صورت فردی یا گروهی انجام دهید: + +* با یک آزمون پیش از درس شروع کنید. +* متن مقدمه درس را بخوانید. +* اگر درس دارای نوت‌بوک‌های اضافی است، آن‌ها را مرور کنید، کدها را بخوانید و اجرا کنید. اگر نوت‌بوک‌های TensorFlow و PyTorch هر دو ارائه شده‌اند، می‌توانید روی یکی از آن‌ها تمرکز کنید - چارچوب مورد علاقه خود را انتخاب کنید. +* نوت‌بوک‌ها اغلب شامل چالش‌هایی هستند که نیاز دارند کد را کمی تغییر دهید تا آزمایش کنید. +* آزمون پس از درس را انجام دهید. +* اگر آزمایشگاهی به ماژول پیوست شده است - تکلیف را کامل کنید. +* به [تابلوی بحث](https://github.com/microsoft/AI-For-Beginners/discussions) مراجعه کنید تا "بلند فکر کنید". + +> برای مطالعه بیشتر، توصیه می‌کنیم این [ماژول‌ها و مسیرهای یادگیری مایکروسافت](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) را دنبال کنید. + +**اساتید**، ما [برخی پیشنهادات را شامل کرده‌ایم](/for-teachers.md) در مورد نحوه استفاده از این برنامه آموزشی. + +--- + +## روش تدریس + +ما دو اصل آموزشی را در ساخت این برنامه آموزشی انتخاب کرده‌ایم: اطمینان از اینکه این برنامه **پروژه‌محور** و **شامل آزمون‌های مکرر** است. + +با اطمینان از اینکه محتوا با پروژه‌ها هماهنگ است، فرآیند برای دانشجویان جذاب‌تر می‌شود و حفظ مفاهیم تقویت می‌شود. علاوه بر این، یک آزمون کم‌فشار قبل از کلاس، توجه دانشجو را به یادگیری یک موضوع جلب می‌کند، در حالی که یک آزمون دوم پس از کلاس، حفظ بیشتر را تضمین می‌کند. این برنامه آموزشی به گونه‌ای طراحی شده است که انعطاف‌پذیر و سرگرم‌کننده باشد و می‌توان آن را به طور کامل یا جزئی گذراند. پروژه‌ها کوچک شروع می‌شوند و تا پایان چرخه ۱۲ هفته‌ای به تدریج پیچیده‌تر می‌شوند. + +> **نکته‌ای درباره آزمون‌ها**: تمام آزمون‌ها در [این اپلیکیشن](https://red-field-0a6ddfd03.1.azurestaticapps.net/) قرار دارند، شامل ۵۰ آزمون با سه سؤال در هر آزمون. آن‌ها از داخل درس‌ها لینک شده‌اند اما اپلیکیشن آزمون می‌تواند به صورت محلی اجرا شود؛ دستورالعمل‌ها را در پوشه `etc/quiz-app` دنبال کنید. + +## دسترسی آفلاین + +شما می‌توانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کنید، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی دستگاه محلی خود، و سپس در پوشه اصلی این مخزن، دستور `docsify serve` را تایپ کنید. وب‌سایت روی پورت ۳۰۰۰ در localhost شما اجرا خواهد شد: `localhost:3000`. یک فایل pdf از برنامه آموزشی در [این لینک](../../../../../../../../../etc/pdf/readme.pdf) موجود است. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/1-Intro/README.md b/translations/fa/lessons/1-Intro/README.md new file mode 100644 index 00000000..350c1366 --- /dev/null +++ b/translations/fa/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> تصویر از [دمیتری سوشنیکوف](http://soshnikov.com) + +با گذشت زمان، منابع محاسباتی ارزان‌تر شدند و داده‌های بیشتری در دسترس قرار گرفتند، بنابراین روش‌های شبکه عصبی شروع به نشان دادن عملکرد عالی در رقابت با انسان‌ها در بسیاری از زمینه‌ها مانند بینایی کامپیوتری یا درک گفتار کردند. در دهه گذشته، اصطلاح هوش مصنوعی عمدتاً به عنوان مترادف شبکه‌های عصبی استفاده شده است، زیرا بیشتر موفقیت‌های هوش مصنوعی که درباره آن‌ها می‌شنویم بر اساس این روش‌ها هستند. + +می‌توانیم مشاهده کنیم که چگونه رویکردها تغییر کرده‌اند، به عنوان مثال، در ایجاد یک برنامه کامپیوتری برای بازی شطرنج: + +* برنامه‌های اولیه شطرنج بر اساس جستجو بودند – برنامه به طور صریح تلاش می‌کرد حرکات احتمالی حریف را برای تعداد مشخصی از حرکات آینده تخمین بزند و بر اساس موقعیت بهینه‌ای که می‌توان در چند حرکت به دست آورد، حرکت بهینه را انتخاب کند. این منجر به توسعه الگوریتم جستجوی [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) شد. +* استراتژی‌های جستجو در انتهای بازی که فضای جستجو محدود به تعداد کمی از حرکات ممکن است، خوب عمل می‌کنند. اما در ابتدای بازی، فضای جستجو بسیار بزرگ است و الگوریتم می‌تواند با یادگیری از مسابقات موجود بین بازیکنان انسانی بهبود یابد. آزمایش‌های بعدی از روش [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning) استفاده کردند، جایی که برنامه به دنبال مواردی در پایگاه دانش می‌گشت که بسیار مشابه موقعیت فعلی در بازی بودند. +* برنامه‌های مدرن که بر بازیکنان انسانی غلبه می‌کنند، بر اساس شبکه‌های عصبی و [یادگیری تقویتی](https://en.wikipedia.org/wiki/Reinforcement_learning) هستند، جایی که برنامه‌ها تنها با بازی طولانی‌مدت با خودشان و یادگیری از اشتباهات خود، یاد می‌گیرند – درست مانند انسان‌ها که هنگام یادگیری بازی شطرنج عمل می‌کنند. با این حال، یک برنامه کامپیوتری می‌تواند بازی‌های بیشتری را در زمان بسیار کمتری انجام دهد و بنابراین می‌تواند بسیار سریع‌تر یاد بگیرد. + +✅ کمی تحقیق کنید درباره بازی‌های دیگری که توسط هوش مصنوعی انجام شده‌اند. + +به همین ترتیب، می‌توانیم ببینیم که رویکرد ایجاد برنامه‌های "گفتگو کننده" (که ممکن است آزمون تورینگ را بگذرانند) چگونه تغییر کرده است: + +* برنامه‌های اولیه از این نوع مانند [Eliza](https://en.wikipedia.org/wiki/ELIZA)، بر اساس قوانین گرامری بسیار ساده و بازفرمول‌بندی جمله ورودی به یک سؤال بودند. +* دستیارهای مدرن مانند Cortana، Siri یا Google Assistant همگی سیستم‌های ترکیبی هستند که از شبکه‌های عصبی برای تبدیل گفتار به متن و تشخیص قصد ما استفاده می‌کنند و سپس از برخی استدلال‌ها یا الگوریتم‌های صریح برای انجام اقدامات مورد نیاز بهره می‌برند. +* در آینده، ممکن است انتظار داشته باشیم که یک مدل کاملاً مبتنی بر شبکه عصبی بتواند به طور کامل گفتگو را مدیریت کند. خانواده‌های اخیر GPT و [Turing-NLG](https://turing.microsoft.com/) از شبکه‌های عصبی موفقیت‌های بزرگی در این زمینه نشان داده‌اند. + +> تصویر از دیمیتری سوشنیکوف، [عکس](https://unsplash.com/photos/r8LmVbUKgns) از [مارینا آبروسیمووا](https://unsplash.com/@abrosimova_marina_foto)، Unsplash + +## تحقیقات اخیر در زمینه هوش مصنوعی + +رشد چشمگیر تحقیقات شبکه‌های عصبی از حدود سال ۲۰۱۰ آغاز شد، زمانی که مجموعه‌های داده عمومی بزرگ در دسترس قرار گرفتند. مجموعه عظیمی از تصاویر به نام [ImageNet](https://en.wikipedia.org/wiki/ImageNet)، که شامل حدود ۱۴ میلیون تصویر حاشیه‌نویسی شده است، منجر به ایجاد [چالش شناسایی بصری در مقیاس بزرگ ImageNet](https://image-net.org/challenges/LSVRC/) شد. + +![دقت ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> تصویر از [دیمیتری سوشنیکوف](http://soshnikov.com) + +در سال ۲۰۱۲، [شبکه‌های عصبی کانولوشن](../4-ComputerVision/07-ConvNets/README.md) برای اولین بار در طبقه‌بندی تصاویر استفاده شدند، که منجر به کاهش قابل توجه خطاهای طبقه‌بندی شد (از تقریباً ۳۰٪ به ۱۶.۴٪). در سال ۲۰۱۵، معماری 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) + +در چند سال گذشته شاهد موفقیت‌های چشمگیری با مدل‌های زبانی بزرگ مانند BERT و GPT-3 بوده‌ایم. این موفقیت‌ها عمدتاً به دلیل وجود حجم زیادی از داده‌های متنی عمومی است که به ما امکان می‌دهد مدل‌ها را برای درک ساختار و معنای متن‌ها آموزش دهیم، آن‌ها را بر روی مجموعه‌های عمومی متن پیش‌آموزش دهیم و سپس این مدل‌ها را برای وظایف خاص‌تر تخصصی کنیم. در ادامه این دوره، درباره [پردازش زبان طبیعی](../5-NLP/README.md) بیشتر یاد خواهیم گرفت. + +## 🚀 چالش + +یک گشت و گذار در اینترنت انجام دهید تا مشخص کنید به نظر شما هوش مصنوعی در کجا به طور مؤثرتر استفاده می‌شود. آیا در یک اپلیکیشن نقشه‌برداری، یا یک سرویس تبدیل گفتار به متن، یا یک بازی ویدیویی؟ تحقیق کنید که این سیستم چگونه ساخته شده است. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## مرور و مطالعه شخصی + +تاریخچه هوش مصنوعی و یادگیری ماشین را با مطالعه [این درس](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) مرور کنید. یکی از عناصر موجود در اسکیچ‌نوت بالای آن درس یا این درس را انتخاب کنید و آن را به طور عمیق‌تر بررسی کنید تا زمینه فرهنگی تأثیرگذار بر تکامل آن را درک کنید. + +**تکلیف**: [Game Jam](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/1-Intro/assignment.md b/translations/fa/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..1f60e24b --- /dev/null +++ b/translations/fa/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# جام بازی + +بازی‌ها یکی از حوزه‌هایی هستند که به شدت تحت تأثیر پیشرفت‌های هوش مصنوعی و یادگیری ماشین قرار گرفته‌اند. در این تکلیف، مقاله‌ای کوتاه درباره یک بازی که دوست دارید و تحت تأثیر تکامل هوش مصنوعی قرار گرفته است بنویسید. این بازی باید به اندازه کافی قدیمی باشد تا تحت تأثیر چندین نوع سیستم پردازش کامپیوتری قرار گرفته باشد. یک مثال خوب می‌تواند شطرنج یا گو باشد، اما همچنین به بازی‌های ویدیویی مانند پونگ یا پک‌من نیز نگاهی بیندازید. مقاله‌ای بنویسید که گذشته، حال و آینده هوش مصنوعی در این بازی را مورد بحث قرار دهد. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/2-Symbolic/README.md b/translations/fa/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..bde98ab9 --- /dev/null +++ b/translations/fa/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# نمایش دانش و سیستم‌های خبره + +![خلاصه‌ای از محتوای هوش مصنوعی نمادین](../../../../lessons/sketchnotes/ai-symbolic.png) + +> طراحی توسط [Tomomi Imura](https://twitter.com/girlie_mac) + +جستجوی هوش مصنوعی بر اساس یافتن دانش است، به منظور درک جهان به شیوه‌ای مشابه انسان‌ها. اما چگونه می‌توان این کار را انجام داد؟ + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +در روزهای اولیه هوش مصنوعی، رویکرد بالا به پایین برای ایجاد سیستم‌های هوشمند (که در درس قبلی بحث شد) محبوب بود. ایده این بود که دانش را از افراد استخراج کرده و به شکلی قابل خواندن توسط ماشین تبدیل کنیم و سپس از آن برای حل خودکار مسائل استفاده کنیم. این رویکرد بر اساس دو ایده بزرگ بود: + +* نمایش دانش +* استدلال + +## نمایش دانش + +یکی از مفاهیم مهم در هوش مصنوعی نمادین، **دانش** است. مهم است که دانش را از *اطلاعات* یا *داده* متمایز کنیم. به عنوان مثال، ممکن است بگوییم که کتاب‌ها حاوی دانش هستند، زیرا می‌توان با مطالعه کتاب‌ها به یک متخصص تبدیل شد. اما آنچه کتاب‌ها حاوی آن هستند در واقع *داده* نامیده می‌شود، و با خواندن کتاب‌ها و ادغام این داده‌ها در مدل ذهنی خود، این داده‌ها را به دانش تبدیل می‌کنیم. + +> ✅ **دانش** چیزی است که در ذهن ما وجود دارد و نمایانگر درک ما از جهان است. این دانش از طریق فرآیند فعال **یادگیری** به دست می‌آید، که قطعات اطلاعاتی که دریافت می‌کنیم را در مدل فعال جهان ادغام می‌کند. + +اغلب، ما دانش را به طور دقیق تعریف نمی‌کنیم، بلکه آن را با مفاهیم مرتبط دیگر با استفاده از [هرم DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid) هماهنگ می‌کنیم. این هرم شامل مفاهیم زیر است: + +* **داده** چیزی است که در رسانه‌های فیزیکی مانند متن نوشته شده یا کلمات گفته شده نمایش داده می‌شود. داده مستقل از انسان‌ها وجود دارد و می‌تواند بین افراد منتقل شود. +* **اطلاعات** نحوه تفسیر داده‌ها در ذهن ما است. به عنوان مثال، وقتی کلمه *کامپیوتر* را می‌شنویم، درک خاصی از آن داریم. +* **دانش** اطلاعاتی است که در مدل ذهنی ما ادغام شده است. به عنوان مثال، وقتی یاد می‌گیریم کامپیوتر چیست، شروع به داشتن ایده‌هایی درباره نحوه کارکرد آن، هزینه آن و کاربردهای آن می‌کنیم. این شبکه از مفاهیم مرتبط، دانش ما را تشکیل می‌دهد. +* **حکمت** یک سطح بالاتر از درک ما از جهان است و نمایانگر *فرا-دانش* است، مانند اینکه چگونه و چه زمانی باید از دانش استفاده کرد. + +*تصویر [از ویکی‌پدیا](https://commons.wikimedia.org/w/index.php?curid=37705247)، توسط Longlivetheux - اثر خود، CC BY-SA 4.0* + +بنابراین، مسئله **نمایش دانش** یافتن راهی مؤثر برای نمایش دانش در داخل یک کامپیوتر به صورت داده است، به گونه‌ای که بتوان از آن به صورت خودکار استفاده کرد. این مسئله را می‌توان به صورت یک طیف مشاهده کرد: + +![طیف نمایش دانش](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) + +> تصویر توسط [Dmitry Soshnikov](http://soshnikov.com) + +* در سمت چپ، انواع بسیار ساده‌ای از نمایش دانش وجود دارد که می‌توان به طور مؤثر توسط کامپیوترها استفاده کرد. ساده‌ترین نوع آن الگوریتمی است، زمانی که دانش توسط یک برنامه کامپیوتری نمایش داده می‌شود. با این حال، این بهترین روش برای نمایش دانش نیست، زیرا انعطاف‌پذیر نیست. دانش در ذهن ما اغلب غیر الگوریتمی است. +* در سمت راست، نمایش‌هایی مانند متن طبیعی وجود دارد. این نوع نمایش قدرتمندترین است، اما نمی‌توان از آن برای استدلال خودکار استفاده کرد. + +> ✅ برای یک دقیقه فکر کنید که چگونه دانش را در ذهن خود نمایش می‌دهید و آن را به یادداشت تبدیل می‌کنید. آیا قالب خاصی وجود دارد که برای شما در حفظ اطلاعات مؤثر باشد؟ + +## دسته‌بندی نمایش‌های دانش کامپیوتری + +ما می‌توانیم روش‌های مختلف نمایش دانش کامپیوتری را در دسته‌های زیر طبقه‌بندی کنیم: + +* **نمایش‌های شبکه‌ای** بر اساس این واقعیت هستند که ما یک شبکه از مفاهیم مرتبط در ذهن خود داریم. می‌توانیم تلاش کنیم همین شبکه‌ها را به صورت یک گراف در داخل کامپیوتر بازتولید کنیم - یک **شبکه معنایی**. + +1. **سه‌گانه‌های شیء-ویژگی-مقدار** یا **جفت‌های ویژگی-مقدار**. از آنجا که یک گراف می‌تواند در داخل کامپیوتر به صورت لیستی از گره‌ها و لبه‌ها نمایش داده شود، می‌توانیم یک شبکه معنایی را با لیستی از سه‌گانه‌ها نمایش دهیم که شامل اشیاء، ویژگی‌ها و مقادیر است. به عنوان مثال، سه‌گانه‌های زیر را درباره زبان‌های برنامه‌نویسی می‌سازیم: + +شیء | ویژگی | مقدار +----|--------|------ +پایتون | است | زبان بدون نوع +پایتون | اختراع شده توسط | Guido van Rossum +پایتون | نحو بلوک | تورفتگی +زبان بدون نوع | ندارد | تعریف نوع + +> ✅ فکر کنید که چگونه می‌توان از سه‌گانه‌ها برای نمایش انواع دیگر دانش استفاده کرد. + +2. **نمایش‌های سلسله‌مراتبی** تأکید بر این دارند که ما اغلب یک سلسله‌مراتب از اشیاء در ذهن خود ایجاد می‌کنیم. به عنوان مثال، می‌دانیم که قناری یک پرنده است و همه پرندگان بال دارند. همچنین ایده‌ای درباره رنگ معمولی قناری و سرعت پرواز آن داریم. + + - **نمایش قاب** بر اساس نمایش هر شیء یا کلاس اشیاء به صورت یک **قاب** است که شامل **شکاف‌ها** می‌شود. شکاف‌ها ممکن است مقادیر پیش‌فرض، محدودیت‌های مقدار، یا رویه‌های ذخیره‌شده‌ای داشته باشند که می‌توانند برای به دست آوردن مقدار شکاف فراخوانی شوند. همه قاب‌ها یک سلسله‌مراتب مشابه سلسله‌مراتب اشیاء در زبان‌های برنامه‌نویسی شیءگرا تشکیل می‌دهند. + - **سناریوها** نوع خاصی از قاب‌ها هستند که موقعیت‌های پیچیده‌ای را که ممکن است در طول زمان رخ دهند نمایش می‌دهند. + +**پایتون** + +شکاف | مقدار | مقدار پیش‌فرض | بازه | +-----|-------|----------------|------| +نام | پایتون | | | +است-یک | زبان بدون نوع | | | +حالت متغیر | | CamelCase | | +طول برنامه | | | ۵-۵۰۰۰ خط | +نحو بلوک | تورفتگی | | | + +3. **نمایش‌های رویه‌ای** بر اساس نمایش دانش به صورت لیستی از اقدامات هستند که می‌توانند زمانی که یک شرط خاص رخ می‌دهد اجرا شوند. + - قوانین تولیدی، عبارات اگر-آنگاه هستند که به ما اجازه می‌دهند نتیجه‌گیری کنیم. به عنوان مثال، یک پزشک ممکن است قانونی داشته باشد که می‌گوید **اگر** بیمار تب بالا **یا** سطح بالای پروتئین C-reactive در آزمایش خون دارد، **آنگاه** او التهاب دارد. هنگامی که یکی از شرایط رخ دهد، می‌توانیم نتیجه‌گیری کنیم و سپس از آن در استدلال‌های بعدی استفاده کنیم. + - الگوریتم‌ها می‌توانند به عنوان نوع دیگری از نمایش رویه‌ای در نظر گرفته شوند، اگرچه تقریباً هرگز به طور مستقیم در سیستم‌های مبتنی بر دانش استفاده نمی‌شوند. + +4. **منطق** در ابتدا توسط ارسطو به عنوان روشی برای نمایش دانش جهانی انسان پیشنهاد شد. + - منطق گزاره‌ای به عنوان یک نظریه ریاضی بسیار غنی است که قابل محاسبه نیست، بنابراین معمولاً از یک زیرمجموعه آن استفاده می‌شود، مانند بندهای Horn که در Prolog استفاده می‌شوند. + - منطق توصیفی خانواده‌ای از سیستم‌های منطقی است که برای نمایش و استدلال درباره سلسله‌مراتب اشیاء و نمایش‌های دانش توزیع‌شده مانند *وب معنایی* استفاده می‌شود. + +## سیستم‌های خبره + +یکی از موفقیت‌های اولیه هوش مصنوعی نمادین، **سیستم‌های خبره** بود - سیستم‌های کامپیوتری که طراحی شده بودند تا به عنوان یک متخصص در یک حوزه محدود عمل کنند. این سیستم‌ها بر اساس یک **پایگاه دانش** استخراج‌شده از یک یا چند متخصص انسانی بودند و شامل یک **موتور استنتاج** بودند که بر اساس آن استدلال انجام می‌داد. + +![معماری انسانی](../../../../lessons/2-Symbolic/images/arch-human.png) | ![سیستم مبتنی بر دانش](../../../../lessons/2-Symbolic/images/arch-kbs.png) +-----------------------------------------|----------------------------------------- +ساختار ساده‌شده سیستم عصبی انسان | معماری یک سیستم مبتنی بر دانش + +سیستم‌های خبره مانند سیستم استدلال انسانی ساخته شده‌اند، که شامل **حافظه کوتاه‌مدت** و **حافظه بلندمدت** است. به طور مشابه، در سیستم‌های مبتنی بر دانش، اجزای زیر را متمایز می‌کنیم: + +* **حافظه مسئله**: شامل دانش درباره مسئله‌ای است که در حال حاضر حل می‌شود، مانند دمای بدن یا فشار خون بیمار، یا اینکه آیا او التهاب دارد یا نه. این دانش همچنین **دانش ایستا** نامیده می‌شود، زیرا شامل یک عکس فوری از آنچه در حال حاضر درباره مسئله می‌دانیم است - به اصطلاح *وضعیت مسئله*. +* **پایگاه دانش**: نمایانگر دانش بلندمدت درباره یک حوزه مسئله است. این دانش به صورت دستی از متخصصان انسانی استخراج می‌شود و از یک مشاوره به مشاوره دیگر تغییر نمی‌کند. از آنجا که به ما اجازه می‌دهد از یک وضعیت مسئله به وضعیت دیگر حرکت کنیم، همچنین **دانش پویا** نامیده می‌شود. +* **موتور استنتاج**: کل فرآیند جستجو در فضای وضعیت مسئله را هماهنگ می‌کند و در صورت لزوم از کاربر سوال می‌پرسد. همچنین مسئول یافتن قوانین مناسب برای اعمال در هر وضعیت است. + +به عنوان مثال، بیایید سیستم خبره‌ای را در نظر بگیریم که بر اساس ویژگی‌های فیزیکی یک حیوان را تعیین می‌کند: + +![درخت AND-OR](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) + +> تصویر توسط [Dmitry Soshnikov](http://soshnikov.com) + +این نمودار **درخت AND-OR** نامیده می‌شود و یک نمایش گرافیکی از مجموعه‌ای از قوانین تولیدی است. رسم یک درخت در ابتدای استخراج دانش از متخصص مفید است. برای نمایش دانش در داخل کامپیوتر، استفاده از قوانین راحت‌تر است: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +می‌توانید متوجه شوید که هر شرط در سمت چپ قانون و عمل اساساً سه‌گانه‌های شیء-ویژگی-مقدار (OAV) هستند. **حافظه کاری** شامل مجموعه‌ای از سه‌گانه‌های OAV است که به مسئله‌ای که در حال حاضر حل می‌شود مربوط می‌شوند. یک **موتور قوانین** به دنبال قوانینی می‌گردد که شرط آن‌ها برآورده شده باشد و آن‌ها را اعمال می‌کند، و یک سه‌گانه جدید به حافظه کاری اضافه می‌کند. + +> ✅ درخت AND-OR خود را درباره موضوعی که دوست دارید رسم کنید! + +### استنتاج پیشرو در مقابل استنتاج پسرو + +فرآیند توصیف‌شده در بالا **استنتاج پیشرو** نامیده می‌شود. این فرآیند با برخی داده‌های اولیه درباره مسئله موجود در حافظه کاری شروع می‌شود و سپس حلقه استدلال زیر را اجرا می‌کند: + +1. اگر ویژگی هدف در حافظه کاری موجود باشد - متوقف شوید و نتیجه را بدهید +2. به دنبال تمام قوانینی بگردید که شرط آن‌ها در حال حاضر برآورده شده است - مجموعه تضاد قوانین را به دست آورید. +3. **حل تضاد** را انجام دهید - یک قانون را انتخاب کنید که در این مرحله اجرا شود. ممکن است استراتژی‌های مختلفی برای حل تضاد وجود داشته باشد: + - انتخاب اولین قانون قابل اجرا در پایگاه دانش + - انتخاب یک قانون تصادفی + - انتخاب یک قانون *خاص‌تر*، یعنی قانونی که بیشترین شرایط را در سمت چپ (LHS) برآورده کند +4. قانون انتخاب‌شده را اعمال کنید و یک قطعه جدید از دانش را به وضعیت مسئله اضافه کنید +5. از مرحله 1 تکرار کنید. + +با این حال، در برخی موارد ممکن است بخواهیم با دانش خالی درباره مسئله شروع کنیم و سوالاتی بپرسیم که به ما کمک کند به نتیجه برسیم. به عنوان مثال، هنگام تشخیص پزشکی، معمولاً همه آزمایش‌های پزشکی را از قبل انجام نمی‌دهیم قبل از شروع تشخیص بیمار. بلکه می‌خواهیم آزمایش‌ها را زمانی انجام دهیم که نیاز به تصمیم‌گیری باشد. + +این فرآیند می‌تواند با استفاده از **استنتاج پسرو** مدل‌سازی شود. این فرآیند توسط **هدف** هدایت می‌شود - مقدار ویژگی که به دنبال یافتن آن هستیم: + +1. تمام قوانینی را انتخاب کنید که می‌توانند مقدار یک هدف را به ما بدهند (یعنی با هدف در سمت راست (RHS)) - یک مجموعه تضاد +1. اگر هیچ قانونی برای این ویژگی وجود ندارد، یا قانونی وجود دارد که می‌گوید باید مقدار را از کاربر بپرسیم - از کاربر بپرسید، در غیر این صورت: +1. از استراتژی حل تضاد برای انتخاب یک قانون که به عنوان *فرضیه* استفاده خواهد شد - سعی می‌کنیم آن را اثبات کنیم +1. فرآیند را به صورت بازگشتی برای همه ویژگی‌های سمت چپ قانون تکرار کنید، سعی کنید آن‌ها را به عنوان اهداف اثبات کنید +1. اگر در هر نقطه فرآیند شکست خورد - از قانون دیگری در مرحله 3 استفاده کنید. + +> ✅ در چه شرایطی استنتاج پیشرو مناسب‌تر است؟ استنتاج پسرو چطور؟ + +### پیاده‌سازی سیستم‌های خبره + +سیستم‌های خبره را می‌توان با استفاده از ابزارهای مختلف پیاده‌سازی کرد: + +* برنامه‌نویسی مستقیم آن‌ها در یک زبان برنامه‌نویسی سطح بالا. این بهترین ایده نیست، زیرا مزیت اصلی یک سیستم مبتنی بر دانش این است که دانش از استنتاج جدا شده است و به طور بالقوه یک متخصص حوزه مسئله باید بتواند قوانین را بدون درک جزئیات فرآیند استنتاج بنویسد. +* استفاده از **پوسته سیستم‌های خبره**، یعنی سیستمی که به طور خاص طراحی شده است تا با استفاده از یک زبان نمایش دانش پر شود. + +## ✍️ تمرین: استنتاج حیوانات + +به [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) مراجعه کنید برای نمونه‌ای از پیاده‌سازی سیستم خبره استنتاج پیشرو و پسرو. +> **توجه**: این مثال بسیار ساده است و فقط ایده‌ای از نحوه عملکرد یک سیستم خبره را نشان می‌دهد. زمانی که شروع به ایجاد چنین سیستمی می‌کنید، تنها زمانی متوجه برخی رفتارهای *هوشمندانه* از آن خواهید شد که تعداد قوانین به حدود ۲۰۰ یا بیشتر برسد. در یک نقطه، قوانین آنقدر پیچیده می‌شوند که نمی‌توان همه آن‌ها را در ذهن نگه داشت، و در این مرحله ممکن است از خود بپرسید چرا سیستم تصمیمات خاصی می‌گیرد. با این حال، ویژگی مهم سیستم‌های مبتنی بر دانش این است که همیشه می‌توانید دقیقاً *توضیح* دهید که چگونه هر یک از تصمیمات گرفته شده‌اند. +## هستی‌شناسی‌ها و وب معنایی + +در پایان قرن بیستم، یک ابتکار برای استفاده از نمایش دانش به منظور برچسب‌گذاری منابع اینترنتی شکل گرفت، به‌طوری‌که امکان یافتن منابعی که با پرسش‌های بسیار خاص مطابقت دارند فراهم شود. این حرکت **وب معنایی** نامیده شد و بر چند مفهوم اصلی استوار بود: + +- یک نمایش دانش ویژه بر اساس **[منطق‌های توصیفی](https://en.wikipedia.org/wiki/Description_logic)** (DL). این روش مشابه نمایش دانش قاب است، زیرا سلسله‌مراتبی از اشیاء با ویژگی‌ها ایجاد می‌کند، اما دارای معناشناسی منطقی رسمی و استنتاج است. خانواده‌ای از DL‌ها وجود دارد که بین بیان‌پذیری و پیچیدگی الگوریتمی استنتاج تعادل برقرار می‌کنند. +- نمایش دانش توزیع‌شده، که در آن همه مفاهیم با یک شناسه URI جهانی نمایش داده می‌شوند، و این امکان را فراهم می‌کند که سلسله‌مراتب دانش در سراسر اینترنت ایجاد شود. +- خانواده‌ای از زبان‌های مبتنی بر XML برای توصیف دانش: RDF (چارچوب توصیف منابع)، RDFS (طرح RDF)، OWL (زبان وب هستی‌شناسی). + +یک مفهوم اصلی در وب معنایی، مفهوم **هستی‌شناسی** است. هستی‌شناسی به مشخص‌سازی صریح یک حوزه مسئله با استفاده از یک نمایش دانش رسمی اشاره دارد. ساده‌ترین هستی‌شناسی می‌تواند فقط یک سلسله‌مراتب از اشیاء در یک حوزه مسئله باشد، اما هستی‌شناسی‌های پیچیده‌تر شامل قوانینی خواهند بود که می‌توانند برای استنتاج استفاده شوند. + +در وب معنایی، همه نمایش‌ها بر اساس سه‌گانه‌ها هستند. هر شیء و هر رابطه به‌طور منحصربه‌فرد توسط URI شناسایی می‌شوند. برای مثال، اگر بخواهیم بیان کنیم که این برنامه درسی هوش مصنوعی توسط دیمیتری سوشنیکوف در تاریخ ۱ ژانویه ۲۰۲۲ توسعه داده شده است، اینجا سه‌گانه‌هایی هستند که می‌توانیم استفاده کنیم: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ در اینجا `http://www.example.com/terms/creation-date` و `http://purl.org/dc/elements/1.1/creator` برخی URI‌های شناخته‌شده و جهانی هستند که مفاهیم *سازنده* و *تاریخ ایجاد* را بیان می‌کنند. + +در یک مورد پیچیده‌تر، اگر بخواهیم فهرستی از سازندگان را تعریف کنیم، می‌توانیم از برخی ساختارهای داده تعریف‌شده در RDF استفاده کنیم. + + + +> نمودارهای بالا توسط [دیمیتری سوشنیکوف](http://soshnikov.com) + +پیشرفت در ساخت وب معنایی تا حدی به دلیل موفقیت موتورهای جستجو و تکنیک‌های پردازش زبان طبیعی که امکان استخراج داده‌های ساختاریافته از متن را فراهم می‌کنند، کند شد. با این حال، در برخی حوزه‌ها هنوز تلاش‌های قابل‌توجهی برای حفظ هستی‌شناسی‌ها و پایگاه‌های دانش وجود دارد. چند پروژه قابل توجه: + +* [WikiData](https://wikidata.org/) مجموعه‌ای از پایگاه‌های دانش قابل خواندن توسط ماشین است که با ویکی‌پدیا مرتبط هستند. بیشتر داده‌ها از *InfoBoxes* ویکی‌پدیا استخراج می‌شوند، بخش‌هایی از محتوای ساختاریافته در صفحات ویکی‌پدیا. شما می‌توانید [WikiData را](https://query.wikidata.org/) با SPARQL، یک زبان پرس‌وجوی ویژه برای وب معنایی، پرس‌وجو کنید. اینجا یک نمونه پرس‌وجو است که محبوب‌ترین رنگ‌های چشم در میان انسان‌ها را نمایش می‌دهد: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) تلاش دیگری مشابه WikiData است. + +> ✅ اگر می‌خواهید با ساخت هستی‌شناسی‌های خودتان یا باز کردن هستی‌شناسی‌های موجود آزمایش کنید، یک ویرایشگر بصری عالی هستی‌شناسی به نام [Protégé](https://protege.stanford.edu/) وجود دارد. آن را دانلود کنید یا به صورت آنلاین استفاده کنید. + + + +*ویرایشگر وب Protégé باز شده با هستی‌شناسی خانواده رومانوف. تصویر توسط دیمیتری سوشنیکوف* + +## ✍️ تمرین: هستی‌شناسی خانواده + +به [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) مراجعه کنید تا نمونه‌ای از استفاده از تکنیک‌های وب معنایی برای استنتاج روابط خانوادگی را ببینید. ما یک شجره‌نامه خانوادگی که در قالب رایج GEDCOM نمایش داده شده است و یک هستی‌شناسی از روابط خانوادگی را می‌گیریم و یک گراف از همه روابط خانوادگی برای مجموعه‌ای از افراد مشخص ایجاد می‌کنیم. + +## گراف مفهومی مایکروسافت + +در بیشتر موارد، هستی‌شناسی‌ها با دقت توسط انسان ایجاد می‌شوند. با این حال، همچنین امکان **استخراج** هستی‌شناسی‌ها از داده‌های غیرساختاریافته، برای مثال از متون زبان طبیعی، وجود دارد. + +یکی از این تلاش‌ها توسط Microsoft Research انجام شد و به [گراف مفهومی مایکروسافت](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) منجر شد. + +این گراف مجموعه بزرگی از موجودیت‌ها است که با استفاده از رابطه ارث‌بری `is-a` گروه‌بندی شده‌اند. این گراف امکان پاسخ به سوالاتی مانند "مایکروسافت چیست؟" را فراهم می‌کند - پاسخی مانند "یک شرکت با احتمال ۰.۸۷ و یک برند با احتمال ۰.۷۵". + +این گراف یا به صورت API REST در دسترس است، یا به صورت یک فایل متنی بزرگ قابل دانلود که همه جفت‌های موجودیت را فهرست می‌کند. + +## ✍️ تمرین: یک گراف مفهومی + +دفترچه [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) را امتحان کنید تا ببینید چگونه می‌توانیم از گراف مفهومی مایکروسافت برای گروه‌بندی مقالات خبری در چند دسته استفاده کنیم. + +## نتیجه‌گیری + +امروزه، هوش مصنوعی اغلب مترادف با *یادگیری ماشین* یا *شبکه‌های عصبی* در نظر گرفته می‌شود. با این حال، انسان‌ها همچنین استدلال صریح انجام می‌دهند، چیزی که در حال حاضر توسط شبکه‌های عصبی مدیریت نمی‌شود. در پروژه‌های دنیای واقعی، استدلال صریح هنوز برای انجام وظایفی که نیاز به توضیح دارند یا توانایی تغییر رفتار سیستم به صورت کنترل‌شده دارند، استفاده می‌شود. + +## 🚀 چالش + +در دفترچه هستی‌شناسی خانواده مرتبط با این درس، فرصتی برای آزمایش با روابط دیگر خانوادگی وجود دارد. سعی کنید ارتباطات جدیدی بین افراد در شجره‌نامه خانوادگی کشف کنید. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## مرور و مطالعه شخصی + +در اینترنت تحقیق کنید تا حوزه‌هایی را کشف کنید که انسان‌ها تلاش کرده‌اند دانش را کمی‌سازی و کدگذاری کنند. به طبقه‌بندی بلوم نگاهی بیندازید و به تاریخ بازگردید تا ببینید چگونه انسان‌ها تلاش کرده‌اند دنیای خود را درک کنند. کار لینائوس را برای ایجاد یک طبقه‌بندی از موجودات بررسی کنید و مشاهده کنید که چگونه دیمیتری مندلیف راهی برای توصیف و گروه‌بندی عناصر شیمیایی ایجاد کرد. چه مثال‌های جالب دیگری می‌توانید پیدا کنید؟ + +**تکلیف**: [ساخت یک هستی‌شناسی](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/2-Symbolic/assignment.md b/translations/fa/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..59c460a4 --- /dev/null +++ b/translations/fa/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# ساخت یک هستی‌شناسی + +ساخت یک پایگاه دانش به معنای دسته‌بندی مدلی است که حقایق مربوط به یک موضوع را نشان می‌دهد. یک موضوع انتخاب کنید - مانند یک شخص، مکان یا چیز - و سپس مدلی از آن موضوع بسازید. از برخی تکنیک‌ها و استراتژی‌های مدل‌سازی که در این درس توضیح داده شده‌اند استفاده کنید. به عنوان مثال، می‌توانید یک هستی‌شناسی از یک اتاق نشیمن با مبلمان، چراغ‌ها و موارد دیگر ایجاد کنید. اتاق نشیمن چگونه با آشپزخانه متفاوت است؟ با حمام؟ چگونه تشخیص می‌دهید که این اتاق نشیمن است و نه اتاق غذاخوری؟ از [Protégé](https://protege.stanford.edu/) برای ساخت هستی‌شناسی خود استفاده کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..d741c32a --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,103 @@ + +# مقدمه‌ای بر شبکه‌های عصبی: پرسپترون + +## [پیش‌زمینه آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +یکی از اولین تلاش‌ها برای پیاده‌سازی چیزی مشابه شبکه‌های عصبی مدرن توسط فرانک روزنبلات از آزمایشگاه هوافضای کورنل در سال ۱۹۵۷ انجام شد. این پیاده‌سازی سخت‌افزاری به نام "Mark-1" طراحی شده بود تا اشکال هندسی ابتدایی مانند مثلث، مربع و دایره را تشخیص دهد. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> تصاویر [از ویکی‌پدیا](https://en.wikipedia.org/wiki/Perceptron) + +تصویر ورودی توسط آرایه‌ای از ۲۰x۲۰ سلول‌های نوری نمایش داده می‌شد، بنابراین شبکه عصبی دارای ۴۰۰ ورودی و یک خروجی دودویی بود. یک شبکه ساده شامل یک نورون بود که به آن **واحد منطقی آستانه‌ای** نیز گفته می‌شود. وزن‌های شبکه عصبی مانند پتانسیومتر عمل می‌کردند که نیاز به تنظیم دستی در مرحله آموزش داشتند. + +> ✅ پتانسیومتر دستگاهی است که به کاربر اجازه می‌دهد مقاومت یک مدار را تنظیم کند. + +> نیویورک تایمز در آن زمان درباره پرسپترون نوشت: *جنین یک کامپیوتر الکترونیکی که [نیروی دریایی] انتظار دارد بتواند راه برود، صحبت کند، ببیند، بنویسد، خود را بازتولید کند و از وجود خود آگاه باشد.* + +## مدل پرسپترون + +فرض کنید در مدل ما N ویژگی وجود دارد، که در این صورت بردار ورودی یک بردار با اندازه N خواهد بود. پرسپترون یک مدل **دسته‌بندی دودویی** است، یعنی می‌تواند بین دو کلاس داده ورودی تمایز قائل شود. فرض می‌کنیم که برای هر بردار ورودی x خروجی پرسپترون ما یا +۱ یا -۱ خواهد بود، بسته به کلاس داده. خروجی با استفاده از فرمول زیر محاسبه می‌شود: + +y(x) = f(wTx) + +که در آن f یک تابع فعال‌سازی پله‌ای است. + + + +## آموزش پرسپترون + +برای آموزش پرسپترون، باید بردار وزن w را پیدا کنیم که اکثر مقادیر را به درستی دسته‌بندی کند، یعنی منجر به کمترین **خطا** شود. این خطا E با استفاده از **معیار پرسپترون** به صورت زیر تعریف می‌شود: + +E(w) = -∑wTxiti + +که در آن: + +* جمع بر روی نقاط داده آموزشی i انجام می‌شود که منجر به دسته‌بندی اشتباه می‌شوند. +* xi داده ورودی است و ti برای مثال‌های منفی و مثبت به ترتیب -۱ یا +۱ است. + +این معیار به عنوان تابعی از وزن‌ها w در نظر گرفته می‌شود و ما باید آن را کمینه کنیم. اغلب از روشی به نام **نزول گرادیان** استفاده می‌شود، که در آن با وزن‌های اولیه w(0) شروع می‌کنیم و سپس در هر مرحله وزن‌ها را طبق فرمول زیر به‌روزرسانی می‌کنیم: + +w(t+1) = w(t) - η∇E(w) + +در اینجا η نرخ یادگیری نامیده می‌شود و ∇E(w) نشان‌دهنده **گرادیان** E است. پس از محاسبه گرادیان، به فرمول زیر می‌رسیم: + +w(t+1) = w(t) + ∑ηxiti + +الگوریتم در زبان پایتون به این صورت است: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## نتیجه‌گیری + +در این درس، درباره پرسپترون که یک مدل دسته‌بندی دودویی است، و نحوه آموزش آن با استفاده از بردار وزن‌ها یاد گرفتید. + +## 🚀 چالش + +اگر دوست دارید پرسپترون خود را بسازید، این [آزمایش در Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) را امتحان کنید که از [طراح Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) استفاده می‌کند. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## مرور و مطالعه شخصی + +برای مشاهده اینکه چگونه می‌توان از پرسپترون برای حل یک مسئله ساده و همچنین مسائل واقعی استفاده کرد و برای ادامه یادگیری، به دفترچه [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) مراجعه کنید. + +همچنین یک [مقاله جالب درباره پرسپترون‌ها](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) وجود دارد. + +## [تکلیف](lab/README.md) + +در این درس، ما یک پرسپترون برای وظیفه دسته‌بندی دودویی پیاده‌سازی کردیم و از آن برای دسته‌بندی بین دو رقم دست‌نویس استفاده کردیم. در این آزمایش، از شما خواسته می‌شود که مسئله دسته‌بندی ارقام را به طور کامل حل کنید، یعنی تعیین کنید کدام رقم به احتمال زیاد با تصویر داده شده مطابقت دارد. + +* [دستورالعمل‌ها](lab/README.md) +* [دفترچه](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..2f795b4f --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# طبقه‌بندی چندکلاسه با پرسپترون + +تکلیف آزمایشگاهی از [برنامه درسی AI for Beginners](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +با استفاده از کدی که در این درس برای طبقه‌بندی دودویی ارقام دست‌نویس MNIST توسعه داده‌ایم، یک طبقه‌بند چندکلاسه ایجاد کنید که بتواند هر رقم را شناسایی کند. دقت طبقه‌بندی را بر روی مجموعه داده‌های آموزش و آزمایش محاسبه کنید و ماتریس سردرگمی را چاپ کنید. + +## نکات + +1. برای هر رقم، یک مجموعه داده برای طبقه‌بندی دودویی "این رقم در مقابل سایر ارقام" ایجاد کنید. +1. 10 پرسپترون مختلف برای طبقه‌بندی دودویی (یکی برای هر رقم) آموزش دهید. +1. یک تابع تعریف کنید که بتواند یک رقم ورودی را طبقه‌بندی کند. + +> **نکته**: اگر وزن‌های تمام 10 پرسپترون را در یک ماتریس ترکیب کنیم، باید بتوانیم تمام 10 پرسپترون را با یک ضرب ماتریسی به ارقام ورودی اعمال کنیم. رقم محتمل‌ترین را می‌توان فقط با اعمال عملیات `argmax` بر روی خروجی پیدا کرد. + +## دفترچه شروع + +آزمایشگاه را با باز کردن [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) شروع کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..ed8a8dbf --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# مقدمه‌ای بر شبکه‌های عصبی: پرسپترون چندلایه + +در بخش قبلی، با ساده‌ترین مدل شبکه عصبی آشنا شدید - پرسپترون تک‌لایه، که یک مدل خطی برای طبقه‌بندی دوکلاسه است. + +در این بخش، این مدل را به یک چارچوب انعطاف‌پذیرتر گسترش می‌دهیم که به ما امکان می‌دهد: + +* علاوه بر طبقه‌بندی دوکلاسه، **طبقه‌بندی چندکلاسه** انجام دهیم +* علاوه بر طبقه‌بندی، **مسائل رگرسیون** را حل کنیم +* کلاس‌هایی را که به صورت خطی قابل جداسازی نیستند، جدا کنیم + +همچنین چارچوب ماژولاری در پایتون توسعه خواهیم داد که به ما امکان می‌دهد معماری‌های مختلف شبکه عصبی را بسازیم. + +## [پیش‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## فرمالیزه کردن یادگیری ماشین + +بیایید با فرمالیزه کردن مسئله یادگیری ماشین شروع کنیم. فرض کنید یک مجموعه داده آموزشی **X** با برچسب‌های **Y** داریم و باید مدلی *f* بسازیم که پیش‌بینی‌های دقیقی انجام دهد. کیفیت پیش‌بینی‌ها با **تابع خطا** ℒ اندازه‌گیری می‌شود. توابع خطای زیر معمولاً استفاده می‌شوند: + +* برای مسائل رگرسیون، زمانی که باید یک عدد پیش‌بینی کنیم، می‌توانیم از **خطای مطلق** ∑i|f(x(i))-y(i)| یا **خطای مربعی** ∑i(f(x(i))-y(i))2 استفاده کنیم. +* برای طبقه‌بندی، از **خطای ۰-۱** (که اساساً همان **دقت مدل** است) یا **خطای لجستیک** استفاده می‌کنیم. + +برای پرسپترون تک‌لایه، تابع *f* به صورت یک تابع خطی تعریف می‌شد: *f(x)=wx+b* (در اینجا *w* ماتریس وزن، *x* بردار ویژگی‌های ورودی، و *b* بردار بایاس است). برای معماری‌های مختلف شبکه عصبی، این تابع می‌تواند شکل پیچیده‌تری به خود بگیرد. + +> در مسائل طبقه‌بندی، اغلب مطلوب است که خروجی شبکه به صورت احتمالات کلاس‌های مربوطه باشد. برای تبدیل اعداد دلخواه به احتمالات (مثلاً برای نرمال‌سازی خروجی)، اغلب از تابع **softmax** σ استفاده می‌کنیم و تابع *f* به صورت *f(x)=σ(wx+b)* در می‌آید. + +در تعریف *f* بالا، *w* و *b* به عنوان **پارامترها** θ=⟨*w,b*⟩ شناخته می‌شوند. با داشتن مجموعه داده ⟨**X**,**Y**⟩، می‌توانیم خطای کلی روی کل مجموعه داده را به عنوان تابعی از پارامترهای θ محاسبه کنیم. + +> ✅ **هدف از آموزش شبکه عصبی، کمینه کردن خطا با تغییر پارامترهای θ است.** + +## بهینه‌سازی با گرادیان نزولی + +یک روش شناخته‌شده برای بهینه‌سازی توابع، **گرادیان نزولی** است. ایده این است که می‌توان مشتق (در حالت چندبعدی به آن **گرادیان** می‌گویند) تابع خطا را نسبت به پارامترها محاسبه کرد و پارامترها را به گونه‌ای تغییر داد که خطا کاهش یابد. این روش به صورت زیر فرمالیزه می‌شود: + +* پارامترها را با مقادیر تصادفی اولیه‌سازی کنید: w(0), b(0) +* مراحل زیر را چندین بار تکرار کنید: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +در طول آموزش، مراحل بهینه‌سازی باید با در نظر گرفتن کل مجموعه داده محاسبه شوند (به یاد داشته باشید که خطا به صورت مجموعی از تمام نمونه‌های آموزشی محاسبه می‌شود). اما در عمل، ما از بخش‌های کوچکی از مجموعه داده به نام **مینی‌بچ‌ها** استفاده می‌کنیم و گرادیان‌ها را بر اساس زیرمجموعه‌ای از داده‌ها محاسبه می‌کنیم. از آنجا که هر بار زیرمجموعه به صورت تصادفی انتخاب می‌شود، این روش **گرادیان نزولی تصادفی** (SGD) نامیده می‌شود. + +## پرسپترون چندلایه و پس‌انتشار + +شبکه تک‌لایه، همان‌طور که دیدیم، قادر به طبقه‌بندی کلاس‌های خطی قابل جداسازی است. برای ساخت مدلی غنی‌تر، می‌توانیم چندین لایه از شبکه را ترکیب کنیم. به صورت ریاضی، این به معنای آن است که تابع *f* شکل پیچیده‌تری به خود می‌گیرد و در چندین مرحله محاسبه می‌شود: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +در اینجا، α یک **تابع فعال‌سازی غیرخطی** است، σ تابع softmax است، و پارامترها θ=<*w1,b1,w2,b2*> هستند. + +الگوریتم گرادیان نزولی همان‌طور باقی می‌ماند، اما محاسبه گرادیان‌ها دشوارتر می‌شود. با استفاده از قانون زنجیره‌ای مشتق‌گیری، می‌توان مشتقات را به صورت زیر محاسبه کرد: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ قانون زنجیره‌ای مشتق‌گیری برای محاسبه مشتقات تابع خطا نسبت به پارامترها استفاده می‌شود. + +توجه داشته باشید که بخش سمت چپ تمام این عبارات یکسان است، بنابراین می‌توان مشتقات را به طور مؤثر از تابع خطا شروع کرده و به صورت "معکوس" از طریق گراف محاسباتی محاسبه کرد. به همین دلیل، روش آموزش پرسپترون چندلایه **پس‌انتشار** یا 'backprop' نامیده می‌شود. + +گراف محاسباتی + +> TODO: ذکر منبع تصویر + +> ✅ ما در مثال نوت‌بوک خود، پس‌انتشار را با جزئیات بیشتری پوشش خواهیم داد. + +## نتیجه‌گیری + +در این درس، کتابخانه شبکه عصبی خود را ساختیم و از آن برای یک مسئله طبقه‌بندی دوبعدی ساده استفاده کردیم. + +## 🚀 چالش + +در نوت‌بوک همراه این درس، چارچوب خود را برای ساخت و آموزش پرسپترون‌های چندلایه پیاده‌سازی خواهید کرد. شما می‌توانید به طور دقیق ببینید که شبکه‌های عصبی مدرن چگونه کار می‌کنند. + +به نوت‌بوک [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) بروید و آن را بررسی کنید. + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## مرور و مطالعه شخصی + +پس‌انتشار یک الگوریتم رایج در هوش مصنوعی و یادگیری ماشین است که ارزش مطالعه [بیشتر](https://wikipedia.org/wiki/Backpropagation) را دارد. + +## [تکلیف](lab/README.md) + +در این آزمایشگاه، از چارچوبی که در این درس ساختید برای حل مسئله طبقه‌بندی ارقام دست‌نویس MNIST استفاده خواهید کرد. + +* [دستورالعمل‌ها](lab/README.md) +* [نوت‌بوک](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادقتی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..d4fc0847 --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# طبقه‌بندی MNIST با چارچوب خودمان + +تکلیف آزمایشگاهی از [برنامه درسی هوش مصنوعی برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +مسئله طبقه‌بندی ارقام دست‌نویس MNIST را با استفاده از پرسپترون‌های یک‌لایه‌ای، دو‌لایه‌ای و سه‌لایه‌ای حل کنید. از چارچوب شبکه عصبی که در درس توسعه داده‌ایم استفاده کنید. + +## نوت‌بوک شروع + +آزمایش را با باز کردن [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) آغاز کنید. + +## سوالات + +به عنوان نتیجه این آزمایش، سعی کنید به سوالات زیر پاسخ دهید: + +- آیا تابع فعال‌سازی بین لایه‌ها بر عملکرد شبکه تأثیر می‌گذارد؟ +- آیا برای این وظیفه به شبکه دو‌لایه‌ای یا سه‌لایه‌ای نیاز داریم؟ +- آیا هنگام آموزش شبکه با مشکلی مواجه شدید؟ به‌ویژه زمانی که تعداد لایه‌ها افزایش یافت. +- وزن‌های شبکه در طول آموزش چگونه رفتار می‌کنند؟ می‌توانید حداکثر مقدار مطلق وزن‌ها را در مقابل تعداد دوره‌ها رسم کنید تا رابطه را درک کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..362b10dd --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# چارچوب‌های شبکه عصبی + +همانطور که قبلاً یاد گرفتیم، برای آموزش شبکه‌های عصبی به صورت کارآمد باید دو کار انجام دهیم: + +* عملیات روی تنسورها، مانند ضرب، جمع و محاسبه برخی توابع مانند سیگموید یا سافت‌مکس +* محاسبه گرادیان‌های تمام عبارات، برای انجام بهینه‌سازی نزول گرادیان + +## [پیش‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +در حالی که کتابخانه `numpy` می‌تواند بخش اول را انجام دهد، ما به مکانیزمی برای محاسبه گرادیان‌ها نیاز داریم. در [چارچوب خودمان](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) که در بخش قبلی توسعه دادیم، مجبور بودیم تمام توابع مشتق را به صورت دستی درون متد `backward` که پس‌انتشار را انجام می‌دهد، برنامه‌ریزی کنیم. به طور ایده‌آل، یک چارچوب باید این امکان را به ما بدهد که گرادیان‌های *هر عبارتی* که تعریف می‌کنیم را محاسبه کنیم. + +موضوع مهم دیگر این است که بتوانیم محاسبات را روی GPU یا هر واحد محاسباتی تخصصی دیگر، مانند [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit)، انجام دهیم. آموزش شبکه‌های عصبی عمیق نیازمند *محاسبات بسیار زیاد* است و توانایی موازی‌سازی این محاسبات روی GPU‌ها بسیار مهم است. + +> ✅ اصطلاح 'موازی‌سازی' به معنای توزیع محاسبات روی چندین دستگاه است. + +در حال حاضر، دو چارچوب محبوب شبکه عصبی عبارتند از: [TensorFlow](http://TensorFlow.org) و [PyTorch](https://pytorch.org/). هر دو API سطح پایین برای کار با تنسورها روی CPU و GPU ارائه می‌دهند. علاوه بر API سطح پایین، API سطح بالاتری نیز وجود دارد که به ترتیب [Keras](https://keras.io/) و [PyTorch Lightning](https://pytorchlightning.ai/) نامیده می‌شوند. + +API سطح پایین | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +API سطح بالا | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**API‌های سطح پایین** در هر دو چارچوب به شما امکان ساخت **گراف‌های محاسباتی** را می‌دهند. این گراف مشخص می‌کند که چگونه خروجی (معمولاً تابع خطا) با ورودی‌های داده شده محاسبه شود و می‌تواند برای محاسبه روی GPU ارسال شود، اگر موجود باشد. توابعی برای مشتق‌گیری از این گراف محاسباتی و محاسبه گرادیان‌ها وجود دارد که سپس می‌توانند برای بهینه‌سازی پارامترهای مدل استفاده شوند. + +**API‌های سطح بالا** شبکه‌های عصبی را به عنوان **توالی‌ای از لایه‌ها** در نظر می‌گیرند و ساخت اکثر شبکه‌های عصبی را بسیار آسان‌تر می‌کنند. آموزش مدل معمولاً نیازمند آماده‌سازی داده‌ها و سپس فراخوانی یک تابع `fit` برای انجام کار است. + +API سطح بالا به شما امکان می‌دهد شبکه‌های عصبی معمولی را بسیار سریع بسازید بدون اینکه نگران جزئیات زیادی باشید. در عین حال، API سطح پایین کنترل بیشتری بر فرآیند آموزش ارائه می‌دهد و بنابراین در تحقیقات، زمانی که با معماری‌های جدید شبکه عصبی سروکار دارید، بسیار استفاده می‌شود. + +همچنین مهم است که بدانید می‌توانید از هر دو API با هم استفاده کنید، به عنوان مثال، می‌توانید معماری لایه شبکه خود را با استفاده از API سطح پایین توسعه دهید و سپس از آن درون شبکه بزرگتری که با API سطح بالا ساخته و آموزش داده شده است، استفاده کنید. یا می‌توانید شبکه‌ای را با استفاده از API سطح بالا به عنوان توالی‌ای از لایه‌ها تعریف کنید و سپس حلقه آموزش سطح پایین خود را برای انجام بهینه‌سازی استفاده کنید. هر دو API از مفاهیم پایه یکسانی استفاده می‌کنند و برای کار با یکدیگر طراحی شده‌اند. + +## یادگیری + +در این دوره، بیشتر محتوا را هم برای PyTorch و هم TensorFlow ارائه می‌دهیم. شما می‌توانید چارچوب مورد علاقه خود را انتخاب کرده و فقط نوت‌بوک‌های مربوطه را مرور کنید. اگر مطمئن نیستید کدام چارچوب را انتخاب کنید، برخی بحث‌ها در اینترنت درباره **PyTorch vs. TensorFlow** را بخوانید. همچنین می‌توانید هر دو چارچوب را بررسی کنید تا درک بهتری پیدا کنید. + +در صورت امکان، از API‌های سطح بالا برای سادگی استفاده خواهیم کرد. با این حال، معتقدیم که درک نحوه عملکرد شبکه‌های عصبی از پایه مهم است، بنابراین در ابتدا با API سطح پایین و تنسورها کار را شروع می‌کنیم. با این حال، اگر می‌خواهید سریع شروع کنید و نمی‌خواهید زمان زیادی را صرف یادگیری این جزئیات کنید، می‌توانید آن‌ها را رد کنید و مستقیماً به نوت‌بوک‌های API سطح بالا بروید. + +## ✍️ تمرین‌ها: چارچوب‌ها + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: + +API سطح پایین | [نوت‌بوک TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +API سطح بالا | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +پس از تسلط بر چارچوب‌ها، بیایید مفهوم بیش‌برازش را مرور کنیم. + +# بیش‌برازش + +بیش‌برازش یک مفهوم بسیار مهم در یادگیری ماشین است و بسیار مهم است که آن را به درستی درک کنیم! + +به مشکل زیر در تقریب ۵ نقطه (نمایش داده شده با `x` در نمودارهای زیر) توجه کنید: + +![خطی](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![بیش‌برازش](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) +-------------------------|-------------------------- +**مدل خطی، ۲ پارامتر** | **مدل غیرخطی، ۷ پارامتر** +خطای آموزش = ۵.۳ | خطای آموزش = ۰ +خطای اعتبارسنجی = ۵.۱ | خطای اعتبارسنجی = ۲۰ + +* در سمت چپ، یک تقریب خطی خوب را مشاهده می‌کنیم. چون تعداد پارامترها مناسب است، مدل ایده پشت توزیع نقاط را به درستی درک می‌کند. +* در سمت راست، مدل بیش از حد قدرتمند است. چون فقط ۵ نقطه داریم و مدل ۷ پارامتر دارد، می‌تواند به گونه‌ای تنظیم شود که از تمام نقاط عبور کند و خطای آموزش را به ۰ برساند. با این حال، این مانع از درک الگوی صحیح پشت داده‌ها توسط مدل می‌شود، بنابراین خطای اعتبارسنجی بسیار بالا است. + +بسیار مهم است که تعادل صحیحی بین غنای مدل (تعداد پارامترها) و تعداد نمونه‌های آموزشی برقرار کنیم. + +## چرا بیش‌برازش رخ می‌دهد؟ + + * داده آموزشی کافی وجود ندارد + * مدل بیش از حد قدرتمند است + * نویز زیاد در داده‌های ورودی + +## چگونه بیش‌برازش را تشخیص دهیم؟ + +همانطور که از نمودار بالا می‌بینید، بیش‌برازش را می‌توان با خطای آموزشی بسیار کم و خطای اعتبارسنجی بالا تشخیص داد. معمولاً در طول آموزش، هر دو خطای آموزشی و اعتبارسنجی شروع به کاهش می‌کنند و سپس در یک نقطه ممکن است خطای اعتبارسنجی کاهش را متوقف کرده و شروع به افزایش کند. این نشانه‌ای از بیش‌برازش خواهد بود و نشان‌دهنده این است که احتمالاً باید آموزش را در این نقطه متوقف کنیم (یا حداقل یک نسخه از مدل را ذخیره کنیم). + +![بیش‌برازش](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) + +## چگونه از بیش‌برازش جلوگیری کنیم؟ + +اگر مشاهده کردید که بیش‌برازش رخ می‌دهد، می‌توانید یکی از کارهای زیر را انجام دهید: + + * مقدار داده آموزشی را افزایش دهید + * پیچیدگی مدل را کاهش دهید + * از برخی [تکنیک‌های منظم‌سازی](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) مانند [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout) استفاده کنید که بعداً بررسی خواهیم کرد. + +## بیش‌برازش و تعادل بایاس-واریانس + +بیش‌برازش در واقع یک مورد از یک مشکل عمومی‌تر در آمار به نام [تعادل بایاس-واریانس](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) است. اگر منابع احتمالی خطا در مدل خود را در نظر بگیریم، می‌توانیم دو نوع خطا را مشاهده کنیم: + +* **خطاهای بایاس** ناشی از عدم توانایی الگوریتم ما در درک رابطه بین داده‌های آموزشی به درستی است. این می‌تواند ناشی از این باشد که مدل ما به اندازه کافی قدرتمند نیست (**کم‌برازش**). +* **خطاهای واریانس** که ناشی از تقریب نویز در داده‌های ورودی توسط مدل به جای رابطه معنادار است (**بیش‌برازش**). + +در طول آموزش، خطای بایاس کاهش می‌یابد (زیرا مدل ما یاد می‌گیرد داده‌ها را تقریب بزند) و خطای واریانس افزایش می‌یابد. مهم است که آموزش را متوقف کنیم - یا به صورت دستی (زمانی که بیش‌برازش را تشخیص می‌دهیم) یا به صورت خودکار (با معرفی منظم‌سازی) - تا از بیش‌برازش جلوگیری کنیم. + +## نتیجه‌گیری + +در این درس، شما درباره تفاوت‌های بین API‌های مختلف برای دو چارچوب محبوب هوش مصنوعی، TensorFlow و PyTorch، یاد گرفتید. علاوه بر این، شما درباره یک موضوع بسیار مهم، بیش‌برازش، یاد گرفتید. + +## 🚀 چالش + +در نوت‌بوک‌های همراه، در انتهای آن‌ها 'وظایف' را پیدا خواهید کرد؛ نوت‌بوک‌ها را مرور کرده و وظایف را کامل کنید. + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## مرور و مطالعه شخصی + +در مورد موضوعات زیر تحقیق کنید: + +- TensorFlow +- PyTorch +- بیش‌برازش + +از خود بپرسید: + +- تفاوت بین TensorFlow و PyTorch چیست؟ +- تفاوت بین بیش‌برازش و کم‌برازش چیست؟ + +## [تکلیف](lab/README.md) + +در این آزمایشگاه، از شما خواسته می‌شود دو مسئله طبقه‌بندی را با استفاده از شبکه‌های کاملاً متصل تک‌لایه و چندلایه با استفاده از PyTorch یا TensorFlow حل کنید. + +* [دستورالعمل‌ها](lab/README.md) +* [نوت‌بوک](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..fc84fad2 --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# طبقه‌بندی با PyTorch/TensorFlow + +تکلیف آزمایشگاهی از [برنامه درسی AI for Beginners](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +دو مسئله طبقه‌بندی را با استفاده از شبکه‌های کاملاً متصل تک‌لایه و چندلایه با PyTorch یا TensorFlow حل کنید: + +1. مسئله **[طبقه‌بندی گل زنبق](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - نمونه‌ای از مسئله با داده‌های ورودی جدولی که می‌تواند توسط یادگیری ماشین کلاسیک پردازش شود. هدف شما طبقه‌بندی گل‌های زنبق به ۳ کلاس بر اساس ۴ پارامتر عددی است. +1. مسئله طبقه‌بندی ارقام دست‌نویس **MNIST** که قبلاً دیده‌ایم. + +معماری‌های مختلف شبکه را امتحان کنید تا بهترین دقت ممکن را به دست آورید. + +## دفترچه شروع + +آزمایشگاه را با باز کردن [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) شروع کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/3-NeuralNetworks/README.md b/translations/fa/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..a26eddea --- /dev/null +++ b/translations/fa/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# مقدمه‌ای بر شبکه‌های عصبی + +![خلاصه‌ای از محتوای مقدمه شبکه‌های عصبی در یک طرح](../../../../lessons/sketchnotes/ai-neuralnetworks.png) + +همان‌طور که در مقدمه بحث کردیم، یکی از راه‌های دستیابی به هوش، آموزش یک **مدل کامپیوتری** یا یک **مغز مصنوعی** است. از اواسط قرن بیستم، پژوهشگران مدل‌های ریاضی مختلفی را امتحان کردند، تا اینکه در سال‌های اخیر این مسیر به موفقیت چشمگیری دست یافت. این مدل‌های ریاضی از مغز، **شبکه‌های عصبی** نامیده می‌شوند. + +> گاهی اوقات شبکه‌های عصبی را *شبکه‌های عصبی مصنوعی* یا ANNs می‌نامند تا مشخص شود که درباره مدل‌ها صحبت می‌کنیم، نه شبکه‌های واقعی نورون‌ها. + +## یادگیری ماشین + +شبکه‌های عصبی بخشی از یک حوزه بزرگ‌تر به نام **یادگیری ماشین** هستند که هدف آن استفاده از داده‌ها برای آموزش مدل‌های کامپیوتری است که قادر به حل مسائل باشند. یادگیری ماشین بخش بزرگی از هوش مصنوعی را تشکیل می‌دهد، اما ما در این دوره به یادگیری ماشین کلاسیک نمی‌پردازیم. + +> برای یادگیری بیشتر درباره یادگیری ماشین کلاسیک، به دوره جداگانه **[یادگیری ماشین برای مبتدیان](http://github.com/microsoft/ml-for-beginners)** مراجعه کنید. + +در یادگیری ماشین، فرض می‌کنیم که یک مجموعه داده از نمونه‌ها **X** و مقادیر خروجی متناظر **Y** داریم. نمونه‌ها اغلب بردارهای N-بعدی هستند که از **ویژگی‌ها** تشکیل شده‌اند و خروجی‌ها **برچسب‌ها** نامیده می‌شوند. + +ما به دو مسئله رایج یادگیری ماشین می‌پردازیم: + +* **طبقه‌بندی**، که در آن باید یک شی ورودی را به دو یا چند کلاس دسته‌بندی کنیم. +* **رگرسیون**، که در آن باید یک عدد عددی را برای هر یک از نمونه‌های ورودی پیش‌بینی کنیم. + +> هنگامی که ورودی‌ها و خروجی‌ها را به صورت تنسورها نمایش می‌دهیم، مجموعه داده ورودی یک ماتریس با ابعاد M×N است، که در آن M تعداد نمونه‌ها و N تعداد ویژگی‌ها است. برچسب‌های خروجی Y یک بردار با ابعاد M است. + +در این دوره، ما فقط بر مدل‌های شبکه عصبی تمرکز خواهیم کرد. + +## مدلی از یک نورون + +از زیست‌شناسی می‌دانیم که مغز ما از سلول‌های عصبی تشکیل شده است، که هر یک از آن‌ها دارای چندین "ورودی" (آکسون‌ها) و یک خروجی (دندریت) هستند. آکسون‌ها و دندریت‌ها می‌توانند سیگنال‌های الکتریکی را منتقل کنند و اتصالات بین آکسون‌ها و دندریت‌ها می‌توانند درجات مختلفی از رسانایی را نشان دهند (که توسط نوروترانسمیترها کنترل می‌شود). + +![مدل یک نورون](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![مدل یک نورون](../../../../lessons/3-NeuralNetworks/images/artneuron.png) +----|---- +نورون واقعی *([تصویر](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) از ویکی‌پدیا)* | نورون مصنوعی *(تصویر از نویسنده)* + +بنابراین، ساده‌ترین مدل ریاضی یک نورون شامل چندین ورودی X1, ..., XN و یک خروجی Y و یک سری وزن W1, ..., WN است. خروجی به صورت زیر محاسبه می‌شود: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +که در آن f یک **تابع فعال‌سازی** غیرخطی است. + +> مدل‌های اولیه نورون در مقاله کلاسیک [یک حساب منطقی از ایده‌های ذاتی در فعالیت عصبی](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) توسط وارن مک‌کالوک و والتر پیتس در سال 1943 توصیف شدند. دونالد هب در کتاب خود "[سازمان رفتار: یک نظریه عصب‌روان‌شناختی](https://books.google.com/books?id=VNetYrB8EBoC)" روش آموزش این شبکه‌ها را پیشنهاد کرد. + +## در این بخش + +در این بخش درباره موارد زیر یاد خواهیم گرفت: +* [پرسیپترون](03-Perceptron/README.md)، یکی از اولین مدل‌های شبکه عصبی برای طبقه‌بندی دوکلاسه +* [شبکه‌های چندلایه](04-OwnFramework/README.md) همراه با یک نوت‌بوک [چگونه چارچوب خودمان را بسازیم](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [چارچوب‌های شبکه عصبی](05-Frameworks/README.md)، همراه با این نوت‌بوک‌ها: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) و [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [بیش‌برازش](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/fa/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..a5d72c50 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# مقدمه‌ای بر بینایی کامپیوتر + +[بینایی کامپیوتر](https://wikipedia.org/wiki/Computer_vision) شاخه‌ای از علوم است که هدف آن فراهم کردن توانایی درک تصاویر دیجیتال در سطح بالا برای کامپیوترها است. این تعریف بسیار گسترده است، زیرا *درک* می‌تواند معانی مختلفی داشته باشد، از جمله پیدا کردن یک شیء در تصویر (**تشخیص شیء**)، فهمیدن آنچه در حال رخ دادن است (**تشخیص رویداد**)، توصیف یک تصویر با متن، یا بازسازی یک صحنه در سه بعد. همچنین وظایف خاصی مرتبط با تصاویر انسانی وجود دارد: تخمین سن و احساسات، تشخیص و شناسایی چهره، و تخمین حالت سه‌بعدی، به عنوان چند مثال. + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +یکی از ساده‌ترین وظایف بینایی کامپیوتر **طبقه‌بندی تصویر** است. + +بینایی کامپیوتر اغلب به عنوان شاخه‌ای از هوش مصنوعی در نظر گرفته می‌شود. امروزه، بیشتر وظایف بینایی کامپیوتر با استفاده از شبکه‌های عصبی حل می‌شوند. در این بخش، بیشتر درباره نوع خاصی از شبکه‌های عصبی که برای بینایی کامپیوتر استفاده می‌شوند، یعنی [شبکه‌های عصبی کانولوشنی](../07-ConvNets/README.md)، یاد خواهیم گرفت. + +با این حال، پیش از آنکه تصویر را به یک شبکه عصبی بدهید، در بسیاری از موارد منطقی است که از برخی تکنیک‌های الگوریتمی برای بهبود تصویر استفاده کنید. + +چندین کتابخانه پایتون برای پردازش تصویر در دسترس هستند: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** برای خواندن/نوشتن فرمت‌های مختلف تصویر استفاده می‌شود. همچنین از ffmpeg پشتیبانی می‌کند، که ابزاری مفید برای تبدیل فریم‌های ویدئو به تصاویر است. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (که به نام PIL نیز شناخته می‌شود) قدرتمندتر است و از برخی تغییرات تصویر مانند تغییر شکل، تنظیم پالت و موارد دیگر پشتیبانی می‌کند. +* **[OpenCV](https://opencv.org/)** یک کتابخانه قدرتمند پردازش تصویر است که به زبان C++ نوشته شده و به استاندارد *de facto* برای پردازش تصویر تبدیل شده است. این کتابخانه یک رابط کاربری راحت برای پایتون دارد. +* **[dlib](http://dlib.net/)** یک کتابخانه C++ است که بسیاری از الگوریتم‌های یادگیری ماشین، از جمله برخی از الگوریتم‌های بینایی کامپیوتر را پیاده‌سازی می‌کند. این کتابخانه نیز یک رابط پایتون دارد و می‌تواند برای وظایف چالش‌برانگیزی مانند تشخیص چهره و نقاط کلیدی چهره استفاده شود. + +## OpenCV + +[OpenCV](https://opencv.org/) به عنوان استاندارد *de facto* برای پردازش تصویر در نظر گرفته می‌شود. این کتابخانه شامل بسیاری از الگوریتم‌های مفید است که به زبان C++ پیاده‌سازی شده‌اند. شما می‌توانید OpenCV را از طریق پایتون نیز فراخوانی کنید. + +یک منبع خوب برای یادگیری OpenCV [این دوره آموزشی Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/) است. در برنامه درسی ما، هدف یادگیری کامل OpenCV نیست، بلکه نشان دادن چند مثال از کاربردهای آن و نحوه استفاده از آن است. + +### بارگذاری تصاویر + +تصاویر در پایتون به راحتی می‌توانند با آرایه‌های NumPy نمایش داده شوند. به عنوان مثال، تصاویر سیاه و سفید با اندازه 320x200 پیکسل در یک آرایه 200x320 ذخیره می‌شوند، و تصاویر رنگی با همان ابعاد دارای شکل 200x320x3 (برای 3 کانال رنگی) خواهند بود. برای بارگذاری یک تصویر، می‌توانید از کد زیر استفاده کنید: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +به طور سنتی، OpenCV از کدگذاری BGR (آبی-سبز-قرمز) برای تصاویر رنگی استفاده می‌کند، در حالی که سایر ابزارهای پایتون از کدگذاری سنتی‌تر RGB (قرمز-سبز-آبی) استفاده می‌کنند. برای اینکه تصویر به درستی نمایش داده شود، باید آن را به فضای رنگی RGB تبدیل کنید، یا با جابجایی ابعاد در آرایه NumPy، یا با فراخوانی یک تابع OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +همین تابع `cvtColor` می‌تواند برای انجام سایر تبدیل‌های فضای رنگی مانند تبدیل تصویر به سیاه و سفید یا به فضای رنگی HSV (رنگ-اشباع-مقدار) استفاده شود. + +شما همچنین می‌توانید از OpenCV برای بارگذاری فریم‌های ویدئو به صورت فریم به فریم استفاده کنید - یک مثال در تمرین [دفترچه OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) آورده شده است. + +### پردازش تصویر + +پیش از آنکه یک تصویر را به یک شبکه عصبی بدهید، ممکن است بخواهید چندین مرحله پیش‌پردازش را اعمال کنید. OpenCV می‌تواند کارهای زیادی انجام دهد، از جمله: + +* **تغییر اندازه** تصویر با استفاده از `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **تاری کردن** تصویر با استفاده از `im = cv2.medianBlur(im,3)` یا `im = cv2.GaussianBlur(im, (3,3), 0)` +* تغییر **روشنایی و کنتراست** تصویر که می‌تواند با دستکاری آرایه‌های NumPy انجام شود، همانطور که [در این یادداشت Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) توضیح داده شده است. +* استفاده از [آستانه‌گذاری](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) با فراخوانی توابع `cv2.threshold`/`cv2.adaptiveThreshold`، که اغلب به تنظیم روشنایی یا کنتراست ترجیح داده می‌شود. +* اعمال [تبدیلات مختلف](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) به تصویر: + - **[تبدیلات آفین](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** می‌توانند مفید باشند اگر نیاز به ترکیب چرخش، تغییر اندازه و کج کردن تصویر داشته باشید و مکان‌های مبدا و مقصد سه نقطه در تصویر را بدانید. تبدیلات آفین خطوط موازی را موازی نگه می‌دارند. + - **[تبدیلات پرسپکتیو](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** می‌توانند مفید باشند وقتی مکان‌های مبدا و مقصد چهار نقطه در تصویر را بدانید. به عنوان مثال، اگر از یک سند مستطیلی با دوربین گوشی هوشمند از زاویه‌ای عکس بگیرید و بخواهید تصویری مستطیلی از خود سند داشته باشید. +* درک حرکت درون تصویر با استفاده از **[جریان نوری](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## مثال‌هایی از استفاده از بینایی کامپیوتر + +در [دفترچه OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)، چند مثال از کاربردهای بینایی کامپیوتر برای انجام وظایف خاص آورده شده است: + +* **پیش‌پردازش یک عکس از کتاب بریل**. ما بر روی نحوه استفاده از آستانه‌گذاری، تشخیص ویژگی، تبدیل پرسپکتیو و دستکاری‌های NumPy تمرکز می‌کنیم تا نمادهای بریل جداگانه را برای طبقه‌بندی بیشتر توسط یک شبکه عصبی جدا کنیم. + +![تصویر بریل](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![تصویر پیش‌پردازش شده بریل](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![نمادهای بریل](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) +----|-----|----- + +> تصویر از [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **تشخیص حرکت در ویدئو با استفاده از تفاوت فریم‌ها**. اگر دوربین ثابت باشد، فریم‌های ویدئویی باید بسیار شبیه به یکدیگر باشند. از آنجا که فریم‌ها به صورت آرایه نمایش داده می‌شوند، فقط با کم کردن آرایه‌های دو فریم متوالی می‌توانیم تفاوت پیکسل‌ها را به دست آوریم، که باید برای فریم‌های ثابت کم باشد و با وجود حرکت قابل توجه در تصویر افزایش یابد. + +![تصویر فریم‌های ویدئو و تفاوت فریم‌ها](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) + +> تصویر از [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **تشخیص حرکت با استفاده از جریان نوری**. [جریان نوری](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) به ما امکان می‌دهد بفهمیم که پیکسل‌های فردی در فریم‌های ویدئو چگونه حرکت می‌کنند. دو نوع جریان نوری وجود دارد: + + - **جریان نوری متراکم** میدان برداری را محاسبه می‌کند که نشان می‌دهد هر پیکسل به کجا حرکت می‌کند. + - **جریان نوری پراکنده** بر اساس گرفتن برخی ویژگی‌های متمایز در تصویر (مانند لبه‌ها) و ساختن مسیر آن‌ها از فریمی به فریم دیگر است. + +![تصویر جریان نوری](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) + +> تصویر از [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ دفترچه‌های مثال: OpenCV [OpenCV در عمل را امتحان کنید](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +بیایید با کاوش در [دفترچه OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) چند آزمایش با OpenCV انجام دهیم. + +## نتیجه‌گیری + +گاهی اوقات، وظایف نسبتاً پیچیده‌ای مانند تشخیص حرکت یا تشخیص نوک انگشتان می‌توانند صرفاً با استفاده از بینایی کامپیوتر حل شوند. بنابراین، دانستن تکنیک‌های پایه‌ای بینایی کامپیوتر و قابلیت‌های کتابخانه‌هایی مانند OpenCV بسیار مفید است. + +## 🚀 چالش + +[این ویدئو](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) از نمایش AI را تماشا کنید تا درباره پروژه Cortic Tigers و نحوه ساخت یک راه‌حل مبتنی بر بلوک برای دموکراتیزه کردن وظایف بینایی کامپیوتر از طریق یک ربات یاد بگیرید. درباره پروژه‌های مشابهی که به تازه‌واردان کمک می‌کنند تا وارد این حوزه شوند تحقیق کنید. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## مرور و مطالعه شخصی + +بیشتر درباره جریان نوری [در این آموزش عالی](https://learnopencv.com/optical-flow-in-opencv/) بخوانید. + +## [تکلیف](lab/README.md) + +در این آزمایش، شما یک ویدئو با حرکات ساده ضبط خواهید کرد و هدف شما استخراج حرکات بالا/پایین/چپ/راست با استفاده از جریان نوری است. + +فریم حرکت کف دست + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/fa/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..8c022c98 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# تشخیص حرکات با استفاده از Optical Flow + +تمرین آزمایشگاهی از [برنامه درسی AI برای مبتدیان](https://aka.ms/ai-beginners). + +## وظیفه + +[این ویدیو](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) را در نظر بگیرید، که در آن کف دست یک فرد روی یک پس‌زمینه ثابت به چپ/راست/بالا/پایین حرکت می‌کند. + +**هدف شما** این است که بتوانید با استفاده از Optical Flow تشخیص دهید کدام بخش‌های ویدیو شامل حرکات بالا/پایین/چپ/راست هستند. + +**هدف پیشرفته** این است که در واقع حرکت کف دست/انگشت را با استفاده از رنگ پوست ردیابی کنید، همان‌طور که در [این پست وبلاگ](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) یا [اینجا](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) توضیح داده شده است. + +## دفترچه شروع + +آزمایش را با باز کردن [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) شروع کنید. + +## نکته کلیدی + +گاهی اوقات، وظایف نسبتاً پیچیده‌ای مانند تشخیص حرکت یا تشخیص نوک انگشت می‌توانند صرفاً با بینایی کامپیوتری حل شوند. بنابراین، بسیار مفید است که بدانید کتابخانه‌هایی مانند OpenCV چه قابلیت‌هایی دارند. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/fa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..7fa2a0ec --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# معماری‌های معروف شبکه‌های عصبی کانولوشنی (CNN) + +### VGG-16 + +VGG-16 یک شبکه است که در سال ۲۰۱۴ به دقت ۹۲.۷٪ در طبقه‌بندی ImageNet (در دسته‌بندی ۵ برتر) دست یافت. ساختار لایه‌های آن به صورت زیر است: + +![لایه‌های ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) + +همان‌طور که می‌بینید، VGG از یک معماری هرمی سنتی پیروی می‌کند که شامل توالی‌ای از لایه‌های کانولوشن-پولینگ است. + +![هرم ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) + +> تصویر از [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet خانواده‌ای از مدل‌ها است که توسط Microsoft Research در سال ۲۰۱۵ پیشنهاد شد. ایده اصلی ResNet استفاده از **بلوک‌های باقیمانده (residual blocks)** است: + + + +> تصویر از [این مقاله](https://arxiv.org/pdf/1512.03385.pdf) + +دلیل استفاده از مسیر عبور هویتی (identity pass-through) این است که لایه ما **تفاوت** بین نتیجه لایه قبلی و خروجی بلوک باقیمانده را پیش‌بینی کند - به همین دلیل به آن *باقیمانده* گفته می‌شود. این بلوک‌ها بسیار آسان‌تر برای آموزش هستند و می‌توان شبکه‌هایی با صدها بلوک از این نوع ساخت (رایج‌ترین نسخه‌ها ResNet-52، ResNet-101 و ResNet-152 هستند). + +همچنین می‌توانید این شبکه را به‌گونه‌ای تصور کنید که پیچیدگی خود را با داده‌های مجموعه تنظیم می‌کند. در ابتدا، زمانی که آموزش شبکه را شروع می‌کنید، مقادیر وزن‌ها کوچک هستند و بیشتر سیگنال از طریق لایه‌های هویتی عبور می‌کند. با پیشرفت آموزش و بزرگ‌تر شدن وزن‌ها، اهمیت پارامترهای شبکه افزایش می‌یابد و شبکه خود را برای تطبیق با قدرت بیانی مورد نیاز برای طبقه‌بندی صحیح تصاویر آموزشی تنظیم می‌کند. + +### Google Inception + +معماری Google Inception این ایده را یک قدم جلوتر می‌برد و هر لایه شبکه را به‌عنوان ترکیبی از چند مسیر مختلف می‌سازد: + + + +> تصویر از [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +اینجا باید به نقش کانولوشن‌های ۱x1 تأکید کنیم، زیرا در ابتدا ممکن است بی‌معنی به نظر برسند. چرا باید تصویر را با یک فیلتر ۱x1 پردازش کنیم؟ اما باید به یاد داشته باشید که فیلترهای کانولوشن با چندین کانال عمقی (در ابتدا - رنگ‌های RGB، و در لایه‌های بعدی - کانال‌هایی برای فیلترهای مختلف) کار می‌کنند و کانولوشن ۱x1 برای ترکیب این کانال‌های ورودی با استفاده از وزن‌های قابل آموزش مختلف استفاده می‌شود. همچنین می‌توان آن را به‌عنوان نمونه‌برداری پایین (pooling) در بعد کانال در نظر گرفت. + +[این پست وبلاگ خوب](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) و [مقاله اصلی](https://arxiv.org/pdf/1312.4400.pdf) منابع خوبی برای مطالعه بیشتر هستند. + +### MobileNet + +MobileNet خانواده‌ای از مدل‌ها با اندازه کاهش‌یافته است که برای دستگاه‌های موبایل مناسب هستند. از آن‌ها استفاده کنید اگر منابع محدودی دارید و می‌توانید کمی از دقت صرف‌نظر کنید. ایده اصلی پشت این مدل‌ها **کانولوشن تفکیک‌پذیر عمقی (depthwise separable convolution)** است که امکان نمایش فیلترهای کانولوشن را به‌صورت ترکیبی از کانولوشن‌های فضایی و کانولوشن ۱x1 بر روی کانال‌های عمقی فراهم می‌کند. این کار به‌طور قابل‌توجهی تعداد پارامترها را کاهش می‌دهد، اندازه شبکه را کوچک‌تر می‌کند و همچنین آموزش آن را با داده‌های کمتر آسان‌تر می‌سازد. + +[این پست وبلاگ خوب درباره MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) را مطالعه کنید. + +## نتیجه‌گیری + +در این بخش، شما مفهوم اصلی شبکه‌های عصبی کانولوشنی در بینایی کامپیوتری را یاد گرفتید. معماری‌های واقعی که قدرت طبقه‌بندی تصویر، تشخیص اشیاء و حتی تولید تصویر را دارند، همگی بر اساس CNN‌ها ساخته شده‌اند، فقط با لایه‌های بیشتر و برخی ترفندهای آموزشی اضافی. + +## 🚀 چالش + +در نوت‌بوک‌های همراه، یادداشت‌هایی در پایین درباره چگونگی دستیابی به دقت بیشتر وجود دارد. چند آزمایش انجام دهید تا ببینید آیا می‌توانید دقت بالاتری به دست آورید. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## مرور و مطالعه شخصی + +در حالی که CNN‌ها بیشتر برای وظایف بینایی کامپیوتری استفاده می‌شوند، به‌طور کلی برای استخراج الگوهای با اندازه ثابت مناسب هستند. به‌عنوان مثال، اگر با صداها سروکار داریم، ممکن است بخواهیم از CNN‌ها برای جستجوی برخی الگوهای خاص در سیگنال صوتی استفاده کنیم - که در این صورت فیلترها یک‌بعدی خواهند بود (و این CNN به‌عنوان 1D-CNN شناخته می‌شود). همچنین، گاهی اوقات از 3D-CNN برای استخراج ویژگی‌ها در فضای چندبعدی استفاده می‌شود، مانند رویدادهای خاصی که در ویدیو رخ می‌دهند - CNN می‌تواند الگوهای خاصی از تغییر ویژگی‌ها در طول زمان را ثبت کند. درباره وظایف دیگری که می‌توان با CNN‌ها انجام داد، مرور و مطالعه شخصی انجام دهید. + +## [تکلیف](lab/README.md) + +در این آزمایشگاه، وظیفه شما طبقه‌بندی نژادهای مختلف گربه و سگ است. این تصاویر پیچیده‌تر از مجموعه داده MNIST هستند، ابعاد بالاتری دارند و بیش از ۱۰ کلاس وجود دارد. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/fa/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..72dbd0a7 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# شبکه‌های عصبی پیچشی + +قبلاً دیده‌ایم که شبکه‌های عصبی در پردازش تصاویر بسیار خوب عمل می‌کنند، حتی یک پرسپترون تک‌لایه قادر است اعداد دست‌نویس مجموعه داده MNIST را با دقت قابل قبولی تشخیص دهد. با این حال، مجموعه داده MNIST بسیار خاص است و همه اعداد در مرکز تصویر قرار دارند، که این کار را ساده‌تر می‌کند. + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +در زندگی واقعی، ما می‌خواهیم بتوانیم اشیاء را در یک تصویر تشخیص دهیم، بدون توجه به مکان دقیق آن‌ها در تصویر. بینایی کامپیوتری با طبقه‌بندی عمومی متفاوت است، زیرا وقتی سعی می‌کنیم یک شیء خاص را در تصویر پیدا کنیم، تصویر را اسکن می‌کنیم و به دنبال **الگوهای** خاص و ترکیب‌های آن‌ها می‌گردیم. برای مثال، وقتی به دنبال یک گربه هستیم، ممکن است ابتدا به دنبال خطوط افقی بگردیم که می‌توانند سبیل‌ها را تشکیل دهند، و سپس ترکیب خاصی از سبیل‌ها می‌تواند به ما بگوید که این واقعاً تصویر یک گربه است. موقعیت نسبی و حضور الگوهای خاص مهم است، نه موقعیت دقیق آن‌ها در تصویر. + +برای استخراج الگوها، از مفهوم **فیلترهای پیچشی** استفاده خواهیم کرد. همان‌طور که می‌دانید، یک تصویر به صورت یک ماتریس دو‌بعدی یا یک تنسور سه‌بعدی با عمق رنگ نمایش داده می‌شود. اعمال یک فیلتر به این معناست که یک ماتریس کوچک به نام **هسته فیلتر** را می‌گیریم و برای هر پیکسل در تصویر اصلی میانگین وزنی با نقاط همسایه را محاسبه می‌کنیم. می‌توان این فرآیند را به صورت یک پنجره کوچک تصور کرد که روی کل تصویر حرکت می‌کند و همه پیکسل‌ها را بر اساس وزن‌های موجود در ماتریس هسته فیلتر میانگین‌گیری می‌کند. + +![فیلتر لبه عمودی](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![فیلتر لبه افقی](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) +----|---- + +> تصویر از دیمیتری سوشنیکوف + +برای مثال، اگر فیلترهای لبه عمودی و افقی ۳x۳ را به اعداد MNIST اعمال کنیم، می‌توانیم نقاط برجسته (مانند مقادیر بالا) را در جایی که لبه‌های عمودی و افقی در تصویر اصلی وجود دارند، دریافت کنیم. بنابراین این دو فیلتر می‌توانند برای "جستجوی" لبه‌ها استفاده شوند. به همین ترتیب، می‌توانیم فیلترهای مختلفی طراحی کنیم تا به دنبال سایر الگوهای سطح پایین بگردیم: + +> تصویر از [بانک فیلتر Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +با این حال، در حالی که می‌توانیم فیلترها را برای استخراج برخی الگوها به صورت دستی طراحی کنیم، می‌توانیم شبکه را نیز به گونه‌ای طراحی کنیم که الگوها را به صورت خودکار یاد بگیرد. این یکی از ایده‌های اصلی پشت شبکه‌های عصبی پیچشی است. + +## ایده‌های اصلی پشت شبکه‌های عصبی پیچشی + +نحوه عملکرد شبکه‌های عصبی پیچشی بر اساس ایده‌های مهم زیر است: + +* فیلترهای پیچشی می‌توانند الگوها را استخراج کنند. +* می‌توانیم شبکه را به گونه‌ای طراحی کنیم که فیلترها به صورت خودکار آموزش ببینند. +* می‌توانیم از همین روش برای یافتن الگوها در ویژگی‌های سطح بالا استفاده کنیم، نه فقط در تصویر اصلی. بنابراین استخراج ویژگی‌های CNN بر روی سلسله مراتبی از ویژگی‌ها کار می‌کند، از ترکیب‌های پیکسلی سطح پایین تا ترکیب‌های سطح بالاتر از بخش‌های تصویر. + +![استخراج ویژگی سلسله‌مراتبی](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) + +> تصویر از [مقاله‌ای توسط Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d)، بر اساس [تحقیقات آن‌ها](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ تمرین‌ها: شبکه‌های عصبی پیچشی + +بیایید به بررسی نحوه عملکرد شبکه‌های عصبی پیچشی و چگونگی دستیابی به فیلترهای قابل آموزش ادامه دهیم، با کار کردن بر روی نوت‌بوک‌های مربوطه: + +* [شبکه‌های عصبی پیچشی - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [شبکه‌های عصبی پیچشی - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## معماری هرمی + +بیشتر شبکه‌های عصبی پیچشی که برای پردازش تصویر استفاده می‌شوند از معماری موسوم به هرمی پیروی می‌کنند. اولین لایه پیچشی که به تصاویر اصلی اعمال می‌شود معمولاً تعداد نسبتاً کمی فیلتر (۸-۱۶) دارد، که به ترکیب‌های مختلف پیکسلی مانند خطوط افقی/عمودی مربوط می‌شود. در سطح بعدی، ابعاد فضایی شبکه کاهش می‌یابد و تعداد فیلترها افزایش می‌یابد، که به ترکیب‌های بیشتری از ویژگی‌های ساده مربوط می‌شود. با هر لایه، همان‌طور که به سمت طبقه‌بند نهایی حرکت می‌کنیم، ابعاد فضایی تصویر کاهش می‌یابد و تعداد فیلترها افزایش می‌یابد. + +به عنوان مثال، بیایید به معماری VGG-16 نگاه کنیم، شبکه‌ای که در سال ۲۰۱۴ به دقت ۹۲.۷٪ در طبقه‌بندی پنج‌تایی ImageNet دست یافت: + +![لایه‌های ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) + +![هرم ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) + +> تصویر از [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## معروف‌ترین معماری‌های شبکه‌های عصبی پیچشی + +[مطالعه خود درباره معروف‌ترین معماری‌های شبکه‌های عصبی پیچشی را ادامه دهید](CNN_Architectures.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/fa/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..9cc44218 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# دسته‌بندی چهره حیوانات خانگی + +تکلیف آزمایشگاهی از [برنامه درسی AI برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +تصور کنید که باید یک برنامه برای پرورشگاه حیوانات خانگی طراحی کنید تا همه حیوانات را دسته‌بندی کند. یکی از ویژگی‌های عالی چنین برنامه‌ای می‌تواند شناسایی خودکار نژاد حیوان از یک عکس باشد. این کار با استفاده از شبکه‌های عصبی به‌خوبی قابل انجام است. + +شما باید یک شبکه عصبی کانولوشن را آموزش دهید تا نژادهای مختلف گربه‌ها و سگ‌ها را با استفاده از مجموعه داده **چهره حیوانات خانگی** دسته‌بندی کند. + +## مجموعه داده + +ما از مجموعه داده **چهره حیوانات خانگی** استفاده خواهیم کرد که از مجموعه داده حیوانات خانگی [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) استخراج شده است. این مجموعه شامل ۳۵ نژاد مختلف از سگ‌ها و گربه‌ها است. + +![مجموعه داده‌ای که با آن کار خواهیم کرد](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) + +برای دانلود مجموعه داده، از این قطعه کد استفاده کنید: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## شروع دفترچه یادداشت + +آزمایشگاه را با باز کردن [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) شروع کنید. + +## نتیجه‌گیری + +شما یک مسئله نسبتاً پیچیده دسته‌بندی تصاویر را از ابتدا حل کردید! تعداد کلاس‌ها زیاد بود، و شما همچنان توانستید به دقت قابل قبولی دست پیدا کنید! همچنین منطقی است که دقت top-k را اندازه‌گیری کنید، زیرا ممکن است برخی از کلاس‌ها که حتی برای انسان‌ها به‌وضوح متفاوت نیستند، به‌راحتی با یکدیگر اشتباه گرفته شوند. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..fecdab56 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# شبکه‌های از پیش آموزش‌دیده و یادگیری انتقالی + +آموزش شبکه‌های عصبی پیچشی (CNN) می‌تواند زمان زیادی ببرد و نیازمند داده‌های زیادی باشد. با این حال، بخش عمده‌ای از زمان صرف یادگیری بهترین فیلترهای سطح پایین می‌شود که شبکه می‌تواند برای استخراج الگوها از تصاویر استفاده کند. یک سؤال طبیعی مطرح می‌شود - آیا می‌توانیم از یک شبکه عصبی که روی یک مجموعه داده آموزش دیده است استفاده کنیم و آن را برای طبقه‌بندی تصاویر مختلف بدون نیاز به فرآیند کامل آموزش تطبیق دهیم؟ + +## [پیش‌زمینه درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +این روش **یادگیری انتقالی** نامیده می‌شود، زیرا ما بخشی از دانش یک مدل شبکه عصبی را به مدل دیگری منتقل می‌کنیم. در یادگیری انتقالی، معمولاً با یک مدل از پیش آموزش‌دیده شروع می‌کنیم که روی یک مجموعه داده بزرگ تصویری مانند **ImageNet** آموزش دیده است. این مدل‌ها می‌توانند ویژگی‌های مختلفی را از تصاویر عمومی استخراج کنند و در بسیاری از موارد، تنها با ساخت یک طبقه‌بند بر روی این ویژگی‌های استخراج‌شده می‌توان به نتایج خوبی دست یافت. + +> ✅ یادگیری انتقالی اصطلاحی است که در سایر حوزه‌های علمی مانند آموزش نیز یافت می‌شود. این اصطلاح به فرآیند انتقال دانش از یک حوزه و اعمال آن در حوزه دیگر اشاره دارد. + +## مدل‌های از پیش آموزش‌دیده به عنوان استخراج‌کننده ویژگی‌ها + +شبکه‌های پیچشی که در بخش قبلی درباره آن‌ها صحبت کردیم شامل تعدادی لایه بودند که هر کدام وظیفه استخراج ویژگی‌هایی از تصویر را داشتند، از ترکیب‌های پیکسلی سطح پایین (مانند خطوط افقی/عمودی یا ضربه‌ها) تا ترکیب‌های سطح بالاتر ویژگی‌ها که به چیزهایی مانند چشم یا شعله مربوط می‌شوند. اگر یک CNN را روی مجموعه داده‌ای به اندازه کافی بزرگ و متنوع آموزش دهیم، شبکه باید بتواند این ویژگی‌های عمومی را استخراج کند. + +هم Keras و هم PyTorch شامل توابعی هستند که به راحتی وزن‌های شبکه عصبی از پیش آموزش‌دیده را برای برخی معماری‌های رایج بارگذاری می‌کنند، که بیشتر آن‌ها روی تصاویر ImageNet آموزش دیده‌اند. رایج‌ترین مدل‌ها در صفحه [معماری‌های CNN](../07-ConvNets/CNN_Architectures.md) از درس قبلی توضیح داده شده‌اند. به طور خاص، ممکن است بخواهید یکی از موارد زیر را در نظر بگیرید: + +* **VGG-16/VGG-19** که مدل‌های نسبتاً ساده‌ای هستند و همچنان دقت خوبی ارائه می‌دهند. استفاده از VGG به عنوان اولین تلاش برای بررسی عملکرد یادگیری انتقالی انتخاب خوبی است. +* **ResNet** خانواده‌ای از مدل‌ها است که توسط Microsoft Research در سال ۲۰۱۵ پیشنهاد شده‌اند. این مدل‌ها لایه‌های بیشتری دارند و بنابراین منابع بیشتری مصرف می‌کنند. +* **MobileNet** خانواده‌ای از مدل‌ها با اندازه کاهش‌یافته هستند که برای دستگاه‌های موبایل مناسب‌اند. از آن‌ها استفاده کنید اگر منابع محدودی دارید و می‌توانید کمی دقت را قربانی کنید. + +در اینجا نمونه‌ای از ویژگی‌هایی که توسط شبکه VGG-16 از تصویر یک گربه استخراج شده است آورده شده است: + +![ویژگی‌های استخراج‌شده توسط VGG-16](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) + +## مجموعه داده گربه‌ها و سگ‌ها + +در این مثال، از مجموعه داده [گربه‌ها و سگ‌ها](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) استفاده خواهیم کرد که بسیار نزدیک به یک سناریوی واقعی طبقه‌بندی تصویر است. + +## ✍️ تمرین: یادگیری انتقالی + +بیایید یادگیری انتقالی را در عمل در نوت‌بوک‌های مربوطه مشاهده کنیم: + +* [یادگیری انتقالی - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [یادگیری انتقالی - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## تجسم گربه ایده‌آل + +شبکه عصبی از پیش آموزش‌دیده شامل الگوهای مختلفی در "مغز" خود است، از جمله مفاهیمی از **گربه ایده‌آل** (و همچنین سگ ایده‌آل، گورخر ایده‌آل و غیره). جالب خواهد بود که به نوعی **این تصویر را تجسم کنیم**. با این حال، این کار ساده نیست، زیرا الگوها در سراسر وزن‌های شبکه پراکنده شده‌اند و همچنین در یک ساختار سلسله‌مراتبی سازماندهی شده‌اند. + +یک رویکردی که می‌توانیم اتخاذ کنیم این است که با یک تصویر تصادفی شروع کنیم و سپس از تکنیک **بهینه‌سازی نزول گرادیان** استفاده کنیم تا آن تصویر را به گونه‌ای تنظیم کنیم که شبکه شروع به فکر کردن کند که این تصویر یک گربه است. + +![حلقه بهینه‌سازی تصویر](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) + +با این حال، اگر این کار را انجام دهیم، چیزی بسیار شبیه به نویز تصادفی دریافت خواهیم کرد. این به این دلیل است که *راه‌های زیادی وجود دارد که شبکه فکر کند تصویر ورودی یک گربه است*، از جمله برخی که از نظر بصری منطقی نیستند. در حالی که این تصاویر شامل بسیاری از الگوهای معمولی برای یک گربه هستند، هیچ چیزی آن‌ها را محدود نمی‌کند که از نظر بصری متمایز باشند. + +برای بهبود نتیجه، می‌توانیم یک عبارت دیگر به تابع زیان اضافه کنیم که **زیان تغییرات** نامیده می‌شود. این معیار نشان می‌دهد که پیکسل‌های مجاور تصویر چقدر مشابه هستند. به حداقل رساندن زیان تغییرات باعث می‌شود تصویر صاف‌تر شود و نویز را از بین ببرد - بنابراین الگوهای بصری جذاب‌تری را آشکار می‌کند. در اینجا نمونه‌ای از چنین تصاویر "ایده‌آل" آورده شده است که با احتمال بالا به عنوان گربه و گورخر طبقه‌بندی شده‌اند: + +![گربه ایده‌آل](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![گورخر ایده‌آل](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) +-----|----- + *گربه ایده‌آل* | *گورخر ایده‌آل* + +رویکرد مشابهی می‌تواند برای انجام **حملات خصمانه** روی یک شبکه عصبی استفاده شود. فرض کنید می‌خواهیم یک شبکه عصبی را فریب دهیم و یک سگ را شبیه به گربه کنیم. اگر تصویر سگ را که توسط شبکه به عنوان سگ شناخته می‌شود بگیریم، می‌توانیم آن را کمی تنظیم کنیم با استفاده از بهینه‌سازی نزول گرادیان، تا زمانی که شبکه شروع به طبقه‌بندی آن به عنوان گربه کند: + +![تصویر سگ](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![تصویر سگی که به عنوان گربه طبقه‌بندی شده است](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) +-----|----- +*تصویر اصلی سگ* | *تصویر سگی که به عنوان گربه طبقه‌بندی شده است* + +کد برای بازتولید نتایج بالا را در نوت‌بوک زیر مشاهده کنید: + +* [گربه ایده‌آل و خصمانه - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## نتیجه‌گیری + +با استفاده از یادگیری انتقالی، می‌توانید به سرعت یک طبقه‌بند برای یک وظیفه طبقه‌بندی اشیاء سفارشی ایجاد کنید و به دقت بالایی دست یابید. می‌بینید که وظایف پیچیده‌تر که اکنون در حال حل آن‌ها هستیم نیازمند قدرت محاسباتی بالاتری هستند و نمی‌توانند به راحتی روی CPU حل شوند. در واحد بعدی، سعی خواهیم کرد از یک پیاده‌سازی سبک‌تر برای آموزش همان مدل با منابع محاسباتی کمتر استفاده کنیم، که منجر به دقت کمی پایین‌تر می‌شود. + +## 🚀 چالش + +در نوت‌بوک‌های همراه، یادداشت‌هایی در پایین وجود دارد که توضیح می‌دهد چگونه دانش انتقالی با داده‌های آموزشی نسبتاً مشابه بهتر عمل می‌کند (شاید نوع جدیدی از حیوان). با تصاویر کاملاً جدید آزمایش کنید تا ببینید مدل‌های دانش انتقالی شما چقدر خوب یا ضعیف عمل می‌کنند. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## مرور و مطالعه خودآموز + +از طریق [TrainingTricks.md](TrainingTricks.md) مطالعه کنید تا دانش خود را درباره روش‌های دیگر آموزش مدل‌ها عمیق‌تر کنید. + +## [تکلیف](lab/README.md) + +در این آزمایش، از مجموعه داده واقعی [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) حیوانات خانگی با ۳۵ نژاد گربه و سگ استفاده خواهیم کرد و یک طبقه‌بند یادگیری انتقالی خواهیم ساخت. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..77b35b82 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# ترفندهای آموزش یادگیری عمیق + +با عمیق‌تر شدن شبکه‌های عصبی، فرآیند آموزش آن‌ها چالش‌برانگیزتر می‌شود. یکی از مشکلات اصلی، مسئله‌ی [گرادیان‌های ناپدیدشونده](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) یا [گرادیان‌های انفجاری](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) است. [این مطلب](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) مقدمه‌ی خوبی برای این مشکلات ارائه می‌دهد. + +برای کارآمدتر کردن آموزش شبکه‌های عمیق، چند تکنیک وجود دارد که می‌توان از آن‌ها استفاده کرد. + +## نگه داشتن مقادیر در بازه‌ی معقول + +برای پایدارتر کردن محاسبات عددی، باید مطمئن شویم که تمام مقادیر درون شبکه‌ی عصبی ما در مقیاس معقولی قرار دارند، معمولاً [-1..1] یا [0..1]. این یک الزام خیلی سخت نیست، اما ماهیت محاسبات اعداد اعشاری به گونه‌ای است که مقادیر با مرتبه‌های بزرگی متفاوت نمی‌توانند به‌طور دقیق با هم ترکیب شوند. به عنوان مثال، اگر 10-10 و 1010 را با هم جمع کنیم، احتمالاً نتیجه 1010 خواهد بود، زیرا مقدار کوچکتر به همان مرتبه‌ی مقدار بزرگتر "تبدیل" می‌شود و بنابراین مانتیسا از دست می‌رود. + +بیشتر توابع فعال‌سازی در بازه‌ی [-1..1] غیرخطی هستند، بنابراین منطقی است که تمام داده‌های ورودی را به بازه‌ی [-1..1] یا [0..1] مقیاس‌بندی کنیم. + +## مقداردهی اولیه‌ی وزن‌ها + +به‌طور ایده‌آل، می‌خواهیم مقادیر پس از عبور از لایه‌های شبکه در همان بازه باقی بمانند. بنابراین، مهم است که وزن‌ها را به گونه‌ای مقداردهی کنیم که توزیع مقادیر حفظ شود. + +توزیع نرمال **N(0,1)** ایده‌ی خوبی نیست، زیرا اگر *n* ورودی داشته باشیم، انحراف معیار خروجی *n* خواهد بود و مقادیر احتمالاً از بازه‌ی [0..1] خارج می‌شوند. + +مقداردهی‌های اولیه‌ی زیر اغلب استفاده می‌شوند: + +- توزیع یکنواخت -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** تضمین می‌کند که برای ورودی‌هایی با میانگین صفر و انحراف معیار 1، همان میانگین/انحراف معیار باقی می‌ماند. +- **N(0,√2/(n_in+n_out))** -- به اصطلاح **مقداردهی اولیه‌ی Xavier** (`glorot`)، که به حفظ سیگنال‌ها در بازه در طول پیش‌رو و پس‌رو کمک می‌کند. + +## نرمال‌سازی دسته‌ای + +حتی با مقداردهی اولیه‌ی مناسب وزن‌ها، وزن‌ها می‌توانند در طول آموزش به‌طور دلخواه بزرگ یا کوچک شوند و سیگنال‌ها را از بازه‌ی مناسب خارج کنند. می‌توانیم سیگنال‌ها را با استفاده از یکی از تکنیک‌های **نرمال‌سازی** به بازه‌ی مناسب بازگردانیم. در حالی که چندین تکنیک وجود دارد (نرمال‌سازی وزن، نرمال‌سازی لایه‌ای)، نرمال‌سازی دسته‌ای بیشتر مورد استفاده قرار می‌گیرد. + +ایده‌ی **نرمال‌سازی دسته‌ای** این است که تمام مقادیر در سراسر مینی‌بچ را در نظر بگیریم و نرمال‌سازی (یعنی کم کردن میانگین و تقسیم بر انحراف معیار) را بر اساس آن مقادیر انجام دهیم. این تکنیک به‌صورت یک لایه‌ی شبکه پیاده‌سازی می‌شود که این نرمال‌سازی را پس از اعمال وزن‌ها و قبل از تابع فعال‌سازی انجام می‌دهد. نتیجه‌ی آن، دقت نهایی بالاتر و آموزش سریع‌تر است. + +[مقاله‌ی اصلی](https://arxiv.org/pdf/1502.03167.pdf) درباره‌ی نرمال‌سازی دسته‌ای، [توضیح در ویکی‌پدیا](https://en.wikipedia.org/wiki/Batch_normalization)، و [یک پست وبلاگی مقدماتی خوب](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (و یکی [به زبان روسی](https://habrahabr.ru/post/309302/)) را می‌توانید مطالعه کنید. + +## دراپ‌آوت + +**دراپ‌آوت** یک تکنیک جالب است که درصد مشخصی از نورون‌های تصادفی را در طول آموزش حذف می‌کند. این تکنیک به‌صورت یک لایه با یک پارامتر (درصد نورون‌هایی که باید حذف شوند، معمولاً 10%-50%) پیاده‌سازی می‌شود و در طول آموزش، عناصر تصادفی بردار ورودی را صفر می‌کند، قبل از اینکه آن را به لایه‌ی بعدی ارسال کند. + +اگرچه این ایده ممکن است عجیب به نظر برسد، می‌توانید اثر دراپ‌آوت را در آموزش یک طبقه‌بند ارقام MNIST در دفترچه‌ی [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) مشاهده کنید. این تکنیک سرعت آموزش را افزایش می‌دهد و به ما اجازه می‌دهد در تعداد کمتری از دوره‌های آموزشی به دقت بالاتری دست یابیم. + +این اثر را می‌توان به چند روش توضیح داد: + +- می‌توان آن را به‌عنوان یک عامل شوک تصادفی به مدل در نظر گرفت که بهینه‌سازی را از حداقل محلی خارج می‌کند. +- می‌توان آن را به‌عنوان *میانگین‌گیری ضمنی مدل* در نظر گرفت، زیرا می‌توان گفت که در طول دراپ‌آوت، ما در حال آموزش مدل‌های کمی متفاوت هستیم. + +> *برخی افراد می‌گویند وقتی یک فرد مست سعی می‌کند چیزی یاد بگیرد، صبح روز بعد بهتر آن را به خاطر می‌آورد، در مقایسه با یک فرد هوشیار، زیرا مغزی با برخی نورون‌های معیوب سعی می‌کند بهتر خود را برای درک مفهوم تطبیق دهد. ما هرگز خودمان این موضوع را آزمایش نکرده‌ایم که آیا درست است یا نه.* + +## جلوگیری از بیش‌برازش + +یکی از جنبه‌های بسیار مهم یادگیری عمیق، توانایی جلوگیری از [بیش‌برازش](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) است. اگرچه ممکن است استفاده از یک مدل شبکه‌ی عصبی بسیار قدرتمند وسوسه‌انگیز باشد، اما همیشه باید تعداد پارامترهای مدل را با تعداد نمونه‌های آموزشی متعادل کنیم. + +> مطمئن شوید که مفهوم [بیش‌برازش](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) که قبلاً معرفی کرده‌ایم را درک کرده‌اید! + +چندین روش برای جلوگیری از بیش‌برازش وجود دارد: + +- توقف زودهنگام -- به‌طور مداوم خطا را روی مجموعه‌ی اعتبارسنجی نظارت کنید و زمانی که خطای اعتبارسنجی شروع به افزایش کرد، آموزش را متوقف کنید. +- کاهش وزن صریح / منظم‌سازی -- اضافه کردن یک جریمه‌ی اضافی به تابع خطا برای مقادیر مطلق بالای وزن‌ها، که از نتایج بسیار ناپایدار مدل جلوگیری می‌کند. +- میانگین‌گیری مدل -- آموزش چندین مدل و سپس میانگین‌گیری نتیجه. این کار به حداقل رساندن واریانس کمک می‌کند. +- دراپ‌آوت (میانگین‌گیری ضمنی مدل) + +## بهینه‌سازها / الگوریتم‌های آموزشی + +یکی دیگر از جنبه‌های مهم آموزش، انتخاب الگوریتم آموزشی مناسب است. اگرچه **گرادیان نزولی کلاسیک** یک انتخاب منطقی است، اما گاهی اوقات ممکن است خیلی کند باشد یا مشکلات دیگری ایجاد کند. + +در یادگیری عمیق، از **گرادیان نزولی تصادفی** (SGD) استفاده می‌کنیم، که یک گرادیان نزولی است که روی مینی‌بچ‌های تصادفی انتخاب‌شده از مجموعه‌ی آموزشی اعمال می‌شود. وزن‌ها با استفاده از این فرمول تنظیم می‌شوند: + +wt+1 = wt - η∇ℒ + +### مومنتوم + +در **SGD مومنتوم**، بخشی از گرادیان مراحل قبلی را نگه می‌داریم. این شبیه به زمانی است که با اینرسی در حال حرکت هستیم و ضربه‌ای در جهت دیگری دریافت می‌کنیم؛ مسیر ما بلافاصله تغییر نمی‌کند، بلکه بخشی از حرکت اصلی را حفظ می‌کند. در اینجا یک بردار دیگر v را برای نشان دادن *سرعت* معرفی می‌کنیم: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 + +در اینجا پارامتر γ نشان می‌دهد که تا چه حد اینرسی را در نظر می‌گیریم: γ=0 معادل با SGD کلاسیک است؛ γ=1 یک معادله‌ی حرکت خالص است. + +### Adam، Adagrad و غیره + +از آنجا که در هر لایه سیگنال‌ها را در یک ماتریس Wi ضرب می‌کنیم، بسته به ||Wi||، گرادیان ممکن است یا کاهش یابد و به صفر نزدیک شود، یا به‌طور نامحدود افزایش یابد. این جوهره‌ی مشکل گرادیان‌های انفجاری/ناپدیدشونده است. + +یکی از راه‌حل‌های این مشکل، استفاده از جهت گرادیان در معادله و نادیده گرفتن مقدار مطلق آن است، یعنی: + +wt+1 = wt - η(∇ℒ/||∇ℒ||)، که در آن ||∇ℒ|| = √∑(∇ℒ)2 + +این الگوریتم **Adagrad** نامیده می‌شود. الگوریتم‌های دیگری که از همین ایده استفاده می‌کنند: **RMSProp**، **Adam** + +> **Adam** به‌عنوان یک الگوریتم بسیار کارآمد برای بسیاری از کاربردها در نظر گرفته می‌شود، بنابراین اگر مطمئن نیستید کدام را استفاده کنید - از Adam استفاده کنید. + +### برش گرادیان + +برش گرادیان گسترش ایده‌ی بالا است. وقتی ||∇ℒ|| ≤ θ، گرادیان اصلی را در بهینه‌سازی وزن در نظر می‌گیریم، و وقتی ||∇ℒ|| > θ - گرادیان را بر نُرم آن تقسیم می‌کنیم. در اینجا θ یک پارامتر است، در بیشتر موارد می‌توانیم θ=1 یا θ=10 را انتخاب کنیم. + +### کاهش نرخ یادگیری + +موفقیت آموزش اغلب به پارامتر نرخ یادگیری η بستگی دارد. منطقی است که فرض کنیم مقادیر بزرگتر η منجر به آموزش سریع‌تر می‌شوند، که چیزی است که معمولاً در ابتدای آموزش می‌خواهیم، و سپس مقادیر کوچکتر η به ما اجازه می‌دهند شبکه را به‌طور دقیق تنظیم کنیم. بنابراین، در بیشتر موارد می‌خواهیم η را در طول فرآیند آموزش کاهش دهیم. + +این کار را می‌توان با ضرب کردن η در یک عدد (مثلاً 0.98) پس از هر دوره‌ی آموزشی انجام داد، یا با استفاده از یک **برنامه‌ی نرخ یادگیری** پیچیده‌تر. + +## معماری‌های مختلف شبکه + +انتخاب معماری مناسب شبکه برای مسئله‌ی شما می‌تواند دشوار باشد. معمولاً، معماری‌ای را انتخاب می‌کنیم که برای وظیفه‌ی خاص ما (یا مشابه آن) اثبات شده باشد. [این مرور خوب](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) درباره‌ی معماری‌های شبکه‌های عصبی برای بینایی کامپیوتر را ببینید. + +> مهم است که معماری‌ای را انتخاب کنید که به اندازه‌ی کافی قدرتمند باشد برای تعداد نمونه‌های آموزشی که داریم. انتخاب مدل بیش از حد قدرتمند می‌تواند منجر به [بیش‌برازش](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) شود. + +راه دیگر خوب این است که از معماری‌ای استفاده کنید که به‌طور خودکار با پیچیدگی مورد نیاز تنظیم شود. تا حدی، معماری **ResNet** و **Inception** خودتنظیم هستند. [اطلاعات بیشتر درباره‌ی معماری‌های بینایی کامپیوتر](../07-ConvNets/CNN_Architectures.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..dcda777c --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# طبقه‌بندی حیوانات خانگی آکسفورد با استفاده از یادگیری انتقالی + +تکلیف آزمایشگاهی از [برنامه درسی هوش مصنوعی برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +تصور کنید که باید یک برنامه برای مهدکودک حیوانات خانگی طراحی کنید تا تمام حیوانات را دسته‌بندی کند. یکی از ویژگی‌های عالی چنین برنامه‌ای می‌تواند شناسایی خودکار نژاد حیوان از روی یک عکس باشد. در این تکلیف، از یادگیری انتقالی برای طبقه‌بندی تصاویر واقعی حیوانات خانگی از مجموعه داده [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) استفاده خواهیم کرد. + +## مجموعه داده + +ما از مجموعه داده اصلی [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) استفاده خواهیم کرد که شامل ۳۵ نژاد مختلف از سگ‌ها و گربه‌ها است. + +برای دانلود مجموعه داده، از این قطعه کد استفاده کنید: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## شروع نوت‌بوک + +برای شروع آزمایشگاه، [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) را باز کنید. + +## نکته کلیدی + +یادگیری انتقالی و شبکه‌های از پیش آموزش‌دیده به ما این امکان را می‌دهند که مشکلات واقعی طبقه‌بندی تصاویر را نسبتاً به‌راحتی حل کنیم. با این حال، شبکه‌های از پیش آموزش‌دیده روی تصاویری از نوع مشابه عملکرد خوبی دارند و اگر شروع به طبقه‌بندی تصاویر بسیار متفاوت (مثلاً تصاویر پزشکی) کنیم، احتمالاً نتایج بسیار ضعیف‌تری خواهیم گرفت. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/fa/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..040ba4b5 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# خودرمزگذارها + +هنگام آموزش شبکه‌های عصبی کانولوشنی (CNN)، یکی از مشکلات این است که به داده‌های برچسب‌دار زیادی نیاز داریم. در مورد دسته‌بندی تصاویر، باید تصاویر را به کلاس‌های مختلف تقسیم کنیم که این کار به صورت دستی انجام می‌شود. + +## [پیش‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +با این حال، ممکن است بخواهیم از داده‌های خام (بدون برچسب) برای آموزش استخراج‌کننده‌های ویژگی CNN استفاده کنیم، که به آن **یادگیری خودنظارتی** گفته می‌شود. به جای برچسب‌ها، از تصاویر آموزشی به عنوان ورودی و خروجی شبکه استفاده خواهیم کرد. ایده اصلی **خودرمزگذار** این است که یک **شبکه رمزگذار** داشته باشیم که تصویر ورودی را به یک **فضای نهان** تبدیل کند (معمولاً فقط یک بردار با اندازه کوچکتر است)، سپس یک **شبکه رمزگشا** که هدف آن بازسازی تصویر اصلی باشد. + +> ✅ یک [خودرمزگذار](https://wikipedia.org/wiki/Autoencoder) نوعی شبکه عصبی مصنوعی است که برای یادگیری کدگذاری‌های کارآمد از داده‌های بدون برچسب استفاده می‌شود. + +از آنجا که ما خودرمزگذار را برای گرفتن اطلاعات بیشتر از تصویر اصلی به منظور بازسازی دقیق آموزش می‌دهیم، شبکه تلاش می‌کند بهترین **تعبیر** از تصاویر ورودی را برای درک معنا پیدا کند. + +![نمودار خودرمزگذار](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) + +> تصویر از [وبلاگ Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## سناریوهای استفاده از خودرمزگذارها + +در حالی که بازسازی تصاویر اصلی به خودی خود ممکن است مفید به نظر نرسد، چند سناریو وجود دارد که خودرمزگذارها به طور خاص مفید هستند: + +* **کاهش ابعاد تصاویر برای مصورسازی** یا **آموزش تعبیه‌های تصویری**. معمولاً خودرمزگذارها نتایج بهتری نسبت به PCA ارائه می‌دهند، زیرا ماهیت فضایی تصاویر و ویژگی‌های سلسله‌مراتبی را در نظر می‌گیرند. +* **حذف نویز**، یعنی حذف نویز از تصویر. از آنجا که نویز اطلاعات بی‌فایده زیادی را حمل می‌کند، خودرمزگذار نمی‌تواند همه آن را در فضای نهان نسبتاً کوچک جای دهد و بنابراین فقط بخش مهم تصویر را ثبت می‌کند. هنگام آموزش حذف‌کننده‌های نویز، با تصاویر اصلی شروع می‌کنیم و از تصاویر با نویز مصنوعی اضافه شده به عنوان ورودی برای خودرمزگذار استفاده می‌کنیم. +* **افزایش وضوح تصویر**، افزایش وضوح تصویر. با تصاویر با وضوح بالا شروع می‌کنیم و از تصویر با وضوح پایین‌تر به عنوان ورودی خودرمزگذار استفاده می‌کنیم. +* **مدل‌های مولد**. پس از آموزش خودرمزگذار، بخش رمزگشا می‌تواند برای ایجاد اشیاء جدید از بردارهای نهان تصادفی استفاده شود. + +## خودرمزگذارهای تنوعی (VAE) + +خودرمزگذارهای سنتی به نوعی ابعاد داده‌های ورودی را کاهش می‌دهند و ویژگی‌های مهم تصاویر ورودی را شناسایی می‌کنند. با این حال، بردارهای نهان اغلب معنای خاصی ندارند. به عبارت دیگر، اگر مجموعه داده MNIST را به عنوان مثال در نظر بگیریم، شناسایی اینکه کدام ارقام به بردارهای نهان مختلف مربوط می‌شوند کار آسانی نیست، زیرا بردارهای نهان نزدیک لزوماً به همان ارقام مربوط نمی‌شوند. + +از سوی دیگر، برای آموزش مدل‌های *مولد* بهتر است درک بیشتری از فضای نهان داشته باشیم. این ایده ما را به **خودرمزگذار تنوعی** (VAE) هدایت می‌کند. + +VAE نوعی خودرمزگذار است که یاد می‌گیرد *توزیع آماری* پارامترهای نهان، به اصطلاح **توزیع نهان** را پیش‌بینی کند. به عنوان مثال، ممکن است بخواهیم بردارهای نهان به طور نرمال با میانگین zmean و انحراف معیار zsigma توزیع شوند (هر دو میانگین و انحراف معیار بردارهایی با ابعاد مشخص هستند). رمزگذار در VAE یاد می‌گیرد این پارامترها را پیش‌بینی کند و سپس رمزگشا یک بردار تصادفی از این توزیع را برای بازسازی شیء می‌گیرد. + +به طور خلاصه: + +* از بردار ورودی، `z_mean` و `z_log_sigma` را پیش‌بینی می‌کنیم (به جای پیش‌بینی انحراف معیار، لگاریتم آن را پیش‌بینی می‌کنیم) +* یک بردار `sample` از توزیع N(zmean,exp(zlog\_sigma)) نمونه‌برداری می‌کنیم +* رمزگشا تلاش می‌کند تصویر اصلی را با استفاده از `sample` به عنوان بردار ورودی رمزگشایی کند + + + +> تصویر از [این پست وبلاگ](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) توسط Isaak Dykeman + +خودرمزگذارهای تنوعی از یک تابع هزینه پیچیده استفاده می‌کنند که شامل دو بخش است: + +* **هزینه بازسازی**، تابع هزینه‌ای که نشان می‌دهد تصویر بازسازی شده چقدر به هدف نزدیک است (می‌تواند خطای میانگین مربعات یا MSE باشد). این همان تابع هزینه‌ای است که در خودرمزگذارهای معمولی استفاده می‌شود. +* **هزینه KL**، که تضمین می‌کند توزیع متغیرهای نهان به توزیع نرمال نزدیک بماند. این هزینه بر اساس مفهوم [واگرایی کولبک-لیبلر](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) است - معیاری برای تخمین شباهت دو توزیع آماری. + +یکی از مزایای مهم VAE این است که به ما امکان می‌دهد تصاویر جدید را نسبتاً آسان تولید کنیم، زیرا می‌دانیم از کدام توزیع باید بردارهای نهان نمونه‌برداری کنیم. به عنوان مثال، اگر VAE را با بردار نهان دو‌بعدی روی MNIST آموزش دهیم، می‌توانیم سپس اجزای بردار نهان را تغییر دهیم تا ارقام مختلفی به دست آوریم: + +vaemnist + +> تصویر توسط [Dmitry Soshnikov](http://soshnikov.com) + +مشاهده کنید که چگونه تصاویر به یکدیگر تبدیل می‌شوند، زیرا شروع به گرفتن بردارهای نهان از بخش‌های مختلف فضای پارامتر نهان می‌کنیم. همچنین می‌توانیم این فضا را در دو‌بعد مصورسازی کنیم: + +vaemnist cluster + +> تصویر توسط [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ تمرین‌ها: خودرمزگذارها + +اطلاعات بیشتری درباره خودرمزگذارها در این نوت‌بوک‌ها بیاموزید: + +* [خودرمزگذارها در TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [خودرمزگذارها در PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## ویژگی‌های خودرمزگذارها + +* **داده‌محور** - آن‌ها فقط با نوع تصاویری که آموزش دیده‌اند خوب کار می‌کنند. به عنوان مثال، اگر یک شبکه افزایش وضوح تصویر را روی گل‌ها آموزش دهیم، روی پرتره‌ها خوب کار نخواهد کرد. این به این دلیل است که شبکه می‌تواند تصویر با وضوح بالاتر را با گرفتن جزئیات دقیق از ویژگی‌های یادگرفته شده از مجموعه داده آموزشی تولید کند. +* **دارای افت کیفیت** - تصویر بازسازی شده همان تصویر اصلی نیست. ماهیت افت کیفیت توسط *تابع هزینه* استفاده شده در طول آموزش تعریف می‌شود. +* کار با **داده‌های بدون برچسب** + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## نتیجه‌گیری + +در این درس، شما با انواع مختلف خودرمزگذارها که در دسترس دانشمند هوش مصنوعی هستند آشنا شدید. یاد گرفتید چگونه آن‌ها را بسازید و چگونه از آن‌ها برای بازسازی تصاویر استفاده کنید. همچنین با VAE آشنا شدید و یاد گرفتید چگونه از آن برای تولید تصاویر جدید استفاده کنید. + +## 🚀 چالش + +در این درس، شما درباره استفاده از خودرمزگذارها برای تصاویر یاد گرفتید. اما آن‌ها می‌توانند برای موسیقی نیز استفاده شوند! پروژه Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae) از خودرمزگذارها برای یادگیری بازسازی موسیقی استفاده می‌کند. با این کتابخانه [آزمایش کنید](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) تا ببینید چه چیزی می‌توانید خلق کنید. + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## مرور و مطالعه خودآموز + +برای مرجع، اطلاعات بیشتری درباره خودرمزگذارها در این منابع بخوانید: + +* [ساخت خودرمزگذارها در Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [پست وبلاگ در NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [توضیح خودرمزگذارهای تنوعی](https://kvfrans.com/variational-autoencoders-explained/) +* [خودرمزگذارهای تنوعی شرطی](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## تکلیف + +در انتهای [این نوت‌بوک با استفاده از TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb)، یک "وظیفه" پیدا خواهید کرد - از این به عنوان تکلیف خود استفاده کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما هیچ مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/10-GANs/README.md b/translations/fa/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..42d055fb --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# شبکه‌های مولد تخاصمی + +در بخش قبلی، درباره **مدل‌های مولد** یاد گرفتیم: مدل‌هایی که می‌توانند تصاویر جدیدی مشابه تصاویر موجود در مجموعه داده آموزشی تولید کنند. VAE نمونه‌ای خوب از یک مدل مولد بود. + +## [پیش‌از-درس آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +با این حال، اگر بخواهیم چیزی واقعاً معنادار، مانند یک نقاشی با وضوح مناسب، تولید کنیم، با استفاده از VAE متوجه می‌شویم که آموزش به خوبی همگرا نمی‌شود. برای این مورد استفاده، باید درباره معماری دیگری که به طور خاص برای مدل‌های مولد طراحی شده است یاد بگیریم - **شبکه‌های مولد تخاصمی** یا GANs. + +ایده اصلی GAN این است که دو شبکه عصبی داشته باشیم که در برابر یکدیگر آموزش ببینند: + + + +> تصویر از [دمیتری سوشنیکوف](http://soshnikov.com) + +> ✅ کمی واژگان: +> * **مولد (Generator)** شبکه‌ای است که یک بردار تصادفی را می‌گیرد و به عنوان نتیجه تصویر تولید می‌کند. +> * **تمایزدهنده (Discriminator)** شبکه‌ای است که یک تصویر را می‌گیرد و باید تشخیص دهد که آیا این تصویر واقعی است (از مجموعه داده آموزشی) یا توسط مولد تولید شده است. این اساساً یک طبقه‌بند تصویر است. + +### تمایزدهنده + +معماری تمایزدهنده با یک شبکه طبقه‌بندی تصویر معمولی تفاوتی ندارد. در ساده‌ترین حالت، می‌تواند یک طبقه‌بند کاملاً متصل باشد، اما به احتمال زیاد یک [شبکه کانولوشنی](../07-ConvNets/README.md) خواهد بود. + +> ✅ یک GAN مبتنی بر شبکه‌های کانولوشنی به نام [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) شناخته می‌شود. + +یک تمایزدهنده CNN شامل لایه‌های زیر است: چندین کانولوشن+پولینگ (با کاهش اندازه فضایی) و یک یا چند لایه کاملاً متصل برای به دست آوردن "بردار ویژگی"، و در نهایت یک طبقه‌بند دودویی. + +> ✅ "پولینگ" در این زمینه تکنیکی است که اندازه تصویر را کاهش می‌دهد. "لایه‌های پولینگ ابعاد داده را با ترکیب خروجی‌های خوشه‌های نورون در یک لایه به یک نورون در لایه بعدی کاهش می‌دهند." - [منبع](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### مولد + +مولد کمی پیچیده‌تر است. می‌توانید آن را به عنوان یک تمایزدهنده معکوس در نظر بگیرید. از یک بردار نهفته (به جای بردار ویژگی) شروع می‌کند، یک لایه کاملاً متصل دارد تا آن را به اندازه/شکل مورد نیاز تبدیل کند، و سپس با دکانولوشن‌ها+بزرگ‌نمایی ادامه می‌دهد. این شبیه به بخش *رمزگشا* در [خودرمزگذار](../09-Autoencoders/README.md) است. + +> ✅ از آنجا که لایه کانولوشن به عنوان یک فیلتر خطی که تصویر را طی می‌کند پیاده‌سازی می‌شود، دکانولوشن اساساً مشابه کانولوشن است و می‌تواند با همان منطق لایه پیاده‌سازی شود. + + + +> تصویر از [دمیتری سوشنیکوف](http://soshnikov.com) + +### آموزش GAN + +GANها **تخاصمی** نامیده می‌شوند زیرا یک رقابت مداوم بین مولد و تمایزدهنده وجود دارد. در طول این رقابت، هم مولد و هم تمایزدهنده بهبود می‌یابند و در نتیجه شبکه یاد می‌گیرد تصاویر بهتر و بهتری تولید کند. + +آموزش در دو مرحله انجام می‌شود: + +* **آموزش تمایزدهنده**. این کار نسبتاً ساده است: یک دسته از تصاویر را توسط مولد تولید می‌کنیم، آن‌ها را با برچسب 0 (که نشان‌دهنده تصویر جعلی است) برچسب‌گذاری می‌کنیم و یک دسته از تصاویر را از مجموعه داده ورودی می‌گیریم (با برچسب 1، تصویر واقعی). سپس یک *تابع خطای تمایزدهنده* به دست می‌آوریم و بازپراکنش انجام می‌دهیم. +* **آموزش مولد**. این کمی پیچیده‌تر است، زیرا خروجی مورد انتظار برای مولد را مستقیماً نمی‌دانیم. کل شبکه GAN شامل یک مولد و یک تمایزدهنده را می‌گیریم، آن را با بردارهای تصادفی تغذیه می‌کنیم و انتظار داریم نتیجه 1 باشد (که مربوط به تصاویر واقعی است). سپس پارامترهای تمایزدهنده را ثابت می‌کنیم (نمی‌خواهیم در این مرحله آموزش ببیند) و بازپراکنش انجام می‌دهیم. + +در طول این فرآیند، خطاهای مولد و تمایزدهنده به طور قابل توجهی کاهش نمی‌یابند. در حالت ایده‌آل، آن‌ها باید نوسان کنند، که نشان‌دهنده بهبود عملکرد هر دو شبکه است. + +## ✍️ تمرین‌ها: GANها + +* [دفترچه GAN در TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [دفترچه GAN در PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### مشکلات آموزش GAN + +GANها به طور خاص به سختی آموزش داده می‌شوند. در اینجا چند مشکل وجود دارد: + +* **فروپاشی حالت (Mode Collapse)**. این اصطلاح به این معناست که مولد یاد می‌گیرد یک تصویر موفق تولید کند که تمایزدهنده را فریب دهد، اما تنوعی از تصاویر مختلف تولید نمی‌کند. +* **حساسیت به ابرپارامترها**. اغلب می‌بینید که یک GAN اصلاً همگرا نمی‌شود و سپس با کاهش ناگهانی نرخ یادگیری به همگرایی می‌رسد. +* حفظ **تعادل** بین مولد و تمایزدهنده. در بسیاری از موارد، خطای تمایزدهنده می‌تواند نسبتاً سریع به صفر برسد، که باعث می‌شود مولد نتواند بیشتر آموزش ببیند. برای غلبه بر این مشکل، می‌توانیم نرخ‌های یادگیری متفاوتی برای مولد و تمایزدهنده تنظیم کنیم یا آموزش تمایزدهنده را متوقف کنیم اگر خطا از قبل خیلی کم باشد. +* آموزش برای **وضوح بالا**. این مشکل مشابه مشکل خودرمزگذارها است و زمانی ایجاد می‌شود که بازسازی لایه‌های بیش از حد شبکه کانولوشنی منجر به مصنوعات شود. این مشکل معمولاً با روش **رشد تدریجی** حل می‌شود، که در آن ابتدا چند لایه روی تصاویر با وضوح پایین آموزش داده می‌شوند و سپس لایه‌ها "باز می‌شوند" یا اضافه می‌شوند. راه‌حل دیگر اضافه کردن اتصالات اضافی بین لایه‌ها و آموزش چند وضوح به طور همزمان است - برای جزئیات بیشتر به این [مقاله Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) مراجعه کنید. + +## انتقال سبک + +GANها راهی عالی برای تولید تصاویر هنری هستند. تکنیک جالب دیگر **انتقال سبک** است که یک **تصویر محتوا** را می‌گیرد و آن را در یک سبک متفاوت بازطراحی می‌کند، با استفاده از فیلترهایی از **تصویر سبک**. + +روش کار به این صورت است: +* با یک تصویر نویز تصادفی شروع می‌کنیم (یا با یک تصویر محتوا، اما برای درک بهتر بهتر است از نویز تصادفی شروع کنیم) +* هدف ما ایجاد تصویری است که به هر دو تصویر محتوا و تصویر سبک نزدیک باشد. این کار با دو تابع خطا تعیین می‌شود: + - **خطای محتوا** بر اساس ویژگی‌هایی که توسط CNN در برخی لایه‌ها از تصویر فعلی و تصویر محتوا استخراج شده‌اند محاسبه می‌شود. + - **خطای سبک** بین تصویر فعلی و تصویر سبک به روشی هوشمندانه با استفاده از ماتریس‌های گرام محاسبه می‌شود (جزئیات بیشتر در [دفترچه مثال](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* برای صاف‌تر کردن تصویر و حذف نویز، **خطای تغییرات** نیز معرفی می‌شود، که فاصله میانگین بین پیکسل‌های همسایه را محاسبه می‌کند. +* حلقه اصلی بهینه‌سازی تصویر فعلی را با استفاده از نزول گرادیان (یا برخی الگوریتم‌های بهینه‌سازی دیگر) تنظیم می‌کند تا خطای کل، که مجموع وزنی همه خطاها است، به حداقل برسد. + +## ✍️ مثال: [انتقال سبک](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [پس‌از-درس آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## نتیجه‌گیری + +در این درس، درباره GANها و نحوه آموزش آن‌ها یاد گرفتید. همچنین با چالش‌های خاصی که این نوع شبکه عصبی ممکن است با آن مواجه شود و برخی استراتژی‌ها برای غلبه بر آن‌ها آشنا شدید. + +## 🚀 چالش + +دفترچه [انتقال سبک](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) را با استفاده از تصاویر خودتان اجرا کنید. + +## مرور و مطالعه شخصی + +برای مرجع، درباره GANها در این منابع بیشتر بخوانید: + +* مارکو پاسینی، [10 درسی که از آموزش GANها در یک سال یاد گرفتم](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN)، یک معماری GAN *de facto* برای بررسی +* [ایجاد هنر مولد با استفاده از GANها در Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## تکلیف + +یکی از دو دفترچه مرتبط با این درس را مرور کنید و GAN را روی تصاویر خودتان دوباره آموزش دهید. چه چیزی می‌توانید ایجاد کنید؟ + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..71bee39a --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,187 @@ + +# تشخیص اشیاء + +مدل‌های دسته‌بندی تصویر که تاکنون با آن‌ها کار کرده‌ایم، یک تصویر را گرفته و یک نتیجه‌ی دسته‌بندی، مانند کلاس "عدد" در مسئله‌ی MNIST، تولید می‌کردند. اما در بسیاری از موارد، ما فقط نمی‌خواهیم بدانیم که یک تصویر اشیاء را نشان می‌دهد - بلکه می‌خواهیم مکان دقیق آن‌ها را نیز تعیین کنیم. این دقیقاً هدف **تشخیص اشیاء** است. + +## [پیش‌سوالات درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![تشخیص اشیاء](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) + +> تصویر از [وب‌سایت YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## یک رویکرد ساده برای تشخیص اشیاء + +فرض کنید می‌خواهیم یک گربه را در یک تصویر پیدا کنیم. یک رویکرد بسیار ساده برای تشخیص اشیاء می‌تواند به صورت زیر باشد: + +1. تصویر را به تعدادی کاشی تقسیم کنیم. +2. دسته‌بندی تصویر را روی هر کاشی اجرا کنیم. +3. کاشی‌هایی که نتیجه‌ی فعال‌سازی کافی بالایی دارند، می‌توانند حاوی شیء مورد نظر باشند. + +![تشخیص ساده](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) + +> *تصویر از [دفترچه تمرین](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +اما این رویکرد ایده‌آل نیست، زیرا فقط به الگوریتم اجازه می‌دهد که جعبه‌ی محدودکننده‌ی شیء را به‌طور بسیار نادقیق مکان‌یابی کند. برای مکان‌یابی دقیق‌تر، باید نوعی **رگرسیون** اجرا کنیم تا مختصات جعبه‌های محدودکننده را پیش‌بینی کنیم - و برای این کار، به مجموعه داده‌های خاصی نیاز داریم. + +## رگرسیون برای تشخیص اشیاء + +[این پست وبلاگ](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) مقدمه‌ای عالی و ساده برای تشخیص اشکال ارائه می‌دهد. + +## مجموعه داده‌ها برای تشخیص اشیاء + +ممکن است با مجموعه داده‌های زیر برای این کار مواجه شوید: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - شامل ۲۰ کلاس +* [COCO](http://cocodataset.org/#home) - اشیاء رایج در زمینه. شامل ۸۰ کلاس، جعبه‌های محدودکننده و ماسک‌های تقسیم‌بندی + +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) + +## معیارهای تشخیص اشیاء + +### تلاقی بر اتحاد (IoU) + +در حالی که برای دسته‌بندی تصویر اندازه‌گیری عملکرد الگوریتم آسان است، برای تشخیص اشیاء باید هم درستی کلاس و هم دقت مکان‌یابی جعبه‌ی محدودکننده‌ی استنتاج‌شده را اندازه‌گیری کنیم. برای مورد دوم، از معیاری به نام **تلاقی بر اتحاد** (IoU) استفاده می‌کنیم که میزان هم‌پوشانی دو جعبه (یا دو ناحیه‌ی دلخواه) را اندازه‌گیری می‌کند. + +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) + +> *شکل ۲ از [این پست وبلاگ عالی درباره‌ی IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +ایده ساده است - مساحت تلاقی بین دو شکل را بر مساحت اتحاد آن‌ها تقسیم می‌کنیم. برای دو ناحیه‌ی یکسان، IoU برابر ۱ خواهد بود، در حالی که برای نواحی کاملاً جدا از هم، IoU برابر ۰ خواهد بود. در غیر این صورت، مقدار IoU بین ۰ تا ۱ متغیر خواهد بود. معمولاً فقط جعبه‌های محدودکننده‌ای را در نظر می‌گیریم که IoU آن‌ها بالاتر از یک مقدار مشخص باشد. + +### دقت میانگین (Average Precision) + +فرض کنید می‌خواهیم اندازه‌گیری کنیم که یک کلاس خاص از اشیاء $C$ چقدر خوب شناسایی شده است. برای اندازه‌گیری آن، از معیار **دقت میانگین** استفاده می‌کنیم که به صورت زیر محاسبه می‌شود: + +1. منحنی دقت-بازخوانی (Precision-Recall) را در نظر بگیرید که دقت را بر اساس مقدار آستانه‌ی تشخیص (از ۰ تا ۱) نشان می‌دهد. +2. بسته به آستانه، تعداد بیشتری یا کمتری از اشیاء در تصویر شناسایی می‌شوند و مقادیر مختلفی از دقت و بازخوانی به دست می‌آید. +3. منحنی به این شکل خواهد بود: + + + +> *تصویر از [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +دقت میانگین برای یک کلاس خاص $C$ مساحت زیر این منحنی است. به طور دقیق‌تر، محور بازخوانی معمولاً به ۱۰ قسمت تقسیم می‌شود و دقت در تمام این نقاط میانگین‌گیری می‌شود: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP و IoU + +ما فقط آن دسته از تشخیص‌ها را در نظر خواهیم گرفت که IoU آن‌ها بالاتر از یک مقدار مشخص باشد. برای مثال، در مجموعه داده‌ی PASCAL VOC معمولاً $\mbox{IoU Threshold} = 0.5$ فرض می‌شود، در حالی که در COCO، AP برای مقادیر مختلف $\mbox{IoU Threshold}$ اندازه‌گیری می‌شود. + + + +> *تصویر از [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### دقت میانگین کلی - mAP + +معیار اصلی برای تشخیص اشیاء **دقت میانگین کلی** یا **mAP** نامیده می‌شود. این مقدار دقت میانگین است که به طور میانگین در تمام کلاس‌های اشیاء و گاهی نیز بر اساس $\mbox{IoU Threshold}$ محاسبه می‌شود. جزئیات بیشتر درباره‌ی فرآیند محاسبه‌ی **mAP** در [این پست وبلاگ](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) و همچنین [اینجا با نمونه کد](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) توضیح داده شده است. + +## روش‌های مختلف تشخیص اشیاء + +دو دسته کلی از الگوریتم‌های تشخیص اشیاء وجود دارد: + +* **شبکه‌های پیشنهاد ناحیه** (R-CNN، Fast R-CNN، Faster R-CNN). ایده اصلی این است که **ناحیه‌های مورد علاقه** (ROI) تولید شوند و CNN روی آن‌ها اجرا شود تا بیشترین فعال‌سازی پیدا شود. این روش کمی شبیه به رویکرد ساده است، با این تفاوت که ROIها به روشی هوشمندانه‌تر تولید می‌شوند. یکی از معایب اصلی این روش‌ها این است که کند هستند، زیرا نیاز به چندین بار عبور از طبقه‌بندی‌کننده‌ی CNN روی تصویر دارند. +* روش‌های **یک‌مرحله‌ای** (YOLO، SSD، RetinaNet). در این معماری‌ها، شبکه به گونه‌ای طراحی شده است که هم کلاس‌ها و هم ROIها را در یک مرحله پیش‌بینی کند. + +### R-CNN: شبکه‌ی کانولوشنی مبتنی بر ناحیه + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) از [جستجوی انتخابی](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) برای تولید ساختار سلسله‌مراتبی ناحیه‌های ROI استفاده می‌کند که سپس از طریق استخراج‌کننده‌های ویژگی CNN و طبقه‌بندی‌کننده‌های SVM عبور داده می‌شوند تا کلاس شیء تعیین شود و از رگرسیون خطی برای تعیین مختصات *جعبه‌ی محدودکننده* استفاده شود. [مقاله رسمی](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) + +> *تصویر از van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) + +> *تصاویر از [این وبلاگ](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +این روش مشابه R-CNN است، اما ناحیه‌ها پس از اعمال لایه‌های کانولوشنی تعریف می‌شوند. + +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) + +> تصویر از [مقاله رسمی](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf)، [arXiv](https://arxiv.org/pdf/1504.08083.pdf)، ۲۰۱۵ + +### Faster R-CNN + +ایده اصلی این روش استفاده از شبکه‌ی عصبی برای پیش‌بینی ROIها است - به اصطلاح *شبکه‌ی پیشنهاد ناحیه*. [مقاله](https://arxiv.org/pdf/1506.01497.pdf)، ۲۰۱۶ + +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) + +> تصویر از [مقاله رسمی](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: شبکه‌ی کاملاً کانولوشنی مبتنی بر ناحیه + +این الگوریتم حتی سریع‌تر از Faster R-CNN است. ایده اصلی به شرح زیر است: + +1. ویژگی‌ها با استفاده از ResNet-101 استخراج می‌شوند. +2. ویژگی‌ها توسط **نقشه‌ی امتیاز حساس به موقعیت** پردازش می‌شوند. هر شیء از کلاس‌های $C$ به نواحی $k\times k$ تقسیم می‌شود و ما برای پیش‌بینی بخش‌های اشیاء آموزش می‌بینیم. +3. برای هر بخش از نواحی $k\times k$، تمام شبکه‌ها برای کلاس‌های اشیاء رأی می‌دهند و کلاسی که بیشترین رأی را دارد انتخاب می‌شود. + +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) + +> تصویر از [مقاله رسمی](https://arxiv.org/abs/1605.06409) + +### YOLO - فقط یک بار نگاه کن + +YOLO یک الگوریتم یک‌مرحله‌ای بلادرنگ است. ایده اصلی به شرح زیر است: + + * تصویر به نواحی $S\times S$ تقسیم می‌شود. + * برای هر ناحیه، **CNN** $n$ شیء ممکن، مختصات *جعبه‌ی محدودکننده* و *اعتماد* = *احتمال* * IoU را پیش‌بینی می‌کند. + + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) + +> تصویر از [مقاله رسمی](https://arxiv.org/abs/1506.02640) + +### سایر الگوریتم‌ها + +* RetinaNet: [مقاله رسمی](https://arxiv.org/abs/1708.02002) + - [پیاده‌سازی PyTorch در Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [پیاده‌سازی Keras](https://github.com/fizyr/keras-retinanet) + - [تشخیص اشیاء با RetinaNet](https://keras.io/examples/vision/retinanet/) در نمونه‌های Keras +* SSD (تشخیص تک‌شات): [مقاله رسمی](https://arxiv.org/abs/1512.02325) + +## ✍️ تمرین‌ها: تشخیص اشیاء + +یادگیری خود را در دفترچه زیر ادامه دهید: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## نتیجه‌گیری + +در این درس، مروری سریع بر روش‌های مختلفی که می‌توان برای تشخیص اشیاء استفاده کرد، داشتید! + +## 🚀 چالش + +این مقالات و دفترچه‌ها درباره‌ی YOLO را بخوانید و خودتان امتحان کنید: + +* [پست وبلاگ خوب](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) که YOLO را توضیح می‌دهد + * [سایت رسمی](https://pjreddie.com/darknet/yolo/) + * YOLO: [پیاده‌سازی Keras](https://github.com/experiencor/keras-yolo2)، [دفترچه گام‌به‌گام](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [پیاده‌سازی Keras](https://github.com/experiencor/keras-yolo2)، [دفترچه گام‌به‌گام](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [پس‌سوالات درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## مرور و مطالعه شخصی + +* [تشخیص اشیاء](https://tjmachinelearning.com/lectures/1718/obj/) توسط نیکیل ساردانا +* [مقایسه‌ی خوب الگوریتم‌های تشخیص اشیاء](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [مروری بر الگوریتم‌های یادگیری عمیق برای تشخیص اشیاء](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [مقدمه‌ای گام‌به‌گام بر الگوریتم‌های پایه‌ی تشخیص اشیاء](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [پیاده‌سازی Faster R-CNN در پایتون برای تشخیص اشیاء](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [تکلیف: تشخیص اشیاء](lab/README.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..d73ec143 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# تشخیص سر با استفاده از مجموعه داده Hollywood Heads + +تمرین آزمایشگاهی از [برنامه درسی AI for Beginners](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +شمارش تعداد افراد در جریان دوربین نظارتی یک وظیفه مهم است که به ما امکان می‌دهد تعداد بازدیدکنندگان در فروشگاه‌ها، ساعات شلوغی در رستوران‌ها و غیره را تخمین بزنیم. برای حل این وظیفه، باید بتوانیم سر انسان را از زوایای مختلف تشخیص دهیم. برای آموزش مدل تشخیص اشیا برای تشخیص سر انسان، می‌توانیم از [مجموعه داده Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/) استفاده کنیم. + +## مجموعه داده + +[مجموعه داده Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) شامل 369,846 سر انسان است که در 224,740 فریم فیلم‌های هالیوودی علامت‌گذاری شده‌اند. این مجموعه داده در قالب [PASCAL VOC](https://host.robots.ox.ac.uk/pascal/VOC/) ارائه شده است، که برای هر تصویر یک فایل توضیحات XML نیز وجود دارد که به این شکل است: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +در این مجموعه داده، فقط یک کلاس از اشیا وجود دارد `head`، و برای هر سر، مختصات جعبه محدودکننده ارائه می‌شود. شما می‌توانید فایل‌های XML را با استفاده از کتابخانه‌های پایتون تجزیه کنید، یا از [این کتابخانه](https://pypi.org/project/pascal-voc/) برای کار مستقیم با قالب PASCAL VOC استفاده کنید. + +## آموزش مدل تشخیص اشیا + +شما می‌توانید مدل تشخیص اشیا را به یکی از روش‌های زیر آموزش دهید: + +* استفاده از [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) و API پایتون آن برای آموزش مدل به صورت برنامه‌ریزی شده در فضای ابری. Custom Vision نمی‌تواند از بیش از چند صد تصویر برای آموزش مدل استفاده کند، بنابراین ممکن است نیاز باشد مجموعه داده را محدود کنید. +* استفاده از مثال موجود در [آموزش Keras](https://keras.io/examples/vision/retinanet/) برای آموزش مدل RetunaNet. +* استفاده از ماژول داخلی [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) در torchvision. + +## نتیجه‌گیری + +تشخیص اشیا یک وظیفه است که اغلب در صنعت مورد نیاز است. در حالی که برخی خدمات وجود دارند که می‌توانند برای انجام تشخیص اشیا استفاده شوند (مانند [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste))، مهم است که درک کنید چگونه تشخیص اشیا کار می‌کند و بتوانید مدل‌های خود را آموزش دهید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/fa/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..f3703b40 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# بخش‌بندی + +ما قبلاً درباره تشخیص اشیا یاد گرفتیم، که به ما امکان می‌دهد اشیا را در تصویر با پیش‌بینی *جعبه‌های محدودکننده* مکان‌یابی کنیم. با این حال، برای برخی وظایف، تنها جعبه‌های محدودکننده کافی نیستند و به مکان‌یابی دقیق‌تر اشیا نیاز داریم. این وظیفه **بخش‌بندی** نامیده می‌شود. + +## [پرسش‌نامه پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +بخش‌بندی را می‌توان به عنوان **طبقه‌بندی پیکسل‌ها** در نظر گرفت، به این معنا که برای **هر** پیکسل تصویر باید کلاس آن را پیش‌بینی کنیم (*پس‌زمینه* یکی از کلاس‌ها است). دو الگوریتم اصلی برای بخش‌بندی وجود دارد: + +* **بخش‌بندی معنایی** فقط کلاس پیکسل را مشخص می‌کند و بین اشیای مختلف از یک کلاس تفاوتی قائل نمی‌شود. +* **بخش‌بندی نمونه‌ای** کلاس‌ها را به نمونه‌های مختلف تقسیم می‌کند. + +برای بخش‌بندی نمونه‌ای، این گوسفندها اشیای متفاوتی هستند، اما برای بخش‌بندی معنایی همه گوسفندها به عنوان یک کلاس نمایش داده می‌شوند. + + + +> تصویر از [این پست وبلاگ](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +معماری‌های عصبی مختلفی برای بخش‌بندی وجود دارد، اما همه آن‌ها ساختار مشابهی دارند. به نوعی، این معماری‌ها شبیه به خودرمزگذارهایی هستند که قبلاً درباره آن‌ها یاد گرفتید، اما به جای بازسازی تصویر اصلی، هدف ما بازسازی یک **ماسک** است. بنابراین، یک شبکه بخش‌بندی شامل بخش‌های زیر است: + +* **رمزگذار** ویژگی‌ها را از تصویر ورودی استخراج می‌کند. +* **رمزگشا** این ویژگی‌ها را به تصویر **ماسک** تبدیل می‌کند، با همان اندازه و تعداد کانال‌ها که به تعداد کلاس‌ها مربوط می‌شود. + + + +> تصویر از [این مقاله](https://arxiv.org/pdf/2001.05566.pdf) + +باید به طور ویژه به تابع خطا که برای بخش‌بندی استفاده می‌شود اشاره کنیم. هنگام استفاده از خودرمزگذارهای کلاسیک، باید شباهت بین دو تصویر را اندازه‌گیری کنیم و می‌توانیم از خطای میانگین مربعات (MSE) برای این کار استفاده کنیم. در بخش‌بندی، هر پیکسل در تصویر ماسک هدف نشان‌دهنده شماره کلاس است (به صورت یک‌کد شده در طول بعد سوم)، بنابراین باید از توابع خطای خاص برای طبقه‌بندی استفاده کنیم - خطای آنتروپی متقاطع، که میانگین آن بر روی تمام پیکسل‌ها گرفته می‌شود. اگر ماسک دودویی باشد، از **خطای آنتروپی متقاطع دودویی** (BCE) استفاده می‌شود. + +> ✅ یک‌کد کردن روشی برای کدگذاری یک برچسب کلاس به یک بردار با طول برابر با تعداد کلاس‌ها است. به [این مقاله](https://datagy.io/sklearn-one-hot-encode/) درباره این تکنیک نگاهی بیندازید. + +## بخش‌بندی در تصویربرداری پزشکی + +در این درس، بخش‌بندی را در عمل مشاهده خواهیم کرد، با آموزش شبکه برای شناسایی خال‌های انسانی (که به عنوان مول نیز شناخته می‌شوند) در تصاویر پزشکی. ما از پایگاه داده PH2 تصاویر درموسکوپی به عنوان منبع تصاویر استفاده خواهیم کرد. این مجموعه داده شامل ۲۰۰ تصویر از سه کلاس است: خال معمولی، خال غیرمعمولی، و ملانوما. همه تصاویر همچنین شامل یک **ماسک** متناظر هستند که خال را مشخص می‌کند. + +> ✅ این تکنیک به طور خاص برای این نوع تصویربرداری پزشکی مناسب است، اما چه کاربردهای واقعی دیگری را می‌توانید تصور کنید؟ + +navi + +> تصویر از پایگاه داده PH2 + +ما مدلی را آموزش خواهیم داد تا هر خال را از پس‌زمینه آن بخش‌بندی کند. + +## ✍️ تمرین‌ها: بخش‌بندی معنایی + +دفترچه‌های زیر را باز کنید تا درباره معماری‌های مختلف بخش‌بندی معنایی بیشتر بیاموزید، کار با آن‌ها را تمرین کنید و آن‌ها را در عمل مشاهده کنید. + +* [بخش‌بندی معنایی با Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [بخش‌بندی معنایی با TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [پرسش‌نامه پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## نتیجه‌گیری + +بخش‌بندی یک تکنیک بسیار قدرتمند برای طبقه‌بندی تصاویر است که از جعبه‌های محدودکننده فراتر رفته و به طبقه‌بندی در سطح پیکسل می‌پردازد. این تکنیک در تصویربرداری پزشکی و سایر کاربردها استفاده می‌شود. + +## 🚀 چالش + +بخش‌بندی بدن فقط یکی از وظایف رایج است که می‌توانیم با تصاویر افراد انجام دهیم. وظایف مهم دیگر شامل **تشخیص اسکلت** و **تشخیص حالت** است. کتابخانه [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) را امتحان کنید تا ببینید چگونه می‌توان از تشخیص حالت استفاده کرد. + +## مرور و مطالعه شخصی + +این [مقاله ویکی‌پدیا](https://wikipedia.org/wiki/Image_segmentation) نمای کلی خوبی از کاربردهای مختلف این تکنیک ارائه می‌دهد. درباره زیرشاخه‌های بخش‌بندی نمونه‌ای و بخش‌بندی پانورامیک در این حوزه تحقیق کنید. + +## [تکلیف](lab/README.md) + +در این آزمایشگاه، **بخش‌بندی بدن انسان** را با استفاده از [مجموعه داده بخش‌بندی کامل بدن MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) از Kaggle امتحان کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/fa/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..fc1b03e6 --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# جداسازی بدن انسان + +تکلیف آزمایشگاهی از [برنامه درسی AI برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +در تولید ویدیو، به عنوان مثال در پیش‌بینی‌های آب‌وهوا، اغلب نیاز داریم تصویر یک انسان را از دوربین جدا کرده و آن را روی فیلم دیگری قرار دهیم. این کار معمولاً با استفاده از تکنیک‌های **کلید کروما** انجام می‌شود، زمانی که انسان در مقابل یک پس‌زمینه با رنگ یکنواخت فیلم‌برداری می‌شود و سپس آن پس‌زمینه حذف می‌شود. در این آزمایشگاه، ما یک مدل شبکه عصبی را آموزش خواهیم داد تا تصویر سیلوئت انسان را جدا کند. + +## مجموعه داده + +ما از [مجموعه داده جداسازی بدن کامل MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) از سایت Kaggle استفاده خواهیم کرد. مجموعه داده را به صورت دستی از Kaggle دانلود کنید. + +## دفترچه شروع + +آزمایشگاه را با باز کردن [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) شروع کنید. + +## نکته کلیدی + +جداسازی بدن فقط یکی از وظایف رایجی است که می‌توانیم با تصاویر افراد انجام دهیم. وظایف مهم دیگر شامل **تشخیص اسکلت** و **تشخیص حالت** می‌شوند. به کتابخانه [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) نگاهی بیندازید تا ببینید چگونه می‌توان این وظایف را پیاده‌سازی کرد. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/4-ComputerVision/README.md b/translations/fa/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..fbd70f3a --- /dev/null +++ b/translations/fa/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# بینایی کامپیوتر + +![خلاصه‌ای از محتوای بینایی کامپیوتر در یک طرح](../../../../lessons/sketchnotes/ai-computervision.png) + +در این بخش یاد خواهیم گرفت: + +* [مقدمه‌ای بر بینایی کامپیوتر و OpenCV](06-IntroCV/README.md) +* [شبکه‌های عصبی کانولوشنی](07-ConvNets/README.md) +* [شبکه‌های از پیش آموزش‌دیده و یادگیری انتقالی](08-TransferLearning/README.md) +* [خودرمزگذارها](09-Autoencoders/README.md) +* [شبکه‌های مولد تخاصمی](10-GANs/README.md) +* [تشخیص اشیاء](11-ObjectDetection/README.md) +* [تقسیم‌بندی معنایی](12-Segmentation/README.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/13-TextRep/README.md b/translations/fa/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..718ed343 --- /dev/null +++ b/translations/fa/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# نمایش متن به صورت تنسورها + +## [پیش‌ آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## دسته‌بندی متن + +در بخش اول این قسمت، ما بر روی وظیفه **دسته‌بندی متن** تمرکز خواهیم کرد. از مجموعه داده [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) استفاده خواهیم کرد که شامل مقالات خبری مانند موارد زیر است: + +* دسته‌بندی: علمی/فناوری +* عنوان: شرکت Ky. برنده کمک‌هزینه برای مطالعه پپتیدها شد (AP) +* متن: AP - یک شرکت که توسط یک محقق شیمی در دانشگاه لوییویل تأسیس شده است، کمک‌هزینه‌ای برای توسعه دریافت کرد... + +هدف ما این خواهد بود که خبر را بر اساس متن به یکی از دسته‌ها طبقه‌بندی کنیم. + +## نمایش متن + +اگر بخواهیم وظایف پردازش زبان طبیعی (NLP) را با شبکه‌های عصبی حل کنیم، باید راهی برای نمایش متن به صورت تنسورها داشته باشیم. کامپیوترها از قبل کاراکترهای متنی را به صورت اعداد نمایش می‌دهند که به فونت‌های روی صفحه شما با استفاده از کدگذاری‌هایی مانند ASCII یا UTF-8 نگاشت می‌شوند. + +تصویری که نمودار نگاشت یک کاراکتر به نمایش ASCII و باینری را نشان می‌دهد + +> [منبع تصویر](https://www.seobility.net/en/wiki/ASCII) + +ما انسان‌ها می‌دانیم هر حرف **نمایانگر چیست** و چگونه همه کاراکترها کنار هم قرار می‌گیرند تا کلمات یک جمله را تشکیل دهند. اما کامپیوترها به تنهایی چنین درکی ندارند و شبکه عصبی باید این معنا را در طول آموزش یاد بگیرد. + +بنابراین، می‌توانیم از روش‌های مختلفی برای نمایش متن استفاده کنیم: + +* **نمایش در سطح کاراکتر**، که در آن متن را با در نظر گرفتن هر کاراکتر به عنوان یک عدد نمایش می‌دهیم. با توجه به اینکه ما *C* کاراکتر مختلف در مجموعه متن خود داریم، کلمه *Hello* به صورت یک تنسور 5x*C* نمایش داده می‌شود. هر حرف به یک ستون تنسور در کدگذاری یک‌داغ (one-hot encoding) مربوط می‌شود. +* **نمایش در سطح کلمه**، که در آن یک **واژگان** از تمام کلمات موجود در متن ایجاد می‌کنیم و سپس کلمات را با استفاده از کدگذاری یک‌داغ نمایش می‌دهیم. این روش تا حدی بهتر است، زیرا هر حرف به تنهایی معنای زیادی ندارد و با استفاده از مفاهیم معنایی سطح بالاتر - کلمات - وظیفه را برای شبکه عصبی ساده‌تر می‌کنیم. با این حال، با توجه به اندازه بزرگ واژگان، باید با تنسورهای پراکنده با ابعاد بالا کار کنیم. + +صرف نظر از نوع نمایش، ابتدا باید متن را به یک دنباله از **توکن‌ها** تبدیل کنیم، که هر توکن می‌تواند یک کاراکتر، یک کلمه یا حتی بخشی از یک کلمه باشد. سپس، توکن را به یک عدد تبدیل می‌کنیم، معمولاً با استفاده از **واژگان**، و این عدد می‌تواند با استفاده از کدگذاری یک‌داغ به شبکه عصبی داده شود. + +## ان-گرام‌ها + +در زبان طبیعی، معنای دقیق کلمات تنها در متن مشخص می‌شود. برای مثال، معانی *شبکه عصبی* و *شبکه ماهیگیری* کاملاً متفاوت هستند. یکی از روش‌های در نظر گرفتن این موضوع، ساخت مدل بر اساس جفت‌های کلمات و در نظر گرفتن جفت‌های کلمات به عنوان توکن‌های جداگانه واژگان است. به این ترتیب، جمله *من دوست دارم ماهیگیری کنم* به دنباله‌ای از توکن‌ها نمایش داده می‌شود: *من دوست دارم*، *دوست دارم*، *دارم ماهیگیری کنم*. مشکل این روش این است که اندازه واژگان به طور قابل توجهی افزایش می‌یابد و ترکیباتی مانند *ماهیگیری کنم* و *خرید کنم* با توکن‌های متفاوتی نمایش داده می‌شوند که هیچ شباهت معنایی مشترکی ندارند، با وجود فعل مشابه. + +در برخی موارد، ممکن است استفاده از سه‌گرام‌ها -- ترکیبات سه کلمه‌ای -- را نیز در نظر بگیریم. بنابراین این روش اغلب **ان-گرام‌ها** نامیده می‌شود. همچنین، استفاده از ان-گرام‌ها با نمایش در سطح کاراکتر منطقی است، که در این صورت ان-گرام‌ها تقریباً به هجاهای مختلف مربوط می‌شوند. + +## کیسه کلمات و TF/IDF + +هنگام حل وظایفی مانند دسته‌بندی متن، باید بتوانیم متن را به یک بردار با اندازه ثابت نمایش دهیم که به عنوان ورودی به طبقه‌بند نهایی متراکم استفاده شود. یکی از ساده‌ترین روش‌ها برای انجام این کار، ترکیب تمام نمایش‌های کلمه‌ای جداگانه است، به عنوان مثال با جمع کردن آن‌ها. اگر کدگذاری‌های یک‌داغ هر کلمه را جمع کنیم، به یک بردار فرکانس‌ها می‌رسیم که نشان می‌دهد هر کلمه چند بار در متن ظاهر شده است. چنین نمایشی از متن **کیسه کلمات** (BoW) نامیده می‌شود. + + + +> تصویر توسط نویسنده + +یک BoW اساساً نشان می‌دهد که کدام کلمات در متن ظاهر می‌شوند و به چه تعداد، که می‌تواند نشانگر خوبی از موضوع متن باشد. برای مثال، مقاله خبری درباره سیاست احتمالاً شامل کلماتی مانند *رئیس‌جمهور* و *کشور* است، در حالی که یک مقاله علمی ممکن است کلماتی مانند *برخورددهنده*، *کشف شده* و غیره داشته باشد. بنابراین، فرکانس کلمات می‌تواند در بسیاری از موارد نشانگر خوبی از محتوای متن باشد. + +مشکل BoW این است که برخی کلمات رایج، مانند *و*، *است* و غیره، در اکثر متون ظاهر می‌شوند و بالاترین فرکانس‌ها را دارند، که کلمات واقعاً مهم را تحت‌الشعاع قرار می‌دهند. ممکن است اهمیت این کلمات را با در نظر گرفتن فرکانس وقوع آن‌ها در کل مجموعه اسناد کاهش دهیم. این ایده اصلی پشت روش TF/IDF است که در جزوه‌های ضمیمه این درس به تفصیل پوشش داده شده است. + +با این حال، هیچ‌یک از این روش‌ها نمی‌توانند به طور کامل **معنا** متن را در نظر بگیرند. برای این کار به مدل‌های قدرتمندتر شبکه‌های عصبی نیاز داریم که در ادامه این بخش مورد بحث قرار خواهند گرفت. + +## ✍️ تمرین‌ها: نمایش متن + +یادگیری خود را در جزوه‌های زیر ادامه دهید: + +* [نمایش متن با PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [نمایش متن با TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## نتیجه‌گیری + +تا اینجا، تکنیک‌هایی را مطالعه کرده‌ایم که می‌توانند وزن فرکانس را به کلمات مختلف اضافه کنند. با این حال، این تکنیک‌ها قادر به نمایش معنا یا ترتیب نیستند. همانطور که زبان‌شناس معروف J. R. Firth در سال 1935 گفت: "معنای کامل یک کلمه همیشه وابسته به متن است و هیچ مطالعه‌ای از معنا جدا از متن نمی‌تواند جدی گرفته شود." در ادامه دوره یاد خواهیم گرفت که چگونه اطلاعات متنی را با استفاده از مدل‌سازی زبان از متن استخراج کنیم. + +## 🚀 چالش + +برخی تمرین‌های دیگر را با استفاده از کیسه کلمات و مدل‌های داده مختلف امتحان کنید. ممکن است این [رقابت در Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) الهام‌بخش شما باشد. + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## مرور و مطالعه خودآموز + +مهارت‌های خود را با تکنیک‌های جاسازی متن و کیسه کلمات در [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) تمرین کنید. + +## [تکلیف: جزوه‌ها](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/13-TextRep/assignment.md b/translations/fa/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..015f356a --- /dev/null +++ b/translations/fa/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# تکلیف: دفترچه‌ها + +با استفاده از دفترچه‌های مرتبط با این درس (نسخه PyTorch یا TensorFlow)، آنها را با استفاده از مجموعه داده‌های خودتان اجرا کنید، شاید یکی از مجموعه داده‌های Kaggle که با ذکر منبع استفاده شده باشد. دفترچه را بازنویسی کنید تا یافته‌های خودتان را برجسته کنید. مجموعه داده‌های نوآورانه‌ای را امتحان کنید که ممکن است شگفت‌انگیز باشند، مانند [این مجموعه داده درباره مشاهده‌های بشقاب پرنده](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) از NUFORC. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/14-Embeddings/README.md b/translations/fa/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..f95e25e0 --- /dev/null +++ b/translations/fa/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# تعبیه‌ها + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +هنگام آموزش دسته‌بندها بر اساس BoW یا TF/IDF، ما با بردارهای کیسه کلمات با ابعاد بالا که طول آن‌ها `vocab_size` بود کار می‌کردیم و به طور صریح بردارهای نمایشی موقعیتی با ابعاد پایین را به نمایشی پراکنده و تک‌داغ تبدیل می‌کردیم. با این حال، این نمایشی تک‌داغ از نظر حافظه کارآمد نیست. علاوه بر این، هر کلمه به صورت مستقل از دیگر کلمات در نظر گرفته می‌شود، یعنی بردارهای تک‌داغ هیچ شباهت معنایی بین کلمات را بیان نمی‌کنند. + +ایده‌ی **تعبیه** این است که کلمات را با بردارهای متراکم و با ابعاد پایین‌تر نمایش دهیم که به نوعی معنای کلمه را منعکس کنند. بعداً درباره‌ی چگونگی ساخت تعبیه‌های معنایی بحث خواهیم کرد، اما فعلاً تعبیه‌ها را به عنوان روشی برای کاهش ابعاد بردار کلمات در نظر بگیرید. + +بنابراین، لایه‌ی تعبیه یک کلمه را به عنوان ورودی می‌گیرد و یک بردار خروجی با اندازه‌ی مشخص `embedding_size` تولید می‌کند. به نوعی، این لایه بسیار شبیه به یک لایه‌ی `Linear` است، اما به جای گرفتن یک بردار تک‌داغ، می‌تواند یک شماره‌ی کلمه را به عنوان ورودی بگیرد و ما را از ایجاد بردارهای بزرگ تک‌داغ بی‌نیاز کند. + +با استفاده از یک لایه‌ی تعبیه به عنوان اولین لایه در شبکه‌ی دسته‌بند خود، می‌توانیم از مدل کیسه کلمات به مدل **کیسه تعبیه‌ها** تغییر دهیم، جایی که ابتدا هر کلمه در متن خود را به تعبیه‌ی مربوطه تبدیل می‌کنیم و سپس یک تابع تجمیع مانند `sum`، `average` یا `max` را بر روی تمام این تعبیه‌ها اعمال می‌کنیم. + +![تصویری که یک دسته‌بند تعبیه برای پنج کلمه‌ی دنباله را نشان می‌دهد.](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) + +> تصویر از نویسنده + +## ✍️ تمرین‌ها: تعبیه‌ها + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: +* [تعبیه‌ها با PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [تعبیه‌ها با TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## تعبیه‌های معنایی: Word2Vec + +در حالی که لایه‌ی تعبیه یاد می‌گیرد که کلمات را به بردارهای نمایشی نگاشت کند، اما این نمایشی لزوماً معنای زیادی از نظر معنایی ندارد. بهتر است بردارهایی یاد بگیریم که کلمات مشابه یا مترادف‌ها به بردارهایی نزدیک به هم از نظر فاصله‌ی برداری (مثلاً فاصله‌ی اقلیدسی) نگاشت شوند. + +برای این کار، باید مدل تعبیه‌ی خود را به روشی خاص بر روی مجموعه‌ی بزرگی از متن پیش‌آموزش دهیم. یکی از روش‌های آموزش تعبیه‌های معنایی [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) نام دارد. این روش بر اساس دو معماری اصلی است که برای تولید نمایشی توزیع‌شده از کلمات استفاده می‌شوند: + +- **کیسه کلمات پیوسته** (CBoW) — در این معماری، مدل را برای پیش‌بینی یک کلمه از متن اطراف آن آموزش می‌دهیم. با توجه به ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$، هدف مدل پیش‌بینی $W_0$ از $(W_{-2},W_{-1},W_1,W_2)$ است. +- **اسکیپ‌گرام پیوسته** برعکس CBoW است. مدل از پنجره‌ی کلمات متنی اطراف برای پیش‌بینی کلمه‌ی فعلی استفاده می‌کند. + +CBoW سریع‌تر است، در حالی که اسکیپ‌گرام کندتر است اما در نمایش کلمات نادر بهتر عمل می‌کند. + +![تصویری که الگوریتم‌های CBoW و اسکیپ‌گرام را برای تبدیل کلمات به بردارها نشان می‌دهد.](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) + +> تصویر از [این مقاله](https://arxiv.org/pdf/1301.3781.pdf) + +تعبیه‌های پیش‌آموزش‌داده‌شده‌ی Word2Vec (و همچنین مدل‌های مشابه دیگر مانند GloVe) می‌توانند به جای لایه‌ی تعبیه در شبکه‌های عصبی استفاده شوند. با این حال، باید با واژگان‌ها کار کنیم، زیرا واژگانی که برای پیش‌آموزش Word2Vec/GloVe استفاده شده است احتمالاً با واژگان موجود در متن ما متفاوت است. به نوت‌بوک‌های بالا نگاهی بیندازید تا ببینید چگونه می‌توان این مشکل را حل کرد. + +## تعبیه‌های متنی + +یکی از محدودیت‌های کلیدی تعبیه‌های پیش‌آموزش‌داده‌شده‌ی سنتی مانند Word2Vec مشکل ابهام معنای کلمات است. در حالی که تعبیه‌های پیش‌آموزش‌داده‌شده می‌توانند بخشی از معنای کلمات در متن را درک کنند، هر معنای ممکن یک کلمه در یک تعبیه‌ی واحد کدگذاری می‌شود. این می‌تواند در مدل‌های پایین‌دستی مشکل ایجاد کند، زیرا بسیاری از کلمات مانند کلمه‌ی «play» بسته به متنی که در آن استفاده می‌شوند معانی متفاوتی دارند. + +برای مثال، کلمه‌ی «play» در این دو جمله‌ی مختلف معانی کاملاً متفاوتی دارد: + +- من به یک **نمایش** در تئاتر رفتم. +- جان می‌خواهد با دوستانش **بازی** کند. + +تعبیه‌های پیش‌آموزش‌داده‌شده‌ی بالا هر دو معنای کلمه‌ی «play» را در یک تعبیه‌ی واحد نمایش می‌دهند. برای غلبه بر این محدودیت، باید تعبیه‌هایی بر اساس **مدل زبانی** بسازیم که بر روی مجموعه‌ی بزرگی از متن آموزش دیده و *می‌داند* چگونه کلمات می‌توانند در متن‌های مختلف کنار هم قرار گیرند. بحث درباره‌ی تعبیه‌های متنی خارج از محدوده‌ی این آموزش است، اما وقتی درباره‌ی مدل‌های زبانی صحبت کنیم، به آن‌ها بازخواهیم گشت. + +## نتیجه‌گیری + +در این درس، یاد گرفتید که چگونه لایه‌های تعبیه را در TensorFlow و PyTorch بسازید و استفاده کنید تا معنای کلمات را بهتر منعکس کنید. + +## 🚀 چالش + +Word2Vec برای برخی کاربردهای جالب مانند تولید اشعار و ترانه‌ها استفاده شده است. به [این مقاله](https://www.politetype.com/blog/word2vec-color-poems) نگاهی بیندازید که توضیح می‌دهد چگونه نویسنده از Word2Vec برای تولید شعر استفاده کرده است. همچنین [این ویدیو از دن شیفمن](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) را تماشا کنید تا توضیح متفاوتی از این تکنیک را کشف کنید. سپس سعی کنید این تکنیک‌ها را بر روی مجموعه‌ی متن خود، شاید از Kaggle، اعمال کنید. + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## مرور و مطالعه‌ی خودخوان + +این مقاله درباره‌ی Word2Vec را بخوانید: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [تکلیف: نوت‌بوک‌ها](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/14-Embeddings/assignment.md b/translations/fa/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..bdcf18c8 --- /dev/null +++ b/translations/fa/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# تکلیف: دفترچه‌ها + +با استفاده از دفترچه‌های مرتبط با این درس (نسخه PyTorch یا TensorFlow)، آنها را با استفاده از مجموعه داده خودتان دوباره اجرا کنید، شاید یکی از مجموعه داده‌های Kaggle که با ذکر منبع استفاده شده باشد. دفترچه را بازنویسی کنید تا یافته‌های خودتان را برجسته کنید. یک نوع متفاوت از مجموعه داده را امتحان کنید و یافته‌های خود را مستند کنید، با استفاده از متنی مانند [این اشعار بیتلز](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/15-LanguageModeling/README.md b/translations/fa/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..bebe735c --- /dev/null +++ b/translations/fa/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# مدل‌سازی زبان + +بردارهای معنایی، مانند Word2Vec و GloVe، در واقع اولین گام به سمت **مدل‌سازی زبان** هستند - ایجاد مدل‌هایی که به نوعی *ماهیت* (یا *نمایش*) زبان را درک می‌کنند. + +## [پیش‌ آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +ایده اصلی مدل‌سازی زبان، آموزش آن‌ها بر روی داده‌های بدون برچسب به صورت نظارت‌نشده است. این موضوع اهمیت دارد زیرا حجم زیادی از متن‌های بدون برچسب در دسترس داریم، در حالی که مقدار متن‌های برچسب‌دار همیشه به میزان تلاشی که می‌توانیم برای برچسب‌گذاری صرف کنیم محدود خواهد بود. اغلب، می‌توانیم مدل‌های زبانی بسازیم که بتوانند **کلمات گمشده** در متن را پیش‌بینی کنند، زیرا حذف تصادفی یک کلمه از متن و استفاده از آن به عنوان نمونه آموزشی کار ساده‌ای است. + +## آموزش بردارها + +در مثال‌های قبلی، ما از بردارهای معنایی از پیش آموزش‌داده‌شده استفاده کردیم، اما جالب است ببینیم این بردارها چگونه آموزش داده می‌شوند. چندین ایده ممکن وجود دارد که می‌توان از آن‌ها استفاده کرد: + +* **مدل‌سازی زبان N-گرم**، که در آن یک توکن را با نگاه به N توکن قبلی پیش‌بینی می‌کنیم (N-گرم). +* **کیسه کلمات پیوسته** (CBoW)، که در آن توکن میانی $W_0$ را در یک دنباله توکن $W_{-N}$، ...، $W_N$ پیش‌بینی می‌کنیم. +* **اسکیپ‌گرم**، که در آن مجموعه‌ای از توکن‌های همسایه {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} را از توکن میانی $W_0$ پیش‌بینی می‌کنیم. + +![تصویری از مقاله‌ای درباره تبدیل کلمات به بردارها](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) + +> تصویر از [این مقاله](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ مثال‌های عملی: آموزش مدل CBoW + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: + +* [آموزش Word2Vec با استفاده از TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [آموزش Word2Vec با استفاده از PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## نتیجه‌گیری + +در درس قبلی دیدیم که بردارهای کلمات مانند جادو عمل می‌کنند! اکنون می‌دانیم که آموزش بردارهای کلمات کار پیچیده‌ای نیست و اگر نیاز باشد، می‌توانیم بردارهای کلمات خود را برای متون خاص یک حوزه آموزش دهیم. + +## [پس‌ آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## مرور و مطالعه شخصی + +* [آموزش رسمی PyTorch درباره مدل‌سازی زبان](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [آموزش رسمی TensorFlow درباره آموزش مدل Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* استفاده از فریم‌ورک **gensim** برای آموزش رایج‌ترین بردارها تنها در چند خط کد در [این مستندات](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) توضیح داده شده است. + +## 🚀 [تمرین: آموزش مدل اسکیپ‌گرم](lab/README.md) + +در آزمایشگاه، از شما می‌خواهیم کد این درس را تغییر دهید تا به جای CBoW، مدل اسکیپ‌گرم را آموزش دهید. [جزئیات را بخوانید](lab/README.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/fa/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..a1bf0cab --- /dev/null +++ b/translations/fa/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# آموزش مدل Skip-Gram + +تکلیف آزمایشگاهی از [برنامه درسی هوش مصنوعی برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +در این آزمایشگاه، از شما خواسته می‌شود که مدل Word2Vec را با استفاده از تکنیک Skip-Gram آموزش دهید. یک شبکه با embedding آموزش دهید تا کلمات همسایه را در یک پنجره Skip-Gram با عرض $N$ توکن پیش‌بینی کند. می‌توانید از [کد این درس](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) استفاده کرده و آن را کمی تغییر دهید. + +## مجموعه داده + +می‌توانید از هر کتابی استفاده کنید. تعداد زیادی متن رایگان در [پروژه گوتنبرگ](https://www.gutenberg.org/) پیدا می‌شود. به عنوان مثال، اینجا یک لینک مستقیم به [ماجراهای آلیس در سرزمین عجایب](https://www.gutenberg.org/files/11/11-0.txt) نوشته لوئیس کارول وجود دارد. یا می‌توانید از نمایشنامه‌های شکسپیر استفاده کنید که می‌توانید با استفاده از کد زیر دریافت کنید: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## کاوش کنید! + +اگر زمان دارید و می‌خواهید عمیق‌تر به موضوع بپردازید، چند مورد را بررسی کنید: + +* اندازه embedding چگونه بر نتایج تأثیر می‌گذارد؟ +* سبک‌های مختلف متن چگونه بر نتیجه تأثیر می‌گذارند؟ +* چند کلمه بسیار متفاوت و مترادف‌های آن‌ها را انتخاب کنید، نمایش‌های برداری آن‌ها را به دست آورید، PCA را برای کاهش ابعاد به ۲ اعمال کنید و آن‌ها را در فضای دوبعدی رسم کنید. آیا الگوهایی مشاهده می‌کنید؟ + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/16-RNN/README.md b/translations/fa/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..e715296c --- /dev/null +++ b/translations/fa/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# شبکه‌های عصبی بازگشتی + +## [پیش‌زمینه: آزمون کوتاه](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +در بخش‌های قبلی، ما از نمایش‌های معنایی غنی متن و یک طبقه‌بند خطی ساده بر روی تعبیه‌ها استفاده کرده‌ایم. این معماری معنای کلی کلمات در یک جمله را ثبت می‌کند، اما ترتیب کلمات را در نظر نمی‌گیرد، زیرا عملیات تجمیع بر روی تعبیه‌ها این اطلاعات را از متن اصلی حذف می‌کند. به دلیل اینکه این مدل‌ها قادر به مدل‌سازی ترتیب کلمات نیستند، نمی‌توانند وظایف پیچیده‌تر یا مبهم‌تر مانند تولید متن یا پاسخ به سوالات را حل کنند. + +برای ثبت معنای دنباله متن، باید از معماری دیگری از شبکه‌های عصبی استفاده کنیم که به آن **شبکه عصبی بازگشتی** یا RNN گفته می‌شود. در RNN، جمله را به صورت نماد به نماد از طریق شبکه عبور می‌دهیم و شبکه یک **وضعیت** تولید می‌کند که سپس با نماد بعدی دوباره به شبکه داده می‌شود. + +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) + +> تصویر توسط نویسنده + +با توجه به دنباله ورودی توکن‌ها X0,...,Xn، RNN یک دنباله از بلوک‌های شبکه عصبی ایجاد می‌کند و این دنباله را به صورت انتها به انتها با استفاده از پس‌انتشار آموزش می‌دهد. هر بلوک شبکه یک جفت (Xi,Si) را به عنوان ورودی می‌گیرد و Si+1 را به عنوان نتیجه تولید می‌کند. وضعیت نهایی Sn یا (خروجی Yn) به یک طبقه‌بند خطی داده می‌شود تا نتیجه تولید شود. تمام بلوک‌های شبکه وزن‌های یکسانی دارند و به صورت انتها به انتها با یک پاس پس‌انتشار آموزش داده می‌شوند. + +به دلیل اینکه بردارهای وضعیت S0,...,Sn از طریق شبکه عبور می‌کنند، شبکه قادر است وابستگی‌های دنباله‌ای بین کلمات را یاد بگیرد. برای مثال، وقتی کلمه *نه* در جایی از دنباله ظاهر می‌شود، می‌تواند یاد بگیرد که برخی عناصر درون بردار وضعیت را نفی کند و نتیجه نفی را ایجاد کند. + +> ✅ از آنجا که وزن‌های تمام بلوک‌های RNN در تصویر بالا مشترک هستند، همان تصویر می‌تواند به صورت یک بلوک (در سمت راست) با یک حلقه بازگشتی نمایش داده شود که وضعیت خروجی شبکه را به ورودی بازمی‌گرداند. + +## ساختار یک سلول RNN + +بیایید ببینیم یک سلول ساده RNN چگونه سازماندهی شده است. این سلول وضعیت قبلی Si-1 و نماد فعلی Xi را به عنوان ورودی می‌پذیرد و باید وضعیت خروجی Si (و گاهی اوقات خروجی دیگری Yi، همانطور که در مورد شبکه‌های تولیدی وجود دارد) را تولید کند. + +یک سلول ساده RNN دو ماتریس وزن داخلی دارد: یکی نماد ورودی را تبدیل می‌کند (آن را W می‌نامیم)، و دیگری وضعیت ورودی را تبدیل می‌کند (H). در این حالت خروجی شبکه به صورت σ(W×Xi+H×Si-1+b) محاسبه می‌شود، که در آن σ تابع فعال‌سازی و b بایاس اضافی است. + +ساختار سلول RNN + +> تصویر توسط نویسنده + +در بسیاری از موارد، توکن‌های ورودی قبل از ورود به RNN از لایه تعبیه عبور می‌کنند تا ابعاد کاهش یابد. در این حالت، اگر بعد بردارهای ورودی *emb_size* باشد و بردار وضعیت *hid_size* باشد - اندازه W برابر *emb_size*×*hid_size* و اندازه H برابر *hid_size*×*hid_size* خواهد بود. + +## حافظه بلندمدت کوتاه (LSTM) + +یکی از مشکلات اصلی RNN‌های کلاسیک مشکل **گرادیان‌های ناپدیدشونده** است. به دلیل اینکه RNN‌ها به صورت انتها به انتها در یک پاس پس‌انتشار آموزش داده می‌شوند، انتقال خطا به لایه‌های اولیه شبکه دشوار است و بنابراین شبکه نمی‌تواند روابط بین توکن‌های دور را یاد بگیرد. یکی از راه‌های جلوگیری از این مشکل معرفی **مدیریت وضعیت صریح** با استفاده از **دروازه‌ها** است. دو معماری معروف از این نوع وجود دارد: **حافظه بلندمدت کوتاه** (LSTM) و **واحد انتقال دروازه‌ای** (GRU). + +![تصویر نشان‌دهنده یک سلول حافظه بلندمدت کوتاه](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> منبع تصویر TBD + +شبکه LSTM به شکلی مشابه RNN سازماندهی شده است، اما دو وضعیت از لایه‌ای به لایه دیگر منتقل می‌شوند: وضعیت واقعی C و بردار مخفی H. در هر واحد، بردار مخفی Hi با ورودی Xi ترکیب می‌شود و آنها کنترل می‌کنند که چه اتفاقی برای وضعیت C از طریق **دروازه‌ها** بیفتد. هر دروازه یک شبکه عصبی با فعال‌سازی سیگموئید (خروجی در محدوده [0,1]) است که می‌توان آن را به عنوان یک ماسک بیتی در نظر گرفت که وقتی با بردار وضعیت ضرب می‌شود، عمل می‌کند. دروازه‌های زیر وجود دارند (از چپ به راست در تصویر بالا): + +* **دروازه فراموشی** بردار مخفی را می‌گیرد و تعیین می‌کند که کدام اجزای بردار C باید فراموش شوند و کدام باید عبور کنند. +* **دروازه ورودی** اطلاعاتی از ورودی و بردارهای مخفی می‌گیرد و آن را وارد وضعیت می‌کند. +* **دروازه خروجی** وضعیت را از طریق یک لایه خطی با فعال‌سازی *tanh* تبدیل می‌کند، سپس برخی از اجزای آن را با استفاده از بردار مخفی Hi انتخاب می‌کند تا وضعیت جدید Ci+1 تولید شود. + +اجزای وضعیت C را می‌توان به عنوان برخی پرچم‌ها در نظر گرفت که می‌توانند روشن و خاموش شوند. برای مثال، وقتی نام *آلیس* را در دنباله مشاهده می‌کنیم، ممکن است بخواهیم فرض کنیم که به یک شخصیت زن اشاره دارد و پرچم را در وضعیت بالا ببریم که یک اسم زنانه در جمله داریم. وقتی عبارت *و تام* را مشاهده می‌کنیم، پرچم را بالا می‌بریم که یک اسم جمع داریم. بنابراین با دستکاری وضعیت می‌توانیم به طور فرضی ویژگی‌های دستوری بخش‌های جمله را پیگیری کنیم. + +> ✅ یک منبع عالی برای درک جزئیات داخلی LSTM این مقاله فوق‌العاده [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) نوشته کریستوفر اولا است. + +## RNN‌های دوطرفه و چندلایه + +ما شبکه‌های بازگشتی را که در یک جهت عمل می‌کنند، از ابتدای دنباله تا انتها، مورد بحث قرار داده‌ایم. این روش طبیعی به نظر می‌رسد، زیرا شبیه به نحوه خواندن و گوش دادن به گفتار است. با این حال، از آنجا که در بسیاری از موارد عملی به دنباله ورودی دسترسی تصادفی داریم، ممکن است منطقی باشد که محاسبات بازگشتی را در هر دو جهت اجرا کنیم. چنین شبکه‌هایی **RNN‌های دوطرفه** نامیده می‌شوند. هنگام کار با شبکه دوطرفه، به دو بردار وضعیت مخفی نیاز داریم، یکی برای هر جهت. + +یک شبکه بازگشتی، چه یک‌طرفه و چه دوطرفه، الگوهای خاصی را در یک دنباله ثبت می‌کند و می‌تواند آنها را در یک بردار وضعیت ذخیره کند یا به خروجی منتقل کند. همانند شبکه‌های کانولوشنی، می‌توانیم یک لایه بازگشتی دیگر بر روی لایه اول بسازیم تا الگوهای سطح بالاتر را ثبت کنیم و از الگوهای سطح پایین استخراج‌شده توسط لایه اول بسازیم. این ما را به مفهوم **RNN چندلایه** می‌رساند که شامل دو یا چند شبکه بازگشتی است، جایی که خروجی لایه قبلی به عنوان ورودی به لایه بعدی منتقل می‌شود. + +![تصویر نشان‌دهنده یک RNN چندلایه حافظه بلندمدت کوتاه](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) + +*تصویر از [این پست فوق‌العاده](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) نوشته فرناندو لوپز* + +## ✍️ تمرین‌ها: تعبیه‌ها + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: + +* [RNN‌ها با PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN‌ها با TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## نتیجه‌گیری + +در این واحد، دیدیم که RNN‌ها می‌توانند برای طبقه‌بندی دنباله استفاده شوند، اما در واقع، آنها می‌توانند بسیاری از وظایف دیگر مانند تولید متن، ترجمه ماشینی و موارد دیگر را انجام دهند. ما این وظایف را در واحد بعدی بررسی خواهیم کرد. + +## 🚀 چالش + +برخی از مقالات درباره LSTM‌ها را مطالعه کنید و کاربردهای آنها را بررسی کنید: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## مرور و مطالعه خودآموز + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) نوشته کریستوفر اولا. + +## [تکلیف: نوت‌بوک‌ها](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/16-RNN/assignment.md b/translations/fa/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..2921beb2 --- /dev/null +++ b/translations/fa/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# تکلیف: نوت‌بوک‌ها + +با استفاده از نوت‌بوک‌های مرتبط با این درس (نسخه PyTorch یا TensorFlow)، آن‌ها را با استفاده از دیتاست خودتان دوباره اجرا کنید، شاید یک دیتاست از Kaggle که با ذکر منبع استفاده شده باشد. نوت‌بوک را بازنویسی کنید تا یافته‌های خودتان را برجسته کنید. یک نوع دیتاست متفاوت را امتحان کنید و یافته‌های خود را مستند کنید، با استفاده از متنی مانند [این دیتاست مسابقه Kaggle درباره توییت‌های آب‌وهوایی](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/fa/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..f472d6c3 --- /dev/null +++ b/translations/fa/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# شبکه‌های مولد + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +شبکه‌های عصبی بازگشتی (RNNs) و انواع سلول‌های دروازه‌دار آن‌ها مانند سلول‌های حافظه بلندمدت (LSTMs) و واحدهای بازگشتی دروازه‌دار (GRUs) مکانیزمی برای مدل‌سازی زبان فراهم کردند که می‌توانند ترتیب کلمات را یاد بگیرند و پیش‌بینی‌هایی برای کلمه بعدی در یک دنباله ارائه دهند. این قابلیت به ما اجازه می‌دهد از RNNها برای **وظایف مولد** استفاده کنیم، مانند تولید متن معمولی، ترجمه ماشینی، و حتی توضیحات تصویری. + +> ✅ به تمام مواقعی فکر کنید که از وظایف مولد مانند تکمیل متن هنگام تایپ بهره برده‌اید. درباره برنامه‌های مورد علاقه‌تان تحقیق کنید تا ببینید آیا از RNNها استفاده کرده‌اند. + +در معماری RNN که در واحد قبلی بحث کردیم، هر واحد RNN حالت مخفی بعدی را به عنوان خروجی تولید می‌کرد. با این حال، می‌توانیم خروجی دیگری به هر واحد بازگشتی اضافه کنیم که به ما اجازه می‌دهد یک **دنباله** (که طول آن برابر با دنباله اصلی است) خروجی بدهیم. علاوه بر این، می‌توانیم از واحدهای RNN استفاده کنیم که در هر مرحله ورودی دریافت نمی‌کنند و فقط یک بردار حالت اولیه می‌گیرند و سپس یک دنباله خروجی تولید می‌کنند. + +این قابلیت معماری‌های عصبی مختلفی را فراهم می‌کند که در تصویر زیر نشان داده شده‌اند: + +![تصویری که الگوهای رایج شبکه‌های عصبی بازگشتی را نشان می‌دهد.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) + +> تصویر از پست وبلاگ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) نوشته [آندری کارپاتی](http://karpathy.github.io/) + +* **یک به یک** یک شبکه عصبی سنتی با یک ورودی و یک خروجی است. +* **یک به چند** یک معماری مولد است که یک مقدار ورودی دریافت می‌کند و یک دنباله از مقادیر خروجی تولید می‌کند. به عنوان مثال، اگر بخواهیم یک شبکه **توضیحات تصویری** آموزش دهیم که توضیحات متنی یک تصویر را تولید کند، می‌توانیم یک تصویر به عنوان ورودی بدهیم، آن را از طریق یک CNN عبور دهیم تا حالت مخفی آن را به دست آوریم، و سپس یک زنجیره بازگشتی کلمه به کلمه توضیحات را تولید کند. +* **چند به یک** مربوط به معماری‌های RNN است که در واحد قبلی توضیح دادیم، مانند طبقه‌بندی متن. +* **چند به چند** یا **دنباله به دنباله** مربوط به وظایفی مانند **ترجمه ماشینی** است، جایی که ابتدا RNN تمام اطلاعات دنباله ورودی را در حالت مخفی جمع‌آوری می‌کند و سپس یک زنجیره RNN دیگر این حالت را به دنباله خروجی باز می‌کند. + +در این واحد، ما بر مدل‌های مولد ساده تمرکز خواهیم کرد که به ما کمک می‌کنند متن تولید کنیم. برای سادگی، از توکن‌سازی سطح کاراکتر استفاده خواهیم کرد. + +ما این RNN را آموزش خواهیم داد تا متن را مرحله به مرحله تولید کند. در هر مرحله، یک دنباله از کاراکترها به طول `nchars` می‌گیریم و از شبکه می‌خواهیم کاراکتر خروجی بعدی را برای هر کاراکتر ورودی تولید کند: + +![تصویری که یک مثال از تولید کلمه 'HELLO' توسط RNN را نشان می‌دهد.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) + +هنگام تولید متن (در زمان استنتاج)، با یک **پیش‌زمینه** شروع می‌کنیم که از طریق سلول‌های RNN عبور داده می‌شود تا حالت میانی آن تولید شود، و سپس از این حالت تولید آغاز می‌شود. ما یک کاراکتر را در هر زمان تولید می‌کنیم و حالت و کاراکتر تولید شده را به یک سلول RNN دیگر می‌دهیم تا کاراکتر بعدی را تولید کند، تا زمانی که به اندازه کافی کاراکتر تولید کنیم. + + + +> تصویر توسط نویسنده + +## ✍️ تمرین‌ها: شبکه‌های مولد + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: + +* [شبکه‌های مولد با PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [شبکه‌های مولد با TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## تولید متن نرم و دما + +خروجی هر سلول RNN یک توزیع احتمالی از کاراکترها است. اگر همیشه کاراکتری با بالاترین احتمال را به عنوان کاراکتر بعدی در متن تولید شده انتخاب کنیم، متن اغلب ممکن است بین دنباله‌های کاراکتری مشابه بارها و بارها "چرخه" شود، مانند این مثال: + +``` +today of the second the company and a second the company ... +``` + +با این حال، اگر به توزیع احتمالی برای کاراکتر بعدی نگاه کنیم، ممکن است تفاوت بین چند احتمال بالاتر زیاد نباشد، به عنوان مثال یک کاراکتر ممکن است احتمال 0.2 داشته باشد و دیگری 0.19. برای مثال، هنگام جستجوی کاراکتر بعدی در دنباله '*play*'، کاراکتر بعدی می‌تواند به همان اندازه فضای خالی یا **e** باشد (مانند کلمه *player*). + +این ما را به این نتیجه می‌رساند که همیشه انتخاب کاراکتر با احتمال بالاتر "منصفانه" نیست، زیرا انتخاب دومین احتمال بالاتر همچنان می‌تواند به متن معنادار منجر شود. عاقلانه‌تر است که **نمونه‌گیری** کاراکترها را از توزیع احتمالی ارائه شده توسط خروجی شبکه انجام دهیم. همچنین می‌توانیم از یک پارامتر به نام **دما** استفاده کنیم که توزیع احتمالی را صاف‌تر کند، در صورتی که بخواهیم تصادفی بیشتری اضافه کنیم، یا آن را شیب‌دارتر کنیم، اگر بخواهیم بیشتر به کاراکترهای با احتمال بالاتر پایبند باشیم. + +بررسی کنید که این تولید متن نرم چگونه در نوت‌بوک‌های لینک شده بالا پیاده‌سازی شده است. + +## نتیجه‌گیری + +در حالی که تولید متن ممکن است به خودی خود مفید باشد، مزایای اصلی از توانایی تولید متن با استفاده از RNNها از یک بردار ویژگی اولیه ناشی می‌شود. به عنوان مثال، تولید متن به عنوان بخشی از ترجمه ماشینی استفاده می‌شود (دنباله به دنباله، در این حالت بردار حالت از *رمزگذار* برای تولید یا *رمزگشایی* پیام ترجمه شده استفاده می‌شود)، یا تولید توضیحات متنی یک تصویر (در این حالت بردار ویژگی از استخراج‌کننده CNN می‌آید). + +## 🚀 چالش + +برخی درس‌ها را در Microsoft Learn در این موضوع بگذرانید: + +* تولید متن با [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## مرور و مطالعه خودآموز + +در اینجا برخی مقالات برای گسترش دانش شما آورده شده است: + +* رویکردهای مختلف برای تولید متن با زنجیره مارکوف، LSTM و GPT-2: [پست وبلاگ](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* نمونه تولید متن در [مستندات Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [تکلیف](lab/README.md) + +ما دیدیم که چگونه متن را کاراکتر به کاراکتر تولید کنیم. در آزمایشگاه، تولید متن در سطح کلمه را بررسی خواهید کرد. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/fa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..47b74fc7 --- /dev/null +++ b/translations/fa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# تولید متن در سطح کلمه با استفاده از RNN + +تکلیف آزمایشگاهی از [برنامه درسی هوش مصنوعی برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +در این آزمایشگاه، شما باید یک کتاب انتخاب کنید و از آن به عنوان مجموعه داده برای آموزش یک تولیدکننده متن در سطح کلمه استفاده کنید. + +## مجموعه داده + +شما می‌توانید از هر کتابی استفاده کنید. تعداد زیادی متن رایگان در [پروژه گوتنبرگ](https://www.gutenberg.org/) موجود است. به عنوان مثال، اینجا یک لینک مستقیم به [ماجراهای آلیس در سرزمین عجایب](https://www.gutenberg.org/files/11/11-0.txt) نوشته لوئیس کارول وجود دارد. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/18-Transformers/README.md b/translations/fa/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..3d5fd32b --- /dev/null +++ b/translations/fa/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# مکانیزم‌های توجه و مدل‌های ترانسفورمر + +## [پیش‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +یکی از مهم‌ترین مسائل در حوزه پردازش زبان طبیعی (NLP) **ترجمه ماشینی** است، که یک وظیفه اساسی در ابزارهایی مانند Google Translate محسوب می‌شود. در این بخش، ما بر ترجمه ماشینی تمرکز خواهیم کرد، یا به طور کلی‌تر، بر هر وظیفه‌ای که به صورت *توالی به توالی* انجام می‌شود (که به آن **تبدیل جمله** نیز گفته می‌شود). + +در شبکه‌های عصبی بازگشتی (RNNs)، وظیفه توالی به توالی توسط دو شبکه بازگشتی پیاده‌سازی می‌شود، که در آن یک شبکه، **رمزگذار**، یک توالی ورودی را به یک حالت مخفی تبدیل می‌کند، و شبکه دیگر، **رمزگشا**، این حالت مخفی را به نتیجه ترجمه‌شده باز می‌گرداند. این روش با چند مشکل مواجه است: + +* حالت نهایی شبکه رمزگذار به سختی می‌تواند ابتدای جمله را به خاطر بسپارد، که باعث کاهش کیفیت مدل برای جملات طولانی می‌شود. +* تمام کلمات در یک توالی تأثیر یکسانی بر نتیجه دارند. در واقعیت، برخی کلمات در توالی ورودی تأثیر بیشتری بر خروجی‌های متوالی دارند. + +**مکانیزم‌های توجه** راهی برای وزن‌دهی تأثیر متنی هر بردار ورودی بر هر پیش‌بینی خروجی RNN فراهم می‌کنند. این مکانیزم با ایجاد میانبرهایی بین حالت‌های میانی RNN ورودی و RNN خروجی پیاده‌سازی می‌شود. به این ترتیب، هنگام تولید نماد خروجی yt، تمام حالت‌های مخفی ورودی hi را با ضرایب وزنی مختلف αt,i در نظر می‌گیریم. + +![تصویری از مدل رمزگذار/رمزگشا با لایه توجه افزایشی](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> مدل رمزگذار-رمزگشا با مکانیزم توجه افزایشی در [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)، نقل شده از [این پست وبلاگ](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +ماتریس توجه {αi,j} نشان‌دهنده درجه‌ای است که کلمات خاص ورودی در تولید یک کلمه خاص در توالی خروجی نقش دارند. در زیر نمونه‌ای از چنین ماتریسی آورده شده است: + +![تصویری از نمونه هم‌ترازی یافت شده توسط RNNsearch-50، گرفته شده از Bahdanau - arviz.org](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> تصویر از [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (شکل ۳) + +مکانیزم‌های توجه مسئول بسیاری از وضعیت‌های فعلی یا نزدیک به وضعیت فعلی در پردازش زبان طبیعی هستند. افزودن توجه، با این حال، تعداد پارامترهای مدل را به طور قابل توجهی افزایش می‌دهد که منجر به مشکلات مقیاس‌پذیری در RNNها می‌شود. یک محدودیت کلیدی در مقیاس‌پذیری RNNها این است که ماهیت بازگشتی مدل‌ها باعث می‌شود آموزش دسته‌ای و موازی‌سازی چالش‌برانگیز باشد. در RNN، هر عنصر از یک توالی باید به ترتیب پردازش شود، که به این معنی است که نمی‌توان آن را به راحتی موازی‌سازی کرد. + +![رمزگذار رمزگشا با توجه](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> تصویر از [وبلاگ گوگل](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +پذیرش مکانیزم‌های توجه همراه با این محدودیت منجر به ایجاد مدل‌های ترانسفورمر شد که اکنون به عنوان وضعیت فعلی هنر شناخته می‌شوند، مانند BERT و Open-GPT3. + +## مدل‌های ترانسفورمر + +یکی از ایده‌های اصلی پشت ترانسفورمرها این است که از ماهیت ترتیبی RNNها اجتناب شود و مدلی ایجاد شود که در طول آموزش قابل موازی‌سازی باشد. این امر با پیاده‌سازی دو ایده محقق می‌شود: + +* کدگذاری موقعیتی +* استفاده از مکانیزم توجه به خود برای شناسایی الگوها به جای RNNها (یا CNNها) (به همین دلیل مقاله‌ای که ترانسفورمرها را معرفی می‌کند *[Attention is all you need](https://arxiv.org/abs/1706.03762)* نام دارد) + +### کدگذاری/تعبیه موقعیتی + +ایده کدگذاری موقعیتی به شرح زیر است: +1. هنگام استفاده از RNNها، موقعیت نسبی توکن‌ها با تعداد مراحل نشان داده می‌شود و بنابراین نیازی به نمایش صریح ندارد. +2. با این حال، هنگامی که به توجه سوئیچ می‌کنیم، باید موقعیت نسبی توکن‌ها در یک توالی را بدانیم. +3. برای دریافت کدگذاری موقعیتی، توالی توکن‌های خود را با یک توالی از موقعیت‌های توکن در توالی (یعنی یک توالی از اعداد 0، 1، ...) تقویت می‌کنیم. +4. سپس موقعیت توکن را با یک بردار تعبیه توکن ترکیب می‌کنیم. برای تبدیل موقعیت (عدد صحیح) به یک بردار، می‌توانیم از روش‌های مختلفی استفاده کنیم: + +* تعبیه قابل آموزش، مشابه تعبیه توکن. این روش را در اینجا در نظر می‌گیریم. لایه‌های تعبیه را بر روی توکن‌ها و موقعیت‌های آن‌ها اعمال می‌کنیم، که منجر به بردارهای تعبیه با ابعاد یکسان می‌شود، که سپس آن‌ها را با هم جمع می‌کنیم. +* تابع کدگذاری موقعیت ثابت، همانطور که در مقاله اصلی پیشنهاد شده است. + + + +> تصویر توسط نویسنده + +نتیجه‌ای که با تعبیه موقعیتی به دست می‌آوریم، هم توکن اصلی و هم موقعیت آن در یک توالی را تعبیه می‌کند. + +### توجه به خود چند‌سری + +سپس، باید برخی الگوها را در توالی خود شناسایی کنیم. برای انجام این کار، ترانسفورمرها از مکانیزم **توجه به خود** استفاده می‌کنند، که اساساً توجهی است که به همان توالی به عنوان ورودی و خروجی اعمال می‌شود. اعمال توجه به خود به ما امکان می‌دهد **زمینه** را در جمله در نظر بگیریم و ببینیم کدام کلمات به هم مرتبط هستند. به عنوان مثال، این امکان را فراهم می‌کند که ببینیم کدام کلمات توسط ارجاعات مانند *آن* اشاره شده‌اند و همچنین زمینه را در نظر بگیریم: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> تصویر از [وبلاگ گوگل](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +در ترانسفورمرها، از **توجه چند‌سری** استفاده می‌کنیم تا به شبکه قدرت شناسایی چندین نوع وابستگی مختلف را بدهیم، مانند روابط کلمات بلندمدت در مقابل کوتاه‌مدت، ارجاع متقابل در مقابل چیز دیگری، و غیره. + +[دفترچه TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) جزئیات بیشتری در مورد پیاده‌سازی لایه‌های ترانسفورمر ارائه می‌دهد. + +### توجه رمزگذار-رمزگشا + +در ترانسفورمرها، توجه در دو مکان استفاده می‌شود: + +* برای شناسایی الگوها در متن ورودی با استفاده از توجه به خود +* برای انجام ترجمه توالی - این لایه توجه بین رمزگذار و رمزگشا است. + +توجه رمزگذار-رمزگشا بسیار مشابه مکانیزم توجه استفاده‌شده در RNNها است، همانطور که در ابتدای این بخش توضیح داده شد. این نمودار متحرک نقش توجه رمزگذار-رمزگشا را توضیح می‌دهد. + +![GIF متحرک نشان‌دهنده نحوه ارزیابی‌ها در مدل‌های ترانسفورمر.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +از آنجا که هر موقعیت ورودی به طور مستقل به هر موقعیت خروجی نگاشت می‌شود، ترانسفورمرها بهتر از RNNها موازی‌سازی می‌شوند، که امکان مدل‌های زبان بسیار بزرگ‌تر و بیانگرتر را فراهم می‌کند. هر سر توجه می‌تواند برای یادگیری روابط مختلف بین کلمات استفاده شود که وظایف پردازش زبان طبیعی پایین‌دستی را بهبود می‌بخشد. + +## BERT + +**BERT** (نمایش‌های رمزگذار دوطرفه از ترانسفورمرها) یک شبکه ترانسفورمر چندلایه بسیار بزرگ است که دارای ۱۲ لایه برای *BERT-base* و ۲۴ لایه برای *BERT-large* است. این مدل ابتدا بر روی یک مجموعه داده بزرگ از متن (ویکی‌پدیا + کتاب‌ها) با استفاده از آموزش بدون نظارت (پیش‌بینی کلمات ماسک‌شده در یک جمله) پیش‌آموزش داده می‌شود. در طول پیش‌آموزش، مدل سطوح قابل توجهی از درک زبان را جذب می‌کند که سپس می‌توان با مجموعه داده‌های دیگر از طریق تنظیم دقیق استفاده کرد. این فرآیند **یادگیری انتقالی** نامیده می‌شود. + +![تصویر از http://jalammar.github.io/illustrated-bert/](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> تصویر [منبع](http://jalammar.github.io/illustrated-bert/) + +## ✍️ تمرین‌ها: ترانسفورمرها + +یادگیری خود را در دفترچه‌های زیر ادامه دهید: + +* [ترانسفورمرها در PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [ترانسفورمرها در TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## نتیجه‌گیری + +در این درس شما درباره ترانسفورمرها و مکانیزم‌های توجه، ابزارهای ضروری در جعبه‌ابزار NLP، یاد گرفتید. انواع مختلفی از معماری‌های ترانسفورمر وجود دارد، از جمله BERT، DistilBERT، BigBird، OpenGPT3 و موارد دیگر که می‌توان آن‌ها را تنظیم دقیق کرد. بسته [HuggingFace](https://github.com/huggingface/) مخزنی برای آموزش بسیاری از این معماری‌ها با استفاده از PyTorch و TensorFlow فراهم می‌کند. + +## 🚀 چالش + +## [پس‌آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## مرور و مطالعه خودآموز + +* [پست وبلاگ](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/)، توضیح‌دهنده مقاله کلاسیک [Attention is all you need](https://arxiv.org/abs/1706.03762) درباره ترانسفورمرها. +* [مجموعه‌ای از پست‌های وبلاگ](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) درباره ترانسفورمرها، توضیح‌دهنده معماری به صورت جزئی. + +## [تکلیف](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/18-Transformers/assignment.md b/translations/fa/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..bcc37c2f --- /dev/null +++ b/translations/fa/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# تکلیف: ترانسفورمرها + +با ترانسفورمرها در HuggingFace کار کنید! برخی از اسکریپت‌هایی که آن‌ها برای کار با مدل‌های مختلف در سایتشان ارائه می‌دهند را امتحان کنید: https://huggingface.co/docs/transformers/run_scripts. یکی از دیتاست‌های آن‌ها را امتحان کنید، سپس یکی از دیتاست‌های خودتان را از این دوره آموزشی یا از Kaggle وارد کنید و ببینید آیا می‌توانید متون جالبی تولید کنید. یک نوت‌بوک با یافته‌های خود تهیه کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/19-NER/README.md b/translations/fa/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..df39820e --- /dev/null +++ b/translations/fa/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,93 @@ + +# شناسایی موجودیت‌های نام‌گذاری‌شده + +تا به حال، بیشتر بر روی یک وظیفه پردازش زبان طبیعی (NLP) - طبقه‌بندی - تمرکز کرده‌ایم. با این حال، وظایف دیگری نیز در NLP وجود دارند که می‌توان با استفاده از شبکه‌های عصبی انجام داد. یکی از این وظایف **[شناسایی موجودیت‌های نام‌گذاری‌شده](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) است که به شناسایی موجودیت‌های خاص در متن می‌پردازد، مانند مکان‌ها، نام افراد، بازه‌های زمانی، فرمول‌های شیمیایی و غیره. + +## [پیش‌از‌درس: آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## مثال استفاده از NER + +فرض کنید می‌خواهید یک چت‌بات زبان طبیعی توسعه دهید، مشابه Amazon Alexa یا Google Assistant. روش کار چت‌بات‌های هوشمند این است که با انجام طبقه‌بندی متن بر روی جمله ورودی، *درک* کنند که کاربر چه می‌خواهد. نتیجه این طبقه‌بندی چیزی است که به آن **قصد** (intent) می‌گویند و مشخص می‌کند که چت‌بات باید چه کاری انجام دهد. + +Bot NER + +> تصویر از نویسنده + +با این حال، ممکن است کاربر برخی پارامترها را به عنوان بخشی از عبارت ارائه دهد. به عنوان مثال، هنگام درخواست وضعیت آب‌وهوا، ممکن است مکان یا تاریخ را مشخص کند. یک چت‌بات باید بتواند این موجودیت‌ها را درک کند و شکاف‌های پارامتر را قبل از انجام عمل پر کند. این دقیقاً جایی است که NER وارد عمل می‌شود. + +> ✅ مثال دیگر می‌تواند [تحلیل مقالات علمی پزشکی](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) باشد. یکی از موارد اصلی که باید به دنبال آن بگردیم، اصطلاحات پزشکی خاص مانند بیماری‌ها و مواد دارویی است. در حالی که تعداد کمی از بیماری‌ها احتمالاً با جستجوی زیررشته قابل استخراج هستند، موجودیت‌های پیچیده‌تر مانند ترکیبات شیمیایی و نام داروها به رویکرد پیچیده‌تری نیاز دارند. + +## NER به عنوان طبقه‌بندی توکن + +مدل‌های NER اساساً **مدل‌های طبقه‌بندی توکن** هستند، زیرا برای هر یک از توکن‌های ورودی باید تصمیم بگیریم که آیا به یک موجودیت تعلق دارد یا خیر، و اگر تعلق دارد - به کدام کلاس موجودیت. + +به عنوان مثال، عنوان مقاله زیر را در نظر بگیرید: + +**نارسایی دریچه سه‌لتی** و **کربنات لیتیوم** **مسمومیت** در یک نوزاد. + +موجودیت‌ها در اینجا عبارتند از: + +* نارسایی دریچه سه‌لتی یک بیماری است (`DIS`) +* کربنات لیتیوم یک ماده شیمیایی است (`CHEM`) +* مسمومیت نیز یک بیماری است (`DIS`) + +توجه کنید که یک موجودیت می‌تواند شامل چندین توکن باشد. و همان‌طور که در این مورد می‌بینید، باید بین دو موجودیت متوالی تمایز قائل شویم. بنابراین، معمولاً از دو کلاس برای هر موجودیت استفاده می‌شود - یکی برای مشخص کردن اولین توکن موجودیت (اغلب از پیشوند `B-` برای **آغاز** استفاده می‌شود) و دیگری برای ادامه موجودیت (`I-`، برای توکن **داخلی**). همچنین از `O` به عنوان کلاسی برای نشان دادن تمام توکن‌های **دیگر** استفاده می‌کنیم. این نوع برچسب‌گذاری توکن [برچسب‌گذاری BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (یا IOB) نامیده می‌شود. وقتی برچسب‌گذاری شود، عنوان ما به این صورت خواهد بود: + +توکن | برچسب +------|----- +نارسایی | B-DIS +دریچه | I-DIS +سه‌لتی | I-DIS +و | O +کربنات | B-CHEM +لیتیوم | I-CHEM +مسمومیت | B-DIS +در | O +یک | O +نوزاد | O +. | O + +از آنجا که باید یک تطابق یک‌به‌یک بین توکن‌ها و کلاس‌ها ایجاد کنیم، می‌توانیم یک مدل شبکه عصبی **چند-به-چند** از این تصویر بسازیم: + +![تصویری که الگوهای رایج شبکه عصبی بازگشتی را نشان می‌دهد.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) + +> *تصویر از [این پست وبلاگ](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) توسط [آندری کارپاتی](http://karpathy.github.io/). مدل‌های طبقه‌بندی توکن NER با معماری شبکه سمت راست در این تصویر مطابقت دارند.* + +## آموزش مدل‌های NER + +از آنجا که یک مدل NER اساساً یک مدل طبقه‌بندی توکن است، می‌توانیم از RNNهایی که قبلاً با آن‌ها آشنا شده‌ایم برای این وظیفه استفاده کنیم. در این حالت، هر بلوک شبکه بازگشتی شناسه توکن را بازمی‌گرداند. نوت‌بوک نمونه زیر نشان می‌دهد که چگونه می‌توان LSTM را برای طبقه‌بندی توکن آموزش داد. + +## ✍️ نوت‌بوک‌های نمونه: NER + +یادگیری خود را در نوت‌بوک زیر ادامه دهید: + +* [NER با TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## نتیجه‌گیری + +یک مدل NER یک **مدل طبقه‌بندی توکن** است، به این معنی که می‌توان از آن برای انجام طبقه‌بندی توکن استفاده کرد. این یک وظیفه بسیار رایج در NLP است که به شناسایی موجودیت‌های خاص در متن از جمله مکان‌ها، نام‌ها، تاریخ‌ها و موارد دیگر کمک می‌کند. + +## 🚀 چالش + +تکلیف زیر را کامل کنید تا یک مدل شناسایی موجودیت‌های نام‌گذاری‌شده برای اصطلاحات پزشکی آموزش دهید، سپس آن را بر روی یک مجموعه داده متفاوت امتحان کنید. + +## [پس‌از‌درس: آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## مرور و مطالعه شخصی + +پست وبلاگ [اثربخشی غیرمنتظره شبکه‌های عصبی بازگشتی](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) را بخوانید و بخش مطالعه بیشتر در آن مقاله را دنبال کنید تا دانش خود را عمیق‌تر کنید. + +## [تکلیف](lab/README.md) + +در تکلیف این درس، باید یک مدل شناسایی موجودیت‌های پزشکی آموزش دهید. می‌توانید با آموزش یک مدل LSTM همان‌طور که در این درس توضیح داده شده است شروع کنید و سپس از مدل BERT استفاده کنید. [دستورالعمل‌ها](lab/README.md) را بخوانید تا تمام جزئیات را دریافت کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/19-NER/lab/README.md b/translations/fa/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..75bfa1f9 --- /dev/null +++ b/translations/fa/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# تشخیص موجودیت‌های نام‌گذاری‌شده (NER) + +تمرین آزمایشگاهی از [برنامه درسی هوش مصنوعی برای مبتدیان](https://github.com/microsoft/ai-for-beginners). + +## وظیفه + +در این آزمایشگاه، شما باید یک مدل تشخیص موجودیت‌های نام‌گذاری‌شده برای اصطلاحات پزشکی آموزش دهید. + +## مجموعه داده + +برای آموزش مدل NER، به یک مجموعه داده با برچسب‌گذاری مناسب برای موجودیت‌های پزشکی نیاز داریم. مجموعه داده [BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) شامل موجودیت‌های برچسب‌گذاری‌شده بیماری‌ها و مواد شیمیایی از بیش از ۱۵۰۰ مقاله است. شما می‌توانید این مجموعه داده را پس از ثبت‌نام در وب‌سایت آن‌ها دانلود کنید. + +مجموعه داده BC5CDR به این شکل است: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +در این مجموعه داده، عنوان مقاله و چکیده در دو خط اول قرار دارند و سپس موجودیت‌های جداگانه با موقعیت شروع و پایان در بلوک عنوان+چکیده مشخص شده‌اند. علاوه بر نوع موجودیت، شناسه آنتولوژی این موجودیت در یک آنتولوژی پزشکی نیز ارائه می‌شود. + +شما باید مقداری کد پایتون بنویسید تا این داده‌ها را به فرمت BIO تبدیل کنید. + +## شبکه + +اولین تلاش برای NER می‌تواند با استفاده از شبکه LSTM انجام شود، همان‌طور که در مثال ارائه‌شده در درس مشاهده کردید. با این حال، در وظایف پردازش زبان طبیعی، [معماری ترنسفورمر](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) و به‌ویژه [مدل‌های زبانی BERT](https://en.wikipedia.org/wiki/BERT_(language_model)) نتایج بسیار بهتری نشان می‌دهند. مدل‌های از پیش آموزش‌دیده BERT ساختار کلی زبان را درک می‌کنند و می‌توانند با مجموعه داده‌های نسبتاً کوچک و هزینه‌های محاسباتی کم برای وظایف خاص تنظیم شوند. + +از آنجا که قصد داریم NER را در سناریوی پزشکی اعمال کنیم، منطقی است که از مدل BERT آموزش‌دیده بر روی متون پزشکی استفاده کنیم. مایکروسافت ریسرچ یک مدل از پیش آموزش‌دیده به نام [PubMedBERT][PubMedBERT] ([مقاله][PubMedBERT-Pub]) منتشر کرده است که با استفاده از متون موجود در مخزن [PubMed](https://pubmed.ncbi.nlm.nih.gov/) تنظیم شده است. + +استاندارد *de facto* برای آموزش مدل‌های ترنسفورمر، کتابخانه [Hugging Face Transformers](https://huggingface.co/) است. این کتابخانه همچنین شامل یک مخزن از مدل‌های از پیش آموزش‌دیده توسط جامعه، از جمله PubMedBERT، می‌باشد. برای بارگذاری و استفاده از این مدل، تنها به چند خط کد نیاز دارید: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +این کد به ما `model` را می‌دهد که برای وظیفه طبقه‌بندی توکن با استفاده از تعداد `classes` کلاس ساخته شده است، و همچنین شیء `tokenizer` که می‌تواند متن ورودی را به توکن‌ها تقسیم کند. شما باید مجموعه داده را به فرمت BIO تبدیل کنید و توکن‌سازی PubMedBERT را در نظر بگیرید. می‌توانید از [این قطعه کد پایتون](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) به‌عنوان الهام استفاده کنید. + +## نتیجه‌گیری + +این وظیفه بسیار نزدیک به وظایف واقعی است که احتمالاً در صورت تمایل به کسب بینش بیشتر از حجم زیادی از متون زبان طبیعی با آن مواجه خواهید شد. در مورد ما، می‌توانیم مدل آموزش‌دیده خود را بر روی [مجموعه داده مقالات مرتبط با COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) اعمال کنیم و ببینیم چه بینش‌هایی می‌توانیم به دست آوریم. [این پست وبلاگ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) و [این مقاله](https://www.mdpi.com/2504-2289/6/1/4) تحقیقاتی را که می‌توان بر روی این مجموعه مقالات با استفاده از NER انجام داد، توصیف می‌کنند. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/20-LangModels/README.md b/translations/fa/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..03f55228 --- /dev/null +++ b/translations/fa/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# مدل‌های زبانی بزرگ از پیش آموزش‌دیده + +در تمام وظایف قبلی، ما یک شبکه عصبی را برای انجام یک وظیفه خاص با استفاده از مجموعه داده‌های برچسب‌دار آموزش می‌دادیم. اما با مدل‌های بزرگ ترنسفورمر، مانند BERT، از مدل‌سازی زبان به صورت خودنظارتی برای ساخت یک مدل زبانی استفاده می‌کنیم که سپس با آموزش‌های خاص دامنه برای وظایف پایین‌دستی تخصصی می‌شود. با این حال، نشان داده شده است که مدل‌های زبانی بزرگ می‌توانند بسیاری از وظایف را بدون هیچ‌گونه آموزش خاص دامنه حل کنند. خانواده‌ای از مدل‌ها که قادر به انجام این کار هستند، **GPT** نامیده می‌شوند: ترنسفورمر از پیش آموزش‌دیده تولیدی. + +## [پیش‌ آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## تولید متن و پیچیدگی + +ایده اینکه یک شبکه عصبی بتواند وظایف عمومی را بدون آموزش پایین‌دستی انجام دهد، در مقاله [مدل‌های زبانی یادگیرندگان چندوظیفه‌ای بدون نظارت](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) ارائه شده است. ایده اصلی این است که بسیاری از وظایف دیگر را می‌توان با استفاده از **تولید متن** مدل‌سازی کرد، زیرا درک متن اساساً به معنای توانایی تولید آن است. از آنجا که مدل بر روی حجم عظیمی از متون که دانش انسانی را در بر می‌گیرد آموزش دیده است، درباره موضوعات متنوعی نیز آگاه می‌شود. + +> درک و توانایی تولید متن همچنین مستلزم دانستن چیزی درباره دنیای اطراف ما است. انسان‌ها نیز تا حد زیادی با خواندن یاد می‌گیرند و شبکه GPT در این زمینه مشابه است. + +شبکه‌های تولید متن با پیش‌بینی احتمال کلمه بعدی $$P(w_N)$$ کار می‌کنند. با این حال، احتمال غیرشرطی کلمه بعدی برابر با فراوانی آن کلمه در مجموعه متون است. GPT قادر است **احتمال شرطی** کلمه بعدی را با توجه به کلمات قبلی ارائه دهد: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> می‌توانید درباره احتمالات بیشتر در [برنامه درسی علم داده برای مبتدیان](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) ما بخوانید. + +کیفیت مدل تولید زبان را می‌توان با استفاده از **پیچیدگی** تعریف کرد. این یک معیار ذاتی است که به ما امکان می‌دهد کیفیت مدل را بدون هیچ مجموعه داده خاص وظیفه‌ای اندازه‌گیری کنیم. این معیار بر اساس مفهوم *احتمال یک جمله* است - مدل به جمله‌ای که احتمال واقعی بودن آن زیاد است (یعنی مدل از آن **گیج** نمی‌شود) احتمال بالایی اختصاص می‌دهد و به جملاتی که کمتر منطقی هستند (مثلاً *آیا می‌تواند چه چیزی انجام دهد؟*) احتمال پایینی می‌دهد. وقتی جملاتی از مجموعه متون واقعی به مدل خود بدهیم، انتظار داریم که احتمال بالایی داشته باشند و **پیچیدگی** پایینی داشته باشند. به صورت ریاضی، پیچیدگی به عنوان احتمال معکوس نرمال‌شده مجموعه آزمون تعریف می‌شود: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**می‌توانید با استفاده از [ویرایشگر متن مبتنی بر GPT از Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)** با تولید متن آزمایش کنید. در این ویرایشگر، نوشتن متن خود را شروع کنید و با فشار دادن **[TAB]** چند گزینه تکمیل به شما پیشنهاد می‌شود. اگر این گزینه‌ها خیلی کوتاه هستند یا از آن‌ها راضی نیستید - دوباره [TAB] را فشار دهید و گزینه‌های بیشتری، از جمله قطعات طولانی‌تر متن، خواهید داشت. + +## GPT یک خانواده است + +GPT یک مدل واحد نیست، بلکه مجموعه‌ای از مدل‌ها است که توسط [OpenAI](https://openai.com) توسعه و آموزش داده شده‌اند. + +در زیر مدل‌های GPT داریم: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|مدل زبانی با حداکثر ۱.۵ میلیارد پارامتر. | مدل زبانی با حداکثر ۱۷۵ میلیارد پارامتر | ۱۰۰ تریلیون پارامتر و پذیرش ورودی‌های تصویری و متنی و خروجی متنی. | + +مدل‌های GPT-3 و GPT-4 به صورت [یک سرویس شناختی از مایکروسافت آژور](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) و همچنین به صورت [API از OpenAI](https://openai.com/api/) در دسترس هستند. + +## مهندسی پرامپت + +از آنجا که GPT بر روی حجم عظیمی از داده‌ها برای درک زبان و کد آموزش دیده است، این مدل‌ها در پاسخ به ورودی‌ها (پرامپت‌ها) خروجی ارائه می‌دهند. پرامپت‌ها ورودی‌ها یا پرسش‌هایی هستند که در آن‌ها دستورالعمل‌هایی برای انجام وظایف به مدل‌ها داده می‌شود. برای دستیابی به نتیجه مطلوب، باید مؤثرترین پرامپت را انتخاب کنید که شامل انتخاب کلمات، قالب‌ها، عبارات یا حتی نمادهای مناسب است. این رویکرد [مهندسی پرامپت](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) نامیده می‌شود. + +[این مستندات](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) اطلاعات بیشتری درباره مهندسی پرامپت ارائه می‌دهد. + +## ✍️ دفترچه مثال: [بازی با OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +یادگیری خود را در دفترچه‌های زیر ادامه دهید: + +* [تولید متن با OpenAI-GPT و Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## نتیجه‌گیری + +مدل‌های زبانی عمومی از پیش آموزش‌دیده جدید نه تنها ساختار زبان را مدل‌سازی می‌کنند، بلکه حجم عظیمی از زبان طبیعی را نیز در خود دارند. بنابراین، می‌توانند به طور مؤثری برای حل برخی از وظایف پردازش زبان طبیعی در تنظیمات صفر-شات یا چند-شات استفاده شوند. + +## [پس‌ آزمون](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما هیچ مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/5-NLP/README.md b/translations/fa/lessons/5-NLP/README.md new file mode 100644 index 00000000..c7eaa004 --- /dev/null +++ b/translations/fa/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# پردازش زبان طبیعی + +![خلاصه‌ای از وظایف NLP در یک طرح](../../../../lessons/sketchnotes/ai-nlp.png) + +در این بخش، ما بر استفاده از شبکه‌های عصبی برای انجام وظایف مرتبط با **پردازش زبان طبیعی (NLP)** تمرکز خواهیم کرد. مسائل زیادی در NLP وجود دارد که می‌خواهیم کامپیوترها قادر به حل آن‌ها باشند: + +* **طبقه‌بندی متن** یک مسئله طبقه‌بندی معمولی مربوط به توالی‌های متنی است. مثال‌ها شامل طبقه‌بندی پیام‌های ایمیل به عنوان اسپم یا غیر اسپم، یا دسته‌بندی مقالات به موضوعاتی مانند ورزش، تجارت، سیاست و غیره است. همچنین، هنگام توسعه چت‌بات‌ها، اغلب نیاز داریم بفهمیم کاربر چه چیزی می‌خواهد بگوید -- در این حالت با **طبقه‌بندی نیت** سروکار داریم. در طبقه‌بندی نیت، اغلب باید با دسته‌بندی‌های زیادی کار کنیم. +* **تحلیل احساسات** یک مسئله رگرسیون معمولی است، جایی که باید عددی (یک احساس) را نسبت دهیم که نشان‌دهنده مثبت یا منفی بودن معنای یک جمله باشد. نسخه پیشرفته‌تر تحلیل احساسات، **تحلیل احساسات مبتنی بر جنبه** (ABSA) است، جایی که احساسات را نه به کل جمله، بلکه به بخش‌های مختلف آن (جنبه‌ها) نسبت می‌دهیم، مثلاً: *در این رستوران، من غذا را دوست داشتم، اما جو وحشتناک بود*. +* **شناسایی موجودیت‌های نام‌دار** (NER) به مسئله استخراج موجودیت‌های خاص از متن اشاره دارد. برای مثال، ممکن است نیاز داشته باشیم بفهمیم که در عبارت *من باید فردا به پاریس پرواز کنم* کلمه *فردا* به تاریخ اشاره دارد و *پاریس* یک مکان است. +* **استخراج کلمات کلیدی** مشابه NER است، اما باید کلمات مهم برای معنای جمله را به صورت خودکار استخراج کنیم، بدون آموزش قبلی برای انواع خاص موجودیت‌ها. +* **خوشه‌بندی متن** می‌تواند زمانی مفید باشد که بخواهیم جملات مشابه را گروه‌بندی کنیم، مثلاً درخواست‌های مشابه در مکالمات پشتیبانی فنی. +* **پاسخ به سوالات** به توانایی یک مدل برای پاسخ دادن به یک سوال خاص اشاره دارد. مدل یک متن و یک سوال را به عنوان ورودی دریافت می‌کند و باید مکانی در متن که پاسخ سوال در آن قرار دارد را ارائه دهد (یا گاهی اوقات، متن پاسخ را تولید کند). +* **تولید متن** توانایی یک مدل برای تولید متن جدید است. این می‌تواند به عنوان یک مسئله طبقه‌بندی در نظر گرفته شود که حرف/کلمه بعدی را بر اساس یک *متن اولیه* پیش‌بینی می‌کند. مدل‌های پیشرفته تولید متن، مانند GPT-3، قادر به حل وظایف دیگر NLP مانند طبقه‌بندی با استفاده از تکنیکی به نام [برنامه‌نویسی با پرامپت](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) یا [مهندسی پرامپت](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) هستند. +* **خلاصه‌سازی متن** تکنیکی است که در آن می‌خواهیم کامپیوتر متن طولانی را "بخواند" و آن را در چند جمله خلاصه کند. +* **ترجمه ماشینی** می‌تواند به عنوان ترکیبی از درک متن در یک زبان و تولید متن در زبان دیگر در نظر گرفته شود. + +در ابتدا، بیشتر وظایف NLP با استفاده از روش‌های سنتی مانند گرامرها حل می‌شدند. برای مثال، در ترجمه ماشینی از تجزیه‌کننده‌ها برای تبدیل جمله اولیه به یک درخت نحوی استفاده می‌شد، سپس ساختارهای معنایی سطح بالاتر استخراج می‌شدند تا معنای جمله را نشان دهند، و بر اساس این معنا و گرامر زبان هدف، نتیجه تولید می‌شد. امروزه، بسیاری از وظایف NLP به طور موثرتری با استفاده از شبکه‌های عصبی حل می‌شوند. + +> بسیاری از روش‌های کلاسیک NLP در کتابخانه پایتون [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) پیاده‌سازی شده‌اند. یک [کتاب NLTK](https://www.nltk.org/book/) عالی به صورت آنلاین در دسترس است که توضیح می‌دهد چگونه وظایف مختلف NLP می‌توانند با استفاده از NLTK حل شوند. + +در دوره ما، بیشتر بر استفاده از شبکه‌های عصبی برای NLP تمرکز خواهیم کرد و در صورت نیاز از NLTK استفاده خواهیم کرد. + +ما قبلاً درباره استفاده از شبکه‌های عصبی برای کار با داده‌های جدولی و تصاویر یاد گرفته‌ایم. تفاوت اصلی بین این نوع داده‌ها و متن این است که متن یک توالی با طول متغیر است، در حالی که اندازه ورودی در مورد تصاویر از قبل مشخص است. در حالی که شبکه‌های کانولوشنی می‌توانند الگوها را از داده‌های ورودی استخراج کنند، الگوها در متن پیچیده‌تر هستند. به عنوان مثال، ممکن است نفی از موضوع با کلمات زیادی جدا شود (مثلاً *من پرتقال دوست ندارم* در مقابل *من آن پرتقال‌های بزرگ رنگارنگ خوشمزه را دوست ندارم*)، و این باید همچنان به عنوان یک الگو تفسیر شود. بنابراین، برای پردازش زبان نیاز داریم که انواع جدیدی از شبکه‌های عصبی، مانند *شبکه‌های بازگشتی* و *ترانسفورمرها* را معرفی کنیم. + +## نصب کتابخانه‌ها + +اگر از نصب محلی پایتون برای اجرای این دوره استفاده می‌کنید، ممکن است نیاز داشته باشید تمام کتابخانه‌های مورد نیاز برای NLP را با استفاده از دستورات زیر نصب کنید: + +**برای PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**برای TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> می‌توانید NLP با TensorFlow را در [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) امتحان کنید. + +## هشدار GPU + +در این بخش، در برخی از مثال‌ها مدل‌های نسبتاً بزرگی را آموزش خواهیم داد. +* **استفاده از کامپیوتر مجهز به GPU**: توصیه می‌شود نوت‌بوک‌های خود را روی کامپیوتری که از GPU پشتیبانی می‌کند اجرا کنید تا زمان انتظار هنگام کار با مدل‌های بزرگ کاهش یابد. +* **محدودیت‌های حافظه GPU**: اجرای روی GPU ممکن است منجر به موقعیت‌هایی شود که حافظه GPU شما تمام شود، به ویژه هنگام آموزش مدل‌های بزرگ. +* **مصرف حافظه GPU**: مقدار حافظه GPU مصرف‌شده در طول آموزش به عوامل مختلفی از جمله اندازه مینی‌بچ بستگی دارد. +* **کاهش اندازه مینی‌بچ**: اگر با مشکلات حافظه GPU مواجه شدید، کاهش اندازه مینی‌بچ در کد خود را به عنوان یک راه‌حل احتمالی در نظر بگیرید. +* **آزادسازی حافظه GPU در TensorFlow**: نسخه‌های قدیمی‌تر TensorFlow ممکن است حافظه GPU را به درستی آزاد نکنند، به ویژه هنگام آموزش چندین مدل در یک کرنل پایتون. برای مدیریت موثر استفاده از حافظه GPU، می‌توانید TensorFlow را طوری پیکربندی کنید که حافظه GPU را فقط در صورت نیاز تخصیص دهد. +* **اضافه کردن کد**: برای تنظیم TensorFlow به گونه‌ای که تخصیص حافظه GPU فقط در صورت نیاز انجام شود، کد زیر را در نوت‌بوک‌های خود قرار دهید: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +اگر علاقه‌مند به یادگیری NLP از دیدگاه یادگیری ماشین کلاسیک هستید، به [این مجموعه درس‌ها](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) مراجعه کنید. + +## در این بخش +در این بخش درباره موضوعات زیر یاد خواهیم گرفت: + +* [نمایش متن به صورت تنسورها](13-TextRep/README.md) +* [تعبیه کلمات](14-Emdeddings/README.md) +* [مدل‌سازی زبان](15-LanguageModeling/README.md) +* [شبکه‌های عصبی بازگشتی](16-RNN/README.md) +* [شبکه‌های مولد](17-GenerativeNetworks/README.md) +* [ترانسفورمرها](18-Transformers/README.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/fa/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..232e3e0e --- /dev/null +++ b/translations/fa/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# الگوریتم‌های ژنتیکی + +## [پرسشنامه قبل از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**الگوریتم‌های ژنتیکی** (GA) بر اساس یک **رویکرد تکاملی** در هوش مصنوعی بنا شده‌اند، که در آن از روش‌های تکامل یک جمعیت برای یافتن یک راه‌حل بهینه برای یک مسئله مشخص استفاده می‌شود. این الگوریتم‌ها در سال 1975 توسط [جان هنری هالند](https://wikipedia.org/wiki/John_Henry_Holland) پیشنهاد شدند. + +الگوریتم‌های ژنتیکی بر اساس ایده‌های زیر عمل می‌کنند: + +* راه‌حل‌های معتبر برای مسئله می‌توانند به صورت **ژن‌ها** نمایش داده شوند. +* **ترکیب (Crossover)** به ما اجازه می‌دهد دو راه‌حل را با هم ترکیب کنیم تا یک راه‌حل معتبر جدید به دست آوریم. +* **انتخاب (Selection)** برای انتخاب راه‌حل‌های بهینه‌تر با استفاده از یک **تابع تناسب (Fitness Function)** استفاده می‌شود. +* **جهش (Mutation)** برای ایجاد تغییرات و جلوگیری از گیر افتادن در کمینه محلی معرفی می‌شود. + +برای پیاده‌سازی یک الگوریتم ژنتیکی، به موارد زیر نیاز دارید: + +* یافتن روشی برای کدگذاری راه‌حل‌های مسئله با استفاده از **ژن‌ها** g∈Γ +* تعریف یک **تابع تناسب** روی مجموعه ژن‌ها Γ به صورت fit: Γ→**R**. مقادیر کوچکتر تابع نشان‌دهنده راه‌حل‌های بهتر هستند. +* تعریف مکانیزم **ترکیب** برای ترکیب دو ژن و ایجاد یک راه‌حل جدید به صورت crossover: Γ2→Γ. +* تعریف مکانیزم **جهش** به صورت mutate: Γ→Γ. + +در بسیاری از موارد، الگوریتم‌های ترکیب و جهش، الگوریتم‌های ساده‌ای برای دستکاری ژن‌ها به صورت دنباله‌های عددی یا بردارهای بیتی هستند. + +پیاده‌سازی خاص یک الگوریتم ژنتیکی ممکن است از موردی به مورد دیگر متفاوت باشد، اما ساختار کلی آن به صورت زیر است: + +1. انتخاب یک جمعیت اولیه G⊂Γ +2. به صورت تصادفی یکی از عملیات ترکیب یا جهش را برای این مرحله انتخاب کنید. +3. **ترکیب**: + * به صورت تصادفی دو ژن g1, g2 ∈ G را انتخاب کنید. + * ترکیب را محاسبه کنید g=crossover(g1,g2) + * اگر fit(g)1) یا fit(g)2) باشد، ژن مربوطه در جمعیت را با g جایگزین کنید. +4. **جهش** - یک ژن تصادفی g∈G را انتخاب کرده و آن را با mutate(g) جایگزین کنید. +5. از مرحله 2 تکرار کنید تا زمانی که مقدار تابع تناسب به اندازه کافی کوچک شود یا محدودیت تعداد مراحل به پایان برسد. + +## وظایف معمول + +وظایفی که معمولاً با الگوریتم‌های ژنتیکی حل می‌شوند شامل موارد زیر هستند: + +1. بهینه‌سازی زمان‌بندی +1. بسته‌بندی بهینه +1. برش بهینه +1. تسریع جستجوی جامع + +## ✍️ تمرین‌ها: الگوریتم‌های ژنتیکی + +یادگیری خود را در نوت‌بوک‌های زیر ادامه دهید: + +به [این نوت‌بوک](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) بروید تا دو مثال از استفاده الگوریتم‌های ژنتیکی را ببینید: + +1. تقسیم عادلانه گنج +1. مسئله 8 وزیر + +## نتیجه‌گیری + +الگوریتم‌های ژنتیکی برای حل بسیاری از مسائل، از جمله مسائل لجستیکی و جستجو، استفاده می‌شوند. این حوزه از تحقیقاتی الهام گرفته شده است که موضوعات روانشناسی و علوم کامپیوتر را با هم ترکیب کرده‌اند. + +## 🚀 چالش + +"الگوریتم‌های ژنتیکی ساده پیاده‌سازی می‌شوند، اما رفتار آن‌ها دشوار است که درک شود." [منبع](https://wikipedia.org/wiki/Genetic_algorithm) تحقیقی انجام دهید و یک پیاده‌سازی از الگوریتم ژنتیکی مانند حل یک پازل سودوکو پیدا کنید و توضیح دهید که چگونه کار می‌کند، به صورت یک طرح یا نمودار جریان. + +## [پرسشنامه بعد از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## مرور و مطالعه شخصی + +[این ویدئوی عالی](https://www.youtube.com/watch?v=qv6UVOQ0F44) را تماشا کنید که در مورد نحوه یادگیری کامپیوتر برای بازی کردن سوپر ماریو با استفاده از شبکه‌های عصبی آموزش‌دیده توسط الگوریتم‌های ژنتیکی صحبت می‌کند. ما در بخش بعدی بیشتر در مورد یادگیری کامپیوتر برای بازی کردن این نوع بازی‌ها یاد خواهیم گرفت. [در بخش بعدی](../22-DeepRL/README.md). + +## [تکلیف: معادله دیوفانتین](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +هدف شما حل معادله موسوم به **دیوفانتین** است - معادله‌ای با ریشه‌های صحیح. برای مثال، معادله a+2b+3c+4d=30 را در نظر بگیرید. شما باید ریشه‌های صحیحی که این معادله را ارضا می‌کنند پیدا کنید. + +*این تکلیف از [این پست](https://habr.com/post/128704/) الهام گرفته شده است.* + +نکات: + +1. می‌توانید ریشه‌ها را در بازه [0;30] در نظر بگیرید. +1. به عنوان یک ژن، می‌توانید از لیست مقادیر ریشه‌ها استفاده کنید. + +از [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) به عنوان نقطه شروع استفاده کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/6-Other/22-DeepRL/README.md b/translations/fa/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..5ed8ae06 --- /dev/null +++ b/translations/fa/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# یادگیری تقویتی عمیق + +یادگیری تقویتی (RL) به عنوان یکی از الگوهای اصلی یادگیری ماشین در کنار یادگیری نظارت‌شده و یادگیری بدون نظارت شناخته می‌شود. در حالی که در یادگیری نظارت‌شده به مجموعه داده‌هایی با نتایج مشخص تکیه می‌کنیم، یادگیری تقویتی بر اساس **یادگیری از طریق عمل** است. برای مثال، وقتی برای اولین بار یک بازی کامپیوتری را می‌بینیم، شروع به بازی می‌کنیم، حتی بدون دانستن قوانین، و به زودی تنها با فرآیند بازی کردن و تنظیم رفتار خود، مهارت‌هایمان را بهبود می‌بخشیم. + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +برای انجام یادگیری تقویتی، به موارد زیر نیاز داریم: + +* یک **محیط** یا **شبیه‌ساز** که قوانین بازی را تعیین می‌کند. باید بتوانیم آزمایش‌ها را در شبیه‌ساز اجرا کرده و نتایج را مشاهده کنیم. +* یک **تابع پاداش** که نشان می‌دهد آزمایش ما چقدر موفق بوده است. در مورد یادگیری بازی کامپیوتری، پاداش می‌تواند امتیاز نهایی ما باشد. + +بر اساس تابع پاداش، باید بتوانیم رفتار خود را تنظیم کرده و مهارت‌هایمان را بهبود دهیم تا دفعه بعد بهتر بازی کنیم. تفاوت اصلی بین یادگیری تقویتی و سایر انواع یادگیری ماشین این است که در یادگیری تقویتی معمولاً تا پایان بازی نمی‌دانیم که برنده شده‌ایم یا باخته‌ایم. بنابراین نمی‌توانیم بگوییم که یک حرکت خاص به تنهایی خوب است یا نه - ما فقط در پایان بازی پاداش دریافت می‌کنیم. + +در طول یادگیری تقویتی، معمولاً آزمایش‌های زیادی انجام می‌دهیم. در هر آزمایش، باید بین دنبال کردن استراتژی بهینه‌ای که تاکنون یاد گرفته‌ایم (**بهره‌برداری**) و کشف حالت‌های جدید ممکن (**اکتشاف**) تعادل برقرار کنیم. + +## OpenAI Gym + +یک ابزار عالی برای یادگیری تقویتی [OpenAI Gym](https://gym.openai.com/) است - یک **محیط شبیه‌سازی** که می‌تواند بسیاری از محیط‌های مختلف را شبیه‌سازی کند، از بازی‌های آتاری گرفته تا فیزیک پشت تعادل میله. این ابزار یکی از محبوب‌ترین محیط‌های شبیه‌سازی برای آموزش الگوریتم‌های یادگیری تقویتی است و توسط [OpenAI](https://openai.com/) نگهداری می‌شود. + +> **Note**: می‌توانید تمام محیط‌های موجود در OpenAI Gym را [اینجا](https://gym.openai.com/envs/#classic_control) مشاهده کنید. + +## تعادل میله (CartPole) + +احتمالاً همه شما دستگاه‌های تعادل مدرن مانند *Segway* یا *Gyroscooters* را دیده‌اید. این دستگاه‌ها می‌توانند به طور خودکار با تنظیم چرخ‌های خود در پاسخ به سیگنال‌های شتاب‌سنج یا ژیروسکوپ تعادل برقرار کنند. در این بخش، یاد می‌گیریم که چگونه یک مسئله مشابه - تعادل یک میله - را حل کنیم. این مسئله شبیه به موقعیتی است که یک هنرمند سیرک باید یک میله را روی دست خود متعادل کند - اما این تعادل میله فقط در یک بعد (1D) اتفاق می‌افتد. + +نسخه ساده‌شده‌ای از تعادل به عنوان مسئله **CartPole** شناخته می‌شود. در دنیای CartPole، ما یک لغزنده افقی داریم که می‌تواند به چپ یا راست حرکت کند، و هدف این است که یک میله عمودی را روی لغزنده در حال حرکت متعادل کنیم. + +a cartpole + +برای ایجاد و استفاده از این محیط، به چند خط کد پایتون نیاز داریم: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +هر محیط دقیقاً به همین روش قابل دسترسی است: +* `env.reset` یک آزمایش جدید را شروع می‌کند. +* `env.step` یک گام شبیه‌سازی را انجام می‌دهد. این تابع یک **عمل** از فضای عمل دریافت می‌کند و یک **مشاهده** (از فضای مشاهده)، به همراه یک پاداش و یک پرچم پایان بازمی‌گرداند. + +در مثال بالا، ما در هر گام یک عمل تصادفی انجام می‌دهیم، به همین دلیل طول عمر آزمایش بسیار کوتاه است: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +هدف یک الگوریتم یادگیری تقویتی این است که یک مدل - به اصطلاح **سیاست** π - را آموزش دهد که در پاسخ به یک حالت خاص، عمل مناسب را بازگرداند. همچنین می‌توان سیاست را احتمالی در نظر گرفت، به این معنا که برای هر حالت *s* و عمل *a*، احتمال π(*a*|*s*) را بازمی‌گرداند که باید عمل *a* را در حالت *s* انجام دهیم. + +## الگوریتم گرادیان سیاست (Policy Gradients) + +واضح‌ترین روش برای مدل‌سازی یک سیاست، ایجاد یک شبکه عصبی است که حالت‌ها را به عنوان ورودی دریافت کرده و اعمال مربوطه (یا احتمال تمام اعمال) را بازمی‌گرداند. به نوعی، این روش شبیه به یک مسئله طبقه‌بندی معمولی است، با این تفاوت عمده که ما از قبل نمی‌دانیم در هر گام کدام عمل را باید انجام دهیم. + +ایده این است که این احتمالات را تخمین بزنیم. ما یک بردار از **پاداش‌های تجمعی** می‌سازیم که پاداش کل ما را در هر گام آزمایش نشان می‌دهد. همچنین با استفاده از **تخفیف پاداش**، پاداش‌های اولیه را با یک ضریب γ=0.99 ضرب می‌کنیم تا نقش پاداش‌های اولیه کاهش یابد. سپس، آن گام‌هایی از مسیر آزمایش را که پاداش بیشتری به همراه دارند، تقویت می‌کنیم. + +> درباره الگوریتم گرادیان سیاست بیشتر بیاموزید و آن را در [دفترچه مثال](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) مشاهده کنید. + +## الگوریتم Actor-Critic + +نسخه بهبود یافته رویکرد گرادیان سیاست به نام **Actor-Critic** شناخته می‌شود. ایده اصلی این است که شبکه عصبی برای بازگرداندن دو چیز آموزش داده شود: + +* سیاست، که تعیین می‌کند کدام عمل را انجام دهیم. این بخش **actor** نامیده می‌شود. +* تخمین پاداش کل که می‌توانیم در این حالت انتظار داشته باشیم - این بخش **critic** نامیده می‌شود. + +به نوعی، این معماری شبیه به [GAN](../../4-ComputerVision/10-GANs/README.md) است، جایی که دو شبکه در برابر یکدیگر آموزش می‌بینند. در مدل Actor-Critic، actor عملی را که باید انجام دهیم پیشنهاد می‌دهد، و critic سعی می‌کند انتقادی باشد و نتیجه را تخمین بزند. با این حال، هدف ما این است که این شبکه‌ها را به صورت هماهنگ آموزش دهیم. + +از آنجا که هم پاداش‌های تجمعی واقعی و هم نتایج بازگردانده شده توسط critic را در طول آزمایش می‌دانیم، ساخت یک تابع هزینه که تفاوت بین آن‌ها را به حداقل برساند نسبتاً آسان است. این کار به ما **هزینه critic** می‌دهد. می‌توانیم **هزینه actor** را با استفاده از همان رویکرد الگوریتم گرادیان سیاست محاسبه کنیم. + +پس از اجرای یکی از این الگوریتم‌ها، می‌توانیم انتظار داشته باشیم که CartPole ما به این شکل رفتار کند: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ تمرین‌ها: گرادیان سیاست و یادگیری تقویتی Actor-Critic + +یادگیری خود را در دفترچه‌های زیر ادامه دهید: + +* [یادگیری تقویتی در TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [یادگیری تقویتی در PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## سایر وظایف یادگیری تقویتی + +یادگیری تقویتی امروزه یک حوزه پژوهشی با رشد سریع است. برخی از مثال‌های جالب یادگیری تقویتی عبارتند از: + +* آموزش کامپیوتر برای بازی کردن **بازی‌های آتاری**. چالش اصلی در این مسئله این است که ما حالت ساده‌ای به صورت یک بردار نداریم، بلکه یک تصویر از صفحه داریم - و باید از CNN برای تبدیل این تصویر به یک بردار ویژگی یا استخراج اطلاعات پاداش استفاده کنیم. بازی‌های آتاری در Gym موجود هستند. +* آموزش کامپیوتر برای بازی کردن بازی‌های تخته‌ای، مانند شطرنج و Go. اخیراً برنامه‌های پیشرفته‌ای مانند **Alpha Zero** از ابتدا با بازی دو عامل در برابر یکدیگر آموزش داده شدند و در هر گام بهبود یافتند. +* در صنعت، یادگیری تقویتی برای ایجاد سیستم‌های کنترلی از شبیه‌سازی استفاده می‌شود. سرویسی به نام [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) به طور خاص برای این منظور طراحی شده است. + +## نتیجه‌گیری + +ما اکنون یاد گرفته‌ایم که چگونه عوامل را آموزش دهیم تا تنها با ارائه یک تابع پاداش که حالت مطلوب بازی را تعریف می‌کند و با دادن فرصت برای کاوش هوشمندانه فضای جستجو، به نتایج خوبی دست یابند. ما دو الگوریتم را با موفقیت امتحان کردیم و در مدت زمان نسبتاً کوتاهی به نتیجه خوبی رسیدیم. با این حال، این تنها آغاز سفر شما به دنیای یادگیری تقویتی است، و اگر می‌خواهید عمیق‌تر به این موضوع بپردازید، حتماً باید یک دوره جداگانه را در نظر بگیرید. + +## 🚀 چالش + +برنامه‌های ذکر شده در بخش "سایر وظایف یادگیری تقویتی" را بررسی کنید و سعی کنید یکی از آن‌ها را پیاده‌سازی کنید! + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## مرور و مطالعه شخصی + +درباره یادگیری تقویتی کلاسیک در [برنامه درسی یادگیری ماشین برای مبتدیان](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) بیشتر بیاموزید. + +[این ویدیوی عالی](https://www.youtube.com/watch?v=qv6UVOQ0F44) را تماشا کنید که درباره نحوه یادگیری کامپیوتر برای بازی کردن Super Mario صحبت می‌کند. + +## تکلیف: [آموزش یک ماشین کوهستانی](lab/README.md) + +هدف شما در این تکلیف آموزش یک محیط Gym متفاوت - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - خواهد بود. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/6-Other/22-DeepRL/lab/README.md b/translations/fa/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..c545a3b3 --- /dev/null +++ b/translations/fa/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## محیط + +محیط Mountain Car شامل یک ماشین است که درون یک دره گرفتار شده است. هدف شما این است که از دره بیرون بپرید و به پرچم برسید. اقداماتی که می‌توانید انجام دهید شامل شتاب دادن به سمت چپ، شتاب دادن به سمت راست، یا انجام ندادن هیچ کاری است. شما می‌توانید موقعیت ماشین را در امتداد محور x و سرعت آن را مشاهده کنید. + +## شروع دفترچه + +برای شروع این آزمایش، [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) را باز کنید. + +## نکته کلیدی + +در طول این آزمایش باید یاد بگیرید که تطبیق الگوریتم‌های RL با یک محیط جدید اغلب بسیار ساده است، زیرا OpenAI Gym برای تمام محیط‌ها یک رابط یکسان دارد و الگوریتم‌ها به طور کلی به ماهیت محیط وابستگی زیادی ندارند. حتی می‌توانید کد پایتون را به گونه‌ای بازسازی کنید که هر محیطی را به عنوان یک پارامتر به الگوریتم RL ارسال کنید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/6-Other/23-MultiagentSystems/README.md b/translations/fa/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..fb62cc60 --- /dev/null +++ b/translations/fa/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# سیستم‌های چندعاملی + +یکی از روش‌های ممکن برای دستیابی به هوش، رویکردی است که به آن **پدیدار** (یا **هم‌افزایی**) گفته می‌شود. این روش بر این اصل استوار است که رفتار ترکیبی تعداد زیادی عامل نسبتاً ساده می‌تواند منجر به رفتار کلی پیچیده‌تر (یا هوشمندانه‌تر) سیستم به‌عنوان یک کل شود. از نظر تئوری، این روش بر اصول [هوش جمعی](https://en.wikipedia.org/wiki/Collective_intelligence)، [پدیدارگرایی](https://en.wikipedia.org/wiki/Global_brain) و [سایبرنتیک تکاملی](https://en.wikipedia.org/wiki/Global_brain) استوار است که بیان می‌کنند سیستم‌های سطح بالاتر زمانی که به‌درستی از سیستم‌های سطح پایین‌تر ترکیب شوند، نوعی ارزش افزوده کسب می‌کنند (اصلی که به آن *اصل گذار به فرامجموعه* گفته می‌شود). + +## [آزمون پیش از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +جهت‌گیری **سیستم‌های چندعاملی** در دهه ۱۹۹۰ در حوزه هوش مصنوعی به‌عنوان پاسخی به رشد اینترنت و سیستم‌های توزیع‌شده ظهور کرد. یکی از کتاب‌های درسی کلاسیک هوش مصنوعی، [هوش مصنوعی: رویکردی مدرن](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)، به بررسی هوش مصنوعی کلاسیک از دیدگاه سیستم‌های چندعاملی می‌پردازد. + +مفهوم مرکزی در رویکرد چندعاملی، **عامل** است - موجودیتی که در یک **محیط** زندگی می‌کند، آن را درک می‌کند و بر آن تأثیر می‌گذارد. این تعریف بسیار گسترده است و انواع و طبقه‌بندی‌های مختلفی از عوامل وجود دارد: + +* بر اساس توانایی استدلال: + - عوامل **واکنشی** معمولاً رفتار ساده‌ای از نوع درخواست-پاسخ دارند. + - عوامل **تأملی** از نوعی استدلال منطقی و/یا قابلیت‌های برنامه‌ریزی استفاده می‌کنند. +* بر اساس محل اجرای کد عامل: + - عوامل **ایستا** در یک گره شبکه اختصاصی کار می‌کنند. + - عوامل **متحرک** می‌توانند کد خود را بین گره‌های شبکه جابه‌جا کنند. +* بر اساس رفتارشان: + - عوامل **منفعل** اهداف خاصی ندارند. این عوامل می‌توانند به محرک‌های خارجی واکنش نشان دهند، اما خودشان اقدامی را آغاز نمی‌کنند. + - عوامل **فعال** اهدافی دارند که آن‌ها را دنبال می‌کنند. + - عوامل **شناختی** شامل برنامه‌ریزی و استدلال پیچیده هستند. + +امروزه سیستم‌های چندعاملی در بسیاری از کاربردها استفاده می‌شوند: + +* در بازی‌ها، بسیاری از شخصیت‌های غیرقابل‌بازی از نوعی هوش مصنوعی استفاده می‌کنند و می‌توان آن‌ها را به‌عنوان عوامل هوشمند در نظر گرفت. +* در تولید ویدئو، رندر کردن صحنه‌های پیچیده سه‌بعدی که شامل جمعیت است، معمولاً با استفاده از شبیه‌سازی چندعاملی انجام می‌شود. +* در مدل‌سازی سیستم‌ها، رویکرد چندعاملی برای شبیه‌سازی رفتار یک مدل پیچیده استفاده می‌شود. به‌عنوان مثال، رویکرد چندعاملی با موفقیت برای پیش‌بینی گسترش بیماری COVID-19 در سراسر جهان استفاده شده است. رویکرد مشابهی می‌تواند برای مدل‌سازی ترافیک شهری و بررسی واکنش آن به تغییرات قوانین ترافیکی استفاده شود. +* در سیستم‌های اتوماسیون پیچیده، هر دستگاه می‌تواند به‌عنوان یک عامل مستقل عمل کند، که باعث می‌شود کل سیستم کمتر یکپارچه و مقاوم‌تر باشد. + +ما زمان زیادی را صرف بررسی عمیق سیستم‌های چندعاملی نمی‌کنیم، اما یک مثال از **مدل‌سازی چندعاملی** را بررسی خواهیم کرد. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) یک محیط مدل‌سازی چندعاملی است که بر اساس نسخه اصلاح‌شده‌ای از زبان برنامه‌نویسی [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) ساخته شده است. این زبان برای آموزش مفاهیم برنامه‌نویسی به کودکان توسعه داده شده است و به شما امکان می‌دهد عاملی به نام **لاک‌پشت** را کنترل کنید که می‌تواند حرکت کند و ردپایی از خود به‌جا بگذارد. این ویژگی امکان ایجاد اشکال هندسی پیچیده را فراهم می‌کند، که روشی بسیار بصری برای درک رفتار یک عامل است. + +در NetLogo، می‌توانیم با استفاده از دستور `create-turtles` تعداد زیادی لاک‌پشت ایجاد کنیم. سپس می‌توانیم به همه لاک‌پشت‌ها فرمان دهیم که اقداماتی انجام دهند (در مثال زیر - حرکت ۱۰ واحد به جلو): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +البته، زمانی که همه لاک‌پشت‌ها یک کار مشابه انجام دهند، جالب نیست. بنابراین می‌توانیم به گروه‌هایی از لاک‌پشت‌ها، مثلاً آن‌هایی که در نزدیکی یک نقطه خاص هستند، دستور دهیم. همچنین می‌توانیم لاک‌پشت‌هایی با *نژادهای* مختلف ایجاد کنیم، با استفاده از دستور `breed [cats cat]`. در اینجا `cat` نام یک نژاد است و باید هم کلمه مفرد و هم جمع را مشخص کنیم، زیرا دستورات مختلف از اشکال مختلف برای وضوح استفاده می‌کنند. + +> ✅ ما وارد یادگیری زبان NetLogo نمی‌شویم - اگر علاقه‌مند به یادگیری بیشتر هستید، می‌توانید به منبع عالی [فرهنگ لغت تعاملی مبتدیان NetLogo](https://ccl.northwestern.edu/netlogo/bind/) مراجعه کنید. + +می‌توانید [NetLogo را دانلود](https://ccl.northwestern.edu/netlogo/download.shtml) و نصب کنید تا آن را امتحان کنید. + +### کتابخانه مدل‌ها + +یکی از ویژگی‌های عالی NetLogo این است که شامل کتابخانه‌ای از مدل‌های آماده است که می‌توانید امتحان کنید. به **File → Models Library** بروید و دسته‌بندی‌های مختلفی از مدل‌ها را انتخاب کنید. + +کتابخانه مدل‌های NetLogo + +> تصویری از کتابخانه مدل‌ها توسط Dmitry Soshnikov + +می‌توانید یکی از مدل‌ها را باز کنید، به‌عنوان مثال **Biology → Flocking**. + +### اصول اصلی + +پس از باز کردن مدل، به صفحه اصلی NetLogo منتقل می‌شوید. در اینجا یک مدل نمونه که جمعیت گرگ‌ها و گوسفندها را با منابع محدود (چمن) توصیف می‌کند، نمایش داده شده است. + +![صفحه اصلی NetLogo](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) + +> تصویری توسط Dmitry Soshnikov + +در این صفحه، می‌توانید موارد زیر را مشاهده کنید: + +* بخش **رابط کاربری** که شامل: + - میدان اصلی، جایی که همه عوامل زندگی می‌کنند + - کنترل‌های مختلف: دکمه‌ها، لغزنده‌ها و غیره + - نمودارهایی که می‌توانید برای نمایش پارامترهای شبیه‌سازی استفاده کنید +* تب **کد** که شامل ویرایشگر است، جایی که می‌توانید برنامه NetLogo را تایپ کنید + +در بیشتر موارد، رابط کاربری دارای دکمه **Setup** است که وضعیت شبیه‌سازی را مقداردهی اولیه می‌کند، و دکمه **Go** که اجرای شبیه‌سازی را آغاز می‌کند. این دکمه‌ها توسط هندلرهای مربوطه در کد مدیریت می‌شوند که به این شکل هستند: + +``` +to go [ +... +] +``` + +دنیای NetLogo شامل اشیاء زیر است: + +* **عوامل** (لاک‌پشت‌ها) که می‌توانند در میدان حرکت کنند و کاری انجام دهند. شما با استفاده از دستور `ask turtles [...]` به عوامل فرمان می‌دهید، و کدی که در براکت‌ها قرار دارد توسط همه عوامل در حالت *لاک‌پشت* اجرا می‌شود. +* **پچ‌ها** مناطق مربعی میدان هستند که عوامل روی آن‌ها زندگی می‌کنند. شما می‌توانید به همه عوامل روی یک پچ اشاره کنید، یا می‌توانید رنگ پچ‌ها و برخی ویژگی‌های دیگر را تغییر دهید. همچنین می‌توانید به پچ‌ها دستور دهید کاری انجام دهند. +* **ناظر** یک عامل منحصر به فرد است که دنیای شبیه‌سازی را کنترل می‌کند. همه هندلرهای دکمه‌ها در حالت *ناظر* اجرا می‌شوند. + +> ✅ زیبایی محیط چندعاملی این است که کدی که در حالت لاک‌پشت یا حالت پچ اجرا می‌شود، به‌طور همزمان توسط همه عوامل به‌صورت موازی اجرا می‌شود. بنابراین، با نوشتن کد کم و برنامه‌ریزی رفتار یک عامل فردی، می‌توانید رفتار پیچیده‌ای از سیستم شبیه‌سازی به‌عنوان یک کل ایجاد کنید. + +### حرکت گروهی + +به‌عنوان مثالی از رفتار چندعاملی، **[حرکت گروهی](https://en.wikipedia.org/wiki/Flocking_(behavior))** را در نظر بگیرید. حرکت گروهی یک الگوی پیچیده است که بسیار شبیه به نحوه پرواز دسته‌های پرندگان است. با مشاهده پرواز آن‌ها ممکن است فکر کنید که آن‌ها از نوعی الگوریتم جمعی پیروی می‌کنند یا نوعی *هوش جمعی* دارند. با این حال، این رفتار پیچیده زمانی ایجاد می‌شود که هر عامل فردی (در این مورد، یک *پرنده*) فقط برخی عوامل دیگر را در فاصله کوتاهی از خود مشاهده کند و از سه قانون ساده پیروی کند: + +* **هم‌راستایی** - به سمت میانگین جهت حرکت عوامل همسایه هدایت می‌شود. +* **انسجام** - تلاش می‌کند به سمت میانگین موقعیت همسایگان حرکت کند (*جذب بلندمدت*). +* **جدایی** - وقتی به دیگر پرندگان خیلی نزدیک می‌شود، تلاش می‌کند فاصله بگیرد (*دفع کوتاه‌مدت*). + +می‌توانید مثال حرکت گروهی را اجرا کنید و رفتار را مشاهده کنید. همچنین می‌توانید پارامترهایی مانند *درجه جدایی* یا *محدوده دید* را تنظیم کنید که مشخص می‌کند هر پرنده تا چه فاصله‌ای می‌تواند ببیند. توجه داشته باشید که اگر محدوده دید را به ۰ کاهش دهید، همه پرندگان کور می‌شوند و حرکت گروهی متوقف می‌شود. اگر جدایی را به ۰ کاهش دهید، همه پرندگان در یک خط مستقیم جمع می‌شوند. + +> ✅ به تب **کد** بروید و ببینید که سه قانون حرکت گروهی (هم‌راستایی، انسجام و جدایی) چگونه در کد پیاده‌سازی شده‌اند. توجه کنید که فقط به عواملی که در دید هستند اشاره می‌کنیم. + +### مدل‌های دیگر برای مشاهده + +چند مدل جالب دیگر وجود دارد که می‌توانید با آن‌ها آزمایش کنید: + +* **Art → Fireworks** نشان می‌دهد که چگونه یک آتش‌بازی می‌تواند به‌عنوان رفتار جمعی جریان‌های آتش فردی در نظر گرفته شود. +* **Social Science → Traffic Basic** و **Social Science → Traffic Grid** مدل ترافیک شهری را در شبکه ۱ بعدی و ۲ بعدی با یا بدون چراغ‌های راهنمایی نشان می‌دهند. هر خودرو در شبیه‌سازی از قوانین زیر پیروی می‌کند: + - اگر فضای جلوی آن خالی باشد - شتاب بگیرد (تا یک سرعت حداکثر مشخص). + - اگر مانعی در جلوی خود ببیند - ترمز کند (و می‌توانید تنظیم کنید که راننده تا چه فاصله‌ای می‌تواند ببیند). +* **Social Science → Party** نشان می‌دهد که چگونه افراد در یک مهمانی کوکتل گروه‌بندی می‌شوند. می‌توانید ترکیب پارامترهایی را پیدا کنید که منجر به سریع‌ترین افزایش خوشحالی گروه شود. + +همان‌طور که از این مثال‌ها می‌بینید، شبیه‌سازی‌های چندعاملی می‌توانند راهی بسیار مفید برای درک رفتار یک سیستم پیچیده متشکل از افراد باشند که از منطق مشابه یا یکسانی پیروی می‌کنند. همچنین می‌توان از آن برای کنترل عوامل مجازی، مانند [NPCها](https://en.wikipedia.org/wiki/NPC) در بازی‌های رایانه‌ای یا عوامل در جهان‌های انیمیشن سه‌بعدی استفاده کرد. + +## عوامل تأملی + +عواملی که در بالا توضیح داده شدند بسیار ساده هستند و با استفاده از نوعی الگوریتم به تغییرات محیط واکنش نشان می‌دهند. بنابراین آن‌ها **عوامل واکنشی** هستند. با این حال، گاهی اوقات عوامل می‌توانند استدلال کنند و اقدامات خود را برنامه‌ریزی کنند، که در این صورت به آن‌ها **تأملی** گفته می‌شود. + +یک مثال معمول می‌تواند یک عامل شخصی باشد که دستورالعملی از یک انسان دریافت می‌کند تا یک تور تعطیلات رزرو کند. فرض کنید عوامل زیادی در اینترنت وجود دارند که می‌توانند به آن کمک کنند. این عامل باید با دیگر عوامل تماس بگیرد تا ببیند چه پروازهایی موجود است، قیمت هتل‌ها برای تاریخ‌های مختلف چگونه است، و سعی کند بهترین قیمت را مذاکره کند. وقتی برنامه تعطیلات کامل شد و توسط مالک تأیید شد، می‌تواند رزرو را انجام دهد. + +برای انجام این کار، عوامل باید **ارتباط برقرار کنند**. برای ارتباط موفقیت‌آمیز، آن‌ها نیاز دارند: + +* برخی **زبان‌های استاندارد برای تبادل دانش**، مانند [فرمت تبادل دانش](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) و [زبان پرسش و دستکاری دانش](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). این زبان‌ها بر اساس [نظریه کنش گفتاری](https://en.wikipedia.org/wiki/Speech_act) طراحی شده‌اند. +* این زبان‌ها باید شامل برخی **پروتکل‌های مذاکره** باشند، بر اساس انواع مختلف **حراج**. +* یک **هستی‌شناسی مشترک** برای استفاده، به‌طوری که آن‌ها به مفاهیم یکسانی اشاره کنند و معنای آن‌ها را بدانند. +* راهی برای **کشف** اینکه عوامل مختلف چه کاری می‌توانند انجام دهند، که بر اساس نوعی هستی‌شناسی باشد. + +عوامل تأملی بسیار پیچیده‌تر از عوامل واکنشی هستند، زیرا آن‌ها نه تنها به تغییرات محیط واکنش نشان می‌دهند، بلکه باید بتوانند اقدامات را *آغاز کنند*. یکی از معماری‌های پیشنهادی برای عوامل تأملی، عامل باور-میل-نیت (BDI) است: + +* **باورها** مجموعه‌ای از دانش درباره محیط عامل را تشکیل می‌دهند. این دانش می‌تواند به‌صورت یک پایگاه دانش یا مجموعه‌ای از قوانین باشد که عامل می‌تواند در یک وضعیت خاص در محیط اعمال کند. +* **امیال** اهدافی را تعریف می‌کنند که عامل می‌خواهد به آن‌ها برسد. به‌عنوان مثال، هدف عامل دستیار شخصی بالا رزرو یک تور است، و هدف عامل هتل افزایش سود است. +* **نیات** اقدامات خاصی هستند که عامل برای دستیابی به اهداف خود برنامه‌ریزی می‌کند. اقدامات معمولاً محیط را تغییر می‌دهند و باعث ارتباط با دیگر عوامل می‌شوند. + +برخی پلتفرم‌ها برای ساخت سیستم‌های چندعاملی در دسترس هستند، مانند [JADE](https://jade.tilab.com/). [این مقاله](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) شامل بررسی پلتفرم‌های چندعاملی، همراه با تاریخچه مختصری از سیستم‌های چندعاملی و سناریوهای مختلف استفاده از آن‌ها است. + +## نتیجه‌گیری + +سیستم‌های چندعاملی می‌توانند اشکال بسیار متفاوتی داشته باشند و در بسیاری از کاربردها استفاده شوند. +آن‌ها تمایل دارند بر رفتار ساده یک عامل فردی تمرکز کنند و رفتار پیچیده‌تر سیستم کلی را به دلیل **اثر هم‌افزایی** به دست آورند. + +## 🚀 چالش + +این درس را به دنیای واقعی ببرید و سعی کنید یک سیستم چندعاملی را برای حل یک مشکل مفهوم‌سازی کنید. به‌عنوان مثال، یک سیستم چندعاملی برای بهینه‌سازی مسیر اتوبوس مدرسه چه کاری باید انجام دهد؟ چگونه می‌تواند در یک نانوایی کار کند؟ + +## [آزمون پس از درس](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## مرور و مطالعه شخصی + +استفاده از این نوع سیستم‌ها را در صنعت بررسی کنید. یک حوزه مانند تولید یا صنعت بازی‌های رایانه‌ای را انتخاب کنید و کشف کنید که چگونه سیستم‌های چندعاملی می‌توانند برای حل مشکلات منحصربه‌فرد استفاده شوند. + +## [تکلیف NetLogo](assignment.md) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/fa/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..1b4e21d8 --- /dev/null +++ b/translations/fa/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# تکلیف NetLogo + +یکی از مدل‌های موجود در کتابخانه NetLogo را انتخاب کنید و از آن برای شبیه‌سازی یک موقعیت واقعی تا حد امکان دقیق استفاده کنید. یک مثال خوب می‌تواند تغییر مدل Virus در پوشه Alternative Visualizations باشد تا نشان دهد چگونه می‌توان از آن برای مدل‌سازی گسترش COVID-19 استفاده کرد. آیا می‌توانید مدلی بسازید که گسترش واقعی یک ویروس را تقلید کند؟ + +کار خود را با ذخیره یک نسخه و ساخت یک ویدئوی نمایشی که توضیح می‌دهد چگونه مدل به یک موقعیت واقعی مرتبط است، نشان دهید. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/7-Ethics/README.md b/translations/fa/lessons/7-Ethics/README.md new file mode 100644 index 00000000..5069a4d4 --- /dev/null +++ b/translations/fa/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# هوش مصنوعی اخلاقی و مسئولانه + +شما تقریباً این دوره را به پایان رسانده‌اید و امیدوارم تا این لحظه به وضوح متوجه شده باشید که هوش مصنوعی بر اساس تعدادی روش‌های ریاضی رسمی بنا شده است که به ما امکان می‌دهد روابط موجود در داده‌ها را پیدا کنیم و مدل‌هایی را آموزش دهیم تا برخی جنبه‌های رفتار انسانی را بازتولید کنند. در این نقطه از تاریخ، ما هوش مصنوعی را به عنوان ابزاری بسیار قدرتمند برای استخراج الگوها از داده‌ها و استفاده از این الگوها برای حل مشکلات جدید در نظر می‌گیریم. + +## [آزمون پیش از درس](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +با این حال، در داستان‌های علمی تخیلی اغلب داستان‌هایی می‌بینیم که در آن‌ها هوش مصنوعی خطری برای بشریت ایجاد می‌کند. معمولاً این داستان‌ها حول نوعی شورش هوش مصنوعی می‌چرخند، زمانی که هوش مصنوعی تصمیم می‌گیرد با انسان‌ها مقابله کند. این موضوع نشان می‌دهد که هوش مصنوعی نوعی احساس دارد یا می‌تواند تصمیماتی بگیرد که توسط توسعه‌دهندگان آن پیش‌بینی نشده است. + +نوع هوش مصنوعی که در این دوره درباره آن یاد گرفتیم چیزی جز محاسبات ماتریسی بزرگ نیست. این یک ابزار بسیار قدرتمند برای کمک به حل مشکلات ما است و مانند هر ابزار قدرتمند دیگری - می‌تواند برای اهداف خوب یا بد استفاده شود. مهم‌تر از همه، ممکن است *سوءاستفاده* شود. + +## اصول هوش مصنوعی مسئولانه + +برای جلوگیری از سوءاستفاده تصادفی یا عمدی از هوش مصنوعی، مایکروسافت اصول مهم [هوش مصنوعی مسئولانه](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) را بیان می‌کند. مفاهیم زیر پایه‌های این اصول هستند: + +* **عدالت** به مشکل مهم *تعصب مدل‌ها* مربوط می‌شود که ممکن است به دلیل استفاده از داده‌های متعصب برای آموزش ایجاد شود. به عنوان مثال، زمانی که سعی می‌کنیم احتمال دریافت شغل توسعه‌دهنده نرم‌افزار برای یک فرد را پیش‌بینی کنیم، مدل احتمالاً ترجیح بیشتری به مردان می‌دهد - فقط به این دلیل که مجموعه داده‌های آموزشی احتمالاً به سمت مخاطبان مرد متعصب بوده است. ما باید داده‌های آموزشی را به دقت متعادل کنیم و مدل را بررسی کنیم تا از تعصب‌ها جلوگیری کنیم و مطمئن شویم که مدل ویژگی‌های مرتبط‌تر را در نظر می‌گیرد. +* **قابلیت اطمینان و ایمنی**. به طور طبیعی، مدل‌های هوش مصنوعی ممکن است اشتباه کنند. یک شبکه عصبی احتمال‌ها را بازمی‌گرداند و ما باید این موضوع را هنگام تصمیم‌گیری در نظر بگیریم. هر مدل دارای دقت و بازخوانی خاصی است و ما باید این موضوع را درک کنیم تا از آسیب‌هایی که مشاوره اشتباه ممکن است ایجاد کند جلوگیری کنیم. +* **حریم خصوصی و امنیت** دارای برخی پیامدهای خاص هوش مصنوعی هستند. به عنوان مثال، زمانی که از برخی داده‌ها برای آموزش یک مدل استفاده می‌کنیم، این داده‌ها به نوعی در مدل "ادغام" می‌شوند. از یک طرف، این موضوع امنیت و حریم خصوصی را افزایش می‌دهد، از طرف دیگر - باید به یاد داشته باشیم که مدل با چه داده‌هایی آموزش داده شده است. +* **شمول** به این معناست که ما هوش مصنوعی را برای جایگزینی انسان‌ها نمی‌سازیم، بلکه برای تقویت انسان‌ها و خلاق‌تر کردن کارمان طراحی می‌کنیم. این موضوع همچنین به عدالت مربوط می‌شود، زیرا هنگام کار با جوامع کم‌نماینده، اکثر مجموعه داده‌هایی که جمع‌آوری می‌کنیم احتمالاً متعصب هستند و باید مطمئن شویم که این جوامع در نظر گرفته شده و به درستی توسط هوش مصنوعی مدیریت می‌شوند. +* **شفافیت**. این شامل اطمینان از این است که همیشه به وضوح مشخص کنیم که از هوش مصنوعی استفاده می‌شود. همچنین، هر جا که ممکن باشد، می‌خواهیم از سیستم‌های هوش مصنوعی استفاده کنیم که *قابل تفسیر* باشند. +* **پاسخگویی**. زمانی که مدل‌های هوش مصنوعی تصمیماتی می‌گیرند، همیشه مشخص نیست که چه کسی مسئول این تصمیمات است. ما باید مطمئن شویم که درک می‌کنیم مسئولیت تصمیمات هوش مصنوعی کجا قرار دارد. در بیشتر موارد، می‌خواهیم انسان‌ها را در فرآیند تصمیم‌گیری‌های مهم وارد کنیم تا افراد واقعی مسئولیت‌پذیر باشند. + +## ابزارهای هوش مصنوعی مسئولانه + +مایکروسافت [جعبه ابزار هوش مصنوعی مسئولانه](https://github.com/microsoft/responsible-ai-toolbox) را توسعه داده است که شامل مجموعه‌ای از ابزارها است: + +* داشبورد تفسیرپذیری (InterpretML) +* داشبورد عدالت (FairLearn) +* داشبورد تحلیل خطا +* داشبورد هوش مصنوعی مسئولانه که شامل موارد زیر است: + + - EconML - ابزاری برای تحلیل علّی که بر سوالات "چه می‌شود اگر" تمرکز دارد + - DiCE - ابزاری برای تحلیل متقابل که به شما امکان می‌دهد ببینید کدام ویژگی‌ها باید تغییر کنند تا تصمیم مدل تحت تأثیر قرار گیرد + +برای اطلاعات بیشتر درباره اخلاق هوش مصنوعی، لطفاً [این درس](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) را در برنامه درسی یادگیری ماشین که شامل تکالیف است، مشاهده کنید. + +## مرور و مطالعه شخصی + +این [مسیر یادگیری](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) را دنبال کنید تا اطلاعات بیشتری درباره هوش مصنوعی مسئولانه کسب کنید. + +## [آزمون پس از درس](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشد. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/README.md b/translations/fa/lessons/README.md new file mode 100644 index 00000000..89d367d1 --- /dev/null +++ b/translations/fa/lessons/README.md @@ -0,0 +1,17 @@ + +# نمای کلی + +![نمای کلی در یک طرح](../../../lessons/sketchnotes/ai-overview.png) + +> طرح‌نگاری توسط [Tomomi Imura](https://twitter.com/girlie_mac) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/X-Extras/X1-MultiModal/README.md b/translations/fa/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..da225aaf --- /dev/null +++ b/translations/fa/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# شبکه‌های چندوجهی + +پس از موفقیت مدل‌های ترنسفورمر در حل وظایف پردازش زبان طبیعی (NLP)، معماری‌های مشابه برای وظایف بینایی کامپیوتر نیز به کار گرفته شدند. علاقه‌مندی به ساخت مدل‌هایی که قابلیت‌های بینایی و زبان طبیعی را *ترکیب* کنند، در حال افزایش است. یکی از این تلاش‌ها توسط OpenAI انجام شده و به نام CLIP و DALL.E شناخته می‌شود. + +## پیش‌آموزش متضاد تصویر (CLIP) + +ایده اصلی CLIP این است که بتوان متن‌های ورودی را با یک تصویر مقایسه کرده و تعیین کند که تصویر تا چه حد با متن مطابقت دارد. + +![معماری CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) + +> *تصویر از [این پست وبلاگ](https://openai.com/blog/clip/)* + +این مدل بر روی تصاویری که از اینترنت به دست آمده‌اند و توضیحات آن‌ها آموزش داده شده است. برای هر دسته، ما N جفت (تصویر، متن) می‌گیریم و آن‌ها را به نمایش‌های برداری تبدیل می‌کنیم. + +این نمایش‌ها سپس با یکدیگر تطبیق داده می‌شوند. تابع زیان به گونه‌ای تعریف شده است که شباهت کسینوسی بین بردارهای مربوط به یک جفت (مثلاً I و T) را حداکثر کند و شباهت کسینوسی بین تمام جفت‌های دیگر را حداقل کند. به همین دلیل این روش **متضاد** نامیده می‌شود. + +مدل/کتابخانه CLIP از [گیت‌هاب OpenAI](https://github.com/openai/CLIP) در دسترس است. این روش در [این پست وبلاگ](https://openai.com/blog/clip/) توضیح داده شده و به طور مفصل‌تر در [این مقاله](https://arxiv.org/pdf/2103.00020.pdf) شرح داده شده است. + +پس از پیش‌آموزش این مدل، می‌توانیم به آن یک دسته از تصاویر و یک دسته از متن‌های ورودی بدهیم و نتیجه یک تنسور با احتمالات خواهد بود. CLIP می‌تواند برای چندین وظیفه استفاده شود: + +**طبقه‌بندی تصویر** + +فرض کنید نیاز داریم تصاویر را بین گربه‌ها، سگ‌ها و انسان‌ها طبقه‌بندی کنیم. در این حالت، می‌توانیم به مدل یک تصویر و مجموعه‌ای از متن‌های ورودی بدهیم: "*تصویری از یک گربه*", "*تصویری از یک سگ*", "*تصویری از یک انسان*". در بردار احتمالات حاصل که شامل ۳ مقدار است، فقط باید شاخصی را انتخاب کنیم که بالاترین مقدار را دارد. + +![CLIP برای طبقه‌بندی تصویر](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) + +> *تصویر از [این پست وبلاگ](https://openai.com/blog/clip/)* + +**جستجوی تصویر بر اساس متن** + +ما همچنین می‌توانیم برعکس عمل کنیم. اگر مجموعه‌ای از تصاویر داشته باشیم، می‌توانیم این مجموعه را به مدل بدهیم و یک متن ورودی ارائه کنیم - این کار تصویری را که بیشترین شباهت را به متن دارد، به ما می‌دهد. + +## ✍️ مثال: [استفاده از CLIP برای طبقه‌بندی تصویر و جستجوی تصویر](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +دفترچه [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) را باز کنید تا CLIP را در عمل مشاهده کنید. + +## تولید تصویر با VQGAN+CLIP + +CLIP همچنین می‌تواند برای **تولید تصویر** از یک متن ورودی استفاده شود. برای این کار، به یک **مدل تولیدکننده** نیاز داریم که بتواند تصاویر را بر اساس یک ورودی برداری تولید کند. یکی از این مدل‌ها [VQGAN](https://compvis.github.io/taming-transformers/) (شبکه مولد متخاصم بردار-کوانتیزه) نام دارد. + +ایده‌های اصلی VQGAN که آن را از [GAN](../../4-ComputerVision/10-GANs/README.md) معمولی متمایز می‌کند، عبارتند از: +* استفاده از معماری ترنسفورمر خودبازگشتی برای تولید دنباله‌ای از بخش‌های بصری غنی از زمینه که تصویر را تشکیل می‌دهند. این بخش‌های بصری به نوبه خود توسط [CNN](../../4-ComputerVision/07-ConvNets/README.md) یاد گرفته می‌شوند. +* استفاده از یک تفکیک‌کننده زیرتصویر که تشخیص می‌دهد آیا بخش‌های تصویر "واقعی" یا "جعلی" هستند (برخلاف رویکرد "همه یا هیچ" در GAN سنتی). + +اطلاعات بیشتر درباره VQGAN را در وب‌سایت [Taming Transformers](https://compvis.github.io/taming-transformers/) بیابید. + +یکی از تفاوت‌های مهم بین VQGAN و GAN سنتی این است که دومی می‌تواند از هر بردار ورودی یک تصویر مناسب تولید کند، در حالی که VQGAN احتمالاً تصویری تولید می‌کند که منسجم نباشد. بنابراین، باید فرآیند ایجاد تصویر را بیشتر هدایت کنیم و این کار می‌تواند با استفاده از CLIP انجام شود. + +![معماری VQGAN+CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) + +برای تولید تصویری که با یک متن ورودی مطابقت داشته باشد، با یک بردار کدگذاری تصادفی شروع می‌کنیم که از طریق VQGAN عبور داده می‌شود تا یک تصویر تولید شود. سپس CLIP برای تولید یک تابع زیان استفاده می‌شود که نشان می‌دهد تصویر تا چه حد با متن مطابقت دارد. هدف این است که این زیان را با استفاده از پس‌انتشار برای تنظیم پارامترهای بردار ورودی به حداقل برسانیم. + +یک کتابخانه عالی که VQGAN+CLIP را پیاده‌سازی می‌کند، [Pixray](http://github.com/pixray/pixray) است. + +![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) +----|----|---- +تصویر تولید شده از متن ورودی *یک پرتره آبرنگ نزدیک از معلم جوان ادبیات با یک کتاب* | تصویر تولید شده از متن ورودی *یک پرتره روغنی نزدیک از معلم جوان علوم کامپیوتر با یک کامپیوتر* | تصویر تولید شده از متن ورودی *یک پرتره روغنی نزدیک از معلم مسن ریاضیات در مقابل تخته سیاه* + +> تصاویر از مجموعه **معلمان مصنوعی** توسط [دمیتری سوشنیکوف](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E نسخه‌ای از GPT-3 است که برای تولید تصاویر از متن‌های ورودی آموزش دیده است. این مدل با ۱۲ میلیارد پارامتر آموزش دیده است. + +برخلاف CLIP، DALL-E متن و تصویر را به عنوان یک جریان واحد از توکن‌ها برای هر دو دریافت می‌کند. بنابراین، از چندین متن ورودی می‌توان تصاویر را بر اساس متن تولید کرد. + +### [DALL-E 2](https://openai.com/dall-e-2) +تفاوت اصلی بین DALL-E 1 و 2 این است که نسخه دوم تصاویر و هنرهای واقعی‌تر تولید می‌کند. + +نمونه‌هایی از تولید تصویر با DALL-E: +![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![تصویر تولید شده توسط Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) +----|----|---- +تصویر تولید شده از متن ورودی *یک پرتره آبرنگ نزدیک از معلم جوان ادبیات با یک کتاب* | تصویر تولید شده از متن ورودی *یک پرتره روغنی نزدیک از معلم جوان علوم کامپیوتر با یک کامپیوتر* | تصویر تولید شده از متن ورودی *یک پرتره روغنی نزدیک از معلم مسن ریاضیات در مقابل تخته سیاه* + +## منابع + +* مقاله VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* مقاله CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/sketchnotes/LICENSE.md b/translations/fa/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..b4930ad3 --- /dev/null +++ b/translations/fa/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,146 @@ + +نسبت-اشتراک‌گذاری مشابه 4.0 بین‌المللی + +======================================================================= + +شرکت کریتیو کامنز ("Creative Commons") یک شرکت حقوقی نیست و خدمات یا مشاوره حقوقی ارائه نمی‌دهد. توزیع مجوزهای عمومی کریتیو کامنز رابطه وکیل-موکل یا هر رابطه دیگری ایجاد نمی‌کند. کریتیو کامنز مجوزها و اطلاعات مرتبط را به صورت "همان‌گونه که هست" ارائه می‌دهد. کریتیو کامنز هیچ ضمانتی در مورد مجوزهای خود، هرگونه محتوای تحت این مجوزها، یا اطلاعات مرتبط ارائه نمی‌دهد و تا حد ممکن از هرگونه مسئولیت در قبال خسارات ناشی از استفاده از آن‌ها سلب مسئولیت می‌کند. + +استفاده از مجوزهای عمومی کریتیو کامنز + +مجوزهای عمومی کریتیو کامنز مجموعه‌ای استاندارد از شرایط و ضوابط را ارائه می‌دهند که خالقان و سایر دارندگان حقوق می‌توانند برای به اشتراک‌گذاری آثار اصلی و سایر مطالب تحت حق‌تألیف و حقوق مشخص‌شده در مجوز عمومی زیر استفاده کنند. ملاحظات زیر صرفاً برای اهداف اطلاعاتی است، جامع نیست و بخشی از مجوزهای ما را تشکیل نمی‌دهد. + + ملاحظات برای مجوزدهندگان: مجوزهای عمومی ما برای استفاده توسط افرادی طراحی شده‌اند که مجاز به اعطای اجازه عمومی برای استفاده از مطالب به روش‌هایی هستند که در غیر این صورت تحت حق‌تألیف و حقوق خاص دیگر محدود می‌شوند. مجوزهای ما غیرقابل بازگشت هستند. مجوزدهندگان باید شرایط و ضوابط مجوز انتخابی خود را قبل از اعمال آن مطالعه و درک کنند. همچنین، مجوزدهندگان باید تمام حقوق لازم را قبل از اعمال مجوزهای ما تأمین کنند تا عموم بتوانند مطابق انتظار از مطالب استفاده کنند. مجوزدهندگان باید به وضوح هرگونه محتوایی که تحت مجوز نیست را مشخص کنند. این شامل مطالب دیگر تحت مجوزهای CC یا مطالبی است که تحت استثنا یا محدودیت حق‌تألیف استفاده می‌شوند. ملاحظات بیشتر برای مجوزدهندگان: + wiki.creativecommons.org/Considerations_for_licensors + + ملاحظات برای عموم: با استفاده از یکی از مجوزهای عمومی ما، یک مجوزدهنده به عموم اجازه می‌دهد تا از مطالب تحت شرایط و ضوابط مشخص‌شده استفاده کنند. اگر اجازه مجوزدهنده به هر دلیلی لازم نباشد - برای مثال، به دلیل هرگونه استثنا یا محدودیت قابل اعمال در حق‌تألیف - در این صورت آن استفاده تحت مجوز تنظیم نمی‌شود. مجوزهای ما فقط اجازه‌هایی تحت حق‌تألیف و حقوق خاص دیگر که مجوزدهنده مجاز به اعطای آن‌ها است را ارائه می‌دهند. استفاده از مطالب ممکن است به دلایل دیگر همچنان محدود باشد، از جمله به دلیل اینکه دیگران حق‌تألیف یا حقوق دیگری در مطالب دارند. یک مجوزدهنده ممکن است درخواست‌های خاصی داشته باشد، مانند درخواست علامت‌گذاری یا توصیف تغییرات. اگرچه این درخواست‌ها تحت مجوزهای ما الزامی نیستند، شما تشویق می‌شوید که در صورت معقول بودن به آن‌ها احترام بگذارید. ملاحظات بیشتر برای عموم: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +مجوز عمومی کریتیو کامنز نسبت-اشتراک‌گذاری مشابه 4.0 بین‌المللی + +با استفاده از حقوق مجاز (که در زیر تعریف شده‌اند)، شما شرایط و ضوابط این مجوز عمومی کریتیو کامنز نسبت-اشتراک‌گذاری مشابه 4.0 بین‌المللی ("مجوز عمومی") را می‌پذیرید و موافقت می‌کنید که به آن‌ها پایبند باشید. تا حدی که این مجوز عمومی به عنوان یک قرارداد تفسیر شود، حقوق مجاز به شما در ازای پذیرش این شرایط و ضوابط اعطا می‌شود و مجوزدهنده این حقوق را در ازای مزایایی که از در دسترس قرار دادن مطالب تحت این شرایط و ضوابط دریافت می‌کند، به شما اعطا می‌کند. + +بخش 1 -- تعاریف. + + الف. مطالب اقتباسی به معنای مطالبی است که تحت حق‌تألیف و حقوق مشابه قرار دارند و از مطالب مجاز مشتق شده یا بر اساس آن‌ها ساخته شده‌اند و در آن‌ها مطالب مجاز به گونه‌ای ترجمه، تغییر، تنظیم، تبدیل یا به هر نحو دیگری اصلاح شده‌اند که نیاز به اجازه تحت حق‌تألیف و حقوق مشابه متعلق به مجوزدهنده دارد. برای اهداف این مجوز عمومی، جایی که مطالب مجاز یک اثر موسیقی، اجرا یا ضبط صدا است، مطالب اقتباسی همیشه زمانی تولید می‌شوند که مطالب مجاز با یک تصویر متحرک به صورت همزمان هماهنگ شوند. + + ب. مجوز اقتباس به معنای مجوزی است که شما برای حق‌تألیف و حقوق مشابه خود در مشارکت‌های خود به مطالب اقتباسی مطابق با شرایط و ضوابط این مجوز عمومی اعمال می‌کنید. + + پ. مجوز سازگار BY-SA به معنای مجوزی است که در creativecommons.org/compatiblelicenses فهرست شده و توسط کریتیو کامنز به عنوان معادل اساسی این مجوز عمومی تأیید شده است. + + ت. حق‌تألیف و حقوق مشابه به معنای حق‌تألیف و/یا حقوق مشابهی است که به حق‌تألیف نزدیک هستند، از جمله، بدون محدودیت، اجرا، پخش، ضبط صدا و حقوق پایگاه داده Sui Generis، بدون توجه به اینکه این حقوق چگونه برچسب‌گذاری یا دسته‌بندی شده‌اند. برای اهداف این مجوز عمومی، حقوق مشخص‌شده در بخش 2(ب)(1)-(2) حق‌تألیف و حقوق مشابه نیستند. + + ث. تدابیر فناوری مؤثر به معنای تدابیری است که در صورت عدم وجود مجوز مناسب، ممکن است تحت قوانین تحقق تعهدات ماده 11 معاهده حق‌تألیف WIPO که در 20 دسامبر 1996 تصویب شده است و/یا توافقات بین‌المللی مشابه دور زده نشوند. + + ج. استثناها و محدودیت‌ها به معنای استفاده منصفانه، معامله منصفانه و/یا هر استثنا یا محدودیت دیگری برای حق‌تألیف و حقوق مشابه است که برای استفاده شما از مطالب مجاز اعمال می‌شود. + + چ. عناصر مجوز به معنای ویژگی‌های مجوز فهرست‌شده در نام یک مجوز عمومی کریتیو کامنز است. عناصر مجوز این مجوز عمومی عبارتند از نسبت و اشتراک‌گذاری مشابه. + + ح. مطالب مجاز به معنای اثر هنری یا ادبی، پایگاه داده یا سایر مطالبی است که مجوزدهنده این مجوز عمومی را به آن اعمال کرده است. + + خ. حقوق مجاز به معنای حقوقی است که تحت شرایط و ضوابط این مجوز عمومی به شما اعطا می‌شود و محدود به تمام حق‌تألیف و حقوق مشابهی است که برای استفاده شما از مطالب مجاز اعمال می‌شود و مجوزدهنده مجاز به اعطای آن‌ها است. + + د. مجوزدهنده به معنای فرد(ها) یا نهاد(هایی) است که حقوق تحت این مجوز عمومی را اعطا می‌کنند. + + ذ. اشتراک‌گذاری به معنای ارائه مطالب به عموم از طریق هر وسیله یا فرآیندی است که نیاز به اجازه تحت حقوق مجاز دارد، مانند تکثیر، نمایش عمومی، اجرای عمومی، توزیع، انتشار، ارتباط یا واردات، و در دسترس قرار دادن مطالب برای عموم به گونه‌ای که اعضای عموم بتوانند مطالب را از مکانی و در زمانی که خود انتخاب می‌کنند، دسترسی داشته باشند. + + ر. حقوق پایگاه داده Sui Generis به معنای حقوقی غیر از حق‌تألیف است که از دستورالعمل 96/9/EC پارلمان اروپا و شورای 11 مارس 1996 در مورد حفاظت قانونی از پایگاه‌های داده، به عنوان اصلاح‌شده و/یا جایگزین‌شده، و همچنین سایر حقوق اساساً معادل در هر جای دنیا ناشی می‌شود. + + ز. شما به معنای فرد یا نهادی است که حقوق مجاز را تحت این مجوز عمومی اعمال می‌کند. "شما" معنای مشابهی دارد. + +بخش 2 -- دامنه. + + الف. اعطای مجوز. + + 1. با رعایت شرایط و ضوابط این مجوز عمومی، مجوزدهنده بدین‌وسیله به شما یک مجوز جهانی، بدون حق امتیاز، غیرقابل انتقال، غیرانحصاری و غیرقابل بازگشت برای اعمال حقوق مجاز در مطالب مجاز اعطا می‌کند تا: + + الف. مطالب مجاز را به طور کامل یا جزئی تکثیر و به اشتراک بگذارید؛ و + + ب. مطالب اقتباسی تولید، تکثیر و به اشتراک بگذارید. + + 2. استثناها و محدودیت‌ها. برای جلوگیری از ابهام، جایی که استثناها و محدودیت‌ها برای استفاده شما اعمال می‌شوند، این مجوز عمومی اعمال نمی‌شود و شما نیازی به رعایت شرایط و ضوابط آن ندارید. + + 3. مدت. مدت این مجوز عمومی در بخش 6(الف) مشخص شده است. + + 4. رسانه‌ها و فرمت‌ها؛ اصلاحات فنی مجاز. مجوزدهنده به شما اجازه می‌دهد حقوق مجاز را در تمام رسانه‌ها و فرمت‌ها، چه اکنون شناخته‌شده و چه در آینده ایجادشده، اعمال کنید و اصلاحات فنی لازم برای انجام این کار را انجام دهید. مجوزدهنده از هرگونه حق یا اختیاری برای منع شما از انجام اصلاحات فنی لازم برای اعمال حقوق مجاز، از جمله اصلاحات فنی لازم برای دور زدن تدابیر فناوری مؤثر، صرف‌نظر می‌کند و/یا موافقت می‌کند که آن‌ها را اعمال نکند. برای اهداف این مجوز عمومی، صرفاً انجام اصلاحات مجاز تحت این بخش 2(الف)(4) هرگز مطالب اقتباسی تولید نمی‌کند. + + 5. گیرندگان بعدی. + + الف. پیشنهاد از مجوزدهنده -- مطالب مجاز. هر گیرنده مطالب مجاز به طور خودکار پیشنهادی از مجوزدهنده برای اعمال حقوق مجاز تحت شرایط و ضوابط این مجوز عمومی دریافت می‌کند. + + ب. پیشنهاد اضافی از مجوزدهنده -- مطالب اقتباسی. هر گیرنده مطالب اقتباسی از شما به طور خودکار پیشنهادی از مجوزدهنده برای اعمال حقوق مجاز در مطالب اقتباسی تحت شرایط مجوز اقتباسی که شما اعمال می‌کنید، دریافت می‌کند. + + پ. محدودیت‌های بعدی ممنوع. شما نمی‌توانید هیچ شرایط یا ضوابط اضافی یا متفاوتی بر مطالب مجاز اعمال کنید یا تدابیر فناوری مؤثری بر آن‌ها اعمال کنید که اعمال حقوق مجاز توسط هر گیرنده مطالب مجاز را محدود کند. + + 6. عدم تأیید. هیچ چیزی در این مجوز عمومی به عنوان اجازه برای ادعا یا القا اینکه شما یا استفاده شما از مطالب مجاز به مجوزدهنده یا دیگرانی که برای دریافت نسبت تعیین شده‌اند، متصل، حمایت‌شده یا دارای وضعیت رسمی است، تفسیر نمی‌شود یا نمی‌تواند تفسیر شود. + + ب. سایر حقوق. + + 1. حقوق اخلاقی، مانند حق تمامیت، تحت این مجوز عمومی مجوز داده نمی‌شوند، و همچنین حقوق تبلیغاتی، حریم خصوصی و/یا سایر حقوق مشابه شخصیتی؛ با این حال، تا حد ممکن، مجوزدهنده از هرگونه حقوقی که توسط مجوزدهنده نگه داشته شده است، صرف‌نظر می‌کند و/یا موافقت می‌کند که آن‌ها را اعمال نکند تا به شما اجازه دهد حقوق مجاز را اعمال کنید، اما نه بیشتر. + + 2. حقوق ثبت اختراع و علائم تجاری تحت این مجوز عمومی مجوز داده نمی‌شوند. + + 3. تا حد ممکن، مجوزدهنده از هرگونه حق جمع‌آوری حق امتیاز از شما برای اعمال حقوق مجاز، چه به طور مستقیم و چه از طریق یک جامعه جمع‌آوری تحت هر طرح مجوز داوطلبانه یا قابل صرف‌نظر یا اجباری، صرف‌نظر می‌کند. در تمام موارد دیگر، مجوزدهنده به صراحت هرگونه حق جمع‌آوری چنین حق امتیازاتی را محفوظ می‌دارد. +حقوق، سپس پایگاه داده‌ای که شما در آن حقوق پایگاه داده Sui Generis دارید (اما نه محتوای فردی آن)، ماده‌ای اقتباسی محسوب می‌شود، + +از جمله برای اهداف بخش ۳(ب)؛ و +ج. شما باید شرایط بخش ۳(الف) را رعایت کنید اگر تمام یا بخش قابل توجهی از محتوای پایگاه داده را به اشتراک بگذارید. + +برای رفع هرگونه ابهام، این بخش ۴ مکمل است و جایگزین تعهدات شما تحت این مجوز عمومی نمی‌شود، جایی که حقوق مجوز شامل سایر حقوق کپی‌رایت و مشابه است. + +### بخش ۵ -- سلب مسئولیت از ضمانت‌ها و محدودیت مسئولیت + +الف. مگر اینکه به طور جداگانه توسط مجوزدهنده انجام شده باشد، تا حد ممکن، مجوزدهنده ماده مجوز داده شده را به صورت «همان‌طور که هست» و «همان‌طور که موجود است» ارائه می‌دهد و هیچ گونه نمایندگی یا ضمانتی از هر نوع در مورد ماده مجوز داده شده، چه صریح، ضمنی، قانونی یا دیگر، نمی‌دهد. این شامل، بدون محدودیت، ضمانت‌های مالکیت، قابلیت فروش، تناسب برای یک هدف خاص، عدم نقض، عدم وجود نقص‌های پنهان یا دیگر، دقت، یا حضور یا عدم حضور خطاها، چه شناخته شده یا قابل کشف باشد. جایی که سلب ضمانت‌ها به طور کامل یا جزئی مجاز نیست، این سلب ممکن است برای شما اعمال نشود. + +ب. تا حد ممکن، تحت هیچ شرایطی مجوزدهنده بر اساس هیچ نظریه قانونی (از جمله، بدون محدودیت، سهل‌انگاری) یا به هر شکل دیگر مسئولیتی در قبال شما برای هرگونه خسارت مستقیم، ویژه، غیرمستقیم، اتفاقی، تبعی، تنبیهی، نمونه‌ای یا دیگر زیان‌ها، هزینه‌ها، مخارج یا خسارت‌هایی که از این مجوز عمومی یا استفاده از ماده مجوز داده شده ناشی می‌شود، نخواهد داشت، حتی اگر مجوزدهنده از احتمال چنین زیان‌ها، هزینه‌ها، مخارج یا خسارت‌ها مطلع شده باشد. جایی که محدودیت مسئولیت به طور کامل یا جزئی مجاز نیست، این محدودیت ممکن است برای شما اعمال نشود. + +ج. سلب ضمانت‌ها و محدودیت مسئولیت ارائه شده در بالا باید به گونه‌ای تفسیر شود که تا حد ممکن، نزدیک‌ترین تقریب به یک سلب کامل و چشم‌پوشی از تمام مسئولیت‌ها باشد. + +### بخش ۶ -- مدت و خاتمه + +الف. این مجوز عمومی برای مدت زمان حقوق کپی‌رایت و حقوق مشابه مجوز داده شده در اینجا اعمال می‌شود. با این حال، اگر شما نتوانید این مجوز عمومی را رعایت کنید، حقوق شما تحت این مجوز عمومی به طور خودکار خاتمه می‌یابد. + +ب. جایی که حق شما برای استفاده از ماده مجوز داده شده تحت بخش ۶(الف) خاتمه یافته است، این حق دوباره برقرار می‌شود: + +۱. به طور خودکار از تاریخ رفع تخلف، به شرطی که تخلف ظرف ۳۰ روز از کشف شما رفع شود؛ یا +۲. با بازگرداندن صریح توسط مجوزدهنده. + +برای رفع هرگونه ابهام، این بخش ۶(ب) بر هیچ حقی که مجوزدهنده ممکن است برای جبران تخلفات شما از این مجوز عمومی داشته باشد، تأثیر نمی‌گذارد. + +ج. برای رفع هرگونه ابهام، مجوزدهنده ممکن است همچنین ماده مجوز داده شده را تحت شرایط یا ضوابط جداگانه ارائه دهد یا توزیع ماده مجوز داده شده را در هر زمان متوقف کند؛ با این حال، انجام این کار این مجوز عمومی را خاتمه نمی‌دهد. + +د. بخش‌های ۱، ۵، ۶، ۷ و ۸ پس از خاتمه این مجوز عمومی باقی می‌مانند. + +### بخش ۷ -- شرایط و ضوابط دیگر + +الف. مجوزدهنده تحت هیچ شرایطی به هیچ شرایط یا ضوابط اضافی یا متفاوتی که توسط شما اعلام شده باشد، مگر اینکه صریحاً موافقت شده باشد، متعهد نخواهد بود. + +ب. هرگونه ترتیبات، تفاهم‌ها یا توافق‌هایی در مورد ماده مجوز داده شده که در اینجا بیان نشده‌اند، جدا از و مستقل از شرایط و ضوابط این مجوز عمومی هستند. + +### بخش ۸ -- تفسیر + +الف. برای رفع هرگونه ابهام، این مجوز عمومی کاهش، محدودیت، محدودسازی یا اعمال شرایط بر هرگونه استفاده از ماده مجوز داده شده که به طور قانونی بدون اجازه تحت این مجوز عمومی قابل انجام باشد، را انجام نمی‌دهد و نباید به این شکل تفسیر شود. + +ب. تا حد ممکن، اگر هر بند از این مجوز عمومی غیرقابل اجرا تشخیص داده شود، باید به طور خودکار به حداقل حد لازم اصلاح شود تا قابل اجرا شود. اگر بند قابل اصلاح نباشد، باید از این مجوز عمومی جدا شود بدون اینکه بر قابلیت اجرای شرایط و ضوابط باقی‌مانده تأثیر بگذارد. + +ج. هیچ شرط یا ضابطه‌ای از این مجوز عمومی چشم‌پوشی نخواهد شد و هیچ عدم رعایتی مورد موافقت قرار نخواهد گرفت مگر اینکه صریحاً توسط مجوزدهنده موافقت شده باشد. + +د. هیچ چیزی در این مجوز عمومی محدودیت یا چشم‌پوشی از هرگونه امتیازات و مصونیت‌هایی که برای مجوزدهنده یا شما اعمال می‌شود، از جمله از فرآیندهای قانونی هر حوزه قضایی یا مرجع، تشکیل نمی‌دهد یا ممکن است به این شکل تفسیر شود. + +======================================================================= + +Creative Commons طرف این مجوزهای عمومی نیست. با این حال، Creative Commons ممکن است تصمیم بگیرد یکی از مجوزهای عمومی خود را به ماده‌ای که منتشر می‌کند اعمال کند و در آن موارد به عنوان «مجوزدهنده» در نظر گرفته شود. متن مجوزهای عمومی Creative Commons به حوزه عمومی تحت CC0 Public Domain Dedication اختصاص داده شده است. به جز برای هدف محدود نشان دادن اینکه ماده تحت یک مجوز عمومی Creative Commons به اشتراک گذاشته شده است یا همان‌طور که در سیاست‌های Creative Commons منتشر شده در creativecommons.org/policies مجاز است، Creative Commons استفاده از علامت تجاری "Creative Commons" یا هر علامت تجاری یا لوگوی دیگر Creative Commons را بدون رضایت کتبی قبلی خود، از جمله، بدون محدودیت، در ارتباط با هرگونه اصلاحات غیرمجاز به هر یک از مجوزهای عمومی خود یا هرگونه ترتیبات، تفاهم‌ها یا توافق‌هایی در مورد استفاده از ماده مجوز داده شده، مجاز نمی‌داند. برای رفع هرگونه ابهام، این بند بخشی از مجوزهای عمومی نیست. + +Creative Commons ممکن است از طریق creativecommons.org تماس گرفته شود. + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/fa/lessons/sketchnotes/README.md b/translations/fa/lessons/sketchnotes/README.md new file mode 100644 index 00000000..82bc86ac --- /dev/null +++ b/translations/fa/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +تمام یادداشت‌های تصویری این برنامه درسی را می‌توانید از اینجا دانلود کنید. + +🎨 ساخته شده توسط: تومومی ایمورا (توییتر: [@girlie_mac](https://twitter.com/girlie_mac)، گیت‌هاب: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**سلب مسئولیت**: +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file diff --git a/translations/hi/README.md b/translations/hi/README.md index cdb049f3..dacbbca0 100644 --- a/translations/hi/README.md +++ b/translations/hi/README.md @@ -1,140 +1,156 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# शुरुआती लोगों के लिए कृत्रिम बुद्धिमत्ता - एक पाठ्यक्रम +# शुरुआती लोगों के लिए कृत्रिम बुद्धिमत्ता - एक पाठ्यक्रम -|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| शुरुआती लोगों के लिए AI - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ स्केच नोट [(@girlie_mac)](https://twitter.com/girlie_mac) द्वारा ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| शुरुआती लोगों के लिए AI - _[@girlie_mac](https://twitter.com/girlie_mac) द्वारा स्केच नोट_ | -हमारे 12-सप्ताह, 24-पाठों के पाठ्यक्रम के साथ **कृत्रिम बुद्धिमत्ता** (AI) की दुनिया का अन्वेषण करें! इसमें व्यावहारिक पाठ, क्विज़ और प्रयोगशालाएँ शामिल हैं। यह पाठ्यक्रम शुरुआती लोगों के लिए अनुकूल है और इसमें TensorFlow और PyTorch जैसे उपकरणों के साथ-साथ AI में नैतिकता को भी शामिल किया गया है। +**कृत्रिम बुद्धिमत्ता** (AI) की दुनिया को हमारे 12-सप्ताह, 24-पाठ वाले पाठ्यक्रम के साथ खोजें! इसमें व्यावहारिक पाठ, क्विज़ और प्रयोगशालाएं शामिल हैं। यह पाठ्यक्रम शुरुआती लोगों के लिए अनुकूल है और इसमें TensorFlow और PyTorch जैसे टूल्स के साथ-साथ AI में नैतिकता भी शामिल है। -## आप क्या सीखेंगे +## आप क्या सीखेंगे -**[पाठ्यक्रम का माइंडमैप](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[पाठ्यक्रम का माइंडमैप](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -इस पाठ्यक्रम में, आप सीखेंगे: +इस पाठ्यक्रम में, आप सीखेंगे: -* कृत्रिम बुद्धिमत्ता के विभिन्न दृष्टिकोण, जिसमें **ज्ञान प्रतिनिधित्व** और तर्क के साथ "अच्छा पुराना" प्रतीकात्मक दृष्टिकोण शामिल है ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))। -* **न्यूरल नेटवर्क** और **डीप लर्निंग**, जो आधुनिक AI के मूल में हैं। हम इन महत्वपूर्ण विषयों के पीछे के सिद्धांतों को [TensorFlow](http://Tensorflow.org) और [PyTorch](http://pytorch.org) जैसे दो सबसे लोकप्रिय ढाँचों में कोड का उपयोग करके स्पष्ट करेंगे। -* चित्रों और पाठ के साथ काम करने के लिए **न्यूरल आर्किटेक्चर**। हम हाल के मॉडलों को कवर करेंगे लेकिन अत्याधुनिक में थोड़ी कमी हो सकती है। -* कम लोकप्रिय AI दृष्टिकोण, जैसे **जीन संबंधी एल्गोरिदम** और **मल्टी-एजेंट सिस्टम**। +* कृत्रिम बुद्धिमत्ता के विभिन्न दृष्टिकोण, जिसमें **ज्ञान प्रतिनिधित्व** और तर्क के साथ "पुराने अच्छे" प्रतीकात्मक दृष्टिकोण ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) शामिल हैं। +* **न्यूरल नेटवर्क्स** और **डीप लर्निंग**, जो आधुनिक AI के केंद्र में हैं। हम इन महत्वपूर्ण विषयों के पीछे के विचारों को दो सबसे लोकप्रिय फ्रेमवर्क - [TensorFlow](http://Tensorflow.org) और [PyTorch](http://pytorch.org) में कोड का उपयोग करके समझाएंगे। +* छवियों और पाठ के साथ काम करने के लिए **न्यूरल आर्किटेक्चर**। हम हाल के मॉडलों को कवर करेंगे लेकिन अत्याधुनिक तकनीकों में थोड़े पीछे हो सकते हैं। +* कम लोकप्रिय AI दृष्टिकोण, जैसे **जेनेटिक एल्गोरिदम** और **मल्टी-एजेंट सिस्टम्स**। -हम इस पाठ्यक्रम में क्या कवर नहीं करेंगे: +हम इस पाठ्यक्रम में क्या कवर नहीं करेंगे: -> [इस पाठ्यक्रम के लिए सभी अतिरिक्त संसाधनों को हमारे Microsoft Learn संग्रह में खोजें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [इस पाठ्यक्रम के लिए सभी अतिरिक्त संसाधन हमारी Microsoft Learn संग्रह में खोजें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* **व्यापार में AI** के उपयोग के व्यापार मामले। Microsoft Learn पर [व्यापार उपयोगकर्ताओं के लिए AI का परिचय](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) सीखने का मार्ग लेने पर विचार करें, या [AI बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), जिसे [INSEAD](https://www.insead.edu/) के सहयोग से विकसित किया गया है। -* **क्लासिक मशीन लर्निंग**, जिसे हमारे [शुरुआत के लिए मशीन लर्निंग पाठ्यक्रम](http://github.com/Microsoft/ML-for-Beginners) में अच्छी तरह से वर्णित किया गया है। -* **[संज्ञानात्मक सेवाओं](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** का उपयोग करके बनाई गई व्यावहारिक AI अनुप्रयोग। इसके लिए, हम अनुशंसा करते हैं कि आप Microsoft Learn के मॉड्यूल से [दृश्य](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [प्राकृतिक भाषा प्रसंस्करण](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI सेवा के साथ जनरेटिव AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** और अन्य से शुरू करें। -* विशिष्ट ML **क्लाउड ढांचे**, जैसे [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), या [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning के साथ मशीन लर्निंग समाधान बनाना और संचालित करना](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) और [Azure Databricks के साथ मशीन लर्निंग समाधान बनाना और संचालित करना](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) अध्ययन पथों का उपयोग करने पर विचार करें। -* **संवादी एआई** और **चैट बॉट्स**। एक अलग [संवादी एआई समाधान बनाएं](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) अध्ययन पथ है, और आप अधिक जानकारी के लिए [इस ब्लॉग पोस्ट](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) को भी देख सकते हैं। -* **डीप लर्निंग के पीछे की गहरी गणित**। इसके लिए, हम [डीप लर्निंग](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) की सिफारिश करते हैं जो इयान गुडफेलो, योशुआ बेंगियो और एरोन कौरविल द्वारा लिखी गई है, जो ऑनलाइन भी उपलब्ध है [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) पर। +* **व्यवसाय में AI** का उपयोग करने के व्यावसायिक मामले। Microsoft Learn पर [व्यवसाय उपयोगकर्ताओं के लिए AI का परिचय](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) या [AI बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), जो [INSEAD](https://www.insead.edu/) के सहयोग से विकसित किया गया है, को लेने पर विचार करें। +* **क्लासिक मशीन लर्निंग**, जिसे हमारे [शुरुआती लोगों के लिए मशीन लर्निंग पाठ्यक्रम](http://github.com/Microsoft/ML-for-Beginners) में अच्छी तरह से वर्णित किया गया है। +* **[कॉग्निटिव सर्विसेज](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** का उपयोग करके बनाए गए व्यावहारिक AI अनुप्रयोग। इसके लिए, हम Microsoft Learn के [विज़न](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [नेचुरल लैंग्वेज प्रोसेसिंग](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI Service के साथ जनरेटिव AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** और अन्य मॉड्यूल से शुरुआत करने की सिफारिश करते हैं। +* विशिष्ट ML **क्लाउड फ्रेमवर्क**, जैसे [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), या [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning के साथ मशीन लर्निंग समाधान बनाएं और संचालित करें](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) और [Azure Databricks के साथ मशीन लर्निंग समाधान बनाएं और संचालित करें](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) लर्निंग पाथ्स का उपयोग करने पर विचार करें। +* **संवादी AI** और **चैट बॉट्स**। इसके लिए एक अलग [संवादी AI समाधान बनाएं](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) लर्निंग पाथ है, और आप अधिक विवरण के लिए [इस ब्लॉग पोस्ट](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) का भी संदर्भ ले सकते हैं। +* डीप लर्निंग के पीछे का **गहन गणित**। इसके लिए, हम Ian Goodfellow, Yoshua Bengio और Aaron Courville द्वारा लिखित [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) की सिफारिश करेंगे, जो ऑनलाइन भी उपलब्ध है [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)। -क्लाउड में _एआई_ विषयों के लिए एक सरल परिचय के लिए, आप [Azure पर कृत्रिम बुद्धिमत्ता के साथ शुरुआत करें](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) अध्ययन पथ लेने पर विचार कर सकते हैं। +क्लाउड में _AI_ विषयों के लिए एक सरल परिचय के लिए, आप [Azure पर कृत्रिम बुद्धिमत्ता के साथ शुरुआत करें](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) लर्निंग पाथ लेने पर विचार कर सकते हैं। -# सामग्री +# सामग्री -| | पाठ लिंक | PyTorch/Keras/TensorFlow | प्रयोगशाला | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [कोर्स सेटअप](./lessons/0-course-setup/setup.md) | [अपने विकास वातावरण को सेट करें](./lessons/0-course-setup/how-to-run.md) | | -| I | [**एआई का परिचय**](./lessons/1-Intro/README.md) | | | -| 01 | [एआई का परिचय और इतिहास](./lessons/1-Intro/README.md) | - | - | -| II | **संकेतात्मक एआई** | -| 02 | [ज्ञान प्रतिनिधित्व और विशेषज्ञ प्रणाली](./lessons/2-Symbolic/README.md) | [विशेषज्ञ प्रणाली](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [ओंटोलॉजी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[संकल्पना ग्राफ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**न्यूरल नेटवर्क्स का परिचय**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [परसेप्ट्रॉन](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [मल्टी-लेयर्ड परसेप्ट्रॉन और अपना ढांचा बनाना](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [फ्रेमवर्क (PyTorch/TensorFlow) और ओवरफिटिंग का परिचय](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**कंप्यूटर दृष्टि**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure पर कंप्यूटर दृष्टि का अन्वेषण करें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [कंप्यूटर दृष्टि में परिचय। OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [संवहन तंत्रिका नेटवर्क](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN आर्किटेक्चर](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [पूर्व-प्रशिक्षित नेटवर्क और स्थानांतरण सीखना](./lessons/4-ComputerVision/08-TransferLearning/README.md) और [प्रशिक्षण ट्रिक्स](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | -| 09 | [ऑटोएन्कोडर्स और VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [जनरेटिव एडवर्सेरियल नेटवर्क और कलात्मक शैली स्थानांतरण](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | -| 11 | [वस्तु पहचान](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [सेमांटिक विभाजन। U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | -| V | [**प्राकृतिक भाषा प्रसंस्करण**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [माइक्रोसॉफ्ट एज़्योर पर प्राकृतिक भाषा प्रसंस्करण का अन्वेषण करें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| -| 13 | [पाठ प्रतिनिधित्व. बोव/टीएफ-आईडीएफ](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [अर्थात्मक शब्द एम्बेडिंग. वर्ड2वेक और ग्लोवे](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [भाषा मॉडलिंग. अपने खुद के एम्बेडिंग को प्रशिक्षित करना](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [प्रयोगशाला](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | -| 16 | [पुनरावर्ती न्यूरल नेटवर्क](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [जनरेटिव पुनरावर्ती नेटवर्क](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [प्रयोगशाला](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | -| 18 | [ट्रांसफार्मर. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [नामित इकाई पहचान](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [प्रयोगशाला](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [बड़े भाषा मॉडल, प्रॉम्प्ट प्रोग्रामिंग और कुछ शॉट कार्य](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | -| VI | **अन्य एआई तकनीकें** || | -| 21 | [जैविक एल्गोरिदम](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [डीप रिइन्फोर्समेंट लर्निंग](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [प्रयोगशाला](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [मल्टी-एजेंट सिस्टम](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **एआई नैतिकता** | | | -| 24 | [एआई नैतिकता और जिम्मेदार एआई](./lessons/7-Ethics/README.md) | [Microsoft Learn: जिम्मेदार एआई सिद्धांत](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | -| IX | **अतिरिक्त** | | | -| 25 | [मल्टी-मोडल नेटवर्क, CLIP और VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| | पाठ लिंक | PyTorch/Keras/TensorFlow | प्रयोगशाला | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [पाठ्यक्रम सेटअप](./lessons/0-course-setup/setup.md) | [अपना विकास वातावरण सेट करें](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI का परिचय**](./lessons/1-Intro/README.md) | | | +| 01 | [AI का परिचय और इतिहास](./lessons/1-Intro/README.md) | - | - | +| II | **प्रतीकात्मक AI** | +| 02 | [ज्ञान प्रतिनिधित्व और विशेषज्ञ प्रणाली](./lessons/2-Symbolic/README.md) | [विशेषज्ञ प्रणाली](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [ऑन्टोलॉजी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[कॉन्सेप्ट ग्राफ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**न्यूरल नेटवर्क्स का परिचय**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [परसेप्ट्रॉन](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [मल्टी-लेयर्ड परसेप्ट्रॉन और अपना फ्रेमवर्क बनाना](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [फ्रेमवर्क्स (PyTorch/TensorFlow) और ओवरफिटिंग का परिचय](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**कंप्यूटर विज़न**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure पर कंप्यूटर विज़न का अन्वेषण करें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [कंप्यूटर विज़न का परिचय। OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [कन्वोल्यूशनल न्यूरल नेटवर्क्स](./lessons/4-ComputerVision/07-ConvNets/README.md) और [CNN आर्किटेक्चर](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [प्री-ट्रेंड नेटवर्क्स और ट्रांसफर लर्निंग](./lessons/4-ComputerVision/08-TransferLearning/README.md) और [ट्रेनिंग ट्रिक्स](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [लैब](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [ऑटोएन्कोडर्स और VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [जेनरेटिव एडवर्सेरियल नेटवर्क्स और आर्टिस्टिक स्टाइल ट्रांसफर](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [ऑब्जेक्ट डिटेक्शन](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [लैब](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [सेमांटिक सेगमेंटेशन. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**नेचुरल लैंग्वेज प्रोसेसिंग**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure पर नेचुरल लैंग्वेज प्रोसेसिंग एक्सप्लोर करें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [टेक्स्ट रिप्रेजेंटेशन. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [सेमांटिक वर्ड एम्बेडिंग्स. Word2Vec और GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [लैंग्वेज मॉडलिंग. अपने एम्बेडिंग्स को ट्रेन करें](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [लैब](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [रिकरेंट न्यूरल नेटवर्क्स](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [जेनरेटिव रिकरेंट नेटवर्क्स](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [लैब](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ट्रांसफॉर्मर्स. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [नेम्ड एंटिटी रिकग्निशन](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [लैब](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [लार्ज लैंग्वेज मॉडल्स, प्रॉम्प्ट प्रोग्रामिंग और फ्यू-शॉट टास्क्स](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **अन्य AI तकनीकें** || | +| 21 | [जेनेटिक एल्गोरिदम्स](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [डीप रिइंफोर्समेंट लर्निंग](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [लैब](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [मल्टी-एजेंट सिस्टम्स](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI एथिक्स** | | | +| 24 | [AI एथिक्स और जिम्मेदार AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: जिम्मेदार AI सिद्धांत](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **एक्स्ट्रा** | | | +| 25 | [मल्टी-मोडल नेटवर्क्स, CLIP और VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | ## प्रत्येक पाठ में शामिल है -* पूर्व-पठन सामग्री -* निष्पादित होने योग्य जुपिटर नोटबुक, जो अक्सर ढांचे के लिए विशिष्ट होते हैं (**PyTorch** या **TensorFlow**)। निष्पादित होने वाला नोटबुक कई सिद्धांतिक सामग्री भी शामिल करता है, इसलिए विषय को समझने के लिए आपको कम से कम एक संस्करण के नोटबुक (या तो PyTorch या TensorFlow) के माध्यम से जाना होगा। -* कुछ विषयों के लिए उपलब्ध **प्रयोगशालाएँ**, जो आपको सीखी गई सामग्री को एक विशेष समस्या पर लागू करने का अवसर देती हैं। -* कुछ अनुभागों में [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) मॉड्यूल के लिंक होते हैं जो संबंधित विषयों को कवर करते हैं। +* प्री-रीडिंग सामग्री +* निष्पादन योग्य Jupyter नोटबुक्स, जो अक्सर फ्रेमवर्क (**PyTorch** या **TensorFlow**) के लिए विशिष्ट होती हैं। निष्पादन योग्य नोटबुक में बहुत सैद्धांतिक सामग्री भी होती है, इसलिए विषय को समझने के लिए आपको नोटबुक का कम से कम एक संस्करण (PyTorch या TensorFlow) देखना होगा। +* **लैब्स** कुछ विषयों के लिए उपलब्ध हैं, जो आपको सीखी गई सामग्री को किसी विशिष्ट समस्या पर लागू करने का अवसर देते हैं। +* कुछ सेक्शन में [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) मॉड्यूल्स के लिंक शामिल हैं जो संबंधित विषयों को कवर करते हैं। -## शुरू करने के लिए +## शुरुआत कैसे करें -- हमने आपके विकास वातावरण को सेट करने में मदद के लिए एक [सेटअप पाठ](./lessons/0-course-setup/setup.md) बनाया है। - शिक्षकों के लिए, हमने आपके लिए भी एक [पाठ्यक्रम सेटअप पाठ](./lessons/0-course-setup/for-teachers.md) बनाया है! -- [VSCode या Codepace में कोड चलाने के लिए](./lessons/0-course-setup/how-to-run.md) +- हमने आपके विकास पर्यावरण को सेटअप करने में मदद करने के लिए एक [सेटअप पाठ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) बनाया है। +- शिक्षकों के लिए, हमने आपके लिए एक [पाठ्यक्रम सेटअप पाठ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) भी बनाया है! +- [VSCode या Codepace में कोड कैसे चलाएं](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) इन चरणों का पालन करें: -रेपो को फोर्क करें: इस पृष्ठ के शीर्ष-दाएं कोने पर "Fork" बटन पर क्लिक करें। +रेपॉजिटरी को फोर्क करें: इस पेज के ऊपर-दाईं ओर "Fork" बटन पर क्लिक करें। -रेपो को क्लोन करें: `git clone https://github.com/microsoft/AI-For-Beginners.git` +रेपॉजिटरी को क्लोन करें: `git clone https://github.com/microsoft/AI-For-Beginners.git` -बाद में इसे आसानी से खोजने के लिए इस रेपो को स्टार (🌟) करना न भूलें। +इस रेपो को स्टार (🌟) करना न भूलें ताकि इसे बाद में आसानी से ढूंढ सकें। ## अन्य शिक्षार्थियों से मिलें -हमारे [आधिकारिक एआई डिस्कॉर्ड सर्वर](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) से जुड़ें ताकि आप इस पाठ्यक्रम को ले रहे अन्य शिक्षार्थियों से मिल सकें और नेटवर्क बना सकें और सहायता प्राप्त कर सकें। +हमारे [आधिकारिक AI Discord सर्वर](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) में शामिल हों ताकि आप इस कोर्स को लेने वाले अन्य शिक्षार्थियों से मिल सकें, नेटवर्क बना सकें और सहायता प्राप्त कर सकें। -## क्विज़ +यदि आपके पास उत्पाद प्रतिक्रिया या प्रश्न हैं, तो हमारे [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) पर जाएं। -> **क्विज़ के बारे में एक नोट**: सभी क्विज़ क्विज़-ऐप फ़ोल्डर में आदि\quiz-app में शामिल हैं, वे पाठों के भीतर लिंक किए गए हैं, क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है या Azure पर तैनात किया जा सकता है; `quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें। इन्हें धीरे-धीरे स्थानीयकृत किया जा रहा है। +## क्विज़ +> **क्विज़ के बारे में एक नोट**: सभी क्विज़ Quiz-app फ़ोल्डर में etc\quiz-app में संग्रहीत हैं। इन्हें पाठों के भीतर से जोड़ा गया है। क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है या Azure पर तैनात किया जा सकता है; `quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें। इन्हें धीरे-धीरे स्थानीयकृत किया जा रहा है। +## मदद चाहिए -## सहायता की आवश्यकता है - -क्या आपके पास सुझाव हैं या आपने वर्तनी या कोड की गलतियाँ पाई हैं? एक मुद्दा उठाएँ या एक पुल अनुरोध बनाएँ। +क्या आपके पास सुझाव हैं या आपने वर्तनी या कोड में त्रुटियां पाई हैं? एक समस्या उठाएं या एक पुल अनुरोध बनाएं। ## विशेष धन्यवाद -* **✍️ मुख्य लेखक:** [Dmitry Soshnikov](http://soshnikov.com), पीएचडी -* **🔥 संपादक:** [Jen Looper](https://twitter.com/jenlooper), पीएचडी -* **🎨 स्केच नोट चित्रकार:** [Tomomi Imura](https://twitter.com/girlie_mac) -* **✅ क्विज़ निर्माता:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 मुख्य योगदानकर्ता:** [Evgenii Pishchik](https://github.com/Pe4enIks) +* **✍️ मुख्य लेखक:** [Dmitry Soshnikov](http://soshnikov.com), पीएचडी +* **🔥 संपादक:** [Jen Looper](https://twitter.com/jenlooper), पीएचडी +* **🎨 स्केच नोट इलस्ट्रेटर:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ क्विज़ निर्माता:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 मुख्य योगदानकर्ता:** [Evgenii Pishchik](https://github.com/Pe4enIks) ## अन्य पाठ्यक्रम -हमारी टीम अन्य पाठ्यक्रमों का निर्माण करती है! देखें: +हमारी टीम अन्य पाठ्यक्रम भी बनाती है! इन्हें देखें: -* [शुरुआत के लिए डेटा विज्ञान](https://aka.ms/ds4beginners) -* [**संस्करण 2.0** जनरेटिव एआई के लिए शुरुआती](https://aka.ms/genai-beginners) -* [**नया** साइबर सुरक्षा के लिए शुरुआती](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [शुरुआत के लिए वेब विकास](https://aka.ms/webdev-beginners) -* [शुरुआत के लिए IoT](https://aka.ms/iot-beginners) -* [शुरुआत के लिए मशीन लर्निंग](https://aka.ms/ml4beginners) -* [शुरुआत के लिए XR विकास](https://aka.ms/xr-dev-for-beginners) -* [एआई जोड़ी प्रोग्रामिंग के लिए GitHub Copilot में महारत](https://aka.ms/GitHubCopilotAI) +- [शुरुआती के लिए जनरेटिव AI](https://aka.ms/genai-beginners) +- [शुरुआती के लिए जनरेटिव AI .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [जावास्क्रिप्ट के साथ जनरेटिव AI](https://github.com/microsoft/generative-ai-with-javascript) +- [जावा के साथ जनरेटिव AI](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [शुरुआती के लिए AI](https://aka.ms/ai-beginners) +- [शुरुआती के लिए डेटा साइंस](https://aka.ms/datascience-beginners) +- [शुरुआती के लिए मशीन लर्निंग](https://aka.ms/ml-beginners) +- [शुरुआती के लिए साइबर सुरक्षा](https://github.com/microsoft/Security-101) +- [शुरुआती के लिए वेब विकास](https://aka.ms/webdev-beginners) +- [शुरुआती के लिए IoT](https://aka.ms/iot-beginners) +- [शुरुआती के लिए XR विकास](https://github.com/microsoft/xr-development-for-beginners) +- [एजेंटिक उपयोग के लिए GitHub Copilot में महारत हासिल करना](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [C#/.NET डेवलपर्स के लिए GitHub Copilot में महारत हासिल करना](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [अपना खुद का Copilot एडवेंचर चुनें](https://github.com/microsoft/CopilotAdventures) -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/SECURITY.md b/translations/hi/SECURITY.md index 9b09ab22..8c0c197b 100644 --- a/translations/hi/SECURITY.md +++ b/translations/hi/SECURITY.md @@ -1,40 +1,49 @@ + ## सुरक्षा -Microsoft हमारे सॉफ़्टवेयर उत्पादों और सेवाओं की सुरक्षा को गंभीरता से लेता है, जिसमें हमारे GitHub संगठनों के माध्यम से प्रबंधित सभी स्रोत कोड भंडार शामिल हैं, जिसमें [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), और [हमारे GitHub संगठन](https://opensource.microsoft.com/) शामिल हैं। +Microsoft हमारे सॉफ़्टवेयर उत्पादों और सेवाओं की सुरक्षा को गंभीरता से लेता है, जिसमें हमारे GitHub संगठनों के माध्यम से प्रबंधित सभी स्रोत कोड रिपॉजिटरी शामिल हैं, जैसे [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), और [हमारे GitHub संगठन](https://opensource.microsoft.com/)। -यदि आपको विश्वास है कि आपने किसी Microsoft के स्वामित्व वाले भंडार में एक सुरक्षा कमजोरी पाई है जो [Microsoft की सुरक्षा कमजोरी की परिभाषा](https://aka.ms/opensource/security/definition) को पूरा करती है, तो कृपया इसे हमें नीचे वर्णित तरीके से रिपोर्ट करें। +यदि आपको किसी Microsoft-स्वामित्व वाली रिपॉजिटरी में कोई सुरक्षा कमजोरी मिली है जो [Microsoft की सुरक्षा कमजोरी की परिभाषा](https://aka.ms/opensource/security/definition) के अंतर्गत आती है, तो कृपया इसे नीचे दिए गए निर्देशों के अनुसार हमें रिपोर्ट करें। -## सुरक्षा मुद्दों की रिपोर्टिंग +## सुरक्षा समस्याओं की रिपोर्टिंग **कृपया सार्वजनिक GitHub मुद्दों के माध्यम से सुरक्षा कमजोरियों की रिपोर्ट न करें।** -इसके बजाय, कृपया उन्हें Microsoft सुरक्षा प्रतिक्रिया केंद्र (MSRC) पर रिपोर्ट करें [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report)। +इसके बजाय, कृपया इसे Microsoft Security Response Center (MSRC) पर रिपोर्ट करें: [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report)। -यदि आप लॉग इन किए बिना सबमिट करना पसंद करते हैं, तो [secure@microsoft.com](mailto:secure@microsoft.com) पर ईमेल भेजें। यदि संभव हो, तो अपने संदेश को हमारे PGP कुंजी के साथ एन्क्रिप्ट करें; कृपया इसे [Microsoft सुरक्षा प्रतिक्रिया केंद्र PGP कुंजी पृष्ठ](https://aka.ms/opensource/security/pgpkey) से डाउनलोड करें। +यदि आप लॉग इन किए बिना रिपोर्ट करना पसंद करते हैं, तो [secure@microsoft.com](mailto:secure@microsoft.com) पर ईमेल भेजें। यदि संभव हो, तो हमारे PGP कुंजी के साथ अपने संदेश को एन्क्रिप्ट करें; इसे [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey) से डाउनलोड करें। -आपको 24 घंटे के भीतर एक प्रतिक्रिया प्राप्त होनी चाहिए। यदि किसी कारणवश आपको नहीं मिलती है, तो कृपया यह सुनिश्चित करने के लिए ईमेल के माध्यम से फॉलो अप करें कि हमने आपका मूल संदेश प्राप्त किया है। अतिरिक्त जानकारी [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) पर मिल सकती है। +आपको 24 घंटे के भीतर प्रतिक्रिया प्राप्त होनी चाहिए। यदि किसी कारणवश आपको प्रतिक्रिया नहीं मिलती है, तो कृपया ईमेल के माध्यम से फॉलो-अप करें ताकि यह सुनिश्चित हो सके कि हमें आपका मूल संदेश प्राप्त हुआ है। अतिरिक्त जानकारी [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) पर पाई जा सकती है। -कृपया नीचे सूचीबद्ध अनुरोधित जानकारी शामिल करें (जितना संभव हो) ताकि हम संभावित मुद्दे की प्रकृति और दायरे को बेहतर ढंग से समझ सकें: +कृपया नीचे सूचीबद्ध जानकारी (जितना संभव हो उतना प्रदान करें) शामिल करें ताकि हमें संभावित समस्या की प्रकृति और दायरे को बेहतर ढंग से समझने में मदद मिल सके: - * मुद्दे का प्रकार (जैसे बफर ओवरफ्लो, SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, आदि) - * स्रोत फ़ाइल(ओं) के पूर्ण पथ जो मुद्दे के प्रकट होने से संबंधित हैं - * प्रभावित स्रोत कोड का स्थान (टैग/ब्रांच/कमिट या प्रत्यक्ष URL) - * मुद्दे को पुन: उत्पन्न करने के लिए आवश्यक कोई विशेष कॉन्फ़िगरेशन - * मुद्दे को पुन: उत्पन्न करने के लिए चरण-दर-चरण निर्देश - * प्रमाण-की-धारणा या शोषण कोड (यदि संभव हो) - * मुद्दे का प्रभाव, जिसमें यह शामिल है कि एक हमलावर मुद्दे का शोषण कैसे कर सकता है + * समस्या का प्रकार (जैसे बफर ओवरफ्लो, SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, आदि) + * समस्या से संबंधित स्रोत फ़ाइलों के पूर्ण पथ + * प्रभावित स्रोत कोड का स्थान (टैग/ब्रांच/कमिट या सीधा URL) + * समस्या को पुन: उत्पन्न करने के लिए आवश्यक कोई विशेष कॉन्फ़िगरेशन + * समस्या को पुन: उत्पन्न करने के लिए चरण-दर-चरण निर्देश + * प्रूफ-ऑफ-कॉन्सेप्ट या एक्सप्लॉइट कोड (यदि संभव हो) + * समस्या का प्रभाव, जिसमें यह भी शामिल है कि हमलावर समस्या का कैसे फायदा उठा सकता है -यह जानकारी हमें आपकी रिपोर्ट को अधिक तेजी से ट्रायज करने में मदद करेगी। +यह जानकारी हमें आपकी रिपोर्ट को अधिक तेज़ी से प्राथमिकता देने में मदद करेगी। -यदि आप एक बग बाउंटी के लिए रिपोर्ट कर रहे हैं, तो अधिक पूर्ण रिपोर्टें उच्च बाउंटी पुरस्कार में योगदान कर सकती हैं। कृपया हमारे [Microsoft बग बाउंटी कार्यक्रम](https://aka.ms/opensource/security/bounty) पृष्ठ पर अधिक जानकारी के लिए जाएं। +यदि आप बग बाउंटी के लिए रिपोर्ट कर रहे हैं, तो अधिक विस्तृत रिपोर्ट उच्च बाउंटी पुरस्कार में योगदान कर सकती है। कृपया हमारे सक्रिय कार्यक्रमों के बारे में अधिक जानकारी के लिए [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) पेज पर जाएं। -## प्राथमिक भाषाएँ +## पसंदीदा भाषाएं -हम सभी संचारों को अंग्रेजी में पसंद करते हैं। +हम सभी संचारों को अंग्रेजी में प्राप्त करना पसंद करते हैं। ## नीति -Microsoft [समन्वित सुरक्षा प्रकटीकरण](https://aka.ms/opensource/security/cvd) के सिद्धांत का पालन करता है। +Microsoft [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd) के सिद्धांत का पालन करता है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/etc/CODE_OF_CONDUCT.md b/translations/hi/etc/CODE_OF_CONDUCT.md index 25e57291..6a1bd394 100644 --- a/translations/hi/etc/CODE_OF_CONDUCT.md +++ b/translations/hi/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ + # Microsoft ओपन सोर्स आचार संहिता -इस परियोजना ने [Microsoft ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। +इस प्रोजेक्ट ने [Microsoft ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। संसाधन: - [Microsoft ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) - [Microsoft आचार संहिता FAQ](https://opensource.microsoft.com/codeofconduct/faq/) -- प्रश्नों या चिंताओं के लिए संपर्क करें [opencode@microsoft.com](mailto:opencode@microsoft.com) +- प्रश्नों या चिंताओं के लिए [opencode@microsoft.com](mailto:opencode@microsoft.com) पर संपर्क करें -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/etc/CONTRIBUTING.md b/translations/hi/etc/CONTRIBUTING.md index 7ec9d8c2..4a76c4a5 100644 --- a/translations/hi/etc/CONTRIBUTING.md +++ b/translations/hi/etc/CONTRIBUTING.md @@ -1,20 +1,29 @@ -# योगदान + +# योगदान देना -यह परियोजना योगदान और सुझावों का स्वागत करती है। अधिकांश योगदान के लिए आपको एक योगदानकर्ता लाइसेंस अनुबंध (CLA) पर सहमति देने की आवश्यकता होती है, जिसमें यह घोषित किया जाता है कि आपके पास यह अधिकार है, और आप वास्तव में, हमें आपके योगदान का उपयोग करने के अधिकार प्रदान करते हैं। विवरण के लिए, देखें https://cla.microsoft.com। +यह प्रोजेक्ट योगदान और सुझावों का स्वागत करता है। अधिकांश योगदानों के लिए आपको एक Contributor License Agreement (CLA) से सहमत होना होगा, जिसमें यह घोषित किया जाता है कि आपके पास अधिकार हैं और आप हमें अपने योगदान का उपयोग करने का अधिकार प्रदान करते हैं। विवरण के लिए, https://cla.microsoft.com पर जाएं। -जब आप एक पुल अनुरोध सबमिट करते हैं, तो एक CLA-बॉट स्वचालित रूप से यह निर्धारित करेगा कि क्या आपको CLA प्रदान करने की आवश्यकता है और PR को उपयुक्त रूप से सजाएगा (जैसे, लेबल, टिप्पणी)। बस बॉट द्वारा प्रदान किए गए निर्देशों का पालन करें। आपको इसे हमारे CLA का उपयोग करने वाले सभी रिपॉजिटरी में केवल एक बार करना होगा। +जब आप एक पुल रिक्वेस्ट सबमिट करते हैं, तो CLA-बॉट स्वचालित रूप से यह निर्धारित करेगा कि क्या आपको CLA प्रदान करने की आवश्यकता है और PR को उचित रूप से सजाएगा (जैसे, लेबल, टिप्पणी)। बस बॉट द्वारा दिए गए निर्देशों का पालन करें। आपको यह केवल एक बार सभी रिपॉजिटरीज़ में करना होगा जो हमारे CLA का उपयोग करती हैं। -इस परियोजना ने [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। अधिक जानकारी के लिए [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) देखें या किसी भी अतिरिक्त प्रश्न या टिप्पणियों के साथ [opencode@microsoft.com](mailto:opencode@microsoft.com) से संपर्क करें। +इस प्रोजेक्ट ने [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। अधिक जानकारी के लिए [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) देखें या [opencode@microsoft.com](mailto:opencode@microsoft.com) पर किसी भी अतिरिक्त प्रश्न या टिप्पणियों के लिए संपर्क करें। # योगदान की तलाश -हम वर्तमान में निम्नलिखित विषयों पर योगदान के लिए सक्रिय रूप से देख रहे हैं: +हम वर्तमान में निम्नलिखित विषयों पर सक्रिय रूप से योगदान की तलाश कर रहे हैं: -- [ ] गहन पुनर्बलन शिक्षण पर अनुभाग लिखें -- [ ] वस्तु पहचान पर अनुभाग + नोटबुक में सुधार करें -- [ ] PyTorch Lightning (इस [अनुभाग](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md) के लिए) -- [ ] नामित इकाई पहचान पर अनुभाग + नमूने लिखें -- [ ] हमारे अपने एम्बेडिंग के प्रशिक्षण के लिए नमूने बनाएं इस [अनुभाग](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) के लिए +- [ ] डीप रिइनफोर्समेंट लर्निंग पर सेक्शन लिखें +- [ ] ऑब्जेक्ट डिटेक्शन पर सेक्शन + नोटबुक में सुधार करें +- [ ] PyTorch Lightning (इस सेक्शन के लिए [यहां](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] नेम्ड एंटिटी रिकग्निशन पर सेक्शन + सैंपल लिखें +- [ ] [इस सेक्शन](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) के लिए अपने खुद के एम्बेडिंग्स को ट्रेन करने के सैंपल बनाएं -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/etc/Mindmap.md b/translations/hi/etc/Mindmap.md index 1166f734..7c837a78 100644 --- a/translations/hi/etc/Mindmap.md +++ b/translations/hi/etc/Mindmap.md @@ -1,76 +1,87 @@ + # एआई ## [एआई का परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - - एआई की परिभाषा - - एआई का इतिहास - - एआई के दृष्टिकोण - - शीर्ष-से-नीचे/प्रतीकात्मक - - नीचे-से-ऊपर/न्यूरल - - विकासात्मक - - समन्वयात्मक / उभरता एआई - - [माइक्रोसॉफ्ट एआई बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - एआई की परिभाषा + - एआई का इतिहास + - एआई के दृष्टिकोण + - टॉप-डाउन/सिंबॉलिक + - बॉटम-अप/न्यूरल + - इवोल्यूशनरी + - सिनर्जेटिक / इमर्जेंट एआई + - [माइक्रोसॉफ्ट एआई बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) -## [प्रतीकात्मक एआई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - - ज्ञान प्रतिनिधित्व - - [विशेषज्ञ प्रणाली](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - - [ऑन्टोलॉजीज़](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - - सेमांटिक वेब +## [सिंबॉलिक एआई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - ज्ञान का प्रतिनिधित्व + - [एक्सपर्ट सिस्टम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [ऑन्टोलॉजीज](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - सेमांटिक वेब -## [न्यूरल नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - - [पर्सेप्ट्रॉन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - - [मल्टी-लेयर्ड नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - - [फ्रेमवर्क का परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - - [पायटॉर्च](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - - [टेंसरफ्लो](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) - - [ओवरफिटिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) +## [न्यूरल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [पर्सेप्ट्रॉन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [मल्टी-लेयर्ड नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [फ्रेमवर्क्स का परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ओवरफिटिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) -## [कंप्यूटर दृष्टि](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - - MS लर्न पर - - [एआई फंडामेंटल्स: कंप्यूटर दृष्टि का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - - [पायटॉर्च के साथ सीवी](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - - [टेंसरफ्लो के साथ सीवी](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - - [सीवी का परिचय। ओपनसीवी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - - [संविधानिक नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - - [सीएनएन आर्किटेक्चर](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [स्थानांतरण अधिगम](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [प्रशिक्षण तकनीकें](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - - [ऑटोएन्कोडर्स और वीएई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [जनरेटिव एडवर्सेरियल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - - [शैली स्थानांतरण](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - - [वस्तु पहचान](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - - [सेगमेंटेशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) +## [कंप्यूटर विज़न](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - MS Learn पर + - [एआई फंडामेंटल्स: कंप्यूटर विज़न का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [PyTorch के साथ कंप्यूटर विज़न](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow के साथ कंप्यूटर विज़न](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [कंप्यूटर विज़न का परिचय। OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [कन्वोल्यूशनल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [सीएनएन आर्किटेक्चर्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ट्रांसफर लर्निंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ट्रेनिंग ट्रिक्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [ऑटोएन्कोडर्स और वीएई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [जेनरेटिव एडवर्सेरियल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [स्टाइल ट्रांसफर](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [ऑब्जेक्ट डिटेक्शन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [सेगमेंटेशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [नेचुरल लैंग्वेज प्रोसेसिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - MS Learn पर + - [एआई फंडामेंटल्स: एनएलपी का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [टेक्स्ट प्रतिनिधित्व](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - बैग ऑफ वर्ड्स + - TF/IDF + - [सेमांटिक एम्बेडिंग्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [लैंग्वेज मॉडलिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [रिकरेंट न्यूरल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [जेनरेटिव रिकारेंट नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ट्रांसफॉर्मर्स और BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [नेम्ड एंटिटी रिकग्निशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [टेक्स्ट जनरेशन और GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) -## [प्राकृतिक भाषा प्रसंस्करण](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - - MS लर्न पर - - [एआई फंडामेंटल्स: एनएलपी का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - - [पायटॉर्च के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - - [टेंसरफ्लो के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [पाठ प्रतिनिधित्व](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - - शब्दों का थैला - - TF/IDF - - [सामान्य एम्बेडिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - - Word2Vec - - GloVE - - [भाषा मॉडलिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - - [पुनरावृत्त तंत्रिका नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - - LSTM - - GRU - - [जनरेटिव पुनरावृत्त नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - - [ट्रांसफार्मर और BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - - [नामित इकाई पहचान](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - - [पाठ उत्पादन और GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) ## अन्य तकनीकें - - [जेनेटिक एल्गोरिदम](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - - [डीप रिइंफोर्समेंट लर्निंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [मल्टी-एजेंट सिस्टम](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + - [जेनेटिक एल्गोरिदम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [डीप रिइंफोर्समेंट लर्निंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [मल्टी-एजेंट सिस्टम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [एआई नैतिकता](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [जिम्मेदार एआई पर MS Learn](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) -## [AI नैतिकता](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - - [MS Learn पर जिम्मेदार AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) ## अतिरिक्त - - [मल्टीमॉडल नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) - - DALL-E - - VQ-GAN + - [मल्टीमॉडल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/etc/SUPPORT.md b/translations/hi/etc/SUPPORT.md index 8d2d2429..5688fc9a 100644 --- a/translations/hi/etc/SUPPORT.md +++ b/translations/hi/etc/SUPPORT.md @@ -1,14 +1,23 @@ + # समर्थन -## समस्याएँ कैसे दर्ज करें और मदद प्राप्त करें +## समस्याएँ दर्ज करने और सहायता प्राप्त करने का तरीका -यह परियोजना बग और विशेषताओं के अनुरोधों को ट्रैक करने के लिए GitHub Issues का उपयोग करती है। कृपया नए मुद्दे दर्ज करने से पहले मौजूदा मुद्दों की खोज करें ताकि डुप्लिकेट से बचा जा सके। नए मुद्दों के लिए, अपनी बग या विशेषता अनुरोध को एक नए मुद्दे के रूप में दर्ज करें। +यह प्रोजेक्ट बग्स और फीचर अनुरोधों को ट्रैक करने के लिए GitHub Issues का उपयोग करता है। डुप्लिकेट से बचने के लिए नई समस्या दर्ज करने से पहले मौजूदा समस्याओं को खोजें। नई समस्याओं के लिए, अपने बग या फीचर अनुरोध को एक नई Issue के रूप में दर्ज करें। -इस परियोजना का उपयोग करने के संबंध में मदद और प्रश्नों के लिए, कृपया चर्चा बोर्डों का उपयोग करें। +इस प्रोजेक्ट का उपयोग करने से संबंधित सहायता और प्रश्नों के लिए, Discussion Boards का उपयोग करें। -## माइक्रोसॉफ्ट समर्थन नीति +## Microsoft समर्थन नीति -इस परियोजना के लिए समर्थन उपरोक्त सूचीबद्ध संसाधनों तक सीमित है। +इस प्रोजेक्ट के लिए समर्थन केवल ऊपर सूचीबद्ध संसाधनों तक सीमित है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/etc/TRANSLATIONS.md b/translations/hi/etc/TRANSLATIONS.md index 16c231a4..8e6b08f7 100644 --- a/translations/hi/etc/TRANSLATIONS.md +++ b/translations/hi/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ + # पाठों का अनुवाद करके योगदान दें हम इस पाठ्यक्रम में पाठों के अनुवाद का स्वागत करते हैं! ## दिशानिर्देश -प्रत्येक पाठ फ़ोल्डर और पाठ परिचय फ़ोल्डर में अनुवादित मार्कडाउन फ़ाइलें हैं। +प्रत्येक पाठ फ़ोल्डर और पाठ परिचय फ़ोल्डर में अनुवादित मार्कडाउन फ़ाइलें होती हैं। -> ध्यान दें, कृपया कोड नमूना फ़ाइलों में किसी भी कोड का अनुवाद न करें; अनुवाद करने के लिए केवल README, असाइनमेंट और प्रश्नोत्तरी हैं। धन्यवाद! +> ध्यान दें, कृपया कोड नमूना फ़ाइलों में किसी भी कोड का अनुवाद न करें; केवल README, असाइनमेंट और क्विज़ का अनुवाद करें। धन्यवाद! -अनुवादित फ़ाइलों को इस नामकरण कन्वेंशन का पालन करना चाहिए: +अनुवादित फ़ाइलों को निम्नलिखित नामकरण नियम का पालन करना चाहिए: **README._[language]_.md** -जहाँ _[language]_ एक दो-अक्षरी भाषा संक्षिप्त नाम है जो ISO 639-1 मानक का पालन करता है (जैसे `README.es.md` के लिए स्पेनिश और `README.nl.md` के लिए डच)। +जहां _[language]_ दो अक्षरों का भाषा संक्षेप है जो ISO 639-1 मानक का अनुसरण करता है (जैसे `README.es.md` स्पेनिश के लिए और `README.nl.md` डच के लिए)। **assignment._[language]_.md** README की तरह, कृपया असाइनमेंट का भी अनुवाद करें। -**प्रश्नोत्तरी** +**क्विज़** -1. अपने अनुवाद को प्रश्नोत्तरी-ऐप में जोड़ें, एक फ़ाइल यहाँ जोड़कर: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, उचित नामकरण कन्वेंशन के साथ (en.json, fr.json)। **कृपया 'true' या 'false' शब्दों का स्थानीयकरण न करें। धन्यवाद!** +1. अपनी अनुवादित क्विज़ को यहां जोड़ें: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, सही नामकरण नियम के साथ (जैसे en.json, fr.json)। **कृपया 'true' या 'false' शब्दों का स्थानीयकरण न करें। धन्यवाद!** -2. प्रश्नोत्तरी-ऐप के App.vue फ़ाइल में ड्रॉपडाउन में अपने भाषा कोड को जोड़ें। +2. क्विज़-ऐप के App.vue फ़ाइल में ड्रॉपडाउन में अपनी भाषा कोड जोड़ें। -3. प्रश्नोत्तरी-ऐप के [translations index.js फ़ाइल](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) को संपादित करें ताकि आपकी भाषा जोड़ी जा सके। +3. क्विज़-ऐप के [translations index.js फ़ाइल](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) को संपादित करें और अपनी भाषा जोड़ें। -4. अंत में, अपने अनुवादित README.md फ़ाइलों में सभी प्रश्नोत्तरी लिंक को संपादित करें ताकि सीधे आपके अनुवादित प्रश्नोत्तरी की ओर इशारा करें: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 बन जाए https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. अंत में, अपने अनुवादित README.md फ़ाइलों में सभी क्विज़ लिंक को सीधे आपके अनुवादित क्विज़ की ओर इंगित करने के लिए संपादित करें: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 को बदलें https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id में। **धन्यवाद** हम आपके प्रयासों की वास्तव में सराहना करते हैं! -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/etc/quiz-app/README.md b/translations/hi/etc/quiz-app/README.md index f6a2f0e5..56c44b65 100644 --- a/translations/hi/etc/quiz-app/README.md +++ b/translations/hi/etc/quiz-app/README.md @@ -1,96 +1,106 @@ -# प्रश्नोत्तरी + +# क्विज़ -ये प्रश्नोत्तरी एआई पाठ्यक्रम के लिए व्याख्यान से पहले और बाद की प्रश्नोत्तरी हैं जो https://aka.ms/ai-beginners पर उपलब्ध हैं। +ये क्विज़ AI पाठ्यक्रम के लिए प्री- और पोस्ट-लेक्चर क्विज़ हैं, जो https://aka.ms/ai-beginners पर उपलब्ध है। -## अनुवादित प्रश्नोत्तरी सेट जोड़ना +## अनुवादित क्विज़ सेट जोड़ना -`assets/translations` फ़ोल्डरों में मेल खाते प्रश्नोत्तरी संरचनाएँ बनाकर एक प्रश्नोत्तरी अनुवाद जोड़ें। मानक प्रश्नोत्तरी `assets/translations/en` में हैं। प्रश्नोत्तरी को पाठ द्वारा कई समूहों में विभाजित किया गया है। सुनिश्चित करें कि आप सही प्रश्नोत्तरी अनुभाग के साथ संख्या को संरेखित करें। इस पाठ्यक्रम में कुल 40 प्रश्नोत्तरी हैं, जिसकी गिनती 0 से शुरू होती है। +किसी क्विज़ का अनुवाद जोड़ने के लिए, `assets/translations` फोल्डर में समान क्विज़ संरचनाएँ बनाएं। मूल क्विज़ `assets/translations/en` में हैं। ये क्विज़ पाठ के अनुसार कई समूहों में विभाजित हैं। सुनिश्चित करें कि सही क्विज़ सेक्शन के साथ नंबरिंग मेल खाती हो। इस पाठ्यक्रम में कुल 40 क्विज़ हैं, जिनकी गिनती 0 से शुरू होती है। -अनुवाद संपादित करने के बाद, अनुवाद फ़ोल्डर में index.js फ़ाइल को संपादित करें ताकि सभी फ़ाइलों को `en` में उल्लिखित मानकों के अनुसार आयात किया जा सके। +अनुवाद संपादित करने के बाद, अनुवाद फोल्डर में `index.js` फ़ाइल को संपादित करें और सभी फाइलों को `en` में दिए गए नियमों के अनुसार इम्पोर्ट करें। -`assets/translations` में `index.js` फ़ाइल को संपादित करें ताकि नए अनुवादित फ़ाइलों को आयात किया जा सके। +`assets/translations` में `index.js` फ़ाइल को संपादित करें और नई अनुवादित फाइलों को इम्पोर्ट करें। -फिर, इस ऐप में `App.vue` में ड्रॉपडाउन को संपादित करें ताकि आपकी भाषा जोड़ी जा सके। स्थानीयकृत संक्षिप्त नाम को आपकी भाषा के फ़ोल्डर नाम से मेल करें। +फिर, इस ऐप में `App.vue` में ड्रॉपडाउन को संपादित करें और अपनी भाषा जोड़ें। स्थानीयकृत संक्षिप्त नाम को आपकी भाषा के फोल्डर नाम से मिलाएं। -अंत में, यदि वे मौजूद हैं, तो अनुवादित पाठों में सभी प्रश्नोत्तरी लिंक को संपादित करें ताकि इस स्थानीयकरण को एक क्वेरी पैरामीटर के रूप में शामिल किया जा सके: उदाहरण के लिए `?loc=fr`। +अंत में, अनुवादित पाठों में सभी क्विज़ लिंक को संपादित करें, यदि वे मौजूद हैं, ताकि इस स्थानीयकरण को एक क्वेरी पैरामीटर के रूप में शामिल किया जा सके: उदाहरण के लिए `?loc=fr`। -## परियोजना सेटअप +## प्रोजेक्ट सेटअप ``` npm install ``` -### विकास के लिए संकलन और हॉट-रीलोड +### विकास के लिए कंपाइल और हॉट-रिलोड्स ``` npm run serve ``` -### उत्पादन के लिए संकलन और संकुचन +### प्रोडक्शन के लिए कंपाइल और मिनिफाई ``` npm run build ``` -### फ़ाइलों की लिंटिंग और सुधार +### फाइलों को लिंट और फिक्स करें ``` npm run lint ``` -### कॉन्फ़िगरेशन कस्टमाइज़ करें +### कॉन्फ़िगरेशन को कस्टमाइज़ करें [कॉन्फ़िगरेशन संदर्भ](https://cli.vuejs.org/config/) देखें। -क्रेडिट: इस प्रश्नोत्तरी ऐप के मूल संस्करण के लिए धन्यवाद: https://github.com/arpan45/simple-quiz-vue +क्रेडिट्स: इस क्विज़ ऐप के मूल संस्करण के लिए धन्यवाद: https://github.com/arpan45/simple-quiz-vue -## Azure पर तैनाती +## Azure पर डिप्लॉय करना -यहां एक चरण-दर-चरण मार्गदर्शिका है जो आपको शुरुआत करने में मदद करेगी: +यहाँ एक चरण-दर-चरण गाइड है जो आपको शुरुआत करने में मदद करेगा: -1. एक GitHub रिपॉजिटरी को फोर्क करें -सुनिश्चित करें कि आपका स्थैतिक वेब ऐप कोड आपके GitHub रिपॉजिटरी में है। इस रिपॉजिटरी को फोर्क करें। +1. GitHub रिपॉजिटरी को फोर्क करें +सुनिश्चित करें कि आपका स्टैटिक वेब ऐप कोड आपके GitHub रिपॉजिटरी में है। इस रिपॉजिटरी को फोर्क करें। -2. एक Azure स्थैतिक वेब ऐप बनाएं -- एक [Azure खाता](http://azure.microsoft.com) बनाएं -- [Azure पोर्टल](https://portal.azure.com) पर जाएं -- "एक संसाधन बनाएं" पर क्लिक करें और "स्थैतिक वेब ऐप" के लिए खोजें। -- "बनाएँ" पर क्लिक करें। +2. एक Azure स्टैटिक वेब ऐप बनाएं +- एक [Azure खाता](http://azure.microsoft.com) बनाएं। +- [Azure पोर्टल](https://portal.azure.com) पर जाएं। +- “Create a resource” पर क्लिक करें और “Static Web App” खोजें। +- “Create” पर क्लिक करें। -3. स्थैतिक वेब ऐप कॉन्फ़िगर करें -- मूल बातें: सदस्यता: अपनी Azure सदस्यता चुनें। -- संसाधन समूह: एक नया संसाधन समूह बनाएं या एक मौजूदा का उपयोग करें। -- नाम: अपने स्थैतिक वेब ऐप के लिए एक नाम प्रदान करें। -- क्षेत्र: अपने उपयोगकर्ताओं के निकटतम क्षेत्र का चयन करें। +3. स्टैटिक वेब ऐप को कॉन्फ़िगर करें +- #### बेसिक्स: + - सब्सक्रिप्शन: अपना Azure सब्सक्रिप्शन चुनें। + - रिसोर्स ग्रुप: एक नया रिसोर्स ग्रुप बनाएं या मौजूदा का उपयोग करें। + - नाम: अपने स्टैटिक वेब ऐप के लिए एक नाम दें। + - क्षेत्र: अपने उपयोगकर्ताओं के सबसे नजदीकी क्षेत्र को चुनें। -- #### तैनाती विवरण: -- स्रोत: "GitHub" का चयन करें। -- GitHub खाता: Azure को आपके GitHub खाते तक पहुँचने के लिए अधिकृत करें। -- संगठन: अपने GitHub संगठन का चयन करें। -- रिपॉजिटरी: उस रिपॉजिटरी को चुनें जिसमें आपका स्थैतिक वेब ऐप है। -- शाखा: उस शाखा का चयन करें जिससे आप तैनात करना चाहते हैं। +- #### डिप्लॉयमेंट विवरण: + - स्रोत: “GitHub” चुनें। + - GitHub खाता: Azure को आपके GitHub खाते तक पहुँचने की अनुमति दें। + - संगठन: अपना GitHub संगठन चुनें। + - रिपॉजिटरी: वह रिपॉजिटरी चुनें जिसमें आपका स्टैटिक वेब ऐप है। + - ब्रांच: वह ब्रांच चुनें जिससे आप डिप्लॉय करना चाहते हैं। -- #### निर्माण विवरण: -- निर्माण प्रीसेट: उस ढांचे का चयन करें जिसके साथ आपका ऐप बनाया गया है (जैसे, React, Angular, Vue, आदि)। -- ऐप स्थान: उस फ़ोल्डर को निर्दिष्ट करें जिसमें आपका ऐप कोड है (जैसे, / यदि यह रूट में है)। -- एपीआई स्थान: यदि आपके पास एक एपीआई है, तो उसका स्थान निर्दिष्ट करें (वैकल्पिक)। -- आउटपुट स्थान: उस फ़ोल्डर को निर्दिष्ट करें जहाँ निर्माण आउटपुट उत्पन्न होता है (जैसे, build या dist)। +- #### बिल्ड विवरण: + - बिल्ड प्रीसेट्स: वह फ्रेमवर्क चुनें जिससे आपका ऐप बना है (जैसे React, Angular, Vue, आदि)। + - ऐप लोकेशन: वह फोल्डर निर्दिष्ट करें जिसमें आपका ऐप कोड है (जैसे, / यदि यह रूट में है)। + - API लोकेशन: यदि आपके पास API है, तो उसका स्थान निर्दिष्ट करें (वैकल्पिक)। + - आउटपुट लोकेशन: वह फोल्डर निर्दिष्ट करें जहाँ बिल्ड आउटपुट उत्पन्न होता है (जैसे, build या dist)। -4. समीक्षा और बनाएँ -अपनी सेटिंग्स की समीक्षा करें और "बनाएँ" पर क्लिक करें। Azure आवश्यक संसाधनों को सेट अप करेगा और आपकी रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो बनाएगा। +4. समीक्षा और निर्माण +अपनी सेटिंग्स की समीक्षा करें और “Create” पर क्लिक करें। Azure आवश्यक संसाधनों को सेट करेगा और आपके रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो बनाएगा। -5. GitHub Actions वर्कफ़्लो -Azure स्वचालित रूप से आपकी रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो फ़ाइल बनाएगा (.github/workflows/azure-static-web-apps-.yml)। यह वर्कफ़्लो निर्माण और तैनाती प्रक्रिया को संभालेगा। +5. GitHub Actions वर्कफ़्लो +Azure स्वचालित रूप से आपके रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो फ़ाइल बनाएगा (.github/workflows/azure-static-web-apps-.yml)। यह वर्कफ़्लो बिल्ड और डिप्लॉयमेंट प्रक्रिया को संभालेगा। -6. तैनाती की निगरानी करें -अपने GitHub रिपॉजिटरी में "क्रियाएँ" टैब पर जाएं। -आपको एक वर्कफ़्लो चलाता हुआ दिखाई देना चाहिए। यह वर्कफ़्लो आपके स्थैतिक वेब ऐप को Azure पर निर्माण और तैनात करेगा। -एक बार जब वर्कफ़्लो पूरा हो जाए, तो आपका ऐप प्रदान किए गए Azure URL पर लाइव होगा। +6. डिप्लॉयमेंट की निगरानी करें +अपने GitHub रिपॉजिटरी में “Actions” टैब पर जाएं। +आपको एक वर्कफ़्लो चलते हुए दिखेगा। यह वर्कफ़्लो आपके स्टैटिक वेब ऐप को Azure पर बिल्ड और डिप्लॉय करेगा। +जैसे ही वर्कफ़्लो पूरा होता है, आपका ऐप प्रदान किए गए Azure URL पर लाइव हो जाएगा। ### उदाहरण वर्कफ़्लो फ़ाइल -यहाँ एक उदाहरण है कि GitHub Actions वर्कफ़्लो फ़ाइल कैसी दिख सकती है: -name: Azure Static Web Apps CI/CD +यहाँ GitHub Actions वर्कफ़्लो फ़ाइल का एक उदाहरण है: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### अतिरिक्त संसाधन -- [Azure स्थैतिक वेब ऐप्स दस्तावेज़ीकरण](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [GitHub Actions दस्तावेज़ीकरण](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### अतिरिक्त संसाधन +- [Azure Static Web Apps डाक्यूमेंटेशन](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions डाक्यूमेंटेशन](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/0-course-setup/for-teachers.md b/translations/hi/lessons/0-course-setup/for-teachers.md index 850108b8..fd39955e 100644 --- a/translations/hi/lessons/0-course-setup/for-teachers.md +++ b/translations/hi/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ + # शिक्षकों के लिए -क्या आप इस पाठ्यक्रम का उपयोग अपने कक्षा में करना चाहेंगे? कृपया बेझिझक करें! +क्या आप इस पाठ्यक्रम को अपने कक्षा में उपयोग करना चाहेंगे? कृपया इसे स्वतंत्र रूप से उपयोग करें! -वास्तव में, आप इसे GitHub Classroom का उपयोग करके GitHub के भीतर भी उपयोग कर सकते हैं। +वास्तव में, आप इसे GitHub के भीतर ही GitHub Classroom का उपयोग करके लागू कर सकते हैं। -इसके लिए, इस रिपॉजिटरी को फोर्क करें। आपको प्रत्येक पाठ के लिए एक अलग रिपॉजिटरी बनाने की आवश्यकता होगी, इसलिए आपको प्रत्येक फ़ोल्डर को अलग-अलग रिपॉजिटरी में निकालने की आवश्यकता होगी। इस तरह, [GitHub Classroom](https://classroom.github.com/classrooms) प्रत्येक पाठ को अलग-अलग उठा सकता है। +इसके लिए, इस रिपॉजिटरी को फोर्क करें। आपको प्रत्येक पाठ के लिए एक अलग रिपॉजिटरी बनानी होगी, इसलिए आपको प्रत्येक फ़ोल्डर को अलग-अलग रिपॉजिटरी में निकालना होगा। इस तरह, [GitHub Classroom](https://classroom.github.com/classrooms) प्रत्येक पाठ को अलग-अलग पहचान सकेगा। -इन [पूर्ण निर्देशों](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) से आपको अपने कक्षा को स्थापित करने का विचार मिलेगा। +ये [पूर्ण निर्देश](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) आपको यह समझने में मदद करेंगे कि अपनी कक्षा को कैसे सेटअप करें। -## रिपॉजिटरी का उपयोग करना जैसा है +## रिपॉजिटरी का वर्तमान स्वरूप में उपयोग करना -यदि आप इस रिपॉजिटरी का उपयोग वर्तमान स्थिति में करना चाहते हैं, बिना GitHub Classroom का उपयोग किए, तो यह भी किया जा सकता है। आपको अपने छात्रों के साथ संवाद करना होगा कि किस पाठ पर एक साथ काम करना है। +यदि आप इस रिपॉजिटरी को इसके वर्तमान स्वरूप में उपयोग करना चाहते हैं, बिना GitHub Classroom का उपयोग किए, तो यह भी संभव है। आपको अपने छात्रों को यह बताना होगा कि किस पाठ को साथ में पूरा करना है। -एक ऑनलाइन प्रारूप (ज़ूम, टीम्स, या अन्य) में आप क्विज़ के लिए ब्रेकआउट रूम बना सकते हैं, और छात्रों को तैयार होने में मदद करने के लिए मेंटर कर सकते हैं। फिर छात्रों को क्विज़ में शामिल होने के लिए आमंत्रित करें और उनके उत्तर एक निश्चित समय पर 'समस्याओं' के रूप में सबमिट करें। यदि आप चाहते हैं कि छात्र खुले में सहयोगात्मक रूप से काम करें, तो आप असाइनमेंट के साथ भी यही कर सकते हैं। +ऑनलाइन प्रारूप (Zoom, Teams, या अन्य) में, आप क्विज़ के लिए ब्रेकआउट रूम बना सकते हैं और छात्रों को सीखने के लिए तैयार करने में मदद कर सकते हैं। फिर छात्रों को क्विज़ के लिए आमंत्रित करें और उन्हें 'issues' के रूप में एक निश्चित समय पर अपने उत्तर जमा करने के लिए कहें। आप असाइनमेंट्स के साथ भी ऐसा कर सकते हैं, यदि आप चाहते हैं कि छात्र खुले में सहयोगात्मक रूप से काम करें। -यदि आप अधिक निजी प्रारूप पसंद करते हैं, तो अपने छात्रों से कहें कि वे पाठ्यक्रम को, पाठ दर पाठ, अपने निजी GitHub रिपॉजिटरी में फोर्क करें, और आपको एक्सेस दें। फिर वे क्विज़ और असाइनमेंट को निजी रूप से पूरा कर सकते हैं और उन्हें आपके कक्षा रिपॉजिटरी पर मुद्दों के माध्यम से सबमिट कर सकते हैं। +यदि आप अधिक निजी प्रारूप पसंद करते हैं, तो अपने छात्रों से कहें कि वे पाठ्यक्रम को पाठ दर पाठ अपने स्वयं के GitHub रिपॉजिटरी में फोर्क करें, जो निजी रिपॉजिटरी हों, और आपको एक्सेस दें। फिर वे क्विज़ और असाइनमेंट्स को निजी रूप से पूरा कर सकते हैं और उन्हें आपके कक्षा रिपॉजिटरी पर issues के माध्यम से जमा कर सकते हैं। -ऑनलाइन कक्षा प्रारूप में इसे काम करने के कई तरीके हैं। कृपया हमें बताएं कि आपके लिए क्या सबसे अच्छा काम करता है! +ऑनलाइन कक्षा प्रारूप में इसे काम करने के कई तरीके हैं। कृपया हमें बताएं कि आपके लिए सबसे अच्छा क्या काम करता है! ## कृपया हमें अपने विचार बताएं -हम चाहते हैं कि यह पाठ्यक्रम आपके और आपके छात्रों के लिए काम करे। कृपया चर्चा बोर्डों में हमें फीडबैक दें! +हम चाहते हैं कि यह पाठ्यक्रम आपके और आपके छात्रों के लिए उपयोगी हो। कृपया चर्चा बोर्ड में हमें अपनी प्रतिक्रिया दें! -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/0-course-setup/how-to-run.md b/translations/hi/lessons/0-course-setup/how-to-run.md index 03de0bc6..d51617fc 100644 --- a/translations/hi/lessons/0-course-setup/how-to-run.md +++ b/translations/hi/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # कोड कैसे चलाएं -इस पाठ्यक्रम में बहुत सारे निष्पादन योग्य उदाहरण और प्रयोगशालाएं शामिल हैं जिन्हें आप चलाना चाहेंगे। ऐसा करने के लिए, आपको इस पाठ्यक्रम के हिस्से के रूप में प्रदान किए गए Jupyter Notebooks में Python कोड चलाने की क्षमता की आवश्यकता है। कोड चलाने के लिए आपके पास कई विकल्प हैं: +यह पाठ्यक्रम कई निष्पादन योग्य उदाहरणों और प्रयोगशालाओं से भरा हुआ है, जिन्हें आप चलाना चाहेंगे। ऐसा करने के लिए, आपको इस पाठ्यक्रम के हिस्से के रूप में प्रदान किए गए Jupyter Notebooks में Python कोड चलाने की क्षमता की आवश्यकता होगी। कोड चलाने के लिए आपके पास कई विकल्प हैं: -## अपने कंप्यूटर पर स्थानीय रूप से चलाना +## अपने कंप्यूटर पर लोकल रूप से चलाएं -अपने कंप्यूटर पर स्थानीय रूप से कोड चलाने के लिए, आपको Python का कोई संस्करण स्थापित करना होगा। मैं व्यक्तिगत रूप से **[miniconda](https://conda.io/en/latest/miniconda.html)** स्थापित करने की सिफारिश करता हूं - यह एक हल्का इंस्टॉलेशन है जो विभिन्न Python **वर्चुअल वातावरणों** के लिए `conda` पैकेज प्रबंधक का समर्थन करता है। +अपने कंप्यूटर पर कोड चलाने के लिए, आपके पास Python का कोई संस्करण इंस्टॉल होना चाहिए। मैं व्यक्तिगत रूप से **[miniconda](https://conda.io/en/latest/miniconda.html)** इंस्टॉल करने की सिफारिश करता हूं - यह एक हल्का इंस्टॉलेशन है जो `conda` पैकेज मैनेजर को विभिन्न Python **वर्चुअल एनवायरनमेंट्स** के लिए सपोर्ट करता है। -जब आप miniconda स्थापित कर लें, तो आपको रिपॉजिटरी क्लोन करनी होगी और इस पाठ्यक्रम के लिए उपयोग किए जाने वाले वर्चुअल वातावरण को बनाना होगा: +Miniconda इंस्टॉल करने के बाद, आपको रिपॉजिटरी को क्लोन करना होगा और इस कोर्स के लिए उपयोग किए जाने वाले वर्चुअल एनवायरनमेंट को बनाना होगा: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,51 +26,51 @@ conda activate ai4beg ### Python एक्सटेंशन के साथ Visual Studio Code का उपयोग करना -पाठ्यक्रम का उपयोग करने का सबसे अच्छा तरीका इसे [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) के साथ खोलें। -> **Note**: जब आप क्लोन करते हैं और VS Code में निर्देशिका खोलते हैं, तो यह स्वचालित रूप से आपको Python एक्सटेंशन स्थापित करने का सुझाव देगा। आपको ऊपर बताए अनुसार miniconda भी स्थापित करना होगा। +> **Note**: एक बार जब आप रिपॉजिटरी को क्लोन करके VS Code में खोलते हैं, तो यह स्वचालित रूप से आपको Python एक्सटेंशन इंस्टॉल करने का सुझाव देगा। आपको ऊपर बताए गए अनुसार Miniconda भी इंस्टॉल करना होगा। -> **Note**: यदि VS Code आपको कंटेनर में रिपॉजिटरी को फिर से खोलने का सुझाव देता है, तो आपको स्थानीय Python इंस्टॉलेशन का उपयोग करने के लिए इसे अस्वीकार करना होगा। +> **Note**: यदि VS Code आपको रिपॉजिटरी को कंटेनर में फिर से खोलने का सुझाव देता है, तो आपको इसे अस्वीकार करना होगा और लोकल Python इंस्टॉलेशन का उपयोग करना होगा। ### ब्राउज़र में Jupyter का उपयोग करना -आप अपने कंप्यूटर पर ब्राउज़र से सीधे Jupyter वातावरण का भी उपयोग कर सकते हैं। वास्तव में, पारंपरिक Jupyter और Jupyter Hub दोनों स्वचालित पूर्णता, कोड हाइलाइटिंग आदि के साथ एक बहुत सुविधाजनक विकास वातावरण प्रदान करते हैं। +आप अपने कंप्यूटर पर ब्राउज़र से सीधे Jupyter एनवायरनमेंट का उपयोग भी कर सकते हैं। वास्तव में, क्लासिकल Jupyter और Jupyter Hub दोनों ही ऑटो-कम्प्लीशन, कोड हाइलाइटिंग आदि के साथ एक सुविधाजनक विकास वातावरण प्रदान करते हैं। -स्थानीय रूप से Jupyter शुरू करने के लिए, पाठ्यक्रम की निर्देशिका पर जाएं, और निष्पादित करें: +लोकल रूप से Jupyter शुरू करने के लिए, कोर्स की डायरेक्टरी में जाएं और निम्नलिखित कमांड चलाएं: ```bash jupyter notebook -``` -या +``` +या ```bash jupyterhub -``` -इसके बाद आप किसी भी `.ipynb` files, open them and start working. +``` +इसके बाद आप किसी भी `.ipynb` फाइल पर नेविगेट कर सकते हैं, उसे खोल सकते हैं और काम शुरू कर सकते हैं। -### Running in container +### कंटेनर में चलाना -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` फ़ोल्डर में जा सकते हैं जो इस रिपॉजिटरी के लिए कंटेनर बनाने के निर्देश देता है, VS Code आपको कोड को कंटेनर में फिर से खोलने का प्रस्ताव देगा। इसके लिए Docker इंस्टॉलेशन की आवश्यकता होगी, और यह अधिक जटिल भी होगा, इसलिए हम इसे अधिक अनुभवी उपयोगकर्ताओं के लिए सिफारिश करते हैं। +Python इंस्टॉलेशन का एक विकल्प कोड को कंटेनर में चलाना हो सकता है। चूंकि हमारी रिपॉजिटरी में एक विशेष `.devcontainer` फोल्डर है जो इस रिपॉजिटरी के लिए कंटेनर बनाने के निर्देश देता है, VS Code आपको कोड को कंटेनर में फिर से खोलने का सुझाव देगा। इसके लिए Docker इंस्टॉलेशन की आवश्यकता होगी और यह थोड़ा जटिल हो सकता है, इसलिए हम इसे अधिक अनुभवी उपयोगकर्ताओं के लिए सुझाते हैं। ## क्लाउड में चलाना -यदि आप स्थानीय रूप से Python स्थापित नहीं करना चाहते हैं, और आपके पास कुछ क्लाउड संसाधनों तक पहुंच है - तो कोड को क्लाउड में चलाने का एक अच्छा विकल्प होगा। आप इसे करने के कई तरीके हैं: +यदि आप लोकल रूप से Python इंस्टॉल नहीं करना चाहते हैं और आपके पास कुछ क्लाउड संसाधनों तक पहुंच है, तो कोड को क्लाउड में चलाना एक अच्छा विकल्प हो सकता है। इसे करने के कई तरीके हैं: -* **[GitHub Codespaces](https://github.com/features/codespaces)** का उपयोग करना, जो आपके लिए GitHub पर बनाया गया एक वर्चुअल वातावरण है, जिसे VS Code ब्राउज़र इंटरफ़ेस के माध्यम से एक्सेस किया जा सकता है। यदि आपके पास Codespaces तक पहुंच है, तो आप बस रिपॉजिटरी में **Code** बटन पर क्लिक कर सकते हैं, एक कोडस्पेस शुरू कर सकते हैं, और बिना समय बर्बाद किए चलना शुरू कर सकते हैं। -* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** का उपयोग करना। [Binder](https://mybinder.org) एक मुफ्त कंप्यूटिंग संसाधन है जो क्लाउड में लोगों को GitHub पर कुछ कोड का परीक्षण करने के लिए प्रदान किया गया है। मुख्य पृष्ठ पर एक बटन है जो रिपॉजिटरी को Binder में खोलता है - यह आपको तेजी से बाइंडर साइट पर ले जाएगा, जो अंतर्निहित कंटेनर बनाएगा और आपके लिए Jupyter वेब इंटरफ़ेस शुरू करेगा। +* **[GitHub Codespaces](https://github.com/features/codespaces)** का उपयोग करना, जो GitHub पर आपके लिए एक वर्चुअल एनवायरनमेंट बनाता है और VS Code ब्राउज़र इंटरफेस के माध्यम से सुलभ होता है। यदि आपके पास Codespaces तक पहुंच है, तो आप बस रिपॉजिटरी में **Code** बटन पर क्लिक करें, एक Codespace शुरू करें, और तुरंत काम शुरू करें। +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** का उपयोग करना। [Binder](https://mybinder.org) क्लाउड में मुफ्त कंप्यूटिंग संसाधन प्रदान करता है ताकि आप GitHub पर कुछ कोड आज़मा सकें। होम पेज पर एक बटन है जो रिपॉजिटरी को Binder में खोलने की अनुमति देता है - यह आपको जल्दी से Binder साइट पर ले जाएगा, जो अंतर्निहित कंटेनर बनाएगा और आपके लिए Jupyter वेब इंटरफेस को सहजता से शुरू करेगा। -> **Note**: दुरुपयोग को रोकने के लिए, Binder को कुछ वेब संसाधनों तक पहुंच अवरुद्ध है। इससे कुछ कोड काम करने में रुकावट आ सकती है, जो सार्वजनिक इंटरनेट से मॉडल और/या डेटासेट लाते हैं। आपको कुछ समाधान खोजने की आवश्यकता हो सकती है। इसके अलावा, Binder द्वारा प्रदान किए गए कंप्यूट संसाधन काफी बुनियादी हैं, इसलिए प्रशिक्षण धीमा होगा, विशेष रूप से बाद के अधिक जटिल पाठों में। +> **Note**: दुरुपयोग को रोकने के लिए, Binder में कुछ वेब संसाधनों तक पहुंच अवरुद्ध है। यह कुछ कोड को काम करने से रोक सकता है, जो सार्वजनिक इंटरनेट से मॉडल और/या डेटा सेट लाता है। आपको कुछ वैकल्पिक समाधान खोजने की आवश्यकता हो सकती है। इसके अलावा, Binder द्वारा प्रदान किए गए कंप्यूटिंग संसाधन काफी बुनियादी हैं, इसलिए प्रशिक्षण धीमा होगा, खासकर बाद के अधिक जटिल पाठों में। ## GPU के साथ क्लाउड में चलाना -इस पाठ्यक्रम के कुछ बाद के पाठ GPU समर्थन से बहुत लाभान्वित होंगे, क्योंकि अन्यथा प्रशिक्षण बहुत धीमा होगा। आपके पास कुछ विकल्प हैं, विशेष रूप से यदि आपके पास [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) के माध्यम से या अपने संस्थान के माध्यम से क्लाउड तक पहुंच है: +इस पाठ्यक्रम के कुछ बाद के पाठ GPU सपोर्ट से काफी लाभान्वित होंगे, क्योंकि अन्यथा प्रशिक्षण बहुत धीमा होगा। यदि आपके पास [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) या आपके संस्थान के माध्यम से क्लाउड तक पहुंच है, तो आप निम्नलिखित विकल्पों का उपयोग कर सकते हैं: -* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) बनाएं और Jupyter के माध्यम से इससे कनेक्ट करें। आप फिर मशीन पर सीधे रिपॉजिटरी क्लोन कर सकते हैं, और सीखना शुरू कर सकते हैं। NC-सीरीज 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 के माध्यम से इससे कनेक्ट करें। आप फिर रिपॉजिटरी को सीधे मशीन पर क्लोन कर सकते हैं और सीखना शुरू कर सकते हैं। NC-सीरीज VMs में GPU सपोर्ट होता है। -> **Note**: कुछ सब्सक्रिप्शन, जिसमें Azure for Students शामिल है, बिना किसी अतिरिक्त सेटअप के GPU समर्थन प्रदान नहीं करते हैं। आपको तकनीकी सहायता अनुरोध के माध्यम से अतिरिक्त GPU कोर का अनुरोध करने की आवश्यकता हो सकती है। +> **Note**: कुछ सब्सक्रिप्शन, जिनमें Azure for Students शामिल है, डिफ़ॉल्ट रूप से GPU सपोर्ट प्रदान नहीं करते हैं। आपको तकनीकी सहायता अनुरोध के माध्यम से अतिरिक्त GPU कोर का अनुरोध करना पड़ सकता है। -* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) बनाएं और फिर वहां नोटबुक फीचर का उपयोग करें। [यह वीडियो](https://azure-for-academics.github.io/quickstart/azureml-papers/) दिखाता है कि Azure ML नोटबुक में रिपॉजिटरी को कैसे क्लोन करें और इसका उपयोग करना शुरू करें। +* [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 में रिपॉजिटरी को कैसे क्लोन करें और इसका उपयोग शुरू करें। -आप Google Colab का भी उपयोग कर सकते हैं, जो कुछ मुफ्त GPU समर्थन के साथ आता है, और वहां Jupyter Notebooks अपलोड कर सकते हैं ताकि उन्हें एक-एक करके निष्पादित किया जा सके। +आप Google Colab का भी उपयोग कर सकते हैं, जो कुछ मुफ्त GPU सपोर्ट के साथ आता है, और वहां Jupyter Notebooks को अपलोड करके उन्हें एक-एक करके निष्पादित कर सकते हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/0-course-setup/setup.md b/translations/hi/lessons/0-course-setup/setup.md index a0f6e757..3582b283 100644 --- a/translations/hi/lessons/0-course-setup/setup.md +++ b/translations/hi/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# इस पाठ्यक्रम के साथ शुरुआत करना + +# इस पाठ्यक्रम के साथ शुरुआत करें ## क्या आप एक छात्र हैं? -नीचे दिए गए संसाधनों के साथ शुरुआत करें: +इन संसाधनों के साथ शुरुआत करें: -* [छात्र हब पृष्ठ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) इस पृष्ठ पर, आपको शुरुआती संसाधन, छात्र पैक, और यहां तक कि एक मुफ्त प्रमाण पत्र वाउचर प्राप्त करने के तरीके मिलेंगे। यह एक ऐसा पृष्ठ है जिसे आप बुकमार्क करना चाहेंगे और समय-समय पर जांचना चाहेंगे क्योंकि हम हर महीने सामग्री को बदलते हैं। -* [Microsoft छात्र लर्न एंबेसडर](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) एक वैश्विक छात्र एंबेसडर समुदाय में शामिल हों, यह Microsoft में आपकी एंट्री हो सकती है। +* [स्टूडेंट हब पेज](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) इस पेज पर, आपको शुरुआती संसाधन, स्टूडेंट पैक्स, और यहां तक कि मुफ्त प्रमाणपत्र वाउचर पाने के तरीके मिलेंगे। यह एक ऐसा पेज है जिसे आप बुकमार्क करना चाहेंगे और समय-समय पर चेक करते रहेंगे क्योंकि हम कम से कम हर महीने सामग्री बदलते हैं। +* [Microsoft Student Learn एंबेसडर्स](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) एक वैश्विक छात्र एंबेसडर समुदाय में शामिल हों, यह माइक्रोसॉफ्ट में आपका प्रवेश द्वार हो सकता है। -**छात्रों**, पाठ्यक्रम का उपयोग करने के कुछ तरीके हैं। सबसे पहले, आप बस पाठ पढ़ सकते हैं और GitHub पर सीधे कोड देख सकते हैं। यदि आप किसी भी नोटबुक में कोड चलाना चाहते हैं - [हमारी निर्देश पढ़ें](./etc/how-to-run.md), और इसे करने के लिए और सलाह प्राप्त करें [इस ब्लॉग पोस्ट में](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**छात्रों**, इस पाठ्यक्रम का उपयोग करने के कुछ तरीके हैं। सबसे पहले, आप सीधे GitHub पर टेक्स्ट पढ़ सकते हैं और कोड देख सकते हैं। यदि आप किसी भी नोटबुक में कोड चलाना चाहते हैं - [हमारे निर्देश पढ़ें](./etc/how-to-run.md), और इसे करने के और सुझाव [इस ब्लॉग पोस्ट](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) में पाएं। -> **नोट**: [इस पाठ्यक्रम में कोड चलाने के लिए निर्देश](/how-to-run.md) +> **नोट**: [इस पाठ्यक्रम में कोड चलाने के निर्देश](./how-to-run.md) -## आत्म अध्ययन +## स्व-अध्ययन -हालांकि, यदि आप पाठ्यक्रम को आत्म अध्ययन परियोजना के रूप में लेना चाहते हैं, तो हम सुझाव देते हैं कि आप पूरे रेपो को अपने GitHub खाते में फोर्क करें और अपने दम पर या एक समूह के साथ अभ्यास करें: +हालांकि, यदि आप इस पाठ्यक्रम को स्व-अध्ययन परियोजना के रूप में लेना चाहते हैं, तो हम सुझाव देते हैं कि आप पूरे रिपॉजिटरी को अपने GitHub खाते में फोर्क करें और अभ्यासों को अपने आप या समूह के साथ पूरा करें: -* एक पूर्व-व्याख्यान क्विज़ से शुरू करें। -* व्याख्यान के लिए परिचयात्मक पाठ पढ़ें। -* यदि व्याख्यान में अतिरिक्त नोटबुक हैं, तो उन्हें पढ़ें और कोड को निष्पादित करें। यदि TensorFlow और PyTorch दोनों नोटबुक प्रदान किए गए हैं, तो आप उनमें से किसी एक पर ध्यान केंद्रित कर सकते हैं - अपना पसंदीदा ढांचा चुनें। -* नोटबुक में अक्सर कुछ चुनौतियाँ होती हैं जो आपको कोड को थोड़ा सा संशोधित करने के लिए कहती हैं ताकि आप प्रयोग कर सकें। -* व्याख्यान के बाद का क्विज़ लें। -* यदि मॉड्यूल के साथ एक प्रयोगशाला जुड़ी है - असाइनमेंट पूरा करें। -* "जोर से सीखें" के लिए [चर्चा बोर्ड](https://github.com/microsoft/AI-For-Beginners/discussions) पर जाएं। +* एक प्री-लेक्चर क्विज़ से शुरुआत करें। +* लेक्चर के लिए परिचयात्मक टेक्स्ट पढ़ें। +* यदि लेक्चर में अतिरिक्त नोटबुक हैं, तो उन्हें पढ़ें और कोड को चलाएं। यदि TensorFlow और PyTorch दोनों नोटबुक उपलब्ध हैं, तो आप इनमें से किसी एक पर ध्यान केंद्रित कर सकते हैं - अपना पसंदीदा फ्रेमवर्क चुनें। +* नोटबुक में अक्सर कुछ चुनौतियां होती हैं जो आपको कोड को थोड़ा बदलने और प्रयोग करने के लिए प्रेरित करती हैं। +* पोस्ट-लेक्चर क्विज़ लें। +* यदि मॉड्यूल के साथ कोई लैब जुड़ी है - तो असाइनमेंट पूरा करें। +* [डिस्कशन बोर्ड](https://github.com/microsoft/AI-For-Beginners/discussions) पर जाएं और "लाउड में सीखें"। -> आगे के अध्ययन के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) मॉड्यूल और सीखने के पथों का पालन करने की सिफारिश करते हैं। +> आगे की पढ़ाई के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) मॉड्यूल्स और लर्निंग पाथ्स को फॉलो करने की सिफारिश करते हैं। -**शिक्षकों**, हमने इस पाठ्यक्रम का उपयोग करने के लिए [कुछ सुझाव शामिल किए हैं](/for-teachers.md). +**शिक्षकों**, हमने [कुछ सुझाव शामिल किए हैं](/for-teachers.md) कि इस पाठ्यक्रम का उपयोग कैसे करें। --- -## शिक्षाशास्त्र +## शिक्षण पद्धति -हमने इस पाठ्यक्रम का निर्माण करते समय दो शैक्षिक सिद्धांतों को चुना है: यह सुनिश्चित करना कि यह हाथों-हाथ **परियोजना-आधारित** है और इसमें **नियमित क्विज़** शामिल हैं। +हमने इस पाठ्यक्रम को बनाते समय दो शिक्षण सिद्धांतों को चुना है: यह सुनिश्चित करना कि यह **प्रोजेक्ट-आधारित** और **बार-बार क्विज़** शामिल करता है। -यह सुनिश्चित करके कि सामग्री परियोजनाओं के साथ मेल खाती है, प्रक्रिया को छात्रों के लिए अधिक आकर्षक बनाया जाता है और अवधारणाओं का संरक्षण बढ़ाया जाएगा। इसके अलावा, एक कक्षा से पहले का कम-जोखिम वाला क्विज़ छात्र के विषय को सीखने के इरादे को स्थापित करता है, जबकि कक्षा के बाद का दूसरा क्विज़ आगे के संरक्षण को सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार डिजाइन किया गया है और इसे पूरी तरह से या आंशिक रूप से लिया जा सकता है। परियोजनाएँ छोटी शुरू होती हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल होती जाती हैं। +यह सुनिश्चित करके कि सामग्री प्रोजेक्ट्स के साथ संरेखित है, प्रक्रिया छात्रों के लिए अधिक रोचक बनती है और अवधारणाओं की समझ बढ़ती है। इसके अलावा, कक्षा से पहले एक कम दबाव वाला क्विज़ छात्र को विषय की ओर ध्यान केंद्रित करने में मदद करता है, जबकि कक्षा के बाद का दूसरा क्विज़ आगे की समझ सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार बनाया गया है और इसे पूरे या आंशिक रूप से लिया जा सकता है। प्रोजेक्ट्स छोटे से शुरू होते हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाते हैं। -> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [इस ऐप में](https://red-field-0a6ddfd03.1.azurestaticapps.net/) शामिल हैं, जिसमें कुल 50 क्विज़ हैं, प्रत्येक में तीन प्रश्न हैं। ये पाठों के भीतर लिंक किए गए हैं लेकिन क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है; `etc/quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें। +> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [इस ऐप](https://red-field-0a6ddfd03.1.azurestaticapps.net/) में शामिल हैं, जिसमें कुल 50 क्विज़ हैं, प्रत्येक में तीन प्रश्न हैं। ये पाठों के भीतर से लिंक किए गए हैं, लेकिन क्विज़ ऐप को लोकल रूप से चलाया जा सकता है; `etc/quiz-app` फोल्डर में दिए गए निर्देशों का पालन करें। -## ऑफ़लाइन पहुँच +## ऑफलाइन एक्सेस -आप [Docsify](https://docsify.js.org/#/) का उपयोग करके इस दस्तावेज़ को ऑफ़लाइन चला सकते हैं। इस रेपो को फोर्क करें, [Docsify स्थापित करें](https://docsify.js.org/#/quickstart) अपने स्थानीय मशीन पर, और फिर इस रेपो के `etc/docsify` फ़ोल्डर में, `docsify serve` टाइप करें। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर सर्व की जाएगी: `localhost:3000`। पाठ्यक्रम का एक पीडीएफ [इस लिंक पर उपलब्ध है](../../../../../../etc/pdf/readme.pdf)। +आप इस दस्तावेज़ को ऑफलाइन [Docsify](https://docsify.js.org/#/) का उपयोग करके चला सकते हैं। इस रिपॉजिटरी को फोर्क करें, [Docsify इंस्टॉल करें](https://docsify.js.org/#/quickstart) अपने लोकल मशीन पर, और फिर इस रिपॉजिटरी के रूट फोल्डर में `docsify serve` टाइप करें। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर सर्व होगी: `localhost:3000`। पाठ्यक्रम का एक पीडीएफ [इस लिंक पर](../../../../lessons/0-course-setup/etc/pdf/readme.pdf) उपलब्ध है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/1-Intro/README.md b/translations/hi/lessons/1-Intro/README.md index 2e2372d7..e5fe59c1 100644 --- a/translations/hi/lessons/1-Intro/README.md +++ b/translations/hi/lessons/1-Intro/README.md @@ -1,56 +1,66 @@ -> चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +> Image by [Dmitry Soshnikov](http://soshnikov.com) -जैसे-जैसे समय बीतता गया, कंप्यूटिंग संसाधन सस्ते होते गए, और अधिक डेटा उपलब्ध होने लगा, इसलिए न्यूरल नेटवर्क के दृष्टिकोण ने कई क्षेत्रों में मानवों के साथ प्रतिस्पर्धा में उत्कृष्ट प्रदर्शन दिखाना शुरू कर दिया, जैसे कि कंप्यूटर दृष्टि या भाषण समझना। पिछले दशक में, कृत्रिम बुद्धिमत्ता (Artificial Intelligence) शब्द का उपयोग ज्यादातर न्यूरल नेटवर्क के पर्याय के रूप में किया गया है, क्योंकि जो भी AI सफलताएँ हम सुनते हैं, वे अधिकांशतः इन पर आधारित होती हैं। +जैसे-जैसे समय बीतता गया, कंप्यूटिंग संसाधन सस्ते होते गए और अधिक डेटा उपलब्ध होने लगा, जिससे न्यूरल नेटवर्क दृष्टिकोण ने कई क्षेत्रों में, जैसे कंप्यूटर विज़न या भाषण समझने में, मानव के साथ प्रतिस्पर्धा में शानदार प्रदर्शन दिखाना शुरू कर दिया। पिछले दशक में, कृत्रिम बुद्धिमत्ता (AI) शब्द को ज्यादातर न्यूरल नेटवर्क का पर्याय माना गया है, क्योंकि 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) पर आधारित होते हैं, जहाँ कार्यक्रम केवल अपने आप से खेलकर और अपनी गलतियों से सीखकर खेलने का तरीका सीखते हैं - जैसे कि मानव शतरंज खेलने में सीखते हैं। हालाँकि, एक कंप्यूटर कार्यक्रम बहुत कम समय में कई अधिक खेल खेल सकता है, और इस प्रकार बहुत तेजी से सीख सकता है। +* शुरुआती शतरंज प्रोग्राम खोज पर आधारित थे – एक प्रोग्राम स्पष्ट रूप से अगले कुछ चालों के लिए प्रतिद्वंद्वी की संभावित चालों का अनुमान लगाने की कोशिश करता था और कुछ चालों में प्राप्त की जा सकने वाली आदर्श स्थिति के आधार पर एक आदर्श चाल का चयन करता था। इससे [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 द्वारा खेले गए हैं। +✅ AI द्वारा खेले गए अन्य खेलों पर थोड़ा शोध करें। -इसी तरह, हम देख सकते हैं कि "बात करने वाले कार्यक्रमों" (जो ट्यूरिंग टेस्ट पास कर सकते हैं) बनाने के दृष्टिकोण में कैसे बदलाव आया है: +इसी तरह, हम देख सकते हैं कि "बोलने वाले प्रोग्राम" (जो ट्यूरिंग टेस्ट पास कर सकते हैं) बनाने के दृष्टिकोण कैसे बदलते गए: -* इस प्रकार के प्रारंभिक कार्यक्रम जैसे [Eliza](https://en.wikipedia.org/wiki/ELIZA), बहुत सरल व्याकरणिक नियमों और इनपुट वाक्य को प्रश्न में पुनः-फार्मेट करने पर आधारित थे। -* आधुनिक सहायक, जैसे Cortana, Siri या Google Assistant सभी हाइब्रिड सिस्टम हैं जो भाषण को पाठ में परिवर्तित करने और हमारी मंशा को पहचानने के लिए न्यूरल नेटवर्क का उपयोग करते हैं, और फिर आवश्यक क्रियाएँ करने के लिए कुछ तर्क या स्पष्ट एल्गोरिदम का उपयोग करते हैं। -* भविष्य में, हम एक पूर्ण न्यूरल-आधारित मॉडल की उम्मीद कर सकते हैं जो संवाद को स्वयं संभाल सके। हाल के GPT और [Turing-NLG](https://turing.microsoft.com/) न्यूरल नेटवर्क के परिवार ने इस मामले में शानदार सफलता दिखाई है। +* इस प्रकार के शुरुआती प्रोग्राम, जैसे [Eliza](https://en.wikipedia.org/wiki/ELIZA), बहुत सरल व्याकरणिक नियमों और इनपुट वाक्य को प्रश्न में पुनः स्वरूपित करने पर आधारित थे। +* आधुनिक सहायक, जैसे Cortana, Siri या Google Assistant, सभी हाइब्रिड सिस्टम हैं जो भाषण को टेक्स्ट में बदलने और हमारे इरादे को पहचानने के लिए न्यूरल नेटवर्क का उपयोग करते हैं, और फिर आवश्यक क्रियाएँ करने के लिए कुछ तर्क या स्पष्ट एल्गोरिदम का उपयोग करते हैं। +* भविष्य में, हम उम्मीद कर सकते हैं कि संवाद को पूरी तरह से संभालने के लिए एक पूर्ण न्यूरल-आधारित मॉडल विकसित होगा। हाल ही में GPT और [Turing-NLG](https://turing.microsoft.com/) परिवार के न्यूरल नेटवर्क ने इस क्षेत्र में बड़ी सफलता दिखाई है। -> चित्र [Dmitry Soshnikov](http://soshnikov.com), [फोटो](https://unsplash.com/photos/r8LmVbUKgns) [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) द्वारा, Unsplash +> छवि: दिमित्री सोश्निकोव द्वारा, [फोटो](https://unsplash.com/photos/r8LmVbUKgns) [मारिना अब्रोसिमोवा](https://unsplash.com/@abrosimova_marina_foto), Unsplash से -## हाल के AI अनुसंधान +## हालिया एआई अनुसंधान -न्यूरल नेटवर्क अनुसंधान में हालिया विशाल वृद्धि 2010 के आसपास शुरू हुई, जब बड़े सार्वजनिक डेटासेट उपलब्ध होने लगे। एक विशाल छवियों का संग्रह जिसे [ImageNet](https://en.wikipedia.org/wiki/ImageNet) कहा जाता है, जिसमें लगभग 14 मिलियन एनोटेटेड छवियाँ हैं, ने [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) को जन्म दिया। +न्यूरल नेटवर्क अनुसंधान में हालिया तेज़ी 2010 के आसपास शुरू हुई, जब बड़े सार्वजनिक डेटासेट उपलब्ध होने लगे। [ImageNet](https://en.wikipedia.org/wiki/ImageNet) नामक छवियों का एक विशाल संग्रह, जिसमें लगभग 14 मिलियन एनोटेटेड छवियां शामिल हैं, ने [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) को जन्म दिया। -![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif) +![ILSVRC सटीकता](../../../../lessons/1-Intro/images/ilsvrc.gif) -> चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा -In 2012, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) का पहली बार छवि वर्गीकरण में उपयोग किया गया, जिससे वर्गीकरण त्रुटियों में एक महत्वपूर्ण कमी आई (लगभग 30% से 16.4% तक)। 2015 में, Microsoft Research का ResNet आर्किटेक्चर [मानव-स्तरीय सटीकता](https://doi.org/10.1109/ICCV.2015.123) प्राप्त करने में सफल रहा। +> छवि: [दिमित्री सोश्निकोव](http://soshnikov.com) द्वारा -तब से, न्यूरल नेटवर्क ने कई कार्यों में बहुत सफल व्यवहार प्रदर्शित किया है: +2012 में, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) का पहली बार छवि वर्गीकरण में उपयोग किया गया, जिससे वर्गीकरण त्रुटियों में महत्वपूर्ण कमी आई (लगभग 30% से 16.4% तक)। 2015 में, Microsoft Research की ResNet आर्किटेक्चर ने [मानव-स्तरीय सटीकता हासिल की](https://doi.org/10.1109/ICCV.2015.123)। + +तब से, न्यूरल नेटवर्क ने कई कार्यों में बहुत सफल प्रदर्शन दिखाया है: --- -वर्ष | मानव समानता प्राप्त की +वर्ष | मानव समानता प्राप्त -----|-------- 2015 | [छवि वर्गीकरण](https://doi.org/10.1109/ICCV.2015.123) -2016 | [संवादात्मक भाषण पहचान](https://arxiv.org/abs/1610.05256) +2016 | [संवादी भाषण पहचान](https://arxiv.org/abs/1610.05256) 2018 | [स्वचालित मशीन अनुवाद](https://arxiv.org/abs/1803.05567) (चीनी से अंग्रेजी) 2020 | [छवि कैप्शनिंग](https://arxiv.org/abs/2009.13682) -पिछले कुछ वर्षों में, हमने बड़े भाषा मॉडलों, जैसे कि BERT और GPT-3 के साथ विशाल सफलताओं का गवाह बने हैं। यह मुख्य रूप से इस तथ्य के कारण हुआ कि बहुत सारे सामान्य पाठ डेटा उपलब्ध हैं जो हमें मॉडलों को पाठों की संरचना और अर्थ को कैप्चर करने के लिए प्रशिक्षित करने की अनुमति देते हैं, उन्हें सामान्य पाठ संग्रह पर पूर्व-प्रशिक्षित करते हैं, और फिर उन मॉडलों को अधिक विशिष्ट कार्यों के लिए विशेषीकृत करते हैं। हम इस पाठ्यक्रम में बाद में [प्राकृतिक भाषा प्रसंस्करण](../5-NLP/README.md) के बारे में और अधिक जानेंगे। +पिछले कुछ वर्षों में, हमने बड़े भाषा मॉडलों, जैसे BERT और GPT-3, के साथ बड़ी सफलताएं देखी हैं। यह मुख्य रूप से इसलिए हुआ क्योंकि बहुत सारा सामान्य पाठ डेटा उपलब्ध है, जो हमें मॉडलों को पाठ की संरचना और अर्थ को समझने के लिए प्रशिक्षित करने की अनुमति देता है। इन मॉडलों को सामान्य पाठ संग्रहों पर प्री-ट्रेन किया जाता है और फिर विशिष्ट कार्यों के लिए इन्हें विशेष रूप से अनुकूलित किया जाता है। हम इस पाठ्यक्रम में बाद में [प्राकृतिक भाषा प्रसंस्करण](../5-NLP/README.md) के बारे में और अधिक जानेंगे। ## 🚀 चुनौती -इंटरनेट का दौरा करें ताकि यह निर्धारित किया जा सके कि आपके अनुसार, एआई का सबसे प्रभावी उपयोग कहाँ किया जा रहा है। क्या यह एक मैपिंग ऐप में है, या किसी भाषण-से-टेक्स्ट सेवा में या एक वीडियो गेम में? शोध करें कि सिस्टम कैसे बनाया गया था। +इंटरनेट पर एक यात्रा करें और यह निर्धारित करें कि, आपकी राय में, एआई का सबसे प्रभावी उपयोग कहां हो रहा है। क्या यह किसी मैपिंग ऐप में है, या किसी स्पीच-टू-टेक्स्ट सेवा में, या किसी वीडियो गेम में? शोध करें कि यह प्रणाली कैसे बनाई गई थी। -## [व्याख्यान के बाद का प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [पाठ के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -[इस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) के माध्यम से एआई और एमएल के इतिहास की समीक्षा करें। उस पाठ या इस पाठ के शीर्ष पर स्केच नोट से एक तत्व लें और इसके विकास को सूचित करने वाले सांस्कृतिक संदर्भ को समझने के लिए इसे अधिक गहराई से शोध करें। +[इस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) को पढ़कर एआई और एमएल के इतिहास की समीक्षा करें। उस पाठ या इस पाठ के शीर्ष पर दिए गए स्केच नोट से एक तत्व लें और इसे गहराई से शोध करें ताकि इसके विकास को प्रभावित करने वाले सांस्कृतिक संदर्भ को समझा जा सके। -**कार्य**: [गेम जाम](assignment.md) +**असाइनमेंट**: [गेम जैम](assignment.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/1-Intro/assignment.md b/translations/hi/lessons/1-Intro/assignment.md index 4a6b1ab5..1522b0f0 100644 --- a/translations/hi/lessons/1-Intro/assignment.md +++ b/translations/hi/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ -# गेम जाम + +# गेम जैम -गेम एक ऐसा क्षेत्र है जिसे एआई और एमएल के विकास से काफी प्रभावित किया गया है। इस असाइनमेंट में, एक छोटे पेपर पर लिखें जिस खेल के बारे में आपको पसंद है और जो एआई के विकास से प्रभावित हुआ है। यह एक ऐसा पुराना खेल होना चाहिए जिसे कई प्रकार के कंप्यूटर प्रोसेसिंग सिस्टम से प्रभावित किया गया हो। एक अच्छा उदाहरण शतरंज या गो है, लेकिन पोंग या पैक-मैन जैसे वीडियो गेम पर भी नज़र डालें। एक निबंध लिखें जो खेल के अतीत, वर्तमान, और एआई भविष्य पर चर्चा करता है। +गेम्स एक ऐसा क्षेत्र हैं जो AI और ML के विकास से गहराई से प्रभावित हुए हैं। इस असाइनमेंट में, उस गेम पर एक छोटा पेपर लिखें जो आपको पसंद है और जो AI के विकास से प्रभावित हुआ है। यह गेम इतना पुराना होना चाहिए कि इसे कई प्रकार की कंप्यूटर प्रोसेसिंग सिस्टम्स से प्रभावित होने का अनुभव हुआ हो। एक अच्छा उदाहरण शतरंज या गो हो सकता है, लेकिन वीडियो गेम्स जैसे पोंग या पैक-मैन पर भी ध्यान दें। एक निबंध लिखें जो गेम के अतीत, वर्तमान और AI के भविष्य पर चर्चा करता हो। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/2-Symbolic/README.md b/translations/hi/lessons/2-Symbolic/README.md index 15cd8c73..2063c76e 100644 --- a/translations/hi/lessons/2-Symbolic/README.md +++ b/translations/hi/lessons/2-Symbolic/README.md @@ -1,107 +1,86 @@ -# ज्ञान प्रतिनिधित्व और विशेषज्ञ प्रणाली + +*छवि [विकिपीडिया से](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* -![Symbolic AI सामग्री का सारांश](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hi.png) +इस प्रकार, **ज्ञान प्रतिनिधित्व** की समस्या यह है कि कंप्यूटर के अंदर डेटा के रूप में ज्ञान को प्रभावी ढंग से कैसे प्रस्तुत किया जाए, ताकि इसे स्वचालित रूप से उपयोग किया जा सके। इसे एक स्पेक्ट्रम के रूप में देखा जा सकता है: -> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा +![ज्ञान प्रतिनिधित्व स्पेक्ट्रम](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) -कृत्रिम बुद्धिमत्ता की खोज ज्ञान की खोज पर आधारित है, ताकि दुनिया को समझा जा सके जैसे मनुष्य करते हैं। लेकिन आप इसे कैसे कर सकते हैं? +> छवि [दिमित्री सोश्निकोव](http://soshnikov.com) द्वारा -## [प्री-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +* बाईं ओर, बहुत सरल प्रकार के ज्ञान प्रतिनिधित्व हैं जो कंप्यूटर द्वारा प्रभावी रूप से उपयोग किए जा सकते हैं। सबसे सरल है एल्गोरिदमिक, जब ज्ञान को एक कंप्यूटर प्रोग्राम के रूप में प्रस्तुत किया जाता है। हालांकि, यह ज्ञान को प्रस्तुत करने का सबसे अच्छा तरीका नहीं है, क्योंकि यह लचीला नहीं है। हमारे दिमाग में मौजूद ज्ञान अक्सर गैर-एल्गोरिदमिक होता है। +* दाईं ओर, प्राकृतिक पाठ जैसे प्रतिनिधित्व हैं। यह सबसे शक्तिशाली है, लेकिन स्वचालित तर्क के लिए उपयोगी नहीं है। -AI के प्रारंभिक दिनों में, बुद्धिमान प्रणाली बनाने के लिए शीर्ष-से-नीचे दृष्टिकोण (जिस पर पिछले पाठ में चर्चा की गई थी) लोकप्रिय था। विचार यह था कि लोगों से ज्ञान को कुछ मशीन-पठनीय रूप में निकाला जाए, और फिर इसका उपयोग करके स्वचालित रूप से समस्याओं को हल किया जाए। यह दृष्टिकोण दो बड़े विचारों पर आधारित था: +> ✅ एक मिनट के लिए सोचें कि आप अपने दिमाग में ज्ञान को कैसे प्रस्तुत करते हैं और इसे नोट्स में बदलते हैं। क्या कोई विशेष प्रारूप है जो आपको इसे याद रखने में मदद करता है? -* ज्ञान प्रतिनिधित्व -* तर्क +## कंप्यूटर ज्ञान प्रतिनिधित्व को वर्गीकृत करना -## ज्ञान प्रतिनिधित्व +हम कंप्यूटर ज्ञान प्रतिनिधित्व के विभिन्न तरीकों को निम्नलिखित श्रेणियों में वर्गीकृत कर सकते हैं: -Symbolic AI में एक महत्वपूर्ण अवधारणा है **ज्ञान**। यह *सूचना* या *डेटा* से ज्ञान को अलग करना महत्वपूर्ण है। उदाहरण के लिए, कोई यह कह सकता है कि किताबों में ज्ञान होता है, क्योंकि कोई किताबों का अध्ययन करके विशेषज्ञ बन सकता है। हालाँकि, किताबों में जो होता है उसे वास्तव में *डेटा* कहा जाता है, और किताबों को पढ़कर और इस डेटा को अपने विश्व मॉडल में एकीकृत करके हम इस डेटा को ज्ञान में परिवर्तित करते हैं। +* **नेटवर्क प्रतिनिधित्व** इस तथ्य पर आधारित हैं कि हमारे दिमाग में आपस में जुड़े हुए अवधारणाओं का एक नेटवर्क होता है। हम उसी नेटवर्क को कंप्यूटर के अंदर एक ग्राफ के रूप में पुन: उत्पन्न करने की कोशिश कर सकते हैं - जिसे **सामांतिक नेटवर्क** कहा जाता है। -> ✅ **ज्ञान** वह है जो हमारे सिर में होता है और यह हमारे दुनिया की समझ का प्रतिनिधित्व करता है। इसे एक सक्रिय **अधिगम** प्रक्रिया द्वारा प्राप्त किया जाता है, जो कि हम जो जानकारी प्राप्त करते हैं, उसे हमारे सक्रिय विश्व मॉडल में एकीकृत करता है। - -अधिकतर, हम ज्ञान को सख्ती से परिभाषित नहीं करते, बल्कि इसे [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid) का उपयोग करके अन्य संबंधित अवधारणाओं के साथ संरेखित करते हैं। इसमें निम्नलिखित अवधारणाएँ शामिल हैं: - -* **डेटा** कुछ ऐसा है जो भौतिक मीडिया में प्रस्तुत किया गया है, जैसे लिखित पाठ या बोले गए शब्द। डेटा मानव प्राणियों से स्वतंत्र रूप से मौजूद है और इसे लोगों के बीच पारित किया जा सकता है। -* **सूचना** वह है कि हम अपने सिर में डेटा की व्याख्या कैसे करते हैं। उदाहरण के लिए, जब हम *कंप्यूटर* शब्द सुनते हैं, तो हमें इसके बारे में कुछ समझ होती है। -* **ज्ञान** वह जानकारी है जो हमारे विश्व मॉडल में एकीकृत होती है। उदाहरण के लिए, जब हम सीखते हैं कि कंप्यूटर क्या है, तो हमें इसके काम करने के तरीके, इसकी लागत, और इसे किस लिए उपयोग किया जा सकता है, के बारे में कुछ विचार आने लगते हैं। ये आपस में संबंधित अवधारणाओं का नेटवर्क हमारे ज्ञान को बनाता है। -* **बुद्धिमत्ता** हमारे विश्व की समझ का एक और स्तर है, और यह *मेटा-ज्ञान* का प्रतिनिधित्व करता है, जैसे कि ज्ञान का उपयोग कब और कैसे किया जाना चाहिए। - - - -*छवि [Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247) से, By Longlivetheux - स्वामित्व कार्य, CC BY-SA 4.0* - -इस प्रकार, **ज्ञान प्रतिनिधित्व** की समस्या यह है कि किसी कंप्यूटर के अंदर ज्ञान को डेटा के रूप में प्रतिनिधित्व करने के लिए कुछ प्रभावी तरीका ढूंढना है, ताकि इसे स्वचालित रूप से उपयोग किया जा सके। इसे एक स्पेक्ट्रम के रूप में देखा जा सकता है: - -![ज्ञान प्रतिनिधित्व स्पेक्ट्रम](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hi.png) - -> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा - -* बाईं ओर, बहुत सरल प्रकार के ज्ञान प्रतिनिधित्व हैं जिन्हें कंप्यूटर द्वारा प्रभावी रूप से उपयोग किया जा सकता है। सबसे सरल एक एल्गोरिदमिक है, जब ज्ञान को कंप्यूटर प्रोग्राम द्वारा प्रस्तुत किया जाता है। हालाँकि, यह ज्ञान को प्रस्तुत करने का सबसे अच्छा तरीका नहीं है, क्योंकि यह लचीला नहीं है। हमारे सिर में ज्ञान अक्सर गैर-एल्गोरिदमिक होता है। -* दाईं ओर, प्राकृतिक पाठ जैसे प्रतिनिधित्व हैं। यह सबसे शक्तिशाली है, लेकिन स्वचालित तर्क के लिए उपयोग नहीं किया जा सकता है। - -> ✅ एक मिनट के लिए सोचें कि आप अपने सिर में ज्ञान को कैसे प्रस्तुत करते हैं और इसे नोट्स में परिवर्तित करते हैं। क्या कोई विशेष प्रारूप है जो आपको याद रखने में मदद करता है? - -## कंप्यूटर ज्ञान प्रतिनिधित्वों का वर्गीकरण - -हम विभिन्न कंप्यूटर ज्ञान प्रतिनिधित्व विधियों को निम्नलिखित श्रेणियों में वर्गीकृत कर सकते हैं: - -* **नेटवर्क प्रतिनिधित्व** इस तथ्य पर आधारित हैं कि हमारे सिर में आपस में जुड़े अवधारणाओं का एक नेटवर्क होता है। हम कंप्यूटर के अंदर ग्राफ के रूप में उसी नेटवर्क को पुन: उत्पन्न करने का प्रयास कर सकते हैं - जिसे **सेमांटिक नेटवर्क** कहा जाता है। - -1. **ऑब्जेक्ट-एट्रिब्यूट-वैल्यू ट्रिपलेट्स** या **एट्रिब्यूट-वैल्यू पेयर**। चूंकि एक ग्राफ को कंप्यूटर के अंदर नोड्स और एजेस की सूची के रूप में प्रस्तुत किया जा सकता है, हम एक सेमांटिक नेटवर्क को ट्रिपलेट्स की सूची द्वारा प्रस्तुत कर सकते हैं, जिसमें ऑब्जेक्ट, एट्रिब्यूट और वैल्यू होती है। उदाहरण के लिए, हम प्रोग्रामिंग भाषाओं के बारे में निम्नलिखित ट्रिपलेट्स बनाते हैं: +1. **ऑब्जेक्ट-एट्रिब्यूट-वैल्यू ट्रिपलेट्स** या **एट्रिब्यूट-वैल्यू पेयर्स**। चूंकि एक ग्राफ को कंप्यूटर के अंदर नोड्स और एजेस की सूची के रूप में प्रस्तुत किया जा सकता है, हम एक सामांतिक नेटवर्क को ट्रिपलेट्स की सूची के रूप में प्रस्तुत कर सकते हैं, जिसमें ऑब्जेक्ट्स, एट्रिब्यूट्स और वैल्यूज शामिल हैं। उदाहरण के लिए, हम प्रोग्रामिंग भाषाओं के बारे में निम्नलिखित ट्रिपलेट्स बना सकते हैं: ऑब्जेक्ट | एट्रिब्यूट | वैल्यू --------|-----------|------ -Python | है | अनटाइप्ड-भाषा -Python | द्वारा आविष्कृत | Guido van Rossum -Python | ब्लॉक-सिंटैक्स | इंडेंटेशन -अनटाइप्ड-भाषा | नहीं है | टाइप परिभाषाएँ +---------|------------|------ +Python | है | Untyped-Language +Python | आविष्कारक | Guido van Rossum +Python | ब्लॉक-सिंटैक्स | इंडेंटेशन +Untyped-Language | नहीं है | टाइप डिफिनिशन > ✅ सोचें कि ट्रिपलेट्स का उपयोग अन्य प्रकार के ज्ञान को प्रस्तुत करने के लिए कैसे किया जा सकता है। -2. **हाइरार्किकल प्रतिनिधित्व** इस तथ्य पर जोर देते हैं कि हम अक्सर अपने सिर के अंदर वस्तुओं की एक पदानुक्रम बनाते हैं। उदाहरण के लिए, हम जानते हैं कि कैनरी एक पक्षी है, और सभी पक्षियों के पंख होते हैं। हमें यह भी कुछ विचार है कि कैनरी आमतौर पर किस रंग की होती है, और उनकी उड़ान गति क्या होती है। +2. **पदानुक्रमिक प्रतिनिधित्व** इस तथ्य पर जोर देते हैं कि हम अक्सर अपने दिमाग में वस्तुओं का एक पदानुक्रम बनाते हैं। उदाहरण के लिए, हम जानते हैं कि कैनरी एक पक्षी है, और सभी पक्षियों के पंख होते हैं। हमें यह भी पता है कि कैनरी का रंग आमतौर पर क्या होता है, और उनकी उड़ान की गति क्या है। - - **फ्रेम प्रतिनिधित्व** प्रत्येक वस्तु या वस्तुओं की श्रेणी का प्रतिनिधित्व करने के लिए एक **फ्रेम** का उपयोग करता है जिसमें **स्लॉट्स** होते हैं। स्लॉट्स के पास संभावित डिफ़ॉल्ट मान, मान प्रतिबंध, या स्टोर की गई प्रक्रियाएँ हो सकती हैं जिन्हें किसी स्लॉट के मान को प्राप्त करने के लिए कॉल किया जा सकता है। सभी फ्रेम एक वस्तु पदानुक्रम के समान एक पदानुक्रम बनाते हैं जो वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में होता है। - - **परिदृश्य** विशेष प्रकार के फ्रेम होते हैं जो समय में विकसित होने वाली जटिल स्थितियों का प्रतिनिधित्व करते हैं। + - **फ्रेम प्रतिनिधित्व** प्रत्येक वस्तु या वस्तुओं के वर्ग को **फ्रेम** के रूप में प्रस्तुत करने पर आधारित है, जिसमें **स्लॉट्स** होते हैं। स्लॉट्स में संभावित डिफ़ॉल्ट मान, मान प्रतिबंध, या संग्रहीत प्रक्रियाएं हो सकती हैं जिन्हें स्लॉट का मान प्राप्त करने के लिए बुलाया जा सकता है। सभी फ्रेम एक पदानुक्रम बनाते हैं, जो वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में वस्तु पदानुक्रम के समान होता है। + - **परिदृश्य** फ्रेम का एक विशेष प्रकार है जो जटिल स्थितियों का प्रतिनिधित्व करता है जो समय के साथ विकसित हो सकती हैं। **Python** -स्लॉट | वैल्यू | डिफ़ॉल्ट वैल्यू | अंतराल | ------|-------|---------------|----------| -नाम | Python | | | -है-एक | अनटाइप्ड-भाषा | | | +स्लॉट | मान | डिफ़ॉल्ट मान | अंतराल | +------|-----|--------------|--------| +नाम | Python | | | +है-एक | Untyped-Language | | | वेरिएबल केस | | CamelCase | | -प्रोग्राम लंबाई | | | 5-5000 लाइनों | +प्रोग्राम लंबाई | | | 5-5000 पंक्तियाँ | ब्लॉक सिंटैक्स | इंडेंट | | | -3. **प्रक्रियात्मक प्रतिनिधित्व** ज्ञान को उन क्रियाओं की सूची के रूप में प्रस्तुत करने पर आधारित हैं जिन्हें एक निश्चित स्थिति होने पर निष्पादित किया जा सकता है। - - उत्पादन नियम यदि-तो कथन हैं जो हमें निष्कर्ष निकालने की अनुमति देते हैं। उदाहरण के लिए, एक डॉक्टर के पास एक नियम हो सकता है जिसमें कहा गया है कि **यदि** एक मरीज को उच्च बुखार है **या** रक्त परीक्षण में C-रिएक्टिव प्रोटीन का उच्च स्तर है **तो** उसे सूजन है। जब हम किसी स्थिति का सामना करते हैं, तो हम सूजन के बारे में निष्कर्ष निकाल सकते हैं, और फिर इसका उपयोग आगे के तर्क में कर सकते हैं। - - एल्गोरिदम को प्रक्रियात्मक प्रतिनिधित्व के एक अन्य रूप के रूप में माना जा सकता है, हालाँकि इन्हें ज्ञान-आधारित प्रणालियों में लगभग कभी सीधे उपयोग नहीं किया जाता है। +3. **प्रक्रियात्मक प्रतिनिधित्व** ज्ञान को क्रियाओं की एक सूची के रूप में प्रस्तुत करने पर आधारित है, जिन्हें किसी विशेष स्थिति में निष्पादित किया जा सकता है। + - उत्पादन नियम "यदि-तो" कथन होते हैं जो हमें निष्कर्ष निकालने की अनुमति देते हैं। उदाहरण के लिए, एक डॉक्टर के पास एक नियम हो सकता है जो कहता है कि **यदि** किसी मरीज को तेज बुखार है **या** रक्त परीक्षण में सी-रिएक्टिव प्रोटीन का उच्च स्तर है **तो** उसे सूजन है। एक बार जब हम इनमें से किसी एक स्थिति का सामना करते हैं, तो हम सूजन के बारे में निष्कर्ष निकाल सकते हैं, और फिर इसे आगे के तर्क में उपयोग कर सकते हैं। + - एल्गोरिदम को प्रक्रियात्मक प्रतिनिधित्व का एक और रूप माना जा सकता है, हालांकि उन्हें ज्ञान-आधारित प्रणालियों में सीधे उपयोग नहीं किया जाता है। -4. **तर्क** को मूल रूप से अरस्तू द्वारा सार्वभौमिक मानव ज्ञान का प्रतिनिधित्व करने के तरीके के रूप में प्रस्तावित किया गया था। - - प्रेडिकेट लॉजिक एक गणितीय सिद्धांत के रूप में इतना समृद्ध है कि इसे गणनायोग्य नहीं माना जा सकता, इसलिए इसका सामान्यतः उपयोग किया जाने वाला कुछ उपसमुच्चय होता है, जैसे कि प्रोलॉग में उपयोग किए जाने वाले हॉर्न क्लॉज़। - - वर्णनात्मक तर्क एक तार्किक प्रणाली का परिवार है जिसका उपयोग वस्तुओं की पदानुक्रम और वितरित ज्ञान प्रतिनिधित्व जैसे *सेमांटिक वेब* के बारे में प्रतिनिधित्व और तर्क करने के लिए किया जाता है। +4. **तर्क** मूल रूप से अरस्तू द्वारा सार्वभौमिक मानव ज्ञान का प्रतिनिधित्व करने के एक तरीके के रूप में प्रस्तावित किया गया था। + - प्रेडिकेट लॉजिक एक गणितीय सिद्धांत के रूप में बहुत समृद्ध है, इसलिए इसका कुछ उपसमुच्चय आमतौर पर उपयोग किया जाता है, जैसे कि प्रोलॉग में उपयोग किए जाने वाले हॉर्न क्लॉज। + - वर्णनात्मक तर्क तर्क प्रणालियों का एक परिवार है जो वस्तुओं के पदानुक्रम और वितरित ज्ञान प्रतिनिधित्व जैसे *सामांतिक वेब* के बारे में तर्क करने के लिए उपयोग किया जाता है। -## विशेषज्ञ प्रणाली +## विशेषज्ञ प्रणालियाँ -Symbolic AI की प्रारंभिक सफलताओं में से एक तथाकथित **विशेषज्ञ प्रणाली** थी - कंप्यूटर प्रणाली जो कुछ सीमित समस्या डोमेन में विशेषज्ञ के रूप में कार्य करने के लिए डिज़ाइन की गई थी। ये एक या एक से अधिक मानव विशेषज्ञों से निकाले गए **ज्ञान आधार** पर आधारित थीं, और इनमें एक **व्युत्पत्ति इंजन** था जो इसके शीर्ष पर कुछ तर्क करता था। +प्रतीकात्मक एआई की शुरुआती सफलताओं में से एक **विशेषज्ञ प्रणालियाँ** थीं - कंप्यूटर सिस्टम जिन्हें किसी सीमित समस्या डोमेन में विशेषज्ञ के रूप में कार्य करने के लिए डिज़ाइन किया गया था। ये **ज्ञान आधार** पर आधारित थीं, जो एक या अधिक मानव विशेषज्ञों से निकाली गई थीं, और इनमें एक **तर्क इंजन** था जो इसके ऊपर कुछ तर्क करता था। -![मानव आर्किटेक्चर](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hi.png) | ![ज्ञान-आधारित प्रणाली](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hi.png) ----------------------------------------------|------------------------------------------------ -मानव तंत्रिका प्रणाली की सरल संरचना | ज्ञान-आधारित प्रणाली की आर्किटेक्चर +![मानव संरचना](../../../../lessons/2-Symbolic/images/arch-human.png) | ![ज्ञान-आधारित प्रणाली](../../../../lessons/2-Symbolic/images/arch-kbs.png) +---------------------------------------|-------------------------------------------- +मानव तंत्रिका तंत्र की सरलीकृत संरचना | ज्ञान-आधारित प्रणाली की संरचना -विशेषज्ञ प्रणालियाँ मानव तर्क प्रणाली की तरह बनाई जाती हैं, जिसमें **शॉर्ट-टर्म मेमोरी** और **लॉन्ग-टर्म मेमोरी** होती है। इसी प्रकार, ज्ञान-आधारित प्रणालियों में हम निम्नलिखित घटकों में अंतर करते हैं: +विशेषज्ञ प्रणालियाँ मानव तर्क प्रणाली की तरह बनाई जाती हैं, जिसमें **अल्पकालिक स्मृति** और **दीर्घकालिक स्मृति** होती है। इसी तरह, ज्ञान-आधारित प्रणालियों में हम निम्नलिखित घटकों को अलग करते हैं: -* **समस्या मेमोरी**: इसमें वर्तमान में हल की जा रही समस्या के बारे में ज्ञान होता है, जैसे कि एक मरीज का तापमान या रक्तचाप, क्या उसे सूजन है या नहीं, आदि। इस ज्ञान को **स्थिर ज्ञान** भी कहा जाता है, क्योंकि यह उस समस्या के बारे में जो हम वर्तमान में जानते हैं, का एक स्नैपशॉट है - जिसे *समस्या स्थिति* कहा जाता है। -* **ज्ञान आधार**: यह समस्या डोमेन के बारे में दीर्घकालिक ज्ञान का प्रतिनिधित्व करता है। इसे मानव विशेषज्ञों से मैन्युअल रूप से निकाला जाता है, और यह परामर्श से परामर्श में नहीं बदलता। क्योंकि यह हमें एक समस्या स्थिति से दूसरी समस्या स्थिति में नेविगेट करने की अनुमति देता है, इसे **गतिशील ज्ञान** भी कहा जाता है। -* **व्युत्पत्ति इंजन**: यह समस्या स्थिति स्थान में खोजने की पूरी प्रक्रिया का संचालन करता है, जब आवश्यक हो तो उपयोगकर्ता से प्रश्न पूछता है। यह प्रत्येक स्थिति पर लागू होने वाले सही नियमों को खोजने के लिए भी जिम्मेदार है। +* **समस्या स्मृति**: इसमें वर्तमान में हल की जा रही समस्या के बारे में ज्ञान होता है, जैसे कि किसी मरीज का तापमान या रक्तचाप, क्या उसे सूजन है या नहीं, आदि। इस ज्ञान को **स्थिर ज्ञान** भी कहा जाता है, क्योंकि इसमें समस्या के बारे में वर्तमान में ज्ञात जानकारी का स्नैपशॉट होता है - जिसे *समस्या स्थिति* कहा जाता है। +* **ज्ञान आधार**: यह समस्या डोमेन के बारे में दीर्घकालिक ज्ञान का प्रतिनिधित्व करता है। इसे मानव विशेषज्ञों से मैन्युअल रूप से निकाला जाता है, और परामर्श से परामर्श तक नहीं बदलता। क्योंकि यह हमें एक समस्या स्थिति से दूसरी में नेविगेट करने की अनुमति देता है, इसे **गतिशील ज्ञान** भी कहा जाता है। +* **तर्क इंजन**: यह समस्या स्थिति स्थान में खोज प्रक्रिया को व्यवस्थित करता है, और जब आवश्यक हो तो उपयोगकर्ता से प्रश्न पूछता है। यह प्रत्येक स्थिति पर लागू होने वाले सही नियमों को खोजने के लिए भी जिम्मेदार होता है। -उदाहरण के लिए, आइए एक जानवर को उसके शारीरिक लक्षणों के आधार पर पहचानने वाली विशेषज्ञ प्रणाली पर विचार करें: +उदाहरण के लिए, चलिए एक जानवर की भौतिक विशेषताओं के आधार पर उसे पहचानने की विशेषज्ञ प्रणाली पर विचार करते हैं: -![AND-OR पेड़](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hi.png) +![AND-OR ट्री](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) -> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा +> छवि [दिमित्री सोश्निकोव](http://soshnikov.com) द्वारा -यह आरेख एक **AND-OR पेड़** कहा जाता है, और यह उत्पादन नियमों के एक सेट का ग्राफिकल प्रतिनिधित्व है। ज्ञान को विशेषज्ञ से निकालने के आरंभ में पेड़ खींचना उपयोगी होता है। कंप्यूटर के अंदर ज्ञान को प्रस्तुत करने के लिए नियमों का उपयोग करना अधिक सुविधाजनक है: +इस आरेख को **AND-OR ट्री** कहा जाता है, और यह उत्पादन नियमों के सेट का एक ग्राफिकल प्रतिनिधित्व है। विशेषज्ञ से ज्ञान निकालने की शुरुआत में एक ट्री बनाना उपयोगी होता है। कंप्यूटर के अंदर ज्ञान का प्रतिनिधित्व करने के लिए नियमों का उपयोग करना अधिक सुविधाजनक होता है: ``` IF the animal eats meat @@ -112,57 +91,130 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -आप देख सकते हैं कि नियम के बाईं ओर की प्रत्येक स्थिति और क्रिया मूल रूप से ऑब्जेक्ट-एट्रिब्यूट-वैल्यू (OAV) ट्रिपलेट्स हैं। **कार्यशील मेमोरी** उन OAV ट्रिपलेट्स का सेट है जो वर्तमान में हल की जा रही समस्या के लिए हैं। एक **नियम इंजन** उन नियमों की खोज करता है जिनकी स्थिति संतुष्ट होती है और उन्हें लागू करता है, कार्यशील मेमोरी में एक और ट्रिपलेट जोड़ता है। +आप देख सकते हैं कि नियम के बाएँ हाथ की स्थिति और क्रिया वस्तु-एट्रिब्यूट-वैल्यू (OAV) ट्रिपलेट्स के समान हैं। **कार्यशील स्मृति** OAV ट्रिपलेट्स का सेट रखती है जो वर्तमान में हल की जा रही समस्या से मेल खाती है। एक **नियम इंजन** उन नियमों की खोज करता है जिनकी स्थिति संतुष्ट होती है और उन्हें लागू करता है, कार्यशील स्मृति में एक और ट्रिपलेट जोड़ता है। -> ✅ एक विषय पर अपना खुद का AND-OR पेड़ बनाएं जो आपको पसंद हो! +> ✅ अपने पसंदीदा विषय पर अपना खुद का AND-OR ट्री बनाएं! -### आगे बनाम पीछे व्युत्पत्ति +### फॉरवर्ड बनाम बैकवर्ड तर्क -उपरोक्त प्रक्रिया को **आगे व्युत्पत्ति** कहा जाता है। यह समस्या के बारे में उपलब्ध प्रारंभिक डेटा के साथ शुरू होती है जो कार्यशील मेमोरी में है, और फिर निम्नलिखित तर्क चक्र को निष्पादित करती है: +ऊपर वर्णित प्रक्रिया को **फॉरवर्ड तर्क** कहा जाता है। यह कार्यशील स्मृति में समस्या के बारे में प्रारंभिक डेटा के साथ शुरू होता है, और फिर निम्नलिखित तर्क चक्र को निष्पादित करता है: -1. यदि लक्षित एट्रिब्यूट कार्यशील मेमोरी में मौजूद है - रुकें और परिणाम दें -2. उन सभी नियमों की खोज करें जिनकी स्थिति वर्तमान में संतुष्ट है - नियमों का **संघर्ष सेट** प्राप्त करें। -3. **संघर्ष समाधान** करें - इस चरण पर निष्पादित होने वाले एक नियम का चयन करें। संघर्ष समाधान रणनीतियों के विभिन्न प्रकार हो सकते हैं: - - ज्ञान आधार में पहले लागू होने वाले नियम का चयन करें - - एक यादृच्छिक नियम का चयन करें - - एक *अधिक विशिष्ट* नियम का चयन करें, अर्थात वह जो "बाईं ओर" (LHS) में सबसे अधिक स्थितियों को पूरा करता है -4. चयनित नियम को लागू करें और समस्या स्थिति में नया ज्ञान जोड़ें +1. यदि लक्ष्य विशेषता कार्यशील स्मृति में मौजूद है - रुकें और परिणाम दें। +2. उन सभी नियमों की खोज करें जिनकी स्थिति वर्तमान में संतुष्ट है - **संघर्ष सेट** प्राप्त करें। +3. **संघर्ष समाधान** करें - उस नियम का चयन करें जिसे इस चरण में निष्पादित किया जाएगा। विभिन्न संघर्ष समाधान रणनीतियाँ हो सकती हैं: + - ज्ञान आधार में पहला लागू नियम चुनें। + - एक यादृच्छिक नियम चुनें। + - एक *अधिक विशिष्ट* नियम चुनें, यानी वह जो "बाएँ हाथ की स्थिति" (LHS) में सबसे अधिक स्थितियों को पूरा करता हो। +4. चयनित नियम लागू करें और समस्या स्थिति में नया ज्ञान जोड़ें। 5. चरण 1 से दोहराएँ। -हालांकि, कुछ मामलों में हम समस्या के बारे में खाली ज्ञान के साथ शुरू करना चाह सकते हैं, और ऐसे प्रश्न पूछना चाहते हैं जो हमें निष्कर्ष पर पहुँचने में मदद करेंगे। उदाहरण के लिए, जब चिकित्सा निदान करते हैं, तो हम आमतौर पर मरीज का निदान करने से पहले सभी चिकित्सा विश्लेषण नहीं करते हैं। हम निर्णय लेने की आवश्यकता होने पर विश्लेषण करना चाहते हैं। +हालांकि, कुछ मामलों में हम समस्या के बारे में खाली ज्ञान के साथ शुरू करना चाहते हैं, और ऐसे प्रश्न पूछना चाहते हैं जो हमें निष्कर्ष तक पहुँचने में मदद करें। उदाहरण के लिए, जब चिकित्सा निदान किया जा रहा हो, तो हम आमतौर पर सभी चिकित्सा परीक्षण पहले से नहीं करते। हम निर्णय लेने के लिए आवश्यक होने पर परीक्षण करना चाहते हैं। -इस प्रक्रिया को **पीछे व्युत्पत्ति** के रूप में मॉडल किया जा सकता है। यह **लक्ष्य** द्वारा संचालित होती है - वह एट्रिब्यूट मान जिसे हम खोजने के लिए देख रहे हैं: +इस प्रक्रिया को **बैकवर्ड तर्क** का उपयोग करके मॉडल किया जा सकता है। यह **लक्ष्य** द्वारा संचालित होता है - वह विशेषता मान जिसे हम खोजना चाहते हैं: -1. सभी नियमों का चयन करें जो हमें एक लक्ष्य का मान दे सकते हैं (अर्थात, लक्ष्यों के साथ RHS ("दाईं ओर")) - एक संघर्ष सेट -1. यदि इस एट्रिब्यूट के लिए कोई नियम नहीं हैं, या कोई नियम कहता है कि हमें उपयोगकर्ता से मान पूछना चाहिए - पूछें, अन्यथा: -1. एक नियम का चयन करने के लिए संघर्ष समाधान रणनीति का उपयोग करें जिसे हम *परिकल्पना* के रूप में उपयोग करेंगे - हम इसे साबित करने का प्रयास करेंगे -1. नियम के LHS में सभी एट्रिब्यूट्स के लिए इस प्रक्रिया को पुनरावृत्त रूप से दोहराएं, उन्हें लक्ष्यों के रूप में साबित करने का प्रयास करें -1. यदि किसी भी बिंदु पर प्रक्रिया विफल होती है - चरण 3 में एक अन्य नियम का उपयोग करें। +1. उन सभी नियमों का चयन करें जो हमें लक्ष्य का मान दे सकते हैं (यानी लक्ष्य RHS ("राइट-हैंड-साइड") पर हो) - एक संघर्ष सेट। +1. यदि इस विशेषता के लिए कोई नियम नहीं है, या कोई नियम कहता है कि हमें उपयोगकर्ता से मान पूछना चाहिए - पूछें, अन्यथा: +1. संघर्ष समाधान रणनीति का उपयोग करके एक नियम का चयन करें जिसे हम *परिकल्पना* के रूप में उपयोग करेंगे - हम इसे साबित करने की कोशिश करेंगे। +1. नियम के LHS में सभी विशेषताओं के लिए प्रक्रिया को पुनरावर्ती रूप से दोहराएँ, उन्हें लक्ष्यों के रूप में साबित करने की कोशिश करें। +1. यदि किसी भी बिंदु पर प्रक्रिया विफल हो जाती है - चरण 3 पर दूसरा नियम उपयोग करें। -> ✅ किन स्थितियों में आगे व्युत्पत्ति अधिक उपयुक्त है? पीछे व्युत्पत्ति के बारे में क्या? +> ✅ किन स्थितियों में फॉरवर्ड तर्क अधिक उपयुक्त है? और बैकवर्ड तर्क कब उपयोगी है? ### विशेषज्ञ प्रणालियों को लागू करना विशेषज्ञ प्रणालियों को विभिन्न उपकरणों का उपयोग करके लागू किया जा सकता है: -* उन्हें किसी उच्च स्तर की प्रोग्रामिंग भाषा में सीधे प्रोग्राम करना। यह सबसे अच्छा विचार नहीं है, क्योंकि ज्ञान-आधारित प्रणाली का मुख्य लाभ यह है कि ज्ञान व्युत्पत्ति से अलग होता है, और संभावित रूप से एक समस्या डोमेन विशेषज्ञ को व्युत्पत्ति प्रक्रिया के विवरण को समझे बिना नियम लिखने में सक्षम होना चाहिए। -* **विशेषज्ञ प्रणाली शेल** का उपयोग करना, यानी एक प्रणाली जो किसी ज्ञान प्रतिनिधित्व भाषा का उपयोग करके ज्ञान से भरी जाती है। +* किसी उच्च स्तरीय प्रोग्रामिंग भाषा में सीधे प्रोग्रामिंग करना। यह सबसे अच्छा विचार नहीं है, क्योंकि ज्ञान-आधारित प्रणाली का मुख्य लाभ यह है कि ज्ञान को तर्क से अलग किया जाता है, और संभावित रूप से एक समस्या डोमेन विशेषज्ञ को नियम लिखने में सक्षम होना चाहिए बिना तर्क प्रक्रिया के विवरण को समझे। +* **विशेषज्ञ प्रणाली शेल** का उपयोग करना, यानी एक प्रणाली जिसे विशेष रूप से किसी ज्ञान प्रतिनिधित्व भाषा का उपयोग करके ज्ञान से भरा जा सके। -## ✍️ व्यायाम: पशु व्युत्पत्ति - -आगे और पीछे व्युत्पत्ति विशेषज्ञ प्रणाली को लागू करने के उदाहरण के लिए [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) देखें। - -> **नोट**: यह उदाहरण अपेक्षाकृत सरल है, और केवल यह विचार देता है कि एक विशेषज्ञ प्रणाली कैसी दिखती है। जब आप ऐसी प्रणाली बनाना शुरू करते हैं, तो आप केवल तब कुछ *बुद्धिमान* व्यवहार देखेंगे जब आप नियमों की एक निश्चित संख्या तक पहुँचेंगे, लगभग 200+. किसी बिंदु पर, नियम बहुत जटिल हो जाते हैं कि सभी को याद रखना कठिन हो जाता है, और इस बिंदु पर आप यह सोचने लगते हैं कि प्रणाली कुछ निर्णय क्यों लेती है। हालाँकि, ज्ञान-आधारित प्रणालियों की महत्वपूर्ण विशेषता यह है कि आप हमेशा यह *व्याख्या* कर सकते हैं कि किसी भी निर्णय को कैसे लिया गया। +## ✍️ अभ्यास: जानवर तर्क +फॉरवर्ड और बैकवर्ड तर्क विशेषज्ञ प्रणाली को लागू करने के उदाहरण के लिए [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) देखें। +> **नोट**: यह उदाहरण काफी सरल है और केवल यह दिखाने के लिए है कि एक विशेषज्ञ प्रणाली कैसी दिखती है। जब आप ऐसी प्रणाली बनाना शुरू करेंगे, तो आपको इसमें कुछ *बुद्धिमान* व्यवहार तभी दिखाई देगा जब आप लगभग 200+ नियमों तक पहुँचेंगे। एक समय के बाद, नियम इतने जटिल हो जाते हैं कि सभी को याद रखना मुश्किल हो जाता है, और इस बिंदु पर आप सोच सकते हैं कि प्रणाली ने कुछ विशेष निर्णय क्यों लिए। हालांकि, ज्ञान-आधारित प्रणालियों की एक महत्वपूर्ण विशेषता यह है कि आप हमेशा *समझा सकते हैं* कि किसी भी निर्णय को कैसे लिया गया। ## ऑंटोलॉजी और सेमांटिक वेब -20वीं सदी के अंत में एक पहल हुई थी कि ज्ञान प्रतिनिधित्व का उपयोग इंटरनेट संसाधनों को एनोटेट करने के लिए किया जाए, ताकि उन संसाधनों को खोजा जा सके जो बहुत विशिष्ट प्रश्नों के अनुरूप हों। इस आंदोलन को **सेमांटिक वेब** कहा गया, और यह कई अवधारणाओं पर निर्भर करता था: +20वीं सदी के अंत में एक पहल की गई थी कि इंटरनेट संसाधनों को ज्ञान प्रतिनिधित्व के माध्यम से एनोटेट किया जाए, ताकि बहुत विशिष्ट प्रश्नों के लिए उपयुक्त संसाधन ढूंढे जा सकें। इस पहल को **सेमांटिक वेब** कहा गया, और यह कई अवधारणाओं पर आधारित था: -- **[विवरण तर्क](https://en.wikipedia.org/wiki/Description_logic)** (DL) पर आधारित एक विशेष ज्ञान प्रतिनिधित्व। यह फ्रेम ज्ञान प्रतिनिधित्व के समान है, क्योंकि यह गुणों के साथ वस्तुओं की एक पदानुक्रम बनाता है, लेकिन इसमें औपचारिक तार्किक अर्थ और व्युत्पत्ति होती है। DL का एक पूरा परिवार है जो अभिव्यक्तित्व और व्युत्पत्ति की एल्गोरिदमिक जटिलता के बीच संतुलन बनाता है। -- वितरित ज्ञान प्रतिनिधित्व, जहां सभी अवधारणाएँ एक वैश्विक URI पहचानकर्ता द्वारा प्रस्तुत की जाती हैं, जिससे यह संभव होता है कि ज्ञान की पदानुक्रमें बनाई जा सकें जो इंटरनेट को फैलाएं। -- ज्ञान विवरण के लिए XML-आधारित भाषाओं का एक परिवार: RDF (रिसोर्स विवरण ढांचा), RDFS (RDF स्कीमा), OWL (ऑन्टोलॉजी वेब भाषा)। +- **[डिस्क्रिप्शन लॉजिक](https://en.wikipedia.org/wiki/Description_logic)** (DL) पर आधारित एक विशेष ज्ञान प्रतिनिधित्व। यह फ्रेम ज्ञान प्रतिनिधित्व के समान है, क्योंकि यह गुणों के साथ वस्तुओं की एक पदानुक्रम बनाता है, लेकिन इसमें औपचारिक तार्किक अर्थ और निष्कर्षण होता है। DL का एक पूरा परिवार है, जो अभिव्यक्तता और निष्कर्षण की एल्गोरिदमिक जटिलता के बीच संतुलन बनाता है। +- वितरित ज्ञान प्रतिनिधित्व, जहां सभी अवधारणाओं को एक वैश्विक URI पहचानकर्ता द्वारा दर्शाया जाता है, जिससे इंटरनेट पर ज्ञान पदानुक्रम बनाना संभव हो जाता है। +- ज्ञान विवरण के लिए XML-आधारित भाषाओं का एक परिवार: RDF (रिसोर्स डिस्क्रिप्शन फ्रेमवर्क), RDFS (RDF स्कीमा), OWL (ऑंटोलॉजी वेब लैंग्वेज)। -सेमांटिक +सेमांटिक वेब में एक मुख्य अवधारणा **ऑंटोलॉजी** की है। यह किसी समस्या क्षेत्र का औपचारिक ज्ञान प्रतिनिधित्व का स्पष्ट विनिर्देशन है। सबसे सरल ऑंटोलॉजी केवल समस्या क्षेत्र में वस्तुओं की एक पदानुक्रम हो सकती है, लेकिन अधिक जटिल ऑंटोलॉजी में ऐसे नियम शामिल होंगे जो निष्कर्षण के लिए उपयोग किए जा सकते हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file +सेमांटिक वेब में, सभी प्रतिनिधित्व ट्रिपलेट्स पर आधारित होते हैं। प्रत्येक वस्तु और प्रत्येक संबंध को URI द्वारा अद्वितीय रूप से पहचाना जाता है। उदाहरण के लिए, यदि हम यह तथ्य बताना चाहते हैं कि यह AI पाठ्यक्रम Dmitry Soshnikov द्वारा 1 जनवरी, 2022 को विकसित किया गया था - तो यहां वे ट्रिपलेट्स हैं जिन्हें हम उपयोग कर सकते हैं: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ यहां `http://www.example.com/terms/creation-date` और `http://purl.org/dc/elements/1.1/creator` कुछ प्रसिद्ध और सार्वभौमिक रूप से स्वीकृत URI हैं, जो *creator* और *creation date* की अवधारणाओं को व्यक्त करते हैं। + +एक अधिक जटिल मामले में, यदि हम रचनाकारों की एक सूची परिभाषित करना चाहते हैं, तो हम RDF में परिभाषित कुछ डेटा संरचनाओं का उपयोग कर सकते हैं। + + + +> ऊपर के आरेख [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +सेमांटिक वेब के निर्माण की प्रगति को सर्च इंजन और प्राकृतिक भाषा प्रसंस्करण तकनीकों की सफलता ने धीमा कर दिया, जो पाठ से संरचित डेटा निकालने की अनुमति देती हैं। हालांकि, कुछ क्षेत्रों में ऑंटोलॉजी और ज्ञान आधार बनाए रखने के लिए अभी भी महत्वपूर्ण प्रयास किए जा रहे हैं। कुछ उल्लेखनीय परियोजनाएं: + +* [WikiData](https://wikidata.org/) एक मशीन-पठनीय ज्ञान आधारों का संग्रह है जो Wikipedia से जुड़ा है। अधिकांश डेटा Wikipedia *InfoBoxes* से निकाला गया है, जो Wikipedia पृष्ठों के अंदर संरचित सामग्री के टुकड़े हैं। आप [SPARQL](https://query.wikidata.org/) में विकिडेटा को क्वेरी कर सकते हैं, जो सेमांटिक वेब के लिए एक विशेष क्वेरी भाषा है। यहां एक नमूना क्वेरी है जो मनुष्यों में सबसे लोकप्रिय आंखों के रंग दिखाती है: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) WikiData के समान एक और प्रयास है। + +> ✅ यदि आप अपनी खुद की ऑंटोलॉजी बनाने या मौजूदा ऑंटोलॉजी खोलने के साथ प्रयोग करना चाहते हैं, तो [Protégé](https://protege.stanford.edu/) नामक एक शानदार विज़ुअल ऑंटोलॉजी एडिटर है। इसे डाउनलोड करें, या इसे ऑनलाइन उपयोग करें। + + + +*Web Protégé एडिटर Romanov Family ऑंटोलॉजी के साथ खुला। स्क्रीनशॉट Dmitry Soshnikov द्वारा* + +## ✍️ अभ्यास: एक परिवार ऑंटोलॉजी + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) देखें, जो पारिवारिक संबंधों के बारे में तर्क करने के लिए सेमांटिक वेब तकनीकों का उपयोग करने का एक उदाहरण है। हम GEDCOM प्रारूप में एक पारिवारिक पेड़ और पारिवारिक संबंधों की एक ऑंटोलॉजी लेंगे और दिए गए व्यक्तियों के सेट के लिए सभी पारिवारिक संबंधों का एक ग्राफ बनाएंगे। + +## माइक्रोसॉफ्ट कॉन्सेप्ट ग्राफ + +अधिकांश मामलों में, ऑंटोलॉजी को सावधानीपूर्वक हाथ से बनाया जाता है। हालांकि, यह भी संभव है कि **असंरचित डेटा** से ऑंटोलॉजी निकाली जाएं, उदाहरण के लिए, प्राकृतिक भाषा के पाठ से। + +Microsoft Research द्वारा ऐसा ही एक प्रयास किया गया था, जिसके परिणामस्वरूप [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) बना। + +यह `is-a` उत्तराधिकार संबंध का उपयोग करके समूहित संस्थाओं का एक बड़ा संग्रह है। यह "Microsoft क्या है?" जैसे प्रश्नों का उत्तर देने की अनुमति देता है - उत्तर कुछ इस प्रकार हो सकता है "0.87 की संभावना के साथ एक कंपनी, और 0.75 की संभावना के साथ एक ब्रांड।" + +ग्राफ़ REST API के रूप में या एक बड़े डाउनलोड करने योग्य टेक्स्ट फ़ाइल के रूप में उपलब्ध है, जिसमें सभी इकाई जोड़े सूचीबद्ध हैं। + +## ✍️ अभ्यास: एक कॉन्सेप्ट ग्राफ + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) नोटबुक आज़माएं, यह देखने के लिए कि हम Microsoft Concept Graph का उपयोग करके समाचार लेखों को कई श्रेणियों में कैसे समूहित कर सकते हैं। + +## निष्कर्ष + +आजकल, AI को अक्सर *मशीन लर्निंग* या *न्यूरल नेटवर्क्स* का पर्याय माना जाता है। हालांकि, एक इंसान स्पष्ट तर्क भी प्रदर्शित करता है, जो कुछ ऐसा है जिसे वर्तमान में न्यूरल नेटवर्क संभाल नहीं रहे हैं। वास्तविक दुनिया की परियोजनाओं में, स्पष्ट तर्क का अभी भी उपयोग किया जाता है ताकि ऐसे कार्य किए जा सकें जिनमें स्पष्टीकरण की आवश्यकता हो, या सिस्टम के व्यवहार को नियंत्रित तरीके से संशोधित करने की आवश्यकता हो। + +## 🚀 चुनौती + +इस पाठ से संबंधित Family Ontology नोटबुक में, अन्य पारिवारिक संबंधों के साथ प्रयोग करने का अवसर है। परिवार के पेड़ में लोगों के बीच नए कनेक्शन खोजने का प्रयास करें। + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## समीक्षा और स्व-अध्ययन + +इंटरनेट पर शोध करें और उन क्षेत्रों की खोज करें जहां मनुष्यों ने ज्ञान को मापने और कोडिफाई करने की कोशिश की है। Bloom's Taxonomy पर एक नज़र डालें, और इतिहास में वापस जाएं यह जानने के लिए कि मनुष्यों ने अपनी दुनिया को समझने की कोशिश कैसे की। Linnaeus के कार्य का अन्वेषण करें, जिन्होंने जीवों की एक वर्गीकरण प्रणाली बनाई, और यह देखें कि Dmitri Mendeleev ने रासायनिक तत्वों का वर्णन और समूह बनाने का तरीका कैसे बनाया। आप और कौन से दिलचस्प उदाहरण खोज सकते हैं? + +**असाइनमेंट**: [ऑंटोलॉजी बनाएं](assignment.md) + +**अस्वीकरण**: +यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/2-Symbolic/assignment.md b/translations/hi/lessons/2-Symbolic/assignment.md index 57d916cc..b98e905e 100644 --- a/translations/hi/lessons/2-Symbolic/assignment.md +++ b/translations/hi/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# एक ओंटोलॉजी बनाएं + +# एक ऑंटोलॉजी बनाएं -ज्ञान का आधार बनाना एक विषय के बारे में तथ्यों का प्रतिनिधित्व करने वाले मॉडल को वर्गीकृत करने के बारे में है। एक विषय चुनें - जैसे कोई व्यक्ति, स्थान, या वस्तु - और फिर उस विषय का एक मॉडल बनाएं। इस पाठ में वर्णित कुछ तकनीकों और मॉडल-निर्माण रणनीतियों का उपयोग करें। एक उदाहरण एक लिविंग रूम की ओंटोलॉजी बनाना होगा जिसमें फर्नीचर, लाइट्स, आदि शामिल हैं। लिविंग रूम रसोई से कैसे भिन्न है? बाथरूम से? आप कैसे जानते हैं कि यह एक लिविंग रूम है और डाइनिंग रूम नहीं? अपनी ओंटोलॉजी बनाने के लिए [Protégé](https://protege.stanford.edu/) का उपयोग करें। +ज्ञान आधार बनाना किसी विषय के तथ्यों का प्रतिनिधित्व करने वाले मॉडल को वर्गीकृत करने के बारे में है। एक विषय चुनें - जैसे कोई व्यक्ति, स्थान, या वस्तु - और फिर उस विषय का एक मॉडल बनाएं। इस पाठ में वर्णित कुछ तकनीकों और मॉडल-निर्माण रणनीतियों का उपयोग करें। एक उदाहरण हो सकता है कि आप एक लिविंग रूम की ऑंटोलॉजी बनाएं जिसमें फर्नीचर, लाइट्स आदि शामिल हों। लिविंग रूम रसोई से कैसे अलग है? बाथरूम से? आपको कैसे पता चलता है कि यह लिविंग रूम है और डाइनिंग रूम नहीं? अपनी ऑंटोलॉजी बनाने के लिए [Protégé](https://protege.stanford.edu/) का उपयोग करें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md index 4622afc5..e477f080 100644 --- a/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,52 +1,60 @@ -# न्यूरल नेटवर्क्स का परिचय: पर्सेप्ट्रॉन + +# न्यूरल नेटवर्क का परिचय: परसेप्ट्रॉन ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -आधुनिक न्यूरल नेटवर्क के समान कुछ लागू करने के पहले प्रयासों में से एक फ्रैंक रोसेनब्लाट द्वारा 1957 में कॉर्नेल एरोनॉटिकल लैबोरेटरी से किया गया था। यह "मार्क-1" नामक एक हार्डवेयर कार्यान्वयन था, जिसे त्रिकोण, वर्ग और वृत्त जैसे प्राथमिक ज्यामितीय आकृतियों को पहचानने के लिए डिज़ाइन किया गया था। +आधुनिक न्यूरल नेटवर्क जैसा कुछ बनाने का पहला प्रयास 1957 में कॉर्नेल एरोनॉटिकल लैबोरेटरी के फ्रैंक रोसेनब्लाट द्वारा किया गया था। यह एक हार्डवेयर इम्प्लीमेंटेशन था जिसे "मार्क-1" कहा गया, और इसे त्रिभुज, वर्ग और वृत्त जैसे आदिम ज्यामितीय आकृतियों को पहचानने के लिए डिज़ाइन किया गया था। | | | |--------------|-----------| -|फ्रैंक रोसेनब्लाट | मार्क 1 पर्सेप्ट्रॉन| +|Frank Rosenblatt | The Mark 1 Perceptron| > चित्र [विकिपीडिया से](https://en.wikipedia.org/wiki/Perceptron) -एक इनपुट छवि को 20x20 फोटोसेल एरे द्वारा दर्शाया गया था, इसलिए न्यूरल नेटवर्क में 400 इनपुट और एक बाइनरी आउटपुट था। एक साधारण नेटवर्क में एक न्यूरॉन होता है, जिसे **थ्रेशोल्ड लॉजिक यूनिट** भी कहा जाता है। न्यूरल नेटवर्क के वेट्स पोटेंशियोमीटर की तरह कार्य करते थे, जिन्हें प्रशिक्षण चरण के दौरान मैन्युअल रूप से समायोजित करने की आवश्यकता होती थी। +इनपुट इमेज को 20x20 फोटोसेल ऐरे द्वारा दर्शाया गया था, इसलिए न्यूरल नेटवर्क में 400 इनपुट और एक बाइनरी आउटपुट था। एक साधारण नेटवर्क में एक न्यूरॉन होता था, जिसे **थ्रेशोल्ड लॉजिक यूनिट** भी कहा जाता है। न्यूरल नेटवर्क के वेट्स पोटेंशियोमीटर की तरह काम करते थे, जिन्हें प्रशिक्षण चरण के दौरान मैन्युअल रूप से समायोजित करना पड़ता था। > ✅ पोटेंशियोमीटर एक उपकरण है जो उपयोगकर्ता को सर्किट की प्रतिरोध को समायोजित करने की अनुमति देता है। -> न्यू यॉर्क टाइम्स ने उस समय पर्सेप्ट्रॉन के बारे में लिखा: *एक इलेक्ट्रॉनिक कंप्यूटर का भ्रूण जिसे [नौसेना] को उम्मीद है कि वह चल सकेगा, बोल सकेगा, देख सकेगा, लिख सकेगा, अपने आप को पुन: उत्पन्न कर सकेगा और अपने अस्तित्व के प्रति जागरूक होगा।* +> न्यूयॉर्क टाइम्स ने उस समय परसेप्ट्रॉन के बारे में लिखा: *एक इलेक्ट्रॉनिक कंप्यूटर का भ्रूण जिसे [नौसेना] उम्मीद करती है कि वह चल सकेगा, बात कर सकेगा, देख सकेगा, लिख सकेगा, खुद को पुन: उत्पन्न कर सकेगा और अपने अस्तित्व के प्रति जागरूक हो सकेगा।* -## पर्सेप्ट्रॉन मॉडल +## परसेप्ट्रॉन मॉडल -मान लीजिए कि हमारे मॉडल में N विशेषताएँ हैं, इस स्थिति में इनपुट वेक्टर का आकार N होगा। एक पर्सेप्ट्रॉन एक **बाइनरी क्लासिफिकेशन** मॉडल है, यानी यह इनपुट डेटा की दो श्रेणियों के बीच अंतर कर सकता है। हम मान लेंगे कि प्रत्येक इनपुट वेक्टर x के लिए हमारे पर्सेप्ट्रॉन का आउटपुट या तो +1 या -1 होगा, जो कि श्रेणी पर निर्भर करेगा। आउटपुट को निम्नलिखित सूत्र का उपयोग करके गणना की जाएगी: +मान लीजिए हमारे मॉडल में N फीचर्स हैं, इस स्थिति में इनपुट वेक्टर N आकार का एक वेक्टर होगा। परसेप्ट्रॉन एक **बाइनरी क्लासिफिकेशन** मॉडल है, यानी यह इनपुट डेटा के दो वर्गों के बीच अंतर कर सकता है। हम मानते हैं कि प्रत्येक इनपुट वेक्टर x के लिए हमारे परसेप्ट्रॉन का आउटपुट या तो +1 या -1 होगा, वर्ग के आधार पर। आउटपुट निम्नलिखित सूत्र का उपयोग करके गणना किया जाएगा: y(x) = f(wTx) -जहाँ f एक स्टेप सक्रियण फ़ंक्शन है +जहां f एक स्टेप एक्टिवेशन फंक्शन है - -## पर्सेप्ट्रॉन का प्रशिक्षण +## परसेप्ट्रॉन को प्रशिक्षित करना -एक पर्सेप्ट्रॉन को प्रशिक्षित करने के लिए हमें एक वेट्स वेक्टर w खोजने की आवश्यकता है जो अधिकांश मूल्यों को सही ढंग से वर्गीकृत करता है, यानी जो सबसे छोटा **त्रुटि** देता है। यह त्रुटि E को निम्नलिखित तरीके से **पर्सेप्ट्रॉन मानदंड** द्वारा परिभाषित किया गया है: +परसेप्ट्रॉन को प्रशिक्षित करने के लिए हमें एक वेट्स वेक्टर w ढूंढना होगा जो अधिकांश मानों को सही तरीके से वर्गीकृत करे, यानी सबसे छोटा **त्रुटि** उत्पन्न करे। यह त्रुटि E को **परसेप्ट्रॉन क्राइटेरिया** द्वारा निम्नलिखित तरीके से परिभाषित किया गया है: E(w) = -∑wTxiti -जहाँ: +जहां: -* योग उन प्रशिक्षण डेटा बिंदुओं i पर लिया जाता है जो गलत वर्गीकरण का परिणाम देते हैं +* योग उन प्रशिक्षण डेटा पॉइंट्स i पर लिया जाता है जो गलत वर्गीकरण का परिणाम देते हैं * xi इनपुट डेटा है, और ti नकारात्मक और सकारात्मक उदाहरणों के लिए क्रमशः -1 या +1 है। -इस मानदंड को वेट्स w के एक फ़ंक्शन के रूप में माना जाता है, और हमें इसे न्यूनतम करना है। अक्सर, एक विधि जिसे **ग्रेडिएंट डिसेंट** कहा जाता है, का उपयोग किया जाता है, जिसमें हम कुछ प्रारंभिक वेट्स w(0) के साथ शुरू करते हैं, और फिर प्रत्येक चरण में वेट्स को निम्नलिखित सूत्र के अनुसार अपडेट करते हैं: +इस मानदंड को वेट्स w के एक फंक्शन के रूप में माना जाता है, और हमें इसे न्यूनतम करना होता है। अक्सर, एक विधि जिसे **ग्रेडिएंट डिसेंट** कहा जाता है, उपयोग की जाती है, जिसमें हम कुछ प्रारंभिक वेट्स w(0) से शुरू करते हैं, और फिर प्रत्येक चरण में वेट्स को निम्नलिखित सूत्र के अनुसार अपडेट करते हैं: w(t+1) = w(t) - η∇E(w) -यहाँ η को **सीखने की दर** कहा जाता है, और ∇E(w) E का **ग्रेडिएंट** दर्शाता है। जब हम ग्रेडिएंट की गणना करते हैं, तो हमें मिलता है +यहां η को **लर्निंग रेट** कहा जाता है, और ∇E(w) E का **ग्रेडिएंट** दर्शाता है। ग्रेडिएंट की गणना करने के बाद, हमें मिलता है: w(t+1) = w(t) + ∑ηxiti -पायथन में एल्गोरिदम इस तरह दिखता है: +Python में एल्गोरिदम इस प्रकार दिखता है: ```python def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): @@ -70,26 +78,26 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): ## निष्कर्ष -इस पाठ में, आपने पर्सेप्ट्रॉन के बारे में सीखा, जो एक बाइनरी क्लासिफिकेशन मॉडल है, और इसे वेट्स वेक्टर का उपयोग करके कैसे प्रशिक्षित किया जाए। +इस पाठ में, आपने परसेप्ट्रॉन के बारे में सीखा, जो एक बाइनरी क्लासिफिकेशन मॉडल है, और इसे वेट्स वेक्टर का उपयोग करके कैसे प्रशिक्षित किया जाए। ## 🚀 चुनौती -यदि आप अपना खुद का पर्सेप्ट्रॉन बनाने की कोशिश करना चाहते हैं, तो [Microsoft Learn पर इस प्रयोगशाला](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) को आज़माएँ जो [Azure ML डिज़ाइनर](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) का उपयोग करती है। +यदि आप अपना खुद का परसेप्ट्रॉन बनाना चाहते हैं, तो [Microsoft Learn पर इस लैब](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) को आज़माएं, जो [Azure ML डिज़ाइनर](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) का उपयोग करता है। ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -यह देखने के लिए कि हम पर्सेप्ट्रॉन का उपयोग खिलौने की समस्या के साथ-साथ वास्तविक जीवन की समस्याओं को हल करने के लिए कैसे कर सकते हैं, और सीखना जारी रखने के लिए - [पर्सेप्ट्रॉन](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) नोटबुक पर जाएँ। +यह देखने के लिए कि हम परसेप्ट्रॉन का उपयोग खिलौना समस्या और वास्तविक जीवन की समस्याओं को हल करने के लिए कैसे कर सकते हैं, और सीखना जारी रखने के लिए - [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) नोटबुक पर जाएं। -यहाँ पर्सेप्ट्रॉन के बारे में एक दिलचस्प [लेख](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) भी है। +यहां परसेप्ट्रॉन के बारे में एक दिलचस्प [लेख](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) भी है। ## [असाइनमेंट](lab/README.md) -इस पाठ में, हमने बाइनरी क्लासिफिकेशन कार्य के लिए एक पर्सेप्ट्रॉन लागू किया है, और हमने इसे दो हस्तलिखित अंकों के बीच वर्गीकृत करने के लिए उपयोग किया है। इस प्रयोगशाला में, आप पूरी तरह से अंक वर्गीकरण की समस्या को हल करने के लिए कहा गया है, यानी यह निर्धारित करें कि कौन सा अंक एक दिए गए चित्र के लिए सबसे अधिक संभावित है। +इस पाठ में, हमने बाइनरी क्लासिफिकेशन कार्य के लिए एक परसेप्ट्रॉन को लागू किया है, और हमने इसका उपयोग दो हस्तलिखित अंकों के बीच वर्गीकरण करने के लिए किया है। इस लैब में, आपसे पूरी तरह से अंक वर्गीकरण की समस्या को हल करने के लिए कहा गया है, यानी यह निर्धारित करना कि दिए गए चित्र के लिए कौन सा अंक सबसे अधिक संभावना है। * [निर्देश](lab/README.md) * [नोटबुक](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index 474139ad..71b76be8 100644 --- a/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ -# मल्टी-क्लास वर्गीकरण पर्सेप्ट्रॉन के साथ + +# मल्टी-क्लास वर्गीकरण परसेप्ट्रॉन के साथ -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -इस पाठ में MNIST हस्तलिखित अंकों के लिए द्विआधारी वर्गीकरण के लिए विकसित किए गए कोड का उपयोग करते हुए, एक मल्टी-क्लास वर्गीकृत बनाएँ जो किसी भी अंक को पहचान सके। प्रशिक्षण और परीक्षण डेटासेट पर वर्गीकरण सटीकता की गणना करें, और भ्रम मैट्रिक्स प्रिंट करें। +इस पाठ में हमने MNIST हस्तलिखित अंकों के द्विआधारी वर्गीकरण के लिए जो कोड विकसित किया है, उसका उपयोग करके एक मल्टी-क्लास वर्गीकृत बनाएं जो किसी भी अंक को पहचान सके। ट्रेन और टेस्ट डेटासेट पर वर्गीकरण सटीकता की गणना करें, और भ्रम मैट्रिक्स को प्रिंट करें। ## संकेत -1. प्रत्येक अंक के लिए, "यह अंक बनाम सभी अन्य अंकों" के द्विआधारी वर्गीकरण के लिए एक डेटासेट बनाएं। -2. द्विआधारी वर्गीकरण के लिए 10 विभिन्न पर्सेप्ट्रॉन का प्रशिक्षण करें (प्रत्येक अंक के लिए एक)। -3. एक फ़ंक्शन परिभाषित करें जो एक इनपुट अंक को वर्गीकृत करेगा। +1. प्रत्येक अंक के लिए, "इस अंक बनाम अन्य सभी अंकों" के द्विआधारी वर्गीकरण के लिए एक डेटासेट बनाएं। +1. द्विआधारी वर्गीकरण के लिए 10 अलग-अलग परसेप्ट्रॉन प्रशिक्षित करें (प्रत्येक अंक के लिए एक)। +1. एक फ़ंक्शन परिभाषित करें जो इनपुट अंक को वर्गीकृत करेगा। -> **संकेत**: यदि हम सभी 10 पर्सेप्ट्रॉन के भार को एक मैट्रिक्स में मिलाते हैं, तो हमें एक मैट्रिक्स गुणन के माध्यम से इनपुट अंकों पर सभी 10 पर्सेप्ट्रॉन को लागू करने में सक्षम होना चाहिए। सबसे संभावित अंक को तब केवल `argmax` ऑपरेशन को आउटपुट पर लागू करके पाया जा सकता है। +> **संकेत**: यदि हम सभी 10 परसेप्ट्रॉन के वज़न को एक मैट्रिक्स में जोड़ते हैं, तो हम इनपुट अंकों पर एक मैट्रिक्स गुणा द्वारा सभी 10 परसेप्ट्रॉन लागू कर सकते हैं। सबसे संभावित अंक को `argmax` ऑपरेशन लागू करके आउटपुट से पाया जा सकता है। -## नोटबुक प्रारंभ करना +## प्रारंभिक नोटबुक -[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) खोलकर प्रयोगशाला शुरू करें। +लैब शुरू करने के लिए [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) खोलें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md index 38a55404..40627092 100644 --- a/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# न्यूरल नेटवर्क का परिचय: मल्टी-लेयर्ड पर्सेप्ट्रॉन + +# न्यूरल नेटवर्क का परिचय: मल्टी-लेयर्ड परसेप्ट्रॉन -पिछले अनुभाग में, आपने सबसे सरल न्यूरल नेटवर्क मॉडल - एक-लेयर्ड पर्सेप्ट्रॉन, एक रैखिक दो-श्रेणी वर्गीकरण मॉडल के बारे में सीखा। +पिछले भाग में, आपने सबसे सरल न्यूरल नेटवर्क मॉडल - एक-लेयर परसेप्ट्रॉन, एक रेखीय दो-वर्ग वर्गीकरण मॉडल के बारे में सीखा। -इस अनुभाग में, हम इस मॉडल को एक अधिक लचीले ढांचे में विस्तारित करेंगे, जो हमें निम्नलिखित करने की अनुमति देगा: +इस भाग में हम इस मॉडल को एक अधिक लचीले ढांचे में विस्तारित करेंगे, जिससे हम: -* दो-श्रेणी के अलावा **मल्टी-क्लास वर्गीकरण** करना -* वर्गीकरण के अलावा **रेग्रेशन समस्याओं** को हल करना -* उन श्रेणियों को अलग करना जो रैखिक रूप से अलग नहीं की जा सकतीं +* **मल्टी-क्लास वर्गीकरण** कर सकें, दो-वर्ग के अलावा +* **रिग्रेशन समस्याओं** को हल कर सकें, वर्गीकरण के अलावा +* उन वर्गों को अलग कर सकें जो रेखीय रूप से अलग नहीं हैं -हम अपने स्वयं के मॉड्यूलर ढांचे को भी विकसित करेंगे जो हमें विभिन्न न्यूरल नेटवर्क आर्किटेक्चर बनाने की अनुमति देगा। +हम Python में अपना खुद का मॉड्यूलर ढांचा भी विकसित करेंगे, जो हमें विभिन्न न्यूरल नेटवर्क आर्किटेक्चर बनाने की अनुमति देगा। ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) ## मशीन लर्निंग का औपचारिककरण -आइए मशीन लर्निंग की समस्या को औपचारिक रूप से शुरू करते हैं। मान लीजिए कि हमारे पास एक प्रशिक्षण डेटा सेट **X** है जिसमें लेबल **Y** हैं, और हमें एक मॉडल *f* बनाना है जो सबसे सटीक भविष्यवाणियाँ करेगा। भविष्यवाणियों की गुणवत्ता को **लॉस फ़ंक्शन** ℒ द्वारा मापा जाता है। निम्नलिखित लॉस फ़ंक्शन अक्सर उपयोग किए जाते हैं: +चलो मशीन लर्निंग समस्या को औपचारिक रूप से समझते हैं। मान लीजिए हमारे पास एक प्रशिक्षण डेटासेट **X** है, जिसमें लेबल्स **Y** हैं, और हमें एक मॉडल *f* बनाना है जो सबसे सटीक भविष्यवाणियां करेगा। भविष्यवाणियों की गुणवत्ता को **लॉस फंक्शन** ℒ द्वारा मापा जाता है। निम्नलिखित लॉस फंक्शन्स अक्सर उपयोग किए जाते हैं: -* रिग्रेशन समस्या के लिए, जब हमें एक संख्या की भविष्यवाणी करनी होती है, हम **संपूर्ण त्रुटि** ∑i|f(x(i))-y(i)|, या **वर्ग त्रुटि** ∑i(f(x(i))-y(i))2 का उपयोग कर सकते हैं। -* वर्गीकरण के लिए, हम **0-1 लॉस** (जो मूल रूप से मॉडल की **सटीकता** के समान है) का उपयोग करते हैं, या **लॉजिस्टिक लॉस**। +* रिग्रेशन समस्या के लिए, जब हमें एक संख्या की भविष्यवाणी करनी होती है, हम **एब्सोल्यूट एरर** ∑i|f(x(i))-y(i)|, या **स्क्वेयर्ड एरर** ∑i(f(x(i))-y(i))2 का उपयोग कर सकते हैं। +* वर्गीकरण के लिए, हम **0-1 लॉस** (जो मूल रूप से मॉडल की **सटीकता** के समान है), या **लॉजिस्टिक लॉस** का उपयोग करते हैं। -एक-लेवल पर्सेप्ट्रॉन के लिए, फ़ंक्शन *f* को एक रैखिक फ़ंक्शन *f(x)=wx+b* के रूप में परिभाषित किया गया था (यहाँ *w* वेट मैट्रिक्स है, *x* इनपुट विशेषताओं का वेक्टर है, और *b* बायस वेक्टर है)। विभिन्न न्यूरल नेटवर्क आर्किटेक्चर के लिए, यह फ़ंक्शन अधिक जटिल रूप ले सकता है। +एक-स्तरीय परसेप्ट्रॉन के लिए, फंक्शन *f* को एक रेखीय फंक्शन *f(x)=wx+b* के रूप में परिभाषित किया गया था (यहां *w* वेट मैट्रिक्स है, *x* इनपुट फीचर्स का वेक्टर है, और *b* बायस वेक्टर है)। विभिन्न न्यूरल नेटवर्क आर्किटेक्चर के लिए, यह फंक्शन अधिक जटिल रूप ले सकता है। -> वर्गीकरण के मामले में, अक्सर यह वांछनीय होता है कि संबंधित श्रेणियों की संभावनाएँ नेटवर्क आउटपुट के रूप में प्राप्त हों। मनमाने संख्याओं को संभावनाओं में परिवर्तित करने के लिए (जैसे कि आउटपुट को सामान्य करने के लिए), हम अक्सर **सॉफ्टमैक्स** फ़ंक्शन σ का उपयोग करते हैं, और फ़ंक्शन *f* बन जाता है *f(x)=σ(wx+b)* +> वर्गीकरण के मामले में, अक्सर यह वांछनीय होता है कि नेटवर्क आउटपुट के रूप में संबंधित वर्गों की संभावनाएं प्राप्त हों। किसी भी संख्या को संभावनाओं में बदलने (जैसे आउटपुट को सामान्यीकृत करने के लिए), हम अक्सर **सॉफ्टमैक्स** फंक्शन σ का उपयोग करते हैं, और फंक्शन *f* बन जाता है *f(x)=σ(wx+b)*। -उपर्युक्त *f* की परिभाषा में, *w* और *b* को **पैरामीटर** θ=⟨*w,b*⟩ कहा जाता है। दिए गए डेटा सेट ⟨**X**,**Y**⟩, हम पूरे डेटा सेट पर कुल त्रुटि को पैरामीटर θ के एक फ़ंक्शन के रूप में गणना कर सकते हैं। +ऊपर *f* की परिभाषा में, *w* और *b* को **पैरामीटर्स** θ=⟨*w,b*⟩ कहा जाता है। दिए गए डेटासेट ⟨**X**,**Y**⟩ के आधार पर, हम पूरे डेटासेट पर समग्र त्रुटि को पैरामीटर्स θ के एक फंक्शन के रूप में गणना कर सकते हैं। -> ✅ **न्यूरल नेटवर्क प्रशिक्षण का लक्ष्य त्रुटि को कम करना है पैरामीटर θ को बदलकर** +> ✅ **न्यूरल नेटवर्क प्रशिक्षण का लक्ष्य त्रुटि को पैरामीटर्स θ को बदलकर कम करना है।** ## ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन -फ़ंक्शन ऑप्टिमाइजेशन की एक प्रसिद्ध विधि **ग्रेडिएंट डिसेंट** कहलाती है। विचार यह है कि हम लॉस फ़ंक्शन का व्युत्पन्न (बहु-आयामी मामले में **ग्रेडिएंट** कहा जाता है) पैरामीटर के संदर्भ में निकाल सकते हैं, और त्रुटि को कम करने के लिए पैरामीटर को इस तरह से बदल सकते हैं। इसे निम्नलिखित के रूप में औपचारिक किया जा सकता है: +फंक्शन ऑप्टिमाइजेशन का एक प्रसिद्ध तरीका **ग्रेडिएंट डिसेंट** है। इसका विचार यह है कि हम लॉस फंक्शन का पैरामीटर्स के संदर्भ में डेरिवेटिव (बहु-आयामी मामले में **ग्रेडिएंट** कहा जाता है) की गणना कर सकते हैं, और पैरामीटर्स को इस तरह बदल सकते हैं कि त्रुटि कम हो जाए। इसे निम्नलिखित रूप में औपचारिक किया जा सकता है: -* कुछ यादृच्छिक मानों w(0), b(0) द्वारा पैरामीटर को प्रारंभ करें -* निम्नलिखित चरण को कई बार दोहराएँ: +* पैरामीटर्स को कुछ रैंडम मानों w(0), b(0) से प्रारंभ करें। +* निम्नलिखित चरण को कई बार दोहराएं: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -प्रशिक्षण के दौरान, अनुकूलन चरणों को पूरे डेटा सेट पर विचार करते हुए गणना की जानी चाहिए (याद रखें कि लॉस को सभी प्रशिक्षण नमूनों के माध्यम से एक योग के रूप में गणना की जाती है)। हालाँकि, वास्तविक जीवन में हम डेटा सेट के छोटे हिस्से को **मिनिबैचेस** कहते हैं, और डेटा के एक उपसमुच्चय के आधार पर ग्रेडिएंट की गणना करते हैं। चूंकि उपसमुच्चय हर बार यादृच्छिक रूप से लिया जाता है, इस विधि को **स्टोकास्टिक ग्रेडिएंट डिसेंट** (SGD) कहा जाता है। +प्रशिक्षण के दौरान, ऑप्टिमाइजेशन चरण पूरे डेटासेट को ध्यान में रखते हुए गणना किए जाने चाहिए (याद रखें कि लॉस सभी प्रशिक्षण नमूनों के माध्यम से योग के रूप में गणना की जाती है)। हालांकि, वास्तविक जीवन में हम डेटासेट के छोटे हिस्सों को **मिनीबैचेस** कहा जाता है, और डेटा के एक उपसमुच्चय के आधार पर ग्रेडिएंट्स की गणना करते हैं। क्योंकि उपसमुच्चय हर बार रैंडम रूप से लिया जाता है, इस विधि को **स्टोकेस्टिक ग्रेडिएंट डिसेंट** (SGD) कहा जाता है। -## मल्टी-लेयर्ड पर्सेप्ट्रॉन और बैकप्रोपगेशन +## मल्टी-लेयर्ड परसेप्ट्रॉन और बैकप्रोपेगेशन -एक-लेयर नेटवर्क, जैसा कि हमने ऊपर देखा, रैखिक रूप से अलग की जाने वाली श्रेणियों का वर्गीकरण करने में सक्षम है। एक समृद्ध मॉडल बनाने के लिए, हम नेटवर्क की कई परतों को जोड़ सकते हैं। गणितीय रूप से इसका अर्थ होगा कि फ़ंक्शन *f* अधिक जटिल रूप लेगा, और इसे कई चरणों में गणना की जाएगी: +एक-लेयर नेटवर्क, जैसा कि हमने ऊपर देखा, रेखीय रूप से अलग वर्गों को वर्गीकृत करने में सक्षम है। एक अधिक समृद्ध मॉडल बनाने के लिए, हम नेटवर्क की कई लेयर्स को जोड़ सकते हैं। गणितीय रूप से इसका मतलब होगा कि फंक्शन *f* का एक अधिक जटिल रूप होगा, और इसे कई चरणों में गणना किया जाएगा: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) -यहाँ, α एक **गैर-रेखीय सक्रियण फ़ंक्शन** है, σ एक सॉफ्टमैक्स फ़ंक्शन है, और पैरामीटर θ=<*w1,b1,w2,b2* हैं। +यहां, α एक **नॉन-लाइनियर एक्टिवेशन फंक्शन** है, σ एक सॉफ्टमैक्स फंक्शन है, और पैरामीटर्स θ=<*w1,b1,w2,b2*> हैं। -ग्रेडिएंट डिसेंट एल्गोरिदम वही रहेगा, लेकिन ग्रेडिएंट की गणना करना अधिक कठिन होगा। श्रृंखला विभेदन नियम के अनुसार, हम व्युत्पन्न को इस प्रकार निकाल सकते हैं: +ग्रेडिएंट डिसेंट एल्गोरिदम वही रहेगा, लेकिन ग्रेडिएंट्स की गणना करना अधिक कठिन होगा। चेन डिफरेंशिएशन नियम को ध्यान में रखते हुए, हम डेरिवेटिव्स की गणना कर सकते हैं: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ श्रृंखला विभेदन नियम का उपयोग लॉस फ़ंक्शन के व्युत्पन्न को पैरामीटर के संदर्भ में निकालने के लिए किया जाता है। +> ✅ लॉस फंक्शन के पैरामीटर्स के संदर्भ में डेरिवेटिव्स की गणना करने के लिए चेन डिफरेंशिएशन नियम का उपयोग किया जाता है। -ध्यान दें कि इन सभी अभिव्यक्तियों का सबसे बायाँ भाग समान है, और इस प्रकार हम प्रभावी ढंग से लॉस फ़ंक्शन से शुरू करके और "पीछे" की ओर गणना करते हुए व्युत्पन्न की गणना कर सकते हैं। इस प्रकार मल्टी-लेयर्ड पर्सेप्ट्रॉन को प्रशिक्षित करने की विधि को **बैकप्रोपगेशन**, या 'बैकप्रोप' कहा जाता है। +ध्यान दें कि इन सभी अभिव्यक्तियों का बायां भाग समान है, और इस प्रकार हम प्रभावी रूप से डेरिवेटिव्स की गणना लॉस फंक्शन से शुरू करके और "पीछे की ओर" कम्प्यूटेशनल ग्राफ के माध्यम से कर सकते हैं। इस प्रकार मल्टी-लेयर्ड परसेप्ट्रॉन को प्रशिक्षित करने की विधि को **बैकप्रोपेगेशन**, या 'बैकप्रॉप' कहा जाता है। -compute graph +कम्प्यूट ग्राफ -> TODO: चित्र संदर्भ +> TODO: इमेज स्रोत -> ✅ हम अपने नोटबुक उदाहरण में बैकप्रोप के बारे में बहुत अधिक विस्तार से कवर करेंगे। +> ✅ हम अपने नोटबुक उदाहरण में बैकप्रॉप को और अधिक विस्तार से कवर करेंगे। ## निष्कर्ष -इस पाठ में, हमने अपनी स्वयं की न्यूरल नेटवर्क लाइब्रेरी बनाई है, और हमने इसका उपयोग एक सरल दो-आयामी वर्गीकरण कार्य के लिए किया है। +इस पाठ में, हमने अपना खुद का न्यूरल नेटवर्क लाइब्रेरी बनाया है, और इसे एक सरल दो-आयामी वर्गीकरण कार्य के लिए उपयोग किया है। ## 🚀 चुनौती -संबंधित नोटबुक में, आप मल्टी-लेयर्ड पर्सेप्ट्रॉन बनाने और प्रशिक्षित करने के लिए अपना ढांचा लागू करेंगे। आप विस्तार से देख सकेंगे कि आधुनिक न्यूरल नेटवर्क कैसे कार्य करते हैं। +साथ वाले नोटबुक में, आप मल्टी-लेयर्ड परसेप्ट्रॉन बनाने और प्रशिक्षित करने के लिए अपना खुद का ढांचा लागू करेंगे। आप विस्तार से देख पाएंगे कि आधुनिक न्यूरल नेटवर्क कैसे काम करते हैं। -[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) नोटबुक पर जाएँ और इसके माध्यम से काम करें। +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) नोटबुक पर जाएं और इसे पूरा करें। ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -बैकप्रोपगेशन एआई और एमएल में उपयोग की जाने वाली एक सामान्य एल्गोरिदम है, जिसे [अधिक विस्तार से](https://wikipedia.org/wiki/Backpropagation) अध्ययन करने के लायक है। +बैकप्रोपेगेशन एक सामान्य एल्गोरिदम है जो AI और ML में उपयोग किया जाता है, इसे [अधिक विस्तार से](https://wikipedia.org/wiki/Backpropagation) अध्ययन करना उचित है। ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, आपसे इस पाठ में बनाए गए ढांचे का उपयोग करके MNIST हाथ से लिखे गए अंक वर्गीकरण को हल करने के लिए कहा गया है। +इस लैब में, आपसे अपेक्षा की जाती है कि आप इस पाठ में बनाए गए ढांचे का उपयोग करके MNIST हस्तलिखित अंकों के वर्गीकरण को हल करें। * [निर्देश](lab/README.md) * [नोटबुक](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index 7212e9f3..6f0e3317 100644 --- a/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# हमारे अपने फ्रेमवर्क के साथ MNIST वर्गीकरण + +# MNIST वर्गीकरण हमारे अपने फ्रेमवर्क के साथ -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -1-, 2- और 3-परत वाले पर्सेप्ट्रॉन का उपयोग करके MNIST हस्तलिखित अंक वर्गीकरण समस्या का समाधान करें। उस न्यूरल नेटवर्क फ्रेमवर्क का उपयोग करें जिसे हमने पाठ में विकसित किया है। +1-, 2- और 3-लेयर वाले परसेप्ट्रॉन का उपयोग करके MNIST हस्तलिखित अंकों के वर्गीकरण की समस्या को हल करें। उस न्यूरल नेटवर्क फ्रेमवर्क का उपयोग करें जिसे हमने पाठ में विकसित किया है। -## नोटबुक खोलना +## प्रारंभिक नोटबुक -[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) खोलकर प्रयोगशाला शुरू करें। +लैब शुरू करने के लिए [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) खोलें। ## प्रश्न -इस प्रयोगशाला के परिणामस्वरूप, निम्नलिखित प्रश्नों के उत्तर देने का प्रयास करें: +इस लैब के परिणामस्वरूप, निम्नलिखित प्रश्नों के उत्तर देने का प्रयास करें: -- क्या अंतःपरत सक्रियण कार्य नेटवर्क के प्रदर्शन को प्रभावित करता है? -- क्या हमें इस कार्य के लिए 2- या 3-परत वाला नेटवर्क की आवश्यकता है? -- क्या आपको नेटवर्क को प्रशिक्षित करते समय कोई समस्या का सामना करना पड़ा? विशेष रूप से जब परतों की संख्या बढ़ी। -- प्रशिक्षण के दौरान नेटवर्क के वजन कैसे व्यवहार करते हैं? आप संबंध को समझने के लिए वजन के अधिकतम निरपेक्ष मान को युग के खिलाफ प्लॉट कर सकते हैं। +- क्या इंटर-लेयर एक्टिवेशन फंक्शन नेटवर्क के प्रदर्शन को प्रभावित करता है? +- क्या इस कार्य के लिए 2- या 3-लेयर वाला नेटवर्क आवश्यक है? +- क्या आपने नेटवर्क को प्रशिक्षित करते समय किसी समस्या का सामना किया? विशेष रूप से जब लेयर की संख्या बढ़ी। +- प्रशिक्षण के दौरान नेटवर्क के वेट्स कैसे व्यवहार करते हैं? आप वेट्स के अधिकतम मान (max abs value) को एपोक के साथ प्लॉट करके इस संबंध को समझ सकते हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md index 1bbe85e8..16d113fb 100644 --- a/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,105 +1,114 @@ -# न्यूरल नेटवर्क फ्रेमवर्क + +# न्यूरल नेटवर्क फ्रेमवर्क्स जैसा कि हमने पहले सीखा है, न्यूरल नेटवर्क को प्रभावी ढंग से प्रशिक्षित करने के लिए हमें दो चीजें करनी होती हैं: -* टेन्सरों पर कार्य करना, जैसे गुणा करना, जोड़ना, और कुछ कार्यों की गणना करना जैसे सिग्मॉइड या सॉफ़्टमैक्स -* सभी अभिव्यक्तियों के ग्रेडिएंट की गणना करना, ताकि ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन किया जा सके +* टेन्सर्स पर ऑपरेट करना, जैसे कि उन्हें गुणा करना, जोड़ना, और कुछ फंक्शन्स जैसे सिग्मॉइड या सॉफ्टमैक्स को गणना करना। +* सभी एक्सप्रेशन्स के ग्रेडिएंट्स की गणना करना, ताकि ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन किया जा सके। -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -जबकि `numpy` लाइब्रेरी पहले भाग को कर सकती है, हमें ग्रेडिएंट की गणना करने के लिए कुछ तंत्र की आवश्यकता है। [हमारे फ्रेमवर्क](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) में, जिसे हमने पिछले अनुभाग में विकसित किया था, हमें `backward` विधि के अंदर सभी व्युत्पत्ति कार्यों को मैन्युअल रूप से प्रोग्राम करना पड़ा, जो बैकप्रोपेगेशन करता है। आदर्श रूप से, एक फ्रेमवर्क हमें *किसी भी अभिव्यक्ति* के ग्रेडिएंट की गणना करने का अवसर देना चाहिए जिसे हम परिभाषित कर सकते हैं। +हालांकि `numpy` लाइब्रेरी पहला काम कर सकती है, हमें ग्रेडिएंट्स की गणना के लिए एक मैकेनिज्म की आवश्यकता होती है। [हमारे फ्रेमवर्क](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) में, जिसे हमने पिछले सेक्शन में विकसित किया था, हमें `backward` मेथड के अंदर सभी डेरिवेटिव फंक्शन्स को मैन्युअली प्रोग्राम करना पड़ा, जो बैकप्रोपेगेशन करता है। आदर्श रूप से, एक फ्रेमवर्क हमें *किसी भी एक्सप्रेशन* के ग्रेडिएंट्स की गणना करने का अवसर देना चाहिए जिसे हम परिभाषित कर सकते हैं। -एक और महत्वपूर्ण बात यह है कि GPU या किसी अन्य विशेष कंप्यूट इकाइयों पर गणनाएँ करना संभव हो, जैसे कि [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit)। गहरी न्यूरल नेटवर्क प्रशिक्षण के लिए *कई* गणनाओं की आवश्यकता होती है, और GPU पर इन गणनाओं को समानांतरित करना बहुत महत्वपूर्ण है। +एक और महत्वपूर्ण बात यह है कि GPU या किसी अन्य विशेष कंप्यूट यूनिट्स, जैसे [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) पर गणनाएं करने में सक्षम होना। डीप न्यूरल नेटवर्क ट्रेनिंग में *बहुत सारी* गणनाएं होती हैं, और GPU पर इन गणनाओं को समानांतर रूप से करने में सक्षम होना बहुत महत्वपूर्ण है। -> ✅ 'समानांतरित' शब्द का अर्थ है गणनाओं को कई उपकरणों पर वितरित करना। +> ✅ 'समानांतर' का मतलब है कि गणनाओं को कई डिवाइसों पर वितरित करना। -वर्तमान में, दो सबसे लोकप्रिय न्यूरल फ्रेमवर्क हैं: [TensorFlow](http://TensorFlow.org) और [PyTorch](https://pytorch.org/)। दोनों CPU और GPU पर टेन्सरों के साथ कार्य करने के लिए एक निम्न-स्तरीय API प्रदान करते हैं। निम्न-स्तरीय API के ऊपर, एक उच्च-स्तरीय API भी है, जिसे क्रमशः [Keras](https://keras.io/) और [PyTorch Lightning](https://pytorchlightning.ai/) कहा जाता है। +वर्तमान में, दो सबसे लोकप्रिय न्यूरल फ्रेमवर्क हैं: [TensorFlow](http://TensorFlow.org) और [PyTorch](https://pytorch.org/)। दोनों CPU और GPU पर टेन्सर्स के साथ ऑपरेट करने के लिए लो-लेवल API प्रदान करते हैं। लो-लेवल API के ऊपर, एक हाई-लेवल API भी है, जिसे क्रमशः [Keras](https://keras.io/) और [PyTorch Lightning](https://pytorchlightning.ai/) कहा जाता है। -निम्न-स्तरीय API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +लो-लेवल API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) --------------|-------------------------------------|-------------------------------- -उच्च-स्तरीय API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +हाई-लेवल API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**निम्न-स्तरीय APIs** दोनों फ्रेमवर्क में आपको **गणनात्मक ग्राफ** बनाने की अनुमति देते हैं। यह ग्राफ यह परिभाषित करता है कि दिए गए इनपुट पैरामीटर के साथ आउटपुट (आमतौर पर हानि कार्य) की गणना कैसे की जाए, और यदि GPU उपलब्ध है तो इसे GPU पर गणना के लिए धकेला जा सकता है। इस गणनात्मक ग्राफ को विभाजित करने और ग्रेडिएंट की गणना करने के लिए कार्य होते हैं, जिन्हें फिर मॉडल पैरामीटर के अनुकूलन के लिए उपयोग किया जा सकता है। +**लो-लेवल APIs** दोनों फ्रेमवर्क्स में आपको **कम्प्यूटेशनल ग्राफ्स** बनाने की अनुमति देते हैं। यह ग्राफ परिभाषित करता है कि दिए गए इनपुट पैरामीटर्स के साथ आउटपुट (आमतौर पर लॉस फंक्शन) कैसे गणना की जाए, और इसे GPU पर गणना के लिए पुश किया जा सकता है, यदि यह उपलब्ध है। इस कम्प्यूटेशनल ग्राफ को डिफरेंशिएट करने और ग्रेडिएंट्स की गणना करने के लिए फंक्शन्स होते हैं, जिन्हें फिर मॉडल पैरामीटर्स को ऑप्टिमाइज़ करने के लिए उपयोग किया जा सकता है। -**उच्च-स्तरीय APIs** वास्तव में न्यूरल नेटवर्क को **परतों के अनुक्रम** के रूप में मानते हैं, और अधिकांश न्यूरल नेटवर्क को बनाना बहुत आसान बनाते हैं। मॉडल को प्रशिक्षित करने के लिए आमतौर पर डेटा तैयार करने की आवश्यकता होती है और फिर `fit` फ़ंक्शन को कार्य करने के लिए कॉल करना होता है। +**हाई-लेवल APIs** न्यूरल नेटवर्क्स को **लेयर्स के अनुक्रम** के रूप में मानते हैं, और अधिकांश न्यूरल नेटवर्क्स को बनाना बहुत आसान बना देते हैं। मॉडल को प्रशिक्षित करना आमतौर पर डेटा तैयार करने और फिर `fit` फंक्शन को कॉल करने की आवश्यकता होती है। -उच्च-स्तरीय API आपको बहुत जल्दी सामान्य न्यूरल नेटवर्क बनाने की अनुमति देती है बिना कई विवरणों की चिंता किए। साथ ही, निम्न-स्तरीय API प्रशिक्षण प्रक्रिया पर अधिक नियंत्रण प्रदान करती हैं, और इस प्रकार उनका उपयोग अनुसंधान में बहुत अधिक किया जाता है, जब आप नए न्यूरल नेटवर्क आर्किटेक्चर के साथ काम कर रहे होते हैं। +हाई-लेवल API आपको सामान्य न्यूरल नेटवर्क्स को बहुत जल्दी बनाने की अनुमति देता है, बिना बहुत सारे विवरणों की चिंता किए। वहीं, लो-लेवल API ट्रेनिंग प्रक्रिया पर अधिक नियंत्रण प्रदान करता है, और इसलिए इसे शोध में बहुत उपयोग किया जाता है, जब आप नए न्यूरल नेटवर्क आर्किटेक्चर के साथ काम कर रहे होते हैं। -यह भी महत्वपूर्ण है कि आप समझें कि आप दोनों APIs का एक साथ उपयोग कर सकते हैं, जैसे कि आप निम्न-स्तरीय API का उपयोग करके अपना खुद का नेटवर्क लेयर आर्किटेक्चर विकसित कर सकते हैं, और फिर इसे उच्च-स्तरीय API के साथ निर्मित और प्रशिक्षित बड़े नेटवर्क के अंदर उपयोग कर सकते हैं। या आप उच्च-स्तरीय API का उपयोग करके परतों के अनुक्रम के रूप में एक नेटवर्क परिभाषित कर सकते हैं, और फिर अपने स्वयं के निम्न-स्तरीय प्रशिक्षण लूप का उपयोग करके अनुकूलन कर सकते हैं। दोनों APIs समान मूलभूत अवधारणाओं का उपयोग करती हैं, और इन्हें एक साथ काम करने के लिए डिज़ाइन किया गया है। +यह समझना भी महत्वपूर्ण है कि आप दोनों APIs को एक साथ उपयोग कर सकते हैं, जैसे कि आप लो-लेवल API का उपयोग करके अपना खुद का नेटवर्क लेयर आर्किटेक्चर विकसित कर सकते हैं, और फिर इसे बड़े नेटवर्क के अंदर उपयोग कर सकते हैं जिसे हाई-लेवल API के साथ बनाया और प्रशिक्षित किया गया हो। या आप हाई-लेवल API का उपयोग करके लेयर्स के अनुक्रम के रूप में नेटवर्क को परिभाषित कर सकते हैं, और फिर अपने खुद के लो-लेवल ट्रेनिंग लूप का उपयोग करके ऑप्टिमाइजेशन कर सकते हैं। दोनों APIs समान बुनियादी अवधारणाओं का उपयोग करते हैं, और उन्हें एक साथ अच्छी तरह से काम करने के लिए डिज़ाइन किया गया है। ## सीखना -इस पाठ्यक्रम में, हम PyTorch और TensorFlow दोनों के लिए अधिकांश सामग्री प्रदान करते हैं। आप अपनी पसंद का फ्रेमवर्क चुन सकते हैं और केवल संबंधित नोटबुक के माध्यम से जा सकते हैं। यदि आप सुनिश्चित नहीं हैं कि कौन सा फ्रेमवर्क चुनें, तो **PyTorch बनाम TensorFlow** के बारे में इंटरनेट पर कुछ चर्चाएँ पढ़ें। आप बेहतर समझ के लिए दोनों फ्रेमवर्क पर भी नज़र डाल सकते हैं। +इस कोर्स में, हम अधिकांश सामग्री PyTorch और TensorFlow दोनों के लिए प्रदान करते हैं। आप अपना पसंदीदा फ्रेमवर्क चुन सकते हैं और केवल संबंधित नोटबुक्स के माध्यम से जा सकते हैं। यदि आप सुनिश्चित नहीं हैं कि कौन सा फ्रेमवर्क चुनना है, तो **PyTorch बनाम TensorFlow** पर इंटरनेट पर कुछ चर्चाएं पढ़ें। आप दोनों फ्रेमवर्क्स को देख सकते हैं ताकि बेहतर समझ प्राप्त हो सके। -जहाँ संभव हो, हम सरलता के लिए उच्च-स्तरीय APIs का उपयोग करेंगे। हालाँकि, हमें विश्वास है कि न्यूरल नेटवर्क के काम करने के तरीके को आधार से समझना महत्वपूर्ण है, इसलिए शुरुआत में हम निम्न-स्तरीय API और टेन्सरों के साथ काम करना शुरू करते हैं। हालाँकि, यदि आप जल्दी शुरू करना चाहते हैं और इन विवरणों को सीखने में बहुत अधिक समय नहीं बिताना चाहते हैं, तो आप उन्हें छोड़ सकते हैं और सीधे उच्च-स्तरीय API नोटबुक में जा सकते हैं। +जहां संभव हो, हम सादगी के लिए हाई-लेवल APIs का उपयोग करेंगे। हालांकि, हमें विश्वास है कि यह समझना महत्वपूर्ण है कि न्यूरल नेटवर्क्स जमीनी स्तर से कैसे काम करते हैं, इसलिए शुरुआत में हम लो-लेवल API और टेन्सर्स के साथ काम करना शुरू करते हैं। हालांकि, यदि आप जल्दी से आगे बढ़ना चाहते हैं और इन विवरणों को सीखने में अधिक समय नहीं बिताना चाहते हैं, तो आप उन्हें छोड़ सकते हैं और सीधे हाई-लेवल API नोटबुक्स में जा सकते हैं। -## ✍️ व्यायाम: फ्रेमवर्क +## ✍️ अभ्यास: फ्रेमवर्क्स -निम्नलिखित नोटबुक में अपने अध्ययन को जारी रखें: +अगले नोटबुक्स में अपनी सीख जारी रखें: -निम्न-स्तरीय API | [TensorFlow+Keras नोटबुक](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +लो-लेवल API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) --------------|-------------------------------------|-------------------------------- -उच्च-स्तरीय API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +हाई-लेवल API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -फ्रेमवर्क में महारत हासिल करने के बाद, आइए ओवरफिटिंग की धारणा का पुनरावलोकन करें। +फ्रेमवर्क्स में महारत हासिल करने के बाद, आइए ओवरफिटिंग की अवधारणा को दोहराएं। # ओवरफिटिंग ओवरफिटिंग मशीन लर्निंग में एक अत्यंत महत्वपूर्ण अवधारणा है, और इसे सही तरीके से समझना बहुत महत्वपूर्ण है! -5 बिंदुओं (जो कि नीचे दिए गए ग्राफ़ पर `x` द्वारा दर्शाए गए हैं) का अनुमान लगाने की समस्या पर विचार करें: +नीचे दिए गए ग्राफ्स में 5 डॉट्स (`x` द्वारा दर्शाए गए) को लगभग सही तरीके से अनुमानित करने की समस्या पर विचार करें: -![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hi.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hi.jpg) +![linear](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![overfit](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) -------------------------|-------------------------- -**रेखीय मॉडल, 2 पैरामीटर** | **गैर-रेखीय मॉडल, 7 पैरामीटर** -प्रशिक्षण त्रुटि = 5.3 | प्रशिक्षण त्रुटि = 0 -मान्यता त्रुटि = 5.1 | मान्यता त्रुटि = 20 +**लिनियर मॉडल, 2 पैरामीटर्स** | **नॉन-लिनियर मॉडल, 7 पैरामीटर्स** +ट्रेनिंग एरर = 5.3 | ट्रेनिंग एरर = 0 +वैलिडेशन एरर = 5.1 | वैलिडेशन एरर = 20 -* बाईं ओर, हम एक अच्छी सीधी रेखा का अनुमान देखते हैं। चूंकि पैरामीटर की संख्या उपयुक्त है, मॉडल बिंदुओं के वितरण के पीछे के विचार को सही तरीके से समझता है। -* दाईं ओर, मॉडल बहुत शक्तिशाली है। चूंकि हमारे पास केवल 5 बिंदु हैं और मॉडल के पास 7 पैरामीटर हैं, यह इस तरह से समायोजित हो सकता है कि सभी बिंदुओं के माध्यम से गुजरता है, जिससे प्रशिक्षण त्रुटि 0 हो जाती है। हालाँकि, यह मॉडल को डेटा के पीछे के सही पैटर्न को समझने से रोकता है, इसलिए मान्यता त्रुटि बहुत उच्च होती है। +* बाईं ओर, हम एक अच्छी सीधी रेखा का अनुमान देखते हैं। क्योंकि पैरामीटर्स की संख्या उपयुक्त है, मॉडल पॉइंट्स के वितरण के पीछे का विचार सही तरीके से समझता है। +* दाईं ओर, मॉडल बहुत शक्तिशाली है। क्योंकि हमारे पास केवल 5 पॉइंट्स हैं और मॉडल में 7 पैरामीटर्स हैं, यह इस तरह से समायोजित हो सकता है कि सभी पॉइंट्स से गुजर सके, जिससे ट्रेनिंग एरर 0 हो जाती है। हालांकि, यह मॉडल को डेटा के पीछे सही पैटर्न को समझने से रोकता है, जिससे वैलिडेशन एरर बहुत अधिक हो जाती है। -मॉडल की समृद्धि (पैरामीटर की संख्या) और प्रशिक्षण नमूनों की संख्या के बीच सही संतुलन बनाना बहुत महत्वपूर्ण है। +मॉडल की समृद्धि (पैरामीटर्स की संख्या) और ट्रेनिंग सैंपल्स की संख्या के बीच सही संतुलन बनाना बहुत महत्वपूर्ण है। -## ओवरफिटिंग क्यों होती है +## ओवरफिटिंग क्यों होता है - * पर्याप्त प्रशिक्षण डेटा नहीं + * पर्याप्त ट्रेनिंग डेटा नहीं होना * बहुत शक्तिशाली मॉडल * इनपुट डेटा में बहुत अधिक शोर ## ओवरफिटिंग का पता कैसे लगाएं -जैसा कि आप ऊपर दिए गए ग्राफ से देख सकते हैं, ओवरफिटिंग को बहुत कम प्रशिक्षण त्रुटि और उच्च मान्यता त्रुटि द्वारा पहचाना जा सकता है। सामान्यतः प्रशिक्षण के दौरान हम देखेंगे कि प्रशिक्षण और मान्यता त्रुटियाँ दोनों कम होना शुरू होती हैं, और फिर किसी बिंदु पर मान्यता त्रुटि कम होना बंद कर सकती है और बढ़ने लग सकती है। यह ओवरफिटिंग का संकेत होगा, और यह संकेत है कि हमें शायद इस बिंदु पर प्रशिक्षण रोकना चाहिए (या कम से कम मॉडल का एक स्नैपशॉट लेना चाहिए)। +जैसा कि ऊपर दिए गए ग्राफ से देखा जा सकता है, ओवरफिटिंग का पता बहुत कम ट्रेनिंग एरर और बहुत अधिक वैलिडेशन एरर से लगाया जा सकता है। आमतौर पर ट्रेनिंग के दौरान हम देखते हैं कि ट्रेनिंग और वैलिडेशन एरर दोनों कम होने लगते हैं, और फिर किसी बिंदु पर वैलिडेशन एरर कम होना बंद कर सकता है और बढ़ने लग सकता है। यह ओवरफिटिंग का संकेत होगा, और यह संकेत होगा कि हमें शायद इस बिंदु पर ट्रेनिंग रोक देनी चाहिए (या कम से कम मॉडल का स्नैपशॉट लेना चाहिए)। -![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hi.png) +![overfitting](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) -## ओवरफिटिंग से कैसे बचें +## ओवरफिटिंग को कैसे रोकें -यदि आप देख सकते हैं कि ओवरफिटिंग हो रही है, तो आप निम्नलिखित में से एक कर सकते हैं: +यदि आप देख सकते हैं कि ओवरफिटिंग हो रही है, तो आप निम्नलिखित में से कुछ कर सकते हैं: - * प्रशिक्षण डेटा की मात्रा बढ़ाएँ - * मॉडल की जटिलता को कम करें - * कुछ [नियमितीकरण तकनीक](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) का उपयोग करें, जैसे [ड्रॉपआउट](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), जिसे हम बाद में विचार करेंगे। + * ट्रेनिंग डेटा की मात्रा बढ़ाएं + * मॉडल की जटिलता कम करें + * कुछ [रेग्युलराइज़ेशन तकनीक](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) का उपयोग करें, जैसे [ड्रॉपआउट](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), जिसे हम बाद में देखेंगे। -## ओवरफिटिंग और पूर्वाग्रह-भिन्नता व्यापार संतुलन +## ओवरफिटिंग और बायस-वेरिएंस ट्रेडऑफ -ओवरफिटिंग वास्तव में सांख्यिकी में एक अधिक सामान्य समस्या का मामला है जिसे [पूर्वाग्रह-भिन्नता व्यापार संतुलन](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) कहा जाता है। यदि हम अपने मॉडल में त्रुटियों के संभावित स्रोतों पर विचार करें, तो हम दो प्रकार की त्रुटियों को देख सकते हैं: +ओवरफिटिंग वास्तव में सांख्यिकी में एक अधिक सामान्य समस्या का मामला है जिसे [बायस-वेरिएंस ट्रेडऑफ](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) कहा जाता है। यदि हम अपने मॉडल में त्रुटि के संभावित स्रोतों पर विचार करें, तो हम दो प्रकार की त्रुटियां देख सकते हैं: -* **पूर्वाग्रह त्रुटियाँ** हमारे एल्गोरिदम द्वारा प्रशिक्षण डेटा के बीच संबंध को सही तरीके से कैप्चर न करने के कारण होती हैं। यह इस तथ्य के कारण हो सकता है कि हमारा मॉडल पर्याप्त शक्तिशाली नहीं है (**अंडरफिटिंग**)। -* **भिन्नता त्रुटियाँ**, जो मॉडल द्वारा इनपुट डेटा में शोर का अनुमान लगाने के कारण होती हैं, बजाय इसके कि अर्थपूर्ण संबंध (**ओवरफिटिंग**)। +* **बायस त्रुटियां** हमारे एल्गोरिदम द्वारा ट्रेनिंग डेटा के बीच संबंध को सही तरीके से कैप्चर करने में असमर्थता के कारण होती हैं। यह इस तथ्य से उत्पन्न हो सकता है कि हमारा मॉडल पर्याप्त शक्तिशाली नहीं है (**अंडरफिटिंग**)। +* **वेरिएंस त्रुटियां**, जो इनपुट डेटा में शोर को सार्थक संबंध के बजाय मॉडल द्वारा अनुमानित करने के कारण होती हैं (**ओवरफिटिंग**)। -प्रशिक्षण के दौरान, पूर्वाग्रह त्रुटि कम होती है (जैसे ही हमारा मॉडल डेटा का अनुमान लगाना सीखता है), और भिन्नता त्रुटि बढ़ती है। ओवरफिटिंग से बचने के लिए प्रशिक्षण को रोकना महत्वपूर्ण है - या तो मैन्युअल रूप से (जब हम ओवरफिटिंग का पता लगाते हैं) या स्वचालित रूप से (नियमितीकरण द्वारा)। +ट्रेनिंग के दौरान, बायस त्रुटि कम होती है (जैसे-जैसे हमारा मॉडल डेटा को अनुमानित करना सीखता है), और वेरिएंस त्रुटि बढ़ती है। ओवरफिटिंग को रोकने के लिए ट्रेनिंग को रोकना महत्वपूर्ण है - या तो मैन्युअल रूप से (जब हम ओवरफिटिंग का पता लगाते हैं) या स्वचालित रूप से (रेग्युलराइज़ेशन को शामिल करके)। ## निष्कर्ष -इस पाठ में, आपने TensorFlow और PyTorch के लिए विभिन्न APIs के बीच के अंतर के बारे में सीखा। इसके अलावा, आपने एक बहुत महत्वपूर्ण विषय, ओवरफिटिंग के बारे में सीखा। +इस पाठ में, आपने दो सबसे लोकप्रिय AI फ्रेमवर्क्स, TensorFlow और PyTorch के विभिन्न APIs के बीच के अंतर के बारे में सीखा। इसके अलावा, आपने एक बहुत महत्वपूर्ण विषय, ओवरफिटिंग के बारे में सीखा। ## 🚀 चुनौती -संबंधित नोटबुक में, आपको नीचे 'कार्य' मिलेंगे; नोटबुक के माध्यम से काम करें और कार्यों को पूरा करें। +संबंधित नोटबुक्स में, आपको नीचे 'टास्क्स' मिलेंगे; नोटबुक्स के माध्यम से काम करें और टास्क्स को पूरा करें। -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन निम्नलिखित विषयों पर कुछ शोध करें: @@ -109,15 +118,15 @@ अपने आप से निम्नलिखित प्रश्न पूछें: -- TensorFlow और PyTorch के बीच क्या अंतर है? -- ओवरफिटिंग और अंडरफिटिंग के बीच क्या अंतर है? +- TensorFlow और PyTorch में क्या अंतर है? +- ओवरफिटिंग और अंडरफिटिंग में क्या अंतर है? ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, आपसे PyTorch या TensorFlow का उपयोग करके एकल- और बहु-परत पूर्ण रूप से जुड़े नेटवर्क का उपयोग करके दो वर्गीकरण समस्याओं को हल करने के लिए कहा गया है। +इस लैब में, आपसे PyTorch या TensorFlow का उपयोग करके सिंगल- और मल्टी-लेयर्ड फुली-कनेक्टेड नेटवर्क्स के साथ दो वर्गीकरण समस्याओं को हल करने के लिए कहा गया है। * [निर्देश](lab/README.md) * [नोटबुक](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 83f24a50..44c9c309 100644 --- a/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ + # PyTorch/TensorFlow के साथ वर्गीकरण -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -PyTorch या TensorFlow का उपयोग करते हुए एकल और बहु-परत पूर्ण-संबद्ध नेटवर्क का उपयोग करके दो वर्गीकरण समस्याओं को हल करें: +PyTorch या TensorFlow का उपयोग करके दो वर्गीकरण समस्याओं को हल करें, जिनमें सिंगल और मल्टी-लेयर्ड फुली-कनेक्टेड नेटवर्क शामिल हैं: -1. **[Iris वर्गीकरण](https://en.wikipedia.org/wiki/Iris_flower_data_set)** समस्या - यह एक उदाहरण है जिसमें तालिका प्रारूप में इनपुट डेटा होता है, जिसे पारंपरिक मशीन लर्निंग द्वारा संभाला जा सकता है। आपका लक्ष्य 4 संख्यात्मक पैरामीटर के आधार पर आइरिस को 3 श्रेणियों में वर्गीकृत करना होगा। -2. **MNIST** हस्तलिखित अंक वर्गीकरण समस्या, जिसे हमने पहले देखा है। +1. **[Iris वर्गीकरण](https://en.wikipedia.org/wiki/Iris_flower_data_set)** समस्या - यह एक ऐसा उदाहरण है जिसमें टेबलर इनपुट डेटा होता है, जिसे पारंपरिक मशीन लर्निंग द्वारा संभाला जा सकता है। आपका लक्ष्य 4 संख्यात्मक पैरामीटर के आधार पर इरिस को 3 वर्गों में वर्गीकृत करना होगा। +1. **MNIST** हस्तलिखित अंकों की वर्गीकरण समस्या, जिसे हमने पहले देखा है। -सर्वश्रेष्ठ सटीकता प्राप्त करने के लिए विभिन्न नेटवर्क आर्किटेक्चर का प्रयास करें। +सर्वोत्तम सटीकता प्राप्त करने के लिए विभिन्न नेटवर्क आर्किटेक्चर का प्रयास करें। -## नोटबुक शुरू करना +## प्रारंभिक नोटबुक -[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) खोलकर प्रयोगशाला शुरू करें। +लैब शुरू करने के लिए [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) खोलें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/3-NeuralNetworks/README.md b/translations/hi/lessons/3-NeuralNetworks/README.md index 4a5c42fd..345234d4 100644 --- a/translations/hi/lessons/3-NeuralNetworks/README.md +++ b/translations/hi/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ -# न्यूरल नेटवर्क का परिचय + +# न्यूरल नेटवर्क्स का परिचय -![न्यूरल नेटवर्क के परिचय की सामग्री का सारांश](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hi.png) +![न्यूरल नेटवर्क्स के परिचय की सामग्री का सारांश एक डूडल में](../../../../lessons/sketchnotes/ai-neuralnetworks.png) -जैसा कि हमने परिचय में चर्चा की, बुद्धिमत्ता प्राप्त करने के तरीकों में से एक है **कंप्यूटर मॉडल** या **कृत्रिम मस्तिष्क** को प्रशिक्षित करना। 20वीं सदी के मध्य से, शोधकर्ताओं ने विभिन्न गणितीय मॉडलों का प्रयास किया, जब तक कि हाल के वर्षों में यह दिशा अत्यधिक सफल साबित नहीं हुई। मस्तिष्क के ऐसे गणितीय मॉडल को **न्यूरल नेटवर्क** कहा जाता है। +जैसा कि हमने परिचय में चर्चा की थी, बुद्धिमत्ता प्राप्त करने के तरीकों में से एक है एक **कंप्यूटर मॉडल** या एक **कृत्रिम मस्तिष्क** को प्रशिक्षित करना। 20वीं सदी के मध्य से, शोधकर्ताओं ने विभिन्न गणितीय मॉडलों को आज़माया, और हाल के वर्षों में यह दिशा अत्यधिक सफल साबित हुई। मस्तिष्क के इन गणितीय मॉडलों को **न्यूरल नेटवर्क्स** कहा जाता है। -> कभी-कभी न्यूरल नेटवर्क को *कृत्रिम न्यूरल नेटवर्क* (Artificial Neural Networks), ANNs कहा जाता है, ताकि यह संकेत मिल सके कि हम मॉडल के बारे में बात कर रहे हैं, न कि न्यूरॉन्स के वास्तविक नेटवर्क के बारे में। +> कभी-कभी न्यूरल नेटवर्क्स को *कृत्रिम न्यूरल नेटवर्क्स* या ANNs कहा जाता है, ताकि यह स्पष्ट हो सके कि हम मॉडलों की बात कर रहे हैं, न कि असली न्यूरॉन्स के नेटवर्क की। ## मशीन लर्निंग -न्यूरल नेटवर्क एक बड़े क्षेत्र का हिस्सा हैं जिसे **मशीन लर्निंग** कहा जाता है, जिसका लक्ष्य डेटा का उपयोग करके कंप्यूटर मॉडल को प्रशिक्षित करना है जो समस्याओं को हल कर सकें। मशीन लर्निंग कृत्रिम बुद्धिमत्ता का एक बड़ा हिस्सा बनाता है, हालांकि, हम इस पाठ्यक्रम में पारंपरिक मशीन लर्निंग को कवर नहीं करते हैं। +न्यूरल नेटवर्क्स एक बड़े क्षेत्र का हिस्सा हैं जिसे **मशीन लर्निंग** कहा जाता है, जिसका उद्देश्य डेटा का उपयोग करके कंप्यूटर मॉडलों को प्रशिक्षित करना है जो समस्याओं को हल कर सकें। मशीन लर्निंग कृत्रिम बुद्धिमत्ता का एक बड़ा हिस्सा है, हालांकि, हम इस पाठ्यक्रम में पारंपरिक मशीन लर्निंग को कवर नहीं करेंगे। -> अधिक जानकारी के लिए हमारे अलग **[मशीन लर्निंग फॉर बिगिनर्स](http://github.com/microsoft/ml-for-beginners)** पाठ्यक्रम पर जाएं। +> पारंपरिक मशीन लर्निंग के बारे में अधिक जानने के लिए हमारे अलग **[मशीन लर्निंग फॉर बिगिनर्स](http://github.com/microsoft/ml-for-beginners)** पाठ्यक्रम पर जाएं। -मशीन लर्निंग में, हम मानते हैं कि हमारे पास कुछ उदाहरणों का डेटासेट **X** है, और संबंधित आउटपुट मान **Y** हैं। उदाहरण अक्सर N-आयामी वेक्टर होते हैं जो **विशेषताओं** से बने होते हैं, और आउटपुट को **लेबल** कहा जाता है। +मशीन लर्निंग में, हम मानते हैं कि हमारे पास कुछ उदाहरणों का डेटासेट **X** और उनके संबंधित आउटपुट मान **Y** हैं। उदाहरण अक्सर N-आयामी वेक्टर होते हैं जो **फीचर्स** से मिलकर बने होते हैं, और आउटपुट को **लेबल्स** कहा जाता है। हम मशीन लर्निंग की दो सबसे सामान्य समस्याओं पर विचार करेंगे: -* **वर्गीकरण**, जहां हमें एक इनपुट वस्तु को दो या अधिक वर्गों में वर्गीकृत करना होता है। -* **प्रतिगमन**, जहां हमें प्रत्येक इनपुट नमूने के लिए एक संख्यात्मक संख्या की भविष्यवाणी करनी होती है। +* **वर्गीकरण (Classification)**, जिसमें हमें इनपुट ऑब्जेक्ट को दो या अधिक वर्गों में वर्गीकृत करना होता है। +* **प्रतिगमन (Regression)**, जिसमें हमें प्रत्येक इनपुट सैंपल के लिए एक संख्यात्मक मान की भविष्यवाणी करनी होती है। -> जब इनपुट और आउटपुट को टेन्सर के रूप में दर्शाया जाता है, तो इनपुट डेटासेट M×N आकार के मैट्रिक्स होता है, जहां M नमूनों की संख्या है और N विशेषताओं की संख्या है। आउटपुट लेबल Y M आकार का वेक्टर होता है। +> जब इनपुट और आउटपुट को टेन्सर्स के रूप में दर्शाया जाता है, तो इनपुट डेटासेट M×N आकार का एक मैट्रिक्स होता है, जहां M सैंपल्स की संख्या है और N फीचर्स की संख्या है। आउटपुट लेबल्स Y M आकार का एक वेक्टर होता है। -इस पाठ्यक्रम में, हम केवल न्यूरल नेटवर्क मॉडल पर ध्यान केंद्रित करेंगे। +इस पाठ्यक्रम में, हम केवल न्यूरल नेटवर्क मॉडलों पर ध्यान केंद्रित करेंगे। -## न्यूरॉन का मॉडल +## न्यूरॉन का एक मॉडल -जीवविज्ञान से हमें पता है कि हमारा मस्तिष्क न्यूरल कोशिकाओं से बना है, जिनमें से प्रत्येक के पास कई "इनपुट" (एक्सन) और एक आउटपुट (डेंड्राइट) होता है। एक्सन और डेंड्राइट विद्युत संकेतों का संचरण कर सकते हैं, और एक्सन और डेंड्राइट के बीच के संबंध विभिन्न स्तरों की चालकता प्रदर्शित कर सकते हैं (जो न्यूरोमेडिएटर्स द्वारा नियंत्रित होते हैं)। +जीवविज्ञान से हम जानते हैं कि हमारा मस्तिष्क न्यूरल कोशिकाओं से बना है, जिनमें से प्रत्येक के पास कई "इनपुट" (एक्सॉन्स) और एक आउटपुट (डेंड्राइट) होता है। एक्सॉन्स और डेंड्राइट्स विद्युत संकेतों का संचालन कर सकते हैं, और एक्सॉन्स और डेंड्राइट्स के बीच के कनेक्शन विभिन्न स्तरों की चालकता प्रदर्शित कर सकते हैं (जो न्यूरोमीडिएटर्स द्वारा नियंत्रित होती है)। -![न्यूरॉन का मॉडल](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hi.jpg) | ![न्यूरॉन का मॉडल](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hi.png) +![न्यूरॉन का मॉडल](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![न्यूरॉन का मॉडल](../../../../lessons/3-NeuralNetworks/images/artneuron.png) ----|---- -वास्तविक न्यूरॉन *([छवि](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) विकिपीडिया से)* | कृत्रिम न्यूरॉन *(लेखक द्वारा छवि)* +वास्तविक न्यूरॉन *([छवि](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) विकिपीडिया से)* | कृत्रिम न्यूरॉन *(लेखक द्वारा बनाई गई छवि)* -इस प्रकार, न्यूरॉन का सबसे सरल गणितीय मॉडल कई इनपुट X1, ..., XN और एक आउटपुट Y, और W1, ..., WN का एक सेट होता है। एक आउटपुट इस प्रकार गणना की जाती है: +इस प्रकार, न्यूरॉन का सबसे सरल गणितीय मॉडल कई इनपुट्स X1, ..., XN और एक आउटपुट Y, और वज़नों की एक श्रृंखला W1, ..., WN को शामिल करता है। आउटपुट की गणना इस प्रकार की जाती है: Y = f\left(\sum_{i=1}^N X_iW_i\right) -जहां f कुछ गैर-रेखीय **सक्रियण फ़ंक्शन** है। +जहां f एक गैर-रेखीय **सक्रियण फ़ंक्शन** है। -> न्यूरॉन के प्रारंभिक मॉडलों का वर्णन क्लासिकल पेपर [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) में वॉरेन मैककुलोक और वॉल्टर पिट्स द्वारा 1943 में किया गया था। डोनाल्ड हेब्ब ने अपनी पुस्तक "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" में प्रस्तावित किया कि उन नेटवर्क को कैसे प्रशिक्षित किया जा सकता है। +> न्यूरॉन के प्रारंभिक मॉडलों का वर्णन 1943 में वॉरेन मैककुलॉक और वॉल्टर पिट्स द्वारा लिखे गए क्लासिकल पेपर [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) में किया गया था। डोनाल्ड हेब ने अपनी पुस्तक "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" में इन नेटवर्क्स को प्रशिक्षित करने के तरीके का प्रस्ताव दिया। -## इस अनुभाग में +## इस खंड में -इस अनुभाग में हम निम्नलिखित के बारे में सीखेंगे: -* [परसेप्ट्रोन](03-Perceptron/README.md), दो-क्लास वर्गीकरण के लिए सबसे प्रारंभिक न्यूरल नेटवर्क मॉडल में से एक -* [मल्टी-लेयर्ड नेटवर्क](04-OwnFramework/README.md) के साथ एक संबंधित नोटबुक [हमारा अपना ढांचा कैसे बनाएं](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [न्यूरल नेटवर्क ढांचे](05-Frameworks/README.md), इन नोटबुक के साथ: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) और [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +इस खंड में हम निम्नलिखित के बारे में जानेंगे: +* [परसेप्ट्रॉन](03-Perceptron/README.md), दो-वर्ग वर्गीकरण के लिए सबसे प्रारंभिक न्यूरल नेटवर्क मॉडलों में से एक +* [मल्टी-लेयर्ड नेटवर्क्स](04-OwnFramework/README.md) और एक संबंधित नोटबुक [अपना खुद का फ्रेमवर्क कैसे बनाएं](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [न्यूरल नेटवर्क फ्रेमवर्क्स](05-Frameworks/README.md), इन नोटबुक्स के साथ: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) और [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) * [ओवरफिटिंग](../../../../lessons/3-NeuralNetworks/05-Frameworks) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md index 6e23db39..86a283f5 100644 --- a/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# कंप्यूटर दृष्टि का परिचय + +# कंप्यूटर विज़न का परिचय -[कंप्यूटर दृष्टि](https://wikipedia.org/wiki/Computer_vision) एक ऐसा क्षेत्र है जिसका उद्देश्य कंप्यूटर को डिजिटल छवियों की उच्च-स्तरीय समझ प्राप्त करने में सक्षम बनाना है। यह एक व्यापक परिभाषा है, क्योंकि *समझना* कई अलग-अलग चीजों का मतलब हो सकता है, जिसमें एक चित्र में एक वस्तु को ढूंढना (**वस्तु पहचान**), यह समझना कि क्या हो रहा है (**घटना पहचान**), चित्र का पाठ में वर्णन करना, या 3D में दृश्य का पुनर्निर्माण करना शामिल है। मानव छवियों से संबंधित विशेष कार्य भी हैं: उम्र और भावना का अनुमान, चेहरे की पहचान और पहचान, और 3D मुद्रा का अनुमान, कुछ नाम रखने के लिए। +[कंप्यूटर विज़न](https://wikipedia.org/wiki/Computer_vision) एक ऐसा क्षेत्र है जिसका उद्देश्य कंप्यूटर को डिजिटल छवियों की उच्च-स्तरीय समझ प्रदान करना है। यह एक व्यापक परिभाषा है, क्योंकि *समझना* कई चीजों का मतलब हो सकता है, जैसे किसी तस्वीर में वस्तु ढूंढना (**वस्तु पहचान**), यह समझना कि क्या हो रहा है (**घटना पहचान**), किसी तस्वीर का पाठ में वर्णन करना, या 3D में दृश्य को पुनर्निर्मित करना। मानव छवियों से संबंधित विशेष कार्य भी हैं: उम्र और भावना का अनुमान लगाना, चेहरा पहचान और पहचान, और 3D पोज़ का अनुमान लगाना, आदि। -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -कंप्यूटर दृष्टि के सबसे सरल कार्यों में से एक है **छवि वर्गीकरण**। +कंप्यूटर विज़न का सबसे सरल कार्यों में से एक है **छवि वर्गीकरण**। -कंप्यूटर दृष्टि को अक्सर एआई की एक शाखा माना जाता है। आजकल, अधिकांश कंप्यूटर दृष्टि कार्यों को न्यूरल नेटवर्क का उपयोग करके हल किया जाता है। इस अनुभाग में, हम कंप्यूटर दृष्टि के लिए उपयोग किए जाने वाले विशेष प्रकार के न्यूरल नेटवर्क, [संवहन न्यूरल नेटवर्क](../07-ConvNets/README.md) के बारे में और अधिक जानेंगे। +कंप्यूटर विज़न को अक्सर AI की एक शाखा माना जाता है। आजकल, कंप्यूटर विज़न के अधिकांश कार्य न्यूरल नेटवर्क का उपयोग करके हल किए जाते हैं। हम इस खंड में कंप्यूटर विज़न के लिए उपयोग किए जाने वाले विशेष प्रकार के न्यूरल नेटवर्क, [कन्वोल्यूशनल न्यूरल नेटवर्क्स](../07-ConvNets/README.md), के बारे में अधिक जानेंगे। -हालांकि, जब आप छवि को न्यूरल नेटवर्क में पास करते हैं, तो कई मामलों में छवि को बढ़ाने के लिए कुछ एल्गोरिदम तकनीकों का उपयोग करना समझदारी है। +हालांकि, छवि को न्यूरल नेटवर्क में भेजने से पहले, कई मामलों में छवि को बेहतर बनाने के लिए कुछ एल्गोरिदमिक तकनीकों का उपयोग करना समझदारी हो सकता है। -छवि प्रसंस्करण के लिए कई Python पुस्तकालय उपलब्ध हैं: +छवि प्रसंस्करण के लिए कई पायथन लाइब्रेरी उपलब्ध हैं: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** विभिन्न छवि प्रारूपों को पढ़ने/लिखने के लिए उपयोग किया जा सकता है। यह ffmpeg का भी समर्थन करता है, जो वीडियो फ़्रेमों को छवियों में परिवर्तित करने के लिए एक उपयोगी उपकरण है। -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (जिसे PIL के नाम से भी जाना जाता है) थोड़ा अधिक शक्तिशाली है, और इसमें कुछ छवि हेरफेर जैसे रूपांतरण, पैलेट समायोजन आदि का समर्थन भी है। -* **[OpenCV](https://opencv.org/)** एक शक्तिशाली छवि प्रसंस्करण पुस्तकालय है जो C++ में लिखा गया है, जो छवि प्रसंस्करण के लिए *de facto* मानक बन गया है। इसमें एक सुविधाजनक Python इंटरफ़ेस है। -* **[dlib](http://dlib.net/)** एक C++ पुस्तकालय है जो कई मशीन लर्निंग एल्गोरिदम को लागू करता है, जिसमें कुछ कंप्यूटर दृष्टि एल्गोरिदम भी शामिल हैं। इसमें एक Python इंटरफ़ेस भी है, और इसे चेहरे और चेहरे के लैंडमार्क पहचान जैसी चुनौतीपूर्ण कार्यों के लिए उपयोग किया जा सकता है। +* **[imageio](https://imageio.readthedocs.io/en/stable/)** विभिन्न छवि प्रारूपों को पढ़ने/लिखने के लिए उपयोग की जा सकती है। यह ffmpeg का भी समर्थन करती है, जो वीडियो फ्रेम को छवियों में बदलने के लिए एक उपयोगी उपकरण है। +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (जिसे PIL भी कहा जाता है) अधिक शक्तिशाली है और छवि में बदलाव जैसे मर्फिंग, पैलेट समायोजन आदि का समर्थन करती है। +* **[OpenCV](https://opencv.org/)** एक शक्तिशाली छवि प्रसंस्करण लाइब्रेरी है जो C++ में लिखी गई है और छवि प्रसंस्करण के लिए *डिफ़ॉल्ट मानक* बन गई है। इसका एक सुविधाजनक पायथन इंटरफ़ेस है। +* **[dlib](http://dlib.net/)** एक C++ लाइब्रेरी है जो कई मशीन लर्निंग एल्गोरिदम को लागू करती है, जिसमें कुछ कंप्यूटर विज़न एल्गोरिदम भी शामिल हैं। इसका पायथन इंटरफ़ेस भी है और इसे चेहरे और चेहरे के लैंडमार्क पहचान जैसे चुनौतीपूर्ण कार्यों के लिए उपयोग किया जा सकता है। ## OpenCV -[OpenCV](https://opencv.org/) को छवि प्रसंस्करण के लिए *de facto* मानक माना जाता है। इसमें बहुत सारे उपयोगी एल्गोरिदम शामिल हैं, जो C++ में लागू किए गए हैं। आप Python से भी OpenCV को कॉल कर सकते हैं। +[OpenCV](https://opencv.org/) को छवि प्रसंस्करण के लिए *डिफ़ॉल्ट मानक* माना जाता है। इसमें कई उपयोगी एल्गोरिदम शामिल हैं, जो C++ में लागू किए गए हैं। आप OpenCV को पायथन से भी कॉल कर सकते हैं। -OpenCV सीखने के लिए एक अच्छा स्थान है [यह Learn OpenCV कोर्स](https://learnopencv.com/getting-started-with-opencv/)। हमारे पाठ्यक्रम में, हमारा लक्ष्य OpenCV सीखना नहीं है, बल्कि आपको कुछ उदाहरण दिखाना है जब इसका उपयोग किया जा सकता है, और कैसे। +OpenCV सीखने के लिए एक अच्छा स्थान है [यह Learn OpenCV कोर्स](https://learnopencv.com/getting-started-with-opencv/)। हमारे पाठ्यक्रम में, हमारा उद्देश्य OpenCV को सीखना नहीं है, बल्कि यह दिखाना है कि इसे कब और कैसे उपयोग किया जा सकता है। ### छवियों को लोड करना -Python में छवियों को NumPy ऐरे के माध्यम से सुविधाजनक रूप से प्रस्तुत किया जा सकता है। उदाहरण के लिए, 320x200 पिक्सल के आकार की ग्रेस्केल छवियों को 200x320 ऐरे में संग्रहीत किया जाएगा, और समान आकार की रंगीन छवियों का आकार 200x320x3 होगा (3 रंग चैनलों के लिए)। एक छवि को लोड करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं: +पायथन में छवियों को आसानी से NumPy एरे के रूप में दर्शाया जा सकता है। उदाहरण के लिए, 320x200 पिक्सल की ग्रेस्केल छवियां 200x320 एरे में संग्रहीत की जाएंगी, और समान आयाम की रंगीन छवियों का आकार 200x320x3 होगा (3 रंग चैनलों के लिए)। छवि को लोड करने के लिए, आप निम्न कोड का उपयोग कर सकते हैं: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -परंपरागत रूप से, OpenCV रंगीन छवियों के लिए BGR (नीला-हरा-लाल) एनकोडिंग का उपयोग करता है, जबकि बाकी Python उपकरण अधिक पारंपरिक RGB (लाल-हरा-नीला) का उपयोग करते हैं। छवि को सही दिखने के लिए, आपको इसे RGB रंग स्थान में परिवर्तित करना होगा, या तो NumPy ऐरे में आयामों को बदलकर, या OpenCV फ़ंक्शन को कॉल करके: +पारंपरिक रूप से, OpenCV रंगीन छवियों के लिए BGR (ब्लू-ग्रीन-रेड) एन्कोडिंग का उपयोग करता है, जबकि पायथन के अन्य उपकरण अधिक पारंपरिक RGB (रेड-ग्रीन-ब्लू) का उपयोग करते हैं। छवि को सही दिखने के लिए, आपको इसे RGB रंग स्थान में बदलने की आवश्यकता होती है, या तो NumPy एरे में आयामों को स्वैप करके, या OpenCV फ़ंक्शन को कॉल करके: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -एक ही `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +`cvtColor` फ़ंक्शन का उपयोग अन्य रंग स्थान रूपांतरणों के लिए भी किया जा सकता है, जैसे कि छवि को ग्रेस्केल या HSV (ह्यू-सैचुरेशन-वैल्यू) रंग स्थान में बदलना। -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +आप OpenCV का उपयोग करके वीडियो को फ्रेम-दर-फ्रेम भी लोड कर सकते हैं - इसका एक उदाहरण [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) में दिया गया है। -### Image Processing +### छवि प्रसंस्करण -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +छवि को न्यूरल नेटवर्क में भेजने से पहले, आप कई पूर्व-प्रसंस्करण चरण लागू करना चाह सकते हैं। OpenCV कई चीजें कर सकता है, जिनमें शामिल हैं: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` फ़ंक्शन, जो अक्सर चमक या कंट्रास्ट को समायोजित करने के लिए पसंद किया जाता है। -* छवि पर विभिन्न [रूपांतरणों](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) को लागू करना: - - **[Affine transformations](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** उपयोगी हो सकते हैं यदि आपको छवि में घुमाव, आकार बदलने और झुकाव को संयोजित करने की आवश्यकता है और आपको छवि में तीन बिंदुओं के स्रोत और गंतव्य स्थान ज्ञात हैं। अफाइन रूपांतरण समानांतर रेखाओं को समानांतर रखते हैं। - - **[Perspective transformations](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** उपयोगी हो सकते हैं जब आप छवि में 4 बिंदुओं के स्रोत और गंतव्य स्थितियों को जानते हैं। उदाहरण के लिए, यदि आप किसी स्मार्टफोन कैमरे से किसी आयताकार दस्तावेज़ की तस्वीर लेते हैं और आप दस्तावेज़ की एक आयताकार छवि बनाना चाहते हैं। -* **[Optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** का उपयोग करके छवि के अंदर आंदोलन को समझना। +* `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` का उपयोग करके छवि का **आकार बदलना**। +* `im = cv2.medianBlur(im,3)` या `im = cv2.GaussianBlur(im, (3,3), 0)` का उपयोग करके छवि को **ब्लर करना**। +* छवि की **चमक और कंट्रास्ट** को बदलना NumPy एरे हेरफेर द्वारा किया जा सकता है, जैसा कि [इस Stackoverflow नोट](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) में वर्णित है। +* [थ्रेशोल्डिंग](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) का उपयोग `cv2.threshold`/`cv2.adaptiveThreshold` फ़ंक्शंस को कॉल करके किया जा सकता है, जो अक्सर चमक या कंट्रास्ट को समायोजित करने से बेहतर होता है। +* छवि पर विभिन्न [रूपांतरण](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) लागू करना: + - **[एफाइन रूपांतरण](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** उपयोगी हो सकते हैं यदि आपको छवि पर रोटेशन, आकार बदलने और तिरछापन को संयोजित करने की आवश्यकता हो और आप छवि में तीन बिंदुओं के स्रोत और गंतव्य स्थान जानते हों। एफाइन रूपांतरण समानांतर रेखाओं को समानांतर रखते हैं। + - **[परिप्रेक्ष्य रूपांतरण](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** उपयोगी हो सकते हैं जब आप छवि में 4 बिंदुओं के स्रोत और गंतव्य स्थान जानते हों। उदाहरण के लिए, यदि आप स्मार्टफोन कैमरे से किसी आयताकार दस्तावेज़ की तस्वीर किसी कोण से लेते हैं, और आप दस्तावेज़ की आयताकार छवि बनाना चाहते हैं। +* **[ऑप्टिकल फ्लो](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** का उपयोग करके छवि के अंदर की गति को समझना। -## कंप्यूटर दृष्टि के उपयोग के उदाहरण +## कंप्यूटर विज़न का उपयोग करने के उदाहरण -हमारे [OpenCV नोटबुक](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) में, हम कुछ उदाहरण देते हैं जब कंप्यूटर दृष्टि का उपयोग विशिष्ट कार्यों को करने के लिए किया जा सकता है: +हमारे [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) में, हमने कुछ उदाहरण दिए हैं कि कंप्यूटर विज़न का उपयोग विशिष्ट कार्यों को करने के लिए कैसे किया जा सकता है: -* **ब्रेल पुस्तक की एक तस्वीर को पूर्व-प्रसंस्कृत करना**। हम इस पर ध्यान केंद्रित करते हैं कि हम कैसे थ्रेशोल्डिंग, फीचर डिटेक्शन, परिप्रेक्ष्य रूपांतरण और NumPy हेरफेर का उपयोग करके व्यक्तिगत ब्रेल प्रतीकों को अलग कर सकते हैं ताकि उन्हें न्यूरल नेटवर्क द्वारा आगे वर्गीकृत किया जा सके। +* **ब्रेल पुस्तक की तस्वीर को पूर्व-प्रसंस्करण करना**। हम इस पर ध्यान केंद्रित करते हैं कि थ्रेशोल्डिंग, फीचर डिटेक्शन, परिप्रेक्ष्य रूपांतरण और NumPy हेरफेर का उपयोग करके व्यक्तिगत ब्रेल प्रतीकों को अलग कैसे किया जा सकता है ताकि उन्हें न्यूरल नेटवर्क द्वारा वर्गीकृत किया जा सके। -![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hi.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hi.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hi.png) +![ब्रेल छवि](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![ब्रेल छवि पूर्व-प्रसंस्कृत](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![ब्रेल प्रतीक](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) ----|-----|----- > छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से -* **फ्रेम अंतर का उपयोग करके वीडियो में गति का पता लगाना**। यदि कैमरा स्थिर है, तो कैमरा फीड से फ्रेम एक-दूसरे के समान होने चाहिए। चूंकि फ्रेमों का प्रतिनिधित्व ऐरे के रूप में किया जाता है, इसलिए दो लगातार फ्रेमों के लिए उन ऐरे को घटाकर हम पिक्सेल का अंतर प्राप्त करेंगे, जो स्थिर फ्रेम के लिए कम होना चाहिए, और छवि में महत्वपूर्ण गति होने पर अधिक हो जाएगा। +* **फ्रेम अंतर का उपयोग करके वीडियो में गति का पता लगाना**। यदि कैमरा स्थिर है, तो कैमरा फीड से फ्रेम एक-दूसरे के समान होने चाहिए। चूंकि फ्रेम एरे के रूप में दर्शाए जाते हैं, केवल दो लगातार फ्रेम के लिए उन एरे को घटाकर हम पिक्सल अंतर प्राप्त करेंगे, जो स्थिर फ्रेम के लिए कम होना चाहिए, और छवि में पर्याप्त गति होने पर अधिक हो जाएगा। -![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hi.png) +![वीडियो फ्रेम और फ्रेम अंतर की छवि](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) > छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से -* **ऑप्टिकल फ्लो का उपयोग करके गति का पता लगाना**। [ऑप्टिकल फ्लो](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) हमें यह समझने की अनुमति देता है कि वीडियो फ़्रेम पर व्यक्तिगत पिक्सेल कैसे चलते हैं। ऑप्टिकल फ्लो के दो प्रकार हैं: +* **ऑप्टिकल फ्लो का उपयोग करके गति का पता लगाना**। [ऑप्टिकल फ्लो](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) हमें यह समझने की अनुमति देता है कि वीडियो फ्रेम पर व्यक्तिगत पिक्सल कैसे चलते हैं। ऑप्टिकल फ्लो के दो प्रकार हैं: - - **Dense Optical Flow** उस वेक्टर फ़ील्ड की गणना करता है जो दिखाता है कि प्रत्येक पिक्सेल कहाँ जा रहा है - - **Sparse Optical Flow** छवि में कुछ विशिष्ट विशेषताओं (जैसे किनारों) को लेने और फ्रेम से फ्रेम उनकी गति बनाने पर आधारित है। + - **डेंस ऑप्टिकल फ्लो** वेक्टर फील्ड की गणना करता है जो दिखाता है कि प्रत्येक पिक्सल कहां जा रहा है। + - **स्पार्स ऑप्टिकल फ्लो** छवि में कुछ विशिष्ट विशेषताओं (जैसे किनारों) को लेता है, और फ्रेम से फ्रेम तक उनकी प्रक्षेपवक्र बनाता है। -![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hi.png) +![ऑप्टिकल फ्लो की छवि](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) > छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से -## ✍️ उदाहरण नोटबुक: OpenCV [OpenCV in Action का प्रयास करें](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ उदाहरण नोटबुक्स: OpenCV [OpenCV को एक्शन में आज़माएं](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -आइए OpenCV के साथ कुछ प्रयोग करें [OpenCV नोटबुक](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) की खोज करके +आइए [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) का पता लगाकर OpenCV के साथ कुछ प्रयोग करें। ## निष्कर्ष -कभी-कभी, गति पहचान या fingertip पहचान जैसी अपेक्षाकृत जटिल कार्यों को पूरी तरह से कंप्यूटर दृष्टि द्वारा हल किया जा सकता है। इसलिए, कंप्यूटर दृष्टि की बुनियादी तकनीकों को जानना और OpenCV जैसी पुस्तकालयों द्वारा क्या किया जा सकता है, बहुत सहायक है। +कभी-कभी, जैसे गति का पता लगाना या उंगलियों के सिरे का पता लगाना जैसे अपेक्षाकृत जटिल कार्य केवल कंप्यूटर विज़न द्वारा हल किए जा सकते हैं। इसलिए, कंप्यूटर विज़न की बुनियादी तकनीकों और OpenCV जैसी लाइब्रेरी क्या कर सकती हैं, यह जानना बहुत उपयोगी है। ## 🚀 चुनौती -[इस वीडियो](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) को देखें AI शो से, ताकि आप Cortic Tigers परियोजना के बारे में जान सकें और कैसे उन्होंने एक ब्लॉक-आधारित समाधान बनाया ताकि रोबोट के माध्यम से कंप्यूटर दृष्टि कार्यों का लोकतंत्रीकरण किया जा सके। इस क्षेत्र में नए शिक्षार्थियों को शामिल करने में मदद करने वाले अन्य परियोजनाओं पर कुछ शोध करें। +AI शो से [यह वीडियो](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) देखें ताकि Cortic Tigers प्रोजेक्ट और उन्होंने कैसे एक रोबोट के माध्यम से कंप्यूटर विज़न कार्यों को लोकतांत्रिक बनाने के लिए ब्लॉक-आधारित समाधान बनाया, इसके बारे में जानें। इस तरह के अन्य प्रोजेक्ट्स पर शोध करें जो नए शिक्षार्थियों को इस क्षेत्र में शामिल करने में मदद करते हैं। -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -ऑप्टिकल फ्लो के बारे में अधिक पढ़ें [इस शानदार ट्यूटोरियल में](https://learnopencv.com/optical-flow-in-opencv/)। +ऑप्टिकल फ्लो पर [इस शानदार ट्यूटोरियल](https://learnopencv.com/optical-flow-in-opencv/) में और पढ़ें। ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, आप सरल इशारों के साथ एक वीडियो लेंगे, और आपका लक्ष्य ऑप्टिकल फ्लो का उपयोग करके ऊपर/नीचे/बाएं/दाएं आंदोलनों को निकालना है। +इस लैब में, आप सरल इशारों के साथ एक वीडियो लेंगे, और आपका लक्ष्य ऑप्टिकल फ्लो का उपयोग करके ऊपर/नीचे/बाएं/दाएं आंदोलनों को निकालना होगा। -Palm Movement Frame +पाम मूवमेंट फ्रेम -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md index 94cd7268..7fb58efc 100644 --- a/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,15 +1,23 @@ -# ऑप्टिकल फ्लो का उपयोग करके गति का पता लगाना + +# ऑप्टिकल फ्लो का उपयोग करके मूवमेंट का पता लगाना [AI for Beginners Curriculum](https://aka.ms/ai-beginners) से लैब असाइनमेंट। ## कार्य -[इस वीडियो](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) पर विचार करें, जिसमें एक व्यक्ति की हथेली स्थिर पृष्ठभूमि पर बाईं/दाईं/ऊपर/नीचे चलती है। -आप डेटा पर अक्टूबर 2023 तक प्रशिक्षित हैं। +[इस वीडियो](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) पर विचार करें, जिसमें एक व्यक्ति का हाथ स्थिर पृष्ठभूमि पर बाएँ/दाएँ/ऊपर/नीचे की ओर चलता है। -**आपका लक्ष्य** यह होगा कि आप ऑप्टिकल फ्लो का उपयोग करके यह निर्धारित कर सकें कि वीडियो के कौन से भागों में ऊपर/नीचे/बाईं/दाईं गति है। +**आपका लक्ष्य** ऑप्टिकल फ्लो का उपयोग करके यह पता लगाना होगा कि वीडियो के कौन से हिस्से में ऊपर/नीचे/बाएँ/दाएँ की मूवमेंट है। -**स्ट्रेच लक्ष्य** वास्तव में त्वचा के रंग का उपयोग करके हथेली/उंगली की गति को ट्रैक करना होगा, जैसा कि [इस ब्लॉग पोस्ट](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) या [यहाँ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) वर्णित है। +**अतिरिक्त लक्ष्य** यह होगा कि आप वास्तव में त्वचा के रंग का उपयोग करके हाथ/उंगली की मूवमेंट को ट्रैक करें, जैसा कि [इस ब्लॉग पोस्ट](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) या [यहाँ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) में वर्णित है। ## प्रारंभिक नोटबुक @@ -17,7 +25,7 @@ ## निष्कर्ष -कभी-कभी, अपेक्षाकृत जटिल कार्य जैसे गति का पता लगाना या fingertip का पता लगाना पूरी तरह से कंप्यूटर दृष्टि द्वारा हल किया जा सकता है। इसलिए, यह जानना बहुत सहायक है कि OpenCV जैसी पुस्तकालयें क्या कर सकती हैं। +कभी-कभी, मूवमेंट डिटेक्शन या फिंगरटिप डिटेक्शन जैसे अपेक्षाकृत जटिल कार्य केवल कंप्यूटर विज़न के माध्यम से हल किए जा सकते हैं। इसलिए, यह जानना बहुत उपयोगी है कि OpenCV जैसी लाइब्रेरी क्या कर सकती हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index 44327e03..8f58403d 100644 --- a/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ + # प्रसिद्ध CNN आर्किटेक्चर ### VGG-16 -VGG-16 एक नेटवर्क है जिसने 2014 में ImageNet के शीर्ष-5 वर्गीकरण में 92.7% सटीकता प्राप्त की। इसका निम्नलिखित लेयर संरचना है: +VGG-16 एक नेटवर्क है जिसने 2014 में ImageNet टॉप-5 क्लासिफिकेशन में 92.7% सटीकता हासिल की। इसका लेयर स्ट्रक्चर इस प्रकार है: -![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hi.jpg) +![ImageNet Layers](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -जैसा कि आप देख सकते हैं, VGG एक पारंपरिक पिरामिड आर्किटेक्चर का पालन करता है, जो संकुचन-पूलिंग लेयर का एक अनुक्रम है। +जैसा कि आप देख सकते हैं, VGG एक पारंपरिक पिरामिड आर्किटेक्चर का अनुसरण करता है, जो कि कॉन्वोल्यूशन-पूलिंग लेयर्स का एक अनुक्रम है। -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg) +![ImageNet Pyramid](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) -> चित्र [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) से +> छवि [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) से ली गई है ### ResNet -ResNet एक मॉडल परिवार है जिसे Microsoft Research द्वारा 2015 में प्रस्तावित किया गया था। ResNet का मुख्य विचार **अवशिष्ट ब्लॉकों** का उपयोग करना है: +ResNet माइक्रोसॉफ्ट रिसर्च द्वारा 2015 में प्रस्तावित मॉडल्स का एक परिवार है। ResNet का मुख्य विचार **रेजिडुअल ब्लॉक्स** का उपयोग करना है: -> चित्र [इस पेपर](https://arxiv.org/pdf/1512.03385.pdf) से +> छवि [इस पेपर](https://arxiv.org/pdf/1512.03385.pdf) से ली गई है -पहचान पास-थ्रू का उपयोग करने का कारण यह है कि हमारे लेयर को **पिछले लेयर के परिणाम और अवशिष्ट ब्लॉक के आउटपुट के बीच का अंतर** भविष्यवाणी करने की आवश्यकता है - इसलिए इसे *अवशिष्ट* नाम दिया गया है। ये ब्लॉक प्रशिक्षण के लिए बहुत आसान होते हैं, और कोई भी उन ब्लॉकों के साथ कई सैकड़ों नेटवर्क बना सकता है (सबसे सामान्य रूपांतर हैं ResNet-52, ResNet-101 और ResNet-152)। +रेजिडुअल ब्लॉक्स का उपयोग करने का कारण यह है कि हमारी लेयर को पिछले लेयर के परिणाम और रेजिडुअल ब्लॉक के आउटपुट के बीच **अंतर** की भविष्यवाणी करनी होती है - इसलिए इसे *रेजिडुअल* कहा जाता है। ये ब्लॉक्स ट्रेन करना काफी आसान होते हैं, और इनका उपयोग करके सैकड़ों ब्लॉक्स वाले नेटवर्क बनाए जा सकते हैं (सबसे सामान्य वेरिएंट्स हैं ResNet-52, ResNet-101 और ResNet-152)। -आप इस नेटवर्क को इस तरह से भी सोच सकते हैं कि यह डेटासेट के लिए अपनी जटिलता को समायोजित करने में सक्षम है। प्रारंभ में, जब आप नेटवर्क को प्रशिक्षित करना शुरू कर रहे होते हैं, तो वेट्स के मान छोटे होते हैं, और अधिकांश संकेत पहचान पास-थ्रू लेयर के माध्यम से जाता है। जैसे-जैसे प्रशिक्षण प्रगति करता है और वेट्स बड़े होते हैं, नेटवर्क के पैरामीटर का महत्व बढ़ता है, और नेटवर्क आवश्यक अभिव्यक्तिशक्ति को समायोजित करता है ताकि प्रशिक्षण छवियों को सही ढंग से वर्गीकृत किया जा सके। +आप इस नेटवर्क को ऐसा भी समझ सकते हैं कि यह अपने जटिलता स्तर को डेटा सेट के अनुसार समायोजित कर सकता है। शुरुआत में, जब आप नेटवर्क को ट्रेन करना शुरू करते हैं, तो वेट्स के मान छोटे होते हैं, और अधिकांश सिग्नल पासथ्रू आइडेंटिटी लेयर्स से गुजरता है। जैसे-जैसे ट्रेनिंग आगे बढ़ती है और वेट्स बड़े होते जाते हैं, नेटवर्क पैरामीटर्स का महत्व बढ़ता है, और नेटवर्क आवश्यक अभिव्यक्ति शक्ति को समायोजित करता है ताकि ट्रेनिंग इमेजेस को सही ढंग से वर्गीकृत किया जा सके। ### Google Inception -Google Inception आर्किटेक्चर इस विचार को एक कदम आगे बढ़ाता है, और प्रत्येक नेटवर्क लेयर को कई अलग-अलग पथों के संयोजन के रूप में बनाता है: +Google Inception आर्किटेक्चर इस विचार को एक कदम आगे ले जाता है और प्रत्येक नेटवर्क लेयर को कई अलग-अलग पथों के संयोजन के रूप में बनाता है: -> चित्र [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) से +> छवि [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) से ली गई है -यहां, हमें 1x1 संकुचन की भूमिका पर जोर देना चाहिए, क्योंकि पहले तो इसका कोई अर्थ नहीं होता। हमें 1x1 फ़िल्टर के साथ छवि पर क्यों चलना चाहिए? हालाँकि, आपको याद रखना चाहिए कि संकुचन फ़िल्टर कई गहराई चैनलों के साथ भी काम करते हैं (मूल रूप से - RGB रंग, बाद की परतों में - विभिन्न फ़िल्टर के लिए चैनल), और 1x1 संकुचन का उपयोग उन इनपुट चैनलों को विभिन्न प्रशिक्षनीय वेट्स का उपयोग करके मिलाने के लिए किया जाता है। इसे चैनल आयाम पर डाउनसैंपलिंग (पूलिंग) के रूप में भी देखा जा सकता है। +यहां, हमें 1x1 कॉन्वोल्यूशन्स की भूमिका पर जोर देना होगा, क्योंकि शुरुआत में यह समझ में नहीं आता। हम 1x1 फिल्टर के साथ इमेज पर क्यों चलेंगे? हालांकि, आपको यह याद रखना होगा कि कॉन्वोल्यूशन फिल्टर्स कई डेप्थ चैनल्स (मूल रूप से - RGB रंग, और बाद की लेयर्स में - विभिन्न फिल्टर्स के लिए चैनल्स) के साथ भी काम करते हैं, और 1x1 कॉन्वोल्यूशन का उपयोग इन इनपुट चैनल्स को विभिन्न ट्रेन करने योग्य वेट्स के साथ मिलाने के लिए किया जाता है। इसे चैनल डाइमेंशन पर डाउनसैंपलिंग (पूलिंग) के रूप में भी देखा जा सकता है। -इस विषय पर [एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) है, और [मूल पेपर](https://arxiv.org/pdf/1312.4400.pdf) है। +इस विषय पर [एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) और [मूल पेपर](https://arxiv.org/pdf/1312.4400.pdf) यहां उपलब्ध है। ### MobileNet -MobileNet एक मॉडल परिवार है जिसकी आकार में कमी है, जो मोबाइल उपकरणों के लिए उपयुक्त है। उनका उपयोग करें यदि आपके पास संसाधनों की कमी है, और आप थोड़ी सटीकता का बलिदान कर सकते हैं। उनके पीछे का मुख्य विचार **गहराई से पृथक संकुचन** है, जो गहराई चैनलों पर स्थानिक संकुचन और 1x1 संकुचन के संयोजन द्वारा संकुचन फ़िल्टरों का प्रतिनिधित्व करने की अनुमति देता है। यह पैरामीटर की संख्या को महत्वपूर्ण रूप से कम करता है, जिससे नेटवर्क का आकार छोटा होता है, और कम डेटा के साथ प्रशिक्षित करना भी आसान होता है। +MobileNet छोटे आकार के मॉडल्स का एक परिवार है, जो मोबाइल डिवाइस के लिए उपयुक्त है। इनका उपयोग तब करें जब आपके पास सीमित संसाधन हों और आप थोड़ी सटीकता का त्याग कर सकते हों। इसका मुख्य विचार **डेप्थवाइज सेपरेबल कॉन्वोल्यूशन** है, जो कॉन्वोल्यूशन फिल्टर्स को स्पैटियल कॉन्वोल्यूशन्स और डेप्थ चैनल्स पर 1x1 कॉन्वोल्यूशन के संयोजन के रूप में प्रस्तुत करने की अनुमति देता है। यह पैरामीटर्स की संख्या को काफी हद तक कम कर देता है, जिससे नेटवर्क का आकार छोटा हो जाता है और इसे कम डेटा के साथ ट्रेन करना भी आसान हो जाता है। -यहां [MobileNet पर एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) है। +यहां [MobileNet पर एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) उपलब्ध है। ## निष्कर्ष -इस इकाई में, आपने कंप्यूटर दृष्टि न्यूरल नेटवर्क - संकुचन नेटवर्क के पीछे का मुख्य सिद्धांत सीखा है। वास्तविक जीवन की आर्किटेक्चर जो छवि वर्गीकरण, वस्तु पहचान, और यहां तक कि छवि जनरेशन नेटवर्क को शक्ति देती है, सभी CNNs पर आधारित हैं, बस अधिक परतों और कुछ अतिरिक्त प्रशिक्षण तकनीकों के साथ। +इस यूनिट में, आपने कंप्यूटर विज़न न्यूरल नेटवर्क्स - कॉन्वोल्यूशनल नेटवर्क्स के पीछे का मुख्य विचार सीखा। इमेज क्लासिफिकेशन, ऑब्जेक्ट डिटेक्शन, और यहां तक कि इमेज जनरेशन नेटवर्क्स को शक्ति देने वाले वास्तविक जीवन के आर्किटेक्चर सभी CNNs पर आधारित हैं, बस इनमें अधिक लेयर्स और कुछ अतिरिक्त ट्रेनिंग ट्रिक्स शामिल हैं। ## 🚀 चुनौती -संबद्ध नोटबुक में, अधिक सटीकता प्राप्त करने के बारे में नीचे नोट्स हैं। कुछ प्रयोग करें यह देखने के लिए कि क्या आप उच्च सटीकता प्राप्त कर सकते हैं। +साथ में दिए गए नोटबुक्स में, नीचे अधिक सटीकता प्राप्त करने के तरीकों के बारे में नोट्स दिए गए हैं। कुछ प्रयोग करें और देखें कि क्या आप उच्च सटीकता प्राप्त कर सकते हैं। -## [पाठ-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -हालांकि CNNs का उपयोग सबसे अधिकतर कंप्यूटर दृष्टि कार्यों के लिए किया जाता है, वे सामान्यतः निश्चित आकार के पैटर्न निकालने के लिए अच्छे होते हैं। उदाहरण के लिए, यदि हम ध्वनियों से निपट रहे हैं, तो हम कुछ विशिष्ट पैटर्नों की खोज के लिए CNNs का उपयोग करना चाह सकते हैं - जिस स्थिति में फ़िल्टर 1-आयामी होंगे (और इस CNN को 1D-CNN कहा जाएगा)। इसके अलावा, कभी-कभी 3D-CNN का उपयोग बहु-आयामी स्थान में विशेषताओं को निकालने के लिए किया जाता है, जैसे कि वीडियो पर कुछ घटनाएं घटित होना - CNN समय के साथ विशेषताओं में परिवर्तन के कुछ पैटर्न को पकड़ सकता है। CNNs के साथ किए जा सकने वाले अन्य कार्यों के बारे में कुछ समीक्षा और आत्म-अध्ययन करें। +हालांकि CNNs का सबसे अधिक उपयोग कंप्यूटर विज़न कार्यों के लिए किया जाता है, वे सामान्य रूप से फिक्स्ड-साइज़ पैटर्न निकालने के लिए अच्छे होते हैं। उदाहरण के लिए, यदि हम ध्वनियों के साथ काम कर रहे हैं, तो हम ऑडियो सिग्नल में कुछ विशिष्ट पैटर्न देखने के लिए CNNs का उपयोग करना चाह सकते हैं - इस मामले में फिल्टर्स 1-डायमेंशनल होंगे (और इस CNN को 1D-CNN कहा जाएगा)। इसके अलावा, कभी-कभी 3D-CNN का उपयोग मल्टी-डायमेंशनल स्पेस में फीचर्स निकालने के लिए किया जाता है, जैसे कि वीडियो में कुछ घटनाओं का होना - CNN समय के साथ बदलते फीचर्स के कुछ पैटर्न को कैप्चर कर सकता है। CNNs के साथ किए जा सकने वाले अन्य कार्यों के बारे में समीक्षा और स्व-अध्ययन करें। ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, आपको विभिन्न बिल्ली और कुत्ते की नस्लों का वर्गीकरण करने का कार्य सौंपा गया है। ये छवियाँ MNIST डेटासेट की तुलना में अधिक जटिल और उच्च आयाम की हैं, और इनमें 10 से अधिक वर्ग हैं। +इस लैब में, आपका कार्य विभिन्न बिल्ली और कुत्ते की नस्लों को वर्गीकृत करना है। ये इमेजेस MNIST डेटा सेट की तुलना में अधिक जटिल और उच्च आयामों वाली हैं, और 10 से अधिक क्लासेस हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md index 7d3e14b9..b88303b7 100644 --- a/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,58 +1,67 @@ -# कन्वोल्यूशनल न्यूरल नेटवर्क्स + +# कॉन्वोल्यूशनल न्यूरल नेटवर्क्स -हमने पहले देखा है कि न्यूरल नेटवर्क्स छवियों के साथ काम करने में काफी अच्छे होते हैं, और यहां तक कि एक-स्तरीय पर्सेप्ट्रॉन भी MNIST डेटासेट से हस्तलिखित अंकों को उचित सटीकता के साथ पहचानने में सक्षम है। हालाँकि, MNIST डेटासेट बहुत विशेष है, और सभी अंक छवि के अंदर केंद्रित होते हैं, जो कार्य को सरल बनाता है। +हमने पहले देखा है कि न्यूरल नेटवर्क्स इमेजेस के साथ काम करने में काफी अच्छे होते हैं, और यहां तक कि एक-लेयर परसेप्ट्रॉन भी MNIST डेटासेट से हस्तलिखित अंकों को पहचानने में उचित सटीकता के साथ सक्षम है। हालांकि, MNIST डेटासेट बहुत खास है, और सभी अंक इमेज के केंद्र में होते हैं, जिससे यह कार्य सरल हो जाता है। -## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -वास्तविक जीवन में, हम चाहते हैं कि हम छवि पर वस्तुओं को उनकी सटीक स्थिति की परवाह किए बिना पहचान सकें। कंप्यूटर विज़न सामान्य वर्गीकरण से अलग है, क्योंकि जब हम किसी विशेष वस्तु को चित्र में खोजने की कोशिश कर रहे होते हैं, तो हम कुछ विशेष **पैटर्न** और उनके संयोजनों की खोज में छवि को स्कैन कर रहे होते हैं। उदाहरण के लिए, जब हम बिल्ली की तलाश कर रहे होते हैं, तो हम पहले क्षैतिज रेखाओं की तलाश कर सकते हैं, जो मूंछें बना सकती हैं, और फिर मूंछों का एक विशेष संयोजन हमें बता सकता है कि यह वास्तव में एक बिल्ली की तस्वीर है। पैटर्न की सापेक्ष स्थिति और उपस्थिति महत्वपूर्ण है, और छवि पर उनकी सटीक स्थिति नहीं। +वास्तविक जीवन में, हम चाहते हैं कि हम इमेज में किसी वस्तु को उसकी सटीक स्थिति की परवाह किए बिना पहचान सकें। कंप्यूटर विज़न सामान्य वर्गीकरण से अलग है, क्योंकि जब हम इमेज में किसी विशेष वस्तु को खोजने की कोशिश कर रहे होते हैं, तो हम इमेज को स्कैन करते हैं और कुछ विशिष्ट **पैटर्न्स** और उनके संयोजनों को ढूंढते हैं। उदाहरण के लिए, जब हम बिल्ली को खोज रहे होते हैं, तो हम पहले क्षैतिज रेखाओं को देख सकते हैं, जो मूंछें बना सकती हैं, और फिर मूंछों के एक निश्चित संयोजन से हमें पता चल सकता है कि यह वास्तव में एक बिल्ली की तस्वीर है। कुछ पैटर्न्स की सापेक्ष स्थिति और उपस्थिति महत्वपूर्ण होती है, न कि उनकी इमेज में सटीक स्थिति। -पैटर्न निकालने के लिए, हम **कन्वोल्यूशनल फ़िल्टर** के विचार का उपयोग करेंगे। जैसा कि आप जानते हैं, एक छवि को 2D-मैट्रिक्स या रंग गहराई के साथ 3D-टेंसर द्वारा दर्शाया जाता है। एक फ़िल्टर लागू करने का मतलब है कि हम अपेक्षाकृत छोटे **फ़िल्टर कर्नेल** मैट्रिक्स को लेते हैं, और मूल छवि में प्रत्येक पिक्सेल के लिए हम पड़ोसी बिंदुओं के साथ भारित औसत की गणना करते हैं। हम इसे पूरे चित्र पर स्लाइडिंग विंडो के रूप में देख सकते हैं, और फ़िल्टर कर्नेल मैट्रिक्स में वजन के अनुसार सभी पिक्सेल का औसत निकाल सकते हैं। +पैटर्न्स को निकालने के लिए, हम **कॉन्वोल्यूशनल फिल्टर्स** की अवधारणा का उपयोग करेंगे। जैसा कि आप जानते हैं, एक इमेज को 2D-मैट्रिक्स या रंग गहराई के साथ 3D-टेंसर के रूप में दर्शाया जाता है। एक फिल्टर लागू करने का मतलब है कि हम एक अपेक्षाकृत छोटा **फिल्टर कर्नेल** मैट्रिक्स लेते हैं, और मूल इमेज में प्रत्येक पिक्सल के लिए पड़ोसी बिंदुओं के साथ भारित औसत की गणना करते हैं। इसे हम इस तरह देख सकते हैं जैसे एक छोटी खिड़की पूरी इमेज पर स्लाइड कर रही हो, और फिल्टर कर्नेल मैट्रिक्स में वज़न के अनुसार सभी पिक्सल्स का औसत निकाल रही हो। -![वर्टिकल एज फ़िल्टर](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hi.png) | ![हॉरिजेंटल एज फ़िल्टर](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hi.png) +![वर्टिकल एज फिल्टर](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![हॉरिज़ॉन्टल एज फिल्टर](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) ----|---- -> छवि द्वारा डिमित्री सोश्निकोव +> छवि: दिमित्री सोश्निकोव द्वारा -उदाहरण के लिए, यदि हम MNIST अंकों पर 3x3 वर्टिकल एज और हॉरिजेंटल एज फ़िल्टर लागू करते हैं, तो हम उन स्थानों पर हाइलाइट्स (जैसे उच्च मान) प्राप्त कर सकते हैं जहाँ हमारी मूल छवि में वर्टिकल और हॉरिजेंटल एज हैं। इस प्रकार, इन दोनों फ़िल्टर का उपयोग "एज खोजने" के लिए किया जा सकता है। इसी तरह, हम अन्य निम्न-स्तरीय पैटर्न की खोज के लिए विभिन्न फ़िल्टर डिज़ाइन कर सकते हैं: +उदाहरण के लिए, यदि हम MNIST अंकों पर 3x3 वर्टिकल एज और हॉरिज़ॉन्टल एज फिल्टर्स लागू करते हैं, तो हमें हाइलाइट्स (जैसे उच्च मान) मिल सकते हैं जहां हमारी मूल इमेज में वर्टिकल और हॉरिज़ॉन्टल एजेस हैं। इस प्रकार, ये दो फिल्टर्स एजेस को "खोजने" के लिए उपयोग किए जा सकते हैं। इसी तरह, हम अन्य निम्न-स्तरीय पैटर्न्स को खोजने के लिए विभिन्न फिल्टर्स डिज़ाइन कर सकते हैं: -> [Leung-Malik फ़िल्टर बैंक](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) की छवि -हालांकि, जबकि हम कुछ पैटर्न को मैन्युअल रूप से निकालने के लिए फ़िल्टर डिज़ाइन कर सकते हैं, हम नेटवर्क को इस तरह से डिज़ाइन भी कर सकते हैं कि यह स्वचालित रूप से पैटर्न सीखे। यह CNN के पीछे के मुख्य विचारों में से एक है। +हालांकि, जबकि हम कुछ पैटर्न्स को निकालने के लिए फिल्टर्स को मैन्युअली डिज़ाइन कर सकते हैं, हम नेटवर्क को इस तरह से डिज़ाइन भी कर सकते हैं कि यह पैटर्न्स को स्वचालित रूप से सीख सके। यह CNN के पीछे के मुख्य विचारों में से एक है। -## CNN के पीछे के मुख्य विचार +## CNN के पीछे मुख्य विचार -CNNs का कार्य करने का तरीका निम्नलिखित महत्वपूर्ण विचारों पर आधारित है: +CNNs जिस तरह से काम करते हैं, वह निम्नलिखित महत्वपूर्ण विचारों पर आधारित है: -* कन्वोल्यूशनल फ़िल्टर पैटर्न निकाल सकते हैं -* हम नेटवर्क को इस तरह से डिज़ाइन कर सकते हैं कि फ़िल्टर स्वचालित रूप से प्रशिक्षित होते हैं -* हम उच्च-स्तरीय विशेषताओं में पैटर्न खोजने के लिए समान दृष्टिकोण का उपयोग कर सकते हैं, न कि केवल मूल छवि में। इस प्रकार, CNN फ़ीचर निष्कर्षण एक विशेषताओं की पदानुक्रम पर काम करता है, जो निम्न-स्तरीय पिक्सेल संयोजनों से शुरू होता है, उच्च स्तर के चित्र भागों के संयोजन तक। +* कॉन्वोल्यूशनल फिल्टर्स पैटर्न्स को निकाल सकते हैं। +* हम नेटवर्क को इस तरह से डिज़ाइन कर सकते हैं कि फिल्टर्स स्वचालित रूप से प्रशिक्षित हो सकें। +* हम केवल मूल इमेज में ही नहीं, बल्कि उच्च-स्तरीय विशेषताओं में भी पैटर्न्स खोजने के लिए इसी दृष्टिकोण का उपयोग कर सकते हैं। इस प्रकार, CNN फीचर एक्सट्रैक्शन फीचर्स के एक पदानुक्रम पर काम करता है, जो निम्न-स्तरीय पिक्सल संयोजनों से शुरू होकर, इमेज के हिस्सों के उच्च-स्तरीय संयोजनों तक जाता है। -![पदानुक्रम फ़ीचर निष्कर्षण](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hi.png) +![पदानुक्रमिक फीचर एक्सट्रैक्शन](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) -> छवि [Hislop-Lynch के एक पेपर](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) से, [उनके शोध](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) के आधार पर +> छवि: [Hislop-Lynch के पेपर](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) से, उनके [शोध](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) पर आधारित -## ✍️ व्यायाम: कन्वोल्यूशनल न्यूरल नेटवर्क्स +## ✍️ अभ्यास: कॉन्वोल्यूशनल न्यूरल नेटवर्क्स -आइए यह पता लगाना जारी रखें कि कन्वोल्यूशनल न्यूरल नेटवर्क्स कैसे काम करते हैं, और हम कैसे प्रशिक्षित फ़िल्टर प्राप्त कर सकते हैं, संबंधित नोटबुक के माध्यम से काम करके: +आइए यह समझना जारी रखें कि कॉन्वोल्यूशनल न्यूरल नेटवर्क्स कैसे काम करते हैं, और हम ट्रेन करने योग्य फिल्टर्स कैसे प्राप्त कर सकते हैं, इसके लिए निम्नलिखित नोटबुक्स पर काम करें: -* [कन्वोल्यूशनल न्यूरल नेटवर्क्स - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [कन्वोल्यूशनल न्यूरल नेटवर्क्स - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [कॉन्वोल्यूशनल न्यूरल नेटवर्क्स - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [कॉन्वोल्यूशनल न्यूरल नेटवर्क्स - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) ## पिरामिड आर्किटेक्चर -छवि प्रसंस्करण के लिए उपयोग किए जाने वाले अधिकांश CNNs एक तथाकथित पिरामिड आर्किटेक्चर का पालन करते हैं। मूल छवियों पर लागू पहला कन्वोल्यूशनल लेयर आमतौर पर अपेक्षाकृत कम संख्या में फ़िल्टर (8-16) रखता है, जो विभिन्न पिक्सेल संयोजनों के लिए होते हैं, जैसे कि क्षैतिज/ऊर्ध्वाधर रेखाएँ। अगले स्तर पर, हम नेटवर्क का स्थानिक आयाम कम करते हैं, और फ़िल्टर की संख्या बढ़ाते हैं, जो सरल विशेषताओं के अधिक संभावित संयोजनों के लिए होता है। प्रत्येक स्तर के साथ, जैसे-जैसे हम अंतिम वर्गीकर्ता की ओर बढ़ते हैं, छवि के स्थानिक आयाम घटते हैं, और फ़िल्टर की संख्या बढ़ती है। +अधिकांश CNNs जो इमेज प्रोसेसिंग के लिए उपयोग किए जाते हैं, तथाकथित पिरामिड आर्किटेक्चर का पालन करते हैं। मूल इमेज पर लागू पहला कॉन्वोल्यूशनल लेयर आमतौर पर अपेक्षाकृत कम संख्या में फिल्टर्स (8-16) रखता है, जो विभिन्न पिक्सल संयोजनों, जैसे क्षैतिज/वर्टिकल रेखाओं या स्ट्रोक्स से मेल खाते हैं। अगले स्तर पर, हम नेटवर्क के स्थानिक आयाम को कम करते हैं, और फिल्टर्स की संख्या बढ़ाते हैं, जो सरल विशेषताओं के अधिक संभावित संयोजनों से मेल खाती है। प्रत्येक लेयर के साथ, जैसे-जैसे हम अंतिम क्लासिफायर की ओर बढ़ते हैं, इमेज के स्थानिक आयाम घटते हैं, और फिल्टर्स की संख्या बढ़ती है। -उदाहरण के लिए, आइए VGG-16 की आर्किटेक्चर पर एक नज़र डालें, जो 2014 में ImageNet के शीर्ष-5 वर्गीकरण में 92.7% सटीकता प्राप्त करने वाले नेटवर्क है: +उदाहरण के लिए, आइए VGG-16 की आर्किटेक्चर पर नज़र डालें, एक नेटवर्क जिसने 2014 में ImageNet के टॉप-5 वर्गीकरण में 92.7% सटीकता हासिल की: -![ImageNet लेयर](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hi.jpg) +![ImageNet लेयर्स](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -![ImageNet पिरामिड](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg) +![ImageNet पिरामिड](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) -> छवि [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) से +> छवि: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) से -## सबसे प्रसिद्ध CNN आर्किटेक्चर +## सबसे प्रसिद्ध CNN आर्किटेक्चर्स -[सबसे प्रसिद्ध CNN आर्किटेक्चर के बारे में अपने अध्ययन को जारी रखें](CNN_Architectures.md) +[सबसे प्रसिद्ध CNN आर्किटेक्चर्स के बारे में अपनी पढ़ाई जारी रखें](CNN_Architectures.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 91ee6438..8f195ef7 100644 --- a/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,18 +1,27 @@ -# पालतू जानवरों के चेहरों की वर्गीकरण + +# पालतू जानवरों के चेहरे की श्रेणीकरण -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -कल्पना करें कि आपको पालतू जानवरों के नर्सरी के लिए एक एप्लिकेशन विकसित करने की आवश्यकता है ताकि सभी पालतू जानवरों का वर्गीकरण किया जा सके। ऐसे एप्लिकेशन की एक बेहतरीन विशेषता यह होगी कि यह एक तस्वीर से नस्ल का स्वतः पता लगा सके। इसे न्यूरल नेटवर्क का उपयोग करके सफलतापूर्वक किया जा सकता है। +कल्पना करें कि आपको एक पालतू नर्सरी के लिए एक एप्लिकेशन विकसित करनी है जो सभी पालतू जानवरों को सूचीबद्ध करे। ऐसी एप्लिकेशन की एक शानदार विशेषता यह होगी कि वह तस्वीर से स्वचालित रूप से नस्ल की पहचान कर सके। यह कार्य न्यूरल नेटवर्क का उपयोग करके सफलतापूर्वक किया जा सकता है। -आपको **Pet Faces** डेटासेट का उपयोग करके बिल्लियों और कुत्तों की विभिन्न नस्लों को वर्गीकृत करने के लिए एक संयोजनात्मक न्यूरल नेटवर्क को प्रशिक्षित करने की आवश्यकता है। +आपको **Pet Faces** डेटासेट का उपयोग करके बिल्लियों और कुत्तों की विभिन्न नस्लों को वर्गीकृत करने के लिए एक कन्वोल्यूशनल न्यूरल नेटवर्क को प्रशिक्षित करना होगा। ## डेटासेट -हम **Pet Faces** डेटासेट का उपयोग करेंगे, जो [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जानवरों के डेटासेट से निकाला गया है। इसमें कुत्तों और बिल्लियों की 35 विभिन्न नस्लें शामिल हैं। +हम **Pet Faces** डेटासेट का उपयोग करेंगे, जो [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जानवरों के डेटासेट से लिया गया है। इसमें कुत्तों और बिल्लियों की 35 विभिन्न नस्लें शामिल हैं। -![हम जिस डेटासेट के साथ काम करेंगे](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hi.png) +![हम जिस डेटासेट से निपटेंगे](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) डेटासेट डाउनलोड करने के लिए, इस कोड स्निपेट का उपयोग करें: @@ -22,13 +31,13 @@ !rm petfaces.tar.gz ``` -## नोटबुक शुरू करना +## प्रारंभिक नोटबुक -[PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) खोलकर प्रयोगशाला शुरू करें। +लैब शुरू करने के लिए [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) खोलें। ## निष्कर्ष -आपने शून्य से छवि वर्गीकरण की एक अपेक्षाकृत जटिल समस्या को हल किया है! वर्गों की संख्या काफी अधिक थी, और फिर भी आप उचित सटीकता प्राप्त करने में सक्षम रहे! यह शीर्ष-k सटीकता को मापने के लिए भी समझ में आता है, क्योंकि कुछ वर्गों को भेद करना आसान नहीं है, जो मानवों के लिए भी स्पष्ट रूप से भिन्न नहीं हैं। +आपने छवि वर्गीकरण की एक अपेक्षाकृत जटिल समस्या को शुरुआत से हल किया है! यहां काफी सारी श्रेणियां थीं, और फिर भी आप उचित सटीकता प्राप्त करने में सक्षम रहे! यह भी समझ में आता है कि शीर्ष-k सटीकता को मापा जाए, क्योंकि कुछ श्रेणियों को भ्रमित करना आसान है जो इंसानों के लिए भी स्पष्ट रूप से अलग नहीं हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md index d5fb794f..5185c9ed 100644 --- a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,81 +1,90 @@ -# प्री-ट्रेंड नेटवर्क और ट्रांसफर लर्निंग + +# प्री-ट्रेंड नेटवर्क्स और ट्रांसफर लर्निंग -CNNs को प्रशिक्षित करना बहुत समय ले सकता है, और इसके लिए बहुत सारे डेटा की आवश्यकता होती है। हालांकि, अधिकांश समय सबसे अच्छे लो-लेवल फ़िल्टर सीखने में व्यतीत होता है, जिन्हें एक नेटवर्क छवियों से पैटर्न निकालने के लिए उपयोग कर सकता है। एक स्वाभाविक प्रश्न उठता है - क्या हम एक डेटा सेट पर प्रशिक्षित न्यूरल नेटवर्क का उपयोग कर सकते हैं और इसे विभिन्न छवियों को वर्गीकृत करने के लिए अनुकूलित कर सकते हैं बिना पूर्ण प्रशिक्षण प्रक्रिया की आवश्यकता के? +CNNs को ट्रेन करना बहुत समय ले सकता है, और इसके लिए बहुत सारे डेटा की आवश्यकता होती है। हालांकि, अधिकांश समय नेटवर्क को उन सर्वोत्तम लो-लेवल फिल्टर्स को सीखने में लगता है, जो इमेज से पैटर्न निकालने में मदद करते हैं। एक स्वाभाविक सवाल उठता है - क्या हम एक डेटासेट पर ट्रेन किए गए न्यूरल नेटवर्क का उपयोग करके इसे अलग-अलग इमेज को वर्गीकृत करने के लिए अनुकूलित कर सकते हैं, बिना पूरे ट्रेनिंग प्रक्रिया की आवश्यकता के? -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -इस दृष्टिकोण को **ट्रांसफर लर्निंग** कहा जाता है, क्योंकि हम एक न्यूरल नेटवर्क मॉडल से दूसरे में कुछ ज्ञान स्थानांतरित करते हैं। ट्रांसफर लर्निंग में, हम आमतौर पर एक प्री-ट्रेंड मॉडल से शुरू करते हैं, जिसे किसी बड़े इमेज डेटा सेट, जैसे कि **ImageNet** पर प्रशिक्षित किया गया है। ये मॉडल पहले से ही सामान्य छवियों से विभिन्न विशेषताएँ निकालने में अच्छा काम कर सकते हैं, और कई मामलों में इन निकाली गई विशेषताओं के ऊपर एक क्लासिफायर बनाना अच्छा परिणाम दे सकता है। +इस दृष्टिकोण को **ट्रांसफर लर्निंग** कहा जाता है, क्योंकि हम एक न्यूरल नेटवर्क मॉडल से दूसरे में कुछ ज्ञान ट्रांसफर करते हैं। ट्रांसफर लर्निंग में, हम आमतौर पर एक प्री-ट्रेंड मॉडल से शुरू करते हैं, जिसे किसी बड़े इमेज डेटासेट, जैसे **ImageNet**, पर ट्रेन किया गया होता है। ये मॉडल पहले से ही सामान्य इमेज से विभिन्न फीचर्स निकालने में अच्छा काम कर सकते हैं, और कई मामलों में उन निकाले गए फीचर्स के ऊपर एक क्लासिफायर बनाना अच्छे परिणाम दे सकता है। -> ✅ ट्रांसफर लर्निंग एक ऐसा शब्द है जिसे आप अन्य शैक्षणिक क्षेत्रों में पाएंगे, जैसे कि शिक्षा। यह एक डोमेन से ज्ञान लेने और उसे दूसरे पर लागू करने की प्रक्रिया को संदर्भित करता है। +> ✅ ट्रांसफर लर्निंग एक ऐसा शब्द है जिसे आप अन्य शैक्षणिक क्षेत्रों, जैसे शिक्षा, में भी पाते हैं। इसका मतलब है एक क्षेत्र से ज्ञान लेकर उसे दूसरे क्षेत्र में लागू करना। -## प्री-ट्रेंड मॉडल को फीचर एक्सट्रैक्टर्स के रूप में +## प्री-ट्रेंड मॉडल्स को फीचर एक्सट्रैक्टर्स के रूप में उपयोग करना -पिछले अनुभाग में हमने जिन संवहन नेटवर्कों के बारे में बात की थी, उनमें कई परतें थीं, जिनमें से प्रत्येक को छवि से कुछ विशेषताएँ निकालने के लिए डिज़ाइन किया गया है, जो लो-लेवल पिक्सेल संयोजनों (जैसे क्षैतिज/ऊर्ध्वाधर रेखा या स्ट्रोक) से लेकर उच्च स्तर के संयोजनों तक होती हैं, जो एक लपट की आंख जैसी चीजों से संबंधित होती हैं। यदि हम CNN को सामान्य और विविध छवियों के पर्याप्त बड़े डेटा सेट पर प्रशिक्षित करते हैं, तो नेटवर्क उन सामान्य विशेषताओं को निकालना सीख जाएगा। +पिछले सेक्शन में हमने जिन कॉन्वोल्यूशनल नेटवर्क्स के बारे में बात की थी, उनमें कई लेयर्स होती हैं, जिनमें से प्रत्येक इमेज से कुछ फीचर्स निकालने के लिए होती है। ये लो-लेवल पिक्सल संयोजन (जैसे क्षैतिज/वर्टिकल लाइन या स्ट्रोक) से शुरू होकर उच्च-स्तरीय फीचर्स तक जाती हैं, जो किसी चीज़ जैसे आग की आंख का प्रतिनिधित्व करती हैं। यदि हम CNN को पर्याप्त बड़े और विविध इमेज डेटासेट पर ट्रेन करें, तो नेटवर्क को उन सामान्य फीचर्स को निकालना सीखना चाहिए। -Keras और PyTorch दोनों में कुछ सामान्य आर्किटेक्चर के लिए प्री-ट्रेंड न्यूरल नेटवर्क वेट्स को आसानी से लोड करने के लिए फ़ंक्शन होते हैं, जिनमें से अधिकांश को ImageNet छवियों पर प्रशिक्षित किया गया था। सबसे अधिक उपयोग किए जाने वाले उन पर [CNN आर्किटेक्चर](../07-ConvNets/CNN_Architectures.md) पृष्ठ पर पिछले पाठ से वर्णित हैं। विशेष रूप से, आप निम्नलिखित में से एक का उपयोग करने पर विचार कर सकते हैं: +Keras और PyTorch दोनों में कुछ सामान्य आर्किटेक्चर के लिए प्री-ट्रेंड न्यूरल नेटवर्क वेट्स को आसानी से लोड करने के लिए फंक्शन्स होती हैं, जिनमें से अधिकांश को ImageNet इमेज पर ट्रेन किया गया है। सबसे अधिक उपयोग किए जाने वाले मॉडल्स को पिछले लेसन के [CNN Architectures](../07-ConvNets/CNN_Architectures.md) पेज पर वर्णित किया गया है। विशेष रूप से, आप निम्नलिखित में से किसी एक का उपयोग करने पर विचार कर सकते हैं: -* **VGG-16/VGG-19**, जो अपेक्षाकृत सरल मॉडल हैं जो फिर भी अच्छी सटीकता देते हैं। अक्सर VGG का पहला प्रयास के रूप में उपयोग करना ट्रांसफर लर्निंग को देखने के लिए एक अच्छा विकल्प है। -* **ResNet** एक मॉडल परिवार है जिसे Microsoft Research द्वारा 2015 में प्रस्तावित किया गया था। इनमें अधिक परतें होती हैं, और इसलिए अधिक संसाधनों की आवश्यकता होती है। -* **MobileNet** एक मॉडल परिवार है जिसमें आकार कम होता है, जो मोबाइल उपकरणों के लिए उपयुक्त है। यदि आपके पास संसाधनों की कमी है और आप थोड़ी सटीकता बलिदान कर सकते हैं, तो इन्हें उपयोग करें। +* **VGG-16/VGG-19** जो अपेक्षाकृत सरल मॉडल हैं और फिर भी अच्छी सटीकता देते हैं। अक्सर VGG का उपयोग करना एक अच्छा विकल्प होता है यह देखने के लिए कि ट्रांसफर लर्निंग कैसे काम कर रही है। +* **ResNet** माइक्रोसॉफ्ट रिसर्च द्वारा 2015 में प्रस्तावित मॉडल्स का एक परिवार है। इनमें अधिक लेयर्स होती हैं, और इसलिए अधिक संसाधनों की आवश्यकता होती है। +* **MobileNet** छोटे आकार वाले मॉडल्स का एक परिवार है, जो मोबाइल डिवाइस के लिए उपयुक्त हैं। इन्हें तब उपयोग करें जब आपके पास संसाधनों की कमी हो और आप थोड़ी सटीकता का त्याग कर सकते हों। -यहां एक बिल्ली की तस्वीर से VGG-16 नेटवर्क द्वारा निकाली गई विशेषताओं के उदाहरण हैं: +यहां VGG-16 नेटवर्क द्वारा एक बिल्ली की तस्वीर से निकाले गए फीचर्स का एक नमूना है: -![VGG-16 द्वारा निकाली गई विशेषताएँ](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hi.png) +![VGG-16 द्वारा निकाले गए फीचर्स](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) -## बिल्लियाँ बनाम कुत्ते डेटा सेट +## कैट्स बनाम डॉग्स डेटासेट -इस उदाहरण में, हम [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) का डेटा सेट उपयोग करेंगे, जो वास्तविक जीवन की छवि वर्गीकरण परिदृश्य के बहुत करीब है। +इस उदाहरण में, हम [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) डेटासेट का उपयोग करेंगे, जो एक वास्तविक जीवन इमेज क्लासिफिकेशन परिदृश्य के बहुत करीब है। -## ✍️ व्यायाम: ट्रांसफर लर्निंग +## ✍️ अभ्यास: ट्रांसफर लर्निंग -आइए ट्रांसफर लर्निंग को संबंधित नोटबुक में क्रियान्वित करते हैं: +आइए संबंधित नोटबुक्स में ट्रांसफर लर्निंग को क्रियान्वित होते हुए देखें: -* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [ट्रांसफर लर्निंग - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [ट्रांसफर लर्निंग - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## प्रतिकूल बिल्ली का दृश्य +## एडवर्सेरियल कैट को विज़ुअलाइज़ करना -प्री-ट्रेंड न्यूरल नेटवर्क के अंदर इसके *मस्तिष्क* में विभिन्न पैटर्न होते हैं, जिसमें **आदर्श बिल्ली** (जैसे आदर्श कुत्ता, आदर्श ज़ेबरा, आदि) की धारणा शामिल होती है। इसे किसी तरह **इस छवि को दृश्य रूप में प्रदर्शित करना** दिलचस्प होगा। हालांकि, यह सरल नहीं है, क्योंकि पैटर्न नेटवर्क वेट्स में फैले हुए हैं, और एक पदानुक्रमिक संरचना में व्यवस्थित हैं। +प्री-ट्रेंड न्यूरल नेटवर्क के "ब्रेन" में विभिन्न पैटर्न होते हैं, जिनमें **आदर्श बिल्ली** (साथ ही आदर्श कुत्ता, आदर्श ज़ेबरा, आदि) की धारणा शामिल होती है। इसे किसी तरह **विज़ुअलाइज़ करना** दिलचस्प होगा। हालांकि, यह आसान नहीं है, क्योंकि पैटर्न पूरे नेटवर्क वेट्स में फैले हुए हैं और एक पदानुक्रमित संरचना में व्यवस्थित हैं। -हम जो दृष्टिकोण ले सकते हैं वह है एक यादृच्छिक छवि से शुरू करना, और फिर **ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन** तकनीक का उपयोग करके उस छवि को इस तरह से समायोजित करना, कि नेटवर्क सोचने लगे कि यह एक बिल्ली है। +एक दृष्टिकोण जो हम अपना सकते हैं वह है एक रैंडम इमेज से शुरू करना, और फिर **ग्रेडिएंट डिसेंट ऑप्टिमाइज़ेशन** तकनीक का उपयोग करके उस इमेज को इस तरह से समायोजित करना कि नेटवर्क इसे बिल्ली मानने लगे। -![छवि ऑप्टिमाइजेशन लूप](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hi.png) +![इमेज ऑप्टिमाइज़ेशन लूप](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) -हालांकि, यदि हम ऐसा करते हैं, तो हमें कुछ ऐसा प्राप्त होगा जो यादृच्छिक शोर के बहुत करीब है। इसका कारण यह है कि *नेटवर्क को यह सोचने के कई तरीके हैं कि इनपुट छवि एक बिल्ली है*, जिनमें से कुछ दृश्य रूप से समझ में नहीं आते हैं। जबकि उन छवियों में बिल्ली के लिए विशिष्ट कई पैटर्न होते हैं, उन्हें दृश्य रूप से विशिष्ट बनाने के लिए कोई सीमा नहीं होती है। +हालांकि, यदि हम ऐसा करते हैं, तो हमें कुछ ऐसा मिलेगा जो रैंडम नॉइज़ के समान है। ऐसा इसलिए है क्योंकि *नेटवर्क को यह सोचने के लिए कई तरीके हैं कि इनपुट इमेज एक बिल्ली है*, जिनमें से कुछ दृश्य रूप से समझ में नहीं आते। जबकि उन इमेज में बिल्ली के लिए विशिष्ट कई पैटर्न होते हैं, उन्हें दृश्य रूप से विशिष्ट बनाने के लिए कुछ भी बाध्य नहीं करता। -परिणाम को सुधारने के लिए, हम हानि फ़ंक्शन में एक और पद जोड़ सकते हैं, जिसे **वेरिएशन लॉस** कहा जाता है। यह एक मीट्रिक है जो दिखाती है कि छवि के पड़ोसी पिक्सेल कितने समान हैं। वेरिएशन लॉस को न्यूनतम करने से छवि चिकनी होती है, और शोर को हटा देती है - जिससे अधिक दृश्य रूप से आकर्षक पैटर्न प्रकट होते हैं। यहां ऐसे "आदर्श" छवियों का एक उदाहरण है, जिन्हें बिल्ली और ज़ेबरा के रूप में उच्च संभावना के साथ वर्गीकृत किया गया है: +परिणाम को बेहतर बनाने के लिए, हम लॉस फंक्शन में एक और टर्म जोड़ सकते हैं, जिसे **वेरिएशन लॉस** कहा जाता है। यह एक मीट्रिक है जो दिखाता है कि इमेज के पड़ोसी पिक्सल कितने समान हैं। वेरिएशन लॉस को कम करने से इमेज स्मूथ हो जाती है और नॉइज़ खत्म हो जाता है - जिससे अधिक दृश्य रूप से आकर्षक पैटर्न सामने आते हैं। यहां ऐसे "आदर्श" इमेज का एक उदाहरण है, जिन्हें उच्च संभावना के साथ बिल्ली और ज़ेबरा के रूप में वर्गीकृत किया गया है: -![आदर्श बिल्ली](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hi.png) | ![आदर्श ज़ेबरा](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hi.png) +![आदर्श बिल्ली](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![आदर्श ज़ेबरा](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) -----|----- *आदर्श बिल्ली* | *आदर्श ज़ेबरा* -इसी तरह के दृष्टिकोण का उपयोग न्यूरल नेटवर्क पर **प्रतिकूल हमलों** को करने के लिए किया जा सकता है। मान लीजिए कि हम एक न्यूरल नेटवर्क को धोखा देना चाहते हैं और एक कुत्ते को बिल्ली की तरह दिखाना चाहते हैं। यदि हम कुत्ते की छवि लेते हैं, जिसे नेटवर्क द्वारा कुत्ते के रूप में पहचाना जाता है, तो हम इसे थोड़ा सा समायोजित कर सकते हैं, ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन का उपयोग करके, जब तक कि नेटवर्क इसे बिल्ली के रूप में वर्गीकृत करना शुरू न कर दे: +इसी दृष्टिकोण का उपयोग तथाकथित **एडवर्सेरियल अटैक्स** करने के लिए किया जा सकता है। मान लें कि हम एक न्यूरल नेटवर्क को धोखा देना चाहते हैं और एक कुत्ते को बिल्ली की तरह दिखाना चाहते हैं। यदि हम कुत्ते की इमेज लें, जिसे नेटवर्क द्वारा कुत्ते के रूप में पहचाना जाता है, तो हम इसे थोड़ा सा समायोजित कर सकते हैं, जब तक कि नेटवर्क इसे बिल्ली के रूप में वर्गीकृत करना शुरू न कर दे: -![कुत्ते की तस्वीर](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hi.png) | ![बिल्ली के रूप में वर्गीकृत कुत्ते की तस्वीर](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hi.png) +![कुत्ते की तस्वीर](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![कुत्ते की तस्वीर जिसे बिल्ली के रूप में वर्गीकृत किया गया](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) -----|----- -*कुत्ते की मूल तस्वीर* | *बिल्ली के रूप में वर्गीकृत कुत्ते की तस्वीर* +*कुत्ते की मूल तस्वीर* | *कुत्ते की तस्वीर जिसे बिल्ली के रूप में वर्गीकृत किया गया* -ऊपर दिए गए परिणामों को पुन: उत्पन्न करने के लिए कोड देखें निम्नलिखित नोटबुक में: +ऊपर दिए गए परिणामों को पुन: उत्पन्न करने के लिए कोड निम्नलिखित नोटबुक में देखें: -* [आदर्श और प्रतिकूल बिल्ली - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +* [आदर्श और एडवर्सेरियल बिल्ली - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) ## निष्कर्ष -ट्रांसफर लर्निंग का उपयोग करके, आप एक कस्टम ऑब्जेक्ट वर्गीकरण कार्य के लिए जल्दी से एक क्लासिफायर तैयार कर सकते हैं और उच्च सटीकता प्राप्त कर सकते हैं। आप देख सकते हैं कि अधिक जटिल कार्य जो हम अब हल कर रहे हैं, उन्हें उच्च गणनात्मक शक्ति की आवश्यकता होती है, और उन्हें CPU पर आसानी से हल नहीं किया जा सकता। अगले यूनिट में, हम एक अधिक हल्के कार्यान्वयन का उपयोग करने की कोशिश करेंगे ताकि समान मॉडल को कम गणना संसाधनों का उपयोग करके प्रशिक्षित किया जा सके, जिससे केवल थोड़ी कम सटीकता प्राप्त होती है। +ट्रांसफर लर्निंग का उपयोग करके, आप कस्टम ऑब्जेक्ट क्लासिफिकेशन टास्क के लिए जल्दी से एक क्लासिफायर बना सकते हैं और उच्च सटीकता प्राप्त कर सकते हैं। आप देख सकते हैं कि अब हम जो अधिक जटिल कार्य हल कर रहे हैं, उन्हें उच्च कंप्यूटेशनल पावर की आवश्यकता होती है और उन्हें आसानी से CPU पर हल नहीं किया जा सकता। अगले यूनिट में, हम कम कंप्यूट संसाधनों का उपयोग करके उसी मॉडल को ट्रेन करने के लिए एक अधिक हल्का कार्यान्वयन उपयोग करने का प्रयास करेंगे, जिसके परिणामस्वरूप सटीकता में केवल थोड़ा सा कमी आएगी। ## 🚀 चुनौती -संबंधित नोटबुक में, इस बारे में नोट्स हैं कि ट्रांसफर ज्ञान किस प्रकार के प्रशिक्षण डेटा के साथ सबसे अच्छा काम करता है (शायद एक नए प्रकार का जानवर)। पूरी तरह से नए प्रकार की छवियों के साथ कुछ प्रयोग करें ताकि देखें कि आपके ट्रांसफर ज्ञान मॉडल कैसे प्रदर्शन करते हैं। +संबंधित नोटबुक्स में, नीचे नोट्स हैं कि ट्रांसफर ज्ञान समान ट्रेनिंग डेटा (शायद एक नए प्रकार के जानवर) के साथ सबसे अच्छा काम करता है। पूरी तरह से नए प्रकार की इमेज के साथ कुछ प्रयोग करें यह देखने के लिए कि आपके ट्रांसफर ज्ञान मॉडल कितनी अच्छी या खराब प्रदर्शन करते हैं। -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -अपने मॉडलों को प्रशिक्षित करने के कुछ अन्य तरीकों के ज्ञान को गहरा करने के लिए [TrainingTricks.md](TrainingTricks.md) को पढ़ें। +[TrainingTricks.md](TrainingTricks.md) को पढ़ें ताकि आप अपने मॉडल्स को ट्रेन करने के अन्य तरीकों के बारे में अधिक जानकारी प्राप्त कर सकें। ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, हम 35 नस्लों की बिल्लियों और कुत्तों के साथ वास्तविक जीवन के [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू डेटा सेट का उपयोग करेंगे, और हम एक ट्रांसफर लर्निंग क्लासिफायर बनाएंगे। +इस लैब में, हम वास्तविक जीवन [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जानवरों के डेटासेट का उपयोग करेंगे जिसमें 35 नस्लों की बिल्लियाँ और कुत्ते शामिल हैं, और हम एक ट्रांसफर लर्निंग क्लासिफायर बनाएंगे। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index 75aa9949..850d76d0 100644 --- a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# गहरे अध्ययन के प्रशिक्षण के तरीके + +# डीप लर्निंग ट्रेनिंग ट्रिक्स -जैसे-जैसे न्यूरल नेटवर्क गहरे होते जाते हैं, उनके प्रशिक्षण की प्रक्रिया और अधिक चुनौतीपूर्ण होती जाती है। एक मुख्य समस्या जिसे हम [गायब होते ग्रेडिएंट्स](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) या [फूलते ग्रेडिएंट्स](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) कहते हैं। [यह पोस्ट](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) इन समस्याओं का अच्छा परिचय देती है। +जैसे-जैसे न्यूरल नेटवर्क गहरे होते जाते हैं, उनका प्रशिक्षण और अधिक चुनौतीपूर्ण हो जाता है। एक मुख्य समस्या है जिसे [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) या [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) कहा जाता है। [यह पोस्ट](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) इन समस्याओं का अच्छा परिचय देती है। -गहरे नेटवर्क के प्रशिक्षण को अधिक कुशल बनाने के लिए, कुछ तकनीकें हैं जिनका उपयोग किया जा सकता है। +गहरे नेटवर्क के प्रशिक्षण को अधिक प्रभावी बनाने के लिए, कुछ तकनीकों का उपयोग किया जा सकता है। -## मानों को उचित अंतराल में रखना +## मानों को उचित सीमा में रखना -संख्यात्मक गणनाओं को अधिक स्थिर बनाने के लिए, हम यह सुनिश्चित करना चाहते हैं कि हमारे न्यूरल नेटवर्क में सभी मान उचित पैमाने के भीतर हों, आमतौर पर [-1..1] या [0..1]। यह एक बहुत सख्त आवश्यकता नहीं है, लेकिन फ्लोटिंग पॉइंट गणनाओं की प्रकृति ऐसी है कि विभिन्न परिमाण के मानों को एक साथ सटीक रूप से संचालित नहीं किया जा सकता। उदाहरण के लिए, यदि हम 10-10 और 1010 को जोड़ते हैं, तो हमें संभावना है कि 1010 प्राप्त होगा, क्योंकि छोटा मान बड़े वाले के समान क्रम में "परिवर्तित" हो जाएगा, और इस प्रकार मैन्टिसा खो जाएगा। +संख्यात्मक गणनाओं को अधिक स्थिर बनाने के लिए, हमें यह सुनिश्चित करना चाहिए कि हमारे न्यूरल नेटवर्क के सभी मान उचित स्केल में हों, आमतौर पर [-1..1] या [0..1]। यह कोई बहुत सख्त आवश्यकता नहीं है, लेकिन फ्लोटिंग पॉइंट गणनाओं की प्रकृति ऐसी है कि विभिन्न परिमाणों के मानों को एक साथ सटीक रूप से हेरफेर नहीं किया जा सकता। उदाहरण के लिए, यदि हम 10-10 और 1010 जोड़ते हैं, तो हमें संभवतः 1010 मिलेगा, क्योंकि छोटा मान बड़े वाले के समान क्रम में "परिवर्तित" हो जाएगा, और इस प्रकार मैन्टिसा खो जाएगी। -अधिकांश सक्रियण फ़ंक्शंस में [-1..1] के चारों ओर गैर-रेखीयताएँ होती हैं, और इसलिए सभी इनपुट डेटा को [-1..1] या [0..1] अंतराल में स्केल करना समझदारी है। +अधिकांश एक्टिवेशन फंक्शन्स में [-1..1] के आसपास गैर-रेखीयता होती है, और इसलिए यह समझ में आता है कि सभी इनपुट डेटा को [-1..1] या [0..1] अंतराल में स्केल किया जाए। -## प्रारंभिक वजन प्रारंभिककरण +## प्रारंभिक वेट इनिशियलाइज़ेशन -आदर्श रूप से, हम चाहते हैं कि नेटवर्क लेयर्स के माध्यम से गुजरने के बाद मान एक ही रेंज में हों। इसलिए यह महत्वपूर्ण है कि वजन को इस प्रकार प्रारंभिककरण किया जाए कि मानों का वितरण संरक्षित रहे। +आदर्श रूप से, हम चाहते हैं कि नेटवर्क लेयर्स से गुजरने के बाद मान समान सीमा में रहें। इसलिए वेट्स को इस तरह से इनिशियलाइज़ करना महत्वपूर्ण है कि मानों का वितरण संरक्षित रहे। -सामान्य वितरण **N(0,1)** एक अच्छा विचार नहीं है, क्योंकि यदि हमारे पास *n* इनपुट हैं, तो आउटपुट का मानक विचलन *n* होगा, और मान [0..1] अंतराल से बाहर निकलने की संभावना है। +सामान्य वितरण **N(0,1)** एक अच्छा विचार नहीं है, क्योंकि यदि हमारे पास *n* इनपुट्स हैं, तो आउटपुट का मानक विचलन *n* होगा, और मान [0..1] अंतराल से बाहर जा सकते हैं। -निम्नलिखित प्रारंभिककरण अक्सर उपयोग किए जाते हैं: +निम्नलिखित इनिशियलाइज़ेशन अक्सर उपयोग किए जाते हैं: - * यूनिफॉर्म वितरण -- `uniform` - * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** यह सुनिश्चित करता है कि शून्य औसत और 1 के मानक विचलन वाले इनपुट के लिए वही औसत/मानक विचलन बना रहे - * **N(0,√2/(n_in+n_out))** -- जिसे **Xavier प्रारंभिककरण** (`glorot`) कहा जाता है, यह आगे और पीछे प्रसार के दौरान संकेतों को सीमा में बनाए रखने में मदद करता है +- यूनिफॉर्म वितरण -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** यह सुनिश्चित करता है कि शून्य माध्य और मानक विचलन 1 वाले इनपुट्स के लिए वही माध्य/मानक विचलन बना रहेगा। +- **N(0,√2/(n_in+n_out))** -- जिसे **Xavier initialization** (`glorot`) कहा जाता है, यह फॉरवर्ड और बैकवर्ड प्रोपेगेशन दोनों के दौरान सिग्नल्स को सीमा में रखने में मदद करता है। -## बैच सामान्यीकरण +## बैच नॉर्मलाइज़ेशन -सही वजन प्रारंभिककरण के साथ भी, प्रशिक्षण के दौरान वजन मनमाने रूप से बड़े या छोटे हो सकते हैं, और वे संकेतों को उचित सीमा से बाहर ले जाएंगे। हम एक **सामान्यीकरण** तकनीक का उपयोग करके संकेतों को वापस ला सकते हैं। जबकि इनमें से कई हैं (वजन सामान्यीकरण, परत सामान्यीकरण), सबसे अधिक उपयोग किया जाने वाला बैच सामान्यीकरण है। +सही वेट इनिशियलाइज़ेशन के बावजूद, प्रशिक्षण के दौरान वेट्स बहुत बड़े या छोटे हो सकते हैं, और वे सिग्नल्स को उचित सीमा से बाहर ले जा सकते हैं। हम **नॉर्मलाइज़ेशन** तकनीकों का उपयोग करके सिग्नल्स को वापस ला सकते हैं। जबकि कई तकनीकें हैं (वेट नॉर्मलाइज़ेशन, लेयर नॉर्मलाइज़ेशन), सबसे अधिक उपयोग की जाने वाली तकनीक बैच नॉर्मलाइज़ेशन है। -**बैच सामान्यीकरण** का विचार यह है कि मिनीबैच के सभी मानों को ध्यान में रखते हुए, और उन मानों के आधार पर सामान्यीकरण (यानी औसत घटाना और मानक विचलन द्वारा विभाजित करना) करना है। इसे एक नेटवर्क परत के रूप में लागू किया जाता है जो वजन लागू करने के बाद यह सामान्यीकरण करता है, लेकिन सक्रियण फ़ंक्शन से पहले। परिणामस्वरूप, हम उच्च अंतिम सटीकता और तेज़ प्रशिक्षण देखने की संभावना रखते हैं। +**बैच नॉर्मलाइज़ेशन** का विचार यह है कि मिनीबैच के सभी मानों को ध्यान में रखा जाए, और उन मानों के आधार पर नॉर्मलाइज़ेशन (जैसे माध्य घटाना और मानक विचलन से विभाजित करना) किया जाए। इसे एक नेटवर्क लेयर के रूप में लागू किया जाता है, जो वेट्स लागू करने के बाद, लेकिन एक्टिवेशन फंक्शन से पहले यह नॉर्मलाइज़ेशन करती है। परिणामस्वरूप, हमें उच्च अंतिम सटीकता और तेज़ प्रशिक्षण देखने को मिलता है। -यहां बैच सामान्यीकरण पर [मूल पेपर](https://arxiv.org/pdf/1502.03167.pdf), [विकिपीडिया पर स्पष्टीकरण](https://en.wikipedia.org/wiki/Batch_normalization), और [एक अच्छा परिचयात्मक ब्लॉग पोस्ट](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (और [रूसी में](https://habrahabr.ru/post/309302/)) है। +यहाँ बैच नॉर्मलाइज़ेशन पर [मूल पेपर](https://arxiv.org/pdf/1502.03167.pdf), [विकिपीडिया पर व्याख्या](https://en.wikipedia.org/wiki/Batch_normalization), और [एक अच्छा परिचयात्मक ब्लॉग पोस्ट](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (और [रूसी में](https://habrahabr.ru/post/309302/)) उपलब्ध है। ## ड्रॉपआउट -**ड्रॉपआउट** एक दिलचस्प तकनीक है जो प्रशिक्षण के दौरान एक निश्चित प्रतिशत यादृच्छिक न्यूरॉन्स को हटा देती है। इसे एक परत के रूप में भी लागू किया गया है जिसमें एक पैरामीटर होता है (हटाने के लिए न्यूरॉन्स का प्रतिशत, आमतौर पर 10%-50%), और प्रशिक्षण के दौरान यह इनपुट वेक्टर के यादृच्छिक तत्वों को शून्य कर देता है, इससे पहले कि इसे अगले परत में भेजा जाए। +**ड्रॉपआउट** एक दिलचस्प तकनीक है जो प्रशिक्षण के दौरान यादृच्छिक न्यूरॉन्स का एक निश्चित प्रतिशत हटा देती है। इसे एक लेयर के रूप में लागू किया जाता है जिसमें एक पैरामीटर होता है (हटाए जाने वाले न्यूरॉन्स का प्रतिशत, आमतौर पर 10%-50%), और प्रशिक्षण के दौरान यह इनपुट वेक्टर के यादृच्छिक तत्वों को शून्य कर देता है, इससे पहले कि इसे अगली लेयर में भेजा जाए। -हालांकि यह एक अजीब विचार की तरह लग सकता है, आप [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) नोटबुक में MNIST अंक वर्गीकरणकर्ता के प्रशिक्षण पर ड्रॉपआउट के प्रभाव को देख सकते हैं। यह प्रशिक्षण को तेज करता है और हमें कम प्रशिक्षण युग में उच्च सटीकता प्राप्त करने की अनुमति देता है। +हालांकि यह विचार अजीब लग सकता है, आप [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) नोटबुक में MNIST डिजिट क्लासिफायर के प्रशिक्षण पर ड्रॉपआउट के प्रभाव को देख सकते हैं। यह प्रशिक्षण को तेज़ करता है और कम प्रशिक्षण युगों में उच्च सटीकता प्राप्त करने की अनुमति देता है। इस प्रभाव को कई तरीकों से समझाया जा सकता है: - * इसे मॉडल के लिए एक यादृच्छिक झटका कारक माना जा सकता है, जो अनुकूलन को स्थानीय न्यूनतम से बाहर ले जाता है - * इसे *अप्रत्यक्ष मॉडल औसत* के रूप में माना जा सकता है, क्योंकि हम कह सकते हैं कि ड्रॉपआउट के दौरान हम थोड़ा अलग मॉडल का प्रशिक्षण कर रहे हैं +- इसे मॉडल के लिए एक यादृच्छिक झटका कारक माना जा सकता है, जो अनुकूलन को स्थानीय न्यूनतम से बाहर ले जाता है। +- इसे *अप्रत्यक्ष मॉडल एवरेजिंग* के रूप में माना जा सकता है, क्योंकि हम कह सकते हैं कि ड्रॉपआउट के दौरान हम थोड़ा अलग मॉडल का प्रशिक्षण कर रहे हैं। -> *कुछ लोग कहते हैं कि जब एक नशे में व्यक्ति कुछ सीखने की कोशिश करता है, तो वह इसे अगले सुबह बेहतर याद रखेगा, एक होशियार व्यक्ति की तुलना में, क्योंकि कुछ खराब काम कर रहे न्यूरॉन्स वाला मस्तिष्क अर्थ को समझने के लिए बेहतर अनुकूलन करता है। हमने कभी यह परीक्षण नहीं किया कि यह सच है या नहीं* +> *कुछ लोग कहते हैं कि जब कोई नशे में व्यक्ति कुछ सीखने की कोशिश करता है, तो वह इसे अगले दिन सुबह बेहतर याद करता है, एक सामान्य व्यक्ति की तुलना में, क्योंकि कुछ खराबी वाले न्यूरॉन्स वाला मस्तिष्क अर्थ को समझने के लिए बेहतर अनुकूलन करता है। हमने कभी यह परीक्षण नहीं किया कि यह सच है या नहीं।* ## ओवरफिटिंग को रोकना -गहरे अध्ययन का एक बहुत महत्वपूर्ण पहलू [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) को रोकने में सक्षम होना है। जबकि बहुत शक्तिशाली न्यूरल नेटवर्क मॉडल का उपयोग करना लुभावना हो सकता है, हमें हमेशा मॉडल के पैरामीटर की संख्या को प्रशिक्षण नमूनों की संख्या के साथ संतुलित करना चाहिए। +डीप लर्निंग का एक बहुत महत्वपूर्ण पहलू [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) को रोकने में सक्षम होना है। हालांकि एक बहुत शक्तिशाली न्यूरल नेटवर्क मॉडल का उपयोग करना आकर्षक हो सकता है, हमें हमेशा मॉडल पैरामीटर्स की संख्या और प्रशिक्षण नमूनों की संख्या के बीच संतुलन बनाए रखना चाहिए। -> सुनिश्चित करें कि आप [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) की अवधारणा को समझते हैं जिसे हमने पहले पेश किया था! +> सुनिश्चित करें कि आप [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) की अवधारणा को समझते हैं जिसे हमने पहले पेश किया है! ओवरफिटिंग को रोकने के कई तरीके हैं: - * प्रारंभिक रोकना -- सत्यापन सेट पर त्रुटि की निरंतर निगरानी करना और जब सत्यापन त्रुटि बढ़ना शुरू हो जाए तो प्रशिक्षण रोकना। - * स्पष्ट वजन अपघटन / नियमितीकरण -- उच्च पूर्णांक मानों के लिए हानि फ़ंक्शन में एक अतिरिक्त दंड जोड़ना, जो मॉडल को बहुत अस्थिर परिणाम प्राप्त करने से रोकता है - * मॉडल औसत -- कई मॉडलों को प्रशिक्षित करना और फिर परिणाम का औसत निकालना। यह भिन्नता को कम करने में मदद करता है। - * ड्रॉपआउट (अप्रत्यक्ष मॉडल औसत) +- अर्ली स्टॉपिंग -- वैलिडेशन सेट पर त्रुटि की लगातार निगरानी करना और जब वैलिडेशन त्रुटि बढ़ने लगे तो प्रशिक्षण रोक देना। +- स्पष्ट वेट डिके / रेग्युलराइज़ेशन -- लॉस फंक्शन में वेट्स के उच्च मानों के लिए एक अतिरिक्त दंड जोड़ना, जो मॉडल को बहुत अस्थिर परिणाम देने से रोकता है। +- मॉडल एवरेजिंग -- कई मॉडलों का प्रशिक्षण और फिर परिणामों का औसत निकालना। यह वेरिएंस को कम करने में मदद करता है। +- ड्रॉपआउट (अप्रत्यक्ष मॉडल एवरेजिंग) -## ऑप्टिमाइज़र / प्रशिक्षण एल्गोरिदम +## ऑप्टिमाइज़र्स / प्रशिक्षण एल्गोरिदम -प्रशिक्षण का एक और महत्वपूर्ण पहलू अच्छा प्रशिक्षण एल्गोरिदम चुनना है। जबकि पारंपरिक **ग्रेडिएंट डिसेंट** एक उचित विकल्प है, यह कभी-कभी बहुत धीमा हो सकता है, या अन्य समस्याओं का परिणाम हो सकता है। +प्रशिक्षण का एक और महत्वपूर्ण पहलू एक अच्छा प्रशिक्षण एल्गोरिदम चुनना है। जबकि पारंपरिक **ग्रेडिएंट डिसेंट** एक उचित विकल्प है, यह कभी-कभी बहुत धीमा हो सकता है, या अन्य समस्याओं का कारण बन सकता है। -गहरे अध्ययन में, हम **स्टोकास्टिक ग्रेडिएंट डिसेंट** (SGD) का उपयोग करते हैं, जो एक ग्रेडिएंट डिसेंट है जो मिनीबैचेस पर लागू होता है, जो प्रशिक्षण सेट से यादृच्छिक रूप से चुने जाते हैं। वजन को इस सूत्र का उपयोग करके समायोजित किया जाता है: +डीप लर्निंग में, हम **स्टोकास्टिक ग्रेडिएंट डिसेंट** (SGD) का उपयोग करते हैं, जो प्रशिक्षण सेट से यादृच्छिक रूप से चुने गए मिनीबैच पर लागू ग्रेडिएंट डिसेंट है। वेट्स को इस सूत्र का उपयोग करके समायोजित किया जाता है: wt+1 = wt - η∇ℒ -### संवेग +### मोमेंटम -**संवेग SGD** में, हम पिछले चरणों से एक ग्रेडिएंट का एक भाग रखते हैं। यह तब के समान है जब हम कहीं इनर्शिया के साथ चल रहे होते हैं, और हमें एक अलग दिशा में एक धक्का मिलता है, तो हमारी पथ तुरंत नहीं बदलती, लेकिन मूल गति का कुछ भाग बनाए रखती है। यहां हम *गति* को दर्शाने के लिए एक और वेक्टर v पेश करते हैं: +**मोमेंटम SGD** में, हम पिछले चरणों के ग्रेडिएंट का एक हिस्सा बनाए रखते हैं। यह उस स्थिति के समान है जब हम जड़त्व के साथ कहीं जा रहे होते हैं, और हमें एक अलग दिशा में धक्का मिलता है, तो हमारा प्रक्षेपवक्र तुरंत नहीं बदलता, बल्कि मूल गति का कुछ हिस्सा बनाए रखता है। यहाँ हम *गति* का प्रतिनिधित्व करने के लिए एक और वेक्टर v पेश करते हैं: -* vt+1 = γ vt - η∇ℒ -* wt+1 = wt+vt+1 +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt + vt+1 -यहां पैरामीटर γ यह दर्शाता है कि हम इनर्शिया को कितनी मात्रा में ध्यान में रखते हैं: γ=0 पारंपरिक SGD के लिए है; γ=1 एक शुद्ध गति समीकरण है। +यहाँ पैरामीटर γ यह दर्शाता है कि हम जड़त्व को किस हद तक ध्यान में रखते हैं: γ=0 पारंपरिक SGD के अनुरूप है; γ=1 एक शुद्ध गति समीकरण है। -### एडम, एडेग्रेड, आदि। +### एडम, एडाग्रेड, आदि -चूंकि प्रत्येक परत में हम कुछ मैट्रिक्स Wi द्वारा संकेतों को गुणा करते हैं, ||Wi|| के आधार पर, ग्रेडिएंट या तो घट सकता है और 0 के करीब हो सकता है, या अनंत रूप से बढ़ सकता है। यह फूलते/गायब होते ग्रेडिएंट्स की समस्या का सार है। +चूंकि प्रत्येक लेयर में हम सिग्नल्स को किसी मैट्रिक्स Wi से गुणा करते हैं, ||Wi|| के आधार पर, ग्रेडिएंट या तो घट सकता है और 0 के करीब हो सकता है, या अनिश्चित रूप से बढ़ सकता है। यह Exploding/Vanishing Gradients समस्या का सार है। -इस समस्या का एक समाधान यह है कि हम समीकरण में केवल ग्रेडिएंट की दिशा का उपयोग करें, और पूर्णांक मान को नजरअंदाज करें, अर्थात् +इस समस्या का एक समाधान यह है कि समीकरण में केवल ग्रेडिएंट की दिशा का उपयोग किया जाए, और इसके परिमाण को अनदेखा किया जाए, यानी: -wt+1 = wt - η(∇ℒ/||∇ℒ||), जहां ||∇ℒ|| = √∑(∇ℒ)2 +wt+1 = wt - η(∇ℒ/||∇ℒ||), जहाँ ||∇ℒ|| = √∑(∇ℒ)2 -इस एल्गोरिदम को **एडेग्रेड** कहा जाता है। इसी विचार का उपयोग करने वाले अन्य एल्गोरिदम हैं: **आरएमएसप्रॉप**, **एडम** +इस एल्गोरिदम को **एडाग्रेड** कहा जाता है। इसी विचार का उपयोग करने वाले अन्य एल्गोरिदम: **RMSProp**, **Adam** -> **एडम** को कई अनुप्रयोगों के लिए एक बहुत प्रभावी एल्गोरिदम माना जाता है, इसलिए यदि आप सुनिश्चित नहीं हैं कि कौन सा उपयोग करना है - एडम का उपयोग करें। +> **एडम** को कई अनुप्रयोगों के लिए एक बहुत ही कुशल एल्गोरिदम माना जाता है, इसलिए यदि आप सुनिश्चित नहीं हैं कि किसका उपयोग करना है - एडम का उपयोग करें। ### ग्रेडिएंट क्लिपिंग -ग्रेडिएंट क्लिपिंग उपरोक्त विचार का एक विस्तार है। जब ||∇ℒ|| ≤ θ होता है, तो हम वजन अनुकूलन में मूल ग्रेडिएंट पर विचार करते हैं, और जब ||∇ℒ|| > θ - हम ग्रेडिएंट को इसके मान से विभाजित करते हैं। यहां θ एक पैरामीटर है, अधिकांश मामलों में हम θ=1 या θ=10 ले सकते हैं। +ग्रेडिएंट क्लिपिंग उपरोक्त विचार का एक विस्तार है। जब ||∇ℒ|| ≤ θ, तो हम वेट ऑप्टिमाइज़ेशन में मूल ग्रेडिएंट पर विचार करते हैं, और जब ||∇ℒ|| > θ - तो हम ग्रेडिएंट को उसके नॉर्म से विभाजित करते हैं। यहाँ θ एक पैरामीटर है, अधिकांश मामलों में हम θ=1 या θ=10 ले सकते हैं। -### लर्निंग रेट अपघटन +### लर्निंग रेट डिके -प्रशिक्षण की सफलता अक्सर लर्निंग रेट पैरामीटर η पर निर्भर करती है। यह तार्किक है कि η के बड़े मान तेज़ प्रशिक्षण का परिणाम देते हैं, जो हम आमतौर पर प्रशिक्षण की शुरुआत में चाहते हैं, और फिर η के छोटे मान हमें नेटवर्क को ठीक करने की अनुमति देते हैं। इसलिए, अधिकांश मामलों में हम प्रशिक्षण की प्रक्रिया में η को घटाना चाहते हैं। +प्रशिक्षण की सफलता अक्सर लर्निंग रेट पैरामीटर η पर निर्भर करती है। यह मान लेना तार्किक है कि η के बड़े मान तेज़ प्रशिक्षण का परिणाम देते हैं, जो कि हम आमतौर पर प्रशिक्षण की शुरुआत में चाहते हैं, और फिर η के छोटे मान हमें नेटवर्क को फाइन-ट्यून करने की अनुमति देते हैं। इसलिए, अधिकांश मामलों में हम प्रशिक्षण की प्रक्रिया में η को कम करना चाहते हैं। -यह η को कुछ संख्या (जैसे 0.98) से प्रत्येक प्रशिक्षण युग के बाद गुणा करके किया जा सकता है, या अधिक जटिल **लर्निंग रेट शेड्यूल** का उपयोग करके। +यह प्रत्येक प्रशिक्षण युग के बाद η को किसी संख्या (जैसे 0.98) से गुणा करके किया जा सकता है, या अधिक जटिल **लर्निंग रेट शेड्यूल** का उपयोग करके। ## विभिन्न नेटवर्क आर्किटेक्चर -आपकी समस्या के लिए सही नेटवर्क आर्किटेक्चर का चयन करना कठिन हो सकता है। सामान्यतः, हम एक ऐसे आर्किटेक्चर को अपनाते हैं जिसने हमारे विशिष्ट कार्य (या समान) के लिए काम करने का प्रमाण दिया है। यहाँ कंप्यूटर दृष्टि के लिए न्यूरल नेटवर्क आर्किटेक्चर का [एक अच्छा अवलोकन](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) है। +आपकी समस्या के लिए सही नेटवर्क आर्किटेक्चर का चयन करना मुश्किल हो सकता है। सामान्यतः, हम उस आर्किटेक्चर को चुनेंगे जो हमारे विशिष्ट कार्य (या समान कार्य) के लिए काम करने के लिए सिद्ध हुआ हो। यहाँ कंप्यूटर विज़न के लिए न्यूरल नेटवर्क आर्किटेक्चर का [एक अच्छा अवलोकन](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) है। -> यह महत्वपूर्ण है कि हम एक ऐसा आर्किटेक्चर चुनें जो हमारे पास मौजूद प्रशिक्षण नमूनों की संख्या के लिए पर्याप्त शक्तिशाली हो। बहुत शक्तिशाली मॉडल का चयन [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) का परिणाम हो सकता है +> यह महत्वपूर्ण है कि हम ऐसा आर्किटेक्चर चुनें जो हमारे पास उपलब्ध प्रशिक्षण नमूनों की संख्या के लिए पर्याप्त शक्तिशाली हो। बहुत शक्तिशाली मॉडल का चयन [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) का कारण बन सकता है। -एक और अच्छा तरीका होगा कि हम एक ऐसा आर्किटेक्चर उपयोग करें जो आवश्यक जटिलता के अनुसार अपने आप समायोजित हो। कुछ हद तक, **ResNet** आर्किटेक्चर और **Inception** स्व-संयोजित हैं। [कंप्यूटर दृष्टि आर्किटेक्चर पर अधिक](../07-ConvNets/CNN_Architectures.md) +एक और अच्छा तरीका यह होगा कि ऐसा आर्किटेक्चर उपयोग करें जो आवश्यक जटिलता के अनुसार स्वचालित रूप से समायोजित हो। कुछ हद तक, **ResNet** आर्किटेक्चर और **Inception** स्व-समायोजित हैं। [कंप्यूटर विज़न आर्किटेक्चर पर अधिक जानकारी](../07-ConvNets/CNN_Architectures.md)। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index a174ba53..14fdf826 100644 --- a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,10 +1,19 @@ -# ऑक्सफोर्ड पालतू जानवरों की वर्गीकरण ट्रांसफर लर्निंग का उपयोग करके + +# ऑक्सफोर्ड पालतू जानवरों का वर्गीकरण ट्रांसफर लर्निंग का उपयोग करके [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -कल्पना कीजिए कि आपको पालतू नर्सरी के लिए एक एप्लिकेशन विकसित करने की आवश्यकता है जो सभी पालतू जानवरों को सूचीबद्ध करे। ऐसे एप्लिकेशन की एक बेहतरीन विशेषता यह होगी कि यह एक तस्वीर से नस्ल का स्वतः पता लगाए। इस असाइनमेंट में, हम वास्तविक जीवन के पालतू जानवरों की छवियों को वर्गीकृत करने के लिए ट्रांसफर लर्निंग का उपयोग करेंगे जो [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जानवरों के डेटासेट से हैं। +कल्पना करें कि आपको पालतू जानवरों की नर्सरी के लिए एक ऐसा एप्लिकेशन विकसित करना है जो सभी पालतू जानवरों को सूचीबद्ध कर सके। ऐसे एप्लिकेशन की एक बेहतरीन विशेषता यह होगी कि वह तस्वीर से ही स्वचालित रूप से नस्ल की पहचान कर सके। इस असाइनमेंट में, हम ट्रांसफर लर्निंग का उपयोग करके [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जानवरों के डेटासेट से वास्तविक जीवन की पालतू जानवरों की छवियों को वर्गीकृत करेंगे। ## डेटासेट @@ -18,13 +27,13 @@ !rm images.tar.gz ``` -## नोटबुक प्रारंभ करना +## नोटबुक शुरू करना -[OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) खोलकर लैब शुरू करें। +लैब शुरू करने के लिए [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) खोलें। -## सीखने की बातें +## मुख्य बातें -ट्रांसफर लर्निंग और प्री-ट्रेंड नेटवर्क हमें वास्तविक दुनिया की छवि वर्गीकरण समस्याओं को अपेक्षाकृत आसानी से हल करने की अनुमति देते हैं। हालाँकि, प्री-ट्रेंड नेटवर्क समान प्रकार की छवियों पर अच्छी तरह से काम करते हैं, और यदि हम बहुत अलग छवियों (जैसे चिकित्सा छवियों) को वर्गीकृत करना शुरू करते हैं, तो हमें बहुत खराब परिणाम मिलने की संभावना है। +ट्रांसफर लर्निंग और प्री-ट्रेंड नेटवर्क हमें वास्तविक दुनिया की छवि वर्गीकरण समस्याओं को अपेक्षाकृत आसानी से हल करने की अनुमति देते हैं। हालांकि, प्री-ट्रेंड नेटवर्क समान प्रकार की छवियों पर बेहतर काम करते हैं, और यदि हम बहुत अलग प्रकार की छवियों (जैसे चिकित्सा छवियां) को वर्गीकृत करना शुरू करते हैं, तो हमें संभवतः बहुत खराब परिणाम मिलेंगे। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md index f394d362..70944fa8 100644 --- a/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,100 +1,109 @@ + # ऑटोएन्कोडर्स -जब हम CNNs को प्रशिक्षित करते हैं, तो एक समस्या यह है कि हमें बहुत सारे लेबल वाले डेटा की आवश्यकता होती है। छवि वर्गीकरण के मामले में, हमें छवियों को विभिन्न श्रेणियों में विभाजित करने की आवश्यकता होती है, जो एक मैनुअल प्रयास है। +जब हम CNNs को ट्रेन करते हैं, तो एक समस्या यह होती है कि हमें बहुत सारे लेबल वाले डेटा की आवश्यकता होती है। इमेज क्लासिफिकेशन के मामले में, हमें इमेज को अलग-अलग क्लास में विभाजित करना होता है, जो एक मैनुअल प्रक्रिया है। -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -हालांकि, हम CNN फ़ीचर एक्सट्रैक्टर्स के लिए कच्चे (अनलेबल्ड) डेटा का उपयोग करना चाहते हैं, जिसे **सेल्फ-सुपरवाइज्ड लर्निंग** कहा जाता है। लेबल के बजाय, हम प्रशिक्षण छवियों का उपयोग नेटवर्क इनपुट और आउटपुट दोनों के रूप में करेंगे। **ऑटोएन्कोडर** का मुख्य विचार यह है कि हमारे पास एक **एन्कोडर नेटवर्क** होगा जो इनपुट छवि को कुछ **लेटेंट स्पेस** (सामान्यतः यह किसी छोटे आकार के वेक्टर के रूप में होता है) में परिवर्तित करता है, फिर **डिकोडर नेटवर्क**, जिसका लक्ष्य मूल छवि को पुनर्निर्माण करना होगा। +हालांकि, हम कच्चे (अनलेबल्ड) डेटा का उपयोग CNN फीचर एक्सट्रैक्टर्स को ट्रेन करने के लिए करना चाह सकते हैं, जिसे **सेल्फ-सुपरवाइज्ड लर्निंग** कहा जाता है। लेबल्स के बजाय, हम ट्रेनिंग इमेज को नेटवर्क इनपुट और आउटपुट दोनों के रूप में उपयोग करेंगे। **ऑटोएन्कोडर** का मुख्य विचार यह है कि हमारे पास एक **एन्कोडर नेटवर्क** होगा जो इनपुट इमेज को किसी **लेटेंट स्पेस** (आमतौर पर यह एक छोटे आकार का वेक्टर होता है) में बदल देगा, और फिर एक **डिकोडर नेटवर्क** होगा, जिसका लक्ष्य मूल इमेज को पुनर्निर्मित करना होगा। -> ✅ एक [ऑटोएन्कोडर](https://wikipedia.org/wiki/Autoencoder) "एक प्रकार का कृत्रिम न्यूरल नेटवर्क है जिसका उपयोग अनलेबल्ड डेटा के कुशल कोडिंग सीखने के लिए किया जाता है।" +> ✅ एक [ऑटोएन्कोडर](https://wikipedia.org/wiki/Autoencoder) "एक प्रकार का आर्टिफिशियल न्यूरल नेटवर्क है जिसका उपयोग अनलेबल्ड डेटा के कुशल कोडिंग को सीखने के लिए किया जाता है।" -चूंकि हम एक ऑटोएन्कोडर को मूल छवि से अधिक से अधिक जानकारी को पकड़ने के लिए प्रशिक्षित कर रहे हैं ताकि सटीक पुनर्निर्माण हो सके, नेटवर्क इनपुट छवियों के सर्वोत्तम **एंबेडिंग** को पकड़ने का प्रयास करता है। +चूंकि हम ऑटोएन्कोडर को मूल इमेज से अधिकतम जानकारी को कैप्चर करने के लिए ट्रेन कर रहे हैं ताकि सटीक पुनर्निर्माण हो सके, नेटवर्क इनपुट इमेज का सबसे अच्छा **एम्बेडिंग** खोजने की कोशिश करता है ताकि उसका अर्थ कैप्चर किया जा सके। -![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hi.jpg) +![ऑटोएन्कोडर डायग्राम](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) -> छवि [Keras ब्लॉग](https://blog.keras.io/building-autoencoders-in-keras.html) से +> इमेज [Keras ब्लॉग](https://blog.keras.io/building-autoencoders-in-keras.html) से -## ऑटोएन्कोडर्स के उपयोग के परिदृश्य +## ऑटोएन्कोडर्स का उपयोग करने के परिदृश्य -जबकि मूल छवियों को पुनर्निर्माण करना अपने आप में उपयोगी नहीं लगता, कुछ परिदृश्य हैं जहाँ ऑटोएन्कोडर्स विशेष रूप से उपयोगी हैं: +हालांकि मूल इमेज को पुनर्निर्मित करना अपने आप में उपयोगी नहीं लगता, लेकिन कुछ परिदृश्य हैं जहां ऑटोएन्कोडर्स विशेष रूप से उपयोगी होते हैं: -* **दृश्यता के लिए छवियों के आयाम को कम करना** या **छवि एंबेडिंग का प्रशिक्षण**। आमतौर पर ऑटोएन्कोडर्स PCA की तुलना में बेहतर परिणाम देते हैं, क्योंकि यह छवियों की स्थानिक प्रकृति और पदानुक्रमित विशेषताओं को ध्यान में रखता है। -* **डिनोइज़िंग**, अर्थात् छवि से शोर को हटाना। क्योंकि शोर बहुत सारी बेकार जानकारी ले जाता है, ऑटोएन्कोडर इसे अपेक्षाकृत छोटे लेटेंट स्पेस में समायोजित नहीं कर सकता है, और इस प्रकार यह छवि के केवल महत्वपूर्ण भाग को पकड़ता है। डिनोइज़र को प्रशिक्षित करते समय, हम मूल छवियों के साथ शुरू करते हैं, और ऑटोएन्कोडर के लिए इनपुट के रूप में कृत्रिम रूप से जोड़े गए शोर के साथ छवियों का उपयोग करते हैं। -* **सुपर-रेज़ोल्यूशन**, छवि की संकल्पना बढ़ाना। हम उच्च-रिज़ॉल्यूशन छवियों के साथ शुरू करते हैं, और ऑटोएन्कोडर इनपुट के रूप में कम रिज़ॉल्यूशन वाली छवि का उपयोग करते हैं। -* **जनरेटिव मॉडल**। एक बार जब हम ऑटोएन्कोडर को प्रशिक्षित कर लेते हैं, तो डिकोडर भाग का उपयोग नए ऑब्जेक्ट्स बनाने के लिए किया जा सकता है, जो यादृच्छिक लेटेंट वेक्टर से शुरू होता है। +* **विज़ुअलाइज़ेशन के लिए इमेज का आयाम कम करना** या **इमेज एम्बेडिंग को ट्रेन करना**। आमतौर पर ऑटोएन्कोडर्स PCA से बेहतर परिणाम देते हैं, क्योंकि यह इमेज की स्थानिक प्रकृति और पदानुक्रमित विशेषताओं को ध्यान में रखता है। +* **डिनॉइज़िंग**, यानी इमेज से शोर को हटाना। क्योंकि शोर में बहुत सारी बेकार जानकारी होती है, ऑटोएन्कोडर इसे अपेक्षाकृत छोटे लेटेंट स्पेस में फिट नहीं कर सकता, और इस प्रकार यह केवल इमेज के महत्वपूर्ण हिस्से को कैप्चर करता है। जब हम डिनॉइज़र को ट्रेन करते हैं, तो हम मूल इमेज से शुरू करते हैं और ऑटोएन्कोडर के इनपुट के रूप में कृत्रिम रूप से जोड़े गए शोर वाली इमेज का उपयोग करते हैं। +* **सुपर-रिज़ॉल्यूशन**, यानी इमेज का रिज़ॉल्यूशन बढ़ाना। हम उच्च-रिज़ॉल्यूशन वाली इमेज से शुरू करते हैं और कम रिज़ॉल्यूशन वाली इमेज को ऑटोएन्कोडर इनपुट के रूप में उपयोग करते हैं। +* **जनरेटिव मॉडल्स**। एक बार जब हम ऑटोएन्कोडर को ट्रेन कर लेते हैं, तो डिकोडर भाग का उपयोग यादृच्छिक लेटेंट वेक्टर से नई वस्तुओं को बनाने के लिए किया जा सकता है। ## वेरिएशनल ऑटोएन्कोडर्स (VAE) -पारंपरिक ऑटोएन्कोडर इनपुट डेटा के आयाम को किसी न किसी तरह से कम करते हैं, इनपुट छवियों की महत्वपूर्ण विशेषताओं का पता लगाते हैं। हालाँकि, लेटेंट वेक्टर अक्सर ज्यादा मायने नहीं रखते। दूसरे शब्दों में, MNIST डेटासेट को उदाहरण के रूप में लेते हुए, यह पता लगाना कि कौन से अंकों का संबंध विभिन्न लेटेंट वेक्टर से है, एक आसान कार्य नहीं है, क्योंकि निकटतम लेटेंट वेक्टर आवश्यक रूप से समान अंकों से मेल नहीं खा सकते हैं। +पारंपरिक ऑटोएन्कोडर्स इनपुट डेटा के आयाम को किसी तरह से कम करते हैं, इनपुट इमेज की महत्वपूर्ण विशेषताओं को समझते हैं। हालांकि, लेटेंट वेक्टर अक्सर ज्यादा समझ में नहीं आते। दूसरे शब्दों में, MNIST डेटासेट को उदाहरण के रूप में लेते हुए, यह समझना कि कौन से अंक विभिन्न लेटेंट वेक्टर से मेल खाते हैं, आसान नहीं है, क्योंकि पास के लेटेंट वेक्टर जरूरी नहीं कि एक ही अंक से मेल खाते हों। -दूसरी ओर, *जनरेटिव* मॉडल को प्रशिक्षित करने के लिए लेटेंट स्पेस की कुछ समझ होना बेहतर है। यह विचार हमें **वेरिएशनल ऑटो-एन्कोडर** (VAE) की ओर ले जाता है। +दूसरी ओर, *जनरेटिव* मॉडल्स को ट्रेन करने के लिए लेटेंट स्पेस की कुछ समझ होना बेहतर होता है। यह विचार हमें **वेरिएशनल ऑटोएन्कोडर** (VAE) की ओर ले जाता है। -VAE वह ऑटोएन्कोडर है जो लेटेंट पैरामीटर के *आंकिक वितरण* की भविष्यवाणी करना सीखता है, जिसे **लेटेंट वितरण** कहा जाता है। उदाहरण के लिए, हम चाहते हैं कि लेटेंट वेक्टर सामान्य रूप से कुछ औसत zmean और मानक विचलन zsigma के साथ वितरित हों (दोनों औसत और मानक विचलन कुछ आयाम d के वेक्टर होते हैं)। VAE में एन्कोडर उन पैरामीटर की भविष्यवाणी करना सीखता है, और फिर डिकोडर इस वितरण से एक यादृच्छिक वेक्टर लेता है ताकि वस्तु को पुनर्निर्माण किया जा सके। +VAE वह ऑटोएन्कोडर है जो लेटेंट पैरामीटर्स के *सांख्यिकीय वितरण* की भविष्यवाणी करना सीखता है, जिसे **लेटेंट डिस्ट्रीब्यूशन** कहा जाता है। उदाहरण के लिए, हम चाहते हैं कि लेटेंट वेक्टर सामान्य रूप से zmean और zsigma (दोनों mean और standard deviation कुछ आयाम d के वेक्टर हैं) के साथ वितरित हों। VAE में एन्कोडर इन पैरामीटर्स की भविष्यवाणी करना सीखता है, और फिर डिकोडर इस वितरण से एक यादृच्छिक वेक्टर लेता है ताकि वस्तु को पुनर्निर्मित किया जा सके। -सारांश में: +सारांश: - * इनपुट वेक्टर से, हम `z_mean` और `z_log_sigma` की भविष्यवाणी करते हैं (मानक विचलन की भविष्यवाणी करने के बजाय, हम इसके लॉगरिदम की भविष्यवाणी करते हैं) - * हम वितरण N(zmean,exp(zlog\_sigma)) से एक वेक्टर `sample` का नमूना लेते हैं - * डिकोडर मूल छवि को `sample` को इनपुट वेक्टर के रूप में उपयोग करके डिकोड करने का प्रयास करता है + * इनपुट वेक्टर से, हम `z_mean` और `z_log_sigma` की भविष्यवाणी करते हैं (स्टैंडर्ड डिविएशन की बजाय, हम इसका लॉगरिदम भविष्यवाणी करते हैं) + * हम वितरण N(zmean,exp(zlog\_sigma)) से एक वेक्टर `sample` लेते हैं + * डिकोडर `sample` को इनपुट वेक्टर के रूप में उपयोग करके मूल इमेज को डिकोड करने की कोशिश करता है -> छवि [इस ब्लॉग पोस्ट](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) से है, जिसे इसाक डाइकमैन ने लिखा है +> इमेज [इस ब्लॉग पोस्ट](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) से, लेखक: इसाक डाइकमैन -वेरिएशनल ऑटो-एन्कोडर्स एक जटिल हानि फ़ंक्शन का उपयोग करते हैं जो दो भागों में विभाजित होता है: +वेरिएशनल ऑटोएन्कोडर्स एक जटिल लॉस फंक्शन का उपयोग करते हैं, जिसमें दो भाग होते हैं: -* **पुनर्निर्माण हानि** वह हानि फ़ंक्शन है जो यह दर्शाता है कि पुनर्निर्मित छवि लक्ष्य के कितनी करीब है (यह औसत वर्ग त्रुटि, या MSE हो सकता है)। यह सामान्य ऑटोएन्कोडर्स में वही हानि फ़ंक्शन है। -* **KL हानि**, जो सुनिश्चित करती है कि लेटेंट वेरिएबल वितरण सामान्य वितरण के करीब रहे। यह [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) के विचार पर आधारित है - एक मेट्रिक जो यह अनुमान लगाने के लिए है कि दो सांख्यिकीय वितरण कितने समान हैं। +* **रिकंस्ट्रक्शन लॉस** वह लॉस फंक्शन है जो यह दिखाता है कि पुनर्निर्मित इमेज लक्ष्य के कितनी करीब है (यह Mean Squared Error, या MSE हो सकता है)। यह सामान्य ऑटोएन्कोडर्स में उपयोग किए जाने वाले लॉस फंक्शन के समान है। +* **KL लॉस**, जो यह सुनिश्चित करता है कि लेटेंट वेरिएबल डिस्ट्रीब्यूशन सामान्य वितरण के करीब रहे। यह [कुलबैक-लिबलर डाइवर्जेंस](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) की धारणा पर आधारित है - यह मेट्रिक दो सांख्यिकीय वितरणों की समानता का अनुमान लगाने के लिए उपयोग की जाती है। -VAEs का एक महत्वपूर्ण लाभ यह है कि वे हमें नए चित्रों को अपेक्षाकृत आसानी से उत्पन्न करने की अनुमति देते हैं, क्योंकि हम जानते हैं कि किस वितरण से लेटेंट वेक्टर का नमूना लेना है। उदाहरण के लिए, यदि हम MNIST पर 2D लेटेंट वेक्टर के साथ VAE को प्रशिक्षित करते हैं, तो हम विभिन्न अंकों को प्राप्त करने के लिए लेटेंट वेक्टर के घटकों को भिन्न कर सकते हैं: +VAEs का एक महत्वपूर्ण लाभ यह है कि वे हमें नई इमेज को अपेक्षाकृत आसानी से जनरेट करने की अनुमति देते हैं, क्योंकि हमें पता होता है कि लेटेंट वेक्टर को किस वितरण से सैंपल करना है। उदाहरण के लिए, यदि हम MNIST पर 2D लेटेंट वेक्टर के साथ VAE को ट्रेन करते हैं, तो हम लेटेंट वेक्टर के घटकों को बदलकर विभिन्न अंकों को प्राप्त कर सकते हैं: vaemnist -> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा +> इमेज [दिमित्री सोश्निकोव](http://soshnikov.com) द्वारा -ध्यान दें कि छवियाँ एक-दूसरे में कैसे मिलती हैं, क्योंकि हम लेटेंट पैरामीटर स्पेस के विभिन्न भागों से लेटेंट वेक्टर प्राप्त करना शुरू करते हैं। हम इस स्पेस को 2D में भी दृश्य बना सकते हैं: +ध्यान दें कि कैसे इमेज एक-दूसरे में बदलती हैं, क्योंकि हम लेटेंट पैरामीटर स्पेस के विभिन्न हिस्सों से लेटेंट वेक्टर प्राप्त करना शुरू करते हैं। हम इस स्पेस को 2D में भी विज़ुअलाइज़ कर सकते हैं: vaemnist cluster -> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा +> इमेज [दिमित्री सोश्निकोव](http://soshnikov.com) द्वारा -## ✍️ व्यायाम: ऑटोएन्कोडर्स +## ✍️ अभ्यास: ऑटोएन्कोडर्स -ऑटोएन्कोडर्स के बारे में अधिक जानने के लिए इन संबंधित नोटबुक्स को देखें: +इन संबंधित नोटबुक्स में ऑटोएन्कोडर्स के बारे में और जानें: * [TensorFlow में ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) * [PyTorch में ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) -## ऑटोएन्कोडर्स के गुण +## ऑटोएन्कोडर्स की विशेषताएं -* **डेटा विशेष** - वे केवल उन प्रकार की छवियों के साथ अच्छी तरह से काम करते हैं जिन पर उन्हें प्रशिक्षित किया गया है। उदाहरण के लिए, यदि हम फूलों पर सुपर-रेज़ोल्यूशन नेटवर्क को प्रशिक्षित करते हैं, तो यह चित्रों पर अच्छी तरह से काम नहीं करेगा। इसका कारण यह है कि नेटवर्क प्रशिक्षण डेटासेट से सीखी गई विशेषताओं से बारीकियों को लेकर उच्च रिज़ॉल्यूशन छवि उत्पन्न कर सकता है। -* **हानिकारक** - पुनर्निर्मित छवि मूल छवि के समान नहीं होती है। हानि की प्रकृति उस *हानि फ़ंक्शन* द्वारा परिभाषित होती है जिसका उपयोग प्रशिक्षण के दौरान किया जाता है। -* **अनलेबल्ड डेटा** पर कार्य करता है। +* **डेटा-विशिष्ट** - ये केवल उसी प्रकार की इमेज पर अच्छा काम करते हैं, जिन पर इन्हें ट्रेन किया गया है। उदाहरण के लिए, यदि हम फूलों पर एक सुपर-रिज़ॉल्यूशन नेटवर्क को ट्रेन करते हैं, तो यह पोर्ट्रेट्स पर अच्छा काम नहीं करेगा। ऐसा इसलिए है क्योंकि नेटवर्क उच्च रिज़ॉल्यूशन वाली इमेज को ट्रेनिंग डेटासेट से सीखे गए फीचर्स से बारीक विवरण लेकर बनाता है। +* **लॉसी** - पुनर्निर्मित इमेज मूल इमेज के समान नहीं होती। लॉस की प्रकृति उस *लॉस फंक्शन* द्वारा परिभाषित होती है जिसका उपयोग ट्रेनिंग के दौरान किया गया है। +* **अनलेबल्ड डेटा** पर काम करता है -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## निष्कर्ष -इस पाठ में, आपने AI वैज्ञानिक के लिए उपलब्ध विभिन्न प्रकार के ऑटोएन्कोडर्स के बारे में सीखा। आपने उन्हें बनाना और छवियों को पुनर्निर्माण करने के लिए उनका उपयोग करना सीखा। आपने VAE के बारे में भी सीखा और इसे नए चित्र उत्पन्न करने के लिए कैसे उपयोग करना है। +इस पाठ में, आपने विभिन्न प्रकार के ऑटोएन्कोडर्स के बारे में सीखा जो AI वैज्ञानिकों के लिए उपलब्ध हैं। आपने सीखा कि उन्हें कैसे बनाना है और इमेज को पुनर्निर्मित करने के लिए उनका उपयोग कैसे करना है। आपने VAE के बारे में भी सीखा और नई इमेज जनरेट करने के लिए इसका उपयोग कैसे करना है। ## 🚀 चुनौती -इस पाठ में, आपने छवियों के लिए ऑटोएन्कोडर्स के उपयोग के बारे में सीखा। लेकिन उनका उपयोग संगीत के लिए भी किया जा सकता है! मैजेंटा प्रोजेक्ट के [MusicVAE](https://magenta.tensorflow.org/music-vae) प्रोजेक्ट पर जाएं, जो ऑटोएन्कोडर्स का उपयोग करके संगीत को पुनर्निर्माण करना सीखता है। इस पुस्तकालय के साथ कुछ [प्रयोग](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) करें ताकि आप देख सकें कि आप क्या बना सकते हैं। +इस पाठ में, आपने इमेज के लिए ऑटोएन्कोडर्स का उपयोग करना सीखा। लेकिन इन्हें संगीत के लिए भी उपयोग किया जा सकता है! मैजेंटा प्रोजेक्ट के [MusicVAE](https://magenta.tensorflow.org/music-vae) प्रोजेक्ट को देखें, जो संगीत को पुनर्निर्मित करना सीखने के लिए ऑटोएन्कोडर्स का उपयोग करता है। इस लाइब्रेरी के साथ कुछ [प्रयोग](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) करें और देखें कि आप क्या बना सकते हैं। -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -संदर्भ के लिए, इन संसाधनों में ऑटोएन्कोडर्स के बारे में अधिक पढ़ें: +संदर्भ के लिए, इन संसाधनों में ऑटोएन्कोडर्स के बारे में और पढ़ें: -* [Keras में ऑटोएन्कोडर्स का निर्माण](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Keras में ऑटोएन्कोडर्स बनाना](https://blog.keras.io/building-autoencoders-in-keras.html) * [NeuroHive पर ब्लॉग पोस्ट](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) -* [वेरिएशनल ऑटोएन्कोडर्स की व्याख्या की गई](https://kvfrans.com/variational-autoencoders-explained/) +* [वेरिएशनल ऑटोएन्कोडर्स समझाया गया](https://kvfrans.com/variational-autoencoders-explained/) * [कंडीशनल वेरिएशनल ऑटोएन्कोडर्स](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ## असाइनमेंट -[इस नोटबुक का अंत TensorFlow का उपयोग करते हुए](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) आपको एक 'कार्य' मिलेगा - इसका उपयोग अपने असाइनमेंट के रूप में करें। +[TensorFlow का उपयोग करते हुए इस नोटबुक](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) के अंत में एक 'टास्क' है - इसे अपना असाइनमेंट मानें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/4-ComputerVision/10-GANs/README.md b/translations/hi/lessons/4-ComputerVision/10-GANs/README.md index 54fe2f83..404cbe60 100644 --- a/translations/hi/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/hi/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ -# जनरेटिव एडेवर्सेरियल नेटवर्क्स + +# जनरेटिव एडवर्सेरियल नेटवर्क्स -पिछले अनुभाग में, हमने **जनरेटिव मॉडल** के बारे में सीखा: ऐसे मॉडल जो प्रशिक्षण डेटा सेट में मौजूद छवियों के समान नई छवियां उत्पन्न कर सकते हैं। VAE एक अच्छे जनरेटिव मॉडल का उदाहरण था। +पिछले सेक्शन में, हमने **जनरेटिव मॉडल्स** के बारे में सीखा: ऐसे मॉडल्स जो ट्रेनिंग डेटा सेट में मौजूद इमेजेज़ के समान नई इमेजेज़ जनरेट कर सकते हैं। VAE इसका एक अच्छा उदाहरण था। -## [प्री-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -हालांकि, यदि हम वास्तव में अर्थपूर्ण कुछ उत्पन्न करने की कोशिश करते हैं, जैसे कि उचित संकल्प में एक पेंटिंग, VAE के साथ, हम देखेंगे कि प्रशिक्षण अच्छी तरह से संगठित नहीं होता है। इस उपयोग के मामले के लिए, हमें जनरेटिव मॉडल के लिए विशेष रूप से लक्षित एक और आर्किटेक्चर के बारे में सीखना चाहिए - **जनरेटिव एडेवर्सेरियल नेटवर्क्स**, या GANs। +हालांकि, अगर हम कुछ वास्तव में अर्थपूर्ण जनरेट करने की कोशिश करें, जैसे कि एक पेंटिंग उचित रिज़ॉल्यूशन पर, तो VAE के साथ ट्रेनिंग अच्छी तरह से कन्वर्ज नहीं होती। इस उपयोग के लिए, हमें एक और आर्किटेक्चर के बारे में सीखना चाहिए जो विशेष रूप से जनरेटिव मॉडल्स के लिए डिज़ाइन किया गया है - **जनरेटिव एडवर्सेरियल नेटवर्क्स**, या GANs। -GAN का मुख्य विचार दो न्यूरल नेटवर्क्स को एक-दूसरे के खिलाफ प्रशिक्षित करना है: +GAN का मुख्य विचार दो न्यूरल नेटवर्क्स को एक-दूसरे के खिलाफ ट्रेन करना है: -> छवि द्वारा [Dmitry Soshnikov](http://soshnikov.com) +> चित्र: [दिमित्री सोश्निकोव](http://soshnikov.com) -> ✅ थोड़ा शब्दावली: -> * **जनरेटर** एक नेटवर्क है जो कुछ यादृच्छिक वेक्टर लेता है, और परिणामस्वरूप छवि उत्पन्न करता है -> * **डिस्क्रिमिनेटर** एक नेटवर्क है जो एक छवि लेता है, और इसे बताना चाहिए कि यह एक वास्तविक छवि है (प्रशिक्षण डेटा सेट से), या इसे एक जनरेटर द्वारा उत्पन्न किया गया था। यह मूलतः एक छवि वर्गीकर्ता है। +> ✅ कुछ शब्दावली: +> * **जनरेटर**: यह एक नेटवर्क है जो एक रैंडम वेक्टर लेता है और परिणामस्वरूप एक इमेज जनरेट करता है। +> * **डिस्क्रिमिनेटर**: यह एक नेटवर्क है जो एक इमेज लेता है और यह तय करता है कि वह इमेज असली है (ट्रेनिंग डेटा सेट से) या जनरेटर द्वारा बनाई गई है। यह मूल रूप से एक इमेज क्लासिफायर है। ### डिस्क्रिमिनेटर -डिस्क्रिमिनेटर की आर्किटेक्चर एक साधारण छवि वर्गीकरण नेटवर्क से भिन्न नहीं होती है। सबसे सरल मामले में, यह एक पूर्ण-सम्पर्कित वर्गीकर्ता हो सकता है, लेकिन संभावना है कि यह एक [संविधान नेटवर्क](../07-ConvNets/README.md) होगा। +डिस्क्रिमिनेटर की आर्किटेक्चर एक साधारण इमेज क्लासिफिकेशन नेटवर्क से अलग नहीं होती। सबसे सरल मामले में, यह एक फुली-कनेक्टेड क्लासिफायर हो सकता है, लेकिन अधिकतर यह एक [कन्वोल्यूशनल नेटवर्क](../07-ConvNets/README.md) होगा। -> ✅ संविधान नेटवर्क पर आधारित GAN को [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) कहा जाता है +> ✅ एक कन्वोल्यूशनल नेटवर्क पर आधारित GAN को [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) कहा जाता है। -एक CNN डिस्क्रिमिनेटर निम्नलिखित परतों से बना होता है: कई संकुचन+पूलिंग (जो स्थानिक आकार में घटते हैं) और, एक या अधिक पूर्ण-संयोगित परतें "विशेषता वेक्टर" प्राप्त करने के लिए, अंतिम बाइनरी वर्गीकर्ता। +एक CNN डिस्क्रिमिनेटर में निम्नलिखित लेयर्स होती हैं: कई कन्वोल्यूशंस+पूलिंग्स (स्पैटियल साइज को घटाते हुए) और, एक या अधिक फुली-कनेक्टेड लेयर्स जो "फीचर वेक्टर" बनाती हैं, और अंत में एक बाइनरी क्लासिफायर। -> ✅ इस संदर्भ में 'पूलिंग' एक तकनीक है जो छवि के आकार को कम करती है। "पूलिंग परतें डेटा के आयामों को एक परत में न्यूरॉन क्लस्टरों के आउटपुट को अगले परत में एकल न्यूरॉन में मिलाकर कम करती हैं।" - [स्रोत](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ 'पूलिंग' एक तकनीक है जो इमेज का साइज घटाती है। "पूलिंग लेयर्स डेटा के डाइमेंशन्स को घटाकर एक लेयर के न्यूरॉन क्लस्टर्स के आउटपुट को अगली लेयर के एक न्यूरॉन में जोड़ देती हैं।" - [स्रोत](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### जनरेटर -जनरेटर थोड़ा अधिक जटिल है। आप इसे एक विपरीत डिस्क्रिमिनेटर मान सकते हैं। एक लैटेंट वेक्टर (विशेषता वेक्टर के स्थान पर) से शुरू करते हुए, इसमें आवश्यक आकार/आकृति में परिवर्तित करने के लिए एक पूर्ण-संयोगित परत होती है, उसके बाद डीकंवोल्यूशन्स+अपस्केलिंग होती है। यह [ऑटोएन्कोडर](../09-Autoencoders/README.md) के *डिकोडर* भाग के समान है। +जनरेटर थोड़ा अधिक जटिल होता है। इसे आप एक उल्टे डिस्क्रिमिनेटर के रूप में समझ सकते हैं। यह एक लेटेंट वेक्टर (फीचर वेक्टर की जगह) से शुरू होता है, जिसमें एक फुली-कनेक्टेड लेयर होती है जो इसे आवश्यक साइज/शेप में बदलती है, और उसके बाद डी-कन्वोल्यूशंस+अपस्केलिंग होती है। यह [ऑटोएन्कोडर](../09-Autoencoders/README.md) के *डिकोडर* भाग के समान है। -> ✅ चूंकि संविधान परत को छवि के पार करते हुए एक रैखिक फ़िल्टर के रूप में लागू किया गया है, डीकंवोल्यूशन मूलतः संविधान के समान है, और इसे उसी परत लॉजिक का उपयोग करके लागू किया जा सकता है। +> ✅ क्योंकि कन्वोल्यूशन लेयर को एक लीनियर फिल्टर के रूप में इमेज पर लागू किया जाता है, डी-कन्वोल्यूशन मूल रूप से कन्वोल्यूशन के समान है और इसे समान लेयर लॉजिक का उपयोग करके लागू किया जा सकता है। -> छवि द्वारा [Dmitry Soshnikov](http://soshnikov.com) +> चित्र: [दिमित्री सोश्निकोव](http://soshnikov.com) -### GAN को प्रशिक्षित करना +### GAN की ट्रेनिंग -GAN को **एडेवर्सेरियल** कहा जाता है क्योंकि जनरेटर और डिस्क्रिमिनेटर के बीच एक निरंतर प्रतिस्पर्धा होती है। इस प्रतिस्पर्धा के दौरान, दोनों जनरेटर और डिस्क्रिमिनेटर में सुधार होता है, इस प्रकार नेटवर्क बेहतर और बेहतर चित्र उत्पन्न करना सीखता है। +GANs को **एडवर्सेरियल** कहा जाता है क्योंकि जनरेटर और डिस्क्रिमिनेटर के बीच लगातार प्रतिस्पर्धा होती है। इस प्रतिस्पर्धा के दौरान, दोनों जनरेटर और डिस्क्रिमिनेटर में सुधार होता है, जिससे नेटवर्क बेहतर और बेहतर इमेजेज़ बनाना सीखता है। -प्रशिक्षण दो चरणों में होता है: +ट्रेनिंग दो चरणों में होती है: -* **डिस्क्रिमिनेटर को प्रशिक्षित करना**। यह कार्य काफी सीधा है: हम जनरेटर द्वारा एक बैच छवियों का निर्माण करते हैं, उन्हें 0 लेबल करते हैं, जो नकली छवि का प्रतीक है, और इनपुट डेटा सेट से एक बैच छवियों का उपयोग करते हैं (जिसमें 1 लेबल, वास्तविक छवि)। हम कुछ *डिस्क्रिमिनेटर हानि* प्राप्त करते हैं, और बैकप्रॉप करते हैं। -* **जनरेटर को प्रशिक्षित करना**। यह थोड़ा अधिक जटिल है, क्योंकि हमें सीधे जनरेटर के लिए अपेक्षित आउटपुट नहीं पता है। हम एक जनरेटर के बाद डिस्क्रिमिनेटर से मिलकर बने पूरे GAN नेटवर्क को लेते हैं, इसे कुछ यादृच्छिक वेक्टरों से खिलाते हैं, और परिणाम की अपेक्षा करते हैं कि यह 1 हो (वास्तविक छवियों के लिए)। फिर हम डिस्क्रिमिनेटर के पैरामीटर को फ्रीज करते हैं (हम नहीं चाहते कि इसे इस चरण में प्रशिक्षित किया जाए), और बैकप्रॉप करते हैं। +* **डिस्क्रिमिनेटर की ट्रेनिंग**। यह कार्य काफी सीधा है: हम जनरेटर द्वारा बनाई गई इमेजेज़ का एक बैच जनरेट करते हैं, उन्हें 0 लेबल करते हैं (जो नकली इमेज के लिए है), और इनपुट डेटा सेट से इमेजेज़ का एक बैच लेते हैं (लेबल 1, असली इमेज के साथ)। हम कुछ *डिस्क्रिमिनेटर लॉस* प्राप्त करते हैं और बैकप्रॉप करते हैं। +* **जनरेटर की ट्रेनिंग**। यह थोड़ा अधिक जटिल है, क्योंकि हमें जनरेटर के लिए अपेक्षित आउटपुट सीधे तौर पर नहीं पता होता। हम पूरे GAN नेटवर्क को, जिसमें जनरेटर और डिस्क्रिमिनेटर शामिल हैं, रैंडम वेक्टर के साथ फीड करते हैं और उम्मीद करते हैं कि परिणाम 1 होगा (जो असली इमेज के लिए है)। फिर हम डिस्क्रिमिनेटर के पैरामीटर्स को फ्रीज़ कर देते हैं (हम इसे इस चरण में ट्रेन नहीं करना चाहते) और बैकप्रॉप करते हैं। -इस प्रक्रिया के दौरान, जनरेटर और डिस्क्रिमिनेटर दोनों की हानियाँ महत्वपूर्ण रूप से नहीं घटती हैं। आदर्श स्थिति में, उन्हें दोनो नेटवर्क के प्रदर्शन में सुधार के अनुरूप झूलना चाहिए। +इस प्रक्रिया के दौरान, जनरेटर और डिस्क्रिमिनेटर दोनों के लॉस में कोई महत्वपूर्ण कमी नहीं होती। आदर्श स्थिति में, उन्हें ऑस्सिलेट करना चाहिए, जो दोनों नेटवर्क्स के प्रदर्शन में सुधार को दर्शाता है। ## ✍️ अभ्यास: GANs * [TensorFlow/Keras में GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) * [PyTorch में GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### GAN प्रशिक्षण के साथ समस्याएँ +### GAN ट्रेनिंग की समस्याएं -GANs को प्रशिक्षित करना विशेष रूप से कठिन माना जाता है। यहाँ कुछ समस्याएँ हैं: +GANs को ट्रेन करना विशेष रूप से कठिन माना जाता है। यहां कुछ समस्याएं हैं: -* **मोड पतन**। इस शब्द से हमारा तात्पर्य है कि जनरेटर एक सफल छवि उत्पन्न करना सीखता है जो डिस्क्रिमिनेटर को धोखा देती है, और न कि विभिन्न प्रकार की छवियों का उत्पादन करती है। -* **हाइपरपैरामीटर के प्रति संवेदनशीलता**। अक्सर आप देख सकते हैं कि एक GAN बिल्कुल संगठित नहीं होती है, और फिर अचानक सीखने की दर में कमी आ जाती है जो संगठित होने का परिणाम होती है। -* जनरेटर और डिस्क्रिमिनेटर के बीच **संतुलन** बनाए रखना। कई मामलों में, डिस्क्रिमिनेटर हानि अपेक्षाकृत जल्दी शून्य तक गिर सकती है, जिससे जनरेटर आगे प्रशिक्षित नहीं हो पाता। इसे पार करने के लिए, हम जनरेटर और डिस्क्रिमिनेटर के लिए अलग-अलग सीखने की दरें सेट करने का प्रयास कर सकते हैं, या यदि हानि पहले से ही बहुत कम है तो डिस्क्रिमिनेटर प्रशिक्षण छोड़ सकते हैं। -* **उच्च संकल्प** के लिए प्रशिक्षण। ऑटोएन्कोडर के साथ समान समस्या को दर्शाते हुए, यह समस्या इसलिए उत्पन्न होती है क्योंकि बहुत सारी परतों का पुनर्निर्माण करने से कलाकृतियाँ उत्पन्न होती हैं। इस समस्या का समाधान सामान्यतः **प्रगतिशील वृद्धि** के साथ किया जाता है, जब पहले कुछ परतें कम-रेस छवियों पर प्रशिक्षित होती हैं, और फिर परतें "अनलॉक" या जोड़ी जाती हैं। एक अन्य समाधान यह होगा कि परतों के बीच अतिरिक्त कनेक्शन जोड़े जाएं और एक साथ कई संकल्पों को प्रशिक्षित किया जाए - इसके विवरण के लिए इस [मल्टी-स्केल ग्रेडिएंट GANs पेपर](https://arxiv.org/abs/1903.06048) को देखें। +* **मोड कोलैप्स**। इसका मतलब है कि जनरेटर एक सफल इमेज बनाना सीखता है जो डिस्क्रिमिनेटर को धोखा देती है, लेकिन विभिन्न प्रकार की इमेजेज़ नहीं बनाता। +* **हाइपरपैरामीटर्स के प्रति संवेदनशीलता**। अक्सर आप देख सकते हैं कि GAN बिल्कुल भी कन्वर्ज नहीं हो रहा है, और फिर अचानक लर्निंग रेट में कमी के कारण कन्वर्ज हो जाता है। +* जनरेटर और डिस्क्रिमिनेटर के बीच **संतुलन बनाए रखना**। कई मामलों में डिस्क्रिमिनेटर का लॉस जल्दी से शून्य तक गिर सकता है, जिससे जनरेटर आगे ट्रेन नहीं हो पाता। इसे दूर करने के लिए, हम जनरेटर और डिस्क्रिमिनेटर के लिए अलग-अलग लर्निंग रेट सेट कर सकते हैं, या अगर लॉस पहले से ही बहुत कम है तो डिस्क्रिमिनेटर की ट्रेनिंग को स्किप कर सकते हैं। +* **हाई रिज़ॉल्यूशन के लिए ट्रेनिंग**। यह समस्या ऑटोएन्कोडर्स के समान है, क्योंकि बहुत अधिक लेयर्स को रिकंस्ट्रक्ट करने से आर्टिफैक्ट्स उत्पन्न होते हैं। इस समस्या को आमतौर पर **प्रोग्रेसिव ग्रोइंग** के साथ हल किया जाता है, जहां पहले कुछ लेयर्स को लो-रेस इमेजेज़ पर ट्रेन किया जाता है, और फिर लेयर्स को "अनब्लॉक" या जोड़ा जाता है। एक और समाधान लेयर्स के बीच अतिरिक्त कनेक्शन्स जोड़ना और एक साथ कई रिज़ॉल्यूशंस पर ट्रेनिंग करना है - अधिक जानकारी के लिए इस [मल्टी-स्केल ग्रेडिएंट GANs पेपर](https://arxiv.org/abs/1903.06048) को देखें। -## शैली परिवर्तन +## स्टाइल ट्रांसफर -GANs कलात्मक छवियां उत्पन्न करने का एक शानदार तरीका है। एक और दिलचस्प तकनीक जिसे **शैली परिवर्तन** कहा जाता है, वह एक **सामग्री छवि** लेती है, और इसे एक अलग शैली में फिर से चित्रित करती है, **शैली छवि** से फ़िल्टर लागू करती है। +GANs कलात्मक इमेजेज़ जनरेट करने का एक शानदार तरीका है। एक और दिलचस्प तकनीक है जिसे **स्टाइल ट्रांसफर** कहा जाता है, जो एक **कंटेंट इमेज** लेता है और उसे एक अलग स्टाइल में फिर से बनाता है, **स्टाइल इमेज** से फिल्टर्स लागू करते हुए। यह इस प्रकार काम करता है: -* हम एक यादृच्छिक शोर छवि (या एक सामग्री छवि के साथ, लेकिन समझने के लिए यह यादृच्छिक शोर से शुरू करना आसान है) -* हमारा लक्ष्य एक ऐसी छवि बनाना होगा, जो सामग्री छवि और शैली छवि के करीब हो। यह दो हानि कार्यों द्वारा निर्धारित किया जाएगा: - - **सामग्री हानि** वर्तमान छवि और सामग्री छवि से कुछ परतों पर CNN द्वारा निकाले गए विशेषताओं के आधार पर गणना की जाती है - - **शैली हानि** वर्तमान छवि और शैली छवि के बीच एक चतुर तरीके से गणना की जाती है, जिसमें ग्राम मैट्रिस का उपयोग किया जाता है (अधिक विवरण [उदाहरण नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) में) -* छवि को चिकना बनाने और शोर को हटाने के लिए, हम **वेरिएशन हानि** भी पेश करते हैं, जो पड़ोसी पिक्सेल के बीच औसत दूरी की गणना करती है -* मुख्य अनुकूलन लूप वर्तमान छवि को ग्रेडिएंट डिसेंट (या किसी अन्य अनुकूलन एल्गोरिदम) का उपयोग करके समायोजित करता है ताकि कुल हानि को न्यूनतम किया जा सके, जो तीन हानियों का एक भारित योग है। +* हम एक रैंडम नॉइज़ इमेज (या एक कंटेंट इमेज) से शुरू करते हैं, लेकिन समझने के लिए रैंडम नॉइज़ से शुरू करना आसान है। +* हमारा लक्ष्य ऐसी इमेज बनाना होगा, जो कंटेंट इमेज और स्टाइल इमेज दोनों के करीब हो। इसे दो लॉस फंक्शन्स द्वारा निर्धारित किया जाएगा: + - **कंटेंट लॉस**: यह वर्तमान इमेज और कंटेंट इमेज से CNN द्वारा कुछ लेयर्स पर निकाले गए फीचर्स के आधार पर गणना की जाती है। + - **स्टाइल लॉस**: यह वर्तमान इमेज और स्टाइल इमेज के बीच एक चतुर तरीके से ग्राम मैट्रिसेस का उपयोग करके गणना की जाती है (अधिक विवरण [उदाहरण नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) में)। +* इमेज को स्मूथ और नॉइज़ को हटाने के लिए, हम **वेरिएशन लॉस** भी जोड़ते हैं, जो पड़ोसी पिक्सल्स के बीच औसत दूरी की गणना करता है। +* मुख्य ऑप्टिमाइजेशन लूप वर्तमान इमेज को एडजस्ट करता है, ताकि कुल लॉस (जो सभी तीन लॉसेस का वेटेड सम है) को कम किया जा सके। -## ✍️ उदाहरण: [शैली परिवर्तन](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ उदाहरण: [स्टाइल ट्रांसफर](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [पोस्ट-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## निष्कर्ष -इस पाठ में, आपने GANs के बारे में सीखा और उन्हें कैसे प्रशिक्षित किया जाए। आपने इस प्रकार के न्यूरल नेटवर्क को जिन विशेष चुनौतियों का सामना करना पड़ सकता है, और उनसे पार पाने के कुछ रणनीतियों के बारे में भी सीखा। +इस पाठ में, आपने GANs और उन्हें ट्रेन करने के तरीके के बारे में सीखा। आपने यह भी सीखा कि इस प्रकार के न्यूरल नेटवर्क को किन विशेष चुनौतियों का सामना करना पड़ सकता है, और उनसे निपटने के लिए कुछ रणनीतियां। ## 🚀 चुनौती -अपने स्वयं के चित्रों का उपयोग करके [शैली परिवर्तन नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) पर जाएं। +[स्टाइल ट्रांसफर नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) को अपनी खुद की इमेजेज़ के साथ चलाएं। -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -संदर्भ के लिए, इन संसाधनों में GANs के बारे में अधिक पढ़ें: +GANs के बारे में अधिक पढ़ने के लिए इन संसाधनों को देखें: -* मार्को पासिनी, [10 पाठ जो मैंने एक वर्ष तक GANs को प्रशिक्षित करते समय सीखे](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), एक *de facto* GAN आर्किटेक्चर जिसे विचार करना है +* मार्को पासिनी, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), एक *डि फैक्टो* GAN आर्किटेक्चर जिसे विचार करना चाहिए। * [Azure ML पर GANs का उपयोग करके जनरेटिव आर्ट बनाना](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) ## असाइनमेंट -इस पाठ से जुड़े दो नोटबुक में से एक पर पुनर्विचार करें और अपने स्वयं के चित्रों पर GAN को फिर से प्रशिक्षित करें। आप क्या बना सकते हैं? +इस पाठ से संबंधित दो नोटबुक्स में से एक को फिर से देखें और GAN को अपनी खुद की इमेजेज़ पर फिर से ट्रेन करें। आप क्या बना सकते हैं? -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md index e3570ec0..9e6fba6c 100644 --- a/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,49 +1,187 @@ -YOLO एक वास्तविक समय का एक-पास एल्गोरिदम है। इसका मुख्य विचार निम्नलिखित है: + +# वस्तु पहचान -* छवि को $S\times S$ क्षेत्रों में विभाजित किया जाता है -* प्रत्येक क्षेत्र के लिए, **CNN** $n$ संभावित वस्तुओं, *bounding box* के निर्देशांक और *confidence*=*probability* * IoU की भविष्यवाणी करता है। +अब तक हमने जिन इमेज क्लासिफिकेशन मॉडल्स का उपयोग किया है, वे एक इमेज लेते हैं और एक श्रेणीबद्ध परिणाम उत्पन्न करते हैं, जैसे कि MNIST समस्या में 'संख्या' वर्ग। हालांकि, कई मामलों में हमें केवल यह जानना नहीं होता कि तस्वीर में वस्तुएं हैं - बल्कि हम उनकी सटीक स्थिति का निर्धारण करना चाहते हैं। यही **वस्तु पहचान** का उद्देश्य है। -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hi.png) -> चित्र [official paper](https://arxiv.org/abs/1506.02640) से +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![वस्तु पहचान](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) + +> चित्र [YOLO v2 वेबसाइट](https://pjreddie.com/darknet/yolov2/) से लिया गया है + +## वस्तु पहचान के लिए एक साधारण दृष्टिकोण + +मान लें कि हम एक तस्वीर में बिल्ली को ढूंढना चाहते हैं, तो वस्तु पहचान के लिए एक बहुत ही साधारण दृष्टिकोण निम्नलिखित होगा: + +1. तस्वीर को कई टाइल्स में विभाजित करें। +2. प्रत्येक टाइल पर इमेज क्लासिफिकेशन चलाएं। +3. वे टाइल्स जिनमें पर्याप्त उच्च सक्रियता होती है, उन्हें उस वस्तु को समाहित करने वाला माना जा सकता है। + +![साधारण वस्तु पहचान](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) + +> *चित्र [एक्सरसाइज नोटबुक](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) से लिया गया है* + +हालांकि, यह दृष्टिकोण आदर्श नहीं है, क्योंकि यह केवल वस्तु के बॉक्स की स्थिति को बहुत ही अनिश्चित रूप से निर्धारित करने की अनुमति देता है। अधिक सटीक स्थिति के लिए, हमें **रेग्रेशन** का उपयोग करके बॉक्स के निर्देशांक की भविष्यवाणी करनी होगी - और इसके लिए हमें विशिष्ट डेटासेट्स की आवश्यकता होती है। + +## वस्तु पहचान के लिए रिग्रेशन + +[यह ब्लॉग पोस्ट](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) आकृतियों की पहचान के लिए एक शानदार परिचय प्रदान करता है। + +## वस्तु पहचान के लिए डेटासेट्स + +आप निम्नलिखित डेटासेट्स का सामना कर सकते हैं: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 वर्ग +* [COCO](http://cocodataset.org/#home) - सामान्य वस्तुएं संदर्भ में। 80 वर्ग, बॉक्स और सेगमेंटेशन मास्क + +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) + +## वस्तु पहचान मेट्रिक्स + +### इंटरसेक्शन ओवर यूनियन + +जहां इमेज क्लासिफिकेशन के लिए यह मापना आसान है कि एल्गोरिदम कितना अच्छा प्रदर्शन करता है, वस्तु पहचान के लिए हमें वर्ग की सहीता के साथ-साथ अनुमानित बॉक्स की स्थिति की सटीकता को भी मापना होता है। इसके लिए, हम **इंटरसेक्शन ओवर यूनियन** (IoU) का उपयोग करते हैं, जो मापता है कि दो बॉक्स (या दो मनमाने क्षेत्र) कितनी अच्छी तरह ओवरलैप करते हैं। + +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) + +> *चित्र 2 [इस उत्कृष्ट ब्लॉग पोस्ट](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) से लिया गया है* + +आइडिया सरल है - हम दो आकृतियों के बीच के इंटरसेक्शन क्षेत्र को उनके यूनियन क्षेत्र से विभाजित करते हैं। दो समान क्षेत्रों के लिए, IoU 1 होगा, जबकि पूरी तरह से अलग क्षेत्रों के लिए यह 0 होगा। अन्यथा यह 0 से 1 के बीच भिन्न होगा। हम आमतौर पर केवल उन बॉक्स को मानते हैं जिनके IoU एक निश्चित मान से ऊपर होते हैं। + +### औसत सटीकता (Average Precision) + +मान लें कि हम किसी दिए गए वर्ग $C$ की वस्तुओं को पहचानने की सटीकता मापना चाहते हैं। इसे मापने के लिए हम **औसत सटीकता** मेट्रिक्स का उपयोग करते हैं, जो निम्नलिखित तरीके से गणना की जाती है: + +1. प्रिसिजन-रिकॉल कर्व दिखाता है कि डिटेक्शन थ्रेशहोल्ड मान (0 से 1 तक) के आधार पर सटीकता कैसे बदलती है। +2. थ्रेशहोल्ड के आधार पर, हमें इमेज में अधिक या कम वस्तुएं मिलेंगी, और प्रिसिजन और रिकॉल के अलग-अलग मान मिलेंगे। +3. कर्व इस प्रकार दिखेगा: + + + +> *चित्र [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) से लिया गया है* + +किसी दिए गए वर्ग $C$ के लिए औसत सटीकता इस कर्व के नीचे का क्षेत्र है। अधिक सटीक रूप से, रिकॉल अक्ष को आमतौर पर 10 भागों में विभाजित किया जाता है, और प्रिसिजन को उन सभी बिंदुओं पर औसत किया जाता है: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP और IoU + +हम केवल उन डिटेक्शन को मानेंगे जिनके IoU एक निश्चित मान से ऊपर हैं। उदाहरण के लिए, PASCAL VOC डेटासेट में आमतौर पर $\mbox{IoU Threshold} = 0.5$ माना जाता है, जबकि COCO में AP विभिन्न $\mbox{IoU Threshold}$ मानों के लिए मापा जाता है। + + + +> *चित्र [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) से लिया गया है* + +### मीन औसत सटीकता - mAP + +वस्तु पहचान के लिए मुख्य मेट्रिक **मीन औसत सटीकता** या **mAP** कहलाती है। यह औसत सटीकता का मान है, जो सभी वस्तु वर्गों और कभी-कभी $\mbox{IoU Threshold}$ पर भी औसत होता है। अधिक विस्तार से, **mAP** की गणना की प्रक्रिया [इस ब्लॉग पोस्ट](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) में वर्णित है, और [यहां कोड नमूनों के साथ](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) भी। + +## वस्तु पहचान के विभिन्न दृष्टिकोण + +वस्तु पहचान एल्गोरिदम की दो व्यापक श्रेणियां हैं: + +* **रीजन प्रपोजल नेटवर्क्स** (R-CNN, Fast R-CNN, Faster R-CNN)। मुख्य विचार है **रीजन ऑफ इंटरेस्ट्स** (ROI) उत्पन्न करना और उनके ऊपर CNN चलाना, अधिकतम सक्रियता की तलाश करना। यह साधारण दृष्टिकोण के समान है, सिवाय इसके कि ROI अधिक चतुर तरीके से उत्पन्न किए जाते हैं। ऐसे तरीकों की एक प्रमुख कमी यह है कि वे धीमे होते हैं, क्योंकि हमें इमेज पर CNN क्लासिफायर के कई पास की आवश्यकता होती है। +* **वन-पास** (YOLO, SSD, RetinaNet) विधियां। इन आर्किटेक्चर में हम नेटवर्क को एक ही पास में वर्ग और ROI दोनों की भविष्यवाणी करने के लिए डिज़ाइन करते हैं। + +### R-CNN: रीजन-बेस्ड CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) का उपयोग करता है ताकि ROI क्षेत्रों की एक पदानुक्रमित संरचना उत्पन्न की जा सके, जिन्हें फिर CNN फीचर एक्सट्रैक्टर्स और SVM-क्लासिफायर के माध्यम से पास किया जाता है ताकि वस्तु वर्ग निर्धारित किया जा सके, और *बॉक्स* निर्देशांक निर्धारित करने के लिए रिग्रेशन का उपयोग किया जाता है। [आधिकारिक पेपर](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) + +> *चित्र van de Sande et al. ICCV’11 से लिया गया है* + +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) + +> *चित्र [इस ब्लॉग](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) से लिया गया है* + +### F-RCNN - फास्ट R-CNN + +यह दृष्टिकोण R-CNN के समान है, लेकिन क्षेत्रों को तब परिभाषित किया जाता है जब कॉन्वोल्यूशन लेयर्स लागू हो चुकी होती हैं। + +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) + +> चित्र [आधिकारिक पेपर](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 से लिया गया है + +### फास्टर R-CNN + +इस दृष्टिकोण का मुख्य विचार है कि ROI की भविष्यवाणी करने के लिए न्यूरल नेटवर्क का उपयोग किया जाए - जिसे *रीजन प्रपोजल नेटवर्क* कहा जाता है। [पेपर](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) + +> चित्र [आधिकारिक पेपर](https://arxiv.org/pdf/1506.01497.pdf) से लिया गया है + +### R-FCN: रीजन-बेस्ड फुली कॉन्वोल्यूशनल नेटवर्क + +यह एल्गोरिदम फास्टर R-CNN से भी तेज है। मुख्य विचार निम्नलिखित है: + +1. हम ResNet-101 का उपयोग करके फीचर्स निकालते हैं। +2. फीचर्स को **पोजिशन-सेंसिटिव स्कोर मैप** द्वारा प्रोसेस किया जाता है। $C$ वर्गों की प्रत्येक वस्तु को $k\times k$ क्षेत्रों में विभाजित किया जाता है, और हम वस्तुओं के भागों की भविष्यवाणी करने के लिए प्रशिक्षण देते हैं। +3. $k\times k$ क्षेत्रों के प्रत्येक भाग के लिए सभी नेटवर्क वस्तु वर्गों के लिए वोट करते हैं, और अधिकतम वोट वाला वस्तु वर्ग चुना जाता है। + +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) + +> चित्र [आधिकारिक पेपर](https://arxiv.org/abs/1605.06409) से लिया गया है + +### YOLO - यू ओनली लुक वन्स + +YOLO एक रीयलटाइम वन-पास एल्गोरिदम है। मुख्य विचार निम्नलिखित है: + + * इमेज को $S\times S$ क्षेत्रों में विभाजित किया जाता है। + * प्रत्येक क्षेत्र के लिए, **CNN** $n$ संभावित वस्तुओं, *बॉक्स* निर्देशांक और *कॉन्फिडेंस*=*संभावना* * IoU की भविष्यवाणी करता है। + + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) + +> चित्र [आधिकारिक पेपर](https://arxiv.org/abs/1506.02640) से लिया गया है ### अन्य एल्गोरिदम -* RetinaNet: [official paper](https://arxiv.org/abs/1708.02002) - - [Torchvision में PyTorch कार्यान्वयन](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - - [Keras कार्यान्वयन](https://github.com/fizyr/keras-retinanet) - - [Keras सैंपल में RetinaNet के साथ वस्तु पहचान](https://keras.io/examples/vision/retinanet/) -* SSD (सिंगल शॉट डिटेक्टर): [official paper](https://arxiv.org/abs/1512.02325) +* RetinaNet: [आधिकारिक पेपर](https://arxiv.org/abs/1708.02002) + - [Torchvision में PyTorch इम्प्लीमेंटेशन](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras इम्प्लीमेंटेशन](https://github.com/fizyr/keras-retinanet) + - [RetinaNet के साथ वस्तु पहचान](https://keras.io/examples/vision/retinanet/) Keras सैंपल्स में +* SSD (सिंगल शॉट डिटेक्टर): [आधिकारिक पेपर](https://arxiv.org/abs/1512.02325) ## ✍️ अभ्यास: वस्तु पहचान -अपने अध्ययन को निम्नलिखित नोटबुक में जारी रखें: +अगले नोटबुक में अपनी सीख जारी रखें: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) ## निष्कर्ष -इस पाठ में आपने वस्तु पहचान के विभिन्न तरीकों का संक्षिप्त दौरा किया! +इस पाठ में आपने वस्तु पहचान को पूरा करने के विभिन्न तरीकों का संक्षिप्त दौरा किया! ## 🚀 चुनौती -इन लेखों और नोटबुकों को YOLO के बारे में पढ़ें और खुद आजमाएं +इन लेखों और नोटबुक्स को पढ़ें और YOLO को स्वयं आजमाएं: -* YOLO का वर्णन करने वाला [अच्छा ब्लॉग पोस्ट](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) +* [YOLO का वर्णन करने वाला अच्छा ब्लॉग पोस्ट](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) * [आधिकारिक साइट](https://pjreddie.com/darknet/yolo/) - * Yolo: [Keras कार्यान्वयन](https://github.com/experiencor/keras-yolo2), [कदम-दर-कदम नोटबुक](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [Keras कार्यान्वयन](https://github.com/experiencor/keras-yolo2), [कदम-दर-कदम नोटबुक](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO: [Keras इम्प्लीमेंटेशन](https://github.com/experiencor/keras-yolo2), [स्टेप-बाय-स्टेप नोटबुक](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Keras इम्प्लीमेंटेशन](https://github.com/experiencor/keras-yolo2), [स्टेप-बाय-स्टेप नोटबुक](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [पाठ के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) -## समीक्षा & आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -* [वस्तु पहचान](https://tjmachinelearning.com/lectures/1718/obj/) निखिल सर्डाना द्वारा +* [वस्तु पहचान](https://tjmachinelearning.com/lectures/1718/obj/) निखिल सरदाना द्वारा * [वस्तु पहचान एल्गोरिदम की अच्छी तुलना](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [वस्तु पहचान के लिए गहरे शिक्षण एल्गोरिदम की समीक्षा](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [बुनियादी वस्तु पहचान एल्गोरिदम का कदम-दर-कदम परिचय](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [वस्तु पहचान के लिए Python में Faster R-CNN का कार्यान्वयन](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [वस्तु पहचान के लिए डीप लर्निंग एल्गोरिदम की समीक्षा](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [मूल वस्तु पहचान एल्गोरिदम का चरण-दर-चरण परिचय](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python में Faster R-CNN का इम्प्लीमेंटेशन वस्तु पहचान के लिए](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) ## [असाइनमेंट: वस्तु पहचान](lab/README.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index fce4af7d..0875905a 100644 --- a/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# हेड डिटेक्शन हॉलीवुड हेड्स डेटासेट का उपयोग करके + +# हॉलीवुड हेड्स डेटासेट का उपयोग करके हेड डिटेक्शन -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -वीडियो निगरानी कैमरा स्ट्रीम पर लोगों की संख्या की गणना करना एक महत्वपूर्ण कार्य है जो हमें दुकानों में आगंतुकों की संख्या, रेस्तरां में व्यस्त समय आदि का अनुमान लगाने की अनुमति देगा। इस कार्य को हल करने के लिए, हमें विभिन्न कोणों से मानव सिर का पता लगाने में सक्षम होना चाहिए। मानव सिर का पता लगाने के लिए ऑब्जेक्ट डिटेक्शन मॉडल को प्रशिक्षित करने के लिए, हम [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) का उपयोग कर सकते हैं। +वीडियो सर्विलांस कैमरा स्ट्रीम पर लोगों की संख्या गिनना एक महत्वपूर्ण कार्य है, जो हमें दुकानों में आगंतुकों की संख्या, रेस्तरां में व्यस्त समय आदि का अनुमान लगाने में मदद करेगा। इस कार्य को हल करने के लिए, हमें विभिन्न कोणों से मानव सिर का पता लगाने में सक्षम होना चाहिए। मानव सिर का पता लगाने के लिए ऑब्जेक्ट डिटेक्शन मॉडल को प्रशिक्षित करने के लिए, हम [हॉलीवुड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/) का उपयोग कर सकते हैं। ## डेटासेट -[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) में 369,846 मानव सिर हैं जो हॉलीवुड फिल्मों के 224,740 मूवी फ्रेम में एनोटेट किए गए हैं। इसे [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) प्रारूप में प्रदान किया गया है, जहाँ प्रत्येक छवि के लिए एक XML विवरण फ़ाइल भी होती है जो इस तरह दिखती है: +[हॉलीवुड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) में 369,846 मानव सिर शामिल हैं, जो हॉलीवुड फिल्मों के 224,740 मूवी फ्रेम्स में एनोटेट किए गए हैं। इसे [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) फॉर्मेट में प्रदान किया गया है, जहां प्रत्येक इमेज के लिए एक XML विवरण फ़ाइल भी होती है, जो इस प्रकार दिखती है: ```xml @@ -48,19 +57,19 @@ ``` -इस डेटासेट में केवल एक वस्तु की श्रेणी `head` है, और प्रत्येक सिर के लिए, आपको बाउंडिंग बॉक्स के निर्देशांक मिलते हैं। आप Python लाइब्रेरी का उपयोग करके XML को पार्स कर सकते हैं, या [इस लाइब्रेरी](https://pypi.org/project/pascal-voc/) का उपयोग कर सकते हैं ताकि सीधे PASCAL VOC प्रारूप से निपट सकें। +इस डेटासेट में केवल एक ऑब्जेक्ट क्लास `head` है, और प्रत्येक सिर के लिए आपको बॉक्स की सीमाओं के निर्देशांक मिलते हैं। आप XML को Python लाइब्रेरीज़ का उपयोग करके पार्स कर सकते हैं, या [इस लाइब्रेरी](https://pypi.org/project/pascal-voc/) का उपयोग करके सीधे PASCAL VOC फॉर्मेट के साथ काम कर सकते हैं। ## ऑब्जेक्ट डिटेक्शन का प्रशिक्षण -आप निम्नलिखित तरीकों में से किसी एक का उपयोग करके ऑब्जेक्ट डिटेक्शन मॉडल को प्रशिक्षित कर सकते हैं: +आप ऑब्जेक्ट डिटेक्शन मॉडल को निम्नलिखित तरीकों में से किसी एक का उपयोग करके प्रशिक्षित कर सकते हैं: -* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) और इसके Python API का उपयोग करके मॉडल को प्रोग्रामेटिक रूप से क्लाउड में प्रशिक्षित करें। कस्टम विजन मॉडल को प्रशिक्षित करने के लिए कुछ सौ छवियों से अधिक का उपयोग नहीं कर सकेगा, इसलिए आपको डेटासेट को सीमित करने की आवश्यकता हो सकती है। -* [Keras ट्यूटोरियल](https://keras.io/examples/vision/retinanet/) से उदाहरण का उपयोग करके RetinaNet मॉडल को प्रशिक्षित करना। -* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) में निर्मित मॉड्यूल का उपयोग करना। +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) और इसका Python API का उपयोग करके क्लाउड में प्रोग्रामेटिक रूप से मॉडल को प्रशिक्षित करें। कस्टम विजन कुछ सौ इमेज से अधिक का उपयोग मॉडल को प्रशिक्षित करने के लिए नहीं कर सकता, इसलिए आपको डेटासेट को सीमित करना पड़ सकता है। +* [Keras tutorial](https://keras.io/examples/vision/retinanet/) के उदाहरण का उपयोग करके RetunaNet मॉडल को प्रशिक्षित करें। +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) में उपलब्ध मॉड्यूल का उपयोग करें। ## निष्कर्ष -ऑब्जेक्ट डिटेक्शन एक ऐसा कार्य है जो उद्योग में अक्सर आवश्यक होता है। जबकि कुछ सेवाएँ हैं जिनका उपयोग ऑब्जेक्ट डिटेक्शन करने के लिए किया जा सकता है (जैसे [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), यह समझना महत्वपूर्ण है कि ऑब्जेक्ट डिटेक्शन कैसे काम करता है और अपने स्वयं के मॉडल को प्रशिक्षित करने में सक्षम होना चाहिए। +ऑब्जेक्ट डिटेक्शन एक ऐसा कार्य है जिसकी उद्योग में अक्सर आवश्यकता होती है। जबकि कुछ सेवाएं हैं जो ऑब्जेक्ट डिटेक्शन करने के लिए उपयोग की जा सकती हैं (जैसे [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), यह समझना महत्वपूर्ण है कि ऑब्जेक्ट डिटेक्शन कैसे काम करता है और अपने स्वयं के मॉडल को प्रशिक्षित करने में सक्षम होना चाहिए। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md index 0e1458b0..729070a1 100644 --- a/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,69 +1,78 @@ + # विभाजन -हमने पहले ऑब्जेक्ट डिटेक्शन के बारे में सीखा है, जो हमें *बाउंडिंग बॉक्स* की भविष्यवाणी करके छवि में वस्तुओं को स्थानांतरित करने की अनुमति देता है। हालाँकि, कुछ कार्यों के लिए हमें केवल बाउंडिंग बॉक्स की आवश्यकता नहीं होती है, बल्कि अधिक सटीक वस्तु स्थानांतरण की भी आवश्यकता होती है। इस कार्य को **विभाजन** कहा जाता है। +हमने पहले ऑब्जेक्ट डिटेक्शन के बारे में सीखा था, जो हमें *बाउंडिंग बॉक्सेस* की भविष्यवाणी करके इमेज में ऑब्जेक्ट्स को लोकेट करने की अनुमति देता है। हालांकि, कुछ कार्यों के लिए हमें केवल बाउंडिंग बॉक्सेस की आवश्यकता नहीं होती, बल्कि ऑब्जेक्ट्स का अधिक सटीक स्थानीयकरण चाहिए। इस कार्य को **विभाजन (Segmentation)** कहा जाता है। -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -विभाजन को **पिक्सेल वर्गीकरण** के रूप में देखा जा सकता है, जबकि छवि के **प्रत्येक** पिक्सेल के लिए हमें उसकी श्रेणी की भविष्यवाणी करनी होती है (*पृष्ठभूमि* एक श्रेणी है)। दो मुख्य विभाजन एल्गोरिदम हैं: +विभाजन को **पिक्सल वर्गीकरण** के रूप में देखा जा सकता है, जहां इमेज के **प्रत्येक** पिक्सल के लिए हमें उसका वर्ग (*पृष्ठभूमि* भी एक वर्ग है) की भविष्यवाणी करनी होती है। विभाजन के दो मुख्य प्रकार हैं: -* **सेमांटिक विभाजन** केवल पिक्सेल की श्रेणी बताता है, और एक ही श्रेणी की विभिन्न वस्तुओं के बीच भेद नहीं करता है। -* **इंस्टेंस विभाजन** श्रेणियों को विभिन्न उदाहरणों में विभाजित करता है। +* **सामान्य विभाजन (Semantic segmentation)** केवल पिक्सल का वर्ग बताता है और एक ही वर्ग के अलग-अलग ऑब्जेक्ट्स के बीच भेद नहीं करता। +* **इंस्टेंस विभाजन (Instance segmentation)** वर्गों को अलग-अलग इंस्टेंस में विभाजित करता है। -उदाहरण के लिए, इन भेड़ों को इंस्टेंस विभाजन में विभिन्न वस्तुएं माना जाता है, लेकिन सेमांटिक विभाजन में सभी भेड़ों को एक श्रेणी द्वारा दर्शाया जाता है। +उदाहरण के लिए, इंस्टेंस विभाजन में ये भेड़ें अलग-अलग ऑब्जेक्ट्स हैं, लेकिन सामान्य विभाजन में सभी भेड़ों को एक ही वर्ग में दर्शाया जाता है। -> छवि [इस ब्लॉग पोस्ट](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) से ली गई है। +> चित्र [इस ब्लॉग पोस्ट](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) से लिया गया है। -विभाजन के लिए विभिन्न न्यूरल आर्किटेक्चर हैं, लेकिन सभी की संरचना समान होती है। एक तरह से, यह ऑटोएन्कोडर के समान है जिसे आपने पहले सीखा था, लेकिन मूल छवि को विघटित करने के बजाय, हमारा लक्ष्य एक **मास्क** को विघटित करना है। इस प्रकार, एक विभाजन नेटवर्क के निम्नलिखित भाग होते हैं: +विभाजन के लिए विभिन्न न्यूरल आर्किटेक्चर हैं, लेकिन उनकी संरचना समान होती है। एक तरह से, यह उस ऑटोएन्कोडर के समान है जिसके बारे में आपने पहले सीखा था, लेकिन यहां हमारा लक्ष्य मूल इमेज को पुनर्निर्मित करने के बजाय एक **मास्क** को पुनर्निर्मित करना है। इस प्रकार, विभाजन नेटवर्क में निम्नलिखित भाग होते हैं: -* **एन्कोडर** इनपुट छवि से विशेषताएँ निकालता है। -* **डिकोडर** उन विशेषताओं को **मास्क छवि** में परिवर्तित करता है, जिसमें श्रेणियों की संख्या के अनुसार समान आकार और चैनलों की संख्या होती है। +* **एन्कोडर (Encoder)** इनपुट इमेज से फीचर्स निकालता है। +* **डिकोडर (Decoder)** उन फीचर्स को **मास्क इमेज** में बदलता है, जिसका आकार और चैनल्स की संख्या वर्गों की संख्या के अनुसार होती है। -> छवि [इस प्रकाशन](https://arxiv.org/pdf/2001.05566.pdf) से ली गई है। +> चित्र [इस प्रकाशन](https://arxiv.org/pdf/2001.05566.pdf) से लिया गया है। -हमें विशेष रूप से उस हानि फ़ंक्शन का उल्लेख करना चाहिए जो विभाजन के लिए उपयोग किया जाता है। जब हम पारंपरिक ऑटोएन्कोडर्स का उपयोग करते हैं, तो हमें दो छवियों के बीच समानता को मापने की आवश्यकता होती है, और हम ऐसा करने के लिए औसत वर्ग त्रुटि (MSE) का उपयोग कर सकते हैं। विभाजन में, लक्ष्य मास्क छवि में प्रत्येक पिक्सेल श्रेणी संख्या का प्रतिनिधित्व करता है (तीसरे आयाम के साथ एक-गर्म-कोडित), इसलिए हमें वर्गीकरण के लिए विशिष्ट हानि फ़ंक्शन का उपयोग करने की आवश्यकता होती है - सभी पिक्सेल पर औसत क्रॉस-एंट्रॉपी हानि। यदि मास्क बाइनरी है - **बाइनरी क्रॉस-एंट्रॉपी हानि** (BCE) का उपयोग किया जाता है। +हमें विशेष रूप से उस लॉस फंक्शन का उल्लेख करना चाहिए जो विभाजन के लिए उपयोग किया जाता है। जब क्लासिकल ऑटोएन्कोडर्स का उपयोग करते हैं, तो हमें दो इमेजेस के बीच समानता को मापने की आवश्यकता होती है, और इसके लिए हम मीन स्क्वायर एरर (MSE) का उपयोग कर सकते हैं। विभाजन में, टारगेट मास्क इमेज का प्रत्येक पिक्सल वर्ग संख्या का प्रतिनिधित्व करता है (तीसरे आयाम के साथ वन-हॉट-एन्कोडेड), इसलिए हमें वर्गीकरण के लिए विशिष्ट लॉस फंक्शन का उपयोग करना होता है - क्रॉस-एंट्रॉपी लॉस, जिसे सभी पिक्सल्स पर औसत किया जाता है। यदि मास्क बाइनरी है, तो **बाइनरी क्रॉस-एंट्रॉपी लॉस** (BCE) का उपयोग किया जाता है। -> ✅ एक-गर्म कोडिंग एक वर्ग लेबल को वर्गों की संख्या के बराबर लंबाई के वेक्टर में कोड करने का एक तरीका है। इस तकनीक पर [इस लेख](https://datagy.io/sklearn-one-hot-encode/) पर एक नज़र डालें। +> ✅ वन-हॉट एन्कोडिंग एक तकनीक है जिसमें वर्ग लेबल को वर्गों की संख्या के बराबर लंबाई वाले वेक्टर में एन्कोड किया जाता है। [इस लेख](https://datagy.io/sklearn-one-hot-encode/) में इस तकनीक के बारे में अधिक जानें। -## चिकित्सा इमेजिंग के लिए विभाजन +## मेडिकल इमेजिंग के लिए विभाजन -इस पाठ में, हम चिकित्सा छवियों पर मानव नेवी (जिसे मस्से भी कहा जाता है) को पहचानने के लिए नेटवर्क को प्रशिक्षित करके विभाजन को क्रियान्वित होते हुए देखेंगे। हम PH2 डेटाबेस का उपयोग करेंगे, जो डर्मोस्कोपी छवियों का स्रोत है। इस डेटा सेट में तीन श्रेणियों: सामान्य नेवी, असामान्य नेवी, और मेलेनोमा की 200 छवियाँ शामिल हैं। सभी छवियों में एक संबंधित **मास्क** भी होता है जो नेवी को रेखांकित करता है। +इस पाठ में, हम विभाजन को क्रियान्वित होते हुए देखेंगे, जहां नेटवर्क को मेडिकल इमेजेस में मानव नेवी (जिसे तिल भी कहा जाता है) को पहचानने के लिए प्रशिक्षित किया जाएगा। हम PH2 डेटाबेस का उपयोग करेंगे, जो डर्मोस्कोपी इमेजेस का स्रोत है। इस डेटासेट में तीन वर्गों के 200 इमेजेस हैं: सामान्य नेवस, असामान्य नेवस, और मेलानोमा। सभी इमेजेस में एक संबंधित **मास्क** भी होता है जो नेवस को रेखांकित करता है। -> ✅ यह तकनीक इस प्रकार की चिकित्सा इमेजिंग के लिए विशेष रूप से उपयुक्त है, लेकिन आप अन्य वास्तविक दुनिया के अनुप्रयोगों की कल्पना कैसे कर सकते हैं? +> ✅ यह तकनीक विशेष रूप से इस प्रकार की मेडिकल इमेजिंग के लिए उपयुक्त है, लेकिन आप अन्य वास्तविक दुनिया के अनुप्रयोगों की कल्पना कैसे कर सकते हैं? navi -> PH2 डेटाबेस से छवि +> चित्र PH2 डेटाबेस से लिया गया है। -हम किसी भी नेवी को इसके पृष्ठभूमि से विभाजित करने के लिए एक मॉडल को प्रशिक्षित करेंगे। +हम एक मॉडल को प्रशिक्षित करेंगे जो किसी भी नेवस को उसकी पृष्ठभूमि से विभाजित कर सके। -## ✍️ व्यायाम: सेमांटिक विभाजन +## ✍️ अभ्यास: सामान्य विभाजन -नीचे दिए गए नोटबुक खोलें ताकि आप विभिन्न सेमांटिक विभाजन आर्किटेक्चर के बारे में अधिक जान सकें, उनके साथ काम करने का अभ्यास कर सकें, और उन्हें क्रियान्वित होते हुए देख सकें। +नीचे दिए गए नोटबुक्स खोलें ताकि आप विभिन्न सामान्य विभाजन आर्किटेक्चर के बारे में अधिक जान सकें, उनके साथ काम करने का अभ्यास कर सकें, और उन्हें क्रियान्वित होते हुए देख सकें। -* [सेमांटिक विभाजन पायटॉर्च](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [सेमांटिक विभाजन टेन्सरफ्लो](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [सामान्य विभाजन PyTorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [सामान्य विभाजन TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## निष्कर्ष -विभाजन छवि वर्गीकरण के लिए एक बहुत शक्तिशाली तकनीक है, जो बाउंडिंग बॉक्स से पिक्सेल स्तर की वर्गीकरण में आगे बढ़ती है। यह चिकित्सा इमेजिंग सहित अन्य अनुप्रयोगों में उपयोग की जाने वाली एक तकनीक है। +विभाजन इमेज वर्गीकरण के लिए एक बहुत ही शक्तिशाली तकनीक है, जो बाउंडिंग बॉक्सेस से आगे बढ़कर पिक्सल-स्तरीय वर्गीकरण तक जाती है। यह तकनीक मेडिकल इमेजिंग सहित अन्य अनुप्रयोगों में उपयोग की जाती है। ## 🚀 चुनौती -शरीर विभाजन केवल एक सामान्य कार्य है जो हम लोगों की छवियों के साथ कर सकते हैं। अन्य महत्वपूर्ण कार्यों में **कंकाल पहचान** और **स्थिति पहचान** शामिल हैं। स्थिति पहचान का उपयोग देखने के लिए [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लाइब्रेरी का प्रयास करें। +शरीर विभाजन इमेजेस में लोगों के साथ किए जाने वाले सामान्य कार्यों में से एक है। अन्य महत्वपूर्ण कार्यों में **कंकाल पहचान** और **पोज़ पहचान** शामिल हैं। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लाइब्रेरी को आज़माएं और देखें कि पोज़ पहचान का उपयोग कैसे किया जा सकता है। -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -यह [विकिपीडिया लेख](https://wikipedia.org/wiki/Image_segmentation) इस तकनीक के विभिन्न अनुप्रयोगों का एक अच्छा अवलोकन प्रदान करता है। इस जांच के क्षेत्र में इंस्टेंस विभाजन और पैनोप्टिक विभाजन के उपडोमेन के बारे में अधिक जानें। +यह [विकिपीडिया लेख](https://wikipedia.org/wiki/Image_segmentation) इस तकनीक के विभिन्न अनुप्रयोगों का अच्छा अवलोकन प्रदान करता है। इस क्षेत्र में इंस्टेंस विभाजन और पैनॉप्टिक विभाजन के उप-डोमेन के बारे में स्वयं अधिक जानें। ## [असाइनमेंट](lab/README.md) -इस प्रयोगशाला में, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) का उपयोग करके **मानव शरीर विभाजन** का प्रयास करें। +इस लैब में, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) का उपयोग करके **मानव शरीर विभाजन** करने का प्रयास करें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md index bc0dd77e..55142f0a 100644 --- a/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ -# मानव शरीर विभाजन + +# मानव शरीर खंडन -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -वीडियो उत्पादन में, उदाहरण के लिए, मौसम पूर्वानुमान में, हमें अक्सर कैमरे से मानव छवि को काटकर इसे अन्य फुटेज के ऊपर रखना होता है। यह आमतौर पर **क्रोमा की** तकनीकों का उपयोग करके किया जाता है, जब एक मानव को एक समान रंग की पृष्ठभूमि के सामने फिल्माया जाता है, जिसे बाद में हटा दिया जाता है। इस प्रयोगशाला में, हम मानव आकृति को काटने के लिए एक न्यूरल नेटवर्क मॉडल का प्रशिक्षण देंगे। +वीडियो प्रोडक्शन में, जैसे कि मौसम पूर्वानुमान में, हमें अक्सर कैमरे से मानव छवि को काटकर किसी अन्य फुटेज पर रखना होता है। यह आमतौर पर **क्रोमा की** तकनीकों का उपयोग करके किया जाता है, जिसमें एक व्यक्ति को एक समान रंग की पृष्ठभूमि के सामने फिल्माया जाता है, जिसे बाद में हटा दिया जाता है। इस लैब में, हम एक न्यूरल नेटवर्क मॉडल को प्रशिक्षित करेंगे ताकि मानव आकृति को काटा जा सके। ## डेटासेट -हम [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) का उपयोग करेंगे, जो Kaggle से है। डेटासेट को मैन्युअल रूप से Kaggle से डाउनलोड करें। +हम [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) का उपयोग करेंगे, जो Kaggle पर उपलब्ध है। इस डेटासेट को Kaggle से मैन्युअली डाउनलोड करें। -## नोटबुक प्रारंभ करना +## प्रारंभिक नोटबुक -[BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) खोलकर प्रयोगशाला शुरू करें। +लैब शुरू करने के लिए [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) खोलें। -## निष्कर्ष +## मुख्य बातें -शरीर विभाजन केवल उन सामान्य कार्यों में से एक है जो हम लोगों की छवियों के साथ कर सकते हैं। अन्य महत्वपूर्ण कार्यों में **स्केलेटन डिटेक्शन** और **पोज़ डिटेक्शन** शामिल हैं। देखें [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) पुस्तकालय यह देखने के लिए कि उन कार्यों को कैसे लागू किया जा सकता है। +शरीर खंडन उन सामान्य कार्यों में से एक है जो हम लोगों की छवियों के साथ कर सकते हैं। अन्य महत्वपूर्ण कार्यों में **कंकाल पहचान** और **पोज़ पहचान** शामिल हैं। यह देखने के लिए [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लाइब्रेरी पर नज़र डालें कि इन कार्यों को कैसे लागू किया जा सकता है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/4-ComputerVision/README.md b/translations/hi/lessons/4-ComputerVision/README.md index 68665c69..67410e36 100644 --- a/translations/hi/lessons/4-ComputerVision/README.md +++ b/translations/hi/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ + # कंप्यूटर विज़न -![कंप्यूटर विज़न सामग्री का सारांश एक डूडल में](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hi.png) +![कंप्यूटर विज़न सामग्री का सारांश एक डूडल में](../../../../lessons/sketchnotes/ai-computervision.png) -इस अनुभाग में हम सीखेंगे: +इस खंड में हम निम्नलिखित के बारे में जानेंगे: * [कंप्यूटर विज़न और OpenCV का परिचय](06-IntroCV/README.md) -* [संविधानिक न्यूरल नेटवर्क](07-ConvNets/README.md) -* [पूर्व-प्रशिक्षित नेटवर्क और ट्रांसफर लर्निंग](08-TransferLearning/README.md) +* [कन्वोल्यूशनल न्यूरल नेटवर्क्स](07-ConvNets/README.md) +* [प्री-ट्रेंड नेटवर्क्स और ट्रांसफर लर्निंग](08-TransferLearning/README.md) * [ऑटोएन्कोडर्स](09-Autoencoders/README.md) -* [जनरेटिव एडवर्सेरियल नेटवर्क](10-GANs/README.md) +* [जेनरेटिव एडवर्सेरियल नेटवर्क्स](10-GANs/README.md) * [ऑब्जेक्ट डिटेक्शन](11-ObjectDetection/README.md) * [सेमांटिक सेगमेंटेशन](12-Segmentation/README.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/13-TextRep/README.md b/translations/hi/lessons/5-NLP/13-TextRep/README.md index 5e2edf2f..4d452755 100644 --- a/translations/hi/lessons/5-NLP/13-TextRep/README.md +++ b/translations/hi/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# पाठ को टेन्सर के रूप में प्रस्तुत करना + +# टेक्स्ट को टेन्सर्स के रूप में प्रस्तुत करना -## [प्रस्तुतिकरण से पहले का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) -## पाठ वर्गीकरण +## टेक्स्ट वर्गीकरण -इस अनुभाग के पहले भाग में, हम **पाठ वर्गीकरण** कार्य पर ध्यान केंद्रित करेंगे। हम [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) डेटासेट का उपयोग करेंगे, जिसमें निम्नलिखित जैसे समाचार लेख शामिल हैं: +इस सेक्शन के पहले भाग में, हम **टेक्स्ट वर्गीकरण** कार्य पर ध्यान केंद्रित करेंगे। हम [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) डेटासेट का उपयोग करेंगे, जिसमें निम्नलिखित जैसे समाचार लेख शामिल हैं: -* श्रेणी: विज्ञान/तकनीक -* शीर्षक: केवाई। कंपनी ने पेप्टाइड्स का अध्ययन करने के लिए अनुदान जीता (एपी) -* सामग्री: एपी - लुइसविले विश्वविद्यालय के एक रसायन विज्ञान शोधकर्ता द्वारा स्थापित एक कंपनी ने विकास के लिए अनुदान जीता... +* श्रेणी: विज्ञान/तकनीक +* शीर्षक: Ky. कंपनी को पेप्टाइड्स का अध्ययन करने के लिए अनुदान मिला (AP) +* बॉडी: AP - लुइसविले विश्वविद्यालय के एक रसायन शोधकर्ता द्वारा स्थापित एक कंपनी को विकास के लिए अनुदान मिला... -हमारा लक्ष्य समाचार सामग्री को पाठ के आधार पर श्रेणियों में वर्गीकृत करना होगा। +हमारा लक्ष्य टेक्स्ट के आधार पर समाचार को एक श्रेणी में वर्गीकृत करना होगा। -## पाठ का प्रतिनिधित्व करना +## टेक्स्ट को प्रस्तुत करना -यदि हम न्यूरल नेटवर्क के साथ प्राकृतिक भाषा प्रसंस्करण (NLP) कार्यों को हल करना चाहते हैं, तो हमें पाठ को टेन्सर के रूप में प्रस्तुत करने का एक तरीका चाहिए। कंप्यूटर पहले से ही पाठ्य वर्णों को संख्याओं के रूप में प्रस्तुत करते हैं जो आपकी स्क्रीन पर फ़ॉन्ट के लिए मैप होते हैं, जैसे एएससीआईआई या यूटीएफ-8 जैसे एन्कोडिंग का उपयोग करके। +यदि हम न्यूरल नेटवर्क के साथ प्राकृतिक भाषा प्रसंस्करण (NLP) कार्यों को हल करना चाहते हैं, तो हमें टेक्स्ट को टेन्सर्स के रूप में प्रस्तुत करने का कोई तरीका चाहिए। कंप्यूटर पहले से ही टेक्स्ट के अक्षरों को संख्याओं के रूप में प्रस्तुत करते हैं, जो आपके स्क्रीन पर फोंट को मैप करते हैं, जैसे ASCII या UTF-8 एन्कोडिंग। -एक वर्ण को एएससीआईआई और बाइनरी प्रतिनिधित्व में मैप करने वाले आरेख को दिखाने वाली छवि +एक अक्षर को ASCII और बाइनरी प्रतिनिधित्व में मैप करने वाले डायग्राम को दिखाने वाली छवि > [छवि स्रोत](https://www.seobility.net/en/wiki/ASCII) -मनुष्यों के रूप में, हम समझते हैं कि प्रत्येक अक्षर **क्या दर्शाता है**, और सभी वर्ण कैसे एक साथ मिलकर वाक्य के शब्द बनाते हैं। हालाँकि, कंप्यूटर अपने आप में ऐसा कोई समझ नहीं रखते हैं, और न्यूरल नेटवर्क को प्रशिक्षण के दौरान अर्थ सीखना होता है। +मनुष्य के रूप में, हम समझते हैं कि प्रत्येक अक्षर **क्या दर्शाता है**, और कैसे सभी अक्षर एक साथ मिलकर एक वाक्य के शब्द बनाते हैं। हालांकि, कंप्यूटर स्वयं ऐसा समझ नहीं पाते हैं, और न्यूरल नेटवर्क को प्रशिक्षण के दौरान अर्थ सीखना पड़ता है। -इसलिए, हम पाठ का प्रतिनिधित्व करते समय विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं: +इसलिए, टेक्स्ट को प्रस्तुत करने के लिए हम विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं: -* **वर्ण-स्तरीय प्रतिनिधित्व**, जब हम पाठ का प्रतिनिधित्व करते हैं और प्रत्येक वर्ण को एक संख्या के रूप में मानते हैं। मान लीजिए कि हमारे पाठ कॉर्पस में *C* विभिन्न वर्ण हैं, तो शब्द *Hello* को 5x*C* टेन्सर द्वारा प्रस्तुत किया जाएगा। प्रत्येक अक्षर एक-गर्मी एन्कोडिंग में एक टेन्सर कॉलम के रूप में होगा। -* **शब्द-स्तरीय प्रतिनिधित्व**, जिसमें हम अपने पाठ में सभी शब्दों का एक **शब्दावली** बनाते हैं, और फिर एक-गर्मी एन्कोडिंग का उपयोग करके शब्दों का प्रतिनिधित्व करते हैं। यह दृष्टिकोण कुछ हद तक बेहतर है, क्योंकि प्रत्येक अक्षर अपने आप में ज्यादा अर्थ नहीं रखता, और इस प्रकार उच्च-स्तरीय सेमांटिक अवधारणाओं - शब्दों - का उपयोग करके, हम न्यूरल नेटवर्क के लिए कार्य को सरल बनाते हैं। हालाँकि, बड़े शब्दकोश के आकार को देखते हुए, हमें उच्च-आयामी विरल टेन्सरों से निपटना होगा। +* **कैरेक्टर-स्तरीय प्रतिनिधित्व**, जिसमें हम टेक्स्ट को प्रत्येक अक्षर को एक संख्या के रूप में मानकर प्रस्तुत करते हैं। मान लें कि हमारे टेक्स्ट कॉर्पस में *C* अलग-अलग अक्षर हैं, तो शब्द *Hello* को 5x*C* टेन्सर के रूप में प्रस्तुत किया जाएगा। प्रत्येक अक्षर एक-हॉट एन्कोडिंग में टेन्सर कॉलम के अनुरूप होगा। +* **वर्ड-स्तरीय प्रतिनिधित्व**, जिसमें हम अपने टेक्स्ट के सभी शब्दों का एक **शब्दकोश** बनाते हैं और फिर शब्दों को एक-हॉट एन्कोडिंग का उपयोग करके प्रस्तुत करते हैं। यह दृष्टिकोण कुछ हद तक बेहतर है, क्योंकि प्रत्येक अक्षर अपने आप में बहुत अधिक अर्थ नहीं रखता है, और इसलिए उच्च-स्तरीय अर्थपूर्ण अवधारणाओं - शब्दों - का उपयोग करके हम न्यूरल नेटवर्क के लिए कार्य को सरल बनाते हैं। हालांकि, बड़े शब्दकोश आकार के कारण, हमें उच्च-आयामी विरल टेन्सर्स से निपटना पड़ता है। -प्रतिनिधित्व की परवाह किए बिना, हमें पहले पाठ को **टोकन** की एक श्रृंखला में परिवर्तित करना होगा, जिसमें एक टोकन या तो एक वर्ण, एक शब्द, या कभी-कभी एक शब्द का हिस्सा होता है। फिर, हम टोकन को एक संख्या में परिवर्तित करते हैं, आमतौर पर **शब्दावली** का उपयोग करके, और यह संख्या एक-गर्मी एन्कोडिंग का उपयोग करके न्यूरल नेटवर्क में डाली जा सकती है। +प्रतिनिधित्व चाहे जो भी हो, हमें पहले टेक्स्ट को **टोकन** के अनुक्रम में बदलना होगा, जिसमें एक टोकन एक अक्षर, एक शब्द, या कभी-कभी एक शब्द का हिस्सा होता है। फिर, हम टोकन को एक संख्या में बदलते हैं, आमतौर पर **शब्दकोश** का उपयोग करके, और इस संख्या को एक-हॉट एन्कोडिंग के माध्यम से न्यूरल नेटवर्क में फीड किया जा सकता है। -## एन-ग्राम +## एन-ग्राम्स -प्राकृतिक भाषा में, शब्दों का सटीक अर्थ केवल संदर्भ में ही निर्धारित किया जा सकता है। उदाहरण के लिए, *न्यूरल नेटवर्क* और *फिशिंग नेटवर्क* के अर्थ पूरी तरह से अलग हैं। इसे ध्यान में रखने के लिए, एक तरीका यह है कि हम अपने मॉडल को शब्दों के जोड़ों पर बनाएं, और शब्द जोड़ों को अलग शब्दावली टोकन के रूप में मानें। इस तरह, वाक्य *I like to go fishing* को टोकनों की निम्नलिखित श्रृंखला द्वारा प्रस्तुत किया जाएगा: *I like*, *like to*, *to go*, *go fishing*। इस दृष्टिकोण की समस्या यह है कि शब्दकोश का आकार काफी बढ़ जाता है, और संयोजन जैसे *go fishing* और *go shopping* को अलग टोकनों द्वारा प्रस्तुत किया जाता है, जो समान क्रिया के बावजूद कोई सेमांटिक समानता साझा नहीं करते हैं। +प्राकृतिक भाषा में, शब्दों का सटीक अर्थ केवल संदर्भ में ही निर्धारित किया जा सकता है। उदाहरण के लिए, *न्यूरल नेटवर्क* और *फिशिंग नेटवर्क* के अर्थ पूरी तरह से अलग हैं। इसे ध्यान में रखने के तरीकों में से एक है कि हम अपने मॉडल को शब्दों के जोड़ों पर बनाएं और शब्द जोड़ों को अलग-अलग शब्दकोश टोकन के रूप में मानें। इस तरह, वाक्य *I like to go fishing* को निम्नलिखित टोकन अनुक्रम द्वारा प्रस्तुत किया जाएगा: *I like*, *like to*, *to go*, *go fishing*। इस दृष्टिकोण की समस्या यह है कि शब्दकोश का आकार काफी बढ़ जाता है, और *go fishing* और *go shopping* जैसे संयोजन अलग-अलग टोकन द्वारा प्रस्तुत किए जाते हैं, जो समान क्रिया के बावजूद कोई अर्थपूर्ण समानता साझा नहीं करते हैं। -कुछ मामलों में, हम त्रिग्राम का उपयोग करने पर विचार कर सकते हैं - तीन शब्दों के संयोजन - भी। इस प्रकार की दृष्टिकोण को अक्सर **n-grams** कहा जाता है। इसके अलावा, वर्ण-स्तरीय प्रतिनिधित्व के साथ n-grams का उपयोग करना समझ में आता है, जिसमें n-grams लगभग विभिन्न स्वर के अनुरूप होंगे। +कुछ मामलों में, हम त्रि-ग्राम्स -- तीन शब्दों के संयोजन -- का उपयोग करने पर विचार कर सकते हैं। इस प्रकार का दृष्टिकोण अक्सर **एन-ग्राम्स** कहलाता है। साथ ही, कैरेक्टर-स्तरीय प्रतिनिधित्व के साथ एन-ग्राम्स का उपयोग करना समझ में आता है, जिसमें एन-ग्राम्स मोटे तौर पर विभिन्न अक्षरों के समूहों के अनुरूप होंगे। -## बैग-ऑफ-शब्द और TF/IDF +## बैग-ऑफ-वर्ड्स और TF/IDF -पाठ वर्गीकरण जैसे कार्यों को हल करते समय, हमें पाठ का एक निश्चित आकार के वेक्टर के रूप में प्रतिनिधित्व करने में सक्षम होना चाहिए, जिसका उपयोग हम अंतिम घनत्व वर्गीकरणकर्ता के लिए इनपुट के रूप में करेंगे। ऐसा करने के सबसे सरल तरीकों में से एक सभी व्यक्तिगत शब्द प्रतिनिधित्वों को संयोजित करना है, जैसे कि उन्हें जोड़ना। यदि हम प्रत्येक शब्द के एक-गर्मी एन्कोडिंग को जोड़ते हैं, तो हम आवृत्तियों का एक वेक्टर प्राप्त करेंगे, जो दिखाएगा कि प्रत्येक शब्द पाठ में कितनी बार आता है। पाठ का ऐसा प्रतिनिधित्व **बैग ऑफ वर्ड्स** (BoW) कहलाता है। +जब टेक्स्ट वर्गीकरण जैसे कार्यों को हल करते हैं, तो हमें टेक्स्ट को एक निश्चित आकार के वेक्टर द्वारा प्रस्तुत करने में सक्षम होना चाहिए, जिसे हम अंतिम घने वर्गीकरणकर्ता के इनपुट के रूप में उपयोग करेंगे। इसे करने के सबसे सरल तरीकों में से एक है सभी व्यक्तिगत शब्द प्रतिनिधित्वों को जोड़ना, जैसे कि उन्हें जोड़कर। यदि हम प्रत्येक शब्द की एक-हॉट एन्कोडिंग को जोड़ते हैं, तो हमें आवृत्तियों का एक वेक्टर मिलेगा, जो दिखाएगा कि टेक्स्ट के अंदर प्रत्येक शब्द कितनी बार दिखाई देता है। टेक्स्ट का ऐसा प्रतिनिधित्व **बैग ऑफ वर्ड्स** (BoW) कहलाता है। -> छवि लेखक द्वारा +> लेखक द्वारा बनाई गई छवि -BoW मूल रूप से यह दर्शाता है कि कौन से शब्द पाठ में और कितनी मात्रा में आते हैं, जो वास्तव में यह बताने का एक अच्छा संकेत हो सकता है कि पाठ किस बारे में है। उदाहरण के लिए, राजनीति पर एक समाचार लेख में *president* और *country* जैसे शब्द हो सकते हैं, जबकि वैज्ञानिक प्रकाशन में *collider*, *discovered* आदि जैसे शब्द होंगे। इस प्रकार, शब्द आवृत्तियाँ कई मामलों में पाठ की सामग्री का एक अच्छा संकेतक हो सकती हैं। +BoW मूल रूप से यह दर्शाता है कि टेक्स्ट में कौन से शब्द दिखाई देते हैं और किस मात्रा में, जो वास्तव में यह संकेत दे सकता है कि टेक्स्ट किस बारे में है। उदाहरण के लिए, राजनीति पर समाचार लेख में *president* और *country* जैसे शब्द होने की संभावना है, जबकि वैज्ञानिक प्रकाशन में *collider*, *discovered* जैसे शब्द हो सकते हैं। इस प्रकार, शब्द आवृत्तियां कई मामलों में टेक्स्ट सामग्री का एक अच्छा संकेतक हो सकती हैं। -BoW की समस्या यह है कि कुछ सामान्य शब्द, जैसे *and*, *is*, आदि अधिकांश पाठों में आते हैं, और उनकी उच्चतम आवृत्तियाँ होती हैं, जो वास्तव में महत्वपूर्ण शब्दों को छुपा देती हैं। हम इन शब्दों के महत्व को इस बात पर विचार करके कम कर सकते हैं कि शब्द पूरे दस्तावेज़ संग्रह में कितनी बार आते हैं। यह TF/IDF दृष्टिकोण के पीछे का मुख्य विचार है, जिसे इस पाठ के साथ संलग्न नोटबुक में अधिक विस्तार से कवर किया गया है। +BoW की समस्या यह है कि कुछ सामान्य शब्द, जैसे *and*, *is*, आदि अधिकांश टेक्स्ट में दिखाई देते हैं, और उनकी उच्चतम आवृत्तियां होती हैं, जो वास्तव में महत्वपूर्ण शब्दों को छिपा देती हैं। हम इन शब्दों के महत्व को कम कर सकते हैं, पूरे दस्तावेज़ संग्रह में शब्दों के होने की आवृत्ति को ध्यान में रखते हुए। यही मुख्य विचार है TF/IDF दृष्टिकोण के पीछे, जिसे इस पाठ से जुड़े नोटबुक्स में अधिक विस्तार से कवर किया गया है। -हालांकि, इनमें से कोई भी दृष्टिकोण पाठ की **सेमांटिक्स** को पूरी तरह से ध्यान में नहीं रख सकता है। हमें ऐसा अधिक शक्तिशाली न्यूरल नेटवर्क मॉडल की आवश्यकता है जो ऐसा कर सके, जिसके बारे में हम इस अनुभाग में बाद में चर्चा करेंगे। +हालांकि, इनमें से कोई भी दृष्टिकोण टेक्स्ट के **अर्थ** को पूरी तरह से ध्यान में नहीं रख सकता। हमें इसे करने के लिए अधिक शक्तिशाली न्यूरल नेटवर्क मॉडल की आवश्यकता है, जिसे हम इस सेक्शन में बाद में चर्चा करेंगे। -## ✍️ व्यायाम: पाठ प्रतिनिधित्व +## ✍️ अभ्यास: टेक्स्ट प्रतिनिधित्व -नीचे दिए गए नोटबुक में अपनी शिक्षा जारी रखें: +अगले नोटबुक्स में अपना अध्ययन जारी रखें: -* [PyTorch के साथ पाठ प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) -* [TensorFlow के साथ पाठ प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) +* [PyTorch के साथ टेक्स्ट प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow के साथ टेक्स्ट प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## निष्कर्ष -अब तक, हमने विभिन्न शब्दों को आवृत्ति वजन जोड़ने की तकनीकों का अध्ययन किया है। हालाँकि, वे अर्थ या क्रम का प्रतिनिधित्व करने में असमर्थ हैं। जैसा कि प्रसिद्ध भाषाविद् जे. आर. फर्थ ने 1935 में कहा था, "एक शब्द का पूर्ण अर्थ हमेशा संदर्भित होता है, और संदर्भ के अलावा अर्थ का कोई अध्ययन गंभीरता से नहीं लिया जा सकता।" हम बाद में पाठ को भाषा मॉडलिंग का उपयोग करके संदर्भ संबंधी जानकारी कैसे कैप्चर करें, यह सीखेंगे। +अब तक, हमने ऐसी तकनीकों का अध्ययन किया है जो विभिन्न शब्दों को आवृत्ति भार प्रदान कर सकती हैं। हालांकि, वे अर्थ या क्रम को प्रस्तुत करने में असमर्थ हैं। प्रसिद्ध भाषाविद् जे. आर. फर्थ ने 1935 में कहा था, "शब्द का पूरा अर्थ हमेशा संदर्भात्मक होता है, और संदर्भ से अलग अर्थ का कोई अध्ययन गंभीरता से नहीं लिया जा सकता।" हम इस पाठ्यक्रम में बाद में सीखेंगे कि भाषा मॉडलिंग का उपयोग करके टेक्स्ट से संदर्भात्मक जानकारी कैसे प्राप्त करें। ## 🚀 चुनौती -बैग-ऑफ-शब्द और विभिन्न डेटा मॉडलों का उपयोग करके कुछ अन्य व्यायाम करने का प्रयास करें। आप इस [कग्गल प्रतियोगिता](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) से प्रेरित हो सकते हैं। +बैग-ऑफ-वर्ड्स और विभिन्न डेटा मॉडल का उपयोग करके कुछ अन्य अभ्यास आज़माएं। आप इस [Kaggle प्रतियोगिता](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) से प्रेरित हो सकते हैं। -## [प्रस्तुतिकरण के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) पर पाठ एम्बेडिंग और बैग-ऑफ-शब्द तकनीकों के साथ अपने कौशल का अभ्यास करें। +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) पर टेक्स्ट एम्बेडिंग और बैग-ऑफ-वर्ड्स तकनीकों के साथ अपने कौशल का अभ्यास करें। -## [असाइनमेंट: नोटबुक](assignment.md) +## [असाइनमेंट: नोटबुक्स](assignment.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/13-TextRep/assignment.md b/translations/hi/lessons/5-NLP/13-TextRep/assignment.md index e856ead6..809111ad 100644 --- a/translations/hi/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/hi/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ -# असाइनमेंट: नोटबुक + +# असाइनमेंट: नोटबुक्स -इस पाठ से जुड़े नोटबुक का उपयोग करते हुए (या तो PyTorch या TensorFlow संस्करण), उन्हें अपने डेटा सेट का उपयोग करके फिर से चलाएं, शायद कोई ऐसा डेटा सेट जो Kaggle से हो, जिसका उपयोग क्रेडिट के साथ किया गया हो। नोटबुक को इस तरह से फिर से लिखें कि आपकी अपनी खोजों को रेखांकित किया जा सके। कुछ नवोन्मेषी डेटा सेट का प्रयास करें जो आश्चर्यजनक साबित हो सकते हैं, जैसे कि [यह यूएफओ दृष्टियों के बारे में](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC से। +इस पाठ से संबंधित नोटबुक्स (चाहे वह PyTorch संस्करण हो या TensorFlow संस्करण), उन्हें अपने स्वयं के डेटा सेट का उपयोग करके पुनः चलाएं, शायद Kaggle से लिया गया हो, और उचित श्रेय के साथ उपयोग किया गया हो। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों को उजागर किया जा सके। कुछ नवीन डेटा सेट आज़माएं जो आश्चर्यजनक साबित हो सकते हैं, जैसे [यह यूएफओ देखे जाने के बारे में](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC से। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/5-NLP/14-Embeddings/README.md b/translations/hi/lessons/5-NLP/14-Embeddings/README.md index 2e9ba20e..cb69f831 100644 --- a/translations/hi/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/hi/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ -# एम्बेडिंग + +# एम्बेडिंग्स ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -जब हमने BoW या TF/IDF के आधार पर वर्गीकर्ता प्रशिक्षित किए, तो हमने उच्च-आयामी बैग-ऑफ-शब्द वेक्टर पर काम किया, जिसकी लंबाई `vocab_size` है, और हम स्पष्ट रूप से निम्न-आयामी स्थिति प्रतिनिधित्व वेक्टर कोSparse one-hot प्रतिनिधित्व में परिवर्तित कर रहे थे। हालाँकि, यह one-hot प्रतिनिधित्व मेमोरी-कुशल नहीं है। इसके अतिरिक्त, प्रत्येक शब्द को एक-दूसरे से स्वतंत्र रूप से माना जाता है, अर्थात् one-hot एन्कोडेड वेक्टर शब्दों के बीच किसी भी अर्थात्मक समानता को व्यक्त नहीं करते हैं। +जब हमने BoW या TF/IDF आधारित क्लासिफायर को ट्रेन किया, तो हम उच्च-आयामी बैग-ऑफ-वर्ड्स वेक्टर पर काम कर रहे थे, जिनकी लंबाई `vocab_size` होती है, और हम निम्न-आयामी पोज़िशनल रिप्रेज़ेंटेशन वेक्टर को स्पष्ट रूप से स्पार्स वन-हॉट रिप्रेज़ेंटेशन में बदल रहे थे। हालांकि, यह वन-हॉट रिप्रेज़ेंटेशन मेमोरी-एफिशिएंट नहीं है। इसके अलावा, प्रत्येक शब्द को एक-दूसरे से स्वतंत्र रूप से ट्रीट किया जाता है, यानी वन-हॉट एनकोडेड वेक्टर शब्दों के बीच किसी भी सेमांटिक समानता को व्यक्त नहीं करते। -**एम्बेडिंग** का विचार शब्दों का प्रतिनिधित्व करना है कम-आयामी घनत्व वेक्टर द्वारा, जो किसी तरह से शब्द के अर्थ को दर्शाते हैं। हम बाद में सार्थक शब्द एम्बेडिंग बनाने के तरीके पर चर्चा करेंगे, लेकिन अभी के लिए हम बस एम्बेडिंग को एक शब्द वेक्टर की आयाम को कम करने के तरीके के रूप में सोचते हैं। +**एम्बेडिंग** का विचार यह है कि शब्दों को निम्न-आयामी डेंस वेक्टर द्वारा रिप्रेज़ेंट किया जाए, जो किसी तरह से शब्द के सेमांटिक अर्थ को दर्शाते हैं। हम बाद में चर्चा करेंगे कि अर्थपूर्ण वर्ड एम्बेडिंग्स कैसे बनाई जाएं, लेकिन फिलहाल, एम्बेडिंग्स को शब्द वेक्टर की आयामीयता को कम करने के एक तरीके के रूप में सोचें। -तो, एम्बेडिंग परत एक शब्द को इनपुट के रूप में लेगी, और निर्दिष्ट `embedding_size` का आउटपुट वेक्टर उत्पन्न करेगी। एक अर्थ में, यह `Linear` परत के बहुत समान है, लेकिन यह one-hot एन्कोडेड वेक्टर लेने के बजाय, यह एक शब्द संख्या को इनपुट के रूप में ले सकेगी, जिससे हमें बड़े one-hot एन्कोडेड वेक्टर बनाने से बचने की अनुमति मिलती है। +तो, एम्बेडिंग लेयर एक शब्द को इनपुट के रूप में लेगी और निर्दिष्ट `embedding_size` का आउटपुट वेक्टर उत्पन्न करेगी। एक तरह से, यह `Linear` लेयर के समान है, लेकिन यह वन-हॉट एनकोडेड वेक्टर लेने के बजाय, एक शब्द संख्या को इनपुट के रूप में ले सकेगी, जिससे बड़े वन-हॉट-एनकोडेड वेक्टर बनाने से बचा जा सकेगा। -हमारे वर्गीकर्ता नेटवर्क में पहले परत के रूप में एम्बेडिंग परत का उपयोग करके, हम बैग-ऑफ-शब्द से **एम्बेडिंग बैग** मॉडल में स्विच कर सकते हैं, जहाँ हम पहले अपने पाठ में प्रत्येक शब्द को संबंधित एम्बेडिंग में परिवर्तित करते हैं, और फिर उन सभी एम्बेडिंग पर कुछ समग्र फ़ंक्शन की गणना करते हैं, जैसे कि `sum`, `average` या `max`। +हमारे क्लासिफायर नेटवर्क में पहली लेयर के रूप में एम्बेडिंग लेयर का उपयोग करके, हम बैग-ऑफ-वर्ड्स से **एम्बेडिंग बैग** मॉडल में स्विच कर सकते हैं, जहां हम पहले अपने टेक्स्ट के प्रत्येक शब्द को संबंधित एम्बेडिंग में बदलते हैं, और फिर उन सभी एम्बेडिंग्स पर `sum`, `average` या `max` जैसे किसी समग्र फ़ंक्शन की गणना करते हैं। -![पांच अनुक्रम शब्दों के लिए एक एम्बेडिंग वर्गीकरणकर्ता दिखाने वाली छवि।](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hi.png) +![पांच अनुक्रम शब्दों के लिए एक एम्बेडिंग क्लासिफायर दिखाने वाली छवि।](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) -> छवि लेखक द्वारा +> लेखक द्वारा बनाई गई छवि -## ✍️ अभ्यास: एम्बेडिंग +## ✍️ अभ्यास: एम्बेडिंग्स -निम्नलिखित नोटबुक में अपने अध्ययन को जारी रखें: -* [PyTorch के साथ एम्बेडिंग](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [TensorFlow एम्बेडिंग](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +अगले नोटबुक्स में अपनी सीख जारी रखें: +* [PyTorch के साथ एम्बेडिंग्स](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow के साथ एम्बेडिंग्स](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) -## अर्थात्मक एम्बेडिंग: Word2Vec +## सेमांटिक एम्बेडिंग्स: Word2Vec -जबकि एम्बेडिंग परत ने शब्दों को वेक्टर प्रतिनिधित्व में मैप करना सीखा, हालाँकि, यह प्रतिनिधित्व जरूरी नहीं कि बहुत अधिक अर्थात्मक अर्थ रखता हो। यह अच्छा होगा कि एक वेक्टर प्रतिनिधित्व सीखा जाए ताकि समान शब्द या पर्यायवाची वेक्टर एक-दूसरे के करीब हों किसी वेक्टर दूरी (जैसे, यूक्लिडियन दूरी) के संदर्भ में। +हालांकि एम्बेडिंग लेयर ने शब्दों को वेक्टर रिप्रेज़ेंटेशन में मैप करना सीखा, लेकिन यह रिप्रेज़ेंटेशन जरूरी नहीं कि बहुत सेमांटिक अर्थ रखता हो। यह अच्छा होगा कि एक ऐसा वेक्टर रिप्रेज़ेंटेशन सीखा जाए, जिसमें समान शब्द या पर्यायवाची शब्द ऐसे वेक्टर के अनुरूप हों, जो किसी वेक्टर दूरी (जैसे, यूक्लिडियन दूरी) के संदर्भ में एक-दूसरे के करीब हों। -इसके लिए, हमें एक बड़े पाठ संग्रह पर अपने एम्बेडिंग मॉडल को एक विशिष्ट तरीके से पूर्व-प्रशिक्षित करना होगा। अर्थात्मक एम्बेडिंग को प्रशिक्षित करने का एक तरीका [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) कहलाता है। यह दो मुख्य आर्किटेक्चर पर आधारित है जो शब्दों के वितरित प्रतिनिधित्व उत्पन्न करने के लिए उपयोग किया जाता है: +इसके लिए, हमें अपने एम्बेडिंग मॉडल को एक बड़े टेक्स्ट संग्रह पर एक विशिष्ट तरीके से प्री-ट्रेन करना होगा। सेमांटिक एम्बेडिंग्स को ट्रेन करने के एक तरीके को [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) कहा जाता है। यह दो मुख्य आर्किटेक्चर पर आधारित है, जो शब्दों के वितरित रिप्रेज़ेंटेशन को उत्पन्न करने के लिए उपयोग किए जाते हैं: - - **निरंतर बैग-ऑफ-शब्द** (CBoW) — इस आर्किटेक्चर में, हम मॉडल को चारों ओर के संदर्भ से एक शब्द की भविष्यवाणी करने के लिए प्रशिक्षित करते हैं। दिए गए ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, मॉडल का लक्ष्य $(W_{-2},W_{-1},W_1,W_2)$ से $W_0$ की भविष्यवाणी करना है। - - **निरंतर स्किप-ग्राम** CBoW के विपरीत है। मॉडल वर्तमान शब्द की भविष्यवाणी करने के लिए चारों ओर के संदर्भ शब्दों की विंडो का उपयोग करता है। + - **कंटीन्यूस बैग-ऑफ-वर्ड्स** (CBoW) — इस आर्किटेक्चर में, हम मॉडल को संदर्भ के आधार पर एक शब्द की भविष्यवाणी करने के लिए ट्रेन करते हैं। दिए गए ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ में, मॉडल का लक्ष्य $(W_{-2},W_{-1},W_1,W_2)$ से $W_0$ की भविष्यवाणी करना है। + - **कंटीन्यूस स्किप-ग्राम** CBoW के विपरीत है। मॉडल संदर्भ शब्दों की विंडो का उपयोग करके वर्तमान शब्द की भविष्यवाणी करता है। -CBoW तेज है, जबकि स्किप-ग्राम धीमा है, लेकिन कम सामान्य शब्दों का बेहतर प्रतिनिधित्व करता है। +CBoW तेज़ है, जबकि स्किप-ग्राम धीमा है, लेकिन दुर्लभ शब्दों को बेहतर तरीके से रिप्रेज़ेंट करता है। -![शब्दों को वेक्टर में परिवर्तित करने के लिए CBoW और स्किप-ग्राम एल्गोरिदम दोनों को दिखाने वाली छवि।](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png) +![शब्दों को वेक्टर में बदलने के लिए CBoW और स्किप-ग्राम एल्गोरिदम दिखाने वाली छवि।](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) > छवि [इस पेपर](https://arxiv.org/pdf/1301.3781.pdf) से -Word2Vec पूर्व-प्रशिक्षित एम्बेडिंग (जैसे अन्य समान मॉडल, जैसे GloVe) को न्यूरल नेटवर्क में एम्बेडिंग परत के स्थान पर भी उपयोग किया जा सकता है। हालाँकि, हमें शब्दावली से निपटना होगा, क्योंकि Word2Vec/GloVe को पूर्व-प्रशिक्षित करने के लिए उपयोग की गई शब्दावली हमारे पाठ संग्रह में शब्दावली से भिन्न हो सकती है। इस समस्या को हल करने के लिए ऊपर दिए गए नोटबुक पर एक नज़र डालें। +Word2Vec प्री-ट्रेंड एम्बेडिंग्स (और अन्य समान मॉडल जैसे GloVe) को न्यूरल नेटवर्क्स में एम्बेडिंग लेयर के स्थान पर भी उपयोग किया जा सकता है। हालांकि, हमें शब्दावली से निपटना होगा, क्योंकि Word2Vec/GloVe को प्री-ट्रेन करने के लिए उपयोग की गई शब्दावली हमारे टेक्स्ट कॉर्पस की शब्दावली से भिन्न हो सकती है। इस समस्या को हल करने के लिए ऊपर दिए गए नोटबुक्स को देखें। -## संदर्भात्मक एम्बेडिंग +## कॉन्टेक्स्चुअल एम्बेडिंग्स -पारंपरिक पूर्व-प्रशिक्षित एम्बेडिंग प्रतिनिधित्व जैसे Word2Vec की एक प्रमुख सीमा शब्द अर्थ अस्पष्टता की समस्या है। जबकि पूर्व-प्रशिक्षित एम्बेडिंग संदर्भ में शब्दों के कुछ अर्थ को पकड़ सकते हैं, किसी भी शब्द का हर संभव अर्थ उसी एम्बेडिंग में एन्कोड किया जाता है। यह डाउनस्ट्रीम मॉडलों में समस्याएँ पैदा कर सकता है, क्योंकि कई शब्द जैसे 'play' का अर्थ संदर्भ के अनुसार भिन्न होता है जिसमें उनका उपयोग किया जाता है। +पारंपरिक प्री-ट्रेंड एम्बेडिंग रिप्रेज़ेंटेशन जैसे Word2Vec की एक प्रमुख सीमा शब्द अर्थ अस्पष्टता की समस्या है। जबकि प्री-ट्रेंड एम्बेडिंग्स संदर्भ में शब्दों के कुछ अर्थों को कैप्चर कर सकती हैं, एक शब्द के हर संभावित अर्थ को एक ही एम्बेडिंग में एनकोड किया जाता है। यह डाउनस्ट्रीम मॉडल्स में समस्याएं पैदा कर सकता है, क्योंकि कई शब्दों, जैसे 'play', के अलग-अलग अर्थ होते हैं, जो उनके उपयोग के संदर्भ पर निर्भर करते हैं। -उदाहरण के लिए, शब्द 'play' इन दो अलग-अलग वाक्यों में काफी भिन्न अर्थ रखता है: +उदाहरण के लिए, 'play' शब्द का इन दो वाक्यों में काफी अलग अर्थ है: -- मैं थिएटर में एक **नाटक** में गया। -- जॉन अपने दोस्तों के साथ **खेलना** चाहता है। +- मैं थिएटर में एक **play** देखने गया। +- जॉन अपने दोस्तों के साथ **play** करना चाहता है। -उपरोक्त पूर्व-प्रशिक्षित एम्बेडिंग शब्द 'play' के इन दोनों अर्थों का प्रतिनिधित्व उसी एम्बेडिंग में करती है। इस सीमा को दूर करने के लिए, हमें **भाषा मॉडल** के आधार पर एम्बेडिंग बनानी होगी, जो एक बड़े पाठ संग्रह पर प्रशिक्षित है, और *जानता है* कि विभिन्न संदर्भों में शब्दों को कैसे एक साथ रखा जा सकता है। संदर्भात्मक एम्बेडिंग पर चर्चा इस ट्यूटोरियल के दायरे से बाहर है, लेकिन हम पाठ्यक्रम में बाद में भाषा मॉडलों के बारे में बात करते समय उनके पास वापस आएंगे। +ऊपर दी गई प्री-ट्रेंड एम्बेडिंग्स 'play' शब्द के इन दोनों अर्थों को एक ही एम्बेडिंग में रिप्रेज़ेंट करती हैं। इस सीमा को दूर करने के लिए, हमें **भाषा मॉडल** पर आधारित एम्बेडिंग्स बनानी होंगी, जो एक बड़े टेक्स्ट कॉर्पस पर ट्रेन की जाती हैं, और *जानती हैं* कि विभिन्न संदर्भों में शब्दों को कैसे जोड़ा जा सकता है। कॉन्टेक्स्चुअल एम्बेडिंग्स पर चर्चा करना इस ट्यूटोरियल के दायरे से बाहर है, लेकिन हम भाषा मॉडलों पर चर्चा करते समय इस पर वापस आएंगे। ## निष्कर्ष -इस पाठ में, आपने सीखा कि कैसे TensorFlow और Pytorch में एम्बेडिंग परतों का निर्माण और उपयोग किया जाए ताकि शब्दों के अर्थात्मक अर्थों को बेहतर ढंग से दर्शाया जा सके। +इस पाठ में, आपने TensorFlow और PyTorch में एम्बेडिंग लेयर्स को बनाना और उपयोग करना सीखा, ताकि शब्दों के सेमांटिक अर्थों को बेहतर तरीके से दर्शाया जा सके। ## 🚀 चुनौती -Word2Vec का उपयोग कुछ दिलचस्प अनुप्रयोगों के लिए किया गया है, जिसमें गीतों के बोल और कविता का निर्माण शामिल है। [इस लेख](https://www.politetype.com/blog/word2vec-color-poems) पर एक नज़र डालें जो बताता है कि लेखक ने Word2Vec का उपयोग करके कविता कैसे बनाई। [डैन शिफमैन द्वारा इस वीडियो](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) को भी देखें ताकि इस तकनीक का एक अलग स्पष्टीकरण पता चल सके। फिर इन तकनीकों को अपने स्वयं के पाठ संग्रह पर लागू करने का प्रयास करें, जो शायद Kaggle से प्राप्त किया गया हो। +Word2Vec का उपयोग कुछ दिलचस्प अनुप्रयोगों के लिए किया गया है, जैसे गाने के बोल और कविता उत्पन्न करना। [इस लेख](https://www.politetype.com/blog/word2vec-color-poems) को देखें, जिसमें लेखक ने Word2Vec का उपयोग करके कविता उत्पन्न करने की प्रक्रिया को समझाया है। [डैन शिफमैन का यह वीडियो](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) भी देखें, जिसमें इस तकनीक की एक अलग व्याख्या दी गई है। फिर इन तकनीकों को अपने टेक्स्ट कॉर्पस पर लागू करने का प्रयास करें, जिसे आप शायद Kaggle से प्राप्त कर सकते हैं। ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -Word2Vec पर इस पेपर को पढ़ें: [वेक्टर स्पेस में शब्द प्रतिनिधित्व का कुशल अनुमान](https://arxiv.org/pdf/1301.3781.pdf) +Word2Vec पर इस पेपर को पढ़ें: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [असाइनमेंट: नोटबुक](assignment.md) +## [असाइनमेंट: नोटबुक्स](assignment.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न होने वाली किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/14-Embeddings/assignment.md b/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md index 3496efde..95fa1b33 100644 --- a/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ + # असाइनमेंट: नोटबुक्स -इस पाठ से जुड़े नोटबुक्स का उपयोग करते हुए (या तो PyTorch या TensorFlow संस्करण), उन्हें अपने स्वयं के डेटासेट के साथ पुनः चलाएँ, शायद कोई ऐसा डेटासेट जो Kaggle से हो, जिसका उपयोग आप क्रेडिट के साथ करें। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों को रेखांकित किया जा सके। एक अलग प्रकार के डेटासेट का प्रयास करें और अपने निष्कर्षों का दस्तावेजीकरण करें, जैसे [ये बीटल्स के बोल](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) का उपयोग करते हुए। +इस पाठ से संबंधित नोटबुक्स (चाहे वह PyTorch संस्करण हो या TensorFlow संस्करण), अपने स्वयं के डेटा सेट का उपयोग करके पुनः चलाएं, शायद Kaggle से लिया गया हो, और उचित श्रेय के साथ उपयोग किया गया हो। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों को उजागर किया जा सके। एक अलग प्रकार का डेटा सेट आज़माएं और अपने निष्कर्षों को दस्तावेज़ित करें, जैसे [ये Beatles गीत](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) का उपयोग करके। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृभाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/15-LanguageModeling/README.md b/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md index dd05ffa7..3542defd 100644 --- a/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ + # भाषा मॉडलिंग -सामान्य एम्बेडिंग, जैसे कि Word2Vec और GloVe, वास्तव में **भाषा मॉडलिंग** की ओर पहला कदम हैं - ऐसे मॉडल बनाना जो किसी तरह से *समझते* (या *प्रतिनिधित्व करते*) हैं भाषा की प्रकृति। +सामान्य एम्बेडिंग्स, जैसे Word2Vec और GloVe, वास्तव में **भाषा मॉडलिंग** की दिशा में पहला कदम हैं - ऐसे मॉडल बनाना जो किसी तरह भाषा की प्रकृति को *समझते* (या *प्रतिनिधित्व करते*) हैं। -## [प्री-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -भाषा मॉडलिंग के पीछे का मुख्य विचार उन्हें बिना लेबल वाले डेटासेट्स पर बिना पर्यवेक्षण के प्रशिक्षण देना है। यह महत्वपूर्ण है क्योंकि हमारे पास बिना लेबल वाले पाठ की विशाल मात्रा उपलब्ध है, जबकि लेबल वाले पाठ की मात्रा हमेशा उस प्रयास की मात्रा द्वारा सीमित होगी जो हम लेबलिंग पर खर्च कर सकते हैं। अक्सर, हम ऐसे भाषा मॉडल बना सकते हैं जो **पाठ में गायब शब्दों का अनुमान** लगा सकते हैं, क्योंकि पाठ में एक यादृच्छिक शब्द को छिपाना और इसे प्रशिक्षण नमूने के रूप में उपयोग करना आसान है। +भाषा मॉडलिंग के पीछे मुख्य विचार यह है कि इन्हें बिना लेबल वाले डेटा सेट्स पर असुपरवाइज्ड तरीके से प्रशिक्षित किया जाए। यह इसलिए महत्वपूर्ण है क्योंकि हमारे पास बिना लेबल वाले टेक्स्ट की बहुत बड़ी मात्रा उपलब्ध है, जबकि लेबल वाले टेक्स्ट की मात्रा हमेशा सीमित होगी, क्योंकि लेबलिंग में काफी प्रयास लगता है। अक्सर, हम ऐसे भाषा मॉडल बना सकते हैं जो **टेक्स्ट में गायब शब्दों की भविष्यवाणी** कर सकें, क्योंकि टेक्स्ट में किसी रैंडम शब्द को छिपाना और उसे एक प्रशिक्षण नमूने के रूप में उपयोग करना आसान है। -## एम्बेडिंग का प्रशिक्षण +## एम्बेडिंग्स का प्रशिक्षण -हमारे पिछले उदाहरणों में, हमने पूर्व-प्रशिक्षित सामान्य एम्बेडिंग का उपयोग किया, लेकिन यह देखना दिलचस्प है कि उन एम्बेडिंग को कैसे प्रशिक्षित किया जा सकता है। उपयोग के लिए कई संभावित विचार हैं: +पिछले उदाहरणों में, हमने प्री-ट्रेंड सामान्य एम्बेडिंग्स का उपयोग किया था, लेकिन यह देखना दिलचस्प है कि इन एम्बेडिंग्स को कैसे प्रशिक्षित किया जा सकता है। इसके लिए कई संभावित विचार हैं: -* **N-ग्राम** भाषा मॉडलिंग, जब हम N पिछले टोकनों को देखकर एक टोकन का अनुमान लगाते हैं (N-ग्राम) -* **कॉन्टिन्यूअस बैग-ऑफ-वर्ड्स** (CBoW), जब हम टोकन अनुक्रम $W_{-N}$, ..., $W_N$ में मध्य टोकन $W_0$ का अनुमान लगाते हैं। -* **स्किप-ग्राम**, जहाँ हम मध्य टोकन $W_0$ से पड़ोसी टोकनों का सेट {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} का अनुमान लगाते हैं। +* **एन-ग्राम** भाषा मॉडलिंग, जिसमें हम पिछले N टोकन्स को देखकर एक टोकन की भविष्यवाणी करते हैं (N-ग्राम)। +* **कंटीन्युअस बैग-ऑफ-वर्ड्स** (CBoW), जिसमें हम टोकन अनुक्रम $W_{-N}$, ..., $W_N$ में मध्य टोकन $W_0$ की भविष्यवाणी करते हैं। +* **स्किप-ग्राम**, जिसमें हम मध्य टोकन $W_0$ से पड़ोसी टोकन्स {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} के सेट की भविष्यवाणी करते हैं। -![शब्दों को वेक्टर में परिवर्तित करने पर पेपर से छवि](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png) +![शब्दों को वेक्टर में बदलने के लिए एल्गोरिदम पर आधारित छवि](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) -> [इस पेपर](https://arxiv.org/pdf/1301.3781.pdf) से छवि +> छवि [इस पेपर](https://arxiv.org/pdf/1301.3781.pdf) से ली गई है -## ✍️ उदाहरण नोटबुक: CBoW मॉडल का प्रशिक्षण +## ✍️ उदाहरण नोटबुक्स: CBoW मॉडल का प्रशिक्षण -अपने अध्ययन को निम्नलिखित नोटबुक में जारी रखें: +निम्नलिखित नोटबुक्स में अपनी सीख जारी रखें: * [TensorFlow के साथ CBoW Word2Vec का प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) * [PyTorch के साथ CBoW Word2Vec का प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## निष्कर्ष -पिछले पाठ में हमने देखा कि शब्द एम्बेडिंग जादू की तरह काम करते हैं! अब हम जानते हैं कि शब्द एम्बेडिंग को प्रशिक्षित करना बहुत जटिल कार्य नहीं है, और यदि आवश्यक हो तो हमें अपने डोमेन विशेष पाठ के लिए अपने स्वयं के शब्द एम्बेडिंग को प्रशिक्षित करने में सक्षम होना चाहिए। +पिछले पाठ में हमने देखा कि शब्द एम्बेडिंग्स जादू की तरह काम करते हैं! अब हम जानते हैं कि शब्द एम्बेडिंग्स का प्रशिक्षण कोई बहुत जटिल कार्य नहीं है, और यदि आवश्यकता हो तो हम डोमेन-विशिष्ट टेक्स्ट के लिए अपने स्वयं के शब्द एम्बेडिंग्स प्रशिक्षित कर सकते हैं। -## [पोस्ट-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन * [भाषा मॉडलिंग पर आधिकारिक PyTorch ट्यूटोरियल](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)। -* [Word2Vec मॉडल को प्रशिक्षित करने पर आधिकारिक TensorFlow ट्यूटोरियल](https://www.TensorFlow.org/tutorials/text/word2vec)। -* **gensim** ढांचे का उपयोग करके कुछ पंक्तियों में सबसे सामान्य एम्बेडिंग को प्रशिक्षित करने का विवरण [इस दस्तावेज़ में](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) दिया गया है। +* [Word2Vec मॉडल के प्रशिक्षण पर आधिकारिक TensorFlow ट्यूटोरियल](https://www.TensorFlow.org/tutorials/text/word2vec)। +* **gensim** फ्रेमवर्क का उपयोग करके कुछ पंक्तियों के कोड में सबसे सामान्य एम्बेडिंग्स को प्रशिक्षित करने का विवरण [इस दस्तावेज़](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) में दिया गया है। -## 🚀 [असाइनमेंट: स्किप-ग्राम मॉडल प्रशिक्षित करें](lab/README.md) +## 🚀 [असाइनमेंट: स्किप-ग्राम मॉडल का प्रशिक्षण](lab/README.md) -प्रयोगशाला में, हम आपको इस पाठ से कोड को संशोधित करने की चुनौती देते हैं ताकि CBoW के बजाय स्किप-ग्राम मॉडल का प्रशिक्षण दिया जा सके। [विवरण पढ़ें](lab/README.md) +लैब में, हम आपको इस पाठ के कोड को संशोधित करके स्किप-ग्राम मॉडल प्रशिक्षित करने की चुनौती देते हैं। [विवरण पढ़ें](lab/README.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md index 53a24e44..0f097d6e 100644 --- a/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# ट्रेनिंग स्किप-ग्राम मॉडल + +# स्किप-ग्राम मॉडल का प्रशिक्षण -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। +[एआई फॉर बिगिनर्स करिकुलम](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -इस लैब में, हम आपको चुनौती देते हैं कि आप स्किप-ग्राम तकनीक का उपयोग करके वर्ड2वेक मॉडल को प्रशिक्षित करें। $N$-टोकन चौड़ाई के स्किप-ग्राम विंडो में पड़ोसी शब्दों की भविष्यवाणी करने के लिए एम्बेडिंग के साथ एक नेटवर्क प्रशिक्षित करें। आप [इस पाठ का कोड](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) उपयोग कर सकते हैं, और इसे थोड़ा संशोधित कर सकते हैं। +इस लैब में, हम आपको स्किप-ग्राम तकनीक का उपयोग करके Word2Vec मॉडल को प्रशिक्षित करने की चुनौती देते हैं। एम्बेडिंग के साथ एक नेटवर्क को प्रशिक्षित करें ताकि वह $N$-टोकन-चौड़े स्किप-ग्राम विंडो में पड़ोसी शब्दों की भविष्यवाणी कर सके। आप [इस पाठ से कोड](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) का उपयोग कर सकते हैं और इसे थोड़ा संशोधित कर सकते हैं। ## डेटा सेट -आप किसी भी पुस्तक का उपयोग करने के लिए स्वतंत्र हैं। आप [प्रोजेक्ट गुटेनबर्ग](https://www.gutenberg.org/) पर बहुत सारी मुफ्त पाठ्य सामग्री पा सकते हैं, उदाहरण के लिए, यहाँ लुईस कैरोल द्वारा [एलेस एडवेंचर्स इन वंडरलैंड](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। या, आप शेक्सपियर के नाटकों का उपयोग कर सकते हैं, जिसे आप निम्नलिखित कोड का उपयोग करके प्राप्त कर सकते हैं: +आप किसी भी पुस्तक का उपयोग कर सकते हैं। [प्रोजेक्ट गुटेनबर्ग](https://www.gutenberg.org/) पर आपको बहुत सारे मुफ्त टेक्स्ट मिल सकते हैं। उदाहरण के लिए, यहाँ लुईस कैरोल द्वारा लिखित [एलिस एडवेंचर्स इन वंडरलैंड](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। या, आप शेक्सपियर के नाटक का उपयोग कर सकते हैं, जिसे आप निम्नलिखित कोड का उपयोग करके प्राप्त कर सकते हैं: ```python path_to_file = tf.keras.utils.get_file( @@ -17,13 +26,13 @@ path_to_file = tf.keras.utils.get_file( text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ``` -## अन्वेषण करें! +## खोजबीन करें! -यदि आपके पास समय है और आप विषय में गहराई से जाना चाहते हैं, तो कई चीजों की खोज करने का प्रयास करें: +यदि आपके पास समय है और आप विषय में गहराई से जाना चाहते हैं, तो निम्नलिखित चीजों का पता लगाने का प्रयास करें: -* एम्बेडिंग आकार परिणामों को कैसे प्रभावित करता है? -* विभिन्न पाठ शैलियाँ परिणाम को कैसे प्रभावित करती हैं? -* कई बहुत विभिन्न प्रकार के शब्दों और उनके पर्यायवाची शब्दों को लें, उनके वेक्टर प्रतिनिधित्व प्राप्त करें, आयामों को 2 में कम करने के लिए पीसीए लागू करें, और उन्हें 2डी स्थान में प्लॉट करें। क्या आपको कोई पैटर्न दिखाई देता है? +* एम्बेडिंग का आकार परिणामों को कैसे प्रभावित करता है? +* विभिन्न टेक्स्ट शैलियाँ परिणाम को कैसे प्रभावित करती हैं? +* कुछ बहुत अलग प्रकार के शब्द और उनके पर्यायवाची लें, उनके वेक्टर प्रतिनिधित्व प्राप्त करें, PCA का उपयोग करके आयामों को 2 तक घटाएँ, और उन्हें 2D स्पेस में प्लॉट करें। क्या आपको कोई पैटर्न दिखाई देता है? -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/16-RNN/README.md b/translations/hi/lessons/5-NLP/16-RNN/README.md index 0af249c9..38d7a375 100644 --- a/translations/hi/lessons/5-NLP/16-RNN/README.md +++ b/translations/hi/lessons/5-NLP/16-RNN/README.md @@ -1,86 +1,96 @@ -# पुनरावृत्त न्यूरल नेटवर्क + +# पुनरावर्ती न्यूरल नेटवर्क्स -## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -पिछले अनुभागों में, हमने टेक्स्ट के समृद्ध अर्थपूर्ण प्रतिनिधित्व और एम्बेडिंग के शीर्ष पर एक साधारण रैखिक वर्गीकरणकर्ता का उपयोग किया है। यह आर्किटेक्चर वाक्य में शब्दों के समग्र अर्थ को पकड़ता है, लेकिन यह शब्दों के **क्रम** पर ध्यान नहीं देता है, क्योंकि एम्बेडिंग के ऊपर की एकत्रीकरण प्रक्रिया ने मूल टेक्स्ट से यह जानकारी हटा दी। चूंकि ये मॉडल शब्दों के क्रम को मॉडल करने में असमर्थ हैं, वे टेक्स्ट जनरेशन या प्रश्न उत्तर देने जैसे अधिक जटिल या अस्पष्ट कार्यों को हल नहीं कर सकते। +पिछले सेक्शन्स में, हमने टेक्स्ट के समृद्ध सेमांटिक रिप्रेजेंटेशन और एम्बेडिंग्स के ऊपर एक साधारण लीनियर क्लासिफायर का उपयोग किया है। यह आर्किटेक्चर वाक्य में शब्दों के समग्र अर्थ को कैप्चर करता है, लेकिन यह शब्दों के **क्रम** को ध्यान में नहीं रखता है, क्योंकि एम्बेडिंग्स के ऊपर की एग्रीगेशन प्रक्रिया ने मूल टेक्स्ट से यह जानकारी हटा दी है। चूंकि ये मॉडल शब्दों के क्रम को मॉडल करने में असमर्थ हैं, वे टेक्स्ट जनरेशन या प्रश्न उत्तर जैसे अधिक जटिल या अस्पष्ट कार्यों को हल नहीं कर सकते। -टेक्स्ट अनुक्रम के अर्थ को पकड़ने के लिए, हमें एक अन्य न्यूरल नेटवर्क आर्किटेक्चर का उपयोग करने की आवश्यकता है, जिसे **पुनरावृत्त न्यूरल नेटवर्क** या RNN कहा जाता है। RNN में, हम अपने वाक्य को नेटवर्क के माध्यम से एक प्रतीक में एक बार पास करते हैं, और नेटवर्क कुछ **स्थिति** उत्पन्न करता है, जिसे हम फिर अगले प्रतीक के साथ नेटवर्क में फिर से पास करते हैं। +टेक्स्ट अनुक्रम के अर्थ को कैप्चर करने के लिए, हमें एक अन्य न्यूरल नेटवर्क आर्किटेक्चर का उपयोग करना होगा, जिसे **पुनरावर्ती न्यूरल नेटवर्क** या RNN कहा जाता है। RNN में, हम अपने वाक्य को नेटवर्क के माध्यम से एक समय में एक प्रतीक पास करते हैं, और नेटवर्क कुछ **स्टेट** उत्पन्न करता है, जिसे हम अगले प्रतीक के साथ नेटवर्क में फिर से पास करते हैं। -![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hi.png) +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) -> चित्र लेखक द्वारा +> लेखक द्वारा बनाई गई छवि -इनपुट अनुक्रम X0,...,Xn के साथ, RNN न्यूरल नेटवर्क ब्लॉकों की एक श्रृंखला बनाता है, और इस श्रृंखला को बैकप्रोपगेशन का उपयोग करके अंत से अंत तक प्रशिक्षित करता है। प्रत्येक नेटवर्क ब्लॉक एक जोड़ी (Xi,Si) को इनपुट के रूप में लेता है, और परिणाम के रूप में Si+1 उत्पन्न करता है। अंतिम स्थिति Sn या (आउटपुट Yn) परिणाम उत्पन्न करने के लिए एक रैखिक वर्गीकरणकर्ता में जाती है। सभी नेटवर्क ब्लॉकों के पास समान वज़न होते हैं, और इन्हें एक बैकप्रोपगेशन पास का उपयोग करके अंत से अंत तक प्रशिक्षित किया जाता है। +टोकन के इनपुट अनुक्रम X0,...,Xn को दिया गया, RNN एक न्यूरल नेटवर्क ब्लॉक्स का अनुक्रम बनाता है, और इस अनुक्रम को एंड-टू-एंड बैकप्रोपेगेशन का उपयोग करके प्रशिक्षित करता है। प्रत्येक नेटवर्क ब्लॉक (Xi,Si) की एक जोड़ी को इनपुट के रूप में लेता है, और परिणामस्वरूप Si+1 उत्पन्न करता है। अंतिम स्टेट Sn या (आउटपुट Yn) को परिणाम उत्पन्न करने के लिए एक लीनियर क्लासिफायर में भेजा जाता है। सभी नेटवर्क ब्लॉक्स समान वेट्स साझा करते हैं, और एक बैकप्रोपेगेशन पास का उपयोग करके एंड-टू-एंड प्रशिक्षित होते हैं। -चूंकि स्थिति वेक्टर S0,...,Sn नेटवर्क के माध्यम से पास किए जाते हैं, यह शब्दों के बीच अनुक्रमिक निर्भरताओं को सीखने में सक्षम होता है। उदाहरण के लिए, जब शब्द *not* अनुक्रम में कहीं दिखाई देता है, तो यह स्थिति वेक्टर के भीतर कुछ तत्वों को नकारात्मक करने के लिए सीख सकता है, जिससे नकारात्मकता उत्पन्न होती है। +चूंकि स्टेट वेक्टर S0,...,Sn नेटवर्क के माध्यम से पास होते हैं, यह शब्दों के बीच अनुक्रमिक निर्भरता को सीखने में सक्षम होता है। उदाहरण के लिए, जब शब्द *not* अनुक्रम में कहीं दिखाई देता है, तो यह स्टेट वेक्टर के भीतर कुछ तत्वों को नकारने के लिए सीख सकता है, जिससे नकारात्मकता उत्पन्न होती है। -> ✅ चूंकि ऊपर चित्रित सभी RNN ब्लॉकों के वज़न साझा किए जाते हैं, इसलिए एक ही चित्र को एक ब्लॉक (दाएं) के रूप में एक पुनरावृत्त फीडबैक लूप के साथ प्रदर्शित किया जा सकता है, जो नेटवर्क की आउटपुट स्थिति को इनपुट पर वापस भेजता है। +> ✅ चूंकि ऊपर चित्र में सभी RNN ब्लॉक्स के वेट्स साझा किए गए हैं, वही चित्र एक ब्लॉक (दाईं ओर) के रूप में दर्शाया जा सकता है जिसमें एक पुनरावर्ती फीडबैक लूप होता है, जो नेटवर्क के आउटपुट स्टेट को इनपुट में वापस पास करता है। -## RNN सेल का आकार +## RNN सेल की संरचना -आइए देखें कि एक साधारण RNN सेल कैसे संगठित होता है। यह पिछले स्थिति Si-1 और वर्तमान प्रतीक Xi को इनपुट के रूप में स्वीकार करता है, और इसे आउटपुट स्थिति Si उत्पन्न करना होता है (और, कभी-कभी, हम किसी अन्य आउटपुट Yi में भी रुचि रखते हैं, जैसे कि जनरेटिव नेटवर्क के मामले में)। +आइए देखें कि एक साधारण RNN सेल कैसे संगठित होता है। यह पिछले स्टेट Si-1 और वर्तमान प्रतीक Xi को इनपुट के रूप में स्वीकार करता है, और आउटपुट स्टेट Si उत्पन्न करना होता है (और, कभी-कभी, हम कुछ अन्य आउटपुट Yi में भी रुचि रखते हैं, जैसा कि जनरेटिव नेटवर्क्स के मामले में होता है)। -एक साधारण RNN सेल के अंदर दो वजन मैट्रिक्स होते हैं: एक इनपुट प्रतीक को परिवर्तित करता है (इसे W कहते हैं), और दूसरा इनपुट स्थिति को परिवर्तित करता है (H)। इस मामले में नेटवर्क का आउटपुट σ(W×Xi+H×Si-1+b) के रूप में गणना की जाती है, जहाँ σ सक्रियण कार्य है और b अतिरिक्त पूर्वाग्रह है। +एक साधारण RNN सेल के अंदर दो वेट मैट्रिस होती हैं: एक इनपुट प्रतीक को ट्रांसफॉर्म करती है (इसे W कहते हैं), और दूसरी इनपुट स्टेट को ट्रांसफॉर्म करती है (H)। इस मामले में नेटवर्क का आउटपुट σ(W×Xi+H×Si-1+b) के रूप में गणना किया जाता है, जहां σ एक्टिवेशन फंक्शन है और b अतिरिक्त बायस है। -RNN Cell Anatomy +RNN सेल की संरचना -> चित्र लेखक द्वारा +> लेखक द्वारा बनाई गई छवि -कई मामलों में, इनपुट टोकन RNN में प्रवेश करने से पहले एम्बेडिंग लेयर के माध्यम से पास किए जाते हैं ताकि आयाम को कम किया जा सके। इस मामले में, यदि इनपुट वेक्टर का आयाम *emb_size* है, और स्थिति वेक्टर *hid_size* है - तो W का आकार *emb_size*×*hid_size* है, और H का आकार *hid_size*×*hid_size* है। +कई मामलों में, इनपुट टोकन RNN में प्रवेश करने से पहले एम्बेडिंग लेयर के माध्यम से पास किए जाते हैं ताकि आयाम को कम किया जा सके। इस मामले में, यदि इनपुट वेक्टर का आयाम *emb_size* है, और स्टेट वेक्टर का आयाम *hid_size* है - तो W का आकार *emb_size*×*hid_size* होगा, और H का आकार *hid_size*×*hid_size* होगा। -## लंबी छोटी अवधि की मेमोरी (LSTM) +## लॉन्ग शॉर्ट टर्म मेमोरी (LSTM) -क्लासिकल RNNs की एक मुख्य समस्या **विलुप्त ग्रेडिएंट** समस्या है। चूंकि RNNs को एक बैकप्रोपगेशन पास में अंत से अंत तक प्रशिक्षित किया जाता है, इसलिए इसे नेटवर्क की पहले की परतों में त्रुटि को प्रसारित करने में कठिनाई होती है, और इस प्रकार नेटवर्क दूरस्थ टोकनों के बीच संबंधों को सीख नहीं सकता। इस समस्या से बचने के लिए एक तरीका है **स्पष्ट स्थिति प्रबंधन** को लागू करना, जिसे **गेट्स** कहा जाता है। इस प्रकार की दो प्रसिद्ध आर्किटेक्चर हैं: **लंबी छोटी अवधि की मेमोरी** (LSTM) और **गेटेड रिले यूनिट** (GRU)। +क्लासिकल RNNs की मुख्य समस्याओं में से एक **vanishing gradients** समस्या है। चूंकि RNNs को एक बैकप्रोपेगेशन पास में एंड-टू-एंड प्रशिक्षित किया जाता है, यह नेटवर्क की पहली लेयर तक त्रुटि को प्रोपेगेट करने में कठिनाई होती है, और इस प्रकार नेटवर्क दूरस्थ टोकन के बीच संबंधों को सीख नहीं सकता। इस समस्या से बचने के तरीकों में से एक **स्पष्ट स्टेट प्रबंधन** को **गेट्स** का उपयोग करके पेश करना है। इस प्रकार की दो प्रसिद्ध आर्किटेक्चर हैं: **लॉन्ग शॉर्ट टर्म मेमोरी** (LSTM) और **गेटेड रिले यूनिट** (GRU)। -![लंबी छोटी अवधि की मेमोरी सेल का उदाहरण दिखाते हुए चित्र](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![लॉन्ग शॉर्ट टर्म मेमोरी सेल का उदाहरण दिखाने वाली छवि](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> चित्र स्रोत TBD +> छवि स्रोत TBD -LSTM नेटवर्क RNN के समान तरीके से व्यवस्थित होता है, लेकिन यहाँ दो स्थितियाँ होती हैं जो परत से परत में पास की जाती हैं: वास्तविक स्थिति C, और छिपा हुआ वेक्टर H। प्रत्येक यूनिट में, छिपा हुआ वेक्टर Hi को इनपुट Xi के साथ संयोजित किया जाता है, और वे स्थिति C पर **गेट्स** के माध्यम से क्या होता है, इसे नियंत्रित करते हैं। प्रत्येक गेट एक न्यूरल नेटवर्क है जिसमें सिग्मॉइड सक्रियण (आउटपुट [0,1] के दायरे में) होता है, जिसे स्थिति वेक्टर के साथ गुणा करने पर एक बिटवाइज मास्क के रूप में सोचा जा सकता है। निम्नलिखित गेट्स हैं (ऊपर चित्र में बाएं से दाएं): +LSTM नेटवर्क RNN के समान तरीके से संगठित होता है, लेकिन दो स्टेट्स होते हैं जो लेयर से लेयर तक पास होते हैं: वास्तविक स्टेट C, और हिडन वेक्टर H। प्रत्येक यूनिट पर, हिडन वेक्टर Hi इनपुट Xi के साथ कंकेटनेट होता है, और वे **गेट्स** के माध्यम से स्टेट C के साथ क्या होता है उसे नियंत्रित करते हैं। प्रत्येक गेट एक न्यूरल नेटवर्क होता है जिसमें सिग्मॉइड एक्टिवेशन होता है (आउटपुट [0,1] की रेंज में), जिसे स्टेट वेक्टर के साथ गुणा करते समय बिटवाइज मास्क के रूप में सोचा जा सकता है। निम्नलिखित गेट्स होते हैं (ऊपर चित्र में बाएं से दाएं): -* **भूलने का गेट** एक छिपे हुए वेक्टर को लेता है और यह निर्धारित करता है कि हमें वेक्टर C के कौन से घटकों को भूलना है, और कौन से घटकों को पास करना है। -* **इनपुट गेट** इनपुट और छिपे हुए वेक्टरों से कुछ जानकारी लेता है और इसे स्थिति में डालता है। -* **आउटपुट गेट** स्थिति को *tanh* सक्रियण के साथ एक रैखिक परत के माध्यम से परिवर्तित करता है, फिर नए स्थिति Ci+1 उत्पन्न करने के लिए छिपे हुए वेक्टर Hi का उपयोग करके इसके कुछ घटकों का चयन करता है। +* **फॉरगेट गेट** हिडन वेक्टर लेता है और निर्धारित करता है कि वेक्टर C के कौन से घटकों को भूलना है और कौन से पास करना है। +* **इनपुट गेट** इनपुट और हिडन वेक्टर से कुछ जानकारी लेता है और इसे स्टेट में डालता है। +* **आउटपुट गेट** स्टेट को *tanh* एक्टिवेशन के साथ एक लीनियर लेयर के माध्यम से ट्रांसफॉर्म करता है, फिर हिडन वेक्टर Hi का उपयोग करके इसके कुछ घटकों का चयन करता है ताकि नया स्टेट Ci+1 उत्पन्न हो सके। -स्थिति C के घटकों को कुछ झंडों के रूप में सोचा जा सकता है जिन्हें चालू और बंद किया जा सकता है। उदाहरण के लिए, जब हम अनुक्रम में नाम *Alice* का सामना करते हैं, तो हम मान सकते हैं कि यह एक महिला पात्र का संदर्भ है, और स्थिति में झंडा उठाते हैं कि वाक्य में एक महिला संज्ञा है। जब हम आगे *and Tom* जैसे वाक्यांशों का सामना करते हैं, तो हम झंडा उठाते हैं कि हमारे पास एक बहुवचन संज्ञा है। इस प्रकार, स्थिति को नियंत्रित करके हम संभवतः वाक्य के भागों की व्याकरणिक विशेषताओं को ट्रैक रख सकते हैं। +स्टेट C के घटकों को कुछ फ्लैग्स के रूप में सोचा जा सकता है जिन्हें ऑन और ऑफ किया जा सकता है। उदाहरण के लिए, जब हम अनुक्रम में *Alice* नाम का सामना करते हैं, तो हम मान सकते हैं कि यह एक महिला चरित्र को संदर्भित करता है, और स्टेट में फ्लैग उठाते हैं कि हमारे पास वाक्य में एक महिला संज्ञा है। जब हम आगे *and Tom* वाक्यांशों का सामना करते हैं, तो हम फ्लैग उठाते हैं कि हमारे पास बहुवचन संज्ञा है। इस प्रकार स्टेट को हेरफेर करके हम वाक्य भागों के व्याकरणिक गुणों का ट्रैक रख सकते हैं। -> ✅ LSTM के आंतरिक को समझने के लिए एक उत्कृष्ट संसाधन इस महान लेख [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) द्वारा क्रिस्टोफर ओलाह है। +> ✅ LSTM की आंतरिक संरचना को समझने के लिए एक उत्कृष्ट संसाधन है यह शानदार लेख [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) क्रिस्टोफर ओलाह द्वारा। -## द्विदिशीय और मल्टीलेयर RNNs +## बिडायरेक्शनल और मल्टीलेयर RNNs -हमने उन पुनरावृत्त नेटवर्कों पर चर्चा की है जो एक दिशा में कार्य करते हैं, अनुक्रम की शुरुआत से अंत तक। यह स्वाभाविक लगता है, क्योंकि यह उस तरीके से मिलता-जुलता है जिससे हम पढ़ते और भाषण सुनते हैं। हालांकि, चूंकि कई व्यावहारिक मामलों में हमें इनपुट अनुक्रम तक यादृच्छिक पहुंच होती है, इसलिए यह दोनों दिशाओं में पुनरावृत्त गणना करना समझ में आ सकता है। ऐसे नेटवर्कों को **द्विदिशीय** RNNs कहा जाता है। द्विदिशीय नेटवर्क के साथ काम करते समय, हमें प्रत्येक दिशा के लिए दो छिपी स्थिति वेक्टरों की आवश्यकता होगी। +हमने पुनरावर्ती नेटवर्क्स पर चर्चा की है जो एक दिशा में काम करते हैं, अनुक्रम की शुरुआत से अंत तक। यह स्वाभाविक लगता है, क्योंकि यह उस तरीके जैसा है जैसे हम पढ़ते हैं और भाषण सुनते हैं। हालांकि, चूंकि कई व्यावहारिक मामलों में हमारे पास इनपुट अनुक्रम तक रैंडम एक्सेस होता है, यह दोनों दिशाओं में पुनरावर्ती गणना चलाने के लिए समझ में आ सकता है। ऐसे नेटवर्क्स को **बिडायरेक्शनल** RNNs कहा जाता है। बिडायरेक्शनल नेटवर्क के साथ काम करते समय, हमें दो हिडन स्टेट वेक्टर की आवश्यकता होगी, प्रत्येक दिशा के लिए एक। -एक पुनरावृत्त नेटवर्क, चाहे वह एक-निर्देशात्मक हो या द्विदिशीय, अनुक्रम के भीतर कुछ पैटर्न को पकड़ता है, और उन्हें स्थिति वेक्टर में संग्रहीत कर सकता है या आउटपुट में पास कर सकता है। कंवोल्यूशनल नेटवर्कों की तरह, हम पहले वाले पर एक और पुनरावृत्त परत बना सकते हैं ताकि उच्च स्तर के पैटर्न को पकड़ सकें और पहले परत द्वारा निकाले गए निम्न-स्तरीय पैटर्न से बना सकें। यह हमें **मल्टी-लेयर RNN** के विचार की ओर ले जाता है, जो दो या दो से अधिक पुनरावृत्त नेटवर्कों से बना होता है, जहाँ पिछले परत का आउटपुट अगली परत में इनपुट के रूप में पास किया जाता है। +एक पुनरावर्ती नेटवर्क, चाहे वह एक-दिशात्मक हो या बिडायरेक्शनल, अनुक्रम के भीतर कुछ पैटर्न कैप्चर करता है, और उन्हें स्टेट वेक्टर में स्टोर कर सकता है या आउटपुट में पास कर सकता है। जैसे कि कन्वोल्यूशनल नेटवर्क्स के साथ, हम पहले लेयर द्वारा निकाले गए लो-लेवल पैटर्न से उच्च-स्तरीय पैटर्न कैप्चर करने के लिए पहले लेयर के ऊपर एक और पुनरावर्ती लेयर बना सकते हैं। यह हमें **मल्टी-लेयर RNN** की धारणा की ओर ले जाता है, जिसमें दो या अधिक पुनरावर्ती नेटवर्क्स होते हैं, जहां पिछले लेयर का आउटपुट अगले लेयर में इनपुट के रूप में पास होता है। -![मल्टीलेयर लंबी छोटी अवधि की मेमोरी RNN का उदाहरण दिखाते हुए चित्र](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hi.jpg) +![मल्टीलेयर लॉन्ग-शॉर्ट-टर्म-मेमोरी RNN दिखाने वाली छवि](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) -*चित्र [इस अद्भुत पोस्ट](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) से लिया गया है जो फर्नांडो लोपेज़ द्वारा है* +*चित्र [इस शानदार पोस्ट](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) फर्नांडो लोपेज़ द्वारा* -## ✍️ अभ्यास: एम्बेडिंग +## ✍️ अभ्यास: एम्बेडिंग्स -निम्नलिखित नोटबुक में अपनी सीख जारी रखें: +अगले नोटबुक्स में अपना अध्ययन जारी रखें: * [PyTorch के साथ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) * [TensorFlow के साथ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) ## निष्कर्ष -इस इकाई में, हमने देखा कि RNNs का उपयोग अनुक्रम वर्गीकरण के लिए किया जा सकता है, लेकिन वास्तव में, वे कई अन्य कार्यों को संभाल सकते हैं, जैसे टेक्स्ट जनरेशन, मशीन अनुवाद, और अधिक। हम अगले इकाई में उन कार्यों पर विचार करेंगे। +इस यूनिट में, हमने देखा कि RNNs का उपयोग अनुक्रम वर्गीकरण के लिए किया जा सकता है, लेकिन वास्तव में, वे कई अन्य कार्यों को संभाल सकते हैं, जैसे टेक्स्ट जनरेशन, मशीन ट्रांसलेशन, और अधिक। हम अगले यूनिट में उन कार्यों पर विचार करेंगे। ## 🚀 चुनौती LSTMs के बारे में कुछ साहित्य पढ़ें और उनके अनुप्रयोगों पर विचार करें: -- [ग्रिड लंबी छोटी अवधि की मेमोरी](https://arxiv.org/pdf/1507.01526v1.pdf) -- [दिखाएं, ध्यान दें और बताएं: दृश्य ध्यान के साथ न्यूरल इमेज कैप्शन जनरेशन](https://arxiv.org/pdf/1502.03044v2.pdf) +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) -## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -- [LSTM नेटवर्क को समझना](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) क्रिस्टोफर ओलाह द्वारा। +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) क्रिस्टोफर ओलाह द्वारा। -## [असाइनमेंट: नोटबुक](assignment.md) +## [असाइनमेंट: नोटबुक्स](assignment.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/16-RNN/assignment.md b/translations/hi/lessons/5-NLP/16-RNN/assignment.md index b4aa0384..96e908c2 100644 --- a/translations/hi/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/hi/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ + # असाइनमेंट: नोटबुक्स -इस पाठ से जुड़े नोटबुक्स (या तो PyTorch या TensorFlow संस्करण) का उपयोग करते हुए, उन्हें अपने खुद के डेटासेट के साथ फिर से चलाएँ, शायद कोई ऐसा जो Kaggle से हो, उपयोग के साथ श्रेय दें। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों पर जोर दिया जा सके। एक अलग प्रकार के डेटासेट का प्रयास करें और अपने निष्कर्षों को दस्तावेज़ करें, जैसे [इस Kaggle प्रतियोगिता डेटासेट के बारे में मौसम के ट्वीट](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) का उपयोग करते हुए। +इस पाठ से संबंधित नोटबुक्स (चाहे वह PyTorch संस्करण हो या TensorFlow संस्करण), उन्हें अपने स्वयं के डेटासेट का उपयोग करके पुनः चलाएं, शायद Kaggle से लिया गया हो, और उचित श्रेय के साथ उपयोग किया गया हो। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्ष स्पष्ट हों। एक अलग प्रकार का डेटासेट आज़माएं और अपने निष्कर्षों को दस्तावेज़ित करें, जैसे [यह Kaggle प्रतियोगिता डेटासेट जो मौसम से संबंधित ट्वीट्स के बारे में है](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md index 50dc752e..04dc3553 100644 --- a/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,79 +1,88 @@ -# जनरेटिव नेटवर्क + +# जनरेटिव नेटवर्क्स ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -रिपीटिव न्यूरल नेटवर्क (RNNs) और उनके गेटेड सेल वेरिएंट जैसे लॉन्ग शॉर्ट टर्म मेमोरी सेल (LSTMs) और गेटेड रिपीटिव यूनिट्स (GRUs) ने भाषा मॉडलिंग के लिए एक तंत्र प्रदान किया है, क्योंकि वे शब्दों की क्रमबद्धता सीख सकते हैं और अनुक्रम में अगले शब्द के लिए भविष्यवाणियाँ कर सकते हैं। इससे हमें RNNs का उपयोग **जनरेटिव कार्यों** के लिए करने की अनुमति मिलती है, जैसे सामान्य टेक्स्ट जनरेशन, मशीन अनुवाद, और यहां तक कि छवि कैप्शनिंग। +रिकरंट न्यूरल नेटवर्क्स (RNNs) और उनके गेटेड सेल वेरिएंट्स जैसे लॉन्ग शॉर्ट टर्म मेमोरी सेल्स (LSTMs) और गेटेड रिक्रंट यूनिट्स (GRUs) ने भाषा मॉडलिंग के लिए एक तंत्र प्रदान किया है, क्योंकि वे शब्दों के क्रम को सीख सकते हैं और अनुक्रम में अगले शब्द की भविष्यवाणी कर सकते हैं। यह हमें RNNs का उपयोग **जनरेटिव कार्यों** के लिए करने की अनुमति देता है, जैसे सामान्य टेक्स्ट जनरेशन, मशीन ट्रांसलेशन, और यहां तक कि इमेज कैप्शनिंग। -> ✅ उन सभी बार के बारे में सोचें जब आपने टेक्स्ट पूर्णता जैसे जनरेटिव कार्यों से लाभ उठाया है। अपने पसंदीदा अनुप्रयोगों पर कुछ शोध करें कि क्या उन्होंने RNNs का लाभ उठाया है। +> ✅ उन सभी मौकों के बारे में सोचें जब आपने टेक्स्ट कंप्लीशन जैसे जनरेटिव कार्यों से लाभ उठाया है। अपने पसंदीदा एप्लिकेशन पर शोध करें और देखें कि क्या उन्होंने RNNs का उपयोग किया है। -हमने पिछले यूनिट में जो RNN आर्किटेक्चर चर्चा की थी, उसमें प्रत्येक RNN यूनिट ने अगले हिडन स्टेट को आउटपुट के रूप में उत्पन्न किया। हालाँकि, हम प्रत्येक पुनरावर्ती यूनिट में एक और आउटपुट जोड़ सकते हैं, जिससे हमें एक **अनुक्रम** आउटपुट करने की अनुमति मिलेगी (जो मूल अनुक्रम के समान लंबाई का होता है)। इसके अलावा, हम RNN यूनिट्स का उपयोग कर सकते हैं जो प्रत्येक चरण में इनपुट स्वीकार नहीं करते हैं, और बस कुछ प्रारंभिक स्टेट वेक्टर लेते हैं, और फिर आउटपुट के अनुक्रम का उत्पादन करते हैं। +पिछले यूनिट में चर्चा किए गए RNN आर्किटेक्चर में, प्रत्येक RNN यूनिट ने आउटपुट के रूप में अगला हिडन स्टेट उत्पन्न किया। हालांकि, हम प्रत्येक रिक्रंट यूनिट में एक और आउटपुट जोड़ सकते हैं, जो हमें एक **अनुक्रम** आउटपुट करने की अनुमति देगा (जो मूल अनुक्रम के बराबर लंबाई का होगा)। इसके अलावा, हम ऐसे RNN यूनिट्स का उपयोग कर सकते हैं जो प्रत्येक चरण में इनपुट स्वीकार नहीं करते, बल्कि केवल एक प्रारंभिक स्टेट वेक्टर लेते हैं और फिर आउटपुट का एक अनुक्रम उत्पन्न करते हैं। -यह नीचे चित्र में दिखाए गए विभिन्न न्यूरल आर्किटेक्चर की अनुमति देता है: +यह विभिन्न न्यूरल आर्किटेक्चर की अनुमति देता है, जैसा कि नीचे दी गई तस्वीर में दिखाया गया है: -![सामान्य पुनरावर्ती न्यूरल नेटवर्क पैटर्न दिखाने वाली छवि।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg) +![रिकरंट न्यूरल नेटवर्क पैटर्न्स का सामान्य चित्र।](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> छवि ब्लॉग पोस्ट [रिपीटिव न्यूरल नेटवर्क्स की असंगत प्रभावशीलता](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) द्वारा [Andrej Karpaty](http://karpathy.github.io/) +> चित्र ब्लॉग पोस्ट [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) से लिया गया है, लेखक [Andrej Karpaty](http://karpathy.github.io/) -* **एक-से-एक** एक पारंपरिक न्यूरल नेटवर्क है जिसमें एक इनपुट और एक आउटपुट होता है। -* **एक-से-बहुत** एक जनरेटिव आर्किटेक्चर है जो एक इनपुट मान को स्वीकार करता है, और आउटपुट मानों के अनुक्रम का उत्पादन करता है। उदाहरण के लिए, यदि हम एक **छवि कैप्शनिंग** नेटवर्क को प्रशिक्षित करना चाहते हैं जो एक चित्र का टेक्स्ट विवरण उत्पन्न करेगा, तो हम एक चित्र को इनपुट के रूप में ले सकते हैं, इसे एक CNN के माध्यम से पास कर सकते हैं ताकि इसका हिडन स्टेट प्राप्त किया जा सके, और फिर एक पुनरावर्ती श्रृंखला को शब्द-दर-शब्द कैप्शन उत्पन्न करने के लिए रख सकते हैं। -* **बहुत-से-एक** पिछले यूनिट में वर्णित RNN आर्किटेक्चर से संबंधित है, जैसे कि टेक्स्ट वर्गीकरण। -* **बहुत-से-बहुत**, या **अनुक्रम-से-अनुक्रम** उन कार्यों से संबंधित है जैसे **मशीन अनुवाद**, जहां पहला RNN इनपुट अनुक्रम से सभी जानकारी को हिडन स्टेट में इकट्ठा करता है, और दूसरा RNN श्रृंखला इस स्टेट को आउटपुट अनुक्रम में अनरोल करती है। +* **वन-टू-वन** एक पारंपरिक न्यूरल नेटवर्क है जिसमें एक इनपुट और एक आउटपुट होता है। +* **वन-टू-मेनी** एक जनरेटिव आर्किटेक्चर है जो एक इनपुट वैल्यू स्वीकार करता है और आउटपुट वैल्यू का एक अनुक्रम उत्पन्न करता है। उदाहरण के लिए, यदि हम एक **इमेज कैप्शनिंग** नेटवर्क को प्रशिक्षित करना चाहते हैं जो किसी चित्र का टेक्स्ट विवरण उत्पन्न करे, तो हम एक चित्र को इनपुट के रूप में ले सकते हैं, इसे CNN के माध्यम से पास कर सकते हैं ताकि इसका हिडन स्टेट प्राप्त हो, और फिर एक रिक्रंट चेन शब्द-दर-शब्द कैप्शन उत्पन्न कर सकता है। +* **मेनी-टू-वन** पिछले यूनिट में वर्णित RNN आर्किटेक्चर से मेल खाता है, जैसे टेक्स्ट क्लासिफिकेशन। +* **मेनी-टू-मेनी**, या **सीक्वेंस-टू-सीक्वेंस**, उन कार्यों से मेल खाता है जैसे **मशीन ट्रांसलेशन**, जहां पहला RNN इनपुट अनुक्रम से सभी जानकारी को हिडन स्टेट में संग्रहित करता है, और दूसरा RNN चेन इस स्टेट को आउटपुट अनुक्रम में अनरोल करता है। -इस यूनिट में, हम सरल जनरेटिव मॉडलों पर ध्यान केंद्रित करेंगे जो हमें टेक्स्ट उत्पन्न करने में मदद करते हैं। सरलता के लिए, हम वर्ण-स्तरीय टोकनाइजेशन का उपयोग करेंगे। +इस यूनिट में, हम सरल जनरेटिव मॉडलों पर ध्यान केंद्रित करेंगे जो हमें टेक्स्ट उत्पन्न करने में मदद करते हैं। सरलता के लिए, हम कैरेक्टर-लेवल टोकनाइजेशन का उपयोग करेंगे। -हम इस RNN को चरण-दर-चरण टेक्स्ट उत्पन्न करने के लिए प्रशिक्षित करेंगे। प्रत्येक चरण में, हम `nchars` लंबाई के वर्णों के अनुक्रम को लेंगे, और नेटवर्क से प्रत्येक इनपुट वर्ण के लिए अगला आउटपुट वर्ण उत्पन्न करने के लिए कहेंगे: +हम इस RNN को चरण-दर-चरण टेक्स्ट उत्पन्न करने के लिए प्रशिक्षित करेंगे। प्रत्येक चरण में, हम `nchars` लंबाई के कैरेक्टर का एक अनुक्रम लेंगे और नेटवर्क से प्रत्येक इनपुट कैरेक्टर के लिए अगला आउटपुट कैरेक्टर उत्पन्न करने के लिए कहेंगे: -![शब्द 'HELLO' के RNN जनरेशन का उदाहरण दिखाने वाली छवि।](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hi.png) +!['HELLO' शब्द के RNN जनरेशन का उदाहरण दिखाने वाला चित्र।](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) -जब टेक्स्ट उत्पन्न करते हैं (इनफेरेंस के दौरान), हम कुछ **प्रॉम्प्ट** से शुरू करते हैं, जिसे RNN सेल्स के माध्यम से पास किया जाता है ताकि इसका मध्यवर्ती स्टेट उत्पन्न किया जा सके, और फिर इस स्टेट से जनरेशन शुरू होती है। हम एक समय में एक वर्ण उत्पन्न करते हैं, और स्टेट और उत्पन्न वर्ण को अगले के लिए एक और RNN सेल में पास करते हैं, जब तक कि हम पर्याप्त वर्ण उत्पन्न नहीं कर लेते। +जब टेक्स्ट उत्पन्न किया जाता है (इंफरेंस के दौरान), तो हम किसी **प्रॉम्प्ट** से शुरू करते हैं, जिसे RNN सेल्स के माध्यम से पास किया जाता है ताकि इसका इंटरमीडिएट स्टेट उत्पन्न हो सके, और फिर इस स्टेट से जनरेशन शुरू होती है। हम एक बार में एक कैरेक्टर उत्पन्न करते हैं और स्टेट और उत्पन्न कैरेक्टर को अगले RNN सेल में पास करते हैं ताकि अगला कैरेक्टर उत्पन्न हो सके, जब तक कि पर्याप्त कैरेक्टर उत्पन्न न हो जाएं। -> लेखक द्वारा छवि +> चित्र लेखक द्वारा -## ✍️ अभ्यास: जनरेटिव नेटवर्क +## ✍️ अभ्यास: जनरेटिव नेटवर्क्स -निम्नलिखित नोटबुक में अपने ज्ञान को जारी रखें: +निम्नलिखित नोटबुक्स में अपनी सीख जारी रखें: -* [PyTorch के साथ जनरेटिव नेटवर्क](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) -* [TensorFlow के साथ जनरेटिव नेटवर्क](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) +* [PyTorch के साथ जनरेटिव नेटवर्क्स](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow के साथ जनरेटिव नेटवर्क्स](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) -## नरम टेक्स्ट जनरेशन और तापमान +## सॉफ्ट टेक्स्ट जनरेशन और टेम्परेचर -प्रत्येक RNN सेल का आउटपुट वर्णों का एक संभावना वितरण होता है। यदि हम हमेशा उत्पन्न टेक्स्ट में अगले वर्ण के रूप में सबसे उच्च संभावना वाले वर्ण को लेते हैं, तो टेक्स्ट अक्सर एक ही वर्ण अनुक्रमों के बीच "चक्रित" हो सकता है, जैसे कि इस उदाहरण में: +प्रत्येक RNN सेल का आउटपुट कैरेक्टर्स का एक प्रायिकता वितरण होता है। यदि हम हमेशा उस कैरेक्टर को लेते हैं जिसकी प्रायिकता सबसे अधिक है, तो उत्पन्न टेक्स्ट अक्सर "साइक्लिक" हो सकता है, जैसे कि यह बार-बार एक ही कैरेक्टर अनुक्रम में फंस जाता है, जैसा कि इस उदाहरण में दिखाया गया है: ``` today of the second the company and a second the company ... ``` -हालांकि, यदि हम अगले वर्ण के लिए संभावना वितरण को देखते हैं, तो यह हो सकता है कि कुछ उच्चतम संभावनाओं के बीच का अंतर बहुत बड़ा न हो, जैसे कि एक वर्ण की संभावना 0.2 हो, दूसरे की 0.19, आदि। उदाहरण के लिए, जब '*play*' अनुक्रम में अगले वर्ण की खोज करते हैं, तो अगला वर्ण समान रूप से स्पेस या **e** (जैसे *player* शब्द में) हो सकता है। +हालांकि, यदि हम अगले कैरेक्टर के लिए प्रायिकता वितरण को देखें, तो यह हो सकता है कि कुछ उच्चतम प्रायिकताओं के बीच का अंतर बहुत बड़ा न हो, जैसे कि एक कैरेक्टर की प्रायिकता 0.2 हो और दूसरे की 0.19। उदाहरण के लिए, जब अनुक्रम '*play*' में अगले कैरेक्टर की तलाश की जाती है, तो अगला कैरेक्टर समान रूप से स्पेस या **e** (जैसे *player* शब्द में) हो सकता है। -इससे हमें यह निष्कर्ष निकलता है कि हमेशा उच्च संभावना वाले वर्ण का चयन करना "न्यायसंगत" नहीं है, क्योंकि दूसरे उच्चतम का चयन करना भी हमें अर्थपूर्ण टेक्स्ट की ओर ले जा सकता है। नेटवर्क आउटपुट द्वारा दिए गए संभावना वितरण से वर्णों को **नमूना** लेना अधिक बुद्धिमानी है। हम एक पैरामीटर, **तापमान**, का भी उपयोग कर सकते हैं, जो संभावना वितरण को समतल करेगा, यदि हम अधिक यादृच्छिकता जोड़ना चाहते हैं, या इसे अधिक तेज़ बनाएगा, यदि हम उच्चतम-प्रवृत्ति वाले वर्णों के प्रति अधिक प्रतिबद्ध रहना चाहते हैं। +यह हमें इस निष्कर्ष पर ले जाता है कि हमेशा उच्चतम प्रायिकता वाले कैरेक्टर को चुनना "न्यायसंगत" नहीं है, क्योंकि दूसरे उच्चतम को चुनना भी अर्थपूर्ण टेक्स्ट की ओर ले जा सकता है। यह अधिक समझदारी है कि नेटवर्क आउटपुट द्वारा दिए गए प्रायिकता वितरण से कैरेक्टर्स को **सैंपल** किया जाए। हम एक पैरामीटर, **टेम्परेचर**, का भी उपयोग कर सकते हैं, जो प्रायिकता वितरण को फ्लैट कर सकता है, यदि हम अधिक रैंडमनेस जोड़ना चाहते हैं, या इसे अधिक स्टेप बना सकता है, यदि हम उच्चतम-प्रायिकता कैरेक्टर्स पर अधिक टिके रहना चाहते हैं। -देखें कि यह नरम टेक्स्ट जनरेशन उपरोक्त लिंक किए गए नोटबुक में कैसे लागू किया गया है। +ऊपर दिए गए नोटबुक्स में देखें कि यह सॉफ्ट टेक्स्ट जनरेशन कैसे लागू की जाती है। ## निष्कर्ष -हालांकि टेक्स्ट जनरेशन अपने आप में उपयोगी हो सकता है, मुख्य लाभ तब आता है जब हम कुछ प्रारंभिक फीचर वेक्टर से RNNs का उपयोग करके टेक्स्ट उत्पन्न कर सकते हैं। उदाहरण के लिए, टेक्स्ट जनरेशन मशीन अनुवाद का एक हिस्सा है (अनुक्रम-से-अनुक्रम, इस मामले में *encoder* से स्टेट वेक्टर का उपयोग किया जाता है ताकि अनुवादित संदेश उत्पन्न या *decode* किया जा सके), या छवि का टेक्स्ट विवरण उत्पन्न करना (जिसमें फीचर वेक्टर CNN एक्सट्रैक्टर से आता है)। +हालांकि टेक्स्ट जनरेशन अपने आप में उपयोगी हो सकता है, लेकिन मुख्य लाभ यह है कि RNNs का उपयोग करके किसी प्रारंभिक फीचर वेक्टर से टेक्स्ट उत्पन्न किया जा सकता है। उदाहरण के लिए, टेक्स्ट जनरेशन का उपयोग मशीन ट्रांसलेशन (सीक्वेंस-टू-सीक्वेंस, इस मामले में *एन्कोडर* से स्टेट वेक्टर का उपयोग करके अनुवादित संदेश को *डिकोड* करने के लिए) या किसी इमेज का टेक्स्ट विवरण उत्पन्न करने (इस मामले में फीचर वेक्टर CNN एक्सट्रैक्टर से आता है) के लिए किया जाता है। ## 🚀 चुनौती -इस विषय पर Microsoft Learn पर कुछ पाठ लें +Microsoft Learn पर इस विषय पर कुछ पाठ लें: -* टेक्स्ट जनरेशन [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) के साथ टेक्स्ट जनरेशन ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -यहां कुछ लेख दिए गए हैं जो आपके ज्ञान को बढ़ाने के लिए हैं +अपना ज्ञान बढ़ाने के लिए यहां कुछ लेख दिए गए हैं: * मार्कोव चेन, LSTM और GPT-2 के साथ टेक्स्ट जनरेशन के विभिन्न दृष्टिकोण: [ब्लॉग पोस्ट](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* [Keras दस्तावेज़ में टेक्स्ट जनरेशन का उदाहरण](https://keras.io/examples/generative/lstm_character_level_text_generation/) +* [Keras डाक्यूमेंटेशन](https://keras.io/examples/generative/lstm_character_level_text_generation/) में टेक्स्ट जनरेशन का उदाहरण ## [असाइनमेंट](lab/README.md) -हमने वर्ण-दर-वर्ण टेक्स्ट उत्पन्न करना देखा है। प्रयोगशाला में, आप शब्द-स्तरीय टेक्स्ट जनरेशन का अन्वेषण करेंगे। +हमने देखा कि कैसे कैरेक्टर-दर-कैरेक्टर टेक्स्ट उत्पन्न किया जा सकता है। लैब में, आप वर्ड-लेवल टेक्स्ट जनरेशन का अन्वेषण करेंगे। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 4faaf475..a95c2418 100644 --- a/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ -# शब्द-स्तरीय टेक्स्ट जनरेशन RNNs का उपयोग करके + +# आरएनएन का उपयोग करके शब्द-स्तरीय टेक्स्ट जनरेशन -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। +[एआई फॉर बिगिनर्स करिकुलम](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -इस लैब में, आपको किसी भी किताब को लेना है, और इसे शब्द-स्तरीय टेक्स्ट जनरेटर को प्रशिक्षित करने के लिए डेटा सेट के रूप में उपयोग करना है। +इस लैब में, आपको किसी भी पुस्तक को लेना है और उसे एक डेटासेट के रूप में उपयोग करके शब्द-स्तरीय टेक्स्ट जनरेटर को प्रशिक्षित करना है। -## डेटा सेट +## डेटासेट -आप किसी भी किताब का उपयोग कर सकते हैं। आप [Project Gutenberg](https://www.gutenberg.org/) पर बहुत सारे मुफ्त पाठ पा सकते हैं, उदाहरण के लिए, यहां लुईस कैरोल द्वारा [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। +आप किसी भी पुस्तक का उपयोग कर सकते हैं। [प्रोजेक्ट गुटेनबर्ग](https://www.gutenberg.org/) पर आपको बहुत सारी मुफ्त पुस्तकें मिल सकती हैं। उदाहरण के लिए, यहाँ लुईस कैरोल द्वारा लिखित [एलिस एडवेंचर्स इन वंडरलैंड](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/5-NLP/18-Transformers/README.md b/translations/hi/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..dad908e7 --- /dev/null +++ b/translations/hi/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# ध्यान तंत्र और ट्रांसफॉर्मर्स + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP क्षेत्र में सबसे महत्वपूर्ण समस्याओं में से एक है **मशीन अनुवाद**, जो Google Translate जैसे टूल्स के लिए एक आवश्यक कार्य है। इस खंड में, हम मशीन अनुवाद पर ध्यान केंद्रित करेंगे, या सामान्य रूप से, किसी भी *सीक्वेंस-टू-सीक्वेंस* कार्य (जिसे **वाक्य ट्रांसडक्शन** भी कहा जाता है) पर चर्चा करेंगे। + +RNNs के साथ, सीक्वेंस-टू-सीक्वेंस को दो पुनरावर्ती नेटवर्क्स द्वारा लागू किया जाता है, जहां एक नेटवर्क, **एन्कोडर**, इनपुट सीक्वेंस को एक हिडन स्टेट में संक्षेपित करता है, जबकि दूसरा नेटवर्क, **डिकोडर**, इस हिडन स्टेट को अनुवादित परिणाम में बदलता है। इस दृष्टिकोण में कुछ समस्याएं हैं: + +* एन्कोडर नेटवर्क की अंतिम स्थिति को वाक्य की शुरुआत याद रखने में कठिनाई होती है, जिससे लंबे वाक्यों के लिए मॉडल की गुणवत्ता खराब हो जाती है। +* सीक्वेंस के सभी शब्दों का परिणाम पर समान प्रभाव होता है। हालांकि, वास्तविकता में, इनपुट सीक्वेंस के कुछ विशिष्ट शब्दों का अनुक्रमिक आउटपुट पर अधिक प्रभाव होता है। + +**ध्यान तंत्र (Attention Mechanisms)** प्रत्येक इनपुट वेक्टर के संदर्भ प्रभाव को प्रत्येक आउटपुट भविष्यवाणी पर वेट करने का एक साधन प्रदान करते हैं। इसे लागू करने का तरीका यह है कि इनपुट RNN और आउटपुट RNN की मध्यवर्ती अवस्थाओं के बीच शॉर्टकट्स बनाए जाते हैं। इस प्रकार, जब आउटपुट प्रतीक yt उत्पन्न किया जाता है, तो हम सभी इनपुट हिडन स्टेट्स hi को विभिन्न वेट गुणांक αt,i के साथ ध्यान में रखते हैं। + +![एन्कोडर/डिकोडर मॉडल जिसमें एडिटिव ध्यान लेयर है](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) में एडिटिव ध्यान तंत्र के साथ एन्कोडर-डिकोडर मॉडल, [इस ब्लॉग पोस्ट](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) से उद्धृत + +ध्यान मैट्रिक्स {αi,j} यह दर्शाएगा कि आउटपुट सीक्वेंस में किसी दिए गए शब्द की पीढ़ी में कुछ इनपुट शब्दों की कितनी भूमिका है। नीचे एक उदाहरण दिया गया है: + +![RNNsearch-50 द्वारा पाए गए एक नमूना संरेखण को दिखाने वाली छवि, Bahdanau - arviz.org से ली गई](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) से चित्र + +ध्यान तंत्र NLP में वर्तमान या निकट वर्तमान की अत्याधुनिक स्थिति के लिए जिम्मेदार हैं। हालांकि, ध्यान जोड़ने से मॉडल के पैरामीटर की संख्या में काफी वृद्धि होती है, जिससे RNNs के साथ स्केलिंग समस्याएं उत्पन्न होती हैं। RNNs को स्केल करने की एक प्रमुख बाधा यह है कि मॉडल की पुनरावृत्त प्रकृति प्रशिक्षण को बैच और समानांतर बनाना चुनौतीपूर्ण बनाती है। RNN में, सीक्वेंस के प्रत्येक तत्व को क्रमिक क्रम में संसाधित करना पड़ता है, जिसका अर्थ है कि इसे आसानी से समानांतर नहीं किया जा सकता। + +![ध्यान के साथ एन्कोडर डिकोडर](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [Google के ब्लॉग](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) से चित्र + +ध्यान तंत्रों को अपनाने और इस बाधा ने आज के अत्याधुनिक ट्रांसफॉर्मर मॉडल्स के निर्माण का मार्ग प्रशस्त किया, जैसे कि BERT और Open-GPT3। + +## ट्रांसफॉर्मर मॉडल्स + +ट्रांसफॉर्मर्स के पीछे मुख्य विचारों में से एक RNNs की क्रमिक प्रकृति से बचना और एक ऐसा मॉडल बनाना है जो प्रशिक्षण के दौरान समानांतर हो सके। इसे दो विचारों को लागू करके प्राप्त किया गया है: + +* पोजिशनल एन्कोडिंग +* RNNs (या CNNs) के बजाय पैटर्न को कैप्चर करने के लिए सेल्फ-अटेंशन तंत्र का उपयोग करना (यही कारण है कि ट्रांसफॉर्मर्स को पेश करने वाले पेपर का नाम *[Attention is all you need](https://arxiv.org/abs/1706.03762)* है)। + +### पोजिशनल एन्कोडिंग/एम्बेडिंग + +पोजिशनल एन्कोडिंग का विचार निम्नलिखित है: +1. RNNs का उपयोग करते समय, टोकन की सापेक्ष स्थिति को चरणों की संख्या द्वारा दर्शाया जाता है, और इसलिए इसे स्पष्ट रूप से दर्शाने की आवश्यकता नहीं होती। +2. हालांकि, जब हम ध्यान का उपयोग करते हैं, तो हमें सीक्वेंस के भीतर टोकन की सापेक्ष स्थिति जानने की आवश्यकता होती है। +3. पोजिशनल एन्कोडिंग प्राप्त करने के लिए, हम अपने टोकन सीक्वेंस को सीक्वेंस में टोकन पोजिशन के एक अनुक्रम (जैसे, 0,1, ...) के साथ बढ़ाते हैं। +4. फिर हम टोकन पोजिशन को टोकन एम्बेडिंग वेक्टर के साथ मिलाते हैं। पोजिशन (पूर्णांक) को वेक्टर में बदलने के लिए, हम विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं: + +* टोकन एम्बेडिंग के समान ट्रेन करने योग्य एम्बेडिंग। यह वह दृष्टिकोण है जिसे हम यहां मानते हैं। हम टोकन और उनके पोजिशन दोनों पर एम्बेडिंग लेयर्स लागू करते हैं, जिससे समान आयामों के एम्बेडिंग वेक्टर प्राप्त होते हैं, जिन्हें हम फिर जोड़ते हैं। +* मूल पेपर में प्रस्तावित फिक्स्ड पोजिशन एन्कोडिंग फंक्शन। + + + +> लेखक द्वारा छवि + +पोजिशनल एम्बेडिंग के साथ हमें जो परिणाम मिलता है, वह मूल टोकन और सीक्वेंस के भीतर उसकी स्थिति दोनों को एम्बेड करता है। + +### मल्टी-हेड सेल्फ-अटेंशन + +इसके बाद, हमें अपने सीक्वेंस के भीतर कुछ पैटर्न कैप्चर करने की आवश्यकता है। ऐसा करने के लिए, ट्रांसफॉर्मर्स **सेल्फ-अटेंशन** तंत्र का उपयोग करते हैं, जो मूल रूप से इनपुट और आउटपुट के रूप में एक ही सीक्वेंस पर लागू ध्यान है। सेल्फ-अटेंशन लागू करने से हमें वाक्य के भीतर **संदर्भ** को ध्यान में रखने और यह देखने की अनुमति मिलती है कि कौन से शब्द आपस में संबंधित हैं। उदाहरण के लिए, यह हमें यह देखने की अनुमति देता है कि *it* जैसे कोरफेरेंस द्वारा किन शब्दों का संदर्भ दिया गया है, और संदर्भ को ध्यान में रखता है: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> [Google ब्लॉग](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) से छवि + +ट्रांसफॉर्मर्स में, हम **मल्टी-हेड अटेंशन** का उपयोग करते हैं ताकि नेटवर्क को विभिन्न प्रकार की निर्भरताओं को कैप्चर करने की शक्ति मिल सके, जैसे कि दीर्घकालिक बनाम अल्पकालिक शब्द संबंध, कोरफेरेंस बनाम कुछ और, आदि। + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) में ट्रांसफॉर्मर लेयर्स के कार्यान्वयन पर अधिक विवरण हैं। + +### एन्कोडर-डिकोडर अटेंशन + +ट्रांसफॉर्मर्स में, ध्यान का उपयोग दो स्थानों पर किया जाता है: + +* इनपुट टेक्स्ट के भीतर पैटर्न को कैप्चर करने के लिए सेल्फ-अटेंशन का उपयोग करना। +* सीक्वेंस अनुवाद करने के लिए - यह एन्कोडर और डिकोडर के बीच ध्यान लेयर है। + +एन्कोडर-डिकोडर अटेंशन RNNs में उपयोग किए गए ध्यान तंत्र के समान है, जैसा कि इस खंड की शुरुआत में वर्णित है। यह एनिमेटेड आरेख एन्कोडर-डिकोडर अटेंशन की भूमिका को समझाता है। + +![एनिमेटेड GIF जो दिखाता है कि ट्रांसफॉर्मर मॉडल्स में मूल्यांकन कैसे किया जाता है।](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +चूंकि प्रत्येक इनपुट स्थिति को स्वतंत्र रूप से प्रत्येक आउटपुट स्थिति पर मैप किया जाता है, ट्रांसफॉर्मर्स RNNs की तुलना में बेहतर समानांतरता प्रदान कर सकते हैं, जिससे बड़े और अधिक अभिव्यक्तिपूर्ण भाषा मॉडल सक्षम होते हैं। प्रत्येक अटेंशन हेड का उपयोग शब्दों के बीच विभिन्न संबंधों को सीखने के लिए किया जा सकता है, जो डाउनस्ट्रीम नेचुरल लैंग्वेज प्रोसेसिंग कार्यों में सुधार करता है। + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) एक बहुत बड़ा मल्टी लेयर ट्रांसफॉर्मर नेटवर्क है, जिसमें *BERT-base* के लिए 12 लेयर्स और *BERT-large* के लिए 24 लेयर्स हैं। मॉडल को पहले एक बड़े टेक्स्ट डेटा कॉर्पस (विकिपीडिया + किताबें) पर अनसुपरवाइज्ड ट्रेनिंग (वाक्य में मास्क किए गए शब्दों की भविष्यवाणी) का उपयोग करके प्री-ट्रेन किया जाता है। प्री-ट्रेनिंग के दौरान, मॉडल भाषा समझ के महत्वपूर्ण स्तरों को अवशोषित करता है, जिसे फिर अन्य डेटासेट्स के साथ फाइन ट्यूनिंग के माध्यम से उपयोग किया जा सकता है। इस प्रक्रिया को **ट्रांसफर लर्निंग** कहा जाता है। + +![http://jalammar.github.io/illustrated-bert/ से चित्र](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> [स्रोत](http://jalammar.github.io/illustrated-bert/) + +## ✍️ अभ्यास: ट्रांसफॉर्मर्स + +निम्नलिखित नोटबुक्स में अपना अध्ययन जारी रखें: + +* [PyTorch में ट्रांसफॉर्मर्स](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow में ट्रांसफॉर्मर्स](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## निष्कर्ष + +इस पाठ में आपने ट्रांसफॉर्मर्स और ध्यान तंत्र के बारे में सीखा, जो NLP टूलबॉक्स के सभी आवश्यक उपकरण हैं। ट्रांसफॉर्मर आर्किटेक्चर के कई प्रकार हैं, जिनमें BERT, DistilBERT, BigBird, OpenGPT3 और अन्य शामिल हैं, जिन्हें फाइन ट्यून किया जा सकता है। [HuggingFace पैकेज](https://github.com/huggingface/) PyTorch और TensorFlow दोनों के साथ इन आर्किटेक्चर को ट्रेन करने के लिए रिपॉजिटरी प्रदान करता है। + +## 🚀 चुनौती + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## समीक्षा और स्व-अध्ययन + +* [ब्लॉग पोस्ट](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), जो ट्रांसफॉर्मर्स पर क्लासिकल [Attention is all you need](https://arxiv.org/abs/1706.03762) पेपर को समझाती है। +* [ब्लॉग पोस्ट की एक श्रृंखला](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), जो ट्रांसफॉर्मर्स की आर्किटेक्चर को विस्तार से समझाती है। + +## [असाइनमेंट](assignment.md) + +**अस्वीकरण**: +यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/18-Transformers/assignment.md b/translations/hi/lessons/5-NLP/18-Transformers/assignment.md index 262ec97e..f680f6e4 100644 --- a/translations/hi/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/hi/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# असाइनमेंट: ट्रांसफार्मर्स + +# असाइनमेंट: ट्रांसफॉर्मर्स -HuggingFace पर ट्रांसफार्मर्स के साथ प्रयोग करें! उनके द्वारा प्रदान किए गए कुछ स्क्रिप्ट्स का प्रयास करें ताकि आप उनकी साइट पर उपलब्ध विभिन्न मॉडलों के साथ काम कर सकें: https://huggingface.co/docs/transformers/run_scripts। उनके किसी एक डेटासेट का प्रयास करें, फिर इस पाठ्यक्रम से या Kaggle से अपना खुद का एक डेटासेट आयात करें और देखें कि क्या आप दिलचस्प टेक्स्ट उत्पन्न कर सकते हैं। अपने निष्कर्षों के साथ एक नोटबुक तैयार करें। +HuggingFace पर ट्रांसफॉर्मर्स के साथ प्रयोग करें! उनकी साइट पर उपलब्ध विभिन्न मॉडलों के साथ काम करने के लिए दिए गए स्क्रिप्ट्स का उपयोग करें: https://huggingface.co/docs/transformers/run_scripts। उनके किसी एक डेटासेट को आज़माएं, फिर इस पाठ्यक्रम या Kaggle से अपना खुद का एक डेटासेट आयात करें और देखें कि क्या आप रोचक टेक्स्ट जनरेट कर सकते हैं। अपने निष्कर्षों के साथ एक नोटबुक तैयार करें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/19-NER/README.md b/translations/hi/lessons/5-NLP/19-NER/README.md index 3823e159..e3be4f33 100644 --- a/translations/hi/lessons/5-NLP/19-NER/README.md +++ b/translations/hi/lessons/5-NLP/19-NER/README.md @@ -1,85 +1,94 @@ -# नामित इकाई पहचान + +# नामित इकाई पहचान (Named Entity Recognition) -अब तक, हम मुख्य रूप से एक NLP कार्य - वर्गीकरण पर ध्यान केंद्रित कर रहे हैं। हालाँकि, अन्य NLP कार्य भी हैं जो न्यूरल नेटवर्क के साथ पूरे किए जा सकते हैं। उन कार्यों में से एक है **[नामित इकाई पहचान](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), जो पाठ में विशिष्ट इकाइयों को पहचानने से संबंधित है, जैसे स्थान, व्यक्ति के नाम, दिनांक-समय अंतराल, रासायनिक सूत्र आदि। +अब तक, हमने मुख्य रूप से एक NLP कार्य - वर्गीकरण (classification) पर ध्यान केंद्रित किया है। हालांकि, तंत्रिका नेटवर्क (neural networks) का उपयोग करके अन्य NLP कार्य भी किए जा सकते हैं। उनमें से एक कार्य है **[नामित इकाई पहचान](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), जो पाठ में विशिष्ट इकाइयों को पहचानने से संबंधित है, जैसे स्थान, व्यक्ति के नाम, तिथि-समय अंतराल, रासायनिक सूत्र आदि। -## [प्री-लेचर क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [पाठ-पूर्व क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) ## NER का उपयोग करने का उदाहरण -मान लीजिए कि आप एक प्राकृतिक भाषा चैट बॉट विकसित करना चाहते हैं, जो अमेज़न एलेक्सा या गूगल असिस्टेंट के समान हो। बुद्धिमान चैट बॉट इस तरह काम करते हैं कि वे उपयोगकर्ता की इच्छाओं को *समझते* हैं, जो इनपुट वाक्य पर पाठ वर्गीकरण करके किया जाता है। इस वर्गीकरण का परिणाम जिसे **इरादा** कहा जाता है, यह निर्धारित करता है कि चैट बॉट को क्या करना चाहिए। +मान लीजिए आप एक प्राकृतिक भाषा चैट बॉट विकसित करना चाहते हैं, जैसे कि Amazon Alexa या Google Assistant। बुद्धिमान चैट बॉट इस तरह काम करते हैं कि वे उपयोगकर्ता की बात को *समझते* हैं, जो इनपुट वाक्य पर टेक्स्ट वर्गीकरण करके किया जाता है। इस वर्गीकरण का परिणाम **इरादा** (intent) कहलाता है, जो यह निर्धारित करता है कि चैट बॉट को क्या करना चाहिए। Bot NER -> लेखक द्वारा चित्र +> लेखक द्वारा बनाई गई छवि -हालाँकि, एक उपयोगकर्ता वाक्यांश के भाग के रूप में कुछ पैरामीटर प्रदान कर सकता है। उदाहरण के लिए, जब वह मौसम के बारे में पूछती है, तो वह स्थान या तिथि निर्दिष्ट कर सकती है। एक बॉट को उन इकाइयों को समझने में सक्षम होना चाहिए और कार्रवाई करने से पहले पैरामीटर स्लॉट को उचित रूप से भरना चाहिए। यहीं पर NER की भूमिका आती है। +हालांकि, उपयोगकर्ता वाक्यांश के हिस्से के रूप में कुछ पैरामीटर प्रदान कर सकता है। उदाहरण के लिए, जब मौसम के बारे में पूछता है, तो वह स्थान या तिथि निर्दिष्ट कर सकता है। बॉट को उन इकाइयों को समझने और कार्रवाई करने से पहले पैरामीटर स्लॉट को सही ढंग से भरने में सक्षम होना चाहिए। यही वह जगह है जहां NER काम आता है। -> ✅ एक और उदाहरण होगा [वैज्ञानिक चिकित्सा पत्रों का विश्लेषण](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)। हमें जो मुख्य बातें देखनी हैं, वे हैं विशिष्ट चिकित्सा शर्तें, जैसे बीमारियाँ और चिकित्सा पदार्थ। जबकि कुछ बीमारियों को शायद उपस्ट्रिंग खोज का उपयोग करके निकाला जा सकता है, अधिक जटिल इकाइयाँ, जैसे रासायनिक यौगिक और दवाओं के नाम, को अधिक जटिल दृष्टिकोण की आवश्यकता होती है। +> ✅ एक और उदाहरण [वैज्ञानिक चिकित्सा पत्रों का विश्लेषण](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) हो सकता है। मुख्य चीजों में से एक जो हमें देखनी होती है, वे विशिष्ट चिकित्सा शब्द हैं, जैसे बीमारियां और चिकित्सा पदार्थ। जबकि कुछ बीमारियों को शायद सबस्ट्रिंग खोज का उपयोग करके निकाला जा सकता है, अधिक जटिल इकाइयों, जैसे रासायनिक यौगिक और दवाओं के नाम, के लिए अधिक जटिल दृष्टिकोण की आवश्यकता होती है। -## NER को टोकन वर्गीकरण के रूप में +## टोकन वर्गीकरण के रूप में NER -NER मॉडल मूल रूप से **टोकन वर्गीकरण मॉडल** हैं, क्योंकि प्रत्येक इनपुट टोकन के लिए हमें यह तय करना होता है कि यह किसी इकाई से संबंधित है या नहीं, और यदि हाँ - तो किस इकाई वर्ग से। +NER मॉडल मूल रूप से **टोकन वर्गीकरण मॉडल** होते हैं, क्योंकि हमें प्रत्येक इनपुट टोकन के लिए यह तय करना होता है कि वह किसी इकाई से संबंधित है या नहीं, और यदि है - तो किस इकाई वर्ग से। निम्नलिखित पेपर शीर्षक पर विचार करें: -**ट्राईकस्पिड वाल्व रिगर्जिटेशन** और **लिथियम कार्बोनेट** **टॉक्सिसिटी** एक नवजात शिशु में। +**ट्राइकसपिड वाल्व रिगर्जिटेशन** और **लिथियम कार्बोनेट** **टॉक्सिसिटी** एक नवजात शिशु में। -यहाँ इकाइयाँ हैं: +यहां इकाइयां हैं: -* ट्राईकस्पिड वाल्व रिगर्जिटेशन एक बीमारी है (`DIS`) +* ट्राइकसपिड वाल्व रिगर्जिटेशन एक बीमारी है (`DIS`) * लिथियम कार्बोनेट एक रासायनिक पदार्थ है (`CHEM`) * टॉक्सिसिटी भी एक बीमारी है (`DIS`) -ध्यान दें कि एक इकाई कई टोकन को कवर कर सकती है। और, इस मामले में, हमें दो लगातार इकाइयों के बीच अंतर करना होगा। इसलिए, प्रत्येक इकाई के लिए दो वर्गों का उपयोग करना सामान्य है - एक जो इकाई के पहले टोकन को निर्दिष्ट करता है (अक्सर `B-` उपसर्ग का उपयोग किया जाता है, **b**eginning के लिए), और दूसरा - एक इकाई का निरंतरता (`I-`, **i**nner token के लिए)। हम सभी **o**ther टोकनों का प्रतिनिधित्व करने के लिए `O` का भी उपयोग करते हैं। इस तरह के टोकन टैगिंग को [BIO टैगिंग](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (या IOB) कहा जाता है। जब टैग किया जाता है, तो हमारा शीर्षक इस तरह दिखेगा: +ध्यान दें कि एक इकाई कई टोकन तक फैली हो सकती है। और, इस मामले में, हमें दो लगातार इकाइयों के बीच अंतर करना होगा। इसलिए, प्रत्येक इकाई के लिए दो वर्गों का उपयोग करना आम है - एक जो इकाई के पहले टोकन को निर्दिष्ट करता है (अक्सर `B-` उपसर्ग का उपयोग किया जाता है, जिसका अर्थ है **शुरुआत**), और दूसरा - इकाई की निरंतरता (`I-`, जिसका अर्थ है **आंतरिक टोकन**)। हम `O` का उपयोग सभी **अन्य** टोकन का प्रतिनिधित्व करने के लिए करते हैं। इस प्रकार के टोकन टैगिंग को [BIO टैगिंग](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (या IOB) कहा जाता है। टैगिंग के बाद, हमारा शीर्षक इस प्रकार दिखेगा: -Token | Tag -------|----- -Tricuspid | B-DIS -valve | I-DIS -regurgitation | I-DIS -and | O -lithium | B-CHEM -carbonate | I-CHEM -toxicity | B-DIS -in | O -a | O -newborn | O -infant | O -. | O +Token | Tag +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O -चूंकि हमें टोकनों और वर्गों के बीच एक-से-एक संबंध बनाना है, हम इस चित्र से एक दाहिने ओर सबसे अधिक **many-to-many** न्यूरल नेटवर्क मॉडल को प्रशिक्षित कर सकते हैं: +चूंकि हमें टोकन और वर्गों के बीच एक-से-एक पत्राचार बनाना होता है, हम इस चित्र से एक सही **कई-से-कई** तंत्रिका नेटवर्क मॉडल को प्रशिक्षित कर सकते हैं: -![सामान्य पुनरावृत्त न्यूरल नेटवर्क पैटर्न दिखाने वाली छवि।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg) +![सामान्य पुनरावर्ती तंत्रिका नेटवर्क पैटर्न दिखाने वाली छवि।](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> *छवि [इस ब्लॉग पोस्ट](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) से है [Andrej Karpathy](http://karpathy.github.io/) द्वारा। NER टोकन वर्गीकरण मॉडल इस चित्र पर सबसे दाहिनी नेटवर्क आर्किटेक्चर से संबंधित हैं।* +> *[इस ब्लॉग पोस्ट](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) से छवि [आंद्रेज कारपथी](http://karpathy.github.io/) द्वारा। NER टोकन वर्गीकरण मॉडल इस चित्र में सबसे दाईं ओर के नेटवर्क आर्किटेक्चर से मेल खाते हैं।* ## NER मॉडल का प्रशिक्षण -चूंकि एक NER मॉडल मूल रूप से एक टोकन वर्गीकरण मॉडल है, हम इस कार्य के लिए RNNs का उपयोग कर सकते हैं जिनसे हम पहले से परिचित हैं। इस मामले में, पुनरावृत्त नेटवर्क का प्रत्येक ब्लॉक टोकन ID लौटाएगा। निम्नलिखित उदाहरण नोटबुक दिखाता है कि टोकन वर्गीकरण के लिए LSTM को कैसे प्रशिक्षित किया जाए। +चूंकि NER मॉडल मूल रूप से एक टोकन वर्गीकरण मॉडल है, हम इस कार्य के लिए RNN का उपयोग कर सकते हैं, जिनसे हम पहले से परिचित हैं। इस मामले में, पुनरावर्ती नेटवर्क का प्रत्येक ब्लॉक टोकन ID लौटाएगा। निम्नलिखित उदाहरण नोटबुक दिखाता है कि टोकन वर्गीकरण के लिए LSTM को कैसे प्रशिक्षित किया जाए। ## ✍️ उदाहरण नोटबुक: NER -अपनी पढ़ाई जारी रखें निम्नलिखित नोटबुक में: +अगले नोटबुक में अपनी सीख जारी रखें: * [TensorFlow के साथ NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) ## निष्कर्ष -एक NER मॉडल एक **टोकन वर्गीकरण मॉडल** है, जिसका अर्थ है कि इसका उपयोग टोकन वर्गीकरण करने के लिए किया जा सकता है। यह NLP में एक बहुत सामान्य कार्य है, जो पाठ में विशिष्ट इकाइयों को पहचानने में मदद करता है, जिसमें स्थान, नाम, तिथियाँ और अधिक शामिल हैं। +एक NER मॉडल एक **टोकन वर्गीकरण मॉडल** है, जिसका अर्थ है कि इसे टोकन वर्गीकरण करने के लिए उपयोग किया जा सकता है। यह NLP में एक बहुत ही सामान्य कार्य है, जो पाठ में विशिष्ट इकाइयों को पहचानने में मदद करता है, जैसे स्थान, नाम, तिथियां, और अधिक। ## 🚀 चुनौती -नीचे दिए गए असाइनमेंट को पूरा करें ताकि चिकित्सा शर्तों के लिए नामित इकाई पहचान मॉडल को प्रशिक्षित किया जा सके, फिर इसे एक अलग डेटासेट पर आजमाएं। +नीचे दिए गए असाइनमेंट को पूरा करें, जिसमें चिकित्सा शब्दों के लिए एक नामित इकाई पहचान मॉडल को प्रशिक्षित करना है, और फिर इसे एक अलग डेटासेट पर आज़माएं। -## [पोस्ट-लेचर क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [पाठ-पर्यंत क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -ब्लॉग [पुनरावृत्त न्यूरल नेटवर्क की असंगत प्रभावशीलता](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) के माध्यम से पढ़ें और उस लेख में आगे की पढ़ाई के अनुभाग के साथ आगे बढ़ें ताकि आपके ज्ञान को गहरा किया जा सके। +ब्लॉग [पुनरावर्ती तंत्रिका नेटवर्क की अविश्वसनीय प्रभावशीलता](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) पढ़ें और उस लेख के "आगे पढ़ाई" अनुभाग के साथ आगे बढ़ें ताकि अपने ज्ञान को गहरा कर सकें। ## [असाइनमेंट](lab/README.md) -इस पाठ के लिए असाइनमेंट में, आपको एक चिकित्सा इकाई पहचान मॉडल को प्रशिक्षित करना होगा। आप इस पाठ में वर्णित LSTM मॉडल को प्रशिक्षित करने से शुरू कर सकते हैं, और फिर BERT ट्रांसफार्मर मॉडल का उपयोग कर सकते हैं। सभी विवरण प्राप्त करने के लिए [निर्देश पढ़ें](lab/README.md)। +इस पाठ के असाइनमेंट में, आपको एक चिकित्सा इकाई पहचान मॉडल को प्रशिक्षित करना होगा। आप इस पाठ में वर्णित LSTM मॉडल को प्रशिक्षित करने से शुरू कर सकते हैं, और फिर BERT ट्रांसफॉर्मर मॉडल का उपयोग कर सकते हैं। सभी विवरण प्राप्त करने के लिए [निर्देश पढ़ें](lab/README.md)। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/19-NER/lab/README.md b/translations/hi/lessons/5-NLP/19-NER/lab/README.md index 18c703d4..e9b22b7f 100644 --- a/translations/hi/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/hi/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। ## कार्य -इस प्रयोगशाला में, आपको चिकित्सा शब्दों के लिए नामित इकाई पहचान मॉडल को प्रशिक्षित करना होगा। +इस लैब में, आपको मेडिकल शब्दों के लिए एक नामित इकाई पहचान (NER) मॉडल को प्रशिक्षित करना है। ## डेटासेट -NER मॉडल को प्रशिक्षित करने के लिए, हमें चिकित्सा इकाइयों के साथ उचित रूप से लेबल किया गया डेटासेट चाहिए। [BC5CDR डेटासेट](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) में 1500 से अधिक पत्रों से लेबल किए गए रोगों और रसायनों की इकाइयाँ शामिल हैं। आप उनकी वेबसाइट पर पंजीकरण करने के बाद डेटासेट डाउनलोड कर सकते हैं। +NER मॉडल को प्रशिक्षित करने के लिए, हमें मेडिकल इकाइयों के साथ सही तरीके से लेबल किया गया डेटासेट चाहिए। [BC5CDR डेटासेट](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) में 1500 से अधिक पेपर्स से बीमारियों और रसायनों की लेबल की गई इकाइयाँ शामिल हैं। आप उनके वेबसाइट पर रजिस्टर करने के बाद इस डेटासेट को डाउनलोड कर सकते हैं। -BC5CDR डेटासेट इस तरह दिखता है: +BC5CDR डेटासेट इस प्रकार दिखता है: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ BC5CDR डेटासेट इस तरह दिखता है: ... ``` -इस डेटासेट में, पहले दो पंक्तियों में पत्र का शीर्षक और सारांश है, और फिर व्यक्तिगत इकाइयाँ हैं, जिनमें शीर्षक+सारांश ब्लॉक के भीतर प्रारंभ और अंत स्थिति होती है। इकाई के प्रकार के अलावा, आपको इस इकाई का ओंटोलॉजी आईडी भी मिलता है, जो कुछ चिकित्सा ओंटोलॉजी के भीतर होता है। +इस डेटासेट में, पहले दो लाइनों में पेपर का शीर्षक और सारांश होता है, और फिर व्यक्तिगत इकाइयाँ होती हैं, जिनमें शीर्षक+सारांश ब्लॉक के भीतर आरंभ और समाप्ति स्थान होते हैं। इकाई के प्रकार के अलावा, आपको इस इकाई का किसी मेडिकल ऑंटोलॉजी में ऑंटोलॉजी आईडी भी मिलता है। -आपको इसे BIO एन्कोडिंग में परिवर्तित करने के लिए कुछ पायथन कोड लिखने की आवश्यकता होगी। +आपको इसे BIO एन्कोडिंग में बदलने के लिए कुछ Python कोड लिखने की आवश्यकता होगी। ## नेटवर्क -NER पर पहला प्रयास LSTM नेटवर्क का उपयोग करके किया जा सकता है, जैसा कि आपने पाठ के दौरान देखा। हालाँकि, NLP कार्यों में, [ट्रांसफार्मर आर्किटेक्चर](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) और विशेष रूप से [BERT भाषा मॉडल](https://en.wikipedia.org/wiki/BERT_(language_model)) बहुत बेहतर परिणाम दिखाते हैं। पूर्व-प्रशिक्षित BERT मॉडल एक भाषा की सामान्य संरचना को समझते हैं, और विशेष कार्यों के लिए अपेक्षाकृत छोटे डेटासेट और कम्प्यूटेशनल लागत के साथ फाइन-ट्यून किया जा सकता है। +NER के लिए पहला प्रयास LSTM नेटवर्क का उपयोग करके किया जा सकता है, जैसा कि आपने पाठ के दौरान हमारे उदाहरण में देखा है। हालांकि, NLP कार्यों में, [ट्रांसफॉर्मर आर्किटेक्चर](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) और विशेष रूप से [BERT भाषा मॉडल्स](https://en.wikipedia.org/wiki/BERT_(language_model)) कहीं बेहतर परिणाम दिखाते हैं। प्री-ट्रेंड BERT मॉडल भाषा की सामान्य संरचना को समझते हैं और अपेक्षाकृत छोटे डेटासेट और कम कंप्यूटेशनल लागत के साथ विशिष्ट कार्यों के लिए फाइन-ट्यून किए जा सकते हैं। -चूंकि हम चिकित्सा परिदृश्य में NER लागू करने की योजना बना रहे हैं, इसलिए चिकित्सा पाठों पर प्रशिक्षित BERT मॉडल का उपयोग करना समझ में आता है। Microsoft Research ने एक पूर्व-प्रशिक्षित मॉडल जारी किया है जिसे [PubMedBERT][PubMedBERT] ([प्रकाशन][PubMedBERT-Pub]) कहा जाता है, जिसे [PubMed](https://pubmed.ncbi.nlm.nih.gov/) रिपॉजिटरी से पाठों का उपयोग करके फाइन-ट्यून किया गया था। +चूंकि हम NER को मेडिकल परिदृश्य में लागू करने की योजना बना रहे हैं, इसलिए मेडिकल टेक्स्ट पर प्रशिक्षित BERT मॉडल का उपयोग करना समझदारी होगी। Microsoft Research ने [PubMedBERT][PubMedBERT] ([प्रकाशन][PubMedBERT-Pub]) नामक एक प्री-ट्रेंड मॉडल जारी किया है, जिसे [PubMed](https://pubmed.ncbi.nlm.nih.gov/) रिपॉजिटरी के टेक्स्ट का उपयोग करके फाइन-ट्यून किया गया था। -ट्रांसफार्मर मॉडल को प्रशिक्षित करने के लिए *de facto* मानक [Hugging Face Transformers](https://huggingface.co/) पुस्तकालय है। इसमें समुदाय द्वारा बनाए गए पूर्व-प्रशिक्षित मॉडलों का एक रिपॉजिटरी भी शामिल है, जिसमें PubMedBERT भी है। इस मॉडल को लोड और उपयोग करने के लिए, हमें केवल कुछ पंक्तियों के कोड की आवश्यकता है: +ट्रांसफॉर्मर मॉडल को प्रशिक्षित करने के लिए *डि फैक्टो* मानक [Hugging Face Transformers](https://huggingface.co/) लाइब्रेरी है। इसमें सामुदायिक रूप से बनाए गए प्री-ट्रेंड मॉडल्स का रिपॉजिटरी भी शामिल है, जिसमें PubMedBERT भी है। इस मॉडल को लोड और उपयोग करने के लिए, हमें केवल कुछ लाइनों के कोड की आवश्यकता है: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -यह हमें `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` वस्तु देता है जो इनपुट पाठ को टोकनों में विभाजित कर सकता है। आपको डेटासेट को BIO प्रारूप में परिवर्तित करने की आवश्यकता होगी, जिसमें PubMedBERT टोकनाइजेशन का ध्यान रखा जाएगा। आप [इस पायथन कोड के टुकड़े](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) का उपयोग प्रेरणा के रूप में कर सकते हैं। +यह हमें `model` देता है, जो टोकन वर्गीकरण कार्य के लिए `classes` की संख्या के साथ बनाया गया है, और `tokenizer` ऑब्जेक्ट जो इनपुट टेक्स्ट को टोकन में विभाजित कर सकता है। आपको डेटासेट को BIO फॉर्मेट में बदलने की आवश्यकता होगी, PubMedBERT टोकनाइजेशन को ध्यान में रखते हुए। आप [इस Python कोड के टुकड़े](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) को प्रेरणा के रूप में उपयोग कर सकते हैं। ## निष्कर्ष -यह कार्य वास्तव में उस कार्य के बहुत करीब है जो आपके पास तब होगा जब आप प्राकृतिक भाषा के पाठों की बड़ी मात्रा में अधिक अंतर्दृष्टि प्राप्त करना चाहेंगे। हमारे मामले में, हम अपने प्रशिक्षित मॉडल को [COVID-संबंधित पत्रों के डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) पर लागू कर सकते हैं और देख सकते हैं कि हम कौन सी अंतर्दृष्टियाँ प्राप्त कर सकते हैं। [यह ब्लॉग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) और [यह पेपर](https://www.mdpi.com/2504-2289/6/1/4) इस डेटासेट पर NER का उपयोग करके किए जा सकने वाले अनुसंधान का वर्णन करते हैं। +यह कार्य वास्तविक कार्य के बहुत करीब है, जो आपको बड़े पैमाने पर प्राकृतिक भाषा टेक्स्ट का विश्लेषण करने के लिए करना पड़ सकता है। हमारे मामले में, हम अपने प्रशिक्षित मॉडल को [COVID से संबंधित पेपर्स के डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) पर लागू कर सकते हैं और देख सकते हैं कि हम कौन-कौन सी जानकारियाँ प्राप्त कर सकते हैं। [यह ब्लॉग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) और [यह पेपर](https://www.mdpi.com/2504-2289/6/1/4) इस कॉर्पस ऑफ पेपर्स पर NER का उपयोग करके किए गए शोध का वर्णन करते हैं। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/5-NLP/20-LangModels/README.md b/translations/hi/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..6c0f84ab --- /dev/null +++ b/translations/hi/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# प्री-ट्रेंड बड़े भाषा मॉडल + +हमने अब तक के सभी कार्यों में, एक न्यूरल नेटवर्क को एक निश्चित कार्य करने के लिए लेबल्ड डेटा सेट का उपयोग करके प्रशिक्षित किया। बड़े ट्रांसफॉर्मर मॉडल, जैसे कि BERT, में हम भाषा मॉडलिंग को सेल्फ-सुपरवाइज्ड तरीके से उपयोग करते हैं ताकि एक भाषा मॉडल बनाया जा सके, जिसे फिर विशेष डोमेन-विशिष्ट प्रशिक्षण के साथ किसी विशेष डाउनस्ट्रीम कार्य के लिए अनुकूलित किया जाता है। हालांकि, यह साबित हो चुका है कि बड़े भाषा मॉडल कई कार्य बिना किसी डोमेन-विशिष्ट प्रशिक्षण के भी हल कर सकते हैं। ऐसे मॉडलों के परिवार को **GPT**: जनरेटिव प्री-ट्रेंड ट्रांसफॉर्मर कहा जाता है। + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## टेक्स्ट जनरेशन और परप्लेक्सिटी + +न्यूरल नेटवर्क द्वारा बिना डाउनस्ट्रीम प्रशिक्षण के सामान्य कार्य करने की क्षमता को [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) पेपर में प्रस्तुत किया गया है। मुख्य विचार यह है कि कई अन्य कार्यों को **टेक्स्ट जनरेशन** का उपयोग करके मॉडल किया जा सकता है, क्योंकि टेक्स्ट को समझने का मतलब है उसे उत्पन्न करने में सक्षम होना। चूंकि मॉडल को मानव ज्ञान को समाहित करने वाले विशाल मात्रा के टेक्स्ट पर प्रशिक्षित किया गया है, यह विभिन्न विषयों के बारे में भी ज्ञानवान बन जाता है। + +> टेक्स्ट को समझना और उत्पन्न करने में सक्षम होना, हमारे आसपास की दुनिया के बारे में कुछ जानने का भी संकेत देता है। लोग भी बड़े पैमाने पर पढ़कर सीखते हैं, और GPT नेटवर्क इस दृष्टि से समान है। + +टेक्स्ट जनरेशन नेटवर्क अगले शब्द की संभावना $$P(w_N)$$ की भविष्यवाणी करके काम करते हैं। हालांकि, अगले शब्द की बिना शर्त संभावना टेक्स्ट कॉर्पस में इस शब्द की आवृत्ति के बराबर होती है। GPT हमें पिछले शब्दों को ध्यान में रखते हुए अगले शब्द की **सशर्त संभावना** प्रदान करने में सक्षम है: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> आप हमारे [डेटा साइंस फॉर बिगिनर्स करिकुलम](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) में संभावनाओं के बारे में अधिक पढ़ सकते हैं। + +भाषा जनरेटिंग मॉडल की गुणवत्ता को **परप्लेक्सिटी** का उपयोग करके परिभाषित किया जा सकता है। यह एक आंतरिक मीट्रिक है जो हमें किसी कार्य-विशिष्ट डेटा सेट के बिना मॉडल की गुणवत्ता मापने की अनुमति देता है। यह *वाक्य की संभावना* की धारणा पर आधारित है - मॉडल उन वाक्यों को उच्च संभावना प्रदान करता है जो वास्तविक होने की संभावना रखते हैं (यानी मॉडल उनसे **भ्रमित** नहीं होता), और उन वाक्यों को कम संभावना देता है जो कम समझ में आते हैं (जैसे *क्या यह कर सकता है क्या?*)। जब हम अपने मॉडल को वास्तविक टेक्स्ट कॉर्पस से वाक्य देते हैं, तो हमें उनसे उच्च संभावना और कम **परप्लेक्सिटी** की उम्मीद होती है। गणितीय रूप से, इसे परीक्षण सेट की सामान्यीकृत प्रतिलोम संभावना के रूप में परिभाषित किया गया है: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**आप [Hugging Face के GPT-समर्थित टेक्स्ट एडिटर](https://transformer.huggingface.co/doc/gpt2-large)** का उपयोग करके टेक्स्ट जनरेशन के साथ प्रयोग कर सकते हैं। इस एडिटर में, आप अपना टेक्स्ट लिखना शुरू करते हैं, और **[TAB]** दबाने पर आपको कई पूर्णता विकल्प मिलते हैं। यदि वे बहुत छोटे हैं, या आप उनसे संतुष्ट नहीं हैं - [TAB] फिर से दबाएं, और आपको अधिक विकल्प मिलेंगे, जिनमें लंबे टेक्स्ट के टुकड़े भी शामिल हैं। + +## GPT एक परिवार है + +GPT एक एकल मॉडल नहीं है, बल्कि [OpenAI](https://openai.com) द्वारा विकसित और प्रशिक्षित मॉडलों का एक संग्रह है। + +GPT मॉडलों के अंतर्गत, हमारे पास हैं: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| भाषा मॉडल जिसमें 1.5 बिलियन पैरामीटर तक हैं। | भाषा मॉडल जिसमें 175 बिलियन पैरामीटर तक हैं। | 100 ट्रिलियन पैरामीटर और यह टेक्स्ट और इमेज दोनों इनपुट स्वीकार करता है और टेक्स्ट आउटपुट देता है। | + +GPT-3 और GPT-4 मॉडल [Microsoft Azure से एक कॉग्निटिव सर्विस के रूप में](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) और [OpenAI API](https://openai.com/api/) के रूप में उपलब्ध हैं। + +## प्रॉम्प्ट इंजीनियरिंग + +चूंकि GPT को भाषा और कोड को समझने के लिए विशाल मात्रा के डेटा पर प्रशिक्षित किया गया है, यह इनपुट (प्रॉम्प्ट) के जवाब में आउटपुट प्रदान करता है। प्रॉम्प्ट GPT के इनपुट या क्वेरी होते हैं, जिनमें आप मॉडल को कार्यों के लिए निर्देश देते हैं। वांछित परिणाम प्राप्त करने के लिए, आपको सबसे प्रभावी प्रॉम्प्ट की आवश्यकता होती है, जिसमें सही शब्द, प्रारूप, वाक्यांश या यहां तक कि प्रतीकों का चयन शामिल होता है। इस दृष्टिकोण को [प्रॉम्प्ट इंजीनियरिंग](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) कहा जाता है। + +[यह दस्तावेज़](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) आपको प्रॉम्प्ट इंजीनियरिंग पर अधिक जानकारी प्रदान करता है। + +## ✍️ उदाहरण नोटबुक: [OpenAI-GPT के साथ खेलना](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +अगले नोटबुक्स में अपनी सीख जारी रखें: + +* [OpenAI-GPT और Hugging Face ट्रांसफॉर्मर्स के साथ टेक्स्ट जनरेट करना](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## निष्कर्ष + +नए सामान्य प्री-ट्रेंड भाषा मॉडल केवल भाषा संरचना को मॉडल नहीं करते, बल्कि प्राकृतिक भाषा की विशाल मात्रा भी समाहित करते हैं। इस प्रकार, वे कुछ NLP कार्यों को ज़ीरो-शॉट या फ्यू-शॉट सेटिंग्स में प्रभावी ढंग से हल करने के लिए उपयोग किए जा सकते हैं। + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**अस्वीकरण**: +यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/README.md b/translations/hi/lessons/5-NLP/README.md index fe063e3c..cd601832 100644 --- a/translations/hi/lessons/5-NLP/README.md +++ b/translations/hi/lessons/5-NLP/README.md @@ -1,69 +1,78 @@ + # प्राकृतिक भाषा प्रसंस्करण -![NLP कार्यों का सारांश एक डूडल में](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hi.png) +![NLP कार्यों का एक स्केच](../../../../lessons/sketchnotes/ai-nlp.png) -इस अनुभाग में, हम **प्राकृतिक भाषा प्रसंस्करण (NLP)** से संबंधित कार्यों को संभालने के लिए न्यूरल नेटवर्क का उपयोग करने पर ध्यान केंद्रित करेंगे। कई NLP समस्याएँ हैं जिन्हें हम चाहते हैं कि कंप्यूटर हल कर सकें: +इस खंड में, हम **प्राकृतिक भाषा प्रसंस्करण (NLP)** से संबंधित कार्यों को संभालने के लिए न्यूरल नेटवर्क का उपयोग करने पर ध्यान केंद्रित करेंगे। कई NLP समस्याएं हैं जिन्हें हम चाहते हैं कि कंप्यूटर हल कर सकें: -* **पाठ वर्गीकरण** एक विशिष्ट वर्गीकरण समस्या है जो पाठ अनुक्रमों से संबंधित है। उदाहरण के लिए, ई-मेल संदेशों को स्पैम बनाम नॉन-स्पैम के रूप में वर्गीकृत करना, या लेखों को खेल, व्यवसाय, राजनीति आदि के रूप में श्रेणीबद्ध करना। इसके अलावा, जब हम चैट बॉट विकसित करते हैं, तो हमें अक्सर यह समझने की आवश्यकता होती है कि उपयोगकर्ता क्या कहना चाहता था - इस मामले में हम **इरादे वर्गीकरण** से निपट रहे हैं। अक्सर, इरादे वर्गीकरण में हमें कई श्रेणियों से निपटना पड़ता है। -* **भावना विश्लेषण** एक विशिष्ट प्रतिगमन समस्या है, जहां हमें एक संख्या (एक भावना) को यह निर्धारित करने के लिए आवंटित करना होता है कि एक वाक्य का अर्थ कितना सकारात्मक/नकारात्मक है। भावना विश्लेषण का एक अधिक उन्नत संस्करण है **आस्पेक्ट-आधारित भावना विश्लेषण** (ABSA), जहां हम भावना को पूरे वाक्य में नहीं, बल्कि इसके विभिन्न भागों (आस्पेक्ट्स) में आवंटित करते हैं, जैसे कि *इस रेस्तरां में, मुझे भोजन पसंद आया, लेकिन माहौल भयानक था*। -* **नामित इकाई पहचान** (NER) पाठ से कुछ इकाइयों को निकालने की समस्या को संदर्भित करता है। उदाहरण के लिए, हमें समझने की आवश्यकता हो सकती है कि वाक्यांश *मुझे कल पेरिस उड़ान भरनी है* में शब्द *कल* DATE को संदर्भित करता है, और *पेरिस* एक LOCATION है। -* **कीवर्ड निष्कर्षण** NER के समान है, लेकिन हमें वाक्य के अर्थ के लिए महत्वपूर्ण शब्दों को स्वचालित रूप से निकालना होता है, बिना विशिष्ट इकाई प्रकारों के लिए पूर्व-प्रशिक्षण के। -* **पाठ क्लस्टरिंग** तब उपयोगी हो सकती है जब हम समान वाक्यों को एक साथ समूहित करना चाहते हैं, उदाहरण के लिए, तकनीकी सहायता वार्तालापों में समान अनुरोध। -* **प्रश्न उत्तर** एक मॉडल की एक विशिष्ट प्रश्न का उत्तर देने की क्षमता को संदर्भित करता है। मॉडल एक पाठ पासेज और एक प्रश्न को इनपुट के रूप में प्राप्त करता है, और इसे पाठ में उस स्थान को प्रदान करना होता है जहां प्रश्न का उत्तर निहित है (या, कभी-कभी, उत्तर पाठ उत्पन्न करना होता है)। -* **पाठ उत्पन्न करना** एक मॉडल की नई पाठ उत्पन्न करने की क्षमता है। इसे एक वर्गीकरण कार्य के रूप में माना जा सकता है जो कुछ *पाठ प्रॉम्प्ट* के आधार पर अगला अक्षर/शब्द पूर्वानुमान करता है। उन्नत पाठ उत्पन्न करने वाले मॉडल, जैसे GPT-3, अन्य NLP कार्यों को हल करने में सक्षम होते हैं जैसे कि वर्गीकरण, एक तकनीक का उपयोग करके जिसे [प्रॉम्प्ट प्रोग्रामिंग](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) या [प्रॉम्प्ट इंजीनियरिंग](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) कहा जाता है। -* **पाठ संक्षेपण** एक तकनीक है जब हम चाहते हैं कि एक कंप्यूटर लंबे पाठ को "पढ़े" और उसे कुछ वाक्यों में संक्षेपित करे। -* **मशीन अनुवाद** को एक भाषा में पाठ की समझ और दूसरी में पाठ उत्पन्न करने के संयोजन के रूप में देखा जा सकता है। +* **पाठ वर्गीकरण** एक सामान्य वर्गीकरण समस्या है जो पाठ अनुक्रमों से संबंधित है। उदाहरणों में ईमेल संदेशों को स्पैम और गैर-स्पैम के रूप में वर्गीकृत करना, या लेखों को खेल, व्यापार, राजनीति आदि के रूप में वर्गीकृत करना शामिल है। इसके अलावा, जब हम चैटबॉट विकसित करते हैं, तो हमें अक्सर यह समझने की आवश्यकता होती है कि उपयोगकर्ता क्या कहना चाहता था -- इस मामले में हम **इरादा वर्गीकरण** से निपट रहे हैं। इरादा वर्गीकरण में अक्सर हमें कई श्रेणियों से निपटना पड़ता है। +* **भावना विश्लेषण** एक सामान्य प्रतिगमन समस्या है, जहां हमें एक वाक्य के अर्थ की सकारात्मकता/नकारात्मकता के अनुसार एक संख्या (भावना) को निर्दिष्ट करना होता है। भावना विश्लेषण का एक अधिक उन्नत संस्करण **पहलू-आधारित भावना विश्लेषण** (ABSA) है, जहां हम भावना को पूरे वाक्य के बजाय उसके विभिन्न भागों (पहलुओं) को निर्दिष्ट करते हैं, जैसे *इस रेस्तरां में, मुझे खाना पसंद आया, लेकिन माहौल भयानक था*। +* **नामित इकाई पहचान** (NER) पाठ से कुछ विशिष्ट इकाइयों को निकालने की समस्या को संदर्भित करता है। उदाहरण के लिए, हमें यह समझने की आवश्यकता हो सकती है कि वाक्यांश *मुझे कल पेरिस जाना है* में *कल* शब्द DATE को संदर्भित करता है, और *पेरिस* एक LOCATION है। +* **कीवर्ड निष्कर्षण** NER के समान है, लेकिन इसमें हमें वाक्य के अर्थ के लिए महत्वपूर्ण शब्दों को स्वचालित रूप से निकालना होता है, बिना विशिष्ट इकाई प्रकारों के लिए पूर्व-प्रशिक्षण के। +* **पाठ क्लस्टरिंग** तब उपयोगी हो सकती है जब हम समान वाक्यों को एक साथ समूहित करना चाहते हैं, जैसे तकनीकी सहायता वार्तालापों में समान अनुरोध। +* **प्रश्न उत्तर देना** एक मॉडल की क्षमता को संदर्भित करता है कि वह किसी विशिष्ट प्रश्न का उत्तर दे सके। मॉडल को एक पाठ अंश और एक प्रश्न इनपुट के रूप में प्राप्त होता है, और इसे पाठ में उस स्थान को प्रदान करना होता है जहां प्रश्न का उत्तर निहित है (या, कभी-कभी, उत्तर पाठ उत्पन्न करना होता है)। +* **पाठ निर्माण** एक मॉडल की नई पाठ उत्पन्न करने की क्षमता है। इसे एक वर्गीकरण कार्य के रूप में माना जा सकता है जो कुछ *पाठ संकेत* के आधार पर अगला अक्षर/शब्द भविष्यवाणी करता है। उन्नत पाठ निर्माण मॉडल, जैसे GPT-3, [प्रॉम्प्ट प्रोग्रामिंग](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) या [प्रॉम्प्ट इंजीनियरिंग](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) नामक तकनीक का उपयोग करके अन्य NLP कार्यों जैसे वर्गीकरण को हल करने में सक्षम हैं। +* **पाठ सारांशण** एक तकनीक है जब हम चाहते हैं कि कंप्यूटर लंबे पाठ को "पढ़े" और उसे कुछ वाक्यों में संक्षेपित करे। +* **मशीन अनुवाद** को एक भाषा में पाठ को समझने और दूसरी भाषा में पाठ उत्पन्न करने के संयोजन के रूप में देखा जा सकता है। -शुरुआत में, अधिकांश NLP कार्य पारंपरिक विधियों जैसे व्याकरण का उपयोग करके हल किए गए थे। उदाहरण के लिए, मशीन अनुवाद में पार्सर का उपयोग प्रारंभिक वाक्य को एक सिंटैक्स ट्री में बदलने के लिए किया गया, फिर उच्च स्तर की अर्थ संबंधी संरचनाएँ निकाली गईं ताकि वाक्य के अर्थ का प्रतिनिधित्व किया जा सके, और इस अर्थ और लक्षित भाषा के व्याकरण के आधार पर परिणाम उत्पन्न किया गया। आजकल, कई NLP कार्यों को न्यूरल नेटवर्क का उपयोग करके अधिक प्रभावी ढंग से हल किया जाता है। +शुरुआत में, अधिकांश NLP कार्य पारंपरिक तरीकों जैसे व्याकरण का उपयोग करके हल किए गए थे। उदाहरण के लिए, मशीन अनुवाद में पार्सर का उपयोग प्रारंभिक वाक्य को एक सिंटैक्स ट्री में बदलने के लिए किया जाता था, फिर उच्च-स्तरीय अर्थ संरचनाओं को वाक्य के अर्थ का प्रतिनिधित्व करने के लिए निकाला जाता था, और इस अर्थ और लक्ष्य भाषा के व्याकरण के आधार पर परिणाम उत्पन्न किया जाता था। आजकल, कई NLP कार्य न्यूरल नेटवर्क का उपयोग करके अधिक प्रभावी ढंग से हल किए जाते हैं। -> कई शास्त्रीय NLP विधियाँ [प्राकृतिक भाषा प्रसंस्करण टूलकिट (NLTK)](https://www.nltk.org) पायथन पुस्तकालय में लागू की गई हैं। एक शानदार [NLTK पुस्तक](https://www.nltk.org/book/) ऑनलाइन उपलब्ध है जो बताती है कि विभिन्न NLP कार्यों को NLTK का उपयोग करके कैसे हल किया जा सकता है। +> कई पारंपरिक NLP विधियां [नेचुरल लैंग्वेज प्रोसेसिंग टूलकिट (NLTK)](https://www.nltk.org) पायथन लाइब्रेरी में लागू की गई हैं। एक शानदार [NLTK बुक](https://www.nltk.org/book/) ऑनलाइन उपलब्ध है जो बताती है कि विभिन्न NLP कार्यों को NLTK का उपयोग करके कैसे हल किया जा सकता है। -हमारे पाठ्यक्रम में, हम मुख्य रूप से NLP के लिए न्यूरल नेटवर्क के उपयोग पर ध्यान केंद्रित करेंगे, और जहाँ आवश्यकता होगी वहाँ NLTK का उपयोग करेंगे। +हमारे पाठ्यक्रम में, हम मुख्य रूप से NLP के लिए न्यूरल नेटवर्क का उपयोग करने पर ध्यान केंद्रित करेंगे, और जहां आवश्यक होगा, वहां NLTK का उपयोग करेंगे। -हम पहले ही तालिका डेटा और छवियों के साथ निपटने के लिए न्यूरल नेटवर्क के उपयोग के बारे में सीख चुके हैं। उन प्रकार के डेटा और पाठ के बीच मुख्य अंतर यह है कि पाठ एक परिवर्तनशील लंबाई का अनुक्रम है, जबकि छवियों के मामले में इनपुट आकार पहले से ज्ञात होता है। जबकि संयोजक नेटवर्क इनपुट डेटा से पैटर्न निकाल सकते हैं, पाठ में पैटर्न अधिक जटिल होते हैं। उदाहरण के लिए, नकारात्मकता को कई शब्दों के लिए विषय से अलग किया जा सकता है (जैसे *मुझे संतरे पसंद नहीं हैं*, बनाम *मुझे उन बड़े रंगीन स्वादिष्ट संतरों से नफरत है*), और इसे अभी भी एक पैटर्न के रूप में व्याख्या किया जाना चाहिए। इसलिए, भाषा को संभालने के लिए हमें नए न्यूरल नेटवर्क प्रकारों को पेश करने की आवश्यकता है, जैसे कि *पुनरावृत्त नेटवर्क* और *ट्रांसफार्मर*। +हमने पहले ही तालिका डेटा और छवियों से निपटने के लिए न्यूरल नेटवर्क का उपयोग करना सीखा है। उन प्रकार के डेटा और पाठ के बीच मुख्य अंतर यह है कि पाठ एक परिवर्तनीय लंबाई का अनुक्रम है, जबकि छवियों के मामले में इनपुट आकार पहले से ज्ञात होता है। जबकि कन्वोल्यूशनल नेटवर्क इनपुट डेटा से पैटर्न निकाल सकते हैं, पाठ में पैटर्न अधिक जटिल होते हैं। उदाहरण के लिए, हमारे पास विषय से अलग नकारात्मकता हो सकती है, जो कई शब्दों के लिए मनमाना हो सकता है (जैसे *मुझे संतरे पसंद नहीं हैं* बनाम *मुझे वे बड़े रंगीन स्वादिष्ट संतरे पसंद नहीं हैं*), और इसे अभी भी एक पैटर्न के रूप में व्याख्या किया जाना चाहिए। इस प्रकार, भाषा को संभालने के लिए हमें नए न्यूरल नेटवर्क प्रकारों को पेश करने की आवश्यकता है, जैसे *रिकरेंट नेटवर्क* और *ट्रांसफॉर्मर्स*। -## पुस्तकालय स्थापित करें +## लाइब्रेरी इंस्टॉल करें -यदि आप इस पाठ्यक्रम को चलाने के लिए स्थानीय पायथन स्थापना का उपयोग कर रहे हैं, तो आपको निम्नलिखित कमांड का उपयोग करके NLP के लिए सभी आवश्यक पुस्तकालय स्थापित करने की आवश्यकता हो सकती है: +यदि आप इस पाठ्यक्रम को चलाने के लिए स्थानीय पायथन इंस्टॉलेशन का उपयोग कर रहे हैं, तो आपको NLP के लिए आवश्यक सभी लाइब्रेरी निम्नलिखित कमांड का उपयोग करके इंस्टॉल करनी पड़ सकती हैं: -**PyTorch के लिए** +**PyTorch के लिए** ```bash pip install -r requirements-torch.txt -``` -**TensorFlow के लिए** +``` +**TensorFlow के लिए** ```bash pip install -r requirements-tf.txt -``` +``` -> आप [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) पर TensorFlow के साथ NLP का प्रयास कर सकते हैं। +> आप [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) पर TensorFlow के साथ NLP आज़मा सकते हैं। ## GPU चेतावनी -इस अनुभाग में, कुछ उदाहरणों में हम काफी बड़े मॉडल को प्रशिक्षित कर रहे होंगे। -* **GPU-सक्षम कंप्यूटर का उपयोग करें**: बड़े मॉडलों के साथ काम करते समय प्रतीक्षा समय को कम करने के लिए अपने नोटबुक को GPU-सक्षम कंप्यूटर पर चलाना उचित है। -* **GPU मेमोरी की सीमाएँ**: GPU पर चलाने से ऐसी स्थिति उत्पन्न हो सकती है जहाँ आपके GPU मेमोरी की कमी हो जाती है, विशेष रूप से बड़े मॉडलों को प्रशिक्षित करते समय। -* **GPU मेमोरी खपत**: प्रशिक्षण के दौरान GPU मेमोरी की मात्रा विभिन्न कारकों पर निर्भर करती है, जिसमें मिनीबैच आकार शामिल है। -* **मिनीबैच आकार को कम करें**: यदि आप GPU मेमोरी की समस्याओं का सामना कर रहे हैं, तो संभावित समाधान के रूप में अपने कोड में मिनीबैच आकार को कम करने पर विचार करें। -* **TensorFlow GPU मेमोरी रिलीज़**: TensorFlow के पुराने संस्करण एक ही पायथन कर्नेल के भीतर कई मॉडलों को प्रशिक्षित करते समय GPU मेमोरी को सही तरीके से रिलीज़ नहीं कर सकते। GPU मेमोरी उपयोग को प्रभावी ढंग से प्रबंधित करने के लिए, आप TensorFlow को केवल आवश्यकता पड़ने पर GPU मेमोरी आवंटित करने के लिए कॉन्फ़िगर कर सकते हैं। -* **कोड समावेश**: यदि आप TensorFlow को केवल आवश्यक होने पर GPU मेमोरी आवंटन बढ़ाने के लिए सेट करना चाहते हैं, तो अपने नोटबुक में निम्नलिखित कोड शामिल करें: +इस खंड में, कुछ उदाहरणों में हम काफी बड़े मॉडल का प्रशिक्षण करेंगे। +* **GPU-सक्षम कंप्यूटर का उपयोग करें**: बड़े मॉडलों के साथ काम करते समय प्रतीक्षा समय को कम करने के लिए अपने नोटबुक को GPU-सक्षम कंप्यूटर पर चलाना उचित है। +* **GPU मेमोरी सीमाएं**: GPU पर चलने से ऐसी स्थितियां उत्पन्न हो सकती हैं जहां आप GPU मेमोरी से बाहर हो जाएं, विशेष रूप से बड़े मॉडलों को प्रशिक्षित करते समय। +* **GPU मेमोरी खपत**: प्रशिक्षण के दौरान GPU मेमोरी की खपत विभिन्न कारकों पर निर्भर करती है, जिसमें मिनीबैच का आकार शामिल है। +* **मिनीबैच आकार कम करें**: यदि आपको GPU मेमोरी समस्याओं का सामना करना पड़ता है, तो संभावित समाधान के रूप में अपने कोड में मिनीबैच आकार को कम करने पर विचार करें। +* **TensorFlow GPU मेमोरी रिलीज़**: TensorFlow के पुराने संस्करण एक ही पायथन कर्नेल में कई मॉडलों को प्रशिक्षित करते समय GPU मेमोरी को सही ढंग से रिलीज़ नहीं कर सकते। GPU मेमोरी उपयोग को प्रभावी ढंग से प्रबंधित करने के लिए, आप TensorFlow को केवल आवश्यकतानुसार GPU मेमोरी आवंटित करने के लिए कॉन्फ़िगर कर सकते हैं। +* **कोड शामिल करें**: TensorFlow को केवल आवश्यकतानुसार GPU मेमोरी आवंटन बढ़ाने के लिए, अपने नोटबुक में निम्नलिखित कोड शामिल करें: ```python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) -``` +``` -यदि आप क्लासिक ML दृष्टिकोण से NLP के बारे में सीखने में रुचि रखते हैं, तो [इस पाठों के समूह](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) पर जाएँ। +यदि आप क्लासिक ML दृष्टिकोण से NLP सीखने में रुचि रखते हैं, तो [इस पाठों के संग्रह](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) पर जाएं। -## इस अनुभाग में -इस अनुभाग में हम सीखेंगे: +## इस खंड में +इस खंड में हम निम्नलिखित के बारे में जानेंगे: -* [पाठ को टेन्सर के रूप में प्रस्तुत करना](13-TextRep/README.md) -* [शब्द एम्बेडिंग](14-Emdeddings/README.md) -* [भाषा मॉडलिंग](15-LanguageModeling/README.md) -* [पुनरावृत्त न्यूरल नेटवर्क](16-RNN/README.md) -* [जनरेटिव नेटवर्क](17-GenerativeNetworks/README.md) -* [ट्रांसफार्मर](18-Transformers/README.md) +* [पाठ को टेन्सर के रूप में प्रस्तुत करना](13-TextRep/README.md) +* [शब्द एम्बेडिंग्स](14-Emdeddings/README.md) +* [भाषा मॉडलिंग](15-LanguageModeling/README.md) +* [रिकरेंट न्यूरल नेटवर्क](16-RNN/README.md) +* [जनरेटिव नेटवर्क](17-GenerativeNetworks/README.md) +* [ट्रांसफॉर्मर्स](18-Transformers/README.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md index 0fcb8eb7..f1d0e302 100644 --- a/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ -# आनुवंशिक एल्गोरिदम + +# जेनेटिक एल्गोरिदम ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**आनुवंशिक एल्गोरिदम** (GA) एक **विकासात्मक दृष्टिकोण** पर आधारित हैं, जिसमें जनसंख्या के विकास के तरीकों का उपयोग किसी दिए गए समस्या के लिए एक आदर्श समाधान प्राप्त करने के लिए किया जाता है। इन्हें 1975 में [जॉन हेनरी हॉलैंड](https://wikipedia.org/wiki/John_Henry_Holland) द्वारा प्रस्तावित किया गया था। +**जेनेटिक एल्गोरिदम** (GA) एक **विकासवादी दृष्टिकोण** पर आधारित हैं, जिसमें किसी समस्या के लिए एक आदर्श समाधान प्राप्त करने के लिए जनसंख्या के विकास की विधियों का उपयोग किया जाता है। इन्हें 1975 में [जॉन हेनरी हॉलैंड](https://wikipedia.org/wiki/John_Henry_Holland) द्वारा प्रस्तावित किया गया था। -आनुवंशिक एल्गोरिदम निम्नलिखित विचारों पर आधारित हैं: +जेनेटिक एल्गोरिदम निम्नलिखित विचारों पर आधारित हैं: -* समस्या के वैध समाधान को **जीन** के रूप में प्रस्तुत किया जा सकता है -* **क्रॉसओवर** हमें दो समाधानों को मिलाकर एक नया वैध समाधान प्राप्त करने की अनुमति देता है -* **चयन** का उपयोग कुछ **फिटनेस फ़ंक्शन** का उपयोग करके अधिकतम समाधान चुनने के लिए किया जाता है -* **म्यूटेशन** को अनुकूलन को अस्थिर करने और हमें स्थानीय न्यूनतम से बाहर निकालने के लिए पेश किया जाता है +* समस्या के वैध समाधान को **जीन** के रूप में प्रस्तुत किया जा सकता है। +* **क्रॉसओवर** हमें दो समाधानों को मिलाकर एक नया वैध समाधान प्राप्त करने की अनुमति देता है। +* **चयन** का उपयोग कुछ **फिटनेस फंक्शन** के माध्यम से अधिक आदर्श समाधान चुनने के लिए किया जाता है। +* **म्यूटेशन** को शामिल किया जाता है ताकि अनुकूलन को अस्थिर किया जा सके और हमें स्थानीय न्यूनतम से बाहर निकाला जा सके। -यदि आप एक आनुवंशिक एल्गोरिदम लागू करना चाहते हैं, तो आपको निम्नलिखित की आवश्यकता है: +यदि आप एक जेनेटिक एल्गोरिदम लागू करना चाहते हैं, तो आपको निम्नलिखित की आवश्यकता होगी: - * हमारे समस्या समाधानों को **जीन** g∈Γ का उपयोग करके कोडिंग करने की विधि खोजें - * जीन सेट Γ पर हमें **फिटनेस फ़ंक्शन** fit: Γ→**R** को परिभाषित करने की आवश्यकता है। छोटे फ़ंक्शन मान बेहतर समाधानों के अनुरूप होते हैं। + * हमारे समस्या समाधान को **जीन** g∈Γ का उपयोग करके कोड करने की विधि खोजें। + * जीन के सेट Γ पर हमें **फिटनेस फंक्शन** fit: Γ→**R** को परिभाषित करना होगा। छोटे फंक्शन मान बेहतर समाधान को दर्शाते हैं। * दो जीन को मिलाकर एक नया वैध समाधान प्राप्त करने के लिए **क्रॉसओवर** तंत्र को परिभाषित करें crossover: Γ2→Γ। * **म्यूटेशन** तंत्र को परिभाषित करें mutate: Γ→Γ। -कई मामलों में, क्रॉसओवर और म्यूटेशन जीन को संख्यात्मक अनुक्रमों या बिट वेक्टर के रूप में हेरफेर करने के लिए काफी सरल एल्गोरिदम हैं। +कई मामलों में, क्रॉसओवर और म्यूटेशन जीन को संख्यात्मक अनुक्रम या बिट वेक्टर के रूप में हेरफेर करने के लिए काफी सरल एल्गोरिदम होते हैं। -एक आनुवंशिक एल्गोरिदम का विशिष्ट कार्यान्वयन मामले दर मामले भिन्न हो सकता है, लेकिन इसकी समग्र संरचना निम्नलिखित है: +जेनेटिक एल्गोरिदम का विशिष्ट कार्यान्वयन मामले से मामले में भिन्न हो सकता है, लेकिन समग्र संरचना निम्नलिखित है: -1. एक प्रारंभिक जनसंख्या G⊂Γ का चयन करें -2. इस चरण में किए जाने वाले कार्यों में से एक को यादृच्छिक रूप से चुनें: क्रॉसओवर या म्यूटेशन +1. प्रारंभिक जनसंख्या G⊂Γ का चयन करें। +2. इस चरण में प्रदर्शन किए जाने वाले ऑपरेशन को यादृच्छिक रूप से चुनें: क्रॉसओवर या म्यूटेशन। 3. **क्रॉसओवर**: - * यादृच्छिक रूप से दो जीन g1, g2 ∈ G का चयन करें - * क्रॉसओवर की गणना करें g=crossover(g1,g2) - * यदि fit(g)1) या fit(g)2) - जनसंख्या में संबंधित जीन को g से बदलें। -4. **म्यूटेशन** - यादृच्छिक जीन g∈G का चयन करें और इसे mutate(g) से बदलें -5. चरण 2 से दोहराएं, जब तक हमें fit का पर्याप्त छोटा मान न मिल जाए, या जब तक चरणों की संख्या पर सीमा न पहुंच जाए। + * दो जीन g1, g2 ∈ G को यादृच्छिक रूप से चुनें। + * क्रॉसओवर की गणना करें g=crossover(g1,g2)। + * यदि fit(g)1) या fit(g)2) - तो जनसंख्या में संबंधित जीन को g से बदलें। +4. **म्यूटेशन** - यादृच्छिक जीन g∈G चुनें और इसे mutate(g) से बदलें। +5. चरण 2 से दोहराएं, जब तक कि fit का मान पर्याप्त रूप से छोटा न हो जाए, या चरणों की संख्या की सीमा तक न पहुंच जाए। ## सामान्य कार्य -आनुवंशिक एल्गोरिदम द्वारा सामान्यतः हल की जाने वाली कार्यों में शामिल हैं: +जेनेटिक एल्गोरिदम द्वारा आमतौर पर हल किए जाने वाले कार्यों में शामिल हैं: -1. अनुसूची अनुकूलन +1. शेड्यूल अनुकूलन 1. आदर्श पैकिंग -1. आदर्श कटाई -1. थकावट से भरे खोज को तेज करना +1. आदर्श कटिंग +1. थकाऊ खोज को तेज करना -## ✍️ व्यायाम: आनुवंशिक एल्गोरिदम +## ✍️ अभ्यास: जेनेटिक एल्गोरिदम -अपने अध्ययन को निम्नलिखित नोटबुक में जारी रखें: +अगले नोटबुक्स में अपनी सीख जारी रखें: -आनुवंशिक एल्गोरिदम के उपयोग के दो उदाहरण देखने के लिए [इस नोटबुक](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) पर जाएं: +[इस नोटबुक](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) पर जाएं और जेनेटिक एल्गोरिदम का उपयोग करने के दो उदाहरण देखें: 1. खजाने का निष्पक्ष विभाजन -1. 8 रानी समस्या +1. 8 क्वीन समस्या ## निष्कर्ष -आनुवंशिक एल्गोरिदम का उपयोग कई समस्याओं को हल करने के लिए किया जाता है, जिसमें लॉजिस्टिक्स और खोज समस्याएं शामिल हैं। यह क्षेत्र मनोविज्ञान और कंप्यूटर विज्ञान में जुड़े विषयों पर आधारित अनुसंधान से प्रेरित है। +जेनेटिक एल्गोरिदम का उपयोग कई समस्याओं को हल करने के लिए किया जाता है, जिनमें लॉजिस्टिक्स और खोज समस्याएं शामिल हैं। यह क्षेत्र मनोविज्ञान और कंप्यूटर विज्ञान के विषयों को मिलाने वाले शोध से प्रेरित है। ## 🚀 चुनौती -"आनुवंशिक एल्गोरिदम लागू करने में सरल हैं, लेकिन उनका व्यवहार समझना कठिन है।" [source](https://wikipedia.org/wiki/Genetic_algorithm) एक आनुवंशिक एल्गोरिदम का कार्यान्वयन खोजने के लिए कुछ शोध करें, जैसे कि सुदोकू पहेली को हल करना, और समझाएं कि यह कैसे काम करता है एक स्केच या फ्लोचार्ट के रूप में। +"जेनेटिक एल्गोरिदम को लागू करना आसान है, लेकिन उनके व्यवहार को समझना कठिन है।" [स्रोत](https://wikipedia.org/wiki/Genetic_algorithm) एक शोध करें और जेनेटिक एल्गोरिदम के किसी कार्यान्वयन को खोजें, जैसे कि सुडोकू पहेली को हल करना, और इसे स्केच या फ्लोचार्ट के रूप में समझाएं। ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -देखें [यह शानदार वीडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) जो बताता है कि कैसे कंप्यूटर न्यूरल नेटवर्क का उपयोग करके सुपर मारियो खेलना सीख सकते हैं, जिसे आनुवंशिक एल्गोरिदम द्वारा प्रशिक्षित किया गया है। हम इस तरह के खेल खेलने के लिए कंप्यूटर सीखने के बारे में अधिक जानेंगे [अगली अनुभाग में](../22-DeepRL/README.md)। +[इस शानदार वीडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) को देखें, जिसमें बताया गया है कि कंप्यूटर जेनेटिक एल्गोरिदम द्वारा प्रशिक्षित न्यूरल नेटवर्क का उपयोग करके सुपर मारियो खेलना कैसे सीख सकता है। हम इस तरह के खेल खेलने के लिए कंप्यूटर सीखने के बारे में [अगले सेक्शन](../22-DeepRL/README.md) में और जानेंगे। -## [असाइनमेंट: डियोफेंटाइन समीकरण](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [असाइनमेंट: डायोफैंटाइन समीकरण](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -आपका लक्ष्य तथाकथित **डियोफेंटाइन समीकरण** को हल करना है - एक समीकरण जिसमें पूर्णांक मूल होते हैं। उदाहरण के लिए, समीकरण a+2b+3c+4d=30 पर विचार करें। आपको उन पूर्णांक मूलों को खोजने की आवश्यकता है जो इस समीकरण को संतुष्ट करते हैं। +आपका लक्ष्य तथाकथित **डायोफैंटाइन समीकरण** को हल करना है - एक समीकरण जिसमें पूर्णांक मूल होते हैं। उदाहरण के लिए, समीकरण a+2b+3c+4d=30 पर विचार करें। आपको उन पूर्णांक मूलों को खोजना है जो इस समीकरण को संतुष्ट करते हैं। *यह असाइनमेंट [इस पोस्ट](https://habr.com/post/128704/) से प्रेरित है।* संकेत: -1. आप मूलों को [0;30] के अंतराल में मान सकते हैं -1. एक जीन के रूप में, मूल मानों की सूची का उपयोग करने पर विचार करें +1. आप मूलों को [0;30] के अंतराल में मान सकते हैं। +1. जीन के रूप में, मूल मानों की सूची का उपयोग करने पर विचार करें। -[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) का उपयोग प्रारंभिक बिंदु के रूप में करें। +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) को प्रारंभिक बिंदु के रूप में उपयोग करें। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/6-Other/22-DeepRL/README.md b/translations/hi/lessons/6-Other/22-DeepRL/README.md index b5fddbe0..b4c24647 100644 --- a/translations/hi/lessons/6-Other/22-DeepRL/README.md +++ b/translations/hi/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# डीप रिइंफोर्समेंट लर्निंग + +# डीप रिइनफोर्समेंट लर्निंग -रिइंफोर्समेंट लर्निंग (RL) को मशीन लर्निंग के मूल सिद्धांतों में से एक माना जाता है, जो सुपरवाइज्ड लर्निंग और अनसुपरवाइज्ड लर्निंग के साथ है। जबकि सुपरवाइज्ड लर्निंग में हम ज्ञात परिणामों के साथ डेटासेट पर निर्भर करते हैं, RL **करते हुए सीखने** पर आधारित है। उदाहरण के लिए, जब हम पहली बार एक कंप्यूटर गेम देखते हैं, तो हम खेलना शुरू कर देते हैं, भले ही हमें नियमों का पता न हो, और जल्द ही हम खेलते रहने और अपने व्यवहार को समायोजित करने के द्वारा अपनी क्षमताओं में सुधार करने में सक्षम हो जाते हैं। +रिइनफोर्समेंट लर्निंग (RL) को मशीन लर्निंग के तीन मुख्य पैरेडाइम्स में से एक माना जाता है, जिसमें सुपरवाइज्ड लर्निंग और अनसुपरवाइज्ड लर्निंग भी शामिल हैं। जहां सुपरवाइज्ड लर्निंग में हमें ज्ञात परिणामों वाले डेटा सेट पर निर्भर रहना पड़ता है, वहीं RL **करके सीखने** पर आधारित है। उदाहरण के लिए, जब हम पहली बार कोई कंप्यूटर गेम देखते हैं, तो हम इसे खेलना शुरू कर देते हैं, भले ही हमें नियमों का पता न हो। जल्द ही, हम केवल खेलने और अपने व्यवहार को समायोजित करने की प्रक्रिया के माध्यम से अपने कौशल में सुधार करने में सक्षम हो जाते हैं। ## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) -RL करने के लिए, हमें निम्नलिखित की आवश्यकता है: +RL करने के लिए हमें चाहिए: -* एक **पर्यावरण** या **सिम्युलेटर** जो खेल के नियम निर्धारित करता है। हमें सिम्युलेटर में प्रयोग चलाने और परिणामों का अवलोकन करने में सक्षम होना चाहिए। -* कुछ **इनाम फ़ंक्शन**, जो यह दर्शाता है कि हमारा प्रयोग कितना सफल रहा। कंप्यूटर गेम खेलने के मामले में, इनाम हमारा अंतिम स्कोर होगा। +* एक **एनवायरनमेंट** या **सिम्युलेटर**, जो गेम के नियम सेट करता है। हमें सिम्युलेटर में प्रयोग चलाने और परिणामों को देखने में सक्षम होना चाहिए। +* कुछ **रिवॉर्ड फंक्शन**, जो यह संकेत देता है कि हमारा प्रयोग कितना सफल रहा। कंप्यूटर गेम खेलना सीखने के मामले में, रिवॉर्ड हमारा अंतिम स्कोर होगा। -इनाम फ़ंक्शन के आधार पर, हमें अपने व्यवहार को समायोजित करने और अपनी क्षमताओं में सुधार करने में सक्षम होना चाहिए, ताकि अगली बार हम बेहतर खेल सकें। मशीन लर्निंग के अन्य प्रकारों और RL के बीच मुख्य अंतर यह है कि RL में आमतौर पर हमें यह नहीं पता होता है कि हम जीतते हैं या हारते हैं जब तक कि हम खेल खत्म नहीं कर लेते। इसलिए, हम यह नहीं कह सकते कि कोई निश्चित चाल अकेले अच्छी है या नहीं - हमें केवल खेल के अंत में एक इनाम मिलता है। +रिवॉर्ड फंक्शन के आधार पर, हमें अपने व्यवहार को समायोजित करने और अपने कौशल में सुधार करने में सक्षम होना चाहिए, ताकि अगली बार हम बेहतर खेल सकें। अन्य प्रकार के मशीन लर्निंग और RL के बीच मुख्य अंतर यह है कि RL में हमें आमतौर पर यह नहीं पता होता कि हम जीतेंगे या हारेंगे जब तक कि हम गेम खत्म नहीं कर लेते। इसलिए, हम यह नहीं कह सकते कि कोई विशेष चाल अकेले में अच्छी है या नहीं - हमें केवल गेम के अंत में रिवॉर्ड प्राप्त होता है। -RL के दौरान, हम आमतौर पर कई प्रयोग करते हैं। प्रत्येक प्रयोग के दौरान, हमें अब तक सीखी गई सर्वोत्तम रणनीति का पालन करने (**शोषण**) और नए संभावित राज्यों का अन्वेषण करने (**अन्वेषण**) के बीच संतुलन बनाना होगा। +RL के दौरान, हम आमतौर पर कई प्रयोग करते हैं। प्रत्येक प्रयोग के दौरान, हमें अब तक सीखी गई सबसे अच्छी रणनीति का पालन करने (**एक्सप्लॉइटेशन**) और नए संभावित स्टेट्स का पता लगाने (**एक्सप्लोरेशन**) के बीच संतुलन बनाना होता है। -## OpenAI जिम +## OpenAI Gym -RL के लिए एक बेहतरीन उपकरण है [OpenAI Gym](https://gym.openai.com/) - एक **सिमुलेशन वातावरण**, जो एटारी खेलों से लेकर पोल संतुलन के पीछे के भौतिकी तक कई विभिन्न वातावरणों का अनुकरण कर सकता है। यह रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन वातावरणों में से एक है, और इसे [OpenAI](https://openai.com/) द्वारा बनाए रखा जाता है। +RL के लिए एक बेहतरीन टूल [OpenAI Gym](https://gym.openai.com/) है - एक **सिम्युलेशन एनवायरनमेंट**, जो कई अलग-अलग एनवायरनमेंट्स को सिम्युलेट कर सकता है, जैसे कि Atari गेम्स से लेकर पोल बैलेंसिंग के पीछे की फिजिक्स तक। यह रिइनफोर्समेंट लर्निंग एल्गोरिदम को ट्रेन करने के लिए सबसे लोकप्रिय सिम्युलेशन एनवायरनमेंट्स में से एक है और इसे [OpenAI](https://openai.com/) द्वारा मेंटेन किया जाता है। -> **नोट**: आप OpenAI जिम से उपलब्ध सभी वातावरण [यहां](https://gym.openai.com/envs/#classic_control) देख सकते हैं। +> **Note**: आप OpenAI Gym द्वारा उपलब्ध सभी एनवायरनमेंट्स [यहां](https://gym.openai.com/envs/#classic_control) देख सकते हैं। -## कार्टपोल संतुलन +## CartPole बैलेंसिंग -आप सभी ने शायद आधुनिक संतुलन उपकरण जैसे *सेगवे* या *जायरोस्कूटर* देखे होंगे। वे अपने पहियों को एक एक्सेलेरोमीटर या जायरोस्कोप से प्राप्त संकेत के जवाब में समायोजित करके स्वचालित रूप से संतुलन बनाए रखने में सक्षम होते हैं। इस अनुभाग में, हम एक समान समस्या - एक पोल को संतुलित करना - हल करना सीखेंगे। यह उस स्थिति के समान है जब एक सर्कस कलाकार को अपने हाथ पर एक पोल संतुलित करना होता है - लेकिन यह पोल संतुलन केवल 1D में होता है। +आपने शायद आधुनिक बैलेंसिंग डिवाइस जैसे *Segway* या *Gyroscooters* देखे होंगे। ये डिवाइस एक्सेलेरोमीटर या जाइरोस्कोप से सिग्नल प्राप्त करके अपने पहियों को समायोजित करके स्वचालित रूप से बैलेंस कर सकते हैं। इस सेक्शन में, हम एक समान समस्या को हल करना सीखेंगे - पोल को बैलेंस करना। यह एक सर्कस कलाकार के हाथ पर पोल को बैलेंस करने जैसी स्थिति के समान है - लेकिन यह बैलेंसिंग केवल 1D में होती है। -संतुलन का एक सरलित संस्करण **कार्टपोल** समस्या के रूप में जाना जाता है। कार्टपोल की दुनिया में, हमारे पास एक क्षैतिज स्लाइडर है जो बाईं या दाईं ओर जा सकता है, और लक्ष्य यह है कि स्लाइडर के शीर्ष पर एक ऊर्ध्वाधर पोल को संतुलित करना है जब यह चलता है। +बैलेंसिंग का एक सरलीकृत संस्करण **CartPole** समस्या के रूप में जाना जाता है। CartPole की दुनिया में, हमारे पास एक क्षैतिज स्लाइडर होता है जो बाएं या दाएं चल सकता है, और लक्ष्य स्लाइडर के ऊपर एक वर्टिकल पोल को बैलेंस करना है। a cartpole -इस वातावरण को बनाने और उपयोग करने के लिए, हमें कुछ पायथन कोड की आवश्यकता है: +इस एनवायरनमेंट को बनाने और उपयोग करने के लिए, हमें कुछ लाइनों का Python कोड चाहिए: ```python import gym @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -प्रत्येक वातावरण को ठीक उसी तरह से एक्सेस किया जा सकता है: -* `env.reset` starts a new experiment -* `env.step` एक सिमुलेशन चरण का प्रदर्शन करता है। यह **एक्शन स्पेस** से एक **क्रिया** प्राप्त करता है, और एक **अवलोकन** (अवलोकन स्पेस से) के साथ-साथ एक इनाम और एक समाप्ति ध्वज लौटाता है। +प्रत्येक एनवायरनमेंट को बिल्कुल एक ही तरीके से एक्सेस किया जा सकता है: +* `env.reset` एक नया प्रयोग शुरू करता है +* `env.step` एक सिम्युलेशन स्टेप करता है। यह **एक्शन** को **एक्शन स्पेस** से प्राप्त करता है और **ऑब्जर्वेशन** (ऑब्जर्वेशन स्पेस से), साथ ही रिवॉर्ड और टर्मिनेशन फ्लैग को लौटाता है। -उपर्युक्त उदाहरण में, हम प्रत्येक चरण में एक यादृच्छिक क्रिया करते हैं, यही कारण है कि प्रयोग का जीवन बहुत छोटा है: +ऊपर दिए गए उदाहरण में, हम प्रत्येक स्टेप पर एक रैंडम एक्शन करते हैं, यही कारण है कि प्रयोग का जीवन बहुत छोटा है: ![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -एक RL एल्गोरिदम का लक्ष्य एक मॉडल को प्रशिक्षित करना है - जिसे **नीति** π कहा जाता है - जो एक दिए गए राज्य के जवाब में क्रिया लौटाएगा। हम नीति को संभाव्य भी मान सकते हैं, जैसे किसी राज्य *s* और क्रिया *a* के लिए यह π(*a*|*s*) की संभावना लौटाएगा कि हमें राज्य *s* में *a* लेना चाहिए। +RL एल्गोरिदम का लक्ष्य एक मॉडल - जिसे **पॉलिसी** π कहा जाता है - को ट्रेन करना है, जो दिए गए स्टेट के जवाब में एक्शन लौटाएगा। हम पॉलिसी को प्रॉबैबिलिस्टिक भी मान सकते हैं, जैसे कि किसी भी स्टेट *s* और एक्शन *a* के लिए यह प्रॉबैबिलिटी π(*a*|*s*) लौटाएगा कि हमें स्टेट *s* में *a* लेना चाहिए। -## नीति ग्रेडिएंट एल्गोरिदम +## पॉलिसी ग्रेडिएंट्स एल्गोरिदम -नीति को मॉडल करने का सबसे स्पष्ट तरीका एक न्यूरल नेटवर्क बनाना है जो राज्यों को इनपुट के रूप में लेगा, और संबंधित क्रियाएँ (या बल्कि सभी क्रियाओं की संभावनाएँ) लौटाएगा। एक अर्थ में, यह एक सामान्य वर्गीकरण कार्य के समान होगा, जिसमें एक बड़ा अंतर है - हमें पहले से नहीं पता होता है कि हमें प्रत्येक चरण में कौन सी क्रियाएँ लेनी चाहिए। +पॉलिसी को मॉडल करने का सबसे स्पष्ट तरीका एक न्यूरल नेटवर्क बनाना है, जो स्टेट्स को इनपुट के रूप में लेगा और संबंधित एक्शन (या सभी एक्शन की प्रॉबैबिलिटी) लौटाएगा। एक तरह से, यह एक सामान्य क्लासिफिकेशन टास्क के समान होगा, जिसमें एक बड़ा अंतर है - हमें पहले से यह नहीं पता होता कि प्रत्येक स्टेप पर कौन से एक्शन लेने चाहिए। -यहां विचार यह है कि उन संभावनाओं का अनुमान लगाना है। हम **संवृद्धि पुरस्कारों** का एक वेक्टर बनाते हैं जो प्रयोग के प्रत्येक चरण में हमारे कुल इनाम को दर्शाता है। हम कुछ गुणांक γ=0.99 से पहले के पुरस्कारों को गुणा करके **इनाम छूट** भी लागू करते हैं, ताकि पहले के पुरस्कारों की भूमिका कम हो सके। फिर, हम उन चरणों को प्रयोग के पथ के साथ मजबूत करते हैं जो बड़े पुरस्कार देते हैं। +यहां विचार इन प्रॉबैबिलिटी का अनुमान लगाना है। हम **क्यूमुलेटिव रिवॉर्ड्स** का एक वेक्टर बनाते हैं, जो हमारे प्रयोग के प्रत्येक स्टेप पर हमारा कुल रिवॉर्ड दिखाता है। हम **रिवॉर्ड डिस्काउंटिंग** भी लागू करते हैं, पहले के रिवॉर्ड्स को कुछ गुणांक γ=0.99 से गुणा करके, ताकि पहले के रिवॉर्ड्स की भूमिका को कम किया जा सके। फिर, हम उन स्टेप्स को मजबूत करते हैं जो बड़े रिवॉर्ड्स देते हैं। -> नीति ग्रेडिएंट एल्गोरिदम के बारे में अधिक जानें और इसे [उदाहरण नोटबुक](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) में क्रियान्वित होते हुए देखें। +> पॉलिसी ग्रेडिएंट एल्गोरिदम के बारे में अधिक जानें और इसे [उदाहरण नोटबुक](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) में एक्शन में देखें। -## अभिनेता-आलोचक एल्गोरिदम +## एक्टर-क्रिटिक एल्गोरिदम -नीति ग्रेडिएंट दृष्टिकोण का एक सुधारित संस्करण **अभिनेता-आलोचक** कहलाता है। इसके पीछे का मुख्य विचार यह है कि न्यूरल नेटवर्क को दो चीजें लौटाने के लिए प्रशिक्षित किया जाएगा: +पॉलिसी ग्रेडिएंट्स दृष्टिकोण का एक बेहतर संस्करण **Actor-Critic** कहलाता है। इसके पीछे मुख्य विचार यह है कि न्यूरल नेटवर्क को दो चीजें लौटाने के लिए ट्रेन किया जाएगा: -* नीति, जो यह निर्धारित करती है कि कौन सी क्रिया लेनी है। इस भाग को **अभिनेता** कहा जाता है -* इस राज्य में हमें जो कुल इनाम मिलने की अपेक्षा है, उसका अनुमान - इस भाग को **आलोचक** कहा जाता है। +* पॉलिसी, जो निर्धारित करती है कि कौन सा एक्शन लेना है। इस हिस्से को **Actor** कहा जाता है। +* उस स्टेट पर हमें मिलने वाले कुल रिवॉर्ड का अनुमान - इस हिस्से को **Critic** कहा जाता है। -एक अर्थ में, यह आर्किटेक्चर एक [GAN](../../4-ComputerVision/10-GANs/README.md) के समान है, जहां हमारे पास दो नेटवर्क होते हैं जो एक-दूसरे के खिलाफ प्रशिक्षित होते हैं। अभिनेता-आलोचक मॉडल में, अभिनेता वह क्रिया प्रस्तावित करता है जो हमें लेनी होती है, और आलोचक परिणाम का अनुमान लगाने की कोशिश करता है। हालाँकि, हमारा लक्ष्य उन नेटवर्क को एक साथ प्रशिक्षित करना है। +एक तरह से, यह आर्किटेक्चर [GAN](../../4-ComputerVision/10-GANs/README.md) जैसा दिखता है, जहां हमारे पास दो नेटवर्क होते हैं जो एक-दूसरे के खिलाफ ट्रेन किए जाते हैं। Actor-Critic मॉडल में, Actor वह एक्शन प्रस्तावित करता है जिसे हमें लेना चाहिए, और Critic आलोचनात्मक होकर परिणाम का अनुमान लगाने की कोशिश करता है। हालांकि, हमारा लक्ष्य इन नेटवर्क्स को एक साथ ट्रेन करना है। -चूंकि हमें प्रयोग के दौरान वास्तविक संवृद्धि पुरस्कार और आलोचक द्वारा लौटाए गए परिणाम दोनों ज्ञात हैं, इसलिए उनके बीच के अंतर को कम करने के लिए एक हानि फ़ंक्शन बनाना अपेक्षाकृत आसान है। इससे हमें **आलोचक हानि** मिलती है। हम नीति ग्रेडिएंट एल्गोरिदम में समान दृष्टिकोण का उपयोग करके **अभिनेता हानि** की गणना कर सकते हैं। +क्योंकि हमें प्रयोग के दौरान वास्तविक क्यूमुलेटिव रिवॉर्ड्स और Critic द्वारा लौटाए गए परिणाम दोनों पता होते हैं, यह एक लॉस फंक्शन बनाना अपेक्षाकृत आसान है जो उनके बीच के अंतर को कम करेगा। यह हमें **Critic लॉस** देगा। हम **Actor लॉस** को पॉलिसी ग्रेडिएंट एल्गोरिदम के समान दृष्टिकोण का उपयोग करके गणना कर सकते हैं। -इनमें से एक एल्गोरिदम चलाने के बाद, हम उम्मीद कर सकते हैं कि हमारा कार्टपोल इस तरह व्यवहार करेगा: +इन एल्गोरिदम में से एक को चलाने के बाद, हम उम्मीद कर सकते हैं कि हमारा CartPole इस तरह व्यवहार करेगा: ![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ अभ्यास: नीति ग्रेडिएंट और अभिनेता-आलोचक RL +## ✍️ अभ्यास: पॉलिसी ग्रेडिएंट्स और Actor-Critic RL -अगले नोटबुक में अपने अध्ययन को जारी रखें: +निम्नलिखित नोटबुक्स में अपना सीखना जारी रखें: * [TensorFlow में RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) * [PyTorch में RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) -## अन्य RL कार्य +## अन्य RL टास्क -आजकल रिइंफोर्समेंट लर्निंग एक तेजी से बढ़ता हुआ अनुसंधान क्षेत्र है। रिइंफोर्समेंट लर्निंग के कुछ दिलचस्प उदाहरण हैं: +आजकल रिइनफोर्समेंट लर्निंग अनुसंधान का एक तेजी से बढ़ता हुआ क्षेत्र है। रिइनफोर्समेंट लर्निंग के कुछ दिलचस्प उदाहरण हैं: -* कंप्यूटर को **एटारी खेल** खेलना सिखाना। इस समस्या में चुनौती यह है कि हमारे पास एक साधारण स्थिति नहीं है जो एक वेक्टर के रूप में प्रदर्शित होती है, बल्कि एक स्क्रीनशॉट है - और हमें इस स्क्रीन इमेज को एक विशेषता वेक्टर में परिवर्तित करने के लिए CNN का उपयोग करना होगा, या इनाम की जानकारी निकालनी होगी। एटारी खेल जिम में उपलब्ध हैं। -* कंप्यूटर को बोर्ड गेम्स जैसे शतरंज और गो खेलना सिखाना। हाल ही में, अत्याधुनिक कार्यक्रम जैसे **अल्फा जीरो** को एक-दूसरे के खिलाफ खेलने वाले दो एजेंटों द्वारा शून्य से प्रशिक्षित किया गया, और प्रत्येक चरण में सुधार किया गया। -* उद्योग में, RL का उपयोग सिमुलेशन से नियंत्रण प्रणाली बनाने के लिए किया जाता है। [बोंसाई](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) नामक एक सेवा विशेष रूप से इसके लिए डिज़ाइन की गई है। +* कंप्यूटर को **Atari गेम्स** खेलना सिखाना। इस समस्या में चुनौती यह है कि हमारे पास एक साधारण स्टेट नहीं होता जो एक वेक्टर के रूप में प्रस्तुत किया गया हो, बल्कि एक स्क्रीनशॉट होता है - और हमें इस स्क्रीन इमेज को फीचर वेक्टर में बदलने या रिवॉर्ड जानकारी निकालने के लिए CNN का उपयोग करना होता है। Atari गेम्स Gym में उपलब्ध हैं। +* कंप्यूटर को बोर्ड गेम्स जैसे Chess और Go खेलना सिखाना। हाल ही में, **Alpha Zero** जैसे अत्याधुनिक प्रोग्राम्स को दो एजेंट्स द्वारा एक-दूसरे के खिलाफ खेलकर और प्रत्येक स्टेप पर सुधार करके स्क्रैच से ट्रेन किया गया। +* उद्योग में, RL का उपयोग सिम्युलेशन से कंट्रोल सिस्टम बनाने के लिए किया जाता है। [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) नामक एक सेवा विशेष रूप से इसके लिए डिज़ाइन की गई है। ## निष्कर्ष -अब हमने यह सीख लिया है कि एजेंटों को अच्छे परिणाम प्राप्त करने के लिए कैसे प्रशिक्षित किया जाए, बस उन्हें एक इनाम फ़ंक्शन प्रदान करके जो खेल की इच्छित स्थिति को परिभाषित करता है, और उन्हें खोज स्थान का बुद्धिमानी से अन्वेषण करने का अवसर देकर। हमने सफलतापूर्वक दो एल्गोरिदम आजमाए हैं, और अपेक्षाकृत कम समय में एक अच्छा परिणाम प्राप्त किया है। हालाँकि, यह RL में आपकी यात्रा की केवल शुरुआत है, और यदि आप गहराई से जाना चाहते हैं तो आपको निश्चित रूप से एक अलग पाठ्यक्रम लेने पर विचार करना चाहिए। +अब हमने यह सीख लिया है कि केवल एक रिवॉर्ड फंक्शन प्रदान करके, जो गेम की वांछित स्थिति को परिभाषित करता है, और उन्हें बुद्धिमानी से सर्च स्पेस का पता लगाने का अवसर देकर एजेंट्स को अच्छे परिणाम प्राप्त करने के लिए कैसे ट्रेन किया जाए। हमने सफलतापूर्वक दो एल्गोरिदम आजमाए और अपेक्षाकृत कम समय में अच्छा परिणाम प्राप्त किया। हालांकि, यह RL में आपकी यात्रा की केवल शुरुआत है, और यदि आप गहराई से सीखना चाहते हैं तो आपको निश्चित रूप से एक अलग कोर्स लेने पर विचार करना चाहिए। ## 🚀 चुनौती -'अन्य RL कार्य' अनुभाग में सूचीबद्ध अनुप्रयोगों का अन्वेषण करें और इनमें से एक को लागू करने की कोशिश करें! +'अन्य RL टास्क' सेक्शन में सूचीबद्ध एप्लिकेशन का पता लगाएं और एक को लागू करने का प्रयास करें! ## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## समीक्षा और आत्म अध्ययन +## समीक्षा और स्व-अध्ययन -हमारे [शुरुआतकर्ताओं के लिए मशीन लर्निंग पाठ्यक्रम](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) में क्लासिकल रिइंफोर्समेंट लर्निंग के बारे में अधिक जानें। +हमारे [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) में क्लासिकल रिइनफोर्समेंट लर्निंग के बारे में अधिक जानें। -देखें [यह शानदार वीडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) जो बताता है कि एक कंप्यूटर सुपर मारियो खेलना कैसे सीख सकता है। +देखें [यह शानदार वीडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44), जो बताता है कि कंप्यूटर Super Mario खेलना कैसे सीख सकता है। -## असाइनमेंट: [माउंटेन कार को प्रशिक्षित करें](lab/README.md) +## असाइनमेंट: [Train a Mountain Car](lab/README.md) -इस असाइनमेंट के दौरान आपका लक्ष्य एक अलग जिम वातावरण - [माउंटेन कार](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) को प्रशिक्षित करना होगा। +इस असाइनमेंट के दौरान आपका लक्ष्य एक अलग Gym एनवायरनमेंट - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) को ट्रेन करना होगा। -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/6-Other/22-DeepRL/lab/README.md b/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md index a952b1f9..4a443073 100644 --- a/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,23 @@ -# प्रशिक्षण माउंटेन कार को बचाने के लिए + +## पर्यावरण -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। +Mountain Car पर्यावरण में एक कार होती है जो एक घाटी में फंसी होती है। आपका लक्ष्य है घाटी से बाहर कूदकर झंडे तक पहुंचना। आप जो क्रियाएं कर सकते हैं, वे हैं बाईं ओर तेज़ करना, दाईं ओर तेज़ करना, या कुछ भी न करना। आप कार की स्थिति को x-अक्ष पर और उसकी गति को देख सकते हैं। -## कार्य +## प्रारंभिक नोटबुक -आपका लक्ष्य RL एजेंट को [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) को OpenAI Environment में नियंत्रित करने के लिए प्रशिक्षित करना है। आपको अक्टूबर 2023 तक के डेटा पर प्रशिक्षित किया गया है। +इस प्रयोगशाला को शुरू करने के लिए [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) खोलें। -## वातावरण +## मुख्य सीख -माउंटेन कार वातावरण एक घाटी में फंसी कार से बना है। आपका लक्ष्य घाटी से कूदकर ध्वज तक पहुँचना है। आप जो क्रियाएँ कर सकते हैं वे हैं बाएँ, दाएँ तेज़ी से चलाना, या कुछ न करना। आप कार की स्थिति को x-धुरी के साथ देख सकते हैं, और गति को भी। +इस प्रयोगशाला के दौरान आपको यह समझ में आना चाहिए कि RL एल्गोरिदम को किसी नए पर्यावरण में अपनाना अक्सर काफी सरल होता है, क्योंकि OpenAI Gym का सभी पर्यावरणों के लिए एक समान इंटरफ़ेस होता है, और एल्गोरिदम आमतौर पर पर्यावरण की प्रकृति पर अधिक निर्भर नहीं करते। आप यहां तक कि Python कोड को इस तरह से पुनर्गठित कर सकते हैं कि किसी भी पर्यावरण को RL एल्गोरिदम में एक पैरामीटर के रूप में पास किया जा सके। -## नोटबुक शुरू करना - -[MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) खोलकर प्रयोगशाला शुरू करें। - -## सीखने के बिंदु - -आपको इस प्रयोगशाला के दौरान यह सीखना चाहिए कि RL एल्गोरिदम को एक नए वातावरण में अपनाना अक्सर काफी सरल होता है, क्योंकि OpenAI जिम सभी वातावरणों के लिए एक ही इंटरफ़ेस प्रदान करता है, और एल्गोरिदम इस प्रकार वातावरण की प्रकृति पर बड़े पैमाने पर निर्भर नहीं करते हैं। आप यहां तक कि पायथन कोड को इस तरह से पुनर्गठित कर सकते हैं कि किसी भी वातावरण को RL एल्गोरिदम के रूप में एक पैरामीटर के रूप में पास किया जा सके। - -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/6-Other/23-MultiagentSystems/README.md b/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md index e9a8345e..73382788 100644 --- a/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ -# मल्टी-एजेंट सिस्टम + +# मल्टी-एजेंट सिस्टम्स -बुद्धिमत्ता प्राप्त करने के संभावित तरीकों में से एक है तथाकथित **उभरती** (या **सहकारी**) दृष्टिकोण, जो इस तथ्य पर आधारित है कि कई अपेक्षाकृत सरल एजेंटों का संयुक्त व्यवहार पूरे सिस्टम के अधिक जटिल (या बुद्धिमान) व्यवहार का परिणाम हो सकता है। सिद्धांत रूप में, यह [सामूहिक बुद्धिमत्ता](https://en.wikipedia.org/wiki/Collective_intelligence), [उभरने का सिद्धांत](https://en.wikipedia.org/wiki/Global_brain) और [विकासात्मक साइबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain) के सिद्धांतों पर आधारित है, जो कहते हैं कि उच्च-स्तरीय सिस्टम तब कुछ प्रकार का अतिरिक्त मूल्य प्राप्त करते हैं जब उन्हें निम्न-स्तरीय सिस्टम से सही तरीके से जोड़ा जाता है (जिसे *मेटासिस्टम संक्रमण का सिद्धांत* कहा जाता है)। +बुद्धिमत्ता प्राप्त करने के संभावित तरीकों में से एक है **उभरता हुआ** (या **सिनर्जेटिक**) दृष्टिकोण, जो इस तथ्य पर आधारित है कि कई अपेक्षाकृत सरल एजेंट्स का संयुक्त व्यवहार पूरे सिस्टम के अधिक जटिल (या बुद्धिमान) व्यवहार का परिणाम हो सकता है। सैद्धांतिक रूप से, यह [सामूहिक बुद्धिमत्ता](https://en.wikipedia.org/wiki/Collective_intelligence), [उभरतावाद](https://en.wikipedia.org/wiki/Global_brain) और [विकासवादी साइबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain) के सिद्धांतों पर आधारित है, जो कहते हैं कि उच्च-स्तरीय सिस्टम्स को कुछ अतिरिक्त मूल्य प्राप्त होता है जब उन्हें निम्न-स्तरीय सिस्टम्स से सही तरीके से जोड़ा जाता है (जिसे *मेटासिस्टम ट्रांजिशन का सिद्धांत* कहा जाता है)। -## [प्रस्तुति से पहले का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -**मल्टी-एजेंट सिस्टम** का क्षेत्र 1990 के दशक में इंटरनेट और वितरित सिस्टम के विकास के जवाब में AI में उभरा। क्लासिकल AI पाठ्यपुस्तकों में से एक, [आर्टिफिशियल इंटेलिजेंस: ए मॉडर्न अप्रोच](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), मल्टी-एजेंट सिस्टम के दृष्टिकोण से क्लासिकल AI के दृष्टिकोण पर ध्यान केंद्रित करता है। +**मल्टी-एजेंट सिस्टम्स** का क्षेत्र 1990 के दशक में इंटरनेट और वितरित सिस्टम्स के विकास के जवाब में AI में उभरा। [आर्टिफिशियल इंटेलिजेंस: ए मॉडर्न अप्रोच](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) जैसे क्लासिकल AI पाठ्यपुस्तकों में मल्टी-एजेंट सिस्टम्स के दृष्टिकोण से क्लासिकल AI को देखा गया है। -मल्टी-एजेंट दृष्टिकोण का केंद्रीय विचार **एजेंट** का है - एक इकाई जो कुछ **पर्यावरण** में रहती है, जिसे वह महसूस कर सकती है और उस पर कार्य कर सकती है। यह एक बहुत व्यापक परिभाषा है, और एजेंटों के कई विभिन्न प्रकार और वर्गीकरण हो सकते हैं: +मल्टी-एजेंट दृष्टिकोण का केंद्रबिंदु **एजेंट** की अवधारणा है - एक इकाई जो किसी **पर्यावरण** में रहती है, जिसे वह देख सकती है और उस पर कार्य कर सकती है। यह एक बहुत व्यापक परिभाषा है, और एजेंट्स के कई प्रकार और वर्गीकरण हो सकते हैं: -* उनके तर्क करने की क्षमता के अनुसार: - - **प्रतिक्रियाशील** एजेंट आमतौर पर सरल अनुरोध-उत्तर प्रकार के व्यवहार रखते हैं - - **विचारशील** एजेंट कुछ प्रकार की तार्किक तर्क और/या योजना क्षमताओं का उपयोग करते हैं -* उस स्थान के अनुसार जहाँ एजेंट अपना कोड निष्पादित करता है: - - **स्थैतिक** एजेंट एक समर्पित नेटवर्क नोड पर काम करते हैं - - **मोबाइल** एजेंट अपने कोड को नेटवर्क नोड्स के बीच स्थानांतरित कर सकते हैं -* उनके व्यवहार के अनुसार: - - **निष्क्रिय एजेंट** के पास विशिष्ट लक्ष्य नहीं होते। ऐसे एजेंट बाहरी उत्तेजनाओं पर प्रतिक्रिया कर सकते हैं, लेकिन स्वयं कोई क्रिया शुरू नहीं करेंगे। - - **सक्रिय एजेंट** के पास कुछ लक्ष्य होते हैं जिनका वे पीछा करते हैं - - **संज्ञात्मक एजेंट** में जटिल योजना और तर्क शामिल होते हैं +* उनकी तर्क करने की क्षमता के आधार पर: + - **प्रतिक्रियाशील** एजेंट्स आमतौर पर सरल अनुरोध-प्रतिक्रिया प्रकार के व्यवहार वाले होते हैं। + - **विचारशील** एजेंट्स किसी प्रकार की तार्किक तर्कशक्ति और/या योजना बनाने की क्षमता का उपयोग करते हैं। +* उस स्थान के आधार पर जहां एजेंट अपना कोड निष्पादित करता है: + - **स्थिर** एजेंट्स एक समर्पित नेटवर्क नोड पर काम करते हैं। + - **मोबाइल** एजेंट्स अपने कोड को नेटवर्क नोड्स के बीच स्थानांतरित कर सकते हैं। +* उनके व्यवहार के आधार पर: + - **निष्क्रिय एजेंट्स** के पास कोई विशिष्ट लक्ष्य नहीं होता। ऐसे एजेंट्स बाहरी उत्तेजनाओं पर प्रतिक्रिया कर सकते हैं, लेकिन स्वयं कोई कार्रवाई शुरू नहीं करेंगे। + - **सक्रिय एजेंट्स** के पास कुछ लक्ष्य होते हैं जिन्हें वे प्राप्त करने का प्रयास करते हैं। + - **संज्ञानात्मक एजेंट्स** जटिल योजना और तर्कशक्ति में शामिल होते हैं। -आजकल मल्टी-एजेंट सिस्टम का उपयोग कई अनुप्रयोगों में किया जाता है: +आजकल मल्टी-एजेंट सिस्टम्स का उपयोग कई अनुप्रयोगों में किया जाता है: -* खेलों में, कई गैर-खिलाड़ी पात्र किसी प्रकार की AI का उपयोग करते हैं, और उन्हें बुद्धिमान एजेंट माना जा सकता है -* वीडियो उत्पादन में, भीड़ शामिल करने वाले जटिल 3D दृश्यों को आमतौर पर मल्टी-एजेंट सिमुलेशन का उपयोग करके बनाया जाता है -* सिस्टम मॉडलिंग में, मल्टी-एजेंट दृष्टिकोण का उपयोग एक जटिल मॉडल के व्यवहार का अनुकरण करने के लिए किया जाता है। उदाहरण के लिए, मल्टी-एजेंट दृष्टिकोण का सफलतापूर्वक उपयोग COVID-19 बीमारी के वैश्विक प्रसार की भविष्यवाणी करने के लिए किया गया है। इसी प्रकार के दृष्टिकोण का उपयोग शहर में यातायात को मॉडल करने के लिए किया जा सकता है, और यह देख सकता है कि यह यातायात नियमों में परिवर्तनों पर कैसे प्रतिक्रिया करता है। -* जटिल स्वचालन प्रणालियों में, प्रत्येक उपकरण एक स्वतंत्र एजेंट के रूप में कार्य कर सकता है, जिससे पूरा सिस्टम कम एकरूप और अधिक मजबूत हो जाता है। +* गेम्स में, कई गैर-खिलाड़ी पात्र (NPCs) किसी न किसी प्रकार की AI का उपयोग करते हैं और उन्हें बुद्धिमान एजेंट्स माना जा सकता है। +* वीडियो निर्माण में, भीड़ वाले जटिल 3D दृश्यों को रेंडर करना आमतौर पर मल्टी-एजेंट सिमुलेशन का उपयोग करके किया जाता है। +* सिस्टम मॉडलिंग में, मल्टी-एजेंट दृष्टिकोण का उपयोग एक जटिल मॉडल के व्यवहार का अनुकरण करने के लिए किया जाता है। उदाहरण के लिए, मल्टी-एजेंट दृष्टिकोण का उपयोग COVID-19 बीमारी के वैश्विक प्रसार की भविष्यवाणी करने के लिए सफलतापूर्वक किया गया है। इसी दृष्टिकोण का उपयोग शहर में यातायात को मॉडल करने और यातायात नियमों में बदलाव पर उसकी प्रतिक्रिया देखने के लिए किया जा सकता है। +* जटिल स्वचालन सिस्टम्स में, प्रत्येक डिवाइस एक स्वतंत्र एजेंट के रूप में कार्य कर सकता है, जिससे पूरा सिस्टम कम एकीकृत और अधिक मजबूत बनता है। -हम मल्टी-एजेंट सिस्टम के बारे में गहराई से नहीं जाएंगे, लेकिन **मल्टी-एजेंट मॉडलिंग** का एक उदाहरण देखेंगे। +हम मल्टी-एजेंट सिस्टम्स में गहराई तक जाने में अधिक समय नहीं लगाएंगे, लेकिन **मल्टी-एजेंट मॉडलिंग** के एक उदाहरण पर विचार करेंगे। ## नेटलोगो -[नेटलोगो](https://ccl.northwestern.edu/netlogo/) एक मल्टी-एजेंट मॉडलिंग वातावरण है जो [लोगो](https://en.wikipedia.org/wiki/Logo_(programming_language)) प्रोग्रामिंग भाषा के एक संशोधित संस्करण पर आधारित है। इस भाषा का विकास बच्चों को प्रोग्रामिंग अवधारणाओं को सिखाने के लिए किया गया था, और यह आपको एक एजेंट **कछुए** को नियंत्रित करने की अनुमति देती है, जो चल सकता है और पीछे एक निशान छोड़ सकता है। यह जटिल ज्यामितीय आकृतियों को बनाने की अनुमति देता है, जो एजेंट के व्यवहार को समझने का एक बहुत दृश्यात्मक तरीका है। +[नेटलोगो](https://ccl.northwestern.edu/netlogo/) एक मल्टी-एजेंट मॉडलिंग वातावरण है, जो [लोगो](https://en.wikipedia.org/wiki/Logo_(programming_language)) प्रोग्रामिंग भाषा के संशोधित संस्करण पर आधारित है। यह भाषा बच्चों को प्रोग्रामिंग की अवधारणाएं सिखाने के लिए विकसित की गई थी, और यह आपको **टर्टल** नामक एक एजेंट को नियंत्रित करने की अनुमति देती है, जो चलते समय पीछे एक निशान छोड़ सकता है। यह जटिल ज्यामितीय आकृतियों को बनाने की अनुमति देता है, जो एक एजेंट के व्यवहार को समझने का एक बहुत ही दृश्यात्मक तरीका है। -नेटलोगो में, हम `create-turtles` कमांड का उपयोग करके कई कछुए बना सकते हैं। फिर हम सभी कछुओं को कुछ क्रियाएँ करने का आदेश दे सकते हैं (नीचे दिए गए उदाहरण में - 10 अंक आगे): +नेटलोगो में, हम `create-turtles` कमांड का उपयोग करके कई टर्टल्स बना सकते हैं। फिर हम सभी टर्टल्स को कुछ क्रियाएं करने का आदेश दे सकते हैं (नीचे दिए गए उदाहरण में - 10 पॉइंट आगे बढ़ें): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -बेशक, जब सभी कछुए वही काम करते हैं तो यह दिलचस्प नहीं होता, इसलिए हम `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` नाम के एक प्रजाति का उपयोग करते हैं, और हमें एकवचन और बहुवचन शब्द दोनों निर्दिष्ट करने की आवश्यकता होती है, क्योंकि विभिन्न आदेश स्पष्टता के लिए विभिन्न रूपों का उपयोग करते हैं। +बेशक, यह दिलचस्प नहीं है जब सभी टर्टल्स एक ही काम करते हैं, इसलिए हम `ask` का उपयोग करके टर्टल्स के समूहों को आदेश दे सकते हैं, जैसे कि वे जो किसी निश्चित बिंदु के आसपास हैं। हम `breed [cats cat]` कमांड का उपयोग करके विभिन्न *प्रजातियों* के टर्टल्स भी बना सकते हैं। यहां `cat` एक प्रजाति का नाम है, और हमें एकवचन और बहुवचन दोनों शब्द निर्दिष्ट करने की आवश्यकता है, क्योंकि विभिन्न कमांड स्पष्टता के लिए विभिन्न रूपों का उपयोग करते हैं। -> ✅ हम नेटलोगो भाषा को सीखने में नहीं जाएंगे - यदि आप अधिक जानने में रुचि रखते हैं तो आप शानदार [शुरुआती इंटरएक्टिव नेटलोगो शब्दकोश](https://ccl.northwestern.edu/netlogo/bind/) पर जा सकते हैं। +> ✅ हम नेटलोगो भाषा सीखने में गहराई तक नहीं जाएंगे - यदि आप अधिक जानने में रुचि रखते हैं, तो आप शानदार [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) संसाधन पर जा सकते हैं। -आप [डाउनलोड](https://ccl.northwestern.edu/netlogo/download.shtml) कर सकते हैं और नेटलोगो स्थापित कर सकते हैं ताकि आप इसे आजमा सकें। +आप नेटलोगो को [डाउनलोड](https://ccl.northwestern.edu/netlogo/download.shtml) और इंस्टॉल करके आज़मा सकते हैं। ### मॉडल्स लाइब्रेरी -नेटलोगो की एक बड़ी बात यह है कि इसमें कार्यशील मॉडलों की एक लाइब्रेरी है जिसे आप आजमा सकते हैं। **फाइल → मॉडल लाइब्रेरी** पर जाएं, और आपके पास चुनने के लिए कई श्रेणियाँ हैं। +नेटलोगो की एक बड़ी विशेषता यह है कि इसमें काम करने वाले मॉडलों की एक लाइब्रेरी है जिसे आप आज़मा सकते हैं। **File → Models Library** पर जाएं, और आपके पास चुनने के लिए मॉडलों की कई श्रेणियां होंगी। NetLogo Models Library -> डिमित्री सोश्निकोव द्वारा मॉडल लाइब्रेरी का स्क्रीनशॉट +> दिमित्री सोश्निकोव द्वारा मॉडल्स लाइब्रेरी का स्क्रीनशॉट -आप इनमें से किसी एक मॉडल को खोल सकते हैं, जैसे **जीवविज्ञान → झुंड बनाना**। +आप इनमें से किसी एक मॉडल को खोल सकते हैं, उदाहरण के लिए **Biology → Flocking**। ### मुख्य सिद्धांत -मॉडल खोलने के बाद, आपको मुख्य नेटलोगो स्क्रीन पर ले जाया जाएगा। यहाँ एक नमूना मॉडल है जो भेड़ियों और भेड़ों की जनसंख्या का वर्णन करता है, दिए गए सीमित संसाधन (घास)। +मॉडल खोलने के बाद, आप नेटलोगो की मुख्य स्क्रीन पर पहुंचते हैं। यहां एक नमूना मॉडल है जो सीमित संसाधनों (घास) को देखते हुए भेड़ियों और भेड़ों की आबादी का वर्णन करता है। -![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hi.png) +![NetLogo Main Screen](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) -> डिमित्री सोश्निकोव द्वारा स्क्रीनशॉट +> दिमित्री सोश्निकोव द्वारा स्क्रीनशॉट इस स्क्रीन पर, आप देख सकते हैं: * **इंटरफेस** अनुभाग जिसमें शामिल हैं: - - मुख्य क्षेत्र, जहाँ सभी एजेंट रहते हैं - - विभिन्न नियंत्रण: बटन, स्लाइडर, आदि। - - ग्राफ़ जिन्हें आप सिमुलेशन के पैरामीटर प्रदर्शित करने के लिए उपयोग कर सकते हैं -* **कोड** टैब जिसमें संपादक होता है, जहाँ आप नेटलोगो प्रोग्राम टाइप कर सकते हैं + - मुख्य क्षेत्र, जहां सभी एजेंट्स रहते हैं + - विभिन्न नियंत्रण: बटन, स्लाइडर्स, आदि + - ग्राफ़, जिनका उपयोग आप सिमुलेशन के मापदंडों को प्रदर्शित करने के लिए कर सकते हैं +* **कोड** टैब जिसमें संपादक होता है, जहां आप नेटलोगो प्रोग्राम टाइप कर सकते हैं -अधिकांश मामलों में, इंटरफेस में एक **सेटअप** बटन होगा, जो सिमुलेशन की स्थिति को प्रारंभ करता है, और एक **गो** बटन जो निष्पादन शुरू करता है। इन्हें कोड में संबंधित हैंडलरों द्वारा संभाला जाता है जो इस तरह दिखते हैं: +अधिकांश मामलों में, इंटरफेस में एक **Setup** बटन होगा, जो सिमुलेशन की स्थिति को प्रारंभ करता है, और एक **Go** बटन होगा जो निष्पादन शुरू करता है। इन्हें कोड में संबंधित हैंडलर्स द्वारा नियंत्रित किया जाता है, जो इस प्रकार दिखते हैं: ``` to go [ @@ -81,75 +90,75 @@ to go [ ] ``` -नेटलोगो की दुनिया निम्नलिखित वस्तुओं से मिलकर बनी है: +नेटलोगो की दुनिया निम्नलिखित वस्तुओं से बनी होती है: -* **एजेंट्स** (कछुए) जो क्षेत्र में चल सकते हैं और कुछ कर सकते हैं। आप एजेंटों को `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` का उपयोग करके कुछ करने का आदेश देते हैं। -* **अवलोकक** एक अद्वितीय एजेंट है जो दुनिया को नियंत्रित करता है। सभी बटन हैंडलर *अवलोकक मोड* में निष्पादित होते हैं। +* **एजेंट्स** (टर्टल्स) जो क्षेत्र में घूम सकते हैं और कुछ कर सकते हैं। आप `ask turtles [...]` सिंटैक्स का उपयोग करके एजेंट्स को आदेश देते हैं, और कोष्ठकों में कोड सभी एजेंट्स द्वारा *टर्टल मोड* में निष्पादित किया जाता है। +* **पैचेस** क्षेत्र के वर्गाकार क्षेत्र होते हैं, जिन पर एजेंट्स रहते हैं। आप एक ही पैच पर सभी एजेंट्स का संदर्भ ले सकते हैं, या आप पैच के रंग और अन्य गुणों को बदल सकते हैं। आप `ask patches` का उपयोग करके पैचेस को कुछ करने के लिए कह सकते हैं। +* **ऑब्जर्वर** एक अद्वितीय एजेंट है जो दुनिया को नियंत्रित करता है। सभी बटन हैंडलर्स *ऑब्जर्वर मोड* में निष्पादित होते हैं। -> ✅ एक मल्टी-एजेंट वातावरण की सुंदरता यह है कि कछुए मोड या पैच मोड में चलने वाला कोड सभी एजेंटों द्वारा एक साथ समानांतर में निष्पादित होता है। इस प्रकार, थोड़े से कोड लिखकर और व्यक्तिगत एजेंट के व्यवहार को प्रोग्राम करके, आप सिमुलेशन सिस्टम के पूरे जटिल व्यवहार को बना सकते हैं। +> ✅ मल्टी-एजेंट वातावरण की खूबसूरती यह है कि टर्टल मोड या पैच मोड में चलने वाला कोड सभी एजेंट्स द्वारा समानांतर में निष्पादित किया जाता है। इस प्रकार, थोड़ा कोड लिखकर और व्यक्तिगत एजेंट के व्यवहार को प्रोग्राम करके, आप सिमुलेशन सिस्टम के समग्र व्यवहार को जटिल बना सकते हैं। -### झुंड बनाना +### फ्लॉकिंग -मल्टी-एजेंट व्यवहार के एक उदाहरण के रूप में, आइए **[झुंड बनाना](https://en.wikipedia.org/wiki/Flocking_(behavior))** पर विचार करें। झुंड बनाना एक जटिल पैटर्न है जो बहुत हद तक इस तरह है कि पक्षियों के झुंड उड़ते हैं। उन्हें उड़ते हुए देखना आपको सोचने पर मजबूर कर सकता है कि वे किसी प्रकार के सामूहिक एल्गोरिदम का पालन कर रहे हैं, या कि वे किसी प्रकार की *सामूहिक बुद्धिमत्ता* रखते हैं। हालाँकि, यह जटिल व्यवहार तब उत्पन्न होता है जब प्रत्येक व्यक्तिगत एजेंट (इस मामले में, एक *पक्षी*) केवल अपने आसपास के कुछ अन्य एजेंटों को निकटता में देखता है, और तीन सरल नियमों का पालन करता है: +मल्टी-एजेंट व्यवहार के एक उदाहरण के रूप में, आइए **[फ्लॉकिंग](https://en.wikipedia.org/wiki/Flocking_(behavior))** पर विचार करें। फ्लॉकिंग एक जटिल पैटर्न है जो पक्षियों के झुंड के उड़ने के तरीके के समान है। उन्हें उड़ते हुए देखकर आप सोच सकते हैं कि वे किसी प्रकार के सामूहिक एल्गोरिद्म का पालन करते हैं, या उनके पास *सामूहिक बुद्धिमत्ता* का कोई रूप है। हालांकि, यह जटिल व्यवहार तब उत्पन्न होता है जब प्रत्येक व्यक्तिगत एजेंट (इस मामले में, एक *पक्षी*) केवल अपने आसपास के कुछ अन्य एजेंट्स को देखता है और तीन सरल नियमों का पालन करता है: -* **संरेखण** - यह पड़ोसी एजेंटों की औसत दिशा की ओर बढ़ता है -* **संघटन** - यह पड़ोसियों की औसत स्थिति की ओर बढ़ने की कोशिश करता है (*लंबी दूरी का आकर्षण*) -* **विभाजन** - जब अन्य पक्षियों के बहुत करीब पहुँचता है, तो यह दूर जाने की कोशिश करता है (*संक्षिप्त दूरी का प्रतिकर्षण*) +* **एलाइनमेंट** - यह पड़ोसी एजेंट्स की औसत दिशा की ओर मुड़ता है। +* **कोहेशन** - यह पड़ोसियों की औसत स्थिति की ओर मुड़ने की कोशिश करता है (*लंबी दूरी का आकर्षण*)। +* **सेपरेशन** - जब अन्य पक्षियों के बहुत करीब आता है, तो यह दूर जाने की कोशिश करता है (*छोटी दूरी का प्रतिकर्षण*)। -आप झुंड बनाने के उदाहरण को चला सकते हैं और व्यवहार का अवलोकन कर सकते हैं। आप *विभाजन की डिग्री* या *दृष्टि सीमा* जैसे पैरामीटर को भी समायोजित कर सकते हैं, जो परिभाषित करता है कि प्रत्येक पक्षी कितनी दूर देख सकता है। ध्यान दें कि यदि आप दृष्टि सीमा को 0 पर घटाते हैं, तो सभी पक्षी अंधे हो जाते हैं, और झुंड बनाना रुक जाता है। यदि आप विभाजन को 0 पर घटाते हैं, तो सभी पक्षी एक सीधी रेखा में इकट्ठा हो जाते हैं। +आप फ्लॉकिंग उदाहरण चला सकते हैं और व्यवहार का अवलोकन कर सकते हैं। आप *सेपरेशन की डिग्री* या *देखने की सीमा* जैसे मापदंडों को भी समायोजित कर सकते हैं, जो परिभाषित करता है कि प्रत्येक पक्षी कितनी दूर तक देख सकता है। ध्यान दें कि यदि आप देखने की सीमा को 0 तक कम कर देते हैं, तो सभी पक्षी अंधे हो जाते हैं, और फ्लॉकिंग बंद हो जाती है। यदि आप सेपरेशन को 0 तक कम कर देते हैं, तो सभी पक्षी एक सीधी रेखा में इकट्ठा हो जाते हैं। -> ✅ **कोड** टैब पर स्विच करें और देखें कि झुंड बनाने के तीन नियम (संरेखण, संगठन और विभाजन) कोड में कहां लागू किए गए हैं। ध्यान दें कि हम केवल उन एजेंटों का उल्लेख करते हैं जो दृष्टि में हैं। +> ✅ **कोड** टैब पर स्विच करें और देखें कि फ्लॉकिंग के तीन नियम (एलाइनमेंट, कोहेशन और सेपरेशन) कोड में कहां लागू किए गए हैं। ध्यान दें कि हम केवल उन्हीं एजेंट्स का संदर्भ लेते हैं जो दृष्टि में हैं। -### देखने के लिए अन्य मॉडल +### देखने के लिए अन्य मॉडल्स -कुछ और दिलचस्प मॉडल हैं जिनके साथ आप प्रयोग कर सकते हैं: +कुछ और दिलचस्प मॉडल्स हैं जिनके साथ आप प्रयोग कर सकते हैं: -* **कला → आतिशबाजी** दिखाता है कि एक आतिशबाजी को व्यक्तिगत अग्नि धाराओं के सामूहिक व्यवहार के रूप में कैसे माना जा सकता है -* **सामाजिक विज्ञान → ट्रैफिक बेसिक** और **सामाजिक विज्ञान → ट्रैफिक ग्रिड** 1D और 2D ग्रिड में शहर के यातायात का मॉडल दिखाते हैं, जिसमें ट्रैफिक लाइट्स के साथ या बिना। सिमुलेशन में प्रत्येक कार निम्नलिखित नियमों का पालन करती है: - - यदि इसके सामने का स्थान खाली है - तो गति बढ़ाएँ (एक निश्चित अधिकतम गति तक) - - यदि यह सामने रुकावट देखती है - तो ब्रेक लगाएँ (और आप समायोजित कर सकते हैं कि चालक कितनी दूर देख सकता है) -* **सामाजिक विज्ञान → पार्टी** दिखाता है कि लोग एक कॉकटेल पार्टी के दौरान एक साथ कैसे समूह बनाते हैं। आप उन पैरामीटरों का संयोजन खोज सकते हैं जो समूह की खुशी में सबसे तेज वृद्धि की ओर ले जाते हैं। +* **Art → Fireworks** दिखाता है कि आतिशबाजी को व्यक्तिगत फायर स्ट्रीम्स के सामूहिक व्यवहार के रूप में कैसे माना जा सकता है। +* **Social Science → Traffic Basic** और **Social Science → Traffic Grid** शहर के यातायात का 1D और 2D ग्रिड में मॉडल दिखाते हैं, ट्रैफिक लाइट्स के साथ या बिना। सिमुलेशन में प्रत्येक कार निम्नलिखित नियमों का पालन करती है: + - यदि इसके सामने की जगह खाली है - गति बढ़ाएं (एक निश्चित अधिकतम गति तक)। + - यदि यह सामने बाधा देखती है - ब्रेक लगाएं (और आप समायोजित कर सकते हैं कि ड्राइवर कितनी दूर तक देख सकता है)। +* **Social Science → Party** दिखाता है कि कॉकटेल पार्टी के दौरान लोग कैसे समूह बनाते हैं। आप उन मापदंडों के संयोजन को खोज सकते हैं जो समूह की खुशी में सबसे तेज़ वृद्धि का कारण बनते हैं। -जैसा कि आप इन उदाहरणों से देख सकते हैं, मल्टी-एजेंट सिमुलेशन एक जटिल प्रणाली के व्यवहार को समझने का एक उपयोगी तरीका हो सकता है जिसमें ऐसे व्यक्ति होते हैं जो समान या समान तर्क का पालन करते हैं। इसका उपयोग वर्चुअल एजेंटों को नियंत्रित करने के लिए भी किया जा सकता है, जैसे कि [NPCs](https://en.wikipedia.org/wiki/NPC) कंप्यूटर खेलों में, या 3D एनिमेटेड दुनियाओं में एजेंटों के लिए। +जैसा कि आप इन उदाहरणों से देख सकते हैं, मल्टी-एजेंट सिमुलेशन उन जटिल सिस्टम्स के व्यवहार को समझने का एक उपयोगी तरीका हो सकता है, जो समान या समान तर्क का पालन करने वाले व्यक्तियों से बने होते हैं। इसका उपयोग आभासी एजेंट्स, जैसे [NPCs](https://en.wikipedia.org/wiki/NPC) को नियंत्रित करने या 3D एनिमेटेड दुनियाओं में एजेंट्स को नियंत्रित करने के लिए भी किया जा सकता है। -## विचारशील एजेंट +## विचारशील एजेंट्स -उपरोक्त वर्णित एजेंट बहुत सरल हैं, जो पर्यावरण में परिवर्तनों पर किसी प्रकार के एल्गोरिदम का उपयोग करके प्रतिक्रिया करते हैं। इस प्रकार वे **प्रतिक्रियाशील एजेंट** हैं। हालाँकि, कभी-कभी एजेंट तर्क कर सकते हैं और अपनी क्रियाओं की योजना बना सकते हैं, जिस स्थिति में उन्हें **विचारशील** कहा जाता है। +ऊपर वर्णित एजेंट्स बहुत सरल हैं, जो पर्यावरण में परिवर्तनों पर प्रतिक्रिया करते हैं और किसी प्रकार के एल्गोरिद्म का उपयोग करते हैं। इस प्रकार, वे **प्रतिक्रियाशील एजेंट्स** हैं। हालांकि, कभी-कभी एजेंट्स तर्क कर सकते हैं और अपनी क्रियाओं की योजना बना सकते हैं, ऐसे मामलों में उन्हें **विचारशील** कहा जाता है। -एक सामान्य उदाहरण एक व्यक्तिगत एजेंट होगा जो मानव से छुट्टी की यात्रा बुक करने के लिए एक निर्देश प्राप्त करता है। मान लीजिए कि इंटरनेट पर कई एजेंट हैं, जो इसमें मदद कर सकते हैं। उसे फिर अन्य एजेंटों से संपर्क करना चाहिए यह देखने के लिए कि कौन-सी उड़ानें उपलब्ध हैं, विभिन्न तिथियों के लिए होटल की कीमतें क्या हैं, और सबसे अच्छे मूल्य पर बातचीत करने की कोशिश करनी चाहिए। जब छुट्टी की योजना पूरी हो जाती है और मालिक द्वारा पुष्टि की जाती है, तो यह बुकिंग प्रक्रिया को आगे बढ़ा सकता है। +एक सामान्य उदाहरण एक व्यक्तिगत एजेंट होगा जो किसी मानव से छुट्टी यात्रा बुक करने का निर्देश प्राप्त करता है। मान लीजिए कि इंटरनेट पर कई एजेंट्स हैं जो इसकी मदद कर सकते हैं। इसे अन्य एजेंट्स से संपर्क करना चाहिए ताकि यह पता लगाया जा सके कि कौन सी उड़ानें उपलब्ध हैं, विभिन्न तिथियों के लिए होटल की कीमतें क्या हैं, और सबसे अच्छी कीमत पर बातचीत करने का प्रयास करना चाहिए। जब यात्रा योजना पूरी हो जाती है और मालिक द्वारा पुष्टि की जाती है, तो यह बुकिंग के साथ आगे बढ़ सकता है। -ऐसा करने के लिए, एजेंटों को **संचार** करने की आवश्यकता होती है। सफल संचार के लिए उन्हें चाहिए: +ऐसा करने के लिए, एजेंट्स को **संचार** करने की आवश्यकता होती है। सफल संचार के लिए उन्हें चाहिए: -* ज्ञान का आदान-प्रदान करने के लिए कुछ **मानक भाषाएँ**, जैसे [ज्ञान अंतर परिवर्तन प्रारूप](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) और [ज्ञान क्वेरी और हेरफेर भाषा](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML)। ये भाषाएँ [भाषण क्रिया सिद्धांत](https://en.wikipedia.org/wiki/Speech_act) के आधार पर डिज़ाइन की गई हैं। -* इन भाषाओं में विभिन्न **नीलामी प्रकारों** के आधार पर कुछ **बातचीत के प्रोटोकॉल** भी शामिल होने चाहिए। -* एक **सामान्य ओंटोलॉजी** का उपयोग करना चाहिए, ताकि वे समान अवधारणाओं का उल्लेख करते समय उनके अर्थ को जानते हों -* विभिन्न एजेंटों द्वारा क्या किया जा सकता है, यह **खोजने** का एक तरीका भी होना चाहिए, जो किसी प्रकार की ओंटोलॉजी पर आधारित हो +* **ज्ञान का आदान-प्रदान करने के लिए मानक भाषाएं**, जैसे [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)। ये भाषाएं [स्पीच एक्ट थ्योरी](https://en.wikipedia.org/wiki/Speech_act) पर आधारित हैं। +* इन भाषाओं में **वार्ता के लिए प्रोटोकॉल** भी शामिल होने चाहिए, जो विभिन्न **नीलामी प्रकारों** पर आधारित हों। +* उपयोग के लिए एक **सामान्य ओंटोलॉजी**, ताकि वे एक ही अवधारणाओं का संदर्भ लें और उनके अर्थ को समझें। +* यह पता लगाने का एक तरीका कि **विभिन्न एजेंट्स क्या कर सकते हैं**, जो किसी प्रकार की ओंटोलॉजी पर भी आधारित हो। -विचारशील एजेंट प्रतिक्रियाशील एजेंटों की तुलना में अधिक जटिल होते हैं, क्योंकि वे केवल पर्यावरण में परिवर्तनों पर प्रतिक्रिया नहीं करते, उन्हें *क्रियाएँ आरंभ* करने में भी सक्षम होना चाहिए। विचारशील एजेंटों के लिए प्रस्तावित आर्किटेक्चर में से एक तथाकथित विश्वास-इच्छा-इरादा (BDI) एजेंट है: +विचारशील एजेंट्स प्रतिक्रियाशील एजेंट्स की तुलना में कहीं अधिक जटिल होते हैं, क्योंकि वे केवल पर्यावरण में परिवर्तनों पर प्रतिक्रिया नहीं करते, बल्कि *कार्रवाई शुरू* करने में भी सक्षम होने चाहिए। विचारशील एजेंट्स के लिए प्रस्तावित आर्किटेक्चर में से एक है तथाकथित Belief-Desire-Intention (BDI) एजेंट: -* **विश्वास** एजेंट के वातावरण के बारे में ज्ञान का एक सेट बनाते हैं। इसे एक ज्ञान आधार या नियमों के सेट के रूप में संरचित किया जा सकता है जिसे एजेंट पर्यावरण में विशिष्ट स्थिति पर लागू कर सकता है। -* **इच्छाएँ** परिभाषित करती हैं कि एजेंट क्या करना चाहता है, यानी इसके लक्ष्य। उदाहरण के लिए, ऊपर दिए गए व्यक्तिगत सहायक एजेंट का लक्ष्य एक यात्रा बुक करना है, और एक होटल एजेंट का लक्ष्य लाभ को अधिकतम करना है। -* **इरादे** विशिष्ट क्रियाएँ हैं जो एजेंट अपने लक्ष्यों को प्राप्त करने के लिए योजना बनाता है। क्रियाएँ सामान्यतः वातावरण को बदलती हैं और अन्य एजेंटों के साथ संचार का कारण बनती हैं। +* **Beliefs** एजेंट के पर्यावरण के बारे में ज्ञान का एक सेट बनाते हैं। इसे एक ज्ञान आधार या नियमों के सेट के रूप में संरचित किया जा सकता है, जिसे एजेंट पर्यावरण में एक विशिष्ट स्थिति पर लागू कर सकता है। +* **Desires** परिभाषित करते हैं कि एजेंट क्या करना चाहता है, यानी उसके लक्ष्य। उदाहरण के लिए, ऊपर वर्णित व्यक्तिगत सहायक एजेंट का लक्ष्य एक यात्रा बुक करना है, और होटल एजेंट का लक्ष्य लाभ को अधिकतम करना है। +* **Intentions** वे विशिष्ट क्रियाएं हैं जिन्हें एजेंट अपने लक्ष्यों को प्राप्त करने के लिए योजना बनाता है। क्रियाएं आमतौर पर पर्यावरण को बदलती हैं और अन्य एजेंट्स के साथ संचार का कारण बनती हैं। -मल्टी-एजेंट सिस्टम बनाने के लिए कुछ प्लेटफार्म उपलब्ध हैं, जैसे [JADE](https://jade.tilab.com/)। [यह पेपर](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) मल्टी-एजेंट प्लेटफार्मों की समीक्षा करता है, साथ ही मल्टी-एजेंट सिस्टम का एक संक्षिप्त इतिहास और उनके विभिन्न उपयोग परिदृश्य। +मल्टी-एजेंट सिस्टम्स बनाने के लिए कुछ प्लेटफॉर्म उपलब्ध हैं, जैसे [JADE](https://jade.tilab.com/)। [यह पेपर](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) मल्टी-एजेंट प्लेटफॉर्म्स की समीक्षा करता है, साथ ही मल्टी-एजेंट सिस्टम्स के संक्षिप्त इतिहास और उनके विभिन्न उपयोग परिदृश्यों को भी शामिल करता है। ## निष्कर्ष -मल्टी-एजेंट सिस्टम विभिन्न रूप ले सकते हैं और कई विभिन्न अनुप्रयोगों में उपयोग किए जा सकते हैं। -वे सभी एक व्यक्तिगत एजेंट के सरल व्यवहार पर ध्यान केंद्रित करते हैं, और **सहकारी प्रभाव** के कारण पूरे सिस्टम के अधिक जटिल व्यवहार को प्राप्त करते हैं। +मल्टी-एजेंट सिस्टम्स कई अलग-अलग रूप ले सकते हैं और कई अलग-अलग अनुप्रयोगों में उपयोग किए जा सकते हैं। +वे सभी व्यक्तिगत एजेंट के सरल व्यवहार पर ध्यान केंद्रित करते हैं और **सिनर्जेटिक प्रभाव** के कारण समग्र सिस्टम के अधिक जटिल व्यवहार को प्राप्त करते हैं। ## 🚀 चुनौती -इस पाठ को वास्तविक दुनिया में ले जाएं और एक मल्टी-एजेंट सिस्टम की कल्पना करने की कोशिश करें जो एक समस्या को हल कर सके। उदाहरण के लिए, एक मल्टी-एजेंट सिस्टम को स्कूल बस के मार्ग को अनुकूलित करने के लिए क्या करना चाहिए? यह एक बेकरी में कैसे काम कर सकता है? +इस पाठ को वास्तविक दुनिया में ले जाएं और एक समस्या को हल करने के लिए मल्टी-एजेंट सिस्टम को अवधारित करने का प्रयास करें। उदाहरण के लिए, एक स्कूल बस मार्ग को अनुकूलित करने के लिए मल्टी-एजेंट सिस्टम को क्या करना होगा? यह एक बेकरी में कैसे काम कर सकता है? -## [प्रस्तुति के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -उद्योग में इस प्रकार के सिस्टम के उपयोग की समीक्षा करें। किसी क्षेत्र का चयन करें जैसे निर्माण या वीडियो गेम उद्योग और पता करें कि मल्टी-एजेंट सिस्टम का उपयोग अद्वितीय समस्याओं को हल करने के लिए कैसे किया जा सकता है। +उद्योग में इस प्रकार के सिस्टम के उपयोग की समीक्षा करें। निर्माण या वीडियो गेम उद्योग जैसे किसी डोमेन को चुनें और खोजें कि मल्टी-एजेंट सिस्टम्स का उपयोग अद्वितीय समस्याओं को हल करने के लिए कैसे किया जा सकता है। ## [नेटलोगो असाइनमेंट](assignment.md) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md index 534cfe96..4c38c848 100644 --- a/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ -# NetLogo असाइनमेंट + +# नेटलोगो असाइनमेंट -NetLogo के पुस्तकालय में से एक मॉडल लें और इसका उपयोग वास्तविक जीवन की स्थिति का यथासंभव सटीक अनुकरण करने के लिए करें। एक अच्छा उदाहरण होगा Alternative Visualizations फ़ोल्डर में Virus मॉडल को संशोधित करना ताकि यह दिखाया जा सके कि इसका उपयोग COVID-19 के फैलाव को मॉडल करने के लिए कैसे किया जा सकता है। क्या आप एक ऐसा मॉडल बना सकते हैं जो वास्तविक जीवन में वायरल फैलाव की नकल करे? +नेटलोगो की लाइब्रेरी में से किसी एक मॉडल को लें और इसे किसी वास्तविक जीवन की स्थिति का यथासंभव सटीक रूप से अनुकरण करने के लिए उपयोग करें। एक अच्छा उदाहरण यह होगा कि वैकल्पिक विज़ुअलाइज़ेशन फ़ोल्डर में मौजूद वायरस मॉडल को इस तरह से संशोधित करें कि यह दिखा सके कि इसे COVID-19 के प्रसार को मॉडल करने के लिए कैसे उपयोग किया जा सकता है। क्या आप एक ऐसा मॉडल बना सकते हैं जो वास्तविक जीवन में वायरस के प्रसार की नकल करता हो? -अपने काम को दिखाने के लिए एक प्रति सहेजें और एक वीडियो डेमो बनाएं जो यह समझाए कि मॉडल वास्तविक दुनिया की स्थिति से कैसे जुड़ा हुआ है। +अपना काम दिखाने के लिए एक कॉपी सेव करें और एक वीडियो डेमो बनाएं, जिसमें समझाया गया हो कि यह मॉडल वास्तविक दुनिया की स्थिति से कैसे जुड़ा हुआ है। -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ 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/hi/lessons/7-Ethics/README.md b/translations/hi/lessons/7-Ethics/README.md index cd679d76..fe3ab12a 100644 --- a/translations/hi/lessons/7-Ethics/README.md +++ b/translations/hi/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# नैतिक और जिम्मेदार एआई + +# नैतिक और जिम्मेदार AI -आप इस पाठ्यक्रम को लगभग समाप्त कर चुके हैं, और मुझे उम्मीद है कि अब आप स्पष्ट रूप से देख सकते हैं कि एआई कई औपचारिक गणितीय विधियों पर आधारित है जो हमें डेटा में संबंध खोजने और मानव व्यवहार के कुछ पहलुओं को दोहराने के लिए मॉडल प्रशिक्षित करने की अनुमति देती हैं। इस ऐतिहासिक समय में, हम एआई को डेटा से पैटर्न निकालने और उन पैटर्नों को नए समस्याओं को हल करने के लिए लागू करने के लिए एक बहुत शक्तिशाली उपकरण मानते हैं। +आपने इस पाठ्यक्रम को लगभग पूरा कर लिया है, और मुझे उम्मीद है कि अब तक आप स्पष्ट रूप से देख सकते हैं कि AI कई औपचारिक गणितीय विधियों पर आधारित है, जो हमें डेटा में संबंध खोजने और कुछ हद तक मानव व्यवहार को दोहराने वाले मॉडल को प्रशिक्षित करने की अनुमति देती हैं। इस समय, हम AI को डेटा से पैटर्न निकालने और उन पैटर्न को नई समस्याओं को हल करने के लिए लागू करने के लिए एक बहुत ही शक्तिशाली उपकरण मानते हैं। ## [प्री-लेक्चर क्विज़](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -हालांकि, विज्ञान-कथा में हम अक्सर ऐसी कहानियाँ देखते हैं जहाँ एआई मानवता के लिए खतरा प्रस्तुत करता है। आमतौर पर, ये कहानियाँ किसी प्रकार के एआई विद्रोह के चारों ओर केंद्रित होती हैं, जब एआई मानव beings का सामना करने का निर्णय लेता है। इसका मतलब है कि एआई के पास किसी प्रकार की भावना है या यह अपने डेवलपर्स द्वारा अनदेखे निर्णय ले सकता है। +हालांकि, विज्ञान कथा में हम अक्सर ऐसी कहानियां देखते हैं जहां AI मानव जाति के लिए खतरा प्रस्तुत करता है। आमतौर पर ये कहानियां किसी प्रकार की AI विद्रोह के इर्द-गिर्द घूमती हैं, जब AI मानव के खिलाफ जाने का निर्णय लेता है। इसका मतलब है कि AI में किसी प्रकार की भावना होती है या यह अपने डेवलपर्स द्वारा अप्रत्याशित निर्णय ले सकता है। -इस पाठ्यक्रम में हमने जो एआई सीखा है, वह केवल बड़े मैट्रिक्स अंकगणित के अलावा कुछ नहीं है। यह हमारे समस्याओं को हल करने में मदद करने के लिए एक बहुत शक्तिशाली उपकरण है, और किसी अन्य शक्तिशाली उपकरण की तरह - इसका उपयोग अच्छे और बुरे उद्देश्यों के लिए किया जा सकता है। महत्वपूर्ण बात यह है कि इसे *गलत उपयोग* किया जा सकता है। +इस पाठ्यक्रम में हमने जिस प्रकार के AI के बारे में सीखा है, वह केवल बड़े मैट्रिक्स गणित है। यह हमारी समस्याओं को हल करने में मदद करने के लिए एक बहुत ही शक्तिशाली उपकरण है, और किसी भी अन्य शक्तिशाली उपकरण की तरह - इसका उपयोग अच्छे और बुरे उद्देश्यों के लिए किया जा सकता है। महत्वपूर्ण बात यह है कि इसका *दुरुपयोग* किया जा सकता है। -## जिम्मेदार एआई के सिद्धांत +## जिम्मेदार AI के सिद्धांत -एआई के इस आकस्मिक या जानबूझकर गलत उपयोग से बचने के लिए, माइक्रोसॉफ्ट महत्वपूर्ण [जिम्मेदार एआई के सिद्धांत](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) बताता है। निम्नलिखित अवधारणाएँ इन सिद्धांतों के आधार हैं: +AI के इस आकस्मिक या जानबूझकर दुरुपयोग से बचने के लिए, Microsoft ने [जिम्मेदार AI के सिद्धांत](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) को महत्वपूर्ण बताया है। इन सिद्धांतों के पीछे निम्नलिखित अवधारणाएं हैं: -* **निष्पक्षता** उस महत्वपूर्ण समस्या से संबंधित है जिसे *मॉडल पूर्वाग्रह* कहा जाता है, जो प्रशिक्षण के लिए पूर्वाग्रही डेटा का उपयोग करने के कारण हो सकता है। उदाहरण के लिए, जब हम किसी व्यक्ति के लिए सॉफ़्टवेयर डेवलपर नौकरी पाने की संभावना की भविष्यवाणी करने की कोशिश करते हैं, तो मॉडल संभवतः पुरुषों को अधिक प्राथमिकता देगा - बस इसलिए कि प्रशिक्षण डेटा सेट संभवतः पुरुष दर्शकों के प्रति पूर्वाग्रही था। हमें प्रशिक्षण डेटा को सावधानी से संतुलित करना होगा और पूर्वाग्रहों से बचने के लिए मॉडल की जांच करनी होगी, और यह सुनिश्चित करना होगा कि मॉडल अधिक प्रासंगिक विशेषताओं पर ध्यान दे। -* **विश्वसनीयता और सुरक्षा**। स्वभाव से, एआई मॉडल गलतियाँ कर सकते हैं। एक न्यूरल नेटवर्क संभावनाएँ लौटाता है, और हमें निर्णय लेते समय इसे ध्यान में रखना होगा। प्रत्येक मॉडल की कुछ सटीकता और पुनः प्राप्ति होती है, और हमें यह समझना होगा कि गलत सलाह से होने वाले नुकसान को रोकने के लिए। -* **गोपनीयता और सुरक्षा** के कुछ एआई-विशिष्ट निहितार्थ हैं। उदाहरण के लिए, जब हम किसी मॉडल को प्रशिक्षित करने के लिए कुछ डेटा का उपयोग करते हैं, तो यह डेटा किसी न किसी तरह से मॉडल में "एकीकृत" हो जाता है। एक ओर, यह सुरक्षा और गोपनीयता को बढ़ाता है, दूसरी ओर - हमें याद रखना होगा कि मॉडल को किस डेटा पर प्रशिक्षित किया गया था। -* **समावेशिता** का मतलब है कि हम एआई का निर्माण लोगों को बदलने के लिए नहीं कर रहे हैं, बल्कि लोगों को बढ़ाने और हमारे काम को अधिक रचनात्मक बनाने के लिए कर रहे हैं। यह निष्पक्षता से भी संबंधित है, क्योंकि जब हम कम प्रतिनिधित्व वाले समुदायों से निपटते हैं, तो हम जो डेटा सेट एकत्र करते हैं, वे संभवतः पूर्वाग्रही होते हैं, और हमें यह सुनिश्चित करना होगा कि उन समुदायों को शामिल किया गया है और एआई द्वारा सही तरीके से संभाला गया है। -* **पारदर्शिता**। इसमें यह सुनिश्चित करना शामिल है कि हम हमेशा स्पष्ट रहें कि एआई का उपयोग किया जा रहा है। इसके अलावा, जहाँ भी संभव हो, हम *व्याख्यायित* एआई सिस्टम का उपयोग करना चाहते हैं। -* **जिम्मेदारी**। जब एआई मॉडल कुछ निर्णय लेते हैं, तो यह हमेशा स्पष्ट नहीं होता कि उन निर्णयों के लिए कौन जिम्मेदार है। हमें यह सुनिश्चित करना होगा कि हम समझें कि एआई निर्णयों की जिम्मेदारी कहाँ है। अधिकांश मामलों में, हम महत्वपूर्ण निर्णय लेने के चक्र में मानव beings को शामिल करना चाहेंगे, ताकि वास्तविक लोग जिम्मेदार ठहराए जाएँ। +* **निष्पक्षता** *मॉडल पूर्वाग्रहों* की महत्वपूर्ण समस्या से संबंधित है, जो प्रशिक्षण के लिए पक्षपाती डेटा का उपयोग करने के कारण हो सकता है। उदाहरण के लिए, जब हम किसी व्यक्ति के लिए सॉफ़्टवेयर डेवलपर नौकरी पाने की संभावना का अनुमान लगाने की कोशिश करते हैं, तो मॉडल पुरुषों को अधिक प्राथमिकता देने की संभावना रखता है - केवल इसलिए कि प्रशिक्षण डेटासेट संभवतः पुरुष दर्शकों की ओर पक्षपाती था। हमें प्रशिक्षण डेटा को सावधानीपूर्वक संतुलित करना और मॉडल की जांच करनी चाहिए ताकि पूर्वाग्रहों से बचा जा सके, और यह सुनिश्चित करना चाहिए कि मॉडल अधिक प्रासंगिक विशेषताओं को ध्यान में रखे। +* **विश्वसनीयता और सुरक्षा**। अपनी प्रकृति के कारण, AI मॉडल गलतियां कर सकते हैं। एक न्यूरल नेटवर्क संभावनाएं लौटाता है, और हमें निर्णय लेते समय इसे ध्यान में रखना चाहिए। हर मॉडल में कुछ सटीकता और पुनः प्राप्ति होती है, और हमें यह समझने की आवश्यकता है कि गलत सलाह से होने वाले नुकसान को कैसे रोका जाए। +* **गोपनीयता और सुरक्षा** में कुछ AI-विशिष्ट प्रभाव होते हैं। उदाहरण के लिए, जब हम किसी मॉडल को प्रशिक्षित करने के लिए कुछ डेटा का उपयोग करते हैं, तो यह डेटा किसी न किसी रूप में मॉडल में "एकीकृत" हो जाता है। एक ओर, यह सुरक्षा और गोपनीयता बढ़ाता है, दूसरी ओर - हमें यह याद रखना चाहिए कि मॉडल को किस डेटा पर प्रशिक्षित किया गया था। +* **समावेशिता** का मतलब है कि हम AI को लोगों की जगह लेने के लिए नहीं बना रहे हैं, बल्कि लोगों को बढ़ाने और हमारे काम को अधिक रचनात्मक बनाने के लिए बना रहे हैं। यह निष्पक्षता से भी संबंधित है, क्योंकि जब कम प्रतिनिधित्व वाले समुदायों से निपटते हैं, तो हम जो अधिकांश डेटासेट एकत्र करते हैं, वे संभवतः पक्षपाती होते हैं, और हमें यह सुनिश्चित करना चाहिए कि उन समुदायों को शामिल किया जाए और AI द्वारा सही तरीके से संभाला जाए। +* **पारदर्शिता**। इसमें यह सुनिश्चित करना शामिल है कि हम हमेशा स्पष्ट हैं कि AI का उपयोग किया जा रहा है। इसके अलावा, जहां भी संभव हो, हम ऐसे AI सिस्टम का उपयोग करना चाहते हैं जो *व्याख्यात्मक* हों। +* **जवाबदेही**। जब AI मॉडल कुछ निर्णय लेते हैं, तो यह हमेशा स्पष्ट नहीं होता कि उन निर्णयों के लिए कौन जिम्मेदार है। हमें यह सुनिश्चित करना चाहिए कि हम समझते हैं कि AI निर्णयों की जिम्मेदारी कहां है। अधिकांश मामलों में हम महत्वपूर्ण निर्णय लेने की प्रक्रिया में मानव को शामिल करना चाहेंगे, ताकि वास्तविक लोगों को जवाबदेह ठहराया जा सके। -## जिम्मेदार एआई के लिए उपकरण +## जिम्मेदार AI के लिए उपकरण -माइक्रोसॉफ्ट ने [जिम्मेदार एआई टूलबॉक्स](https://github.com/microsoft/responsible-ai-toolbox) विकसित किया है जिसमें उपकरणों का एक सेट शामिल है: +Microsoft ने [जिम्मेदार AI टूलबॉक्स](https://github.com/microsoft/responsible-ai-toolbox) विकसित किया है जिसमें उपकरणों का एक सेट शामिल है: -* व्याख्यायिता डैशबोर्ड (InterpretML) +* व्याख्यात्मकता डैशबोर्ड (InterpretML) * निष्पक्षता डैशबोर्ड (FairLearn) * त्रुटि विश्लेषण डैशबोर्ड -* जिम्मेदार एआई डैशबोर्ड जिसमें शामिल हैं +* जिम्मेदार AI डैशबोर्ड जिसमें शामिल हैं: - - EconML - कारणात्मक विश्लेषण के लिए उपकरण, जो क्या-यदि प्रश्नों पर ध्यान केंद्रित करता है - - DiCE - प्रतिकूल विश्लेषण के लिए उपकरण जो आपको दिखाता है कि मॉडल के निर्णय को प्रभावित करने के लिए कौन सी विशेषताओं को बदलने की आवश्यकता है + - EconML - कारण विश्लेषण के लिए उपकरण, जो "क्या होगा अगर" प्रश्नों पर केंद्रित है + - DiCE - प्रतिवाद विश्लेषण के लिए उपकरण जो आपको यह देखने की अनुमति देता है कि मॉडल के निर्णय को प्रभावित करने के लिए किन विशेषताओं को बदलने की आवश्यकता है -एआई नैतिकता के बारे में अधिक जानकारी के लिए, कृपया [इस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) पर जाएँ जो मशीन लर्निंग पाठ्यक्रम में असाइनमेंट शामिल है। +AI नैतिकता के बारे में अधिक जानकारी के लिए, कृपया मशीन लर्निंग पाठ्यक्रम में [इस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) पर जाएं जिसमें असाइनमेंट शामिल हैं। -## समीक्षा और आत्म-अध्ययन +## समीक्षा और स्व-अध्ययन -जिम्मेदार एआई के बारे में अधिक जानने के लिए इस [लर्न पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) को लें। +जिम्मेदार AI के बारे में अधिक जानने के लिए इस [लर्न पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) को लें। ## [पोस्ट-लेक्चर क्विज़](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ 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/hi/lessons/README.md b/translations/hi/lessons/README.md index 30510847..a5ccdd03 100644 --- a/translations/hi/lessons/README.md +++ b/translations/hi/lessons/README.md @@ -1,8 +1,17 @@ + # अवलोकन -![एक डूडल में अवलोकन](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hi.png) +![डूडल में अवलोकन](../../../lessons/sketchnotes/ai-overview.png) -> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा +> स्केच नोट: [टोमोमी इमुरा](https://twitter.com/girlie_mac) द्वारा -**अस्वीकृति**: -यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/hi/lessons/X-Extras/X1-MultiModal/README.md b/translations/hi/lessons/X-Extras/X1-MultiModal/README.md index a38ce9b1..2927e7ba 100644 --- a/translations/hi/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/hi/lessons/X-Extras/X1-MultiModal/README.md @@ -1,80 +1,90 @@ + # मल्टी-मोडल नेटवर्क्स -NLP कार्यों को हल करने के लिए ट्रांसफार्मर मॉडल की सफलता के बाद, समान या समान आर्किटेक्चर को कंप्यूटर विज़न कार्यों पर लागू किया गया है। ऐसे मॉडलों का निर्माण करने में बढ़ती रुचि है जो दृष्टि और प्राकृतिक भाषा क्षमताओं को *संयोजित* करेंगे। ऐसे प्रयासों में से एक OpenAI द्वारा किया गया था, और इसे CLIP और DALL.E कहा जाता है। +NLP कार्यों को हल करने के लिए ट्रांसफॉर्मर मॉडल की सफलता के बाद, समान या समान आर्किटेक्चर को कंप्यूटर विज़न कार्यों पर लागू किया गया। ऐसे मॉडल बनाने में बढ़ती रुचि है जो विज़न और प्राकृतिक भाषा क्षमताओं को *मिलाकर* काम कर सकें। ऐसा ही एक प्रयास OpenAI द्वारा किया गया, जिसे CLIP और DALL.E कहा जाता है। ## कंट्रास्टिव इमेज प्री-ट्रेनिंग (CLIP) -CLIP का मुख्य विचार यह है कि यह टेक्स्ट प्रॉम्प्ट्स की तुलना एक छवि के साथ कर सके और यह निर्धारित कर सके कि छवि प्रॉम्प्ट के साथ कितनी अच्छी तरह मेल खाती है। +CLIP का मुख्य विचार यह है कि टेक्स्ट प्रॉम्प्ट्स और इमेज की तुलना की जा सके और यह निर्धारित किया जा सके कि इमेज प्रॉम्प्ट के साथ कितनी अच्छी तरह मेल खाती है। -![CLIP आर्किटेक्चर](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hi.png) +![CLIP आर्किटेक्चर](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) -> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से* +> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से लिया गया है* -मॉडल को इंटरनेट से प्राप्त छवियों और उनके कैप्शन पर प्रशिक्षित किया गया है। प्रत्येक बैच के लिए, हम (छवि, टेक्स्ट) के N जोड़ों को लेते हैं, और उन्हें कुछ वेक्टर प्रतिनिधित्व में परिवर्तित करते हैं। -वे प्रतिनिधित्व फिर एक साथ मिलाए जाते हैं। लॉस फंक्शन को एक जोड़े (जैसे I और T) के लिए संबंधित वेक्टरों के बीच कोसाइन समानता को अधिकतम करने के लिए परिभाषित किया गया है, और सभी अन्य जोड़ों के बीच कोसाइन समानता को न्यूनतम करने के लिए। यही कारण है कि इस दृष्टिकोण को **कंट्रास्टिव** कहा जाता है। +मॉडल को इंटरनेट से प्राप्त इमेज और उनके कैप्शन पर प्रशिक्षित किया गया है। प्रत्येक बैच के लिए, हम N जोड़े (इमेज, टेक्स्ट) लेते हैं और उन्हें कुछ वेक्टर रिप्रेजेंटेशन I और T में बदलते हैं। -CLIP मॉडल/लाइब्रेरी [OpenAI GitHub](https://github.com/openai/CLIP) से उपलब्ध है। इस दृष्टिकोण का वर्णन [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) में किया गया है, और अधिक विस्तार में [इस पेपर](https://arxiv.org/pdf/2103.00020.pdf) में। +उन रिप्रेजेंटेशन को फिर एक साथ मिलाया जाता है। लॉस फंक्शन को इस तरह से परिभाषित किया गया है कि वह एक जोड़ी (जैसे I और T) के वेक्टर के बीच कोसाइन समानता को अधिकतम करे और अन्य सभी जोड़ों के बीच कोसाइन समानता को न्यूनतम करे। यही कारण है कि इस दृष्टिकोण को **कंट्रास्टिव** कहा जाता है। -एक बार जब इस मॉडल को प्री-ट्रेन किया जाता है, तो हम इसे छवियों का एक बैच और टेक्स्ट प्रॉम्प्ट्स का एक बैच दे सकते हैं, और यह हमें संभावनाओं के साथ टेन्सर लौटाएगा। CLIP का उपयोग कई कार्यों के लिए किया जा सकता है: +CLIP मॉडल/लाइब्रेरी [OpenAI GitHub](https://github.com/openai/CLIP) से उपलब्ध है। इस दृष्टिकोण को [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) और अधिक विस्तार से [इस पेपर](https://arxiv.org/pdf/2103.00020.pdf) में वर्णित किया गया है। -**छवि वर्गीकरण** +एक बार जब यह मॉडल प्री-ट्रेन हो जाता है, तो हम इसे इमेज और टेक्स्ट प्रॉम्प्ट्स के बैच दे सकते हैं, और यह हमें संभावनाओं के साथ एक टेंसर लौटाएगा। CLIP का उपयोग कई कार्यों के लिए किया जा सकता है: -मान लीजिए कि हमें छवियों को, कहने के लिए, बिल्लियों, कुत्तों और मनुष्यों के बीच वर्गीकृत करने की आवश्यकता है। इस मामले में, हम मॉडल को एक छवि और टेक्स्ट प्रॉम्प्ट्स की एक श्रृंखला दे सकते हैं: "*बिल्ली की तस्वीर*", "*कुत्ते की तस्वीर*", "*मनुष्य की तस्वीर*"। परिणामस्वरूप 3 संभावनाओं के वेक्टर में, हमें बस उच्चतम मूल्य वाला अनुक्रमांक चुनना है। +**इमेज क्लासिफिकेशन** -![CLIP के लिए छवि वर्गीकरण](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hi.png) +मान लीजिए हमें इमेज को बिल्ली, कुत्ते और इंसान के बीच वर्गीकृत करना है। इस मामले में, हम मॉडल को एक इमेज और टेक्स्ट प्रॉम्प्ट्स की एक श्रृंखला देते हैं: "*एक बिल्ली की तस्वीर*", "*एक कुत्ते की तस्वीर*", "*एक इंसान की तस्वीर*"। परिणामस्वरूप 3 संभावनाओं के वेक्टर में, हमें केवल सबसे अधिक मूल्य वाले इंडेक्स का चयन करना होगा। -> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से* +![इमेज क्लासिफिकेशन के लिए CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) -**टेक्स्ट-आधारित छवि खोज** +> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से लिया गया है* -हम इसके विपरीत भी कर सकते हैं। यदि हमारे पास छवियों का एक संग्रह है, तो हम इस संग्रह को मॉडल को पास कर सकते हैं, और एक टेक्स्ट प्रॉम्प्ट - यह हमें उस छवि को देगा जो दिए गए प्रॉम्प्ट के साथ सबसे अधिक समान है। +**टेक्स्ट-आधारित इमेज सर्च** -## ✍️ उदाहरण: [CLIP का उपयोग करके छवि वर्गीकरण और छवि खोज](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) +हम इसका उल्टा भी कर सकते हैं। यदि हमारे पास इमेज का एक संग्रह है, तो हम इस संग्रह को मॉडल में पास कर सकते हैं और एक टेक्स्ट प्रॉम्प्ट दे सकते हैं - यह हमें उस इमेज को देगा जो दिए गए प्रॉम्प्ट के सबसे समान है। -CLIP को क्रियान्वित करने के लिए [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) नोटबुक खोलें। +## ✍️ उदाहरण: [इमेज क्लासिफिकेशन और इमेज सर्च के लिए CLIP का उपयोग](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -## VQGAN+ CLIP के साथ छवि निर्माण +CLIP को एक्शन में देखने के लिए [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) नोटबुक खोलें। -CLIP का उपयोग टेक्स्ट प्रॉम्प्ट से **छवि निर्माण** के लिए भी किया जा सकता है। ऐसा करने के लिए, हमें एक **जनरेटर मॉडल** की आवश्यकता है जो कुछ वेक्टर इनपुट के आधार पर छवियां उत्पन्न कर सके। ऐसे मॉडलों में से एक को [VQGAN](https://compvis.github.io/taming-transformers/) (वेक्टर-क्वांटाइज्ड GAN) कहा जाता है। +## VQGAN+CLIP के साथ इमेज जनरेशन -VQGAN के मुख्य विचार जो इसे साधारण [GAN](../../4-ComputerVision/10-GANs/README.md) से अलग करते हैं, निम्नलिखित हैं: -* छवि को बनाने वाले संदर्भ-समृद्ध दृश्य भागों की एक श्रृंखला उत्पन्न करने के लिए ऑटोरेग्रेसिव ट्रांसफार्मर आर्किटेक्चर का उपयोग करना। ये दृश्य भाग [CNN](../../4-ComputerVision/07-ConvNets/README.md) द्वारा सीखे जाते हैं। -* उप-छवि विभेदक का उपयोग करना जो यह पहचानता है कि छवि के भाग "वास्तविक" हैं या "नकली" (पारंपरिक GAN में "सभी या कुछ नहीं" दृष्टिकोण के विपरीत)। +CLIP का उपयोग टेक्स्ट प्रॉम्प्ट से **इमेज जनरेशन** के लिए भी किया जा सकता है। ऐसा करने के लिए, हमें एक **जनरेटर मॉडल** की आवश्यकता होती है जो कुछ वेक्टर इनपुट के आधार पर इमेज जनरेट कर सके। ऐसा ही एक मॉडल [VQGAN](https://compvis.github.io/taming-transformers/) (वेक्टर-क्वांटाइज्ड GAN) कहलाता है। -VQGAN के बारे में अधिक जानने के लिए [Taming Transformers](https://compvis.github.io/taming-transformers/) वेबसाइट पर जाएं। +VQGAN की मुख्य विशेषताएं जो इसे सामान्य [GAN](../../4-ComputerVision/10-GANs/README.md) से अलग करती हैं, निम्नलिखित हैं: +* ऑटोरेग्रेसिव ट्रांसफॉर्मर आर्किटेक्चर का उपयोग करके एक अनुक्रम उत्पन्न करना जो संदर्भ-समृद्ध विज़ुअल भागों को बनाता है जो इमेज को बनाते हैं। इन विज़ुअल भागों को [CNN](../../4-ComputerVision/07-ConvNets/README.md) द्वारा सीखा जाता है। +* उप-इमेज डिस्क्रिमिनेटर का उपयोग करना जो यह पता लगाता है कि इमेज के भाग "वास्तविक" हैं या "नकली" (पारंपरिक GAN में "ऑल-ऑर-नथिंग" दृष्टिकोण के विपरीत)। -VQGAN और पारंपरिक GAN के बीच एक महत्वपूर्ण अंतर यह है कि बाद वाला किसी भी इनपुट वेक्टर से एक उचित छवि उत्पन्न कर सकता है, जबकि VQGAN संभवतः एक छवि उत्पन्न करेगा जो सामंजस्यपूर्ण नहीं होगी। इसलिए, हमें छवि निर्माण प्रक्रिया को आगे निर्देशित करने की आवश्यकता है, और यह CLIP का उपयोग करके किया जा सकता है। +VQGAN के बारे में अधिक जानें [Taming Transformers](https://compvis.github.io/taming-transformers/) वेबसाइट पर। -![VQGAN+CLIP आर्किटेक्चर](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hi.png) +VQGAN और पारंपरिक GAN के बीच एक महत्वपूर्ण अंतर यह है कि पारंपरिक GAN किसी भी इनपुट वेक्टर से एक अच्छी इमेज बना सकता है, जबकि VQGAN संभवतः एक असंगत इमेज बना सकता है। इसलिए, हमें इमेज निर्माण प्रक्रिया को और अधिक मार्गदर्शन करने की आवश्यकता होती है, और यह CLIP का उपयोग करके किया जा सकता है। -टेक्स्ट प्रॉम्प्ट के अनुसार छवि उत्पन्न करने के लिए, हम एक यादृच्छिक एन्कोडिंग वेक्टर से शुरू करते हैं जो VQGAN के माध्यम से पास किया जाता है ताकि एक छवि उत्पन्न की जा सके। फिर CLIP का उपयोग लॉस फंक्शन उत्पन्न करने के लिए किया जाता है जो दिखाता है कि छवि टेक्स्ट प्रॉम्प्ट के साथ कितनी अच्छी तरह मेल खाती है। लक्ष्य फिर इस लॉस को न्यूनतम करना है, बैक प्रॉपगेशन का उपयोग करके इनपुट वेक्टर पैरामीटर को समायोजित करना है। +![VQGAN+CLIP आर्किटेक्चर](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) -VQGAN+CLIP को लागू करने वाली एक शानदार लाइब्रेरी [Pixray](http://github.com/pixray/pixray) है। +टेक्स्ट प्रॉम्प्ट के अनुरूप इमेज जनरेट करने के लिए, हम कुछ रैंडम एनकोडिंग वेक्टर से शुरू करते हैं जिसे VQGAN के माध्यम से पास किया जाता है ताकि इमेज उत्पन्न हो सके। फिर CLIP का उपयोग लॉस फंक्शन उत्पन्न करने के लिए किया जाता है जो दिखाता है कि इमेज टेक्स्ट प्रॉम्प्ट के साथ कितनी अच्छी तरह मेल खाती है। लक्ष्य तब इस लॉस को न्यूनतम करना होता है, बैक प्रोपेगेशन का उपयोग करके इनपुट वेक्टर पैरामीटर को समायोजित करना। -![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hi.png) +VQGAN+CLIP को लागू करने वाली एक बेहतरीन लाइब्रेरी [Pixray](http://github.com/pixray/pixray) है। + +![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) ----|----|---- -*एक किताब के साथ युवा पुरुष साहित्य शिक्षक का एक करीबी जलरंग पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *एक कंप्यूटर के साथ युवा महिला कंप्यूटर विज्ञान शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *कालेबोर्ड के सामने पुराने पुरुष गणित शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र +प्रॉम्प्ट से जनरेट की गई तस्वीर *एक युवा पुरुष साहित्य शिक्षक की किताब के साथ क्लोजअप वॉटरकलर पोर्ट्रेट* | प्रॉम्प्ट से जनरेट की गई तस्वीर *एक युवा महिला कंप्यूटर विज्ञान शिक्षक की कंप्यूटर के साथ क्लोजअप ऑयल पोर्ट्रेट* | प्रॉम्प्ट से जनरेट की गई तस्वीर *एक वृद्ध पुरुष गणित शिक्षक का ब्लैकबोर्ड के सामने क्लोजअप ऑयल पोर्ट्रेट* -> **आर्टिफिशियल टीचर्स** संग्रह से चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा +> **आर्टिफिशियल टीचर्स** संग्रह से तस्वीरें [Dmitry Soshnikov](http://soshnikov.com) द्वारा ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E एक GPT-3 का संस्करण है जिसे प्रॉम्प्ट से छवियां उत्पन्न करने के लिए प्रशिक्षित किया गया है। इसे 12 अरब पैरामीटर के साथ प्रशिक्षित किया गया है। +DALL-E GPT-3 का एक संस्करण है जिसे प्रॉम्प्ट्स से इमेज जनरेट करने के लिए प्रशिक्षित किया गया है। इसे 12-बिलियन पैरामीटर्स के साथ प्रशिक्षित किया गया है। -CLIP के विपरीत, DALL-E टेक्स्ट और छवि दोनों को छवियों और टेक्स्ट के लिए एकल टोकन स्ट्रीम के रूप में प्राप्त करता है। इसलिए, कई प्रॉम्प्ट्स से, आप टेक्स्ट के आधार पर छवियां उत्पन्न कर सकते हैं। +CLIP के विपरीत, DALL-E टेक्स्ट और इमेज दोनों को एक ही टोकन स्ट्रीम के रूप में प्राप्त करता है। इसलिए, कई प्रॉम्प्ट्स से, आप टेक्स्ट के आधार पर इमेज जनरेट कर सकते हैं। ### [DALL-E 2](https://openai.com/dall-e-2) -DALL-E 1 और 2 के बीच मुख्य अंतर यह है कि यह अधिक यथार्थवादी छवियां और कला उत्पन्न करता है। +DALL-E 1 और 2 के बीच मुख्य अंतर यह है कि DALL-E 2 अधिक यथार्थवादी इमेज और कला जनरेट करता है। -DALL-E के साथ छवि निर्माण के उदाहरण: -![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.hi.png) +DALL-E के साथ इमेज जनरेशन के उदाहरण: +![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![Pixray द्वारा बनाई गई तस्वीर](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) ----|----|---- -*एक किताब के साथ युवा पुरुष साहित्य शिक्षक का एक करीबी जलरंग पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *एक कंप्यूटर के साथ युवा महिला कंप्यूटर विज्ञान शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *कालेबोर्ड के सामने पुराने पुरुष गणित शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र +प्रॉम्प्ट से जनरेट की गई तस्वीर *एक युवा पुरुष साहित्य शिक्षक की किताब के साथ क्लोजअप वॉटरकलर पोर्ट्रेट* | प्रॉम्प्ट से जनरेट की गई तस्वीर *एक युवा महिला कंप्यूटर विज्ञान शिक्षक की कंप्यूटर के साथ क्लोजअप ऑयल पोर्ट्रेट* | प्रॉम्प्ट से जनरेट की गई तस्वीर *एक वृद्ध पुरुष गणित शिक्षक का ब्लैकबोर्ड के सामने क्लोजअप ऑयल पोर्ट्रेट* ## संदर्भ -* VQGAN पेपर: [उच्च-रिज़ॉल्यूशन छवि संश्लेषण के लिए ट्रांसफार्मर्स को वश में करना](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* CLIP पेपर: [प्राकृतिक भाषा सुपरविजन से ट्रांसफर करने योग्य दृश्य मॉडल सीखना](https://arxiv.org/pdf/2103.00020.pdf) +* VQGAN पेपर: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP पेपर: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ 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/hi/lessons/sketchnotes/LICENSE.md b/translations/hi/lessons/sketchnotes/LICENSE.md index f060cc6f..57ea23ba 100644 --- a/translations/hi/lessons/sketchnotes/LICENSE.md +++ b/translations/hi/lessons/sketchnotes/LICENSE.md @@ -1,145 +1,199 @@ -# Creative Commons Attribution-ShareAlike 4.0 International + +अट्रिब्यूशन-शेयरअलाइक 4.0 इंटरनेशनल ======================================================================= -Creative Commons Corporation ("Creative Commons") एक कानूनी फर्म नहीं है और न ही यह कानूनी सेवाएँ या कानूनी सलाह प्रदान करती है। Creative Commons सार्वजनिक लाइसेंस का वितरण किसी वकील-ग्राहक या अन्य संबंध को नहीं बनाता है। Creative Commons अपने लाइसेंस और संबंधित जानकारी को "जैसे हैं" के आधार पर उपलब्ध कराता है। Creative Commons अपने लाइसेंसों, उनके शर्तों और शर्तों के तहत लाइसेंस प्राप्त सामग्री, या किसी भी संबंधित जानकारी के बारे में कोई वारंटी नहीं देता है। Creative Commons किसी भी नुकसान के लिए सभी जिम्मेदारी से इनकार करता है जो उनके उपयोग से उत्पन्न होते हैं, अधिकतम सीमा तक। +क्रिएटिव कॉमन्स कॉर्पोरेशन ("क्रिएटिव कॉमन्स") एक कानून फर्म नहीं है और कानूनी सेवाएं या कानूनी सलाह प्रदान नहीं करता है। क्रिएटिव कॉमन्स सार्वजनिक लाइसेंसों का वितरण वकील-ग्राहक या अन्य संबंध नहीं बनाता है। क्रिएटिव कॉमन्स अपने लाइसेंस और संबंधित जानकारी "जैसा है" आधार पर उपलब्ध कराता है। क्रिएटिव कॉमन्स अपने लाइसेंस, उनके नियमों और शर्तों के तहत लाइसेंस प्राप्त सामग्री, या किसी संबंधित जानकारी के संबंध में कोई वारंटी नहीं देता है। क्रिएटिव कॉमन्स उनकी उपयोग से होने वाले नुकसान के लिए पूरी सीमा तक जिम्मेदारी से इनकार करता है। -## Creative Commons सार्वजनिक लाइसेंस का उपयोग करना +क्रिएटिव कॉमन्स सार्वजनिक लाइसेंस का उपयोग करना -Creative Commons सार्वजनिक लाइसेंस एक मानक सेट के शर्तें और शर्तें प्रदान करते हैं जिन्हें रचनाकार और अन्य अधिकार धारक मूल रचनाओं और अन्य सामग्री को साझा करने के लिए उपयोग कर सकते हैं जो कॉपीराइट और नीचे दिए गए सार्वजनिक लाइसेंस में निर्दिष्ट अन्य अधिकारों के अधीन हैं। निम्नलिखित विचार केवल सूचनात्मक उद्देश्यों के लिए हैं, ये संपूर्ण नहीं हैं, और ये हमारे लाइसेंस का हिस्सा नहीं बनाते हैं। +क्रिएटिव कॉमन्स सार्वजनिक लाइसेंस रचनाकारों और अन्य अधिकार धारकों को कॉपीराइट और नीचे दिए गए सार्वजनिक लाइसेंस में निर्दिष्ट कुछ अन्य अधिकारों के तहत मूल रचनाओं और अन्य सामग्री को साझा करने के लिए एक मानक नियम और शर्तें प्रदान करते हैं। निम्नलिखित विचार केवल जानकारी के उद्देश्य से हैं, संपूर्ण नहीं हैं, और हमारे लाइसेंस का हिस्सा नहीं हैं। -### लाइसेंसधारियों के लिए विचार: -हमारे सार्वजनिक लाइसेंस उन लोगों द्वारा उपयोग के लिए अभिप्रेत हैं जिन्हें सामग्री का उपयोग करने के लिए सार्वजनिक अनुमति देने के लिए अधिकृत किया गया है, जिनका कॉपीराइट और अन्य अधिकारों द्वारा प्रतिबंधित किया गया है। हमारे लाइसेंस अमिट हैं। लाइसेंसधारियों को लाइसेंस के शर्तों और शर्तों को पढ़ना और समझना चाहिए जिसे वे चुनते हैं, इससे पहले कि वे इसे लागू करें। लाइसेंसधारियों को यह सुनिश्चित करना चाहिए कि वे सभी आवश्यक अधिकार सुरक्षित करें इससे पहले कि वे हमारे लाइसेंस को लागू करें ताकि सार्वजनिक रूप से सामग्री को अपेक्षित तरीके से पुनः उपयोग किया जा सके। लाइसेंसधारियों को किसी भी सामग्री को स्पष्ट रूप से चिह्नित करना चाहिए जो लाइसेंस के अधीन नहीं है। इसमें अन्य CC-लाइसेंस प्राप्त सामग्री या कॉपीराइट के अपवाद या सीमा के तहत उपयोग की गई सामग्री शामिल है। लाइसेंसधारियों के लिए अधिक विचार: -wiki.creativecommons.org/Considerations_for_licensors + लाइसेंस देने वालों के लिए विचार: हमारे सार्वजनिक लाइसेंस + उन लोगों द्वारा उपयोग के लिए हैं जो कॉपीराइट और कुछ अन्य + अधिकारों द्वारा प्रतिबंधित सामग्री को सार्वजनिक उपयोग के + लिए अनुमति देने के लिए अधिकृत हैं। हमारे लाइसेंस + अपरिवर्तनीय हैं। लाइसेंस देने वालों को लाइसेंस लागू करने + से पहले इसके नियमों और शर्तों को पढ़ना और समझना चाहिए। + लाइसेंस देने वालों को लाइसेंस लागू करने से पहले सभी + आवश्यक अधिकार सुरक्षित करने चाहिए ताकि जनता सामग्री को + अपेक्षित रूप से पुनः उपयोग कर सके। लाइसेंस देने वालों को + स्पष्ट रूप से किसी भी सामग्री को चिह्नित करना चाहिए जो + लाइसेंस के अधीन नहीं है। इसमें अन्य CC-लाइसेंस प्राप्त + सामग्री, या कॉपीराइट के अपवाद या सीमाओं के तहत उपयोग की गई + सामग्री शामिल है। लाइसेंस देने वालों के लिए अधिक विचार: + wiki.creativecommons.org/Considerations_for_licensors -### सार्वजनिक उपयोगकर्ताओं के लिए विचार: -हमारे सार्वजनिक लाइसेंस में से एक का उपयोग करके, एक लाइसेंसदाता सार्वजनिक को निर्दिष्ट शर्तों और शर्तों के तहत लाइसेंस प्राप्त सामग्री का उपयोग करने की अनुमति देता है। यदि लाइसेंसदाता की अनुमति किसी कारण से आवश्यक नहीं है—उदाहरण के लिए, कॉपीराइट के किसी लागू अपवाद या सीमा के कारण—तो वह उपयोग लाइसेंस द्वारा नियंत्रित नहीं होता है। हमारे लाइसेंस केवल उन अधिकारों के तहत अनुमतियाँ प्रदान करते हैं जिनके लिए लाइसेंसदाता को अधिकार प्राप्त हैं। लाइसेंस प्राप्त सामग्री का उपयोग अभी भी अन्य कारणों से प्रतिबंधित हो सकता है, जिसमें शामिल है कि अन्य लोगों के पास सामग्री में कॉपीराइट या अन्य अधिकार हैं। एक लाइसेंसदाता विशेष अनुरोध कर सकता है, जैसे कि सभी परिवर्तनों को चिह्नित या वर्णित करने के लिए कहना। हालाँकि हमारे लाइसेंस द्वारा आवश्यक नहीं है, आप उन अनुरोधों का सम्मान करने के लिए प्रोत्साहित हैं जहाँ यह उचित हो। सार्वजनिक उपयोगकर्ताओं के लिए अधिक विचार: -wiki.creativecommons.org/Considerations_for_licensees + जनता के लिए विचार: हमारे सार्वजनिक लाइसेंस का उपयोग करके, + एक लाइसेंस देने वाला जनता को निर्दिष्ट नियमों और शर्तों के + तहत लाइसेंस प्राप्त सामग्री का उपयोग करने की अनुमति देता + है। यदि किसी कारण से लाइसेंस देने वाले की अनुमति आवश्यक + नहीं है—उदाहरण के लिए, किसी लागू अपवाद या कॉपीराइट की + सीमा के कारण—तो उस उपयोग को लाइसेंस द्वारा नियंत्रित नहीं + किया जाता है। हमारे लाइसेंस केवल कॉपीराइट और कुछ अन्य + अधिकारों के तहत अनुमति प्रदान करते हैं जिन्हें लाइसेंस + देने वाला प्रदान करने के लिए अधिकृत है। लाइसेंस प्राप्त + सामग्री का उपयोग अन्य कारणों से अभी भी प्रतिबंधित हो सकता + है, जिसमें यह भी शामिल है कि अन्य लोगों के पास सामग्री में + कॉपीराइट या अन्य अधिकार हो सकते हैं। लाइसेंस देने वाला + विशेष अनुरोध कर सकता है, जैसे कि सभी परिवर्तनों को चिह्नित + या वर्णित करने के लिए कहना। हालांकि हमारे लाइसेंस द्वारा + आवश्यक नहीं है, आपसे अनुरोध किया जाता है कि आप उन अनुरोधों + का सम्मान करें जहां उचित हो। जनता के लिए अधिक विचार: + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Attribution-ShareAlike 4.0 International Public License +क्रिएटिव कॉमन्स अट्रिब्यूशन-शेयरअलाइक 4.0 इंटरनेशनल सार्वजनिक लाइसेंस -लाइसेंस अधिकारों का उपयोग करते हुए (नीचे परिभाषित), आप इस Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License") की शर्तों और शर्तों से बंधने के लिए सहमत हैं। इस Public License को यदि अनुबंध के रूप में व्याख्या किया जा सकता है, तो आपको इन शर्तों और शर्तों को स्वीकार करने के बदले में लाइसेंस अधिकार दिए जाते हैं, और लाइसेंसदाता आपको इन शर्तों और शर्तों के तहत लाइसेंस प्राप्त सामग्री उपलब्ध कराने से लाभ प्राप्त करने के बदले में आपको ऐसे अधिकार प्रदान करता है। +लाइसेंस प्राप्त अधिकारों (नीचे परिभाषित) का उपयोग करके, आप इस क्रिएटिव कॉमन्स अट्रिब्यूशन-शेयरअलाइक 4.0 इंटरनेशनल सार्वजनिक लाइसेंस ("सार्वजनिक लाइसेंस") की शर्तों और नियमों से बंधे होने के लिए सहमति देते हैं। जहां तक यह सार्वजनिक लाइसेंस एक अनुबंध के रूप में व्याख्या किया जा सकता है, आपको इन शर्तों और नियमों को स्वीकार करने के बदले में लाइसेंस प्राप्त अधिकार दिए जाते हैं, और लाइसेंस देने वाला आपको इन शर्तों और नियमों के तहत उपलब्ध कराई गई सामग्री से प्राप्त लाभों के बदले में ऐसे अधिकार प्रदान करता है। -## अनुभाग 1 -- परिभाषाएँ। +### अनुभाग 1 -- परिभाषाएँ - a. अनुकूलित सामग्री का अर्थ है कॉपीराइट और समान अधिकारों के अधीन सामग्री जो लाइसेंस प्राप्त सामग्री से व्युत्पन्न या आधारित है और जिसमें लाइसेंस प्राप्त सामग्री का अनुवाद, परिवर्तन, व्यवस्था, रूपांतरण, या किसी अन्य तरीके से संशोधन किया गया है जिसमें लाइसेंसदाता के द्वारा रखे गए कॉपीराइट और समान अधिकारों के तहत अनुमति की आवश्यकता होती है। इस Public License के उद्देश्यों के लिए, जहां लाइसेंस प्राप्त सामग्री एक संगीत कार्य, प्रदर्शन, या ध्वनि रिकॉर्डिंग है, अनुकूलित सामग्री हमेशा तब उत्पन्न होती है जब लाइसेंस प्राप्त सामग्री को चलती छवि के साथ समयबद्ध संबंध में समन्वयित किया जाता है। + a. **अनुकूलित सामग्री**: वह सामग्री जो कॉपीराइट और समान अधिकारों के अधीन है और लाइसेंस प्राप्त सामग्री से व्युत्पन्न या आधारित है, जिसमें लाइसेंस प्राप्त सामग्री का अनुवाद, परिवर्तन, व्यवस्था, रूपांतरण, या अन्य प्रकार का संशोधन शामिल है, जिसके लिए लाइसेंस देने वाले द्वारा आयोजित कॉपीराइट और समान अधिकारों के तहत अनुमति की आवश्यकता होती है। यदि लाइसेंस प्राप्त सामग्री एक संगीत रचना, प्रदर्शन, या ध्वनि रिकॉर्डिंग है, तो अनुकूलित सामग्री हमेशा तब उत्पन्न होती है जब लाइसेंस प्राप्त सामग्री को चलती छवि के साथ समयबद्ध संबंध में सिंक किया जाता है। - b. एडेप्टर का लाइसेंस का अर्थ है लाइसेंस प्राप्त सामग्री में आपके योगदान के लिए आपके कॉपीराइट और समान अधिकारों पर लागू लाइसेंस इस Public License की शर्तों और शर्तों के अनुसार। + b. **एडॉप्टर का लाइसेंस**: वह लाइसेंस जिसे आप अपने कॉपीराइट और समान अधिकारों को अनुकूलित सामग्री में अपने योगदान के लिए इस सार्वजनिक लाइसेंस की शर्तों और नियमों के अनुसार लागू करते हैं। - c. BY-SA संगत लाइसेंस का अर्थ है एक लाइसेंस जो creativecommons.org/compatiblelicenses पर सूचीबद्ध है, जो Creative Commons द्वारा इस Public License के समकक्ष के रूप में अनुमोदित है। + c. **BY-SA संगत लाइसेंस**: वह लाइसेंस जो creativecommons.org/compatiblelicenses पर सूचीबद्ध है, जिसे क्रिएटिव कॉमन्स द्वारा इस सार्वजनिक लाइसेंस के समान रूप में अनुमोदित किया गया है। - d. कॉपीराइट और समान अधिकारों का अर्थ है कॉपीराइट और/या समान अधिकार जो कॉपीराइट से निकटता से संबंधित हैं जिसमें, बिना किसी सीमा के, प्रदर्शन, प्रसारण, ध्वनि रिकॉर्डिंग, और सूई जनरिस डेटाबेस अधिकार शामिल हैं, बिना यह देखे कि अधिकारों को कैसे लेबल या वर्गीकृत किया गया है। इस Public License के उद्देश्यों के लिए, अनुभाग 2(b)(1)-(2) में निर्दिष्ट अधिकार कॉपीराइट और समान अधिकार नहीं हैं। + d. **कॉपीराइट और समान अधिकार**: कॉपीराइट और/या कॉपीराइट से निकटता से संबंधित समान अधिकार, जिसमें प्रदर्शन, प्रसारण, ध्वनि रिकॉर्डिंग, और Sui Generis डेटाबेस अधिकार शामिल हैं, बिना इस बात की परवाह किए कि अधिकारों को कैसे लेबल या वर्गीकृत किया गया है। इस सार्वजनिक लाइसेंस के उद्देश्यों के लिए, अनुभाग 2(b)(1)-(2) में निर्दिष्ट अधिकार कॉपीराइट और समान अधिकार नहीं हैं। - e. प्रभावी तकनीकी उपायों का अर्थ है वे उपाय जो, उचित प्राधिकरण की अनुपस्थिति में, WIPO कॉपीराइट संधि के अनुच्छेद 11 के तहत बाधाओं को पूरा करने वाले कानूनों के तहत नहीं किए जा सकते हैं जो 20 दिसंबर, 1996 को अपनाए गए थे, और/या समान अंतरराष्ट्रीय समझौतों के तहत। + e. **प्रभावी तकनीकी उपाय**: वे उपाय जो, उचित प्राधिकरण की अनुपस्थिति में, WIPO कॉपीराइट संधि के अनुच्छेद 11 के तहत अपनाए गए कानूनों और/या समान अंतरराष्ट्रीय समझौतों के तहत बाधित नहीं किए जा सकते। - f. अपवाद और सीमाएँ का अर्थ है उचित उपयोग, उचित सौदा, और/या कॉपीराइट और समान अधिकारों के लिए कोई अन्य अपवाद या सीमा जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू होती है। + f. **अपवाद और सीमाएँ**: उचित उपयोग, उचित व्यवहार, और/या कॉपीराइट और समान अधिकारों के लिए कोई अन्य अपवाद या सीमा जो लाइसेंस प्राप्त सामग्री के आपके उपयोग पर लागू होती है। - g. लाइसेंस तत्वों का अर्थ है Creative Commons सार्वजनिक लाइसेंस के नाम में सूचीबद्ध लाइसेंस विशेषताएँ। इस Public License के लाइसेंस तत्व हैं: एट्रिब्यूशन और शेयरएलाइक। + g. **लाइसेंस तत्व**: क्रिएटिव कॉमन्स सार्वजनिक लाइसेंस के नाम में सूचीबद्ध लाइसेंस विशेषताएँ। इस सार्वजनिक लाइसेंस के लाइसेंस तत्व अट्रिब्यूशन और शेयरअलाइक हैं। - h. लाइसेंस प्राप्त सामग्री का अर्थ है कलात्मक या साहित्यिक कार्य, डेटाबेस, या अन्य सामग्री जिस पर लाइसेंसदाता ने इस Public License को लागू किया है। + h. **लाइसेंस प्राप्त सामग्री**: वह कलात्मक या साहित्यिक कार्य, डेटाबेस, या अन्य सामग्री जिस पर लाइसेंस देने वाले ने इस सार्वजनिक लाइसेंस को लागू किया है। - i. लाइसेंस प्राप्त अधिकार का अर्थ है वे अधिकार जो आपको इस Public License की शर्तों और शर्तों के अधीन दिए गए हैं, जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू सभी कॉपीराइट और समान अधिकारों तक सीमित हैं और जिनके लाइसेंस देने का अधिकार लाइसेंसदाता के पास है। + i. **लाइसेंस प्राप्त अधिकार**: वह अधिकार जो आपको इस सार्वजनिक लाइसेंस की शर्तों और नियमों के अधीन दिए गए हैं, जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू सभी कॉपीराइट और समान अधिकारों तक सीमित हैं और जिन्हें लाइसेंस देने वाला लाइसेंस देने के लिए अधिकृत है। - j. लाइसेंसदाता का अर्थ है वे व्यक्ति या संस्थाएँ जो इस Public License के तहत अधिकार प्रदान कर रहे हैं। + j. **लाइसेंस देने वाला**: वह व्यक्ति या संस्थाएं जो इस सार्वजनिक लाइसेंस के तहत अधिकार प्रदान करती हैं। - k. साझा करना का अर्थ है सामग्री को किसी भी तरीके या प्रक्रिया से सार्वजनिक को प्रदान करना जो लाइसेंस प्राप्त अधिकारों के तहत अनुमति की आवश्यकता होती है, जैसे कि पुनरुत्पादन, सार्वजनिक प्रदर्शन, वितरण, प्रसार, संचार, या आयात करना, और सामग्री को सार्वजनिक के लिए उपलब्ध कराना जिसमें ऐसे तरीके शामिल हैं जिनसे सार्वजनिक के सदस्य सामग्री को उस स्थान से और उस समय में एक्सेस कर सकते हैं जिसे वे व्यक्तिगत रूप से चुनते हैं। + k. **साझा करना**: वह प्रक्रिया जिसके तहत सामग्री को जनता के लिए उपलब्ध कराया जाता है, जैसे कि पुनरुत्पादन, सार्वजनिक प्रदर्शन, सार्वजनिक प्रदर्शन, वितरण, प्रसार, संचार, या आयात, और सामग्री को जनता के लिए उपलब्ध कराना जिसमें जनता के सदस्य सामग्री को एक स्थान और समय पर व्यक्तिगत रूप से चुने गए तरीके से एक्सेस कर सकते हैं। - l. सूई जनरिस डेटाबेस अधिकार का अर्थ है कॉपीराइट के अलावा अधिकार जो यूरोपीय संसद और परिषद के 11 मार्च 1996 के निर्देश 96/9/EC से उत्पन्न होते हैं जो डेटाबेस की कानूनी सुरक्षा पर है, जैसा कि संशोधित और/या उत्तराधिकारी किया गया है, साथ ही दुनिया के किसी भी स्थान पर अन्य समकक्ष अधिकार। + l. **Sui Generis डेटाबेस अधिकार**: कॉपीराइट के अलावा अन्य अधिकार जो यूरोपीय संसद और 11 मार्च 1996 के परिषद के निर्देश 96/9/EC से उत्पन्न होते हैं, जैसा कि संशोधित और/या सफल हुआ है, साथ ही दुनिया में कहीं भी अन्य समान अधिकार। - m. आप का अर्थ है वह व्यक्ति या संस्था जो इस Public License के तहत लाइसेंस प्राप्त अधिकारों का उपयोग कर रही है। आपका एक संबंधित अर्थ है। + m. **आप**: वह व्यक्ति या संस्था जो इस सार्वजनिक लाइसेंस के तहत लाइसेंस प्राप्त अधिकारों का उपयोग कर रही है। "आपका" का संबंधित अर्थ है। -## अनुभाग 2 -- दायरा। +### अनुभाग 2 -- दायरा - a. लाइसेंस अनुदान। +#### a. लाइसेंस अनुदान - 1. इस Public License की शर्तों और शर्तों के अधीन, लाइसेंसदाता यहाँ आपको लाइसेंस प्राप्त सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए एक वैश्विक, रॉयल्टी-फ्री, गैर-सब्लाइसेंस योग्य, गैर-विशेष, अमिट लाइसेंस प्रदान करता है: +1. इस सार्वजनिक लाइसेंस की शर्तों और नियमों के अधीन, लाइसेंस देने वाला आपको लाइसेंस प्राप्त सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए एक वैश्विक, रॉयल्टी-मुक्त, गैर-सब-लाइसेंस योग्य, गैर-विशेष, अपरिवर्तनीय लाइसेंस प्रदान करता है: - a. लाइसेंस प्राप्त सामग्री को, पूर्ण या भाग में, पुनरुत्पादित और साझा करना; और + a. लाइसेंस प्राप्त सामग्री को पुनरुत्पादित और साझा करना, पूर्ण या आंशिक रूप में; और + b. अनुकूलित सामग्री का उत्पादन, पुनरुत्पादन, और साझा करना। - b. अनुकूलित सामग्री का उत्पादन, पुनरुत्पादन, और साझा करना। +2. **अपवाद और सीमाएँ**: स्पष्टता के लिए, जहां अपवाद और सीमाएँ आपके उपयोग पर लागू होती हैं, यह सार्वजनिक लाइसेंस लागू नहीं होता है, और आपको इसके नियमों और शर्तों का पालन करने की आवश्यकता नहीं है। - 2. अपवाद और सीमाएँ। संदेह से बचने के लिए, जहां अपवाद और सीमाएँ आपके उपयोग पर लागू होती हैं, इस Public License का उपयोग नहीं होता है, और आपको इसकी शर्तों और शर्तों का पालन करने की आवश्यकता नहीं है। +3. **अवधि**: इस सार्वजनिक लाइसेंस की अवधि अनुभाग 6(a) में निर्दिष्ट है। - 3. अवधि। इस Public License की अवधि अनुभाग 6(a) में निर्दिष्ट है। +4. **मीडिया और प्रारूप; तकनीकी संशोधन की अनुमति**: लाइसेंस देने वाला आपको सभी मीडिया और प्रारूपों में लाइसेंस प्राप्त अधिकारों का उपयोग करने की अनुमति देता है, चाहे वे वर्तमान में ज्ञात हों या बाद में बनाए गए हों, और ऐसा करने के लिए आवश्यक तकनीकी संशोधन करने की अनुमति देता है। लाइसेंस देने वाला किसी भी अधिकार या प्राधिकरण को माफ करता है और/या सहमत होता है कि आपको लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए आवश्यक तकनीकी संशोधन करने से रोकने का अधिकार नहीं है, जिसमें प्रभावी तकनीकी उपायों को बाधित करने के लिए आवश्यक तकनीकी संशोधन शामिल हैं। इस सार्वजनिक लाइसेंस के उद्देश्यों के लिए, इस अनुभाग 2(a)(4) द्वारा अधिकृत संशोधन करना कभी भी अनुकूलित सामग्री उत्पन्न नहीं करता है। - 4. मीडिया और प्रारूप; तकनीकी संशोधन की अनुमति। लाइसेंसदाता आपको सभी मीडिया और प्रारूपों में लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए अधिकृत करता है चाहे वे अब ज्ञात हों या भविष्य में बनाए जाएं, और ऐसा करने के लिए आवश्यक तकनीकी संशोधन करने के लिए। लाइसेंसदाता किसी भी अधिकार या प्राधिकरण का परित्याग करता है और/या सहमति नहीं देता है कि आप लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए आवश्यक तकनीकी संशोधन करने से रोकें, जिसमें प्रभावी तकनीकी उपायों को दरकिनार करने के लिए आवश्यक तकनीकी संशोधन शामिल हैं। इस Public License के उद्देश्यों के लिए, इस अनुभाग 2(a)(4) द्वारा अधिकृत संशोधन करने से कभी भी अनुकूलित सामग्री उत्पन्न नहीं होती है। +5. **डाउनस्ट्रीम प्राप्तकर्ता**: + a. **लाइसेंस देने वाले का प्रस्ताव -- लाइसेंस प्राप्त सामग्री**: लाइसेंस प्राप्त सामग्री के प्रत्येक प्राप्तकर्ता को स्वचालित रूप से लाइसेंस देने वाले से इस सार्वजनिक लाइसेंस की शर्तों और नियमों के तहत लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव प्राप्त होता है। + b. **लाइसेंस देने वाले का अतिरिक्त प्रस्ताव -- अनुकूलित सामग्री**: आपसे अनुकूलित सामग्री प्राप्त करने वाला प्रत्येक प्राप्तकर्ता स्वचालित रूप से लाइसेंस देने वाले से अनुकूलित सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव प्राप्त करता है, जो आप लागू करते हैं। + c. **कोई डाउनस्ट्रीम प्रतिबंध नहीं**: आप लाइसेंस प्राप्त सामग्री पर कोई अतिरिक्त या अलग शर्तें या नियम लागू नहीं कर सकते हैं, या प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं, यदि ऐसा करने से लाइसेंस प्राप्त सामग्री के किसी प्राप्तकर्ता द्वारा लाइसेंस प्राप्त अधिकारों का उपयोग प्रतिबंधित होता है। - 5. डाउनस्ट्रीम प्राप्तकर्ता। +6. **कोई समर्थन नहीं**: इस सार्वजनिक लाइसेंस में कुछ भी ऐसा नहीं है जो यह अनुमति देता हो या ऐसा माना जा सकता हो कि आप, या लाइसेंस प्राप्त सामग्री का आपका उपयोग, लाइसेंस देने वाले या अन्य लोगों द्वारा प्रदान किए गए समर्थन, अनुमोदन, या आधिकारिक स्थिति से जुड़ा हुआ है। - a. लाइसेंसदाता से प्रस्ताव -- लाइसेंस प्राप्त सामग्री। लाइसेंस प्राप्त सामग्री के प्रत्येक प्राप्तकर्ता को स्वचालित रूप से लाइसेंसदाता से इस Public License की शर्तों और शर्तों के तहत लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव मिलता है। +#### b. अन्य अधिकार - b. लाइसेंसदाता से अतिरिक्त प्रस्ताव -- अनुकूलित सामग्री। आपके द्वारा अनुकूलित सामग्री के प्रत्येक प्राप्तकर्ता को स्वचालित रूप से लाइसेंसदाता से अनुकूलित सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव मिलता है, जिस पर आप एडेप्टर के लाइसेंस को लागू करते हैं। +1. नैतिक अधिकार, जैसे अखंडता का अधिकार, इस सार्वजनिक लाइसेंस के तहत लाइसेंस प्राप्त नहीं हैं, न ही प्रचार, गोपनीयता, और/या अन्य समान व्यक्तित्व अधिकार; हालांकि, जहां तक संभव हो, लाइसेंस देने वाला इन अधिकारों को माफ करता है और/या सहमत होता है कि लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए आवश्यक सीमा तक इन अधिकारों को लागू नहीं करेगा। +2. पेटेंट और ट्रेडमार्क अधिकार इस सार्वजनिक लाइसेंस के तहत लाइसेंस प्राप्त नहीं हैं। +3. जहां तक संभव हो, लाइसेंस देने वाला आपसे लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए रॉयल्टी संग्रह करने का कोई अधिकार माफ करता है, चाहे सीधे या किसी संग्रह समाज के माध्यम से किसी स्वैच्छिक या माफ करने योग्य वैधानिक या अनिवार्य लाइसेंसिंग योजना के तहत। अन्य सभी मामलों में, लाइसेंस देने वाला स्पष्ट रूप से ऐसे रॉयल्टी संग्रह करने का अधिकार सुरक्षित रखता है। - c. कोई डाउनस्ट्रीम प्रतिबंध नहीं। आप लाइसेंस प्राप्त सामग्री पर किसी भी अतिरिक्त या भिन्न शर्तों या शर्तों की पेशकश या लागू नहीं कर सकते हैं, या लाइसेंस प्राप्त सामग्री के किसी भी प्राप्तकर्ता द्वारा लाइसेंस प्राप्त अधिकारों के उपयोग को प्रतिबंधित करने के लिए कोई प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं। +### अनुभाग 3 -- लाइसेंस शर्तें - 6. कोई समर्थन नहीं। इस Public License में कुछ भी ऐसा नहीं है जो आपके द्वारा किए गए उपयोग के साथ, या लाइसेंसदाता या अन्य लोगों द्वारा नामित किए गए क्रेडिट के रूप में, आपको किसी भी तरीके से जोड़ा गया हो, या प्रायोजित, समर्थित, या आधिकारिक स्थिति प्राप्त करने की अनुमति देता हो, जैसा कि अनुभाग 3(a)(1)(A)(i) में प्रदान किया गया है। +लाइसेंस प्राप्त अधिकारों का आपका उपयोग स्पष्ट रूप से निम्नलिखित शर्तों के अधीन है। - b. अन्य अधिकार। +#### a. अट्रिब्यूशन - 1. नैतिक अधिकार, जैसे कि अखंडता का अधिकार, इस Public License के तहत लाइसेंस नहीं किए गए हैं, न ही सार्वजनिकता, गोपनीयता, और/या अन्य समान व्यक्तित्व अधिकार; हालाँकि, यथासंभव, लाइसेंसदाता किसी भी ऐसे अधिकार का परित्याग करता है और/या सहमति नहीं देता है जो लाइसेंसदाता द्वारा रखे गए हैं, ताकि आपको लाइसेंस प्राप्त अधिकारों का उपयोग करने की अनुमति मिल सके, लेकिन अन्यथा नहीं। +1. यदि आप लाइसेंस प्राप्त सामग्री को साझा करते हैं (संशोधित रूप में भी), तो आपको निम्नलिखित बनाए रखना होगा यदि यह लाइसेंस देने वाले द्वारा लाइसेंस प्राप्त सामग्री के साथ प्रदान किया गया है: + a. लाइसेंस प्राप्त सामग्री के निर्माता(ओं) की पहचान और किसी अन्य को अट्रिब्यूशन प्राप्त करने के लिए नामित किया गया है, किसी भी उचित तरीके से जो लाइसेंस देने वाले द्वारा अनुरोधित है (छद्म नाम द्वारा भी यदि नामित किया गया हो); + b. कॉपीराइट नोटिस; + c. इस सार्वजनिक लाइसेंस का संदर्भ देने वाला नोटिस; + d. वारंटी अस्वीकरण का संदर्भ देने वाला नोटिस; + e. लाइसेंस प्राप्त सामग्री के लिए एक URI या हाइपरलिंक जहां तक संभव हो। - 2. पेटेंट और ट्रेडमार्क अधिकार इस Public License के तहत लाइसेंस नहीं किए गए हैं। +2. आपको अनुभाग 3(a)(1) की शर्तों को किसी भी उचित तरीके से पूरा करना चाहिए जो माध्यम, साधन, और संदर्भ के आधार पर हो जिसमें आप लाइसेंस प्राप्त सामग्री साझा करते हैं। उदाहरण के लिए, यह शर्तों को पूरा करने के लिए एक URI या हाइपरलिंक प्रदान करना उचित हो सकता है जो आवश्यक जानकारी शामिल करता है। - 3. यथासंभव, लाइसेंसदाता आपके द्वारा लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए सीधे या किसी संग्रहणीय समाज के माध्यम से किसी भी स्वैच्छिक या माफ किए जाने योग्य वैधानिक या अनिवार्य लाइसेंसिंग योजना के तहत रॉयल्टी वसूलने का कोई अधिकार नहीं छोड़ता है। अन्य सभी मामलों में, लाइसेंसदाता स्पष्ट रूप से ऐसे रॉयल्टी वसूलने का कोई अधिकार सुरक्षित रखता है। +3. यदि लाइसेंस देने वाले द्वारा अनुरोध किया गया हो, तो आपको अनुभाग 3(a)(1)(A) द्वारा आवश्यक किसी भी जानकारी को हटाना होगा जहां तक संभव हो। -## अनुभाग 3 -- लाइसेंस की शर्तें। +#### b. शेयरअलाइक -आपके द्वारा लाइसेंस प्राप्त अधिकारों का उपयोग निम्नलिखित शर्तों के अधीन स्पष्ट रूप से किया गया है। +अनुभाग 3(a) की शर्तों के अलावा, यदि आप अनुकूलित सामग्री साझा करते हैं जिसे आप उत्पन्न करते हैं, तो निम्नलिखित शर्तें भी लागू होती हैं: - a. एट्रिब्यूशन। +1. एडॉप्टर का लाइसेंस जिसे आप लागू करते हैं वह क्रिएटिव कॉमन्स लाइसेंस होना चाहिए जिसमें समान लाइसेंस तत्व हों, यह संस्करण या बाद का, या BY-SA संगत लाइसेंस। +2. आपको एडॉप्टर का लाइसेंस जिसे आप लागू करते हैं, का पाठ, URI, या हाइपरलिंक शामिल करना होगा। आप इस शर्त को किसी भी उचित तरीके से पूरा कर सकते हैं जो माध्यम, साधन, और संदर्भ के आधार पर हो जिसमें आप अनुकूलित सामग्री साझा करते हैं। +3. आप अनुकूलित सामग्री पर कोई अतिरिक्त या अलग शर्तें या नियम लागू नहीं कर सकते हैं, या प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं, जो एडॉप्टर के लाइसेंस के तहत दिए गए अधिकारों के उपयोग को प्रतिबंधित करता है। - 1. यदि आप लाइसेंस प्राप्त सामग्री को साझा करते हैं (संशोधित रूप में भी), तो आपको: +### अनुभाग 4 -- Sui Generis डेटाबेस अधिकार - a. निम्नलिखित को बनाए रखना चाहिए यदि इसे लाइसेंसदाता द्वारा लाइसेंस प्राप्त सामग्री के साथ प्रदान किया गया है: +जहां लाइसेंस प्राप्त अधिकारों में Sui Generis डेटाबेस अधिकार शामिल हैं जो लाइसेंस प्राप्त सामग्री के आपके उपयोग पर लागू होते हैं: - i. लाइसेंस प्राप्त सामग्री के निर्माता(ओं) की पहचान और किसी अन्य व्यक्ति को जो क्रेडिट प्राप्त करने के लिए नामित किया गया है, किसी भी उचित तरीके से जो लाइसेंसदाता द्वारा अनुरोध किया गया है (यदि नामित किया गया हो तो उपनाम द्वारा); +#### a. स्पष्टता के लिए, अनुभाग 2(a)(1) आपको डेटाबेस की सामग्री का निष्कर्षण, पुनः उपयोग, पुनरुत्पादन, और साझा करने का अधिकार देता है। +#### b. यदि आप डेटाबेस की सभी या एक महत्वपूर्ण हिस्से की सामग्री को एक डेटाबेस में शामिल करते हैं जिसमें आपके पास Sui Generis डेटाबेस अधिकार हैं: +अधिकार, फिर वह डेटाबेस जिसमें आपके पास Sui Generis डेटाबेस अधिकार हैं (लेकिन इसके व्यक्तिगत सामग्री नहीं) को अनुकूलित सामग्री माना जाएगा, - ii. एक कॉपीराइट नोटिस; +धारा 3(b) के उद्देश्यों के लिए भी; और +c. यदि आप डेटाबेस की सभी या अधिकांश सामग्री को साझा करते हैं, तो आपको धारा 3(a) में दिए गए शर्तों का पालन करना होगा। - iii. इस Public License का संदर्भ देने वाला एक नोटिस; +स्पष्टता के लिए, यह धारा 4 आपके दायित्वों को इस सार्वजनिक लाइसेंस के तहत पूरक करती है और इसे प्रतिस्थापित नहीं करती है, जहां लाइसेंस प्राप्त अधिकारों में अन्य कॉपीराइट और समान अधिकार शामिल हैं। - iv. वारंटियों के अस्वीकरण का संदर्भ देने वाला एक नोटिस; +### धारा 5 -- वारंटी की अस्वीकृति और देयता की सीमा। - v. लाइसेंस प्राप्त सामग्री के लिए एक URI या हाइपरलिंक यथासंभव; +a. जब तक लाइसेंसकर्ता द्वारा अलग से कोई अन्य प्रावधान नहीं किया गया है, जहां तक संभव हो, लाइसेंसकर्ता लाइसेंस प्राप्त सामग्री को "जैसा है" और "जैसा उपलब्ध है" प्रदान करता है और लाइसेंस प्राप्त सामग्री के संबंध में किसी भी प्रकार का कोई प्रतिनिधित्व या वारंटी नहीं देता है, चाहे वह स्पष्ट हो, निहित हो, वैधानिक हो, या अन्य। इसमें, बिना किसी सीमा के, शीर्षक, व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता, गैर-उल्लंघन, छिपे हुए या अन्य दोषों की अनुपस्थिति, सटीकता, या त्रुटियों की उपस्थिति या अनुपस्थिति, चाहे ज्ञात हो या खोज योग्य हो, शामिल हैं। जहां वारंटी की अस्वीकृति पूरी तरह या आंशिक रूप से अनुमति नहीं है, यह अस्वीकृति आप पर लागू नहीं हो सकती है। - b. यह संकेत करें कि आपने लाइसेंस प्राप्त सामग्री में संशोधन किया है और किसी भी पूर्व संशोधन का संकेत बनाए रखें; और +b. जहां तक संभव हो, किसी भी स्थिति में लाइसेंसकर्ता आप पर किसी भी कानूनी सिद्धांत (जिसमें, बिना किसी सीमा के, लापरवाही शामिल है) या अन्यथा किसी भी प्रत्यक्ष, विशेष, अप्रत्यक्ष, आकस्मिक, परिणामी, दंडात्मक, उदाहरणात्मक, या अन्य नुकसान, लागत, खर्च, या इस सार्वजनिक लाइसेंस या लाइसेंस प्राप्त सामग्री के उपयोग से उत्पन्न होने वाले नुकसान के लिए उत्तरदायी नहीं होगा, भले ही लाइसेंसकर्ता को ऐसे नुकसान, लागत, खर्च, या नुकसान की संभावना के बारे में सूचित किया गया हो। जहां देयता की सीमा पूरी तरह या आंशिक रूप से अनुमति नहीं है, यह सीमा आप पर लागू नहीं हो सकती है। - c. यह संकेत करें कि लाइसेंस प्राप्त सामग्री इस Public License के तहत लाइसेंस प्राप्त है, और इस Public License का पाठ, या इसका URI या हाइपरलिंक शामिल करें। +c. ऊपर दी गई वारंटी की अस्वीकृति और देयता की सीमा को इस प्रकार व्याख्या किया जाएगा कि, जहां तक संभव हो, यह सभी देयता की पूर्ण अस्वीकृति और छूट के सबसे करीब हो। - 2. आप अनुभाग 3(a)(1) में शर्तों को किसी भी उचित तरीके से पूरा कर सकते हैं जो उस माध्यम, साधन, और संदर्भ पर आधारित हो जिसमें आप लाइसेंस प्राप्त सामग्री को साझा करते हैं। उदाहरण के लिए, यह उचित हो सकता है कि आवश्यक जानकारी शामिल करने वाले संसाधन के लिए एक URI या हाइपरलिंक प्रदान करके शर्तों को पूरा किया जाए। +### धारा 6 -- अवधि और समाप्ति। - 3. यदि लाइसेंसदाता द्वारा अनुरोध किया गया, तो आपको यथासंभव किसी भी जानकारी को हटाना चाहिए जो अनुभाग 3(a)(1)(A) द्वारा आवश्यक है। +a. यह सार्वजनिक लाइसेंस यहां लाइसेंस प्राप्त कॉपीराइट और समान अधिकारों की अवधि के लिए लागू होता है। हालांकि, यदि आप इस सार्वजनिक लाइसेंस का पालन करने में विफल रहते हैं, तो इस सार्वजनिक लाइसेंस के तहत आपके अधिकार स्वचालित रूप से समाप्त हो जाते हैं। - b. शेयरएलाइक। +b. जहां धारा 6(a) के तहत लाइसेंस प्राप्त सामग्री का उपयोग करने का आपका अधिकार समाप्त हो गया है, वह पुनः स्थापित होता है: - अनुभाग 3(a) की शर्तों के अलावा, यदि आप साझा करते हैं अनुकूलित सामग्री जिसे आप उत्पन्न करते हैं, तो निम्नलिखित शर्तें भी लागू होती हैं। +1. स्वचालित रूप से उस तारीख से जब उल्लंघन को ठीक किया गया है, बशर्ते कि यह उल्लंघन की खोज के 30 दिनों के भीतर ठीक किया गया हो; या +2. लाइसेंसकर्ता द्वारा स्पष्ट पुनः स्थापना पर। - 1. आप जो एडेप्टर का लाइसेंस लागू करते हैं वह एक Creative Commons लाइसेंस होना चाहिए जिसमें समान लाइसेंस तत्व हों, यह संस्करण या बाद का, या एक BY-SA संगत लाइसेंस। +स्पष्टता के लिए, यह धारा 6(b) लाइसेंसकर्ता के पास आपके इस सार्वजनिक लाइसेंस के उल्लंघनों के लिए उपायों की मांग करने के किसी भी अधिकार को प्रभावित नहीं करती है। - 2. आपको उस एडेप्टर के लाइसेंस का पाठ शामिल करना चाहिए जिसे आप लागू करते हैं, या उसका URI या हाइपरलिंक। आप इस शर्त को किसी भी उचित तरीके से पूरा कर सकते हैं जो उस माध्यम, साधन, और संदर्भ पर आधारित हो जिसमें आप अनुकूलित सामग्री साझा करते हैं। +c. स्पष्टता के लिए, लाइसेंसकर्ता अलग-अलग शर्तों या परिस्थितियों के तहत लाइसेंस प्राप्त सामग्री की पेशकश कर सकता है या किसी भी समय लाइसेंस प्राप्त सामग्री का वितरण बंद कर सकता है; हालांकि, ऐसा करने से यह सार्वजनिक लाइसेंस समाप्त नहीं होगा। - 3. आप अनुकूलित सामग्री पर किसी भी अतिरिक्त या भिन्न शर्तों या शर्तों की पेशकश या लागू नहीं कर सकते हैं, या उस एडेप्टर के लाइसेंस के तहत दिए गए अधिकारों के उपयोग को प्रतिबंधित करने के लिए कोई प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं। +d. धारा 1, 5, 6, 7, और 8 इस सार्वजनिक लाइसेंस की समाप्ति के बाद भी लागू रहती हैं। -## अनुभाग 4 -- सूई जनरिस डेटाबेस अधिकार। +### धारा 7 -- अन्य शर्तें और परिस्थितियां। -जहाँ लाइसेंस प्राप्त अधिकारों में सूई जनरिस डेटाबेस अधिकार शामिल हैं जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू होते हैं: +a. लाइसेंसकर्ता आपके द्वारा संप्रेषित किसी भी अतिरिक्त या अलग शर्तों या परिस्थितियों से बाध्य नहीं होगा जब तक कि स्पष्ट रूप से सहमति न दी गई हो। - a. संदेह से बचने के लिए, अनुभाग 2(a)(1) आपको डेटाबेस की सभी या एक महत्वपूर्ण मात्रा में सामग्री को निकालने, पुनः उपयोग करने, पुनरुत्पादित करने, और साझा करने का अधिकार प्रदान करता है; +b. लाइसेंस प्राप्त सामग्री के संबंध में कोई भी व्यवस्था, समझौता, या समझौते जो यहां नहीं बताए गए हैं, इस सार्वजनिक लाइसेंस की शर्तों और परिस्थितियों से अलग और स्वतंत्र हैं। - b. यदि आप डेटाबेस में सभी या एक महत्वपूर्ण मात्रा में डेटाबेस सामग्री को शामिल करते हैं जिसमें आपके पास सूई जनरिस डेटाबेस अधिकार हैं, तो वह डेटाबेस जिसमें आपके पास सूई जनरिस डेटाबेस अधिकार हैं (लेकिन इसकी व्यक्तिगत सामग्री नहीं) अनुकूलित सामग्री है, +### धारा 8 -- व्याख्या। - अनुभाग 3(b) के उद्देश्यों के लिए भी; और - c. यदि आप डेटाबेस की सभी या एक महत्वपूर्ण मात्रा में सामग्री साझा करते हैं, तो आपको अनुभाग 3(a) की शर्तों का पालन करना चाहिए। +a. स्पष्टता के लिए, यह सार्वजनिक लाइसेंस किसी भी उपयोग को कम करने, सीमित करने, प्रतिबंधित करने, या शर्तें लगाने के लिए व्याख्या नहीं किया जाएगा जो इस सार्वजनिक लाइसेंस के तहत अनुमति के बिना कानूनी रूप से किया जा सकता है। -संदेह से बचने के लिए, यह अनुभाग 4 आपके लाइसेंस प्राप्त अधिकारों के तहत इस Public License के तहत आपकी प्रतिबद्धताओं को पूरक करता है जहाँ लाइसेंस प्राप्त अधिकारों में अन्य कॉपीराइट और समान अधिकार शामिल हैं। +b. जहां तक संभव हो, यदि इस सार्वजनिक लाइसेंस का कोई प्रावधान अप्रवर्तनीय माना जाता है, तो इसे लागू करने योग्य बनाने के लिए न्यूनतम सीमा तक स्वचालित रूप से सुधार किया जाएगा। यदि प्रावधान को सुधार नहीं किया जा सकता है, तो इसे इस सार्वजनिक लाइसेंस से अलग कर दिया जाएगा, बिना शेष शर्तों और परिस्थितियों की प्रवर्तनीयता को प्रभावित किए। -## अनुभाग 5 -- वारंटियों का अस्वीकरण और जिम्मेदारी की सीमा। +c. इस सार्वजनिक लाइसेंस की कोई भी शर्त या परिस्थिति माफ नहीं की जाएगी और किसी भी विफलता को सहमति नहीं दी जाएगी जब तक कि लाइसेंसकर्ता द्वारा स्पष्ट रूप से सहमति न दी गई हो। - a. जब तक लाइसेंसदाता द्वारा अन्यथा अलग से नहीं किया गया है, यथासंभव, लाइसेंसदाता लाइसेंस प्राप्त सामग्री को जैसे है और उपलब्ध के रूप में प्रदान करता है, और लाइसेंस प्राप्त सामग्री के संबंध में किसी भी प्रकार की कोई भी प्रतिनिधित्व या वारंटी नहीं देता है, चाहे वह स्पष्ट, निहित, वैधानिक, या अन्य। इसमें, बिना किसी सीमा के, शीर्षक, व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता, गैर-उल्लंघन, अंतर्निहित या अन्य दोषों की अनुपस्थिति, सटीकता, या ज्ञात या खोजी जाने योग्य त्रुटियों की उपस्थिति या अनुपस्थिति की वारंटी शामिल है। जहां वारंटियों के अस्वीकरण पूरी तरह से या आंशिक रूप से अनुमति नहीं है, यह अस्वीकरण आपके लिए लागू नहीं हो सकता है। +d. इस सार्वजनिक लाइसेंस में कुछ भी ऐसा नहीं है जो लाइसेंसकर्ता या आप पर लागू किसी भी विशेषाधिकार और प्रतिरक्षा को सीमित करने या माफ करने के रूप में व्याख्या किया जा सकता है, जिसमें किसी भी क्षेत्राधिकार या प्राधिकरण की कानूनी प्रक्रियाओं से छूट शामिल है। - b. यथासंभव, किसी भी कानूनी सिद्धांत (जिसमें, बिना किसी सीमा के, लापरवाही) के तहत या अन्यथा, लाइसेंसदाता आपके प्रति किसी भी प्रत्यक्ष, विशेष, अप्रत्यक्ष, आकस्मिक, परिणामी, दंड +--- -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file +क्रिएटिव कॉमन्स इसके सार्वजनिक लाइसेंस का पक्षकार नहीं है। इसके बावजूद, क्रिएटिव कॉमन्स अपने द्वारा प्रकाशित सामग्री पर अपने सार्वजनिक लाइसेंसों में से एक को लागू करने का विकल्प चुन सकता है और उन मामलों में "लाइसेंसकर्ता" माना जाएगा। क्रिएटिव कॉमन्स सार्वजनिक लाइसेंसों का पाठ CC0 सार्वजनिक डोमेन समर्पण के तहत सार्वजनिक डोमेन को समर्पित है। क्रिएटिव कॉमन्स नीतियों के तहत अनुमति प्राप्त उपयोगों को छोड़कर, क्रिएटिव कॉमन्स "क्रिएटिव कॉमन्स" ट्रेडमार्क या इसके किसी अन्य ट्रेडमार्क या लोगो का उपयोग बिना पूर्व लिखित सहमति के अधिकृत नहीं करता है, जिसमें, बिना किसी सीमा के, इसके किसी भी सार्वजनिक लाइसेंस में अनधिकृत संशोधनों या लाइसेंस प्राप्त सामग्री के उपयोग के संबंध में किसी भी अन्य व्यवस्था, समझौते, या समझौते शामिल हैं। स्पष्टता के लिए, यह पैराग्राफ सार्वजनिक लाइसेंसों का हिस्सा नहीं है। + +क्रिएटिव कॉमन्स से संपर्क किया जा सकता है creativecommons.org पर। + +**अस्वीकरण**: +यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/sketchnotes/README.md b/translations/hi/lessons/sketchnotes/README.md index be7661d5..4dca1253 100644 --- a/translations/hi/lessons/sketchnotes/README.md +++ b/translations/hi/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -# सभी पाठ्यक्रम के स्केच नोट्स यहाँ डाउनलोड किए जा सकते हैं। + +सभी पाठ्यक्रम के स्केच नोट्स यहां से डाउनलोड किए जा सकते हैं। -🎨 निर्मित द्वारा: तोमोमी इमुरा (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) +🎨 बनाया गया: टोमोमी इमुरा (ट्विटर: [@girlie_mac](https://twitter.com/girlie_mac), गिटहब: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -**अस्वीकृति**: -यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ 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/pl/README.md b/translations/pl/README.md new file mode 100644 index 00000000..a04e4b37 --- /dev/null +++ b/translations/pl/README.md @@ -0,0 +1,154 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Sztuczna Inteligencja dla Początkujących - Program Nauczania + +|![ Sketchnote autorstwa [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI For Beginners - _Sketchnote autorstwa [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Odkryj świat **Sztucznej Inteligencji** (AI) dzięki naszemu 12-tygodniowemu programowi nauczania składającemu się z 24 lekcji! Zawiera on praktyczne lekcje, quizy i laboratoria. Program jest przyjazny dla początkujących i obejmuje narzędzia takie jak TensorFlow i PyTorch, a także etykę w AI. + +## Czego się nauczysz + +**[Mapa myśli kursu](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +W tym programie nauczania dowiesz się: + +* Różnych podejść do Sztucznej Inteligencji, w tym "starego dobrego" podejścia symbolicznego z **Reprezentacją Wiedzy** i wnioskowaniem ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Sieci Neuronowych** i **Uczenia Głębokiego**, które są podstawą współczesnej AI. Wyjaśnimy koncepcje stojące za tymi ważnymi tematami, używając kodu w dwóch najpopularniejszych frameworkach - [TensorFlow](http://Tensorflow.org) i [PyTorch](http://pytorch.org). +* **Architektur Neuronowych** do pracy z obrazami i tekstem. Omówimy najnowsze modele, choć mogą one nie obejmować najnowocześniejszych rozwiązań. +* Mniej popularnych podejść do AI, takich jak **Algorytmy Genetyczne** i **Systemy Wieloagentowe**. + +Czego nie omówimy w tym programie nauczania: + +> [Znajdź wszystkie dodatkowe zasoby do tego kursu w naszej kolekcji Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Przypadków biznesowych wykorzystania **AI w Biznesie**. Rozważ skorzystanie z [Wprowadzenia do AI dla użytkowników biznesowych](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn lub [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), opracowanego we współpracy z [INSEAD](https://www.insead.edu/). +* **Klasycznego Uczenia Maszynowego**, które jest dobrze opisane w naszym [Programie Nauczania Uczenia Maszynowego dla Początkujących](http://github.com/Microsoft/ML-for-Beginners). +* Praktycznych zastosowań AI zbudowanych przy użyciu **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. W tym celu zalecamy rozpoczęcie od modułów Microsoft Learn dla [wizji komputerowej](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [przetwarzania języka naturalnego](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generatywnej AI z Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** i innych. +* Specyficznych **Chmurowych Frameworków ML**, takich jak [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) czy [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Rozważ skorzystanie z [Budowania i obsługi rozwiązań uczenia maszynowego z Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) oraz [Budowania i obsługi rozwiązań uczenia maszynowego z Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Konwersacyjnej AI** i **Chatbotów**. Istnieje osobna ścieżka nauczania [Tworzenie rozwiązań AI konwersacyjnej](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), a także możesz zapoznać się z [tym wpisem na blogu](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) po więcej szczegółów. +* **Zaawansowanej Matematyki** stojącej za uczeniem głębokim. W tym celu polecamy książkę [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) autorstwa Iana Goodfellowa, Yoshuy Bengio i Aarona Courville, która jest również dostępna online pod adresem [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Dla łagodnego wprowadzenia do tematów związanych z _AI w Chmurze_ możesz rozważyć skorzystanie z [Rozpocznij pracę ze sztuczną inteligencją na platformie Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn. + +# Zawartość + +| | Link do Lekcji | PyTorch/Keras/TensorFlow | Laboratorium | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Konfiguracja Kursu](./lessons/0-course-setup/setup.md) | [Skonfiguruj swoje środowisko programistyczne](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Wprowadzenie do AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Wprowadzenie i historia AI](./lessons/1-Intro/README.md) | - | - | +| II | **Symboliczna AI** | +| 02 | [Reprezentacja Wiedzy i Systemy Eksperckie](./lessons/2-Symbolic/README.md) | [Systemy Eksperckie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Graf Konceptów](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Wprowadzenie do Sieci Neuronowych**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratorium](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Wielowarstwowy Perceptron i Tworzenie Własnego Frameworka](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratorium](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Wprowadzenie do Frameworków (PyTorch/TensorFlow) i Przeuczenie](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratorium](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Wizja Komputerowa**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Eksploruj Wizję Komputerową na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Wprowadzenie do Wizji Komputerowej. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratorium](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konwolucyjne Sieci Neuronowe](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Architektury CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratorium](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Wstępnie wytrenowane sieci i transfer uczenia](./lessons/4-ComputerVision/08-TransferLearning/README.md) oraz [Triki treningowe](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoenkodery i VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Generatywne sieci przeciwstawne i transfer stylu artystycznego](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Detekcja obiektów](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentacja semantyczna. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Przetwarzanie języka naturalnego**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Poznaj przetwarzanie języka naturalnego na platformie Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Reprezentacja tekstu. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Semantyczne osadzenia słów. Word2Vec i GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelowanie języka. Trening własnych osadzeń](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rekurencyjne sieci neuronowe](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Generatywne sieci rekurencyjne](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformery. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Rozpoznawanie nazwanych encji](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Duże modele językowe, programowanie z użyciem promptów i zadania few-shot](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Inne techniki AI** || | +| 21 | [Algorytmy genetyczne](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Głębokie uczenie przez wzmacnianie](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Systemy wieloagentowe](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etyka AI** | | | +| 24 | [Etyka AI i odpowiedzialna sztuczna inteligencja](./lessons/7-Ethics/README.md) | [Microsoft Learn: Zasady odpowiedzialnej AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Dodatki** | | | +| 25 | [Sieci multimodalne, CLIP i VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Każda lekcja zawiera + +* Materiały do przeczytania przed zajęciami +* Wykonywalne notatniki Jupyter, często specyficzne dla danego frameworka (**PyTorch** lub **TensorFlow**). Notatniki zawierają również dużo materiału teoretycznego, więc aby zrozumieć temat, należy przejść przez co najmniej jedną wersję notatnika (PyTorch lub TensorFlow). +* **Lab** dostępne dla niektórych tematów, które dają możliwość zastosowania zdobytej wiedzy do konkretnego problemu. +* Niektóre sekcje zawierają linki do modułów [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), które obejmują powiązane tematy. + +## Rozpoczęcie pracy + +- Przygotowaliśmy [lekcję wprowadzającą](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), która pomoże Ci skonfigurować środowisko programistyczne. +- Dla edukatorów przygotowaliśmy również [lekcję dotyczącą przygotowania programu nauczania](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Jak [uruchomić kod w VSCode lub Codespace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Wykonaj następujące kroki: + +1. Sforkuj repozytorium: Kliknij przycisk "Fork" w prawym górnym rogu tej strony. +2. Sklonuj repozytorium: `git clone https://github.com/microsoft/AI-For-Beginners.git` +3. Nie zapomnij dodać gwiazdki (🌟) temu repozytorium, aby łatwiej je znaleźć później. + +## Poznaj innych uczących się + +Dołącz do naszego [oficjalnego serwera AI na Discordzie](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), aby poznać i nawiązać kontakt z innymi uczestnikami kursu oraz uzyskać wsparcie. + +Jeśli masz uwagi dotyczące produktu lub pytania podczas budowania, odwiedź nasze [forum deweloperów Azure AI Foundry](https://aka.ms/foundry/forum). + +## Quizy +> **Informacja o quizach**: Wszystkie quizy znajdują się w folderze Quiz-app w etc\quiz-app. Są one powiązane z lekcjami, a aplikację quizową można uruchomić lokalnie lub wdrożyć na platformie Azure; postępuj zgodnie z instrukcjami w folderze `quiz-app`. Quizy są stopniowo lokalizowane. +## Poszukiwani Pomocnicy + +Masz sugestie lub znalazłeś błędy w pisowni albo kodzie? Zgłoś problem lub utwórz pull request. + +## Specjalne Podziękowania + +* **✍️ Główny Autor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Redaktor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrator sketchnotek:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Twórca quizów:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Główni Współtwórcy:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Inne Programy Nauczania + +Nasz zespół tworzy inne programy nauczania! Sprawdź: + +- [Generatywna AI dla Początkujących](https://aka.ms/genai-beginners) +- [Generatywna AI dla Początkujących .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generatywna AI z JavaScriptem](https://github.com/microsoft/generative-ai-with-javascript) +- [Generatywna AI z Javą](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI dla Początkujących](https://aka.ms/ai-beginners) +- [Data Science dla Początkujących](https://aka.ms/datascience-beginners) +- [ML dla Początkujących](https://aka.ms/ml-beginners) +- [Cyberbezpieczeństwo dla Początkujących](https://github.com/microsoft/Security-101) +- [Web Dev dla Początkujących](https://aka.ms/webdev-beginners) +- [IoT dla Początkujących](https://aka.ms/iot-beginners) +- [Rozwój XR dla Początkujących](https://github.com/microsoft/xr-development-for-beginners) +- [Opanowanie GitHub Copilot do Agentowego Użycia](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Opanowanie GitHub Copilot dla Programistów C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Wybierz Swoją Własną Przygodę z Copilotem](https://github.com/microsoft/CopilotAdventures) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/SECURITY.md b/translations/pl/SECURITY.md new file mode 100644 index 00000000..923bd08f --- /dev/null +++ b/translations/pl/SECURITY.md @@ -0,0 +1,49 @@ + +## Bezpieczeństwo + +Microsoft traktuje bezpieczeństwo swoich produktów i usług bardzo poważnie, w tym wszystkich repozytoriów kodu źródłowego zarządzanych w ramach naszych organizacji na GitHub, takich jak [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) oraz [nasze organizacje na GitHub](https://opensource.microsoft.com/). + +Jeśli uważasz, że znalazłeś lukę w zabezpieczeniach w którymkolwiek z repozytoriów należących do Microsoft, która spełnia [definicję luki w zabezpieczeniach według Microsoft](https://aka.ms/opensource/security/definition), zgłoś ją do nas zgodnie z poniższymi instrukcjami. + +## Zgłaszanie problemów z bezpieczeństwem + +**Prosimy, aby nie zgłaszać luk w zabezpieczeniach za pośrednictwem publicznych zgłoszeń na GitHub.** + +Zamiast tego zgłoś je do Microsoft Security Response Center (MSRC) na stronie [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Jeśli wolisz zgłosić problem bez logowania, wyślij wiadomość e-mail na adres [secure@microsoft.com](mailto:secure@microsoft.com). Jeśli to możliwe, zaszyfruj swoją wiadomość za pomocą naszego klucza PGP; możesz go pobrać ze strony [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Powinieneś otrzymać odpowiedź w ciągu 24 godzin. Jeśli z jakiegoś powodu jej nie otrzymasz, prosimy o ponowny kontakt e-mailowy, aby upewnić się, że otrzymaliśmy Twoją pierwotną wiadomość. Dodatkowe informacje można znaleźć na stronie [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Prosimy o dołączenie poniższych informacji (w miarę możliwości), aby pomóc nam lepiej zrozumieć charakter i zakres potencjalnego problemu: + + * Rodzaj problemu (np. przepełnienie bufora, SQL injection, cross-site scripting itp.) + * Pełne ścieżki plików źródłowych związanych z wystąpieniem problemu + * Lokalizacja dotkniętego kodu źródłowego (tag/gałąź/commit lub bezpośredni URL) + * Wszelkie specjalne konfiguracje wymagane do odtworzenia problemu + * Instrukcje krok po kroku, jak odtworzyć problem + * Kod proof-of-concept lub exploit (jeśli to możliwe) + * Wpływ problemu, w tym sposób, w jaki atakujący mógłby wykorzystać lukę + +Te informacje pomogą nam szybciej przeanalizować Twoje zgłoszenie. + +Jeśli zgłaszasz problem w ramach programu nagród za błędy, bardziej szczegółowe raporty mogą przyczynić się do wyższej nagrody. Odwiedź stronę [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty), aby uzyskać więcej informacji o naszych aktywnych programach. + +## Preferowane języki + +Preferujemy, aby cała komunikacja odbywała się w języku angielskim. + +## Polityka + +Microsoft stosuje zasadę [Koordynowanego ujawniania luk w zabezpieczeniach](https://aka.ms/opensource/security/cvd). + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/CODE_OF_CONDUCT.md b/translations/pl/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3163c0b7 --- /dev/null +++ b/translations/pl/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Kodeks postępowania Microsoft Open Source + +Ten projekt przyjął [Kodeks postępowania Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). + +Zasoby: + +- [Kodeks postępowania Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/) +- [FAQ dotyczące Kodeksu postępowania Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- W razie pytań lub wątpliwości skontaktuj się pod adresem [opencode@microsoft.com](mailto:opencode@microsoft.com) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/CONTRIBUTING.md b/translations/pl/etc/CONTRIBUTING.md new file mode 100644 index 00000000..0225f8f6 --- /dev/null +++ b/translations/pl/etc/CONTRIBUTING.md @@ -0,0 +1,36 @@ + +# Współtworzenie + +Ten projekt zaprasza do współtworzenia i składania sugestii. Większość wkładów wymaga od Ciebie +zgody na Umowę Licencyjną Współtwórcy (CLA), która potwierdza, że masz prawo do, +i faktycznie udzielasz nam prawa do korzystania z Twojego wkładu. Szczegóły znajdziesz na stronie +https://cla.microsoft.com. + +Kiedy przesyłasz pull request, bot CLA automatycznie sprawdzi, czy musisz +dostarczyć CLA i odpowiednio oznaczy PR (np. etykieta, komentarz). Wystarczy, że +postąpisz zgodnie z instrukcjami podanymi przez bota. Musisz to zrobić tylko raz dla wszystkich repozytoriów korzystających z naszego CLA. + +Ten projekt przyjął [Kodeks Postępowania Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). +Więcej informacji znajdziesz w [FAQ dotyczących Kodeksu Postępowania](https://opensource.microsoft.com/codeofconduct/faq/) +lub skontaktuj się z [opencode@microsoft.com](mailto:opencode@microsoft.com), jeśli masz dodatkowe pytania lub uwagi. + +# Poszukujemy Wkładów + +Obecnie aktywnie poszukujemy wkładów w następujących obszarach: + +- [ ] Napisanie sekcji o Głębokim Uczeniu Wzmocnionym +- [ ] Udoskonalenie sekcji + notebooka dotyczącego Detekcji Obiektów +- [ ] PyTorch Lightning (dla [tej sekcji](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Napisanie sekcji + przykładów dotyczących Rozpoznawania Nazwanych Jednostek +- [ ] Utworzenie przykładów dla trenowania własnych osadzeń dla [tej sekcji](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/Mindmap.md b/translations/pl/etc/Mindmap.md new file mode 100644 index 00000000..0deda1a1 --- /dev/null +++ b/translations/pl/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# AI + +## [Wprowadzenie do AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definicja AI + - Historia AI + - Podejścia do AI + - Top-down/Symboliczne + - Bottom-up/Neuronalne + - Ewolucyjne + - Synergiczne / Emergentne AI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Symboliczne AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Reprezentacja wiedzy + - [Systemy ekspertowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Semantyczna sieć + +## [Sieci neuronowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Sieci wielowarstwowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Wprowadzenie do frameworków](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Przeuczenie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Wizja komputerowa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Na MS Learn + - [Podstawy AI: Eksploracja wizji komputerowej](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Wizja komputerowa z PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Wizja komputerowa z TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Wprowadzenie do wizji komputerowej. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Sieci konwolucyjne](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Architektury CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Uczenie transferowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Triki treningowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoenkodery i VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generatywne sieci przeciwstawne](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transfer stylu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detekcja obiektów](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentacja](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Przetwarzanie języka naturalnego](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Na MS Learn + - [Podstawy AI: Eksploracja NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP z PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP z TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Reprezentacja tekstu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Semantyczne osadzenia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelowanie języka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurencyjne sieci neuronowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generatywne sieci rekurencyjne](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformery i BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Rozpoznawanie nazwanych jednostek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generowanie tekstu i GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Inne techniki + - [Algorytmy genetyczne](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Głębokie uczenie przez wzmacnianie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Systemy wieloagentowe](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etyka AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn o odpowiedzialnym AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Dodatki + - [Sieci multimodalne](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/SUPPORT.md b/translations/pl/etc/SUPPORT.md new file mode 100644 index 00000000..a7e9c6ec --- /dev/null +++ b/translations/pl/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Wsparcie + +## Jak zgłaszać problemy i uzyskiwać pomoc + +Ten projekt korzysta z GitHub Issues do śledzenia błędów i próśb o nowe funkcje. Przed zgłoszeniem nowego problemu przeszukaj istniejące zgłoszenia, aby uniknąć duplikatów. W przypadku nowych problemów zgłoś swój błąd lub prośbę o funkcję jako nowe zgłoszenie. + +W celu uzyskania pomocy i pytań dotyczących korzystania z tego projektu, skorzystaj z tablic dyskusyjnych. + +## Polityka wsparcia Microsoft + +Wsparcie dla tego projektu jest ograniczone do zasobów wymienionych powyżej. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/TRANSLATIONS.md b/translations/pl/etc/TRANSLATIONS.md new file mode 100644 index 00000000..f3835142 --- /dev/null +++ b/translations/pl/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Współtwórz, tłumacząc lekcje + +Zapraszamy do tłumaczenia lekcji w tym programie nauczania! + +## Wytyczne + +W każdym folderze lekcji oraz folderze wprowadzenia do lekcji znajdują się pliki markdown z tłumaczeniami. + +> Uwaga, prosimy nie tłumaczyć żadnego kodu w plikach z przykładami kodu; jedyne rzeczy do przetłumaczenia to README, zadania i quizy. Dziękujemy! + +Przetłumaczone pliki powinny być nazwane według następującego schematu: + +**README._[language]_.md** + +gdzie _[language]_ to dwuliterowy kod języka zgodny ze standardem ISO 639-1 (np. `README.es.md` dla hiszpańskiego i `README.nl.md` dla niderlandzkiego). + +**assignment._[language]_.md** + +Podobnie jak README, prosimy o tłumaczenie również zadań. + +**Quizy** + +1. Dodaj swoje tłumaczenie do aplikacji quizowej, dodając plik tutaj: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, stosując odpowiedni schemat nazewnictwa (en.json, fr.json). **Prosimy, nie lokalizuj słów 'true' ani 'false'. Dziękujemy!** + +2. Dodaj kod swojego języka do rozwijanego menu w pliku App.vue aplikacji quizowej. + +3. Edytuj [plik index.js tłumaczeń](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) aplikacji quizowej, aby dodać swój język. + +4. Na koniec edytuj WSZYSTKIE linki do quizów w przetłumaczonych plikach README.md, aby wskazywały bezpośrednio na przetłumaczony quiz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 zmienia się na https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**DZIĘKUJEMY** + +Naprawdę doceniamy Twój wysiłek! + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/etc/quiz-app/README.md b/translations/pl/etc/quiz-app/README.md new file mode 100644 index 00000000..576a1492 --- /dev/null +++ b/translations/pl/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# Quizy + +Te quizy to quizy przed i po wykładach w ramach programu nauczania AI dostępnego na https://aka.ms/ai-beginners + +## Dodawanie przetłumaczonego zestawu quizów + +Dodaj tłumaczenie quizu, tworząc odpowiadające struktury quizów w folderach `assets/translations`. Kanoniczne quizy znajdują się w `assets/translations/en`. Quizy są podzielone na kilka grup według lekcji. Upewnij się, że numeracja jest zgodna z odpowiednią sekcją quizu. W całym programie nauczania znajduje się 40 quizów, a numeracja zaczyna się od 0. + +Po edycji tłumaczeń, edytuj plik index.js w folderze tłumaczeń, aby zaimportować wszystkie pliki zgodnie z konwencjami w `en`. + +Edytuj plik `index.js` w `assets/translations`, aby zaimportować nowe przetłumaczone pliki. + +Następnie edytuj rozwijane menu w `App.vue` w tej aplikacji, aby dodać swój język. Dopasuj lokalizowaną skróconą nazwę do nazwy folderu dla swojego języka. + +Na koniec edytuj wszystkie linki do quizów w przetłumaczonych lekcjach, jeśli istnieją, aby dodać tę lokalizację jako parametr zapytania: `?loc=fr` na przykład. + +## Konfiguracja projektu + +``` +npm install +``` + +### Kompilacja i automatyczne odświeżanie dla rozwoju + +``` +npm run serve +``` + +### Kompilacja i minimalizacja dla produkcji + +``` +npm run build +``` + +### Lintowanie i poprawianie plików + +``` +npm run lint +``` + +### Dostosowanie konfiguracji + +Zobacz [Configuration Reference](https://cli.vuejs.org/config/). + +Podziękowania: Podziękowania dla oryginalnej wersji tej aplikacji quizowej: https://github.com/arpan45/simple-quiz-vue + +## Wdrażanie na Azure + +Oto przewodnik krok po kroku, który pomoże Ci zacząć: + +1. Forkowanie repozytorium GitHub +Upewnij się, że kod Twojej aplikacji statycznej znajduje się w Twoim repozytorium GitHub. Zrób fork tego repozytorium. + +2. Utwórz statyczną aplikację webową na Azure +- Utwórz [konto Azure](http://azure.microsoft.com) +- Przejdź do [portalu Azure](https://portal.azure.com) +- Kliknij „Utwórz zasób” i wyszukaj „Static Web App”. +- Kliknij „Utwórz”. + +3. Konfiguracja statycznej aplikacji webowej +- Podstawowe: Subskrypcja: Wybierz swoją subskrypcję Azure. +- Grupa zasobów: Utwórz nową grupę zasobów lub użyj istniejącej. +- Nazwa: Podaj nazwę dla swojej statycznej aplikacji webowej. +- Region: Wybierz region najbliższy Twoim użytkownikom. + +- #### Szczegóły wdrożenia: +- Źródło: Wybierz „GitHub”. +- Konto GitHub: Autoryzuj Azure do uzyskania dostępu do Twojego konta GitHub. +- Organizacja: Wybierz swoją organizację GitHub. +- Repozytorium: Wybierz repozytorium zawierające kod Twojej statycznej aplikacji webowej. +- Gałąź: Wybierz gałąź, z której chcesz wdrażać. + +- #### Szczegóły kompilacji: +- Presety kompilacji: Wybierz framework, na którym oparta jest Twoja aplikacja (np. React, Angular, Vue, itd.). +- Lokalizacja aplikacji: Określ folder zawierający kod Twojej aplikacji (np. / jeśli znajduje się w głównym katalogu). +- Lokalizacja API: Jeśli masz API, określ jego lokalizację (opcjonalne). +- Lokalizacja wyników: Określ folder, w którym generowane są wyniki kompilacji (np. build lub dist). + +4. Przegląd i utworzenie +Przejrzyj swoje ustawienia i kliknij „Utwórz”. Azure skonfiguruje niezbędne zasoby i utworzy plik workflow GitHub Actions w Twoim repozytorium. + +5. Workflow GitHub Actions +Azure automatycznie utworzy plik workflow GitHub Actions w Twoim repozytorium (.github/workflows/azure-static-web-apps-.yml). Ten workflow zajmie się procesem kompilacji i wdrożenia. + +6. Monitorowanie wdrożenia +Przejdź do zakładki „Actions” w swoim repozytorium GitHub. +Powinieneś zobaczyć uruchomiony workflow. Ten workflow skompiluje i wdroży Twoją statyczną aplikację webową na Azure. +Po zakończeniu workflow Twoja aplikacja będzie dostępna pod podanym URL-em Azure. + +### Przykładowy plik workflow + +Oto przykład, jak może wyglądać plik workflow GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Dodatkowe zasoby +- [Dokumentacja Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentacja GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/0-course-setup/for-teachers.md b/translations/pl/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..550f893e --- /dev/null +++ b/translations/pl/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Dla Edukatorów + +Chcesz wykorzystać ten program nauczania w swojej klasie? Śmiało, zapraszamy! + +W rzeczywistości możesz używać go bezpośrednio w GitHub, korzystając z GitHub Classroom. + +Aby to zrobić, zrób fork tego repozytorium. Będziesz musiał utworzyć repozytorium dla każdej lekcji, więc konieczne będzie wyodrębnienie każdego folderu do osobnego repozytorium. Dzięki temu [GitHub Classroom](https://classroom.github.com/classrooms) będzie mógł obsłużyć każdą lekcję oddzielnie. + +Te [pełne instrukcje](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) pokażą Ci, jak skonfigurować swoją klasę. + +## Korzystanie z repozytorium w obecnej formie + +Jeśli chcesz korzystać z tego repozytorium w jego obecnej formie, bez użycia GitHub Classroom, również jest to możliwe. Musisz poinformować swoich uczniów, którą lekcję mają wspólnie przerobić. + +W formacie online (Zoom, Teams lub inne) możesz utworzyć pokoje grupowe na quizy i mentorować uczniów, aby przygotowali się do nauki. Następnie zaproś uczniów do udziału w quizach i przesyłania odpowiedzi jako 'issues' w określonym czasie. Możesz zrobić to samo z zadaniami, jeśli chcesz, aby uczniowie pracowali wspólnie w otwartej przestrzeni. + +Jeśli wolisz bardziej prywatny format, poproś uczniów, aby zrobili fork programu nauczania, lekcja po lekcji, do swoich własnych prywatnych repozytoriów GitHub i dali Ci dostęp. Wtedy mogą wykonywać quizy i zadania prywatnie, przesyłając je do Ciebie jako 'issues' w repozytorium Twojej klasy. + +Istnieje wiele sposobów, aby to działało w formacie klasy online. Daj nam znać, co działa najlepiej dla Ciebie! + +## Prosimy o Twoje opinie + +Chcemy, aby ten program nauczania był jak najbardziej użyteczny dla Ciebie i Twoich uczniów. Podziel się z nami swoimi uwagami na forach dyskusyjnych! + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/0-course-setup/how-to-run.md b/translations/pl/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..85fbf70a --- /dev/null +++ b/translations/pl/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Jak uruchomić kod + +Ten kurs zawiera wiele przykładów do wykonania oraz laboratoriów, które możesz chcieć uruchomić. Aby to zrobić, musisz mieć możliwość wykonywania kodu Python w Jupyter Notebooks, które są częścią tego kursu. Masz kilka opcji uruchamiania kodu: + +## Uruchamianie lokalnie na swoim komputerze + +Aby uruchomić kod lokalnie na swoim komputerze, musisz mieć zainstalowaną jakąś wersję Pythona. Osobiście polecam zainstalowanie **[miniconda](https://conda.io/en/latest/miniconda.html)** – to lekka instalacja, która obsługuje menedżera pakietów `conda` dla różnych **wirtualnych środowisk** Pythona. + +Po zainstalowaniu minicondy musisz sklonować repozytorium i utworzyć wirtualne środowisko, które będzie używane w tym kursie: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Korzystanie z Visual Studio Code z rozszerzeniem Python + +Prawdopodobnie najlepszym sposobem korzystania z kursu jest otwarcie go w [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) z [rozszerzeniem Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note**: Po sklonowaniu i otwarciu katalogu w VS Code, program automatycznie zasugeruje zainstalowanie rozszerzeń Pythona. Będziesz także musiał zainstalować minicondę, jak opisano powyżej. + +> **Note**: Jeśli VS Code zasugeruje otwarcie repozytorium w kontenerze, musisz to odrzucić, aby używać lokalnej instalacji Pythona. + +### Korzystanie z Jupyter w przeglądarce + +Możesz również korzystać ze środowiska Jupyter bezpośrednio w przeglądarce na swoim komputerze. Zarówno klasyczny Jupyter, jak i Jupyter Hub oferują wygodne środowisko programistyczne z autouzupełnianiem, podświetlaniem kodu itp. + +Aby uruchomić Jupyter lokalnie, przejdź do katalogu kursu i wykonaj: + +```bash +jupyter notebook +``` +lub +```bash +jupyterhub +``` +Następnie możesz przejść do dowolnego pliku `.ipynb`, otworzyć go i zacząć pracę. + +### Uruchamianie w kontenerze + +Alternatywą dla instalacji Pythona może być uruchamianie kodu w kontenerze. Ponieważ nasze repozytorium zawiera specjalny folder `.devcontainer`, który określa, jak zbudować kontener dla tego repozytorium, VS Code zaproponuje otwarcie kodu w kontenerze. Wymaga to instalacji Dockera i jest bardziej skomplikowane, więc polecamy to bardziej zaawansowanym użytkownikom. + +## Uruchamianie w chmurze + +Jeśli nie chcesz instalować Pythona lokalnie i masz dostęp do zasobów w chmurze, dobrą alternatywą jest uruchamianie kodu w chmurze. Istnieje kilka sposobów, aby to zrobić: + +* Korzystanie z **[GitHub Codespaces](https://github.com/features/codespaces)**, które jest wirtualnym środowiskiem utworzonym dla Ciebie na GitHubie, dostępnym przez interfejs przeglądarkowy VS Code. Jeśli masz dostęp do Codespaces, wystarczy kliknąć przycisk **Code** w repozytorium, uruchomić Codespace i zacząć pracę w mgnieniu oka. +* Korzystanie z **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) to darmowe zasoby obliczeniowe w chmurze, które pozwalają testować kod z GitHuba. Na stronie głównej repozytorium znajdziesz przycisk do otwarcia go w Binderze – szybko przeniesie Cię na stronę Bindera, która zbuduje kontener i uruchomi interfejs Jupyter w przeglądarce. + +> **Note**: Aby zapobiec nadużyciom, Binder ma zablokowany dostęp do niektórych zasobów sieciowych. Może to uniemożliwić działanie kodu, który pobiera modele i/lub zestawy danych z publicznego Internetu. Może być konieczne znalezienie obejść. Ponadto zasoby obliczeniowe Bindera są dość podstawowe, więc trening będzie wolny, szczególnie w późniejszych, bardziej złożonych lekcjach. + +## Uruchamianie w chmurze z obsługą GPU + +Niektóre z późniejszych lekcji w tym kursie znacznie skorzystają z obsługi GPU, ponieważ w przeciwnym razie trening będzie bardzo wolny. Istnieje kilka opcji, szczególnie jeśli masz dostęp do chmury, na przykład przez [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) lub swoją instytucję: + +* Utwórz [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) i połącz się z nią przez Jupyter. Możesz wtedy sklonować repozytorium bezpośrednio na maszynę i rozpocząć naukę. Maszyny w serii NC mają obsługę GPU. + +> **Note**: Niektóre subskrypcje, w tym Azure for Students, nie oferują obsługi GPU od razu. Może być konieczne złożenie wniosku o dodatkowe rdzenie GPU przez zgłoszenie do pomocy technicznej. + +* Utwórz [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste), a następnie skorzystaj z funkcji Notebook. [Ten film](https://azure-for-academics.github.io/quickstart/azureml-papers/) pokazuje, jak sklonować repozytorium do notatnika Azure ML i zacząć z niego korzystać. + +Możesz także skorzystać z Google Colab, który oferuje darmową obsługę GPU, i przesłać tam Jupyter Notebooks, aby wykonywać je krok po kroku. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/0-course-setup/setup.md b/translations/pl/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..01b0ee30 --- /dev/null +++ b/translations/pl/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Rozpoczęcie pracy z tym programem nauczania + +## Jesteś studentem? + +Rozpocznij od następujących zasobów: + +* [Strona Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Na tej stronie znajdziesz materiały dla początkujących, pakiety dla studentów, a nawet sposoby na zdobycie darmowego vouchera certyfikacyjnego. To strona, którą warto dodać do zakładek i sprawdzać od czasu do czasu, ponieważ co najmniej raz w miesiącu zmieniamy zawartość. +* [Microsoft Student Learn Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Dołącz do globalnej społeczności ambasadorów studenckich – to może być Twoja droga do Microsoftu. + +**Studenci**, istnieje kilka sposobów korzystania z programu nauczania. Po pierwsze, możesz po prostu przeczytać tekst i przejrzeć kod bezpośrednio na GitHubie. Jeśli chcesz uruchomić kod w którymkolwiek z notebooków - [przeczytaj nasze instrukcje](./etc/how-to-run.md) i znajdź więcej wskazówek, jak to zrobić [w tym wpisie na blogu](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Instrukcje dotyczące uruchamiania kodu w tym programie nauczania](./how-to-run.md) + +## Samodzielna nauka + +Jeśli jednak chciałbyś potraktować kurs jako projekt samodzielnej nauki, sugerujemy, abyś sforkował całe repozytorium na swoje konto GitHub i samodzielnie lub w grupie ukończył ćwiczenia: + +* Rozpocznij od quizu przed wykładem. +* Przeczytaj wstępny tekst do wykładu. +* Jeśli wykład zawiera dodatkowe notebooki, przejdź przez nie, czytając i uruchamiając kod. Jeśli dostępne są notebooki zarówno dla TensorFlow, jak i PyTorch, możesz skupić się na jednym z nich – wybierz ulubione środowisko. +* Notebooki często zawierają wyzwania, które wymagają od Ciebie modyfikacji kodu, aby eksperymentować. +* Rozwiąż quiz po wykładzie. +* Jeśli moduł zawiera laboratorium – wykonaj zadanie. +* Odwiedź [Forum dyskusyjne](https://github.com/microsoft/AI-For-Beginners/discussions), aby "uczyć się na głos". + +> Do dalszej nauki polecamy następujące moduły i ścieżki edukacyjne [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Nauczyciele**, [zamieściliśmy kilka sugestii](/for-teachers.md) dotyczących wykorzystania tego programu nauczania. + +--- + +## Pedagogika + +Podczas tworzenia tego programu nauczania wybraliśmy dwie zasady pedagogiczne: zapewnienie, że jest on **oparty na projektach** i że zawiera **częste quizy**. + +Dzięki powiązaniu treści z projektami proces staje się bardziej angażujący dla studentów, a przyswajanie koncepcji zostaje wzmocnione. Ponadto quiz o niskim poziomie trudności przed zajęciami ukierunkowuje uwagę studenta na naukę danego tematu, a drugi quiz po zajęciach zapewnia dalsze utrwalenie wiedzy. Ten program nauczania został zaprojektowany tak, aby był elastyczny i przyjemny, i można go realizować w całości lub częściowo. Projekty zaczynają się od prostych i stają się coraz bardziej złożone pod koniec 12-tygodniowego cyklu. + +> **Uwaga dotycząca quizów**: Wszystkie quizy znajdują się [w tej aplikacji](https://red-field-0a6ddfd03.1.azurestaticapps.net/), łącznie 50 quizów po trzy pytania każdy. Są one powiązane z lekcjami, ale aplikację quizową można uruchomić lokalnie; postępuj zgodnie z instrukcjami w folderze `etc/quiz-app`. + +## Dostęp offline + +Możesz uruchomić tę dokumentację offline, korzystając z [Docsify](https://docsify.js.org/#/). Sforkuj to repozytorium, [zainstaluj Docsify](https://docsify.js.org/#/quickstart) na swoim komputerze lokalnym, a następnie w katalogu głównym tego repozytorium wpisz `docsify serve`. Strona internetowa zostanie uruchomiona na porcie 3000 na Twoim localhost: `localhost:3000`. Dostępny jest również plik PDF programu nauczania [pod tym linkiem](../../../../../../../../../etc/pdf/readme.pdf). + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/1-Intro/README.md b/translations/pl/lessons/1-Intro/README.md new file mode 100644 index 00000000..beb80afc --- /dev/null +++ b/translations/pl/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Zdjęcie autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +Z biegiem czasu zasoby obliczeniowe stały się tańsze, a dostęp do większej ilości danych umożliwił podejściom opartym na sieciach neuronowych osiąganie znakomitych wyników w rywalizacji z ludźmi w wielu dziedzinach, takich jak rozpoznawanie obrazów czy rozumienie mowy. W ostatniej dekadzie termin Sztuczna Inteligencja był często używany jako synonim sieci neuronowych, ponieważ większość sukcesów AI, o których słyszymy, opiera się właśnie na nich. + +Możemy zaobserwować, jak zmieniały się podejścia, na przykład w tworzeniu programu komputerowego grającego w szachy: + +* Wczesne programy szachowe opierały się na wyszukiwaniu – program próbował oszacować możliwe ruchy przeciwnika na określoną liczbę kolejnych ruchów i wybierał optymalny ruch na podstawie najlepszej pozycji, którą można osiągnąć w kilku ruchach. Doprowadziło to do opracowania tzw. algorytmu wyszukiwania [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Strategie wyszukiwania dobrze sprawdzają się pod koniec gry, gdy przestrzeń wyszukiwania jest ograniczona przez niewielką liczbę możliwych ruchów. Jednak na początku gry przestrzeń wyszukiwania jest ogromna, a algorytm można ulepszyć, ucząc się na podstawie istniejących partii rozegranych przez ludzi. Kolejne eksperymenty wykorzystywały tzw. [rozumowanie oparte na przypadkach](https://en.wikipedia.org/wiki/Case-based_reasoning), gdzie program szukał przypadków w bazie wiedzy bardzo podobnych do obecnej pozycji w grze. +* Nowoczesne programy, które pokonują ludzkich graczy, opierają się na sieciach neuronowych i [uczeniu przez wzmacnianie](https://en.wikipedia.org/wiki/Reinforcement_learning), gdzie programy uczą się grać wyłącznie poprzez wielokrotne rozgrywanie partii przeciwko sobie i uczenie się na własnych błędach – podobnie jak ludzie uczą się grać w szachy. Jednak program komputerowy może rozegrać znacznie więcej partii w znacznie krótszym czasie, dzięki czemu uczy się szybciej. + +✅ Zrób małe badanie na temat innych gier, w które grały systemy AI. + +Podobnie możemy zaobserwować, jak zmieniało się podejście do tworzenia „programów rozmawiających” (które mogłyby przejść test Turinga): + +* Wczesne programy tego typu, takie jak [Eliza](https://en.wikipedia.org/wiki/ELIZA), opierały się na bardzo prostych regułach gramatycznych i przekształcaniu zdania wejściowego w pytanie. +* Nowoczesne asystenty, takie jak Cortana, Siri czy Google Assistant, to systemy hybrydowe, które wykorzystują sieci neuronowe do konwersji mowy na tekst i rozpoznawania naszych intencji, a następnie stosują pewne rozumowanie lub algorytmy do wykonania wymaganych działań. +* W przyszłości możemy spodziewać się pełnego modelu opartego na sieciach neuronowych, który samodzielnie będzie obsługiwał dialog. Ostatnie sieci neuronowe z rodziny GPT i [Turing-NLG](https://turing.microsoft.com/) pokazują w tym zakresie duże sukcesy. + +> Zdjęcie autorstwa Dmitry Soshnikov, [zdjęcie](https://unsplash.com/photos/r8LmVbUKgns) autorstwa [Mariny Abrosimovej](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Najnowsze badania nad sztuczną inteligencją + +Ogromny wzrost badań nad sieciami neuronowymi rozpoczął się około 2010 roku, kiedy zaczęły być dostępne duże publiczne zbiory danych. Ogromna kolekcja obrazów o nazwie [ImageNet](https://en.wikipedia.org/wiki/ImageNet), zawierająca około 14 milionów oznaczonych obrazów, dała początek [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Dokładność ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Zdjęcie autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +W 2012 roku [konwolucyjne sieci neuronowe](../4-ComputerVision/07-ConvNets/README.md) zostały po raz pierwszy zastosowane w klasyfikacji obrazów, co doprowadziło do znacznego spadku błędów klasyfikacji (z prawie 30% do 16,4%). W 2015 roku architektura ResNet opracowana przez Microsoft Research [osiągnęła dokładność na poziomie ludzkim](https://doi.org/10.1109/ICCV.2015.123). + +Od tego czasu sieci neuronowe wykazały bardzo wysoką skuteczność w wielu zadaniach: + +--- + +Rok | Osiągnięcie parytetu z człowiekiem +-----|-------- +2015 | [Klasyfikacja obrazów](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Rozpoznawanie mowy konwersacyjnej](https://arxiv.org/abs/1610.05256) +2018 | [Automatyczne tłumaczenie maszynowe](https://arxiv.org/abs/1803.05567) (z chińskiego na angielski) +2020 | [Opisywanie obrazów](https://arxiv.org/abs/2009.13682) + +W ostatnich latach byliśmy świadkami ogromnych sukcesów dużych modeli językowych, takich jak BERT i GPT-3. Stało się to głównie dzięki temu, że dostępnych jest wiele ogólnych danych tekstowych, które pozwalają trenować modele w celu uchwycenia struktury i znaczenia tekstów, wstępnie trenować je na ogólnych zbiorach tekstów, a następnie specjalizować te modele do bardziej specyficznych zadań. Więcej o [przetwarzaniu języka naturalnego](../5-NLP/README.md) dowiemy się później w tym kursie. + +## 🚀 Wyzwanie + +Przeprowadź badanie w internecie, aby określić, gdzie Twoim zdaniem sztuczna inteligencja jest najskuteczniej wykorzystywana. Czy jest to aplikacja mapowa, usługa zamiany mowy na tekst, czy może gra wideo? Zbadaj, jak został zbudowany ten system. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Przegląd i samodzielna nauka + +Przejrzyj historię AI i ML, czytając [tę lekcję](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Wybierz element z notatki wizualnej na początku tej lekcji lub tej i zbadaj go bardziej szczegółowo, aby zrozumieć kontekst kulturowy, który wpłynął na jego rozwój. + +**Zadanie domowe**: [Game Jam](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/1-Intro/assignment.md b/translations/pl/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..e1373529 --- /dev/null +++ b/translations/pl/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Gry to dziedzina, która została mocno wpłynięta przez rozwój AI i ML. W tym zadaniu napisz krótką pracę na temat gry, którą lubisz, a która została ukształtowana przez ewolucję sztucznej inteligencji. Powinna to być gra na tyle stara, aby była pod wpływem różnych typów systemów przetwarzania komputerowego. Dobrym przykładem jest szachy lub Go, ale warto również przyjrzeć się grom wideo, takim jak Pong czy Pac-Man. Napisz esej omawiający przeszłość, teraźniejszość i przyszłość AI w kontekście tej gry. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/2-Symbolic/README.md b/translations/pl/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..0a7a5cba --- /dev/null +++ b/translations/pl/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Reprezentacja wiedzy i systemy ekspertowe + +![Podsumowanie treści o Symbolic AI](../../../../lessons/sketchnotes/ai-symbolic.png) + +> Sketchnotka autorstwa [Tomomi Imura](https://twitter.com/girlie_mac) + +Dążenie do stworzenia sztucznej inteligencji opiera się na poszukiwaniu wiedzy, aby zrozumieć świat w sposób podobny do ludzi. Ale jak można to osiągnąć? + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +W początkowych dniach rozwoju AI popularne było podejście odgórne do tworzenia inteligentnych systemów (omówione w poprzedniej lekcji). Polegało ono na wydobywaniu wiedzy od ludzi w formie czytelnej dla maszyn, a następnie wykorzystywaniu jej do automatycznego rozwiązywania problemów. To podejście opierało się na dwóch kluczowych ideach: + +* Reprezentacja wiedzy +* Wnioskowanie + +## Reprezentacja wiedzy + +Jednym z ważnych pojęć w Symbolic AI jest **wiedza**. Ważne jest, aby odróżnić wiedzę od *informacji* czy *danych*. Na przykład można powiedzieć, że książki zawierają wiedzę, ponieważ można je studiować i stać się ekspertem. Jednak to, co zawierają książki, to w rzeczywistości *dane*, a czytając książki i integrując te dane z naszym modelem świata, przekształcamy je w wiedzę. + +> ✅ **Wiedza** to coś, co znajduje się w naszej głowie i reprezentuje nasze rozumienie świata. Jest zdobywana w wyniku aktywnego procesu **uczenia się**, który integruje otrzymywane informacje z naszym aktywnym modelem świata. + +Najczęściej nie definiujemy wiedzy w sposób ścisły, ale porównujemy ją z innymi powiązanymi pojęciami za pomocą [Piramidy DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Zawiera ona następujące poziomy: + +* **Dane** to coś reprezentowanego na nośnikach fizycznych, takich jak tekst pisany czy słowa mówione. Dane istnieją niezależnie od ludzi i mogą być przekazywane między nimi. +* **Informacja** to sposób, w jaki interpretujemy dane w naszej głowie. Na przykład, gdy słyszymy słowo *komputer*, mamy pewne wyobrażenie, czym ono jest. +* **Wiedza** to informacja zintegrowana z naszym modelem świata. Na przykład, gdy nauczymy się, czym jest komputer, zaczynamy mieć pewne pojęcie o tym, jak działa, ile kosztuje i do czego można go używać. Ta sieć powiązanych pojęć tworzy naszą wiedzę. +* **Mądrość** to jeszcze wyższy poziom rozumienia świata, reprezentujący *meta-wiedzę*, np. wiedzę o tym, jak i kiedy używać posiadanej wiedzy. + +*Obraz [z Wikipedii](https://commons.wikimedia.org/w/index.php?curid=37705247), autorstwa Longlivetheux - własna praca, CC BY-SA 4.0* + +W związku z tym problem **reprezentacji wiedzy** polega na znalezieniu skutecznego sposobu reprezentowania wiedzy w komputerze w formie danych, aby mogła być automatycznie wykorzystywana. Można to zobrazować jako spektrum: + +![Spektrum reprezentacji wiedzy](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) + +> Obraz autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +* Po lewej stronie znajdują się bardzo proste typy reprezentacji wiedzy, które mogą być efektywnie wykorzystywane przez komputery. Najprostszą formą jest algorytmiczna, gdzie wiedza jest reprezentowana przez program komputerowy. Nie jest to jednak najlepszy sposób reprezentacji wiedzy, ponieważ nie jest elastyczny. Wiedza w naszej głowie często nie ma charakteru algorytmicznego. +* Po prawej stronie znajdują się reprezentacje takie jak tekst naturalny. Jest to najbardziej zaawansowana forma, ale nie nadaje się do automatycznego wnioskowania. + +> ✅ Zastanów się przez chwilę, jak reprezentujesz wiedzę w swojej głowie i przekształcasz ją w notatki. Czy istnieje jakiś format, który szczególnie dobrze wspiera Twoją pamięć? + +## Klasyfikacja reprezentacji wiedzy w komputerach + +Różne metody reprezentacji wiedzy w komputerach można sklasyfikować w następujące kategorie: + +* **Reprezentacje sieciowe** opierają się na fakcie, że w naszej głowie mamy sieć powiązanych pojęć. Możemy próbować odtworzyć te same sieci w formie grafu w komputerze - tzw. **sieć semantyczna**. + +1. **Trójki Obiekt-Atrybut-Wartość** lub **pary atrybut-wartość**. Ponieważ graf można reprezentować w komputerze jako listę węzłów i krawędzi, sieć semantyczną można przedstawić jako listę trójek zawierających obiekty, atrybuty i wartości. Na przykład, możemy stworzyć następujące trójki o językach programowania: + +Obiekt | Atrybut | Wartość +-------|---------|-------- +Python | jest | Językiem nietypowanym +Python | wynaleziony przez | Guido van Rossum +Python | składnia blokowa | wcięcia +Język nietypowany | nie posiada | definicji typów + +> ✅ Pomyśl, jak trójki mogą być używane do reprezentowania innych rodzajów wiedzy. + +2. **Reprezentacje hierarchiczne** podkreślają fakt, że często tworzymy hierarchię obiektów w naszej głowie. Na przykład wiemy, że kanarek to ptak, a wszystkie ptaki mają skrzydła. Mamy też pewne wyobrażenie o kolorze kanarka i jego prędkości lotu. + + - **Reprezentacja ramowa** opiera się na reprezentowaniu każdego obiektu lub klasy obiektów jako **ramy**, która zawiera **sloty**. Sloty mogą mieć domyślne wartości, ograniczenia wartości lub procedury, które można wywołać, aby uzyskać wartość slotu. Wszystkie ramy tworzą hierarchię podobną do hierarchii obiektów w językach programowania obiektowego. + - **Scenariusze** to specjalny rodzaj ram, które reprezentują złożone sytuacje rozwijające się w czasie. + +**Python** + +Slot | Wartość | Wartość domyślna | Przedział | +-----|---------|------------------|-----------| +Nazwa | Python | | | +Jest-A | Język nietypowany | | | +Wielkość zmiennych | | CamelCase | | +Długość programu | | | 5-5000 linii | +Składnia blokowa | Wcięcia | | | + +3. **Reprezentacje proceduralne** opierają się na reprezentowaniu wiedzy jako listy działań, które można wykonać, gdy wystąpi określony warunek. + - Reguły produkcji to instrukcje typu "jeśli-to", które pozwalają wyciągać wnioski. Na przykład lekarz może mieć regułę mówiącą, że **JEŚLI** pacjent ma wysoką gorączkę **LUB** wysoki poziom białka C-reaktywnego w badaniu krwi, **TO** ma stan zapalny. Gdy napotkamy jeden z warunków, możemy wyciągnąć wniosek o stanie zapalnym, a następnie użyć go w dalszym wnioskowaniu. + - Algorytmy można uznać za inną formę reprezentacji proceduralnej, choć prawie nigdy nie są używane bezpośrednio w systemach opartych na wiedzy. + +4. **Logika** została pierwotnie zaproponowana przez Arystotelesa jako sposób reprezentowania uniwersalnej wiedzy ludzkiej. + - Logika predykatów jako teoria matematyczna jest zbyt bogata, aby była obliczalna, dlatego zwykle używa się jej podzbioru, takiego jak klauzule Horna używane w Prologu. + - Logika deskrypcyjna to rodzina systemów logicznych używanych do reprezentowania i wnioskowania o hierarchiach obiektów w rozproszonych reprezentacjach wiedzy, takich jak *sieć semantyczna*. + +## Systemy ekspertowe + +Jednym z wczesnych sukcesów Symbolic AI były tzw. **systemy ekspertowe** - systemy komputerowe zaprojektowane do działania jako ekspert w ograniczonej dziedzinie problemowej. Opierały się na **bazie wiedzy** wydobytej od jednego lub więcej ludzkich ekspertów i zawierały **silnik wnioskowania**, który przeprowadzał pewne wnioskowanie na jej podstawie. + +![Architektura człowieka](../../../../lessons/2-Symbolic/images/arch-human.png) | ![System oparty na wiedzy](../../../../lessons/2-Symbolic/images/arch-kbs.png) +---------------------------------------------|----------------------------------------------- +Uproszczona struktura ludzkiego układu nerwowego | Architektura systemu opartego na wiedzy + +Systemy ekspertowe są zbudowane podobnie jak ludzki system wnioskowania, który zawiera **pamięć krótkotrwałą** i **pamięć długotrwałą**. Podobnie w systemach opartych na wiedzy wyróżniamy następujące komponenty: + +* **Pamięć problemu**: zawiera wiedzę o aktualnie rozwiązywanym problemie, np. temperaturę lub ciśnienie krwi pacjenta, czy ma stan zapalny, itp. Ta wiedza nazywana jest również **wiedzą statyczną**, ponieważ zawiera migawkę tego, co obecnie wiemy o problemie - tzw. *stan problemu*. +* **Baza wiedzy**: reprezentuje wiedzę długoterminową o dziedzinie problemowej. Jest ręcznie wydobywana od ludzkich ekspertów i nie zmienia się między konsultacjami. Ponieważ pozwala nawigować między stanami problemu, nazywana jest również **wiedzą dynamiczną**. +* **Silnik wnioskowania**: koordynuje cały proces przeszukiwania przestrzeni stanów problemu, zadając pytania użytkownikowi, gdy jest to konieczne. Odpowiada również za znajdowanie odpowiednich reguł do zastosowania w każdym stanie. + +Na przykład rozważmy następujący system ekspertowy do określania zwierzęcia na podstawie jego cech fizycznych: + +![Drzewo AND-OR](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) + +> Obraz autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +Ten diagram nazywa się **drzewem AND-OR** i jest graficzną reprezentacją zestawu reguł produkcji. Rysowanie drzewa jest przydatne na początku procesu wydobywania wiedzy od eksperta. Aby reprezentować wiedzę w komputerze, wygodniej jest używać reguł: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +Możesz zauważyć, że każdy warunek po lewej stronie reguły i akcja to w istocie trójki obiekt-atrybut-wartość (OAV). **Pamięć robocza** zawiera zestaw trójek OAV odpowiadających aktualnie rozwiązywanemu problemowi. **Silnik reguł** szuka reguł, dla których warunek jest spełniony, i stosuje je, dodając kolejną trójkę do pamięci roboczej. + +> ✅ Narysuj własne drzewo AND-OR na temat, który Cię interesuje! + +### Wnioskowanie w przód vs. wnioskowanie wstecz + +Opisany powyżej proces nazywa się **wnioskowaniem w przód**. Zaczyna się od pewnych początkowych danych o problemie dostępnych w pamięci roboczej, a następnie wykonuje następującą pętlę wnioskowania: + +1. Jeśli docelowy atrybut jest obecny w pamięci roboczej - zatrzymaj się i podaj wynik +2. Poszukaj wszystkich reguł, których warunek jest obecnie spełniony - uzyskaj **zestaw konfliktów** reguł. +3. Wykonaj **rozwiązanie konfliktu** - wybierz jedną regułę, która zostanie wykonana w tym kroku. Mogą istnieć różne strategie rozwiązywania konfliktów: + - Wybierz pierwszą pasującą regułę w bazie wiedzy + - Wybierz losową regułę + - Wybierz *bardziej szczegółową* regułę, tj. taką, która spełnia najwięcej warunków po stronie "lewej" (LHS) +4. Zastosuj wybraną regułę i wprowadź nowy element wiedzy do stanu problemu +5. Powtórz od kroku 1. + +Jednak w niektórych przypadkach możemy chcieć zacząć od braku wiedzy o problemie i zadawać pytania, które pomogą nam dojść do wniosku. Na przykład podczas diagnozy medycznej zwykle nie wykonujemy wszystkich analiz medycznych z góry przed rozpoczęciem diagnozowania pacjenta. Raczej chcemy przeprowadzać analizy, gdy trzeba podjąć decyzję. + +Ten proces można modelować za pomocą **wnioskowania wstecz**. Jest on napędzany przez **cel** - wartość atrybutu, którą chcemy znaleźć: + +1. Wybierz wszystkie reguły, które mogą dać nam wartość celu (tj. z celem po stronie prawej (RHS)) - zestaw konfliktów +1. Jeśli nie ma reguł dla tego atrybutu lub istnieje reguła mówiąca, że powinniśmy zapytać użytkownika o wartość - zapytaj o nią, w przeciwnym razie: +1. Użyj strategii rozwiązywania konfliktów, aby wybrać jedną regułę, którą będziemy traktować jako *hipotezę* - spróbujemy ją udowodnić +1. Rekurencyjnie powtórz proces dla wszystkich atrybutów po stronie lewej reguły, próbując je udowodnić jako cele +1. Jeśli w dowolnym momencie proces się nie powiedzie - użyj innej reguły w kroku 3. + +> ✅ W jakich sytuacjach bardziej odpowiednie jest wnioskowanie w przód? A wnioskowanie wstecz? + +### Implementacja systemów ekspertowych + +Systemy ekspertowe można implementować za pomocą różnych narzędzi: + +* Programowanie ich bezpośrednio w jakimś języku programowania wysokiego poziomu. Nie jest to najlepszy pomysł, ponieważ główną zaletą systemu opartego na wiedzy jest to, że wiedza jest oddzielona od wnioskowania, a potencjalnie ekspert dziedzinowy powinien być w stanie pisać reguły bez rozumienia szczegółów procesu wnioskowania. +* Używanie **powłoki systemu ekspertowego**, tj. systemu specjalnie zaprojektowanego do wypełniania wiedzą za pomocą jakiegoś języka reprezentacji wiedzy. + +## ✍️ Ćwiczenie: Wnioskowanie o zwierzętach + +Zobacz [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) jako przykład implementacji systemu ekspertowego z wnioskowaniem w przód i wstecz. +> **Uwaga**: Ten przykład jest dość prosty i jedynie daje ogólne pojęcie o tym, jak wygląda system ekspercki. Gdy zaczniesz tworzyć taki system, zauważysz *inteligentne* zachowanie dopiero po osiągnięciu pewnej liczby reguł, około 200+. W pewnym momencie reguły stają się zbyt skomplikowane, by wszystkie je zapamiętać, i wtedy możesz zacząć się zastanawiać, dlaczego system podejmuje określone decyzje. Jednak ważną cechą systemów opartych na wiedzy jest to, że zawsze można *wyjaśnić*, w jaki sposób podjęto każdą z decyzji. +## Ontologie i Sieć Semantyczna + +Pod koniec XX wieku pojawiła się inicjatywa wykorzystania reprezentacji wiedzy do opisywania zasobów internetowych, aby możliwe było znajdowanie zasobów odpowiadających bardzo specyficznym zapytaniom. Ten ruch nazwano **Siecią Semantyczną** i opierał się na kilku koncepcjach: + +- Specjalnej reprezentacji wiedzy opartej na **[logikach deskrypcyjnych](https://en.wikipedia.org/wiki/Description_logic)** (DL). Jest ona podobna do reprezentacji wiedzy w ramach, ponieważ buduje hierarchię obiektów z właściwościami, ale posiada formalną semantykę logiczną i wnioskowanie. Istnieje cała rodzina logik deskrypcyjnych, które balansują między ekspresywnością a algorytmiczną złożonością wnioskowania. +- Rozproszonej reprezentacji wiedzy, gdzie wszystkie pojęcia są reprezentowane przez globalny identyfikator URI, co umożliwia tworzenie hierarchii wiedzy obejmujących cały internet. +- Rodziny języków opartych na XML do opisu wiedzy: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Kluczowym pojęciem w Sieci Semantycznej jest pojęcie **Ontologii**. Odnosi się ono do jawnej specyfikacji dziedziny problemowej przy użyciu formalnej reprezentacji wiedzy. Najprostsza ontologia może być po prostu hierarchią obiektów w danej dziedzinie, ale bardziej złożone ontologie zawierają reguły, które mogą być używane do wnioskowania. + +W Sieci Semantycznej wszystkie reprezentacje opierają się na trójkach. Każdy obiekt i każda relacja są jednoznacznie identyfikowane przez URI. Na przykład, jeśli chcemy stwierdzić, że ten program nauczania AI został opracowany przez Dmitrija Soshnikova 1 stycznia 2022 roku, oto trójki, których możemy użyć: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ Tutaj `http://www.example.com/terms/creation-date` i `http://purl.org/dc/elements/1.1/creator` to dobrze znane i powszechnie akceptowane URI wyrażające pojęcia *twórcy* i *daty utworzenia*. + +W bardziej złożonym przypadku, jeśli chcemy zdefiniować listę twórców, możemy użyć struktur danych zdefiniowanych w RDF. + + + +> Diagramy powyżej autorstwa [Dmitrija Soshnikova](http://soshnikov.com) + +Postęp w budowie Sieci Semantycznej został w pewnym stopniu spowolniony przez sukces wyszukiwarek i technik przetwarzania języka naturalnego, które pozwalają na wydobywanie danych strukturalnych z tekstu. Jednak w niektórych obszarach wciąż podejmowane są znaczące wysiłki na rzecz utrzymania ontologii i baz wiedzy. Kilka projektów wartych uwagi: + +* [WikiData](https://wikidata.org/) to zbiór maszynowo czytelnych baz wiedzy powiązanych z Wikipedią. Większość danych pochodzi z *InfoBoxów* Wikipedii, czyli fragmentów strukturalnych treści na stronach Wikipedii. Możesz [przeszukiwać](https://query.wikidata.org/) WikiData za pomocą SPARQL, specjalnego języka zapytań dla Sieci Semantycznej. Oto przykładowe zapytanie, które wyświetla najpopularniejsze kolory oczu wśród ludzi: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) to inna inicjatywa podobna do WikiData. + +> ✅ Jeśli chcesz eksperymentować z budowaniem własnych ontologii lub otwieraniem istniejących, istnieje świetny wizualny edytor ontologii o nazwie [Protégé](https://protege.stanford.edu/). Pobierz go lub użyj online. + + + +*Edytor Web Protégé otwarty z ontologią rodziny Romanowów. Zrzut ekranu autorstwa Dmitrija Soshnikova* + +## ✍️ Ćwiczenie: Ontologia Rodzinna + +Zobacz [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) jako przykład wykorzystania technik Sieci Semantycznej do wnioskowania o relacjach rodzinnych. Weźmiemy drzewo genealogiczne zapisane w popularnym formacie GEDCOM oraz ontologię relacji rodzinnych i zbudujemy graf wszystkich relacji rodzinnych dla danego zestawu osób. + +## Microsoft Concept Graph + +W większości przypadków ontologie są starannie tworzone ręcznie. Jednak możliwe jest również **wydobywanie** ontologii z danych niestrukturalnych, na przykład z tekstów w języku naturalnym. + +Jedną z takich prób podjęto w Microsoft Research, co zaowocowało [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Jest to duży zbiór jednostek pogrupowanych za pomocą relacji dziedziczenia `is-a`. Umożliwia odpowiadanie na pytania typu "Czym jest Microsoft?" - odpowiedź może brzmieć: "firmą z prawdopodobieństwem 0,87 i marką z prawdopodobieństwem 0,75". + +Graf jest dostępny zarówno jako REST API, jak i w postaci dużego pliku tekstowego zawierającego wszystkie pary jednostek. + +## ✍️ Ćwiczenie: Graf Konceptów + +Wypróbuj notatnik [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb), aby zobaczyć, jak można wykorzystać Microsoft Concept Graph do grupowania artykułów prasowych w kilka kategorii. + +## Podsumowanie + +Obecnie AI często jest utożsamiane z *uczeniem maszynowym* lub *sieciami neuronowymi*. Jednak człowiek wykazuje również zdolność do jawnego rozumowania, co jest czymś, czego obecnie nie obsługują sieci neuronowe. W rzeczywistych projektach jawne rozumowanie wciąż jest wykorzystywane do wykonywania zadań wymagających wyjaśnień lub możliwości kontrolowanej modyfikacji zachowania systemu. + +## 🚀 Wyzwanie + +W notatniku Family Ontology związanym z tą lekcją istnieje możliwość eksperymentowania z innymi relacjami rodzinnymi. Spróbuj odkryć nowe powiązania między osobami w drzewie genealogicznym. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Przegląd i Samodzielna Nauka + +Poszukaj w internecie informacji o obszarach, w których ludzie próbowali kwantyfikować i kodować wiedzę. Przyjrzyj się taksonomii Blooma i cofnij się w historii, aby dowiedzieć się, jak ludzie próbowali zrozumieć otaczający ich świat. Zbadaj pracę Linneusza nad tworzeniem taksonomii organizmów i zobacz, jak Dmitrij Mendelejew stworzył sposób opisu i grupowania pierwiastków chemicznych. Jakie inne interesujące przykłady możesz znaleźć? + +**Zadanie domowe**: [Zbuduj Ontologię](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/2-Symbolic/assignment.md b/translations/pl/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..a0c00dc7 --- /dev/null +++ b/translations/pl/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Budowanie Ontologii + +Budowanie bazy wiedzy polega na kategoryzowaniu modelu, który reprezentuje fakty na dany temat. Wybierz temat – na przykład osobę, miejsce lub rzecz – a następnie stwórz model tego tematu. Skorzystaj z technik i strategii budowania modeli opisanych w tej lekcji. Przykładem może być stworzenie ontologii salonu z meblami, oświetleniem i innymi elementami. Czym salon różni się od kuchni? Łazienki? Skąd wiesz, że to salon, a nie jadalnia? Użyj [Protégé](https://protege.stanford.edu/), aby zbudować swoją ontologię. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..81386a54 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Wprowadzenie do sieci neuronowych: Perceptron + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Jedną z pierwszych prób stworzenia czegoś na wzór współczesnej sieci neuronowej podjął Frank Rosenblatt z Cornell Aeronautical Laboratory w 1957 roku. Była to implementacja sprzętowa o nazwie "Mark-1", zaprojektowana do rozpoznawania prostych figur geometrycznych, takich jak trójkąty, kwadraty i koła. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Obrazy [z Wikipedii](https://en.wikipedia.org/wiki/Perceptron) + +Obraz wejściowy był reprezentowany przez matrycę fotokomórek o wymiarach 20x20, co oznaczało, że sieć neuronowa miała 400 wejść i jedno wyjście binarne. Prosta sieć zawierała jeden neuron, nazywany również **jednostką logiczną progową**. Wagi sieci neuronowej działały jak potencjometry, które wymagały ręcznego dostosowania podczas fazy uczenia. + +> ✅ Potencjometr to urządzenie, które pozwala użytkownikowi regulować opór w obwodzie. + +> The New York Times pisał o perceptronie w tamtym czasie: *zalążek elektronicznego komputera, który [Marynarka Wojenna] spodziewa się, że będzie mógł chodzić, mówić, widzieć, pisać, reprodukować się i być świadomy swojego istnienia.* + +## Model perceptronu + +Załóżmy, że nasz model ma N cech, w takim przypadku wektor wejściowy będzie miał rozmiar N. Perceptron to model klasyfikacji **binarny**, czyli taki, który potrafi rozróżniać między dwiema klasami danych wejściowych. Przyjmiemy, że dla każdego wektora wejściowego x wyjście perceptronu będzie wynosić +1 lub -1, w zależności od klasy. Wyjście obliczane jest za pomocą wzoru: + +y(x) = f(wTx) + +gdzie f to funkcja aktywacji typu schodkowego + + + + +## Trenowanie perceptronu + +Aby wytrenować perceptron, musimy znaleźć wektor wag w, który klasyfikuje większość wartości poprawnie, czyli minimalizuje **błąd**. Błąd E definiowany jest przez **kryterium perceptronu** w następujący sposób: + +E(w) = -∑wTxiti + +gdzie: + +* suma obejmuje te punkty danych treningowych i, które zostały błędnie sklasyfikowane, +* xi to dane wejściowe, a ti wynosi -1 lub +1 dla odpowiednio negatywnych i pozytywnych przykładów. + +To kryterium traktowane jest jako funkcja wag w, którą musimy zminimalizować. Często stosuje się metodę zwaną **spadkiem gradientu**, w której zaczynamy od początkowych wag w(0), a następnie na każdym kroku aktualizujemy wagi zgodnie ze wzorem: + +w(t+1) = w(t) - η∇E(w) + +Tutaj η to tzw. **współczynnik uczenia się**, a ∇E(w) oznacza **gradient** funkcji E. Po obliczeniu gradientu otrzymujemy: + +w(t+1) = w(t) + ∑ηxiti + +Algorytm w Pythonie wygląda następująco: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## Podsumowanie + +W tej lekcji nauczyłeś się, czym jest perceptron, czyli model klasyfikacji binarnej, oraz jak go trenować, używając wektora wag. + +## 🚀 Wyzwanie + +Jeśli chcesz spróbować stworzyć własny perceptron, wypróbuj [to laboratorium na Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), które korzysta z [projektanta Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Przegląd i samodzielna nauka + +Aby zobaczyć, jak można użyć perceptronu do rozwiązania prostych problemów oraz problemów rzeczywistych, i kontynuować naukę, przejdź do notatnika [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Oto ciekawy [artykuł o perceptronach](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Zadanie](lab/README.md) + +W tej lekcji zaimplementowaliśmy perceptron do zadania klasyfikacji binarnej i użyliśmy go do rozróżniania dwóch cyfr pisanych ręcznie. W tym laboratorium masz za zadanie rozwiązać problem klasyfikacji cyfr w całości, czyli określić, która cyfra najprawdopodobniej odpowiada danemu obrazowi. + +* [Instrukcje](lab/README.md) +* [Notatnik](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..4d703bb6 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Klasyfikacja wieloklasowa za pomocą perceptronu + +Zadanie laboratoryjne z [Kursu AI dla Początkujących](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Korzystając z kodu opracowanego w tej lekcji do binarnej klasyfikacji ręcznie pisanych cyfr MNIST, stwórz klasyfikator wieloklasowy, który będzie w stanie rozpoznać dowolną cyfrę. Oblicz dokładność klasyfikacji na zbiorze treningowym i testowym oraz wyświetl macierz pomyłek. + +## Wskazówki + +1. Dla każdej cyfry stwórz zbiór danych do binarnej klasyfikacji "ta cyfra vs. wszystkie inne cyfry". +1. Wytrenuj 10 różnych perceptronów do binarnej klasyfikacji (po jednym dla każdej cyfry). +1. Zdefiniuj funkcję, która będzie klasyfikować wprowadzone cyfry. + +> **Wskazówka**: Jeśli połączymy wagi wszystkich 10 perceptronów w jedną macierz, będziemy mogli zastosować wszystkie 10 perceptronów do wprowadzonych cyfr za pomocą jednego mnożenia macierzy. Najbardziej prawdopodobną cyfrę można wtedy znaleźć, stosując operację `argmax` na wynikach. + +## Notebook startowy + +Rozpocznij zadanie, otwierając [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..899198b7 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Wprowadzenie do Sieci Neuronowych. Perceptron Wielowarstwowy + +W poprzedniej sekcji nauczyłeś się o najprostszym modelu sieci neuronowej - perceptronie jednowarstwowym, będącym liniowym modelem klasyfikacji dwuklasowej. + +W tej sekcji rozszerzymy ten model do bardziej elastycznego frameworka, który pozwoli nam: + +* wykonywać **klasyfikację wieloklasową** oprócz dwuklasowej +* rozwiązywać **problemy regresji** oprócz klasyfikacji +* rozdzielać klasy, które nie są liniowo separowalne + +Stworzymy również własny modułowy framework w Pythonie, który umożliwi nam budowanie różnych architektur sieci neuronowych. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizacja Uczenia Maszynowego + +Zacznijmy od formalizacji problemu Uczenia Maszynowego. Załóżmy, że mamy zbiór danych treningowych **X** z etykietami **Y**, i musimy zbudować model *f*, który będzie dokonywał jak najdokładniejszych przewidywań. Jakość przewidywań mierzymy za pomocą **funkcji straty** ℒ. Często używane funkcje straty to: + +* W przypadku problemu regresji, gdy musimy przewidzieć liczbę, możemy użyć **błędu bezwzględnego** ∑i|f(x(i))-y(i)| lub **błędu kwadratowego** ∑i(f(x(i))-y(i))2 +* W przypadku klasyfikacji używamy **straty 0-1** (która jest zasadniczo tym samym co **dokładność** modelu) lub **straty logistycznej**. + +Dla perceptronu jednowarstwowego funkcja *f* była zdefiniowana jako funkcja liniowa *f(x)=wx+b* (gdzie *w* to macierz wag, *x* to wektor cech wejściowych, a *b* to wektor przesunięcia). Dla różnych architektur sieci neuronowych funkcja ta może przyjmować bardziej złożoną formę. + +> W przypadku klasyfikacji często pożądane jest uzyskanie prawdopodobieństw odpowiadających klas jako wyjścia sieci. Aby przekształcić dowolne liczby na prawdopodobieństwa (np. znormalizować wyjście), często używamy funkcji **softmax** σ, a funkcja *f* staje się *f(x)=σ(wx+b)* + +W definicji *f* powyżej, *w* i *b* nazywane są **parametrami** θ=⟨*w,b*⟩. Mając zbiór danych ⟨**X**,**Y**⟩, możemy obliczyć całkowity błąd dla całego zbioru danych jako funkcję parametrów θ. + +> ✅ **Celem trenowania sieci neuronowej jest minimalizacja błędu poprzez modyfikację parametrów θ** + +## Optymalizacja za pomocą Gradientu Prostego + +Istnieje dobrze znana metoda optymalizacji funkcji zwana **gradientem prostym**. Idea polega na tym, że możemy obliczyć pochodną (w przypadku wielowymiarowym nazywaną **gradientem**) funkcji straty względem parametrów i zmieniać parametry w taki sposób, aby błąd malał. Można to sformalizować w następujący sposób: + +* Inicjalizuj parametry losowymi wartościami w(0), b(0) +* Powtarzaj następujący krok wiele razy: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Podczas treningu kroki optymalizacji powinny być obliczane z uwzględnieniem całego zbioru danych (pamiętaj, że strata jest obliczana jako suma dla wszystkich próbek treningowych). Jednak w praktyce bierzemy małe porcje zbioru danych zwane **minipaczkami** i obliczamy gradienty na podstawie podzbioru danych. Ponieważ podzbiór jest wybierany losowo za każdym razem, taka metoda nazywana jest **stochastycznym gradientem prostym** (SGD). + +## Perceptrony Wielowarstwowe i Wsteczna Propagacja + +Sieć jednowarstwowa, jak widzieliśmy powyżej, jest w stanie klasyfikować klasy liniowo separowalne. Aby zbudować bogatszy model, możemy połączyć kilka warstw sieci. Matematycznie oznaczałoby to, że funkcja *f* przyjmie bardziej złożoną formę i będzie obliczana w kilku krokach: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Tutaj α to **nieliniowa funkcja aktywacji**, σ to funkcja softmax, a parametry θ=<*w1,b1,w2,b2*>. + +Algorytm gradientu prostego pozostanie taki sam, ale obliczanie gradientów będzie trudniejsze. Zgodnie z regułą różniczkowania łańcuchowego możemy obliczyć pochodne jako: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Reguła różniczkowania łańcuchowego jest używana do obliczania pochodnych funkcji straty względem parametrów. + +Zauważ, że lewa część wszystkich tych wyrażeń jest taka sama, dzięki czemu możemy efektywnie obliczać pochodne, zaczynając od funkcji straty i idąc "wstecz" przez graf obliczeniowy. Dlatego metoda trenowania perceptronu wielowarstwowego nazywana jest **wsteczną propagacją**, lub 'backprop'. + +compute graph + +> TODO: cytowanie obrazu + +> ✅ Omówimy wsteczną propagację znacznie bardziej szczegółowo w naszym przykładzie w notatniku. + +## Podsumowanie + +W tej lekcji stworzyliśmy własną bibliotekę sieci neuronowych i użyliśmy jej do prostego zadania klasyfikacji dwuwymiarowej. + +## 🚀 Wyzwanie + +W dołączonym notatniku zaimplementujesz własny framework do budowania i trenowania perceptronów wielowarstwowych. Będziesz mógł zobaczyć szczegółowo, jak działają nowoczesne sieci neuronowe. + +Przejdź do notatnika [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) i przepracuj go. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Przegląd i Samodzielna Nauka + +Wsteczna propagacja to powszechny algorytm używany w AI i ML, warto go [zgłębić bardziej szczegółowo](https://wikipedia.org/wiki/Backpropagation) + +## [Zadanie](lab/README.md) + +W tym laboratorium zostaniesz poproszony o użycie frameworka stworzonego w tej lekcji do rozwiązania problemu klasyfikacji ręcznie pisanych cyfr MNIST. + +* [Instrukcje](lab/README.md) +* [Notatnik](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..52d49d87 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Klasyfikacja MNIST z Naszym Własnym Frameworkiem + +Zadanie laboratoryjne z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Rozwiąż problem klasyfikacji ręcznie pisanych cyfr MNIST, używając perceptronu z 1, 2 i 3 warstwami. Skorzystaj z frameworku sieci neuronowych, który opracowaliśmy podczas lekcji. + +## Notebook startowy + +Rozpocznij laboratorium, otwierając [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Pytania + +W wyniku tego laboratorium spróbuj odpowiedzieć na następujące pytania: + +- Czy funkcja aktywacji między warstwami wpływa na wydajność sieci? +- Czy potrzebujemy sieci z 2 lub 3 warstwami dla tego zadania? +- Czy napotkałeś jakieś problemy podczas trenowania sieci? Szczególnie gdy liczba warstw wzrastała. +- Jak zachowują się wagi sieci podczas treningu? Możesz wykreślić maksymalną wartość bezwzględną wag w zależności od epoki, aby zrozumieć tę relację. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..f402ab36 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Frameworky Sieci Neuronowych + +Jak już się nauczyliśmy, aby efektywnie trenować sieci neuronowe, musimy zrobić dwie rzeczy: + +* Operować na tensorach, np. mnożyć, dodawać i obliczać funkcje takie jak sigmoid czy softmax +* Obliczać gradienty wszystkich wyrażeń, aby przeprowadzać optymalizację metodą gradientu prostego + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Podczas gdy biblioteka `numpy` może realizować pierwszą część, potrzebujemy mechanizmu do obliczania gradientów. W [naszym frameworku](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), który opracowaliśmy w poprzedniej sekcji, musieliśmy ręcznie programować wszystkie funkcje pochodne w metodzie `backward`, która realizuje propagację wsteczną. Idealnie byłoby, gdyby framework umożliwiał obliczanie gradientów *dowolnego wyrażenia*, które możemy zdefiniować. + +Kolejną ważną rzeczą jest możliwość wykonywania obliczeń na GPU lub innych wyspecjalizowanych jednostkach obliczeniowych, takich jak [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Trenowanie głębokich sieci neuronowych wymaga *ogromnej* liczby obliczeń, a możliwość ich równoległego przetwarzania na GPU jest niezwykle istotna. + +> ✅ Termin 'równoległość' oznacza rozdzielenie obliczeń na wiele urządzeń. + +Obecnie dwa najpopularniejsze frameworki sieci neuronowych to: [TensorFlow](http://TensorFlow.org) i [PyTorch](https://pytorch.org/). Oba oferują niskopoziomowe API do operowania na tensorach zarówno na CPU, jak i GPU. Na bazie niskopoziomowego API istnieją również wyższopoziomowe API, takie jak [Keras](https://keras.io/) i [PyTorch Lightning](https://pytorchlightning.ai/). + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Niskopoziomowe API** w obu frameworkach pozwalają na budowanie tzw. **grafów obliczeniowych**. Graf ten definiuje, jak obliczyć wynik (zazwyczaj funkcję straty) dla danych parametrów wejściowych i może być przesłany do obliczeń na GPU, jeśli jest dostępne. Istnieją funkcje do różniczkowania tego grafu obliczeniowego i obliczania gradientów, które następnie mogą być użyte do optymalizacji parametrów modelu. + +**Wysokopoziomowe API** traktują sieci neuronowe jako **sekwencję warstw**, co znacznie ułatwia budowanie większości sieci neuronowych. Trenowanie modelu zazwyczaj wymaga przygotowania danych, a następnie wywołania funkcji `fit`, która wykonuje całą pracę. + +Wysokopoziomowe API pozwala na szybkie konstruowanie typowych sieci neuronowych bez martwienia się o wiele szczegółów. Jednocześnie niskopoziomowe API oferuje znacznie większą kontrolę nad procesem trenowania, dlatego jest często używane w badaniach, gdy pracujemy z nowymi architekturami sieci neuronowych. + +Warto również zrozumieć, że można używać obu API razem, np. można opracować własną architekturę warstwy sieci za pomocą niskopoziomowego API, a następnie użyć jej w większej sieci skonstruowanej i trenowanej za pomocą wysokopoziomowego API. Można też zdefiniować sieć za pomocą wysokopoziomowego API jako sekwencję warstw, a następnie użyć własnej pętli trenowania opartej na niskopoziomowym API do przeprowadzenia optymalizacji. Oba API opierają się na tych samych podstawowych koncepcjach i są zaprojektowane tak, aby dobrze ze sobą współpracowały. + +## Nauka + +W tym kursie oferujemy większość treści zarówno dla PyTorch, jak i TensorFlow. Możesz wybrać preferowany framework i przejść tylko przez odpowiednie notatniki. Jeśli nie jesteś pewien, który framework wybrać, przeczytaj dyskusje w internecie na temat **PyTorch vs. TensorFlow**. Możesz również zapoznać się z oboma frameworkami, aby lepiej je zrozumieć. + +Tam, gdzie to możliwe, będziemy używać wysokopoziomowych API dla uproszczenia. Jednak uważamy, że ważne jest zrozumienie, jak działają sieci neuronowe od podstaw, dlatego na początku zaczynamy od pracy z niskopoziomowym API i tensorami. Jeśli jednak chcesz szybko zacząć i nie chcesz poświęcać dużo czasu na naukę tych szczegółów, możesz je pominąć i od razu przejść do notatników z wysokopoziomowym API. + +## ✍️ Ćwiczenia: Frameworky + +Kontynuuj naukę w poniższych notatnikach: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Po opanowaniu frameworków, przypomnijmy sobie pojęcie nadmiernego dopasowania. + +# Nadmierne dopasowanie (Overfitting) + +Nadmierne dopasowanie to niezwykle ważne pojęcie w uczeniu maszynowym i bardzo ważne jest, aby je dobrze zrozumieć! + +Rozważmy następujący problem aproksymacji 5 punktów (reprezentowanych przez `x` na poniższych wykresach): + +![linear](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![overfit](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) +-------------------------|-------------------------- +**Model liniowy, 2 parametry** | **Model nieliniowy, 7 parametrów** +Błąd treningowy = 5.3 | Błąd treningowy = 0 +Błąd walidacyjny = 5.1 | Błąd walidacyjny = 20 + +* Po lewej widzimy dobrą aproksymację liniową. Ponieważ liczba parametrów jest odpowiednia, model poprawnie odczytuje rozkład punktów. +* Po prawej model jest zbyt potężny. Ponieważ mamy tylko 5 punktów, a model ma 7 parametrów, może dostosować się tak, aby przechodzić przez wszystkie punkty, co sprawia, że błąd treningowy wynosi 0. Jednak uniemożliwia to modelowi zrozumienie prawidłowego wzorca w danych, co skutkuje bardzo wysokim błędem walidacyjnym. + +Bardzo ważne jest znalezienie odpowiedniej równowagi między złożonością modelu (liczbą parametrów) a liczbą próbek treningowych. + +## Dlaczego występuje nadmierne dopasowanie + + * Zbyt mało danych treningowych + * Zbyt potężny model + * Zbyt dużo szumu w danych wejściowych + +## Jak wykryć nadmierne dopasowanie + +Jak widać na powyższym wykresie, nadmierne dopasowanie można wykryć poprzez bardzo niski błąd treningowy i wysoki błąd walidacyjny. Zazwyczaj podczas treningu widzimy, jak zarówno błędy treningowe, jak i walidacyjne zaczynają maleć, a następnie w pewnym momencie błąd walidacyjny może przestać maleć i zacząć rosnąć. To będzie oznaka nadmiernego dopasowania i wskazówka, że powinniśmy prawdopodobnie zatrzymać trening w tym momencie (lub przynajmniej zapisać stan modelu). + +![overfitting](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) + +## Jak zapobiegać nadmiernemu dopasowaniu + +Jeśli zauważysz, że występuje nadmierne dopasowanie, możesz zrobić jedno z poniższych: + + * Zwiększyć ilość danych treningowych + * Zmniejszyć złożoność modelu + * Użyć jakiejś [techniki regularyzacji](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), takiej jak [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), którą omówimy później. + +## Nadmierne dopasowanie a kompromis między błędem a wariancją + +Nadmierne dopasowanie to w rzeczywistości przypadek bardziej ogólnego problemu w statystyce, zwanego [kompromisem między błędem a wariancją](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Jeśli rozważymy możliwe źródła błędu w naszym modelu, możemy wyróżnić dwa rodzaje błędów: + +* **Błędy wynikające z uprzedzeń (bias errors)** są spowodowane tym, że nasz algorytm nie jest w stanie poprawnie uchwycić relacji w danych treningowych. Może to wynikać z faktu, że nasz model nie jest wystarczająco potężny (**niedopasowanie**). +* **Błędy wynikające z wariancji (variance errors)**, które są spowodowane tym, że model aproksymuje szum w danych wejściowych zamiast znaczących relacji (**nadmierne dopasowanie**). + +Podczas treningu błąd wynikający z uprzedzeń maleje (gdy nasz model uczy się aproksymować dane), a błąd wynikający z wariancji rośnie. Ważne jest, aby zatrzymać trening - albo ręcznie (gdy wykryjemy nadmierne dopasowanie), albo automatycznie (poprzez wprowadzenie regularyzacji) - aby zapobiec nadmiernemu dopasowaniu. + +## Podsumowanie + +W tej lekcji dowiedziałeś się o różnicach między różnymi API dla dwóch najpopularniejszych frameworków AI, TensorFlow i PyTorch. Ponadto nauczyłeś się o bardzo ważnym temacie, jakim jest nadmierne dopasowanie. + +## 🚀 Wyzwanie + +W towarzyszących notatnikach znajdziesz 'zadania' na końcu; przejdź przez notatniki i wykonaj zadania. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Przegląd i samodzielna nauka + +Zrób badania na następujące tematy: + +- TensorFlow +- PyTorch +- Nadmierne dopasowanie + +Zadaj sobie następujące pytania: + +- Jaka jest różnica między TensorFlow a PyTorch? +- Jaka jest różnica między nadmiernym dopasowaniem a niedopasowaniem? + +## [Zadanie](lab/README.md) + +W tym laboratorium masz za zadanie rozwiązać dwa problemy klasyfikacyjne, używając jedno- i wielowarstwowych sieci w pełni połączonych, korzystając z PyTorch lub TensorFlow. + +* [Instrukcje](lab/README.md) +* [Notatnik](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..d31eee7e --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Klasyfikacja z PyTorch/TensorFlow + +Zadanie laboratoryjne z [Kursu AI dla Początkujących](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Rozwiąż dwa problemy klasyfikacyjne, korzystając z jedno- i wielowarstwowych sieci w pełni połączonych, używając PyTorch lub TensorFlow: + +1. Problem **[klasyfikacji irysów](https://en.wikipedia.org/wiki/Iris_flower_data_set)** – przykład problemu z danymi wejściowymi w formie tabelarycznej, który można rozwiązać za pomocą klasycznych metod uczenia maszynowego. Twoim celem będzie sklasyfikowanie irysów do 3 klas na podstawie 4 parametrów liczbowych. +2. Problem klasyfikacji ręcznie pisanych cyfr **MNIST**, który już wcześniej omawialiśmy. + +Wypróbuj różne architektury sieci, aby osiągnąć jak najlepszą dokładność. + +## Notatnik startowy + +Rozpocznij laboratorium, otwierając [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/3-NeuralNetworks/README.md b/translations/pl/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..51b1ecf5 --- /dev/null +++ b/translations/pl/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Wprowadzenie do sieci neuronowych + +![Podsumowanie treści Wprowadzenie do Sieci Neuronowych w formie rysunku](../../../../lessons/sketchnotes/ai-neuralnetworks.png) + +Jak omówiliśmy we wstępie, jednym ze sposobów osiągnięcia inteligencji jest trenowanie **modelu komputerowego** lub **sztucznego mózgu**. Od połowy XX wieku naukowcy próbowali różnych modeli matematycznych, aż w ostatnich latach ten kierunek okazał się niezwykle skuteczny. Takie matematyczne modele mózgu nazywane są **sieciami neuronowymi**. + +> Czasami sieci neuronowe nazywane są *Sztucznymi Sieciami Neuronowymi* (Artificial Neural Networks, ANNs), aby podkreślić, że mówimy o modelach, a nie o rzeczywistych sieciach neuronów. + +## Uczenie maszynowe + +Sieci neuronowe są częścią większej dziedziny zwanej **Uczeniem Maszynowym**, której celem jest wykorzystanie danych do trenowania modeli komputerowych zdolnych do rozwiązywania problemów. Uczenie maszynowe stanowi dużą część sztucznej inteligencji, jednak w tym programie nauczania nie omawiamy klasycznego uczenia maszynowego. + +> Odwiedź nasz osobny program nauczania **[Uczenie Maszynowe dla Początkujących](http://github.com/microsoft/ml-for-beginners)**, aby dowiedzieć się więcej o klasycznym uczeniu maszynowym. + +W uczeniu maszynowym zakładamy, że mamy jakiś zbiór danych przykładów **X** oraz odpowiadające im wartości wyjściowe **Y**. Przykłady często są N-wymiarowymi wektorami składającymi się z **cech**, a wartości wyjściowe nazywane są **etykietami**. + +Rozważymy dwa najczęstsze problemy uczenia maszynowego: + +* **Klasyfikacja**, gdzie musimy sklasyfikować obiekt wejściowy do dwóch lub więcej klas. +* **Regresja**, gdzie musimy przewidzieć wartość liczbową dla każdego z próbek wejściowych. + +> Reprezentując dane wejściowe i wyjściowe jako tensory, zbiór danych wejściowych jest macierzą o rozmiarze M×N, gdzie M to liczba próbek, a N to liczba cech. Etykiety wyjściowe Y są wektorem o rozmiarze M. + +W tym programie nauczania skupimy się wyłącznie na modelach sieci neuronowych. + +## Model neuronu + +Z biologii wiemy, że nasz mózg składa się z komórek nerwowych, z których każda ma wiele "wejść" (aksonów) i jedno wyjście (dendryt). Aksony i dendryty mogą przewodzić sygnały elektryczne, a połączenia między aksonami a dendrytami mogą wykazywać różne stopnie przewodności (kontrolowane przez neuromediatory). + +![Model neuronu](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![Model neuronu](../../../../lessons/3-NeuralNetworks/images/artneuron.png) +----|---- +Prawdziwy neuron *([Obraz](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) z Wikipedii)* | Sztuczny neuron *(Obraz autora)* + +Najprostszy matematyczny model neuronu zawiera kilka wejść X1, ..., XN oraz jedno wyjście Y, a także serię wag W1, ..., WN. Wyjście jest obliczane jako: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +gdzie f jest pewną nieliniową **funkcją aktywacji**. + +> Wczesne modele neuronu zostały opisane w klasycznym artykule [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) autorstwa Warrena McCullocka i Waltera Pittsa w 1943 roku. Donald Hebb w swojej książce "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" zaproponował sposób, w jaki te sieci mogą być trenowane. + +## W tej sekcji + +W tej sekcji dowiemy się o: +* [Perceptronie](03-Perceptron/README.md), jednym z najwcześniejszych modeli sieci neuronowych do klasyfikacji dwuklasowej +* [Sieciach wielowarstwowych](04-OwnFramework/README.md) wraz z notatnikiem [jak zbudować własny framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworkach sieci neuronowych](05-Frameworks/README.md), z tymi notatnikami: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) i [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Przeuczeniu](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/pl/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..bf0a813b --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Wprowadzenie do Wizji Komputerowej + +[Wizja komputerowa](https://wikipedia.org/wiki/Computer_vision) to dziedzina, której celem jest umożliwienie komputerom uzyskania wysokopoziomowego zrozumienia obrazów cyfrowych. Jest to dość szeroka definicja, ponieważ *zrozumienie* może oznaczać wiele różnych rzeczy, w tym znalezienie obiektu na zdjęciu (**detekcja obiektów**), zrozumienie, co się dzieje (**detekcja zdarzeń**), opisanie obrazu w formie tekstu czy rekonstrukcję sceny w 3D. Istnieją również specjalne zadania związane z obrazami ludzi: szacowanie wieku i emocji, detekcja i identyfikacja twarzy oraz estymacja pozycji w 3D, żeby wymienić tylko kilka. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Jednym z najprostszych zadań wizji komputerowej jest **klasyfikacja obrazów**. + +Wizja komputerowa często jest uważana za gałąź sztucznej inteligencji. Obecnie większość zadań związanych z wizją komputerową jest rozwiązywana za pomocą sieci neuronowych. W tej sekcji dowiemy się więcej o specjalnym typie sieci neuronowych używanych w wizji komputerowej, [konwolucyjnych sieciach neuronowych](../07-ConvNets/README.md). + +Jednak zanim przekażesz obraz do sieci neuronowej, w wielu przypadkach warto zastosować pewne algorytmiczne techniki, aby poprawić jakość obrazu. + +Istnieje kilka bibliotek Python dostępnych do przetwarzania obrazów: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** może być używana do odczytu/zapisu różnych formatów obrazów. Obsługuje również ffmpeg, przydatne narzędzie do konwersji klatek wideo na obrazy. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (znana również jako PIL) jest nieco bardziej zaawansowana i obsługuje manipulacje obrazami, takie jak morfing, dostosowanie palety i inne. +* **[OpenCV](https://opencv.org/)** to potężna biblioteka do przetwarzania obrazów napisana w C++, która stała się standardem w tej dziedzinie. Posiada wygodny interfejs w Pythonie. +* **[dlib](http://dlib.net/)** to biblioteka C++, która implementuje wiele algorytmów uczenia maszynowego, w tym niektóre algorytmy wizji komputerowej. Posiada również interfejs w Pythonie i może być używana do trudnych zadań, takich jak detekcja twarzy i punktów charakterystycznych twarzy. + +## OpenCV + +[OpenCV](https://opencv.org/) jest uważane za standard w przetwarzaniu obrazów. Zawiera wiele przydatnych algorytmów zaimplementowanych w C++. Możesz również korzystać z OpenCV w Pythonie. + +Dobrym miejscem do nauki OpenCV jest [kurs Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). W naszym programie nauczania celem nie jest nauka OpenCV, ale pokazanie kilku przykładów, kiedy można go użyć i jak. + +### Ładowanie obrazów + +Obrazy w Pythonie można wygodnie reprezentować za pomocą tablic NumPy. Na przykład obrazy w skali szarości o rozmiarze 320x200 pikseli byłyby przechowywane w tablicy 200x320, a kolorowe obrazy o tych samych wymiarach miałyby kształt 200x320x3 (dla 3 kanałów kolorów). Aby załadować obraz, możesz użyć następującego kodu: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradycyjnie OpenCV używa kodowania BGR (Blue-Green-Red) dla obrazów kolorowych, podczas gdy reszta narzędzi Pythona używa bardziej tradycyjnego RGB (Red-Green-Blue). Aby obraz wyglądał poprawnie, musisz przekonwertować go na przestrzeń kolorów RGB, albo przez zamianę wymiarów w tablicy NumPy, albo przez wywołanie funkcji OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Ta sama funkcja `cvtColor` może być używana do wykonywania innych transformacji przestrzeni kolorów, takich jak konwersja obrazu na skalę szarości lub na przestrzeń HSV (Hue-Saturation-Value). + +Możesz również użyć OpenCV do ładowania wideo klatka po klatce - przykład znajduje się w ćwiczeniu [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Przetwarzanie obrazów + +Przed przekazaniem obrazu do sieci neuronowej możesz chcieć zastosować kilka kroków wstępnego przetwarzania. OpenCV oferuje wiele możliwości, w tym: + +* **Zmiana rozmiaru** obrazu za pomocą `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Rozmycie** obrazu za pomocą `im = cv2.medianBlur(im,3)` lub `im = cv2.GaussianBlur(im, (3,3), 0)` +* Zmiana **jasności i kontrastu** obrazu może być wykonana za pomocą manipulacji tablicami NumPy, jak opisano [w tej notatce na Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Użycie [progowania](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) przez wywołanie funkcji `cv2.threshold`/`cv2.adaptiveThreshold`, co często jest preferowane w stosunku do regulacji jasności lub kontrastu. +* Zastosowanie różnych [transformacji](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) obrazu: + - **[Transformacje afiniczne](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** mogą być przydatne, jeśli potrzebujesz połączyć obrót, zmianę rozmiaru i pochylanie obrazu, a znasz lokalizację źródłową i docelową trzech punktów na obrazie. Transformacje afiniczne zachowują równoległość linii. + - **[Transformacje perspektywiczne](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** mogą być przydatne, gdy znasz pozycje źródłowe i docelowe 4 punktów na obrazie. Na przykład, jeśli robisz zdjęcie prostokątnego dokumentu za pomocą kamery smartfona pod pewnym kątem i chcesz uzyskać prostokątny obraz samego dokumentu. +* Zrozumienie ruchu wewnątrz obrazu za pomocą **[optycznego przepływu](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Przykłady użycia wizji komputerowej + +W naszym [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) przedstawiamy kilka przykładów, kiedy wizja komputerowa może być używana do wykonywania konkretnych zadań: + +* **Wstępne przetwarzanie fotografii książki Braille'a**. Skupiamy się na tym, jak można użyć progowania, detekcji cech, transformacji perspektywicznej i manipulacji NumPy, aby oddzielić pojedyncze symbole Braille'a do dalszej klasyfikacji przez sieć neuronową. + +![Obraz Braille'a](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![Obraz Braille'a po przetworzeniu](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![Symbole Braille'a](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) +----|-----|----- + +> Obraz z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcja ruchu w wideo za pomocą różnicy klatek**. Jeśli kamera jest nieruchoma, to klatki z jej strumienia powinny być dość podobne do siebie. Ponieważ klatki są reprezentowane jako tablice, wystarczy odjąć te tablice dla dwóch kolejnych klatek, aby uzyskać różnicę pikseli, która powinna być niska dla statycznych klatek, a wyższa, gdy w obrazie występuje znaczący ruch. + +![Obraz klatek wideo i różnic klatek](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) + +> Obraz z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcja ruchu za pomocą optycznego przepływu**. [Optyczny przepływ](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) pozwala zrozumieć, jak poszczególne piksele na klatkach wideo się poruszają. Istnieją dwa rodzaje optycznego przepływu: + + - **Gęsty optyczny przepływ** oblicza pole wektorowe, które pokazuje dla każdego piksela, gdzie się porusza. + - **Rzadki optyczny przepływ** opiera się na wybraniu charakterystycznych cech obrazu (np. krawędzi) i budowaniu ich trajektorii od klatki do klatki. + +![Obraz optycznego przepływu](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) + +> Obraz z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Przykładowe Notatniki: OpenCV [wypróbuj OpenCV w działaniu](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Przeprowadźmy kilka eksperymentów z OpenCV, eksplorując [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Podsumowanie + +Czasami stosunkowo złożone zadania, takie jak detekcja ruchu czy detekcja końców palców, mogą być rozwiązane wyłącznie za pomocą wizji komputerowej. Dlatego warto znać podstawowe techniki wizji komputerowej oraz możliwości bibliotek takich jak OpenCV. + +## 🚀 Wyzwanie + +Obejrzyj [ten film](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) z programu AI Show, aby dowiedzieć się o projekcie Cortic Tigers i jak stworzyli rozwiązanie oparte na blokach, aby demokratyzować zadania wizji komputerowej za pomocą robota. Poszukaj innych podobnych projektów, które pomagają nowym uczniom wejść w tę dziedzinę. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Przegląd i samodzielna nauka + +Przeczytaj więcej o optycznym przepływie [w tym świetnym tutorialu](https://learnopencv.com/optical-flow-in-opencv/). + +## [Zadanie](lab/README.md) + +W tym laboratorium nagrasz wideo z prostymi gestami, a Twoim celem będzie wyodrębnienie ruchów góra/dół/lewo/prawo za pomocą optycznego przepływu. + +Klatka ruchu dłoni + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/pl/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..09b84a43 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Wykrywanie ruchów za pomocą optycznego przepływu + +Zadanie laboratoryjne z [Kursu AI dla początkujących](https://aka.ms/ai-beginners). + +## Zadanie + +Rozważ [ten film](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), na którym dłoń osoby porusza się w lewo/prawo/góra/dół na stabilnym tle. + +**Twoim celem** będzie wykorzystanie optycznego przepływu do określenia, które części filmu zawierają ruchy w górę, w dół, w lewo lub w prawo. + +**Dodatkowe wyzwanie** to śledzenie ruchu dłoni/palca przy użyciu detekcji koloru skóry, jak opisano [w tym wpisie na blogu](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) lub [tutaj](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notatnik startowy + +Rozpocznij pracę, otwierając [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Wnioski + +Czasami stosunkowo złożone zadania, takie jak wykrywanie ruchu czy wykrywanie końcówki palca, można rozwiązać wyłącznie za pomocą wizji komputerowej. Dlatego warto wiedzieć, jakie możliwości oferują biblioteki takie jak OpenCV. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić precyzję, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/pl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..4443338a --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Znane Architektury CNN + +### VGG-16 + +VGG-16 to sieć, która osiągnęła 92,7% dokładności w klasyfikacji top-5 ImageNet w 2014 roku. Ma następującą strukturę warstw: + +![ImageNet Layers](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) + +Jak widać, VGG stosuje tradycyjną architekturę piramidy, która jest sekwencją warstw konwolucyjno-poolingowych. + +![ImageNet Pyramid](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) + +> Obraz z [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet to rodzina modeli zaproponowanych przez Microsoft Research w 2015 roku. Główną ideą ResNet jest wykorzystanie **bloków resztkowych**: + + + +> Obraz z [tego artykułu](https://arxiv.org/pdf/1512.03385.pdf) + +Powód zastosowania ścieżki tożsamości polega na tym, aby warstwa przewidywała **różnicę** między wynikiem poprzedniej warstwy a wyjściem bloku resztkowego - stąd nazwa *resztkowy*. Te bloki są znacznie łatwiejsze do trenowania, a sieci można budować z setkami takich bloków (najczęściej spotykane warianty to ResNet-52, ResNet-101 i ResNet-152). + +Można również myśleć o tej sieci jako o zdolnej do dostosowywania swojej złożoności do zbioru danych. Na początku, gdy zaczynasz trenować sieć, wartości wag są małe, a większość sygnału przechodzi przez warstwy tożsamości. W miarę postępu treningu i wzrostu wag, znaczenie parametrów sieci rośnie, a sieć dostosowuje się, aby zapewnić wymaganą moc wyrażania, potrzebną do poprawnej klasyfikacji obrazów treningowych. + +### Google Inception + +Architektura Google Inception idzie o krok dalej i buduje każdą warstwę sieci jako kombinację kilku różnych ścieżek: + + + +> Obraz z [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Tutaj należy podkreślić rolę konwolucji 1x1, ponieważ na pierwszy rzut oka mogą wydawać się bez sensu. Dlaczego mielibyśmy przetwarzać obraz za pomocą filtra 1x1? Jednak należy pamiętać, że filtry konwolucyjne działają również na kilku kanałach głębokości (początkowo - kolory RGB, w kolejnych warstwach - kanały dla różnych filtrów), a konwolucja 1x1 jest używana do mieszania tych kanałów wejściowych za pomocą różnych trenowalnych wag. Można to również postrzegać jako próbkowanie w dół (pooling) w wymiarze kanałów. + +Oto [dobry wpis na blogu](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) na ten temat oraz [oryginalny artykuł](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet to rodzina modeli o zmniejszonym rozmiarze, odpowiednia dla urządzeń mobilnych. Używaj ich, jeśli masz ograniczone zasoby i możesz poświęcić trochę dokładności. Główną ideą stojącą za nimi jest tzw. **konwolucja separowalna głębokościowo**, która pozwala reprezentować filtry konwolucyjne jako kompozycję konwolucji przestrzennych i konwolucji 1x1 w kanałach głębokości. Znacząco zmniejsza to liczbę parametrów, co sprawia, że sieć jest mniejsza i łatwiejsza do trenowania przy mniejszej ilości danych. + +Oto [dobry wpis na blogu o MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Podsumowanie + +W tej jednostce nauczyłeś się głównej koncepcji stojącej za sieciami neuronowymi do wizji komputerowej - sieci konwolucyjnych. Architektury stosowane w rzeczywistości, które napędzają klasyfikację obrazów, detekcję obiektów, a nawet generowanie obrazów, są oparte na CNN, tylko z większą liczbą warstw i dodatkowymi sztuczkami treningowymi. + +## 🚀 Wyzwanie + +W dołączonych notatnikach znajdują się uwagi na końcu dotyczące uzyskania większej dokładności. Przeprowadź eksperymenty, aby sprawdzić, czy możesz osiągnąć wyższą dokładność. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Przegląd i Samodzielna Nauka + +Chociaż CNN są najczęściej używane do zadań związanych z wizją komputerową, są one ogólnie dobre w wykrywaniu wzorców o stałym rozmiarze. Na przykład, jeśli mamy do czynienia z dźwiękami, możemy również chcieć użyć CNN do wyszukiwania określonych wzorców w sygnale audio - w takim przypadku filtry byłyby jednowymiarowe (a taka CNN nazywałaby się 1D-CNN). Czasami używa się również 3D-CNN do wyodrębniania cech w przestrzeni wielowymiarowej, takich jak określone zdarzenia występujące na wideo - CNN może uchwycić pewne wzorce zmiany cech w czasie. Przeprowadź przegląd i samodzielną naukę na temat innych zadań, które można wykonać za pomocą CNN. + +## [Zadanie](lab/README.md) + +W tym laboratorium Twoim zadaniem jest klasyfikacja różnych ras kotów i psów. Te obrazy są bardziej złożone niż zbiór danych MNIST, mają wyższe wymiary i więcej niż 10 klas. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/pl/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..2c0e1ed1 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konwolucyjne Sieci Neuronowe + +Wcześniej zauważyliśmy, że sieci neuronowe całkiem dobrze radzą sobie z obrazami, a nawet perceptron z jedną warstwą potrafi rozpoznawać odręczne cyfry z zestawu danych MNIST z zadowalającą dokładnością. Jednak zestaw danych MNIST jest wyjątkowy, ponieważ wszystkie cyfry są wyśrodkowane na obrazie, co upraszcza zadanie. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +W rzeczywistości chcemy być w stanie rozpoznawać obiekty na zdjęciu niezależnie od ich dokładnej lokalizacji na obrazie. Wizja komputerowa różni się od ogólnej klasyfikacji, ponieważ gdy próbujemy znaleźć określony obiekt na zdjęciu, skanujemy obraz w poszukiwaniu specyficznych **wzorów** i ich kombinacji. Na przykład, szukając kota, najpierw możemy poszukiwać poziomych linii, które mogą tworzyć wąsy, a następnie określona kombinacja wąsów może wskazać, że to faktycznie zdjęcie kota. Ważna jest względna pozycja i obecność określonych wzorów, a nie ich dokładne położenie na obrazie. + +Aby wyodrębnić wzory, użyjemy pojęcia **filtrów konwolucyjnych**. Jak wiadomo, obraz jest reprezentowany przez macierz 2D lub tensor 3D z głębią kolorów. Zastosowanie filtra oznacza, że bierzemy stosunkowo małą macierz **jądra filtra** i dla każdego piksela w oryginalnym obrazie obliczamy średnią ważoną z sąsiednich punktów. Możemy to sobie wyobrazić jako małe okno przesuwające się po całym obrazie i uśredniające wszystkie piksele zgodnie z wagami w macierzy jądra filtra. + +![Filtr krawędzi pionowych](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![Filtr krawędzi poziomych](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) +----|---- + +> Obraz autorstwa Dmitry Soshnikov + +Na przykład, jeśli zastosujemy filtry krawędzi pionowych i poziomych o rozmiarze 3x3 do cyfr z MNIST, możemy uzyskać wyróżnienia (np. wysokie wartości) tam, gdzie w oryginalnym obrazie występują krawędzie pionowe i poziome. Tak więc te dwa filtry mogą być używane do "wyszukiwania" krawędzi. Podobnie możemy projektować różne filtry, aby wyszukiwać inne wzory na niskim poziomie: + +> Obraz [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Jednak, podczas gdy możemy projektować filtry ręcznie, aby wyodrębniać pewne wzory, możemy również zaprojektować sieć w taki sposób, aby sama uczyła się wzorów automatycznie. To jedna z głównych idei stojących za CNN. + +## Główne idee stojące za CNN + +Działanie CNN opiera się na następujących ważnych założeniach: + +* Filtry konwolucyjne mogą wyodrębniać wzory +* Możemy zaprojektować sieć w taki sposób, aby filtry były trenowane automatycznie +* Możemy użyć tego samego podejścia do znajdowania wzorów w cechach na wysokim poziomie, a nie tylko w oryginalnym obrazie. W ten sposób ekstrakcja cech w CNN działa na hierarchii cech, zaczynając od kombinacji pikseli na niskim poziomie, aż po kombinacje części obrazu na wyższym poziomie. + +![Hierarchiczna Ekstrakcja Cech](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) + +> Obraz z [artykułu Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), opartego na [ich badaniach](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Ćwiczenia: Konwolucyjne Sieci Neuronowe + +Kontynuujmy eksplorację działania konwolucyjnych sieci neuronowych i dowiedzmy się, jak możemy osiągnąć trenowalne filtry, pracując z odpowiednimi notatnikami: + +* [Konwolucyjne Sieci Neuronowe - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konwolucyjne Sieci Neuronowe - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Architektura Piramidy + +Większość CNN używanych do przetwarzania obrazów stosuje tak zwaną architekturę piramidy. Pierwsza warstwa konwolucyjna zastosowana do oryginalnych obrazów zazwyczaj ma stosunkowo niewielką liczbę filtrów (8-16), które odpowiadają różnym kombinacjom pikseli, takim jak poziome/pionowe linie lub kreski. Na następnym poziomie zmniejszamy wymiar przestrzenny sieci i zwiększamy liczbę filtrów, co odpowiada większej liczbie możliwych kombinacji prostych cech. Z każdą warstwą, w miarę zbliżania się do końcowego klasyfikatora, wymiary przestrzenne obrazu maleją, a liczba filtrów rośnie. + +Na przykład, spójrzmy na architekturę VGG-16, sieci, która osiągnęła 92,7% dokładności w klasyfikacji top-5 ImageNet w 2014 roku: + +![Warstwy ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) + +![Piramida ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) + +> Obraz z [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Najbardziej Znane Architektury CNN + +[Kontynuuj naukę o najbardziej znanych architekturach CNN](CNN_Architectures.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić poprawność tłumaczenia, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/pl/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..ef31d198 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Klasyfikacja Twarzy Zwierząt Domowych + +Zadanie laboratoryjne z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Wyobraź sobie, że musisz stworzyć aplikację dla przedszkola dla zwierząt, która kataloguje wszystkie zwierzęta. Jedną z świetnych funkcji takiej aplikacji byłoby automatyczne rozpoznawanie rasy na podstawie fotografii. Można to skutecznie osiągnąć za pomocą sieci neuronowych. + +Twoim zadaniem jest wytrenowanie konwolucyjnej sieci neuronowej do klasyfikacji różnych ras kotów i psów, korzystając z zestawu danych **Pet Faces**. + +## Zestaw Danych + +Użyjemy zestawu danych **Pet Faces**, który pochodzi z [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) pets dataset. Zawiera on 35 różnych ras psów i kotów. + +![Zestaw danych, z którym będziemy pracować](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) + +Aby pobrać zestaw danych, użyj tego fragmentu kodu: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Rozpoczęcie Pracy z Notebookiem + +Rozpocznij pracę z laboratorium, otwierając [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Wnioski + +Rozwiązałeś stosunkowo złożony problem klasyfikacji obrazów od podstaw! Było całkiem sporo klas, a mimo to udało Ci się osiągnąć rozsądną dokładność! Warto również zmierzyć top-k accuracy, ponieważ łatwo pomylić niektóre klasy, które nawet dla ludzi nie są wyraźnie różne. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić poprawność tłumaczenia, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..c6597316 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Wstępnie Wytrenowane Sieci i Transfer Learning + +Trenowanie CNN-ów może zająć dużo czasu i wymaga dużej ilości danych. Jednak większość czasu poświęca się na naukę najlepszych filtrów niskiego poziomu, które sieć może wykorzystać do wyodrębniania wzorców z obrazów. Naturalnie nasuwa się pytanie – czy możemy użyć sieci neuronowej wytrenowanej na jednym zbiorze danych i dostosować ją do klasyfikacji innych obrazów bez konieczności pełnego procesu trenowania? + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +To podejście nazywa się **transfer learning**, ponieważ przenosimy pewną wiedzę z jednego modelu sieci neuronowej do innego. W transfer learning zazwyczaj zaczynamy od wstępnie wytrenowanego modelu, który został wytrenowany na dużym zbiorze obrazów, takim jak **ImageNet**. Modele te potrafią już dobrze wyodrębniać różne cechy z ogólnych obrazów, a w wielu przypadkach zbudowanie klasyfikatora na podstawie tych wyodrębnionych cech może przynieść dobre rezultaty. + +> ✅ Transfer Learning to termin, który można znaleźć w innych dziedzinach akademickich, takich jak edukacja. Odnosi się do procesu przenoszenia wiedzy z jednej dziedziny i stosowania jej w innej. + +## Wstępnie Wytrenowane Modele jako Ekstraktory Cech + +Sieci konwolucyjne, o których mówiliśmy w poprzedniej sekcji, zawierają wiele warstw, z których każda ma za zadanie wyodrębniać pewne cechy z obrazu, zaczynając od kombinacji pikseli niskiego poziomu (takich jak linie poziome/pionowe czy kreski), aż po bardziej złożone kombinacje cech, odpowiadające np. oku płomienia. Jeśli wytrenujemy CNN na wystarczająco dużym zbiorze ogólnych i zróżnicowanych obrazów, sieć powinna nauczyć się wyodrębniać te wspólne cechy. + +Zarówno Keras, jak i PyTorch zawierają funkcje umożliwiające łatwe załadowanie wstępnie wytrenowanych wag sieci neuronowych dla niektórych popularnych architektur, z których większość została wytrenowana na obrazach z ImageNet. Najczęściej używane z nich są opisane na stronie [Architektury CNN](../07-ConvNets/CNN_Architectures.md) z poprzedniej lekcji. W szczególności warto rozważyć użycie jednego z następujących modeli: + +* **VGG-16/VGG-19** – stosunkowo proste modele, które nadal dają dobrą dokładność. Często użycie VGG jako pierwszej próby to dobry wybór, aby zobaczyć, jak działa transfer learning. +* **ResNet** – rodzina modeli zaproponowanych przez Microsoft Research w 2015 roku. Mają więcej warstw, a zatem wymagają więcej zasobów. +* **MobileNet** – rodzina modeli o zmniejszonym rozmiarze, odpowiednia dla urządzeń mobilnych. Używaj ich, jeśli masz ograniczone zasoby i możesz poświęcić trochę dokładności. + +Oto przykładowe cechy wyodrębnione z obrazu kota przez sieć VGG-16: + +![Cechy wyodrębnione przez VGG-16](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) + +## Zbiór Danych Koty vs. Psy + +W tym przykładzie użyjemy zbioru danych [Koty i Psy](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), który jest bardzo zbliżony do rzeczywistego scenariusza klasyfikacji obrazów. + +## ✍️ Ćwiczenie: Transfer Learning + +Zobaczmy transfer learning w praktyce w odpowiednich notebookach: + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Wizualizacja Adwersarialnego Kota + +Wstępnie wytrenowana sieć neuronowa zawiera różne wzorce w swoim *mózgu*, w tym pojęcia **idealnego kota** (jak również idealnego psa, idealnej zebry itd.). Byłoby interesujące jakoś **zwizualizować ten obraz**. Nie jest to jednak proste, ponieważ wzorce są rozproszone po wagach sieci i zorganizowane w hierarchiczną strukturę. + +Jednym z podejść, które możemy zastosować, jest rozpoczęcie od losowego obrazu, a następnie próba użycia techniki **optymalizacji metodą gradientu prostego**, aby dostosować ten obraz w taki sposób, aby sieć zaczęła myśleć, że to kot. + +![Pętla optymalizacji obrazu](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) + +Jednak jeśli to zrobimy, otrzymamy coś bardzo podobnego do losowego szumu. Dzieje się tak, ponieważ *istnieje wiele sposobów, aby sieć uznała obraz wejściowy za kota*, w tym takie, które wizualnie nie mają sensu. Chociaż te obrazy zawierają wiele wzorców typowych dla kota, nic nie zmusza ich do bycia wizualnie rozpoznawalnymi. + +Aby poprawić wynik, możemy dodać kolejny składnik do funkcji straty, zwany **stratą wariacji**. Jest to metryka pokazująca, jak podobne są sąsiadujące piksele obrazu. Minimalizowanie straty wariacji sprawia, że obraz staje się gładszy i pozbawiony szumu – ujawniając bardziej wizualnie atrakcyjne wzorce. Oto przykład takich "idealnych" obrazów, które są klasyfikowane jako kot i zebra z wysokim prawdopodobieństwem: + +![Idealny Kot](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![Idealna Zebra](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) +-----|----- +*Idealny Kot* | *Idealna Zebra* + +Podobne podejście można zastosować do przeprowadzania tzw. **ataków adwersarialnych** na sieć neuronową. Załóżmy, że chcemy oszukać sieć neuronową i sprawić, by pies wyglądał jak kot. Jeśli weźmiemy obraz psa, który jest rozpoznawany przez sieć jako pies, możemy go nieco zmodyfikować za pomocą optymalizacji metodą gradientu prostego, aż sieć zacznie klasyfikować go jako kota: + +![Obraz psa](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![Obraz psa klasyfikowany jako kot](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) +-----|----- +*Oryginalny obraz psa* | *Obraz psa klasyfikowany jako kot* + +Zobacz kod, aby odtworzyć powyższe wyniki w następującym notebooku: + +* [Idealny i Adwersarialny Kot - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Podsumowanie + +Dzięki transfer learning możesz szybko stworzyć klasyfikator do zadania klasyfikacji obiektów niestandardowych i osiągnąć wysoką dokładność. Widać, że bardziej złożone zadania, które teraz rozwiązujemy, wymagają większej mocy obliczeniowej i nie mogą być łatwo rozwiązane na CPU. W następnej jednostce spróbujemy użyć bardziej lekkiej implementacji, aby wytrenować ten sam model przy użyciu mniejszych zasobów obliczeniowych, co skutkuje tylko nieznacznie niższą dokładnością. + +## 🚀 Wyzwanie + +W towarzyszących notebookach znajdują się notatki na końcu dotyczące tego, jak transfer wiedzy działa najlepiej z nieco podobnymi danymi treningowymi (np. nowy rodzaj zwierzęcia). Przeprowadź eksperymenty z zupełnie nowymi typami obrazów, aby zobaczyć, jak dobrze lub źle działają Twoje modele transfer learning. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Przegląd i Samodzielna Nauka + +Przeczytaj [TrainingTricks.md](TrainingTricks.md), aby pogłębić swoją wiedzę na temat innych sposobów trenowania modeli. + +## [Zadanie](lab/README.md) + +W tym laboratorium użyjemy rzeczywistego zbioru danych [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) zawierającego 35 ras kotów i psów, i zbudujemy klasyfikator transfer learning. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..392288f5 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Triki w trenowaniu głębokich sieci neuronowych + +Wraz z pogłębianiem się sieci neuronowych, proces ich trenowania staje się coraz bardziej wymagający. Jednym z głównych problemów są tzw. [zanikające gradienty](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) lub [eksplodujące gradienty](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Ten artykuł](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) dobrze wprowadza w te zagadnienia. + +Aby uczynić trenowanie głębokich sieci bardziej efektywnym, można zastosować kilka technik. + +## Utrzymywanie wartości w rozsądnym zakresie + +Aby zapewnić stabilność obliczeń numerycznych, należy upewnić się, że wszystkie wartości w sieci neuronowej mieszczą się w rozsądnym zakresie, zazwyczaj [-1..1] lub [0..1]. Nie jest to bardzo rygorystyczny wymóg, ale natura obliczeń zmiennoprzecinkowych sprawia, że wartości o różnych rzędach wielkości nie mogą być dokładnie przetwarzane razem. Na przykład, jeśli dodamy 10-10 i 1010, prawdopodobnie otrzymamy 1010, ponieważ mniejsza wartość zostanie "przekształcona" do tego samego rzędu co większa, co spowoduje utratę mantysy. + +Większość funkcji aktywacji ma nieliniowości w zakresie [-1..1], dlatego sensowne jest skalowanie wszystkich danych wejściowych do zakresu [-1..1] lub [0..1]. + +## Inicjalizacja wag + +Idealnie, chcemy, aby wartości pozostawały w tym samym zakresie po przejściu przez warstwy sieci. Dlatego ważne jest, aby inicjalizować wagi w taki sposób, aby zachować rozkład wartości. + +Rozkład normalny **N(0,1)** nie jest dobrym pomysłem, ponieważ jeśli mamy *n* wejść, odchylenie standardowe wyjścia wynosiłoby *n*, a wartości prawdopodobnie wyjdą poza zakres [0..1]. + +Często stosowane inicjalizacje to: + + * Rozkład jednostajny -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** gwarantuje, że dla wejść o średniej zero i odchyleniu standardowym równym 1, te same parametry zostaną zachowane + * **N(0,√2/(n_in+n_out))** -- tzw. **inicjalizacja Xaviera** (`glorot`), która pomaga utrzymać sygnały w zakresie zarówno podczas propagacji w przód, jak i wstecz + +## Normalizacja wsadowa + +Nawet przy odpowiedniej inicjalizacji wag, wagi mogą podczas trenowania przyjmować dowolnie duże lub małe wartości, co powoduje, że sygnały wychodzą poza właściwy zakres. Możemy przywrócić sygnały do odpowiedniego zakresu, stosując jedną z technik **normalizacji**. Chociaż istnieje kilka takich technik (normalizacja wag, normalizacja warstwowa), najczęściej stosowana jest normalizacja wsadowa. + +Idea **normalizacji wsadowej** polega na uwzględnieniu wszystkich wartości w minibatchu i przeprowadzeniu normalizacji (tj. odjęciu średniej i podzieleniu przez odchylenie standardowe) na podstawie tych wartości. Jest to implementowane jako warstwa sieci, która wykonuje tę normalizację po zastosowaniu wag, ale przed funkcją aktywacji. W rezultacie możemy uzyskać wyższą końcową dokładność i szybsze trenowanie. + +Oto [oryginalny artykuł](https://arxiv.org/pdf/1502.03167.pdf) na temat normalizacji wsadowej, [wyjaśnienie na Wikipedii](https://en.wikipedia.org/wiki/Batch_normalization) oraz [dobry wprowadzający artykuł](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (i [wersja po rosyjsku](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** to ciekawa technika, która usuwa pewien procent losowych neuronów podczas trenowania. Jest to również implementowane jako warstwa z jednym parametrem (procent neuronów do usunięcia, zazwyczaj 10%-50%), a podczas trenowania zeruje losowe elementy wektora wejściowego przed przekazaniem go do kolejnej warstwy. + +Choć może to brzmieć dziwnie, efekt dropout można zobaczyć podczas trenowania klasyfikatora cyfr MNIST w notatniku [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Przyspiesza on trenowanie i pozwala osiągnąć wyższą dokładność w mniejszej liczbie epok. + +Efekt ten można wyjaśnić na kilka sposobów: + + * Można to uznać za losowy czynnik szokujący dla modelu, który wyprowadza optymalizację z lokalnego minimum + * Można to traktować jako *implicit model averaging*, ponieważ można powiedzieć, że podczas dropout trenujemy nieco inny model + +> *Niektórzy twierdzą, że gdy osoba pod wpływem alkoholu próbuje się czegoś nauczyć, zapamięta to lepiej następnego ranka w porównaniu z osobą trzeźwą, ponieważ mózg z pewnymi "niedziałającymi" neuronami lepiej dostosowuje się do uchwycenia sensu. Nigdy nie testowaliśmy tego sami, czy to prawda.* + +## Zapobieganie przeuczeniu + +Jednym z bardzo ważnych aspektów głębokiego uczenia jest umiejętność zapobiegania [przeuczeniu](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Chociaż może być kuszące użycie bardzo potężnego modelu sieci neuronowej, zawsze należy zrównoważyć liczbę parametrów modelu z liczbą próbek treningowych. + +> Upewnij się, że rozumiesz koncepcję [przeuczenia](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), którą wcześniej omówiliśmy! + +Istnieje kilka sposobów zapobiegania przeuczeniu: + + * Wczesne zatrzymanie -- ciągłe monitorowanie błędu na zbiorze walidacyjnym i zatrzymanie trenowania, gdy błąd walidacyjny zaczyna rosnąć. + * Jawne zanikanie wag / Regularizacja -- dodanie dodatkowej kary do funkcji straty za wysokie wartości bezwzględne wag, co zapobiega uzyskiwaniu przez model bardzo niestabilnych wyników + * Uśrednianie modeli -- trenowanie kilku modeli i następnie uśrednianie wyników. Pomaga to zminimalizować wariancję. + * Dropout (Implicit Model Averaging) + +## Optymalizatory / Algorytmy trenowania + +Kolejnym ważnym aspektem trenowania jest wybór odpowiedniego algorytmu trenowania. Chociaż klasyczny **gradient descent** jest rozsądnym wyborem, czasami może być zbyt wolny lub prowadzić do innych problemów. + +W głębokim uczeniu stosujemy **Stochastic Gradient Descent** (SGD), czyli gradient descent stosowany do minibatchy, losowo wybranych ze zbioru treningowego. Wagi są dostosowywane za pomocą tego wzoru: + +wt+1 = wt - η∇ℒ + +### Momentum + +W **momentum SGD** przechowujemy część gradientu z poprzednich kroków. Jest to podobne do sytuacji, gdy poruszamy się z bezwładnością, a następnie otrzymujemy impuls w innym kierunku – nasza trajektoria nie zmienia się natychmiast, ale zachowuje część pierwotnego ruchu. Wprowadzamy tutaj dodatkowy wektor v, który reprezentuje *prędkość*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Parametr γ wskazuje, w jakim stopniu uwzględniamy bezwładność: γ=0 odpowiada klasycznemu SGD; γ=1 to czysta równanie ruchu. + +### Adam, Adagrad, itd. + +Ponieważ w każdej warstwie mnożymy sygnały przez pewną macierz Wi, w zależności od ||Wi|| gradient może albo zanikać i być bliski 0, albo rosnąć w nieskończoność. To istota problemu eksplodujących/zanikających gradientów. + +Jednym z rozwiązań tego problemu jest użycie jedynie kierunku gradientu w równaniu, ignorując jego wartość bezwzględną, tj. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), gdzie ||∇ℒ|| = √∑(∇ℒ)2 + +Ten algorytm nazywa się **Adagrad**. Inne algorytmy wykorzystujące podobną ideę: **RMSProp**, **Adam** + +> **Adam** jest uważany za bardzo efektywny algorytm w wielu zastosowaniach, więc jeśli nie jesteś pewien, którego użyć - wybierz Adam. + +### Gradient clipping + +Gradient clipping to rozszerzenie powyższej idei. Gdy ||∇ℒ|| ≤ θ, uwzględniamy oryginalny gradient w optymalizacji wag, a gdy ||∇ℒ|| > θ - dzielimy gradient przez jego normę. Tutaj θ to parametr, w większości przypadków możemy przyjąć θ=1 lub θ=10. + +### Zmniejszanie współczynnika uczenia + +Sukces trenowania często zależy od parametru współczynnika uczenia η. Logiczne jest założenie, że większe wartości η prowadzą do szybszego trenowania, co jest pożądane na początku procesu, a następnie mniejsze wartości η pozwalają na dopracowanie sieci. Dlatego w większości przypadków chcemy zmniejszać η w trakcie trenowania. + +Można to zrobić, mnożąc η przez pewną liczbę (np. 0,98) po każdej epoce trenowania lub stosując bardziej skomplikowany **harmonogram współczynnika uczenia**. + +## Różne architektury sieci + +Wybór odpowiedniej architektury sieci dla danego problemu może być trudny. Zazwyczaj wybieramy architekturę, która sprawdziła się w naszym konkretnym zadaniu (lub podobnym). Oto [dobry przegląd](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) architektur sieci neuronowych dla wizji komputerowej. + +> Ważne jest, aby wybrać architekturę, która będzie wystarczająco potężna dla liczby dostępnych próbek treningowych. Wybór zbyt potężnego modelu może prowadzić do [przeuczenia](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Innym dobrym podejściem jest użycie architektury, która automatycznie dostosowuje się do wymaganej złożoności. Do pewnego stopnia architektury takie jak **ResNet** i **Inception** są samodostosowujące. [Więcej o architekturach wizji komputerowej](../07-ConvNets/CNN_Architectures.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..3a00f933 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Klasyfikacja zwierząt domowych z Oxfordu za pomocą transferu uczenia + +Zadanie laboratoryjne z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Wyobraź sobie, że musisz stworzyć aplikację dla przedszkola dla zwierząt, która kataloguje wszystkie zwierzęta. Jedną z świetnych funkcji takiej aplikacji byłoby automatyczne rozpoznawanie rasy na podstawie fotografii. W tym zadaniu użyjemy transferu uczenia, aby klasyfikować zdjęcia zwierząt domowych z rzeczywistego życia, korzystając z zestawu danych [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Zestaw danych + +Użyjemy oryginalnego zestawu danych [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), który zawiera 35 różnych ras psów i kotów. + +Aby pobrać zestaw danych, użyj tego fragmentu kodu: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Rozpoczęcie pracy z notebookiem + +Rozpocznij laboratorium, otwierając [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Wnioski + +Transfer uczenia i sieci wstępnie wytrenowane pozwalają nam stosunkowo łatwo rozwiązywać rzeczywiste problemy klasyfikacji obrazów. Jednak sieci wstępnie wytrenowane działają dobrze na obrazach podobnego rodzaju, a jeśli zaczniemy klasyfikować bardzo różne obrazy (np. obrazy medyczne), prawdopodobnie uzyskamy znacznie gorsze wyniki. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/pl/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..111733d7 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoenkodery + +Podczas trenowania CNN, jednym z problemów jest potrzeba dużej ilości danych oznaczonych. W przypadku klasyfikacji obrazów musimy ręcznie przyporządkować obrazy do różnych klas, co wymaga sporego wysiłku. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Możemy jednak chcieć wykorzystać surowe (nieoznaczone) dane do trenowania ekstraktorów cech CNN, co nazywa się **uczeniem samonadzorowanym**. Zamiast etykiet, użyjemy obrazów treningowych zarówno jako wejścia, jak i wyjścia sieci. Główna idea **autoenkodera** polega na tym, że mamy **sieć enkodera**, która przekształca obraz wejściowy w pewną **przestrzeń latentną** (zwykle jest to wektor o mniejszym rozmiarze), a następnie **sieć dekodera**, której celem jest odtworzenie oryginalnego obrazu. + +> ✅ [Autoenkoder](https://wikipedia.org/wiki/Autoencoder) to "rodzaj sztucznej sieci neuronowej używanej do nauki efektywnego kodowania nieoznaczonych danych." + +Ponieważ trenujemy autoenkoder, aby uchwycić jak najwięcej informacji z oryginalnego obrazu w celu dokładnej rekonstrukcji, sieć stara się znaleźć najlepsze **osadzenie** obrazów wejściowych, aby uchwycić ich znaczenie. + +![Schemat Autoenkodera](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) + +> Obraz z [blogu Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenariusze użycia Autoenkoderów + +Choć samo odtwarzanie oryginalnych obrazów może wydawać się mało użyteczne, istnieje kilka scenariuszy, w których autoenkodery są szczególnie przydatne: + +* **Obniżanie wymiaru obrazów w celu wizualizacji** lub **trenowanie osadzeń obrazów**. Zazwyczaj autoenkodery dają lepsze wyniki niż PCA, ponieważ uwzględniają przestrzenną naturę obrazów i hierarchiczne cechy. +* **Usuwanie szumów**, czyli eliminowanie zakłóceń z obrazu. Ponieważ szum zawiera wiele niepotrzebnych informacji, autoenkoder nie jest w stanie zmieścić ich wszystkich w stosunkowo małej przestrzeni latentnej, dzięki czemu uchwyca tylko istotne części obrazu. Podczas trenowania usuwania szumów zaczynamy od oryginalnych obrazów, a jako wejście dla autoenkodera używamy obrazów z dodanym sztucznie szumem. +* **Super-rozdzielczość**, czyli zwiększanie rozdzielczości obrazu. Zaczynamy od obrazów o wysokiej rozdzielczości, a jako wejście dla autoenkodera używamy obrazów o niższej rozdzielczości. +* **Modele generatywne**. Po przeszkoleniu autoenkodera, część dekodera może być używana do tworzenia nowych obiektów, zaczynając od losowych wektorów latentnych. + +## Wariacyjne Autoenkodery (VAE) + +Tradycyjne autoenkodery w pewien sposób redukują wymiar danych wejściowych, identyfikując istotne cechy obrazów wejściowych. Jednak wektory latentne często nie mają większego sensu. Innymi słowy, biorąc za przykład zbiór danych MNIST, ustalenie, które cyfry odpowiadają różnym wektorom latentnym, nie jest łatwym zadaniem, ponieważ bliskie wektory latentne niekoniecznie odpowiadają tym samym cyfrom. + +Z drugiej strony, aby trenować modele *generatywne*, lepiej jest mieć pewne zrozumienie przestrzeni latentnej. Ta idea prowadzi nas do **wariacyjnego autoenkodera** (VAE). + +VAE to autoenkoder, który uczy się przewidywać *rozkład statystyczny* parametrów latentnych, tzw. **rozkład latentny**. Na przykład możemy chcieć, aby wektory latentne były rozłożone normalnie z pewną średnią zmean i odchyleniem standardowym zsigma (zarówno średnia, jak i odchylenie standardowe są wektorami o pewnej wymiarowości d). Enkoder w VAE uczy się przewidywać te parametry, a następnie dekoder bierze losowy wektor z tego rozkładu, aby odtworzyć obiekt. + +Podsumowując: + + * Z wektora wejściowego przewidujemy `z_mean` i `z_log_sigma` (zamiast przewidywać samo odchylenie standardowe, przewidujemy jego logarytm) + * Pobieramy próbkę wektora `sample` z rozkładu N(zmean,exp(zlog\_sigma)) + * Dekoder próbuje odtworzyć oryginalny obraz, używając `sample` jako wektora wejściowego + + + +> Obraz z [tego wpisu na blogu](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) autorstwa Isaaka Dykemana + +Wariacyjne autoenkodery używają złożonej funkcji straty, która składa się z dwóch części: + +* **Strata rekonstrukcji** to funkcja straty, która pokazuje, jak blisko odtworzony obraz jest do celu (może to być średni błąd kwadratowy, czyli MSE). Jest to ta sama funkcja straty, co w zwykłych autoenkoderach. +* **Strata KL**, która zapewnia, że rozkład zmiennych latentnych pozostaje bliski rozkładowi normalnemu. Opiera się na pojęciu [dywergencji Kullbacka-Leiblera](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - metryki do oszacowania podobieństwa dwóch rozkładów statystycznych. + +Jedną z ważnych zalet VAE jest to, że pozwalają na stosunkowo łatwe generowanie nowych obrazów, ponieważ wiemy, z jakiego rozkładu pobierać wektory latentne. Na przykład, jeśli przeszkolimy VAE z 2-wymiarowym wektorem latentnym na MNIST, możemy następnie zmieniać komponenty wektora latentnego, aby uzyskać różne cyfry: + +vaemnist + +> Obraz autorstwa [Dmitrija Soshnikova](http://soshnikov.com) + +Zauważ, jak obrazy płynnie przechodzą jeden w drugi, gdy zaczynamy pobierać wektory latentne z różnych części przestrzeni parametrów latentnych. Możemy również zwizualizować tę przestrzeń w 2D: + +vaemnist cluster + +> Obraz autorstwa [Dmitrija Soshnikova](http://soshnikov.com) + +## ✍️ Ćwiczenia: Autoenkodery + +Dowiedz się więcej o autoenkoderach w tych odpowiednich notatnikach: + +* [Autoenkodery w TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoenkodery w PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Właściwości Autoenkoderów + +* **Specyficzne dla danych** - działają dobrze tylko na typie obrazów, na których zostały przeszkolone. Na przykład, jeśli przeszkolimy sieć super-rozdzielczości na kwiatach, nie będzie dobrze działać na portretach. Dzieje się tak, ponieważ sieć może tworzyć obrazy o wyższej rozdzielczości, wykorzystując szczegóły z cech wyuczonych na zbiorze danych treningowych. +* **Stratne** - odtworzony obraz nie jest identyczny z oryginalnym obrazem. Charakter strat jest definiowany przez *funkcję straty* używaną podczas treningu. +* Działa na **danych nieoznaczonych** + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Podsumowanie + +W tej lekcji dowiedziałeś się o różnych typach autoenkoderów dostępnych dla naukowca zajmującego się AI. Nauczyłeś się, jak je budować i jak używać ich do odtwarzania obrazów. Dowiedziałeś się również o VAE i jak używać ich do generowania nowych obrazów. + +## 🚀 Wyzwanie + +W tej lekcji dowiedziałeś się o używaniu autoenkoderów do obrazów. Ale można je również używać do muzyki! Sprawdź projekt Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), który wykorzystuje autoenkodery do nauki odtwarzania muzyki. Przeprowadź kilka [eksperymentów](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) z tą biblioteką, aby zobaczyć, co możesz stworzyć. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Przegląd i Samodzielna Nauka + +Dla odniesienia, przeczytaj więcej o autoenkoderach w tych zasobach: + +* [Budowanie Autoenkoderów w Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Wpis na blogu NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Wariacyjne Autoenkodery Wyjaśnione](https://kvfrans.com/variational-autoencoders-explained/) +* [Wariacyjne Autoenkodery Warunkowe](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Zadanie + +Na końcu [tego notatnika używającego TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) znajdziesz 'zadanie' - użyj tego jako swojego zadania. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/10-GANs/README.md b/translations/pl/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..076f5171 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generative Adversarial Networks + +W poprzedniej sekcji poznaliśmy **modele generatywne**: modele, które potrafią generować nowe obrazy podobne do tych z zestawu treningowego. VAE był dobrym przykładem modelu generatywnego. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Jednakże, jeśli spróbujemy wygenerować coś naprawdę znaczącego, na przykład obraz w rozsądnej rozdzielczości, za pomocą VAE, zauważymy, że trening nie przebiega dobrze. W takim przypadku powinniśmy poznać inną architekturę, specjalnie zaprojektowaną dla modeli generatywnych - **Generative Adversarial Networks**, czyli GAN. + +Główna idea GAN polega na użyciu dwóch sieci neuronowych, które będą trenowane przeciwko sobie: + + + +> Obraz autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Mały słowniczek: +> * **Generator** to sieć, która przyjmuje losowy wektor i generuje obraz jako wynik +> * **Dyskryminator** to sieć, która przyjmuje obraz i ma określić, czy jest to prawdziwy obraz (z zestawu treningowego), czy został wygenerowany przez generator. Jest to zasadniczo klasyfikator obrazów. + +### Dyskryminator + +Architektura dyskryminatora nie różni się od zwykłej sieci klasyfikacji obrazów. W najprostszej wersji może to być w pełni połączony klasyfikator, ale najprawdopodobniej będzie to [sieć konwolucyjna](../07-ConvNets/README.md). + +> ✅ GAN oparty na sieciach konwolucyjnych nazywany jest [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Dyskryminator CNN składa się z następujących warstw: kilku konwolucji+poolingów (z malejącym rozmiarem przestrzennym) oraz jednej lub więcej w pełni połączonych warstw, aby uzyskać "wektor cech", a na końcu binarny klasyfikator. + +> ✅ 'Pooling' w tym kontekście to technika zmniejszania rozmiaru obrazu. "Warstwy pooling zmniejszają wymiary danych, łącząc wyniki klastrów neuronów na jednej warstwie w pojedynczy neuron na następnej warstwie." - [źródło](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Generator jest nieco bardziej skomplikowany. Można go traktować jako odwrócony dyskryminator. Zaczynając od wektora latentnego (zamiast wektora cech), ma warstwę w pełni połączoną, która konwertuje go na wymagany rozmiar/kształt, a następnie dekonwolucje+skalowanie w górę. Jest to podobne do części *dekodera* w [autoenkoderze](../09-Autoencoders/README.md). + +> ✅ Ponieważ warstwa konwolucyjna jest implementowana jako filtr liniowy przesuwający się po obrazie, dekonwolucja jest zasadniczo podobna do konwolucji i może być zaimplementowana przy użyciu tej samej logiki warstwy. + + + +> Obraz autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +### Trenowanie GAN + +GAN nazywane są **adwersarialnymi**, ponieważ istnieje ciągła rywalizacja między generatorem a dyskryminatorem. Podczas tej rywalizacji zarówno generator, jak i dyskryminator poprawiają się, dzięki czemu sieć uczy się generować coraz lepsze obrazy. + +Trening odbywa się w dwóch etapach: + +* **Trenowanie dyskryminatora**. To zadanie jest dość proste: generujemy partię obrazów za pomocą generatora, oznaczając je jako 0, co oznacza fałszywy obraz, oraz bierzemy partię obrazów z zestawu danych wejściowych (z etykietą 1, prawdziwy obraz). Uzyskujemy pewną *stratę dyskryminatora* i wykonujemy backprop. +* **Trenowanie generatora**. To jest nieco bardziej skomplikowane, ponieważ nie znamy oczekiwanego wyniku dla generatora bezpośrednio. Bierzemy całą sieć GAN składającą się z generatora połączonego z dyskryminatorem, zasilamy ją losowymi wektorami i oczekujemy, że wynik będzie równy 1 (odpowiadający prawdziwym obrazom). Następnie zamrażamy parametry dyskryminatora (nie chcemy, aby był trenowany na tym etapie) i wykonujemy backprop. + +Podczas tego procesu zarówno straty generatora, jak i dyskryminatora nie zmniejszają się znacząco. W idealnej sytuacji powinny oscylować, co odpowiada poprawie wydajności obu sieci. + +## ✍️ Ćwiczenia: GAN + +* [Notebook GAN w TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN w PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemy z trenowaniem GAN + +GAN są znane z tego, że są szczególnie trudne do trenowania. Oto kilka problemów: + +* **Mode Collapse**. Termin ten oznacza, że generator uczy się generować jeden udany obraz, który oszukuje dyskryminator, zamiast różnorodności różnych obrazów. +* **Wrażliwość na hiperparametry**. Często można zauważyć, że GAN w ogóle się nie zbiega, a następnie nagle zmniejszenie współczynnika uczenia prowadzi do zbieżności. +* Utrzymanie **równowagi** między generatorem a dyskryminatorem. W wielu przypadkach strata dyskryminatora może szybko spaść do zera, co powoduje, że generator nie jest w stanie dalej się uczyć. Aby temu zaradzić, można spróbować ustawić różne współczynniki uczenia dla generatora i dyskryminatora lub pominąć trening dyskryminatora, jeśli strata jest już zbyt niska. +* Trenowanie dla **wysokiej rozdzielczości**. Odzwierciedlając ten sam problem co w autoenkoderach, problem ten pojawia się, ponieważ odtworzenie zbyt wielu warstw sieci konwolucyjnej prowadzi do artefaktów. Problem ten jest zazwyczaj rozwiązywany za pomocą tzw. **progresywnego wzrostu**, gdzie najpierw kilka warstw jest trenowanych na obrazach o niskiej rozdzielczości, a następnie warstwy są "odblokowywane" lub dodawane. Innym rozwiązaniem byłoby dodanie dodatkowych połączeń między warstwami i trenowanie kilku rozdzielczości jednocześnie - szczegóły można znaleźć w artykule [Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048). + +## Style Transfer + +GAN to świetny sposób na generowanie artystycznych obrazów. Inną interesującą techniką jest tzw. **style transfer**, który bierze jeden **obraz treści** i przekształca go w inny styl, stosując filtry z **obrazu stylu**. + +Jak to działa: +* Zaczynamy od losowego obrazu szumu (lub od obrazu treści, ale dla lepszego zrozumienia łatwiej zacząć od losowego szumu) +* Naszym celem jest stworzenie takiego obrazu, który będzie bliski zarówno obrazowi treści, jak i obrazowi stylu. To będzie określone przez dwie funkcje strat: + - **Strata treści** jest obliczana na podstawie cech wyodrębnionych przez CNN na niektórych warstwach z bieżącego obrazu i obrazu treści + - **Strata stylu** jest obliczana między bieżącym obrazem a obrazem stylu w sprytny sposób za pomocą macierzy Grama (więcej szczegółów w [przykładowym notebooku](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* Aby obraz był bardziej gładki i usunąć szum, wprowadzamy również **Stratę wariacji**, która oblicza średnią odległość między sąsiednimi pikselami +* Główna pętla optymalizacyjna dostosowuje bieżący obraz za pomocą gradientu zstępującego (lub innego algorytmu optymalizacji), aby zminimalizować całkowitą stratę, która jest ważoną sumą wszystkich trzech strat. + +## ✍️ Przykład: [Style Transfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Podsumowanie + +W tej lekcji nauczyłeś się o GAN i jak je trenować. Poznałeś również szczególne wyzwania, z którymi ten typ sieci neuronowej może się zmierzyć, oraz strategie, jak je pokonać. + +## 🚀 Wyzwanie + +Przejdź przez [notebook Style Transfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) używając własnych obrazów. + +## Przegląd i samodzielna nauka + +Dla odniesienia, przeczytaj więcej o GAN w tych zasobach: + +* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), architektura GAN, którą warto rozważyć +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Zadanie + +Przejrzyj jeden z dwóch notebooków związanych z tą lekcją i ponownie wytrenuj GAN na własnych obrazach. Co możesz stworzyć? + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..32a9d741 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Wykrywanie Obiektów + +Modele klasyfikacji obrazów, które omawialiśmy do tej pory, przyjmowały obraz i zwracały wynik kategoryczny, na przykład klasę 'liczba' w problemie MNIST. Jednak w wielu przypadkach nie wystarczy wiedzieć, że na zdjęciu znajdują się obiekty – chcemy również określić ich dokładne położenie. Na tym właśnie polega **wykrywanie obiektów**. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Wykrywanie Obiektów](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) + +> Obraz z [strony YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Naiwne podejście do wykrywania obiektów + +Załóżmy, że chcemy znaleźć kota na zdjęciu. Bardzo naiwne podejście do wykrywania obiektów mogłoby wyglądać następująco: + +1. Podziel obraz na wiele kafelków. +2. Przeprowadź klasyfikację obrazu dla każdego kafelka. +3. Kafelki, które dają wystarczająco wysoką aktywację, można uznać za zawierające poszukiwany obiekt. + +![Naiwne wykrywanie obiektów](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) + +> *Obraz z [notatnika ćwiczeniowego](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Jednak takie podejście jest dalekie od ideału, ponieważ pozwala algorytmowi na bardzo niedokładne określenie granic obiektu. Aby uzyskać bardziej precyzyjne lokalizacje, musimy zastosować pewien rodzaj **regresji**, aby przewidzieć współrzędne granic obiektów – a do tego potrzebne są odpowiednie zestawy danych. + +## Regresja w wykrywaniu obiektów + +[Ten wpis na blogu](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) oferuje świetne wprowadzenie do wykrywania kształtów. + +## Zestawy danych do wykrywania obiektów + +Możesz natknąć się na następujące zestawy danych do tego zadania: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) – 20 klas +* [COCO](http://cocodataset.org/#home) – Common Objects in Context. 80 klas, granice obiektów i maski segmentacyjne + +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) + +## Metryki wykrywania obiektów + +### Intersection over Union + +Podczas gdy w klasyfikacji obrazów łatwo jest zmierzyć, jak dobrze działa algorytm, w wykrywaniu obiektów musimy ocenić zarówno poprawność klasy, jak i precyzję lokalizacji przewidzianych granic obiektów. Do tego ostatniego używamy metryki zwanej **Intersection over Union** (IoU), która mierzy, jak dobrze dwa obszary (lub dwie dowolne figury) się pokrywają. + +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) + +> *Rysunek 2 z [tego świetnego wpisu na blogu o IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Idea jest prosta – dzielimy obszar przecięcia dwóch figur przez obszar ich unii. Dla dwóch identycznych obszarów IoU wynosi 1, a dla całkowicie rozłącznych obszarów wynosi 0. W innych przypadkach wartość IoU mieści się w przedziale od 0 do 1. Zazwyczaj bierzemy pod uwagę tylko te granice obiektów, dla których IoU przekracza określoną wartość. + +### Średnia precyzja (Average Precision) + +Załóżmy, że chcemy zmierzyć, jak dobrze rozpoznawana jest dana klasa obiektów $C$. Do tego celu używamy metryki **Average Precision**, która jest obliczana w następujący sposób: + +1. Rozważ krzywą Precision-Recall, która pokazuje dokładność w zależności od wartości progu detekcji (od 0 do 1). +2. W zależności od progu, wykryjemy więcej lub mniej obiektów na obrazie, co da różne wartości precyzji i czułości. +3. Krzywa wygląda tak: + + + +> *Obraz z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Średnia precyzja dla danej klasy $C$ to pole pod tą krzywą. Dokładniej, oś Recall jest zazwyczaj podzielona na 10 części, a precyzja jest uśredniana dla wszystkich tych punktów: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP i IoU + +Rozważamy tylko te detekcje, dla których IoU przekracza określoną wartość. Na przykład w zestawie danych PASCAL VOC zazwyczaj $\mbox{IoU Threshold} = 0.5$, podczas gdy w COCO AP jest mierzony dla różnych wartości $\mbox{IoU Threshold}$. + + + +> *Obraz z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Średnia średnia precyzja – mAP + +Główna metryka dla wykrywania obiektów nazywa się **Mean Average Precision**, czyli **mAP**. Jest to wartość Average Precision, uśredniona dla wszystkich klas obiektów, a czasami także dla różnych wartości $\mbox{IoU Threshold}$. Szczegółowy opis procesu obliczania **mAP** znajdziesz +[w tym wpisie na blogu](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), a także [tutaj z przykładami kodu](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Różne podejścia do wykrywania obiektów + +Istnieją dwie główne klasy algorytmów wykrywania obiektów: + +* **Sieci propozycji regionów** (R-CNN, Fast R-CNN, Faster R-CNN). Główna idea polega na generowaniu **Regionów Zainteresowania** (ROI) i uruchamianiu CNN na nich, szukając maksymalnej aktywacji. Jest to trochę podobne do naiwnego podejścia, z wyjątkiem tego, że ROI są generowane w bardziej inteligentny sposób. Jednym z głównych minusów takich metod jest ich wolne działanie, ponieważ wymagają wielu przejść klasyfikatora CNN przez obraz. +* Metody **jednoprzebiegowe** (YOLO, SSD, RetinaNet). W tych architekturach projektujemy sieć tak, aby przewidywała zarówno klasy, jak i ROI w jednym przebiegu. + +### R-CNN: Region-Based CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) używa [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) do generowania hierarchicznej struktury regionów ROI, które następnie są przepuszczane przez ekstraktory cech CNN i klasyfikatory SVM, aby określić klasę obiektu, oraz regresję liniową, aby określić współrzędne *granicy obiektu*. [Oficjalny artykuł](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) + +> *Obraz z van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) + +> *Obrazy z [tego bloga](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +To podejście jest podobne do R-CNN, ale regiony są definiowane po zastosowaniu warstw konwolucyjnych. + +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) + +> Obraz z [oficjalnego artykułu](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +Główna idea tego podejścia polega na użyciu sieci neuronowej do przewidywania ROI – tak zwanej *Region Proposal Network*. [Artykuł](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) + +> Obraz z [oficjalnego artykułu](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Region-Based Fully Convolutional Network + +Ten algorytm jest jeszcze szybszy niż Faster R-CNN. Główna idea jest następująca: + +1. Wyciągamy cechy za pomocą ResNet-101. +2. Cechy są przetwarzane przez **Position-Sensitive Score Map**. Każdy obiekt z $C$ klas jest podzielony na $k\times k$ regiony, a sieć uczy się przewidywać części obiektów. +3. Dla każdej części z $k\times k$ regionów wszystkie sieci głosują na klasy obiektów, a klasa obiektu z największą liczbą głosów jest wybierana. + +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) + +> Obraz z [oficjalnego artykułu](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO to algorytm jednoprzebiegowy w czasie rzeczywistym. Główna idea jest następująca: + + * Obraz jest podzielony na $S\times S$ regiony. + * Dla każdego regionu **CNN** przewiduje $n$ możliwych obiektów, współrzędne *granicy obiektu* oraz *pewność*=*prawdopodobieństwo* * IoU. + + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) + +> Obraz z [oficjalnego artykułu](https://arxiv.org/abs/1506.02640) + +### Inne algorytmy + +* RetinaNet: [oficjalny artykuł](https://arxiv.org/abs/1708.02002) + - [Implementacja w PyTorch w Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementacja w Keras](https://github.com/fizyr/keras-retinanet) + - [Wykrywanie obiektów za pomocą RetinaNet](https://keras.io/examples/vision/retinanet/) w przykładach Keras +* SSD (Single Shot Detector): [oficjalny artykuł](https://arxiv.org/abs/1512.02325) + +## ✍️ Ćwiczenia: Wykrywanie Obiektów + +Kontynuuj naukę w następującym notatniku: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Podsumowanie + +W tej lekcji odbyłeś szybki przegląd różnych sposobów, w jakie można realizować wykrywanie obiektów! + +## 🚀 Wyzwanie + +Przeczytaj te artykuły i notatniki o YOLO i spróbuj je samodzielnie: + +* [Dobry wpis na blogu](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) opisujący YOLO + * [Oficjalna strona](https://pjreddie.com/darknet/yolo/) + * YOLO: [Implementacja w Keras](https://github.com/experiencor/keras-yolo2), [notatnik krok po kroku](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Implementacja w Keras](https://github.com/experiencor/keras-yolo2), [notatnik krok po kroku](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Przegląd i samodzielna nauka + +* [Wykrywanie Obiektów](https://tjmachinelearning.com/lectures/1718/obj/) autorstwa Nikhila Sardany +* [Dobry przegląd algorytmów wykrywania obiektów](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Przegląd algorytmów głębokiego uczenia do wykrywania obiektów](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Wprowadzenie krok po kroku do podstawowych algorytmów wykrywania obiektów](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementacja Faster R-CNN w Pythonie do wykrywania obiektów](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Zadanie: Wykrywanie Obiektów](lab/README.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..d74bcc33 --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Wykrywanie głów za pomocą zbioru danych Hollywood Heads + +Zadanie laboratoryjne z [Kursu AI dla początkujących](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +Liczenie liczby osób na strumieniu z kamery monitoringu to ważne zadanie, które pozwala oszacować liczbę odwiedzających w sklepach, godziny szczytu w restauracjach itp. Aby rozwiązać to zadanie, musimy być w stanie wykrywać ludzkie głowy z różnych kątów. Do trenowania modelu wykrywającego obiekty, który potrafi rozpoznawać ludzkie głowy, możemy wykorzystać [zbiór danych Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). + +## Zbiór danych + +[Zbiór danych Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) zawiera 369 846 ludzkich głów oznaczonych na 224 740 klatkach filmowych z hollywoodzkich filmów. Dane są dostarczone w formacie [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), gdzie dla każdego obrazu dostępny jest również plik XML, który wygląda tak: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +W tym zbiorze danych istnieje tylko jedna klasa obiektów `head`, a dla każdej głowy podane są współrzędne ramki ograniczającej. Możesz analizować pliki XML za pomocą bibliotek Pythona lub skorzystać z [tej biblioteki](https://pypi.org/project/pascal-voc/), aby bezpośrednio pracować z formatem PASCAL VOC. + +## Trenowanie modelu wykrywającego obiekty + +Możesz trenować model wykrywający obiekty na jeden z następujących sposobów: + +* Korzystając z [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) i jego API dla Pythona, aby programowo trenować model w chmurze. Custom Vision nie pozwala na użycie więcej niż kilkuset obrazów do trenowania modelu, więc może być konieczne ograniczenie zbioru danych. +* Korzystając z przykładu z [samouczka Keras](https://keras.io/examples/vision/retinanet/), aby wytrenować model RetunaNet. +* Korzystając z wbudowanego modułu [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) w torchvision. + +## Wnioski + +Wykrywanie obiektów to zadanie często wymagane w przemyśle. Chociaż istnieją usługi, które można wykorzystać do wykrywania obiektów (takie jak [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), ważne jest, aby zrozumieć, jak działa wykrywanie obiektów i być w stanie trenować własne modele. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/pl/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..ed354bee --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentacja + +Wcześniej poznaliśmy Wykrywanie Obiektów, które pozwala nam lokalizować obiekty na obrazie poprzez przewidywanie ich *ramki ograniczającej* (bounding box). Jednak w niektórych zadaniach potrzebujemy nie tylko ramek ograniczających, ale także bardziej precyzyjnej lokalizacji obiektów. To zadanie nazywa się **segmentacją**. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentację można postrzegać jako **klasyfikację pikseli**, gdzie dla **każdego** piksela obrazu musimy przewidzieć jego klasę (*tło* jest jedną z klas). Istnieją dwa główne algorytmy segmentacji: + +* **Segmentacja semantyczna** określa jedynie klasę piksela i nie rozróżnia różnych obiektów tej samej klasy. +* **Segmentacja instancji** dzieli klasy na różne instancje. + +W przypadku segmentacji instancji te owce są różnymi obiektami, ale w segmentacji semantycznej wszystkie owce są reprezentowane jako jedna klasa. + + + +> Obraz z [tego wpisu na blogu](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Istnieją różne architektury sieci neuronowych do segmentacji, ale wszystkie mają podobną strukturę. W pewnym sensie przypomina to autoenkoder, o którym wcześniej się uczyliśmy, ale zamiast dekonstruować oryginalny obraz, naszym celem jest dekonstruowanie **maski**. W związku z tym sieć segmentacyjna składa się z następujących części: + +* **Enkoder** wyodrębnia cechy z obrazu wejściowego. +* **Dekoder** przekształca te cechy w **obraz maski**, o tym samym rozmiarze i liczbie kanałów odpowiadającej liczbie klas. + + + +> Obraz z [tej publikacji](https://arxiv.org/pdf/2001.05566.pdf) + +Warto szczególnie wspomnieć o funkcji straty używanej w segmentacji. W przypadku klasycznych autoenkoderów musimy mierzyć podobieństwo między dwoma obrazami i możemy do tego użyć średniego błędu kwadratowego (MSE). W segmentacji każdy piksel w docelowym obrazie maski reprezentuje numer klasy (zakodowany w formacie one-hot wzdłuż trzeciego wymiaru), więc musimy używać funkcji straty specyficznych dla klasyfikacji - straty krzyżowej entropii, uśrednionej dla wszystkich pikseli. Jeśli maska jest binarna, stosuje się **stratę binarnej krzyżowej entropii** (BCE). + +> ✅ Kodowanie one-hot to sposób kodowania etykiety klasy w wektor o długości równej liczbie klas. Zobacz [ten artykuł](https://datagy.io/sklearn-one-hot-encode/), aby dowiedzieć się więcej o tej technice. + +## Segmentacja w obrazowaniu medycznym + +W tej lekcji zobaczymy segmentację w praktyce, trenując sieć do rozpoznawania znamion (znanych również jako pieprzyki) na obrazach medycznych. Będziemy korzystać z bazy danych PH2 obrazów dermoskopowych jako źródła obrazów. Ten zbiór danych zawiera 200 obrazów trzech klas: typowe znamię, atypowe znamię i czerniak. Wszystkie obrazy zawierają również odpowiadającą im **maskę**, która obrysowuje znamię. + +> ✅ Ta technika jest szczególnie odpowiednia dla tego typu obrazowania medycznego, ale jakie inne zastosowania w rzeczywistym świecie możesz sobie wyobrazić? + +navi + +> Obraz z bazy danych PH2 + +Wytrenujemy model do segmentacji dowolnego znamienia z jego tła. + +## ✍️ Ćwiczenia: Segmentacja semantyczna + +Otwórz poniższe notatniki, aby dowiedzieć się więcej o różnych architekturach segmentacji semantycznej, poćwiczyć pracę z nimi i zobaczyć je w działaniu. + +* [Segmentacja semantyczna w Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentacja semantyczna w TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Podsumowanie + +Segmentacja to bardzo potężna technika klasyfikacji obrazów, która wykracza poza ramki ograniczające, umożliwiając klasyfikację na poziomie pikseli. Jest to technika stosowana w obrazowaniu medycznym i wielu innych zastosowaniach. + +## 🚀 Wyzwanie + +Segmentacja ciała to tylko jedno z powszechnych zadań, jakie możemy wykonywać z obrazami ludzi. Inne ważne zadania obejmują **wykrywanie szkieletu** i **wykrywanie pozycji**. Wypróbuj bibliotekę [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), aby zobaczyć, jak można wykorzystać wykrywanie pozycji. + +## Przegląd i samodzielna nauka + +Ten [artykuł na Wikipedii](https://wikipedia.org/wiki/Image_segmentation) oferuje dobry przegląd różnych zastosowań tej techniki. Dowiedz się więcej na własną rękę o poddziedzinach segmentacji instancji i segmentacji panoptycznej w tej dziedzinie badań. + +## [Zadanie](lab/README.md) + +W tym laboratorium spróbuj **segmentacji ciała ludzkiego** przy użyciu [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/pl/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..9f61559e --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentacja Ciała Ludzkiego + +Zadanie laboratoryjne z [Kursu AI dla Początkujących](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +W produkcji wideo, na przykład w prognozach pogody, często musimy wyciąć obraz człowieka z kamery i umieścić go na innym materiale filmowym. Zazwyczaj odbywa się to za pomocą technik **chroma key**, gdzie człowiek jest filmowany na tle jednolitego koloru, który następnie jest usuwany. W tym laboratorium wytrenujemy model sieci neuronowej, aby wyciąć sylwetkę człowieka. + +## Zbiór Danych + +Będziemy korzystać z [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. Pobierz zbiór danych ręcznie z Kaggle. + +## Notatnik Startowy + +Rozpocznij laboratorium, otwierając [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Wnioski + +Segmentacja ciała to tylko jedno z powszechnych zadań, które możemy wykonywać z obrazami ludzi. Inne ważne zadania to **detekcja szkieletu** i **detekcja pozycji**. Sprawdź bibliotekę [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), aby zobaczyć, jak można zaimplementować te zadania. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/4-ComputerVision/README.md b/translations/pl/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..7bdcc2ad --- /dev/null +++ b/translations/pl/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Komputerowe Rozpoznawanie Obrazów + +![Podsumowanie treści dotyczących komputerowego rozpoznawania obrazów w formie rysunku](../../../../lessons/sketchnotes/ai-computervision.png) + +W tej sekcji nauczymy się o: + +* [Wprowadzenie do komputerowego rozpoznawania obrazów i OpenCV](06-IntroCV/README.md) +* [Konwolucyjne sieci neuronowe](07-ConvNets/README.md) +* [Sieci wstępnie wytrenowane i transfer uczenia](08-TransferLearning/README.md) +* [Autoenkodery](09-Autoencoders/README.md) +* [Generatywne sieci przeciwstawne](10-GANs/README.md) +* [Wykrywanie obiektów](11-ObjectDetection/README.md) +* [Segmentacja semantyczna](12-Segmentation/README.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/13-TextRep/README.md b/translations/pl/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..99feaf4f --- /dev/null +++ b/translations/pl/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Reprezentacja tekstu jako tensory + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Klasyfikacja tekstu + +W pierwszej części tego rozdziału skupimy się na zadaniu **klasyfikacji tekstu**. Wykorzystamy zbiór danych [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), który zawiera artykuły prasowe, takie jak poniższy przykład: + +* Kategoria: Nauka/Technologia +* Tytuł: Firma z Kentucky zdobywa grant na badania nad peptydami (AP) +* Treść: AP - Firma założona przez badacza chemii z Uniwersytetu w Louisville zdobyła grant na rozwój... + +Naszym celem będzie sklasyfikowanie artykułu prasowego do jednej z kategorii na podstawie tekstu. + +## Reprezentacja tekstu + +Aby rozwiązywać zadania z zakresu przetwarzania języka naturalnego (NLP) za pomocą sieci neuronowych, musimy znaleźć sposób na reprezentację tekstu jako tensory. Komputery już teraz reprezentują znaki tekstowe jako liczby, które są mapowane na czcionki na ekranie, używając kodowań takich jak ASCII czy UTF-8. + +Obraz przedstawiający diagram mapujący znak na reprezentację ASCII i binarną + +> [Źródło obrazu](https://www.seobility.net/en/wiki/ASCII) + +Jako ludzie rozumiemy, co każdy znak **reprezentuje**, i jak wszystkie znaki łączą się, tworząc słowa w zdaniu. Jednak komputery same w sobie nie mają takiego zrozumienia, a sieć neuronowa musi nauczyć się znaczenia podczas treningu. + +Dlatego możemy używać różnych podejść do reprezentacji tekstu: + +* **Reprezentacja na poziomie znaków**, gdzie traktujemy każdy znak jako liczbę. Zakładając, że mamy *C* różnych znaków w naszym korpusie tekstowym, słowo *Hello* byłoby reprezentowane jako tensor o wymiarach 5x*C*. Każda litera odpowiadałaby kolumnie tensora w kodowaniu one-hot. +* **Reprezentacja na poziomie słów**, w której tworzymy **słownik** wszystkich słów w naszym tekście, a następnie reprezentujemy słowa za pomocą kodowania one-hot. To podejście jest nieco lepsze, ponieważ pojedyncze litery same w sobie nie mają dużego znaczenia, a używając wyższych poziomów semantycznych - słów - upraszczamy zadanie dla sieci neuronowej. Jednak ze względu na dużą wielkość słownika musimy radzić sobie z tensorami o wysokiej wymiarowości i dużej rzadkości. + +Niezależnie od wybranej reprezentacji, najpierw musimy przekształcić tekst w sekwencję **tokenów**, gdzie jeden token to znak, słowo lub czasami nawet część słowa. Następnie konwertujemy token na liczbę, zazwyczaj używając **słownika**, a ta liczba może być wprowadzona do sieci neuronowej za pomocą kodowania one-hot. + +## N-Gramy + +W języku naturalnym precyzyjne znaczenie słów można określić tylko w kontekście. Na przykład znaczenia *neural network* i *fishing network* są zupełnie różne. Jednym ze sposobów uwzględnienia tego jest budowanie modelu na podstawie par słów i traktowanie par słów jako oddzielnych tokenów słownika. W ten sposób zdanie *I like to go fishing* będzie reprezentowane przez następującą sekwencję tokenów: *I like*, *like to*, *to go*, *go fishing*. Problem z tym podejściem polega na tym, że rozmiar słownika znacznie rośnie, a kombinacje takie jak *go fishing* i *go shopping* są reprezentowane przez różne tokeny, które nie dzielą żadnego podobieństwa semantycznego, mimo że zawierają to samo czasownik. + +W niektórych przypadkach możemy rozważyć użycie tri-gramów — kombinacji trzech słów. Dlatego podejście to często nazywane jest **n-gramami**. Sensowne jest również użycie n-gramów w reprezentacji na poziomie znaków, gdzie n-gramy będą mniej więcej odpowiadać różnym sylabom. + +## Bag-of-Words i TF/IDF + +Podczas rozwiązywania zadań takich jak klasyfikacja tekstu musimy być w stanie reprezentować tekst za pomocą jednego wektora o stałym rozmiarze, który będzie używany jako wejście do końcowego klasyfikatora gęstego. Jednym z najprostszych sposobów na to jest połączenie wszystkich indywidualnych reprezentacji słów, np. przez ich dodanie. Jeśli dodamy kodowania one-hot każdego słowa, otrzymamy wektor częstotliwości, pokazujący, ile razy każde słowo pojawia się w tekście. Taka reprezentacja tekstu nazywana jest **bag of words** (BoW). + + + +> Obraz autora + +BoW zasadniczo reprezentuje, które słowa pojawiają się w tekście i w jakich ilościach, co może być dobrym wskaźnikiem tego, o czym jest tekst. Na przykład artykuł prasowy o polityce prawdopodobnie zawiera słowa takie jak *prezydent* i *kraj*, podczas gdy publikacja naukowa może zawierać słowa takie jak *zderzacz*, *odkryto* itp. Dlatego częstotliwości słów mogą w wielu przypadkach być dobrym wskaźnikiem treści tekstu. + +Problem z BoW polega na tym, że pewne powszechne słowa, takie jak *i*, *jest* itp., pojawiają się w większości tekstów i mają najwyższe częstotliwości, maskując słowa, które są naprawdę ważne. Możemy obniżyć znaczenie tych słów, biorąc pod uwagę częstotliwość ich występowania w całej kolekcji dokumentów. To główna idea podejścia TF/IDF, które jest omówione bardziej szczegółowo w notatnikach dołączonych do tej lekcji. + +Jednak żadne z tych podejść nie jest w stanie w pełni uwzględnić **semantyki** tekstu. Do tego potrzebujemy bardziej zaawansowanych modeli sieci neuronowych, które omówimy później w tym rozdziale. + +## ✍️ Ćwiczenia: Reprezentacja tekstu + +Kontynuuj naukę w poniższych notatnikach: + +* [Reprezentacja tekstu z PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Reprezentacja tekstu z TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Podsumowanie + +Jak dotąd poznaliśmy techniki, które mogą dodać wagę częstotliwości do różnych słów. Nie są one jednak w stanie reprezentować znaczenia ani kolejności. Jak powiedział słynny językoznawca J. R. Firth w 1935 roku: "Pełne znaczenie słowa zawsze jest kontekstowe, a żadna analiza znaczenia poza kontekstem nie może być traktowana poważnie." W dalszej części kursu nauczymy się, jak uchwycić informacje kontekstowe z tekstu za pomocą modelowania języka. + +## 🚀 Wyzwanie + +Spróbuj innych ćwiczeń z użyciem bag-of-words i różnych modeli danych. Możesz zainspirować się tą [konkursem na Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Przegląd i samodzielna nauka + +Ćwicz swoje umiejętności z technikami osadzania tekstu i bag-of-words na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Zadanie: Notatniki](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/13-TextRep/assignment.md b/translations/pl/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..1ce22dea --- /dev/null +++ b/translations/pl/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Notatniki + +Korzystając z notatników powiązanych z tą lekcją (w wersji PyTorch lub TensorFlow), uruchom je ponownie, używając własnego zestawu danych, na przykład z Kaggle, z odpowiednim przypisaniem źródła. Przepisz notatnik, aby podkreślić swoje własne wnioski. Spróbuj użyć innowacyjnych zestawów danych, które mogą okazać się zaskakujące, takich jak [ten o obserwacjach UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) od NUFORC. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/14-Embeddings/README.md b/translations/pl/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..b082e1db --- /dev/null +++ b/translations/pl/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Osadzenia + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Podczas trenowania klasyfikatorów opartych na BoW lub TF/IDF operowaliśmy na wektorach worka słów o wysokiej wymiarowości o długości `vocab_size`, a także jawnie konwertowaliśmy z wektorów reprezentacji pozycyjnej o niskiej wymiarowości na rzadkie wektory one-hot. Jednakże, reprezentacja one-hot nie jest efektywna pod względem pamięci. Dodatkowo, każde słowo jest traktowane niezależnie od innych, tzn. wektory zakodowane one-hot nie wyrażają żadnego podobieństwa semantycznego między słowami. + +Pomysł **osadzenia** polega na reprezentowaniu słów za pomocą gęstych wektorów o niższej wymiarowości, które w pewien sposób odzwierciedlają semantyczne znaczenie słowa. Później omówimy, jak budować znaczące osadzenia słów, ale na razie pomyślmy o osadzeniach jako o sposobie na zmniejszenie wymiarowości wektora słowa. + +Warstwa osadzenia przyjmuje słowo jako wejście i generuje wektor wyjściowy o określonym `embedding_size`. W pewnym sensie jest to bardzo podobne do warstwy `Linear`, ale zamiast przyjmować wektor zakodowany one-hot, może przyjąć numer słowa jako wejście, co pozwala uniknąć tworzenia dużych wektorów zakodowanych one-hot. + +Używając warstwy osadzenia jako pierwszej warstwy w naszej sieci klasyfikatora, możemy przejść od modelu worka słów do modelu **embedding bag**, w którym najpierw konwertujemy każde słowo w naszym tekście na odpowiadające mu osadzenie, a następnie obliczamy pewną funkcję agregującą dla wszystkich tych osadzeń, taką jak `sum`, `average` lub `max`. + +![Obraz przedstawiający klasyfikator osadzeń dla pięciu słów w sekwencji.](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) + +> Obraz autorstwa autora + +## ✍️ Ćwiczenia: Osadzenia + +Kontynuuj naukę w poniższych notatnikach: +* [Osadzenia z PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Osadzenia z TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Semantyczne osadzenia: Word2Vec + +Chociaż warstwa osadzenia nauczyła się mapować słowa na reprezentacje wektorowe, to jednak ta reprezentacja niekoniecznie miała wiele wspólnego z semantyką. Byłoby dobrze nauczyć się reprezentacji wektorowej, w której podobne słowa lub synonimy odpowiadają wektorom bliskim sobie pod względem pewnej odległości wektorowej (np. odległości euklidesowej). + +Aby to osiągnąć, musimy wstępnie wytrenować nasz model osadzeń na dużym zbiorze tekstów w określony sposób. Jednym ze sposobów trenowania semantycznych osadzeń jest metoda [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Opiera się ona na dwóch głównych architekturach używanych do tworzenia rozproszonych reprezentacji słów: + + - **Ciągły worek słów** (CBoW) — w tej architekturze trenujemy model, aby przewidywał słowo na podstawie otaczającego kontekstu. Mając n-gram $(W_{-2},W_{-1},W_0,W_1,W_2)$, celem modelu jest przewidzenie $W_0$ na podstawie $(W_{-2},W_{-1},W_1,W_2)$. + - **Ciągły skip-gram** jest odwrotnością CBoW. Model używa otaczającego okna słów kontekstowych, aby przewidzieć bieżące słowo. + +CBoW jest szybszy, podczas gdy skip-gram jest wolniejszy, ale lepiej radzi sobie z reprezentowaniem rzadkich słów. + +![Obraz przedstawiający algorytmy CBoW i Skip-Gram do konwersji słów na wektory.](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) + +> Obraz z [tego artykułu](https://arxiv.org/pdf/1301.3781.pdf) + +Wstępnie wytrenowane osadzenia Word2Vec (jak również inne podobne modele, takie jak GloVe) mogą być również używane zamiast warstwy osadzenia w sieciach neuronowych. Musimy jednak poradzić sobie ze słownikami, ponieważ słownik używany do wstępnego trenowania Word2Vec/GloVe prawdopodobnie różni się od słownika w naszym korpusie tekstowym. Zajrzyj do powyższych notatników, aby zobaczyć, jak można rozwiązać ten problem. + +## Kontekstowe osadzenia + +Jednym z kluczowych ograniczeń tradycyjnych wstępnie wytrenowanych reprezentacji osadzeń, takich jak Word2Vec, jest problem rozróżniania znaczeń słów. Chociaż wstępnie wytrenowane osadzenia mogą uchwycić część znaczenia słów w kontekście, każde możliwe znaczenie słowa jest zakodowane w tym samym osadzeniu. Może to powodować problemy w modelach końcowych, ponieważ wiele słów, takich jak słowo „play”, ma różne znaczenia w zależności od kontekstu, w jakim jest używane. + +Na przykład słowo „play” w tych dwóch zdaniach ma zupełnie inne znaczenie: + +- Poszedłem na **sztukę** do teatru. +- John chce się **bawić** z przyjaciółmi. + +Wstępnie wytrenowane osadzenia reprezentują oba te znaczenia słowa „play” w tym samym osadzeniu. Aby przezwyciężyć to ograniczenie, musimy budować osadzenia oparte na **modelu językowym**, który jest trenowany na dużym korpusie tekstów i *wie*, jak słowa mogą być używane w różnych kontekstach. Omówienie kontekstowych osadzeń wykracza poza zakres tego samouczka, ale wrócimy do nich, gdy będziemy omawiać modele językowe w dalszej części kursu. + +## Podsumowanie + +W tej lekcji dowiedziałeś się, jak budować i używać warstw osadzeń w TensorFlow i PyTorch, aby lepiej odzwierciedlać semantyczne znaczenia słów. + +## 🚀 Wyzwanie + +Word2Vec został wykorzystany w ciekawych zastosowaniach, takich jak generowanie tekstów piosenek i poezji. Zajrzyj do [tego artykułu](https://www.politetype.com/blog/word2vec-color-poems), który opisuje, jak autor użył Word2Vec do generowania poezji. Obejrzyj również [ten film Dana Shiffmanna](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), aby poznać inne wyjaśnienie tej techniki. Następnie spróbuj zastosować te techniki do własnego korpusu tekstowego, być może pochodzącego z Kaggle. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Przegląd i samodzielna nauka + +Przeczytaj ten artykuł o Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Zadanie: Notatniki](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić poprawność tłumaczenia, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/14-Embeddings/assignment.md b/translations/pl/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..ccca73d7 --- /dev/null +++ b/translations/pl/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Notatniki + +Korzystając z notatników powiązanych z tą lekcją (zarówno w wersji PyTorch, jak i TensorFlow), uruchom je ponownie, używając własnego zestawu danych, na przykład z Kaggle, z odpowiednim przypisaniem źródła. Przepisz notatnik, aby podkreślić swoje własne wnioski. Spróbuj użyć innego rodzaju zestawu danych i udokumentuj swoje spostrzeżenia, korzystając z tekstów takich jak [te teksty piosenek Beatlesów](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/15-LanguageModeling/README.md b/translations/pl/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..1ededacd --- /dev/null +++ b/translations/pl/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Modelowanie języka + +Semantyczne osadzenia, takie jak Word2Vec i GloVe, to w rzeczywistości pierwszy krok w kierunku **modelowania języka** – tworzenia modeli, które w pewien sposób *rozumieją* (lub *reprezentują*) naturę języka. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Główna idea modelowania języka polega na trenowaniu modeli na niezlabelowanych zbiorach danych w sposób nienadzorowany. Jest to istotne, ponieważ mamy dostęp do ogromnych ilości niezlabelowanego tekstu, podczas gdy ilość tekstu zlabelowanego zawsze będzie ograniczona wysiłkiem, jaki możemy poświęcić na jego oznaczanie. Najczęściej możemy budować modele językowe, które potrafią **przewidywać brakujące słowa** w tekście, ponieważ łatwo jest zamaskować losowe słowo w tekście i użyć go jako próbki treningowej. + +## Trenowanie osadzeń + +W poprzednich przykładach korzystaliśmy z wcześniej wytrenowanych semantycznych osadzeń, ale warto zobaczyć, jak można trenować takie osadzenia samodzielnie. Istnieje kilka możliwych podejść: + +* **Modelowanie języka N-Gram**, gdzie przewidujemy token, patrząc na N poprzednich tokenów (N-gramy). +* **Continuous Bag-of-Words** (CBoW), gdzie przewidujemy środkowy token $W_0$ w sekwencji tokenów $W_{-N}$, ..., $W_N$. +* **Skip-gram**, gdzie przewidujemy zestaw sąsiednich tokenów {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} na podstawie środkowego tokena $W_0$. + +![obraz z artykułu o konwersji słów na wektory](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) + +> Obraz z [tego artykułu](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Przykładowe notatniki: Trenowanie modelu CBoW + +Kontynuuj naukę, korzystając z poniższych notatników: + +* [Trenowanie CBoW Word2Vec z TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Trenowanie CBoW Word2Vec z PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Podsumowanie + +W poprzedniej lekcji widzieliśmy, że osadzenia słów działają jak magia! Teraz wiemy, że trenowanie osadzeń słów nie jest bardzo skomplikowanym zadaniem i powinniśmy być w stanie wytrenować własne osadzenia słów dla tekstów specyficznych dla danej dziedziny, jeśli zajdzie taka potrzeba. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Przegląd i samodzielna nauka + +* [Oficjalny samouczek PyTorch dotyczący modelowania języka](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Oficjalny samouczek TensorFlow dotyczący trenowania modelu Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Użycie frameworka **gensim** do trenowania najczęściej używanych osadzeń w kilku liniach kodu opisano [w tej dokumentacji](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Zadanie: Wytrenuj model Skip-Gram](lab/README.md) + +W laboratorium zachęcamy Cię do zmodyfikowania kodu z tej lekcji, aby wytrenować model skip-gram zamiast CBoW. [Przeczytaj szczegóły](lab/README.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/pl/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..61f037a5 --- /dev/null +++ b/translations/pl/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Trenowanie modelu Skip-Gram + +Zadanie laboratoryjne z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +W tym laboratorium wyzwaniem dla Ciebie jest wytrenowanie modelu Word2Vec przy użyciu techniki Skip-Gram. Wytrenuj sieć z osadzaniem (embedding), aby przewidywać sąsiadujące słowa w oknie Skip-Gram o szerokości $N$ tokenów. Możesz użyć [kodu z tej lekcji](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) i nieco go zmodyfikować. + +## Zbiór danych + +Możesz użyć dowolnej książki. Wiele darmowych tekstów znajdziesz na stronie [Project Gutenberg](https://www.gutenberg.org/), na przykład tutaj jest bezpośredni link do [Alicji w Krainie Czarów](https://www.gutenberg.org/files/11/11-0.txt) Lewisa Carrolla. Możesz też skorzystać z dramatów Szekspira, które możesz pobrać za pomocą poniższego kodu: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## Eksploruj! + +Jeśli masz czas i chcesz zgłębić temat, spróbuj zbadać kilka kwestii: + +* Jak rozmiar osadzania wpływa na wyniki? +* Jak różne style tekstu wpływają na rezultat? +* Weź kilka bardzo różnych typów słów i ich synonimy, uzyskaj ich reprezentacje wektorowe, zastosuj PCA, aby zredukować wymiary do 2, i przedstaw je na wykresie w przestrzeni 2D. Czy widzisz jakieś wzorce? + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/16-RNN/README.md b/translations/pl/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..34ce54a2 --- /dev/null +++ b/translations/pl/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Recurrent Neural Networks + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +W poprzednich sekcjach korzystaliśmy z bogatych semantycznych reprezentacji tekstu oraz prostego klasyfikatora liniowego na bazie osadzeń. Taka architektura pozwala uchwycić zagregowane znaczenie słów w zdaniu, ale nie uwzględnia **kolejności** słów, ponieważ operacja agregacji na osadzeniach usuwa tę informację z oryginalnego tekstu. Z tego powodu modele te nie są w stanie modelować kolejności słów, co uniemożliwia im rozwiązywanie bardziej złożonych lub niejednoznacznych zadań, takich jak generowanie tekstu czy odpowiadanie na pytania. + +Aby uchwycić znaczenie sekwencji tekstu, musimy użyć innej architektury sieci neuronowej, zwanej **rekurencyjną siecią neuronową** (RNN). W RNN przekazujemy nasze zdanie przez sieć symbol po symbolu, a sieć generuje pewien **stan**, który następnie przekazujemy do sieci wraz z kolejnym symbolem. + +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) + +> Obraz autorstwa autora + +Dla wejściowej sekwencji tokenów X0,...,Xn, RNN tworzy sekwencję bloków sieci neuronowej i trenuje tę sekwencję end-to-end za pomocą propagacji wstecznej. Każdy blok sieci przyjmuje parę (Xi,Si) jako wejście i generuje Si+1 jako wynik. Końcowy stan Sn lub (wyjście Yn) trafia do klasyfikatora liniowego, aby wygenerować wynik. Wszystkie bloki sieci mają te same wagi i są trenowane end-to-end za pomocą jednej propagacji wstecznej. + +Dzięki temu, że wektory stanów S0,...,Sn są przekazywane przez sieć, jest ona w stanie nauczyć się zależności sekwencyjnych między słowami. Na przykład, gdy słowo *not* pojawia się gdzieś w sekwencji, sieć może nauczyć się negować pewne elementy wektora stanu, co prowadzi do negacji. + +> ✅ Ponieważ wagi wszystkich bloków RNN na powyższym obrazku są wspólne, ten sam obrazek można przedstawić jako jeden blok (po prawej) z pętlą sprzężenia zwrotnego, która przekazuje wyjściowy stan sieci z powrotem na wejście. + +## Anatomia komórki RNN + +Przyjrzyjmy się, jak zorganizowana jest prosta komórka RNN. Przyjmuje ona poprzedni stan Si-1 oraz bieżący symbol Xi jako wejścia i musi wygenerować wyjściowy stan Si (a czasami interesuje nas również inne wyjście Yi, jak w przypadku sieci generatywnych). + +Prosta komórka RNN ma wewnątrz dwie macierze wag: jedna przekształca symbol wejściowy (nazwijmy ją W), a druga przekształca stan wejściowy (H). W takim przypadku wyjście sieci obliczane jest jako σ(W×Xi+H×Si-1+b), gdzie σ to funkcja aktywacji, a b to dodatkowe przesunięcie. + +Anatomia komórki RNN + +> Obraz autorstwa autora + +W wielu przypadkach tokeny wejściowe są przekazywane przez warstwę osadzeń przed wejściem do RNN, aby zmniejszyć wymiarowość. W takim przypadku, jeśli wymiar wektorów wejściowych to *emb_size*, a wektor stanu to *hid_size* - rozmiar W wynosi *emb_size*×*hid_size*, a rozmiar H wynosi *hid_size*×*hid_size*. + +## Long Short Term Memory (LSTM) + +Jednym z głównych problemów klasycznych RNN jest tzw. **problem zanikających gradientów**. Ponieważ RNN są trenowane end-to-end w jednej propagacji wstecznej, mają trudności z propagowaniem błędu do pierwszych warstw sieci, co uniemożliwia sieci naukę relacji między odległymi tokenami. Jednym ze sposobów uniknięcia tego problemu jest wprowadzenie **jawnego zarządzania stanem** za pomocą tzw. **bramek**. Istnieją dwie dobrze znane architektury tego typu: **Long Short Term Memory** (LSTM) oraz **Gated Relay Unit** (GRU). + +![Obraz przedstawiający przykład komórki LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Źródło obrazu TBD + +Sieć LSTM jest zorganizowana w sposób podobny do RNN, ale istnieją dwa stany, które są przekazywane z warstwy do warstwy: rzeczywisty stan C oraz ukryty wektor H. W każdej jednostce ukryty wektor Hi jest konkatenowany z wejściem Xi, a one kontrolują, co dzieje się ze stanem C za pomocą **bramek**. Każda bramka to sieć neuronowa z aktywacją sigmoid (wyjście w zakresie [0,1]), którą można traktować jako maskę bitową przy mnożeniu przez wektor stanu. Na obrazku powyżej znajdują się następujące bramki (od lewej do prawej): + +* **Bramka zapominania** bierze ukryty wektor i określa, które komponenty wektora C należy zapomnieć, a które przekazać dalej. +* **Bramka wejściowa** pobiera pewne informacje z wejścia i ukrytych wektorów i wprowadza je do stanu. +* **Bramka wyjściowa** przekształca stan za pomocą warstwy liniowej z aktywacją *tanh*, a następnie wybiera niektóre z jego komponentów za pomocą ukrytego wektora Hi, aby wygenerować nowy stan Ci+1. + +Komponenty stanu C można traktować jako pewne flagi, które można włączać i wyłączać. Na przykład, gdy w sekwencji napotkamy imię *Alice*, możemy założyć, że odnosi się ono do postaci kobiecej i podnieść flagę w stanie, że mamy rzeczownik żeński w zdaniu. Gdy dalej napotkamy frazę *and Tom*, podniesiemy flagę, że mamy rzeczownik w liczbie mnogiej. W ten sposób manipulując stanem możemy teoretycznie śledzić właściwości gramatyczne części zdania. + +> ✅ Doskonałym źródłem do zrozumienia wewnętrznego działania LSTM jest ten świetny artykuł [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) autorstwa Christophera Olaha. + +## Dwukierunkowe i wielowarstwowe RNN + +Omówiliśmy sieci rekurencyjne, które działają w jednym kierunku, od początku sekwencji do końca. Wydaje się to naturalne, ponieważ przypomina sposób, w jaki czytamy i słuchamy mowy. Jednakże, ponieważ w wielu praktycznych przypadkach mamy losowy dostęp do sekwencji wejściowej, może mieć sens uruchomienie obliczeń rekurencyjnych w obu kierunkach. Takie sieci nazywane są **dwukierunkowymi** RNN. W przypadku sieci dwukierunkowej potrzebne będą dwa ukryte wektory stanu, po jednym dla każdego kierunku. + +Sieć rekurencyjna, jedno- lub dwukierunkowa, wychwytuje pewne wzorce w sekwencji i może je przechowywać w wektorze stanu lub przekazywać na wyjście. Podobnie jak w przypadku sieci konwolucyjnych, możemy zbudować kolejną warstwę rekurencyjną na szczycie pierwszej, aby uchwycić wzorce wyższego poziomu i budować na bazie wzorców niskiego poziomu wyodrębnionych przez pierwszą warstwę. Prowadzi to do pojęcia **wielowarstwowego RNN**, który składa się z dwóch lub więcej sieci rekurencyjnych, gdzie wyjście poprzedniej warstwy jest przekazywane do następnej warstwy jako wejście. + +![Obraz przedstawiający wielowarstwowy LSTM RNN](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) + +*Obraz z [tego wspaniałego artykułu](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) autorstwa Fernando Lópeza* + +## ✍️ Ćwiczenia: Osadzenia + +Kontynuuj naukę w poniższych notatnikach: + +* [RNNs with PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs with TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Podsumowanie + +W tej jednostce zobaczyliśmy, że RNN mogą być używane do klasyfikacji sekwencji, ale w rzeczywistości mogą obsługiwać wiele innych zadań, takich jak generowanie tekstu, tłumaczenie maszynowe i inne. Rozważymy te zadania w następnej jednostce. + +## 🚀 Wyzwanie + +Przeczytaj literaturę na temat LSTM i rozważ ich zastosowania: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Przegląd i samodzielna nauka + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) autorstwa Christophera Olaha. + +## [Zadanie: Notatniki](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/16-RNN/assignment.md b/translations/pl/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..89abfd56 --- /dev/null +++ b/translations/pl/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Notatniki + +Korzystając z notatników powiązanych z tą lekcją (w wersji PyTorch lub TensorFlow), uruchom je ponownie, używając własnego zestawu danych, na przykład z Kaggle, z odpowiednim przypisaniem źródła. Przepisz notatnik, aby podkreślić swoje własne wnioski. Spróbuj użyć innego rodzaju zestawu danych i udokumentuj swoje spostrzeżenia, korzystając z tekstu, takiego jak [ten zestaw danych z konkursu Kaggle dotyczący tweetów o pogodzie](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/pl/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..9f7d91c7 --- /dev/null +++ b/translations/pl/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generatywne sieci + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rekurencyjne sieci neuronowe (RNN) oraz ich warianty z komórkami bramkowymi, takie jak komórki pamięci długoterminowej (LSTM) i jednostki rekurencyjne z bramkami (GRU), umożliwiają modelowanie języka, ponieważ potrafią uczyć się kolejności słów i przewidywać następne słowo w sekwencji. Dzięki temu możemy używać RNN do **zadań generatywnych**, takich jak generowanie tekstu, tłumaczenie maszynowe, a nawet opisywanie obrazów. + +> ✅ Pomyśl o wszystkich sytuacjach, w których korzystałeś z zadań generatywnych, takich jak uzupełnianie tekstu podczas pisania. Poszukaj informacji o swoich ulubionych aplikacjach, aby sprawdzić, czy wykorzystują RNN. + +W architekturze RNN, którą omawialiśmy w poprzedniej jednostce, każda jednostka RNN generowała następny ukryty stan jako wyjście. Możemy jednak dodać kolejne wyjście do każdej jednostki rekurencyjnej, co pozwoli na generowanie **sekwencji** (o długości równej oryginalnej sekwencji). Ponadto możemy używać jednostek RNN, które nie przyjmują danych wejściowych na każdym kroku, a jedynie początkowy wektor stanu, aby generować sekwencję wyjść. + +To umożliwia różne architektury neuronowe, które przedstawiono na poniższym obrazku: + +![Obraz przedstawiający typowe wzorce rekurencyjnych sieci neuronowych.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) + +> Obraz z wpisu na blogu [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) autorstwa [Andreja Karpaty](http://karpathy.github.io/) + +* **Jeden-do-jednego** to tradycyjna sieć neuronowa z jednym wejściem i jednym wyjściem +* **Jeden-do-wielu** to architektura generatywna, która przyjmuje jedną wartość wejściową i generuje sekwencję wartości wyjściowych. Na przykład, jeśli chcemy wytrenować sieć do **opisywania obrazów**, która generuje tekstowy opis zdjęcia, możemy podać obraz jako wejście, przepuścić go przez CNN, aby uzyskać ukryty stan, a następnie użyć łańcucha rekurencyjnego do generowania opisu słowo po słowie +* **Wiele-do-jednego** odpowiada architekturom RNN, które opisaliśmy w poprzedniej jednostce, takich jak klasyfikacja tekstu +* **Wiele-do-wielu**, czyli **sekwencja-do-sekwencji**, odpowiada zadaniom takim jak **tłumaczenie maszynowe**, gdzie pierwsza RNN zbiera wszystkie informacje z sekwencji wejściowej do ukrytego stanu, a kolejny łańcuch RNN rozwija ten stan w sekwencję wyjściową. + +W tej jednostce skupimy się na prostych modelach generatywnych, które pomagają generować tekst. Dla uproszczenia użyjemy tokenizacji na poziomie znaków. + +Wytrenujemy tę RNN do generowania tekstu krok po kroku. Na każdym kroku weźmiemy sekwencję znaków o długości `nchars` i poprosimy sieć o wygenerowanie następnego znaku dla każdego znaku wejściowego: + +![Obraz przedstawiający przykład generowania słowa 'HELLO' przez RNN.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) + +Podczas generowania tekstu (w trakcie wnioskowania) zaczynamy od **podpowiedzi**, która jest przekazywana przez komórki RNN w celu wygenerowania jej stanu pośredniego, a następnie z tego stanu rozpoczyna się generowanie. Generujemy jeden znak na raz, przekazujemy stan i wygenerowany znak do kolejnej komórki RNN, aby wygenerować następny, aż wygenerujemy wystarczającą liczbę znaków. + + + +> Obraz autorstwa autora + +## ✍️ Ćwiczenia: Generatywne sieci + +Kontynuuj naukę w poniższych notatnikach: + +* [Generatywne sieci w PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generatywne sieci w TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Miękkie generowanie tekstu i temperatura + +Wyjście każdej komórki RNN to rozkład prawdopodobieństwa znaków. Jeśli zawsze wybieramy znak o najwyższym prawdopodobieństwie jako następny znak w generowanym tekście, tekst często może stać się "zacyklowany" między tymi samymi sekwencjami znaków, jak w tym przykładzie: + +``` +today of the second the company and a second the company ... +``` + +Jednak jeśli spojrzymy na rozkład prawdopodobieństwa dla następnego znaku, może się okazać, że różnica między kilkoma najwyższymi prawdopodobieństwami nie jest duża, np. jeden znak może mieć prawdopodobieństwo 0.2, a inny - 0.19 itd. Na przykład, gdy szukamy następnego znaku w sekwencji '*play*', następnym znakiem może być równie dobrze spacja lub **e** (jak w słowie *player*). + +Prowadzi to do wniosku, że nie zawsze "uczciwe" jest wybieranie znaku o najwyższym prawdopodobieństwie, ponieważ wybór drugiego najwyższego może nadal prowadzić do sensownego tekstu. Bardziej rozsądne jest **próbkowanie** znaków z rozkładu prawdopodobieństwa podanego przez wyjście sieci. Możemy również użyć parametru **temperatura**, który spłaszczy rozkład prawdopodobieństwa, jeśli chcemy dodać więcej losowości, lub uczyni go bardziej stromym, jeśli chcemy trzymać się znaków o najwyższym prawdopodobieństwie. + +Zbadaj, jak to miękkie generowanie tekstu jest zaimplementowane w notatnikach podlinkowanych powyżej. + +## Podsumowanie + +Chociaż generowanie tekstu może być użyteczne samo w sobie, główne korzyści wynikają z możliwości generowania tekstu za pomocą RNN z początkowego wektora cech. Na przykład generowanie tekstu jest używane jako część tłumaczenia maszynowego (sekwencja-do-sekwencji, w tym przypadku wektor stanu z *enkodera* jest używany do generowania lub *dekodowania* przetłumaczonej wiadomości) lub generowania tekstowego opisu obrazu (w takim przypadku wektor cech pochodzi z ekstraktora CNN). + +## 🚀 Wyzwanie + +Weź udział w lekcjach na Microsoft Learn na ten temat + +* Generowanie tekstu w [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Przegląd i samodzielna nauka + +Oto kilka artykułów, które poszerzą Twoją wiedzę: + +* Różne podejścia do generowania tekstu z Markov Chain, LSTM i GPT-2: [wpis na blogu](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Przykład generowania tekstu w [dokumentacji Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Zadanie](lab/README.md) + +Widzieliśmy, jak generować tekst znak po znaku. W laboratorium będziesz eksplorować generowanie tekstu na poziomie słów. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/pl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..7913e075 --- /dev/null +++ b/translations/pl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generowanie tekstu na poziomie słów za pomocą RNN + +Zadanie laboratoryjne z [Kursu AI dla Początkujących](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +W tym laboratorium musisz wybrać dowolną książkę i użyć jej jako zbioru danych do trenowania generatora tekstu na poziomie słów. + +## Zbiór danych + +Możesz użyć dowolnej książki. Wiele darmowych tekstów znajdziesz na stronie [Project Gutenberg](https://www.gutenberg.org/), na przykład tutaj znajduje się bezpośredni link do [Alicji w Krainie Czarów](https://www.gutenberg.org/files/11/11-0.txt)) autorstwa Lewisa Carrolla. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/18-Transformers/README.md b/translations/pl/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..1dc1f831 --- /dev/null +++ b/translations/pl/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mechanizmy uwagi i modele Transformer + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Jednym z najważniejszych problemów w dziedzinie NLP jest **tłumaczenie maszynowe**, kluczowe zadanie, które stanowi podstawę narzędzi takich jak Google Translate. W tej sekcji skupimy się na tłumaczeniu maszynowym, a bardziej ogólnie na każdym zadaniu typu *sequence-to-sequence* (nazywanym również **transdukcją zdań**). + +W przypadku RNN, zadania sequence-to-sequence są realizowane za pomocą dwóch sieci rekurencyjnych, gdzie jedna sieć, **enkoder**, przekształca sekwencję wejściową w stan ukryty, a druga sieć, **dekoder**, rozwija ten stan ukryty w przetłumaczony wynik. Istnieje kilka problemów związanych z tym podejściem: + +* Końcowy stan sieci enkodera ma trudności z zapamiętaniem początku zdania, co prowadzi do niskiej jakości modelu dla długich zdań. +* Wszystkie słowa w sekwencji mają taki sam wpływ na wynik. W rzeczywistości jednak konkretne słowa w sekwencji wejściowej często mają większy wpływ na sekwencyjne wyniki niż inne. + +**Mechanizmy uwagi** umożliwiają ważenie kontekstowego wpływu każdego wektora wejściowego na każdą prognozę wyjściową RNN. Implementuje się to poprzez tworzenie skrótów między stanami pośrednimi wejściowego RNN a wyjściowego RNN. W ten sposób, generując symbol wyjściowy yt, uwzględniamy wszystkie stany ukryte wejściowe hi, z różnymi współczynnikami wag αt,i. + +![Obraz przedstawiający model enkoder/dekoder z warstwą uwagi addytywnej](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> Model enkoder-dekoder z mechanizmem uwagi addytywnej w [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), cytowany z [tego wpisu na blogu](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Macierz uwagi {αi,j} reprezentuje stopień, w jakim określone słowa wejściowe wpływają na generowanie danego słowa w sekwencji wyjściowej. Poniżej znajduje się przykład takiej macierzy: + +![Obraz przedstawiający przykładowe dopasowanie znalezione przez RNNsearch-50, zaczerpnięte z Bahdanau - arviz.org](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> Rysunek z [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Mechanizmy uwagi są odpowiedzialne za dużą część obecnego lub bliskiego obecnemu stanu sztuki w NLP. Dodanie uwagi znacznie zwiększa jednak liczbę parametrów modelu, co prowadzi do problemów ze skalowaniem RNN. Kluczowym ograniczeniem skalowania RNN jest to, że rekurencyjny charakter modeli utrudnia grupowanie i równoległe trenowanie. W RNN każdy element sekwencji musi być przetwarzany w kolejności sekwencyjnej, co oznacza, że nie można go łatwo zrównoleglić. + +![Enkoder Dekoder z Uwagą](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Rysunek z [Bloga Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Zastosowanie mechanizmów uwagi w połączeniu z tym ograniczeniem doprowadziło do powstania obecnych modeli Transformer, takich jak BERT czy Open-GPT3, które znamy i używamy dzisiaj. + +## Modele Transformer + +Jednym z głównych pomysłów stojących za modelami Transformer jest unikanie sekwencyjnego charakteru RNN i stworzenie modelu, który można zrównoleglić podczas trenowania. Osiąga się to poprzez wdrożenie dwóch pomysłów: + +* kodowanie pozycji +* zastosowanie mechanizmu samouwagi do wychwytywania wzorców zamiast RNN (lub CNN) (dlatego artykuł wprowadzający transformery nosi tytuł *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Kodowanie/Osadzanie Pozycji + +Pomysł kodowania pozycji jest następujący: +1. W przypadku RNN względna pozycja tokenów jest reprezentowana przez liczbę kroków, więc nie musi być jawnie reprezentowana. +2. Jednak po przejściu na uwagę musimy znać względne pozycje tokenów w sekwencji. +3. Aby uzyskać kodowanie pozycji, uzupełniamy naszą sekwencję tokenów o sekwencję pozycji tokenów w sekwencji (np. sekwencję liczb 0,1, ...). +4. Następnie mieszamy pozycję tokenu z wektorem osadzania tokenu. Aby przekształcić pozycję (liczbę całkowitą) w wektor, możemy użyć różnych podejść: + +* Osadzanie trenowalne, podobne do osadzania tokenów. To podejście rozważamy tutaj. Stosujemy warstwy osadzania zarówno na tokenach, jak i ich pozycjach, uzyskując wektory osadzania o tych samych wymiarach, które następnie dodajemy do siebie. +* Funkcja kodowania pozycji stała, jak zaproponowano w oryginalnym artykule. + + + +> Obraz autorstwa autora + +Rezultat, który uzyskujemy dzięki osadzaniu pozycji, osadza zarówno oryginalny token, jak i jego pozycję w sekwencji. + +### Samouwaga z Wieloma Głowami + +Następnie musimy wychwycić pewne wzorce w naszej sekwencji. Aby to zrobić, transformery używają mechanizmu **samouwagi**, który w zasadzie jest uwagą zastosowaną do tej samej sekwencji jako wejście i wyjście. Zastosowanie samouwagi pozwala nam uwzględnić **kontekst** w zdaniu i zobaczyć, które słowa są ze sobą powiązane. Na przykład pozwala nam zobaczyć, które słowa są odniesieniami do innych, takich jak *to*, oraz uwzględnić kontekst: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> Obraz z [Bloga Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +W transformatorach używamy **uwagi z wieloma głowami**, aby dać sieci możliwość wychwytywania różnych typów zależności, np. relacji między słowami długoterminowych vs. krótkoterminowych, koreferencji vs. czegoś innego itd. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) zawiera więcej szczegółów na temat implementacji warstw transformera. + +### Uwagi Enkoder-Dekoder + +W transformatorach uwaga jest stosowana w dwóch miejscach: + +* Do wychwytywania wzorców w tekście wejściowym za pomocą samouwagi +* Do tłumaczenia sekwencji - jest to warstwa uwagi między enkoderem a dekoderem. + +Uwagi enkoder-dekoder są bardzo podobne do mechanizmu uwagi stosowanego w RNN, jak opisano na początku tej sekcji. Ten animowany diagram wyjaśnia rolę uwagi enkoder-dekoder. + +![Animowany GIF pokazujący, jak przeprowadzane są oceny w modelach transformera.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Ponieważ każda pozycja wejściowa jest mapowana niezależnie na każdą pozycję wyjściową, transformery mogą lepiej zrównoleglić niż RNN, co umożliwia tworzenie znacznie większych i bardziej ekspresyjnych modeli językowych. Każda głowa uwagi może być używana do nauki różnych relacji między słowami, co poprawia zadania przetwarzania języka naturalnego. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) to bardzo duża wielowarstwowa sieć transformera z 12 warstwami dla *BERT-base* i 24 dla *BERT-large*. Model jest najpierw wstępnie trenowany na dużym korpusie danych tekstowych (Wikipedia + książki) za pomocą uczenia niesuperwizowanego (przewidywanie zamaskowanych słów w zdaniu). Podczas wstępnego trenowania model przyswaja znaczące poziomy zrozumienia języka, które można następnie wykorzystać z innymi zestawami danych za pomocą dostrajania. Ten proces nazywa się **uczeniem transferowym**. + +![obrazek z http://jalammar.github.io/illustrated-bert/](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> Obraz [źródło](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Ćwiczenia: Transformery + +Kontynuuj naukę w poniższych notebookach: + +* [Transformery w PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformery w TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Podsumowanie + +W tej lekcji dowiedziałeś się o Transformerach i Mechanizmach Uwagi, które są niezbędnymi narzędziami w zestawie narzędzi NLP. Istnieje wiele wariacji architektur Transformer, w tym BERT, DistilBERT, BigBird, OpenGPT3 i inne, które można dostrajać. Pakiet [HuggingFace](https://github.com/huggingface/) zapewnia repozytorium do trenowania wielu z tych architektur zarówno w PyTorch, jak i TensorFlow. + +## 🚀 Wyzwanie + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Przegląd i Samodzielna Nauka + +* [Wpis na blogu](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), wyjaśniający klasyczny artykuł [Attention is all you need](https://arxiv.org/abs/1706.03762) o transformatorach. +* [Seria wpisów na blogu](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) o transformatorach, wyjaśniająca szczegóły architektury. + +## [Zadanie](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/18-Transformers/assignment.md b/translations/pl/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..5a6fe320 --- /dev/null +++ b/translations/pl/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Transformers + +Eksperymentuj z Transformerami na HuggingFace! Wypróbuj niektóre z udostępnionych przez nich skryptów, aby pracować z różnymi modelami dostępnymi na ich stronie: https://huggingface.co/docs/transformers/run_scripts. Wypróbuj jeden z ich zestawów danych, a następnie zaimportuj jeden z własnych z tego programu nauczania lub z Kaggle i sprawdź, czy uda Ci się wygenerować interesujące teksty. Przygotuj notatnik z wynikami swoich badań. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/19-NER/README.md b/translations/pl/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..a3d8293d --- /dev/null +++ b/translations/pl/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Rozpoznawanie nazwanych jednostek + +Do tej pory skupialiśmy się głównie na jednym zadaniu NLP - klasyfikacji. Istnieją jednak inne zadania NLP, które można realizować za pomocą sieci neuronowych. Jednym z takich zadań jest **[Rozpoznawanie nazwanych jednostek](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), które polega na identyfikacji konkretnych jednostek w tekście, takich jak miejsca, imiona i nazwiska, przedziały czasowe, wzory chemiczne i inne. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Przykład użycia NER + +Załóżmy, że chcesz stworzyć czatbota obsługującego język naturalny, podobnego do Amazon Alexa lub Google Assistant. Inteligentne czatboty działają w ten sposób, że *rozumieją*, czego użytkownik chce, poprzez klasyfikację tekstu w zdaniu wejściowym. Wynikiem tej klasyfikacji jest tzw. **intencja**, która określa, co czatbot powinien zrobić. + +Bot NER + +> Obraz autorstwa autora + +Jednak użytkownik może podać pewne parametry w ramach swojej wypowiedzi. Na przykład, pytając o pogodę, może określić lokalizację lub datę. Bot powinien być w stanie zrozumieć te jednostki i odpowiednio wypełnić pola parametrów przed wykonaniem akcji. Właśnie tutaj wkracza NER. + +> ✅ Innym przykładem może być [analiza naukowych artykułów medycznych](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Jednym z głównych zadań jest wyszukiwanie konkretnych terminów medycznych, takich jak choroby i substancje medyczne. Podczas gdy niewielką liczbę chorób można prawdopodobnie wyodrębnić za pomocą wyszukiwania podciągów, bardziej złożone jednostki, takie jak związki chemiczne i nazwy leków, wymagają bardziej zaawansowanego podejścia. + +## NER jako klasyfikacja tokenów + +Modele NER to w istocie **modele klasyfikacji tokenów**, ponieważ dla każdego z tokenów wejściowych musimy zdecydować, czy należy on do jakiejś jednostki, a jeśli tak - do której klasy jednostek. + +Rozważmy następujący tytuł artykułu: + +**Niedomykalność zastawki trójdzielnej** i **węglan litu** **toksyczność** u noworodka. + +Jednostki w tym przypadku to: + +* Niedomykalność zastawki trójdzielnej to choroba (`DIS`) +* Węglan litu to substancja chemiczna (`CHEM`) +* Toksyczność to również choroba (`DIS`) + +Zauważ, że jedna jednostka może obejmować kilka tokenów. I, jak w tym przypadku, musimy rozróżnić dwie kolejne jednostki. Dlatego powszechnie stosuje się dwie klasy dla każdej jednostki - jedną określającą pierwszy token jednostki (często używa się prefiksu `B-`, od **b**eginning), a drugą - kontynuację jednostki (`I-`, od **i**nner token). Używamy również `O` jako klasy reprezentującej wszystkie **o**ther tokeny. Takie oznaczanie tokenów nazywa się [BIO tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (lub IOB). Po oznaczeniu nasz tytuł wyglądałby tak: + +Token | Tag +------|----- +Niedomykalność | B-DIS +zastawki | I-DIS +trójdzielnej | I-DIS +i | O +węglan | B-CHEM +litu | I-CHEM +toksyczność | B-DIS +u | O +noworodka | O +. | O + +Ponieważ musimy zbudować jednoznaczną korespondencję między tokenami a klasami, możemy wytrenować prawostronny model sieci neuronowej **wielu-do-wielu** z tego obrazu: + +![Obraz przedstawiający typowe wzorce rekurencyjnych sieci neuronowych.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) + +> *Obraz z [tego wpisu na blogu](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) autorstwa [Andreja Karpathy'ego](http://karpathy.github.io/). Modele klasyfikacji tokenów NER odpowiadają architekturze sieci po prawej stronie tego obrazu.* + +## Trenowanie modeli NER + +Ponieważ model NER to w istocie model klasyfikacji tokenów, możemy użyć RNN, które już znamy, do tego zadania. W tym przypadku każdy blok sieci rekurencyjnej zwróci identyfikator tokenu. Poniższy przykładowy notebook pokazuje, jak wytrenować LSTM do klasyfikacji tokenów. + +## ✍️ Przykładowe notebooki: NER + +Kontynuuj naukę w poniższym notebooku: + +* [NER z TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Podsumowanie + +Model NER to **model klasyfikacji tokenów**, co oznacza, że można go używać do klasyfikacji tokenów. Jest to bardzo powszechne zadanie w NLP, pomagające rozpoznawać konkretne jednostki w tekście, w tym miejsca, imiona, daty i inne. + +## 🚀 Wyzwanie + +Wykonaj zadanie podlinkowane poniżej, aby wytrenować model rozpoznawania nazwanych jednostek dla terminów medycznych, a następnie wypróbuj go na innym zbiorze danych. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Przegląd i samodzielna nauka + +Przeczytaj wpis na blogu [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) i zapoznaj się z sekcją Dalsza lektura w tym artykule, aby pogłębić swoją wiedzę. + +## [Zadanie](lab/README.md) + +W zadaniu do tej lekcji będziesz musiał wytrenować model rozpoznawania jednostek medycznych. Możesz zacząć od trenowania modelu LSTM, jak opisano w tej lekcji, a następnie przejść do użycia modelu transformera BERT. Przeczytaj [instrukcje](lab/README.md), aby poznać wszystkie szczegóły. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/19-NER/lab/README.md b/translations/pl/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..d073269c --- /dev/null +++ b/translations/pl/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Zadanie laboratoryjne z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadanie + +W tym laboratorium musisz wytrenować model rozpoznawania nazwanych jednostek (NER) dla terminów medycznych. + +## Zbiór danych + +Aby wytrenować model NER, potrzebujemy odpowiednio oznaczonego zbioru danych z jednostkami medycznymi. [Zbiór danych BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) zawiera oznaczone jednostki chorób i substancji chemicznych z ponad 1500 publikacji. Możesz pobrać ten zbiór danych po zarejestrowaniu się na ich stronie internetowej. + +Zbiór danych BC5CDR wygląda tak: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +W tym zbiorze danych znajdują się tytuł i abstrakt publikacji w pierwszych dwóch liniach, a następnie poszczególne jednostki z określonymi pozycjami początkowymi i końcowymi w bloku tytuł+abstrakt. Oprócz typu jednostki, otrzymujesz identyfikator ontologii tej jednostki w ramach określonej ontologii medycznej. + +Będziesz musiał napisać trochę kodu w Pythonie, aby przekonwertować to na kodowanie BIO. + +## Sieć + +Pierwsze podejście do NER można zrealizować za pomocą sieci LSTM, jak pokazano w naszym przykładzie podczas lekcji. Jednak w zadaniach NLP [architektura transformera](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), a w szczególności [modele językowe BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), osiągają znacznie lepsze wyniki. Wstępnie wytrenowane modele BERT rozumieją ogólną strukturę języka i mogą być dostosowane do konkretnych zadań przy stosunkowo małych zbiorach danych i niskich kosztach obliczeniowych. + +Ponieważ planujemy zastosować NER w scenariuszu medycznym, warto użyć modelu BERT wytrenowanego na tekstach medycznych. Microsoft Research udostępnił wstępnie wytrenowany model o nazwie [PubMedBERT][PubMedBERT] ([publikacja][PubMedBERT-Pub]), który został dostosowany za pomocą tekstów z repozytorium [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Standardem w trenowaniu modeli transformera jest biblioteka [Hugging Face Transformers](https://huggingface.co/). Zawiera ona również repozytorium modeli wstępnie wytrenowanych przez społeczność, w tym PubMedBERT. Aby załadować i używać tego modelu, wystarczy kilka linijek kodu: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +To daje nam sam `model`, zbudowany do zadania klasyfikacji tokenów przy użyciu `classes` liczby klas, oraz obiekt `tokenizer`, który może dzielić tekst wejściowy na tokeny. Będziesz musiał przekonwertować zbiór danych na format BIO, uwzględniając tokenizację PubMedBERT. Możesz skorzystać z [tego fragmentu kodu w Pythonie](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) jako inspiracji. + +## Wnioski + +To zadanie jest bardzo zbliżone do rzeczywistego zadania, które możesz mieć, jeśli chcesz uzyskać więcej informacji z dużych ilości tekstów w języku naturalnym. W naszym przypadku możemy zastosować wytrenowany model do [zbioru danych dotyczącego publikacji związanych z COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) i sprawdzić, jakie wnioski uda nam się wyciągnąć. [Ten wpis na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) oraz [ten artykuł](https://www.mdpi.com/2504-2289/6/1/4) opisują badania, które można przeprowadzić na tym korpusie publikacji za pomocą NER. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/20-LangModels/README.md b/translations/pl/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..775f97a3 --- /dev/null +++ b/translations/pl/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Wstępnie Wytrenowane Duże Modele Językowe + +We wszystkich naszych poprzednich zadaniach trenowaliśmy sieć neuronową, aby wykonywała określone zadanie, korzystając z oznaczonego zbioru danych. W przypadku dużych modeli transformatorowych, takich jak BERT, wykorzystujemy modelowanie języka w sposób samonadzorowany, aby zbudować model językowy, który następnie jest specjalizowany do konkretnego zadania dzięki dalszemu treningowi w specyficznej dziedzinie. Jednakże wykazano, że duże modele językowe mogą również rozwiązywać wiele zadań bez JAKIEGOKOLWIEK treningu specyficznego dla danej dziedziny. Rodzina modeli zdolnych do tego nazywa się **GPT**: Generative Pre-Trained Transformer. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generowanie Tekstu i Perpleksja + +Pomysł, że sieć neuronowa może wykonywać ogólne zadania bez dodatkowego treningu, został przedstawiony w artykule [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Główna idea polega na tym, że wiele innych zadań można modelować za pomocą **generowania tekstu**, ponieważ zrozumienie tekstu zasadniczo oznacza zdolność do jego tworzenia. Ponieważ model jest trenowany na ogromnej ilości tekstu obejmującego ludzką wiedzę, staje się również kompetentny w szerokim zakresie tematów. + +> Zrozumienie i zdolność do tworzenia tekstu oznacza również posiadanie pewnej wiedzy o otaczającym nas świecie. Ludzie w dużej mierze uczą się poprzez czytanie, a sieć GPT jest pod tym względem podobna. + +Sieci generujące tekst działają poprzez przewidywanie prawdopodobieństwa następnego słowa $$P(w_N)$$. Jednak bezwarunkowe prawdopodobieństwo następnego słowa równa się częstotliwości występowania tego słowa w korpusie tekstu. GPT potrafi podać **warunkowe prawdopodobieństwo** następnego słowa, biorąc pod uwagę poprzednie: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Więcej o prawdopodobieństwach możesz przeczytać w naszym [Kursie Data Science dla Początkujących](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Jakość modelu generującego język można określić za pomocą **perpleksji**. Jest to wewnętrzna metryka, która pozwala mierzyć jakość modelu bez użycia zbioru danych specyficznego dla zadania. Opiera się na pojęciu *prawdopodobieństwa zdania* - model przypisuje wysokie prawdopodobieństwo zdaniu, które prawdopodobnie jest prawdziwe (tj. model nie jest **zdezorientowany**), oraz niskie prawdopodobieństwo zdaniom, które mają mniej sensu (np. *Czy to może co robić?*). Gdy podajemy naszemu modelowi zdania z rzeczywistego korpusu tekstu, oczekujemy, że będą miały wysokie prawdopodobieństwo i niską **perpleksję**. Matematycznie jest to zdefiniowane jako znormalizowane odwrotne prawdopodobieństwo zbioru testowego: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Możesz eksperymentować z generowaniem tekstu, korzystając z [edytora tekstu opartego na GPT od Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. W tym edytorze zaczynasz pisać swój tekst, a naciśnięcie **[TAB]** zaproponuje kilka opcji uzupełnienia. Jeśli są zbyt krótkie lub nie jesteś z nich zadowolony - naciśnij [TAB] ponownie, aby uzyskać więcej opcji, w tym dłuższe fragmenty tekstu. + +## GPT to Rodzina + +GPT to nie jeden model, ale raczej kolekcja modeli opracowanych i wytrenowanych przez [OpenAI](https://openai.com). + +W ramach modeli GPT mamy: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| Model językowy z maksymalnie 1,5 miliarda parametrów. | Model językowy z maksymalnie 175 miliardami parametrów. | 100T parametrów, akceptuje zarówno obrazy, jak i tekst jako dane wejściowe, a generuje tekst. | + +Modele GPT-3 i GPT-4 są dostępne [jako usługa kognitywna od Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) oraz jako [API OpenAI](https://openai.com/api/). + +## Inżynieria Podpowiedzi + +Ponieważ GPT zostało wytrenowane na ogromnych ilościach danych, aby rozumieć język i kod, generuje odpowiedzi na podstawie danych wejściowych (podpowiedzi). Podpowiedzi to dane wejściowe lub zapytania do GPT, w których dostarcza się modelowi instrukcji dotyczących zadań, które ma wykonać. Aby uzyskać pożądany wynik, należy stworzyć najbardziej efektywną podpowiedź, co obejmuje wybór odpowiednich słów, formatów, fraz, a nawet symboli. To podejście nazywa się [Inżynierią Podpowiedzi](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Ta dokumentacja](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) dostarcza więcej informacji na temat inżynierii podpowiedzi. + +## ✍️ Przykładowy Notebook: [Zabawa z OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Kontynuuj naukę w poniższych notebookach: + +* [Generowanie tekstu z OpenAI-GPT i Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Podsumowanie + +Nowe ogólne wstępnie wytrenowane modele językowe nie tylko modelują strukturę języka, ale także zawierają ogromną ilość naturalnego języka. Dzięki temu mogą być skutecznie wykorzystywane do rozwiązywania niektórych zadań NLP w ustawieniach zero-shot lub few-shot. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/5-NLP/README.md b/translations/pl/lessons/5-NLP/README.md new file mode 100644 index 00000000..20dc7145 --- /dev/null +++ b/translations/pl/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Przetwarzanie Języka Naturalnego + +![Podsumowanie zadań NLP w formie rysunku](../../../../lessons/sketchnotes/ai-nlp.png) + +W tej sekcji skupimy się na wykorzystaniu sieci neuronowych do rozwiązywania zadań związanych z **Przetwarzaniem Języka Naturalnego (NLP)**. Istnieje wiele problemów NLP, które chcielibyśmy, aby komputery potrafiły rozwiązywać: + +* **Klasyfikacja tekstu** to typowy problem klasyfikacyjny dotyczący sekwencji tekstowych. Przykłady obejmują klasyfikowanie wiadomości e-mail jako spam lub nie-spam, albo kategoryzowanie artykułów jako sport, biznes, polityka itp. Ponadto, podczas tworzenia chatbotów często musimy zrozumieć, co użytkownik chciał powiedzieć — w takim przypadku mamy do czynienia z **klasyfikacją intencji**. W klasyfikacji intencji często musimy radzić sobie z wieloma kategoriami. +* **Analiza sentymentu** to typowy problem regresji, w którym musimy przypisać liczbę (sentyment) odpowiadającą temu, jak pozytywne/negatywne jest znaczenie zdania. Bardziej zaawansowaną wersją analizy sentymentu jest **analiza sentymentu oparta na aspektach** (ABSA), gdzie przypisujemy sentyment nie do całego zdania, ale do jego różnych części (aspektów), np. *W tej restauracji podobała mi się kuchnia, ale atmosfera była okropna*. +* **Rozpoznawanie nazwanych jednostek** (NER) odnosi się do problemu wyodrębniania określonych jednostek z tekstu. Na przykład, musimy zrozumieć, że w zdaniu *Muszę polecieć do Paryża jutro* słowo *jutro* odnosi się do DATY, a *Paryż* to LOKALIZACJA. +* **Ekstrakcja słów kluczowych** jest podobna do NER, ale musimy automatycznie wyodrębnić słowa istotne dla znaczenia zdania, bez wcześniejszego trenowania na określonych typach jednostek. +* **Grupowanie tekstu** może być przydatne, gdy chcemy pogrupować podobne zdania, na przykład podobne zgłoszenia w rozmowach z pomocą techniczną. +* **Odpowiadanie na pytania** odnosi się do zdolności modelu do udzielania odpowiedzi na konkretne pytanie. Model otrzymuje fragment tekstu i pytanie jako dane wejściowe, a jego zadaniem jest wskazanie miejsca w tekście, gdzie znajduje się odpowiedź (lub czasami wygenerowanie tekstu odpowiedzi). +* **Generowanie tekstu** to zdolność modelu do tworzenia nowego tekstu. Można to traktować jako zadanie klasyfikacyjne, które przewiduje kolejną literę/słowo na podstawie pewnej *podpowiedzi tekstowej*. Zaawansowane modele generowania tekstu, takie jak GPT-3, potrafią rozwiązywać inne zadania NLP, takie jak klasyfikacja, wykorzystując techniki zwane [programowaniem podpowiedzi](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) lub [inżynierią podpowiedzi](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Podsumowywanie tekstu** to technika, w której chcemy, aby komputer "przeczytał" długi tekst i streścił go w kilku zdaniach. +* **Tłumaczenie maszynowe** można postrzegać jako połączenie rozumienia tekstu w jednym języku i generowania tekstu w innym. + +Początkowo większość zadań NLP była rozwiązywana za pomocą tradycyjnych metod, takich jak gramatyki. Na przykład w tłumaczeniu maszynowym używano parserów do przekształcenia początkowego zdania w drzewo składniowe, następnie wyodrębniano wyższe struktury semantyczne, aby reprezentować znaczenie zdania, a na podstawie tego znaczenia i gramatyki języka docelowego generowano wynik. Obecnie wiele zadań NLP jest skuteczniej rozwiązywanych za pomocą sieci neuronowych. + +> Wiele klasycznych metod NLP jest zaimplementowanych w bibliotece Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Dostępna jest świetna [Książka o NLTK](https://www.nltk.org/book/), która omawia, jak różne zadania NLP można rozwiązać za pomocą NLTK. + +W naszym kursie skupimy się głównie na wykorzystaniu sieci neuronowych w NLP, a NLTK będziemy używać w razie potrzeby. + +Nauczyliśmy się już, jak używać sieci neuronowych do pracy z danymi tabelarycznymi i obrazami. Główna różnica między tymi typami danych a tekstem polega na tym, że tekst jest sekwencją o zmiennej długości, podczas gdy rozmiar wejścia w przypadku obrazów jest znany z góry. Podczas gdy sieci konwolucyjne mogą wyodrębniać wzorce z danych wejściowych, wzorce w tekście są bardziej złożone. Na przykład negacja może być oddzielona od podmiotu przez dowolną liczbę słów (np. *Nie lubię pomarańczy* vs. *Nie lubię tych dużych kolorowych smacznych pomarańczy*), a mimo to powinna być interpretowana jako jeden wzorzec. Dlatego, aby przetwarzać język, musimy wprowadzić nowe typy sieci neuronowych, takie jak *sieci rekurencyjne* i *transformery*. + +## Instalacja bibliotek + +Jeśli korzystasz z lokalnej instalacji Pythona do uruchamiania tego kursu, możesz potrzebować zainstalować wszystkie wymagane biblioteki dla NLP za pomocą następujących poleceń: + +**Dla PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Dla TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Możesz wypróbować NLP z TensorFlow na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Ostrzeżenie dotyczące GPU + +W tej sekcji, w niektórych przykładach będziemy trenować dość duże modele. +* **Używaj komputera z obsługą GPU**: Zaleca się uruchamianie notebooków na komputerze z obsługą GPU, aby skrócić czas oczekiwania podczas pracy z dużymi modelami. +* **Ograniczenia pamięci GPU**: Uruchamianie na GPU może prowadzić do sytuacji, w których zabraknie pamięci GPU, zwłaszcza podczas trenowania dużych modeli. +* **Zużycie pamięci GPU**: Ilość pamięci GPU zużywanej podczas trenowania zależy od różnych czynników, w tym rozmiaru minibatcha. +* **Minimalizuj rozmiar minibatcha**: Jeśli napotkasz problemy z pamięcią GPU, rozważ zmniejszenie rozmiaru minibatcha w swoim kodzie jako potencjalne rozwiązanie. +* **Zwolnienie pamięci GPU w TensorFlow**: Starsze wersje TensorFlow mogą nie zwalniać pamięci GPU poprawnie podczas trenowania wielu modeli w jednym jądrze Pythona. Aby skutecznie zarządzać użyciem pamięci GPU, możesz skonfigurować TensorFlow tak, aby alokował pamięć GPU tylko w razie potrzeby. +* **Dodanie kodu**: Aby ustawić TensorFlow na dynamiczne przydzielanie pamięci GPU, dodaj poniższy kod do swoich notebooków: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Jeśli interesuje Cię nauka NLP z perspektywy klasycznego ML, odwiedź [ten zestaw lekcji](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## W tej sekcji +W tej sekcji nauczymy się: + +* [Reprezentowania tekstu jako tensory](13-TextRep/README.md) +* [Osadzeń słów](14-Emdeddings/README.md) +* [Modelowania języka](15-LanguageModeling/README.md) +* [Rekurencyjnych sieci neuronowych](16-RNN/README.md) +* [Sieci generatywnych](17-GenerativeNetworks/README.md) +* [Transformerów](18-Transformers/README.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/pl/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..7ea769cd --- /dev/null +++ b/translations/pl/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Algorytmy Genetyczne + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algorytmy Genetyczne** (GA) opierają się na **ewolucyjnym podejściu** do sztucznej inteligencji, w którym wykorzystuje się metody ewolucji populacji do uzyskania optymalnego rozwiązania dla danego problemu. Zostały zaproponowane w 1975 roku przez [Johna Henry'ego Hollanda](https://wikipedia.org/wiki/John_Henry_Holland). + +Algorytmy Genetyczne bazują na następujących założeniach: + +* Prawidłowe rozwiązania problemu można przedstawić jako **geny** +* **Krzyżowanie** pozwala łączyć dwa rozwiązania, aby uzyskać nowe, prawidłowe rozwiązanie +* **Selekcja** służy do wybierania bardziej optymalnych rozwiązań za pomocą **funkcji dopasowania** +* **Mutacje** są wprowadzane, aby destabilizować optymalizację i wyprowadzać nas z lokalnego minimum + +Aby zaimplementować Algorytm Genetyczny, potrzebujesz: + + * Metody kodowania rozwiązań problemu za pomocą **genów** g∈Γ + * Na zbiorze genów Γ należy zdefiniować **funkcję dopasowania** fit: Γ→**R**. Mniejsze wartości funkcji odpowiadają lepszym rozwiązaniom. + * Mechanizmu **krzyżowania**, który pozwala łączyć dwa geny w celu uzyskania nowego, prawidłowego rozwiązania crossover: Γ2→Γ. + * Mechanizmu **mutacji** mutate: Γ→Γ. + +W wielu przypadkach krzyżowanie i mutacja to dość proste algorytmy manipulujące genami jako sekwencjami liczbowymi lub wektorami bitowymi. + +Konkretna implementacja algorytmu genetycznego może różnić się w zależności od przypadku, ale ogólna struktura wygląda następująco: + +1. Wybierz początkową populację G⊂Γ +2. Losowo wybierz jedną z operacji, która zostanie wykonana na tym etapie: krzyżowanie lub mutacja +3. **Krzyżowanie**: + * Losowo wybierz dwa geny g1, g2 ∈ G + * Oblicz krzyżowanie g=crossover(g1,g2) + * Jeśli fit(g)1) lub fit(g)2) - zastąp odpowiedni gen w populacji przez g. +4. **Mutacja** - wybierz losowy gen g∈G i zastąp go przez mutate(g) +5. Powtarzaj od kroku 2, aż uzyskasz wystarczająco małą wartość fit lub do osiągnięcia limitu liczby kroków. + +## Typowe Zadania + +Zadania, które zazwyczaj rozwiązuje się za pomocą Algorytmów Genetycznych, obejmują: + +1. Optymalizację harmonogramów +1. Optymalne pakowanie +1. Optymalne cięcie +1. Przyspieszanie wyczerpującego przeszukiwania + +## ✍️ Ćwiczenia: Algorytmy Genetyczne + +Kontynuuj naukę w poniższych notatnikach: + +Przejdź do [tego notatnika](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), aby zobaczyć dwa przykłady użycia Algorytmów Genetycznych: + +1. Sprawiedliwy podział skarbu +1. Problem 8 hetmanów + +## Podsumowanie + +Algorytmy Genetyczne są wykorzystywane do rozwiązywania wielu problemów, w tym problemów logistycznych i wyszukiwania. Dziedzina ta jest inspirowana badaniami łączącymi tematy z zakresu psychologii i informatyki. + +## 🚀 Wyzwanie + +"Algorytmy genetyczne są proste w implementacji, ale ich zachowanie jest trudne do zrozumienia." [źródło](https://wikipedia.org/wiki/Genetic_algorithm) Przeprowadź badania, aby znaleźć implementację algorytmu genetycznego, na przykład rozwiązującego łamigłówkę Sudoku, i wyjaśnij, jak działa w formie szkicu lub schematu blokowego. + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Przegląd i Samodzielna Nauka + +Obejrzyj [ten świetny film](https://www.youtube.com/watch?v=qv6UVOQ0F44) opowiadający o tym, jak komputer może nauczyć się grać w Super Mario, wykorzystując sieci neuronowe trenowane przez algorytmy genetyczne. Dowiemy się więcej o tym, jak komputer uczy się grać w takie gry [w następnej sekcji](../22-DeepRL/README.md). + +## [Zadanie: Równanie Diofantyczne](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Twoim celem jest rozwiązanie tzw. **równania diofantycznego** - równania z całkowitymi pierwiastkami. Na przykład rozważ równanie a+2b+3c+4d=30. Musisz znaleźć całkowite pierwiastki, które spełniają to równanie. + +*To zadanie jest inspirowane [tym postem](https://habr.com/post/128704/).* + +Wskazówki: + +1. Możesz rozważyć pierwiastki w przedziale [0;30] +1. Jako gen rozważ użycie listy wartości pierwiastków + +Użyj [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) jako punktu wyjścia. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/6-Other/22-DeepRL/README.md b/translations/pl/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..2ed7e09a --- /dev/null +++ b/translations/pl/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Głębokie Uczenie Wzmocnione + +Uczenie wzmocnione (RL) jest uważane za jeden z podstawowych paradygmatów uczenia maszynowego, obok uczenia nadzorowanego i nienadzorowanego. Podczas gdy w uczeniu nadzorowanym opieramy się na zbiorze danych z określonymi wynikami, RL bazuje na **uczeniu się poprzez działanie**. Na przykład, gdy po raz pierwszy widzimy grę komputerową, zaczynamy grać, nawet nie znając zasad, a wkrótce jesteśmy w stanie poprawić swoje umiejętności dzięki samemu procesowi grania i dostosowywania swojego zachowania. + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Aby przeprowadzić RL, potrzebujemy: + +* **Środowiska** lub **symulatora**, który ustala zasady gry. Powinniśmy być w stanie przeprowadzać eksperymenty w symulatorze i obserwować wyniki. +* **Funkcji nagrody**, która wskazuje, jak udany był nasz eksperyment. W przypadku nauki gry w grę komputerową, nagrodą byłby nasz końcowy wynik. + +Na podstawie funkcji nagrody powinniśmy być w stanie dostosować swoje zachowanie i poprawić umiejętności, aby następnym razem grać lepiej. Główna różnica między innymi typami uczenia maszynowego a RL polega na tym, że w RL zazwyczaj nie wiemy, czy wygrywamy, czy przegrywamy, dopóki nie zakończymy gry. Dlatego nie możemy powiedzieć, czy dany ruch sam w sobie jest dobry czy nie - nagrodę otrzymujemy dopiero na końcu gry. + +Podczas RL zazwyczaj przeprowadzamy wiele eksperymentów. W trakcie każdego eksperymentu musimy balansować między podążaniem za optymalną strategią, którą dotychczas opracowaliśmy (**eksploatacja**), a eksplorowaniem nowych możliwych stanów (**eksploracja**). + +## OpenAI Gym + +Świetnym narzędziem do RL jest [OpenAI Gym](https://gym.openai.com/) - **środowisko symulacyjne**, które może symulować wiele różnych środowisk, począwszy od gier Atari, aż po fizykę związaną z balansowaniem drążka. Jest to jedno z najpopularniejszych środowisk symulacyjnych do trenowania algorytmów uczenia wzmocnionego i jest utrzymywane przez [OpenAI](https://openai.com/). + +> **Note**: Wszystkie dostępne środowiska OpenAI Gym można zobaczyć [tutaj](https://gym.openai.com/envs/#classic_control). + +## Balansowanie CartPole + +Prawdopodobnie wszyscy widzieliście nowoczesne urządzenia balansujące, takie jak *Segway* czy *Gyroscooters*. Są one w stanie automatycznie balansować, dostosowując swoje koła w odpowiedzi na sygnał z akcelerometru lub żyroskopu. W tej sekcji nauczymy się, jak rozwiązać podobny problem - balansowanie drążka. Jest to podobne do sytuacji, gdy artysta cyrkowy musi balansować drążek na dłoni - ale to balansowanie drążka odbywa się tylko w 1D. + +Uproszczona wersja balansowania jest znana jako problem **CartPole**. W świecie CartPole mamy poziomy suwak, który może poruszać się w lewo lub w prawo, a celem jest balansowanie pionowego drążka na szczycie suwaka podczas jego ruchu. + +cartpole + +Aby stworzyć i używać tego środowiska, potrzebujemy kilku linii kodu w Pythonie: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +Każde środowisko można obsługiwać w ten sam sposób: +* `env.reset` rozpoczyna nowy eksperyment +* `env.step` wykonuje krok symulacji. Otrzymuje **akcję** z **przestrzeni akcji** i zwraca **obserwację** (z przestrzeni obserwacji), a także nagrodę i flagę zakończenia. + +W powyższym przykładzie wykonujemy losową akcję na każdym kroku, dlatego życie eksperymentu jest bardzo krótkie: + +![cartpole bez balansowania](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Celem algorytmu RL jest wytrenowanie modelu - tzw. **polityki** π - który zwróci akcję w odpowiedzi na dany stan. Możemy również rozważyć politykę jako probabilistyczną, np. dla dowolnego stanu *s* i akcji *a* zwróci prawdopodobieństwo π(*a*|*s*), że powinniśmy podjąć *a* w stanie *s*. + +## Algorytm Gradientów Polityki + +Najbardziej oczywistym sposobem modelowania polityki jest stworzenie sieci neuronowej, która przyjmie stany jako dane wejściowe i zwróci odpowiadające akcje (a właściwie prawdopodobieństwa wszystkich akcji). W pewnym sensie byłoby to podobne do normalnego zadania klasyfikacji, z jedną istotną różnicą - nie wiemy z góry, jakie akcje powinniśmy podjąć na każdym z kroków. + +Pomysł polega na oszacowaniu tych prawdopodobieństw. Budujemy wektor **skumulowanych nagród**, który pokazuje naszą całkowitą nagrodę na każdym kroku eksperymentu. Stosujemy również **dyskontowanie nagród**, mnożąc wcześniejsze nagrody przez współczynnik γ=0.99, aby zmniejszyć rolę wcześniejszych nagród. Następnie wzmacniamy te kroki na ścieżce eksperymentu, które przynoszą większe nagrody. + +> Dowiedz się więcej o algorytmie Gradientów Polityki i zobacz go w akcji w [przykładowym notebooku](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algorytm Aktor-Krytyk + +Ulepszona wersja podejścia Gradientów Polityki nazywa się **Aktor-Krytyk**. Główna idea polega na tym, że sieć neuronowa będzie trenowana do zwracania dwóch rzeczy: + +* Polityki, która określa, jaką akcję podjąć. Ta część nazywa się **aktor** +* Szacowania całkowitej nagrody, którą możemy oczekiwać w danym stanie - ta część nazywa się **krytyk**. + +W pewnym sensie ta architektura przypomina [GAN](../../4-ComputerVision/10-GANs/README.md), gdzie mamy dwie sieci trenowane przeciwko sobie. W modelu aktor-krytyk aktor proponuje akcję, którą powinniśmy podjąć, a krytyk próbuje być krytyczny i oszacować wynik. Naszym celem jest jednak trenowanie tych sieci w harmonii. + +Ponieważ znamy zarówno rzeczywiste skumulowane nagrody, jak i wyniki zwracane przez krytyka podczas eksperymentu, stosunkowo łatwo jest zbudować funkcję straty, która zminimalizuje różnicę między nimi. To da nam **stratę krytyka**. Możemy obliczyć **stratę aktora** używając tego samego podejścia co w algorytmie Gradientów Polityki. + +Po uruchomieniu jednego z tych algorytmów możemy oczekiwać, że nasz CartPole będzie zachowywał się tak: + +![balansujący cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Ćwiczenia: Gradienty Polityki i RL Aktor-Krytyk + +Kontynuuj naukę w następujących notebookach: + +* [RL w TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL w PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Inne Zadania RL + +Uczenie Wzmocnione jest obecnie szybko rozwijającą się dziedziną badań. Niektóre interesujące przykłady uczenia wzmocnionego to: + +* Nauczanie komputera gry w **gry Atari**. Wyzwanie w tym problemie polega na tym, że nie mamy prostego stanu reprezentowanego jako wektor, ale raczej zrzut ekranu - i musimy użyć CNN, aby przekształcić obraz ekranu w wektor cech lub wyodrębnić informacje o nagrodach. Gry Atari są dostępne w Gym. +* Nauczanie komputera gry w gry planszowe, takie jak Szachy i Go. Ostatnio programy na najwyższym poziomie, takie jak **Alpha Zero**, były trenowane od zera przez dwóch agentów grających przeciwko sobie i poprawiających się na każdym kroku. +* W przemyśle RL jest używane do tworzenia systemów sterowania na podstawie symulacji. Usługa [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) jest specjalnie zaprojektowana do tego celu. + +## Podsumowanie + +Nauczyliśmy się, jak trenować agentów, aby osiągali dobre wyniki, zapewniając im jedynie funkcję nagrody, która definiuje pożądany stan gry, oraz dając im możliwość inteligentnego eksplorowania przestrzeni wyszukiwania. Z powodzeniem wypróbowaliśmy dwa algorytmy i osiągnęliśmy dobry wynik w stosunkowo krótkim czasie. Jednak to dopiero początek Twojej podróży w RL, i zdecydowanie warto rozważyć osobny kurs, jeśli chcesz zgłębić temat. + +## 🚀 Wyzwanie + +Zbadaj aplikacje wymienione w sekcji "Inne Zadania RL" i spróbuj zaimplementować jedną z nich! + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Przegląd i Samodzielna Nauka + +Dowiedz się więcej o klasycznym uczeniu wzmocnionym w naszym [Kursie dla Początkujących z Uczenia Maszynowego](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Obejrzyj [ten świetny film](https://www.youtube.com/watch?v=qv6UVOQ0F44) o tym, jak komputer może nauczyć się grać w Super Mario. + +## Zadanie: [Trenuj Samochód Górski](lab/README.md) + +Twoim celem w tym zadaniu będzie wytrenowanie innego środowiska Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/6-Other/22-DeepRL/lab/README.md b/translations/pl/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..dfd2f427 --- /dev/null +++ b/translations/pl/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Środowisko + +Środowisko Mountain Car składa się z samochodu uwięzionego w dolinie. Twoim celem jest wyskoczyć z doliny i dotrzeć do flagi. Możesz wykonywać następujące akcje: przyspieszać w lewo, w prawo lub nic nie robić. Możesz obserwować pozycję samochodu na osi x oraz jego prędkość. + +## Rozpoczęcie pracy z notebookiem + +Rozpocznij pracę z laboratorium, otwierając [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Wnioski + +Podczas tego laboratorium powinieneś nauczyć się, że dostosowanie algorytmów RL do nowego środowiska jest często dość proste, ponieważ OpenAI Gym ma ten sam interfejs dla wszystkich środowisk, a algorytmy w dużej mierze nie zależą od charakteru środowiska. Możesz nawet przeorganizować kod w Pythonie w taki sposób, aby przekazywać dowolne środowisko do algorytmu RL jako parametr. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/6-Other/23-MultiagentSystems/README.md b/translations/pl/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..ae35becc --- /dev/null +++ b/translations/pl/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Systemy Wieloagentowe + +Jednym z możliwych sposobów osiągnięcia inteligencji jest tak zwane podejście **emergentne** (lub **synergetyczne**), które opiera się na fakcie, że połączone zachowanie wielu stosunkowo prostych agentów może prowadzić do bardziej złożonego (lub inteligentnego) zachowania całego systemu. Teoretycznie opiera się to na zasadach [Inteligencji Kolektywnej](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentyzmu](https://en.wikipedia.org/wiki/Global_brain) i [Ewolucyjnej Cybernetyki](https://en.wikipedia.org/wiki/Global_brain), które zakładają, że systemy wyższego poziomu zyskują pewną wartość dodaną, gdy są odpowiednio połączone z systemami niższego poziomu (tak zwana *zasada przejścia metasystemowego*). + +## [Quiz przed wykładem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Kierunek **Systemów Wieloagentowych** pojawił się w AI w latach 90. XX wieku jako odpowiedź na rozwój Internetu i systemów rozproszonych. Jednym z klasycznych podręczników AI, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), skupia się na klasycznym podejściu AI z perspektywy systemów wieloagentowych. + +Centralnym pojęciem w podejściu wieloagentowym jest **Agent** – jednostka, która żyje w pewnym **środowisku**, które może postrzegać i na które może wpływać. Jest to bardzo szeroka definicja, a agenci mogą mieć różne typy i klasyfikacje: + +* Ze względu na zdolność do rozumowania: + - **Reaktywne** agenty zazwyczaj mają prosty typ zachowania oparty na zasadzie żądanie-odpowiedź + - **Deliberatywne** agenty wykorzystują pewien rodzaj logicznego rozumowania i/lub zdolności planowania +* Ze względu na miejsce wykonywania kodu agenta: + - **Statyczne** agenty działają na dedykowanym węźle sieci + - **Mobilne** agenty mogą przenosić swój kod między węzłami sieci +* Ze względu na zachowanie: + - **Pasywne agenty** nie mają określonych celów. Mogą reagować na bodźce zewnętrzne, ale nie inicjują działań samodzielnie. + - **Aktywne agenty** mają cele, które realizują + - **Kognitywne agenty** angażują się w złożone planowanie i rozumowanie + +Systemy wieloagentowe są obecnie wykorzystywane w wielu aplikacjach: + +* W grach wiele postaci niezależnych wykorzystuje pewien rodzaj AI i może być uznawanych za inteligentne agenty +* W produkcji wideo, renderowanie złożonych scen 3D z tłumami jest zazwyczaj realizowane za pomocą symulacji wieloagentowej +* W modelowaniu systemów podejście wieloagentowe jest używane do symulacji zachowania złożonego modelu. Na przykład podejście wieloagentowe zostało z powodzeniem wykorzystane do przewidywania rozprzestrzeniania się choroby COVID-19 na całym świecie. Podobne podejście można zastosować do modelowania ruchu w mieście i sprawdzenia, jak reaguje na zmiany w zasadach ruchu drogowego. +* W złożonych systemach automatyzacji każde urządzenie może działać jako niezależny agent, co sprawia, że cały system jest mniej monolityczny i bardziej odporny. + +Nie będziemy poświęcać dużo czasu na dogłębne omawianie systemów wieloagentowych, ale rozważymy jeden przykład **Modelowania Wieloagentowego**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) to środowisko modelowania wieloagentowego oparte na zmodyfikowanej wersji języka programowania [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Język ten został opracowany w celu nauczania dzieci podstaw programowania i pozwala kontrolować agenta zwanego **żółwiem**, który może się poruszać, pozostawiając za sobą ślad. Dzięki temu można tworzyć złożone figury geometryczne, co jest bardzo wizualnym sposobem zrozumienia zachowania agenta. + +W NetLogo możemy stworzyć wiele żółwi za pomocą polecenia `create-turtles`. Następnie możemy nakazać wszystkim żółwiom wykonanie pewnych działań (w poniższym przykładzie – przesunięcie się o 10 punktów do przodu): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Oczywiście, nie jest interesujące, gdy wszystkie żółwie robią to samo, więc możemy `ask` grupy żółwi, np. tych, które znajdują się w pobliżu określonego punktu. Możemy również tworzyć żółwie różnych *ras* za pomocą polecenia `breed [cats cat]`. Tutaj `cat` to nazwa rasy, a my musimy określić zarówno formę pojedynczą, jak i mnogą, ponieważ różne polecenia używają różnych form dla przejrzystości. + +> ✅ Nie będziemy uczyć się języka NetLogo – jeśli jesteś zainteresowany, możesz odwiedzić świetny zasób [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/). + +Możesz [pobrać](https://ccl.northwestern.edu/netlogo/download.shtml) i zainstalować NetLogo, aby spróbować. + +### Biblioteka Modeli + +Wspaniałą rzeczą w NetLogo jest to, że zawiera bibliotekę działających modeli, które możesz wypróbować. Przejdź do **File → Models Library**, gdzie znajdziesz wiele kategorii modeli do wyboru. + +NetLogo Models Library + +> Zrzut ekranu biblioteki modeli autorstwa Dmitry Soshnikov + +Możesz otworzyć jeden z modeli, na przykład **Biology → Flocking**. + +### Główne zasady + +Po otwarciu modelu zostaniesz przeniesiony na główny ekran NetLogo. Oto przykładowy model opisujący populację wilków i owiec, biorąc pod uwagę ograniczone zasoby (trawę). + +![NetLogo Main Screen](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) + +> Zrzut ekranu autorstwa Dmitry Soshnikov + +Na tym ekranie możesz zobaczyć: + +* Sekcję **Interface**, która zawiera: + - Główne pole, na którym żyją agenty + - Różne kontrolki: przyciski, suwaki itp. + - Wykresy, które można wykorzystać do wyświetlania parametrów symulacji +* Zakładkę **Code**, która zawiera edytor, w którym można pisać programy w NetLogo + +W większości przypadków interfejs będzie miał przycisk **Setup**, który inicjalizuje stan symulacji, oraz przycisk **Go**, który rozpoczyna wykonanie. Są one obsługiwane przez odpowiednie procedury w kodzie, które wyglądają tak: + +``` +to go [ +... +] +``` + +Świat NetLogo składa się z następujących obiektów: + +* **Agenty** (żółwie), które mogą poruszać się po polu i wykonywać działania. Możesz wydawać polecenia agentom za pomocą składni `ask turtles [...]`, a kod w nawiasach jest wykonywany przez wszystkich agentów w *trybie żółwia*. +* **Łaty** to kwadratowe obszary pola, na których żyją agenty. Możesz odwoływać się do wszystkich agentów na tej samej łacie lub zmieniać kolory łatek i inne właściwości. Możesz również `ask patches`, aby coś zrobiły. +* **Obserwator** to unikalny agent, który kontroluje świat. Wszystkie procedury obsługiwane przez przyciski są wykonywane w *trybie obserwatora*. + +> ✅ Piękno środowiska wieloagentowego polega na tym, że kod uruchamiany w trybie żółwia lub w trybie łaty jest wykonywany jednocześnie przez wszystkich agentów równolegle. Dzięki temu, pisząc niewielką ilość kodu i programując zachowanie pojedynczego agenta, można stworzyć złożone zachowanie całego systemu symulacji. + +### Flocking + +Jako przykład zachowania wieloagentowego rozważmy **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking to złożony wzorzec bardzo podobny do tego, jak stada ptaków latają. Obserwując ich lot, można pomyśleć, że podążają za jakimś kolektywnym algorytmem lub że posiadają pewną formę *inteligencji kolektywnej*. Jednak to złożone zachowanie pojawia się, gdy każdy indywidualny agent (w tym przypadku *ptak*) obserwuje tylko innych agentów w niewielkiej odległości od siebie i przestrzega trzech prostych zasad: + +* **Wyrównanie** – kieruje się w stronę średniego kierunku sąsiadujących agentów +* **Spójność** – stara się kierować w stronę średniej pozycji sąsiadów (*przyciąganie na dużą odległość*) +* **Separacja** – gdy zbliża się zbyt blisko do innych ptaków, stara się oddalić (*odpychanie na krótką odległość*) + +Możesz uruchomić przykład flockingu i obserwować zachowanie. Możesz również dostosować parametry, takie jak *stopień separacji* czy *zakres widzenia*, który definiuje, jak daleko każdy ptak może widzieć. Zauważ, że jeśli zmniejszysz zakres widzenia do 0, wszystkie ptaki stają się "ślepe" i flocking się zatrzymuje. Jeśli zmniejszysz separację do 0, wszystkie ptaki zbierają się w prostą linię. + +> ✅ Przełącz się na zakładkę **Code** i zobacz, gdzie trzy zasady flockingu (wyrównanie, spójność i separacja) są zaimplementowane w kodzie. Zwróć uwagę, jak odwołujemy się tylko do tych agentów, którzy są w zasięgu wzroku. + +### Inne modele do zobaczenia + +Istnieje kilka innych interesujących modeli, które możesz wypróbować: + +* **Art → Fireworks** pokazuje, jak fajerwerki mogą być uznawane za kolektywne zachowanie indywidualnych strumieni ognia +* **Social Science → Traffic Basic** i **Social Science → Traffic Grid** pokazują model ruchu miejskiego w 1D i 2D Grid z lub bez sygnalizacji świetlnej. Każdy samochód w symulacji przestrzega następujących zasad: + - Jeśli przestrzeń przed nim jest pusta – przyspiesz (do określonej maksymalnej prędkości) + - Jeśli widzi przeszkodę przed sobą – hamuj (i możesz dostosować, jak daleko kierowca może widzieć) +* **Social Science → Party** pokazuje, jak ludzie grupują się podczas przyjęcia koktajlowego. Możesz znaleźć kombinację parametrów, które prowadzą do najszybszego wzrostu szczęścia grupy. + +Jak widać z tych przykładów, symulacje wieloagentowe mogą być bardzo przydatnym sposobem zrozumienia zachowania złożonego systemu składającego się z jednostek przestrzegających tej samej lub podobnej logiki. Mogą być również używane do kontrolowania wirtualnych agentów, takich jak [NPC](https://en.wikipedia.org/wiki/NPC) w grach komputerowych lub agentów w animowanych światach 3D. + +## Deliberatywne Agenty + +Opisane powyżej agenty są bardzo proste, reagując na zmiany w środowisku za pomocą pewnego rodzaju algorytmu. Są to **reaktywne agenty**. Jednak czasami agenty mogą rozumować i planować swoje działania, w takim przypadku nazywane są **deliberatywnymi**. + +Typowym przykładem może być osobisty agent, który otrzymuje instrukcję od człowieka, aby zarezerwować wycieczkę wakacyjną. Załóżmy, że w Internecie żyje wiele agentów, którzy mogą mu pomóc. Powinien wtedy skontaktować się z innymi agentami, aby sprawdzić, jakie loty są dostępne, jakie są ceny hoteli na różne daty i spróbować wynegocjować najlepszą cenę. Gdy plan wakacyjny zostanie ukończony i potwierdzony przez właściciela, może przystąpić do rezerwacji. + +Aby to zrobić, agenty muszą **komunikować się**. Do skutecznej komunikacji potrzebują: + +* Pewnych **standardowych języków do wymiany wiedzy**, takich jak [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) i [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Języki te są projektowane na podstawie [Teorii Aktów Mowy](https://en.wikipedia.org/wiki/Speech_act). +* Języki te powinny również zawierać pewne **protokoły negocjacyjne**, oparte na różnych **typach aukcji**. +* **Wspólnej ontologii**, aby mogły odnosić się do tych samych pojęć, znając ich semantykę +* Sposobu na **odkrycie**, co różni agenci mogą zrobić, również opartego na pewnego rodzaju ontologii + +Deliberatywne agenty są znacznie bardziej złożone niż reaktywne, ponieważ nie tylko reagują na zmiany w środowisku, ale także powinny być w stanie *inicjować* działania. Jedną z proponowanych architektur dla deliberatywnych agentów jest tak zwany agent Wiara-Pragnienie-Intencja (BDI): + +* **Wiara** tworzy zbiór wiedzy o środowisku agenta. Może być strukturyzowana jako baza wiedzy lub zbiór reguł, które agent może zastosować do konkretnej sytuacji w środowisku. +* **Pragnienia** definiują, co agent chce zrobić, czyli jego cele. Na przykład celem osobistego agenta asystenta powyżej jest zarezerwowanie wycieczki, a celem agenta hotelowego jest maksymalizacja zysku. +* **Intencje** to konkretne działania, które agent planuje podjąć, aby osiągnąć swoje cele. Działania zazwyczaj zmieniają środowisko i powodują komunikację z innymi agentami. + +Istnieją platformy dostępne do budowy systemów wieloagentowych, takie jak [JADE](https://jade.tilab.com/). [Ten artykuł](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) zawiera przegląd platform wieloagentowych, wraz z krótką historią systemów wieloagentowych i ich różnymi scenariuszami użycia. + +## Podsumowanie + +Systemy wieloagentowe mogą przybierać bardzo różne formy i być wykorzystywane w wielu różnych aplikacjach. +Wszystkie skupiają się na prostszym zachowaniu pojedynczego agenta i osiągają bardziej złożone zachowanie całego systemu dzięki **efektowi synergii**. + +## 🚀 Wyzwanie + +Przenieś tę lekcję do rzeczywistego świata i spróbuj zaprojektować system wieloagentowy, który może rozwiązać problem. Co na przykład musiałby zrobić system wieloagentowy, aby zoptymalizować trasę szkolnego autobusu? Jak mógłby działać w piekarni? + +## [Quiz po wykładzie](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Przegląd i Samodzielna Nauka + +Przeanalizuj zastosowanie tego typu systemów w przemyśle. Wybierz dziedzinę, taką jak produkcja lub przemysł gier wideo, i odkryj, jak systemy wieloagentowe mogą być wykorzystywane do rozwiązywania unikalnych problemów. + +## [Zadanie NetLogo](assignment.md) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/pl/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..d18e4873 --- /dev/null +++ b/translations/pl/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Zadanie NetLogo + +Wybierz jeden z modeli z biblioteki NetLogo i użyj go do jak najdokładniejszego zasymulowania rzeczywistej sytuacji. Dobrym przykładem byłoby dostosowanie modelu Virus z folderu Alternative Visualizations, aby pokazać, jak można go wykorzystać do modelowania rozprzestrzeniania się COVID-19. Czy potrafisz stworzyć model, który odzwierciedla rzeczywiste rozprzestrzenianie się wirusa? + +Pokaż swoją pracę, zapisując kopię i tworząc wideo demonstracyjne, w którym wyjaśnisz, w jaki sposób model jest powiązany z rzeczywistą sytuacją. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/7-Ethics/README.md b/translations/pl/lessons/7-Ethics/README.md new file mode 100644 index 00000000..b0af5e94 --- /dev/null +++ b/translations/pl/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etyka i Odpowiedzialna Sztuczna Inteligencja + +Jesteś już prawie na końcu tego kursu i mam nadzieję, że teraz wyraźnie widzisz, że sztuczna inteligencja opiera się na szeregu formalnych metod matematycznych, które pozwalają nam znajdować zależności w danych i trenować modele, aby odtwarzały pewne aspekty ludzkiego zachowania. W obecnym momencie historii uważamy AI za bardzo potężne narzędzie do wydobywania wzorców z danych i stosowania tych wzorców do rozwiązywania nowych problemów. + +## [Quiz przed wykładem](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Jednak w literaturze science fiction często spotykamy się z historiami, w których AI stanowi zagrożenie dla ludzkości. Zazwyczaj te historie koncentrują się wokół jakiegoś rodzaju buntu AI, kiedy to AI decyduje się przeciwstawić ludziom. To sugeruje, że AI posiada pewne emocje lub może podejmować decyzje nieprzewidziane przez swoich twórców. + +Rodzaj AI, o którym uczyliśmy się w tym kursie, to nic innego jak duże obliczenia macierzowe. Jest to bardzo potężne narzędzie, które pomaga nam rozwiązywać nasze problemy, i jak każde inne potężne narzędzie - może być używane zarówno w dobrych, jak i złych celach. Co ważne, może być również *niewłaściwie używane*. + +## Zasady Odpowiedzialnej Sztucznej Inteligencji + +Aby uniknąć przypadkowego lub celowego niewłaściwego użycia AI, Microsoft określa ważne [Zasady Odpowiedzialnej Sztucznej Inteligencji](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Poniższe koncepcje stanowią podstawę tych zasad: + +* **Sprawiedliwość** odnosi się do ważnego problemu *uprzedzeń modelu*, które mogą wynikać z użycia stronniczych danych do treningu. Na przykład, gdy próbujemy przewidzieć prawdopodobieństwo zdobycia pracy jako programista przez daną osobę, model może preferować mężczyzn - tylko dlatego, że zestaw danych treningowych prawdopodobnie był stronniczy w kierunku męskiej grupy odbiorców. Musimy starannie zrównoważyć dane treningowe i badać model, aby unikać uprzedzeń i upewnić się, że model uwzględnia bardziej istotne cechy. +* **Niezawodność i Bezpieczeństwo**. Z natury rzeczy modele AI mogą popełniać błędy. Sieć neuronowa zwraca prawdopodobieństwa, co musimy brać pod uwagę przy podejmowaniu decyzji. Każdy model ma pewną precyzję i czułość, i musimy to rozumieć, aby zapobiec szkodom, jakie mogą wyrządzić błędne porady. +* **Prywatność i Bezpieczeństwo** mają pewne specyficzne implikacje dla AI. Na przykład, gdy używamy danych do trenowania modelu, te dane w pewnym sensie stają się "zintegrowane" z modelem. Z jednej strony zwiększa to bezpieczeństwo i prywatność, z drugiej - musimy pamiętać, na jakich danych model był trenowany. +* **Inkluzywność** oznacza, że nie budujemy AI, aby zastąpić ludzi, ale raczej aby wspierać ludzi i uczynić naszą pracę bardziej kreatywną. Jest to również związane ze sprawiedliwością, ponieważ w przypadku społeczności niedostatecznie reprezentowanych większość zbieranych przez nas zestawów danych prawdopodobnie będzie stronnicza, i musimy upewnić się, że te społeczności są uwzględnione i odpowiednio obsługiwane przez AI. +* **Przejrzystość**. Obejmuje to upewnienie się, że zawsze jasno informujemy o użyciu AI. Ponadto, tam gdzie to możliwe, chcemy używać systemów AI, które są *interpretowalne*. +* **Odpowiedzialność**. Gdy modele AI podejmują pewne decyzje, nie zawsze jest jasne, kto jest za nie odpowiedzialny. Musimy upewnić się, że rozumiemy, gdzie leży odpowiedzialność za decyzje AI. W większości przypadków chcielibyśmy włączyć ludzi w proces podejmowania ważnych decyzji, aby to faktyczni ludzie byli odpowiedzialni. + +## Narzędzia do Odpowiedzialnej Sztucznej Inteligencji + +Microsoft opracował [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), który zawiera zestaw narzędzi: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, który obejmuje: + + - EconML - narzędzie do analizy przyczynowej, koncentrujące się na pytaniach typu "co by było, gdyby" + - DiCE - narzędzie do analizy kontrfaktycznej, pozwalające zobaczyć, które cechy należy zmienić, aby wpłynąć na decyzję modelu + +Więcej informacji na temat etyki AI znajdziesz w [tej lekcji](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) w programie nauczania Machine Learning, która zawiera również zadania. + +## Przegląd i Samodzielna Nauka + +Weź udział w [ścieżce nauki](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), aby dowiedzieć się więcej o odpowiedzialnej sztucznej inteligencji. + +## [Quiz po wykładzie](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/README.md b/translations/pl/lessons/README.md new file mode 100644 index 00000000..1c2b27d4 --- /dev/null +++ b/translations/pl/lessons/README.md @@ -0,0 +1,17 @@ + +# Przegląd + +![Przegląd w formie szkicu](../../../lessons/sketchnotes/ai-overview.png) + +> Szkic autorstwa [Tomomi Imura](https://twitter.com/girlie_mac) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/X-Extras/X1-MultiModal/README.md b/translations/pl/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..0809cd58 --- /dev/null +++ b/translations/pl/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Sieci Multi-Modalne + +Po sukcesie modeli transformerowych w rozwiązywaniu zadań NLP, podobne architektury zaczęto stosować w zadaniach związanych z wizją komputerową. Coraz większe zainteresowanie budzą modele, które *łączą* możliwości analizy obrazu i języka naturalnego. Jednym z takich podejść jest CLIP i DALL.E, opracowane przez OpenAI. + +## Kontrastowe Uczenie Obrazów (CLIP) + +Główna idea CLIP polega na porównywaniu tekstowych opisów z obrazami i określaniu, jak dobrze obraz odpowiada danemu opisowi. + +![Architektura CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) + +> *Obrazek z [tego wpisu na blogu](https://openai.com/blog/clip/)* + +Model jest trenowany na obrazach pobranych z Internetu oraz ich podpisach. Dla każdej partii danych bierzemy N par (obraz, tekst) i przekształcamy je w reprezentacje wektorowe I, ..., I / T, ..., T. Te reprezentacje są następnie dopasowywane do siebie. Funkcja straty jest zdefiniowana tak, aby maksymalizować podobieństwo kosinusowe między wektorami odpowiadającymi jednej parze (np. I i T) oraz minimalizować podobieństwo kosinusowe między wszystkimi innymi parami. Dlatego to podejście nazywa się **kontrastowym**. + +Biblioteka/model CLIP jest dostępna na [GitHub OpenAI](https://github.com/openai/CLIP). Podejście zostało opisane w [tym wpisie na blogu](https://openai.com/blog/clip/) oraz szczegółowo w [tym artykule](https://arxiv.org/pdf/2103.00020.pdf). + +Po wstępnym przetrenowaniu modelu możemy podać mu partię obrazów i tekstowych opisów, a w wyniku otrzymamy tensor z prawdopodobieństwami. CLIP może być używany do kilku zadań: + +**Klasyfikacja Obrazów** + +Załóżmy, że musimy sklasyfikować obrazy, np. na koty, psy i ludzi. W takim przypadku możemy podać modelowi obraz oraz serię tekstowych opisów: "*obraz kota*", "*obraz psa*", "*obraz człowieka*". W wynikowym wektorze z 3 prawdopodobieństwami wystarczy wybrać indeks z najwyższą wartością. + +![CLIP dla Klasyfikacji Obrazów](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) + +> *Obrazek z [tego wpisu na blogu](https://openai.com/blog/clip/)* + +**Wyszukiwanie Obrazów na Podstawie Tekstu** + +Możemy również zrobić odwrotnie. Jeśli mamy kolekcję obrazów, możemy przekazać ją do modelu wraz z tekstowym opisem – w wyniku otrzymamy obraz najbardziej odpowiadający danemu opisowi. + +## ✍️ Przykład: [Użycie CLIP do Klasyfikacji Obrazów i Wyszukiwania Obrazów](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Otwórz notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb), aby zobaczyć CLIP w akcji. + +## Generowanie Obrazów za pomocą VQGAN+CLIP + +CLIP może być również używany do **generowania obrazów** na podstawie tekstowego opisu. Aby to zrobić, potrzebujemy **modelu generatora**, który będzie w stanie generować obrazy na podstawie wektora wejściowego. Jednym z takich modeli jest [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Główne idee VQGAN, które odróżniają go od zwykłego [GAN](../../4-ComputerVision/10-GANs/README.md), to: +* Wykorzystanie autoregresyjnej architektury transformera do generowania sekwencji kontekstowo bogatych części wizualnych, które składają się na obraz. Te części wizualne są z kolei uczone przez [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Użycie dyskryminatora sub-obrazów, który wykrywa, czy części obrazu są "prawdziwe" czy "fałszywe" (w przeciwieństwie do podejścia "wszystko albo nic" w tradycyjnym GAN). + +Więcej o VQGAN można dowiedzieć się na stronie [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Jedną z ważnych różnic między VQGAN a tradycyjnym GAN jest to, że ten ostatni może wygenerować przyzwoity obraz z dowolnego wektora wejściowego, podczas gdy VQGAN może wygenerować obraz, który nie będzie spójny. Dlatego proces tworzenia obrazu musi być dodatkowo kierowany, co można zrobić za pomocą CLIP. + +![Architektura VQGAN+CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) + +Aby wygenerować obraz odpowiadający tekstowemu opisowi, zaczynamy od losowego wektora kodującego, który jest przekazywany przez VQGAN w celu wygenerowania obrazu. Następnie CLIP jest używany do stworzenia funkcji straty, która pokazuje, jak dobrze obraz odpowiada tekstowemu opisowi. Celem jest minimalizacja tej straty, wykorzystując propagację wsteczną do dostosowania parametrów wektora wejściowego. + +Świetna biblioteka implementująca VQGAN+CLIP to [Pixray](http://github.com/pixray/pixray). + +![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) +----|----|---- +Obraz wygenerowany na podstawie opisu *zbliżenie akwarelowego portretu młodego nauczyciela literatury z książką* | Obraz wygenerowany na podstawie opisu *zbliżenie olejnego portretu młodej nauczycielki informatyki z komputerem* | Obraz wygenerowany na podstawie opisu *zbliżenie olejnego portretu starszego nauczyciela matematyki przed tablicą* + +> Obrazy z kolekcji **Artificial Teachers** autorstwa [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E to wersja GPT-3 przeszkolona do generowania obrazów na podstawie opisów. Model został przeszkolony na 12 miliardach parametrów. + +W przeciwieństwie do CLIP, DALL-E otrzymuje zarówno tekst, jak i obraz jako pojedynczy strumień tokenów dla obu typów danych. Dzięki temu można generować obrazy na podstawie wielu opisów. + +### [DALL-E 2](https://openai.com/dall-e-2) +Główna różnica między DALL-E 1 a 2 polega na tym, że DALL-E 2 generuje bardziej realistyczne obrazy i dzieła sztuki. + +Przykłady generowania obrazów za pomocą DALL-E: +![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![Obraz wygenerowany przez Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) +----|----|---- +Obraz wygenerowany na podstawie opisu *zbliżenie akwarelowego portretu młodego nauczyciela literatury z książką* | Obraz wygenerowany na podstawie opisu *zbliżenie olejnego portretu młodej nauczycielki informatyki z komputerem* | Obraz wygenerowany na podstawie opisu *zbliżenie olejnego portretu starszego nauczyciela matematyki przed tablicą* + +## Źródła + +* Artykuł o VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Artykuł o CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/sketchnotes/LICENSE.md b/translations/pl/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..4054387e --- /dev/null +++ b/translations/pl/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,113 @@ + +Prawa, prawa te nie są licencjonowane na mocy tej Licencji Publicznej; oraz + + c. nie możesz oferować ani nakładać żadnych dodatkowych lub odmiennych warunków, ani stosować Skutecznych Środków Technologicznych do Materiału Licencjonowanego, które ograniczałyby korzystanie z praw przyznanych na mocy tej Licencji Publicznej przez jakiegokolwiek odbiorcę Materiału Licencjonowanego. + +Sekcja 5 -- Wyłączenie odpowiedzialności i ograniczenia odpowiedzialności. + + a. O ile nie zostało to wyraźnie określone w inny sposób, Licencjodawca udostępnia Materiał Licencjonowany "tak jak jest" i "w miarę dostępności", bez jakichkolwiek gwarancji, wyraźnych lub dorozumianych, w tym, między innymi, gwarancji przydatności handlowej, przydatności do określonego celu, braku naruszeń praw, lub że korzystanie z Materiału Licencjonowanego będzie nieprzerwane lub wolne od błędów. + + b. W maksymalnym zakresie dozwolonym przez obowiązujące prawo, w żadnym wypadku Licencjodawca nie ponosi odpowiedzialności wobec Ciebie za jakiekolwiek straty, koszty, wydatki lub szkody wynikające z tej Licencji Publicznej lub korzystania z Materiału Licencjonowanego, nawet jeśli Licencjodawca został poinformowany o możliwości wystąpienia takich strat, kosztów, wydatków lub szkód. + + c. Wyłączenie odpowiedzialności i ograniczenia odpowiedzialności określone w niniejszej Sekcji 5 nie ograniczają ani nie wyłączają odpowiedzialności za szkody, które nie mogą być ograniczone lub wyłączone na mocy obowiązującego prawa. + +Sekcja 6 -- Termin i zakończenie. + + a. Termin. Niniejsza Licencja Publiczna obowiązuje przez cały okres ochrony praw autorskich i Praw Podobnych do Praw Autorskich objętych Licencją. Jednakże: + + 1. Jeśli naruszysz warunki niniejszej Licencji Publicznej, Twoje prawa na mocy tej Licencji Publicznej automatycznie wygasają. + + 2. W przypadku, gdy Twoje prawa wygasną na mocy Sekcji 6(a)(1), zostaną one automatycznie przywrócone: + + a. z chwilą, gdy naruszenie zostanie naprawione, jeśli zostanie to zrobione w ciągu 30 dni od momentu, gdy dowiesz się o naruszeniu; lub + + b. z chwilą, gdy Licencjodawca wyraźnie przywróci Twoje prawa. + + 3. Dla uniknięcia wątpliwości, niniejsza Sekcja 6(a) nie wpływa na jakiekolwiek prawa Licencjodawcy do dochodzenia roszczeń z tytułu naruszenia niniejszej Licencji Publicznej. + + 4. Licencjodawca może również oferować Materiał Licencjonowany na innych warunkach lub przestać go udostępniać w dowolnym momencie; jednak takie działanie nie zakończy niniejszej Licencji Publicznej (ani żadnej innej licencji, która została udzielona na mocy niniejszej Licencji Publicznej) i nie wpłynie na nią. + + b. Przetrwanie. Sekcje 1, 5, 6, 7 i 8 pozostają w mocy po wygaśnięciu lub zakończeniu niniejszej Licencji Publicznej. + +Sekcja 7 -- Inne warunki i prawo właściwe. + + a. Niniejsza Licencja Publiczna nie unieważnia, nie ogranicza, nie zastępuje ani nie zmienia żadnych praw lub wolności wynikających z wyjątków i ograniczeń do Praw Autorskich i Praw Podobnych do Praw Autorskich, które mają zastosowanie do Twojego korzystania z Materiału Licencjonowanego. + + b. W zakresie, w jakim jakiekolwiek postanowienie niniejszej Licencji Publicznej zostanie uznane za nieważne lub niewykonalne na mocy obowiązującego prawa, nie wpływa to na ważność lub wykonalność pozostałych postanowień niniejszej Licencji Publicznej, a takie postanowienie będzie stosowane w maksymalnym zakresie dozwolonym przez obowiązujące prawo. + + c. Żadne postanowienie niniejszej Licencji Publicznej nie jest przeznaczone do ograniczenia, zmiany lub uchylenia obowiązujących zobowiązań wynikających z jakiegokolwiek traktatu w zakresie ochrony praw autorskich lub innych praw związanych z Materiałem Licencjonowanym. + +Sekcja 8 -- Interpretacja. + + a. O ile nie określono inaczej, terminy użyte w niniejszej Licencji Publicznej mają znaczenie przypisane im w Sekcji 1. + + b. Niniejsza Licencja Publiczna nie jest przeznaczona do ograniczenia interpretacji, która uznaje jej cel. + + c. W przypadku jakichkolwiek wątpliwości co do znaczenia lub interpretacji niniejszej Licencji Publicznej, należy odwołać się do oryginalnego tekstu w języku angielskim. +Prawa, a następnie baza danych, w której posiadasz Sui Generis Database Rights (ale nie jej poszczególne elementy), jest Materiałem Adaptowanym, + +w tym do celów określonych w Sekcji 3(b); oraz +c. Musisz przestrzegać warunków określonych w Sekcji 3(a), jeśli Udostępniasz całość lub znaczną część zawartości bazy danych. + +Dla uniknięcia wątpliwości, niniejsza Sekcja 4 uzupełnia i nie zastępuje Twoich zobowiązań wynikających z niniejszej Licencji Publicznej, gdy Licencjonowane Prawa obejmują inne Prawa Autorskie i Prawa Podobne. + + +Sekcja 5 -- Wyłączenie Gwarancji i Ograniczenie Odpowiedzialności. + +a. O ILE LICENCJODAWCA NIE ZOBOWIĄZAŁ SIĘ INACZEJ, W ZAKRESIE MOŻLIWYM, LICENCJODAWCA UDOSTĘPNIA LICENCJONOWANY MATERIAŁ W STANIE "TAK JAK JEST" I "W MIARĘ DOSTĘPNOŚCI" ORAZ NIE SKŁADA ŻADNYCH OŚWIADCZEŃ ANI GWARANCJI JAKIEGOKOLWIEK RODZAJU DOTYCZĄCYCH LICENCJONOWANEGO MATERIAŁU, CZY TO WYRAŹNYCH, DOROZUMIANYCH, USTAWOWYCH, CZY INNYCH. OBEJMUJE TO, BEZ OGRANICZEŃ, GWARANCJE TYTUŁU, PRZYDATNOŚCI HANDLOWEJ, PRZYDATNOŚCI DO OKREŚLONEGO CELU, BRAKU NARUSZEŃ, BRAKU UKRYTYCH LUB INNYCH WAD, DOKŁADNOŚCI LUB OBECNOŚCI LUB BRAKU BŁĘDÓW, NIEZALEŻNIE OD TEGO, CZY SĄ ONE ZNANE LUB MOŻLIWE DO ODKRYCIA. GDZIE WYŁĄCZENIE GWARANCJI NIE JEST DOZWOLONE W CAŁOŚCI LUB W CZĘŚCI, TO WYŁĄCZENIE MOŻE NIE MIEĆ ZASTOSOWANIA DO CIEBIE. + +b. W ZAKRESIE MOŻLIWYM, LICENCJODAWCA W ŻADNYM WYPADKU NIE BĘDZIE ODPOWIEDZIALNY WOBEC CIEBIE NA ŻADNEJ PODSTAWIE PRAWNEJ (W TYM, BEZ OGRANICZEŃ, Z TYTUŁU ZANIEDBANIA) ANI W INNY SPOSÓB ZA JAKIEKOLWIEK BEZPOŚREDNIE, SZCZEGÓLNE, POŚREDNIE, PRZYPADKOWE, WTÓRNE, KARNE, PRZYKŁADOWE LUB INNE STRATY, KOSZTY, WYDATKI LUB SZKODY WYNIKAJĄCE Z NINIEJSZEJ LICENCJI PUBLICZNEJ LUB KORZYSTANIA Z LICENCJONOWANEGO MATERIAŁU, NAWET JEŚLI LICENCJODAWCA ZOSTAŁ POINFORMOWANY O MOŻLIWOŚCI TAKICH STRAT, KOSZTÓW, WYDATKÓW LUB SZKÓD. GDZIE OGRANICZENIE ODPOWIEDZIALNOŚCI NIE JEST DOZWOLONE W CAŁOŚCI LUB W CZĘŚCI, TO OGRANICZENIE MOŻE NIE MIEĆ ZASTOSOWANIA DO CIEBIE. + +c. Wyłączenie gwarancji i ograniczenie odpowiedzialności określone powyżej powinno być interpretowane w sposób, który, w zakresie możliwym, najbliżej odpowiada absolutnemu wyłączeniu i zrzeczeniu się wszelkiej odpowiedzialności. + + +Sekcja 6 -- Okres obowiązywania i rozwiązanie. + +a. Niniejsza Licencja Publiczna obowiązuje przez okres trwania Praw Autorskich i Praw Podobnych licencjonowanych tutaj. Jednakże, jeśli nie przestrzegasz warunków niniejszej Licencji Publicznej, Twoje prawa wynikające z niniejszej Licencji Publicznej wygasają automatycznie. + +b. Jeśli Twoje prawo do korzystania z Licencjonowanego Materiału wygasło zgodnie z Sekcją 6(a), zostaje ono przywrócone: + +1. automatycznie z dniem naprawienia naruszenia, pod warunkiem, że zostanie ono naprawione w ciągu 30 dni od momentu, gdy dowiesz się o naruszeniu; lub +2. na wyraźne przywrócenie przez Licencjodawcę. + +Dla uniknięcia wątpliwości, niniejsza Sekcja 6(b) nie wpływa na żadne prawo Licencjodawcy do dochodzenia roszczeń z tytułu Twoich naruszeń niniejszej Licencji Publicznej. + +c. Dla uniknięcia wątpliwości, Licencjodawca może również oferować Licencjonowany Materiał na odrębnych warunkach lub zaprzestać dystrybucji Licencjonowanego Materiału w dowolnym momencie; jednakże takie działania nie zakończą obowiązywania niniejszej Licencji Publicznej. + +d. Sekcje 1, 5, 6, 7 i 8 pozostają w mocy po wygaśnięciu niniejszej Licencji Publicznej. + + +Sekcja 7 -- Inne warunki i postanowienia. + +a. Licencjodawca nie jest związany żadnymi dodatkowymi ani odmiennymi warunkami przekazanymi przez Ciebie, chyba że wyraźnie się na nie zgodzi. + +b. Wszelkie ustalenia, porozumienia lub umowy dotyczące Licencjonowanego Materiału, które nie zostały tutaj określone, są odrębne i niezależne od warunków niniejszej Licencji Publicznej. + + +Sekcja 8 -- Interpretacja. + +a. Dla uniknięcia wątpliwości, niniejsza Licencja Publiczna nie ogranicza, nie zmniejsza, nie nakłada ograniczeń ani warunków na jakiekolwiek korzystanie z Licencjonowanego Materiału, które mogłoby być zgodne z prawem bez zgody na podstawie niniejszej Licencji Publicznej. + +b. W zakresie możliwym, jeśli jakiekolwiek postanowienie niniejszej Licencji Publicznej zostanie uznane za niewykonalne, zostanie ono automatycznie zmienione w minimalnym zakresie niezbędnym do uczynienia go wykonalnym. Jeśli postanowienie nie może zostać zmienione, zostanie ono oddzielone od niniejszej Licencji Publicznej bez wpływu na wykonalność pozostałych warunków. + +c. Żadne postanowienie niniejszej Licencji Publicznej nie zostanie uchylone, a żadne naruszenie nie zostanie zaakceptowane, chyba że wyraźnie zgodzi się na to Licencjodawca. + +d. Żadne postanowienie niniejszej Licencji Publicznej nie stanowi ani nie może być interpretowane jako ograniczenie lub zrzeczenie się jakichkolwiek przywilejów i immunitetów przysługujących Licencjodawcy lub Tobie, w tym w odniesieniu do procesów prawnych w jakiejkolwiek jurysdykcji lub przed jakimkolwiek organem. + + +======================================================================= + +Creative Commons nie jest stroną swoich licencji publicznych. Niemniej jednak Creative Commons może zdecydować się na zastosowanie jednej ze swoich licencji publicznych do materiałów, które publikuje, i w takich przypadkach będzie uważane za „Licencjodawcę”. Tekst licencji publicznych Creative Commons jest przekazany do domeny publicznej na mocy CC0 Public Domain Dedication. Z wyjątkiem ograniczonego celu wskazania, że materiał jest udostępniany na podstawie licencji publicznej Creative Commons lub w inny sposób dozwolony przez polityki Creative Commons opublikowane na creativecommons.org/policies, Creative Commons nie zezwala na użycie znaku towarowego „Creative Commons” ani żadnego innego znaku towarowego lub logo Creative Commons bez uprzedniej pisemnej zgody, w tym, bez ograniczeń, w związku z jakimikolwiek nieautoryzowanymi modyfikacjami którejkolwiek z jej licencji publicznych lub jakimikolwiek innymi ustaleniami, porozumieniami lub umowami dotyczącymi korzystania z licencjonowanego materiału. Dla uniknięcia wątpliwości, niniejszy akapit nie stanowi części licencji publicznych. + +Creative Commons można skontaktować się pod adresem creativecommons.org. + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/lessons/sketchnotes/README.md b/translations/pl/lessons/sketchnotes/README.md new file mode 100644 index 00000000..08bb53ee --- /dev/null +++ b/translations/pl/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Wszystkie sketchnotki z programu nauczania można pobrać tutaj. + +🎨 Stworzone przez: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Zastrzeżenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pt/README.md b/translations/pt/README.md index 94664a3b..3ced603c 100644 --- a/translations/pt/README.md +++ b/translations/pt/README.md @@ -1,140 +1,155 @@ -[![Licença do GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![Contribuidores do GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![Problemas do GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![Pull requests do GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Licença do GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuidores do GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problemas no GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Pull Requests no GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores do GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![Forks do GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![Estrelas do GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![Observadores no GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Forks no GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Estrelas no GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Inteligência Artificial para Iniciantes - Um Currículo +# Inteligência Artificial para Iniciantes - Um Currículo -|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| IA Para Iniciantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI For Beginners - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | -Explore o mundo da **Inteligência Artificial** (IA) com nosso currículo de 12 semanas e 24 lições! Inclui lições práticas, questionários e laboratórios. O currículo é amigável para iniciantes e cobre ferramentas como TensorFlow e PyTorch, além de ética em IA. +Explore o mundo da **Inteligência Artificial** (IA) com o nosso currículo de 12 semanas e 24 aulas! Inclui lições práticas, questionários e laboratórios. O currículo é voltado para iniciantes e aborda ferramentas como TensorFlow e PyTorch, além de ética na IA. -## O que você irá aprender +## O que irá aprender -**[Mapa Mental do Curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Mapa mental do curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -Neste currículo, você irá aprender: +Neste currículo, irá aprender: -* Diferentes abordagens para a Inteligência Artificial, incluindo a abordagem "boa e velha" simbólica com **Representação do Conhecimento** e raciocínio ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Redes Neurais** e **Aprendizado Profundo**, que estão no cerne da IA moderna. Ilustraremos os conceitos por trás desses tópicos importantes usando código em dois dos frameworks mais populares - [TensorFlow](http://Tensorflow.org) e [PyTorch](http://pytorch.org). -* **Arquiteturas Neurais** para trabalhar com imagens e texto. Vamos cobrir modelos recentes, mas pode haver uma ligeira falta em relação ao estado da arte. -* Abordagens de IA menos populares, como **Algoritmos Genéticos** e **Sistemas Multi-Agente**. +* Diferentes abordagens para Inteligência Artificial, incluindo a abordagem simbólica "tradicional" com **Representação de Conhecimento** e raciocínio ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neurais** e **Aprendizagem Profunda**, que estão no centro da IA moderna. Vamos ilustrar os conceitos por trás desses tópicos importantes usando código em dois dos frameworks mais populares - [TensorFlow](http://Tensorflow.org) e [PyTorch](http://pytorch.org). +* **Arquiteturas Neurais** para trabalhar com imagens e texto. Vamos abordar modelos recentes, embora possamos não cobrir o estado da arte. +* Abordagens menos populares de IA, como **Algoritmos Genéticos** e **Sistemas Multiagentes**. -O que não iremos cobrir neste currículo: +O que não será abordado neste currículo: -> [Encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Encontre todos os recursos adicionais para este curso na nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Casos de negócios de uso de **IA nos Negócios**. Considere fazer o caminho de aprendizado [Introdução à IA para usuários de negócios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) no Microsoft Learn, ou [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desenvolvido em cooperação com [INSEAD](https://www.insead.edu/). -* **Aprendizado de Máquina Clássico**, que está bem descrito em nosso [Currículo de Aprendizado de Máquina para Iniciantes](http://github.com/Microsoft/ML-for-Beginners). -* Aplicações práticas de IA construídas usando **[Serviços Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para isso, recomendamos que você comece com os módulos do Microsoft Learn para [visão](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [processamento de linguagem natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa com o Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** e outros. -* Frameworks de ML **na Nuvem** específicos, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) ou [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considere utilizar os caminhos de aprendizado [Construir e operar soluções de aprendizado de máquina com Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) e [Construir e Operar Soluções de Aprendizado de Máquina com Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). -* **IA Conversacional** e **Chat Bots**. Há um caminho de aprendizado separado [Criar soluções de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), e você também pode consultar [este post no blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para mais detalhes. -* **Matemática Profunda** por trás do aprendizado profundo. Para isso, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio e Aaron Courville, que também está disponível online em [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* Casos de uso de **IA em Negócios**. Considere fazer o percurso de aprendizagem [Introdução à IA para utilizadores empresariais](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) no Microsoft Learn, ou [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desenvolvido em cooperação com [INSEAD](https://www.insead.edu/). +* **Aprendizagem Automática Clássica**, que está bem descrita no nosso [Currículo de Aprendizagem Automática para Iniciantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicações práticas de IA construídas usando **[Serviços Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para isso, recomendamos começar com os módulos Microsoft Learn para [visão](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [processamento de linguagem natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa com Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** e outros. +* Frameworks específicos de **ML na Nuvem**, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), ou [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considere usar os percursos de aprendizagem [Construir e operar soluções de aprendizagem automática com Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) e [Construir e operar soluções de aprendizagem automática com Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** e **Chat Bots**. Há um percurso de aprendizagem separado [Criar soluções de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), e também pode consultar [este post no blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para mais detalhes. +* **Matemática Avançada** por trás da aprendizagem profunda. Para isso, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio e Aaron Courville, que também está disponível online em [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -Para uma introdução suave aos tópicos de _IA na Nuvem_, você pode considerar fazer o caminho de aprendizado [Comece com inteligência artificial no Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). +Para uma introdução mais leve aos tópicos de _IA na Nuvem_, pode considerar fazer o percurso de aprendizagem [Introdução à inteligência artificial no Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). -# Conteúdo +# Conteúdo -| | Link da Aula | PyTorch/Keras/TensorFlow | Lab | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Configuração do Curso](./lessons/0-course-setup/setup.md) | [Configurar seu Ambiente de Desenvolvimento](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Introdução à IA**](./lessons/1-Intro/README.md) | | | -| 01 | [Introdução e História da IA](./lessons/1-Intro/README.md) | - | - | -| II | **IA Simbólica** | -| 02 | [Representação do Conhecimento e Sistemas Especialistas](./lessons/2-Symbolic/README.md) | [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafo de Conceitos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Introdução às Redes Neurais**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Perceptron Multicamadas e Criando nosso próprio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Introdução aos Frameworks (PyTorch/TensorFlow) e Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Visão Computacional**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explore Visão Computacional no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Introdução à Visão Computacional. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratório](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Redes Neurais Convolucionais](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquiteturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Redes Pré-treinadas e Aprendizado por Transferência](./lessons/4-ComputerVision/08-TransferLearning/README.md) e [Dicas de Treinamento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| | Link da Aula | PyTorch/Keras/TensorFlow | Laboratório | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuração do Curso](./lessons/0-course-setup/setup.md) | [Configurar o Ambiente de Desenvolvimento](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introdução à IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introdução e História da IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representação de Conhecimento e Sistemas Especialistas](./lessons/2-Symbolic/README.md) | [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafo de Conceitos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introdução às Redes Neurais**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptron Multicamadas e Criando o nosso próprio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introdução aos Frameworks (PyTorch/TensorFlow) e Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visão Computacional**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explorar Visão Computacional no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introdução à Visão Computacional. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratório](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Redes Neurais Convolucionais](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquiteturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Redes Pré-treinadas e Transferência de Aprendizagem](./lessons/4-ComputerVision/08-TransferLearning/README.md) e [Dicas de Treinamento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | | 09 | [Autoencoders e VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Redes Geradoras Adversariais & Transferência de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 10 | [Redes Adversárias Generativas e Transferência de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | | 11 | [Detecção de Objetos](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratório](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Segmentação Semântica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| 12 | [Segmentação Semântica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | | V | [**Processamento de Linguagem Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explore o Processamento de Linguagem Natural no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| | 13 | [Representação de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [Embutimentos semânticos. Word2Vec e GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Modelagem de Linguagem. Treinando seus próprios embutimentos](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 14 | [Embeddings Semânticos de Palavras. Word2Vec e GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelagem de Linguagem. Treinando seus próprios embeddings](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratório](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | | 16 | [Redes Neurais Recorrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Redes Recorrentes Generativas](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 17 | [Redes Recorrentes Generativas](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratório](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | | 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [Reconhecimento de Entidades Nomeadas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Grandes Modelos de Linguagem, Programação de Prompt e Tarefas de Poucos Exemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| 19 | [Reconhecimento de Entidades Nomeadas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratório](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modelos de Linguagem Grandes, Programação de Prompts e Tarefas de Poucos Exemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | | VI | **Outras Técnicas de IA** || | | 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Aprendizado Profundo por Reforço](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Sistemas Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| 22 | [Aprendizagem por Reforço Profundo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratório](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemas Multiagentes](./lessons/6-Other/23-MultiagentSystems/README.md) | | | | VII | **Ética em IA** | | | | 24 | [Ética em IA e IA Responsável](./lessons/7-Ethics/README.md) | [Microsoft Learn: Princípios de IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | | IX | **Extras** | | | -| 25 | [Redes Multi-Modais, CLIP e VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 25 | [Redes Multimodais, CLIP e VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | ## Cada lição contém * Material de leitura prévia -* Notebooks Jupyter executáveis, que muitas vezes são específicos para o framework (**PyTorch** ou **TensorFlow**). O notebook executável também contém muito material teórico, então para entender o tópico, você precisa passar por pelo menos uma versão do notebook (seja PyTorch ou TensorFlow). -* **Labs** disponíveis para alguns tópicos, que oferecem a oportunidade de tentar aplicar o material que você aprendeu a um problema específico. -* Algumas seções contêm links para módulos do [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que cobrem tópicos relacionados. +* Notebooks Jupyter executáveis, que frequentemente são específicos para o framework (**PyTorch** ou **TensorFlow**). O notebook executável também contém muito material teórico, então para entender o tópico é necessário passar por pelo menos uma versão do notebook (PyTorch ou TensorFlow). +* **Laboratórios** disponíveis para alguns tópicos, que oferecem a oportunidade de aplicar o material aprendido a um problema específico. +* Algumas seções contêm links para módulos do [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que abordam tópicos relacionados. ## Começando -- Criamos uma [lição de configuração](./lessons/0-course-setup/setup.md) para ajudar você a configurar seu ambiente de desenvolvimento. - Para Educadores, também criamos uma [lição de configuração curricular](./lessons/0-course-setup/for-teachers.md)! -- Como [Executar o código no VSCode ou no Codepace](./lessons/0-course-setup/how-to-run.md) +- Criámos uma [lição de configuração](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) para ajudar na configuração do seu ambiente de desenvolvimento. - Para Educadores, também criámos uma [lição de configuração de currículo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Como [Executar o código no VSCode ou Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) Siga estes passos: -Fork o Repositório: Clique no botão "Fork" no canto superior direito desta página. +Faça um Fork do Repositório: Clique no botão "Fork" no canto superior direito desta página. Clone o Repositório: `git clone https://github.com/microsoft/AI-For-Beginners.git` -Não se esqueça de dar uma estrela (🌟) neste repositório para encontrá-lo mais facilmente depois. +Não se esqueça de dar uma estrela (🌟) a este repositório para encontrá-lo mais facilmente depois. ## Conheça outros Aprendizes -Junte-se ao nosso [servidor oficial do Discord sobre IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para se conectar e interagir com outros aprendizes que estão fazendo este curso e obter suporte. +Junte-se ao nosso [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conhecer e interagir com outros aprendizes que estão a fazer este curso e obter suporte. -## Questionários - -> **Uma observação sobre os questionários**: Todos os questionários estão contidos na pasta Quiz-app em etc\quiz-app. Eles estão vinculados a partir das lições; o aplicativo de questionário pode ser executado localmente ou implantado no Azure; siga as instruções na pasta `quiz-app`. Eles estão sendo gradualmente localizados. +Se tiver feedback sobre o produto ou dúvidas enquanto desenvolve, visite o nosso [Fórum de Desenvolvedores do Azure AI Foundry](https://aka.ms/foundry/forum) +## Questionários +> **Uma nota sobre os questionários**: Todos os questionários estão contidos na pasta Quiz-app em etc\quiz-app. Eles estão ligados a partir das lições, e a aplicação de questionários pode ser executada localmente ou implantada no Azure; siga as instruções na pasta `quiz-app`. Estão a ser localizados gradualmente. ## Ajuda Necessária -Você tem sugestões ou encontrou erros de ortografia ou de código? Abra uma questão ou crie um pull request. +Tem sugestões ou encontrou erros de ortografia ou código? Abra um problema ou crie um pull request. ## Agradecimentos Especiais * **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD -* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) -* **✅ Criador de Questionários:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🔥 Editora:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustradora de Sketchnotes:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Criadora de Questionários:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) * **🙏 Contribuidores Principais:** [Evgenii Pishchik](https://github.com/Pe4enIks) ## Outros Currículos -Nossa equipe produz outros currículos! Confira: +A nossa equipa produz outros currículos! Veja: -* [Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners) -* [**Versão 2.0** IA Generativa para Iniciantes](https://aka.ms/genai-beginners) -* [**NOVO** Cibersegurança para Iniciantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Desenvolvimento Web para Iniciantes](https://aka.ms/webdev-beginners) -* [IoT para Iniciantes](https://aka.ms/iot-beginners) -* [Aprendizado de Máquina para Iniciantes](https://aka.ms/ml4beginners) -* [Desenvolvimento XR para Iniciantes](https://aka.ms/xr-dev-for-beginners) -* [Dominando o GitHub Copilot para Programação em Par com IA](https://aka.ms/GitHubCopilotAI) +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/SECURITY.md b/translations/pt/SECURITY.md index 3ecfb41d..9b8013ac 100644 --- a/translations/pt/SECURITY.md +++ b/translations/pt/SECURITY.md @@ -1,40 +1,49 @@ + ## Segurança -A Microsoft leva a segurança de nossos produtos e serviços de software a sério, o que inclui todos os repositórios de código-fonte gerenciados através de nossas organizações no GitHub, que incluem [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [nossas organizações no GitHub](https://opensource.microsoft.com/). +A Microsoft leva a segurança dos seus produtos de software e serviços muito a sério, incluindo todos os repositórios de código fonte geridos através das nossas organizações no GitHub, que incluem [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [as nossas organizações no GitHub](https://opensource.microsoft.com/). -Se você acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório de propriedade da Microsoft que atenda à [definição de vulnerabilidade de segurança da Microsoft](https://aka.ms/opensource/security/definition), por favor, relate-a para nós conforme descrito abaixo. +Se acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório pertencente à Microsoft que se enquadre na [definição de vulnerabilidade de segurança da Microsoft](https://aka.ms/opensource/security/definition), por favor reporte-a conforme descrito abaixo. -## Relatando Problemas de Segurança +## Reportar Problemas de Segurança -**Por favor, não relate vulnerabilidades de segurança através de problemas públicos no GitHub.** +**Por favor, não reporte vulnerabilidades de segurança através de issues públicas no GitHub.** -Em vez disso, relate-as ao Microsoft Security Response Center (MSRC) em [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). +Em vez disso, reporte-as ao Microsoft Security Response Center (MSRC) em [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Se você preferir enviar sem fazer login, envie um e-mail para [secure@microsoft.com](mailto:secure@microsoft.com). Se possível, criptografe sua mensagem com nossa chave PGP; por favor, faça o download dela na [página da Chave PGP do Microsoft Security Response Center](https://aka.ms/opensource/security/pgpkey). +Se preferir submeter sem iniciar sessão, envie um email para [secure@microsoft.com](mailto:secure@microsoft.com). Se possível, encripte a sua mensagem com a nossa chave PGP; pode descarregá-la na [página da chave PGP do Microsoft Security Response Center](https://aka.ms/opensource/security/pgpkey). -Você deve receber uma resposta dentro de 24 horas. Se, por algum motivo, você não receber, por favor, faça um acompanhamento por e-mail para garantir que recebemos sua mensagem original. Informações adicionais podem ser encontradas em [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Deverá receber uma resposta dentro de 24 horas. Se, por algum motivo, não receber, por favor envie um email de seguimento para garantir que recebemos a sua mensagem original. Informações adicionais podem ser encontradas em [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). -Por favor, inclua as informações solicitadas listadas abaixo (o máximo que você puder fornecer) para nos ajudar a entender melhor a natureza e o escopo do possível problema: +Inclua as informações solicitadas abaixo (tanto quanto possível) para nos ajudar a compreender melhor a natureza e o alcance do possível problema: - * Tipo de problema (por exemplo, estouro de buffer, injeção SQL, script entre sites, etc.) - * Caminhos completos dos arquivos de origem relacionados à manifestação do problema - * A localização do código-fonte afetado (tag/branch/commit ou URL direta) + * Tipo de problema (ex.: buffer overflow, SQL injection, cross-site scripting, etc.) + * Caminhos completos dos ficheiros fonte relacionados com a manifestação do problema + * A localização do código fonte afetado (tag/branch/commit ou URL direto) * Qualquer configuração especial necessária para reproduzir o problema - * Instruções passo a passo para reproduzir o problema - * Código de prova de conceito ou código de exploração (se possível) - * Impacto do problema, incluindo como um invasor poderia explorar a questão + * Instruções passo-a-passo para reproduzir o problema + * Código de prova de conceito ou de exploração (se possível) + * Impacto do problema, incluindo como um atacante poderia explorar o problema -Essas informações nos ajudarão a triagem seu relatório mais rapidamente. +Estas informações ajudarão a agilizar a triagem do seu relatório. -Se você estiver relatando para um programa de recompensas por bugs, relatórios mais completos podem contribuir para um prêmio maior. Visite nossa página do [Programa de Recompensas por Bugs da Microsoft](https://aka.ms/opensource/security/bounty) para mais detalhes sobre nossos programas ativos. +Se estiver a reportar para um programa de recompensas por bugs, relatórios mais completos podem contribuir para uma recompensa maior. Por favor, visite a página do [Programa de Recompensas por Bugs da Microsoft](https://aka.ms/opensource/security/bounty) para mais detalhes sobre os nossos programas ativos. ## Idiomas Preferidos -Preferimos que todas as comunicações sejam em inglês. +Preferimos que todas as comunicações sejam feitas em inglês. ## Política A Microsoft segue o princípio de [Divulgação Coordenada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/CODE_OF_CONDUCT.md b/translations/pt/etc/CODE_OF_CONDUCT.md index baad502a..583d55bd 100644 --- a/translations/pt/etc/CODE_OF_CONDUCT.md +++ b/translations/pt/etc/CODE_OF_CONDUCT.md @@ -1,3 +1,12 @@ + # Código de Conduta de Código Aberto da Microsoft Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). @@ -5,8 +14,8 @@ Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https: Recursos: - [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/) -- [Perguntas Frequentes sobre o Código de Conduta da Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) -- Entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) se tiver dúvidas ou preocupações. +- [FAQ do Código de Conduta da Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contacte [opencode@microsoft.com](mailto:opencode@microsoft.com) para questões ou preocupações -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/CONTRIBUTING.md b/translations/pt/etc/CONTRIBUTING.md index e3627dae..71030b2c 100644 --- a/translations/pt/etc/CONTRIBUTING.md +++ b/translations/pt/etc/CONTRIBUTING.md @@ -1,20 +1,31 @@ -# Contribuindo + +# Contribuir -Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA), declarando que você tem o direito de, e de fato, nos conceder os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. +Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que concorde com um Acordo de Licença de Contribuidor (CLA), declarando que tem o direito de, e de facto concede-nos, os direitos para usar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. -Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR de forma apropriada (por exemplo, etiqueta, comentário). Basta seguir as instruções fornecidas pelo bot. Você precisará fazer isso apenas uma vez em todos os repositórios que utilizam nosso CLA. +Quando submeter um pull request, um CLA-bot determinará automaticamente se precisa de fornecer um CLA e decorará o PR de forma apropriada (por exemplo, etiqueta, comentário). Basta seguir as instruções fornecidas pelo bot. Só precisará de fazer isto uma vez em todos os repositórios que utilizam o nosso CLA. -Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para mais informações, consulte as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) com quaisquer perguntas ou comentários adicionais. +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). +Para mais informações, consulte as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) +ou contacte [opencode@microsoft.com](mailto:opencode@microsoft.com) para quaisquer questões ou comentários adicionais. -# Procurando Contribuições +# Procuramos Contribuições -Atualmente, estamos ativamente buscando contribuições nos seguintes tópicos: +Estamos atualmente à procura de contribuições ativas nos seguintes tópicos: -- [ ] Escrever seção sobre Aprendizado por Reforço Profundo -- [ ] Melhorar seção + notebook sobre Detecção de Objetos -- [ ] PyTorch Lightning (para [esta seção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Escrever seção + exemplos sobre Reconhecimento de Entidades Nomeadas -- [ ] Criar exemplos para treinar nossas próprias embeddings para [esta seção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) +- [ ] Escrever uma secção sobre Aprendizagem por Reforço Profunda +- [ ] Melhorar a secção + notebook sobre Deteção de Objetos +- [ ] PyTorch Lightning (para [esta secção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escrever uma secção + exemplos sobre Reconhecimento de Entidades Nomeadas +- [ ] Criar exemplos para treinar os nossos próprios embeddings para [esta secção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/Mindmap.md b/translations/pt/etc/Mindmap.md index ae940869..7b8ca839 100644 --- a/translations/pt/etc/Mindmap.md +++ b/translations/pt/etc/Mindmap.md @@ -1,58 +1,67 @@ + # IA ## [Introdução à IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - Definição de IA - História da IA - - Abordagens para IA - - De cima para baixo/Simbólica - - De baixo para cima/Neural + - Abordagens de IA + - Top-down/Simbólica + - Bottom-up/Neuronal - Evolutiva - - Sinérgica / IA Emergente - - [Escola de Negócios de IA da Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - Sinergética / IA Emergente + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) ## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - - Representação do Conhecimento + - Representação de Conhecimento - [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - [Ontologias](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - Web Semântica -## [Redes Neurais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - - [Redes de Múltiplas Camadas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) +## [Redes Neuronais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptrão](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Redes Multi-Camada](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - [Introdução a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) -## [Visão Computacional](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) +## [Visão por Computador](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - No MS Learn - - [Fundamentos de IA: Explore Visão Computacional](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - - [Visão Computacional com PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - - [Visão Computacional com TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - - [Introdução à Visão Computacional. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Fundamentos de IA: Explorar Visão por Computador](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visão por Computador com PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visão por Computador com TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introdução à Visão por Computador. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - [Redes Convolucionais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - [Arquiteturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [Transferência de Aprendizado](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [Dicas de Treinamento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Transferência de Aprendizagem](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Dicas de Treino](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - [Autoencoders e VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Redes Gerativas Adversariais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Redes Adversárias Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - [Transferência de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - - [Detecção de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Deteção de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - [Segmentação](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) - + ## [Processamento de Linguagem Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - No MS Learn - - [Fundamentos de IA: Explore PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [Fundamentos de IA: Explorar PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - [PLN com PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - [PLN com TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Representação de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - - Bolsa de Palavras + - [Representação de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words - TF/IDF - - [Embutimentos Semânticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - [Embeddings Semânticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - [Modelagem de Linguagem](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - - [Redes Neurais Recorrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - [Redes Neuronais Recorrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU - [Redes Recorrentes Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) @@ -61,10 +70,10 @@ - [Geração de Texto e GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) ## Outras Técnicas - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - - [Aprendizado Profundo por Reforço](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [Sistemas Multiagente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + - [Aprendizagem por Reforço Profundo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemas Multi-Agente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) -## [Ética em IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) +## [Ética na IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - [MS Learn sobre IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) ## Extras - [Redes Multimodais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) @@ -73,4 +82,4 @@ - VQ-GAN **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/SUPPORT.md b/translations/pt/etc/SUPPORT.md index a2819d84..8f67c5f3 100644 --- a/translations/pt/etc/SUPPORT.md +++ b/translations/pt/etc/SUPPORT.md @@ -1,14 +1,23 @@ + # Suporte -## Como registrar problemas e obter ajuda +## Como reportar problemas e obter ajuda -Este projeto utiliza o GitHub Issues para rastrear bugs e solicitações de recursos. Por favor, pesquise os problemas existentes antes de registrar novos problemas para evitar duplicatas. Para novos problemas, registre seu bug ou solicitação de recurso como um novo Issue. +Este projeto utiliza o GitHub Issues para rastrear erros e pedidos de funcionalidades. Por favor, pesquise os problemas existentes antes de criar novos para evitar duplicados. Para novos problemas, reporte o seu erro ou pedido de funcionalidade como um novo Issue. -Para ajuda e perguntas sobre o uso deste projeto, utilize os Fóruns de Discussão. +Para obter ajuda e esclarecer dúvidas sobre a utilização deste projeto, utilize os Fóruns de Discussão. ## Política de Suporte da Microsoft -O suporte para este projeto é limitado aos recursos listados acima. +O suporte para este projeto está limitado aos recursos listados acima. **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/TRANSLATIONS.md b/translations/pt/etc/TRANSLATIONS.md index fb9b3023..19728868 100644 --- a/translations/pt/etc/TRANSLATIONS.md +++ b/translations/pt/etc/TRANSLATIONS.md @@ -1,18 +1,27 @@ -# Contribua traduzindo lições + +# Contribuir traduzindo lições -Agradecemos traduções para as lições deste currículo! +Agradecemos as traduções para as lições deste currículo! ## Diretrizes -Existem pastas em cada pasta de lição e na pasta de introdução das lições que contêm os arquivos markdown traduzidos. +Existem pastas em cada pasta de lição e na pasta de introdução da lição que contêm os ficheiros markdown traduzidos. -> Nota: por favor, não traduza nenhum código nos arquivos de exemplo de código; as únicas coisas a traduzir são README, tarefas e questionários. Obrigado! +> Nota: por favor, não traduza nenhum código nos ficheiros de exemplo de código; as únicas coisas a traduzir são README, tarefas e os questionários. Obrigado! -Os arquivos traduzidos devem seguir esta convenção de nomenclatura: +Os ficheiros traduzidos devem seguir esta convenção de nomenclatura: **README._[language]_.md** -onde _[language]_ é uma abreviação de duas letras do idioma seguindo o padrão ISO 639-1 (por exemplo, `README.es.md` para espanhol e `README.nl.md` para holandês). +onde _[language]_ é uma abreviação de duas letras do idioma, seguindo o padrão ISO 639-1 (por exemplo, `README.es.md` para Espanhol e `README.nl.md` para Holandês). **assignment._[language]_.md** @@ -20,17 +29,17 @@ Semelhante aos Readme's, por favor, traduza também as tarefas. **Questionários** -1. Adicione sua tradução ao aplicativo de questionários adicionando um arquivo aqui: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, com a convenção de nomenclatura adequada (en.json, fr.json). **Por favor, não localize as palavras 'true' ou 'false', no entanto. Obrigado!** +1. Adicione a sua tradução à aplicação de questionários adicionando um ficheiro aqui: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, com a convenção de nomenclatura adequada (en.json, fr.json). **Por favor, não localize as palavras 'true' ou 'false'. Obrigado!** -2. Adicione o código do seu idioma ao menu suspenso no arquivo App.vue do aplicativo de questionários. +2. Adicione o código do seu idioma ao menu suspenso no ficheiro App.vue da aplicação de questionários. -3. Edite o [arquivo translations index.js do aplicativo de questionários](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para adicionar seu idioma. +3. Edite o [ficheiro index.js de traduções](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) da aplicação de questionários para adicionar o seu idioma. -4. Por fim, edite TODOS os links de questionários em seus arquivos README.md traduzidos para apontar diretamente para o seu questionário traduzido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se torna https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. Por fim, edite TODOS os links dos questionários nos seus ficheiros README.md traduzidos para apontar diretamente para o seu questionário traduzido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 torna-se https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id **OBRIGADO** -Agradecemos sinceramente seus esforços! +Agradecemos verdadeiramente os seus esforços! -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/quiz-app/README.md b/translations/pt/etc/quiz-app/README.md index c2596bd9..1021a120 100644 --- a/translations/pt/etc/quiz-app/README.md +++ b/translations/pt/etc/quiz-app/README.md @@ -1,18 +1,27 @@ + # Questionários -Estes questionários são os questionários pré e pós-aula do currículo de IA em https://aka.ms/ai-beginners +Estes questionários são os questionários pré e pós-aula para o currículo de IA em https://aka.ms/ai-beginners -## Adicionando um conjunto de questionários traduzidos +## Adicionar um conjunto de questionários traduzidos -Adicione uma tradução de questionário criando estruturas de questionário correspondentes nas pastas `assets/translations`. Os questionários canônicos estão em `assets/translations/en`. Os questionários estão divididos em vários grupos por lição. Certifique-se de alinhar a numeração com a seção de questionário apropriada. Há um total de 40 questionários neste currículo, com a contagem começando em 0. +Adicione uma tradução de questionário criando estruturas de questionários correspondentes nas pastas `assets/translations`. Os questionários originais estão em `assets/translations/en`. Os questionários estão divididos em vários grupos por lição. Certifique-se de alinhar a numeração com a secção correta do questionário. Existem 40 questionários no total neste currículo, começando a contagem em 0. -Após editar as traduções, edite o arquivo index.js na pasta de tradução para importar todos os arquivos seguindo as convenções em `en`. +Depois de editar as traduções, edite o ficheiro index.js na pasta de tradução para importar todos os ficheiros seguindo as convenções em `en`. -Edite o arquivo `index.js` em `assets/translations` para importar os novos arquivos traduzidos. +Edite o ficheiro `index.js` em `assets/translations` para importar os novos ficheiros traduzidos. -Em seguida, edite o dropdown em `App.vue` neste aplicativo para adicionar seu idioma. Combine a abreviação localizada com o nome da pasta para o seu idioma. +De seguida, edite o menu suspenso em `App.vue` nesta aplicação para adicionar o seu idioma. Combine a abreviatura localizada com o nome da pasta do seu idioma. -Finalmente, edite todos os links dos questionários nas lições traduzidas, se existirem, para incluir esta localização como um parâmetro de consulta: `?loc=fr`, por exemplo. +Por fim, edite todos os links dos questionários nas lições traduzidas, se existirem, para incluir esta localização como um parâmetro de consulta: `?loc=fr`, por exemplo. ## Configuração do projeto @@ -20,19 +29,19 @@ Finalmente, edite todos os links dos questionários nas lições traduzidas, se npm install ``` -### Compila e recarrega automaticamente para desenvolvimento +### Compilar e recarregar automaticamente para desenvolvimento ``` npm run serve ``` -### Compila e minifica para produção +### Compilar e minimizar para produção ``` npm run build ``` -### Lint e corrige arquivos +### Verificar e corrigir ficheiros ``` npm run lint @@ -40,57 +49,58 @@ npm run lint ### Personalizar configuração -Veja [Referência de Configuração](https://cli.vuejs.org/config/). +Consulte [Referência de Configuração](https://cli.vuejs.org/config/). -Créditos: Agradecimentos à versão original deste aplicativo de questionário: https://github.com/arpan45/simple-quiz-vue +Créditos: Agradecimentos à versão original desta aplicação de questionários: https://github.com/arpan45/simple-quiz-vue -## Implantando no Azure +## Implementar no Azure -Aqui está um guia passo a passo para ajudá-lo a começar: +Aqui está um guia passo a passo para o ajudar a começar: -1. Faça um fork de um repositório GitHub -Certifique-se de que o código do seu aplicativo web estático está no seu repositório GitHub. Faça um fork deste repositório. +1. Faça um fork do repositório GitHub +Certifique-se de que o código da sua aplicação web estático está no seu repositório GitHub. Faça um fork deste repositório. -2. Crie um Azure Static Web App -- Crie uma [conta Azure](http://azure.microsoft.com) -- Vá para o [portal do Azure](https://portal.azure.com) -- Clique em “Criar um recurso” e pesquise por “Static Web App”. -- Clique em “Criar”. +2. Crie uma Aplicação Web Estática no Azure +- Crie uma [conta Azure](http://azure.microsoft.com) +- Aceda ao [portal do Azure](https://portal.azure.com) +- Clique em “Criar um recurso” e procure por “Aplicação Web Estática”. +- Clique em “Criar”. -3. Configure o Static Web App -- Básicos: Assinatura: Selecione sua assinatura do Azure. -- Grupo de Recursos: Crie um novo grupo de recursos ou use um existente. -- Nome: Forneça um nome para seu aplicativo web estático. -- Região: Escolha a região mais próxima dos seus usuários. +3. Configure a Aplicação Web Estática +- Básico: + - Subscrição: Selecione a sua subscrição do Azure. + - Grupo de Recursos: Crie um novo grupo de recursos ou utilize um existente. + - Nome: Forneça um nome para a sua aplicação web estática. + - Região: Escolha a região mais próxima dos seus utilizadores. -- #### Detalhes da Implantação: -- Fonte: Selecione “GitHub”. -- Conta GitHub: Autorize o Azure a acessar sua conta GitHub. -- Organização: Selecione sua organização GitHub. -- Repositório: Escolha o repositório que contém seu aplicativo web estático. -- Branch: Selecione o branch do qual você deseja implantar. +- #### Detalhes de Implementação: + - Fonte: Selecione “GitHub”. + - Conta GitHub: Autorize o Azure a aceder à sua conta GitHub. + - Organização: Selecione a sua organização GitHub. + - Repositório: Escolha o repositório que contém a sua aplicação web estática. + - Ramo: Selecione o ramo a partir do qual deseja implementar. -- #### Detalhes da Compilação: -- Presets de Compilação: Escolha o framework com o qual seu aplicativo foi construído (por exemplo, React, Angular, Vue, etc.). -- Localização do App: Especifique a pasta que contém o código do seu aplicativo (por exemplo, / se estiver na raiz). -- Localização da API: Se você tiver uma API, especifique sua localização (opcional). -- Localização de Saída: Especifique a pasta onde a saída da compilação é gerada (por exemplo, build ou dist). +- #### Detalhes de Construção: + - Predefinições de Construção: Escolha o framework com o qual a sua aplicação foi construída (por exemplo, React, Angular, Vue, etc.). + - Localização da Aplicação: Especifique a pasta que contém o código da sua aplicação (por exemplo, / se estiver na raiz). + - Localização da API: Se tiver uma API, especifique a sua localização (opcional). + - Localização de Saída: Especifique a pasta onde a saída da construção é gerada (por exemplo, build ou dist). -4. Revise e Crie -Revise suas configurações e clique em “Criar”. O Azure configurará os recursos necessários e criará um fluxo de trabalho do GitHub Actions em seu repositório. +4. Rever e Criar +Revise as suas definições e clique em “Criar”. O Azure configurará os recursos necessários e criará um ficheiro de workflow do GitHub Actions no seu repositório. -5. Fluxo de Trabalho do GitHub Actions -O Azure criará automaticamente um arquivo de fluxo de trabalho do GitHub Actions em seu repositório (.github/workflows/azure-static-web-apps-.yml). Este fluxo de trabalho gerenciará o processo de compilação e implantação. +5. Workflow do GitHub Actions +O Azure criará automaticamente um ficheiro de workflow do GitHub Actions no seu repositório (.github/workflows/azure-static-web-apps-.yml). Este workflow irá gerir o processo de construção e implementação. -6. Monitore a Implantação -Vá para a aba “Ações” em seu repositório GitHub. -Você deve ver um fluxo de trabalho em execução. Este fluxo de trabalho irá compilar e implantar seu aplicativo web estático no Azure. -Uma vez que o fluxo de trabalho seja concluído, seu aplicativo estará ativo na URL do Azure fornecida. +6. Monitorizar a Implementação +Aceda ao separador “Actions” no seu repositório GitHub. +Deverá ver um workflow em execução. Este workflow irá construir e implementar a sua aplicação web estática no Azure. +Assim que o workflow for concluído, a sua aplicação estará ativa no URL fornecido pelo Azure. -### Exemplo de Arquivo de Fluxo de Trabalho +### Exemplo de Ficheiro de Workflow -Aqui está um exemplo de como o arquivo de fluxo de trabalho do GitHub Actions pode parecer: -name: Azure Static Web Apps CI/CD +Aqui está um exemplo de como poderá ser o ficheiro de workflow do GitHub Actions: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Recursos Adicionais -- [Documentação do Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Documentação do GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Recursos Adicionais +- [Documentação de Aplicações Web Estáticas do Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentação do GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/for-teachers.md b/translations/pt/lessons/0-course-setup/for-teachers.md index 8df48b4e..7c442260 100644 --- a/translations/pt/lessons/0-course-setup/for-teachers.md +++ b/translations/pt/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ + # Para Educadores -Você gostaria de usar este currículo em sua sala de aula? Fique à vontade! +Gostaria de utilizar este currículo na sua sala de aula? Sinta-se à vontade! -Na verdade, você pode usá-lo dentro do próprio GitHub utilizando o GitHub Classroom. +Na verdade, pode utilizá-lo diretamente no GitHub, através do GitHub Classroom. -Para isso, faça um fork deste repositório. Você precisará criar um repositório para cada lição, então será necessário extrair cada pasta para um repositório separado. Dessa forma, o [GitHub Classroom](https://classroom.github.com/classrooms) poderá gerenciar cada lição separadamente. +Para isso, faça um fork deste repositório. Vai precisar de criar um repositório para cada lição, por isso será necessário extrair cada pasta para um repositório separado. Desta forma, o [GitHub Classroom](https://classroom.github.com/classrooms) consegue identificar cada lição de forma independente. -Estas [instruções completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) lhe darão uma ideia de como configurar sua sala de aula. +Estas [instruções completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) dar-lhe-ão uma ideia de como configurar a sua sala de aula. -## Usando o repositório como está +## Utilizar o repositório como está -Se você quiser usar este repositório como ele está atualmente, sem utilizar o GitHub Classroom, isso também pode ser feito. Você precisará comunicar aos seus alunos qual lição trabalhar em conjunto. +Se preferir utilizar este repositório tal como está, sem recorrer ao GitHub Classroom, também é possível. Apenas terá de comunicar aos seus alunos qual a lição a trabalhar em conjunto. -Em um formato online (Zoom, Teams ou outro), você pode formar salas de discussão para os quizzes e orientar os alunos para ajudá-los a se prepararem para aprender. Em seguida, convide os alunos para realizarem os quizzes e enviarem suas respostas como 'issues' em um determinado momento. Você pode fazer o mesmo com as tarefas, se quiser que os alunos trabalhem colaborativamente de forma aberta. +Num formato online (Zoom, Teams ou outro), pode criar salas de grupo para os questionários e orientar os alunos para os preparar para a aprendizagem. Depois, convide os alunos a realizar os questionários e a submeter as suas respostas como 'issues' num momento específico. Pode fazer o mesmo com os trabalhos, caso queira que os alunos trabalhem de forma colaborativa e aberta. -Se preferir um formato mais privado, peça aos seus alunos que façam um fork do currículo, lição por lição, para seus próprios repositórios do GitHub como repositórios privados, e lhe concedam acesso. Assim, eles poderão completar quizzes e tarefas de forma privada e enviá-los a você via issues no seu repositório da sala de aula. +Se preferir um formato mais privado, peça aos seus alunos para fazerem fork do currículo, lição por lição, para os seus próprios repositórios GitHub como repositórios privados, e dêem-lhe acesso. Assim, poderão completar os questionários e trabalhos de forma privada e submetê-los através de issues no repositório da sua sala de aula. -Existem muitas maneiras de fazer isso funcionar em um formato de sala de aula online. Por favor, nos avise o que funciona melhor para você! +Existem várias formas de fazer isto funcionar num formato de sala de aula online. Por favor, diga-nos qual funciona melhor para si! -## Por favor, compartilhe suas opiniões +## Por favor, partilhe a sua opinião -Queremos fazer este currículo funcionar para você e seus alunos. Por favor, nos dê feedback nos fóruns de discussão! +Queremos que este currículo funcione para si e para os seus alunos. Por favor, deixe-nos o seu feedback nos fóruns de discussão! -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/how-to-run.md b/translations/pt/lessons/0-course-setup/how-to-run.md index f452858b..afdb4338 100644 --- a/translations/pt/lessons/0-course-setup/how-to-run.md +++ b/translations/pt/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # Como Executar o Código -Este currículo contém muitos exemplos executáveis e laboratórios que você vai querer rodar. Para fazer isso, você precisa da capacidade de executar código Python em Jupyter Notebooks fornecidos como parte deste currículo. Você tem várias opções para executar o código: +Este currículo contém muitos exemplos executáveis e laboratórios que você provavelmente vai querer executar. Para isso, é necessário ter a capacidade de executar código Python em Jupyter Notebooks fornecidos como parte deste currículo. Existem várias opções para executar o código: ## Executar localmente no seu computador -Para executar o código localmente no seu computador, você precisará ter alguma versão do Python instalada. Eu pessoalmente recomendo instalar o **[miniconda](https://conda.io/en/latest/miniconda.html)** - é uma instalação bastante leve que suporta o gerenciador de pacotes `conda` para diferentes **ambientes virtuais** Python. +Para executar o código localmente no seu computador, será necessário ter alguma versão do Python instalada. Recomendo pessoalmente instalar o **[miniconda](https://conda.io/en/latest/miniconda.html)** - é uma instalação leve que suporta o gestor de pacotes `conda` para diferentes **ambientes virtuais** Python. -Depois de instalar o miniconda, você precisa clonar o repositório e criar um ambiente virtual a ser usado para este curso: +Depois de instalar o miniconda, será necessário clonar o repositório e criar um ambiente virtual para ser usado neste curso: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,19 +24,19 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Usando o Visual Studio Code com a Extensão Python +### Usar o Visual Studio Code com a Extensão Python -Provavelmente a melhor maneira de usar o currículo é abri-lo no [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) com a [Extensão Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Provavelmente, a melhor forma de usar o currículo é abri-lo no [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) com a [Extensão Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Nota**: Assim que você clonar e abrir o diretório no VS Code, ele automaticamente sugerirá que você instale as extensões do Python. Você também terá que instalar o miniconda, conforme descrito acima. +> **Nota**: Assim que clonar e abrir o diretório no VS Code, ele sugerirá automaticamente a instalação das extensões Python. Também será necessário instalar o miniconda, conforme descrito acima. -> **Nota**: Se o VS Code sugerir que você reabra o repositório em um contêiner, você precisa recusar isso para usar a instalação local do Python. +> **Nota**: Se o VS Code sugerir reabrir o repositório num container, deve recusar para usar a instalação local do Python. -### Usando Jupyter no Navegador +### Usar o Jupyter no Navegador -Você também pode usar o ambiente Jupyter diretamente do navegador no seu próprio computador. Na verdade, tanto o Jupyter clássico quanto o Jupyter Hub fornecem um ambiente de desenvolvimento bastante conveniente com autocompletar, destaque de código, etc. +Também pode usar o ambiente Jupyter diretamente no navegador no seu próprio computador. Na verdade, tanto o Jupyter clássico quanto o Jupyter Hub oferecem um ambiente de desenvolvimento bastante conveniente com auto-completação, realce de código, etc. -Para iniciar o Jupyter localmente, vá para o diretório do curso e execute: +Para iniciar o Jupyter localmente, vá até o diretório do curso e execute: ```bash jupyter notebook @@ -36,32 +45,32 @@ ou ```bash jupyterhub ``` -Você pode então navegar até qualquer uma das pastas `.ipynb` files, open them and start working. +Depois, pode navegar até qualquer um dos ficheiros `.ipynb`, abri-los e começar a trabalhar. -### Running in container +### Executar num container -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que instruem como construir um contêiner para este repositório; o VS Code lhe oferecerá a opção de reabrir o código no contêiner. Isso exigirá a instalação do Docker e também será mais complexo, então recomendamos isso para usuários mais experientes. +Uma alternativa à instalação do Python seria executar o código num container. Como o nosso repositório contém uma pasta especial `.devcontainer` que instrui como construir um container para este repositório, o VS Code oferecerá a opção de reabrir o código num container. Isto exigirá a instalação do Docker e será mais complexo, por isso recomendamos esta opção para utilizadores mais experientes. -## Executando na Nuvem +## Executar na Nuvem -Se você não quiser instalar o Python localmente e tiver acesso a alguns recursos em nuvem, uma boa alternativa seria executar o código na nuvem. Existem várias maneiras de fazer isso: +Se não quiser instalar o Python localmente e tiver acesso a alguns recursos na nuvem, uma boa alternativa seria executar o código na nuvem. Existem várias formas de fazer isso: -* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que é um ambiente virtual criado para você no GitHub, acessível através da interface do navegador do VS Code. Se você tiver acesso ao Codespaces, pode simplesmente clicar no botão **Code** no repositório, iniciar um codespace e começar a rodar em pouco tempo. -* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) é um recurso de computação gratuito fornecido na nuvem para pessoas como você testarem algum código no GitHub. Há um botão na página inicial para abrir o repositório no Binder - isso deve levá-lo rapidamente ao site do binder, que construirá o contêiner subjacente e iniciará a interface web do Jupyter para você de forma contínua. +* Usar o **[GitHub Codespaces](https://github.com/features/codespaces)**, que é um ambiente virtual criado para si no GitHub, acessível através da interface do navegador do VS Code. Se tiver acesso ao Codespaces, basta clicar no botão **Code** no repositório, iniciar um codespace e começar a trabalhar rapidamente. +* Usar o **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. O [Binder](https://mybinder.org) oferece recursos computacionais gratuitos na nuvem para pessoas como você testarem algum código no GitHub. Há um botão na página inicial para abrir o repositório no Binder - isso deve levá-lo rapidamente ao site do Binder, que construirá o container subjacente e iniciará a interface web do Jupyter para si de forma transparente. -> **Nota**: Para prevenir abusos, o Binder tem acesso a alguns recursos da web bloqueados. Isso pode impedir que alguns códigos funcionem, que buscam modelos e/ou conjuntos de dados da Internet pública. Você pode precisar encontrar algumas soluções alternativas. Além disso, os recursos computacionais fornecidos pelo Binder são bastante básicos, então o treinamento será lento, especialmente nas lições mais complexas posteriores. +> **Nota**: Para evitar uso indevido, o Binder tem acesso a alguns recursos web bloqueados. Isso pode impedir que algum código funcione, especialmente se ele buscar modelos e/ou conjuntos de dados da Internet pública. Pode ser necessário encontrar algumas alternativas. Além disso, os recursos computacionais fornecidos pelo Binder são bastante básicos, então o treino será lento, especialmente nas lições mais complexas. -## Executando na Nuvem com GPU +## Executar na Nuvem com GPU -Algumas das lições posteriores neste currículo se beneficiariam muito do suporte a GPU, pois, caso contrário, o treinamento será dolorosamente lento. Existem algumas opções que você pode seguir, especialmente se tiver acesso à nuvem, seja através do [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ou através da sua instituição: +Algumas das lições mais avançadas deste currículo beneficiariam muito do suporte a GPU, pois, caso contrário, o treino será extremamente lento. Existem algumas opções que pode seguir, especialmente se tiver acesso à nuvem, seja através do [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ou da sua instituição: -* Criar uma [Máquina Virtual de Ciência de Dados](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) e se conectar a ela através do Jupyter. Você pode então clonar o repositório diretamente na máquina e começar a aprender. As VMs da série NC têm suporte a GPU. +* Criar uma [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) e conectá-la através do Jupyter. Pode então clonar o repositório diretamente na máquina e começar a aprender. As VMs da série NC têm suporte a GPU. -> **Nota**: Algumas assinaturas, incluindo o Azure for Students, não fornecem suporte a GPU de forma nativa. Você pode precisar solicitar núcleos de GPU adicionais através de um pedido de suporte técnico. +> **Nota**: Algumas subscrições, incluindo o Azure for Students, não fornecem suporte a GPU por padrão. Pode ser necessário solicitar núcleos de GPU adicionais através de um pedido de suporte técnico. -* Criar um [Espaço de Trabalho de Aprendizado de Máquina do Azure](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) e então usar o recurso de Notebook lá. [Este vídeo](https://azure-for-academics.github.io/quickstart/azureml-papers/) mostra como clonar um repositório em um notebook do Azure ML e começar a usá-lo. +* Criar um [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) e usar a funcionalidade de Notebooks lá. [Este vídeo](https://azure-for-academics.github.io/quickstart/azureml-papers/) mostra como clonar um repositório para o notebook do Azure ML e começar a utilizá-lo. -Você também pode usar o Google Colab, que vem com algum suporte gratuito para GPU, e fazer o upload de Jupyter Notebooks lá para executá-los um por um. +Também pode usar o Google Colab, que oferece algum suporte gratuito a GPU, e carregar os Jupyter Notebooks lá para executá-los um por um. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/setup.md b/translations/pt/lessons/0-course-setup/setup.md index dcddee83..70173ff1 100644 --- a/translations/pt/lessons/0-course-setup/setup.md +++ b/translations/pt/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# Começando com este Currículo + +# Introdução a este Currículo -## Você é um estudante? +## És estudante? -Comece com os seguintes recursos: +Começa com os seguintes recursos: -* [Página do Hub do Estudante](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Nesta página, você encontrará recursos para iniciantes, pacotes para estudantes e até maneiras de obter um voucher gratuito para certificação. Esta é uma página que você vai querer adicionar aos seus favoritos e verificar de tempos em tempos, pois trocamos o conteúdo pelo menos mensalmente. -* [Embaixadores do Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Junte-se a uma comunidade global de embaixadores estudantis, isso pode ser sua porta de entrada para a Microsoft. +* [Página do Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Nesta página, encontrarás recursos para iniciantes, pacotes para estudantes e até formas de obter um voucher gratuito para certificação. Esta é uma página que deves guardar nos favoritos e consultar de tempos em tempos, pois atualizamos o conteúdo pelo menos uma vez por mês. +* [Microsoft Student Learn Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Junta-te a uma comunidade global de embaixadores estudantis, esta pode ser a tua porta de entrada para a Microsoft. -**Estudantes**, existem algumas maneiras de usar o currículo. Em primeiro lugar, você pode apenas ler o texto e olhar o código diretamente no GitHub. Se você quiser executar o código em qualquer um dos notebooks - [leia nossas instruções](./etc/how-to-run.md) e encontre mais conselhos sobre como fazê-lo [neste post do blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**Estudantes**, há várias formas de utilizar este currículo. Em primeiro lugar, podes simplesmente ler o texto e explorar o código diretamente no GitHub. Se quiseres executar o código em algum dos notebooks - [lê as nossas instruções](./etc/how-to-run.md) e encontra mais conselhos sobre como fazê-lo [neste post do blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Nota**: [Instruções sobre como executar o código neste currículo](/how-to-run.md) +> **Nota**: [Instruções sobre como executar o código neste currículo](./how-to-run.md) -## Estudo Autônomo +## Estudo Autónomo -No entanto, se você gostaria de fazer o curso como um projeto de autoestudo, sugerimos que você faça um fork de todo o repositório para sua própria conta do GitHub e complete os exercícios por conta própria ou com um grupo: +No entanto, se preferires fazer o curso como um projeto de estudo autónomo, sugerimos que faças um fork de todo o repositório para a tua conta do GitHub e completes os exercícios sozinho ou em grupo: -* Comece com um questionário pré-aula. -* Leia o texto introdutório da aula. -* Se a aula tiver notebooks adicionais, passe por eles, lendo e executando o código. Se ambos os notebooks TensorFlow e PyTorch forem fornecidos, você pode se concentrar em um deles - escolha seu framework favorito. -* Os notebooks frequentemente contêm alguns dos desafios que exigem que você ajuste um pouco o código para experimentar. -* Faça o questionário pós-aula. -* Se houver um laboratório anexado ao módulo - complete a tarefa. -* Visite o [Fórum de Discussão](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender em voz alta". +* Começa com um questionário pré-aula. +* Lê o texto introdutório da aula. +* Se a aula tiver notebooks adicionais, explora-os, lendo e executando o código. Se forem fornecidos notebooks tanto para TensorFlow como para PyTorch, podes focar-te num deles - escolhe a tua framework favorita. +* Os notebooks frequentemente contêm desafios que te pedem para ajustar o código um pouco e experimentar. +* Faz o questionário pós-aula. +* Se houver um laboratório associado ao módulo - completa a tarefa. +* Visita o [Fórum de Discussão](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender em voz alta". -> Para um estudo mais aprofundado, recomendamos seguir estes módulos e trilhas de aprendizado do [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). +> Para estudo adicional, recomendamos seguir estes módulos e percursos de aprendizagem no [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). -**Professores**, nós [incluímos algumas sugestões](/for-teachers.md) sobre como usar este currículo. +**Professores**, incluímos [algumas sugestões](/for-teachers.md) sobre como utilizar este currículo. --- ## Pedagogia -Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja **baseado em projetos** e que inclua **questionários frequentes**. +Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que é **baseado em projetos práticos** e que inclui **questionários frequentes**. -Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna mais envolvente para os estudantes e a retenção dos conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do estudante em relação ao aprendizado de um tópico, enquanto um segundo questionário após a aula garante uma maior retenção. Este currículo foi projetado para ser flexível e divertido, podendo ser realizado integralmente ou em partes. Os projetos começam pequenos e se tornam cada vez mais complexos até o final do ciclo de 12 semanas. +Ao alinhar o conteúdo com projetos, o processo torna-se mais envolvente para os estudantes e a retenção dos conceitos é reforçada. Além disso, um questionário de baixa pressão antes de uma aula orienta o estudante para aprender um tópico, enquanto um segundo questionário após a aula garante uma maior retenção. Este currículo foi projetado para ser flexível e divertido, podendo ser seguido na íntegra ou em partes. Os projetos começam pequenos e tornam-se progressivamente mais complexos ao longo do ciclo de 12 semanas. -> **Uma nota sobre questionários**: Todos os questionários estão contidos [neste aplicativo](https://red-field-0a6ddfd03.1.azurestaticapps.net/), totalizando 50 questionários de três perguntas cada. Eles estão vinculados dentro das lições, mas o aplicativo de questionários pode ser executado localmente; siga as instruções na pasta `etc/quiz-app`. +> **Uma nota sobre os questionários**: Todos os questionários estão disponíveis [nesta aplicação](https://red-field-0a6ddfd03.1.azurestaticapps.net/), com um total de 50 questionários de três perguntas cada. Eles estão ligados dentro das lições, mas a aplicação de questionários pode ser executada localmente; segue as instruções na pasta `etc/quiz-app`. ## Acesso Offline -Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e, em seguida, na pasta `etc/docsify` deste repositório, digite `docsify serve`. O site será servido na porta 3000 em seu localhost: `localhost:3000`. Um pdf do currículo está disponível [neste link](../../../../../../etc/pdf/readme.pdf). +Podes executar esta documentação offline utilizando o [Docsify](https://docsify.js.org/#/). Faz um fork deste repositório, [instala o Docsify](https://docsify.js.org/#/quickstart) no teu computador local e, na pasta raiz deste repositório, escreve `docsify serve`. O website será servido na porta 3000 no teu localhost: `localhost:3000`. Um PDF do currículo está disponível [neste link](../../../../../../../../../etc/pdf/readme.pdf). -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/1-Intro/README.md b/translations/pt/lessons/1-Intro/README.md index 01254a27..f1b17c78 100644 --- a/translations/pt/lessons/1-Intro/README.md +++ b/translations/pt/lessons/1-Intro/README.md @@ -1,33 +1,140 @@ + +# Introdução à IA + +![Resumo do conteúdo de Introdução à IA em um desenho](../../../../lessons/sketchnotes/ai-intro.png) + +> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**Inteligência Artificial** é uma disciplina científica fascinante que estuda como podemos fazer os computadores exibirem comportamentos inteligentes, ou seja, realizarem tarefas nas quais os seres humanos são bons. + +Originalmente, os computadores foram inventados por [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) para operar com números seguindo um procedimento bem definido - um algoritmo. Os computadores modernos, embora significativamente mais avançados do que o modelo original proposto no século XIX, ainda seguem a mesma ideia de cálculos controlados. Assim, é possível programar um computador para realizar algo se soubermos a sequência exata de passos necessários para atingir o objetivo. + +![Foto de uma pessoa](../../../../lessons/1-Intro/images/dsh_age.png) + +> Foto por [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Definir a idade de uma pessoa a partir de sua fotografia é uma tarefa que não pode ser programada explicitamente, porque não sabemos como chegamos a um número em nossa mente ao fazê-lo. + +--- + +No entanto, existem algumas tarefas para as quais não sabemos resolver explicitamente. Considere determinar a idade de uma pessoa a partir de sua fotografia. De alguma forma, aprendemos a fazer isso porque vimos muitos exemplos de pessoas de diferentes idades, mas não conseguimos explicar explicitamente como fazemos isso, nem programar um computador para fazê-lo. Este é exatamente o tipo de tarefa que interessa à **Inteligência Artificial** (IA). + +✅ Pense em algumas tarefas que você poderia delegar a um computador e que se beneficiariam da IA. Considere os campos das finanças, medicina e artes - como esses campos estão a beneficiar-se hoje da IA? + +## IA Fraca vs. IA Forte + +IA Fraca | IA Forte +---------------------------------------|------------------------------------- +IA Fraca refere-se a sistemas de IA projetados e treinados para uma tarefa específica ou um conjunto restrito de tarefas.|IA Forte, ou Inteligência Artificial Geral (AGI), refere-se a sistemas de IA com inteligência e compreensão ao nível humano. +Esses sistemas de IA não são geralmente inteligentes; eles se destacam em realizar uma tarefa predefinida, mas não possuem verdadeira compreensão ou consciência.|Esses sistemas de IA têm a capacidade de realizar qualquer tarefa intelectual que um ser humano possa fazer, adaptar-se a diferentes domínios e possuir uma forma de consciência ou autoconsciência. +Exemplos de IA Fraca incluem assistentes virtuais como Siri ou Alexa, algoritmos de recomendação usados por serviços de streaming e chatbots projetados para tarefas específicas de atendimento ao cliente.|Alcançar a IA Forte é um objetivo de longo prazo da pesquisa em IA e exigiria o desenvolvimento de sistemas de IA que possam raciocinar, aprender, compreender e adaptar-se a uma ampla gama de tarefas e contextos. +A IA Fraca é altamente especializada e não possui habilidades cognitivas semelhantes às humanas ou capacidades gerais de resolução de problemas além do seu domínio restrito.|A IA Forte é atualmente um conceito teórico, e nenhum sistema de IA atingiu esse nível de inteligência geral. + +Para mais informações, consulte **[Inteligência Artificial Geral](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## A Definição de Inteligência e o Teste de Turing + +Um dos problemas ao lidar com o termo **[Inteligência](https://en.wikipedia.org/wiki/Intelligence)** é que não há uma definição clara para ele. Pode-se argumentar que a inteligência está ligada ao **pensamento abstrato** ou à **autoconsciência**, mas não conseguimos defini-la adequadamente. + +![Foto de um gato](../../../../lessons/1-Intro/images/photo-cat.jpg) + +> [Foto](https://unsplash.com/photos/75715CVEJhI) por [Amber Kipp](https://unsplash.com/@sadmax) do Unsplash + +Para perceber a ambiguidade do termo *inteligência*, tente responder à pergunta: "Um gato é inteligente?". Diferentes pessoas tendem a dar respostas diferentes a esta pergunta, pois não há um teste universalmente aceito para provar se a afirmação é verdadeira ou não. E se acha que há - tente submeter o seu gato a um teste de QI... + +✅ Pense por um minuto sobre como você define inteligência. Um corvo que consegue resolver um labirinto para obter comida é inteligente? E uma criança, é inteligente? + +--- + +Ao falar sobre AGI, precisamos de alguma forma de determinar se criámos um sistema verdadeiramente inteligente. [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) propôs uma maneira chamada **[Teste de Turing](https://en.wikipedia.org/wiki/Turing_test)**, que também funciona como uma definição de inteligência. O teste compara um sistema dado com algo inerentemente inteligente - um ser humano real, e porque qualquer comparação automática pode ser contornada por um programa de computador, usamos um interrogador humano. Assim, se um ser humano não conseguir distinguir entre uma pessoa real e um sistema de computador em um diálogo baseado em texto - o sistema é considerado inteligente. + +> Um chatbot chamado [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman), desenvolvido em São Petersburgo, chegou perto de passar no Teste de Turing em 2014 usando um truque de personalidade inteligente. Ele anunciou desde o início que era um menino ucraniano de 13 anos, o que explicaria a falta de conhecimento e algumas discrepâncias no texto. O bot convenceu 30% dos juízes de que era humano após um diálogo de 5 minutos, uma métrica que Turing acreditava que uma máquina seria capaz de passar até 2000. No entanto, deve-se entender que isso não indica que criámos um sistema inteligente, ou que um sistema de computador enganou o interrogador humano - o sistema não enganou os humanos, mas sim os criadores do bot! + +✅ Alguma vez foi enganado por um chatbot ao pensar que estava a falar com um humano? Como ele o convenceu? + +## Diferentes Abordagens à IA + +Se quisermos que um computador se comporte como um humano, precisamos de alguma forma modelar dentro do computador a nossa maneira de pensar. Consequentemente, precisamos tentar entender o que torna um ser humano inteligente. + +> Para programar inteligência numa máquina, precisamos entender como funcionam os nossos próprios processos de tomada de decisão. Se fizer uma pequena introspeção, perceberá que existem alguns processos que acontecem subconscientemente – por exemplo, conseguimos distinguir um gato de um cão sem pensar muito nisso – enquanto outros envolvem raciocínio. + +Existem duas abordagens possíveis para este problema: + +Abordagem de Cima para Baixo (Raciocínio Simbólico) | Abordagem de Baixo para Cima (Redes Neurais) +---------------------------------------|------------------------------------- +Uma abordagem de cima para baixo modela a maneira como uma pessoa raciocina para resolver um problema. Envolve extrair **conhecimento** de um ser humano e representá-lo numa forma legível por computador. Também precisamos desenvolver uma maneira de modelar o **raciocínio** dentro de um computador. | Uma abordagem de baixo para cima modela a estrutura do cérebro humano, que consiste num grande número de unidades simples chamadas **neurónios**. Cada neurónio atua como uma média ponderada das suas entradas, e podemos treinar uma rede de neurónios para resolver problemas úteis fornecendo **dados de treino**. + +Existem também outras abordagens possíveis para a inteligência: + +* Uma abordagem **Emergente**, **Sinergética** ou de **múltiplos agentes** baseia-se no facto de que comportamentos inteligentes complexos podem ser obtidos pela interação de um grande número de agentes simples. De acordo com a [cibernética evolutiva](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics), a inteligência pode *emergir* de comportamentos mais simples e reativos no processo de *transição de metassistema*. + +* Uma abordagem **Evolutiva**, ou **algoritmo genético**, é um processo de otimização baseado nos princípios da evolução. + +Vamos considerar essas abordagens mais tarde no curso, mas por agora vamos focar-nos em duas direções principais: de cima para baixo e de baixo para cima. + +### A Abordagem de Cima para Baixo + +Numa **abordagem de cima para baixo**, tentamos modelar o nosso raciocínio. Como conseguimos seguir os nossos pensamentos ao raciocinar, podemos tentar formalizar esse processo e programá-lo no computador. Isso é chamado de **raciocínio simbólico**. + +As pessoas tendem a ter algumas regras na cabeça que orientam os seus processos de tomada de decisão. Por exemplo, quando um médico está a diagnosticar um paciente, ele ou ela pode perceber que a pessoa tem febre e, portanto, pode haver alguma inflamação no corpo. Ao aplicar um grande conjunto de regras a um problema específico, um médico pode ser capaz de chegar ao diagnóstico final. + +Esta abordagem depende muito da **representação do conhecimento** e do **raciocínio**. Extrair conhecimento de um especialista humano pode ser a parte mais difícil, porque um médico, em muitos casos, não saberá exatamente por que está a chegar a um diagnóstico específico. Às vezes, a solução simplesmente surge na sua mente sem um pensamento explícito. Algumas tarefas, como determinar a idade de uma pessoa a partir de uma fotografia, não podem ser de forma alguma reduzidas à manipulação de conhecimento. + +### Abordagem de Baixo para Cima + +Alternativamente, podemos tentar modelar os elementos mais simples dentro do nosso cérebro – um neurónio. Podemos construir uma chamada **rede neural artificial** dentro de um computador e, em seguida, tentar ensiná-la a resolver problemas fornecendo-lhe exemplos. Este processo é semelhante à forma como um recém-nascido aprende sobre o seu ambiente ao fazer observações. + +✅ Faça uma pequena pesquisa sobre como os bebés aprendem. Quais são os elementos básicos do cérebro de um bebé? + +> | E o ML? | | +> |--------------|-----------| +> | Parte da Inteligência Artificial que se baseia no computador aprender a resolver um problema com base em alguns dados é chamada de **Machine Learning**. Não vamos considerar o aprendizado de máquina clássico neste curso - recomendamos o currículo separado [Machine Learning para Iniciantes](http://aka.ms/ml-beginners). | ![ML para Iniciantes](../../../../lessons/1-Intro/images/ml-for-beginners.png) | + +## Um Breve Histórico da IA + +A Inteligência Artificial começou como um campo no meio do século XX. Inicialmente, o raciocínio simbólico era a abordagem predominante, e isso levou a uma série de sucessos importantes, como sistemas especialistas – programas de computador capazes de atuar como especialistas em alguns domínios de problemas limitados. No entanto, logo ficou claro que essa abordagem não escala bem. Extrair o conhecimento de um especialista, representá-lo num computador e manter essa base de conhecimento precisa revelou-se uma tarefa muito complexa e cara demais para ser prática em muitos casos. Isso levou ao chamado [Inverno da IA](https://en.wikipedia.org/wiki/AI_winter) na década de 1970. + > Imagem por [Dmitry Soshnikov](http://soshnikov.com) -Com o passar do tempo, os recursos computacionais se tornaram mais baratos e mais dados se tornaram disponíveis, então as abordagens de redes neurais começaram a demonstrar um ótimo desempenho em competir com seres humanos em várias áreas, como visão computacional ou compreensão de fala. Na última década, o termo Inteligência Artificial tem sido usado principalmente como sinônimo de Redes Neurais, pois a maioria dos sucessos em IA que ouvimos falar se baseia nelas. +Com o passar do tempo, os recursos computacionais tornaram-se mais baratos e mais dados ficaram disponíveis, então as abordagens baseadas em redes neurais começaram a demonstrar um ótimo desempenho ao competir com seres humanos em muitas áreas, como visão computacional ou compreensão da fala. Na última década, o termo Inteligência Artificial tem sido usado principalmente como sinônimo de Redes Neurais, porque a maioria dos sucessos da IA que ouvimos falar baseiam-se nelas. Podemos observar como as abordagens mudaram, por exemplo, na criação de um programa de computador para jogar xadrez: -* Os primeiros programas de xadrez eram baseados em busca – um programa tentava explicitamente estimar os possíveis movimentos de um oponente para um determinado número de jogadas futuras e selecionava um movimento ótimo com base na posição ideal que poderia ser alcançada em algumas jogadas. Isso levou ao desenvolvimento do algoritmo de busca conhecido como [corte alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). -* As estratégias de busca funcionam bem no final do jogo, onde o espaço de busca é limitado por um pequeno número de possíveis movimentos. No entanto, no início do jogo, o espaço de busca é enorme, e o algoritmo pode ser aprimorado aprendendo com partidas existentes entre jogadores humanos. Experimentos subsequentes empregaram o chamado [raciocínio baseado em casos](https://en.wikipedia.org/wiki/Case-based_reasoning), onde o programa procurava por casos na base de conhecimento muito semelhantes à posição atual no jogo. -* Programas modernos que vencem jogadores humanos são baseados em redes neurais e [aprendizado por reforço](https://en.wikipedia.org/wiki/Reinforcement_learning), onde os programas aprendem a jogar apenas jogando por muito tempo contra si mesmos e aprendendo com seus próprios erros – muito parecido com o que os seres humanos fazem ao aprender a jogar xadrez. No entanto, um programa de computador pode jogar muitas mais partidas em muito menos tempo, e assim pode aprender muito mais rápido. +* Os primeiros programas de xadrez baseavam-se em pesquisa – um programa tentava estimar explicitamente os possíveis movimentos de um oponente para um determinado número de movimentos seguintes e selecionava um movimento ótimo com base na posição ideal que poderia ser alcançada em alguns movimentos. Isso levou ao desenvolvimento do chamado algoritmo de pesquisa [poda alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Estratégias de pesquisa funcionam bem no final do jogo, onde o espaço de pesquisa é limitado por um pequeno número de movimentos possíveis. No entanto, no início do jogo, o espaço de pesquisa é enorme, e o algoritmo pode ser melhorado aprendendo com partidas existentes entre jogadores humanos. Experimentos subsequentes empregaram o chamado [raciocínio baseado em casos](https://en.wikipedia.org/wiki/Case-based_reasoning), onde o programa procurava casos na base de conhecimento muito semelhantes à posição atual no jogo. +* Programas modernos que vencem jogadores humanos baseiam-se em redes neurais e [aprendizado por reforço](https://en.wikipedia.org/wiki/Reinforcement_learning), onde os programas aprendem a jogar jogando contra si mesmos por muito tempo e aprendendo com os próprios erros – muito parecido com o que os seres humanos fazem ao aprender a jogar xadrez. No entanto, um programa de computador pode jogar muito mais jogos em muito menos tempo e, assim, aprender muito mais rápido. ✅ Faça uma pequena pesquisa sobre outros jogos que foram jogados por IA. -Da mesma forma, podemos ver como a abordagem para criar “programas falantes” (que poderiam passar no teste de Turing) mudou: +Da mesma forma, podemos ver como a abordagem para criar “programas que falam” (que poderiam passar no Teste de Turing) mudou: -* Os primeiros programas desse tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), eram baseados em regras gramaticais muito simples e na reformulação da frase de entrada em uma pergunta. -* Assistentes modernos, como Cortana, Siri ou Google Assistant, são todos sistemas híbridos que usam Redes Neurais para converter fala em texto e reconhecer nossa intenção, e então empregam algum raciocínio ou algoritmos explícitos para realizar as ações necessárias. -* No futuro, podemos esperar um modelo completamente baseado em redes neurais para lidar com diálogos por conta própria. As recentes redes neurais da família GPT e [Turing-NLG](https://turing.microsoft.com/) mostram grande sucesso nisso. +* Os primeiros programas desse tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), baseavam-se em regras gramaticais muito simples e na reformulação da frase de entrada numa pergunta. +* Assistentes modernos, como Cortana, Siri ou Google Assistant, são todos sistemas híbridos que usam redes neurais para converter fala em texto e reconhecer nossa intenção, e depois empregam algum raciocínio ou algoritmos explícitos para realizar as ações necessárias. +* No futuro, podemos esperar um modelo completamente baseado em redes neurais para lidar com o diálogo por conta própria. As recentes famílias de redes neurais GPT e [Turing-NLG](https://turing.microsoft.com/) mostram grande sucesso nisso. -> Imagem por Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) por [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash +> Imagem de Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) de [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash -## Pesquisa Recente em IA +## Investigação Recente em IA -O enorme crescimento recente na pesquisa de redes neurais começou por volta de 2010, quando grandes conjuntos de dados públicos começaram a se tornar disponíveis. Uma enorme coleção de imagens chamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contém cerca de 14 milhões de imagens anotadas, deu origem ao [Desafio de Reconhecimento Visual em Grande Escala do ImageNet](https://image-net.org/challenges/LSVRC/). +O enorme crescimento recente na investigação sobre redes neuronais começou por volta de 2010, quando grandes conjuntos de dados públicos começaram a estar disponíveis. Uma vasta coleção de imagens chamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contém cerca de 14 milhões de imagens anotadas, deu origem ao [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). ![Precisão do ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) -> Imagem por [Dmitry Soshnikov](http://soshnikov.com) -Em 2012, [Redes Neurais Convolucionais](../4-ComputerVision/07-ConvNets/README.md) foram utilizadas pela primeira vez na classificação de imagens, o que resultou em uma queda significativa nos erros de classificação (de quase 30% para 16,4%). Em 2015, a arquitetura ResNet da Microsoft Research [alcançou precisão em nível humano](https://doi.org/10.1109/ICCV.2015.123). +> Imagem de [Dmitry Soshnikov](http://soshnikov.com) -Desde então, as Redes Neurais demonstraram um comportamento muito bem-sucedido em muitas tarefas: +Em 2012, as [Redes Neuronais Convolucionais](../4-ComputerVision/07-ConvNets/README.md) foram usadas pela primeira vez na classificação de imagens, o que levou a uma redução significativa nos erros de classificação (de quase 30% para 16,4%). Em 2015, a arquitetura ResNet da Microsoft Research [atingiu precisão ao nível humano](https://doi.org/10.1109/ICCV.2015.123). + +Desde então, as Redes Neuronais demonstraram um desempenho muito bem-sucedido em muitas tarefas: --- @@ -36,21 +143,21 @@ Ano | Paridade Humana alcançada 2015 | [Classificação de Imagens](https://doi.org/10.1109/ICCV.2015.123) 2016 | [Reconhecimento de Fala Conversacional](https://arxiv.org/abs/1610.05256) 2018 | [Tradução Automática de Máquinas](https://arxiv.org/abs/1803.05567) (Chinês para Inglês) -2020 | [Legenda de Imagens](https://arxiv.org/abs/2009.13682) +2020 | [Legenda Automática de Imagens](https://arxiv.org/abs/2009.13682) -Nos últimos anos, testemunhamos grandes sucessos com grandes modelos de linguagem, como BERT e GPT-3. Isso ocorreu principalmente devido ao fato de que há uma grande quantidade de dados textuais gerais disponíveis que nos permite treinar modelos para capturar a estrutura e o significado dos textos, pré-treiná-los em coleções de textos gerais e, em seguida, especializar esses modelos para tarefas mais específicas. Aprenderemos mais sobre [Processamento de Linguagem Natural](../5-NLP/README.md) mais adiante neste curso. +Nos últimos anos, assistimos a enormes sucessos com modelos de linguagem de grande escala, como o BERT e o GPT-3. Isto aconteceu principalmente devido ao facto de haver uma grande quantidade de dados textuais gerais disponíveis, o que permite treinar modelos para capturar a estrutura e o significado dos textos, pré-treiná-los em coleções de textos gerais e, em seguida, especializar esses modelos para tarefas mais específicas. Vamos aprender mais sobre [Processamento de Linguagem Natural](../5-NLP/README.md) mais adiante neste curso. ## 🚀 Desafio -Faça um tour pela internet para determinar onde, na sua opinião, a IA é utilizada de forma mais eficaz. É em um aplicativo de mapeamento, ou em algum serviço de conversão de fala para texto ou em um videogame? Pesquise como o sistema foi construído. +Faça uma pesquisa na internet para determinar onde, na sua opinião, a IA é mais eficazmente utilizada. Será numa aplicação de mapas, num serviço de conversão de fala para texto ou num videojogo? Investigue como o sistema foi construído. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## Revisão & Estudo Autônomo +## Revisão e Estudo Autónomo -Revise a história da IA e do ML lendo [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Escolha um elemento do sketchnote no topo dessa lição ou desta e pesquise mais a fundo para entender o contexto cultural que informa sua evolução. +Revise a história da IA e do ML lendo [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Escolha um elemento do sketchnote no início dessa lição ou desta e investigue-o mais a fundo para compreender o contexto cultural que influenciou a sua evolução. **Tarefa**: [Game Jam](assignment.md) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/1-Intro/assignment.md b/translations/pt/lessons/1-Intro/assignment.md index 3cd9736d..e2f7c676 100644 --- a/translations/pt/lessons/1-Intro/assignment.md +++ b/translations/pt/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Os jogos são uma área que foi fortemente influenciada pelos desenvolvimentos em IA e ML. Nesta tarefa, escreva um artigo curto sobre um jogo que você gosta e que foi influenciado pela evolução da IA. Deve ser um jogo antigo o suficiente para ter sido influenciado por vários tipos de sistemas de processamento de computador. Um bom exemplo é Xadrez ou Go, mas também dê uma olhada em videogames como pong ou Pac-Man. Escreva um ensaio que discuta o passado, o presente e o futuro da IA no jogo. +Os jogos são uma área que tem sido fortemente influenciada pelos avanços na IA e no ML. Nesta tarefa, escreva um pequeno artigo sobre um jogo de que goste e que tenha sido influenciado pela evolução da IA. Deve ser um jogo suficientemente antigo para ter sido influenciado por vários tipos de sistemas de processamento computacional. Um bom exemplo é o Xadrez ou o Go, mas também pode considerar videojogos como Pong ou Pac-Man. Escreva um ensaio que discuta o passado, o presente e o futuro da IA no jogo. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/2-Symbolic/README.md b/translations/pt/lessons/2-Symbolic/README.md index 49191e2a..b90b65e5 100644 --- a/translations/pt/lessons/2-Symbolic/README.md +++ b/translations/pt/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ -# Representação do Conhecimento e Sistemas Especialistas + +# Representação de Conhecimento e Sistemas Especialistas -![Resumo do conteúdo de IA Simbólica](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pt.png) +![Resumo do conteúdo de IA Simbólica](../../../../lessons/sketchnotes/ai-symbolic.png) > Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) -A busca pela inteligência artificial é baseada na procura por conhecimento, para compreender o mundo de forma semelhante a como os humanos fazem. Mas como você pode fazer isso? +A busca pela inteligência artificial baseia-se na procura por conhecimento, para compreender o mundo de forma semelhante aos humanos. Mas como podemos fazer isso? -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -Nos primeiros dias da IA, a abordagem de cima para baixo para criar sistemas inteligentes (discutida na lição anterior) era popular. A ideia era extrair o conhecimento das pessoas para alguma forma legível por máquina e, em seguida, usá-lo para resolver problemas automaticamente. Essa abordagem baseava-se em duas grandes ideias: +Nos primeiros dias da IA, a abordagem de cima para baixo para criar sistemas inteligentes (discutida na lição anterior) era popular. A ideia era extrair o conhecimento das pessoas para uma forma legível por máquinas e, em seguida, usá-lo para resolver problemas automaticamente. Esta abordagem baseava-se em duas grandes ideias: -* Representação do Conhecimento +* Representação de Conhecimento * Raciocínio -## Representação do Conhecimento +## Representação de Conhecimento -Um dos conceitos importantes na IA Simbólica é o **conhecimento**. É importante diferenciar conhecimento de *informação* ou *dados*. Por exemplo, pode-se dizer que livros contêm conhecimento, porque alguém pode estudar livros e se tornar um especialista. No entanto, o que os livros contêm é, na verdade, chamado de *dados*, e ao ler livros e integrar esses dados em nosso modelo de mundo, convertemos esses dados em conhecimento. +Um dos conceitos importantes na IA Simbólica é o **conhecimento**. É importante diferenciar conhecimento de *informação* ou *dados*. Por exemplo, pode-se dizer que os livros contêm conhecimento, porque podemos estudá-los e tornar-nos especialistas. No entanto, o que os livros realmente contêm é chamado de *dados*, e ao ler livros e integrar esses dados no nosso modelo do mundo, transformamos esses dados em conhecimento. -> ✅ **Conhecimento** é algo que está contido em nossa mente e representa nossa compreensão do mundo. Ele é obtido por um processo ativo de **aprendizagem**, que integra pedaços de informação que recebemos em nosso modelo ativo do mundo. +> ✅ **Conhecimento** é algo que está na nossa mente e representa a nossa compreensão do mundo. É obtido por um processo ativo de **aprendizagem**, que integra pedaços de informação que recebemos no nosso modelo ativo do mundo. -Na maioria das vezes, não definimos estritamente conhecimento, mas o alinhamos com outros conceitos relacionados usando a [Pirâmide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Ela contém os seguintes conceitos: +Na maioria das vezes, não definimos estritamente o conhecimento, mas alinhamos com outros conceitos relacionados usando a [Pirâmide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Ela contém os seguintes conceitos: -* **Dados** são algo representado em mídias físicas, como texto escrito ou palavras faladas. Dados existem independentemente dos seres humanos e podem ser transmitidos entre as pessoas. -* **Informação** é como interpretamos dados em nossa mente. Por exemplo, quando ouvimos a palavra *computador*, temos alguma compreensão do que é. -* **Conhecimento** é a informação integrada em nosso modelo de mundo. Por exemplo, uma vez que aprendemos o que é um computador, começamos a ter algumas ideias sobre como ele funciona, quanto custa e para que pode ser usado. Essa rede de conceitos inter-relacionados forma nosso conhecimento. -* **Sabedoria** é mais um nível de nossa compreensão do mundo e representa *meta-conhecimento*, ou seja, alguma noção de como e quando o conhecimento deve ser usado. - - +* **Dados** são algo representado em mídia física, como texto escrito ou palavras faladas. Os dados existem independentemente dos seres humanos e podem ser transmitidos entre pessoas. +* **Informação** é como interpretamos os dados na nossa mente. Por exemplo, quando ouvimos a palavra *computador*, temos alguma compreensão do que é. +* **Conhecimento** é a informação integrada no nosso modelo do mundo. Por exemplo, uma vez que aprendemos o que é um computador, começamos a ter algumas ideias sobre como funciona, quanto custa e para que pode ser usado. Esta rede de conceitos inter-relacionados forma o nosso conhecimento. +* **Sabedoria** é um nível ainda mais elevado da nossa compreensão do mundo e representa o *meta-conhecimento*, ou seja, uma noção de como e quando o conhecimento deve ser usado. *Imagem [da Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Por Longlivetheux - Trabalho próprio, CC BY-SA 4.0* -Assim, o problema da **representação do conhecimento** é encontrar uma maneira eficaz de representar o conhecimento dentro de um computador na forma de dados, para torná-lo automaticamente utilizável. Isso pode ser visto como um espectro: +Assim, o problema da **representação de conhecimento** é encontrar uma forma eficaz de representar o conhecimento dentro de um computador na forma de dados, para torná-lo automaticamente utilizável. Isso pode ser visto como um espectro: -![Espectro de representação do conhecimento](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pt.png) +![Espectro de representação de conhecimento](../../../../lessons/2-Symbolic/images/knowledge-spectrum.png) > Imagem por [Dmitry Soshnikov](http://soshnikov.com) -* À esquerda, existem tipos muito simples de representações de conhecimento que podem ser efetivamente utilizados por computadores. O mais simples é o algorítmico, quando o conhecimento é representado por um programa de computador. No entanto, essa não é a melhor maneira de representar conhecimento, pois não é flexível. O conhecimento dentro de nossa mente é frequentemente não algorítmico. -* À direita, existem representações como texto natural. É a mais poderosa, mas não pode ser usada para raciocínio automático. +* À esquerda, há tipos muito simples de representações de conhecimento que podem ser usados de forma eficaz por computadores. O mais simples é o algorítmico, quando o conhecimento é representado por um programa de computador. No entanto, esta não é a melhor forma de representar conhecimento, porque não é flexível. O conhecimento na nossa mente muitas vezes não é algorítmico. +* À direita, há representações como texto natural. É a mais poderosa, mas não pode ser usada para raciocínio automático. -> ✅ Pense por um minuto sobre como você representa conhecimento em sua mente e o converte em anotações. Existe um formato específico que funciona bem para você ajudar na retenção? +> ✅ Pense por um momento sobre como você representa conhecimento na sua mente e o converte em notas. Existe um formato específico que funciona bem para você e ajuda na retenção? -## Classificando Representações de Conhecimento Computacional +## Classificação de Representações de Conhecimento em Computadores -Podemos classificar diferentes métodos de representação de conhecimento computacional nas seguintes categorias: +Podemos classificar diferentes métodos de representação de conhecimento em computadores nas seguintes categorias: -* **Representações em rede** baseiam-se no fato de que temos uma rede de conceitos inter-relacionados em nossa mente. Podemos tentar reproduzir as mesmas redes como um gráfico dentro de um computador - uma chamada **rede semântica**. +* **Representações em rede** baseiam-se no fato de que temos uma rede de conceitos inter-relacionados na nossa mente. Podemos tentar reproduzir essas redes como um grafo dentro de um computador - uma **rede semântica**. -1. **Triplas Objeto-Atributo-Valor** ou **pares atributo-valor**. Uma vez que um gráfico pode ser representado dentro de um computador como uma lista de nós e arestas, podemos representar uma rede semântica por uma lista de triplas, contendo objetos, atributos e valores. Por exemplo, construímos as seguintes triplas sobre linguagens de programação: +1. **Triplas Objeto-Atributo-Valor** ou **pares atributo-valor**. Como um grafo pode ser representado dentro de um computador como uma lista de nós e arestas, podemos representar uma rede semântica por uma lista de triplas, contendo objetos, atributos e valores. Por exemplo, construímos as seguintes triplas sobre linguagens de programação: Objeto | Atributo | Valor --------|-----------|------ -Python | é | Linguagem-Destipada +-------|----------|------ +Python | é | Linguagem Não Tipada Python | inventado-por | Guido van Rossum -Python | sintaxe-bloco | indentação -Linguagem-Destipada | não tem | definições de tipo +Python | sintaxe-de-bloco | indentação +Linguagem Não Tipada | não tem | definições de tipo -> ✅ Pense em como triplas podem ser usadas para representar outros tipos de conhecimento. +> ✅ Pense como as triplas podem ser usadas para representar outros tipos de conhecimento. -2. **Representações hierárquicas** enfatizam o fato de que frequentemente criamos uma hierarquia de objetos em nossa mente. Por exemplo, sabemos que um canário é um pássaro, e todos os pássaros têm asas. Também temos alguma ideia sobre qual é a cor de um canário normalmente, e qual é a sua velocidade de voo. +2. **Representações hierárquicas** enfatizam o fato de que frequentemente criamos uma hierarquia de objetos na nossa mente. Por exemplo, sabemos que o canário é um pássaro, e todos os pássaros têm asas. Também temos alguma ideia sobre qual é a cor usual de um canário e qual é a sua velocidade de voo. - - **Representação em quadro** baseia-se em representar cada objeto ou classe de objetos como um **quadro** que contém **slots**. Slots têm possíveis valores padrão, restrições de valor ou procedimentos armazenados que podem ser chamados para obter o valor de um slot. Todos os quadros formam uma hierarquia semelhante a uma hierarquia de objetos em linguagens de programação orientadas a objetos. + - **Representação em quadros** baseia-se em representar cada objeto ou classe de objetos como um **quadro** que contém **slots**. Os slots têm possíveis valores padrão, restrições de valor ou procedimentos armazenados que podem ser chamados para obter o valor de um slot. Todos os quadros formam uma hierarquia semelhante à hierarquia de objetos em linguagens de programação orientadas a objetos. - **Cenários** são um tipo especial de quadros que representam situações complexas que podem se desenrolar ao longo do tempo. **Python** Slot | Valor | Valor padrão | Intervalo | ------|-------|---------------|----------| +-----|-------|--------------|-----------| Nome | Python | | | -É-Uma | Linguagem-Destipada | | | -Caso da Variável | | CamelCase | | +É-Um | Linguagem Não Tipada | | | +Caso de Variável | | CamelCase | | Comprimento do Programa | | | 5-5000 linhas | -Sintaxe do Bloco | Indente | | | +Sintaxe de Bloco | Indentação | | | 3. **Representações procedurais** baseiam-se em representar conhecimento por uma lista de ações que podem ser executadas quando uma certa condição ocorre. - - Regras de produção são declarações do tipo se-então que nos permitem tirar conclusões. Por exemplo, um médico pode ter uma regra dizendo que **SE** um paciente tem febre alta **OU** um nível elevado de proteína C-reativa no exame de sangue **ENTÃO** ele tem uma inflamação. Uma vez que encontramos uma das condições, podemos chegar a uma conclusão sobre a inflamação e, em seguida, usá-la em um raciocínio posterior. + - Regras de produção são declarações do tipo se-então que nos permitem tirar conclusões. Por exemplo, um médico pode ter uma regra dizendo que **SE** um paciente tem febre alta **OU** um nível elevado de proteína C-reativa no exame de sangue **ENTÃO** ele tem uma inflamação. Uma vez que encontramos uma das condições, podemos tirar uma conclusão sobre a inflamação e, em seguida, usá-la em raciocínios posteriores. - Algoritmos podem ser considerados outra forma de representação procedural, embora quase nunca sejam usados diretamente em sistemas baseados em conhecimento. -4. **Lógica** foi originalmente proposta por Aristóteles como uma maneira de representar o conhecimento humano universal. - - A Lógica de Predicados, como uma teoria matemática, é rica demais para ser computável, portanto, normalmente usa-se algum subconjunto dela, como cláusulas Horn usadas em Prolog. - - A Lógica Descritiva é uma família de sistemas lógicos usados para representar e raciocinar sobre hierarquias de objetos em representações de conhecimento distribuído, como a *web semântica*. +4. **Lógica** foi originalmente proposta por Aristóteles como uma forma de representar o conhecimento humano universal. + - Lógica de Predicados como teoria matemática é muito rica para ser computável, portanto, normalmente é usado algum subconjunto dela, como cláusulas de Horn usadas em Prolog. + - Lógica Descritiva é uma família de sistemas lógicos usados para representar e raciocinar sobre hierarquias de objetos em representações de conhecimento distribuído, como a *web semântica*. ## Sistemas Especialistas -Um dos primeiros sucessos da IA simbólica foram os chamados **sistemas especialistas** - sistemas computacionais que foram projetados para atuar como um especialista em algum domínio de problema limitado. Eles eram baseados em uma **base de conhecimento** extraída de um ou mais especialistas humanos e continham um **motor de inferência** que realizava algum raciocínio sobre isso. +Um dos primeiros sucessos da IA simbólica foram os chamados **sistemas especialistas** - sistemas computacionais projetados para agir como especialistas em um domínio de problema limitado. Eles baseavam-se em uma **base de conhecimento** extraída de um ou mais especialistas humanos e continham um **motor de inferência** que realizava algum raciocínio sobre ela. -![Arquitetura Humana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pt.png) | ![Sistema Baseado em Conhecimento](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pt.png) +![Arquitetura Humana](../../../../lessons/2-Symbolic/images/arch-human.png) | ![Sistema Baseado em Conhecimento](../../../../lessons/2-Symbolic/images/arch-kbs.png) ---------------------------------------------|------------------------------------------------ -Estrutura simplificada de um sistema neural humano | Arquitetura de um sistema baseado em conhecimento +Estrutura simplificada do sistema neural humano | Arquitetura de um sistema baseado em conhecimento -Os sistemas especialistas são construídos como o sistema de raciocínio humano, que contém **memória de curto prazo** e **memória de longo prazo**. Da mesma forma, em sistemas baseados em conhecimento, distinguimos os seguintes componentes: +Os sistemas especialistas são construídos como o sistema de raciocínio humano, que contém **memória de curto prazo** e **memória de longo prazo**. Da mesma forma, nos sistemas baseados em conhecimento distinguimos os seguintes componentes: -* **Memória do problema**: contém o conhecimento sobre o problema que está sendo resolvido atualmente, ou seja, a temperatura ou pressão arterial de um paciente, se ele tem inflamação ou não, etc. Esse conhecimento também é chamado de **conhecimento estático**, porque contém uma instantânea do que sabemos atualmente sobre o problema - o chamado *estado do problema*. -* **Base de conhecimento**: representa o conhecimento de longo prazo sobre um domínio de problema. É extraído manualmente de especialistas humanos e não muda de consulta para consulta. Como permite navegar de um estado do problema para outro, também é chamado de **conhecimento dinâmico**. -* **Motor de inferência**: orquestra todo o processo de busca no espaço do estado do problema, fazendo perguntas ao usuário quando necessário. Também é responsável por encontrar as regras corretas a serem aplicadas a cada estado. +* **Memória do problema**: contém o conhecimento sobre o problema que está sendo resolvido atualmente, ou seja, a temperatura ou pressão arterial de um paciente, se ele tem inflamação ou não, etc. Este conhecimento também é chamado de **conhecimento estático**, porque contém um instantâneo do que sabemos atualmente sobre o problema - o chamado *estado do problema*. +* **Base de conhecimento**: representa o conhecimento de longo prazo sobre um domínio de problema. É extraído manualmente de especialistas humanos e não muda de uma consulta para outra. Como permite navegar de um estado de problema para outro, também é chamado de **conhecimento dinâmico**. +* **Motor de inferência**: orquestra todo o processo de busca no espaço de estados do problema, fazendo perguntas ao usuário quando necessário. Também é responsável por encontrar as regras certas para serem aplicadas a cada estado. Como exemplo, vamos considerar o seguinte sistema especialista para determinar um animal com base em suas características físicas: -![Árvore AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pt.png) +![Árvore AND-OR](../../../../lessons/2-Symbolic/images/AND-OR-Tree.png) > Imagem por [Dmitry Soshnikov](http://soshnikov.com) -Esse diagrama é chamado de **árvore AND-OR**, e é uma representação gráfica de um conjunto de regras de produção. Desenhar uma árvore é útil no início da extração de conhecimento do especialista. Para representar o conhecimento dentro do computador, é mais conveniente usar regras: +Este diagrama é chamado de **árvore AND-OR**, e é uma representação gráfica de um conjunto de regras de produção. Desenhar uma árvore é útil no início da extração de conhecimento do especialista. Para representar o conhecimento dentro do computador, é mais conveniente usar regras: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Você pode notar que cada condição no lado esquerdo da regra e a ação são essencialmente triplas objeto-atributo-valor (OAV). **Memória de trabalho** contém o conjunto de triplas OAV que correspondem ao problema que está sendo resolvido atualmente. Um **motor de regras** procura regras para as quais uma condição é satisfeita e as aplica, adicionando outra tripla à memória de trabalho. +Você pode notar que cada condição no lado esquerdo da regra e a ação são essencialmente triplas objeto-atributo-valor (OAV). **Memória de trabalho** contém o conjunto de triplas OAV que correspondem ao problema que está sendo resolvido atualmente. Um **motor de regras** procura regras cujas condições sejam satisfeitas e as aplica, adicionando outra tripla à memória de trabalho. -> ✅ Escreva sua própria árvore AND-OR sobre um tópico que você goste! +> ✅ Crie sua própria árvore AND-OR sobre um tópico que você goste! -### Inferência Direta vs. Inferência Reversa +### Inferência Progressiva vs. Inferência Regressiva -O processo descrito acima é chamado de **inferência direta**. Ele começa com alguns dados iniciais sobre o problema disponíveis na memória de trabalho e, em seguida, executa o seguinte loop de raciocínio: +O processo descrito acima é chamado de **inferência progressiva**. Ele começa com alguns dados iniciais sobre o problema disponíveis na memória de trabalho e, em seguida, executa o seguinte ciclo de raciocínio: 1. Se o atributo alvo estiver presente na memória de trabalho - pare e forneça o resultado -2. Procure todas as regras cuja condição esteja atualmente satisfeita - obtenha o **conjunto de conflitos** de regras. -3. Realize a **resolução de conflitos** - selecione uma regra que será executada neste passo. Pode haver diferentes estratégias de resolução de conflitos: - - Selecione a primeira regra aplicável na base de conhecimento - - Selecione uma regra aleatória - - Selecione uma regra *mais específica*, ou seja, aquela que atende ao maior número de condições no "lado esquerdo" (LHS) -4. Aplique a regra selecionada e insira um novo pedaço de conhecimento no estado do problema -5. Repita a partir do passo 1. +2. Procure todas as regras cujas condições sejam atualmente satisfeitas - obtenha o **conjunto de conflito** de regras. +3. Realize a **resolução de conflito** - selecione uma regra que será executada nesta etapa. Podem existir diferentes estratégias de resolução de conflito: + - Selecionar a primeira regra aplicável na base de conhecimento + - Selecionar uma regra aleatória + - Selecionar uma regra *mais específica*, ou seja, aquela que atende ao maior número de condições no "lado esquerdo" (LHS) +4. Aplicar a regra selecionada e inserir um novo pedaço de conhecimento no estado do problema +5. Repetir a partir do passo 1. -No entanto, em alguns casos, podemos querer começar com um conhecimento vazio sobre o problema e fazer perguntas que nos ajudem a chegar à conclusão. Por exemplo, ao fazer um diagnóstico médico, geralmente não realizamos todas as análises médicas antecipadamente antes de começar a diagnosticar o paciente. Preferimos realizar análises quando uma decisão precisa ser tomada. +No entanto, em alguns casos, podemos querer começar com um conhecimento vazio sobre o problema e fazer perguntas que nos ajudarão a chegar à conclusão. Por exemplo, ao fazer um diagnóstico médico, geralmente não realizamos todas as análises médicas antecipadamente antes de começar a diagnosticar o paciente. Preferimos realizar análises quando uma decisão precisa ser tomada. -Esse processo pode ser modelado usando **inferência reversa**. Ele é impulsionado pelo **objetivo** - o valor do atributo que estamos tentando encontrar: +Este processo pode ser modelado usando **inferência regressiva**. Ele é orientado pelo **objetivo** - o valor do atributo que estamos tentando encontrar: -1. Selecione todas as regras que podem nos dar o valor de um objetivo (ou seja, com o objetivo no RHS ("lado direito")) - um conjunto de conflitos -1. Se não houver regras para esse atributo, ou se houver uma regra dizendo que devemos perguntar o valor ao usuário - pergunte, caso contrário: -1. Use a estratégia de resolução de conflitos para selecionar uma regra que usaremos como *hipótese* - tentaremos prová-la -1. Repetidamente repita o processo para todos os atributos no LHS da regra, tentando prová-los como objetivos +1. Selecionar todas as regras que podem nos dar o valor de um objetivo (ou seja, com o objetivo no RHS ("lado direito")) - um conjunto de conflito +1. Se não houver regras para este atributo, ou houver uma regra dizendo que devemos perguntar o valor ao usuário - pergunte, caso contrário: +1. Use a estratégia de resolução de conflito para selecionar uma regra que usaremos como *hipótese* - tentaremos prová-la +1. Repetir recursivamente o processo para todos os atributos no LHS da regra, tentando prová-los como objetivos 1. Se em algum momento o processo falhar - use outra regra no passo 3. -> ✅ Em quais situações a inferência direta é mais apropriada? E a inferência reversa? +> ✅ Em quais situações a inferência progressiva é mais apropriada? E a inferência regressiva? ### Implementando Sistemas Especialistas Os sistemas especialistas podem ser implementados usando diferentes ferramentas: -* Programando-os diretamente em alguma linguagem de programação de alto nível. Esta não é a melhor ideia, pois a principal vantagem de um sistema baseado em conhecimento é que o conhecimento é separado da inferência, e potencialmente um especialista em domínio de problema deve ser capaz de escrever regras sem entender os detalhes do processo de inferência. -* Usando **shell de sistemas especialistas**, ou seja, um sistema especificamente projetado para ser populado com conhecimento usando alguma linguagem de representação de conhecimento. +* Programá-los diretamente em alguma linguagem de programação de alto nível. Esta não é a melhor ideia, porque a principal vantagem de um sistema baseado em conhecimento é que o conhecimento é separado da inferência, e potencialmente um especialista no domínio do problema deve ser capaz de escrever regras sem entender os detalhes do processo de inferência. +* Usar um **shell de sistemas especialistas**, ou seja, um sistema especificamente projetado para ser preenchido com conhecimento usando alguma linguagem de representação de conhecimento. -## ✍️ Exercício: Inferência Animal - -Veja [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para um exemplo de implementação de sistema especialista de inferência direta e reversa. - -> **Nota**: Este exemplo é bastante simples e apenas dá a ideia de como um sistema especialista se parece. Uma vez que você comece a criar tal sistema, você só notará um comportamento *inteligente* a partir do momento em que atingir um certo número de regras, em torno de 200+. Em algum ponto, as regras se tornam complexas demais para manter todas elas em mente, e nesse momento você pode começar a se perguntar por que um sistema toma certas decisões. No entanto, a característica importante dos sistemas baseados em conhecimento é que você pode sempre *explicar* exatamente como qualquer uma das decisões foi tomada. +## ✍️ Exercício: Inferência de Animais +Veja [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para um exemplo de implementação de sistema especialista de inferência progressiva e regressiva. +> **Nota**: Este exemplo é bastante simples e apenas dá uma ideia de como é um sistema especialista. Quando começar a criar um sistema deste tipo, só irá notar algum comportamento *inteligente* quando atingir um certo número de regras, cerca de 200 ou mais. A partir de determinado ponto, as regras tornam-se demasiado complexas para manter todas na memória, e é neste momento que pode começar a questionar-se sobre o motivo de o sistema tomar certas decisões. No entanto, uma característica importante dos sistemas baseados em conhecimento é que é sempre possível *explicar* exatamente como qualquer decisão foi tomada. ## Ontologias e a Web Semântica -No final do século 20, houve uma iniciativa para usar a representação do conhecimento para anotar recursos da Internet, de modo que fosse possível encontrar recursos que corresponderiam a consultas muito específicas. Esse movimento foi chamado de **Web Semântica**, e baseou-se em vários conceitos: +No final do século XX, surgiu uma iniciativa para usar a representação de conhecimento para anotar recursos da Internet, de forma a possibilitar a localização de recursos que correspondam a consultas muito específicas. Este movimento foi chamado de **Web Semântica**, e baseava-se em vários conceitos: -- Uma representação de conhecimento especial baseada em **[lógicas descritivas](https://en.wikipedia.org/wiki/Description_logic)** (DL). É semelhante à representação de conhecimento em quadros, porque constrói uma hierarquia de objetos com propriedades, mas possui semântica lógica formal e inferência. Há uma família inteira de DLs que equilibram expressividade e complexidade algorítmica de inferência. -- Representação de conhecimento distribuído, onde todos os conceitos são representados por um identificador URI global, tornando possível criar hierarquias de conhecimento que se estendem pela internet. +- Uma representação de conhecimento especial baseada em **[lógicas descritivas](https://en.wikipedia.org/wiki/Description_logic)** (DL). É semelhante à representação de conhecimento em quadros, pois constrói uma hierarquia de objetos com propriedades, mas possui semântica lógica formal e inferência. Existe toda uma família de DLs que equilibram entre expressividade e a complexidade algorítmica da inferência. +- Representação de conhecimento distribuída, onde todos os conceitos são representados por um identificador URI global, tornando possível criar hierarquias de conhecimento que abrangem a internet. - Uma família de linguagens baseadas em XML para descrição de conhecimento: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). Um conceito central na Web Semântica é o conceito de **Ontologia**. Refere-se a uma especificação explícita de um domínio de problema usando alguma representação formal de conhecimento. A ontologia mais simples pode ser apenas uma hierarquia de objetos em um domínio de problema, mas ontologias mais complexas incluirão regras que podem ser usadas para inferência. -Na web semântica, todas as representações são baseadas em triplas. Cada objeto e cada relação são identificados de forma única pelo URI. Por exemplo, se quisermos afirmar o fato de que este Currículo de IA foi desenvolvido por Dmitry Soshnikov em 1º de janeiro de 2022 - aqui estão as triplas que podemos usar: +Na Web Semântica, todas as representações são baseadas em triplos. Cada objeto e cada relação são identificados de forma única pelo URI. Por exemplo, se quisermos declarar o fato de que este Currículo de IA foi desenvolvido por Dmitry Soshnikov em 1 de janeiro de 2022, aqui estão os triplos que podemos usar: @@ -173,17 +178,17 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Aqui `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` são alguns URIs bem conhecidos e universalmente aceitos para expressar os conceitos de *criador* e *data de criação*. +> ✅ Aqui `http://www.example.com/terms/creation-date` e `http://purl.org/dc/elements/1.1/creator` são alguns URIs bem conhecidos e universalmente aceites para expressar os conceitos de *criador* e *data de criação*. -Em um caso mais complexo, se quisermos definir uma lista de criadores, podemos usar algumas estruturas de dados definidas em RDF. +Num caso mais complexo, se quisermos definir uma lista de criadores, podemos usar algumas estruturas de dados definidas em RDF. > Diagramas acima por [Dmitry Soshnikov](http://soshnikov.com) -O progresso na construção da Web Semântica foi de certa forma desacelerado pelo sucesso dos motores de busca e técnicas de processamento de linguagem natural, que permitem extrair dados estruturados de texto. No entanto, em algumas áreas, ainda existem esforços significativos para manter ontologias e bases de conhecimento. Alguns projetos que valem a pena notar: +O progresso na construção da Web Semântica foi de certa forma desacelerado pelo sucesso dos motores de busca e das técnicas de processamento de linguagem natural, que permitem extrair dados estruturados de texto. No entanto, em algumas áreas ainda existem esforços significativos para manter ontologias e bases de conhecimento. Alguns projetos que merecem destaque: -* [WikiData](https://wikidata.org/) é uma coleção de bases de conhecimento legíveis por máquina associadas ao Wikipedia. A maior parte dos dados é extraída das *InfoBoxes* do Wikipedia, pedaços de conteúdo estruturado dentro das páginas do Wikipedia. Você pode [consultar](https://query.wikidata.org/) wikidata em SPARQL, uma linguagem de consulta especial para a Web Semântica. Aqui está uma consulta de exemplo que exibe as cores de olhos mais populares entre os humanos: +* [WikiData](https://wikidata.org/) é uma coleção de bases de conhecimento legíveis por máquinas associadas à Wikipedia. A maior parte dos dados é extraída das *InfoBoxes* da Wikipedia, pedaços de conteúdo estruturado dentro das páginas da Wikipedia. Pode [consultar](https://query.wikidata.org/) o WikiData em SPARQL, uma linguagem de consulta especial para a Web Semântica. Aqui está um exemplo de consulta que exibe as cores de olhos mais populares entre os humanos: ```sparql #defaultView:BubbleChart @@ -199,23 +204,45 @@ GROUP BY ?eyeColorLabel * [DBpedia](https://www.dbpedia.org/) é outro esforço semelhante ao WikiData. -> ✅ Se você quiser experimentar a construção de suas próprias ontologias, ou abrir ontologias existentes, há um ótimo editor visual de ontologias chamado [Protégé](https://protege.stanford.edu/). Baixe-o ou use-o online. +> ✅ Se quiser experimentar construir as suas próprias ontologias ou abrir ontologias existentes, existe um excelente editor visual de ontologias chamado [Protégé](https://protege.stanford.edu/). Faça o download ou use-o online. -*Editor Web Protégé aberto com a ontologia da Família Romanov. Captura de tela por Dmitry Soshnikov* +*Editor Web Protégé aberto com a ontologia da Família Romanov. Captura de ecrã por Dmitry Soshnikov* ## ✍️ Exercício: Uma Ontologia Familiar -Veja [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para um exemplo de uso de técnicas da Web Semântica para raciocinar sobre relacionamentos familiares. Nós pegaremos uma árvore genealógica representada no formato GEDCOM comum e uma ontologia de relacionamentos familiares e construiremos um gráfico de todos os relacionamentos familiares para um conjunto dado de indivíduos. +Consulte [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para um exemplo de como usar técnicas da Web Semântica para raciocinar sobre relações familiares. Vamos pegar numa árvore genealógica representada no formato comum GEDCOM e numa ontologia de relações familiares e construir um grafo de todas as relações familiares para um conjunto dado de indivíduos. -## Grafo de Conceitos da Microsoft +## Microsoft Concept Graph -Na maioria dos casos, as ontologias são cuidadosamente criadas à mão. No entanto, também é possível **extrair** ontologias de dados não estruturados, por exemplo, de textos em linguagem natural. +Na maioria dos casos, as ontologias são cuidadosamente criadas manualmente. No entanto, também é possível **extrair** ontologias de dados não estruturados, por exemplo, de textos em linguagem natural. -Uma dessas tentativas foi feita pela Microsoft Research, resultando no [Grafo de Conceitos da Microsoft](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). +Uma dessas tentativas foi realizada pela Microsoft Research, resultando no [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). -É uma grande coleção de entidades agrupadas usando a relação de herança `is-a`. Permite responder a perguntas como "O que é a Microsoft?" - a resposta sendo algo como "uma empresa com probabilidade de 0,87 e uma marca +É uma grande coleção de entidades agrupadas usando a relação de herança `is-a`. Permite responder a perguntas como "O que é a Microsoft?" - a resposta seria algo como "uma empresa com probabilidade de 0,87, e uma marca com probabilidade de 0,75". -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas resultantes do uso desta tradução. \ No newline at end of file +O Graph está disponível como API REST ou como um grande ficheiro de texto descarregável que lista todos os pares de entidades. + +## ✍️ Exercício: Um Grafo de Conceitos + +Experimente o notebook [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) para ver como podemos usar o Microsoft Concept Graph para agrupar artigos de notícias em várias categorias. + +## Conclusão + +Hoje em dia, a IA é frequentemente considerada sinónimo de *Machine Learning* ou *Redes Neurais*. No entanto, um ser humano também exibe raciocínio explícito, algo que atualmente não é tratado pelas redes neurais. Em projetos do mundo real, o raciocínio explícito ainda é usado para realizar tarefas que exigem explicações ou a capacidade de modificar o comportamento do sistema de forma controlada. + +## 🚀 Desafio + +No notebook da Ontologia Familiar associado a esta lição, há uma oportunidade de experimentar outras relações familiares. Tente descobrir novas conexões entre pessoas na árvore genealógica. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Revisão e Autoestudo + +Pesquise na internet para descobrir áreas onde os humanos tentaram quantificar e codificar conhecimento. Dê uma olhada na Taxonomia de Bloom e volte na história para aprender como os humanos tentaram entender o mundo. Explore o trabalho de Lineu para criar uma taxonomia de organismos e observe como Dmitri Mendeleev criou uma forma de descrever e agrupar elementos químicos. Que outros exemplos interessantes consegue encontrar? + +**Tarefa**: [Construa uma Ontologia](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/2-Symbolic/assignment.md b/translations/pt/lessons/2-Symbolic/assignment.md index 4aaa407f..1d279afa 100644 --- a/translations/pt/lessons/2-Symbolic/assignment.md +++ b/translations/pt/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ + # Construir uma Ontologia -Construir uma base de conhecimento é tudo sobre categorizar um modelo que representa fatos sobre um tópico. Escolha um tópico - como uma pessoa, um lugar ou uma coisa - e então construa um modelo desse tópico. Utilize algumas das técnicas e estratégias de construção de modelos descritas nesta lição. Um exemplo seria criar uma ontologia de uma sala de estar com móveis, luzes e assim por diante. Como a sala de estar difere da cozinha? Do banheiro? Como você sabe que é uma sala de estar e não uma sala de jantar? Use [Protégé](https://protege.stanford.edu/) para construir sua ontologia. +Construir uma base de conhecimento consiste em categorizar um modelo que representa factos sobre um tema. Escolha um tema - como uma pessoa, um lugar ou um objeto - e, em seguida, construa um modelo desse tema. Utilize algumas das técnicas e estratégias de construção de modelos descritas nesta lição. Um exemplo seria criar uma ontologia de uma sala de estar com móveis, luzes, e assim por diante. Como é que a sala de estar se diferencia da cozinha? Da casa de banho? Como sabe que é uma sala de estar e não uma sala de jantar? Use o [Protégé](https://protege.stanford.edu/) para construir a sua ontologia. -**Aviso**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md index bb2db107..1c06ecd6 100644 --- a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,52 +1,61 @@ -# Introdução às Redes Neurais: Perceptron + +# Introdução às Redes Neuronais: Perceptron -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Uma das primeiras tentativas de implementar algo semelhante a uma rede neural moderna foi feita por Frank Rosenblatt, do Cornell Aeronautical Laboratory, em 1957. Foi uma implementação de hardware chamada "Mark-1", projetada para reconhecer figuras geométricas primitivas, como triângulos, quadrados e círculos. +Uma das primeiras tentativas de implementar algo semelhante a uma rede neuronal moderna foi realizada por Frank Rosenblatt, do Laboratório Aeronáutico de Cornell, em 1957. Foi uma implementação em hardware chamada "Mark-1", projetada para reconhecer figuras geométricas primitivas, como triângulos, quadrados e círculos. | | | |--------------|-----------| -|Frank Rosenblatt | The Mark 1 Perceptron| +|Frank Rosenblatt | O Perceptron Mark 1| > Imagens [da Wikipedia](https://en.wikipedia.org/wiki/Perceptron) -Uma imagem de entrada era representada por uma matriz de fotocélulas de 20x20, então a rede neural tinha 400 entradas e uma saída binária. Uma rede simples continha um neurônio, também chamado de **unidade lógica de limiar**. Os pesos da rede neural agiam como potenciômetros que exigiam ajuste manual durante a fase de treinamento. +Uma imagem de entrada era representada por uma matriz de fotocélulas de 20x20, então a rede neuronal tinha 400 entradas e uma saída binária. Uma rede simples continha um único neurónio, também chamado de **unidade lógica de limiar**. Os pesos da rede neuronal funcionavam como potenciômetros que precisavam ser ajustados manualmente durante a fase de treino. -> ✅ Um potenciômetro é um dispositivo que permite ao usuário ajustar a resistência de um circuito. +> ✅ Um potenciômetro é um dispositivo que permite ao utilizador ajustar a resistência de um circuito. -> O New York Times escreveu sobre o perceptron na época: *o embrião de um computador eletrônico que [a Marinha] espera que possa andar, falar, ver, escrever, se reproduzir e estar consciente de sua existência.* +> O New York Times escreveu sobre o perceptron na época: *o embrião de um computador eletrónico que [a Marinha] espera que seja capaz de andar, falar, ver, escrever, reproduzir-se e estar consciente da sua existência.* -## Modelo Perceptron +## Modelo de Perceptron -Suponha que temos N características em nosso modelo, nesse caso, o vetor de entrada seria um vetor de tamanho N. Um perceptron é um modelo de **classificação binária**, ou seja, pode distinguir entre duas classes de dados de entrada. Vamos supor que, para cada vetor de entrada x, a saída do nosso perceptron seria +1 ou -1, dependendo da classe. A saída será calculada usando a fórmula: +Suponha que temos N características no nosso modelo, caso em que o vetor de entrada seria um vetor de tamanho N. Um perceptron é um modelo de **classificação binária**, ou seja, consegue distinguir entre duas classes de dados de entrada. Vamos assumir que, para cada vetor de entrada x, a saída do nosso perceptron será +1 ou -1, dependendo da classe. A saída será calculada usando a fórmula: y(x) = f(wTx) -onde f é uma função de ativação em degrau +onde f é uma função de ativação em degrau. -## Treinando o Perceptron +## Treinar o Perceptron -Para treinar um perceptron, precisamos encontrar um vetor de pesos w que classifique a maioria dos valores corretamente, ou seja, resulte no menor **erro**. Este erro E é definido pelo **critério do perceptron** da seguinte maneira: +Para treinar um perceptron, precisamos encontrar um vetor de pesos w que classifique a maioria dos valores corretamente, ou seja, que resulte no menor **erro**. Este erro E é definido pelo **critério do perceptron** da seguinte forma: E(w) = -∑wTxiti onde: -* a soma é feita sobre aqueles pontos de dados de treinamento i que resultam em classificação errada -* xi é o dado de entrada, e ti é -1 ou +1 para exemplos negativos e positivos, respectivamente. +* a soma é feita sobre os pontos de dados de treino i que resultam numa classificação incorreta +* xi é o dado de entrada, e ti é -1 ou +1 para exemplos negativos e positivos, respetivamente. -Este critério é considerado uma função dos pesos w, e precisamos minimizá-lo. Muitas vezes, um método chamado **descida do gradiente** é utilizado, no qual começamos com alguns pesos iniciais w(0), e então, a cada passo, atualizamos os pesos de acordo com a fórmula: +Este critério é considerado como uma função dos pesos w, e precisamos minimizá-lo. Frequentemente, utiliza-se um método chamado **descida do gradiente**, no qual começamos com alguns pesos iniciais w(0), e depois, a cada passo, atualizamos os pesos de acordo com a fórmula: w(t+1) = w(t) - η∇E(w) -Aqui, η é a chamada **taxa de aprendizado**, e ∇E(w) denota o **gradiente** de E. Depois de calcular o gradiente, terminamos com +Aqui, η é a chamada **taxa de aprendizagem**, e ∇E(w) denota o **gradiente** de E. Após calcular o gradiente, obtemos: w(t+1) = w(t) + ∑ηxiti -O algoritmo em Python se parece com isso: +O algoritmo em Python é assim: ```python def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): @@ -70,26 +79,26 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): ## Conclusão -Nesta lição, você aprendeu sobre um perceptron, que é um modelo de classificação binária, e como treiná-lo usando um vetor de pesos. +Nesta lição, aprendeste sobre o perceptron, que é um modelo de classificação binária, e como treiná-lo utilizando um vetor de pesos. ## 🚀 Desafio -Se você gostaria de tentar construir seu próprio perceptron, experimente [este laboratório no Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que usa o [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). +Se quiseres tentar construir o teu próprio perceptron, experimenta [este laboratório no Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), que utiliza o [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Revisão & Autoestudo +## Revisão e Estudo Individual -Para ver como podemos usar o perceptron para resolver um problema simples, bem como problemas da vida real, e para continuar aprendendo - vá para o caderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). +Para ver como podemos usar o perceptron para resolver um problema simples, bem como problemas da vida real, e para continuar a aprender, consulta o notebook [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). -Aqui está um [artigo interessante sobre perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) também. +Aqui está um [artigo interessante sobre perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). ## [Tarefa](lab/README.md) -Nesta lição, implementamos um perceptron para a tarefa de classificação binária e o usamos para classificar entre dois dígitos manuscritos. Neste laboratório, você é solicitado a resolver o problema de classificação de dígitos completamente, ou seja, determinar qual dígito é mais provável que corresponda a uma determinada imagem. +Nesta lição, implementámos um perceptron para uma tarefa de classificação binária e utilizámo-lo para classificar entre dois dígitos manuscritos. Neste laboratório, és convidado a resolver o problema de classificação de dígitos por completo, ou seja, determinar qual dígito é mais provável de corresponder a uma imagem dada. * [Instruções](lab/README.md) -* [Caderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index 6750efe9..23c664d9 100644 --- a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ + # Classificação Multi-Classe com Perceptron -Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Usando o código que desenvolvemos nesta lição para classificação binária de dígitos manuscritos MNIST, crie um classificador multi-classe que seja capaz de reconhecer qualquer dígito. Calcule a precisão da classificação nos conjuntos de dados de treino e teste, e imprima a matriz de confusão. +Utilizando o código que desenvolvemos nesta lição para classificação binária de dígitos manuscritos do MNIST, crie um classificador multi-classe que seja capaz de reconhecer qualquer dígito. Calcule a precisão da classificação nos conjuntos de treino e teste, e apresente a matriz de confusão. ## Dicas -1. Para cada dígito, crie um conjunto de dados para o classificador binário de "este dígito vs. todos os outros dígitos" -1. Treine 10 perceptrons diferentes para classificação binária (um para cada dígito) -1. Defina uma função que irá classificar um dígito de entrada +1. Para cada dígito, crie um conjunto de dados para o classificador binário de "este dígito vs. todos os outros dígitos". +1. Treine 10 perceptrons diferentes para classificação binária (um para cada dígito). +1. Defina uma função que classifique um dígito de entrada. -> **Dica**: Se combinarmos os pesos de todos os 10 perceptrons em uma única matriz, devemos ser capazes de aplicar todos os 10 perceptrons aos dígitos de entrada por meio de uma multiplicação de matriz. O dígito mais provável pode então ser encontrado apenas aplicando a operação `argmax` na saída. +> **Dica**: Se combinarmos os pesos de todos os 10 perceptrons numa única matriz, deveremos ser capazes de aplicar todos os 10 perceptrons aos dígitos de entrada através de uma única multiplicação de matrizes. O dígito mais provável pode então ser encontrado simplesmente aplicando a operação `argmax` ao resultado. ## Notebook Inicial -Comece o laboratório abrindo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +Comece o trabalho prático abrindo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Aviso Legal**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md index 64ccec40..0407e203 100644 --- a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Introdução às Redes Neurais. Perceptron Multicamadas + +# Introdução às Redes Neuronais. Perceptrão Multicamadas -Na seção anterior, você aprendeu sobre o modelo de rede neural mais simples - o perceptron de uma camada, um modelo de classificação linear de duas classes. +Na secção anterior, aprendeste sobre o modelo mais simples de rede neuronal - o perceptrão de uma camada, um modelo linear de classificação de duas classes. -Nesta seção, vamos expandir esse modelo para um framework mais flexível, permitindo que possamos: +Nesta secção, iremos expandir este modelo para um framework mais flexível, permitindo-nos: -* realizar **classificação multi-classe** além da classificação de duas classes -* resolver **problemas de regressão** além da classificação +* realizar **classificação multiclasse** além de classificação de duas classes +* resolver **problemas de regressão** além de classificação * separar classes que não são linearmente separáveis -Também desenvolveremos nosso próprio framework modular em Python que nos permitirá construir diferentes arquiteturas de redes neurais. +Também iremos desenvolver o nosso próprio framework modular em Python que nos permitirá construir diferentes arquiteturas de redes neuronais. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Formalização do Aprendizado de Máquina +## Formalização de Aprendizagem Automática -Vamos começar formalizando o problema do Aprendizado de Máquina. Suponha que temos um conjunto de dados de treinamento **X** com rótulos **Y**, e precisamos construir um modelo *f* que fará as previsões mais precisas. A qualidade das previsões é medida pela **Função de Perda** ℒ. As seguintes funções de perda são frequentemente utilizadas: +Vamos começar por formalizar o problema de Aprendizagem Automática. Suponhamos que temos um conjunto de dados de treino **X** com etiquetas **Y**, e precisamos construir um modelo *f* que faça previsões o mais precisas possível. A qualidade das previsões é medida pela **função de perda** ℒ. As seguintes funções de perda são frequentemente utilizadas: -* Para problemas de regressão, quando precisamos prever um número, podemos usar o **erro absoluto** ∑i|f(x(i))-y(i)|, ou o **erro quadrático** ∑i(f(x(i))-y(i))2 -* Para classificação, usamos a **perda 0-1** (que é essencialmente a mesma que a **acurácia** do modelo), ou a **perda logística**. +* Para problemas de regressão, quando precisamos prever um número, podemos usar **erro absoluto** ∑i|f(x(i))-y(i)|, ou **erro quadrático** ∑i(f(x(i))-y(i))2 +* Para classificação, usamos **perda 0-1** (que é essencialmente o mesmo que **precisão** do modelo), ou **perda logística**. -Para o perceptron de uma camada, a função *f* foi definida como uma função linear *f(x)=wx+b* (aqui *w* é a matriz de pesos, *x* é o vetor de características de entrada, e *b* é o vetor de viés). Para diferentes arquiteturas de redes neurais, essa função pode assumir uma forma mais complexa. +Para o perceptrão de uma camada, a função *f* foi definida como uma função linear *f(x)=wx+b* (aqui *w* é a matriz de pesos, *x* é o vetor de características de entrada, e *b* é o vetor de bias). Para diferentes arquiteturas de redes neuronais, esta função pode assumir uma forma mais complexa. -> No caso da classificação, muitas vezes é desejável obter probabilidades das classes correspondentes como saída da rede. Para converter números arbitrários em probabilidades (por exemplo, para normalizar a saída), frequentemente usamos a função **softmax** σ, e a função *f* se torna *f(x)=σ(wx+b)* +> No caso de classificação, é frequentemente desejável obter probabilidades das classes correspondentes como saída da rede. Para converter números arbitrários em probabilidades (por exemplo, para normalizar a saída), usamos frequentemente a função **softmax** σ, e a função *f* torna-se *f(x)=σ(wx+b)* -Na definição de *f* acima, *w* e *b* são chamados de **parâmetros** θ=⟨*w,b*⟩. Dado o conjunto de dados ⟨**X**,**Y**⟩, podemos calcular um erro geral em todo o conjunto de dados como uma função dos parâmetros θ. +Na definição de *f* acima, *w* e *b* são chamados de **parâmetros** θ=⟨*w,b*⟩. Dado o conjunto de dados ⟨**X**,**Y**⟩, podemos calcular o erro geral em todo o conjunto de dados como uma função dos parâmetros θ. -> ✅ **O objetivo do treinamento da rede neural é minimizar o erro variando os parâmetros θ** +> ✅ **O objetivo do treino de redes neuronais é minimizar o erro variando os parâmetros θ** ## Otimização por Gradiente Descendente -Há um método bem conhecido de otimização de funções chamado **gradiente descendente**. A ideia é que podemos calcular uma derivada (no caso multi-dimensional chamada **gradiente**) da função de perda em relação aos parâmetros, e variar os parâmetros de tal forma que o erro diminua. Isso pode ser formalizado da seguinte maneira: +Existe um método bem conhecido de otimização de funções chamado **gradiente descendente**. A ideia é que podemos calcular uma derivada (no caso multidimensional chamada de **gradiente**) da função de perda em relação aos parâmetros, e variar os parâmetros de forma que o erro diminua. Isto pode ser formalizado da seguinte forma: -* Inicialize os parâmetros com alguns valores aleatórios w(0), b(0) -* Repita o seguinte passo várias vezes: +* Inicializar os parâmetros com alguns valores aleatórios w(0), b(0) +* Repetir o seguinte passo várias vezes: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -Durante o treinamento, os passos de otimização devem ser calculados considerando todo o conjunto de dados (lembre-se que a perda é calculada como uma soma em todas as amostras de treinamento). No entanto, na prática, pegamos pequenas porções do conjunto de dados chamadas **minibatches**, e calculamos gradientes com base em um subconjunto de dados. Como o subconjunto é escolhido aleatoriamente a cada vez, esse método é chamado de **gradiente descendente estocástico** (SGD). +Durante o treino, os passos de otimização devem ser calculados considerando todo o conjunto de dados (lembra-te que a perda é calculada como uma soma de todas as amostras de treino). No entanto, na prática, usamos pequenas porções do conjunto de dados chamadas **minibatches**, e calculamos os gradientes com base num subconjunto de dados. Como o subconjunto é escolhido aleatoriamente a cada vez, este método é chamado de **gradiente descendente estocástico** (SGD). -## Perceptrons Multicamadas e Retropropagação +## Perceptrões Multicamadas e Retropropagação -A rede de uma camada, como vimos acima, é capaz de classificar classes linearmente separáveis. Para construir um modelo mais rico, podemos combinar várias camadas da rede. Matematicamente, isso significaria que a função *f* teria uma forma mais complexa e seria computada em várias etapas: +Uma rede de uma camada, como vimos acima, é capaz de classificar classes linearmente separáveis. Para construir um modelo mais rico, podemos combinar várias camadas da rede. Matematicamente, isso significaria que a função *f* teria uma forma mais complexa e seria calculada em vários passos: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) Aqui, α é uma **função de ativação não linear**, σ é uma função softmax, e os parâmetros θ=<*w1,b1,w2,b2*>. -O algoritmo de gradiente descendente permaneceria o mesmo, mas seria mais difícil calcular os gradientes. Dada a regra da diferenciação em cadeia, podemos calcular as derivadas como: +O algoritmo de gradiente descendente permaneceria o mesmo, mas seria mais difícil calcular os gradientes. Dado o princípio da regra da cadeia de diferenciação, podemos calcular as derivadas como: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ A regra da diferenciação em cadeia é usada para calcular as derivadas da função de perda em relação aos parâmetros. +> ✅ A regra da cadeia de diferenciação é usada para calcular as derivadas da função de perda em relação aos parâmetros. -Note que a parte mais à esquerda de todas essas expressões é a mesma, e assim podemos efetivamente calcular as derivadas começando pela função de perda e indo "para trás" através do gráfico computacional. Assim, o método de treinamento de um perceptron multicamadas é chamado de **retropropagação**, ou 'backprop'. +Nota que a parte mais à esquerda de todas essas expressões é a mesma, e assim podemos calcular as derivadas de forma eficiente começando pela função de perda e indo "para trás" através do gráfico computacional. Assim, o método de treino de um perceptrão multicamadas é chamado de **retropropagação**, ou 'backprop'. -gráfico de computação +compute graph > TODO: citação da imagem -> ✅ Vamos abordar a retropropagação com muito mais detalhes em nosso exemplo de notebook. +> ✅ Vamos abordar a retropropagação com muito mais detalhe no nosso exemplo no notebook. ## Conclusão -Nesta lição, construímos nossa própria biblioteca de rede neural e a utilizamos para uma tarefa simples de classificação bidimensional. +Nesta lição, construímos a nossa própria biblioteca de redes neuronais e utilizámo-la para uma tarefa simples de classificação bidimensional. ## 🚀 Desafio -No notebook acompanhante, você implementará seu próprio framework para construir e treinar perceptrons multicamadas. Você poderá ver em detalhes como as redes neurais modernas operam. +No notebook que acompanha, vais implementar o teu próprio framework para construir e treinar perceptrões multicamadas. Vais poder ver em detalhe como funcionam as redes neuronais modernas. -Prossiga para o notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) e trabalhe nele. +Segue para o notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) e trabalha nele. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Revisão e Autoestudo +## Revisão & Estudo Autónomo -A retropropagação é um algoritmo comum usado em IA e ML, vale a pena estudar [com mais detalhes](https://wikipedia.org/wiki/Backpropagation) +A retropropagação é um algoritmo comum usado em IA e ML, vale a pena estudá-lo [em mais detalhe](https://wikipedia.org/wiki/Backpropagation) ## [Tarefa](lab/README.md) -Neste laboratório, você deve usar o framework que construiu nesta lição para resolver a classificação de dígitos manuscritos do MNIST. +Neste laboratório, és convidado a usar o framework que construíste nesta lição para resolver a classificação de dígitos manuscritos do MNIST. * [Instruções](lab/README.md) * [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index f32fb33a..0fa2310a 100644 --- a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# Classificação MNIST com Nossa Própria Estrutura + +# Classificação MNIST com a Nossa Própria Framework -Tarefa do [Currículo de AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Resolva o problema de classificação de dígitos manuscritos MNIST usando perceptrons de 1, 2 e 3 camadas. Utilize a estrutura de rede neural que desenvolvemos na aula. +Resolver o problema de classificação de dígitos manuscritos do MNIST utilizando perceptrons com 1, 2 e 3 camadas. Use a framework de rede neural que desenvolvemos na aula. -## Iniciando o Notebook +## Notebook Inicial -Comece o laboratório abrindo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +Inicie o trabalho prático abrindo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) ## Perguntas -Como resultado deste laboratório, tente responder às seguintes perguntas: +Como resultado deste trabalho prático, tente responder às seguintes perguntas: - A função de ativação entre as camadas afeta o desempenho da rede? -- Precisamos de uma rede de 2 ou 3 camadas para esta tarefa? -- Você enfrentou algum problema ao treinar a rede? Especialmente à medida que o número de camadas aumentou. -- Como os pesos da rede se comportam durante o treinamento? Você pode plotar o valor absoluto máximo dos pesos em relação à época para entender a relação. +- Precisamos de uma rede com 2 ou 3 camadas para esta tarefa? +- Teve algum problema ao treinar a rede? Especialmente à medida que o número de camadas aumentou. +- Como os pesos da rede se comportam durante o treino? Pode representar graficamente o valor absoluto máximo dos pesos em relação às épocas para entender a relação. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md index 494e36ca..7d41b132 100644 --- a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,123 +1,132 @@ -# Estruturas de Redes Neurais + +# Frameworks de Redes Neuronais -Como já aprendemos, para treinar redes neurais de forma eficiente, precisamos fazer duas coisas: +Como já aprendemos, para treinar redes neuronais de forma eficiente, precisamos fazer duas coisas: -* Operar em tensores, por exemplo, multiplicar, adicionar e calcular algumas funções como sigmoid ou softmax -* Calcular gradientes de todas as expressões, a fim de realizar a otimização por descida de gradiente +* Operar com tensores, por exemplo, multiplicar, somar e calcular algumas funções como sigmoid ou softmax. +* Calcular os gradientes de todas as expressões, para realizar a otimização por descida de gradiente. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Enquanto a biblioteca `numpy` pode fazer a primeira parte, precisamos de algum mecanismo para calcular gradientes. Em [nossa estrutura](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, uma estrutura deveria nos dar a oportunidade de calcular gradientes de *qualquer expressão* que pudermos definir. +Embora a biblioteca `numpy` consiga realizar a primeira parte, precisamos de algum mecanismo para calcular gradientes. No [nosso framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, um framework deveria nos permitir calcular os gradientes de *qualquer expressão* que possamos definir. -Outra coisa importante é poder realizar cálculos em GPU, ou em qualquer outra unidade de computação especializada, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treinamento de redes neurais profundas requer *muitos* cálculos, e poder paralelizar esses cálculos em GPUs é muito importante. +Outro ponto importante é a capacidade de realizar cálculos em GPU ou outras unidades de computação especializadas, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treino de redes neuronais profundas exige *muitos* cálculos, e poder paralelizar esses cálculos em GPUs é fundamental. -> ✅ O termo 'paralelizar' significa distribuir os cálculos entre vários dispositivos. +> ✅ O termo 'paralelizar' significa distribuir os cálculos por vários dispositivos. -Atualmente, as duas estruturas de rede neural mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambas fornecem uma API de baixo nível para operar com tensores tanto na CPU quanto na GPU. Acima da API de baixo nível, também existe uma API de nível superior, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. +Atualmente, os dois frameworks de redes neuronais mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambos oferecem uma API de baixo nível para operar com tensores tanto em CPU quanto em GPU. Além da API de baixo nível, também existe uma API de alto nível, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/), respectivamente. API de Baixo Nível | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) ---------------|-------------------------------------|-------------------------------- -API de Alto Nível| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +--------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**APIs de baixo nível** em ambas as estruturas permitem que você construa os chamados **gráficos computacionais**. Este gráfico define como calcular a saída (geralmente a função de perda) com parâmetros de entrada dados, e pode ser enviado para computação na GPU, se estiver disponível. Existem funções para diferenciar esse gráfico computacional e calcular gradientes, que podem ser usados para otimizar os parâmetros do modelo. +**APIs de baixo nível** em ambos os frameworks permitem construir os chamados **grafos computacionais**. Este grafo define como calcular o resultado (geralmente a função de perda) com os parâmetros de entrada fornecidos e pode ser enviado para cálculo em GPU, se disponível. Existem funções para diferenciar este grafo computacional e calcular gradientes, que podem ser usados para otimizar os parâmetros do modelo. -**APIs de alto nível** consideram as redes neurais como uma **sequência de camadas**, tornando a construção da maioria das redes neurais muito mais fácil. O treinamento do modelo geralmente requer a preparação dos dados e, em seguida, a chamada de uma função `fit` para realizar o trabalho. +**APIs de alto nível** consideram redes neuronais como uma **sequência de camadas**, facilitando muito a construção da maioria das redes neuronais. Treinar o modelo geralmente requer preparar os dados e, em seguida, chamar uma função `fit` para realizar o trabalho. -A API de alto nível permite que você construa redes neurais típicas muito rapidamente, sem se preocupar com muitos detalhes. Ao mesmo tempo, a API de baixo nível oferece muito mais controle sobre o processo de treinamento, e, portanto, é muito utilizada em pesquisas, quando se lida com novas arquiteturas de redes neurais. +A API de alto nível permite construir redes neuronais típicas rapidamente, sem se preocupar com muitos detalhes. Por outro lado, a API de baixo nível oferece muito mais controle sobre o processo de treino e, por isso, é amplamente utilizada em pesquisas, quando se trabalha com novas arquiteturas de redes neuronais. -É também importante entender que você pode usar ambas as APIs juntas, por exemplo, você pode desenvolver sua própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, usá-la dentro da rede maior construída e treinada com a API de alto nível. Ou você pode definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar seu próprio loop de treinamento de baixo nível para realizar a otimização. Ambas as APIs usam os mesmos conceitos básicos subjacentes e foram projetadas para funcionar bem juntas. +Também é importante entender que ambas as APIs podem ser usadas juntas. Por exemplo, pode-se desenvolver a própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, utilizá-la dentro de uma rede maior construída e treinada com a API de alto nível. Ou pode-se definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar o próprio loop de treino de baixo nível para realizar a otimização. Ambas as APIs utilizam os mesmos conceitos básicos subjacentes e são projetadas para funcionar bem juntas. -## Aprendizado +## Aprendizagem -Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Você pode escolher sua estrutura preferida e apenas passar pelos notebooks correspondentes. Se você não tem certeza de qual estrutura escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Você também pode dar uma olhada em ambas as estruturas para ter uma melhor compreensão. +Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Pode escolher o framework preferido e seguir apenas os notebooks correspondentes. Se não tiver certeza de qual framework escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Também pode explorar ambos os frameworks para obter uma melhor compreensão. -Onde for possível, usaremos APIs de Alto Nível por simplicidade. No entanto, acreditamos que é importante entender como as redes neurais funcionam desde o início, portanto, no começo, começamos trabalhando com a API de baixo nível e tensores. No entanto, se você deseja avançar rapidamente e não quer gastar muito tempo aprendendo esses detalhes, pode pular essas partes e ir direto para os notebooks da API de alto nível. +Sempre que possível, utilizaremos APIs de alto nível para simplificar. No entanto, acreditamos que é importante entender como as redes neuronais funcionam desde o início, por isso começamos trabalhando com a API de baixo nível e tensores. Contudo, se quiser avançar rapidamente e não gastar muito tempo aprendendo esses detalhes, pode pular essa parte e ir diretamente para os notebooks de API de alto nível. -## ✍️ Exercícios: Estruturas +## ✍️ Exercícios: Frameworks -Continue seu aprendizado nos seguintes notebooks: +Continue a aprendizagem nos seguintes notebooks: API de Baixo Nível | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ---------------|-------------------------------------|-------------------------------- -API de Alto Nível| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +--------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -Após dominar as estruturas, vamos recapitular a noção de overfitting. +Depois de dominar os frameworks, vamos recapitular o conceito de overfitting. # Overfitting -Overfitting é um conceito extremamente importante em aprendizado de máquina, e é muito importante compreendê-lo corretamente! +Overfitting é um conceito extremamente importante em aprendizagem automática, e é essencial compreendê-lo corretamente! -Considere o seguinte problema de aproximação de 5 pontos (representados por `x` nos gráficos abaixo): +Considere o seguinte problema de aproximar 5 pontos (representados por `x` nos gráficos abaixo): -![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pt.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pt.jpg) +![linear](../../../../../lessons/3-NeuralNetworks/images/overfit1.jpg) | ![overfit](../../../../../lessons/3-NeuralNetworks/images/overfit2.jpg) -------------------------|-------------------------- -**Modelo linear, 2 parâmetros** | **Modelo não linear, 7 parâmetros** -Erro de treinamento = 5.3 | Erro de validação = 0 +**Modelo linear, 2 parâmetros** | **Modelo não-linear, 7 parâmetros** +Erro de treino = 5.3 | Erro de treino = 0 Erro de validação = 5.1 | Erro de validação = 20 -* À esquerda, vemos uma boa aproximação em linha reta. Como o número de parâmetros é adequado, o modelo capta a ideia por trás da distribuição dos pontos corretamente. -* À direita, o modelo é poderoso demais. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele pode se ajustar de tal forma que passe por todos os pontos, fazendo com que o erro de treinamento seja 0. No entanto, isso impede que o modelo entenda o padrão correto por trás dos dados, portanto, o erro de validação é muito alto. +* À esquerda, vemos uma boa aproximação com uma linha reta. Como o número de parâmetros é adequado, o modelo compreende corretamente a distribuição dos pontos. +* À direita, o modelo é demasiado poderoso. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele ajusta-se de forma a passar por todos os pontos, fazendo com que o erro de treino seja 0. No entanto, isso impede o modelo de entender o padrão correto dos dados, resultando num erro de validação muito alto. -É muito importante encontrar um equilíbrio correto entre a riqueza do modelo (número de parâmetros) e o número de amostras de treinamento. +É muito importante encontrar o equilíbrio correto entre a complexidade do modelo (número de parâmetros) e o número de amostras de treino. -## Por que o overfitting ocorre +## Por que ocorre o overfitting - * Dados de treinamento insuficientes - * Modelo muito poderoso + * Poucos dados de treino + * Modelo demasiado poderoso * Muito ruído nos dados de entrada -## Como detectar overfitting +## Como detectar o overfitting -Como você pode ver no gráfico acima, o overfitting pode ser detectado por um erro de treinamento muito baixo e um erro de validação alto. Normalmente, durante o treinamento, veremos tanto os erros de treinamento quanto de validação começando a diminuir, e então em algum momento o erro de validação pode parar de diminuir e começar a aumentar. Isso será um sinal de overfitting e um indicativo de que provavelmente devemos parar o treinamento neste ponto (ou pelo menos fazer uma cópia do modelo). +Como pode ver no gráfico acima, o overfitting pode ser detectado por um erro de treino muito baixo e um erro de validação elevado. Normalmente, durante o treino, vemos tanto o erro de treino quanto o de validação começarem a diminuir, e então, em algum momento, o erro de validação pode parar de diminuir e começar a aumentar. Este será um sinal de overfitting e um indicador de que provavelmente devemos parar o treino nesse ponto (ou pelo menos fazer um snapshot do modelo). -![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pt.png) +![overfitting](../../../../../lessons/3-NeuralNetworks/images/Overfitting.png) ## Como prevenir o overfitting -Se você perceber que o overfitting está ocorrendo, você pode fazer uma das seguintes ações: +Se perceber que o overfitting está a ocorrer, pode fazer o seguinte: - * Aumentar a quantidade de dados de treinamento - * Diminuir a complexidade do modelo - * Usar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos mais tarde. + * Aumentar a quantidade de dados de treino + * Reduzir a complexidade do modelo + * Utilizar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que será abordada mais tarde. -## Overfitting e a Troca de Viés-Variância +## Overfitting e o Tradeoff Viés-Variância -Overfitting é, na verdade, um caso de um problema mais genérico em estatísticas chamado [Troca de Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro em nosso modelo, podemos ver dois tipos de erros: +O overfitting é, na verdade, um caso de um problema mais genérico em estatística chamado [Tradeoff Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro no nosso modelo, podemos identificar dois tipos de erros: -* **Erros de viés** são causados pelo nosso algoritmo não conseguir capturar corretamente a relação entre os dados de treinamento. Isso pode resultar do fato de que nosso modelo não é poderoso o suficiente (**underfitting**). -* **Erros de variância**, que são causados pelo modelo aproximando o ruído nos dados de entrada em vez de uma relação significativa (**overfitting**). +* **Erros de viés** são causados pelo nosso algoritmo não conseguir capturar corretamente a relação entre os dados de treino. Isso pode ocorrer porque o modelo não é suficientemente poderoso (**underfitting**). +* **Erros de variância**, que são causados pelo modelo ao aproximar o ruído nos dados de entrada em vez de uma relação significativa (**overfitting**). -Durante o treinamento, o erro de viés diminui (à medida que nosso modelo aprende a aproximar os dados), e o erro de variância aumenta. É importante parar o treinamento - seja manualmente (quando detectamos overfitting) ou automaticamente (introduzindo regularização) - para evitar o overfitting. +Durante o treino, o erro de viés diminui (à medida que o modelo aprende a aproximar os dados) e o erro de variância aumenta. É importante parar o treino - seja manualmente (quando detectamos overfitting) ou automaticamente (introduzindo regularização) - para evitar o overfitting. ## Conclusão -Nesta lição, você aprendeu sobre as diferenças entre as várias APIs para os dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, você aprendeu sobre um tópico muito importante, o overfitting. +Nesta lição, aprendeu sobre as diferenças entre as várias APIs dos dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, aprendeu sobre um tópico muito importante: overfitting. ## 🚀 Desafio -Nos notebooks acompanhantes, você encontrará 'tarefas' na parte inferior; trabalhe através dos notebooks e complete as tarefas. +Nos notebooks associados, encontrará 'tarefas' no final; trabalhe nos notebooks e complete as tarefas. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) ## Revisão e Autoestudo -Faça uma pesquisa sobre os seguintes tópicos: +Pesquise sobre os seguintes tópicos: - TensorFlow - PyTorch - Overfitting -Pergunte a si mesmo as seguintes questões: +Pergunte a si mesmo: - Qual é a diferença entre TensorFlow e PyTorch? - Qual é a diferença entre overfitting e underfitting? -## [Tarefa](lab/README.md) +## [Trabalho](lab/README.md) -Neste laboratório, você é solicitado a resolver dois problemas de classificação usando redes totalmente conectadas de camadas única e múltipla, usando PyTorch ou TensorFlow. +Neste laboratório, será solicitado que resolva dois problemas de classificação usando redes totalmente conectadas de uma ou várias camadas, utilizando PyTorch ou TensorFlow. * [Instruções](lab/README.md) * [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 172febb6..d1682c48 100644 --- a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ + # Classificação com PyTorch/TensorFlow -Atividade de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Resolva dois problemas de classificação usando redes totalmente conectadas de camada única e multicamada com PyTorch ou TensorFlow: +Resolva dois problemas de classificação utilizando redes totalmente conectadas de uma e várias camadas com PyTorch ou TensorFlow: -1. Problema de **[classificação de íris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - um exemplo de problema com dados de entrada tabulares, que pode ser tratado por aprendizado de máquina clássico. Seu objetivo será classificar íris em 3 classes, com base em 4 parâmetros numéricos. -1. Problema de classificação de dígitos manuscritos **MNIST** que já vimos anteriormente. +1. Problema de **[classificação de íris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - um exemplo de problema com dados tabulares de entrada, que pode ser resolvido com aprendizagem automática clássica. O teu objetivo será classificar íris em 3 classes, com base em 4 parâmetros numéricos. +1. Problema de classificação de dígitos manuscritos **MNIST**, que já vimos anteriormente. Experimente diferentes arquiteturas de rede para alcançar a melhor precisão possível. -## Iniciando o Notebook +## Notebook Inicial -Comece o laboratório abrindo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +Comece o trabalho prático abrindo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/README.md b/translations/pt/lessons/3-NeuralNetworks/README.md index c11c84fb..066e22be 100644 --- a/translations/pt/lessons/3-NeuralNetworks/README.md +++ b/translations/pt/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ + # Introdução às Redes Neurais -![Resumo do conteúdo de Introdução às Redes Neurais em um doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pt.png) +![Resumo do conteúdo de Introdução às Redes Neurais em um desenho](../../../../lessons/sketchnotes/ai-neuralnetworks.png) -Como discutimos na introdução, uma das maneiras de alcançar a inteligência é treinar um **modelo de computador** ou um **cérebro artificial**. Desde meados do século XX, pesquisadores tentaram diferentes modelos matemáticos, até que, nos últimos anos, essa abordagem se mostrou extremamente bem-sucedida. Esses modelos matemáticos do cérebro são chamados de **redes neurais**. +Como discutimos na introdução, uma das formas de alcançar inteligência é treinar um **modelo computacional** ou um **cérebro artificial**. Desde meados do século XX, os investigadores experimentaram diferentes modelos matemáticos, até que, nos últimos anos, esta abordagem se revelou extremamente bem-sucedida. Esses modelos matemáticos do cérebro são chamados de **redes neurais**. -> Às vezes, as redes neurais são chamadas de *Redes Neurais Artificiais*, ANNs, para indicar que estamos falando de modelos, e não de redes reais de neurônios. +> Às vezes, as redes neurais são chamadas de *Redes Neurais Artificiais*, ou ANNs, para indicar que estamos a falar de modelos, e não de redes reais de neurónios. -## Aprendizado de Máquina +## Aprendizagem Automática -As Redes Neurais são parte de uma disciplina maior chamada **Aprendizado de Máquina**, cujo objetivo é usar dados para treinar modelos de computador capazes de resolver problemas. O Aprendizado de Máquina constitui uma grande parte da Inteligência Artificial; no entanto, não abordamos o ML clássico neste currículo. +As Redes Neurais fazem parte de uma disciplina mais ampla chamada **Aprendizagem Automática** (Machine Learning), cujo objetivo é usar dados para treinar modelos computacionais capazes de resolver problemas. A Aprendizagem Automática constitui uma grande parte da Inteligência Artificial, no entanto, não abordamos a aprendizagem automática clássica neste currículo. -> Visite nosso currículo separado **[Aprendizado de Máquina para Iniciantes](http://github.com/microsoft/ml-for-beginners)** para saber mais sobre o Aprendizado de Máquina clássico. +> Visite o nosso currículo separado **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** para aprender mais sobre a Aprendizagem Automática clássica. -No Aprendizado de Máquina, assumimos que temos um conjunto de dados de exemplos **X** e os valores de saída correspondentes **Y**. Os exemplos são frequentemente vetores N-dimensionais que consistem em **características**, e as saídas são chamadas de **rótulos**. +Na Aprendizagem Automática, assumimos que temos um conjunto de dados de exemplos **X** e os valores de saída correspondentes **Y**. Os exemplos são frequentemente vetores N-dimensionais que consistem em **características**, e as saídas são chamadas de **rótulos**. -Consideraremos os dois problemas mais comuns de aprendizado de máquina: +Vamos considerar os dois problemas mais comuns da aprendizagem automática: * **Classificação**, onde precisamos classificar um objeto de entrada em duas ou mais classes. -* **Regressão**, onde precisamos prever um número numérico para cada uma das amostras de entrada. +* **Regressão**, onde precisamos prever um valor numérico para cada uma das amostras de entrada. -> Ao representar entradas e saídas como tensores, o conjunto de dados de entrada é uma matriz de tamanho M×N, onde M é o número de amostras e N é o número de características. Os rótulos de saída Y são o vetor de tamanho M. +> Ao representar entradas e saídas como tensores, o conjunto de dados de entrada é uma matriz de tamanho M×N, onde M é o número de amostras e N é o número de características. Os rótulos de saída Y são um vetor de tamanho M. -Neste currículo, focaremos apenas em modelos de redes neurais. +Neste currículo, focar-nos-emos apenas em modelos de redes neurais. -## Um Modelo de Neurônio +## Um Modelo de Neurónio -Da biologia, sabemos que nosso cérebro consiste em células neurais, cada uma delas tendo múltiplas "entradas" (axônios) e uma saída (dendrito). Axônios e dendritos podem conduzir sinais elétricos, e as conexões entre axônios e dendritos podem exibir diferentes graus de condutividade (controlados por neuromediadores). +Sabemos pela biologia que o nosso cérebro é composto por células neuronais, cada uma delas com múltiplas "entradas" (axónios) e uma saída (dendrito). Os axónios e dendritos podem conduzir sinais elétricos, e as conexões entre axónios e dendritos podem apresentar diferentes graus de condutividade (controlados por neuromediadores). -![Modelo de um Neurônio](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pt.jpg) | ![Modelo de um Neurônio](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pt.png) +![Modelo de um Neurónio](../../../../lessons/3-NeuralNetworks/images/synapse-wikipedia.jpg) | ![Modelo de um Neurónio](../../../../lessons/3-NeuralNetworks/images/artneuron.png) ----|---- -Neurônio Real *([Imagem](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) da Wikipedia)* | Neurônio Artificial *(Imagem do Autor)* +Neurónio Real *([Imagem](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) da Wikipédia)* | Neurónio Artificial *(Imagem do Autor)* -Assim, o modelo matemático mais simples de um neurônio contém várias entradas X1, ..., XN e uma saída Y, além de uma série de pesos W1, ..., WN. A saída é calculada como: +Assim, o modelo matemático mais simples de um neurónio contém várias entradas X1, ..., XN e uma saída Y, além de uma série de pesos W1, ..., WN. A saída é calculada como: Y = f\left(\sum_{i=1}^N X_iW_i\right) -onde f é alguma **função de ativação** não linear. +onde f é uma **função de ativação** não linear. -> Modelos iniciais de neurônios foram descritos no artigo clássico [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) de Warren McCullock e Walter Pitts em 1943. Donald Hebb, em seu livro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", propôs a maneira como essas redes podem ser treinadas. +> Os primeiros modelos de neurónio foram descritos no artigo clássico [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) por Warren McCullock e Walter Pitts em 1943. Donald Hebb, no seu livro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", propôs uma forma de treinar essas redes. -## Nesta Seção +## Nesta Secção -Nesta seção, aprenderemos sobre: -* [Perceptron](03-Perceptron/README.md), um dos primeiros modelos de rede neural para classificação em duas classes -* [Redes de múltiplas camadas](04-OwnFramework/README.md) com um caderno associado [como construir nossa própria estrutura](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Estruturas de Redes Neurais](05-Frameworks/README.md), com estes cadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) e [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +Nesta secção, vamos aprender sobre: +* [Perceptron](03-Perceptron/README.md), um dos primeiros modelos de redes neurais para classificação de duas classes +* [Redes multicamadas](04-OwnFramework/README.md) com um notebook associado [como construir o nosso próprio framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks de Redes Neurais](05-Frameworks/README.md), com os seguintes notebooks: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) e [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) * [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md index a3b0f58c..a2f059da 100644 --- a/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ + # Introdução à Visão Computacional -[A Visão Computacional](https://wikipedia.org/wiki/Computer_vision) é uma disciplina cujo objetivo é permitir que os computadores adquiram uma compreensão de alto nível de imagens digitais. Essa é uma definição bastante ampla, pois *compreensão* pode significar muitas coisas diferentes, incluindo encontrar um objeto em uma imagem (**detecção de objetos**), entender o que está acontecendo (**detecção de eventos**), descrever uma imagem em texto ou reconstruir uma cena em 3D. Também existem tarefas especiais relacionadas a imagens humanas: estimativa de idade e emoção, detecção e identificação de rostos, e estimativa de pose em 3D, para citar algumas. +[Visão Computacional](https://wikipedia.org/wiki/Computer_vision) é uma disciplina cujo objetivo é permitir que os computadores compreendam imagens digitais em alto nível. Esta é uma definição bastante ampla, pois *compreender* pode significar muitas coisas, incluindo encontrar um objeto numa imagem (**detecção de objetos**), entender o que está a acontecer (**detecção de eventos**), descrever uma imagem em texto ou reconstruir uma cena em 3D. Existem também tarefas específicas relacionadas a imagens humanas: estimativa de idade e emoções, deteção e identificação de rostos, e estimativa de pose 3D, para citar algumas. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) Uma das tarefas mais simples da visão computacional é a **classificação de imagens**. -A visão computacional é frequentemente considerada uma ramificação da IA. Hoje em dia, a maioria das tarefas de visão computacional é resolvida usando redes neurais. Aprenderemos mais sobre o tipo especial de redes neurais usadas para visão computacional, [redes neurais convolucionais](../07-ConvNets/README.md), ao longo desta seção. +A visão computacional é frequentemente considerada um ramo da IA. Atualmente, a maioria das tarefas de visão computacional é resolvida utilizando redes neuronais. Vamos aprender mais sobre o tipo especial de redes neuronais usadas para visão computacional, as [redes neuronais convolucionais](../07-ConvNets/README.md), ao longo desta secção. -No entanto, antes de passar a imagem para uma rede neural, em muitos casos faz sentido usar algumas técnicas algorítmicas para melhorar a imagem. +No entanto, antes de passar a imagem para uma rede neuronal, em muitos casos faz sentido usar algumas técnicas algorítmicas para melhorar a imagem. Existem várias bibliotecas Python disponíveis para processamento de imagens: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** pode ser usada para ler/escrever diferentes formatos de imagem. Também suporta ffmpeg, uma ferramenta útil para converter quadros de vídeo em imagens. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (também conhecido como PIL) é um pouco mais poderosa e também suporta algumas manipulações de imagem, como morphing, ajustes de paleta e mais. -* **[OpenCV](https://opencv.org/)** é uma poderosa biblioteca de processamento de imagens escrita em C++, que se tornou o padrão *de fato* para processamento de imagens. Ela possui uma interface conveniente para Python. -* **[dlib](http://dlib.net/)** é uma biblioteca C++ que implementa muitos algoritmos de aprendizado de máquina, incluindo alguns dos algoritmos de Visão Computacional. Também possui uma interface Python e pode ser usada para tarefas desafiadoras, como detecção de rostos e pontos de referência faciais. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** pode ser usada para ler/escrever diferentes formatos de imagem. Também suporta ffmpeg, uma ferramenta útil para converter frames de vídeo em imagens. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (também conhecida como PIL) é um pouco mais poderosa e suporta manipulações de imagem, como morphing, ajustes de paleta e mais. +* **[OpenCV](https://opencv.org/)** é uma biblioteca poderosa de processamento de imagens escrita em C++, que se tornou o padrão *de facto* para processamento de imagens. Possui uma interface conveniente em Python. +* **[dlib](http://dlib.net/)** é uma biblioteca em C++ que implementa muitos algoritmos de aprendizagem automática, incluindo alguns algoritmos de Visão Computacional. Também possui uma interface em Python e pode ser usada para tarefas desafiadoras, como deteção de rostos e pontos faciais. ## OpenCV -[OpenCV](https://opencv.org/) é considerado o padrão *de fato* para processamento de imagens. Ele contém muitos algoritmos úteis, implementados em C++. Você também pode chamar o OpenCV a partir do Python. +[OpenCV](https://opencv.org/) é considerado o padrão *de facto* para processamento de imagens. Contém muitos algoritmos úteis, implementados em C++. Também pode ser usado a partir de Python. -Um bom lugar para aprender OpenCV é [este curso Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). Em nosso currículo, nosso objetivo não é aprender OpenCV, mas mostrar alguns exemplos de quando ele pode ser usado e como. +Um bom lugar para aprender OpenCV é [este curso Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). No nosso currículo, o objetivo não é aprender OpenCV, mas mostrar alguns exemplos de quando pode ser usado e como. -### Carregando Imagens +### Carregar Imagens -Imagens em Python podem ser convenientemente representadas por arrays NumPy. Por exemplo, imagens em escala de cinza com tamanho de 320x200 pixels seriam armazenadas em um array de 200x320, e imagens coloridas da mesma dimensão teriam a forma de 200x320x3 (para 3 canais de cor). Para carregar uma imagem, você pode usar o seguinte código: +Imagens em Python podem ser convenientemente representadas por arrays NumPy. Por exemplo, imagens em escala de cinza com o tamanho de 320x200 píxeis seriam armazenadas num array 200x320, e imagens coloridas da mesma dimensão teriam a forma 200x320x3 (para 3 canais de cor). Para carregar uma imagem, pode usar o seguinte código: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Tradicionalmente, o OpenCV usa a codificação BGR (Azul-Verde-Vermelho) para imagens coloridas, enquanto o restante das ferramentas Python usa o mais tradicional RGB (Vermelho-Verde-Azul). Para que a imagem pareça correta, você precisa convertê-la para o espaço de cores RGB, seja trocando dimensões no array NumPy, ou chamando uma função do OpenCV: +Tradicionalmente, o OpenCV usa codificação BGR (Azul-Verde-Vermelho) para imagens coloridas, enquanto o resto das ferramentas Python usa a codificação mais tradicional RGB (Vermelho-Verde-Azul). Para que a imagem seja exibida corretamente, é necessário convertê-la para o espaço de cores RGB, seja trocando as dimensões no array NumPy ou chamando uma função do OpenCV: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -As mesmas funções `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +A mesma função `cvtColor` pode ser usada para realizar outras transformações de espaço de cores, como converter uma imagem para escala de cinza ou para o espaço HSV (Matiz-Saturação-Valor). -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +Também pode usar o OpenCV para carregar frames de vídeo, frame a frame - um exemplo é dado no exercício [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Processamento de Imagens -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Antes de alimentar uma imagem numa rede neuronal, pode ser necessário aplicar vários passos de pré-processamento. O OpenCV pode realizar muitas operações, incluindo: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que muitas vezes são preferíveis ao ajuste de brilho ou contraste. -* Aplicando diferentes [transformações](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) à imagem: - - **[Transformações afins](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** podem ser úteis se você precisar combinar rotação, redimensionamento e distorção à imagem e souber a localização de origem e destino de três pontos na imagem. Transformações afins mantêm linhas paralelas paralelas. - - **[Transformações de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** podem ser úteis quando você conhece as posições de origem e destino de 4 pontos na imagem. Por exemplo, se você tirar uma foto de um documento retangular através da câmera de um smartphone de algum ângulo, e quiser fazer uma imagem retangular do próprio documento. -* Compreendendo o movimento dentro da imagem usando **[fluxo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. +* **Redimensionar** a imagem usando `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Desfocar** a imagem usando `im = cv2.medianBlur(im,3)` ou `im = cv2.GaussianBlur(im, (3,3), 0)` +* Alterar o **brilho e contraste** da imagem pode ser feito através de manipulações de arrays NumPy, conforme descrito [nesta nota do Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Usar [limiarização](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) chamando as funções `cv2.threshold`/`cv2.adaptiveThreshold`, que muitas vezes é preferível a ajustar brilho ou contraste. +* Aplicar diferentes [transformações](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) à imagem: + - **[Transformações afins](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** podem ser úteis se precisar combinar rotação, redimensionamento e inclinação na imagem e souber a localização de origem e destino de três pontos na imagem. Transformações afins mantêm linhas paralelas paralelas. + - **[Transformações de perspetiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** podem ser úteis quando souber as posições de origem e destino de 4 pontos na imagem. Por exemplo, se tirar uma foto de um documento retangular com a câmara de um smartphone de um certo ângulo e quiser criar uma imagem retangular do próprio documento. +* Compreender o movimento dentro da imagem usando **[fluxo ótico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. ## Exemplos de uso da Visão Computacional -Em nosso [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos alguns exemplos de quando a visão computacional pode ser usada para realizar tarefas específicas: +No nosso [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos alguns exemplos de quando a visão computacional pode ser usada para realizar tarefas específicas: -* **Pré-processamento de uma fotografia de um livro em Braille**. Focamos em como podemos usar limiares, detecção de características, transformação de perspectiva e manipulações NumPy para separar símbolos individuais de Braille para posterior classificação por uma rede neural. +* **Pré-processamento de uma fotografia de um livro em Braille**. Focamo-nos em como usar limiarização, deteção de características, transformação de perspetiva e manipulações NumPy para separar símbolos individuais em Braille para posterior classificação por uma rede neuronal. -![Imagem em Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pt.jpeg) | ![Imagem em Braille Pré-processada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pt.png) | ![Símbolos em Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pt.png) +![Imagem Braille](../../../../../lessons/4-ComputerVision/06-IntroCV/data/braille.jpeg) | ![Imagem Braille Pré-processada](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-result.png) | ![Símbolos Braille](../../../../../lessons/4-ComputerVision/06-IntroCV/images/braille-symbols.png) ----|-----|----- -> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Imagem retirada de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectando movimento em vídeo usando diferença de quadros**. Se a câmera estiver fixa, então os quadros do feed da câmera devem ser bastante semelhantes entre si. Como os quadros são representados como arrays, apenas subtraindo esses arrays de dois quadros subsequentes obteremos a diferença de pixels, que deve ser baixa para quadros estáticos e aumentar quando houver movimento substancial na imagem. +* **Deteção de movimento em vídeo usando diferença de frames**. Se a câmara estiver fixa, os frames do feed da câmara devem ser bastante semelhantes entre si. Como os frames são representados como arrays, ao subtrair esses arrays de dois frames subsequentes, obtemos a diferença de píxeis, que deve ser baixa para frames estáticos e tornar-se maior quando houver movimento substancial na imagem. -![Imagem de quadros de vídeo e diferenças de quadros](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pt.png) +![Imagem de frames de vídeo e diferenças de frames](../../../../../lessons/4-ComputerVision/06-IntroCV/images/frame-difference.png) -> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Imagem retirada de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectando movimento usando Fluxo Óptico**. [O fluxo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender como pixels individuais nos quadros de vídeo se movem. Existem dois tipos de fluxo óptico: +* **Deteção de movimento usando Fluxo Ótico**. [Fluxo ótico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) permite compreender como os píxeis individuais nos frames de vídeo se movem. Existem dois tipos de fluxo ótico: - - **Fluxo Óptico Denso** calcula o campo de vetores que mostra para cada pixel para onde ele está se movendo. - - **Fluxo Óptico Esparso** baseia-se na captura de algumas características distintivas na imagem (por exemplo, bordas) e construindo sua trajetória de quadro a quadro. + - **Fluxo Ótico Denso** calcula o campo vetorial que mostra para cada píxel para onde ele está a mover-se. + - **Fluxo Ótico Esparso** baseia-se em selecionar algumas características distintivas na imagem (por exemplo, arestas) e construir a sua trajetória de frame para frame. -![Imagem de Fluxo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pt.png) +![Imagem de Fluxo Ótico](../../../../../lessons/4-ComputerVision/06-IntroCV/images/optical.png) -> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Imagem retirada de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Notebooks de Exemplo: OpenCV [tente OpenCV em Ação](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Notebooks de Exemplo: OpenCV [experimente OpenCV em Ação](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -Vamos fazer alguns experimentos com OpenCV explorando o [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +Vamos fazer algumas experiências com OpenCV explorando o [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). ## Conclusão -Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de ponta dos dedos, podem ser resolvidas puramente por visão computacional. Assim, é muito útil conhecer as técnicas básicas de visão computacional e o que bibliotecas como OpenCV podem fazer. +Por vezes, tarefas relativamente complexas, como deteção de movimento ou deteção de pontas dos dedos, podem ser resolvidas apenas com visão computacional. Assim, é muito útil conhecer as técnicas básicas de visão computacional e o que bibliotecas como o OpenCV podem fazer. ## 🚀 Desafio -Assista [a este vídeo](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) do AI Show para aprender sobre o projeto Cortic Tigers e como eles construíram uma solução baseada em blocos para democratizar tarefas de visão computacional por meio de um robô. Faça algumas pesquisas sobre outros projetos como esse que ajudam a integrar novos aprendizes no campo. +Assista a [este vídeo](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) do AI Show para aprender sobre o projeto Cortic Tigers e como eles construíram uma solução baseada em blocos para democratizar tarefas de visão computacional através de um robô. Pesquise outros projetos como este que ajudam novos aprendizes a entrar na área. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) ## Revisão & Autoestudo -Leia mais sobre fluxo óptico [neste ótimo tutorial](https://learnopencv.com/optical-flow-in-opencv/). +Leia mais sobre fluxo ótico [neste excelente tutorial](https://learnopencv.com/optical-flow-in-opencv/). ## [Tarefa](lab/README.md) -Neste laboratório, você fará um vídeo com gestos simples, e seu objetivo é extrair movimentos para cima/baixo/esquerda/direita usando fluxo óptico. +Neste laboratório, irá gravar um vídeo com gestos simples, e o seu objetivo será extrair movimentos para cima/baixo/esquerda/direita usando fluxo ótico. -Quadro de Movimento da Palma +Frame de Movimento da Palma -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md index fd6297d3..5e662607 100644 --- a/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,23 +1,31 @@ -# Detectando Movimentos usando Fluxo Óptico + +# Deteção de Movimentos usando Optical Flow -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://aka.ms/ai-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://aka.ms/ai-beginners). ## Tarefa -Considere [este vídeo](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), onde a palma de uma pessoa se move para a esquerda/direita/cima/baixo em um fundo estável. -Você foi treinado com dados até outubro de 2023. +Considere [este vídeo](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), no qual a palma da mão de uma pessoa se move para a esquerda/direita/cima/baixo num fundo estável. -**Seu objetivo** será usar o Fluxo Óptico para determinar quais partes do vídeo contêm movimentos para cima/baixo/esquerda/direita. +**O seu objetivo** será usar Optical Flow para determinar quais partes do vídeo contêm movimentos para cima/baixo/esquerda/direita. -**Objetivo adicional** seria realmente rastrear o movimento da palma/dedo usando o tom de pele, conforme descrito [neste post do blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ou [aqui](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). +**Objetivo adicional** seria rastrear efetivamente o movimento da palma/dedo utilizando o tom de pele, como descrito [neste artigo](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ou [aqui](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). ## Notebook Inicial -Inicie o laboratório abrindo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) +Comece o trabalho prático abrindo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) ## Conclusão -Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de ponta de dedo, podem ser resolvidas puramente por visão computacional. Assim, é muito útil saber o que bibliotecas como OpenCV podem fazer. +Por vezes, tarefas relativamente complexas, como deteção de movimento ou deteção da ponta do dedo, podem ser resolvidas apenas com visão por computador. Por isso, é muito útil saber o que bibliotecas como OpenCV podem fazer. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index 740bab5b..038863e4 100644 --- a/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ -# Arquiteturas de CNN Conhecidas + +# Arquiteturas CNN Conhecidas ### VGG-16 -VGG-16 é uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014. Ela possui a seguinte estrutura de camadas: +VGG-16 é uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014. Possui a seguinte estrutura de camadas: -![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pt.jpg) +![Camadas do ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -Como você pode ver, o VGG segue uma arquitetura piramidal tradicional, que é uma sequência de camadas de convolução e pooling. +Como pode ver, a VGG segue uma arquitetura piramidal tradicional, que é uma sequência de camadas de convolução e pooling. -![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg) +![Pirâmide do ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ### ResNet -ResNet é uma família de modelos proposta pela Microsoft Research em 2015. A ideia principal do ResNet é usar **blocos residuais**: +ResNet é uma família de modelos proposta pela Microsoft Research em 2015. A ideia principal da ResNet é usar **blocos residuais**: > Imagem deste [artigo](https://arxiv.org/pdf/1512.03385.pdf) -A razão para usar a passagem de identidade é fazer com que nossa camada preveja **a diferença** entre o resultado de uma camada anterior e a saída do bloco residual - daí o nome *residual*. Esses blocos são muito mais fáceis de treinar, e é possível construir redes com várias centenas desses blocos (as variantes mais comuns são ResNet-52, ResNet-101 e ResNet-152). +A razão para usar a passagem de identidade é permitir que a camada preveja **a diferença** entre o resultado de uma camada anterior e a saída do bloco residual - daí o nome *residual*. Esses blocos são muito mais fáceis de treinar, e é possível construir redes com várias centenas desses blocos (as variantes mais comuns são ResNet-52, ResNet-101 e ResNet-152). -Você também pode pensar nesta rede como sendo capaz de ajustar sua complexidade ao conjunto de dados. Inicialmente, quando você começa a treinar a rede, os valores dos pesos são pequenos, e a maior parte do sinal passa por camadas de identidade. À medida que o treinamento avança e os pesos se tornam maiores, a importância dos parâmetros da rede cresce, e a rede se ajusta para acomodar o poder expressivo necessário para classificar corretamente as imagens de treinamento. +Pode também pensar nesta rede como sendo capaz de ajustar a sua complexidade ao conjunto de dados. Inicialmente, quando começa a treinar a rede, os valores dos pesos são pequenos, e a maior parte do sinal passa pelas camadas de identidade. À medida que o treino avança e os pesos se tornam maiores, a importância dos parâmetros da rede cresce, e a rede ajusta-se para acomodar o poder expressivo necessário para classificar corretamente as imagens de treino. ### Google Inception -A arquitetura Google Inception leva essa ideia um passo adiante e constrói cada camada da rede como uma combinação de vários caminhos diferentes: +A arquitetura Google Inception leva esta ideia um passo adiante e constrói cada camada da rede como uma combinação de vários caminhos diferentes: > Imagem de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Aqui, precisamos enfatizar o papel das convoluções 1x1, porque à primeira vista elas não fazem sentido. Por que precisaríamos passar pela imagem com um filtro 1x1? No entanto, você precisa lembrar que os filtros de convolução também trabalham com vários canais de profundidade (originalmente - cores RGB, em camadas subsequentes - canais para diferentes filtros), e a convolução 1x1 é usada para misturar esses canais de entrada juntos usando diferentes pesos treináveis. Ela também pode ser vista como uma redução de dimensão (pooling) sobre a dimensão do canal. +Aqui, é importante destacar o papel das convoluções 1x1, porque, à primeira vista, elas não fazem sentido. Por que precisaríamos passar pela imagem com um filtro 1x1? No entanto, é necessário lembrar que os filtros de convolução também trabalham com vários canais de profundidade (originalmente - cores RGB, em camadas subsequentes - canais para diferentes filtros), e a convolução 1x1 é usada para misturar esses canais de entrada usando diferentes pesos treináveis. Também pode ser vista como uma forma de downsampling (pooling) na dimensão dos canais. -Aqui está [um bom post no blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre o assunto, e [o artigo original](https://arxiv.org/pdf/1312.4400.pdf). +Aqui está [um bom artigo](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre o assunto, e [o artigo original](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet é uma família de modelos com tamanho reduzido, adequados para dispositivos móveis. Use-os se você estiver com recursos limitados e puder sacrificar um pouco de precisão. A ideia principal por trás deles é a chamada **convolução separável por profundidade**, que permite representar filtros de convolução por uma composição de convoluções espaciais e convolução 1x1 sobre canais de profundidade. Isso reduz significativamente o número de parâmetros, tornando a rede menor em tamanho e também mais fácil de treinar com menos dados. +MobileNet é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se tiver poucos recursos e puder sacrificar um pouco de precisão. A ideia principal por trás deles é a chamada **convolução separável por profundidade**, que permite representar filtros de convolução por uma composição de convoluções espaciais e convoluções 1x1 sobre os canais de profundidade. Isso reduz significativamente o número de parâmetros, tornando a rede menor em tamanho e também mais fácil de treinar com menos dados. -Aqui está [um bom post no blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Aqui está [um bom artigo sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). ## Conclusão -Nesta unidade, você aprendeu o conceito principal por trás das redes neurais de visão computacional - redes convolucionais. Arquiteturas da vida real que impulsionam a classificação de imagens, detecção de objetos e até mesmo redes de geração de imagens são todas baseadas em CNNs, apenas com mais camadas e alguns truques de treinamento adicionais. +Nesta unidade, aprendeu o conceito principal por trás das redes neurais de visão computacional - redes convolucionais. Arquiteturas reais que alimentam classificação de imagens, deteção de objetos e até redes de geração de imagens são todas baseadas em CNNs, apenas com mais camadas e alguns truques adicionais de treino. ## 🚀 Desafio -Nos cadernos acompanhantes, há notas na parte inferior sobre como obter maior precisão. Faça alguns experimentos para ver se você consegue alcançar uma precisão mais alta. +Nos notebooks que acompanham, há notas no final sobre como obter maior precisão. Faça alguns experimentos para ver se consegue alcançar uma precisão maior. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) -## Revisão e Estudo Autônomo +## Revisão e Autoestudo -Embora as CNNs sejam mais frequentemente usadas para tarefas de Visão Computacional, elas são geralmente boas para extrair padrões de tamanho fixo. Por exemplo, se estivermos lidando com sons, também podemos querer usar CNNs para procurar padrões específicos em sinais de áudio - nesse caso, os filtros seriam unidimensionais (e essa CNN seria chamada de 1D-CNN). Além disso, às vezes, a 3D-CNN é usada para extrair características em espaço multidimensional, como certos eventos ocorrendo em vídeo - a CNN pode capturar certos padrões de mudança de características ao longo do tempo. Faça uma revisão e estudo autônomo sobre outras tarefas que podem ser realizadas com CNNs. +Embora as CNNs sejam mais frequentemente usadas para tarefas de Visão Computacional, elas são geralmente boas para extrair padrões de tamanho fixo. Por exemplo, se estivermos a lidar com sons, também podemos querer usar CNNs para procurar padrões específicos no sinal de áudio - nesse caso, os filtros seriam unidimensionais (e essa CNN seria chamada de 1D-CNN). Além disso, às vezes é usada uma 3D-CNN para extrair características em espaço multidimensional, como certos eventos que ocorrem em vídeos - a CNN pode capturar certos padrões de mudança de características ao longo do tempo. Faça uma revisão e autoestudo sobre outras tarefas que podem ser realizadas com CNNs. ## [Tarefa](lab/README.md) -Neste laboratório, você tem a tarefa de classificar diferentes raças de gatos e cães. Essas imagens são mais complexas do que o conjunto de dados MNIST e têm dimensões mais altas, e há mais de 10 classes. +Neste laboratório, a sua tarefa é classificar diferentes raças de gatos e cães. Estas imagens são mais complexas do que o conjunto de dados MNIST, têm dimensões maiores e há mais de 10 classes. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md index 8ac967aa..0e432d1a 100644 --- a/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ -# Redes Neurais Convolucionais + +# Redes Neuronais Convolucionais -Já vimos anteriormente que redes neurais são bastante eficazes ao lidar com imagens, e até mesmo um perceptron de uma camada é capaz de reconhecer dígitos manuscritos do conjunto de dados MNIST com uma precisão razoável. No entanto, o conjunto de dados MNIST é muito especial, e todos os dígitos estão centralizados dentro da imagem, o que torna a tarefa mais simples. +Já vimos anteriormente que as redes neuronais são bastante eficazes a lidar com imagens, e até mesmo um perceptron de uma camada consegue reconhecer dígitos manuscritos do conjunto de dados MNIST com uma precisão razoável. No entanto, o conjunto de dados MNIST é muito especial, pois todos os dígitos estão centrados na imagem, o que torna a tarefa mais simples. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -Na vida real, queremos ser capazes de reconhecer objetos em uma imagem, independentemente de sua localização exata na imagem. A visão computacional é diferente da classificação genérica, porque quando tentamos encontrar um determinado objeto na imagem, estamos escaneando a imagem em busca de alguns **padrões** específicos e suas combinações. Por exemplo, ao procurar um gato, primeiro podemos procurar por linhas horizontais, que podem formar bigodes, e então uma combinação específica de bigodes pode nos indicar que na verdade é uma imagem de um gato. A posição relativa e a presença de certos padrões são importantes, e não sua posição exata na imagem. +Na vida real, queremos ser capazes de reconhecer objetos numa imagem independentemente da sua localização exata. A visão computacional é diferente da classificação genérica, porque, ao tentar encontrar um determinado objeto na imagem, estamos a analisar a imagem em busca de **padrões** específicos e suas combinações. Por exemplo, ao procurar um gato, podemos começar por procurar linhas horizontais, que podem formar os bigodes, e depois uma certa combinação de bigodes pode indicar que se trata de uma imagem de um gato. A posição relativa e a presença de certos padrões são importantes, e não a sua posição exata na imagem. -Para extrair padrões, usaremos a noção de **filtros convolucionais**. Como você sabe, uma imagem é representada por uma matriz 2D ou um tensor 3D com profundidade de cor. Aplicar um filtro significa que pegamos uma matriz de **kernel de filtro** relativamente pequena, e para cada pixel na imagem original, calculamos a média ponderada com os pontos vizinhos. Podemos ver isso como uma pequena janela deslizando sobre toda a imagem, e fazendo a média de todos os pixels de acordo com os pesos na matriz do kernel de filtro. +Para extrair padrões, utilizaremos o conceito de **filtros convolucionais**. Como sabemos, uma imagem é representada por uma matriz 2D ou um tensor 3D com profundidade de cor. Aplicar um filtro significa que usamos uma matriz relativamente pequena chamada **kernel do filtro**, e para cada pixel na imagem original calculamos a média ponderada com os pontos vizinhos. Podemos imaginar isto como uma pequena janela que desliza sobre toda a imagem, calculando a média de todos os pixels de acordo com os pesos na matriz kernel do filtro. -![Filtro de Borda Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pt.png) | ![Filtro de Borda Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pt.png) +![Filtro de Borda Vertical](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-vert.png) | ![Filtro de Borda Horizontal](../../../../../lessons/4-ComputerVision/07-ConvNets/images/filter-horiz.png) ----|---- -> Imagem de Dmitry Soshnikov +> Imagem por Dmitry Soshnikov -Por exemplo, se aplicarmos filtros de borda vertical e horizontal 3x3 nos dígitos do MNIST, podemos obter destaques (por exemplo, valores altos) onde há bordas verticais e horizontais na nossa imagem original. Assim, esses dois filtros podem ser usados para "procurar" bordas. Da mesma forma, podemos projetar diferentes filtros para procurar outros padrões de baixo nível: -Você foi treinado com dados até outubro de 2023. +Por exemplo, se aplicarmos filtros de borda vertical e horizontal de 3x3 aos dígitos do MNIST, podemos destacar (por exemplo, valores altos) onde há bordas verticais e horizontais na imagem original. Assim, esses dois filtros podem ser usados para "procurar" bordas. Da mesma forma, podemos projetar diferentes filtros para procurar outros padrões de baixo nível: -> Imagem do [Banco de Filtros Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Imagem do [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -No entanto, enquanto podemos projetar os filtros para extrair alguns padrões manualmente, também podemos projetar a rede de tal forma que ela aprenda os padrões automaticamente. Essa é uma das principais ideias por trás da CNN. +No entanto, embora possamos projetar os filtros manualmente para extrair alguns padrões, também podemos projetar a rede de forma que ela aprenda os padrões automaticamente. Esta é uma das principais ideias por trás das CNNs. -## Principais ideias por trás da CNN +## Ideias principais por trás das CNNs -A forma como as CNNs funcionam é baseada nas seguintes ideias importantes: +O funcionamento das CNNs baseia-se nas seguintes ideias importantes: * Filtros convolucionais podem extrair padrões -* Podemos projetar a rede de tal forma que os filtros sejam treinados automaticamente -* Podemos usar a mesma abordagem para encontrar padrões em características de alto nível, não apenas na imagem original. Assim, a extração de características da CNN trabalha em uma hierarquia de características, começando por combinações de pixels de baixo nível até combinações de partes da imagem de nível mais alto. +* Podemos projetar a rede de forma que os filtros sejam treinados automaticamente +* Podemos usar a mesma abordagem para encontrar padrões em características de alto nível, não apenas na imagem original. Assim, a extração de características nas CNNs funciona numa hierarquia de características, começando por combinações de pixels de baixo nível até combinações de partes da imagem de nível mais alto. -![Extração de Características Hierárquica](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pt.png) +![Extração Hierárquica de Características](../../../../../lessons/4-ComputerVision/07-ConvNets/images/FeatureExtractionCNN.png) -> Imagem de [um artigo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), baseado em [sua pesquisa](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Imagem de [um artigo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), baseado na [sua pesquisa](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) -## ✍️ Exercícios: Redes Neurais Convolucionais +## ✍️ Exercícios: Redes Neuronais Convolucionais -Vamos continuar explorando como as redes neurais convolucionais funcionam e como podemos alcançar filtros treináveis, trabalhando através dos notebooks correspondentes: +Vamos continuar a explorar como funcionam as redes neuronais convolucionais e como podemos obter filtros treináveis, trabalhando nos notebooks correspondentes: -* [Redes Neurais Convolucionais - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [Redes Neurais Convolucionais - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [Redes Neuronais Convolucionais - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Redes Neuronais Convolucionais - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) ## Arquitetura em Pirâmide -A maioria das CNNs usadas para processamento de imagens segue uma chamada arquitetura em pirâmide. A primeira camada convolucional aplicada às imagens originais geralmente tem um número relativamente baixo de filtros (8-16), que correspondem a diferentes combinações de pixels, como linhas horizontais/verticais de traços. No próximo nível, reduzimos a dimensão espacial da rede e aumentamos o número de filtros, o que corresponde a mais combinações possíveis de características simples. A cada camada, à medida que avançamos em direção ao classificador final, as dimensões espaciais da imagem diminuem e o número de filtros aumenta. +A maioria das CNNs utilizadas para processamento de imagens segue uma arquitetura chamada de pirâmide. A primeira camada convolucional aplicada às imagens originais geralmente tem um número relativamente baixo de filtros (8-16), que correspondem a diferentes combinações de pixels, como linhas horizontais/verticais ou traços. No nível seguinte, reduzimos a dimensão espacial da rede e aumentamos o número de filtros, o que corresponde a mais combinações possíveis de características simples. Com cada camada, à medida que avançamos para o classificador final, as dimensões espaciais da imagem diminuem e o número de filtros aumenta. -Como exemplo, vamos olhar para a arquitetura do VGG-16, uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014: +Como exemplo, vejamos a arquitetura do VGG-16, uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014: -![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pt.jpg) +![Camadas do ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch1.jpg) -![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg) +![Pirâmide do ImageNet](../../../../../lessons/4-ComputerVision/07-ConvNets/images/vgg-16-arch.jpg) > Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ## Arquiteturas de CNN Mais Conhecidas -[Continue seus estudos sobre as arquiteturas de CNN mais conhecidas](CNN_Architectures.md) +[Continue o seu estudo sobre as arquiteturas de CNN mais conhecidas](CNN_Architectures.md) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 3ac64d68..0bb2d9e1 100644 --- a/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ + # Classificação de Rostos de Animais de Estimação -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho de Laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Imagine que você precisa desenvolver uma aplicação para uma creche de animais de estimação para catalogar todos os pets. Uma das grandes funcionalidades de tal aplicação seria descobrir automaticamente a raça a partir de uma fotografia. Isso pode ser feito com sucesso usando redes neurais. +Imagine que precisa desenvolver uma aplicação para um berçário de animais de estimação para catalogar todos os animais. Uma das grandes funcionalidades de tal aplicação seria identificar automaticamente a raça a partir de uma fotografia. Isto pode ser feito com sucesso utilizando redes neuronais. -Você precisa treinar uma rede neural convolucional para classificar diferentes raças de gatos e cães usando o conjunto de dados **Pet Faces**. +Precisa treinar uma rede neuronal convolucional para classificar diferentes raças de cães e gatos utilizando o dataset **Pet Faces**. -## O Conjunto de Dados +## O Dataset -Usaremos o conjunto de dados **Pet Faces**, derivado do conjunto de dados de pets [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Ele contém 35 raças diferentes de cães e gatos. +Vamos utilizar o dataset **Pet Faces**, derivado do dataset de animais de estimação [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Este contém 35 raças diferentes de cães e gatos. -![Conjunto de dados com o qual vamos trabalhar](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pt.png) +![Dataset com o qual iremos trabalhar](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/images/data.png) -Para baixar o conjunto de dados, use este trecho de código: +Para descarregar o dataset, utilize este trecho de código: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ Para baixar o conjunto de dados, use este trecho de código: !rm petfaces.tar.gz ``` -## Iniciando o Notebook +## Notebook Inicial Comece o laboratório abrindo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) ## Conclusão -Você resolveu um problema relativamente complexo de classificação de imagens do zero! Havia muitas classes, e você ainda conseguiu obter uma precisão razoável! Também faz sentido medir a precisão top-k, porque é fácil confundir algumas das classes que não são claramente diferentes, mesmo para seres humanos. +Conseguiu resolver um problema relativamente complexo de classificação de imagens do zero! Havia bastantes classes, e ainda assim conseguiu obter uma precisão razoável! Também faz sentido medir a precisão top-k, porque é fácil confundir algumas classes que não são claramente diferentes, mesmo para seres humanos. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md index 483084eb..3af8660a 100644 --- a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,81 +1,90 @@ -# Redes Neurais Pré-treinadas e Aprendizado por Transferência + +# Redes Pré-treinadas e Aprendizagem por Transferência -Treinar CNNs pode levar muito tempo, e uma grande quantidade de dados é necessária para essa tarefa. No entanto, muito do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge uma pergunta natural - podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar diferentes imagens sem precisar de um processo de treinamento completo? +Treinar CNNs pode levar muito tempo e requer uma grande quantidade de dados. No entanto, grande parte do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge uma questão natural: podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar imagens diferentes sem precisar de um processo completo de treino? -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Essa abordagem é chamada de **aprendizado por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. No aprendizado por transferência, normalmente começamos com um modelo pré-treinado, que foi treinado em algum grande conjunto de dados de imagens, como **ImageNet**. Esses modelos já podem fazer um bom trabalho extraindo diferentes características de imagens genéricas, e em muitos casos, apenas construir um classificador em cima dessas características extraídas pode resultar em um bom resultado. +Essa abordagem é chamada de **aprendizagem por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. Na aprendizagem por transferência, normalmente começamos com um modelo pré-treinado, que foi treinado em um grande conjunto de dados de imagens, como o **ImageNet**. Esses modelos já conseguem extrair diferentes características de imagens genéricas, e, em muitos casos, apenas construir um classificador em cima dessas características extraídas pode gerar bons resultados. -> ✅ Aprendizado por Transferência é um termo que você encontra em outros campos acadêmicos, como Educação. Refere-se ao processo de levar conhecimento de um domínio e aplicá-lo a outro. +> ✅ Aprendizagem por Transferência é um termo que também aparece em outros campos acadêmicos, como Educação. Refere-se ao processo de aplicar conhecimento de um domínio a outro. -## Modelos Pré-Treinados como Extratores de Características +## Modelos Pré-treinados como Extratores de Características -As redes convolucionais que discutimos na seção anterior continham uma série de camadas, cada uma das quais deve extrair algumas características da imagem, começando por combinações de pixels de baixo nível (como linha horizontal/vertical ou traço), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande de imagens genéricas e diversas, a rede deve aprender a extrair essas características comuns. +As redes convolucionais que discutimos na seção anterior contêm várias camadas, cada uma delas destinada a extrair características da imagem, começando por combinações de pixels de baixo nível (como linhas horizontais/verticais ou traços), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande e diversificado, a rede deve aprender a extrair essas características comuns. -Tanto Keras quanto PyTorch contêm funções para carregar facilmente pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. As mais frequentemente usadas estão descritas na página de [Arquiteturas CNN](../07-ConvNets/CNN_Architectures.md) da lição anterior. Em particular, você pode considerar usar uma das seguintes: +Tanto o Keras quanto o PyTorch possuem funções para carregar facilmente pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. As mais utilizadas estão descritas na página [Arquiteturas de CNN](../07-ConvNets/CNN_Architectures.md) da lição anterior. Em particular, pode ser interessante considerar uma das seguintes: -* **VGG-16/VGG-19**, que são modelos relativamente simples que ainda oferecem boa precisão. Muitas vezes, usar VGG como uma primeira tentativa é uma boa escolha para ver como o aprendizado por transferência funciona. -* **ResNet** é uma família de modelos proposta pela Microsoft Research em 2015. Eles têm mais camadas e, portanto, consomem mais recursos. -* **MobileNet** é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você estiver com recursos limitados e puder sacrificar um pouco de precisão. +* **VGG-16/VGG-19**, que são modelos relativamente simples, mas ainda assim oferecem boa precisão. Usar o VGG como uma primeira tentativa é uma boa escolha para ver como a aprendizagem por transferência funciona. +* **ResNet**, uma família de modelos proposta pela Microsoft Research em 2015. Eles possuem mais camadas e, portanto, exigem mais recursos. +* **MobileNet**, uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se estiver com poucos recursos e puder sacrificar um pouco de precisão. -Aqui estão amostras de características extraídas de uma imagem de um gato pela rede VGG-16: +Aqui estão exemplos de características extraídas de uma imagem de um gato pela rede VGG-16: -![Características extraídas pela VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pt.png) +![Características extraídas pela VGG-16](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/features.png) -## Conjunto de Dados de Gatos vs. Cachorros +## Conjunto de Dados de Gatos vs. Cães -Neste exemplo, usaremos um conjunto de dados de [Gatos e Cachorros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. +Neste exemplo, usaremos um conjunto de dados de [Gatos e Cães](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. -## ✍️ Exercício: Aprendizado por Transferência +## ✍️ Exercício: Aprendizagem por Transferência -Vamos ver o aprendizado por transferência em ação nos cadernos correspondentes: +Vamos ver a aprendizagem por transferência em ação nos notebooks correspondentes: -* [Aprendizado por Transferência - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Aprendizado por Transferência - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) ## Visualizando o Gato Adversarial -A rede neural pré-treinada contém diferentes padrões dentro de seu *cérebro*, incluindo noções de **gato ideal** (assim como cachorro ideal, zebra ideal, etc.). Seria interessante de alguma forma **visualizar essa imagem**. No entanto, não é simples, porque os padrões estão espalhados por todo o peso da rede e também organizados em uma estrutura hierárquica. +Uma rede neural pré-treinada contém diferentes padrões dentro do seu *cérebro*, incluindo noções de **gato ideal** (assim como cão ideal, zebra ideal, etc.). Seria interessante **visualizar essa imagem** de alguma forma. No entanto, isso não é simples, porque os padrões estão espalhados pelos pesos da rede e organizados em uma estrutura hierárquica. -Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, tentar usar a técnica de **otimização por descida de gradiente** para ajustar essa imagem de tal forma que a rede comece a pensar que é um gato. +Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, usar a técnica de **otimização por descida de gradiente** para ajustar essa imagem de forma que a rede comece a pensar que é um gato. -![Loop de Otimização de Imagem](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pt.png) +![Loop de Otimização de Imagem](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat-loop.png) -No entanto, se fizermos isso, receberemos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. +No entanto, se fizermos isso, obteremos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. -Para melhorar o resultado, podemos adicionar outro termo à função de perda, que é chamado de **perda de variação**. É uma métrica que mostra quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído - revelando assim padrões visualmente mais agradáveis. Aqui está um exemplo de tais imagens "ideais", que são classificadas como gato e como zebra com alta probabilidade: +Para melhorar o resultado, podemos adicionar outro termo à função de perda, chamado **perda de variação**. É uma métrica que mostra quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído, revelando padrões mais visualmente atraentes. Aqui está um exemplo de imagens "ideais", classificadas como gato e zebra com alta probabilidade: -![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pt.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pt.png) +![Gato Ideal](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-cat.png) | ![Zebra Ideal](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/ideal-zebra.png) -----|----- *Gato Ideal* | *Zebra Ideal* -Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queiramos enganar uma rede neural e fazer um cachorro parecer um gato. Se pegarmos a imagem de um cachorro, que é reconhecida pela rede como um cachorro, podemos então ajustá-la um pouco usando otimização por descida de gradiente, até que a rede comece a classificá-la como um gato: +Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queremos enganar uma rede neural e fazer um cão parecer um gato. Se pegarmos a imagem de um cão, que é reconhecida pela rede como um cão, podemos ajustá-la um pouco usando otimização por descida de gradiente até que a rede comece a classificá-la como um gato: -![Imagem de um Cachorro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pt.png) | ![Imagem de um cachorro classificada como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pt.png) +![Imagem de um Cão](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/original-dog.png) | ![Imagem de um cão classificada como gato](../../../../../lessons/4-ComputerVision/08-TransferLearning/images/adversarial-dog.png) -----|----- -*Imagem original de um cachorro* | *Imagem de um cachorro classificada como gato* +*Imagem original de um cão* | *Imagem de um cão classificada como gato* -Veja o código para reproduzir os resultados acima no seguinte caderno: +Veja o código para reproduzir os resultados acima no seguinte notebook: -* [Gato Ideal e Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +* [Ideal e Adversarial Cat - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) ## Conclusão -Usando aprendizado por transferência, você pode rapidamente montar um classificador para uma tarefa de classificação de objetos personalizada e alcançar alta precisão. Você pode ver que tarefas mais complexas que estamos resolvendo agora requerem maior poder computacional e não podem ser facilmente resolvidas na CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando recursos computacionais menores, o que resulta em uma precisão apenas ligeiramente inferior. +Usando a aprendizagem por transferência, é possível montar rapidamente um classificador para uma tarefa de classificação de objetos personalizada e alcançar alta precisão. É possível perceber que tarefas mais complexas que estamos resolvendo agora exigem maior poder computacional e não podem ser facilmente resolvidas no CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando menos recursos computacionais, o que resulta em uma precisão ligeiramente menor. ## 🚀 Desafio -Nos cadernos acompanhantes, há notas na parte inferior sobre como o conhecimento de transferência funciona melhor com dados de treinamento um tanto semelhantes (um novo tipo de animal, talvez). Faça algumas experimentações com tipos de imagens completamente novos para ver quão bem ou mal seus modelos de conhecimento de transferência se saem. +Nos notebooks que acompanham, há notas no final sobre como o conhecimento transferido funciona melhor com dados de treino relativamente semelhantes (um novo tipo de animal, talvez). Faça algumas experiências com tipos completamente novos de imagens para ver como os modelos de conhecimento transferido funcionam bem ou mal. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Revisão & Autoestudo +## Revisão e Estudo Individual -Leia [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre algumas outras maneiras de treinar seus modelos. +Leia o documento [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre outras formas de treinar seus modelos. ## [Tarefa](lab/README.md) -Neste laboratório, usaremos um conjunto de dados de animais de estimação da vida real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) com 35 raças de gatos e cachorros, e construiremos um classificador de aprendizado por transferência. +Neste laboratório, usaremos o conjunto de dados real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) de animais de estimação, com 35 raças de gatos e cães, e construiremos um classificador de aprendizagem por transferência. **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index db64d9b0..2b0ed7cb 100644 --- a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,18 +1,27 @@ -# Truques de Treinamento em Deep Learning + +# Truques para Treino em Deep Learning -À medida que as redes neurais se tornam mais profundas, o processo de treinamento se torna cada vez mais desafiador. Um dos principais problemas é o chamado [gradientes que desaparecem](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ou [gradientes explodindo](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Este post](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) oferece uma boa introdução a esses problemas. +À medida que as redes neurais se tornam mais profundas, o processo de treino torna-se cada vez mais desafiador. Um dos principais problemas é o chamado [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ou [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Este artigo](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) oferece uma boa introdução a esses problemas. -Para tornar o treinamento de redes profundas mais eficiente, existem algumas técnicas que podem ser utilizadas. +Para tornar o treino de redes profundas mais eficiente, existem algumas técnicas que podem ser utilizadas. -## Manter valores em intervalo razoável +## Manter valores num intervalo razoável -Para tornar os cálculos numéricos mais estáveis, queremos garantir que todos os valores dentro de nossa rede neural estejam em uma escala razoável, tipicamente [-1..1] ou [0..1]. Não é um requisito muito rígido, mas a natureza dos cálculos em ponto flutuante é tal que valores de magnitudes diferentes não podem ser manipulados com precisão juntos. Por exemplo, se somarmos 10-10 e 1010, provavelmente obteremos 1010, porque o valor menor seria "convertido" para a mesma ordem que o maior, e assim a mantissa seria perdida. +Para tornar os cálculos numéricos mais estáveis, é importante garantir que todos os valores dentro da rede neural estejam numa escala razoável, tipicamente [-1..1] ou [0..1]. Não é um requisito muito rígido, mas a natureza dos cálculos em ponto flutuante é tal que valores de magnitudes diferentes não podem ser manipulados com precisão juntos. Por exemplo, se somarmos 10-10 e 1010, é provável que obtenhamos 1010, porque o valor menor seria "convertido" para a mesma ordem do maior, e assim a mantissa seria perdida. -A maioria das funções de ativação tem não-linearidades em torno de [-1..1], e, portanto, faz sentido escalar todos os dados de entrada para o intervalo [-1..1] ou [0..1]. +A maioria das funções de ativação tem não-linearidades em torno de [-1..1], e por isso faz sentido escalar todos os dados de entrada para o intervalo [-1..1] ou [0..1]. ## Inicialização de Pesos -Idealmente, queremos que os valores estejam na mesma faixa após passar pelas camadas da rede. Portanto, é importante inicializar os pesos de maneira a preservar a distribuição dos valores. +Idealmente, queremos que os valores permaneçam na mesma faixa após passarem pelas camadas da rede. Assim, é importante inicializar os pesos de forma a preservar a distribuição dos valores. A distribuição normal **N(0,1)** não é uma boa ideia, porque se tivermos *n* entradas, o desvio padrão da saída seria *n*, e os valores provavelmente sairão do intervalo [0..1]. @@ -20,89 +29,89 @@ As seguintes inicializações são frequentemente utilizadas: * Distribuição uniforme -- `uniform` * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** garante que para entradas com média zero e desvio padrão de 1, a mesma média/desvio padrão permanecerá - * **N(0,√2/(n_in+n_out))** -- a chamada **inicialização Xavier** (`glorot`), ajuda a manter os sinais dentro da faixa durante a propagação tanto para frente quanto para trás + * **N(0,1/√n_in)** garante que para entradas com média zero e desvio padrão de 1, a mesma média/desvio padrão será mantida + * **N(0,√2/(n_in+n_out))** -- chamada **Xavier initialization** (`glorot`), ajuda a manter os sinais na faixa durante a propagação direta e reversa -## Normalização em Lote +## Normalização por Lote -Mesmo com a inicialização adequada dos pesos, os pesos podem ficar arbitrariamente grandes ou pequenos durante o treinamento, e isso pode levar os sinais para fora da faixa adequada. Podemos trazer os sinais de volta usando uma das técnicas de **normalização**. Embora haja várias delas (Normalização de pesos, Normalização de camadas), a mais utilizada é a Normalização em Lote. +Mesmo com uma inicialização adequada dos pesos, estes podem ficar arbitrariamente grandes ou pequenos durante o treino, levando os sinais para fora da faixa apropriada. Podemos trazer os sinais de volta utilizando uma das técnicas de **normalização**. Embora existam várias delas (Normalização de Pesos, Normalização de Camadas), a mais utilizada é a Normalização por Lote. -A ideia da **normalização em lote** é levar em conta todos os valores do minibatch e realizar a normalização (ou seja, subtrair a média e dividir pelo desvio padrão) com base nesses valores. Isso é implementado como uma camada de rede que realiza essa normalização após aplicar os pesos, mas antes da função de ativação. Como resultado, é provável que vejamos uma maior precisão final e um treinamento mais rápido. +A ideia da **normalização por lote** é considerar todos os valores do minibatch e realizar a normalização (ou seja, subtrair a média e dividir pelo desvio padrão) com base nesses valores. É implementada como uma camada na rede que realiza essa normalização após aplicar os pesos, mas antes da função de ativação. Como resultado, é provável que se obtenha maior precisão final e treino mais rápido. -Aqui está o [artigo original](https://arxiv.org/pdf/1502.03167.pdf) sobre normalização em lote, a [explicação na Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) e [um bom post introdutório no blog](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (e um [em russo](https://habrahabr.ru/post/309302/)). +Aqui está o [artigo original](https://arxiv.org/pdf/1502.03167.pdf) sobre normalização por lote, a [explicação na Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), e [um bom artigo introdutório](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (e outro [em russo](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout** é uma técnica interessante que remove uma certa porcentagem de neurônios aleatórios durante o treinamento. Também é implementado como uma camada com um parâmetro (percentagem de neurônios a serem removidos, tipicamente 10%-50%), e durante o treinamento, zera elementos aleatórios do vetor de entrada, antes de passá-lo para a próxima camada. +**Dropout** é uma técnica interessante que remove uma certa percentagem de neurónios aleatórios durante o treino. É implementada como uma camada com um parâmetro (percentagem de neurónios a remover, tipicamente 10%-50%), e durante o treino zera elementos aleatórios do vetor de entrada antes de passá-lo para a próxima camada. -Embora isso possa parecer uma ideia estranha, você pode ver o efeito do dropout no treinamento do classificador de dígitos MNIST no notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Isso acelera o treinamento e nos permite alcançar maior precisão em menos épocas de treinamento. +Embora possa parecer uma ideia estranha, pode-se observar o efeito do dropout no treino de um classificador de dígitos MNIST no notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Ele acelera o treino e permite alcançar maior precisão em menos épocas de treino. -Esse efeito pode ser explicado de várias maneiras: +Este efeito pode ser explicado de várias formas: - * Pode ser considerado um fator de choque aleatório para o modelo, que tira a otimização de um mínimo local - * Pode ser considerado como *média implícita de modelos*, porque podemos dizer que durante o dropout estamos treinando um modelo ligeiramente diferente + * Pode ser considerado como um fator de choque aleatório para o modelo, que o tira de mínimos locais + * Pode ser considerado como *média implícita de modelos*, porque durante o dropout estamos a treinar modelos ligeiramente diferentes -> *Algumas pessoas dizem que quando uma pessoa bêbada tenta aprender algo, ela se lembrará disso melhor na manhã seguinte, em comparação com uma pessoa sóbria, porque um cérebro com alguns neurônios mal funcionando tenta se adaptar melhor para entender o significado. Nunca testamos se isso é verdade ou não.* +> *Algumas pessoas dizem que quando uma pessoa bêbada tenta aprender algo, ela lembra-se melhor no dia seguinte, comparando com uma pessoa sóbria, porque um cérebro com alguns neurónios a funcionar mal tenta adaptar-se melhor para captar o significado. Nunca testámos se isto é verdade ou não.* -## Prevenindo o overfitting +## Prevenir overfitting -Um dos aspectos muito importantes do deep learning é ser capaz de prevenir [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Embora possa ser tentador usar um modelo de rede neural muito poderoso, devemos sempre equilibrar o número de parâmetros do modelo com o número de amostras de treinamento. +Um dos aspetos muito importantes do deep learning é ser capaz de prevenir o [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Embora possa ser tentador usar um modelo de rede neural muito poderoso, devemos sempre equilibrar o número de parâmetros do modelo com o número de amostras de treino. -> Certifique-se de entender o conceito de [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que introduzimos anteriormente! +> Certifique-se de que compreende o conceito de [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que introduzimos anteriormente! -Existem várias maneiras de prevenir o overfitting: +Existem várias formas de prevenir o overfitting: - * Parada antecipada -- monitorar continuamente o erro no conjunto de validação e interromper o treinamento quando o erro de validação começar a aumentar. - * Decaimento de peso explícito / Regularização -- adicionar uma penalidade extra à função de perda para altos valores absolutos de pesos, o que impede o modelo de obter resultados muito instáveis - * Média de Modelos -- treinar vários modelos e, em seguida, fazer a média dos resultados. Isso ajuda a minimizar a variância. + * Paragem antecipada -- monitorizar continuamente o erro no conjunto de validação e parar o treino quando o erro de validação começar a aumentar. + * Decaimento explícito de pesos / Regularização -- adicionar uma penalização extra à função de perda para valores absolutos altos de pesos, o que previne resultados muito instáveis no modelo + * Média de Modelos -- treinar vários modelos e depois fazer a média dos resultados. Isto ajuda a minimizar a variância. * Dropout (Média Implícita de Modelos) -## Otimizadores / Algoritmos de Treinamento +## Otimizadores / Algoritmos de Treino -Outro aspecto importante do treinamento é escolher um bom algoritmo de treinamento. Embora o clássico **gradiente descendente** seja uma escolha razoável, às vezes pode ser muito lento ou resultar em outros problemas. +Outro aspeto importante do treino é escolher um bom algoritmo de treino. Embora o **gradient descent** clássico seja uma escolha razoável, pode por vezes ser demasiado lento ou resultar em outros problemas. -Em deep learning, usamos **Descent Gradient Estocástico** (SGD), que é um gradiente descendente aplicado a minibatches, selecionados aleatoriamente do conjunto de treinamento. Os pesos são ajustados usando esta fórmula: +Em deep learning, utilizamos **Stochastic Gradient Descent** (SGD), que é um gradient descent aplicado a minibatches, selecionados aleatoriamente do conjunto de treino. Os pesos são ajustados utilizando esta fórmula: wt+1 = wt - η∇ℒ -### Momento +### Momentum -No **SGD com momento**, mantemos uma parte do gradiente de passos anteriores. É semelhante a quando estamos nos movendo em algum lugar com inércia, e recebemos um golpe em uma direção diferente; nossa trajetória não muda imediatamente, mas mantém parte do movimento original. Aqui introduzimos outro vetor v para representar a *velocidade*: +No **momentum SGD**, mantemos uma parte do gradiente dos passos anteriores. É semelhante a quando nos movemos com inércia e recebemos um empurrão numa direção diferente; a nossa trajetória não muda imediatamente, mas mantém parte do movimento original. Aqui introduzimos outro vetor v para representar a *velocidade*: * vt+1 = γ vt - η∇ℒ * wt+1 = wt+vt+1 -Aqui, o parâmetro γ indica a extensão em que levamos a inércia em conta: γ=0 corresponde ao SGD clássico; γ=1 é uma equação de movimento puro. +Aqui o parâmetro γ indica até que ponto consideramos a inércia: γ=0 corresponde ao SGD clássico; γ=1 é uma equação de movimento puro. ### Adam, Adagrad, etc. -Uma vez que em cada camada multiplicamos sinais por alguma matriz Wi, dependendo de ||Wi||, o gradiente pode tanto diminuir e se aproximar de 0, quanto aumentar indefinidamente. Essa é a essência do problema dos Gradientes Explodindo/Desaparecendo. +Como em cada camada multiplicamos os sinais por uma matriz Wi, dependendo de ||Wi||, o gradiente pode diminuir e ser próximo de 0, ou crescer indefinidamente. Este é o cerne do problema de Exploding/Vanishing Gradients. -Uma das soluções para esse problema é usar apenas a direção do gradiente na equação e ignorar o valor absoluto, ou seja, +Uma das soluções para este problema é usar apenas a direção do gradiente na equação e ignorar o valor absoluto, ou seja: wt+1 = wt - η(∇ℒ/||∇ℒ||), onde ||∇ℒ|| = √∑(∇ℒ)2 -Esse algoritmo é chamado de **Adagrad**. Outros algoritmos que usam a mesma ideia: **RMSProp**, **Adam**. +Este algoritmo é chamado **Adagrad**. Outros algoritmos que utilizam a mesma ideia: **RMSProp**, **Adam** -> **Adam** é considerado um algoritmo muito eficiente para muitas aplicações, então, se você não tem certeza de qual usar - use Adam. +> **Adam** é considerado um algoritmo muito eficiente para muitas aplicações, por isso, se não tiver certeza de qual usar - use Adam. -### Recorte de Gradiente +### Gradient clipping -O recorte de gradiente é uma extensão da ideia acima. Quando ||∇ℒ|| ≤ θ, consideramos o gradiente original na otimização de pesos, e quando ||∇ℒ|| > θ - dividimos o gradiente pela sua norma. Aqui θ é um parâmetro, na maioria dos casos podemos tomar θ=1 ou θ=10. +Gradient clipping é uma extensão da ideia acima. Quando ||∇ℒ|| ≤ θ, consideramos o gradiente original na otimização dos pesos, e quando ||∇ℒ|| > θ - dividimos o gradiente pela sua norma. Aqui θ é um parâmetro; na maioria dos casos podemos usar θ=1 ou θ=10. -### Decaimento da taxa de aprendizado +### Decaimento da taxa de aprendizagem -O sucesso do treinamento muitas vezes depende do parâmetro da taxa de aprendizado η. É lógico supor que valores maiores de η resultem em um treinamento mais rápido, que é algo que normalmente queremos no início do treinamento, e então um valor menor de η nos permite ajustar a rede. Assim, na maioria dos casos, queremos diminuir η durante o processo de treinamento. +O sucesso do treino muitas vezes depende do parâmetro de taxa de aprendizagem η. É lógico assumir que valores maiores de η resultam em treino mais rápido, algo que normalmente queremos no início do treino, e depois valores menores de η permitem ajustar melhor a rede. Assim, na maioria dos casos queremos diminuir η durante o processo de treino. -Isso pode ser feito multiplicando η por algum número (por exemplo, 0.98) após cada época de treinamento, ou usando um **cronograma de taxa de aprendizado** mais complicado. +Isto pode ser feito multiplicando η por um número (ex. 0.98) após cada época de treino, ou utilizando um **cronograma de taxa de aprendizagem** mais complicado. -## Diferentes Arquiteturas de Rede +## Diferentes Arquiteturas de Redes -Selecionar a arquitetura de rede certa para o seu problema pode ser complicado. Normalmente, escolheríamos uma arquitetura que já se provou eficaz para nossa tarefa específica (ou uma semelhante). Aqui está uma [boa visão geral](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) das arquiteturas de redes neurais para visão computacional. +Selecionar a arquitetura certa para o seu problema pode ser complicado. Normalmente, escolhemos uma arquitetura que já tenha demonstrado funcionar para a nossa tarefa específica (ou uma semelhante). Aqui está uma [boa visão geral](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) de arquiteturas de redes neurais para visão computacional. -> É importante selecionar uma arquitetura que seja poderosa o suficiente para o número de amostras de treinamento que temos. Selecionar um modelo muito poderoso pode resultar em [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). +> É importante selecionar uma arquitetura que seja suficientemente poderosa para o número de amostras de treino que temos. Escolher um modelo demasiado poderoso pode resultar em [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). -Outra boa abordagem seria usar uma arquitetura que se ajuste automaticamente à complexidade necessária. Em certa medida, as arquiteturas **ResNet** e **Inception** são autoajustáveis. [Mais sobre arquiteturas de visão computacional](../07-ConvNets/CNN_Architectures.md). +Outra boa abordagem seria usar uma arquitetura que se ajuste automaticamente à complexidade necessária. Até certo ponto, as arquiteturas **ResNet** e **Inception** são autoajustáveis. [Mais sobre arquiteturas de visão computacional](../07-ConvNets/CNN_Architectures.md) **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index 5f218f39..89efb75b 100644 --- a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,16 +1,25 @@ -# Classificação de Animais de Estimação de Oxford usando Aprendizado por Transferência + +# Classificação de Oxford Pets usando Transfer Learning -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo AI for Beginners](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Imagine que você precisa desenvolver uma aplicação para uma creche de animais de estimação para catalogar todos os pets. Uma das grandes funcionalidades de tal aplicação seria descobrir automaticamente a raça a partir de uma fotografia. Neste trabalho, usaremos aprendizado por transferência para classificar imagens de animais de estimação da vida real do conjunto de dados [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). +Imagine que precisa desenvolver uma aplicação para um berçário de animais de estimação para catalogar todos os animais. Uma das grandes funcionalidades de tal aplicação seria identificar automaticamente a raça a partir de uma fotografia. Neste trabalho, vamos usar transfer learning para classificar imagens reais de animais de estimação do conjunto de dados [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). ## O Conjunto de Dados -Usaremos o conjunto de dados original de animais de estimação [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contém 35 raças diferentes de cães e gatos. +Usaremos o conjunto de dados original [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contém 35 raças diferentes de cães e gatos. -Para baixar o conjunto de dados, utilize este trecho de código: +Para descarregar o conjunto de dados, utilize este trecho de código: ```python !wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz @@ -18,13 +27,13 @@ Para baixar o conjunto de dados, utilize este trecho de código: !rm images.tar.gz ``` -## Iniciando o Notebook +## Notebook Inicial -Comece o laboratório abrindo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) +Comece o trabalho prático abrindo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) ## Conclusão -O aprendizado por transferência e as redes pré-treinadas nos permitem resolver problemas de classificação de imagens do mundo real de maneira relativamente fácil. No entanto, redes pré-treinadas funcionam bem em imagens de tipos semelhantes, e se começarmos a classificar imagens muito diferentes (por exemplo, imagens médicas), é provável que obtenhamos resultados muito piores. +Transfer learning e redes pré-treinadas permitem-nos resolver problemas reais de classificação de imagens de forma relativamente simples. No entanto, redes pré-treinadas funcionam bem em imagens de tipos semelhantes, e se começarmos a classificar imagens muito diferentes (por exemplo, imagens médicas), é provável que obtenhamos resultados significativamente piores. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas que possam surgir do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md index 60cdcd76..b593ed39 100644 --- a/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,100 +1,109 @@ + # Autoencoders -Ao treinar CNNs, um dos problemas é que precisamos de muitos dados rotulados. No caso da classificação de imagens, precisamos separar as imagens em diferentes classes, o que é um esforço manual. +Ao treinar CNNs, um dos problemas é que precisamos de muitos dados rotulados. No caso da classificação de imagens, é necessário separar as imagens em diferentes classes, o que exige um esforço manual. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -No entanto, podemos querer usar dados brutos (não rotulados) para treinar extratores de características CNN, o que é chamado de **aprendizado auto-supervisionado**. Em vez de rótulos, usaremos imagens de treinamento como entrada e saída da rede. A ideia principal do **autoencoder** é que teremos uma **rede de codificação** que converte a imagem de entrada em algum **espaço latente** (normalmente é apenas um vetor de um tamanho menor), e então a **rede de decodificação**, cujo objetivo seria reconstruir a imagem original. +No entanto, podemos querer usar dados brutos (não rotulados) para treinar extratores de características de CNN, o que é chamado de **aprendizagem auto-supervisionada**. Em vez de rótulos, usaremos as imagens de treino como entrada e saída da rede. A ideia principal do **autoencoder** é que teremos uma **rede codificadora** que converte a imagem de entrada em algum **espaço latente** (normalmente é apenas um vetor de tamanho reduzido), e uma **rede decodificadora**, cujo objetivo será reconstruir a imagem original. > ✅ Um [autoencoder](https://wikipedia.org/wiki/Autoencoder) é "um tipo de rede neural artificial usada para aprender codificações eficientes de dados não rotulados." -Como estamos treinando um autoencoder para capturar o máximo de informações da imagem original possível para uma reconstrução precisa, a rede tenta encontrar a melhor **incorporação** das imagens de entrada para capturar o significado. +Como estamos a treinar um autoencoder para capturar o máximo de informação possível da imagem original para uma reconstrução precisa, a rede tenta encontrar a melhor **representação** das imagens de entrada para capturar o seu significado. -![Diagrama do AutoEncoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pt.jpg) +![Diagrama do Autoencoder](../../../../../lessons/4-ComputerVision/09-Autoencoders/images/autoencoder_schema.jpg) > Imagem do [blog Keras](https://blog.keras.io/building-autoencoders-in-keras.html) ## Cenários para usar Autoencoders -Embora reconstruir imagens originais não pareça útil por si só, existem alguns cenários onde os autoencoders são especialmente úteis: +Embora reconstruir imagens originais possa não parecer útil por si só, existem alguns cenários em que os autoencoders são especialmente úteis: -* **Redução da dimensão das imagens para visualização** ou **treinamento de incorporações de imagem**. Normalmente, os autoencoders apresentam resultados melhores do que PCA, pois levam em consideração a natureza espacial das imagens e características hierárquicas. -* **Remoção de ruído**, ou seja, eliminar ruído da imagem. Como o ruído carrega muitas informações inúteis, o autoencoder não consegue ajustá-lo todo em um espaço latente relativamente pequeno e, assim, captura apenas a parte importante da imagem. Ao treinar denoisers, começamos com imagens originais e usamos imagens com ruído adicionado artificialmente como entrada para o autoencoder. -* **Super-resolução**, aumentando a resolução da imagem. Começamos com imagens de alta resolução e usamos a imagem de baixa resolução como entrada do autoencoder. -* **Modelos generativos**. Uma vez que treinamos o autoencoder, a parte do decodificador pode ser usada para criar novos objetos a partir de vetores latentes aleatórios. +* **Reduzir a dimensão das imagens para visualização** ou **treinar representações de imagens**. Normalmente, os autoencoders oferecem melhores resultados do que PCA, porque levam em consideração a natureza espacial das imagens e as características hierárquicas. +* **Remoção de ruído**, ou seja, eliminar o ruído da imagem. Como o ruído contém muita informação inútil, o autoencoder não consegue encaixar tudo no espaço latente relativamente pequeno e, assim, captura apenas a parte importante da imagem. Ao treinar removedores de ruído, começamos com imagens originais e usamos imagens com ruído artificialmente adicionado como entrada para o autoencoder. +* **Super-resolução**, aumentar a resolução da imagem. Começamos com imagens de alta resolução e usamos a imagem com resolução mais baixa como entrada do autoencoder. +* **Modelos generativos**. Depois de treinar o autoencoder, a parte decodificadora pode ser usada para criar novos objetos a partir de vetores latentes aleatórios. ## Autoencoders Variacionais (VAE) -Autoencoders tradicionais reduzem a dimensão dos dados de entrada de alguma forma, identificando as características importantes das imagens de entrada. No entanto, vetores latentes muitas vezes não fazem muito sentido. Em outras palavras, tomando o conjunto de dados MNIST como exemplo, descobrir quais dígitos correspondem a diferentes vetores latentes não é uma tarefa fácil, porque vetores latentes próximos não necessariamente correspondem aos mesmos dígitos. +Os autoencoders tradicionais reduzem a dimensão dos dados de entrada de alguma forma, identificando as características importantes das imagens de entrada. No entanto, os vetores latentes muitas vezes não fazem muito sentido. Por outras palavras, usando o conjunto de dados MNIST como exemplo, identificar quais dígitos correspondem a diferentes vetores latentes não é uma tarefa fácil, porque vetores latentes próximos não correspondem necessariamente aos mesmos dígitos. -Por outro lado, para treinar modelos *generativos*, é melhor ter algum entendimento do espaço latente. Essa ideia nos leva ao **autoencoder variacional** (VAE). +Por outro lado, para treinar modelos *generativos*, é melhor ter algum entendimento do espaço latente. Esta ideia leva-nos ao **autoencoder variacional** (VAE). -VAE é o autoencoder que aprende a prever a *distribuição estatística* dos parâmetros latentes, chamada de **distribuição latente**. Por exemplo, podemos querer que os vetores latentes sejam distribuídos normalmente com uma média zmean e desvio padrão zsigma (tanto a média quanto o desvio padrão são vetores de alguma dimensionalidade d). O codificador no VAE aprende a prever esses parâmetros, e então o decodificador pega um vetor aleatório dessa distribuição para reconstruir o objeto. +O VAE é um autoencoder que aprende a prever a *distribuição estatística* dos parâmetros latentes, chamada de **distribuição latente**. Por exemplo, podemos querer que os vetores latentes sejam distribuídos normalmente com uma média zmean e desvio padrão zsigma (tanto a média quanto o desvio padrão são vetores de alguma dimensionalidade d). O codificador no VAE aprende a prever esses parâmetros, e o decodificador utiliza um vetor aleatório dessa distribuição para reconstruir o objeto. -Para resumir: +Resumindo: - * A partir do vetor de entrada, prevemos `z_mean` e `z_log_sigma` (em vez de prever o desvio padrão em si, prevemos seu logaritmo) + * A partir do vetor de entrada, prevemos `z_mean` e `z_log_sigma` (em vez de prever o desvio padrão diretamente, prevemos o seu logaritmo) * Amostramos um vetor `sample` da distribuição N(zmean,exp(zlog\_sigma)) * O decodificador tenta decodificar a imagem original usando `sample` como vetor de entrada -> Imagem do [este post no blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) de Isaak Dykeman +> Imagem deste [post no blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) por Isaak Dykeman -Autoencoders variacionais usam uma função de perda complexa que consiste em duas partes: +Os autoencoders variacionais utilizam uma função de perda complexa que consiste em duas partes: -* **Perda de reconstrução** é a função de perda que mostra quão próxima uma imagem reconstruída está do alvo (pode ser o Erro Quadrático Médio, ou MSE). É a mesma função de perda que em autoencoders normais. -* **Perda KL**, que garante que as distribuições das variáveis latentes permaneçam próximas à distribuição normal. É baseada na noção de [divergência de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - uma métrica para estimar quão semelhantes são duas distribuições estatísticas. +* **Perda de reconstrução**, que é a função de perda que mostra quão próxima a imagem reconstruída está do alvo (pode ser o Erro Quadrático Médio, ou MSE). É a mesma função de perda usada em autoencoders normais. +* **Perda KL**, que garante que as distribuições das variáveis latentes permaneçam próximas da distribuição normal. Baseia-se no conceito de [divergência de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - uma métrica para estimar quão semelhantes são duas distribuições estatísticas. -Uma vantagem importante dos VAEs é que eles nos permitem gerar novas imagens relativamente facilmente, porque sabemos de qual distribuição amostrar vetores latentes. Por exemplo, se treinarmos um VAE com vetor latente 2D no MNIST, podemos então variar os componentes do vetor latente para obter diferentes dígitos: +Uma vantagem importante dos VAEs é que permitem gerar novas imagens de forma relativamente fácil, porque sabemos de qual distribuição amostrar os vetores latentes. Por exemplo, se treinarmos um VAE com vetor latente 2D no MNIST, podemos variar os componentes do vetor latente para obter diferentes dígitos: vaemnist -> Imagem de [Dmitry Soshnikov](http://soshnikov.com) +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) -Observe como as imagens se misturam umas às outras, à medida que começamos a obter vetores latentes de diferentes porções do espaço de parâmetros latentes. Também podemos visualizar esse espaço em 2D: +Observe como as imagens se misturam umas com as outras, à medida que começamos a obter vetores latentes de diferentes partes do espaço de parâmetros latentes. Também podemos visualizar este espaço em 2D: -cluster vaemnist +vaemnist cluster -> Imagem de [Dmitry Soshnikov](http://soshnikov.com) +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) ## ✍️ Exercícios: Autoencoders -Saiba mais sobre autoencoders nestes cadernos correspondentes: +Aprenda mais sobre autoencoders nestes notebooks correspondentes: * [Autoencoders em TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) * [Autoencoders em PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) ## Propriedades dos Autoencoders -* **Específico para dados** - eles funcionam bem apenas com o tipo de imagens para as quais foram treinados. Por exemplo, se treinarmos uma rede de super-resolução em flores, ela não funcionará bem em retratos. Isso ocorre porque a rede pode produzir uma imagem de maior resolução ao captar detalhes finos das características aprendidas a partir do conjunto de dados de treinamento. -* **Com perdas** - a imagem reconstruída não é a mesma que a imagem original. A natureza da perda é definida pela *função de perda* usada durante o treinamento. -* Funciona com **dados não rotulados**. +* **Específicos para os dados** - funcionam bem apenas com o tipo de imagens em que foram treinados. Por exemplo, se treinarmos uma rede de super-resolução em flores, ela não funcionará bem em retratos. Isso ocorre porque a rede pode produzir imagens de maior resolução ao usar detalhes finos aprendidos a partir do conjunto de dados de treino. +* **Com perdas** - a imagem reconstruída não é exatamente igual à imagem original. A natureza da perda é definida pela *função de perda* usada durante o treino. +* Funciona com **dados não rotulados** -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## Conclusão -Nesta lição, você aprendeu sobre os vários tipos de autoencoders disponíveis para o cientista de IA. Você aprendeu como construí-los e como usá-los para reconstruir imagens. Você também aprendeu sobre o VAE e como usá-lo para gerar novas imagens. +Nesta lição, aprendeu sobre os vários tipos de autoencoders disponíveis para o cientista de IA. Aprendeu como construí-los e como usá-los para reconstruir imagens. Também aprendeu sobre o VAE e como usá-lo para gerar novas imagens. ## 🚀 Desafio -Nesta lição, você aprendeu sobre o uso de autoencoders para imagens. Mas eles também podem ser usados para música! Confira o projeto [MusicVAE](https://magenta.tensorflow.org/music-vae) do projeto Magenta, que usa autoencoders para aprender a reconstruir música. Faça alguns [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) com esta biblioteca para ver o que você pode criar. +Nesta lição, aprendeu a usar autoencoders para imagens. Mas eles também podem ser usados para música! Explore o projeto [MusicVAE](https://magenta.tensorflow.org/music-vae) do Magenta, que utiliza autoencoders para aprender a reconstruir música. Faça alguns [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) com esta biblioteca para ver o que consegue criar. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Revisão & Autoestudo +## Revisão e Autoestudo Para referência, leia mais sobre autoencoders nestes recursos: * [Construindo Autoencoders em Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -* [Post no blog sobre NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Post no blog NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) * [Autoencoders Variacionais Explicados](https://kvfrans.com/variational-autoencoders-explained/) * [Autoencoders Variacionais Condicionais](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ## Tarefa -No final de [este caderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), você encontrará uma 'tarefa' - use isso como sua tarefa. +No final deste [notebook usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrará uma 'tarefa' - use-a como sua tarefa. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/10-GANs/README.md b/translations/pt/lessons/4-ComputerVision/10-GANs/README.md index 6822f3b8..1c195961 100644 --- a/translations/pt/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/pt/lessons/4-ComputerVision/10-GANs/README.md @@ -1,10 +1,19 @@ -# Redes Adversariais Generativas + +# Redes Generativas Adversárias -Na seção anterior, aprendemos sobre **modelos geradores**: modelos que podem gerar novas imagens semelhantes às do conjunto de dados de treinamento. O VAE foi um bom exemplo de um modelo gerador. +Na seção anterior, aprendemos sobre **modelos generativos**: modelos que podem gerar novas imagens semelhantes às do conjunto de dados de treino. O VAE foi um bom exemplo de modelo generativo. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -No entanto, se tentarmos gerar algo realmente significativo, como uma pintura em uma resolução razoável, com o VAE, veremos que o treinamento não converge bem. Para esse caso de uso, devemos aprender sobre outra arquitetura especificamente direcionada a modelos geradores - **Redes Adversariais Generativas**, ou GANs. +No entanto, se tentarmos gerar algo realmente significativo, como uma pintura com resolução razoável, usando o VAE, veremos que o treino não converge bem. Para este caso, devemos aprender sobre outra arquitetura especificamente voltada para modelos generativos - **Redes Generativas Adversárias**, ou GANs. A ideia principal de uma GAN é ter duas redes neurais que serão treinadas uma contra a outra: @@ -12,23 +21,23 @@ A ideia principal de uma GAN é ter duas redes neurais que serão treinadas uma > Imagem por [Dmitry Soshnikov](http://soshnikov.com) -> ✅ Um pequeno vocabulário: -> * **Gerador** é uma rede que recebe um vetor aleatório e produz a imagem como resultado. -> * **Discriminador** é uma rede que recebe uma imagem e deve dizer se é uma imagem real (do conjunto de dados de treinamento) ou se foi gerada por um gerador. É essencialmente um classificador de imagens. +> ✅ Um pouco de vocabulário: +> * **Gerador** é uma rede que recebe um vetor aleatório e produz uma imagem como resultado. +> * **Discriminador** é uma rede que recebe uma imagem e deve dizer se é uma imagem real (do conjunto de dados de treino) ou se foi gerada por um gerador. Essencialmente, é um classificador de imagens. ### Discriminador -A arquitetura do discriminador não difere de uma rede de classificação de imagens comum. No caso mais simples, pode ser um classificador totalmente conectado, mas provavelmente será uma [rede convolucional](../07-ConvNets/README.md). +A arquitetura do discriminador não difere de uma rede de classificação de imagens comum. No caso mais simples, pode ser um classificador totalmente conectado, mas, muito provavelmente, será uma [rede convolucional](../07-ConvNets/README.md). > ✅ Uma GAN baseada em redes convolucionais é chamada de [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) -Um discriminador CNN consiste nas seguintes camadas: várias convoluções + pooling (com tamanho espacial decrescente) e uma ou mais camadas totalmente conectadas para obter o "vetor de características", classificador binário final. +Um discriminador CNN consiste nas seguintes camadas: várias convoluções+poolings (com tamanho espacial decrescente) e uma ou mais camadas totalmente conectadas para obter o "vetor de características", seguido de um classificador binário final. -> ✅ Um 'pooling' neste contexto é uma técnica que reduz o tamanho da imagem. "Camadas de pooling reduzem as dimensões dos dados combinando as saídas de grupos de neurônios em uma camada em um único neurônio na próxima camada." - [fonte](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ Um 'pooling' neste contexto é uma técnica que reduz o tamanho da imagem. "As camadas de pooling reduzem as dimensões dos dados combinando as saídas de clusters de neurónios em uma camada em um único neurónio na próxima camada." - [fonte](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### Gerador -Um Gerador é um pouco mais complicado. Você pode considerá-lo como um discriminador invertido. Começando de um vetor latente (no lugar de um vetor de características), ele tem uma camada totalmente conectada para convertê-lo no tamanho/formato necessário, seguida de deconvoluções + aumento de escala. Isso é semelhante à parte *decodificadora* de um [autoencoder](../09-Autoencoders/README.md). +Um Gerador é um pouco mais complicado. Pode ser considerado como um discriminador invertido. Começando por um vetor latente (no lugar de um vetor de características), ele possui uma camada totalmente conectada para convertê-lo no tamanho/forma desejados, seguida por deconvoluções+ampliação. Isso é semelhante à parte de *decodificador* de um [autoencoder](../09-Autoencoders/README.md). > ✅ Como a camada de convolução é implementada como um filtro linear que percorre a imagem, a deconvolução é essencialmente semelhante à convolução e pode ser implementada usando a mesma lógica de camada. @@ -38,64 +47,64 @@ Um Gerador é um pouco mais complicado. Você pode considerá-lo como um discrim ### Treinando a GAN -As GANs são chamadas de **adversariais** porque há uma competição constante entre o gerador e o discriminador. Durante essa competição, tanto o gerador quanto o discriminador melhoram, assim a rede aprende a produzir imagens cada vez melhores. +As GANs são chamadas de **adversárias** porque há uma competição constante entre o gerador e o discriminador. Durante essa competição, tanto o gerador quanto o discriminador melhoram, fazendo com que a rede aprenda a produzir imagens cada vez melhores. -O treinamento acontece em duas etapas: +O treino ocorre em duas etapas: -* **Treinando o discriminador**. Esta tarefa é bastante direta: geramos um lote de imagens pelo gerador, rotulando-as como 0, que representa imagem falsa, e pegamos um lote de imagens do conjunto de dados de entrada (com rótulo 1, imagem real). Obtemos uma *perda do discriminador* e realizamos a retropropagação. -* **Treinando o gerador**. Isso é um pouco mais complicado, porque não sabemos a saída esperada para o gerador diretamente. Pegamos toda a rede GAN, consistindo de um gerador seguido de um discriminador, alimentamos com alguns vetores aleatórios e esperamos que o resultado seja 1 (correspondente a imagens reais). Em seguida, congelamos os parâmetros do discriminador (não queremos que ele seja treinado nesta etapa) e realizamos a retropropagação. +* **Treinando o discriminador**. Esta tarefa é bastante direta: geramos um lote de imagens com o gerador, rotulando-as como 0, que representa imagem falsa, e pegamos um lote de imagens do conjunto de dados de entrada (com rótulo 1, imagem real). Obtemos uma *perda do discriminador* e realizamos o backpropagation. +* **Treinando o gerador**. Isto é um pouco mais complicado, porque não sabemos diretamente o resultado esperado para o gerador. Pegamos toda a rede GAN, composta por um gerador seguido de um discriminador, alimentamos com alguns vetores aleatórios e esperamos que o resultado seja 1 (correspondente a imagens reais). Em seguida, congelamos os parâmetros do discriminador (não queremos que ele seja treinado nesta etapa) e realizamos o backpropagation. -Durante esse processo, as perdas do gerador e do discriminador não estão diminuindo significativamente. Na situação ideal, elas devem oscilar, correspondendo a ambas as redes melhorando seu desempenho. +Durante este processo, as perdas do gerador e do discriminador não diminuem significativamente. Na situação ideal, elas devem oscilar, correspondendo à melhoria de desempenho de ambas as redes. ## ✍️ Exercícios: GANs * [Notebook GAN em TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) * [Notebook GAN em PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### Problemas com o treinamento de GAN +### Problemas no treino de GANs As GANs são conhecidas por serem especialmente difíceis de treinar. Aqui estão alguns problemas: -* **Colapso de Modo**. Por esse termo, queremos dizer que o gerador aprende a produzir uma imagem bem-sucedida que engana o discriminador, e não uma variedade de imagens diferentes. -* **Sensibilidade a hiperparâmetros**. Muitas vezes você pode ver que uma GAN não converge de forma alguma e, em seguida, de repente diminui na taxa de aprendizado levando à convergência. -* Manter um **equilíbrio** entre o gerador e o discriminador. Em muitos casos, a perda do discriminador pode cair para zero relativamente rápido, o que resulta na incapacidade do gerador de treinar mais. Para superar isso, podemos tentar definir diferentes taxas de aprendizado para o gerador e o discriminador, ou pular o treinamento do discriminador se a perda já estiver muito baixa. -* Treinamento para **alta resolução**. Refletindo o mesmo problema que com autoencoders, esse problema é desencadeado porque reconstruir muitas camadas de uma rede convolucional leva a artefatos. Esse problema é tipicamente resolvido com o chamado **crescimento progressivo**, quando primeiro algumas camadas são treinadas em imagens de baixa resolução e, em seguida, as camadas são "desbloqueadas" ou adicionadas. Outra solução seria adicionar conexões extras entre camadas e treinar várias resoluções ao mesmo tempo - veja este [artigo sobre GANs de Gradiente Multi-Escala](https://arxiv.org/abs/1903.06048) para detalhes. +* **Colapso de modo**. Este termo refere-se ao fato de que o gerador aprende a produzir uma única imagem bem-sucedida que engana o discriminador, em vez de uma variedade de imagens diferentes. +* **Sensibilidade aos hiperparâmetros**. Muitas vezes, pode-se observar que uma GAN não converge de forma alguma e, de repente, uma redução na taxa de aprendizagem leva à convergência. +* Manter um **equilíbrio** entre o gerador e o discriminador. Em muitos casos, a perda do discriminador pode cair para zero relativamente rápido, o que resulta no gerador sendo incapaz de continuar o treino. Para superar isso, podemos tentar definir taxas de aprendizagem diferentes para o gerador e o discriminador ou pular o treino do discriminador se a perda já estiver muito baixa. +* Treino para **alta resolução**. Refletindo o mesmo problema dos autoencoders, este problema ocorre porque reconstruir muitas camadas de uma rede convolucional leva a artefatos. Este problema é geralmente resolvido com o chamado **crescimento progressivo**, onde primeiro algumas camadas são treinadas em imagens de baixa resolução e, em seguida, as camadas são "desbloqueadas" ou adicionadas. Outra solução seria adicionar conexões extras entre camadas e treinar várias resoluções ao mesmo tempo - veja este [artigo sobre Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) para mais detalhes. ## Transferência de Estilo -As GANs são uma ótima maneira de gerar imagens artísticas. Outra técnica interessante é a chamada **transferência de estilo**, que pega uma **imagem de conteúdo** e a redesenha em um estilo diferente, aplicando filtros da **imagem de estilo**. +As GANs são uma ótima maneira de gerar imagens artísticas. Outra técnica interessante é a chamada **transferência de estilo**, que pega uma **imagem de conteúdo** e a redesenha em um estilo diferente, aplicando filtros de uma **imagem de estilo**. -A maneira como isso funciona é a seguinte: -* Começamos com uma imagem de ruído aleatório (ou com uma imagem de conteúdo, mas para fins de compreensão é mais fácil começar a partir do ruído aleatório). -* Nosso objetivo seria criar uma imagem que estivesse próxima tanto da imagem de conteúdo quanto da imagem de estilo. Isso seria determinado por duas funções de perda: +O funcionamento é o seguinte: +* Começamos com uma imagem de ruído aleatório (ou com uma imagem de conteúdo, mas para fins de compreensão é mais fácil começar com ruído aleatório). +* Nosso objetivo será criar uma imagem que seja próxima tanto da imagem de conteúdo quanto da imagem de estilo. Isso será determinado por duas funções de perda: - **Perda de conteúdo** é calculada com base nas características extraídas pela CNN em algumas camadas da imagem atual e da imagem de conteúdo. - **Perda de estilo** é calculada entre a imagem atual e a imagem de estilo de uma maneira inteligente usando matrizes de Gram (mais detalhes no [notebook de exemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). -* Para tornar a imagem mais suave e remover o ruído, também introduzimos a **Perda de Variedade**, que calcula a distância média entre pixels vizinhos. -* O loop principal de otimização ajusta a imagem atual usando descida de gradiente (ou algum outro algoritmo de otimização) para minimizar a perda total, que é uma soma ponderada de todas as três perdas. +* Para tornar a imagem mais suave e remover ruídos, também introduzimos a **Perda de variação**, que calcula a distância média entre pixels vizinhos. +* O principal loop de otimização ajusta a imagem atual usando descida de gradiente (ou algum outro algoritmo de otimização) para minimizar a perda total, que é uma soma ponderada de todas as três perdas. ## ✍️ Exemplo: [Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## Conclusão -Nesta lição, você aprendeu sobre GANs e como treiná-las. Você também aprendeu sobre os desafios especiais que esse tipo de Rede Neural pode enfrentar e algumas estratégias sobre como superá-los. +Nesta lição, você aprendeu sobre GANs e como treiná-las. Também aprendeu sobre os desafios especiais que este tipo de rede neural pode enfrentar e algumas estratégias para superá-los. ## 🚀 Desafio Execute o [notebook de Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) usando suas próprias imagens. -## Revisão & Estudo Autônomo +## Revisão e Estudo Individual Para referência, leia mais sobre GANs nestes recursos: * Marco Pasini, [10 Lições que Aprendi Treinando GANs por um Ano](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), uma arquitetura GAN *de fato* a considerar +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), uma arquitetura GAN *de facto* a considerar. * [Criando Arte Generativa usando GANs no Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) ## Tarefa -Revisite um dos dois notebooks associados a esta lição e re-treine a GAN com suas próprias imagens. O que você pode criar? +Revise um dos dois notebooks associados a esta lição e treine novamente a GAN com suas próprias imagens. O que você consegue criar? -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md index 42589f71..074c6126 100644 --- a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,71 +1,188 @@ -### YOLO - Você Só Olha Uma Vez + +# Detecção de Objetos + +Os modelos de classificação de imagens que abordámos até agora tomavam uma imagem e produziam um resultado categórico, como a classe 'número' num problema MNIST. No entanto, em muitos casos, não queremos apenas saber que uma imagem retrata objetos - queremos determinar a sua localização exata. Este é precisamente o objetivo da **detecção de objetos**. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detecção de Objetos](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/Screen_Shot_2016-11-17_at_11.14.54_AM.png) + +> Imagem retirada do [site YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Uma Abordagem Ingénua para Detecção de Objetos + +Supondo que quiséssemos encontrar um gato numa imagem, uma abordagem muito ingénua para detecção de objetos seria a seguinte: + +1. Dividir a imagem em vários blocos. +2. Executar a classificação de imagem em cada bloco. +3. Os blocos que resultarem numa ativação suficientemente alta podem ser considerados como contendo o objeto em questão. + +![Detecção Ingénua de Objetos](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/naive-detection.png) + +> *Imagem retirada do [Caderno de Exercícios](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +No entanto, esta abordagem está longe de ser ideal, pois só permite que o algoritmo localize a caixa delimitadora do objeto de forma muito imprecisa. Para uma localização mais precisa, precisamos de executar algum tipo de **regressão** para prever as coordenadas das caixas delimitadoras - e, para isso, necessitamos de conjuntos de dados específicos. + +## Regressão para Detecção de Objetos + +[Este artigo](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) oferece uma excelente introdução à detecção de formas. + +## Conjuntos de Dados para Detecção de Objetos + +Poderá encontrar os seguintes conjuntos de dados para esta tarefa: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 classes +* [COCO](http://cocodataset.org/#home) - Objetos Comuns em Contexto. 80 classes, caixas delimitadoras e máscaras de segmentação + +![COCO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/coco-examples.jpg) + +## Métricas de Detecção de Objetos + +### Interseção sobre União + +Enquanto na classificação de imagens é fácil medir o desempenho do algoritmo, na detecção de objetos precisamos de medir tanto a correção da classe como a precisão da localização inferida da caixa delimitadora. Para esta última, utilizamos a chamada **Interseção sobre União** (IoU), que mede o quão bem duas caixas (ou duas áreas arbitrárias) se sobrepõem. + +![IoU](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/iou_equation.png) + +> *Figura 2 retirada [deste excelente artigo sobre IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +A ideia é simples - dividimos a área de interseção entre duas figuras pela área da sua união. Para duas áreas idênticas, o IoU seria 1, enquanto para áreas completamente separadas será 0. Caso contrário, variará entre 0 e 1. Normalmente, consideramos apenas as caixas delimitadoras para as quais o IoU está acima de um determinado valor. + +### Precisão Média + +Suponha que queremos medir o quão bem uma determinada classe de objetos $C$ é reconhecida. Para medir isso, utilizamos a métrica de **Precisão Média**, que é calculada da seguinte forma: + +1. Consideramos a curva de Precisão-Recall que mostra a precisão dependendo de um valor de limiar de deteção (de 0 a 1). +2. Dependendo do limiar, obteremos mais ou menos objetos detetados na imagem e diferentes valores de precisão e recall. +3. A curva terá este aspeto: + + + +> *Imagem retirada do [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +A Precisão Média para uma classe $C$ é a área sob esta curva. Mais precisamente, o eixo Recall é normalmente dividido em 10 partes, e a Precisão é calculada como a média de todos esses pontos: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP e IoU + +Consideramos apenas as deteções para as quais o IoU está acima de um determinado valor. Por exemplo, no conjunto de dados PASCAL VOC, normalmente $\mbox{IoU Threshold} = 0.5$ é assumido, enquanto no COCO o AP é medido para diferentes valores de $\mbox{IoU Threshold}$. + + + +> *Imagem retirada do [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Precisão Média Global - mAP + +A principal métrica para Detecção de Objetos é chamada de **Precisão Média Global**, ou **mAP**. É o valor da Precisão Média, calculado como a média entre todas as classes de objetos e, por vezes, também sobre $\mbox{IoU Threshold}$. O processo de cálculo do **mAP** é descrito em mais detalhe +[neste artigo](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), e também [aqui com exemplos de código](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Diferentes Abordagens para Detecção de Objetos + +Existem duas grandes classes de algoritmos de detecção de objetos: + +* **Redes de Proposta de Região** (R-CNN, Fast R-CNN, Faster R-CNN). A ideia principal é gerar **Regiões de Interesse** (ROI) e executar CNN sobre elas, procurando a ativação máxima. É um pouco semelhante à abordagem ingénua, com a exceção de que as ROIs são geradas de forma mais inteligente. Uma das principais desvantagens destes métodos é que são lentos, pois necessitam de várias passagens do classificador CNN sobre a imagem. +* Métodos de **uma única passagem** (YOLO, SSD, RetinaNet). Nestas arquiteturas, projetamos a rede para prever tanto as classes como as ROIs numa única passagem. + +### R-CNN: CNN Baseada em Região + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) utiliza [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) para gerar uma estrutura hierárquica de regiões ROI, que são então passadas por extratores de características CNN e classificadores SVM para determinar a classe do objeto, e regressão linear para determinar as coordenadas da *caixa delimitadora*. [Artigo Oficial](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn1.png) + +> *Imagem retirada de van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/rcnn2.png) + +> *Imagens retiradas [deste artigo](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Esta abordagem é semelhante à R-CNN, mas as regiões são definidas após as camadas de convolução terem sido aplicadas. + +![FRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/f-rcnn.png) + +> Imagem retirada do [Artigo Oficial](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +A ideia principal desta abordagem é utilizar uma rede neural para prever ROIs - a chamada *Rede de Proposta de Região*. [Artigo](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/faster-rcnn.png) + +> Imagem retirada do [Artigo Oficial](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Rede Totalmente Convolucional Baseada em Região + +Este algoritmo é ainda mais rápido do que o Faster R-CNN. A ideia principal é a seguinte: + +1. Extraímos características utilizando ResNet-101. +1. As características são processadas por **Position-Sensitive Score Map**. Cada objeto de $C$ classes é dividido em $k\times k$ regiões, e treinamos para prever partes dos objetos. +1. Para cada parte das $k\times k$ regiões, todas as redes votam pelas classes de objetos, e a classe de objeto com o maior número de votos é selecionada. + +![r-fcn image](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/r-fcn.png) + +> Imagem retirada do [Artigo Oficial](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once YOLO é um algoritmo de uma única passagem em tempo real. A ideia principal é a seguinte: -* A imagem é dividida em regiões de $S\times S$ -* Para cada região, a **CNN** prevê $n$ possíveis objetos, as coordenadas da *bounding box* e *confiança* = *probabilidade* * IoU. + * A imagem é dividida em $S\times S$ regiões. + * Para cada região, **CNN** prevê $n$ objetos possíveis, coordenadas da *caixa delimitadora* e *confiança*=*probabilidade* * IoU. -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pt.png) + ![YOLO](../../../../../lessons/4-ComputerVision/11-ObjectDetection/images/yolo.png) -### SSD - Single Shot MultiBox Detector - -O SSD é outro método de detecção em uma única passagem. Ele funciona de maneira semelhante ao YOLO, mas usa diferentes escalas de detecção em várias camadas da rede. - -![SSD](../../../../../translated_images/ssd.8f409ceb7ad470415f8995994dd89282b57541bff09ecde650902217c84f4c0d.pt.png) - -> Imagem de [oficial paper](https://arxiv.org/pdf/1512.02325.pdf) - -### RetinaNet - -O RetinaNet introduz a ideia de *Focal Loss*, que ajuda a lidar com o problema de classes desbalanceadas em detecção de objetos. Ele usa uma arquitetura de rede semelhante ao SSD, mas com um foco maior em melhorar a precisão na detecção de objetos menos frequentes. - -![RetinaNet](../../../../../translated_images/retinanet.cfd3ebd2e5c63692a1c543b868134b66e4b0789230c22679b07eebd0e69d7cbc.pt.png) - -> Imagem de [oficial paper](https://arxiv.org/pdf/1708.02002.pdf) - -### Conclusão - -A detecção de objetos é uma área ativa de pesquisa em visão computacional. Com o advento de novas arquiteturas e técnicas, como YOLO, SSD e RetinaNet, a precisão e a eficiência dos algoritmos de detecção de objetos continuam a melhorar. O uso de redes neurais profundas e técnicas de aprendizado de máquina tem revolucionado essa área, tornando-a mais acessível e eficaz em uma variedade de aplicações do mundo real. -> Imagem do [artigo oficial](https://arxiv.org/abs/1506.02640) +> Imagem retirada do [Artigo Oficial](https://arxiv.org/abs/1506.02640) ### Outros Algoritmos -* RetinaNet: [artigo oficial](https://arxiv.org/abs/1708.02002) +* RetinaNet: [Artigo Oficial](https://arxiv.org/abs/1708.02002) - [Implementação em PyTorch no Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - [Implementação em Keras](https://github.com/fizyr/keras-retinanet) - - [Detecção de Objetos com RetinaNet](https://keras.io/examples/vision/retinanet/) nos Exemplos do Keras -* SSD (Single Shot Detector): [artigo oficial](https://arxiv.org/abs/1512.02325) + - [Detecção de Objetos com RetinaNet](https://keras.io/examples/vision/retinanet/) em Exemplos Keras +* SSD (Single Shot Detector): [Artigo Oficial](https://arxiv.org/abs/1512.02325) ## ✍️ Exercícios: Detecção de Objetos -Continue seu aprendizado no seguinte notebook: +Continue a sua aprendizagem no seguinte caderno: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) ## Conclusão -Nesta lição, você fez um tour rápido por todas as diversas maneiras de realizar a detecção de objetos! +Nesta lição, explorou rapidamente as várias formas de realizar detecção de objetos! ## 🚀 Desafio -Leia esses artigos e notebooks sobre YOLO e experimente por conta própria +Leia estes artigos e cadernos sobre YOLO e experimente por si mesmo: -* [Bom post de blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) descrevendo o YOLO - * [Site oficial](https://pjreddie.com/darknet/yolo/) - * Yolo: [implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) +* [Bom artigo](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) que descreve YOLO + * [Site Oficial](https://pjreddie.com/darknet/yolo/) + * YOLO: [Implementação em Keras](https://github.com/experiencor/keras-yolo2), [caderno passo-a-passo](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Implementação em Keras](https://github.com/experiencor/keras-yolo2), [caderno passo-a-passo](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) ## Revisão & Autoestudo * [Detecção de Objetos](https://tjmachinelearning.com/lectures/1718/obj/) por Nikhil Sardana * [Uma boa comparação de algoritmos de detecção de objetos](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Revisão de Algoritmos de Aprendizado Profundo para Detecção de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [Uma Introdução Passo a Passo aos Algoritmos Básicos de Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Implementação do Faster R-CNN em Python para Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Revisão de Algoritmos de Aprendizagem Profunda para Detecção de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Uma Introdução Passo-a-Passo aos Algoritmos Básicos de Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementação de Faster R-CNN em Python para Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) -## [Tarefa: Detecção de Objetos](lab/README.md) +## [Assignment: Object Detection](lab/README.md) **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index d9751844..b05c1715 100644 --- a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Detecção de Cabeças usando o Conjunto de Dados Hollywood Heads + +# Deteção de Cabeças usando o Hollywood Heads Dataset -Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Contar o número de pessoas em uma transmissão de câmera de vigilância é uma tarefa importante que nos permitirá estimar o número de visitantes em lojas, horários de pico em restaurantes, etc. Para resolver essa tarefa, precisamos ser capazes de detectar cabeças humanas de diferentes ângulos. Para treinar um modelo de detecção de objetos para detectar cabeças humanas, podemos usar o [Conjunto de Dados Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). +Contar o número de pessoas num fluxo de vídeo de uma câmara de vigilância é uma tarefa importante que nos permite estimar o número de visitantes em lojas, as horas de maior movimento num restaurante, etc. Para resolver esta tarefa, precisamos de ser capazes de detetar cabeças humanas a partir de diferentes ângulos. Para treinar um modelo de deteção de objetos para identificar cabeças humanas, podemos usar o [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). ## O Conjunto de Dados -O [Conjunto de Dados Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contém 369.846 cabeças humanas anotadas em 224.740 quadros de filmes de Hollywood. Ele é fornecido no formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), onde para cada imagem também há um arquivo de descrição XML que se parece com isto: +O [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contém 369.846 cabeças humanas anotadas em 224.740 frames de filmes de Hollywood. É fornecido no formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), onde para cada imagem existe também um ficheiro de descrição XML que se parece com isto: ```xml @@ -48,19 +57,19 @@ O [Conjunto de Dados Hollywood Heads](https://www.di.ens.fr/willow/research/head ``` -Neste conjunto de dados, há apenas uma classe de objetos `head`, e para cada cabeça, você obtém as coordenadas da caixa delimitadora. Você pode analisar XML usando bibliotecas Python ou usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para lidar diretamente com o formato PASCAL VOC. +Neste conjunto de dados, existe apenas uma classe de objetos, `head`, e para cada cabeça, obtém-se as coordenadas da caixa delimitadora. Pode-se analisar os ficheiros XML usando bibliotecas Python ou usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para lidar diretamente com o formato PASCAL VOC. -## Treinamento de Detecção de Objetos +## Treinar a Deteção de Objetos -Você pode treinar um modelo de detecção de objetos usando uma das seguintes maneiras: +Pode treinar um modelo de deteção de objetos utilizando uma das seguintes abordagens: -* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) e sua API Python para treinar programaticamente o modelo na nuvem. A visão personalizada não conseguirá usar mais do que algumas centenas de imagens para treinar o modelo, então você pode precisar limitar o conjunto de dados. -* Usando o exemplo do [tutorial Keras](https://keras.io/examples/vision/retinanet/) para treinar o modelo RetunaNet. -* Usando o módulo embutido [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) na torchvision. +* Usar o [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) e a sua API Python para treinar programaticamente o modelo na cloud. O Custom Vision não consegue usar mais do que algumas centenas de imagens para treinar o modelo, por isso pode ser necessário limitar o conjunto de dados. +* Usar o exemplo do [tutorial do Keras](https://keras.io/examples/vision/retinanet/) para treinar o modelo RetunaNet. +* Usar o módulo integrado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) no torchvision. ## Conclusão -A detecção de objetos é uma tarefa frequentemente requerida na indústria. Embora existam alguns serviços que podem ser usados para realizar a detecção de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), é importante entender como a detecção de objetos funciona e ser capaz de treinar seus próprios modelos. +A deteção de objetos é uma tarefa frequentemente necessária na indústria. Embora existam alguns serviços que podem ser usados para realizar a deteção de objetos (como o [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), é importante compreender como funciona a deteção de objetos e ser capaz de treinar os seus próprios modelos. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md index 3f679f76..e33ac85b 100644 --- a/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,69 +1,78 @@ + # Segmentação -Anteriormente, aprendemos sobre Detecção de Objetos, que nos permite localizar objetos na imagem prevendo suas *caixas delimitadoras*. No entanto, para algumas tarefas, não precisamos apenas de caixas delimitadoras, mas também de uma localização de objeto mais precisa. Essa tarefa é chamada de **segmentação**. +Já aprendemos sobre Detecção de Objetos, que nos permite localizar objetos numa imagem ao prever as suas *caixas delimitadoras* (*bounding boxes*). No entanto, para algumas tarefas, não precisamos apenas das caixas delimitadoras, mas também de uma localização mais precisa dos objetos. Esta tarefa é chamada de **segmentação**. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -A segmentação pode ser vista como **classificação de pixels**, onde para **cada** pixel da imagem devemos prever sua classe (*fundo* sendo uma das classes). Existem dois principais algoritmos de segmentação: +A segmentação pode ser vista como uma **classificação de píxeis**, onde para **cada** píxel da imagem devemos prever a sua classe (*fundo* sendo uma das classes). Existem dois principais algoritmos de segmentação: -* **Segmentação semântica** apenas informa a classe do pixel, e não faz distinção entre diferentes objetos da mesma classe. -* **Segmentação de instâncias** divide classes em diferentes instâncias. +* **Segmentação semântica** apenas indica a classe do píxel, sem distinguir entre diferentes objetos da mesma classe. +* **Segmentação por instância** divide as classes em diferentes instâncias. -Por exemplo, na segmentação de instâncias, essas ovelhas são objetos diferentes, mas na segmentação semântica todas as ovelhas são representadas por uma única classe. +Por exemplo, na segmentação por instância, estas ovelhas são objetos diferentes, mas na segmentação semântica todas as ovelhas são representadas por uma única classe. -> Imagem de [este post de blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) +> Imagem retirada [deste artigo](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Existem diferentes arquiteturas neurais para segmentação, mas todas têm a mesma estrutura. De certa forma, é semelhante ao autoencoder que você aprendeu anteriormente, mas em vez de deconstruir a imagem original, nosso objetivo é deconstruir uma **máscara**. Assim, uma rede de segmentação possui as seguintes partes: +Existem diferentes arquiteturas neurais para segmentação, mas todas têm a mesma estrutura. De certa forma, é semelhante ao autoencoder que aprendemos anteriormente, mas em vez de reconstruir a imagem original, o nosso objetivo é reconstruir uma **máscara**. Assim, uma rede de segmentação possui as seguintes partes: -* **Encoder** extrai características da imagem de entrada. -* **Decoder** transforma essas características na **imagem da máscara**, com o mesmo tamanho e número de canais correspondendo ao número de classes. +* **Codificador (Encoder)** extrai características da imagem de entrada. +* **Decodificador (Decoder)** transforma essas características na **imagem da máscara**, com o mesmo tamanho e número de canais correspondentes ao número de classes. -> Imagem de [esta publicação](https://arxiv.org/pdf/2001.05566.pdf) +> Imagem retirada [desta publicação](https://arxiv.org/pdf/2001.05566.pdf) -Devemos mencionar especialmente a função de perda que é usada para segmentação. Ao usar autoencoders clássicos, precisamos medir a similaridade entre duas imagens, e podemos usar o erro quadrático médio (MSE) para isso. Na segmentação, cada pixel na imagem da máscara alvo representa o número da classe (one-hot-encoded ao longo da terceira dimensão), então precisamos usar funções de perda específicas para classificação - perda de entropia cruzada, média sobre todos os pixels. Se a máscara for binária - **perda de entropia cruzada binária** (BCE) é utilizada. +Devemos destacar especialmente a função de perda utilizada para segmentação. Ao usar autoencoders clássicos, precisamos medir a semelhança entre duas imagens, e podemos usar o erro quadrático médio (MSE) para isso. Na segmentação, cada píxel na imagem de máscara alvo representa o número da classe (codificado em one-hot ao longo da terceira dimensão), então precisamos usar funções de perda específicas para classificação - perda de entropia cruzada, média sobre todos os píxeis. Se a máscara for binária, utiliza-se a **perda de entropia cruzada binária** (BCE). -> ✅ A codificação one-hot é uma forma de codificar um rótulo de classe em um vetor de comprimento igual ao número de classes. Dê uma olhada [neste artigo](https://datagy.io/sklearn-one-hot-encode/) sobre essa técnica. +> ✅ A codificação one-hot é uma forma de codificar um rótulo de classe num vetor de comprimento igual ao número de classes. Consulte [este artigo](https://datagy.io/sklearn-one-hot-encode/) para saber mais sobre esta técnica. ## Segmentação para Imagens Médicas -Nesta lição, veremos a segmentação em ação treinando a rede para reconhecer nevos humanos (também conhecidos como manchas) em imagens médicas. Usaremos o Banco de Dados PH2 de imagens de dermatoscopia como fonte de imagem. Este conjunto de dados contém 200 imagens de três classes: nevo típico, nevo atípico e melanoma. Todas as imagens também contêm uma **máscara** correspondente que contorna o nevo. +Nesta lição, veremos a segmentação em ação ao treinar uma rede para reconhecer nevos humanos (também conhecidos como sinais) em imagens médicas. Utilizaremos a Base de Dados PH2 de imagens de dermoscopia como fonte de imagens. Este conjunto de dados contém 200 imagens de três classes: nevo típico, nevo atípico e melanoma. Todas as imagens também possuem uma **máscara** correspondente que delimita o nevo. -> ✅ Esta técnica é particularmente apropriada para este tipo de imagem médica, mas quais outras aplicações do mundo real você poderia imaginar? +> ✅ Esta técnica é particularmente adequada para este tipo de imagem médica, mas que outras aplicações do mundo real consegue imaginar? navi -> Imagem do Banco de Dados PH2 +> Imagem retirada da Base de Dados PH2 -Treinaremos um modelo para segmentar qualquer nevo de seu fundo. +Treinaremos um modelo para segmentar qualquer nevo do seu fundo. ## ✍️ Exercícios: Segmentação Semântica -Abra os notebooks abaixo para aprender mais sobre diferentes arquiteturas de segmentação semântica, praticar trabalhando com elas e vê-las em ação. +Abra os notebooks abaixo para aprender mais sobre diferentes arquiteturas de segmentação semântica, praticar com elas e vê-las em ação. -* [Segmentação Semântica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [Segmentação Semântica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [Segmentação Semântica com Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentação Semântica com TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## Conclusão -A segmentação é uma técnica muito poderosa para classificação de imagens, indo além das caixas delimitadoras para classificação em nível de pixel. É uma técnica usada em imagens médicas, entre outras aplicações. +A segmentação é uma técnica muito poderosa para classificação de imagens, indo além das caixas delimitadoras para a classificação a nível de píxeis. É uma técnica utilizada em imagens médicas, entre outras aplicações. ## 🚀 Desafio -A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Experimente a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como a detecção de pose pode ser utilizada. +A segmentação corporal é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Experimente a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como a detecção de pose pode ser utilizada. -## Revisão & Autoestudo +## Revisão e Estudo Individual -Este [artigo da wikipedia](https://wikipedia.org/wiki/Image_segmentation) oferece uma boa visão geral das várias aplicações dessa técnica. Aprenda mais por conta própria sobre os subdomínios da segmentação de instâncias e segmentação panóptica neste campo de investigação. +Este [artigo da Wikipédia](https://wikipedia.org/wiki/Image_segmentation) oferece uma boa visão geral das várias aplicações desta técnica. Pesquise mais sobre os subdomínios de Segmentação por Instância e Segmentação Panóptica neste campo de estudo. ## [Tarefa](lab/README.md) -Neste laboratório, tente **segmentação do corpo humano** usando o [Conjunto de Dados de Segmentação do Corpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. +Neste laboratório, experimente a **segmentação do corpo humano** utilizando o [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 602fba75..895c7ce9 100644 --- a/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ + # Segmentação do Corpo Humano -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Na produção de vídeo, por exemplo, em previsões do tempo, muitas vezes precisamos recortar a imagem de uma pessoa da câmera e colocá-la sobre outra filmagem. Isso é tipicamente feito usando técnicas de **chroma key**, quando uma pessoa é filmada na frente de um fundo de cor uniforme, que é então removido. Neste laboratório, iremos treinar um modelo de rede neural para recortar a silhueta humana. +Na produção de vídeo, como em previsões meteorológicas, muitas vezes precisamos recortar a imagem de uma pessoa captada pela câmara e colocá-la sobre outro vídeo. Isto é normalmente feito utilizando técnicas de **chroma key**, onde uma pessoa é filmada em frente a um fundo de cor uniforme, que é posteriormente removido. Neste trabalho prático, iremos treinar um modelo de rede neural para recortar a silhueta humana. ## O Conjunto de Dados -Usaremos o [Conjunto de Dados de Segmentação do Corpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. Baixe o conjunto de dados manualmente do Kaggle. +Iremos utilizar o [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. Faça o download manual do conjunto de dados no Kaggle. -## Iniciando o Notebook +## Notebook Inicial -Comece o laboratório abrindo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) +Comece o trabalho prático abrindo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) ## Conclusão -A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Confira a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como essas tarefas podem ser implementadas. +A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Explore a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como essas tarefas podem ser implementadas. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/README.md b/translations/pt/lessons/4-ComputerVision/README.md index 8b206e43..f3c5fa15 100644 --- a/translations/pt/lessons/4-ComputerVision/README.md +++ b/translations/pt/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ + # Visão Computacional -![Resumo do conteúdo de Visão Computacional em um doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pt.png) +![Resumo do conteúdo de Visão Computacional em um desenho](../../../../lessons/sketchnotes/ai-computervision.png) -Nesta seção, aprenderemos sobre: +Nesta seção, vamos aprender sobre: * [Introdução à Visão Computacional e OpenCV](06-IntroCV/README.md) * [Redes Neurais Convolucionais](07-ConvNets/README.md) -* [Redes Pré-treinadas e Aprendizado por Transferência](08-TransferLearning/README.md) +* [Redes Pré-treinadas e Aprendizagem por Transferência](08-TransferLearning/README.md) * [Autoencoders](09-Autoencoders/README.md) -* [Redes Geradoras Adversariais](10-GANs/README.md) -* [Detecção de Objetos](11-ObjectDetection/README.md) +* [Redes Adversárias Generativas](10-GANs/README.md) +* [Deteção de Objetos](11-ObjectDetection/README.md) * [Segmentação Semântica](12-Segmentation/README.md) **Aviso Legal**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/13-TextRep/README.md b/translations/pt/lessons/5-NLP/13-TextRep/README.md index 5e904672..2b8e4dac 100644 --- a/translations/pt/lessons/5-NLP/13-TextRep/README.md +++ b/translations/pt/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Representando Texto como Tensores + +# Representar Texto como Tensores -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) ## Classificação de Texto -Na primeira parte desta seção, vamos nos concentrar na tarefa de **classificação de texto**. Usaremos o conjunto de dados [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contém artigos de notícias como os seguintes: +Na primeira parte desta secção, vamos focar-nos na tarefa de **classificação de texto**. Utilizaremos o Dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contém artigos de notícias como o seguinte: -* Categoria: Sci/Tech -* Título: Ky. Company Wins Grant to Study Peptides (AP) -* Corpo: AP - Uma empresa fundada por um pesquisador de química na Universidade de Louisville ganhou uma bolsa para desenvolver... +* Categoria: Ciência/Tecnologia +* Título: Empresa de Ky. Ganha Subsídio para Estudar Peptídeos (AP) +* Corpo: AP - Uma empresa fundada por um investigador de química na Universidade de Louisville ganhou um subsídio para desenvolver... -Nosso objetivo será classificar o item de notícia em uma das categorias com base no texto. +O nosso objetivo será classificar o artigo de notícias numa das categorias com base no texto. -## Representando texto +## Representar texto -Se quisermos resolver tarefas de Processamento de Linguagem Natural (NLP) com redes neurais, precisamos de alguma forma de representar texto como tensores. Os computadores já representam caracteres textuais como números que mapeiam para fontes na sua tela usando codificações como ASCII ou UTF-8. +Se quisermos resolver tarefas de Processamento de Linguagem Natural (NLP) com redes neuronais, precisamos de uma forma de representar texto como tensores. Os computadores já representam caracteres textuais como números que correspondem a fontes no ecrã utilizando codificações como ASCII ou UTF-8. -Imagem mostrando diagrama mapeando um caractere para uma representação ASCII e binária +Imagem mostrando um diagrama que mapeia um carácter para uma representação ASCII e binária > [Fonte da imagem](https://www.seobility.net/en/wiki/ASCII) -Como humanos, entendemos o que cada letra **representa** e como todos os caracteres se juntam para formar as palavras de uma frase. No entanto, os computadores, por si só, não têm essa compreensão, e a rede neural precisa aprender o significado durante o treinamento. +Como humanos, entendemos o que cada letra **representa** e como todos os caracteres se juntam para formar as palavras de uma frase. No entanto, os computadores, por si só, não têm essa compreensão, e a rede neuronal tem de aprender o significado durante o treino. -Portanto, podemos usar diferentes abordagens ao representar texto: +Por isso, podemos usar diferentes abordagens para representar texto: -* **Representação em nível de caractere**, quando representamos o texto tratando cada caractere como um número. Dado que temos *C* caracteres diferentes em nosso corpus de texto, a palavra *Hello* seria representada por um tensor 5x*C*. Cada letra corresponderia a uma coluna de tensor em codificação one-hot. -* **Representação em nível de palavra**, na qual criamos um **vocabulário** de todas as palavras em nosso texto e, em seguida, representamos as palavras usando codificação one-hot. Essa abordagem é de certa forma melhor, porque cada letra isoladamente não tem muito significado e, assim, ao usar conceitos semânticos de nível superior - palavras - simplificamos a tarefa para a rede neural. No entanto, dado o grande tamanho do dicionário, precisamos lidar com tensores esparsos de alta dimensão. +* **Representação ao nível de caracteres**, onde representamos texto tratando cada carácter como um número. Dado que temos *C* caracteres diferentes no nosso corpus de texto, a palavra *Hello* seria representada por um tensor de 5x*C*. Cada letra corresponderia a uma coluna do tensor em codificação one-hot. +* **Representação ao nível de palavras**, na qual criamos um **vocabulário** de todas as palavras no nosso texto e depois representamos as palavras usando codificação one-hot. Esta abordagem é de certa forma melhor, porque cada letra, por si só, não tem muito significado, e assim, ao usar conceitos semânticos de nível superior - palavras - simplificamos a tarefa para a rede neuronal. No entanto, dado o tamanho do dicionário, precisamos de lidar com tensores esparsos de alta dimensão. -Independentemente da representação, primeiro precisamos converter o texto em uma sequência de **tokens**, sendo que um token pode ser um caractere, uma palavra ou, às vezes, até mesmo parte de uma palavra. Em seguida, convertemos o token em um número, tipicamente usando **vocabulário**, e esse número pode ser alimentado em uma rede neural usando codificação one-hot. +Independentemente da representação, primeiro precisamos de converter o texto numa sequência de **tokens**, sendo um token um carácter, uma palavra ou, por vezes, até parte de uma palavra. Depois, convertemos o token num número, normalmente usando um **vocabulário**, e este número pode ser alimentado numa rede neuronal usando codificação one-hot. ## N-Gramas -Na linguagem natural, o significado preciso das palavras só pode ser determinado no contexto. Por exemplo, os significados de *rede neural* e *rede de pesca* são completamente diferentes. Uma das maneiras de levar isso em conta é construir nosso modelo com pares de palavras, considerando pares de palavras como tokens de vocabulário separados. Dessa forma, a frase *Eu gosto de pescar* será representada pela seguinte sequência de tokens: *Eu gosto*, *gosto de*, *de pescar*. O problema com essa abordagem é que o tamanho do dicionário cresce significativamente, e combinações como *ir pescar* e *ir às compras* são apresentadas por tokens diferentes, que não compartilham nenhuma semelhança semântica, apesar do mesmo verbo. +Na linguagem natural, o significado preciso das palavras só pode ser determinado no contexto. Por exemplo, os significados de *rede neural* e *rede de pesca* são completamente diferentes. Uma das formas de levar isso em conta é construir o nosso modelo com pares de palavras, considerando os pares de palavras como tokens separados no vocabulário. Desta forma, a frase *Eu gosto de ir pescar* será representada pela seguinte sequência de tokens: *Eu gosto*, *gosto de*, *de ir*, *ir pescar*. O problema com esta abordagem é que o tamanho do dicionário cresce significativamente, e combinações como *ir pescar* e *ir às compras* são representadas por tokens diferentes, que não partilham qualquer semelhança semântica, apesar do mesmo verbo. -Em alguns casos, também podemos considerar o uso de tri-gramas -- combinações de três palavras --. Assim, a abordagem é frequentemente chamada de **n-gramas**. Além disso, faz sentido usar n-gramas com representação em nível de caractere, nesse caso os n-gramas corresponderão aproximadamente a diferentes sílabas. +Em alguns casos, podemos considerar usar tri-gramas -- combinações de três palavras -- também. Assim, esta abordagem é frequentemente chamada de **n-gramas**. Além disso, faz sentido usar n-gramas com representação ao nível de caracteres, caso em que os n-gramas corresponderão aproximadamente a diferentes sílabas. ## Bag-of-Words e TF/IDF -Ao resolver tarefas como a classificação de texto, precisamos ser capazes de representar o texto por um vetor de tamanho fixo, que usaremos como entrada para o classificador denso final. Uma das maneiras mais simples de fazer isso é combinar todas as representações individuais de palavras, por exemplo, somando-as. Se adicionarmos as codificações one-hot de cada palavra, terminaremos com um vetor de frequências, mostrando quantas vezes cada palavra aparece dentro do texto. Essa representação de texto é chamada de **bag of words** (BoW). +Ao resolver tarefas como classificação de texto, precisamos de ser capazes de representar texto por um vetor de tamanho fixo, que usaremos como entrada para o classificador denso final. Uma das formas mais simples de fazer isso é combinar todas as representações individuais de palavras, por exemplo, somando-as. Se somarmos as codificações one-hot de cada palavra, acabaremos com um vetor de frequências, mostrando quantas vezes cada palavra aparece no texto. Tal representação de texto é chamada de **bag of words** (BoW). > Imagem do autor -Um BoW representa essencialmente quais palavras aparecem no texto e em quais quantidades, o que pode de fato ser uma boa indicação do que o texto trata. Por exemplo, um artigo de notícias sobre política provavelmente conterá palavras como *presidente* e *país*, enquanto uma publicação científica teria algo como *colisor*, *descoberto*, etc. Assim, as frequências das palavras podem, em muitos casos, ser um bom indicador do conteúdo do texto. +Um BoW essencialmente representa quais palavras aparecem no texto e em que quantidades, o que pode ser uma boa indicação do tema do texto. Por exemplo, um artigo de notícias sobre política provavelmente contém palavras como *presidente* e *país*, enquanto uma publicação científica teria algo como *colisor*, *descoberto*, etc. Assim, as frequências das palavras podem, em muitos casos, ser um bom indicador do conteúdo do texto. -O problema com o BoW é que certas palavras comuns, como *e*, *é*, etc., aparecem na maioria dos textos e têm as maiores frequências, ofuscando as palavras que são realmente importantes. Podemos diminuir a importância dessas palavras levando em conta a frequência com que as palavras ocorrem em toda a coleção de documentos. Essa é a ideia principal por trás da abordagem TF/IDF, que é abordada com mais detalhes nos notebooks anexados a esta lição. +O problema com BoW é que certas palavras comuns, como *e*, *é*, etc., aparecem na maioria dos textos e têm as maiores frequências, ocultando as palavras que são realmente importantes. Podemos reduzir a importância dessas palavras considerando a frequência com que ocorrem em toda a coleção de documentos. Esta é a ideia principal por trás da abordagem TF/IDF, que é abordada em mais detalhe nos notebooks anexados a esta lição. -No entanto, nenhuma dessas abordagens pode levar plenamente em conta a **semântica** do texto. Precisamos de modelos de redes neurais mais poderosos para fazer isso, que discutiremos mais adiante nesta seção. +No entanto, nenhuma dessas abordagens consegue levar totalmente em conta a **semântica** do texto. Precisamos de modelos de redes neuronais mais poderosos para fazer isso, o que discutiremos mais tarde nesta secção. ## ✍️ Exercícios: Representação de Texto -Continue seu aprendizado nos seguintes notebooks: +Continue a sua aprendizagem nos seguintes notebooks: * [Representação de Texto com PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) * [Representação de Texto com TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## Conclusão -Até agora, estudamos técnicas que podem adicionar peso de frequência a diferentes palavras. No entanto, elas não conseguem representar significado ou ordem. Como disse o famoso linguista J. R. Firth em 1935: "O significado completo de uma palavra é sempre contextual, e nenhum estudo de significado separado do contexto pode ser levado a sério." Aprenderemos mais tarde no curso como capturar informações contextuais do texto usando modelagem de linguagem. +Até agora, estudámos técnicas que podem adicionar peso de frequência a diferentes palavras. No entanto, estas técnicas não conseguem representar o significado ou a ordem. Como o famoso linguista J. R. Firth disse em 1935: "O significado completo de uma palavra é sempre contextual, e nenhum estudo de significado fora do contexto pode ser levado a sério." Mais tarde, no curso, aprenderemos como capturar informações contextuais do texto usando modelagem de linguagem. ## 🚀 Desafio -Tente alguns outros exercícios usando bag-of-words e diferentes modelos de dados. Você pode se inspirar nesta [competição no Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Experimente outros exercícios usando bag-of-words e diferentes modelos de dados. Pode inspirar-se nesta [competição no Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Revisão & Autoestudo +## Revisão & Estudo Autónomo -Pratique suas habilidades com embeddings de texto e técnicas de bag-of-words em [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Pratique as suas competências com técnicas de embeddings de texto e bag-of-words em [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) -## [Tarefa: Notebooks](assignment.md) +## [Assignment: Notebooks](assignment.md) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/13-TextRep/assignment.md b/translations/pt/lessons/5-NLP/13-TextRep/assignment.md index 86d04907..def3eeec 100644 --- a/translations/pt/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/pt/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ + # Tarefa: Notebooks -Usando os notebooks associados a esta lição (seja a versão PyTorch ou a versão TensorFlow), execute-os novamente usando seu próprio conjunto de dados, talvez um do Kaggle, utilizado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente alguns conjuntos de dados inovadores que podem ser surpreendentes, como [este sobre avistamentos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) da NUFORC. +Utilizando os notebooks associados a esta lição (seja a versão em PyTorch ou TensorFlow), execute-os novamente usando o seu próprio conjunto de dados, talvez um do Kaggle, utilizado com a devida atribuição. Reescreva o notebook para destacar as suas próprias conclusões. Experimente alguns conjuntos de dados inovadores que possam ser surpreendentes, como [este sobre avistamentos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) do NUFORC. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/14-Embeddings/README.md b/translations/pt/lessons/5-NLP/14-Embeddings/README.md index 3b232e98..7b608fdd 100644 --- a/translations/pt/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/pt/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ + # Embeddings -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -Ao treinar classificadores baseados em BoW ou TF/IDF, operamos em vetores de bag-of-words de alta dimensão com comprimento `vocab_size`, e estávamos convertendo explicitamente de vetores de representação posicional de baixa dimensão para uma representação one-hot esparsa. No entanto, essa representação one-hot não é eficiente em termos de memória. Além disso, cada palavra é tratada de forma independente, ou seja, vetores codificados em one-hot não expressam nenhuma similaridade semântica entre as palavras. +Ao treinar classificadores baseados em BoW ou TF/IDF, trabalhávamos com vetores de saco de palavras de alta dimensão com comprimento `vocab_size`, e estávamos a converter explicitamente de vetores de representação posicional de baixa dimensão para uma representação esparsa one-hot. No entanto, esta representação one-hot não é eficiente em termos de memória. Além disso, cada palavra é tratada de forma independente, ou seja, os vetores codificados one-hot não expressam qualquer semelhança semântica entre palavras. -A ideia de **embedding** é representar palavras por vetores densos de menor dimensão, que de alguma forma refletem o significado semântico de uma palavra. Mais adiante, discutiremos como construir embeddings de palavras significativos, mas por enquanto, vamos pensar nos embeddings como uma forma de reduzir a dimensionalidade de um vetor de palavras. +A ideia de **embedding** é representar palavras através de vetores densos de menor dimensão, que de alguma forma refletem o significado semântico de uma palavra. Mais tarde, discutiremos como construir embeddings de palavras significativos, mas, por agora, vamos apenas pensar nos embeddings como uma forma de reduzir a dimensionalidade de um vetor de palavras. -Assim, a camada de embedding receberia uma palavra como entrada e produziria um vetor de saída de tamanho especificado `embedding_size`. De certa forma, é muito semelhante a uma camada `Linear`, mas em vez de receber um vetor codificado em one-hot, ela poderá receber um número de palavra como entrada, permitindo-nos evitar a criação de grandes vetores codificados em one-hot. +Assim, a camada de embedding receberia uma palavra como entrada e produziria um vetor de saída com o tamanho especificado por `embedding_size`. De certa forma, é muito semelhante a uma camada `Linear`, mas, em vez de receber um vetor codificado one-hot, será capaz de receber um número de palavra como entrada, permitindo-nos evitar a criação de grandes vetores codificados one-hot. -Ao usar uma camada de embedding como a primeira camada em nossa rede de classificadores, podemos mudar de um modelo de bag-of-words para um modelo de **embedding bag**, onde primeiro convertemos cada palavra em nosso texto em seu correspondente embedding e, em seguida, calculamos alguma função agregada sobre todos esses embeddings, como `sum`, `average` ou `max`. +Ao usar uma camada de embedding como a primeira camada na nossa rede de classificação, podemos mudar de um modelo de saco de palavras para um modelo de **embedding bag**, onde primeiro convertemos cada palavra no nosso texto no embedding correspondente e, em seguida, calculamos alguma função agregada sobre todos esses embeddings, como `sum`, `average` ou `max`. -![Imagem mostrando um classificador de embedding para cinco palavras sequenciais.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pt.png) +![Imagem mostrando um classificador com embeddings para cinco palavras de sequência.](../../../../../lessons/5-NLP/14-Embeddings/images/embedding-classifier-example.png) > Imagem do autor ## ✍️ Exercícios: Embeddings -Continue seu aprendizado nos seguintes notebooks: +Continue a sua aprendizagem nos seguintes notebooks: * [Embeddings com PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +* [Embeddings com TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) ## Embeddings Semânticos: Word2Vec -Enquanto a camada de embedding aprendeu a mapear palavras para representação vetorial, essa representação não necessariamente tinha muito significado semântico. Seria interessante aprender uma representação vetorial de modo que palavras semelhantes ou sinônimos corresponderiam a vetores que estão próximos uns dos outros em termos de alguma distância vetorial (por exemplo, distância euclidiana). +Embora a camada de embedding tenha aprendido a mapear palavras para representações vetoriais, esta representação não necessariamente possui muito significado semântico. Seria interessante aprender uma representação vetorial tal que palavras semelhantes ou sinónimos correspondam a vetores próximos entre si em termos de alguma distância vetorial (por exemplo, distância Euclidiana). -Para isso, precisamos pré-treinar nosso modelo de embedding em uma grande coleção de textos de uma maneira específica. Uma forma de treinar embeddings semânticos é chamada de [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). É baseada em duas arquiteturas principais que são usadas para produzir uma representação distribuída de palavras: +Para isso, precisamos de pré-treinar o nosso modelo de embedding numa grande coleção de texto de uma forma específica. Uma maneira de treinar embeddings semânticos é chamada de [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Baseia-se em duas arquiteturas principais que são usadas para produzir uma representação distribuída de palavras: - - **Continuous bag-of-words** (CBoW) — nesta arquitetura, treinamos o modelo para prever uma palavra a partir do contexto ao seu redor. Dado o ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, o objetivo do modelo é prever $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. - - **Continuous skip-gram** é o oposto do CBoW. O modelo usa uma janela de palavras de contexto ao redor para prever a palavra atual. + - **Continuous bag-of-words** (CBoW) — nesta arquitetura, treinamos o modelo para prever uma palavra a partir do contexto circundante. Dado o ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, o objetivo do modelo é prever $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** é o oposto do CBoW. O modelo usa a janela de palavras de contexto circundante para prever a palavra atual. -CBoW é mais rápido, enquanto skip-gram é mais lento, mas faz um trabalho melhor ao representar palavras infrequentes. +CBoW é mais rápido, enquanto o skip-gram é mais lento, mas faz um trabalho melhor ao representar palavras menos frequentes. -![Imagem mostrando os algoritmos CBoW e Skip-Gram para converter palavras em vetores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png) +![Imagem mostrando os algoritmos CBoW e Skip-Gram para converter palavras em vetores.](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) -> Imagem deste [artigo](https://arxiv.org/pdf/1301.3781.pdf) +> Imagem retirada [deste artigo](https://arxiv.org/pdf/1301.3781.pdf) -Os embeddings pré-treinados do Word2Vec (assim como outros modelos similares, como o GloVe) também podem ser usados no lugar da camada de embedding em redes neurais. No entanto, precisamos lidar com vocabulários, pois o vocabulário usado para pré-treinar o Word2Vec/GloVe provavelmente difere do vocabulário em nosso corpus de texto. Dê uma olhada nos Notebooks acima para ver como esse problema pode ser resolvido. +Os embeddings pré-treinados do Word2Vec (bem como outros modelos semelhantes, como GloVe) também podem ser usados no lugar da camada de embedding em redes neuronais. No entanto, precisamos de lidar com vocabulários, porque o vocabulário usado para pré-treinar o Word2Vec/GloVe provavelmente será diferente do vocabulário no nosso corpus de texto. Consulte os Notebooks acima para ver como este problema pode ser resolvido. ## Embeddings Contextuais -Uma limitação chave das representações de embedding pré-treinadas tradicionais, como o Word2Vec, é o problema da desambiguação de sentido das palavras. Embora os embeddings pré-treinados possam capturar parte do significado das palavras em contexto, cada possível significado de uma palavra é codificado no mesmo embedding. Isso pode causar problemas em modelos posteriores, uma vez que muitas palavras, como a palavra 'play', têm significados diferentes dependendo do contexto em que são usadas. +Uma limitação importante das representações de embeddings pré-treinados tradicionais, como o Word2Vec, é o problema da desambiguação de sentidos das palavras. Embora os embeddings pré-treinados possam capturar algum significado das palavras no contexto, todos os possíveis significados de uma palavra são codificados no mesmo embedding. Isso pode causar problemas em modelos subsequentes, já que muitas palavras, como a palavra 'play', têm significados diferentes dependendo do contexto em que são usadas. -Por exemplo, a palavra 'play' nas duas frases diferentes tem significados bastante distintos: +Por exemplo, a palavra 'play' nas duas frases abaixo tem significados bastante diferentes: -- Eu fui a uma **peça** no teatro. -- John quer **brincar** com seus amigos. +- Fui a uma **peça** no teatro. +- O João quer **brincar** com os amigos. -Os embeddings pré-treinados acima representam ambos os significados da palavra 'play' no mesmo embedding. Para superar essa limitação, precisamos construir embeddings baseados no **modelo de linguagem**, que é treinado em um grande corpus de texto e *sabe* como as palavras podem ser combinadas em diferentes contextos. Discutir embeddings contextuais está fora do escopo deste tutorial, mas voltaremos a eles ao falar sobre modelos de linguagem mais adiante no curso. +Os embeddings pré-treinados acima representam ambos os significados da palavra 'play' no mesmo embedding. Para superar esta limitação, precisamos de construir embeddings baseados no **modelo de linguagem**, que é treinado num grande corpus de texto e *sabe* como as palavras podem ser combinadas em diferentes contextos. Discutir embeddings contextuais está fora do âmbito deste tutorial, mas voltaremos a eles ao falar sobre modelos de linguagem mais adiante no curso. ## Conclusão -Nesta lição, você descobriu como construir e usar camadas de embedding no TensorFlow e Pytorch para refletir melhor os significados semânticos das palavras. +Nesta lição, descobriu como construir e usar camadas de embedding no TensorFlow e PyTorch para refletir melhor os significados semânticos das palavras. ## 🚀 Desafio -O Word2Vec tem sido usado para algumas aplicações interessantes, incluindo a geração de letras de músicas e poesias. Dê uma olhada neste [artigo](https://www.politetype.com/blog/word2vec-color-poems) que explica como o autor usou o Word2Vec para gerar poesia. Assista também a [este vídeo de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descobrir uma explicação diferente dessa técnica. Em seguida, tente aplicar essas técnicas ao seu próprio corpus de texto, talvez proveniente do Kaggle. +O Word2Vec tem sido usado para algumas aplicações interessantes, incluindo a geração de letras de músicas e poesia. Dê uma vista de olhos a [este artigo](https://www.politetype.com/blog/word2vec-color-poems), que explica como o autor usou o Word2Vec para gerar poesia. Veja também [este vídeo de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descobrir uma explicação diferente desta técnica. Depois, tente aplicar estas técnicas ao seu próprio corpus de texto, talvez obtido no Kaggle. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## Revisão & Autoestudo +## Revisão e Autoestudo -Leia este artigo sobre Word2Vec: [Estimativa Eficiente de Representações de Palavras em Espaço Vetorial](https://arxiv.org/pdf/1301.3781.pdf) +Leia este artigo sobre o Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) ## [Tarefa: Notebooks](assignment.md) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md b/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md index 469c7b48..5d6e275f 100644 --- a/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ + # Tarefa: Notebooks -Utilizando os notebooks associados a esta lição (seja a versão do PyTorch ou do TensorFlow), execute-os novamente com seu próprio conjunto de dados, talvez um do Kaggle, usado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas descobertas, utilizando textos como [essas letras dos Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). +Utilizando os notebooks associados a esta lição (seja a versão em PyTorch ou TensorFlow), execute-os novamente usando o seu próprio conjunto de dados, talvez um do Kaggle, utilizado com a devida atribuição. Reescreva o notebook para destacar as suas próprias conclusões. Experimente um tipo diferente de conjunto de dados e documente as suas descobertas, utilizando texto como [estas letras dos Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). -**Aviso**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md b/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md index 53a241bc..8bb50bc7 100644 --- a/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ -# Modelagem de Linguagem + +# Modelação de Linguagem -Embutimentos semânticos, como Word2Vec e GloVe, são na verdade um primeiro passo em direção à **modelagem de linguagem** - criar modelos que de alguma forma *entendem* (ou *representam*) a natureza da linguagem. +Embeddings semânticos, como Word2Vec e GloVe, são, na verdade, um primeiro passo em direção à **modelação de linguagem** - criar modelos que de alguma forma *compreendem* (ou *representam*) a natureza da linguagem. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -A ideia principal por trás da modelagem de linguagem é treiná-los em conjuntos de dados não rotulados de maneira não supervisionada. Isso é importante porque temos grandes quantidades de texto não rotulado disponíveis, enquanto a quantidade de texto rotulado sempre seria limitada pela quantidade de esforço que podemos gastar na rotulagem. Na maioria das vezes, podemos construir modelos de linguagem que podem **prever palavras ausentes** no texto, porque é fácil mascarar uma palavra aleatória no texto e usá-la como uma amostra de treinamento. +A ideia principal por trás da modelação de linguagem é treiná-los em conjuntos de dados não rotulados de forma não supervisionada. Isto é importante porque temos grandes quantidades de texto não rotulado disponível, enquanto a quantidade de texto rotulado estará sempre limitada pelo esforço necessário para rotulá-lo. Na maioria das vezes, podemos construir modelos de linguagem que conseguem **prever palavras em falta** no texto, porque é fácil ocultar uma palavra aleatória no texto e usá-la como amostra de treino. -## Treinamento de Embutimentos +## Treinar Embeddings -Em nossos exemplos anteriores, usamos embutimentos semânticos pré-treinados, mas é interessante ver como esses embutimentos podem ser treinados. Existem várias ideias possíveis que podem ser usadas: +Nos nossos exemplos anteriores, utilizámos embeddings semânticos pré-treinados, mas é interessante ver como esses embeddings podem ser treinados. Existem várias ideias possíveis que podem ser utilizadas: -* Modelagem de linguagem **N-Gram**, quando prevemos um token olhando para N tokens anteriores (N-gram) -* **Continuous Bag-of-Words** (CBoW), quando prevemos o token do meio $W_0$ em uma sequência de tokens $W_{-N}$, ..., $W_N$. -* **Skip-gram**, onde prevemos um conjunto de tokens vizinhos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir do token do meio $W_0$. +* **Modelação de linguagem N-Gram**, onde prevemos um token olhando para os N tokens anteriores (N-grama). +* **Continuous Bag-of-Words** (CBoW), onde prevemos o token central $W_0$ numa sequência de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, onde prevemos um conjunto de tokens vizinhos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir do token central $W_0$. -![imagem do artigo sobre conversão de palavras em vetores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png) +![imagem do artigo sobre conversão de palavras em vetores](../../../../../lessons/5-NLP/14-Embeddings/images/example-algorithms-for-converting-words-to-vectors.png) -> Imagem do [este artigo](https://arxiv.org/pdf/1301.3781.pdf) +> Imagem retirada [deste artigo](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Notebooks de Exemplo: Treinando o modelo CBoW +## ✍️ Notebooks de Exemplo: Treinar modelo CBoW -Continue seu aprendizado nos seguintes notebooks: +Continue a sua aprendizagem nos seguintes notebooks: -* [Treinando CBoW Word2Vec com TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Treinando CBoW Word2Vec com PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Treinar CBoW Word2Vec com TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Treinar CBoW Word2Vec com PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## Conclusão -Na lição anterior, vimos que os embutimentos de palavras funcionam como mágica! Agora sabemos que treinar embutimentos de palavras não é uma tarefa muito complexa, e devemos ser capazes de treinar nossos próprios embutimentos de palavras para texto específico de domínio, se necessário. +Na lição anterior vimos que os embeddings de palavras funcionam como magia! Agora sabemos que treinar embeddings de palavras não é uma tarefa muito complexa, e devemos ser capazes de treinar os nossos próprios embeddings para texto específico de domínio, se necessário. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Revisão & Estudo Autônomo +## Revisão & Estudo Autónomo -* [Tutorial oficial do PyTorch sobre Modelagem de Linguagem](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -* [Tutorial oficial do TensorFlow sobre treinamento de modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). -* Usar o framework **gensim** para treinar os embutimentos mais comumente usados em algumas linhas de código é descrito [nesta documentação](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial do PyTorch sobre Modelação de Linguagem](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial do TensorFlow sobre treino de modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Utilizar o framework **gensim** para treinar os embeddings mais comuns em poucas linhas de código é descrito [nesta documentação](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). ## 🚀 [Tarefa: Treinar Modelo Skip-Gram](lab/README.md) -No laboratório, desafiamos você a modificar o código desta lição para treinar o modelo skip-gram em vez do CBoW. [Leia os detalhes](lab/README.md) +No laboratório, desafiamos-lhe a modificar o código desta lição para treinar um modelo skip-gram em vez de CBoW. [Leia os detalhes](lab/README.md) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md index 027743ff..d8295382 100644 --- a/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Treinamento do Modelo Skip-Gram + +# Treinar Modelo Skip-Gram -Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo AI for Beginners](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Neste laboratório, desafiamos você a treinar um modelo Word2Vec usando a técnica Skip-Gram. Treine uma rede com incorporação para prever palavras vizinhas em uma janela Skip-Gram de $N$-tokens de largura. Você pode usar o [código desta lição](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) e modificá-lo ligeiramente. +Neste laboratório, desafiamos-te a treinar um modelo Word2Vec utilizando a técnica Skip-Gram. Treina uma rede com embeddings para prever palavras vizinhas numa janela Skip-Gram de $N$ tokens de largura. Podes usar o [código desta lição](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) e modificá-lo ligeiramente. ## O Conjunto de Dados -Sinta-se à vontade para usar qualquer livro. Você pode encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/); por exemplo, aqui está um link direto para [As Aventuras de Alice no País das Maravilhas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. Ou, você pode usar as peças de Shakespeare, que você pode obter usando o seguinte código: +Podes usar qualquer livro. Podes encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. Ou, podes usar as peças de Shakespeare, que podes obter utilizando o seguinte código: ```python path_to_file = tf.keras.utils.get_file( @@ -17,13 +26,13 @@ path_to_file = tf.keras.utils.get_file( text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ``` -## Explore! +## Explora! -Se você tiver tempo e quiser se aprofundar no assunto, tente explorar várias coisas: +Se tiveres tempo e quiseres aprofundar o tema, tenta explorar várias questões: -* Como o tamanho da incorporação afeta os resultados? +* Como o tamanho do embedding afeta os resultados? * Como diferentes estilos de texto afetam o resultado? -* Pegue vários tipos de palavras muito diferentes e seus sinônimos, obtenha suas representações vetoriais, aplique PCA para reduzir as dimensões para 2 e plote-os em um espaço 2D. Você vê algum padrão? +* Escolhe vários tipos de palavras muito diferentes e os seus sinónimos, obtém as suas representações vetoriais, aplica PCA para reduzir as dimensões para 2 e representa-as num espaço 2D. Consegues identificar algum padrão? -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/16-RNN/README.md b/translations/pt/lessons/5-NLP/16-RNN/README.md index fd8c64e2..f3e4c188 100644 --- a/translations/pt/lessons/5-NLP/16-RNN/README.md +++ b/translations/pt/lessons/5-NLP/16-RNN/README.md @@ -1,86 +1,96 @@ -# Redes Neurais Recorrentes + +# Redes Neuronais Recorrentes -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -Nas seções anteriores, temos utilizado representações semânticas ricas de texto e um classificador linear simples em cima das embeddings. O que essa arquitetura faz é capturar o significado agregado das palavras em uma frase, mas não leva em consideração a **ordem** das palavras, porque a operação de agregação em cima das embeddings removeu essa informação do texto original. Como esses modelos não conseguem modelar a ordem das palavras, eles não conseguem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. +Nas secções anteriores, utilizámos representações semânticas ricas de texto e um classificador linear simples sobre as embeddings. O que esta arquitetura faz é capturar o significado agregado das palavras numa frase, mas não considera a **ordem** das palavras, porque a operação de agregação sobre as embeddings removeu esta informação do texto original. Como estes modelos não conseguem modelar a ordem das palavras, não conseguem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. -Para capturar o significado de uma sequência de texto, precisamos usar outra arquitetura de rede neural, chamada de **rede neural recorrente**, ou RNN. Na RNN, passamos nossa frase pela rede um símbolo de cada vez, e a rede produz um **estado**, que então passamos para a rede novamente com o próximo símbolo. +Para capturar o significado de uma sequência de texto, precisamos de usar outra arquitetura de rede neural, chamada **rede neural recorrente**, ou RNN. Numa RNN, passamos a nossa frase pela rede, um símbolo de cada vez, e a rede produz um **estado**, que depois passamos novamente para a rede com o próximo símbolo. -![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pt.png) +![RNN](../../../../../lessons/5-NLP/16-RNN/images/rnn.png) > Imagem do autor -Dada a sequência de tokens de entrada X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina essa sequência de ponta a ponta usando retropropagação. Cada bloco da rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) vai para um classificador linear para produzir o resultado. Todos os blocos da rede compartilham os mesmos pesos e são treinados de ponta a ponta usando uma passagem de retropropagação. +Dada a sequência de entrada de tokens X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina esta sequência de ponta a ponta usando retropropagação. Cada bloco de rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) é enviado para um classificador linear para produzir o resultado. Todos os blocos da rede partilham os mesmos pesos e são treinados de ponta a ponta numa única passagem de retropropagação. -Como os vetores de estado S0,...,Sn são passados pela rede, ela é capaz de aprender as dependências sequenciais entre as palavras. Por exemplo, quando a palavra *not* aparece em algum lugar na sequência, ela pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. +Como os vetores de estado S0,...,Sn são passados pela rede, esta consegue aprender as dependências sequenciais entre palavras. Por exemplo, quando a palavra *não* aparece em algum lugar da sequência, a rede pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. -> ✅ Como os pesos de todos os blocos RNN na imagem acima são compartilhados, a mesma imagem pode ser representada como um bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. +> ✅ Como os pesos de todos os blocos RNN na imagem acima são partilhados, a mesma imagem pode ser representada como um único bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. ## Anatomia de uma Célula RNN -Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas, e deve produzir o estado de saída Si (e, às vezes, também estamos interessados em alguma outra saída Yi, como no caso de redes generativas). +Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas, e tem de produzir o estado de saída Si (e, por vezes, também estamos interessados noutra saída Yi, como no caso de redes generativas). -Uma célula RNN simples tem duas matrizes de pesos internas: uma transforma um símbolo de entrada (vamos chamá-la de W), e a outra transforma um estado de entrada (H). Neste caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. +Uma célula RNN simples tem duas matrizes de pesos internas: uma transforma um símbolo de entrada (vamos chamá-la de W) e outra transforma um estado de entrada (H). Neste caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. -Anatomia da Célula RNN +Anatomia de uma célula RNN > Imagem do autor -Em muitos casos, os tokens de entrada são passados pela camada de embedding antes de entrar na RNN para reduzir a dimensionalidade. Nesse caso, se a dimensão dos vetores de entrada é *emb_size*, e o vetor de estado é *hid_size* - o tamanho de W é *emb_size*×*hid_size*, e o tamanho de H é *hid_size*×*hid_size*. +Em muitos casos, os tokens de entrada passam por uma camada de embedding antes de entrar na RNN para reduzir a dimensionalidade. Neste caso, se a dimensão dos vetores de entrada for *emb_size* e o vetor de estado for *hid_size*, o tamanho de W será *emb_size*×*hid_size*, e o tamanho de H será *hid_size*×*hid_size*. -## Memória de Longo e Curto Prazo (LSTM) +## Long Short Term Memory (LSTM) -Um dos principais problemas das RNNs clássicas é o chamado problema dos **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta em uma única passagem de retropropagação, elas têm dificuldade em propagar o erro para as primeiras camadas da rede e, assim, a rede não consegue aprender relações entre tokens distantes. Uma das maneiras de evitar esse problema é introduzir **gerenciamento de estado explícito** usando os chamados **portões**. Existem duas arquiteturas bem conhecidas desse tipo: **Memória de Longo e Curto Prazo** (LSTM) e **Unidade de Relé com Portão** (GRU). +Um dos principais problemas das RNNs clássicas é o chamado problema de **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta numa única passagem de retropropagação, têm dificuldade em propagar o erro para as primeiras camadas da rede, e assim a rede não consegue aprender relações entre tokens distantes. Uma das formas de evitar este problema é introduzir uma **gestão explícita de estado** utilizando os chamados **gates**. Existem duas arquiteturas bem conhecidas deste tipo: **Long Short Term Memory** (LSTM) e **Gated Relay Unit** (GRU). -![Imagem mostrando um exemplo de célula de memória de longo e curto prazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Imagem mostrando um exemplo de célula LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> Fonte da imagem TBD +> Fonte da imagem a definir -A Rede LSTM é organizada de maneira semelhante à RNN, mas existem dois estados que são passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece com o estado C por meio de **portões**. Cada portão é uma rede neural com ativação sigmoide (saída na faixa [0,1]), que pode ser pensada como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes portões (da esquerda para a direita na imagem acima): +A rede LSTM é organizada de forma semelhante à RNN, mas existem dois estados que são passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece ao estado C através de **gates**. Cada gate é uma rede neural com ativação sigmoide (saída no intervalo [0,1]), que pode ser vista como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes gates (da esquerda para a direita na imagem acima): -* O **portão de esquecimento** pega um vetor oculto e determina quais componentes do vetor C precisamos esquecer e quais passar adiante. -* O **portão de entrada** pega algumas informações dos vetores de entrada e ocultos e as insere no estado. -* O **portão de saída** transforma o estado por meio de uma camada linear com ativação *tanh*, e então seleciona alguns de seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. +* O **gate de esquecimento** recebe um vetor oculto e determina quais componentes do vetor C precisamos esquecer e quais passar adiante. +* O **gate de entrada** extrai algumas informações dos vetores de entrada e ocultos e insere-as no estado. +* O **gate de saída** transforma o estado através de uma camada linear com ativação *tanh*, depois seleciona alguns dos seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. -Os componentes do estado C podem ser pensados como alguns indicadores que podem ser ativados ou desativados. Por exemplo, quando encontramos um nome *Alice* na sequência, podemos querer assumir que se refere a uma personagem feminina e ativar o indicador no estado de que temos um substantivo feminino na frase. Quando encontramos mais adiante a frase *and Tom*, ativaremos o indicador de que temos um substantivo no plural. Assim, manipulando o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. +Os componentes do estado C podem ser vistos como algumas bandeiras que podem ser ativadas ou desativadas. Por exemplo, quando encontramos o nome *Alice* na sequência, podemos assumir que se refere a uma personagem feminina e ativar a bandeira no estado indicando que temos um substantivo feminino na frase. Quando mais tarde encontramos a frase *e Tom*, ativamos a bandeira indicando que temos um substantivo no plural. Assim, ao manipular o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. > ✅ Um excelente recurso para entender os detalhes internos do LSTM é este ótimo artigo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. ## RNNs Bidirecionais e Multicamadas -Discutimos redes recorrentes que operam em uma direção, do início de uma sequência até o fim. Isso parece natural, porque se assemelha à maneira como lemos e ouvimos a fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Essas redes são chamadas de RNNs **bidirecionais**. Ao lidar com uma rede bidirecional, precisaríamos de dois vetores de estado ocultos, um para cada direção. +Discutimos redes recorrentes que operam numa direção, do início de uma sequência até ao fim. Parece natural, porque se assemelha à forma como lemos e ouvimos fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Estas redes são chamadas de **RNNs bidirecionais**. Ao lidar com uma rede bidirecional, precisaríamos de dois vetores de estado oculto, um para cada direção. -Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los em um vetor de estado ou passar para a saída. Assim como nas redes convolucionais, podemos construir outra camada recorrente em cima da primeira para capturar padrões de nível superior e construir a partir de padrões de baixo nível extraídos pela primeira camada. Isso nos leva à noção de uma **RNN multicamada**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. +Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los num vetor de estado ou passá-los para a saída. Tal como nas redes convolucionais, podemos construir outra camada recorrente sobre a primeira para capturar padrões de nível superior e construir a partir dos padrões de baixo nível extraídos pela primeira camada. Isto leva-nos à noção de uma **RNN multicamada**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. -![Imagem mostrando uma RNN multicamada de memória de longo e curto prazo](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pt.jpg) +![Imagem mostrando uma RNN LSTM multicamada](../../../../../lessons/5-NLP/16-RNN/images/multi-layer-lstm.jpg) -*Imagem do [este maravilhoso post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* +*Imagem retirada [deste excelente artigo](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* ## ✍️ Exercícios: Embeddings -Continue seu aprendizado nos seguintes notebooks: +Continue a sua aprendizagem nos seguintes notebooks: * [RNNs com PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) * [RNNs com TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) ## Conclusão -Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequências, mas, na verdade, elas podem lidar com muitas outras tarefas, como geração de texto, tradução automática e mais. Consideraremos essas tarefas na próxima unidade. +Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequências, mas, na verdade, podem lidar com muitas outras tarefas, como geração de texto, tradução automática e muito mais. Vamos considerar essas tarefas na próxima unidade. ## 🚀 Desafio -Leia algumas literaturas sobre LSTMs e considere suas aplicações: +Leia alguma literatura sobre LSTMs e considere as suas aplicações: - [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) -- [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Revisão & Autoestudo +## Revisão e Autoestudo - [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. ## [Tarefa: Notebooks](assignment.md) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/16-RNN/assignment.md b/translations/pt/lessons/5-NLP/16-RNN/assignment.md index a5911c10..6be1057a 100644 --- a/translations/pt/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/pt/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ + # Tarefa: Notebooks -Usando os notebooks associados a esta lição (seja a versão do PyTorch ou a do TensorFlow), execute-os novamente utilizando seu próprio conjunto de dados, talvez um do Kaggle, usado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas descobertas, utilizando textos como [este conjunto de dados de competição do Kaggle sobre tweets sobre clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Utilizando os notebooks associados a esta lição (seja a versão em PyTorch ou TensorFlow), execute-os novamente usando o seu próprio conjunto de dados, talvez um do Kaggle, utilizado com a devida atribuição. Reescreva o notebook para destacar as suas próprias conclusões. Experimente um tipo diferente de conjunto de dados e documente as suas descobertas, utilizando texto como [este conjunto de dados de uma competição do Kaggle sobre tweets relacionados ao clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md index 4f43ac62..07e260d0 100644 --- a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,31 +1,40 @@ -# Redes generativas + +# Redes Generativas -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Redes Neurais Recorrentes (RNNs) e suas variantes com células portadas, como Células de Memória de Longo e Curto Prazo (LSTMs) e Unidades Recorrentes Portadas (GRUs), fornecem um mecanismo para modelagem de linguagem, pois podem aprender a ordem das palavras e fazer previsões para a próxima palavra em uma sequência. Isso nos permite usar RNNs para **tarefas generativas**, como geração de texto comum, tradução automática e até mesmo legendagem de imagens. +Redes Neuronais Recorrentes (RNNs) e suas variantes com células controladas, como Long Short Term Memory Cells (LSTMs) e Gated Recurrent Units (GRUs), oferecem um mecanismo para modelagem de linguagem, permitindo aprender a ordem das palavras e prever a próxima palavra em uma sequência. Isso possibilita o uso de RNNs para **tarefas generativas**, como geração de texto comum, tradução automática e até legendagem de imagens. -> ✅ Pense em todas as vezes que você se beneficiou de tarefas generativas, como a conclusão de texto enquanto digita. Faça uma pesquisa sobre seus aplicativos favoritos para ver se eles utilizaram RNNs. +> ✅ Pense em todas as vezes que beneficiou-se de tarefas generativas, como a conclusão de texto enquanto escreve. Pesquise sobre as suas aplicações favoritas para descobrir se elas utilizam RNNs. -Na arquitetura de RNN que discutimos na unidade anterior, cada unidade RNN produzia o próximo estado oculto como uma saída. No entanto, também podemos adicionar outra saída a cada unidade recorrente, o que nos permitiria gerar uma **sequência** (que tem o mesmo comprimento da sequência original). Além disso, podemos usar unidades RNN que não aceitam uma entrada em cada passo, e apenas pegam algum vetor de estado inicial, e então produzem uma sequência de saídas. +Na arquitetura de RNN discutida na unidade anterior, cada unidade RNN produzia o próximo estado oculto como saída. No entanto, também podemos adicionar outra saída a cada unidade recorrente, permitindo-nos gerar uma **sequência** (com comprimento igual à sequência original). Além disso, podemos usar unidades RNN que não aceitam uma entrada em cada etapa, apenas um vetor de estado inicial, e então produzem uma sequência de saídas. -Isso permite diferentes arquiteturas neurais que são mostradas na imagem abaixo: +Isso permite diferentes arquiteturas neurais, como mostrado na imagem abaixo: -![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg) +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> Imagem do post do blog [Eficácia Irresistível das Redes Neurais Recorrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) +> Imagem do artigo [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpaty](http://karpathy.github.io/) * **Um-para-um** é uma rede neural tradicional com uma entrada e uma saída -* **Um-para-muitos** é uma arquitetura generativa que aceita um valor de entrada e gera uma sequência de valores de saída. Por exemplo, se quisermos treinar uma rede de **legendagem de imagens** que produza uma descrição textual de uma imagem, podemos usar uma imagem como entrada, passá-la por uma CNN para obter seu estado oculto, e então ter uma cadeia recorrente gerando a legenda palavra por palavra -* **Muitos-para-um** corresponde às arquiteturas RNN que descrevemos na unidade anterior, como a classificação de texto -* **Muitos-para-muitos**, ou **sequência-para-sequência**, corresponde a tarefas como **tradução automática**, onde temos a primeira RNN coletando todas as informações da sequência de entrada no estado oculto, e outra cadeia RNN desenrolando esse estado na sequência de saída. +* **Um-para-muitos** é uma arquitetura generativa que aceita um valor de entrada e gera uma sequência de valores de saída. Por exemplo, se quisermos treinar uma rede de **legendagem de imagens** que produza uma descrição textual de uma imagem, podemos usar uma imagem como entrada, passá-la por uma CNN para obter seu estado oculto e, em seguida, usar uma cadeia recorrente para gerar a legenda palavra por palavra +* **Muitos-para-um** corresponde às arquiteturas RNN descritas na unidade anterior, como classificação de texto +* **Muitos-para-muitos**, ou **sequência-para-sequência**, corresponde a tarefas como **tradução automática**, onde uma primeira RNN coleta todas as informações da sequência de entrada no estado oculto, e outra cadeia RNN desenrola esse estado na sequência de saída. -Nesta unidade, vamos nos concentrar em modelos generativos simples que nos ajudam a gerar texto. Para simplificar, usaremos tokenização em nível de caractere. +Nesta unidade, focaremos em modelos generativos simples que nos ajudam a gerar texto. Para simplificar, utilizaremos tokenização a nível de caracteres. -Vamos treinar esta RNN para gerar texto passo a passo. Em cada passo, pegaremos uma sequência de caracteres de comprimento `nchars` e pediremos à rede para gerar o próximo caractere de saída para cada caractere de entrada: +Treinaremos esta RNN para gerar texto passo a passo. Em cada etapa, tomaremos uma sequência de caracteres de comprimento `nchars` e pediremos à rede que gere o próximo caractere de saída para cada caractere de entrada: -![Imagem mostrando um exemplo de geração RNN da palavra 'OLÁ'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pt.png) +![Imagem mostrando um exemplo de geração de RNN da palavra 'HELLO'.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/rnn-generate.png) -Ao gerar texto (durante a inferência), começamos com algum **prompt**, que é passado pelas células RNN para gerar seu estado intermediário, e então a partir desse estado a geração começa. Geramos um caractere de cada vez e passamos o estado e o caractere gerado para outra célula RNN para gerar o próximo, até gerarmos caracteres suficientes. +Ao gerar texto (durante a inferência), começamos com um **prompt**, que é passado pelas células RNN para gerar seu estado intermediário, e então a geração começa a partir desse estado. Geramos um caractere de cada vez e passamos o estado e o caractere gerado para outra célula RNN para gerar o próximo, até que tenhamos gerado caracteres suficientes. @@ -33,47 +42,47 @@ Ao gerar texto (durante a inferência), começamos com algum **prompt**, que é ## ✍️ Exercícios: Redes Generativas -Continue seu aprendizado nos seguintes notebooks: +Continue o seu aprendizado nos seguintes notebooks: * [Redes Generativas com PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) * [Redes Generativas com TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) ## Geração de texto suave e temperatura -A saída de cada célula RNN é uma distribuição de probabilidade de caracteres. Se sempre pegarmos o caractere com a maior probabilidade como o próximo caractere no texto gerado, o texto pode frequentemente "circular" entre as mesmas sequências de caracteres repetidamente, como neste exemplo: +A saída de cada célula RNN é uma distribuição de probabilidade de caracteres. Se sempre escolhermos o caractere com a maior probabilidade como o próximo caractere no texto gerado, o texto pode frequentemente "ciclar" entre as mesmas sequências de caracteres repetidamente, como neste exemplo: ``` today of the second the company and a second the company ... ``` -No entanto, se olharmos para a distribuição de probabilidade do próximo caractere, pode ser que a diferença entre algumas das maiores probabilidades não seja enorme, por exemplo, um caractere pode ter probabilidade 0.2, outro - 0.19, etc. Por exemplo, ao procurar o próximo caractere na sequência '*play*', o próximo caractere pode ser igualmente um espaço ou **e** (como na palavra *player*). +No entanto, ao observar a distribuição de probabilidade para o próximo caractere, pode ser que a diferença entre algumas das maiores probabilidades não seja muito grande, por exemplo, um caractere pode ter probabilidade 0.2, outro 0.19, etc. Por exemplo, ao procurar o próximo caractere na sequência '*play*', o próximo caractere pode ser igualmente um espaço ou **e** (como na palavra *player*). -Isso nos leva à conclusão de que não é sempre "justo" selecionar o caractere com a maior probabilidade, porque escolher o segundo mais alto ainda pode nos levar a um texto significativo. É mais sábio **amostrar** caracteres da distribuição de probabilidade dada pela saída da rede. Também podemos usar um parâmetro, **temperatura**, que irá achatar a distribuição de probabilidade, caso queiramos adicionar mais aleatoriedade, ou torná-la mais acentuada, se quisermos nos apegar mais aos caracteres de maior probabilidade. +Isso nos leva à conclusão de que nem sempre é "justo" selecionar o caractere com maior probabilidade, pois escolher o segundo maior ainda pode levar a um texto significativo. É mais sábio **amostrar** caracteres da distribuição de probabilidade fornecida pela saída da rede. Podemos também usar um parâmetro, **temperatura**, que ajusta a distribuição de probabilidade, caso queiramos adicionar mais aleatoriedade ou torná-la mais íngreme, se quisermos nos ater mais aos caracteres de maior probabilidade. -Explore como essa geração de texto suave é implementada nos notebooks vinculados acima. +Explore como essa geração de texto suave é implementada nos notebooks acima. ## Conclusão -Embora a geração de texto possa ser útil por si só, os principais benefícios vêm da capacidade de gerar texto usando RNNs a partir de algum vetor de características inicial. Por exemplo, a geração de texto é usada como parte da tradução automática (sequência-para-sequência, neste caso o vetor de estado do *codificador* é usado para gerar ou *decodificar* a mensagem traduzida), ou gerando uma descrição textual de uma imagem (caso em que o vetor de características viria do extrator CNN). +Embora a geração de texto possa ser útil por si só, os maiores benefícios vêm da capacidade de gerar texto usando RNNs a partir de algum vetor de características inicial. Por exemplo, a geração de texto é usada como parte da tradução automática (sequência-para-sequência, neste caso o vetor de estado do *encoder* é usado para gerar ou *decodificar* a mensagem traduzida) ou para gerar descrições textuais de uma imagem (neste caso, o vetor de características viria de um extrator CNN). ## 🚀 Desafio -Faça algumas lições no Microsoft Learn sobre este tópico +Faça algumas lições no Microsoft Learn sobre este tópico: * Geração de Texto com [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Revisão & Estudo Autônomo +## Revisão e Autoestudo -Aqui estão alguns artigos para expandir seu conhecimento +Aqui estão alguns artigos para expandir o seu conhecimento: -* Diferentes abordagens para geração de texto com Cadeia de Markov, LSTM e GPT-2: [post do blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Diferentes abordagens para geração de texto com Markov Chain, LSTM e GPT-2: [artigo](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) * Exemplo de geração de texto na [documentação do Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) ## [Tarefa](lab/README.md) -Vimos como gerar texto caractere por caractere. No laboratório, você explorará a geração de texto em nível de palavra. +Vimos como gerar texto caractere por caractere. No laboratório, você explorará a geração de texto a nível de palavras. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 7dbc8b55..a675f31a 100644 --- a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ -# Geração de Texto em Nível de Palavra usando RNNs + +# Geração de Texto a Nível de Palavra usando RNNs -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Neste laboratório, você precisa escolher qualquer livro e usá-lo como um conjunto de dados para treinar um gerador de texto em nível de palavra. +Neste trabalho, precisas de escolher um livro e utilizá-lo como conjunto de dados para treinar um gerador de texto a nível de palavra. ## O Conjunto de Dados -Você é livre para usar qualquer livro. Você pode encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [As Aventuras de Alice no País das Maravilhas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. +Podes usar qualquer livro. Podes encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) de Lewis Carroll. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/18-Transformers/README.md b/translations/pt/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..9af24f02 --- /dev/null +++ b/translations/pt/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mecanismos de Atenção e Transformers + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Um dos problemas mais importantes no domínio do PLN (Processamento de Linguagem Natural) é a **tradução automática**, uma tarefa essencial que sustenta ferramentas como o Google Tradutor. Nesta seção, vamos focar na tradução automática ou, de forma mais geral, em qualquer tarefa de *sequência para sequência* (também chamada de **transdução de frases**). + +Com RNNs, a tarefa de sequência para sequência é implementada por duas redes recorrentes, onde uma rede, o **codificador**, comprime uma sequência de entrada em um estado oculto, enquanto outra rede, o **decodificador**, expande esse estado oculto em um resultado traduzido. Existem alguns problemas com essa abordagem: + +* O estado final da rede codificadora tem dificuldade em lembrar o início de uma frase, o que resulta em baixa qualidade do modelo para frases longas. +* Todas as palavras em uma sequência têm o mesmo impacto no resultado. Na realidade, no entanto, palavras específicas na sequência de entrada frequentemente têm mais impacto nos resultados sequenciais do que outras. + +Os **Mecanismos de Atenção** fornecem um meio de ponderar o impacto contextual de cada vetor de entrada em cada previsão de saída da RNN. Isso é implementado criando atalhos entre os estados intermediários da RNN de entrada e a RNN de saída. Dessa forma, ao gerar o símbolo de saída yt, consideramos todos os estados ocultos de entrada hi, com diferentes coeficientes de peso αt,i. + +![Imagem mostrando um modelo codificador/decodificador com uma camada de atenção aditiva](../../../../../lessons/5-NLP/18-Transformers/images/encoder-decoder-attention.png) + +> O modelo codificador-decodificador com mecanismo de atenção aditiva em [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citado deste [blog post](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +A matriz de atenção {αi,j} representaria o grau em que certas palavras de entrada influenciam a geração de uma palavra específica na sequência de saída. Abaixo está um exemplo de tal matriz: + +![Imagem mostrando um alinhamento de exemplo encontrado pelo RNNsearch-50, retirada de Bahdanau - arviz.org](../../../../../lessons/5-NLP/18-Transformers/images/bahdanau-fig3.png) + +> Figura de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Os mecanismos de atenção são responsáveis por grande parte do estado da arte atual ou próximo ao atual no PLN. No entanto, adicionar atenção aumenta significativamente o número de parâmetros do modelo, o que levou a problemas de escalabilidade com RNNs. Uma limitação chave na escalabilidade das RNNs é que a natureza recorrente dos modelos dificulta o agrupamento e a paralelização do treinamento. Em uma RNN, cada elemento de uma sequência precisa ser processado em ordem sequencial, o que significa que não pode ser facilmente paralelizado. + +![Codificador Decodificador com Atenção](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura do [Blog do Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +A adoção de mecanismos de atenção, combinada com essa limitação, levou à criação dos agora modelos Transformers de estado da arte que conhecemos e usamos hoje, como BERT e Open-GPT3. + +## Modelos Transformers + +Uma das principais ideias por trás dos transformers é evitar a natureza sequencial das RNNs e criar um modelo que seja paralelizável durante o treinamento. Isso é alcançado implementando duas ideias: + +* codificação posicional +* uso do mecanismo de auto-atenção para capturar padrões em vez de RNNs (ou CNNs) (é por isso que o artigo que introduz os transformers se chama *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codificação/Embelezamento Posicional + +A ideia da codificação posicional é a seguinte: +1. Ao usar RNNs, a posição relativa dos tokens é representada pelo número de passos, e, portanto, não precisa ser representada explicitamente. +2. No entanto, ao mudarmos para atenção, precisamos saber as posições relativas dos tokens dentro de uma sequência. +3. Para obter a codificação posicional, aumentamos nossa sequência de tokens com uma sequência de posições dos tokens na sequência (ou seja, uma sequência de números 0, 1, ...). +4. Em seguida, misturamos a posição do token com um vetor de embelezamento do token. Para transformar a posição (inteiro) em um vetor, podemos usar diferentes abordagens: + +* Embelezamento treinável, semelhante ao embelezamento de tokens. Esta é a abordagem que consideramos aqui. Aplicamos camadas de embelezamento tanto nos tokens quanto em suas posições, resultando em vetores de embelezamento com as mesmas dimensões, que então somamos. +* Função fixa de codificação posicional, como proposto no artigo original. + + + +> Imagem do autor + +O resultado que obtemos com o embelezamento posicional incorpora tanto o token original quanto sua posição dentro de uma sequência. + +### Auto-Atenção Multi-Cabeça + +Em seguida, precisamos capturar alguns padrões dentro de nossa sequência. Para isso, os transformers usam um mecanismo de **auto-atenção**, que é essencialmente atenção aplicada à mesma sequência como entrada e saída. Aplicar auto-atenção nos permite levar em conta o **contexto** dentro da frase e ver quais palavras estão inter-relacionadas. Por exemplo, permite-nos ver quais palavras são referidas por correferências, como *it*, e também considerar o contexto: + +![](../../../../../lessons/5-NLP/18-Transformers/images/CoreferenceResolution.png) + +> Imagem do [Blog do Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Nos transformers, usamos **Atenção Multi-Cabeça** para dar à rede o poder de capturar vários tipos diferentes de dependências, como relações de palavras de longo prazo vs. curto prazo, correferência vs. outra coisa, etc. + +O [Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contém mais detalhes sobre a implementação das camadas do transformer. + +### Atenção Codificador-Decodificador + +Nos transformers, a atenção é usada em dois lugares: + +* Para capturar padrões dentro do texto de entrada usando auto-atenção. +* Para realizar a tradução de sequência - é a camada de atenção entre o codificador e o decodificador. + +A atenção codificador-decodificador é muito semelhante ao mecanismo de atenção usado nas RNNs, conforme descrito no início desta seção. Este diagrama animado explica o papel da atenção codificador-decodificador. + +![GIF animado mostrando como as avaliações são realizadas em modelos transformers.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Como cada posição de entrada é mapeada de forma independente para cada posição de saída, os transformers podem paralelizar melhor do que as RNNs, o que permite modelos de linguagem muito maiores e mais expressivos. Cada cabeça de atenção pode ser usada para aprender diferentes relações entre palavras, melhorando as tarefas de Processamento de Linguagem Natural. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) é uma rede transformer muito grande com várias camadas: 12 camadas para o *BERT-base* e 24 para o *BERT-large*. O modelo é inicialmente pré-treinado em um grande corpus de dados textuais (Wikipedia + livros) usando treinamento não supervisionado (prevendo palavras mascaradas em uma frase). Durante o pré-treinamento, o modelo absorve níveis significativos de compreensão da linguagem, que podem ser aproveitados com outros conjuntos de dados usando ajuste fino. Esse processo é chamado de **aprendizagem por transferência**. + +![imagem de http://jalammar.github.io/illustrated-bert/](../../../../../lessons/5-NLP/18-Transformers/images/jalammarBERT-language-modeling-masked-lm.png) + +> Imagem [fonte](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercícios: Transformers + +Continue o seu aprendizado nos seguintes notebooks: + +* [Transformers em PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers em TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusão + +Nesta lição, você aprendeu sobre Transformers e Mecanismos de Atenção, ferramentas essenciais na caixa de ferramentas do PLN. Existem muitas variações das arquiteturas de Transformers, incluindo BERT, DistilBERT, BigBird, OpenGPT3 e mais, que podem ser ajustadas. O [pacote HuggingFace](https://github.com/huggingface/) fornece um repositório para treinar muitas dessas arquiteturas com PyTorch e TensorFlow. + +## 🚀 Desafio + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisão e Autoestudo + +* [Blog post](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), explicando o clássico artigo [Attention is all you need](https://arxiv.org/abs/1706.03762) sobre transformers. +* [Uma série de posts no blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sobre transformers, explicando a arquitetura em detalhe. + +## [Tarefa](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/18-Transformers/assignment.md b/translations/pt/lessons/5-NLP/18-Transformers/assignment.md index 7b99267e..dae778b8 100644 --- a/translations/pt/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/pt/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ + # Tarefa: Transformers -Experimente os Transformers no HuggingFace! Tente alguns dos scripts que eles fornecem para trabalhar com os vários modelos disponíveis em seu site: https://huggingface.co/docs/transformers/run_scripts. Experimente um dos conjuntos de dados deles, depois importe um dos seus próprios deste currículo ou do Kaggle e veja se consegue gerar textos interessantes. Produza um notebook com suas descobertas. +Experimente os Transformers no HuggingFace! Teste alguns dos scripts que eles fornecem para trabalhar com os vários modelos disponíveis no site: https://huggingface.co/docs/transformers/run_scripts. Experimente um dos seus conjuntos de dados, depois importe um dos seus próprios deste currículo ou do Kaggle e veja se consegue gerar textos interessantes. Produza um notebook com as suas descobertas. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/19-NER/README.md b/translations/pt/lessons/5-NLP/19-NER/README.md index 6ffd2b53..a612a47e 100644 --- a/translations/pt/lessons/5-NLP/19-NER/README.md +++ b/translations/pt/lessons/5-NLP/19-NER/README.md @@ -1,28 +1,37 @@ + # Reconhecimento de Entidades Nomeadas -Até agora, temos nos concentrado principalmente em uma tarefa de PLN - classificação. No entanto, também existem outras tarefas de PLN que podem ser realizadas com redes neurais. Uma dessas tarefas é o **[Reconhecimento de Entidades Nomeadas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que lida com o reconhecimento de entidades específicas dentro do texto, como lugares, nomes de pessoas, intervalos de data-hora, fórmulas químicas e assim por diante. +Até agora, temos nos concentrado principalmente em uma tarefa de PLN - classificação. No entanto, existem outras tarefas de PLN que podem ser realizadas com redes neurais. Uma dessas tarefas é o **[Reconhecimento de Entidades Nomeadas](https://wikipedia.org/wiki/Reconhecimento_de_entidades_nomeadas)** (NER), que lida com o reconhecimento de entidades específicas em um texto, como locais, nomes de pessoas, intervalos de data e hora, fórmulas químicas, entre outros. -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) ## Exemplo de Uso do NER -Suponha que você queira desenvolver um chatbot de linguagem natural, semelhante ao Amazon Alexa ou ao Google Assistant. A forma como os chatbots inteligentes funcionam é *entendendo* o que o usuário deseja, realizando a classificação de texto na frase de entrada. O resultado dessa classificação é chamado de **intenção**, que determina o que um chatbot deve fazer. +Suponha que queira desenvolver um chatbot de linguagem natural, semelhante à Amazon Alexa ou ao Google Assistant. A forma como chatbots inteligentes funcionam é *entendendo* o que o utilizador deseja, realizando a classificação de texto na frase de entrada. O resultado dessa classificação é o chamado **intento**, que determina o que o chatbot deve fazer. Bot NER > Imagem do autor -No entanto, um usuário pode fornecer alguns parâmetros como parte da frase. Por exemplo, ao perguntar sobre o clima, ela pode especificar uma localização ou data. Um bot deve ser capaz de entender essas entidades e preencher os espaços dos parâmetros de acordo antes de executar a ação. É exatamente aqui que o NER entra em cena. +No entanto, um utilizador pode fornecer alguns parâmetros como parte da frase. Por exemplo, ao perguntar sobre o tempo, ele pode especificar uma localização ou uma data. Um bot deve ser capaz de compreender essas entidades e preencher os campos de parâmetros adequadamente antes de executar a ação. É exatamente aqui que o NER entra em cena. -> ✅ Outro exemplo seria [analisar artigos médicos científicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Uma das principais coisas que precisamos procurar são termos médicos específicos, como doenças e substâncias médicas. Embora um pequeno número de doenças possa ser extraído usando busca de substring, entidades mais complexas, como compostos químicos e nomes de medicamentos, necessitam de uma abordagem mais complexa. +> ✅ Outro exemplo seria [analisar artigos científicos na área médica](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Um dos principais objetivos é identificar termos médicos específicos, como doenças e substâncias médicas. Enquanto um pequeno número de doenças pode ser extraído usando busca por subcadeias, entidades mais complexas, como compostos químicos e nomes de medicamentos, exigem uma abordagem mais sofisticada. ## NER como Classificação de Tokens -Os modelos de NER são essencialmente **modelos de classificação de tokens**, porque para cada um dos tokens de entrada precisamos decidir se ele pertence a uma entidade ou não, e se sim - a qual classe de entidade. +Os modelos de NER são essencialmente **modelos de classificação de tokens**, porque para cada token de entrada precisamos decidir se ele pertence a uma entidade ou não, e, se pertence, a qual classe de entidade. Considere o seguinte título de artigo: -**Regurgitação da válvula tricúspide** e **toxicidade do carbonato de lítio** em um recém-nascido. +**Regurgitação da válvula tricúspide** e **carbonato de lítio** **toxicidade** em um recém-nascido. As entidades aqui são: @@ -30,7 +39,7 @@ As entidades aqui são: * Carbonato de lítio é uma substância química (`CHEM`) * Toxicidade também é uma doença (`DIS`) -Observe que uma entidade pode abranger vários tokens. E, como neste caso, precisamos distinguir entre duas entidades consecutivas. Assim, é comum usar duas classes para cada entidade - uma especificando o primeiro token da entidade (frequentemente o prefixo `B-` é usado, para **b**eginning), e outra - a continuação de uma entidade (`I-`, para **i**nner token). Também usamos `O` como uma classe para representar todos os **o**utros tokens. Essa marcação de tokens é chamada de [BIO tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ou IOB). Quando marcados, nosso título ficará assim: +Note que uma entidade pode abranger vários tokens. E, como neste caso, precisamos distinguir entre duas entidades consecutivas. Assim, é comum usar duas classes para cada entidade - uma especificando o primeiro token da entidade (geralmente o prefixo `B-` é usado, para **b**eginning/início), e outra para a continuação da entidade (`I-`, para **i**nner token/token interno). Também usamos `O` como uma classe para representar todos os **o**utros tokens. Essa marcação de tokens é chamada de [marcação BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ou IOB). Quando marcado, nosso título ficará assim: Token | Tag ------|----- @@ -38,47 +47,48 @@ Tricúspide | B-DIS válvula | I-DIS regurgitação | I-DIS e | O -lítio | B-CHEM -carbonato | I-CHEM +carbonato | B-CHEM +de | I-CHEM +lítio | I-CHEM toxicidade | B-DIS em | O um | O recém-nascido | O . | O -Como precisamos construir uma correspondência um a um entre tokens e classes, podemos treinar um modelo de rede neural **muitos-para-muitos** a partir desta imagem: +Como precisamos construir uma correspondência um-para-um entre tokens e classes, podemos treinar um modelo de rede neural **muitos-para-muitos** da seguinte forma: -![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg) +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../lessons/5-NLP/17-GenerativeNetworks/images/unreasonable-effectiveness-of-rnn.jpg) -> *Imagem de [este post no blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpathy](http://karpathy.github.io/). Os modelos de classificação de tokens NER correspondem à arquitetura de rede mais à direita nesta imagem.* +> *Imagem retirada [deste artigo](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Os modelos de classificação de tokens NER correspondem à arquitetura de rede mais à direita nesta imagem.* ## Treinamento de Modelos NER -Como um modelo NER é essencialmente um modelo de classificação de tokens, podemos usar RNNs com os quais já estamos familiarizados para essa tarefa. Nesse caso, cada bloco da rede recorrente retornará o ID do token. O exemplo de notebook a seguir mostra como treinar LSTM para classificação de tokens. +Como um modelo NER é essencialmente um modelo de classificação de tokens, podemos usar RNNs, com as quais já estamos familiarizados, para essa tarefa. Nesse caso, cada bloco da rede recorrente retornará o ID do token. O seguinte notebook de exemplo mostra como treinar um LSTM para classificação de tokens. ## ✍️ Notebooks de Exemplo: NER -Continue seu aprendizado no seguinte notebook: +Continue o seu aprendizado no seguinte notebook: * [NER com TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) ## Conclusão -Um modelo NER é um **modelo de classificação de tokens**, o que significa que pode ser usado para realizar classificação de tokens. Esta é uma tarefa muito comum em PLN, ajudando a reconhecer entidades específicas dentro do texto, incluindo lugares, nomes, datas e mais. +Um modelo NER é um **modelo de classificação de tokens**, o que significa que ele pode ser usado para realizar a classificação de tokens. Esta é uma tarefa muito comum em PLN, ajudando a reconhecer entidades específicas em textos, incluindo locais, nomes, datas e muito mais. ## 🚀 Desafio -Complete a tarefa vinculada abaixo para treinar um modelo de reconhecimento de entidades nomeadas para termos médicos e, em seguida, experimente em um conjunto de dados diferente. +Complete o exercício abaixo para treinar um modelo de reconhecimento de entidades nomeadas para termos médicos e, em seguida, experimente-o em um conjunto de dados diferente. -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) ## Revisão e Autoestudo -Leia o blog [A Eficácia Irresistível das Redes Neurais Recorrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) e siga a seção de Leitura Adicional nesse artigo para aprofundar seu conhecimento. +Leia o artigo [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) e explore a seção de Leituras Adicionais para aprofundar o seu conhecimento. -## [Tarefa](lab/README.md) +## [Exercício](lab/README.md) -Na tarefa para esta lição, você terá que treinar um modelo de reconhecimento de entidades médicas. Você pode começar treinando um modelo LSTM conforme descrito nesta lição e prosseguir com o uso do modelo de transformador BERT. Leia [as instruções](lab/README.md) para obter todos os detalhes. +No exercício desta lição, terá de treinar um modelo de reconhecimento de entidades médicas. Pode começar treinando um modelo LSTM, como descrito nesta lição, e depois avançar para o uso do modelo transformer BERT. Leia [as instruções](lab/README.md) para obter todos os detalhes. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/19-NER/lab/README.md b/translations/pt/lessons/5-NLP/19-NER/lab/README.md index 05a7254a..7bf01bd1 100644 --- a/translations/pt/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/pt/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Neste laboratório, você precisa treinar um modelo de reconhecimento de entidades nomeadas para termos médicos. +Neste laboratório, precisas de treinar um modelo de reconhecimento de entidades nomeadas (NER) para termos médicos. ## O Conjunto de Dados -Para treinar o modelo NER, precisamos de um conjunto de dados devidamente rotulado com entidades médicas. O [conjunto de dados BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contém doenças e entidades químicas rotuladas de mais de 1500 artigos. Você pode baixar o conjunto de dados após se registrar no site deles. +Para treinar o modelo NER, precisamos de um conjunto de dados devidamente etiquetado com entidades médicas. O [conjunto de dados BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contém entidades de doenças e químicos etiquetadas a partir de mais de 1500 artigos. Podes descarregar o conjunto de dados após te registares no site deles. -O conjunto de dados BC5CDR se parece com isto: +O conjunto de dados BC5CDR tem o seguinte aspeto: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ O conjunto de dados BC5CDR se parece com isto: ... ``` -Neste conjunto de dados, há o título e o resumo do artigo nas duas primeiras linhas, seguidos pelas entidades individuais, com as posições inicial e final dentro do bloco título+resumo. Além do tipo de entidade, você obtém o ID da ontologia dessa entidade dentro de alguma ontologia médica. +Neste conjunto de dados, o título e o resumo do artigo estão nas duas primeiras linhas, seguidos pelas entidades individuais, com as posições de início e fim dentro do bloco título+resumo. Além do tipo de entidade, obténs o ID de ontologia dessa entidade dentro de uma ontologia médica. -Você precisará escrever algum código em Python para converter isso em codificação BIO. +Precisarás de escrever algum código em Python para converter isto para a codificação BIO. ## A Rede -A primeira tentativa de NER pode ser feita usando uma rede LSTM, como no nosso exemplo que você viu durante a aula. No entanto, em tarefas de NLP, a [arquitetura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), e especificamente os [modelos de linguagem BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), mostram resultados muito melhores. Os modelos BERT pré-treinados entendem a estrutura geral de uma língua e podem ser ajustados para tarefas específicas com conjuntos de dados relativamente pequenos e custos computacionais baixos. +A primeira tentativa de NER pode ser feita utilizando uma rede LSTM, como no exemplo que viste durante a aula. No entanto, em tarefas de PLN, a [arquitetura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), e especificamente os [modelos de linguagem BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), apresentam resultados muito melhores. Modelos BERT pré-treinados compreendem a estrutura geral de uma linguagem e podem ser ajustados para tarefas específicas com conjuntos de dados relativamente pequenos e custos computacionais reduzidos. -Como estamos planejando aplicar NER a um cenário médico, faz sentido usar um modelo BERT treinado em textos médicos. A Microsoft Research lançou um modelo pré-treinado chamado [PubMedBERT][PubMedBERT] ([publicação][PubMedBERT-Pub]), que foi ajustado usando textos do repositório [PubMed](https://pubmed.ncbi.nlm.nih.gov/). +Como planeamos aplicar NER a um cenário médico, faz sentido usar um modelo BERT treinado em textos médicos. A Microsoft Research lançou um modelo pré-treinado chamado [PubMedBERT][PubMedBERT] ([publicação][PubMedBERT-Pub]), que foi ajustado utilizando textos do repositório [PubMed](https://pubmed.ncbi.nlm.nih.gov/). -O padrão *de fato* para treinar modelos transformer é a biblioteca [Hugging Face Transformers](https://huggingface.co/). Ela também contém um repositório de modelos pré-treinados mantidos pela comunidade, incluindo o PubMedBERT. Para carregar e usar este modelo, precisamos apenas de algumas linhas de código: +O padrão *de facto* para treinar modelos transformer é a biblioteca [Hugging Face Transformers](https://huggingface.co/). Esta também contém um repositório de modelos pré-treinados mantidos pela comunidade, incluindo o PubMedBERT. Para carregar e usar este modelo, só precisas de algumas linhas de código: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Isso nos dá o objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que pode dividir o texto de entrada em tokens. Você precisará converter o conjunto de dados para o formato BIO, levando em conta a tokenização do PubMedBERT. Você pode usar [este trecho de código Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiração. +Isto fornece-nos o `model` propriamente dito, construído para a tarefa de classificação de tokens usando `classes` número de classes, bem como o objeto `tokenizer` que pode dividir o texto de entrada em tokens. Precisarás de converter o conjunto de dados para o formato BIO, tendo em conta a tokenização do PubMedBERT. Podes usar [este trecho de código Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiração. ## Conclusão -Essa tarefa é muito próxima da tarefa real que você provavelmente terá se quiser obter mais insights sobre grandes volumes de textos em linguagem natural. No nosso caso, podemos aplicar nosso modelo treinado ao [conjunto de dados de artigos relacionados ao COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) e ver quais insights conseguiremos obter. [Este post de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) e [este artigo](https://www.mdpi.com/2504-2289/6/1/4) descrevem a pesquisa que pode ser realizada sobre este corpus de artigos usando NER. +Esta tarefa é muito próxima da tarefa real que provavelmente terás se quiseres obter mais insights sobre grandes volumes de textos em linguagem natural. No nosso caso, podemos aplicar o nosso modelo treinado ao [conjunto de dados de artigos relacionados com a COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) e ver que insights conseguimos obter. [Este artigo de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) e [este artigo científico](https://www.mdpi.com/2504-2289/6/1/4) descrevem a investigação que pode ser feita neste corpus de artigos utilizando NER. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/20-LangModels/README.md b/translations/pt/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..a6440bbc --- /dev/null +++ b/translations/pt/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Modelos de Linguagem Pré-Treinados de Grande Escala + +Em todas as nossas tarefas anteriores, treinámos uma rede neural para realizar uma determinada tarefa utilizando um conjunto de dados rotulado. Com modelos transformadores grandes, como o BERT, utilizamos modelagem de linguagem de forma auto-supervisionada para construir um modelo de linguagem, que é então especializado para uma tarefa específica com treino adicional específico do domínio. No entanto, foi demonstrado que modelos de linguagem de grande escala também podem resolver muitas tarefas sem QUALQUER treino específico do domínio. Uma família de modelos capaz de fazer isso é chamada de **GPT**: Transformador Generativo Pré-Treinado. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Geração de Texto e Perplexidade + +A ideia de uma rede neural ser capaz de realizar tarefas gerais sem treino adicional é apresentada no artigo [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). A ideia principal é que muitas outras tarefas podem ser modeladas utilizando **geração de texto**, porque compreender texto essencialmente significa ser capaz de produzi-lo. Como o modelo é treinado com uma enorme quantidade de texto que abrange o conhecimento humano, ele também se torna conhecedor de uma ampla variedade de assuntos. + +> Compreender e ser capaz de produzir texto também implica saber algo sobre o mundo ao nosso redor. As pessoas também aprendem, em grande parte, através da leitura, e a rede GPT é semelhante nesse aspeto. + +Redes de geração de texto funcionam ao prever a probabilidade da próxima palavra $$P(w_N)$$. No entanto, a probabilidade incondicional da próxima palavra é igual à frequência dessa palavra no corpus de texto. O GPT é capaz de nos fornecer a **probabilidade condicional** da próxima palavra, dadas as anteriores: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Pode ler mais sobre probabilidades no nosso [Currículo de Ciência de Dados para Iniciantes](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +A qualidade de um modelo de geração de linguagem pode ser definida utilizando a **perplexidade**. É uma métrica intrínseca que nos permite medir a qualidade do modelo sem qualquer conjunto de dados específico da tarefa. Baseia-se na noção de *probabilidade de uma frase* - o modelo atribui alta probabilidade a uma frase que provavelmente é real (ou seja, o modelo não está **perplexo** com ela) e baixa probabilidade a frases que fazem menos sentido (ex.: *Pode ele faz o quê?*). Quando damos ao nosso modelo frases de um corpus de texto real, esperamos que tenham alta probabilidade e baixa **perplexidade**. Matematicamente, é definida como a probabilidade inversa normalizada do conjunto de teste: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Pode experimentar a geração de texto utilizando o [editor de texto alimentado por GPT da Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Neste editor, começa a escrever o seu texto e, ao pressionar **[TAB]**, serão oferecidas várias opções de conclusão. Se forem demasiado curtas ou não estiver satisfeito com elas, pressione [TAB] novamente e terá mais opções, incluindo trechos de texto mais longos. + +## GPT é uma Família + +O GPT não é um único modelo, mas sim uma coleção de modelos desenvolvidos e treinados pela [OpenAI](https://openai.com). + +Dentro dos modelos GPT, temos: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Modelo de linguagem com até 1,5 mil milhões de parâmetros. | Modelo de linguagem com até 175 mil milhões de parâmetros. | 100T parâmetros e aceita tanto entradas de imagem como de texto, e produz texto. | + +Os modelos GPT-3 e GPT-4 estão disponíveis [como um serviço cognitivo da Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) e como [API da OpenAI](https://openai.com/api/). + +## Engenharia de Prompts + +Como o GPT foi treinado com volumes vastos de dados para compreender linguagem e código, ele fornece respostas em resposta a entradas (prompts). Prompts são entradas ou consultas para o GPT, onde se fornecem instruções aos modelos sobre as tarefas que devem ser realizadas. Para obter um resultado desejado, é necessário o prompt mais eficaz, o que envolve selecionar as palavras, formatos, frases ou até símbolos certos. Esta abordagem é chamada de [Engenharia de Prompts](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Esta documentação](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) fornece-lhe mais informações sobre engenharia de prompts. + +## ✍️ Notebook de Exemplo: [Explorando o OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continue a sua aprendizagem nos seguintes notebooks: + +* [Gerando texto com OpenAI-GPT e Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusão + +Novos modelos de linguagem pré-treinados gerais não apenas modelam a estrutura da linguagem, mas também contêm uma vasta quantidade de linguagem natural. Assim, podem ser utilizados de forma eficaz para resolver algumas tarefas de PLN em configurações de zero-shot ou few-shot. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/README.md b/translations/pt/lessons/5-NLP/README.md index 3790e0b0..e9f8ea7a 100644 --- a/translations/pt/lessons/5-NLP/README.md +++ b/translations/pt/lessons/5-NLP/README.md @@ -1,69 +1,78 @@ + # Processamento de Linguagem Natural -![Resumo das tarefas de PLN em um doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pt.png) +![Resumo das tarefas de PLN em um desenho](../../../../lessons/sketchnotes/ai-nlp.png) -Nesta seção, focaremos no uso de Redes Neurais para lidar com tarefas relacionadas ao **Processamento de Linguagem Natural (PLN)**. Existem muitos problemas de PLN que queremos que os computadores sejam capazes de resolver: +Nesta secção, vamos focar no uso de Redes Neuronais para lidar com tarefas relacionadas ao **Processamento de Linguagem Natural (PLN)**. Existem muitos problemas de PLN que queremos que os computadores sejam capazes de resolver: -* **Classificação de texto** é um problema típico de classificação relacionado a sequências de texto. Exemplos incluem classificar mensagens de e-mail como spam ou não-spam, ou categorizar artigos como esportes, negócios, política, etc. Além disso, ao desenvolver chatbots, muitas vezes precisamos entender o que um usuário queria dizer -- nesse caso, estamos lidando com **classificação de intenção**. Frequentemente, na classificação de intenção, precisamos lidar com muitas categorias. -* **Análise de sentimento** é um problema típico de regressão, onde precisamos atribuir um número (um sentimento) correspondente a quão positiva ou negativa é a significação de uma frase. Uma versão mais avançada da análise de sentimento é a **análise de sentimento baseada em aspectos** (ABSA), onde atribuímos sentimento não à frase inteira, mas a diferentes partes dela (aspectos), por exemplo, *Neste restaurante, gostei da culinária, mas a atmosfera era horrível*. -* **Reconhecimento de Entidades Nomeadas** (NER) refere-se ao problema de extrair certas entidades do texto. Por exemplo, podemos precisar entender que na frase *Preciso voar para Paris amanhã* a palavra *amanhã* refere-se a DATA, e *Paris* é uma LOCALIZAÇÃO. -* **Extração de palavras-chave** é semelhante ao NER, mas precisamos extrair palavras importantes para o significado da frase automaticamente, sem pré-treinamento para tipos específicos de entidades. -* **Agrupamento de texto** pode ser útil quando queremos agrupar sentenças semelhantes, por exemplo, solicitações semelhantes em conversas de suporte técnico. -* **Resposta a perguntas** refere-se à capacidade de um modelo de responder a uma pergunta específica. O modelo recebe uma passagem de texto e uma pergunta como entradas, e precisa fornecer um local no texto onde a resposta à pergunta está contida (ou, às vezes, gerar o texto da resposta). -* **Geração de texto** é a capacidade de um modelo de gerar novo texto. Pode ser considerada uma tarefa de classificação que prevê a próxima letra/palavra com base em um *texto de entrada*. Modelos avançados de geração de texto, como o GPT-3, são capazes de resolver outras tarefas de PLN, como classificação, usando uma técnica chamada [programação de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ou [engenharia de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Resumir texto** é uma técnica quando queremos que um computador "leia" um texto longo e o resuma em algumas frases. -* **Tradução automática** pode ser vista como uma combinação de compreensão de texto em uma língua e geração de texto em outra. +* **Classificação de texto** é um problema típico de classificação relacionado a sequências de texto. Exemplos incluem classificar mensagens de e-mail como spam ou não-spam, ou categorizar artigos como desporto, negócios, política, etc. Além disso, ao desenvolver chatbots, muitas vezes precisamos entender o que o utilizador quis dizer — neste caso, estamos a lidar com **classificação de intenções**. Frequentemente, na classificação de intenções, precisamos lidar com muitas categorias. +* **Análise de sentimento** é um problema típico de regressão, onde precisamos atribuir um número (um sentimento) que corresponda ao quão positiva/negativa é a mensagem de uma frase. Uma versão mais avançada da análise de sentimento é a **análise de sentimento baseada em aspetos** (ABSA), onde atribuímos o sentimento não à frase inteira, mas a diferentes partes dela (aspeto), por exemplo: *Neste restaurante, gostei da cozinha, mas a atmosfera era horrível*. +* **Reconhecimento de Entidades Nomeadas** (NER) refere-se ao problema de extrair certas entidades de um texto. Por exemplo, podemos precisar entender que na frase *Preciso de voar para Paris amanhã*, a palavra *amanhã* refere-se a uma DATA, e *Paris* é uma LOCALIZAÇÃO. +* **Extração de palavras-chave** é semelhante ao NER, mas precisamos extrair automaticamente palavras importantes para o significado da frase, sem pré-treino para tipos específicos de entidades. +* **Agrupamento de texto** pode ser útil quando queremos agrupar frases semelhantes, por exemplo, pedidos semelhantes em conversas de suporte técnico. +* **Resposta a perguntas** refere-se à capacidade de um modelo responder a uma pergunta específica. O modelo recebe um trecho de texto e uma pergunta como entradas, e precisa fornecer um local no texto onde a resposta à pergunta está contida (ou, por vezes, gerar o texto da resposta). +* **Geração de texto** é a capacidade de um modelo gerar novo texto. Pode ser considerado como uma tarefa de classificação que prevê a próxima letra/palavra com base num *texto inicial*. Modelos avançados de geração de texto, como o GPT-3, conseguem resolver outras tarefas de PLN, como classificação, usando uma técnica chamada [programação por prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ou [engenharia de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Sumarização de texto** é uma técnica em que queremos que um computador "leia" um texto longo e o resuma em algumas frases. +* **Tradução automática** pode ser vista como uma combinação de compreensão de texto numa língua e geração de texto noutra. -Inicialmente, a maioria das tarefas de PLN eram resolvidas usando métodos tradicionais, como gramáticas. Por exemplo, na tradução automática, eram usados analisadores para transformar a frase inicial em uma árvore sintática, depois estruturas semânticas de nível superior eram extraídas para representar o significado da frase, e com base nesse significado e na gramática da língua-alvo, o resultado era gerado. Hoje em dia, muitas tarefas de PLN são resolvidas de forma mais eficaz usando redes neurais. +Inicialmente, a maioria das tarefas de PLN era resolvida usando métodos tradicionais, como gramáticas. Por exemplo, na tradução automática, analisadores sintáticos eram usados para transformar a frase inicial numa árvore sintática, depois estruturas semânticas de nível superior eram extraídas para representar o significado da frase, e com base nesse significado e na gramática da língua de destino, o resultado era gerado. Atualmente, muitas tarefas de PLN são resolvidas de forma mais eficaz usando redes neuronais. -> Muitos métodos clássicos de PLN estão implementados na biblioteca Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Há um ótimo [Livro NLTK](https://www.nltk.org/book/) disponível online que cobre como diferentes tarefas de PLN podem ser resolvidas usando o NLTK. +> Muitos métodos clássicos de PLN estão implementados na biblioteca Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Existe um excelente [Livro NLTK](https://www.nltk.org/book/) disponível online que cobre como diferentes tarefas de PLN podem ser resolvidas usando o NLTK. -Em nosso curso, vamos nos concentrar principalmente no uso de Redes Neurais para PLN, e utilizaremos o NLTK quando necessário. +No nosso curso, vamos focar-nos principalmente no uso de Redes Neuronais para PLN, e usaremos o NLTK quando necessário. -Já aprendemos sobre o uso de redes neurais para lidar com dados tabulares e com imagens. A principal diferença entre esses tipos de dados e texto é que o texto é uma sequência de comprimento variável, enquanto o tamanho da entrada no caso de imagens é conhecido com antecedência. Enquanto redes convolucionais podem extrair padrões dos dados de entrada, os padrões no texto são mais complexos. Por exemplo, a negação pode ser separada do sujeito para muitas palavras (por exemplo, *Eu não gosto de laranjas*, vs. *Eu não gosto dessas grandes laranjas coloridas e saborosas*), e isso ainda deve ser interpretado como um padrão. Assim, para lidar com a linguagem, precisamos introduzir novos tipos de redes neurais, como *redes recorrentes* e *transformadores*. +Já aprendemos a usar redes neuronais para lidar com dados tabulares e com imagens. A principal diferença entre esses tipos de dados e texto é que o texto é uma sequência de comprimento variável, enquanto o tamanho da entrada no caso de imagens é conhecido antecipadamente. Embora redes convolucionais possam extrair padrões de dados de entrada, os padrões no texto são mais complexos. Por exemplo, podemos ter uma negação separada do sujeito por muitas palavras (ex.: *Eu não gosto de laranjas* vs. *Eu não gosto daquelas laranjas grandes, coloridas e saborosas*), e isso ainda deve ser interpretado como um único padrão. Assim, para lidar com a linguagem, precisamos introduzir novos tipos de redes neuronais, como *redes recorrentes* e *transformers*. ## Instalar Bibliotecas -Se você estiver usando uma instalação local do Python para executar este curso, pode precisar instalar todas as bibliotecas necessárias para PLN usando os seguintes comandos: +Se estiver a usar uma instalação local de Python para executar este curso, pode ser necessário instalar todas as bibliotecas necessárias para PLN usando os seguintes comandos: -**Para PyTorch** +**Para PyTorch** ```bash pip install -r requirements-torch.txt -``` -**Para TensorFlow** +``` +**Para TensorFlow** ```bash pip install -r requirements-tf.txt -``` +``` -> Você pode experimentar PLN com TensorFlow no [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> Pode experimentar PLN com TensorFlow no [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) ## Aviso sobre GPU -Nesta seção, em alguns dos exemplos, estaremos treinando modelos bastante grandes. -* **Use um Computador com GPU**: É aconselhável executar seus notebooks em um computador habilitado para GPU para reduzir os tempos de espera ao trabalhar com modelos grandes. -* **Restrições de Memória da GPU**: Executar em uma GPU pode levar a situações em que você fica sem memória da GPU, especialmente ao treinar modelos grandes. -* **Consumo de Memória da GPU**: A quantidade de memória da GPU consumida durante o treinamento depende de vários fatores, incluindo o tamanho do minibatch. -* **Minimizar o Tamanho do Minibatch**: Se você encontrar problemas de memória da GPU, considere reduzir o tamanho do minibatch em seu código como uma solução potencial. -* **Liberação de Memória da GPU no TensorFlow**: Versões mais antigas do TensorFlow podem não liberar a memória da GPU corretamente ao treinar vários modelos dentro de um kernel Python. Para gerenciar o uso da memória da GPU de forma eficaz, você pode configurar o TensorFlow para alocar memória da GPU apenas conforme necessário. -* **Inclusão de Código**: Para configurar o TensorFlow para aumentar a alocação de memória da GPU apenas quando necessário, inclua o seguinte código em seus notebooks: +Nesta secção, em alguns dos exemplos, treinaremos modelos bastante grandes. +* **Use um Computador com GPU**: É recomendável executar os seus notebooks num computador com GPU para reduzir os tempos de espera ao trabalhar com modelos grandes. +* **Limitações de Memória da GPU**: Executar numa GPU pode levar a situações em que a memória da GPU se esgote, especialmente ao treinar modelos grandes. +* **Consumo de Memória da GPU**: A quantidade de memória da GPU consumida durante o treino depende de vários fatores, incluindo o tamanho do minibatch. +* **Minimize o Tamanho do Minibatch**: Se encontrar problemas de memória na GPU, considere reduzir o tamanho do minibatch no seu código como uma solução potencial. +* **Libertação de Memória da GPU no TensorFlow**: Versões mais antigas do TensorFlow podem não libertar corretamente a memória da GPU ao treinar vários modelos num único kernel Python. Para gerir o uso da memória da GPU de forma eficaz, pode configurar o TensorFlow para alocar memória da GPU apenas conforme necessário. +* **Inclusão de Código**: Para configurar o TensorFlow para aumentar a alocação de memória da GPU apenas quando necessário, inclua o seguinte código nos seus notebooks: ```python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) -``` +``` -Se você estiver interessado em aprender sobre PLN a partir de uma perspectiva clássica de ML, visite [este conjunto de lições](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Se estiver interessado em aprender sobre PLN numa perspetiva de ML clássico, visite [esta coleção de lições](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## Nesta Seção -Nesta seção, aprenderemos sobre: +## Nesta Secção +Nesta secção, vamos aprender sobre: -* [Representando texto como tensores](13-TextRep/README.md) -* [Word Embeddings](14-Emdeddings/README.md) -* [Modelagem de Linguagem](15-LanguageModeling/README.md) -* [Redes Neurais Recorrentes](16-RNN/README.md) -* [Redes Generativas](17-GenerativeNetworks/README.md) -* [Transformadores](18-Transformers/README.md) +* [Representar texto como tensores](13-TextRep/README.md) +* [Embeddings de palavras](14-Emdeddings/README.md) +* [Modelagem de linguagem](15-LanguageModeling/README.md) +* [Redes Neuronais Recorrentes](16-RNN/README.md) +* [Redes Generativas](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md index 35e5f446..ad29143f 100644 --- a/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ + # Algoritmos Genéticos ## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Algoritmos Genéticos** (GA) são baseados em uma **abordagem evolutiva** para IA, na qual métodos da evolução de uma população são usados para obter uma solução ótima para um determinado problema. Eles foram propostos em 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). +**Algoritmos Genéticos** (AG) baseiam-se numa abordagem **evolutiva** para a IA, em que métodos de evolução de uma população são utilizados para obter uma solução ótima para um determinado problema. Foram propostos em 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). -Os Algoritmos Genéticos se baseiam nas seguintes ideias: +Os Algoritmos Genéticos baseiam-se nas seguintes ideias: * Soluções válidas para o problema podem ser representadas como **genes** -* **Crossover** nos permite combinar duas soluções para obter uma nova solução válida -* **Seleção** é utilizada para selecionar soluções mais ótimas usando alguma **função de aptidão** -* **Mutações** são introduzidas para desestabilizar a otimização e nos tirar do mínimo local +* O **crossover** permite combinar duas soluções para obter uma nova solução válida +* A **seleção** é usada para escolher soluções mais otimizadas utilizando uma **função de aptidão** +* **Mutações** são introduzidas para desestabilizar a otimização e evitar mínimos locais -Se você deseja implementar um Algoritmo Genético, precisa do seguinte: +Se quiser implementar um Algoritmo Genético, precisará do seguinte: - * Encontrar um método de codificação das soluções do nosso problema usando **genes** g∈Γ - * No conjunto de genes Γ, precisamos definir a **função de aptidão** fit: Γ→**R**. Valores de função menores correspondem a soluções melhores. + * Encontrar um método para codificar as soluções do problema utilizando **genes** g∈Γ + * No conjunto de genes Γ, é necessário definir uma **função de aptidão** fit: Γ→**R**. Valores menores da função correspondem a melhores soluções. * Definir um mecanismo de **crossover** para combinar dois genes e obter uma nova solução válida crossover: Γ2→Γ. * Definir um mecanismo de **mutação** mutate: Γ→Γ. -Em muitos casos, crossover e mutação são algoritmos bastante simples para manipular genes como sequências numéricas ou vetores de bits. +Em muitos casos, os algoritmos de crossover e mutação são bastante simples, manipulando genes como sequências numéricas ou vetores de bits. -A implementação específica de um algoritmo genético pode variar de caso a caso, mas a estrutura geral é a seguinte: +A implementação específica de um algoritmo genético pode variar de caso para caso, mas a estrutura geral é a seguinte: 1. Selecionar uma população inicial G⊂Γ -2. Selecionar aleatoriamente uma das operações que será realizada nesta etapa: crossover ou mutação +2. Selecionar aleatoriamente uma das operações a ser realizada neste passo: crossover ou mutação 3. **Crossover**: * Selecionar aleatoriamente dois genes g1, g2 ∈ G - * Calcular crossover g=crossover(g1,g2) + * Calcular o crossover g=crossover(g1,g2) * Se fit(g)1) ou fit(g)2) - substituir o gene correspondente na população por g. 4. **Mutação** - selecionar um gene aleatório g∈G e substituí-lo por mutate(g) -5. Repetir a partir do passo 2, até que obtenhamos um valor suficientemente pequeno de fit, ou até que o limite no número de etapas seja alcançado. +5. Repetir a partir do passo 2, até obtermos um valor suficientemente pequeno de fit, ou até atingir o limite de passos. ## Tarefas Típicas -Tarefas tipicamente resolvidas por Algoritmos Genéticos incluem: +As tarefas tipicamente resolvidas por Algoritmos Genéticos incluem: -1. Otimização de cronogramas +1. Otimização de horários 1. Empacotamento ótimo 1. Corte ótimo -1. Aceleração da busca exaustiva +1. Aceleração de buscas exaustivas ## ✍️ Exercícios: Algoritmos Genéticos -Continue seu aprendizado nos seguintes cadernos: +Continue a sua aprendizagem nos seguintes notebooks: -Vá para [este caderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dois exemplos de uso de Algoritmos Genéticos: +Aceda a [este notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dois exemplos de utilização de Algoritmos Genéticos: -1. Divisão justa do tesouro +1. Divisão justa de um tesouro 1. Problema das 8 Rainhas ## Conclusão -Os Algoritmos Genéticos são usados para resolver muitos problemas, incluindo problemas de logística e busca. O campo é inspirado por pesquisas que mesclaram tópicos em Psicologia e Ciência da Computação. +Os Algoritmos Genéticos são usados para resolver muitos problemas, incluindo problemas de logística e de busca. Este campo é inspirado por pesquisas que combinam tópicos de Psicologia e Ciência da Computação. ## 🚀 Desafio -"Algoritmos genéticos são simples de implementar, mas seu comportamento é difícil de entender." [fonte](https://wikipedia.org/wiki/Genetic_algorithm) Faça algumas pesquisas para encontrar uma implementação de um algoritmo genético, como resolver um quebra-cabeça Sudoku, e explique como funciona em um esboço ou fluxograma. +"Os algoritmos genéticos são simples de implementar, mas o seu comportamento é difícil de compreender." [fonte](https://wikipedia.org/wiki/Genetic_algorithm) Faça uma pesquisa para encontrar uma implementação de um algoritmo genético, como a resolução de um puzzle de Sudoku, e explique como funciona através de um esboço ou fluxograma. ## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) ## Revisão e Autoestudo -Assista [a este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como computadores podem aprender a jogar Super Mario usando redes neurais treinadas por algoritmos genéticos. Aprenderemos mais sobre o aprendizado de computador para jogar jogos assim [na próxima seção](../22-DeepRL/README.md). +Veja [este excelente vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario utilizando redes neurais treinadas por algoritmos genéticos. Vamos aprender mais sobre computadores a jogar jogos como este [na próxima secção](../22-DeepRL/README.md). ## [Tarefa: Equação Diofantina](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Seu objetivo é resolver a chamada **equação diofantina** - uma equação com raízes inteiras. Por exemplo, considere a equação a+2b+3c+4d=30. Você precisa encontrar as raízes inteiras que satisfazem essa equação. +O seu objetivo é resolver a chamada **equação diofantina** - uma equação com raízes inteiras. Por exemplo, considere a equação a+2b+3c+4d=30. É necessário encontrar as raízes inteiras que satisfaçam esta equação. -*Esta tarefa é inspirada [neste post](https://habr.com/post/128704/).* +*Esta tarefa é inspirada por [este post](https://habr.com/post/128704/).* Dicas: -1. Você pode considerar que as raízes estão no intervalo [0;30] +1. Pode considerar as raízes no intervalo [0;30] 1. Como gene, considere usar a lista de valores das raízes Use [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como ponto de partida. -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/22-DeepRL/README.md b/translations/pt/lessons/6-Other/22-DeepRL/README.md index 695f7064..9cf1f5cc 100644 --- a/translations/pt/lessons/6-Other/22-DeepRL/README.md +++ b/translations/pt/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# Aprendizado por Reforço Profundo + +# Aprendizagem por Reforço Profundo -O aprendizado por reforço (RL) é visto como um dos paradigmas básicos de aprendizado de máquina, ao lado do aprendizado supervisionado e do aprendizado não supervisionado. Enquanto no aprendizado supervisionado confiamos em um conjunto de dados com resultados conhecidos, o RL é baseado em **aprender fazendo**. Por exemplo, quando vemos um jogo de computador pela primeira vez, começamos a jogar, mesmo sem conhecer as regras, e logo conseguimos melhorar nossas habilidades apenas pelo processo de jogar e ajustar nosso comportamento. +A aprendizagem por reforço (RL) é considerada um dos paradigmas básicos de aprendizagem automática, ao lado da aprendizagem supervisionada e não supervisionada. Enquanto na aprendizagem supervisionada dependemos de um conjunto de dados com resultados conhecidos, a RL baseia-se em **aprender fazendo**. Por exemplo, quando vemos um jogo de computador pela primeira vez, começamos a jogar, mesmo sem conhecer as regras, e logo conseguimos melhorar nossas habilidades apenas pelo processo de jogar e ajustar nosso comportamento. ## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) Para realizar RL, precisamos de: -* Um **ambiente** ou **simulador** que estabelece as regras do jogo. Devemos ser capazes de executar os experimentos no simulador e observar os resultados. -* Alguma **função de recompensa**, que indica quão bem-sucedido foi nosso experimento. No caso de aprender a jogar um jogo de computador, a recompensa seria nossa pontuação final. +* Um **ambiente** ou **simulador** que define as regras do jogo. Devemos ser capazes de executar os experimentos no simulador e observar os resultados. +* Uma **função de recompensa**, que indica o quão bem-sucedido foi o nosso experimento. No caso de aprender a jogar um jogo de computador, a recompensa seria nossa pontuação final. -Com base na função de recompensa, devemos ser capazes de ajustar nosso comportamento e melhorar nossas habilidades, para que na próxima vez joguemos melhor. A principal diferença entre outros tipos de aprendizado de máquina e RL é que, no RL, normalmente não sabemos se ganhamos ou perdemos até terminarmos o jogo. Assim, não podemos dizer se um determinado movimento é bom ou não - recebemos uma recompensa apenas ao final do jogo. +Com base na função de recompensa, devemos ser capazes de ajustar nosso comportamento e melhorar nossas habilidades, para que na próxima vez joguemos melhor. A principal diferença entre outros tipos de aprendizagem automática e RL é que, na RL, normalmente não sabemos se ganhamos ou perdemos até terminarmos o jogo. Assim, não podemos dizer se um movimento específico é bom ou não - só recebemos uma recompensa no final do jogo. -Durante o RL, normalmente realizamos muitos experimentos. Durante cada experimento, precisamos equilibrar entre seguir a estratégia ótima que aprendemos até agora (**exploração**) e explorar novos estados possíveis (**exploração**). +Durante a RL, normalmente realizamos muitos experimentos. Em cada experimento, precisamos equilibrar entre seguir a estratégia ideal que aprendemos até agora (**exploração**) e explorar novos estados possíveis (**exploração**). ## OpenAI Gym -Uma ótima ferramenta para RL é o [OpenAI Gym](https://gym.openai.com/) - um **ambiente de simulação**, que pode simular muitos ambientes diferentes, desde jogos Atari até a física por trás do equilíbrio de um poste. É um dos ambientes de simulação mais populares para treinar algoritmos de aprendizado por reforço, e é mantido pela [OpenAI](https://openai.com/). +Uma ferramenta excelente para RL é o [OpenAI Gym](https://gym.openai.com/) - um **ambiente de simulação**, que pode simular muitos ambientes diferentes, desde jogos Atari até a física por trás do equilíbrio de um bastão. É um dos ambientes de simulação mais populares para treinar algoritmos de aprendizagem por reforço e é mantido pela [OpenAI](https://openai.com/). -> **Nota**: Você pode ver todos os ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). +> **Note**: Pode ver todos os ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). ## Equilíbrio do CartPole -Você provavelmente já viu dispositivos modernos de equilíbrio, como o *Segway* ou *Gyroscooters*. Eles conseguem se equilibrar automaticamente ajustando suas rodas em resposta a um sinal de um acelerômetro ou giroscópio. Nesta seção, aprenderemos como resolver um problema semelhante - equilibrar um poste. É semelhante a uma situação em que um artista de circo precisa equilibrar um poste em sua mão - mas esse equilíbrio de poste ocorre apenas em 1D. +Provavelmente todos já viram dispositivos modernos de equilíbrio, como o *Segway* ou *Gyroscooters*. Eles conseguem equilibrar-se automaticamente ajustando as rodas em resposta a um sinal de um acelerômetro ou giroscópio. Nesta seção, aprenderemos como resolver um problema semelhante - equilibrar um bastão. É semelhante a uma situação em que um artista de circo precisa equilibrar um bastão na mão - mas este equilíbrio ocorre apenas em 1D. -Uma versão simplificada do equilíbrio é conhecida como o problema **CartPole**. No mundo do cartpole, temos um deslizante horizontal que pode se mover para a esquerda ou para a direita, e o objetivo é equilibrar um poste vertical em cima do deslizante enquanto ele se move. +Uma versão simplificada do equilíbrio é conhecida como o problema do **CartPole**. No mundo do CartPole, temos um slider horizontal que pode mover-se para a esquerda ou para a direita, e o objetivo é equilibrar um bastão vertical no topo do slider enquanto ele se move. um cartpole -Para criar e usar esse ambiente, precisamos de algumas linhas de código Python: +Para criar e usar este ambiente, precisamos de algumas linhas de código Python: ```python import gym @@ -46,22 +55,22 @@ print(f"Total reward: {total_reward}") ``` Cada ambiente pode ser acessado exatamente da mesma forma: -* `env.reset` starts a new experiment -* `env.step` realiza um passo de simulação. Ele recebe uma **ação** do **espaço de ações** e retorna uma **observação** (do espaço de observação), bem como uma recompensa e um sinal de terminação. +* `env.reset` inicia um novo experimento +* `env.step` realiza um passo de simulação. Ele recebe uma **ação** do **espaço de ações** e retorna uma **observação** (do espaço de observação), bem como uma recompensa e um sinal de término. -No exemplo acima, realizamos uma ação aleatória a cada passo, razão pela qual a vida do experimento é muito curta: +No exemplo acima, realizamos uma ação aleatória em cada passo, razão pela qual a vida do experimento é muito curta: ![cartpole sem equilíbrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -O objetivo de um algoritmo de RL é treinar um modelo - a chamada **política** π - que retornará a ação em resposta a um determinado estado. Também podemos considerar a política como probabilística, ou seja, para qualquer estado *s* e ação *a*, ela retornará a probabilidade π(*a*|*s*) de que devemos tomar *a* no estado *s*. +O objetivo de um algoritmo de RL é treinar um modelo - a chamada **política** π - que retornará a ação em resposta a um estado dado. Também podemos considerar a política como probabilística, ou seja, para qualquer estado *s* e ação *a*, ela retornará a probabilidade π(*a*|*s*) de que devemos tomar *a* no estado *s*. ## Algoritmo de Gradientes de Política -A maneira mais óbvia de modelar uma política é criando uma rede neural que receberá estados como entrada e retornará as ações correspondentes (ou melhor, as probabilidades de todas as ações). De certa forma, seria semelhante a uma tarefa de classificação normal, com uma grande diferença - não sabemos de antemão quais ações devemos tomar em cada um dos passos. +A maneira mais óbvia de modelar uma política é criar uma rede neural que receba estados como entrada e retorne ações correspondentes (ou, mais precisamente, as probabilidades de todas as ações). De certa forma, seria semelhante a uma tarefa de classificação normal, com uma grande diferença - não sabemos de antemão quais ações devemos tomar em cada passo. -A ideia aqui é estimar essas probabilidades. Construímos um vetor de **recompensas cumulativas** que mostra nossa recompensa total em cada passo do experimento. Também aplicamos **desconto de recompensa** multiplicando recompensas anteriores por algum coeficiente γ=0.99, a fim de diminuir o papel das recompensas anteriores. Em seguida, reforçamos aqueles passos ao longo do caminho do experimento que geram recompensas maiores. +A ideia aqui é estimar essas probabilidades. Construímos um vetor de **recompensas acumuladas**, que mostra nossa recompensa total em cada passo do experimento. Também aplicamos **desconto de recompensa**, multiplicando recompensas anteriores por um coeficiente γ=0.99, para diminuir o papel das recompensas anteriores. Em seguida, reforçamos os passos ao longo do caminho do experimento que geram maiores recompensas. -> Aprenda mais sobre o algoritmo de Gradiente de Política e veja-o em ação no [notebook de exemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). +> Saiba mais sobre o algoritmo de Gradientes de Política e veja-o em ação no [notebook de exemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). ## Algoritmo Ator-Crítico @@ -70,9 +79,9 @@ Uma versão aprimorada da abordagem de Gradientes de Política é chamada de **A * A política, que determina qual ação tomar. Esta parte é chamada de **ator**. * A estimativa da recompensa total que podemos esperar obter neste estado - esta parte é chamada de **crítico**. -De certa forma, essa arquitetura se assemelha a um [GAN](../../4-ComputerVision/10-GANs/README.md), onde temos duas redes que são treinadas uma contra a outra. No modelo ator-crítico, o ator propõe a ação que precisamos tomar, e o crítico tenta ser crítico e estimar o resultado. No entanto, nosso objetivo é treinar essas redes em uníssono. +De certa forma, esta arquitetura se assemelha a um [GAN](../../4-ComputerVision/10-GANs/README.md), onde temos duas redes que são treinadas uma contra a outra. No modelo ator-crítico, o ator propõe a ação que precisamos tomar, e o crítico tenta ser crítico e estimar o resultado. No entanto, nosso objetivo é treinar essas redes em conjunto. -Como sabemos tanto as recompensas cumulativas reais quanto os resultados retornados pelo crítico durante o experimento, é relativamente fácil construir uma função de perda que minimize a diferença entre elas. Isso nos dará a **perda do crítico**. Podemos calcular a **perda do ator** usando a mesma abordagem que no algoritmo de gradiente de política. +Como sabemos tanto as recompensas acumuladas reais quanto os resultados retornados pelo crítico durante o experimento, é relativamente fácil construir uma função de perda que minimize a diferença entre eles. Isso nos daria a **perda do crítico**. Podemos calcular a **perda do ator** usando a mesma abordagem do algoritmo de gradientes de política. Depois de executar um desses algoritmos, podemos esperar que nosso CartPole se comporte assim: @@ -87,15 +96,15 @@ Continue seu aprendizado nos seguintes notebooks: ## Outras Tarefas de RL -O Aprendizado por Reforço atualmente é um campo de pesquisa em rápido crescimento. Alguns exemplos interessantes de aprendizado por reforço são: +A aprendizagem por reforço atualmente é um campo de pesquisa em rápido crescimento. Alguns exemplos interessantes de aprendizagem por reforço são: -* Ensinar um computador a jogar **Jogos Atari**. A parte desafiadora desse problema é que não temos um estado simples representado como um vetor, mas sim uma captura de tela - e precisamos usar a CNN para converter essa imagem de tela em um vetor de características, ou para extrair informações de recompensa. Jogos Atari estão disponíveis no Gym. -* Ensinar um computador a jogar jogos de tabuleiro, como Xadrez e Go. Recentemente, programas de ponta como **Alpha Zero** foram treinados do zero por dois agentes jogando um contra o outro e melhorando a cada passo. -* Na indústria, o RL é usado para criar sistemas de controle a partir de simulação. Um serviço chamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) é especificamente projetado para isso. +* Ensinar um computador a jogar **Jogos Atari**. A parte desafiadora deste problema é que não temos um estado simples representado como um vetor, mas sim uma captura de tela - e precisamos usar a CNN para converter esta imagem de tela em um vetor de características ou para extrair informações de recompensa. Os jogos Atari estão disponíveis no Gym. +* Ensinar um computador a jogar jogos de tabuleiro, como Xadrez e Go. Recentemente, programas de última geração como **Alpha Zero** foram treinados do zero por dois agentes jogando um contra o outro e melhorando a cada passo. +* Na indústria, RL é usado para criar sistemas de controle a partir de simulação. Um serviço chamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) foi especificamente projetado para isso. ## Conclusão -Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo uma função de recompensa que define o estado desejado do jogo e dando a eles a oportunidade de explorar inteligentemente o espaço de busca. Tentamos com sucesso dois algoritmos e alcançamos um bom resultado em um período relativamente curto de tempo. No entanto, isso é apenas o começo de sua jornada no RL, e você definitivamente deve considerar fazer um curso separado se quiser se aprofundar mais. +Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo-lhes uma função de recompensa que define o estado desejado do jogo e dando-lhes a oportunidade de explorar inteligentemente o espaço de busca. Experimentamos com sucesso dois algoritmos e alcançamos um bom resultado em um período relativamente curto de tempo. No entanto, este é apenas o começo da sua jornada em RL, e você definitivamente deve considerar fazer um curso separado se quiser aprofundar-se. ## 🚀 Desafio @@ -103,15 +112,15 @@ Explore as aplicações listadas na seção 'Outras Tarefas de RL' e tente imple ## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## Revisão e Estudo Autônomo +## Revisão e Autoestudo -Aprenda mais sobre aprendizado por reforço clássico em nosso [Currículo de Aprendizado de Máquina para Iniciantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). +Saiba mais sobre aprendizagem por reforço clássica em nosso [Currículo de Aprendizagem Automática para Iniciantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Assista a [este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario. +Assista a [este excelente vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario. -## Tarefa: [Treine um Carro de Montanha](lab/README.md) +## Tarefa: [Treine um Carro na Montanha](lab/README.md) -Seu objetivo durante esta tarefa será treinar um ambiente diferente do Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Seu objetivo nesta tarefa será treinar um ambiente diferente do Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md b/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md index daf1f8e3..446589fa 100644 --- a/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,31 @@ -# Treinando o Carro da Montanha para Escapar + +# Treinar o Carro da Montanha para Escapar -Tarefa do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). ## Tarefa -Seu objetivo é treinar o agente RL para controlar o [Carro da Montanha](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) no Ambiente OpenAI. Você está treinando com dados até outubro de 2023. +O teu objetivo é treinar o agente de RL para controlar o [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) no Ambiente OpenAI. ## O Ambiente -O ambiente do Carro da Montanha consiste no carro preso dentro de um vale. Seu objetivo é pular para fora do vale e alcançar a bandeira. As ações que você pode realizar são acelerar para a esquerda, para a direita ou não fazer nada. Você pode observar a posição do carro ao longo do eixo x e a velocidade. +O ambiente Mountain Car consiste num carro preso dentro de um vale. O teu objetivo é saltar para fora do vale e alcançar a bandeira. As ações que podes realizar são acelerar para a esquerda, para a direita ou não fazer nada. Podes observar a posição do carro ao longo do eixo x e a velocidade. -## Iniciando o Notebook +## Notebook Inicial -Inicie o laboratório abrindo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) +Começa o trabalho prático abrindo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) ## Conclusão -Você deve aprender ao longo deste laboratório que adotar algoritmos de RL para um novo ambiente é frequentemente bastante simples, porque o OpenAI Gym tem a mesma interface para todos os ambientes, e os algoritmos, por sua vez, não dependem muito da natureza do ambiente. Você pode até reestruturar o código Python de tal forma a passar qualquer ambiente para o algoritmo RL como um parâmetro. +Deverás aprender ao longo deste trabalho que adaptar algoritmos de RL a um novo ambiente é frequentemente bastante simples, porque o OpenAI Gym tem a mesma interface para todos os ambientes, e os algoritmos, como tal, não dependem muito da natureza do ambiente. Podes até reestruturar o código Python de forma a passar qualquer ambiente para o algoritmo de RL como um parâmetro. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md b/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md index 862d6e2f..eafac055 100644 --- a/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ + # Sistemas Multi-Agente -Uma das possíveis maneiras de alcançar inteligência é a chamada abordagem **emergente** (ou **sinergética**), que se baseia no fato de que o comportamento combinado de muitos agentes relativamente simples pode resultar em um comportamento mais complexo (ou inteligente) do sistema como um todo. Teoricamente, isso se baseia nos princípios da [Inteligência Coletiva](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) e [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirmam que sistemas de nível superior ganham algum tipo de valor agregado quando são devidamente combinados a partir de sistemas de nível inferior (o chamado *princípio da transição de metasistema*). +Uma das formas possíveis de alcançar inteligência é a chamada abordagem **emergente** (ou **sinergética**), que se baseia no facto de que o comportamento combinado de muitos agentes relativamente simples pode resultar num comportamento geral mais complexo (ou inteligente) do sistema como um todo. Teoricamente, isto baseia-se nos princípios de [Inteligência Coletiva](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) e [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirmam que sistemas de nível superior ganham algum tipo de valor acrescentado quando são devidamente combinados a partir de sistemas de nível inferior (o chamado *princípio da transição de metassistema*). -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -A direção dos **Sistemas Multi-Agente** surgiu na IA na década de 1990 como uma resposta ao crescimento da Internet e de sistemas distribuídos. Um dos clássicos livros didáticos de IA, [Inteligência Artificial: Uma Abordagem Moderna](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), foca na visão da IA clássica sob a perspectiva dos sistemas multi-agente. +A direção dos **Sistemas Multi-Agente** surgiu na IA nos anos 1990 como uma resposta ao crescimento da Internet e dos sistemas distribuídos. Um dos manuais clássicos de IA, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), foca-se na visão da IA clássica do ponto de vista dos sistemas multi-agente. -Central para a abordagem multi-agente é a noção de **Agente** - uma entidade que vive em algum **ambiente**, que pode perceber e agir sobre. Esta é uma definição muito ampla, e pode haver muitos tipos e classificações de agentes: +Central à abordagem multi-agente está a noção de **Agente** - uma entidade que vive num determinado **ambiente**, que pode perceber e sobre o qual pode agir. Esta é uma definição muito ampla, e podem existir muitos tipos e classificações diferentes de agentes: -* Pela sua capacidade de raciocínio: - - Agentes **Reativos** geralmente têm um comportamento simples do tipo solicitação-resposta - - Agentes **Deliberativos** empregam algum tipo de raciocínio lógico e/ou capacidades de planejamento -* Pelo local onde o agente executa seu código: - - Agentes **Estáticos** trabalham em um nó de rede dedicado - - Agentes **Móveis** podem mover seu código entre nós de rede +* Pela sua capacidade de raciocinar: + - Agentes **Reativos** geralmente têm um comportamento simples de pedido-resposta + - Agentes **Deliberativos** utilizam algum tipo de raciocínio lógico e/ou capacidades de planeamento +* Pelo local onde o agente executa o seu código: + - Agentes **Estáticos** trabalham num nó de rede dedicado + - Agentes **Móveis** podem mover o seu código entre nós de rede * Pelo seu comportamento: - - Agentes **Passivos** não têm objetivos específicos. Esses agentes podem reagir a estímulos externos, mas não iniciarão ações por conta própria. - - Agentes **Ativos** têm alguns objetivos que perseguem - - Agentes **Cognitivos** envolvem planejamento e raciocínio complexos + - Agentes **Passivos** não têm objetivos específicos. Estes agentes podem reagir a estímulos externos, mas não iniciam ações por si mesmos. + - Agentes **Ativos** têm objetivos que procuram alcançar + - Agentes **Cognitivos** envolvem planeamento e raciocínio complexos -Os sistemas multi-agente são hoje utilizados em uma série de aplicações: +Atualmente, os sistemas multi-agente são utilizados em várias aplicações: -* Em jogos, muitos personagens não jogáveis empregam algum tipo de IA e podem ser considerados agentes inteligentes -* Na produção de vídeo, a renderização de cenas 3D complexas que envolvem multidões é tipicamente feita usando simulação multi-agente -* Na modelagem de sistemas, a abordagem multi-agente é utilizada para simular o comportamento de um modelo complexo. Por exemplo, a abordagem multi-agente foi usada com sucesso para prever a disseminação da doença COVID-19 em todo o mundo. Uma abordagem semelhante pode ser usada para modelar o tráfego na cidade e ver como ele reage a mudanças nas regras de trânsito. -* Em sistemas de automação complexos, cada dispositivo pode agir como um agente independente, o que torna todo o sistema menos monolítico e mais robusto. +* Em jogos, muitas personagens não jogáveis utilizam algum tipo de IA e podem ser consideradas agentes inteligentes +* Na produção de vídeo, a renderização de cenas 3D complexas que envolvem multidões é geralmente feita usando simulação multi-agente +* Na modelação de sistemas, a abordagem multi-agente é usada para simular o comportamento de um modelo complexo. Por exemplo, a abordagem multi-agente foi usada com sucesso para prever a propagação da doença COVID-19 em todo o mundo. Uma abordagem semelhante pode ser usada para modelar o tráfego numa cidade e ver como reage a mudanças nas regras de trânsito. +* Em sistemas de automação complexos, cada dispositivo pode atuar como um agente independente, tornando o sistema como um todo menos monolítico e mais robusto. -Não vamos gastar muito tempo aprofundando em sistemas multi-agente, mas consideraremos um exemplo de **Modelagem Multi-Agente**. +Não vamos gastar muito tempo a aprofundar os sistemas multi-agente, mas vamos considerar um exemplo de **Modelação Multi-Agente**. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) é um ambiente de modelagem multi-agente baseado em uma versão modificada da linguagem de programação [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Esta linguagem foi desenvolvida para ensinar conceitos de programação para crianças, e permite que você controle um agente chamado **tartaruga**, que pode se mover, deixando um rastro para trás. Isso permite a criação de figuras geométricas complexas, que é uma maneira muito visual de entender o comportamento de um agente. +[NetLogo](https://ccl.northwestern.edu/netlogo/) é um ambiente de modelação multi-agente baseado numa versão modificada da linguagem de programação [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Esta linguagem foi desenvolvida para ensinar conceitos de programação a crianças e permite controlar um agente chamado **tartaruga**, que pode mover-se, deixando um rastro atrás de si. Isto permite criar figuras geométricas complexas, sendo uma forma muito visual de compreender o comportamento de um agente. -No NetLogo, podemos criar muitas tartarugas usando o comando `create-turtles`. Podemos então comandar todas as tartarugas a realizar algumas ações (no exemplo abaixo - mais 10 pontos para frente): +No NetLogo, podemos criar muitas tartarugas usando o comando `create-turtles`. Podemos então comandar todas as tartarugas a realizar algumas ações (no exemplo abaixo - avançar 10 pontos): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Claro, não é interessante quando todas as tartarugas fazem a mesma coisa, então podemos `ask ` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` é o nome de uma raça, e precisamos especificar tanto a forma singular quanto a plural, porque diferentes comandos usam diferentes formas para clareza. +Claro que não é interessante quando todas as tartarugas fazem a mesma coisa, por isso podemos `ask` grupos de tartarugas, por exemplo, aquelas que estão nas proximidades de um determinado ponto. Também podemos criar tartarugas de diferentes *raças* usando o comando `breed [cats cat]`. Aqui, `cat` é o nome de uma raça, e precisamos especificar tanto a palavra no singular como no plural, porque diferentes comandos utilizam formas diferentes para maior clareza. -> ✅ Não vamos nos aprofundar no aprendizado da linguagem NetLogo em si - você pode visitar o brilhante [Dicionário Interativo para Iniciantes do NetLogo](https://ccl.northwestern.edu/netlogo/bind/) se estiver interessado em aprender mais. +> ✅ Não vamos aprender a linguagem NetLogo em si - pode visitar o excelente recurso [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) se estiver interessado em aprender mais. -Você pode [baixar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar o NetLogo para experimentar. +Pode [descarregar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar o NetLogo para experimentá-lo. ### Biblioteca de Modelos -Uma grande coisa sobre o NetLogo é que ele contém uma biblioteca de modelos funcionais que você pode experimentar. Vá para **Arquivo → Biblioteca de Modelos**, e você terá muitas categorias de modelos para escolher. +Uma grande vantagem do NetLogo é que contém uma biblioteca de modelos funcionais que pode experimentar. Vá a **File → Models Library**, e terá muitas categorias de modelos para escolher. -Biblioteca de Modelos do NetLogo +NetLogo Models Library -> Uma captura de tela da biblioteca de modelos por Dmitry Soshnikov +> Uma captura de ecrã da biblioteca de modelos por Dmitry Soshnikov -Você pode abrir um dos modelos, por exemplo **Biologia → Flocking**. +Pode abrir um dos modelos, por exemplo **Biology → Flocking**. ### Princípios Principais -Após abrir o modelo, você é levado à tela principal do NetLogo. Aqui está um modelo de exemplo que descreve a população de lobos e ovelhas, dado recursos finitos (grama). +Depois de abrir o modelo, será levado para o ecrã principal do NetLogo. Aqui está um modelo de exemplo que descreve a população de lobos e ovelhas, dado recursos finitos (relva). -![Tela Principal do NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pt.png) +![NetLogo Main Screen](../../../../../lessons/6-Other/23-MultiagentSystems/images/NetLogo-Main.png) -> Captura de tela por Dmitry Soshnikov +> Captura de ecrã por Dmitry Soshnikov -Nesta tela, você pode ver: +Neste ecrã, pode ver: -* A seção **Interface** que contém: +* A secção **Interface**, que contém: - O campo principal, onde todos os agentes vivem - - Diferentes controles: botões, deslizadores, etc. - - Gráficos que você pode usar para exibir parâmetros da simulação -* A aba **Código** que contém o editor, onde você pode digitar o programa NetLogo + - Diferentes controlos: botões, sliders, etc. + - Gráficos que pode usar para exibir parâmetros da simulação +* O separador **Code**, que contém o editor onde pode escrever o programa NetLogo -Na maioria dos casos, a interface teria um botão **Configurar**, que inicializa o estado da simulação, e um botão **Executar** que inicia a execução. Esses são gerenciados pelos manipuladores correspondentes no código que se parecem com isso: +Na maioria dos casos, a interface terá um botão **Setup**, que inicializa o estado da simulação, e um botão **Go**, que inicia a execução. Estes são tratados por manipuladores correspondentes no código que se parecem com isto: ``` to go [ @@ -83,73 +92,73 @@ to go [ O mundo do NetLogo consiste nos seguintes objetos: -* **Agentes** (tartarugas) que podem se mover pelo campo e fazer algo. Você comanda os agentes usando `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` para fazer algo. +* **Agentes** (tartarugas) que podem mover-se pelo campo e fazer algo. Comanda os agentes usando a sintaxe `ask turtles [...]`, e o código entre parênteses é executado por todos os agentes no *modo tartaruga*. +* **Patches** são áreas quadradas do campo onde os agentes vivem. Pode referir-se a todos os agentes no mesmo patch ou pode alterar as cores dos patches e algumas outras propriedades. Também pode `ask patches` para fazer algo. * **Observador** é um agente único que controla o mundo. Todos os manipuladores de botões são executados no *modo observador*. -> ✅ A beleza de um ambiente multi-agente é que o código que é executado no modo tartaruga ou no modo patch é executado ao mesmo tempo por todos os agentes em paralelo. Assim, ao escrever um pouco de código e programar o comportamento de um agente individual, você pode criar um comportamento complexo do sistema de simulação como um todo. +> ✅ A beleza de um ambiente multi-agente é que o código que corre no modo tartaruga ou no modo patch é executado ao mesmo tempo por todos os agentes em paralelo. Assim, ao escrever pouco código e programar o comportamento de um agente individual, pode criar um comportamento complexo do sistema de simulação como um todo. ### Flocking -Como um exemplo de comportamento multi-agente, vamos considerar **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. O Flocking é um padrão complexo que é muito semelhante a como bandos de pássaros voam. Ao observá-los voar, você pode pensar que eles seguem algum tipo de algoritmo coletivo ou que possuem alguma forma de *inteligência coletiva*. No entanto, esse comportamento complexo surge quando cada agente individual (neste caso, um *pássaro*) apenas observa alguns outros agentes a uma curta distância dele e segue três regras simples: +Como exemplo de comportamento multi-agente, vamos considerar o **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking é um padrão complexo muito semelhante à forma como bandos de pássaros voam. Ao observá-los, pode pensar que seguem algum tipo de algoritmo coletivo ou que possuem alguma forma de *inteligência coletiva*. No entanto, este comportamento complexo surge quando cada agente individual (neste caso, um *pássaro*) apenas observa alguns outros agentes a uma curta distância e segue três regras simples: -* **Alinhamento** - ele se dirige para a média da direção dos agentes vizinhos -* **Coesão** - ele tenta se dirigir para a posição média dos vizinhos (*atração de longo alcance*) -* **Separação** - ao se aproximar demais de outros pássaros, ele tenta se afastar (*repulsão de curto alcance*) +* **Alinhamento** - direciona-se para a direção média dos agentes vizinhos +* **Coesão** - tenta direcionar-se para a posição média dos vizinhos (*atração de longo alcance*) +* **Separação** - ao aproximar-se demasiado de outros pássaros, tenta afastar-se (*repulsão de curto alcance*) -Você pode executar o exemplo de flocking e observar o comportamento. Você também pode ajustar parâmetros, como *grau de separação* ou *alcance de visão*, que define quão longe cada pássaro pode ver. Observe que, se você diminuir o alcance de visão para 0, todos os pássaros ficam cegos, e o flocking para. Se você diminuir a separação para 0, todos os pássaros se reúnem em uma linha reta. +Pode executar o exemplo de flocking e observar o comportamento. Também pode ajustar parâmetros, como o *grau de separação* ou o *alcance de visão*, que define até onde cada pássaro pode ver. Note que, se reduzir o alcance de visão para 0, todos os pássaros ficam cegos e o flocking para. Se reduzir a separação para 0, todos os pássaros agrupam-se numa linha reta. -> ✅ Mude para a aba **Código** e veja onde as três regras de flocking (alinhamento, coesão e separação) estão implementadas no código. Observe como nos referimos apenas àqueles agentes que estão à vista. +> ✅ Mude para o separador **Code** e veja onde as três regras de flocking (alinhamento, coesão e separação) estão implementadas no código. Note como nos referimos apenas aos agentes que estão à vista. ### Outros Modelos para Ver -Existem mais alguns modelos interessantes que você pode experimentar: +Existem mais alguns modelos interessantes que pode experimentar: -* **Arte → Fogos de Artifício** mostra como um fogo de artifício pode ser considerado um comportamento coletivo de fluxos individuais de fogo -* **Ciência Social → Tráfego Básico** e **Ciência Social → Grade de Tráfego** mostram o modelo de tráfego urbano em Grade 1D e 2D com ou sem semáforos. Cada carro na simulação segue as seguintes regras: - - Se o espaço à sua frente estiver vazio - acelere (até uma certa velocidade máxima) - - Se ele vê um obstáculo à frente - freie (e você pode ajustar quão longe um motorista pode ver) -* **Ciência Social → Festa** mostra como as pessoas se agrupam durante uma festa de coquetel. Você pode encontrar a combinação de parâmetros que leva ao aumento mais rápido da felicidade do grupo. +* **Art → Fireworks** mostra como um fogo de artifício pode ser considerado um comportamento coletivo de fluxos de fogo individuais +* **Social Science → Traffic Basic** e **Social Science → Traffic Grid** mostram o modelo de tráfego urbano em 1D e numa grelha 2D com ou sem semáforos. Cada carro na simulação segue as seguintes regras: + - Se o espaço à sua frente estiver vazio - acelera (até uma certa velocidade máxima) + - Se vir um obstáculo à frente - trava (e pode ajustar até onde o condutor consegue ver) +* **Social Science → Party** mostra como as pessoas se agrupam durante uma festa de cocktail. Pode encontrar a combinação de parâmetros que leva ao aumento mais rápido da felicidade do grupo. -Como você pode ver por esses exemplos, simulações multi-agente podem ser uma maneira bastante útil de entender o comportamento de um sistema complexo composto por indivíduos que seguem a mesma lógica ou lógica semelhante. Também pode ser usado para controlar agentes virtuais, como [NPCs](https://en.wikipedia.org/wiki/NPC) em jogos de computador, ou agentes em mundos animados em 3D. +Como pode ver nestes exemplos, as simulações multi-agente podem ser uma forma bastante útil de compreender o comportamento de um sistema complexo composto por indivíduos que seguem a mesma ou lógica semelhante. Também pode ser usado para controlar agentes virtuais, como [NPCs](https://en.wikipedia.org/wiki/NPC) em jogos de computador ou agentes em mundos animados 3D. ## Agentes Deliberativos -Os agentes descritos acima são muito simples, reagindo a mudanças no ambiente usando algum tipo de algoritmo. Como tal, eles são **agentes reativos**. No entanto, às vezes os agentes podem raciocinar e planejar suas ações, caso em que são chamados de **deliberativos**. +Os agentes descritos acima são muito simples, reagindo a mudanças no ambiente usando algum tipo de algoritmo. Como tal, são **agentes reativos**. No entanto, às vezes os agentes podem raciocinar e planear as suas ações, caso em que são chamados de **deliberativos**. -Um exemplo típico seria um agente pessoal que recebe uma instrução de um humano para reservar uma viagem de férias. Suponha que existam muitos agentes que vivem na internet, que podem ajudá-lo. Ele deve então entrar em contato com outros agentes para ver quais voos estão disponíveis, quais são os preços dos hotéis para diferentes datas e tentar negociar o melhor preço. Quando o plano de férias estiver completo e confirmado pelo proprietário, ele pode prosseguir com a reserva. +Um exemplo típico seria um agente pessoal que recebe uma instrução de um humano para reservar uma viagem de férias. Suponha que existem muitos agentes na internet que podem ajudá-lo. Ele deve então contactar outros agentes para ver quais voos estão disponíveis, quais são os preços dos hotéis para diferentes datas e tentar negociar o melhor preço. Quando o plano de férias estiver completo e confirmado pelo proprietário, pode proceder à reserva. -Para fazer isso, os agentes precisam **se comunicar**. Para uma comunicação bem-sucedida, eles precisam de: +Para isso, os agentes precisam de **comunicar**. Para uma comunicação bem-sucedida, eles precisam de: -* Algumas **línguas padrão para trocar conhecimento**, como [Formato de Intercâmbio de Conhecimento](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) e [Linguagem de Consulta e Manipulação de Conhecimento](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Essas linguagens são projetadas com base na [Teoria do Ato de Fala](https://en.wikipedia.org/wiki/Speech_act). +* Algumas **linguagens padrão para trocar conhecimento**, como [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) e [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Essas linguagens são projetadas com base na [Teoria dos Atos de Fala](https://en.wikipedia.org/wiki/Speech_act). * Essas linguagens também devem incluir alguns **protocolos para negociações**, baseados em diferentes **tipos de leilão**. -* Uma **ontologia comum** para usar, para que eles se refiram aos mesmos conceitos conhecendo sua semântica -* Uma maneira de **descobrir** o que diferentes agentes podem fazer, também baseada em algum tipo de ontologia +* Uma **ontologia comum** a ser usada, para que se refiram aos mesmos conceitos conhecendo os seus significados +* Uma forma de **descobrir** o que diferentes agentes podem fazer, também baseada em algum tipo de ontologia -Agentes deliberativos são muito mais complexos do que reativos, porque eles não apenas reagem a mudanças no ambiente, mas também devem ser capazes de *iniciar* ações. Uma das arquiteturas propostas para agentes deliberativos é a chamada agente de Crença-Desejo-Intenção (BDI): +Os agentes deliberativos são muito mais complexos do que os reativos, porque não apenas reagem a mudanças no ambiente, mas também devem ser capazes de *iniciar* ações. Uma das arquiteturas propostas para agentes deliberativos é o chamado agente de Crença-Desejo-Intenção (BDI): -* **Crenças** formam um conjunto de conhecimentos sobre o ambiente de um agente. Pode ser estruturado como uma base de conhecimento ou um conjunto de regras que um agente pode aplicar a uma situação específica no ambiente. -* **Desejos** definem o que um agente quer fazer, ou seja, seus objetivos. Por exemplo, o objetivo do agente assistente pessoal acima é reservar uma viagem, e o objetivo de um agente de hotel é maximizar o lucro. -* **Intenções** são ações específicas que um agente planeja realizar para alcançar seus objetivos. As ações normalmente mudam o ambiente e causam comunicação com outros agentes. +* **Crenças** formam um conjunto de conhecimentos sobre o ambiente do agente. Pode ser estruturado como uma base de conhecimento ou conjunto de regras que um agente pode aplicar a uma situação específica no ambiente. +* **Desejos** definem o que um agente quer fazer, ou seja, os seus objetivos. Por exemplo, o objetivo do agente assistente pessoal acima é reservar uma viagem, e o objetivo de um agente de hotel é maximizar o lucro. +* **Intenções** são ações específicas que um agente planeia para alcançar os seus objetivos. As ações geralmente mudam o ambiente e causam comunicação com outros agentes. -Existem algumas plataformas disponíveis para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este artigo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contém uma revisão das plataformas multi-agente, juntamente com uma breve história dos sistemas multi-agente e seus diferentes cenários de uso. +Existem algumas plataformas disponíveis para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este artigo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contém uma revisão de plataformas multi-agente, juntamente com uma breve história dos sistemas multi-agente e os seus diferentes cenários de uso. ## Conclusão -Os sistemas multi-agente podem assumir formas muito diferentes e ser usados em muitas aplicações diferentes. -Todos tendem a focar no comportamento mais simples de um agente individual e alcançar um comportamento mais complexo do sistema geral devido ao **efeito sinérgico**. +Os sistemas Multi-Agente podem assumir formas muito diferentes e ser usados em muitas aplicações diferentes. +Todos tendem a focar-se no comportamento mais simples de um agente individual e alcançar um comportamento mais complexo do sistema geral devido ao **efeito sinergético**. ## 🚀 Desafio -Leve esta lição para o mundo real e tente conceituar um sistema multi-agente que possa resolver um problema. O que, por exemplo, um sistema multi-agente precisaria fazer para otimizar a rota de um ônibus escolar? Como ele poderia funcionar em uma padaria? +Leve esta lição para o mundo real e tente conceptualizar um sistema multi-agente que possa resolver um problema. O que, por exemplo, um sistema multi-agente precisaria fazer para otimizar a rota de um autocarro escolar? Como poderia funcionar numa padaria? -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) ## Revisão e Autoestudo -Revise o uso desse tipo de sistema na indústria. Escolha um domínio como fabricação ou a indústria de videogames e descubra como os sistemas multi-agente podem ser usados para resolver problemas únicos. +Revise o uso deste tipo de sistema na indústria. Escolha um domínio, como a manufatura ou a indústria de videojogos, e descubra como os sistemas multi-agente podem ser usados para resolver problemas únicos. ## [Tarefa NetLogo](assignment.md) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md index 124b774a..63689d23 100644 --- a/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ + # Tarefa de NetLogo -Escolha um dos modelos da biblioteca do NetLogo e use-o para simular uma situação da vida real da maneira mais próxima possível. Um bom exemplo seria ajustar o modelo de Vírus na pasta de Visualizações Alternativas para mostrar como ele pode ser usado para modelar a disseminação do COVID-19. Você consegue construir um modelo que imite a propagação viral da vida real? +Escolhe um dos modelos da biblioteca do NetLogo e utiliza-o para simular uma situação da vida real o mais fielmente possível. Um bom exemplo seria ajustar o modelo Virus na pasta Alternative Visualizations para mostrar como pode ser usado para modelar a propagação da COVID-19. Consegues criar um modelo que imite a propagação real de um vírus? -Mostre seu trabalho salvando uma cópia e criando uma demonstração em vídeo explicando como o modelo está conectado a uma situação do mundo real. +Mostra o teu trabalho guardando uma cópia e criando um vídeo de demonstração a explicar como o modelo está relacionado com uma situação do mundo real. -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/7-Ethics/README.md b/translations/pt/lessons/7-Ethics/README.md index 8fcdc398..e64d5e7f 100644 --- a/translations/pt/lessons/7-Ethics/README.md +++ b/translations/pt/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ + # IA Ética e Responsável -Você quase terminou este curso, e espero que agora veja claramente que a IA é baseada em uma série de métodos matemáticos formais que nos permitem encontrar relações nos dados e treinar modelos para replicar alguns aspectos do comportamento humano. Neste momento da história, consideramos a IA uma ferramenta muito poderosa para extrair padrões dos dados e aplicar esses padrões para resolver novos problemas. +Está quase a terminar este curso, e espero que, até agora, tenha percebido claramente que a IA é baseada em vários métodos matemáticos formais que nos permitem encontrar relações nos dados e treinar modelos para replicar alguns aspetos do comportamento humano. Neste momento da história, consideramos a IA uma ferramenta muito poderosa para extrair padrões dos dados e aplicar esses padrões para resolver novos problemas. -## [Quiz pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -No entanto, na ficção científica, muitas vezes vemos histórias onde a IA apresenta um perigo para a humanidade. Geralmente, essas histórias giram em torno de algum tipo de rebelião da IA, quando a IA decide confrontar os seres humanos. Isso implica que a IA possui algum tipo de emoção ou pode tomar decisões imprevistas por seus desenvolvedores. +No entanto, na ficção científica, vemos frequentemente histórias onde a IA representa um perigo para a humanidade. Normalmente, essas histórias giram em torno de algum tipo de rebelião da IA, quando esta decide confrontar os seres humanos. Isso implica que a IA tem algum tipo de emoção ou pode tomar decisões imprevistas pelos seus desenvolvedores. -O tipo de IA que aprendemos neste curso não é nada mais do que aritmética de matrizes grandes. É uma ferramenta muito poderosa para nos ajudar a resolver nossos problemas, e como qualquer outra ferramenta poderosa - pode ser usada para fins bons e ruins. Importante, ela pode ser *mal utilizada*. +O tipo de IA que aprendemos neste curso não é mais do que operações matriciais em grande escala. É uma ferramenta muito poderosa para nos ajudar a resolver os nossos problemas e, como qualquer outra ferramenta poderosa, pode ser usada para fins bons ou maus. É importante destacar que pode ser *mal utilizada*. -## Princípios da IA Responsável +## Princípios de IA Responsável -Para evitar esse uso acidental ou intencional da IA, a Microsoft afirma os importantes [Princípios da IA Responsável](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Os seguintes conceitos sustentam esses princípios: +Para evitar esta utilização acidental ou intencional da IA, a Microsoft define os importantes [Princípios de IA Responsável](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Os seguintes conceitos sustentam estes princípios: -* **Justiça** está relacionada ao importante problema de *viés de modelo*, que pode ser causado pelo uso de dados tendenciosos para treinamento. Por exemplo, quando tentamos prever a probabilidade de uma pessoa conseguir um emprego como desenvolvedor de software, o modelo provavelmente dará uma preferência maior aos homens - apenas porque o conjunto de dados de treinamento provavelmente estava tendencioso em relação a um público masculino. Precisamos equilibrar cuidadosamente os dados de treinamento e investigar o modelo para evitar viéses, e garantir que o modelo leve em conta características mais relevantes. -* **Confiabilidade e Segurança**. Por sua natureza, os modelos de IA podem cometer erros. Uma rede neural retorna probabilidades, e precisamos levar isso em conta ao tomar decisões. Todo modelo possui alguma precisão e revocação, e precisamos entender isso para prevenir danos que um conselho errado pode causar. -* **Privacidade e Segurança** têm algumas implicações específicas para a IA. Por exemplo, quando usamos alguns dados para treinar um modelo, esses dados se tornam de alguma forma "integrados" ao modelo. Por um lado, isso aumenta a segurança e a privacidade, por outro - precisamos lembrar quais dados o modelo foi treinado. -* **Inclusividade** significa que não estamos construindo IA para substituir pessoas, mas sim para aumentar as capacidades humanas e tornar nosso trabalho mais criativo. Isso também está relacionado à justiça, porque ao lidar com comunidades sub-representadas, a maioria dos conjuntos de dados que coletamos tende a ser tendenciosa, e precisamos garantir que essas comunidades sejam incluídas e tratadas corretamente pela IA. -* **Transparência**. Isso inclui garantir que estamos sempre claros sobre a IA sendo utilizada. Além disso, sempre que possível, queremos usar sistemas de IA que sejam *interpretáveis*. -* **Responsabilidade**. Quando modelos de IA tomam algumas decisões, nem sempre é claro quem é responsável por essas decisões. Precisamos garantir que entendemos onde reside a responsabilidade pelas decisões da IA. Na maioria dos casos, queremos incluir seres humanos no processo de tomada de decisões importantes, para que pessoas reais sejam responsabilizadas. +* **Justiça** está relacionada com o importante problema de *viés nos modelos*, que pode ser causado pelo uso de dados enviesados para o treino. Por exemplo, quando tentamos prever a probabilidade de uma pessoa conseguir um emprego como programador, o modelo tende a dar maior preferência aos homens - apenas porque o conjunto de dados de treino provavelmente estava enviesado para um público masculino. Precisamos de equilibrar cuidadosamente os dados de treino e investigar o modelo para evitar vieses, garantindo que o modelo considera características mais relevantes. +* **Fiabilidade e Segurança**. Por natureza, os modelos de IA podem cometer erros. Uma rede neural retorna probabilidades, e precisamos de ter isso em conta ao tomar decisões. Cada modelo tem uma precisão e um recall, e precisamos de compreender isso para evitar danos que conselhos errados possam causar. +* **Privacidade e Segurança** têm algumas implicações específicas para a IA. Por exemplo, quando usamos alguns dados para treinar um modelo, esses dados tornam-se de certa forma "integrados" no modelo. Por um lado, isso aumenta a segurança e a privacidade, por outro - precisamos de lembrar quais os dados que foram usados para treinar o modelo. +* **Inclusão** significa que não estamos a construir IA para substituir pessoas, mas sim para as complementar e tornar o nosso trabalho mais criativo. Está também relacionado com a justiça, porque ao lidar com comunidades sub-representadas, a maioria dos conjuntos de dados que recolhemos tende a ser enviesada, e precisamos de garantir que essas comunidades são incluídas e tratadas corretamente pela IA. +* **Transparência**. Isto inclui garantir que somos sempre claros sobre o uso de IA. Além disso, sempre que possível, queremos usar sistemas de IA que sejam *interpretáveis*. +* **Responsabilidade**. Quando os modelos de IA tomam algumas decisões, nem sempre é claro quem é responsável por essas decisões. Precisamos de garantir que compreendemos onde reside a responsabilidade pelas decisões da IA. Na maioria dos casos, queremos incluir seres humanos no processo de tomada de decisões importantes, para que pessoas reais sejam responsabilizadas. ## Ferramentas para IA Responsável -A Microsoft desenvolveu a [Caixa de Ferramentas de IA Responsável](https://github.com/microsoft/responsible-ai-toolbox), que contém um conjunto de ferramentas: +A Microsoft desenvolveu o [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), que contém um conjunto de ferramentas: -* Painel de Interpretabilidade (InterpretML) -* Painel de Justiça (FairLearn) -* Painel de Análise de Erros -* Painel de IA Responsável que inclui +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard que inclui: - - EconML - ferramenta para Análise Causal, que foca em perguntas do tipo "e se" - - DiCE - ferramenta para Análise Contrafactual que permite ver quais características precisam ser alteradas para afetar a decisão do modelo + - EconML - ferramenta para Análise Causal, que se foca em questões hipotéticas + - DiCE - ferramenta para Análise Contrafactual que permite ver quais as características que precisam de ser alteradas para influenciar a decisão do modelo -Para mais informações sobre Ética em IA, visite [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) no Currículo de Aprendizado de Máquina, que inclui tarefas. +Para mais informações sobre Ética na IA, visite [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) no currículo de Machine Learning, que inclui tarefas. -## Revisão e Autoestudo +## Revisão e Estudo Individual -Faça este [Caminho de Aprendizado](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender mais sobre IA responsável. +Faça este [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender mais sobre IA responsável. -## [Quiz pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Post-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/README.md b/translations/pt/lessons/README.md index c5c6440b..3b18b4a6 100644 --- a/translations/pt/lessons/README.md +++ b/translations/pt/lessons/README.md @@ -1,8 +1,17 @@ + # Visão Geral -![Visão Geral em um desenho](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pt.png) +![Visão Geral em um rabisco](../../../lessons/sketchnotes/ai-overview.png) -> Desenho por [Tomomi Imura](https://twitter.com/girlie_mac) +> Rabisco por [Tomomi Imura](https://twitter.com/girlie_mac) -**Isenção de responsabilidade**: -Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/X-Extras/X1-MultiModal/README.md b/translations/pt/lessons/X-Extras/X1-MultiModal/README.md index ce599785..0f0ffd2c 100644 --- a/translations/pt/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/pt/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ + # Redes Multi-Modais -Após o sucesso dos modelos transformer para resolver tarefas de PNL, as mesmas ou arquiteturas semelhantes foram aplicadas a tarefas de visão computacional. Há um crescente interesse em construir modelos que *combinarão* capacidades de visão e linguagem natural. Uma dessas tentativas foi feita pela OpenAI, e é chamada CLIP e DALL.E. +Após o sucesso dos modelos transformadores na resolução de tarefas de PLN, as mesmas ou similares arquiteturas foram aplicadas a tarefas de visão computacional. Há um interesse crescente em construir modelos que *combinem* capacidades de visão e linguagem natural. Uma dessas tentativas foi realizada pela OpenAI, chamada CLIP e DALL.E. -## Pré-Treinamento de Imagens Contrastivas (CLIP) +## Treino Contrastivo de Imagens (CLIP) -A ideia principal do CLIP é ser capaz de comparar prompts de texto com uma imagem e determinar quão bem a imagem corresponde ao prompt. +A ideia principal do CLIP é ser capaz de comparar descrições textuais com uma imagem e determinar o quão bem a imagem corresponde à descrição. -![Arquitetura do CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pt.png) +![Arquitetura CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-arch.png) -> *Imagem do [este post no blog](https://openai.com/blog/clip/)* +> *Imagem retirada [deste artigo](https://openai.com/blog/clip/)* -O modelo é treinado em imagens obtidas da Internet e suas legendas. Para cada lote, pegamos N pares de (imagem, texto) e os convertendo em algumas representações vetoriais I e T. Essas representações são então combinadas. A função de perda é definida para maximizar a similaridade cosseno entre vetores correspondentes a um par (por exemplo, I e T), e minimizar a similaridade cosseno entre todos os outros pares. Essa é a razão pela qual essa abordagem é chamada de **contrastiva**. +O modelo é treinado com imagens obtidas da Internet e suas legendas. Para cada lote, pegamos N pares de (imagem, texto) e convertemos para representações vetoriais I, ..., I / T, ..., T. Essas representações são então comparadas entre si. A função de perda é definida para maximizar a similaridade cosseno entre os vetores correspondentes a um par (por exemplo, I e T) e minimizar a similaridade cosseno entre todos os outros pares. É por isso que essa abordagem é chamada de **contrastiva**. -O modelo/biblioteca CLIP está disponível no [GitHub da OpenAI](https://github.com/openai/CLIP). A abordagem é descrita [neste post no blog](https://openai.com/blog/clip/), e em mais detalhes [neste artigo](https://arxiv.org/pdf/2103.00020.pdf). +O modelo/biblioteca CLIP está disponível no [GitHub da OpenAI](https://github.com/openai/CLIP). A abordagem é descrita [neste artigo](https://openai.com/blog/clip/) e em mais detalhes [neste artigo científico](https://arxiv.org/pdf/2103.00020.pdf). -Uma vez que este modelo é pré-treinado, podemos fornecer um lote de imagens e um lote de prompts de texto, e ele retornará um tensor com as probabilidades. O CLIP pode ser usado para várias tarefas: +Uma vez que este modelo é pré-treinado, podemos fornecer um lote de imagens e um lote de descrições textuais, e ele retornará um tensor com probabilidades. O CLIP pode ser usado para várias tarefas: **Classificação de Imagens** -Suponha que precisamos classificar imagens entre, digamos, gatos, cães e humanos. Nesse caso, podemos fornecer ao modelo uma imagem e uma série de prompts de texto: "*uma imagem de um gato*", "*uma imagem de um cachorro*", "*uma imagem de um humano*". No vetor resultante de 3 probabilidades, precisamos apenas selecionar o índice com o valor mais alto. +Suponha que precisamos classificar imagens entre, por exemplo, gatos, cães e humanos. Nesse caso, podemos fornecer ao modelo uma imagem e uma série de descrições textuais: "*uma foto de um gato*", "*uma foto de um cão*", "*uma foto de um humano*". No vetor resultante de 3 probabilidades, basta selecionar o índice com o valor mais alto. -![CLIP para Classificação de Imagens](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pt.png) +![CLIP para Classificação de Imagens](../../../../../lessons/X-Extras/X1-MultiModal/images/clip-class.png) -> *Imagem do [este post no blog](https://openai.com/blog/clip/)* +> *Imagem retirada [deste artigo](https://openai.com/blog/clip/)* -**Busca de Imagens Baseada em Texto** +**Pesquisa de Imagens Baseada em Texto** -Podemos também fazer o oposto. Se tivermos uma coleção de imagens, podemos passar essa coleção para o modelo e um prompt de texto - isso nos dará a imagem que é mais semelhante ao prompt dado. +Também podemos fazer o oposto. Se tivermos uma coleção de imagens, podemos passar essa coleção para o modelo e uma descrição textual - isso nos dará a imagem mais semelhante à descrição fornecida. -## ✍️ Exemplo: [Usando CLIP para Classificação de Imagens e Busca de Imagens](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) +## ✍️ Exemplo: [Usando CLIP para Classificação de Imagens e Pesquisa de Imagens](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -Abra o [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook para ver o CLIP em ação. +Abra o notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) para ver o CLIP em ação. -## Geração de Imagens com VQGAN+ CLIP +## Geração de Imagens com VQGAN+CLIP -O CLIP também pode ser usado para **geração de imagens** a partir de um prompt de texto. Para fazer isso, precisamos de um **modelo gerador** que seja capaz de gerar imagens com base em algum vetor de entrada. Um desses modelos é chamado [VQGAN](https://compvis.github.io/taming-transformers/) (GAN Quantizado por Vetores). +O CLIP também pode ser usado para **geração de imagens** a partir de uma descrição textual. Para isso, precisamos de um **modelo gerador** que seja capaz de gerar imagens com base em algum vetor de entrada. Um desses modelos é chamado [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). -As principais ideias do VQGAN que o diferenciam de um [GAN](../../4-ComputerVision/10-GANs/README.md) comum são as seguintes: -* Usar uma arquitetura de transformer autorregressiva para gerar uma sequência de partes visuais ricas em contexto que compõem a imagem. Essas partes visuais são, por sua vez, aprendidas por [CNN](../../4-ComputerVision/07-ConvNets/README.md) -* Usar um discriminador de sub-imagem que detecta se partes da imagem são "reais" ou "falsas" (diferente da abordagem "tudo ou nada" em GANs tradicionais). +As principais ideias do VQGAN que o diferenciam de um [GAN](../../4-ComputerVision/10-GANs/README.md) tradicional são as seguintes: +* Uso de uma arquitetura transformadora autorregressiva para gerar uma sequência de partes visuais ricas em contexto que compõem a imagem. Essas partes visuais, por sua vez, são aprendidas por uma [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Uso de um discriminador de sub-imagens que detecta se partes da imagem são "reais" ou "falsas" (diferente da abordagem "tudo ou nada" nos GANs tradicionais). -Saiba mais sobre VQGAN no site [Taming Transformers](https://compvis.github.io/taming-transformers/). +Saiba mais sobre o VQGAN no site [Taming Transformers](https://compvis.github.io/taming-transformers/). -Uma das diferenças importantes entre VQGAN e GANs tradicionais é que este último pode produzir uma imagem decente a partir de qualquer vetor de entrada, enquanto o VQGAN provavelmente produzirá uma imagem que não será coerente. Assim, precisamos guiar ainda mais o processo de criação da imagem, e isso pode ser feito usando o CLIP. +Uma das diferenças importantes entre o VQGAN e um GAN tradicional é que o último pode produzir uma imagem decente a partir de qualquer vetor de entrada, enquanto o VQGAN provavelmente produzirá uma imagem incoerente. Assim, precisamos orientar ainda mais o processo de criação da imagem, e isso pode ser feito usando o CLIP. -![Arquitetura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pt.png) +![Arquitetura VQGAN+CLIP](../../../../../lessons/X-Extras/X1-MultiModal/images/vqgan.png) -Para gerar uma imagem correspondente a um prompt de texto, começamos com algum vetor de codificação aleatório que é passado pelo VQGAN para produzir uma imagem. Então, o CLIP é usado para produzir uma função de perda que mostra quão bem a imagem corresponde ao prompt de texto. O objetivo, então, é minimizar essa perda, usando retropropagação para ajustar os parâmetros do vetor de entrada. +Para gerar uma imagem correspondente a uma descrição textual, começamos com um vetor de codificação aleatório que é passado pelo VQGAN para produzir uma imagem. Em seguida, o CLIP é usado para produzir uma função de perda que mostra o quão bem a imagem corresponde à descrição textual. O objetivo, então, é minimizar essa perda, usando retropropagação para ajustar os parâmetros do vetor de entrada. -Uma ótima biblioteca que implementa VQGAN+CLIP é [Pixray](http://github.com/pixray/pixray) +Uma excelente biblioteca que implementa o VQGAN+CLIP é a [Pixray](http://github.com/pixray/pixray). -![Imagem produzida pelo Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pt.png) | ![Imagem produzida pelo pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pt.png) | ![Imagem produzida pelo Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pt.png) +![Imagem gerada pelo Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.png) | ![Imagem gerada pelo Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.png) | ![Imagem gerada pelo Pixray](../../../../../lessons/X-Extras/X1-MultiModal/images/a_closeup_oil_portrait_of_old_male_teacher_of_math.png) ----|----|---- -Imagem gerada a partir do prompt *um retrato em aquarela de close-up de um jovem professor de literatura com um livro* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de um velho professor de matemática na frente do quadro negro* +Imagem gerada a partir da descrição *um retrato em aquarela de perto de um jovem professor de literatura com um livro* | Imagem gerada a partir da descrição *um retrato a óleo de perto de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir da descrição *um retrato a óleo de perto de um professor idoso de matemática em frente a um quadro-negro* -> Imagens da coleção **Professores Artificiais** por [Dmitry Soshnikov](http://soshnikov.com) +> Imagens da coleção **Artificial Teachers** por [Dmitry Soshnikov](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E é uma versão do GPT-3 treinada para gerar imagens a partir de prompts. Ele foi treinado com 12 bilhões de parâmetros. +DALL-E é uma versão do GPT-3 treinada para gerar imagens a partir de descrições textuais. Foi treinado com 12 bilhões de parâmetros. -Diferente do CLIP, o DALL-E recebe tanto texto quanto imagem como um único fluxo de tokens para imagens e texto. Portanto, a partir de múltiplos prompts, você pode gerar imagens com base no texto. +Ao contrário do CLIP, o DALL-E recebe tanto texto quanto imagem como um único fluxo de tokens para ambos. Assim, a partir de várias descrições, é possível gerar imagens baseadas no texto. ### [DALL-E 2](https://openai.com/dall-e-2) -A principal diferença entre DALL-E 1 e 2 é que ele gera imagens e arte mais realistas. +A principal diferença entre o DALL-E 1 e o 2 é que este último gera imagens e arte mais realistas. -Exemplos de gerações de imagens com DALL-E: -![Imagem produzida pelo Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.pt.png) | ![Imagem produzida pelo pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.pt.png) | ![Imagem produzida pelo Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.pt.png) +Exemplos de imagens geradas com o DALL-E: +![Imagem gerada pelo DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.png) | ![Imagem gerada pelo DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.png) | ![Imagem gerada pelo DALL-E](../../../../../lessons/X-Extras/X1-MultiModal/images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.png) ----|----|---- -Imagem gerada a partir do prompt *um retrato em aquarela de close-up de um jovem professor de literatura com um livro* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de um velho professor de matemática na frente do quadro negro* +Imagem gerada a partir da descrição *um retrato em aquarela de perto de um jovem professor de literatura com um livro* | Imagem gerada a partir da descrição *um retrato a óleo de perto de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir da descrição *um retrato a óleo de perto de um professor idoso de matemática em frente a um quadro-negro* ## Referências -* Artigo do VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* Artigo do CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) +* Artigo sobre VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Artigo sobre CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/sketchnotes/LICENSE.md b/translations/pt/lessons/sketchnotes/LICENSE.md index 09570404..3dfe8367 100644 --- a/translations/pt/lessons/sketchnotes/LICENSE.md +++ b/translations/pt/lessons/sketchnotes/LICENSE.md @@ -1,261 +1,272 @@ -Attribution-ShareAlike 4.0 International + +Atribuição-CompartilhaIgual 4.0 Internacional ======================================================================= -A Creative Commons Corporation ("Creative Commons") não é um escritório de advocacia e não fornece serviços ou aconselhamento jurídico. A distribuição das licenças públicas da Creative Commons não cria uma relação de advogado-cliente ou outra relação. A Creative Commons disponibiliza suas licenças e informações relacionadas em uma base "como está". A Creative Commons não oferece garantias em relação a suas licenças, qualquer material licenciado sob seus termos e condições, ou qualquer informação relacionada. A Creative Commons renuncia a toda responsabilidade por danos resultantes do uso de suas licenças na máxima extensão possível. +A Creative Commons Corporation ("Creative Commons") não é um escritório de advocacia e não presta serviços ou consultoria jurídica. A distribuição das licenças públicas da Creative Commons não cria uma relação advogado-cliente ou qualquer outra relação. A Creative Commons disponibiliza suas licenças e informações relacionadas "como estão". A Creative Commons não oferece garantias em relação às suas licenças, qualquer material licenciado sob seus termos e condições, ou quaisquer informações relacionadas. A Creative Commons isenta-se de toda responsabilidade por danos resultantes do uso das licenças na máxima extensão permitida. -Usando Licenças Públicas da Creative Commons +Utilização das Licenças Públicas da Creative Commons -As licenças públicas da Creative Commons fornecem um conjunto padrão de termos e condições que criadores e outros detentores de direitos podem usar para compartilhar obras originais de autoria e outros materiais sujeitos a direitos autorais e certos outros direitos especificados na licença pública abaixo. As seguintes considerações são apenas para fins informativos, não são exaustivas e não fazem parte de nossas licenças. +As licenças públicas da Creative Commons fornecem um conjunto padrão de termos e condições que criadores e outros detentores de direitos podem usar para partilhar obras originais e outros materiais sujeitos a direitos de autor e certos outros direitos especificados na licença pública abaixo. As seguintes considerações são apenas para fins informativos, não são exaustivas e não fazem parte das nossas licenças. - Considerações para licenciadores: Nossas licenças públicas são - destinadas ao uso por aqueles autorizados a dar ao público - permissão para usar material de maneiras que de outra forma seriam - restritas por direitos autorais e certos outros direitos. Nossas - licenças são irrevogáveis. Licenciadores devem ler e entender os - termos e condições da licença que escolherem antes de aplicá-la. - Licenciadores também devem garantir todos os direitos necessários - antes de aplicar nossas licenças para que o público possa reutilizar - o material conforme esperado. Licenciadores devem marcar claramente - qualquer material que não esteja sujeito à licença. Isso inclui - outro material licenciado sob CC ou material utilizado sob uma - exceção ou limitação ao direito autoral. Mais considerações para - licenciadores: - wiki.creativecommons.org/Considerations_for_licensors + Considerações para licenciadores: As nossas licenças públicas são + destinadas a serem usadas por aqueles autorizados a conceder ao + público permissão para usar materiais de formas que, de outra + forma, seriam restringidas por direitos de autor e certos outros + direitos. As nossas licenças são irrevogáveis. Os licenciadores + devem ler e compreender os termos e condições da licença que + escolhem antes de aplicá-la. Os licenciadores também devem + garantir todos os direitos necessários antes de aplicar as nossas + licenças para que o público possa reutilizar o material conforme + esperado. Os licenciadores devem marcar claramente qualquer + material que não esteja sujeito à licença. Isso inclui outros + materiais licenciados pela CC ou materiais usados sob uma exceção + ou limitação aos direitos de autor. Mais considerações para + licenciadores: + wiki.creativecommons.org/Considerations_for_licensors - Considerações para o público: Ao usar uma de nossas licenças + Considerações para o público: Ao usar uma das nossas licenças públicas, um licenciador concede ao público permissão para usar o material licenciado sob os termos e condições especificados. Se a - permissão do licenciador não for necessária por qualquer motivo— - por exemplo, devido a qualquer exceção ou limitação aplicável ao - direito autoral—então esse uso não é regulado pela licença. Nossas - licenças concedem apenas permissões sob direitos autorais e certos - outros direitos que um licenciador tem autoridade para conceder. O - uso do material licenciado ainda pode ser restrito por outros - motivos, incluindo porque outros têm direitos autorais ou outros - direitos sobre o material. Um licenciador pode fazer solicitações - especiais, como pedir que todas as alterações sejam marcadas ou - descritas. Embora não seja exigido por nossas licenças, você é - encorajado a respeitar essas solicitações quando razoável. Mais - considerações para o público: - wiki.creativecommons.org/Considerations_for_licensees + permissão do licenciador não for necessária por qualquer motivo — + por exemplo, devido a uma exceção ou limitação aplicável aos + direitos de autor — então esse uso não é regulado pela licença. As + nossas licenças concedem apenas permissões sob direitos de autor e + certos outros direitos que um licenciador tem autoridade para + conceder. O uso do material licenciado pode ainda ser restringido + por outros motivos, incluindo porque outros possuem direitos de + autor ou outros direitos sobre o material. Um licenciador pode + fazer pedidos especiais, como solicitar que todas as alterações + sejam marcadas ou descritas. Embora não seja obrigatório pelas + nossas licenças, é encorajado que respeite esses pedidos quando + razoável. Mais considerações para o público: + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Licença Pública Internacional Creative Commons Attribution-ShareAlike 4.0 +Licença Pública Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional -Ao exercer os Direitos Licenciados (definidos abaixo), você aceita e concorda em estar vinculado aos termos e condições desta Licença Pública Internacional Creative Commons Attribution-ShareAlike 4.0 ("Licença Pública"). Na medida em que esta Licença Pública possa ser interpretada como um contrato, você recebe os Direitos Licenciados em consideração à sua aceitação destes termos e condições, e o Licenciador lhe concede tais direitos em consideração aos benefícios que o Licenciador recebe ao disponibilizar o Material Licenciado sob estes termos e condições. +Ao exercer os Direitos Licenciados (definidos abaixo), aceita e concorda em estar vinculado aos termos e condições desta Licença Pública Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional ("Licença Pública"). Na medida em que esta Licença Pública possa ser interpretada como um contrato, os Direitos Licenciados são concedidos em consideração à sua aceitação destes termos e condições, e o Licenciador concede-lhe tais direitos em consideração aos benefícios que o Licenciador recebe ao disponibilizar o Material Licenciado sob estes termos e condições. Seção 1 -- Definições. - a. Material Adaptado significa material sujeito a Direitos Autorais e Direitos Similares que é derivado ou baseado no Material Licenciado e no qual o Material Licenciado é traduzido, alterado, arranjado, transformado ou de outra forma modificado de uma maneira que requer permissão sob os Direitos Autorais e Direitos Similares detidos pelo Licenciador. Para fins desta Licença Pública, onde o Material Licenciado é uma obra musical, performance ou gravação sonora, Material Adaptado é sempre produzido onde o Material Licenciado é sincronizado em relação ao tempo com uma imagem em movimento. + a. Material Adaptado significa material sujeito a Direitos de Autor e + Direitos Similares que é derivado ou baseado no Material Licenciado + e no qual o Material Licenciado é traduzido, alterado, arranjado, + transformado ou de outra forma modificado de uma maneira que + requeira permissão sob os Direitos de Autor e Direitos Similares + detidos pelo Licenciador. Para os fins desta Licença Pública, onde + o Material Licenciado é uma obra musical, performance ou gravação + sonora, o Material Adaptado é sempre produzido quando o Material + Licenciado é sincronizado em relação temporal com uma imagem em + movimento. - b. Licença do Adaptador significa a licença que você aplica aos seus Direitos Autorais e Direitos Similares em suas contribuições ao Material Adaptado de acordo com os termos e condições desta Licença Pública. + b. Licença do Adaptador significa a licença que aplica aos seus + Direitos de Autor e Direitos Similares nas suas contribuições para + o Material Adaptado de acordo com os termos e condições desta + Licença Pública. - c. Licença Compatível com BY-SA significa uma licença listada em + c. Licença Compatível BY-SA significa uma licença listada em creativecommons.org/compatiblelicenses, aprovada pela Creative Commons como essencialmente equivalente a esta Licença Pública. - d. Direitos Autorais e Direitos Similares significa direitos autorais e/ou direitos similares intimamente relacionados a direitos autorais, incluindo, sem limitação, performance, transmissão, gravação sonora e Direitos de Banco de Dados Sui Generis, independentemente de como os direitos são rotulados ou categorizados. Para fins desta Licença Pública, os direitos especificados na Seção 2(b)(1)-(2) não são Direitos Autorais e Direitos Similares. + d. Direitos de Autor e Direitos Similares significa direitos de autor + e/ou direitos semelhantes intimamente relacionados aos direitos de + autor, incluindo, sem limitação, direitos de performance, + transmissão, gravação sonora e Direitos de Base de Dados Sui + Generis, independentemente de como os direitos são rotulados ou + categorizados. Para os fins desta Licença Pública, os direitos + especificados na Seção 2(b)(1)-(2) não são Direitos de Autor e + Direitos Similares. - e. Medidas Tecnológicas Eficazes significa aquelas medidas que, na ausência de autoridade adequada, não podem ser contornadas sob leis que cumpram obrigações sob o Artigo 11 do Tratado de Direitos Autorais da OMPI adotado em 20 de dezembro de 1996 e/ou acordos internacionais semelhantes. + e. Medidas Tecnológicas Eficazes significa aquelas medidas que, na + ausência de autoridade adequada, não podem ser contornadas sob + leis que cumpram as obrigações do Artigo 11 do Tratado da OMPI + sobre Direitos de Autor adotado em 20 de dezembro de 1996, e/ou + acordos internacionais semelhantes. - f. Exceções e Limitações significa uso justo, negociação justa e/ou qualquer outra exceção ou limitação aos Direitos Autorais e Direitos Similares que se aplica ao seu uso do Material Licenciado. + f. Exceções e Limitações significa uso justo, uso aceitável e/ou + qualquer outra exceção ou limitação aos Direitos de Autor e + Direitos Similares que se aplique ao seu uso do Material Licenciado. - g. Elementos da Licença significa os atributos da licença listados no nome de uma Licença Pública da Creative Commons. Os Elementos da Licença desta Licença Pública são Atribuição e Compartilhamento. + g. Elementos da Licença significa os atributos da licença listados no + nome de uma Licença Pública Creative Commons. Os Elementos da + Licença desta Licença Pública são Atribuição e CompartilhaIgual. - h. Material Licenciado significa a obra artística ou literária, banco de dados ou outro material ao qual o Licenciador aplicou esta Licença Pública. + h. Material Licenciado significa a obra artística ou literária, base + de dados ou outro material ao qual o Licenciador aplicou esta + Licença Pública. - i. Direitos Licenciados significa os direitos concedidos a você sujeitos aos termos e condições desta Licença Pública, que são limitados a todos os Direitos Autorais e Direitos Similares que se aplicam ao seu uso do Material Licenciado e que o Licenciador tem autoridade para licenciar. + i. Direitos Licenciados significa os direitos concedidos a si sujeitos + aos termos e condições desta Licença Pública, que se limitam a + todos os Direitos de Autor e Direitos Similares que se aplicam ao + seu uso do Material Licenciado e que o Licenciador tem autoridade + para licenciar. - j. Licenciador significa a(s) pessoa(s) ou entidade(s) que concedem direitos sob esta Licença Pública. + j. Licenciador significa o(s) indivíduo(s) ou entidade(s) que concede(m) + direitos sob esta Licença Pública. - k. Compartilhar significa fornecer material ao público por qualquer meio ou processo que requer permissão sob os Direitos Licenciados, como reprodução, exibição pública, performance pública, distribuição, disseminação, comunicação ou importação, e tornar o material disponível ao público, incluindo de maneiras que membros do público possam acessar o material de um lugar e em um momento escolhidos individualmente por eles. + k. Partilhar significa disponibilizar material ao público por qualquer + meio ou processo que requeira permissão sob os Direitos Licenciados, + como reprodução, exibição pública, performance pública, + distribuição, disseminação, comunicação ou importação, e tornar o + material disponível ao público, incluindo de formas que os membros + do público possam aceder ao material a partir de um local e num + momento escolhidos individualmente por eles. - l. Direitos de Banco de Dados Sui Generis significa direitos diferentes de direitos autorais resultantes da Diretiva 96/9/CE do Parlamento Europeu e do Conselho de 11 de março de 1996 sobre a proteção legal de bancos de dados, conforme alterada e/ou sucedida, bem como outros direitos essencialmente equivalentes em qualquer lugar do mundo. + l. Direitos de Base de Dados Sui Generis significa direitos que não + sejam direitos de autor resultantes da Diretiva 96/9/CE do + Parlamento Europeu e do Conselho de 11 de março de 1996 sobre a + proteção jurídica de bases de dados, conforme alterada e/ou + sucedida, bem como outros direitos essencialmente equivalentes em + qualquer parte do mundo. - m. Você significa a pessoa ou entidade exercendo os Direitos Licenciados sob esta Licença Pública. Seu tem um significado correspondente. + m. Você significa o indivíduo ou entidade que exerce os Direitos + Licenciados sob esta Licença Pública. Seu tem um significado + correspondente. -Seção 2 -- Escopo. +Seção 2 -- Âmbito. a. Concessão de licença. - 1. Sujeito aos termos e condições desta Licença Pública, o Licenciador concede a você uma licença mundial, isenta de royalties, não sublicenciável, não exclusiva e irrevogável para exercer os Direitos Licenciados no Material Licenciado para: + 1. Sujeito aos termos e condições desta Licença Pública, o + Licenciador concede-lhe uma licença mundial, isenta de + royalties, não sublicenciável, não exclusiva e irrevogável + para exercer os Direitos Licenciados no Material Licenciado + para: - a. reproduzir e Compartilhar o Material Licenciado, no todo ou em parte; e + a. reproduzir e Partilhar o Material Licenciado, no todo ou + em parte; e - b. produzir, reproduzir e Compartilhar Material Adaptado. + b. produzir, reproduzir e Partilhar Material Adaptado. - 2. Exceções e Limitações. Para evitar dúvidas, onde Exceções e Limitações se aplicam ao seu uso, esta Licença Pública não se aplica, e você não precisa cumprir seus termos e condições. + 2. Exceções e Limitações. Para evitar dúvidas, onde Exceções e + Limitações se aplicam ao seu uso, esta Licença Pública não se + aplica, e não precisa cumprir os seus termos e condições. - 3. Prazo. O prazo desta Licença Pública é especificado na Seção 6(a). + 3. Prazo. O prazo desta Licença Pública é especificado na Seção + 6(a). - 4. Mídia e formatos; modificações técnicas permitidas. O Licenciador autoriza você a exercer os Direitos Licenciados em todos os meios e formatos, sejam eles conhecidos agora ou criados posteriormente, e a fazer modificações técnicas necessárias para isso. O Licenciador renuncia e/ou concorda em não afirmar qualquer direito ou autoridade para proibir você de fazer modificações técnicas necessárias para exercer os Direitos Licenciados, incluindo modificações técnicas necessárias para contornar Medidas Tecnológicas Eficazes. Para fins desta Licença Pública, simplesmente fazer modificações autorizadas por esta Seção 2(a)(4) nunca produz Material Adaptado. + 4. Meios e formatos; modificações técnicas permitidas. O + Licenciador autoriza-o a exercer os Direitos Licenciados em + todos os meios e formatos, conhecidos agora ou criados no + futuro, e a fazer modificações técnicas necessárias para o + fazer. O Licenciador renuncia e/ou concorda em não invocar + qualquer direito ou autoridade para proibir que faça + modificações técnicas necessárias para exercer os Direitos + Licenciados, incluindo modificações técnicas necessárias para + contornar Medidas Tecnológicas Eficazes. Para os fins desta + Licença Pública, simplesmente fazer modificações autorizadas + por esta Seção 2(a)(4) nunca produz Material Adaptado. - 5. Recipientes a jusante. + 5. Destinatários subsequentes. a. Oferta do Licenciador -- Material Licenciado. Cada - recipiente do Material Licenciado automaticamente - recebe uma oferta do Licenciador para exercer os - Direitos Licenciados sob os termos e condições desta + destinatário do Material Licenciado recebe + automaticamente uma oferta do Licenciador para exercer + os Direitos Licenciados sob os termos e condições desta Licença Pública. b. Oferta adicional do Licenciador -- Material Adaptado. - Cada recipiente de Material Adaptado de você - automaticamente recebe uma oferta do Licenciador para - exercer os Direitos Licenciados no Material Adaptado - sob as condições da Licença do Adaptador que você aplica. + Cada destinatário de Material Adaptado de si recebe + automaticamente uma oferta do Licenciador para exercer + os Direitos Licenciados no Material Adaptado sob as + condições da Licença do Adaptador que aplica. - c. Sem restrições a jusante. Você não pode oferecer ou impor - quaisquer termos ou condições adicionais ou diferentes, ou - aplicar quaisquer Medidas Tecnológicas Eficazes ao + c. Sem restrições subsequentes. Não pode oferecer ou impor + quaisquer termos ou condições adicionais ou diferentes, + ou aplicar quaisquer Medidas Tecnológicas Eficazes ao Material Licenciado se isso restringir o exercício dos - Direitos Licenciados por qualquer recipiente do Material - Licenciado. + Direitos Licenciados por qualquer destinatário do + Material Licenciado. - 6. Nenhuma aprovação. Nada nesta Licença Pública constitui ou - pode ser interpretado como permissão para afirmar ou insinuar que você é, ou que seu uso do Material Licenciado está, conectado com, ou patrocinado, endossado ou concedido status oficial pelo, Licenciador ou outros designados para receber atribuição conforme previsto na Seção 3(a)(1)(A)(i). + 6. Sem endosso. Nada nesta Licença Pública constitui ou pode ser + interpretado como permissão para afirmar ou implicar que é, + ou que o seu uso do Material Licenciado está, conectado, + patrocinado, endossado ou recebeu status oficial do + Licenciador ou de outros designados para receber atribuição + conforme previsto na Seção 3(a)(1)(A)(i). b. Outros direitos. - 1. Direitos morais, como o direito à integridade, não estão - licenciados sob esta Licença Pública, nem estão direitos de + 1. Direitos morais, como o direito à integridade, não são + licenciados sob esta Licença Pública, nem direitos de publicidade, privacidade e/ou outros direitos de personalidade - similares; no entanto, na medida do possível, o Licenciador - renuncia e/ou concorda em não afirmar quaisquer desses direitos - detidos pelo Licenciador na extensão limitada necessária para - permitir que você exerça os Direitos Licenciados, mas não de - outra forma. + semelhantes; no entanto, na medida do possível, o Licenciador + renuncia e/ou concorda em não invocar quaisquer desses + direitos detidos pelo Licenciador na medida limitada + necessária para permitir que exerça os Direitos Licenciados, + mas não de outra forma. - 2. Direitos de patente e marcas registradas não estão licenciados - sob esta Licença Pública. + 2. Direitos de patente e marca registada não são licenciados sob + esta Licença Pública. 3. Na medida do possível, o Licenciador renuncia a qualquer - direito de coletar royalties de você pelo exercício dos - Direitos Licenciados, seja diretamente ou através de uma - sociedade de cobrança sob qualquer esquema de licenciamento - voluntário ou renunciável. Em todos os outros casos, o Licenciador - reserva expressamente qualquer direito de coletar tais royalties. + direito de cobrar royalties de si pelo exercício dos Direitos + Licenciados, seja diretamente ou através de uma sociedade de + gestão coletiva sob qualquer esquema de licenciamento + voluntário ou estatutário renunciável ou obrigatório. Em + todos os outros casos, o Licenciador reserva expressamente + qualquer direito de cobrar tais royalties. +Direitos, então a base de dados na qual tem Direitos de Base de Dados Sui Generis (mas não os seus conteúdos individuais) é Material Adaptado, -Seção 3 -- Condições da Licença. +incluindo para os propósitos da Secção 3(b); e +c. Deve cumprir as condições da Secção 3(a) se Partilhar todos ou uma parte substancial dos conteúdos da base de dados. -Seu exercício dos Direitos Licenciados está expressamente sujeito às -seguintes condições. +Para evitar dúvidas, esta Secção 4 complementa e não substitui as suas obrigações ao abrigo desta Licença Pública quando os Direitos Licenciados incluem outros Direitos de Autor e Direitos Similares. - a. Atribuição. +### Secção 5 -- Isenção de Garantias e Limitação de Responsabilidade - 1. Se você Compartilhar o Material Licenciado (incluindo em forma - modificada), você deve: +a. SALVO SE O LICENCIANTE ASSUMIR SEPARADAMENTE OUTRA OBRIGAÇÃO, NA MEDIDA DO POSSÍVEL, O LICENCIANTE OFERECE O MATERIAL LICENCIADO "TAL COMO ESTÁ" E "CONFORME DISPONÍVEL", E NÃO FAZ REPRESENTAÇÕES OU GARANTIAS DE QUALQUER TIPO RELATIVAMENTE AO MATERIAL LICENCIADO, SEJAM EXPRESSAS, IMPLÍCITAS, LEGAIS OU OUTRAS. ISTO INCLUI, SEM LIMITAÇÃO, GARANTIAS DE TITULARIDADE, COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO, NÃO-INFRAÇÃO, AUSÊNCIA DE DEFEITOS LATENTES OU OUTROS, PRECISÃO, OU A PRESENÇA OU AUSÊNCIA DE ERROS, SEJAM OU NÃO CONHECIDOS OU DETETÁVEIS. ONDE ISENÇÕES DE GARANTIAS NÃO SÃO PERMITIDAS TOTAL OU PARCIALMENTE, ESTA ISENÇÃO PODE NÃO SE APLICAR A SI. - a. reter o seguinte se for fornecido pelo Licenciador - com o Material Licenciado: +b. NA MEDIDA DO POSSÍVEL, EM NENHUMA CIRCUNSTÂNCIA O LICENCIANTE SERÁ RESPONSÁVEL PERANTE SI SOB QUALQUER TEORIA LEGAL (INCLUINDO, SEM LIMITAÇÃO, NEGLIGÊNCIA) OU DE OUTRA FORMA POR QUAISQUER PERDAS, CUSTOS, DESPESAS OU DANOS DIRETOS, ESPECIAIS, INDIRETOS, INCIDENTAIS, CONSEQUENCIAIS, PUNITIVOS, EXEMPLARES OU OUTROS DECORRENTES DESTA LICENÇA PÚBLICA OU DO USO DO MATERIAL LICENCIADO, MESMO QUE O LICENCIANTE TENHA SIDO INFORMADO DA POSSIBILIDADE DE TAIS PERDAS, CUSTOS, DESPESAS OU DANOS. ONDE UMA LIMITAÇÃO DE RESPONSABILIDADE NÃO É PERMITIDA TOTAL OU PARCIALMENTE, ESTA LIMITAÇÃO PODE NÃO SE APLICAR A SI. - i. identificação do(s) criador(es) do Material - Licenciado e quaisquer outros designados para - receber atribuição, de qualquer maneira razoável - solicitada pelo Licenciador (incluindo por - pseudônimo, se designado); +c. A isenção de garantias e a limitação de responsabilidade acima descritas devem ser interpretadas de forma a, na medida do possível, aproximarem-se de uma isenção absoluta e renúncia de toda a responsabilidade. - ii. um aviso de direitos autorais; +### Secção 6 -- Duração e Rescisão - iii. um aviso que se refira a esta Licença Pública; +a. Esta Licença Pública aplica-se durante o período dos Direitos de Autor e Direitos Similares aqui licenciados. No entanto, se não cumprir esta Licença Pública, os seus direitos ao abrigo desta Licença Pública terminam automaticamente. - iv. um aviso que se refira à isenção de - garantias; +b. Quando o seu direito de usar o Material Licenciado tiver terminado ao abrigo da Secção 6(a), ele será restabelecido: - v. uma URI ou hiperlink para o Material Licenciado - na medida do razoavelmente praticável; +1. automaticamente na data em que a violação for corrigida, desde que seja corrigida no prazo de 30 dias após a sua descoberta da violação; ou +2. mediante restabelecimento expresso pelo Licenciante. - b. indicar se você modificou o Material Licenciado e - reter uma indicação de quaisquer modificações anteriores; e +Para evitar dúvidas, esta Secção 6(b) não afeta qualquer direito que o Licenciante possa ter de procurar reparações pelas suas violações desta Licença Pública. - c. indicar que o Material Licenciado está licenciado sob - esta Licença Pública, e incluir o texto ou a URI ou - hiperlink para esta Licença Pública. +c. Para evitar dúvidas, o Licenciante pode também oferecer o Material Licenciado sob termos ou condições separadas ou parar de distribuir o Material Licenciado a qualquer momento; no entanto, isso não terminará esta Licença Pública. - 2. Você pode satisfazer as condições na Seção 3(a)(1) de qualquer - maneira razoável com base no meio, nos meios e no contexto em - que você Compartilha o Material Licenciado. Por exemplo, pode ser - razoável satisfazer as condições fornecendo uma URI ou - hiperlink para um recurso que inclua as informações exigidas. +d. As Secções 1, 5, 6, 7 e 8 permanecem em vigor após a rescisão desta Licença Pública. - 3. Se solicitado pelo Licenciador, você deve remover qualquer uma das - informações exigidas pela Seção 3(a)(1)(A) na medida do - razoavelmente praticável. +### Secção 7 -- Outros Termos e Condições - b. ShareAlike. +a. O Licenciante não estará vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por si, salvo acordo expresso. - Além das condições na Seção 3(a), se você Compartilhar - Material Adaptado que produzir, as seguintes condições também se aplicam. +b. Quaisquer arranjos, entendimentos ou acordos relativos ao Material Licenciado que não estejam aqui declarados são separados e independentes dos termos e condições desta Licença Pública. - 1. A Licença do Adaptador que você aplica deve ser uma licença - Creative Commons com os mesmos Elementos da Licença, esta versão - ou posterior, ou uma Licença Compatível com BY-SA. +### Secção 8 -- Interpretação - 2. Você deve incluir o texto ou a URI ou hiperlink para a - Licença do Adaptador que você aplica. Você pode satisfazer essa - condição de qualquer maneira razoável com base no meio, nos - meios e no contexto em que você Compartilha Material Adaptado. +a. Para evitar dúvidas, esta Licença Pública não reduz, limita, restringe ou impõe condições a qualquer uso do Material Licenciado que possa ser legalmente feito sem permissão ao abrigo desta Licença Pública. - 3. Você não pode oferecer ou impor quaisquer termos ou condições - adicionais ou diferentes, ou aplicar quaisquer Medidas - Tecnológicas Eficazes ao Material Adaptado que restrinjam o - exercício dos direitos concedidos sob a Licença do Adaptador que - você aplica. +b. Na medida do possível, se qualquer disposição desta Licença Pública for considerada inexequível, será automaticamente reformada na medida mínima necessária para torná-la exequível. Se a disposição não puder ser reformada, será separada desta Licença Pública sem afetar a exequibilidade dos restantes termos e condições. -Seção 4 -- Direitos de Banco de Dados Sui Generis. +c. Nenhum termo ou condição desta Licença Pública será renunciado e nenhum incumprimento será consentido, salvo acordo expresso do Licenciante. -Onde os Direitos Licenciados incluem Direitos de Banco de Dados Sui Generis que se aplicam ao seu uso do Material Licenciado: +d. Nada nesta Licença Pública constitui ou pode ser interpretado como uma limitação ou renúncia de quaisquer privilégios e imunidades que se apliquem ao Licenciante ou a si, incluindo em relação aos processos legais de qualquer jurisdição ou autoridade. - a. para evitar dúvidas, a Seção 2(a)(1) concede a você o direito - de extrair, reutilizar, reproduzir e Compartilhar toda ou uma parte - substancial do conteúdo do banco de dados; +======================================================================= - b. se você incluir toda ou uma parte substancial do conteúdo do banco - de dados em um banco de dados no qual você tem Direitos de Banco de - Dados Sui Generis, então o banco de dados no qual você tem Direitos - de Banco de Dados Sui Generis (mas não seu conteúdo individual) é - Material Adaptado, +A Creative Commons não é parte das suas licenças públicas. Não obstante, a Creative Commons pode optar por aplicar uma das suas licenças públicas ao material que publica e, nesses casos, será considerada o “Licenciante”. O texto das licenças públicas da Creative Commons é dedicado ao domínio público sob a Dedicação ao Domínio Público CC0. Exceto para o propósito limitado de indicar que o material é partilhado sob uma licença pública da Creative Commons ou conforme permitido pelas políticas da Creative Commons publicadas em creativecommons.org/policies, a Creative Commons não autoriza o uso da marca "Creative Commons" ou de qualquer outra marca ou logótipo da Creative Commons sem o seu consentimento prévio por escrito, incluindo, sem limitação, em conexão com quaisquer modificações não autorizadas a qualquer uma das suas licenças públicas ou quaisquer outros arranjos, entendimentos ou acordos relativos ao uso de material licenciado. Para evitar dúvidas, este parágrafo não faz parte das licenças públicas. - incluindo para fins da Seção 3(b); e - c. você deve cumprir as condições na Seção 3(a) se você Compartilhar - toda ou uma parte substancial do conteúdo do banco de dados. +A Creative Commons pode ser contactada em creativecommons.org. -Para evitar dúvidas, esta Seção 4 complementa e não substitui suas obrigações sob esta Licença Pública onde os Direitos Licenciados incluem outros Direitos Autorais e Direitos Similares. - -Seção 5 -- Isenção de Garantias e Limitação de Responsabilidade. - - a. A MENOS QUE DE OUTRA FORMA SEPARADAMENTE ASSUMIDO PELO LICENCIADOR, NA MEDIDA DO POSSÍVEL, O LICENCIADOR OFERECE O MATERIAL LICENCIADO COMO ESTÁ E COMO DISPONÍVEL, E NÃO FAZ REPRESENTAÇÕES OU GARANTIAS DE QUALQUER TIPO RELATIVAS AO MATERIAL LICENCIADO, SEJAM ELAS EXPRESSAS, IMPLÍCITAS, ESTATUTÁRIAS OU OUTRAS. ISSO INCLUI, SEM LIMITAÇÃO, GARANTIAS DE TÍTULO, COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO, NÃO VIOLAÇÃO, AUSÊNCIA DE DEFEITOS LATENTES OU OUTROS, PRECISÃO OU A PRESENÇA OU AUSÊNCIA DE ERROS, SEJA OU NÃO CONHECIDOS OU DISCERNÍVEIS. ONDE ISENÇÕES DE GARANTIAS NÃO SÃO PERMITIDAS TOTAL OU PARCIALMENTE, ESTA ISENÇÃO PODE NÃO SE APLICAR A VOCÊ. - - b. NA MEDIDA DO POSSÍVEL, EM NENHUM CASO O LICENCIADOR SERÁ RESPONSÁVEL POR VOCÊ SOB QUALQUER TEORIA JURÍDICA (INCLUINDO, SEM LIMITAÇÃO, NEGLIGÊNCIA) OU DE OUTRA FORMA POR QUAISQUER PERDAS, CUSTOS, DESPESAS OU DANOS DIRETOS, ESPECIAIS, INDIRETOS, INCIDENTAIS, CONSEQUENCIAIS, PUNITIVOS, EXEMPLARES OU OUTROS DECORRENTES DESSA LICENÇA PÚBLICA OU DO USO DO MATERIAL LICENCIADO, MESMO QUE O LICENCIADOR TENHA SIDO AVISADO DA POSSIBILIDADE DE TAIS PERDAS, CUSTOS, DESPESAS OU DANOS. ONDE UMA LIMITAÇÃO DE RESPONSABILIDADE NÃO É PERMITIDA TOTAL OU PARCIALMENTE, ESTA LIMITAÇÃO PODE NÃO SE APLICAR A VOCÊ. - - c. A isenção de garantias e a limitação de responsabilidade fornecidas acima devem ser interpretadas de uma maneira que, na medida do possível, mais se aproxime de uma isenção absoluta e renúncia de toda responsabilidade. - -Seção 6 -- Prazo e Rescisão. - - a. Esta Licença Pública se aplica pelo prazo dos Direitos Autorais e Direitos Similares licenciados aqui. No entanto, se você não cumprir esta Licença Pública, então seus direitos sob esta Licença Pública se encerram automaticamente. - - b. Onde seu direito de usar o Material Licenciado foi encerrado sob a Seção 6(a), ele se restabelece: - - 1. automaticamente a partir da data em que a violação é corrigida, desde que seja corrigida dentro de 30 dias de sua descoberta da violação; ou - - 2. mediante restabelecimento expresso pelo Licenciador. - - Para evitar dúvidas, esta Seção 6(b) não afeta qualquer direito que o Licenciador possa ter de buscar reparações por suas violações desta Licença Pública. - - c. Para evitar dúvidas, o Licenciador também pode oferecer o Material Licenciado sob termos ou condições separados ou parar de distribuir o Material Licenciado a qualquer momento; no entanto, fazer isso não encerrará esta Licença Pública. - - d. As Seções 1, 5, 6, 7 e 8 sobrevivem à rescisão desta Licença Pública. - -Seção 7 -- Outros Termos e Condições. - - a. O Licenciador não estará vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por você, a menos que expressamente concordado. - - b. Quaisquer arranjos, entendimentos ou acordos relativos ao Material Licenciado não declarados aqui são separados e independentes dos termos e condições desta Licença Pública. - -Seção 8 -- Interpretação. - - a. Para evitar dúvidas, - -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/sketchnotes/README.md b/translations/pt/lessons/sketchnotes/README.md index 47b81857..256a7029 100644 --- a/translations/pt/lessons/sketchnotes/README.md +++ b/translations/pt/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -Todos os esboços do currículo podem ser baixados aqui. + +Todas as sketchnotes do currículo podem ser descarregadas aqui. 🎨 Criado por: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -**Isenção de responsabilidade**: -Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas resultantes do uso desta tradução. \ No newline at end of file +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file