mi024

College project "Projet IAD" master 1
git clone https://esimon.eu/repos/mi024.git
Log | Files | Refs | README

slideshow.tex (7666B)


      1 \documentclass{beamer}
      2 \usetheme{Warsaw}
      3 \usepackage[T1]{fontenc}
      4 \usepackage[utf8]{inputenc}
      5 \usepackage[french]{babel}
      6 \usepackage{tikz}
      7 \usepackage{tikz-uml}
      8 \usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,decorations.text}
      9 
     10 \title[MI024 Sujet 7]{MI024~: PIAD\\Vers une machine d'apprentissage persistante}
     11 \author{Étienne Simon}
     12 \date\today
     13 
     14 \newcommand{\nmlp}{\textsc{nmlp}}
     15 
     16 \begin{document}
     17 
     18 \begin{frame}
     19 	\titlepage
     20 \end{frame}
     21 
     22 \begin{frame}{Problématique}
     23 Des modèles entrainés pendent plusieurs heures sont jetés après avoir été analysés.
     24 \vspace{0.5em}
     25 \begin{itemize}
     26 	\item Gaspillage du temps de calcul.
     27 \end{itemize}
     28 \vspace{2em}
     29 \pause
     30 Travail à effectuer~:
     31 \vspace{0.5em}
     32 \begin{itemize}[<+->]
     33 	\item Créer une plateforme d'apprentissage persistante à partir de \nmlp{}
     34 	\vspace{0.5em}
     35 	\item Implémentant un modèle en particulier…
     36 \end{itemize}
     37 \end{frame}
     38 
     39 \begin{frame}{Contexte}
     40 Apprentissage sur des données hétérogènes.
     41 
     42 \begin{figure}[h]
     43 	\centering
     44 \scalebox{0.5}{
     45 	\begin{tikzpicture}
     46 		[coder/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}]
     47 
     48 		\node [draw,rectangle,rounded corners,minimum size=3cm] (latent space) {Espace latent \(Z\)};
     49 		\path (latent space.south)+(-4,-4) node [draw,rectangle,minimum size=2cm] (view 1) {Vue \(X_1\)};
     50 		\path (latent space.south)+(0,-4) node [draw,rectangle,minimum size=2cm] (view 2) {Vue \(X_2\)};
     51 		\path (latent space.south)+(4,-4) node [draw,rectangle,minimum size=2cm] (view 3) {Vue \(X_3\)};
     52 		\draw [coder=encodeur] (view 1.95) to [bend left=15] (latent space.-125);
     53 		\draw [coder=d{é}codeur] (latent space.-115) to [bend left=15] (view 1.85);
     54 		\draw [coder=encodeur] (view 2.95) to [bend left=15] (latent space.-95);
     55 		\draw [coder=d{é}codeur] (latent space.-85) to [bend left=15] (view 2.85);
     56 		\draw [coder=encodeur] (view 3.95) to [bend left=15] (latent space.-65);
     57 		\draw [coder=d{é}codeur] (latent space.-55) to [bend left=15] (view 3.85);
     58 		\draw (latent space.center)+(0,1) node {\(\times z_1\)};
     59 		\draw (latent space.center)+(1,0.5) node {\(\times z_2\)};
     60 		\draw (latent space.center)+(-0.5,-1) node {\(\times z_3\)};
     61 		\draw (view 1.center)+(0.5,0.5) node {\scriptsize\(\times x_1^1\)};
     62 		\draw (view 1.center)+(-0.5,-0.5) node {\scriptsize\(\times x_1^2\)};
     63 		\draw (view 2.center)+(-0.5,0.5) node {\scriptsize\(\times x_2^3\)};
     64 		\draw (view 2.center)+(0,-0.5) node {\scriptsize\(\times x_2^2\)};
     65 		\draw (view 3.center)+(0.5,0.5) node {\scriptsize\(\times x_3^2\)};
     66 	\end{tikzpicture}
     67 }
     68 	\caption{Relation entre les différents espaces}
     69 	\label{fig:latent_space_presentation}
     70 \end{figure}
     71 \vspace{-2em}
     72 \pause
     73 \begin{itemize}[<+->]
     74 	\item Données avec plusieurs vues.
     75 		  E.g. le mot «~chat~» et l'image d'un chat sont deux vues du concept {\emph chat}. % TODO mettre l'image d'un chat = WIN
     76 	\item Utilisation de \emph{MLP}s pour l'apprentissage des encodeurs et décodeurs.
     77 	      Minimisation de \( \Delta(decoder_3(encoder_1(x_1^2)), x_3^2) \).
     78 \end{itemize}
     79 \end{frame}
     80 
     81 \begin{frame}{Solution}
     82 \begin{figure}[h]
     83 	\centering
     84 \scalebox{0.6}{
     85 	\begin{tikzpicture}
     86 		[action/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}]
     87 		\node [draw, cylinder, shape border rotate=90, minimum height=4cm, minimum width=3.5cm, aspect=2.5, label={[above]Bases de données}] (database) {};
     88 		\path (database.center)+(0,0.75) node [draw] (views) {Vues};
     89 		\path (database.center)+(0,-0.75) node [draw,align=center] (data) {Données \\ d'apprentissage};
     90 		\path (database.west)+(-3,-1) node [draw, rectangle, rounded corners] (supervisor) {Superviseur};
     91 		\draw [<->, ultra thick] (views) to (supervisor);
     92 		\draw [->, ultra thick] (data) to (supervisor);
     93 		\umlactor[x=-10,y=1.8]{Administrateur}
     94 		\draw [action=initialise] (Administrateur) to (views);
     95 		\draw [action=configure] (Administrateur) to (supervisor);
     96 	\end{tikzpicture}
     97 }
     98 	\caption{Diagramme (informel) présentant l'architecture de la solution logicielle.}
     99 	\label{fig:architecture}
    100 \end{figure}
    101 Deux opérations~:
    102 \begin{itemize}
    103 	\item L'initialisation des vues se fait avec {\tt view\_ctl}.
    104 	\item La configuration du superviseur se fait avec {\tt supervisor}.
    105 \end{itemize}
    106 \end{frame}
    107 
    108 \begin{frame}{Détails}
    109 Le binaire {\tt view\_ctl} est l'interface de la base de données, permettant de~:
    110 \begin{itemize}
    111 	\pause
    112 	\item Créer une nouvelle vue (création interactive ou par fichier de configuration de séquences de modules \nmlp{})
    113 	\pause
    114 	\item Lister les vues
    115 	\pause
    116 	\item Supprimer une vue
    117 \end{itemize}
    118 \pause
    119 {\tt supervisor} est l'interface des algorithmes d'apprentissage et de test, permettant~:
    120 \pause
    121 \begin{itemize}[<+->]
    122 	\item L'agrégation de vues en un modèle.
    123 	\item Apprendre ce modèle sur un jeu de données (met à jour les vues dans la base de données.)
    124 	\item Tester ce modèle sur un jeu de données.
    125 \end{itemize}
    126 \end{frame}
    127 
    128 \begin{frame}[fragile]{Démonstration}
    129 \scalebox{0.7}{\texttt{\$ view\_ctl add 'demo in' fourclass\_input\_5.cfg -d demodb}} \newline
    130 \scalebox{0.7}{\texttt{\$ view\_ctl add 'demo out' fourclass\_output\_5.cfg -d demodb}} \newline
    131 \pause
    132 \scalebox{0.7}{\texttt{\$ supervisor \textbf{test} -d demodb fourclass\_test supervisor.cfg '4 in' '4 out'}} \newline
    133 \scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass input: 1.52195}} \newline
    134 \scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass output: 1.04658}} \newline
    135 \scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass input: 2.09861}} \newline
    136 \scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass output: 2.9957}} \newline
    137 \pause
    138 \scalebox{0.7}{\texttt{\$ supervisor \textbf{train} -d demodb fourclass\_train supervisor.cfg '4 in' '4 out'}} \newline
    139 \pause
    140 \scalebox{0.7}{\texttt{\$ supervisor \textbf{test} -d demodb fourclass\_test supervisor.cfg '4 in' '4 out'}} \newline
    141 \scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass input: 0.00351782}} \newline
    142 \scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass output: 0.655877}} \newline
    143 \scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass input: 0.518831}} \newline
    144 \scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass output: 1.97268e-06}} \newline
    145 \end{frame}
    146 
    147 \begin{frame}{\emph{Livrable}}
    148 Quelques notes sur le \emph{livrable}~:
    149 \vspace{0.5em}
    150 \begin{itemize}
    151 	\item L'ensemble du projet est sur un dépôt Mercurial.
    152 	\vspace{0.5em}
    153 	\item Le code est entièrement commenté et une documentation développeur est compilable avec Doxygen.
    154 	\vspace{0.5em}
    155 	\item Présence de tests unitaires.
    156 	\vspace{0.5em}
    157 	\item Aucune dépendance n'a été ajouté à \nmlp{} (usage extensif de Boost)
    158 	\vspace{0.5em}
    159 	\item Les exécutables ainsi que la documentation sont compilables avec un simple script CMake.
    160 \end{itemize}
    161 \end{frame}
    162 
    163 % Conclusion, ouverture
    164 % Manque dataset, mais c'est ok, code cool et bien documenté.
    165 \begin{frame}{Conclusion}
    166 Le sujet a été un peu modifié en cours de route.
    167 \vspace{1em}
    168 \pause
    169 
    170 \textbf{It works!}
    171 \vspace{1em}
    172 \pause
    173 
    174 Quelques points négatifs~:
    175 \vspace{0.5em}
    176 \begin{itemize}[<+->]
    177 	\item Les tests ont été réalisés sur des problèmes de classification seulement.\\
    178 	      L'apprentissage sur du multi-vues est déjà codé, mais non testé.
    179 	\vspace{0.5em}
    180 	\item L'algorithme d'apprentissage est assez lent (non optimisé).
    181 \end{itemize}
    182 \end{frame}
    183 
    184 % Questions ?
    185 \begin{frame}
    186 \begin{center}
    187 	\Huge Questions ?
    188 \end{center}
    189 \end{frame}
    190 
    191 \end{document}