ajout fin traduction et intro neurones
This commit is contained in:
parent
b9961aa6db
commit
440dc7d361
4 changed files with 217 additions and 8 deletions
4
Makefile
4
Makefile
|
@ -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
|
||||
|
|
220
examen_final.md
220
examen_final.md
|
@ -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
1
stack-decoding.drawio
Normal 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
BIN
stack-decoding.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
Loading…
Reference in a new issue