mirror of
https://github.com/augustin64/projet-tipe
synced 2025-01-23 15:16:26 +01:00
Ajout notes Julien
This commit is contained in:
parent
a742cd7707
commit
2a0fb52ae4
@ -10,6 +10,21 @@ Augustin Lucas
|
||||
|
||||
![](https://augustin64.fr/tipe/geoguessr.png)
|
||||
|
||||
Note:
|
||||
Est-ce que vous connaissez Geoguessr ?
|
||||
C’est un jeu de géographie dans lequel le joueur est placé à un endroit aléatoire sur google maps dont l'objectif est de retrouver sa position sur une carte en se déplaçant autour de la position de départ.
|
||||
Certains modes empêchent le déplacement et laissent donc le joueur avec une seule image pour retrouver sa position dans la monde le plus précisément possible sur toute la surface du globe.
|
||||
|
||||
Ce problème semble impossible à résoudre et pourtant certains humains sont capables de repérer leur position à seulement quelques kilomètres près.
|
||||
Certaines personnes réussissent cependant à retrouver leur position à quelques kilomètres près, par exemple sur cette image, ce qui est assez impressionnant.
|
||||
|
||||
La problématique qui s'est donc posée à nous est de savoir s'il était possible pour un ordinateur d'obtenir de tels résultats, c'est donc le sujet que nous avons choisi d'étudier pour notre TIPE.
|
||||
Nous considérons ce problème comme un problème de classification en découpant la carte du monde en milliers de cellules géographiques [IMAGE].
|
||||
L’objectif de notre programme est donc de trouver dans quelle cellule se trouve l’image qui lui est donnée.
|
||||
Regarder le problème comme une classification permet au programme d’exprimer son incertitude.
|
||||
En reconnaissant par exemple la tour Eiffel sur une photo, le programme peut montrer qu'il catégorise cela aussi bien comme la ville de Paris qu’à la ville de Las Vegas où se trouve une réplique.
|
||||
Alors qu’une autre approche forcerait le programme à ne mentionner qu’une seule de ces deux villes.
|
||||
|
||||
----
|
||||
|
||||
![](https://augustin64.fr/tipe/planet.png)
|
||||
@ -24,6 +39,31 @@ Augustin Lucas
|
||||
|
||||
![](https://augustin64.fr/tipe/nn.png)
|
||||
|
||||
Note:
|
||||
Le programme que nous avons choisi d'utiliser doit donc prendre en argument les différents pixels de l'image que l'on souhaite qu'il analyse et renvoyer une probabilité pour chaque parcelle de la Terre.
|
||||
Pour réaliser cela nous avons choisi de réaliser un réseau de neurones convolutif dans le language C.
|
||||
|
||||
Tout d'abord, qu'est ce qu'un réseau de neurones ? Un réseau de neurones est un modèle informatique dont la conception est inspirée du fonctionnement des neurones biologiques.
|
||||
Pour parler de structure informatique de manière plus claire, il est représenté par différentes couches, chacune contenant un certain nombre de neurones:
|
||||
- La couche d'entrée, sur laquelle chaque neurone correspond à un pixel de l'image
|
||||
- Les couches intermédiaires dont les nombre peut varier entre 0 et 30 selon les besoins particuliers au set de données.
|
||||
- La couche de sortie, sur laquelle chaque neurone correspond à une réponse potentielle de l'algorithme.
|
||||
|
||||
Dans le modèle que nous avons utilisé, chaque neurone est relié à tous les neurones de la couche suivante avec une arête.
|
||||
Chaque neurone et chaque arête porte une information qu'on appellera donc poids pour une arête et biais pour un neurone.
|
||||
|
||||
Lorsque l'algorithme tente de donner une prédiction pour une image, cela se fait en plusieurs étapes, qui s'appellent la forward propagation:
|
||||
- tout d'abord, il active chaque neurone de la première couche selon la luminosité du pixel qui lui est associé (dans le cas d'une image en noir et blanc)
|
||||
- Ensuite, il propage cette activation de proche en proche, couche par couche de la manière suivante:
|
||||
L'activation d'un neurone sur la couche (i+1) est égale à la somme du produit de l'activation de chacun des neurones fois le poids de l'arête qui relie ce neurone à celui que l'on souhaite calculer, auquel on retranche le biais du neurone de la couche (i+1), soit plus formellement:
|
||||
$x_{j+1, i} = \sum\limits^{n}_{k=1} x_{j, k}*w_{j, k, i} - b_{j+1, i}$
|
||||
|
||||
Pour rentrer plus en détail dans les calculs, on applique en fait la fonction sigmoid sur cette somme afin d'obtenir un résultat compris entre 0 et 1 car c'est l'intervalle dans lequel chaque valeur d'activation doit être compris.
|
||||
|
||||
Par rapport à la quantité d'information dans un réseau de neurones, si on prend comme exemple ce réseau, fait pour reconnaître des chiffres entre 0 et 9 dans des images de 28x28 pixels, on a 784 neurones sur la première couche, puis 30 puis 10.
|
||||
On obtient donc un total de 25 408 poids et biais.
|
||||
L'objectif du réseau sera de trouver les valeurs de biais et poids telles que le réseau donne de bon résultats. Il va pour cela parcourir une très grande base de données et y appliquer un algorithme de backpropagation dont je vous parlerais plus en détail tout à l'heure.
|
||||
|
||||
---
|
||||
|
||||
### Algorithme en Pseudo-code
|
||||
@ -101,6 +141,21 @@ On pourra ensuite lire ce fichier à nouveau pour tester la cohérence des résu
|
||||
|
||||
![](https://augustin64.fr/tipe/gradient-descent.png)
|
||||
|
||||
Note:
|
||||
On va maintenant rentrer dans la partie la plus intéressante du réseau de neurones, à savoir: comment apprend-il ?
|
||||
En effet, si nous avons vu précédemment comment le réseau faisait pour donner des prédictions sur une image une fois entraîné,
|
||||
il faut maintenant savoir comment il fait pour apprendre de ses erreurs.
|
||||
La backpropagation, donc le fait que le réseau apprenne par lui-même, se fait après une forward propagation puisqu’elle a pour but de modifier le fonctionnement du réseau à partir du résultat de ces prédictions et des résultats voulus.
|
||||
Son objectif est donc de minimiser la fonction qui à une image associe l'écart entre le résultat du réseau de neurones et celui attendu.
|
||||
|
||||
Reprenons l’exemple de la reconnaissance de chiffres avec cette image.
|
||||
Et supposons qu’après avoir effectué une forward propagation, la dernière couche soit comme ceci.
|
||||
Pour minimiser l'écart, on doit donc essayer de diminuer les valeurs de ces neurones et d'augmenter la valeur de celui-ci.
|
||||
L'objectif étant à terme de minimiser l'écart pour toutes les images dans le set de données d'entraînement.
|
||||
|
||||
En se restreignant à trois dimensions pour une représentation graphique, l'algorithme ici arrivera en ce point, qui est donc un minimum local.
|
||||
Pour cela, il fera simplement évoluer les poids dans la direction opposée au gradient de cette fonction.
|
||||
|
||||
---
|
||||
|
||||
### État actuel - Objectifs d'évolution
|
||||
|
Loading…
Reference in New Issue
Block a user