24
Introduction aux réseaux de neurones pour le traitement automatique des langues Matthieu Labeau LIMSI-CNRS 10 Février, 2015

Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

  • Upload
    others

  • View
    1

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Introduction aux réseaux de neurones pour letraitement automatique des langues

Matthieu Labeau

LIMSI-CNRS

10 Février, 2015

Page 2: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Plan

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Page 3: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Perceptron

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Page 4: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Perceptron

Le perceptron

I Élément ’de base’ d’un réseau de neurones.I Est capable de séparer des données linéairement.I On utilise un vecteur de poids w et un biais b pour décider

de la catégorie des données x :

f (x) = sign(〈w , x〉+ b) = sign(b +n∑

i=1

wixi)

Page 5: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Perceptron

Interprétation

I En dimension 2, c’est équivalent à décider de quel cotéd’une ligne x se situe : (〈w , x〉+ b) = 0 est l’équationd’une ligne perpendiculaire au vecteur w avec le biais bpermettant de s’écarter de l’origine.

I Les paramètres seront ces poids w et biais b : oncherchera à les apprendre en utilisant les données x . Celareviendra à trouver une ligne qui sépare les points quicorrespondent à deux catégories différentes.

Page 6: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Perceptron

Exemples : Portes logique

I On peut modéliser les portes logiques avec un perceptron.I Essayez avec AND, OR, et XOR.

Page 7: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Réseau de Neurones

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Page 8: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Réseau de Neurones

Comment étendre le perceptron ?

I Le perceptron est un modèle relativement faible : il ne peutclasser des données que lorsqu’elle sont séparableslinéairement.

I La plupart des problèmes que l’on voudra traiter sonnon-linéaire, et obtenir la meilleure approximation possibleavec le perceptron est très difficile.

I Il y a 2 généralisations que l’on peut faire :I Faire une transformation non-linéaire des données.I Utiliser plusieurs modèles de perceptron conjointement.

Page 9: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Réseau de Neurones

Réseau de Neurones

On appelle les neurones intermédiaires (entre entrées etsorties) les couches cachées.

Page 10: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Page 11: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Le principe

I Les paramètres sont l’ensemble des poids et des biais dechaque ’neurone’. Pour simplifier, choisissons un seulparamètre θ.

I On a une fonction objectif, dépendant des données x et deθ, que l’on cherche à minimiser par rapport à θ :

θ∗ = minθf (x , θ)

Page 12: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Descente de gradient

I Pour trouver les paramètres optimaux θ∗, on utilise uneméthode d’optimisation.

I Puisque le modèle est compliqué et le nombre deparamètres potentiellement très grand, on utilise uneméthode de premier ordre : la descente de gradient.

I On retranche à chaque paramètre une quantitéproportionnelle à la négative du gradient pris au pointactuel de la fonction objectif. Ainsi, on approchera d’unminimum local.

θn+1 = θn − α∂f (x , θn)

∂θn

Page 13: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Le learning rate

I Il faut déterminer à quel point l’on veut progresser dans ladirection obtenue : c’est le learning rate α qui nouspermettra de le décider.

I Un learning rate fixe et suffisament petit peut normalementnous assurer un minimum local satisfaisant pour peu quele réseau soit convenablement initialisé.

I Mais il peut y avoir de nombreuses complications et ilexiste des méthodes et algorithmes pour adapter ceparamètre au fur et à mesure de l’algorithme, commeAdagrad ou Adadelta.

Page 14: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Procédure et Propagation de l’erreur

I Toute la difficulté est de calculer le gradient pour tous lesparamètres : la fonction objectif est une fonctioncompliquée puisqu’elle va imbriquer plusieurs couches deneurones.

I L’algorithme de backpropagation utilise le gradient calculépour les paramètre de sortie et calcule les gradients desparamètres des couches précédentes en utilisant la règlede la chaine et en re-propageant en arrière les gradientqu’il connait.

I Heuresement, on ne va pas l’implémenter...

Page 15: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Fonction d’activation

I Puisque l’on veut utiliser une descente de gradient, il nousfaut des neurones qui soient différentiables, ce qui n’estpas le cas d’une fonction ’sign’.

