Merge branch 'microsoft:main' into main

This commit is contained in:
Charles Emmanuel S. Ndiaye 2021-07-16 14:38:49 +00:00 коммит произвёл GitHub
Родитель 0ea938006f d07d80730d
Коммит 9a1eea886b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
12 изменённых файлов: 231 добавлений и 17 удалений

Просмотреть файл

@ -0,0 +1,109 @@
# Introduction au machine learning
[![ML, AI, deep learning - Quelle est la différence ?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - What's the difference?")
> 🎥 Cliquer sur l'image ci-dessus afin de regarder une vidéo expliquant la différence entre machine learning, AI et deep learning.
## [Quiz préalable](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/1/)
### Introduction
Bienvenue à ce cours sur le machine learning classique pour débutant ! Que vous soyez complètement nouveau sur ce sujet ou que vous soyez un professionnel du ML expérimenté cherchant à peaufiner vos connaissances, nous sommes heureux de vous avoir avec nous ! Nous voulons créer un tremplin chaleureux pour vos études en ML et serions ravis d'évaluer, de répondre et d'apprendre de vos retours d'[expériences](https://github.com/microsoft/ML-For-Beginners/discussions).
[![Introduction au ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML")
> 🎥 Cliquer sur l'image ci-dessus afin de regarder une vidéo: John Guttag du MIT introduit le machine learning
### Débuter avec le machine learning
Avant de commencer avec ce cours, vous aurez besoin d'un ordinateur configuré et prêt à faire tourner des notebooks (jupyter) localement.
- **Configurer votre ordinateur avec ces vidéos**. Apprendre comment configurer votre ordinateur avec cette [série de vidéos](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6).
- **Apprendre Python**. Il est aussi recommandé d'avoir une connaissance basique de [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa), un langage de programmaton utile pour les data scientist que nous utilisons tout au long de ce cours.
- **Apprendre Node.js et Javascript**. Nous utilisons aussi Javascript par moment dans ce cours afin de construire des applications WEB, vous aurez donc besoin de [node](https://nodejs.org) et [npm](https://www.npmjs.com/) installé, ainsi que de [Visual Studio Code](https://code.visualstudio.com/) pour développer en Python et Javascript.
- **Créer un compte GitHub**. Comme vous nous avez trouvé sur [GitHub](https://github.com), vous y avez sûrement un compte, mais si non, créez en un et répliquez ce cours afin de l'utiliser à votre grés. (N'oublier pas de nous donner une étoile aussi 😊)
- **Explorer Scikit-learn**. Familiariser vous avec [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), un ensemble de librairies ML que nous mentionnons dans nos leçons.
### Qu'est-ce que le machine learning
Le terme `machine learning` est un des mots les plus populaire et le plus utilisé ces derniers temps. Il y a une probabilité accrue que vous l'ayez entendu au moins une fois si vous avez une appétence pour la technologie indépendamment du domaine dans lequel vous travaillez. Le fonctionnement du machine learning, cependant, reste un mystère pour la plupart des personnes. Pour un débutant en machine learning, le sujet peut nous submerger. Ainsi, il est important de comprendre ce qu'est le machine learning et de l'apprendre petit à petit au travers d'exemples pratiques.
![ml hype curve](../images/hype.png)
> Google Trends montre la récente 'courbe de popularité' pour le mot 'machine learning'
Nous vivons dans un univers rempli de mystères fascinants. De grands scientifiques comme Stephen Hawking, Albert Einstein et pleins d'autres ont dévoués leur vie à la recherche d'informations utiles afin de dévoiler les mystères qui nous entourent. C'est la condition humaine pour apprendre : un enfant apprend de nouvelles choses et découvre la structure du monde année après année jusqu'à qu'ils deviennent adultes.
Le cerveau d'un enfant et ses sens perçoivent l'environnement qui les entourent et apprennent graduellement des schémas non observés de la vie qui vont l'aider à fabriquer des règles logiques afin d'identifier les schémas appris. Le processus d'apprentissage du cerveau humain est ce que rend les hommes comme la créature la plus sophistiquée du monde vivant. Apprendre continuellement par la découverte de schémas non observés et ensuite innover sur ces schémas nous permet de nous améliorer tout au long de notre vie. Cette capacité d'apprendre et d'évoluer est liée au concept de [plasticité neuronale](https://www.simplypsychology.org/brain-plasticity.html), nous pouvons tirer quelques motivations similaires entre le processus d'apprentissage du cerveau humain et le concept de machine learning.
Le [cerveau humain](https://www.livescience.com/29365-human-brain.html) perçoit des choses du monde réel, assimile les informations perçues, fait des décisions rationnelles et entreprend certaines actions selon le contexte. C'est ce que l'on appelle se comporter intelligemment. Lorsque nous programmons une reproduction du processus de ce comportement à une machine, c'est ce que l'on appelle intelligence artificielle (IA).
Bien que le terme peut être confu, machine learning (ML) est un important sous-ensemble de l'intelligence artificielle. **ML se réfère à l'utilisation d'algorithmes spécialisés afin de découvrir des informations utiles et de trouver des schémas non observés depuis des données perçues pour corroborer un processus de décision rationnel**.
![AI, ML, deep learning, data science](../images/ai-ml-ds.png)
> Un diagramme montrant les relations entre AI, ML, deep learning et data science. Infographie par [Jen Looper](https://twitter.com/jenlooper) et inspiré par [ce graphique](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)
## Ce que vous allez apprendre dans ce cours
Dans ce cours, nous allons nous concentrer sur les concepts clés du machine learning qu'un débutant se doit de connaître. Nous parlerons de ce que l'on appelle le 'machine learning classique' en utilisant principalement Scikit-learn, une excellente librairie que beaucoup d'étudiants utilisent afin d'apprendre les bases. Afin de comprendre les concepts plus larges de l'intelligence artificielle ou du deep learning, une profonde connaissance en machine learning est indispensable, et c'est ce que nous aimerions fournir ici.
Dans ce cours, vous allez apprendre :
- Les concepts clés du machine learning
- L'histoire du ML
- ML et équité (fairness)
- Les techniques de régression ML
- Les techniques de classification ML
- Les techniques de regroupement (clustering) ML
- Les techniques du traitement automatique des langues (NLP) ML
- Les techniques de prédictions à partir de séries chronologiques ML
- Apprentissage renforcé
- D'applications réels du ML
## Ce que nous ne couvrirons pas
- Deep learning
- Neural networks
- IA
Afin d'avoir la meilleur expérience d'apprentissage, nous éviterons les complexités des réseaux neuronaux, du 'deep learning' (construire un modèle utilisant plusieurs couches de réseaux neuronaux) et IA, dont nous parlerons dans un cours différent. Nous offirons aussi un cours à venir sur la data science pour concentrer sur cet aspect de champs très large.
## Pourquoi etudier le machine learning ?
Le machine learning, depuis une perspective systémique, est défini comme la création de systèmes automatiques pouvant apprendre des schémas non observés depuis des données afin d'aider à prendre des décisions intelligentes.
Ce but est faiblement inspiré de la manière dont le cerveau humain apprend certaines choses depuis les données qu'il perçoit du monde extérieur.
✅ Penser une minute aux raisons qu'une entreprise aurait d'essayer d'utiliser des stratégies de machine learning au lieu de créer des règles codés en dur.
### Les applications du machine learning
Les applications du machine learning sont maintenant pratiquement partout, et sont aussi omniprésentes que les données qui circulent autour de notre société (générés par nos smartphones, appareils connectés ou autres systèmes). En prenant en considération l'immense potentiel des algorithmes dernier cri de machine learning, les chercheurs ont pu exploités leurs capacités afin de résoudre des problèmes multidimensionnels et interdisciplinaires de la vie avec d'important retours positifs
**Vous pouvez utiliser le machine learning de plusieurs manières** :
- Afin de prédire la possibilité d'avoir une maladie à partir des données médicales d'un patient.
- Pour tirer parti des données météorologiques afin de prédire les événements météorologiques.
- Afin de comprendre le sentiment d'un texte.
- Afin de détecter les fake news pour stopper la propagation de la propagande.
La finance, l'économie, les sciences de la terre, l'exploration spatiale, le génie biomédical, les sciences cognitives et même les domaines des sciences humaines ont adapté le machine learning pour résoudre les problèmes ardus et lourds de traitement des données dans leur domaine respectif.
Le machine learning automatise le processus de découverte de modèles en trouvant des informations significatives à partir de données réelles ou générées. Il s'est avéré très utile dans les applications commerciales, de santé et financières, entre autres.
Dans un avenir proche, comprendre les bases du machine learning sera indispensable pour les personnes de tous les domaines en raison de son adoption généralisée.
---
## 🚀 Challenge
Esquisser, sur papier ou à l'aide d'une application en ligne comme [Excalidraw](https://excalidraw.com/), votre compréhension des différences entre l'IA, le ML, le deep learning et la data science. Ajouter quelques idées de problèmes que chacune de ces techniques est bonne à résoudre.
## [Quiz de validation des connaissances](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2/)
## Révision et auto-apprentissage
Pour en savoir plus sur la façon dont vous pouvez utiliser les algorithmes de ML dans le cloud, suivez ce [Parcours d'apprentissage](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa).
## Devoir
[Être opérationnel](assignment.fr.md)

Просмотреть файл

@ -104,4 +104,4 @@
## 任务
[启动并运行](../assignment.md)
[启动并运行](assignment.zh-cn.md)

Просмотреть файл

@ -0,0 +1,10 @@
# Être opérationnel
## Instructions
Dans ce devoir non noté, vous devez vous familiariser avec Python et rendre votre environnement opérationnel et capable d'exécuter des notebook.
Suivez ce [parcours d'apprentissage Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa), puis configurez votre système en parcourant ces vidéos introductives :
https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

Просмотреть файл

@ -0,0 +1,9 @@
# 启动和运行
## 说明
在这个不评分的作业中,你应该温习一下 Python将 Python 环境能够运行起来,并且可以运行 notebooks。
学习这个 [Python 学习路径](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa),然后通过这些介绍性的视频将你的系统环境设置好:
https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

Просмотреть файл

@ -113,4 +113,4 @@ Alan Turing一个真正杰出的人[在2019年被公众投票选出](https
## 任务
[创建时间线](../assignment.md)
[创建时间线](assignment.zh-cn.md)

Просмотреть файл

@ -0,0 +1,11 @@
# 建立一个时间轴
## 说明
使用这个 [仓库](https://github.com/Digital-Humanities-Toolkit/timeline-builder),创建一个关于算法、数学、统计学、人工智能、机器学习的某个方面或者可以综合多个以上学科来讲。你可以着重介绍某个人,某个想法,或者一个经久不衰的思想。请确保添加了多媒体元素在你的时间线中。
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| ------------ | ---------------------------------- | ---------------------- | ------------------------------------------ |
| | 有一个用 GitHub page 展示的 timeline | 代码还不完整并且没有部署 | 时间线不完整,没有经过充分的研究,并且没有部署 |

Просмотреть файл

@ -89,11 +89,11 @@
**讨论**:重温一些例子,看看它们是否显示出不同的危害。
| | 分配 | 服务质量 | 刻板印象 | 诋毁 | 代表性过高或过低 |
| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: |
| 自动招聘系统 | x | x | x | | x |
| 机器翻译 | | | | | |
| 照片加标签 | | | | | |
| | 分配 | 服务质量 | 刻板印象 | 诋毁 | 代表性过高或过低 |
| ------------ | :---: | :------: | :------: | :---: | :--------------: |
| 自动招聘系统 | x | x | x | | x |
| 机器翻译 | | | | | |
| 照片加标签 | | | | | |
## 检测不公平
@ -138,11 +138,11 @@
✅ 在以后关于聚类的课程中,你将看到如何在代码中构建这个“混淆矩阵”
| | 假阳性率 | 假阴性率 | 数量 |
| ---------- | ------------------- | ------------------- | ----- |
| 女性 | 0.37 | 0.27 | 54032 |
| 男性 | 0.31 | 0.35 | 28620 |
| 未列出性别 | 0.33 | 0.31 | 1266 |
| | 假阳性率 | 假阴性率 | 数量 |
| ---------- | -------- | -------- | ----- |
| 女性 | 0.37 | 0.27 | 54032 |
| 男性 | 0.31 | 0.35 | 28620 |
| 未列出性别 | 0.33 | 0.31 | 1266 |
这个表格告诉我们几件事。首先,我们注意到数据中的未列出性别的人相对较少。数据是有偏差的,所以你需要小心解释这些数字。
@ -211,4 +211,4 @@
## 任务
[探索Fairlearn](../assignment.md)
[探索Fairlearn](assignment.zh-cn.md)

Просмотреть файл

@ -0,0 +1,11 @@
# 探索 Fairlearn
## 说明
在这节课中,你了解了 Fairlearn一个“开源的社区驱动的项目旨在帮助数据科学家们提高人工智能系统的公平性”。在这项作业中探索 Fairlearn [笔记本](https://fairlearn.org/v0.6.2/auto_examples/index.html)中的一个例子,之后你可以用论文或者 ppt 的形式叙述你学习后的发现。
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| -------- | --------- | -------- | ----------------- |
| | 提交了一篇论文或者ppt 关于讨论 Fairlearn 系统、挑选运行的例子、和运行这个例子后所得出来的心得结论 | 提交了一篇没有结论的论文 | 没有提交论文 |

Просмотреть файл

@ -54,7 +54,7 @@
- **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。
- **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。
- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中所述)。
- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../../../7-TimeSeries/1-Introduction/README.md)中所述)。
## 建立模型
@ -105,4 +105,4 @@
## 任务
[采访一名数据科学家](../assignment.md)
[采访一名数据科学家](assignment.zh-cn.md)

Просмотреть файл

@ -0,0 +1,11 @@
# 采访一位数据科学家
## 说明
在你的公司、你所在的社群、或者在你的朋友和同学中找到一位从事数据科学专业工作的人与他或她交流一下。写一篇关于他们工作日常的小短文500字左右。他们是专家还是说他们是“全栈”开发者
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- |
| | 提交一篇清晰描述了职业属性且字数符合规范的word文档 | 提交的文档职业属性描述得不清晰或者字数不合规范 | 啥都没有交 |

Просмотреть файл

@ -120,7 +120,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins)
```
![分类散点图可视化数据](images/swarm.png)
![分类散点图可视化数据](../images/swarm.png)
### 小提琴图
@ -133,7 +133,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
kind="violin", data=new_pumpkins)
```
![小提琴图](images/violin.png)
![小提琴图](../images/violin.png)
✅ 尝试使用其他变量创建此图和其他Seaborn图。

Просмотреть файл

@ -0,0 +1,53 @@
# 强化学习介绍
强化学习Reinforcement learningRL被视为基础机器学习除监督学习以及无监督学习之外的范式之一。强化学习是完全关于决策的它可以提供正确的决策或者至少能从他们中学习。
想象你现在有一个例如股票市场的模拟环境。如果你施加了一条给定的规章制度的话,将会发生什么呢?这条规章制度会带来积极还是消极的影响呢?如果产生了负面影响的话,那么你就需要接受这种 _负强化_ ,从中学习并改变方针。如果产生了正面的成果,那么你就需要基于这种 _正强化_ 越做越好。
![彼得与狼](../images/peter.png)
> 彼得和他的朋友们需要逃离饥饿的狼!(图片来自:[Jen Looper](https://twitter.com/jenlooper)
## 区域主题:彼得与狼(俄罗斯)
[彼得与狼](https://zh.wikipedia.org/wiki/%E5%BD%BC%E5%BE%97%E5%92%8C%E7%8B%BC) 是前苏联作曲家[普罗科菲耶夫](https://zh.wikipedia.org/wiki/%E8%B0%A2%E5%B0%94%E7%9B%96%C2%B7%E6%99%AE%E7%BD%97%E7%A7%91%E8%8F%B2%E8%80%B6%E5%A4%AB)写的一部交响童话。它讲述的是少先队员彼得勇敢地离家到森林空地去追捕狼的故事。在本节中,我们将训练可以帮助彼得的机器学习算法:
- **探索** 周边区域并构建一张最佳的导航地图
- **学习** 如何使用滑板并在上面保持平衡,以便更加快速地移动。
[![彼得与狼](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM)
> 🎥 点击上图聆听普罗科菲耶夫的《彼得与狼》
## 强化学习
在之前的章节中,你已经看到了两个机器学习问题的例子:
- **有监督的**——我们有数据集可以为我们想要解决的问题提出示例解决方案。[分类模型](../../4-Classification/README.md)与[回归模型](../../2-Regression/translations/README.zh-cn.md)都是有监督的任务。
- **无监督的**——我们的训练数据没有标签。无监督学习的一个主要例子就是[聚类分析](../../5-Clustering/README.md)。
在本节中,我们会向你介绍一种新的学习问题。这种问题不需要有标签的训练数据,它们有以下几类问题:
- **[半监督学习](https://wikipedia.org/wiki/Semi-supervised_learning)**——我们有很多没有标签的数据可以用于预先训练模型。
- **[强化学习](https://wikipedia.org/wiki/Reinforcement_learning)**——一个智能体agent在某些模拟环境中进行实验并以此学习如何表现。
### 例子 - 电脑游戏
假设你想要教会电脑如何玩一个例如国际象棋或者[超级马里奥](https://wikipedia.org/wiki/Super_Mario)的游戏。对于电脑来说,我们需要让它预测在每个游戏状态下它的动作才能使它成功地玩游戏。虽然这看上去像是个分类问题,但是事实并非如此——因为我们没有包含(游戏)状态和相应动作的数据集。虽然我们可能有一些现有的国际象棋比赛数据或者玩家玩超级马里奥的记录,但是那些数据很可能无法包含足够多的潜在(游戏)状态。
**强化学习** (RL) 不是寻找现有的游戏数据,而是基于一种*想让电脑玩* 多次并观察结果的想法。因此,我们需要做以下两件事来应用强化学习:
- **环境****模拟器** ——可以让我们多次玩游戏。这个模拟器将定义所有游戏的规则、可能的状态以及动作。
- **奖励函数** ——会告诉我们在每个动作或游戏中的表现如何。
其他机器学习和强化学习RL的主要差别就是在RL中我们通常无法在完成游戏之前知道我们是赢还是输。因此我们无法评价游戏中的某一个特定动作是好是坏——我们只会在游戏结束时才得到奖励。我们的目标是设计一种可以在不确定条件下帮我们训练模型的算法。接下来我们将要学习一种叫**Q-learning**的RL算法。
## 课程
1. [强化学习与Q-Learning介绍](../1-QLearning/README.md)
2. [使用Gym模拟环境](../2-Gym/README.md)
## Credits
"强化学习介绍"由[Dmitry Soshnikov](http://soshnikov.com)撰写 ♥️