rearranging repo entirely
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
# Artificial Intelligence for Beginners - A Curriculum
|
||||
|
||||
> **This curriculum is being actively developed on GitHub. Look into [contributing](CONTRIBUTING.md) to see which areas require active contributions. Please consider this a pre-release, and do not actively use in the classroom yet!**
|
||||
> **This curriculum is being actively developed on GitHub. Look into [contributing](/etc/CONTRIBUTING.md) to see which areas require active contributions. Please consider this a pre-release, and do not actively use in the classroom yet!**
|
||||
|
||||
|
||||
Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about **Artificial Intelligence**.
|
||||
|
|
@ -27,7 +27,7 @@ What we will not cover in this curriculum:
|
|||
* Business cases of using **AI in Business**. Consider taking [Introduction to AI for business users](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-57639-dmitryso) learning path on Microsoft Learn, or [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-57639-dmitryso), developed in cooperation with [INSEAD](https://www.insead.edu/).
|
||||
* **Classic Machine Learning**, which is well described in our [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners)
|
||||
* Practical AI applications built using **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-57639-dmitryso)**. For this, we recommend that you start with modules Microsoft Learn for [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-57639-dmitryso), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-57639-dmitryso) and others.
|
||||
* Specific ML **Cloud Frameworks**, such as [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-57639-dmitryso) or [Azure Databricks](). Consider using [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-57639-dmitryso) and [Build and O perate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-57639-dmitryso) learning paths.
|
||||
* Specific ML **Cloud Frameworks**, such as [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-57639-dmitryso) or [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-57639-dmitryso). Consider using [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-57639-dmitryso) and [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-57639-dmitryso) learning paths.
|
||||
* **Conversational AI** and **Chat Bots**. There is a separate [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-57639-dmitryso) learning path, and you can also refer to [this blog post](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) for more detail.
|
||||
* **Deep Mathematics** behind deep learning. For this, we would recommend [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) by Ian Goodfellow, Yoshua Bengio and Aaron Courville, which is also available online at [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/).
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ For a gentle introduction to *AI in the Cloud* topics you may consider taking th
|
|||
<tr><th>No</th><th>Lesson</th><th>Intro</th><th>PyTorch</th><th>Keras/TensorFlow</th><th>Lab</th></tr>
|
||||
|
||||
<tr><td>I</td><td colspan="4"><b>Introduction to AI</b></td><td>PAT</td></tr>
|
||||
<tr><td>1</td><td>Introduction and History of AI</td><td><a href="1-Intro/README.md">Text</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>1</td><td>Introduction and History of AI</td><td><a href="/lessons/1-Intro/README.md">Text</a></td><td></td><td></td><td></td></tr>
|
||||
|
||||
<tr><td>II</td><td colspan="4"><b>Symbolic AI</b></td><td>PAT</td></tr>
|
||||
<tr><td>2 </td><td>Knowledge Representation and Expert Systems</td><td><a href="2-Symbolic/README.md">Text</a></td><td colspan="2"><a href="2-Symbolic/Animals.ipynb">Expert System</a>, <a href="2-Symbolic/FamilyOntology.ipynb">Ontology</a>, <a href="2-Symbolic/MSConceptGraph.ipynb">Concept Graph</a></td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
- Introduction
|
||||
- [Introduction to AI](../../../lessons/1-Intro/README.md)
|
||||
- [Knowledge Representation and Expert Systems](../../../lessons/2-Symbolic/README.md)
|
||||
- [Neural Networks - Perceptron](../../../lessons/3-NeuralNetworks/03-Perceptron/README.md)
|
||||
- [Neural Networks - Your Own Framework](../../../lessons/3-NeuralNetworks/04-OwnFramework/README.md)
|
||||
- [Neural Networks - Perceptron](../../../lessons/3-NeuralNetworks/05-Frameworks/README.md)
|
||||
- [Computer Vision - Convolutional Neural Networks](../../../lessons/4-ComputerVision/07-ConvNets/README.md)
|
||||
- [Computer Vision - Transfer Learning](../../../lessons/4-ComputerVision/08-TransferLearning/README.md)
|
||||
- [Computer Vision - Autoencoders](../../../lessons/4-ComputerVision/09-Autoencoders/README.md)
|
||||
- [Computer Vision - GANs](../../../lessons/4-ComputerVision/10-GANs/README.md)
|
||||
- [Computer Vision - Segmentation](../../../lessons/4-ComputerVision/12-Segmentation/README.md)
|
||||
- [NLP - Text Representation](../../../lessons/5-NLP/13-TextRep/README.md)
|
||||
- [NLP - Embeddings](../../../lessons/5-NLP/14-Embeddings/README.md)
|
||||
- [NLP - LanguageModeling](../../../lessons/5-NLP/15-LanguageModeling/README.md)
|
||||
- [NLP - RNNs](../../../lessons/5-NLP/16-RNN/README.md)
|
||||
- [NLP - Generative Networks](../../../lessons/5-NLP/17-GenerativeNetworks/README.md)
|
||||
- [NLP - Transformers](../../../lessons/5-NLP/18-Transformers/README.md)
|
||||
- [Other - Genetic Algorithms](../../../lessons/6-Other/21-GeneticAlgorithms/README.md)
|
||||
- [Other - Multiagent Systems](../../../lessons/6-Other/23-MultiagentSystems/README.md)
|
||||
- [Ethics](../../../lessons/7-Ethics/README.md)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
module.exports = {
|
||||
contents: ['docs/_sidebar.md'], // array of "table of contents" files path
|
||||
pathToPublic: 'pdf/readme.pdf', // path where pdf will stored
|
||||
contents: ['etc/docsify-to-pdf/docs/_sidebar.md'], // array of "table of contents" files path
|
||||
pathToPublic: 'etc/docsify-to-pdf/pdf/readme.pdf', // path where pdf will stored
|
||||
pdfOptions: {
|
||||
margin: { top: '100px', bottom: '100px' }
|
||||
}, // reference: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagepdfoptions
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
- Introduction
|
||||
- [Defining Data Science](../1-Introduction/01-defining-data-science/README.md)
|
||||
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>AI for Beginners</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
name: 'AI for Beginners',
|
||||
repo: 'https://github.com/Microsoft/AI-For-Beginners',
|
||||
relativePath: false,
|
||||
basePath: 'https://raw.githubusercontent.com/microsoft/ai-for-beginners/main/',
|
||||
auto2top: true,
|
||||
routerMode: 'history'
|
||||
}
|
||||
</script>
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
|
@ -0,0 +1,86 @@
|
|||
# Introduction to Neural Networks. Multi-Layered Perceptron
|
||||
|
||||
In the previous section, you learned about the simplest neural network model - one-layered perceptron, a linear two-class classification model.
|
||||
|
||||
In this section we will extend this model into a more flexible framework, allowing us to:
|
||||
|
||||
* perform **multi-class classification** in addition to two-class
|
||||
* solve **regression problems** in addition to classification
|
||||
* separate classes that are not linearly separable
|
||||
|
||||
We will also develop our own modular framework in Python that will allow us to construct different neural network architectures.
|
||||
|
||||
## [Pre-lecture quiz](https://black-ground-0cc93280f.1.azurestaticapps.net/quiz/7)
|
||||
|
||||
## Formalization of Machine Learning
|
||||
|
||||
Let's start with formalizing the Machine Learning problem. Suppose we have a training dataset **X** with labels **Y**, and we need to build a model *f* that will make most accurate predictions. The quality of predictions is measured by **Loss function** ℒ. The following loss functions are often used:
|
||||
|
||||
* For regression problem, when we need to predict a number, we can use **absolute error** ∑<sub>i</sub>|f(x<sup>(i)</sup>)-y<sup>(i)</sup>|, or **squared error** ∑<sub>i</sub>(f(x<sup>(i)</sup>)-y<sup>(i)</sup>)<sup>2</sup>
|
||||
* For classification, we use **0-1 loss** (which is essentially the same as **accuracy** of the model), or **logistic loss**.
|
||||
|
||||
For one-level perceptron, function *f* was defined as a linear function *f(x)=wx+b* (here *w* is the weight matrix, *x* is the vector of input features, and *b* is bias vector). For different neural network architectures, this function can take more complex form.
|
||||
|
||||
> In the case of classification, it is often desirable to get probabilities of corresponding classes as network output. To convert arbitrary numbers to probabilities (eg. to normalize the output), we often use **softmax** function σ, and the function *f* becomes *f(x)=σ(wx+b)*
|
||||
|
||||
In the definition of *f* above, *w* and *b* are called **parameters** θ=⟨*w,b*⟩. Given the dataset ⟨**X**,**Y**⟩, we can compute an overall error on the whole dataset as a function of parameters θ.
|
||||
|
||||
> ✅ **The goal of neural network training is to minimize the error by varying parameters θ**
|
||||
|
||||
## Gradient Descent Optimization
|
||||
|
||||
There is a well-known method of function optimization called **gradient descent**. The idea is that we can compute a derivative (in multi-dimensional case call **gradient**) of loss function with respect to parameters, and vary parameters in such a way that the error would decrease. This can be formalized as follows:
|
||||
|
||||
* Initialize parameters by some random values w<sup>(0)</sup>, b<sup>(0)</sup>
|
||||
* Repeat the following step many times:
|
||||
- w<sup>(i+1)</sup> = w<sup>(i)</sup>-η∂ℒ/∂w
|
||||
- b<sup>(i+1)</sup> = b<sup>(i)</sup>-η∂ℒ/∂b
|
||||
|
||||
During training, the optimization steps are supposed to be calculated considering the whole dataset (remember that loss is calculated as a sum through all training samples). However, in real life we take small portions of the dataset called **minibatches**, and calculate gradients based on a subset of data. Because subset is taken randomly each time, such method is called **stochastic gradient descent** (SGD).
|
||||
|
||||
## Multi-Layered Perceptrons and Back Propagation
|
||||
|
||||
One-layer network, as we have seen above, is capable of classifying linearly separable classes. To build a richer model, we can combine several layers of the network. Mathematically it would mean that the function *f* would have a more complex form, and will be computed in several steps:
|
||||
* z<sub>1</sub>=w<sub>1</sub>x+b<sub>1</sub>
|
||||
* z<sub>2</sub>=w<sub>2</sub>α(z<sub>1</sub>)+b<sub>2</sub>
|
||||
* f = σ(z<sub>2</sub>)
|
||||
|
||||
Here, α is a **non-linear activation function**, σ is a softmax function, and parameters θ=<*w<sub>1</sub>,b<sub>1</sub>,w<sub>2</sub>,b<sub>2</sub>*>.
|
||||
|
||||
The gradient descent algorithm would remain the same, but it would be more difficult to calculate gradients. Given the chain differentiation rule, we can calculate derivatives as:
|
||||
|
||||
* ∂ℒ/∂w<sub>2</sub> = (∂ℒ/∂σ)(∂σ/∂z<sub>2</sub>)(∂z<sub>2</sub>/∂w<sub>2</sub>)
|
||||
* ∂ℒ/∂w<sub>1</sub> = (∂ℒ/∂σ)(∂σ/∂z<sub>2</sub>)(∂z<sub>2</sub>/∂α)(∂α/∂z<sub>1</sub>)(∂z<sub>1</sub>/∂w<sub>1</sub>)
|
||||
|
||||
> ✅ The chain differentiation rule is used to calculate derivatives of the loss function with respect to parameters.
|
||||
|
||||
Note that the left-most part of all those expressions is the same, and thus we can effectively calculate derivatives starting from the loss function and going "backwards" through the computational graph. Thus the method of training a multi-layered perceptron is called **backpropagation**, or 'backprop'.
|
||||
|
||||
<img alt="compute graph" src="images/ComputeGraphGrad.png"/>
|
||||
|
||||
> TODO: image citation
|
||||
|
||||
> ✅ We will cover backprop in much more detail in our notebook example.
|
||||
|
||||
## Conclusion
|
||||
|
||||
In this lesson, we have built our own neural network library, and we have used it for a simple two-dimensional classification task.
|
||||
|
||||
## 🚀 Challenge
|
||||
|
||||
In the accompanying notebook, you will implement your own framework for building and training multi-layered perceptrons. You will be able to see in detail how modern neural networks operate.
|
||||
|
||||
Proceed to the [OwnFramework](OwnFramework.ipynb) notebook and work through it.
|
||||
|
||||
## [Post-lecture quiz](https://black-ground-0cc93280f.1.azurestaticapps.net/quiz/8)
|
||||
|
||||
## Review & Self Study
|
||||
|
||||
Backpropagation is a common algorithm used in AI and ML, worth studying [in more detail](https://wikipedia.org/wiki/Backpropagation)
|
||||
|
||||
## [Assignment](lab/README.md)
|
||||
|
||||
In this lab, you are asked to use the framework you constructed in this lesson to solve MNIST handwritten digit classification.
|
||||
|
||||
* [Instructions](lab/README.md)
|
||||
* [Notebook](lab/MyFW_MNIST.ipynb)
|
||||
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 634 KiB After Width: | Height: | Size: 634 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |