---
title: 2 - Apprendre à lire MNIST
tags: ia, data
robots: noindex, nofollow
author: Julien Noyer
---
# Apprendre à lire : utilisation de la base de données MNIST

Un cas d'usage très courant dans l'étude de l'apprentissage automatique est l'utilisation d'un jeu de données normalisé [**MNIST**](https://fr.wikipedia.org/wiki/Base_de_données_MNIST) que permet d'entrainer une machine à reconnaitre des chiffres manuscrits. Le jeu de données est constitué de 70 000 fichiers image en noir et blanc de 28 x 28 pixels représentant des chiffre écrit à la main.
<br>
**Base de données [MNIST](https://fr.wikipedia.org/wiki/Base_de_données_MNIST)**
- 10 chiffres arabes
- 70 000 fichiers
- 28 x 28 pixels
- Noir et Blanc
- Ecritures maniscrites
---
<br><br><br>
# Analyser des fichiers images

La méthode de **classification** consiste à récupérer la valeur de chaque point de l'image en considérant que le blanc vaut 0 et le noir vaut 255. Le résultat de l'analyse est un vecteur de 784 nombres compris entre 0 et 255 pour toutes les déclinaisons du blanc au noir. Nous pouvons grâce à ce vecteur calculer la valeur de noir pour chaque image :
```bash
blackValue = (px1 + px2 + px3 + ... + px782 + px783 + px784)
```
Avec une seule image le calcul est très simple, mais quand est-il avec plusieurs images ?
<br><br>
## Classifier les données de départ

L'image ci-dessus nous apprend plusieurs éléments reconnaissables mais l'oeil humain est bien plus puissant qu'une machine, la démarche n'est alors pas de faire en sorte que la machine imite l'homme, mais plutôt de définir comment la machine doit fonctionner.
Il faut commencer en organisant les données à envoyer comme référence à la machine pour qu'elle puisse avoir un point de départ dans son apprentissage.

<br><br>
## Tester la regression
Une fois que la machine à analyser les images nous pouvons lui soumettre de nouvelles images qu'elle va comparer avec ses milliers de références pour tester sa classification.

Avec la quantité d'image que la machine a analysé elle a été capable de définir précisément la valeur de point noir de chaque image. Une fois ces données récupérées la machine est en mesure de créer des tableaux de points dont la [distance](https://fr.wikipedia.org/wiki/Distance_(mathématiques)) est calculable. En mathématiques, [une distance](https://fr.wikipedia.org/wiki/Distance_(mathématiques)) formalise la longueur qui sépare deux ou plusieurs points.
<br><br>
## Calculer la distance entre des points
La distance dites "[_euclidienne_](https://fr.wikipedia.org/wiki/Distance_(mathématiques))" de l'intervalle entre deux points sur une dimension est facilement calculable :

```bash
D(A, B) = b1 - a1
```
Pour le passage en deux dimensions ça ce complique un avec la formule :

```bash
D(A, B) = V (b1 - a1)^2 + (b2 - a2)^2
```
Et pour trois dimensions la formule devient plus complèxe mais permet de comprendre la logique du calcule de la distance [_euclidienne_](https://fr.wikipedia.org/wiki/Distance_(mathématiques)) :

```bash
D(A, B) = V: (b1 - a1)^2 + (b2 - a2)^2 + (b3 - a3)^2
```
> V: = Vecteur de
---
<br><br><br>
# Regroupement des données
C'est à cet endroit qu'une machine peut sembler intelligente dans sa capacité à résoudre des opérations incalculables par un cerveau humain, mais c'est grâce au travail fait au préalable que la machine y parvient et une fois qu'elle à a disposition cette masse d'informations, elle est capable de retrouver le bon chiffre depuis un nouvel exemple.

<br><br>
## Comparaison à grande échelle
Les écarts sont minces entre les mauvais résultats et plus grand avec le bon, le calcule des distances fonctionne donc avec un taux d'erreur assez mince :

- __60 000 exemples__ de référence
- __10 000 exemples__ de test
- Taux d'erreur __3.8%__
---
<br><br><br>
# Ressources

Index des liens vers les sujets traités dans ce document :
- **MNIST** https://fr.wikipedia.org/wiki/Base_de_données_MNIST
- **Distance euclidienne** https://fr.wikipedia.org/wiki/Distance_(mathématiques)