conditional_lm.tex 19.5 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
%!TEX root = m2_DL_sequence_modeling.tex

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{}
  \vspace{\stretch{1}}
\begin{block}{}
    \begin{itemize}
    \item[] \huge {Modèles de langue conditionnels}
    \end{itemize}
\end{block}
\vspace{\stretch{1}}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Rappel: Modèle de langue avec RNN}

 \centering
      \includegraphics[width=0.55\textwidth]{figures/rnn_unrolled_all}
\begin{itemize}
   \item<+-> Probabilité à une séquence de mots $\vw = (w_1, w_2, ..., w_\ell)$
   \item[]{ \small{ $ p(\vw)  =  p(w_1) \times p(w_2|w_1) \times p(w_3 | w_1, w_2) \times \dots \times p(w_l | w_1, ..., w_{\ell-1}) = \ds \prod_{t=1}^{\ell} p(w_t|w_1, ..., w_{t-1})$ } } 
%    \item[]<2>{ \small {$ p(\vw)  = \ds \prod_{t=1}^{\ell} p(w_t|w_1, ..., w_{t-1}) $ } }
    \item[\ra]<+-> \alert{La probabilité ne dépend que de l'historique de la séquence}
    \item<+-> Cela permet-il de faire de la traduction ou du résumé automatique ?
    \item[\ra]<+-> Il faudrait prendre en compte le texte source !
\end{itemize}

\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Modèles de langue conditionnels}
\begin{block}{Probabilité conditionnelle à un context $\edinred{\vm{x}}$}
    \begin{itemize}
    \item[] \item[]{ \small{ $ p(\vw | \edinred{\vm{x}})  =   \ds \prod_{t=1}^{\ell} p(w_t| \edinred{\vm{x}}, w_1, ..., w_{t-1})$ } } 
    \item[\ra] Probabilité du prochain mot étant donné l'historique \textbf{et} le contexte $\edinred{\vm{x}}$ ?
    \item[]
    \end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Modèles de langue conditionnels}
%\begin{block}{Applications}
\rowcolors[]{1}{gray!20}{gray!10} % \rowcolors is  in the xcolor manual
\centering 
\begin{tabular}{l|l} % \vrule is to Add rule. can use |
Entrée $\edinred{\vm{x}}$ & Sortie $\vm{w}$  \\\midrule % \midrule instead of the old \hline
Phrase en anglais & Traduction en chinois  \\
Phrase en chinois & Traduction en français  \\
Une image & Sa description  \\
Signal audio & Sa transcription  \\
Historique de conversation & Réponse du système de dialogue \\
Un document + une question & La réponse \\
Une image + une question & La réponse \\
Un document & Le résumé \\
... & ... \\
\end{tabular}
%\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Quelles données ?}
%\begin{block}{}
    \begin{itemize}
    \item Pour entrainer des ML conditionnels, il faut des \textbf{données annotées}
	\rowcolors[]{1}{gray!20}{gray!10} % \rowcolors is  in the xcolor manual
	{ \centering 
	\begin{tabular}{l|l} 
	Traduction & Textes bilingues (alignés à la phrase)  \\
	Reconnaissance de la parole & Signal de parole transcrit manuellement \\
	Description d'images & Images + leurs description  \\
	... & ... \\
\end{tabular}}
    \item Quantité et qualité des données est variable
    \end{itemize}
%\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Ce qui va suivre:}
%\begin{block}{}
    \begin{itemize}
    \item Comment représenter $\edinred{\vm{x}}$ en un vecteur de taille fixe $\vm{c}$ ?
    \begin{itemize}
	\item Spécifique au problème (ou à chaque modalité).
	\item (Début de) réponse au cours précédent
    \end{itemize}
    \item[]
    \item Comment conditionner le décodeur avec $\vm{c}$ ?
    \begin{itemize}
	\item Moins spécifique au problème
	\item Quelques architectures dans ce cours
    \end{itemize}
    \end{itemize}
