Fonction logistique
Calculons l’influence du poids sur l'erreur quadratique
La derivee partielle de par rapport a est
On note t (truth) la vraie valeur avec l'erreur quadratique
Qu'est-ce qu'on modifie pour arriver au bon resultat ?
Les poids, on a 18 poids donc est a dimension 18.
On fait une propagation a l'envers, "retropropagation" pour remonter l'erreur
Le but est de trouver le vecteur qui minimise notre erreur
Avec un choisi, l'algorithme de descente du gradient est:
jusuq'a atteindre un seuil choisi
Cas simple: l'erreur est une fonction convexe.
Si on modifie les cas apres chaque donnees, on risque d'osciller
travailler par paquet de données. Notion de batch
Lorsque l’elliptiques est allongée, son gradient est quasiment orthogonal à son axe long ce qui n’est pas du tout la bonne direction vers le minimum.
la convergence sera longue
Soit comme jeux de donnees:
La fonction d’erreur correspondante a la forme suivante:
normaliser les données pour éviter des fonctions d’erreur écrasées
Soit comme jeux de donnees:
L’erreur correspondante aux jeux de données a la forme suivante:
centrer les données pour éviter des fonctions d’erreur écrasées.
Une fonction d'erreur n'est pas forcement elliptique, il faut s'attendre a avoir des minimums locaux.
Le point de convergence dépend du point de départ d’où le risque de finir
dans un minimum local.
Si on lance une bille, en fonction de la ou elle se trouve elle fini dans un minimum local
Comment sortir d’un minimum local pour rejoindre un minimum global ?
Pour contrer ces differents problemes, on a differents solveurs
On donne une inertie a la methode:
On ne calcule pas le gradient au poids des poids, mais aux poids modifies.
Nesterov propose de travailler sur les données mise à jour:
Ca peut aider a "sortir" des trous et reduire les oscillations
Si notre bille s'approche d'un trou, on lui dira "Non va pas par la, fait demi-tour"
Le coef d'apprentissage influence beaucoup la convergence.
On peux choisir autant de que de parametres existants:
Avec:
Ca marche mal avec les "mini-batches"
On prefere moyenner les gradients dans le temps, l'algorithme est:
On cherche le w aui minimise , donc
Au pas de temps , on est au point , on cherche tel que donc avec un developpement limite:
Avec la matrice hessienne de .
L'algorithme iteratif est:
Calculer l'inverse de la matrice essienne est trop couteux, on va chercher quelque chose qui lui ressemble, pour Adagrad:
Regardons à quelle vitesse convergent différentes méthodes suivant la forme
de la fonction d’erreur.
An overview of gradient descent optimization algorithms
Quelques exemples de reseaux neuronaux:
Une idée pour séparer les données sur deux cercles?
Relu defini un demi-plan, on va utiliser 6 Relu pour faire un cercle grossier et une sigmoide pour separer les 2 cercles
On veut calculer , on fait comme un addition a la main
On a besoin d'avoir des retenues (si on a par exemple), c'est un reseau a memoire.
Les cellules grises sont la memoire, cad les retenues, des operations precedentes.
Ces reseau sont compliques a faire converger, il faut que la memoire fonctionne correctement.
Les Convolution Neural network sont la grande reussite du deep learning.
Le but est de travailler sur des images pour en extraire ses caracteristiques
En entrée nous avons une image (en RGB) dont nous diminuonsla surface à chaque couche du réseau pour augmenter sa profondeur.
À la fin on peut voir l’image comme un vecteur de caractéristiques.
Ensuite (pas sur le dessin) on peut utiliser un réseau neuronal classique pour classer l’image.
Un filtre est un masque d'une certaine taille dont on a donné une valeur pour chacune des couches
On fait la somme de tous les poids toutes les valeurs et on travaille un pixel sur 2.
La taille des filtres est le nombre de canaux de l'image de depart.
Chacun des 5 filtres aura combien de canal ?
2 car l'image d'arrivee a 2 canaux
L'exemple précédent saute un pas (travailler un pixel sur 2), qui réduit la surface. Si on a pas de saut de plus de filtre le nombre de données EXPLOSE.
pooling: On réduit la surface de l'image au fur et a mesure qu'on augmente sa profondeur.
Le choix du maximum est le plus utilisé. On pourrait faire une moyenne mais cela risque de réduire le contraste de l’image.
Le premier CNN, qui a bien fonctionné, pour lire les codes postaux sur les enveloppes, développé en 90 par Yann Le Cun
Les reseaux augmentent en précision, taille et nombre d'opérations.
De plus en plus compliqué:
On rajoute des trucs pour améliorer les résultats (ou converger).
L'idée est de reprendre des données antérieures pour ne pas trop oublier. Le saut correspond à l’opération:
Le Kaggle d'Olivier Ricou