ajout fin traduction et intro neurones

This commit is contained in:
François Pelletier 2019-12-09 00:44:16 -05:00
parent b9961aa6db
commit 440dc7d361
4 changed files with 217 additions and 8 deletions

View file

@ -2,5 +2,5 @@ dot_compile:
dot -Tpng -o fsa_sheep.png fsa_sheep.dot
dot -Tpng -o hmm.png hmm.dot
build: examen_partiel.md examen_final.md dot_compile
pandoc examen_partiel.md -o examen_partiel.pdf
pandoc examen_final.md -o examen_final.pdf
pandoc -f markdown+latex_macros+raw_tex examen_partiel.md -o examen_partiel.pdf
pandoc -f markdown+latex_macros+raw_tex examen_final.md -o examen_final.pdf

View file

@ -398,15 +398,13 @@ Traduction statistique: difficile de trouver les ressources autrement
Mathématiquement:
$$
\hat{T} = \argmax_T fidelite(T,S) fluidite(T)
\hat{T} = argmax_T fidelite(T,S) fluidite(T)
$$
En probabilités, on obtient:
$$
\hat{T} = \argmax_T P(T|S)\\
= \argmax_T \frac{P(S|T)P(T)}{P(S)}\\
= \argmax_T P(S|T)P(T)
\hat{T} = argmax_T P(T|S) = argmax_T \frac{P(S|T)P(T)}{P(S)} = argmax_T P(S|T)P(T)
$$
où $P(S|T)$ est un modèle de traduction et $P(T)$ un modèle de langue.
@ -440,6 +438,7 @@ Permet de quantifier les meilleures traductions pour un segment de phrase ou une
- Regroupes les mots en groupes $E=\bar{e}_1, \bar{e}_2, \ldots$ (segmentation)
- Traduire chaque groupe $\bar{e}$ en $f_i$: $\phi(f_i|\bar{e}_i)$
- Déplacer les groupes
$$
P(F|E) = \prod_{i=1}^I \phi(\bar{f}_i,\bar{e}_i)d(i)\\
$$
@ -461,6 +460,215 @@ $$
$$
- Corpus d'alignements de groupes de mots: difficile à construire.
- On utilise les alignements de mots
- On utilise les **alignements de mots**: Association des mots sources aux mots cibles dans des phrases parallèles.
![](traduction-alignement-mots.png)
- Alignement un à plusieurs: Chaque mot cible a un seul mot source. Représentation sous forme de vecteur
- Mots parasites: générés par un mot nul $e_0$
- L'algorithme d'alignement donne les paramètres du modèle $P(F,E)$
## Modèle IBM 1
- Approche générative: $E \rightarrow F$
- Choix de la longueur $J$ de $F$: $F=f_1,f_2,\ldots,f_j$
- Alignement 1 à plusieurs
- Pour chaque position de Fm générer $f_j$ correspondant à $e_{aj}$
### Calcul de $P(F|E)$
- $(I+1)^J$ alignements possibles, incluant le *mot nul*
- Distribution de longueur $\epsilon=P(J|E)$
- Alignements équiprobables:
$$
P(A|E) = P(A|E,J)P(J|E) = \frac{\epsilon}{(I+1)^J}
$$
- Soit $t(f_x,e_y)$ la probabilité de traduire $e_y$ en $f_x$:
$$
P(F|E,A) = \prod_{j=1}^J t(f_i,e_{a_j})
$$
- $P(F|E)$ est la somme sur tous les alignements
$$
P(F|E) = \sum_A P(F|E,A)P(A|E) = \sum_{a \in A} \frac{\epsilon}{(I+1)^J} \prod_{j=1}^J t(f_i,e_{a_j})
$$
## Apprentissage des alignements
- Corpus parallèles (Hansard canadien, Hong Kong Hansards)
- Alignement des phrases
- Longueur en mots ou en caractères
- Programmation dynamique
- Modèle simple de traduction
- Retrait des phrases non alignées, fusion des phrases source des alignements qui ont la même phrase dans la destination (n à m, $n,m>0$)
- Alignement des mots dans les phrases
- Bootstrapping
- Algorithme Expectation-Maximization
- E: probabilité de tous les alignements possibles (paramètres courants du modèle)
- M: réestimer les valeurs de chaque paramètre
- Alignement des groupes de mots
- Application de la symétrie à partir des alignements de mots, en faisant l'intersection des alignements pour $E \rightarrow F$ et $F \rightarrow E$. On ajoute des alignements en utilisant l'union (Algorithme de Och and Ney), avec des critères tels que:
- case vide,
- adjacence,
- probabilité
- Table de traduction: on conserve les groupes de mots pour le décodage
## Décodage
Obtenir la meilleure traduction E depuis la phrase F
$$
argmax_{E \in English} P(F|E)P(E)
$$
- On ne peut enumérer toutes les phrases possibles
- Algorithme d'exploration (stack decoding, A*)
- $f(s) = g(s)+h(s)$: coût actuel (partiel) + coût estimé. Optimal si $h(s)$ ne surestime pas, donc est admissible
![Stack decoding - A*](stack-decoding.png)
- On considère seulement les groupes possibles avec la table de traduction
- Coût actuel $g(s)$: probabilité totale pour les groupes traduits
$$
cost(E,F) = \prod_{i \in S} \phi(\bar{f}_i,\bar{e}_i) d(a_i-b_{i-1}) P(E)
$$
- Coût futur
- Le coût de traduire les mots restants dans la phrase source
- Très coûteux à évaluer précisément
- Approximation:
- Pas de distortion
- Minimiser le produit du modèle de traduction et de langue
- Séquence la plus probable par Viterbi
- Q devient rapidement trop grand
- Recherche par faisceau: on conserve les $k$ solutions les plus prometteurs à chaque étape.
- Difficile de comparer le coût pour un nombre de mots différents
- Solution possible: Une file par nombre de mots traduits
- Multistack
## Évaluation
- Évaluation humaine: la plus fiable
- Évaluation automatique: moins coûteuse
- Traductions de référence
- Similarité avec les traductions de référence:
- Différentes mesures: BLEU, NIST, Précision/Rappel, METEOR
### BLEU
- Nombre de n-grammes de différentes tailles en commun avec la traduction de référence.
- Mesure de précision modifiée: Moyenne des précisions pour tous les N-grammes jusqu'à N.
- Clip count: nombre maximum d'apparition d'un mot dans les références (peut être 1). Mesure de référence.
$$
p_n = \frac{\sum_{C \in corpus}\sum_{ngram \in C} count_{clip}(ngram)}{\sum_{C \in corpus}\sum_{ngram \in C} count(ngram)}
$$
$$
p = \sqrt[N]{\prod_{n=1}^N p_n}
$$
- Pénalité pour les phrases courtes:
- c = longueur de la traduction
- r = longueur de la phrase de référence ayant le plus grand nombre de n-grammes en commun avec la traduction
$$
BP = 1_{c>r} + e^{1-r/c}*1_{c \leq r}
$$
# Introduction aux réseaux de neurones
## Trois visions du réseau de neurones:
- Métaphore de la structure du cerveau. Un neurone est composé de:
- Dendrites
- Noyau
- Axone
- Synapses
- Une cascade de régressions logistiques
- Somme pondérée des valeurs en entrée (signal z)
- Fonction d'activation sigmoide
- Signal en sortie
$$
y = \sigma(w \cdot x + b) = (1+\exp(-(w \cdot x + b)))^{-1}
$$
- Un large réseau d'opérations simples
- Différentes fonctions d'activation
- sigmoide: $\frac{1}{1-e^{-x}}$
- tanh: $\frac{e^x-e^{-x}}{e^x+e^{-x}}$
- RELU: $max(x,0)$
## Réseau feedforward
- Unités connectées sans cycle
- Plusieurs neurones = plus discriminant
- Plusieurs séparateurs
- Pas de retour en arrière
- Couches:
- Entrée
- Cachées (représentation intermédiaire)
- Sortie
- Notation matricielle:
$$
\begin{aligned}
\mathbf{W} &= \begin{pmatrix}{w_{1,1}} & {w_{1,2}} & {w_{1,3}} & \cdots & {w_{1,n_0}}\\
{w_{2,1}} & {w_{2,2}} & {w_{2,3}} & \cdots & {w_{2,n_0}}\end{pmatrix}\\
\mathbf{b} &= \begin{pmatrix}{b_{h,1}} & {b_{h,2}} & {b_{h,3}} & \cdots & {b_{h,n,1}}\end{pmatrix}\\
\mathbf{h} &= \begin{pmatrix}{a_{h,1}} & {a_{h,2}} & {a_{h,3}} & \cdots & {a_{h,n,1}}\end{pmatrix}
\mathbf{h} &= \sigma(\mathbf{W}x+\mathbf{b})\\
\mathbf{U} &= \begin{pmatrix}{u_{1,1}} & {u_{1,2}} & {u_{1,3}} & \cdots & {u_{1,n_0}}\\
{u_{2,1}} & {u_{2,2}} & {u_{2,3}} & \cdots & {u_{2,n_0}}\end{pmatrix}\\
\mathbf{z} &= \mathbf{U}h \\
\mathbf{y} &= softmax(\mathbf{z}) \\
&= \begin{pmatrix}{\frac{e^{z_1}}{\sum_{j=1}^d e^{z_j}}} & \cdots & {\frac{e^{z_d}}{\sum_{j=1}^d e^{z_j}}}\end{pmatrix}
\end{aligned}
$$
On veut minimiser une fonction de perte $L$ à l'aide des poids $w_i$ et des biais $b$.
- Rétropropagation des erreurs
- Descente de gradient
## Utilisation en NLP
Classificateurs supervisés:
- Segmentation de phrases
- Identification de la langue
- Analyse de sentiments (classificateur binaire)
- Extraction de relations
Approches:
- Sélection automatique des attributs
- Prétraitement des textes pour construire des attributs
- Sac de mots
- Mots négatifs
- Entités nommées
- Classificateur supervisé sur ces attributs
**Apprentissage de la représentation** (*representation learning*):
- Le classificateur utilisé précédemment est remplacé par un réseau de neurones.
- On fournit un texte brut au réseau et on lui laisse découvrir les bons attributs.
- Une bonne représentation des bots: plongements de mots (*word embeddings*)
# Plongements de mots
# Modèles et applications
![](traduction-alignement-mots.png)

