#### TALB520D ## Méthodes en apprentissage automatique ### Séance 2 #### 2 février 2023 ---- Plan de la séance - Corrections - Un peu de théorie - Quelques mots sur la loss - Goldberg (ch2) - Beaucoup de pratique - passage à 6 langues - passage à tous (?) les n-grammes - TextVectorizer - Comparer à une approche par token (avec ou sans normalisation) --- ## Corrections - rendre à l'heure ! - et sur moodle - sklearn autorisé --- ## Au delà du perceptron (Comment construire ces modèles ?) ### Modèle 1 ![](https://i.imgur.com/xQ09RXb.png) ---- ### Modèle 2 plus large ![](https://i.imgur.com/gCx20qa.png) ---- ### Modèle 3 plus «profond»: le Perceptron multicouche ![](https://i.imgur.com/7jcTpit.png) Comment entraîner ça ? --- ## Choix d'une fonction de loss #### Est-ce nécessaire pour classifier en plus de deux langues ? --- ### Understanding how deep learning works, in three figures (cf. Chollet 1.1.5) ![](https://i.imgur.com/mOAIMk5.png) --- ![](https://i.imgur.com/EhoBM0f.png) ex: MSE, ( puis binary cross-entropy, categorical cross-entropy) --- ![](https://i.imgur.com/hQD7Xjz.png) --- ### Quelques exemples **MSE** $$ MSE = \frac{1}{n} \sum_{i=1}^{n}(Y_i - \hat{Y}_i)^2 $$ «erreur quadratique moyenne» (Mean Squared Error), ici une formule globale qui retourne un score sur tout le jeu de données. --- ### Quelques exemples On a utilisé sans commenter la *binary crossentropy* (ou *logistic loss*). L'idée est de voir la sortie $\hat{Y}$ du classifieur comme une probabilité $$ \hat{Y} \approx P(Y = 1 | x) $$ --- Dans l'exemple du TP, on considère juste la probabilité qu'un document soit en anglais $P(Y=eng)$. et on peut retrouver l'allemand simplement $$P(Y=deu) = 1 - P(Y= eng) $$ --- ### Logistic loss (binary cross entropy) la *logistic loss* est définie pour maximiser $P(Y=1|x)$ sur l'ensemble du jeu de données $$ L_{BCE}(\hat{Y},Y) = -Y log(\hat{Y}) - (1 - Y) log(1 - \hat{Y})$$ - Pour utiliser cette fonction, il faut donc que la sortie du réseau finisse par une activation par la fonction **sigmoïde**. - il faut aussi que les labels soient 0 ou 1 --- ### Hinge binary loss on peut la comparer à la *logistic loss* (les deux permettent une classification binaire) $$L_{hinge}(Y,\hat{Y}) = max(0, 1 - Y \times \hat{Y}) $$ - vaut 0 si $y$ et $\hat{y}$ ont le même signe - $\rightarrow$ suppose que $y \in \{+1,-1\}$ --- #### Categorical cross entropy - classification non binaire - il faut que $y$ soit un vecteur qui représente une distribution de probabilités sur les labels possibles $$ L_{CCE}(Y,\hat{Y}) = -\sum_{i} Y_{[i]}log(\hat{Y}_{[i]}) $$ - on utilise pour cela une activation **softmax** ---- ### Points importants Il faut toujours s'assurer que - la représentation du résultat attendu, - et le format de sortie du réseau sont compatibles avec la fonction de loss choisie --- #### Pour plus de détails - Vidéo en lien sur le Moodle illustrant la BCE, - Goldberg, Chapitre 2 (sur Moodle) décrit quelques fonctions de loss, - [Documentation des loss en Keras](https://keras.io/api/losses/) --- ## Exercice (I) - changer le code de la semaine dernière pour: - utiliser une loss de type **Hinge** - utiliser une loss de type **categorical cross entropy** - utiliser une loss de type **Sparse Categorical Cross Entropy** (voir la doc de Keras) --- ## Exercice (II) - passage à 6 langues - changer l'input pour extraire tous les n-grammes possibles du corpus - évaluation plus propre avec distinction train/dev/test ! - faire sans, puis avec [TextVectorization](https://keras.io/api/layers/preprocessing_layers/core_preprocessing_layers/text_vectorization/)
{"metaMigratedAt":"2023-06-17T19:47:14.277Z","metaMigratedFrom":"YAML","title":"Talk slides template","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"67044989-3f98-4f73-b3b7-e5286adbb616\",\"add\":4068,\"del\":282}]"}
    337 views