mi024

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

commit 44db1a375f6dbd76b24d585e347d958f86d46721
parent 254a2e3e7297a87054193cc4895676da4f33f68a
Author: Étienne Simon <etienne.jl.simon@gmail.com>
Date:   Tue, 14 May 2013 07:41:05 +0200

Update slideshow.

Diffstat:
Mdoc/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}