%\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Modèle neuronal}
  \begin{block}{Séquence vers séquence}
\begin{itemize}
	\item Approche actuelle : encodeur/décodeur
	\item La séquence d'entrée est encodée dans un vecteur de faible dimension (quelques centaines)
	\item[\ra] \alert{Encodeur}
	\item La séquence de sortie est générée : 
	\begin{itemize}
	\item avec un ML conditionnel
	\item en utilisant le vecteur de taille fixe issu de l'encodeur
	\item[\ra]  mot par mot, fin = "$\langle /s\rangle$"
	\end{itemize}
	\item[\ra] \alert{Décodeur}
\end{itemize}
   \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Retour sur l'encodeur}
\begin{block}{Comment représenter $\edinred{\vm{x}}$ en un vecteur de taille fixe $\vm{c}$ ? }
    \begin{itemize}
    \item Au cours précédent : RNN, GRU, LSTM
    \item Que penser de cette architecture ? \\
     {\centering
      \includegraphics[width=0.35\textwidth]{figures/bow}
      \item[]}
      \item<2> Représentation en \textbf{sac de mots} (\edinred{bag of words})
    \end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Retour sur l'encodeur}
\begin{block}{\cite{kalchbrenner2013} }
    \begin{itemize}
      \item[]
{     \centering
      \includegraphics[width=0.35\textwidth]{figures/conv_sent_encoder}
      \item[]
      }
      \item<+-> Encodeur \edinred{convolutionnel}
      \item<.-> Réseaux convolutionnels vus dans un prochain cours.
    \end{itemize}

\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Comment conditionner à $\vm{c}$ ?}
\begin{block}{\cite{kalchbrenner2013} }
     \centering
Loïc Barrault's avatar
Loïc Barrault committed
162
163
164
165
166
167
%      \includegraphics[width=0.85\textwidth]{figures/rnn_unrolled_4}<+>
      \includegraphics[width=0.85\textwidth]{figures/cond_rnn_unrolled_1}<+>
      \includegraphics[width=0.85\textwidth]{figures/cond_rnn_unrolled_2}<+>
      \includegraphics[width=0.85\textwidth]{figures/cond_rnn_unrolled_3}<+>
      \includegraphics[width=0.85\textwidth]{figures/cond_rnn_unrolled_all}<+>
      \includegraphics[width=0.55\textwidth]{figures/cond_rnn_unrolled_all}<+>
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
    \begin{itemize}
      \item[]<.-> $ \vm{h}_t = \phi(\vm{M}[\vm{h}_{t-1}; \vm{w}_{t-1}] \edinred{+ \vm{c}} + \vm{b}) $
      \item[]<.-> $ \vm{z}_t = \vm{S}~\vm{h}_{t} + \vm{b'} $
      \item[]<.-> $ p(\vm{W}_t | \edinred{\vm{c}}, \vm{w}_{<t}) = softmax(\vm{u}_t)  $ 
      \item[]
    \end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{\cite{sutskever2014}}

\begin{columns}
\column{0.5\textwidth}
\begin{block}{Architecture}
 \begin{itemize}
    	\item Encodeur: $LSTM(\edinred{\vm{x}_i}, \vm{c}_{i-1}, \vm{h}_{i-1})$
    	\item[\ra] Le vecteur $\vm{c}_{\ell}$ avec $\ell = |\edinred{\vm{x}}|$ le vecteur de taille fixe retenu.
	\item[]    
    	\item Décodeur : $LSTM(\vm{w}_{t-1}, \vm{c}_{\ell}, \vm{h}_{t-1})$
    	\begin{itemize}
	\item $w_0 = \langle s \rangle$ \\
	\item[]
	\item[]
	\item[]	
	\item[]
	\item[]
	\end{itemize}
\end{itemize}
\end{block}
\column{0.5\textwidth} \\
\centering \includegraphics[height=4cm]{figures/lstm}
\end{columns}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%architecture
\begin{frame}
  \frametitle{\cite{sutskever2014}: cas de la traduction automatique}

\begin{columns}
\column{0.5\textwidth}
\begin{block}{}
\begin{itemize}
 \item<2->{ {\color{edinred} [1.]} ~Mots encodés en vecteur \emph{1-hot} }
 \item<3->{ {\color{cyan} [2.]} Projection dans un \textbf{\textit{embedding}} } 
 \item<4->{ {\color{gray} [3.]} MàJ état caché RNN \emph{\alert{l'encodeur}} }
 \item[\ra]<5->{ {\color{liumgreen} [4.]} Représentation de la phrase }
 \item<6->{ {\color{edingreen} [5.]} MàJ état caché RNN \emph{\alert{décodeur}} }
	 \begin{itemize}
	\item<.->  état précédent, contexte source $\vm{c}$, feedback
	\end{itemize}
 \item<7->{ {\color{purple} [6.]} Calcul de la distribution de probabilité pour \alert{tous} les mots suivants }	
 \item<8->{ {\color{orange} [7.]} Détermination du mot suivant (le plus probable) }
\end{itemize}

 	\end{block}

\column{0.5\textwidth} \\ 
  \centering{
 \only<1>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all} }
 \only<2>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_1} }	
 \only<3>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_2} } 	 
 \only<4>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_3} }	 
 \only<5>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_4} } 	 
 \only<6>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_5} }	 
 \only<7>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_6} }	 
 \only<8>{ \includegraphics[height=0.8\textwidth]{figures/enc_dec_all_7} }	 
  }%centering  
	