I On utilisera alors une fonction strictement croissante, quitend vers 0 pour −∞ et 1 pour +∞ et qui est différentiablepartout, avec une dérivée calculable.

I Les plus utilisées sont la fonction sigmoïde et la tangentehyperbolique, qui sont des fonctions logistiques et ont cetteforme :

Page 16: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Backpropagation

Approximateur universel

I Il a été prouvé qu’un réseau de neurone avec une couchecachée contenant un nombre fini de neurones peutapproximer n’importe quelle fonction réelle continue endimension finie.

I Ce théorème a été prouvé pour la première fois avec desfonctions d’activation sigmoïde.

I Cependant, il ne dit rien sur la possibilité d’apprendre cesfonctions ...

Page 17: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Page 18: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Nos données ?

I En entrée : des mots. Pour les représenter, on vacommencer par une représentation one-hot (0 et 1)

I On choisit le corpus Brown, facilement accessible grâce àla librairie NLTK

I Pour commencer, on travaillera avec des bigram : lecontexte est de taille 1, il y a donc un mot en entrée et unmot à prédire.

Page 19: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Pré-traitement

I On va créer un vocabulaire, ou chaque mot aura un indice.I On va parcourir les phrases du corpus, récupérant tous les

bigrams.I On va transformer le contexte ( = premier mot ) en vecteur

: Ainsi, le vecteur qui n’aura que des zéros sauf en ime

position représentera le mot qui a l’indice i . On garderal’indice du deuxième mot pour savoir quel est le mot àprédire.

Page 20: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Nos outputs ?

I On cherche à obtenir des probabilités sur l’ensemble desmots. Ainsi, notre sortie sera un vecteur de la taille duvocabulaire, qui nous donnera les probabilités que chaquemot soit le mot suivant.

I On utilisera la fonction exponentielle pour n’obtenir quedes valeurs positives (scores) en sortie, puis on lesnormalisera pour obtenir des probabilités (valeurscomprises entre 0 et 1, et somme égale à 1).

I Cette fonction s’appelle softmax.

Page 21: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Le token <UNK>

I À cause de la répartition des fréquences des mots (Loi deZipf) on aura beaucoup de mots très rares quin’apparaîtront qu’une fois ou deux et que l’on a très peu dechance de prédire. Les garder dans le vocabulaire ne feraitqu’augmenter le temps de calcul et embrouiller le modèle.

I Pour régler ce problème, on mappe ces mots rares vers lemême token <UNK>, pour inconnu.

I Dans les cas réels, on utilise d’autres modèles plussimples conjointement pour s’occuper de ces mots rares.

Page 22: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Overfitting ?

I Le surapprentissage survient quand le modèle a assez decapacité pour apprendre ’par coeur’ les données plutôt qued’apprendre à les généraliser.

I C’est un danger permanent avec les réseaux de neurones; pour l’éviter, on utilisera d’abord la validation croisée : onutilise une partie des données pour valider les résultats,sans que le modèle ne les ai vu. Au bout d’un moment, lemodèle obtiendra de mauvais résultats sur ces données : ilsera en surapprentissage.

Page 23: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Régularisation

I Une autre façon d’empêcher le surapprentissage est derégulariser le modèle.

I Il s’agit d’appliquer une pénalité sur les paramètres dumodèle pour le ’forcer’ à rester simple. Pour nous, celareviendra à minimiser la norme des paramètres (onajoutera alors cette norme à la fonction objectif).

Page 24: Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7. 21. · I Il a été prouvé qu’un réseau de neurone avec une couche cachée contenant

Notre problème en pratique

Pour la prochaine fois...

I Repartir de la correction, et ajouter à l’aide descommentaires, la vérification des résultats avec un corpusde test.

I Faire varier les paramètres pour essayer d’obtenir demeilleurs résultats, et les analyser.

I Essayer de transformer les fonctions de preprocessing etla structure du réseau pour travailler avec des trigrams (ou,encore mieux, généraliser aux n-grams !)

I Si il y a des problèmes/questions, et pour la rédaction d’uncourt rapport sur votre travail : [email protected]