Introduction aux réseaux de neurones pour le traitement automatique des langues · 2017. 7....

Preview:

Citation preview

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

Matthieu Labeau

LIMSI-CNRS

10 Février, 2015

Plan

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

Perceptron

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

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)

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.

Perceptron

Exemples : Portes logique

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

Réseau de Neurones

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

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.

Réseau de Neurones

Réseau de Neurones

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

Backpropagation

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

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 , θ)

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

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.

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...

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 :

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 ...

Notre problème en pratique

Perceptron

Réseau de Neurones

Backpropagation

Notre problème en pratique

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.

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.

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.

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.

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.

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).

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 : labeau@limsi.fr