commit 44db1a375f6dbd76b24d585e347d958f86d46721
parent 254a2e3e7297a87054193cc4895676da4f33f68a
Author: Étienne Simon <etienne.jl.simon@gmail.com>
Date: Tue, 14 May 2013 07:41:05 +0200
Update slideshow.
Diffstat:
M | doc/slideshow.tex | | | 175 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- |
1 file changed, 174 insertions(+), 1 deletion(-)
diff --git a/doc/slideshow.tex b/doc/slideshow.tex
@@ -1,12 +1,16 @@
\documentclass{beamer}
+\usetheme{Warsaw}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
-\usetheme{Warsaw}
+\usepackage{tikz}
+\usepackage{tikz-uml}
+\usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,decorations.text}
\title[MI024 Sujet 7]{MI024~: PIAD\\Vers une machine d'apprentissage persistante}
\author{Étienne Simon}
\date\today
+
\newcommand{\nmlp}{\textsc{nmlp}}
\begin{document}
@@ -15,4 +19,173 @@
\titlepage
\end{frame}
+\begin{frame}{Problématique}
+Des modèles entrainés pendent plusieurs heures sont jetés après avoir été analysés.
+\vspace{0.5em}
+\begin{itemize}
+ \item Gaspillage du temps de calcul.
+\end{itemize}
+\vspace{2em}
+\pause
+Travail à effectuer~:
+\vspace{0.5em}
+\begin{itemize}[<+->]
+ \item Créer une plateforme d'apprentissage persistante à partir de \nmlp{}
+ \vspace{0.5em}
+ \item Implémentant un modèle en particulier…
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Contexte}
+Apprentissage sur des données hétérogènes.
+
+\begin{figure}[h]
+ \centering
+\scalebox{0.5}{
+ \begin{tikzpicture}
+ [coder/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}]
+
+ \node [draw,rectangle,rounded corners,minimum size=3cm] (latent space) {Espace latent \(Z\)};
+ \path (latent space.south)+(-4,-4) node [draw,rectangle,minimum size=2cm] (view 1) {Vue \(X_1\)};
+ \path (latent space.south)+(0,-4) node [draw,rectangle,minimum size=2cm] (view 2) {Vue \(X_2\)};
+ \path (latent space.south)+(4,-4) node [draw,rectangle,minimum size=2cm] (view 3) {Vue \(X_3\)};
+ \draw [coder=encodeur] (view 1.95) to [bend left=15] (latent space.-125);
+ \draw [coder=d{é}codeur] (latent space.-115) to [bend left=15] (view 1.85);
+ \draw [coder=encodeur] (view 2.95) to [bend left=15] (latent space.-95);
+ \draw [coder=d{é}codeur] (latent space.-85) to [bend left=15] (view 2.85);
+ \draw [coder=encodeur] (view 3.95) to [bend left=15] (latent space.-65);
+ \draw [coder=d{é}codeur] (latent space.-55) to [bend left=15] (view 3.85);
+ \draw (latent space.center)+(0,1) node {\(\times z_1\)};
+ \draw (latent space.center)+(1,0.5) node {\(\times z_2\)};
+ \draw (latent space.center)+(-0.5,-1) node {\(\times z_3\)};
+ \draw (view 1.center)+(0.5,0.5) node {\scriptsize\(\times x_1^1\)};
+ \draw (view 1.center)+(-0.5,-0.5) node {\scriptsize\(\times x_1^2\)};
+ \draw (view 2.center)+(-0.5,0.5) node {\scriptsize\(\times x_2^3\)};
+ \draw (view 2.center)+(0,-0.5) node {\scriptsize\(\times x_2^2\)};
+ \draw (view 3.center)+(0.5,0.5) node {\scriptsize\(\times x_3^2\)};
+ \end{tikzpicture}
+}
+ \caption{Relation entre les différents espaces}
+ \label{fig:latent_space_presentation}
+\end{figure}
+\vspace{-2em}
+\pause
+\begin{itemize}[<+->]
+ \item Données avec plusieurs vues.
+ 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
+ \item Utilisation de \emph{MLP}s pour l'apprentissage des encodeurs et décodeurs.
+ Minimisation de \( \Delta(decoder_3(encoder_1(x_1^2)), x_3^2) \).
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Solution}
+\begin{figure}[h]
+ \centering
+\scalebox{0.6}{
+ \begin{tikzpicture}
+ [action/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}]
+ \node [draw, cylinder, shape border rotate=90, minimum height=4cm, minimum width=3.5cm, aspect=2.5, label={[above]Bases de données}] (database) {};
+ \path (database.center)+(0,0.75) node [draw] (views) {Vues};
+ \path (database.center)+(0,-0.75) node [draw,align=center] (data) {Données \\ d'apprentissage};
+ \path (database.west)+(-3,-1) node [draw, rectangle, rounded corners] (supervisor) {Superviseur};
+ \draw [<->, ultra thick] (views) to (supervisor);
+ \draw [->, ultra thick] (data) to (supervisor);
+ \umlactor[x=-10,y=1.8]{Administrateur}
+ \draw [action=initialise] (Administrateur) to (views);
+ \draw [action=configure] (Administrateur) to (supervisor);
+ \end{tikzpicture}
+}
+ \caption{Diagramme (informel) présentant l'architecture de la solution logicielle.}
+ \label{fig:architecture}
+\end{figure}
+Deux opérations~:
+\begin{itemize}
+ \item L'initialisation des vues se fait avec {\tt view\_ctl}.
+ \item La configuration du superviseur se fait avec {\tt supervisor}.
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Détails}
+Le binaire {\tt view\_ctl} est l'interface de la base de données, permettant de~:
+\begin{itemize}
+ \pause
+ \item Créer une nouvelle vue (création interactive ou par fichier de configuration de séquences de modules \nmlp{})
+ \pause
+ \item Lister les vues
+ \pause
+ \item Supprimer une vue
+\end{itemize}
+\pause
+{\tt supervisor} est l'interface des algorithmes d'apprentissage et de test, permettant~:
+\pause
+\begin{itemize}[<+->]
+ \item L'agrégation de vues en un modèle.
+ \item Apprendre ce modèle sur un jeu de données (met à jour les vues dans la base de données.)
+ \item Tester ce modèle sur un jeu de données.
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]{Démonstration}
+\scalebox{0.7}{\texttt{\$ view\_ctl add 'demo in' fourclass\_input\_5.cfg -d demodb}} \newline
+\scalebox{0.7}{\texttt{\$ view\_ctl add 'demo out' fourclass\_output\_5.cfg -d demodb}} \newline
+\pause
+\scalebox{0.7}{\texttt{\$ supervisor \textbf{test} -d demodb fourclass\_test supervisor.cfg '4 in' '4 out'}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass input: 1.52195}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass output: 1.04658}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass input: 2.09861}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass output: 2.9957}} \newline
+\pause
+\scalebox{0.7}{\texttt{\$ supervisor \textbf{train} -d demodb fourclass\_train supervisor.cfg '4 in' '4 out'}} \newline
+\pause
+\scalebox{0.7}{\texttt{\$ supervisor \textbf{test} -d demodb fourclass\_test supervisor.cfg '4 in' '4 out'}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass input: 0.00351782}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass input to view fourclass output: 0.655877}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass input: 0.518831}} \newline
+\scalebox{0.7}{\texttt{Error from view fourclass output to view fourclass output: 1.97268e-06}} \newline
+\end{frame}
+
+\begin{frame}{\emph{Livrable}}
+Quelques notes sur le \emph{livrable}~:
+\vspace{0.5em}
+\begin{itemize}
+ \item L'ensemble du projet est sur un dépôt Mercurial.
+ \vspace{0.5em}
+ \item Le code est entièrement commenté et une documentation développeur est compilable avec Doxygen.
+ \vspace{0.5em}
+ \item Présence de tests unitaires.
+ \vspace{0.5em}
+ \item Aucune dépendance n'a été ajouté à \nmlp{} (usage extensif de Boost)
+ \vspace{0.5em}
+ \item Les exécutables ainsi que la documentation sont compilables avec un simple script CMake.
+\end{itemize}
+\end{frame}
+
+% Conclusion, ouverture
+% Manque dataset, mais c'est ok, code cool et bien documenté.
+\begin{frame}{Conclusion}
+Le sujet a été un peu modifié en cours de route.
+\vspace{1em}
+\pause
+
+\textbf{It works!}
+\vspace{1em}
+\pause
+
+Quelques points négatifs~:
+\vspace{0.5em}
+\begin{itemize}[<+->]
+ \item Les tests ont été réalisés sur des problèmes de classification seulement.\\
+ L'apprentissage sur du multi-vues est déjà codé, mais non testé.
+ \vspace{0.5em}
+ \item L'algorithme d'apprentissage est assez lent (non optimisé).
+\end{itemize}
+\end{frame}
+
+% Questions ?
+\begin{frame}
+\begin{center}
+ \Huge Questions ?
+\end{center}
+\end{frame}
+
\end{document}