\end{columns}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Résultats}
\begin{block}{}
  \centerline{
  \includegraphics[width=0.8\textwidth]{figures/nmt_sentence_length}
  }
  \begin{itemize}
	\item[\ra] Le score de traduction décroit avec la taille de la phrase !
	\item Comment expliquer cela ?
\only<1>{	\begin{enumerate}
		\item Pas assez de données dans le corpus d'entraînement ?
		\item Difficile de générer une phrase longue cohérente ?
		\item Vecteur de taille fixe insuffisant pour encoder une longue phrase ?
	\end{enumerate}
}
\only<2>{	\begin{enumerate}
		\item \sout{Pas assez de données dans le corpus d'entraînement ?}
		\item \sout{Difficile de générer une phrase longue cohérente ?}
		\item Vecteur de taille fixe insuffisant pour encoder une longue phrase !!!
	\end{enumerate}
}
  \end{itemize}
 \end{block}   
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{\cite{sutskever2014}}

\begin{block}{Conclusion}
\begin{itemize}
\item Avantages : 
	\begin{itemize}
		\item RNNS gèrent les séquences de taille variable naturellement
		\item Les GRU et LSTMs peuvent \textbf{en principe} propager les gradients à travers une longue chaîne de non-linéarités
		\item Architecture finalement très simple !
	\end{itemize}
	\item[]
\item Inconvénients : 
	\begin{itemize}
	\item L'état caché doit mémoriser une grande quantité d'information !
	\end{itemize}
\end{itemize}
 \end{block}   
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Conditionnement à un vecteur $\vm{c}$}
\begin{block}{}
    \begin{itemize}
    \item Une grande quantité de données est compressée dans un vecteur de taille fixe
    \item Les gradients ont une longue route à parcourir
	\begin{itemize}
	\item Même les LSTM oublient!
	\end{itemize}
    \item[]
    \item Prof. Ray Mooney (U. Texas) :
    \item[] "You can't cram the meaning of a whole \$\^{}!\# sentence into a single \$\#!\% vector!"
    \item[]
    \end{itemize}
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Du vecteur à la matrice}
\begin{block}{}
    \begin{itemize}
    \item Représenter la séquence d'entrée par une matrice
    \item Générer la séquence de sortie à partir de cette matrice
    \item[]
    \item[\ra] Résout le problème de capacité
    \item[\ra] on parle aussi d'\textbf{expressivité} du modèle 
    \item[]
    \item[\ra] Résout le problème du flux de gradient
    \item[]
    \end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Représentation des phrases dans une matrice}
\begin{block}{}
    \begin{itemize}
    \item Vecteur de taille fixe peu importe la taille de la phrase source
    \item[]
    \item Matrice : nombre de lignes fixe
    \item[\ra] nombre de caractéristiques (\textbf{features})
    \item Nombre de colonnes = nombre de mots de la phrase source (en général)
    \item[]
    \item[\ra] Comment construire une telle matrice ?
    \item[]
    \end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{Concaténation}
\begin{block}{}
    \begin{itemize}
    \item Concaténation des embeddings des mots
    \item modèle le plus simple possible
    \item[\ra] aucun article publié à l'heure actuelle, des volontaires ?
    \item[]
    \item Avec des réseaux convolutionnels \cite{gehring2017}
    \item[\ra] détails dans un autre cours 
    \item[]
    \item Avec des RNN bidirectionnels \cite{bahdanau2014}
    \item[\ra] méthode la plus utilisée 
    \end{itemize}
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Encodeur bidirectionnel}
 \begin{block}{}
\centering{
 \only<1>{ \includegraphics[height=0.5\textheight]{figures/bidir_enc_1} \\
 {\color{gray} [1.]} ~Vecteur \emph{1-hot} + projection + màj unité récurrente \alert{en avant}	 }
 \only<2>{ \includegraphics[height=0.5\textheight]{figures/bidir_enc_2}	\\
 {\color{brown} [1bis.]} ~màj unité récurrente \alert{en arrière} 	}
 \only<3>{ \includegraphics[height=0.5\textheight]{figures/bidir_enc_all} 	 \\
 {\color{brown} [2.]} \alert{Annotation} = concaténation des vecteurs \alert{avant} et \alert{arrière}  \\
 {\small Chaque $\vm{h}_i$ encode la phrase source entière avec focus sur le \ieme\ mot}	}
}
\end{block}
\vspace{.2cm}
 \end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
\begin{block}{}
\begin{itemize}
\item Comment traiter cette matrice dans le décodeur ?
\item Rappel : le décodeur est constitué d'une (ou plusieurs) unités récurrentes
\item[]
\item Solution : revenir à un vecteur de taille fixe \textbf{dynamiquement}
\begin{itemize}
\item à chaque pas (\emph{timestep})
\end{itemize}
\item[]
\item[\ra] \textbf{Mécanisme d'attention}
\item[]
\end{itemize}
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
\begin{block}{Avant : phrase représentée par un vecteur }
\centering{
 \includegraphics[height=0.7\textheight]{figures/enc_dec_all} 
}  
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
\begin{block}{Après : phrase représentée par une matrice}
\centering{
  \includegraphics[height=0.7\textheight]{figures/dec_attention_0} 
}   
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
%% \begin{itemize}
%%	\item Constat : un vecteur de taille fixe est insuffisant pour représenter une phrase longue
%%	\item[\ra] Idée : utilisons \alert{plusieurs} représentations !
%%	%\item[\ra] Chaque représentations se concentre sur une partie de l'entrée
%%  \end{itemize}
%
\begin{columns}
\column{0.5\textwidth}
 \begin{block}{}
\begin{itemize}
\item<+-> {\color{brown} [2.]} ~Décodeur reçoit les \alert{annotations} de l'encodeur.	 
\item<+-> {\color{cyan} [3.]} ~ \alert{Poids d'attention} calculés avec un RdN feedforward. \\
{\small ~ \ra ~ un vecteur \emph{moyen} est calculé $\tilde{\vm{h_j}} = \ds \sum_i \alpha_{ij} \vm{h}_{ij}$ }
 
\item<+->{\color{brown} [4.]} MàJ incrémentale des poids de la GRU du décodeur   
\item<+-> {\color{purple} [5.]} Calcul de la distribution de probabilité pour \alert{tous} les mots suivants 
\item<+->  {\color{orange} [6.]} Détermination du mot suivant (le plus probable)	
\end{itemize}
\end{block}

 \column{0.5\textwidth} 
 \centering{
 \only<1>{ \includegraphics[height=0.7\textheight]{figures/dec_attention_1} } 
 \only<2>{ \includegraphics[height=0.7\textheight]{figures/dec_attention_2} }
 \only<3>{ \includegraphics[height=0.7\textheight]{figures/dec_attention_3} }
 %{\small Chaque $\vm{h}_i$ encode la phrase source entière avec focus sur le \ieme\ mot}	
 \only<4>{ \includegraphics[height=0.7\textheight]{figures/dec_attention_4} } 
 \only<5>{ \includegraphics[height=0.7\textheight]{figures/dec_attention_all} } 
}
\end{columns}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
\begin{block}{}
\centering{
  \only<1>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step1} }
  \only<2>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step2} }
  \only<3>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step3} }
  \only<4>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step4} }
  \only<5>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step5} }
  \only<6>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step6} }
  \only<7>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_step8} }
  \only<8>{ \includegraphics[height=0.4\textwidth]{figures/dec_attention_steplast} }
}  
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Un mot sur les gradients}
\begin{block}{Sans mécanisme d'attention : }
\centering{
  \only<1>{ \includegraphics[height=0.6\textheight]{figures/enc_dec_all} }
  \only<2>{ \includegraphics[height=0.6\textheight]{figures/dec_backprop} }
 }  
\begin{itemize}
\item<2-> Les gradients passent par le dernier état de l'encodeur.
\end{itemize}
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Un mot sur les gradients}
\begin{block}{Avec mécanisme d'attention : }
\centering{
  \only<1>{ \includegraphics[height=0.6\textheight]{figures/dec_attention_backprop} }
}  
\begin{itemize}
\item Le mécanisme d'attention facilite la propagation des gradients vers l'encodeur
\end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Attention et traduction}
\begin{block}{ Quelques considérations/remarques :}
\begin{itemize}
\item Un traducteur humain mémorise-t-il la totalité d'une phrase puis produit sa traduction ?
	\begin{itemize}
	\item Compresser une phrase dans un vecteur de taille fixe correspond à cela
	\end{itemize}
\item Par expérience un traducteur fait des allers-retours vers la phrase source
	\begin{itemize}
	\item Le mécanisme d'attention permet cela
	\end{itemize}
\item[]
\item Est-ce que les humains doivent être un modèle pour les machines ?
\item[]
\end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Mécanisme d'attention}
\begin{columns}
\column{0.5\textwidth}
\begin{block}{Mécanisme d'attention \Ra\ alignement }
\begin{itemize}
\item Pour chaque mot produit, un ensemble de poids d'attention est créé pour chaque mot source
\item \textbf{Alignement} et modèle de traduction entraîné conjointement !
\item[\ra] \cite{bahdanau2014}
\item[]
\end{itemize}
\end{block}

\column{0.5\textwidth}
\centering{
  \includegraphics[height=0.6\textheight]{figures/attention_alignment}
}  
\end{columns}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Résumé}
\begin{block}{ }
\begin{itemize}
\item Attention
	\begin{itemize}
	\item permet d'établir un flux d'information entre des unités distantes
	\end{itemize}
\item Les modèles standard d'attention s'occupent du "contenu"
	\begin{itemize}
	\item des biais structurels peuvent être ajoutés
	\item[\ra] par exemple, pour une meilleure couverture des mots source
	\end{itemize}
\item[]
\end{itemize}
\end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}
  \frametitle{Algorithme}
\centering{
  \includegraphics[height=0.8\textheight]{figures/dec_algo}
}  
\begin{itemize}
\item[] \small{[Issu de C. Dyer @ MTMarathon 2017]}
\end{itemize}
\end{frame}