1
stack-decoding.drawio Normal file
View file

@ -0,0 +1 @@
<mxfile host="www.draw.io" modified="2019-12-08T20:55:29.161Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" etag="vTTbJPdAKahy22D-nwUI" version="12.3.8" type="device" pages="1"><diagram id="U6rRr8SpzzsR6n6w6a2f" name="Page-1">7Vptc5s4EP41nrYfkuFV2B8dJ73eXO8uudxMe586MgijViAqRGz3158EAgzGKY7BeO4yk4nRaiWE9uXZXWliLsLNLwzGwe/UQ2RiaN5mYt5ODEO3DGMi/zRvm1NmBWHFsKeYKsIj/oEUUVPUFHsoqTFySgnHcZ3o0ihCLq/RIGN0XWfzKam/NYYrtEd4dCHZp37CHg9y6tRwKvoHhFdB8WYdzPKeEBbM6kuSAHp0vUMy7ybmglHK86dws0BEbl6xL/m49wd6y4UxFPEuA/zt5rdftYXz4fPNp8cnGzofH9iVrdbGt8UHI098v2pSxgO6ohEkdxX1htE08pCcVROtiucjpbEg6oL4FXG+VcKEKaeCFPCQqF6xYLb9LMdf20XzHzVd1rjd1Fpb1Uo4o99KMViCkq9eLvngpihSQlPmomd2olAuyFaIP8NnlaITOo9oiMQKxTiGCOT4qb4OqJRvVfJV8hEPSkRHiEvN+wRJqt40MQARy73xqfjgXUGC7yktOq6STBRzwaBP403VKZ5W8jcRPdkoLabx24d3xaxikfnEOdueslSqIOW6DjBHjzHM9nkt/EFd7HCZUJJyNGeuUo2MWrWsPRkb8gMwIQtKKMteaXoQTX235NzpAe4ULf1ymU+IcbR5Xi/25VgMcJTVKrdlWKq9rpyArilasOsACmLvsncGkv2fKe4q7v+rb7A6+gbwrE5dadcAACXGzv5CTXdPcSbkgoX6fiLW0lSq8q0n+BhrIEX7g0YXpGgXoTC6+TONsWzLvnSNGUphJCqhRE6QRkgilJp1yQoOzqCXuhxLzWrpdmkYk8nCnMynPJvAfN8Z2QIaLtPk56jWgCd/6iK3FZ6WUyFKrSd4soxruwZQltMCULbdAlDWUAAFBlKDvxAX9hYhIVbtcV/Ir7EKqMcqYNaiCkZLrOIMpQm68Ro6qK2YdkWCE9OKhtNXqlEmn9tGu5giX5ca1T8yTAdyCfcMU4a53KGHFIm597zCEUnMvhnvhgkBjCVfuFnJAse1T+jaDSDj1wmnDHlfPMjhAX/ShAbfN9qhwQNLYIO+oKEucl1v8QagxRuAwbwBGNcb1HxB5RpGKTKYXd2BfaI/OE1i5lB2KzZIFusC+F0arYY2MYySPHxL3oh/nqQmLwf5l9oyEuuJOIbkCHtGumcjp82eZ8AxYU/2bFmNQK8N3c9bidBnYxj0sIZpdzVMZxCgBjPnUEB/JqgudqB3m19A4qYki95JZt2uwE3x679N3ryg0KgdnZKdJwoHDdy123C3LQofDnenl2GmHkyCMu9CG8x3YnTRKkN08VxhsmwUkNynnTsd7Xzah5nPGYPbHYZYGm9y2As4WiN2s7SGFuQz9mr45d6NE56VjUsIz7pqx84B3hjh2VBHAfOvNOWZp86CsZYwTNbSNJl1vdZh9hHArluv2YYA543UjKEC+cuq5b+08pO17hHDYrcRO4eHKQKAHk4GHN1S0r3ckwFjqKDysg4tL0NljANXE3aOH40ZOE1liqTUdmquzjC7JSvHBkTWzG59T2tAdFbF1gZS7Bx4JczO4hQn+VN+PeM/cnZlmQ2Y1Fpg0myDyWbxuj+YHKVCOazX6HwEPWYkW1yjG3vjaynqGFIYJd00gVWzxPOkm0PdFvib4Sx1OSY16eO94heG0rFGy0T+CD2R1a2JsWhNoVwaJYg9ZUvd7/0mFY2hUHzKCVVw6Z+xKywCLhG5pwnObkiYt0vKOQ3FiIJhTvBKdnDaQIZnSuXC4MbKsMwGdBgt0FFcsDqxxCaa1dXcXPerC87m3b8=</diagram></mxfile>

BIN
stack-decoding.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB