From chômeur to Deep Learning Engineer

Share this post

Ce que j'ai pigé du Deep Learning

proutia.substack.com

Ce que j'ai pigé du Deep Learning

Aristide
Nov 30, 2022
Share this post

Ce que j'ai pigé du Deep Learning

proutia.substack.com

En fait, le Deep Learning c’est juste une manière particulière de faire du machine learning. Là où le machine learning c’est -à ma connaissance- juste un algo qui apprend à réaliser une tâche en se basant sur des exemples. Plus ou moins (?).

Comment ça fonctionne ce schmilblick ? Voici ce que j’ai noté :

Découvrir un lien dans les données pour généraliser

Un peu d’équations linéaires

Comment trouver la meilleure droite ?

Et le Deep Learning dans tout ça ?

Le fonctionnement du neurone artificiel

Tout ça c’est bien mais c’est linéaire

Combien de neurones ?

Comment entraîner ce réseau ?

En résumé


Découvrir un lien dans les données pour généraliser

Quand on a des données, on peut les représenter graphiquement. Jusque là rien de spécial. Sur ce graphique on peut même tracer une droite reliant les points et que se passe-t-il ? On peut deviner des valeurs pour un élément qui ne serait pas dans notre jeu de données !

Relier les points à la main c’est bien cette droite est une fonction mathématique donc en jouant avec les paramètres de la droite, on peut la tracer comme des professionnels. Ce sera le rôle des algorithmes que de jouer avec ces paramètres pour trouver la meilleure droite possible. Cette droite est un model donc l’intérêt est de trouver le meilleur model possible pour avoir les meilleures prédictions.

Source : Le deep learning de scienceEtonnante (Youtube)

Voilà grosso merdo comment fonctionne le Machine Learning.

Un peu d’équations linéaires

Un algo peut aussi chercher à tracer cette droite parce qu'elle est ni plus ni moins définie par deux choses :

  • une pente

  • une ordonnée à l’origine

En fait, il s’agit de (la fameuse) équation :

y = ax+b 

où a représente la pente et b le point d’interception.

x et y dans cette équation représente les coordonnées (x, y) du point qu’on cherche sur cette droite.

Pour calculer la pente, j’ai besoin des coordonnées de deux points de la droite :

a = (y2 - y1) / (x2 - x1)

La pente a sera positif si la courbe croît et négatif si elle décroît.

Comment trouver la meilleure droite ?

On testera différentes valeurs de a et b de sorte à obtenir les valeurs qui minimisent la distance entre le model et les points.

Source : Formation Deep Learning de Machine Learnia (Youtube)

Dans le ML, il existe plusieurs modèles (chacun a son algo d’optimisation pour trouver la valeur optimale) :

  • Linear regression (Gradient descent)

  • K-Nearest-Neighbours

  • Support Vector Machines (Maximal-Margin Classifier)

  • Tree Learning (CART)

Et le Deep Learnin dans tout ça ?

Plutôt qu’utiliser un de ces modèles, en DL on utilisera les fameux réseaux de neurones.

La différence est qu’on ne recherche pas une fonction :

f(x) = ax + b

Mais un réseau de fonctions connectées les unes aux autres. Il s’agit des fameux schémas qu’on voit souvent :

Réseau de neurones artificiels : réseaux neuronaux pour l'IA
Source : Réseau de neurones artificiels : réseaux neuronaux pour l'IA de journaldunet.fr

Le nombre de couche varie. Plus il y en a, plus les résultats devraient être meilleurs (?) En tout cas, ça explique le nom Deep Learning.

Le fonctionnement du neurone artificiel

Dans ce réseau, un neurone (artificiel) prend plusieurs valeurs en entrée, fait la somme en appliquant un poids (w) à chacune de ces entrées et retourne le résultat.

Soit :

f = w1x1 + w2x2 + w3x3

Ensuite vient la phase d’activation : si la somme obtenue est supérieure à un certain seuil (en général 0), le neurone s’active (retourne 1 sinon 0).

Un neurone artificiel c’est donc une fonction mathématique qui prend des entrées et qui sort une sortie. Cette fonction peut être ajustée via les poids et le seuil.

Tout ça c’est bien mais c’est linéaire

Tout ce qui est au dessus nous donne y = 1 et en dessous y = 0 comme je viens de dire.

Mais dans la vraie vie, c’est pas aussi simple.

Un modèle non linéaire est plus intéressant :

C’est ce qu’on obtient quand on commence à empiler les neurones et les couches.

Combien de neurones ?

Si j’ai bien compris on ne peut pas avoir trop de couches intermédiaires de neurones parce que trop de possibilités d’ajuster les poids et on se perd.

Comment entraîner ce réseau ?

Autrement dit, comment trouver la meilleure position pour tous ces poids ? Pour ça il faut s’intéresser au Back-propagation. C’est-à-dire qu’on calcule les gradients qui indiquent pour chaque couche comment la sortie y varie en fonction de la dernière couche. Puis comment la dernière couche varie en fonction de l’avant-dernière, etc. Jusqu’à arriver à la première couche.

Avec les gradients pour chaque jour, on peut ajuster les paramètres de chaque couche de sorte à minimiser les erreurs.

Pour ça il faut utiliser la formule Gradient descent. On verra ça plus tard.

En résumé

On a 4 étapes dans tout ce bousin :

  1. Forward propagation. Soit, faire circuler les données de la première couche à la dernière pour produire une sortie.

  2. Cost function. Soit, calculer l’erreur entre la sortie et ce qui est était attendu.

  3. Backward Propagation. Soit, revenir en arrière pour voir comment la Cost function varie pour chaque couche.

  4. Gradient descent. Soit, corriger chaque paramètre du modèle avant de retourner à l’étape 1.

Share this post

Ce que j'ai pigé du Deep Learning

proutia.substack.com
Comments
TopNew

No posts

Ready for more?

© 2023 Aristide
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing