specifications.tex (9863B)
1 \documentclass[11pt,a4paper]{report} 2 \usepackage{amsfonts} 3 \usepackage{setspace} 4 \usepackage{graphicx} 5 \usepackage{url} 6 \usepackage{epstopdf} 7 \usepackage[T1]{fontenc} 8 \usepackage[utf8]{inputenc} 9 \usepackage[french]{babel} 10 \usepackage{tikz} 11 \usepackage{tikz-uml} 12 \usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,decorations.text} 13 14 \newcommand{\nmlp}{\textsc{nmlp}} 15 \renewcommand{\thesection}{\arabic{section}} 16 17 \begin{document} 18 \begin{titlepage} 19 \begin{center} 20 \begin{minipage}{0.58\textwidth} 21 \includegraphics[width=\textwidth]{images/UPMC_logotype} 22 \end{minipage} 23 \begin{minipage}{0.4\textwidth} 24 \begin{center} 25 \texttt{M I 0 2 4}\\ 26 \vspace{2ex} 27 \textbf{\Large Projet IAD} 28 \end{center} 29 \end{minipage} 30 \vfill 31 \begin{spacing}{2} 32 \textbf{\textsc{\huge Vers une Machine d'apprentissage persistante}} 33 \end{spacing} 34 \vspace{0.1\textheight} 35 {\LARGE Cahier des charges}\\ 36 \vspace{0.1\textheight} 37 {\Large Auteur~: \hfill Encadrant~: \\ 38 Étienne Simon \hfill Ludovic Denoyer} 39 \vfill 40 \today 41 \end{center} 42 \end{titlepage} 43 44 \tableofcontents 45 \pagebreak 46 47 \section{Objectif du PIAD} 48 \subsection{Présentation} 49 Ce PIAD est intitulé «~Vers une Machine d'apprentissage persistante.~» 50 L'objectif sera d'écrire une plateforme pour l'apprentissage et le raisonnement sur des données hétérogènes. 51 Les modèles ainsi appris devront être conservés dans une base de données en vue de leur réutilisation. 52 53 \subsection{Cadre} 54 Le projet sera utilisé dans le cadre de la classification dans des réseaux hétérogènes. 55 Cela fera en projetant les données de différents types dans un espace latente (commun). 56 57 \begin{figure}[h] 58 \centering 59 \begin{tikzpicture} 60 [coder/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}] 61 62 \node [draw,rectangle,rounded corners,minimum size=3cm] (latent space) {Espace latent \(Z\)}; 63 \path (latent space.south)+(-4,-4) node [draw,rectangle,minimum size=2cm] (view 1) {Vue \(X_1\)}; 64 \path (latent space.south)+(0,-4) node [draw,rectangle,minimum size=2cm] (view 2) {Vue \(X_2\)}; 65 \path (latent space.south)+(4,-4) node [draw,rectangle,minimum size=2cm] (view 3) {Vue \(X_3\)}; 66 \draw [coder=encodeur] (view 1.95) to [bend left=15] (latent space.-125); 67 \draw [coder=d{é}codeur] (latent space.-115) to [bend left=15] (view 1.85); 68 \draw [coder=encodeur] (view 2.95) to [bend left=15] (latent space.-95); 69 \draw [coder=d{é}codeur] (latent space.-85) to [bend left=15] (view 2.85); 70 \draw [coder=encodeur] (view 3.95) to [bend left=15] (latent space.-65); 71 \draw [coder=d{é}codeur] (latent space.-55) to [bend left=15] (view 3.85); 72 \draw (latent space.center)+(0,1) node {\(\times z_1\)}; 73 \draw (latent space.center)+(1,0.5) node {\(\times z_2\)}; 74 \draw (latent space.center)+(-0.5,-1) node {\(\times z_3\)}; 75 \draw (view 1.center)+(0.5,0.5) node {\scriptsize\(\times x_1^1\)}; 76 \draw (view 1.center)+(-0.5,-0.5) node {\scriptsize\(\times x_1^2\)}; 77 \draw (view 2.center)+(-0.5,0.5) node {\scriptsize\(\times x_2^3\)}; 78 \draw (view 2.center)+(0,-0.5) node {\scriptsize\(\times x_2^2\)}; 79 \draw (view 3.center)+(0.5,0.5) node {\scriptsize\(\times x_3^2\)}; 80 \end{tikzpicture} 81 \caption{Relation entre les différents espaces} 82 \label{fig:latent_space_presentation} 83 \end{figure} 84 85 La figure \ref{fig:latent_space_presentation} présente les différents espaces entrant en jeu~: 86 \begin{itemize} 87 \item Les vues sont les espaces d'observation, il y en a autant que de type de donnée. 88 Par exemple la vue 1 peut être un espace d'observation textuel et la vue 2 un espace d'observation visuel, au quel cas le vecteur \(x_1^2\) correspond à un mot du type «~chat~» et le vecteur \(x_2^2\) à l'image d'un chat. 89 \item L'espace latent contient les concepts associés aux observations. En conservant l'exemple précèdent, \(z_2\) correspond au concept «~chat.~» 90 \end{itemize} 91 92 Pour faire le lien entre les vecteurs des espaces d'observation et le vecteur de l'espace latent, des encodeur et décodeur sont utilisés, il s'agit de fonctions \( e_i: X_i \mapsto Z \) et \( d_i: Z \mapsto X_i \). 93 Celles-ci sont apprises par des perceptrons multicouches (MLP) selon les observations faites. 94 95 Par ailleurs, des relations sont définis sur les concepts. 96 Les relations sont des sous ensemble de \(Z^2\) elles aussi apprises par des MLP (qui apprendront plutôt des métriques du type \(Z^2 \mapsto \mathbb{R}\).) 97 Un exemple de relation est «~auteur de~» dans le cadre d'un réseau avec des nœuds «~article~» et «~personne.~» 98 99 \subsection{Objectifs principaux} 100 \begin{figure}[ht] 101 \centering 102 \begin{tikzpicture}[scale=0.75, every node/.style={transform shape}] 103 \begin{umlsystem}[x=5]{Solution logicielle} 104 \umlusecase[y=-1,name=add_observation,width=3cm]{Ajout d'observation} 105 \umlusecase[y=-3,name=add_relation,width=3cm]{Ajout d'une relation} 106 \umlusecase[x=4,name=add_concept,width=3cm]{Ajout d'un concept} 107 \umlusecase[x=4,y=-2,name=add_relation_type,width=3cm]{Ajout d'un type de relation} 108 \umlusecase[x=4,y=-4,name=config_supervisor,width=3cm]{Configuration du superviseur} 109 \end{umlsystem} 110 \umlactor[y=-2]{Utilisateur} 111 \umlactor[x=14,y=-2]{Administrateur} 112 113 \umlassoc{Utilisateur}{add_observation} 114 \umlassoc{Utilisateur}{add_relation} 115 \umlassoc{Administrateur}{add_concept} 116 \umlassoc{Administrateur}{add_relation_type} 117 \umlassoc{Administrateur}{config_supervisor} 118 \end{tikzpicture} 119 \caption{Diagramme des cas d'utilisation} 120 \label{fig:use_case_diagram} 121 \end{figure} 122 123 L'objectif principal est d'écrire une plateforme d'apprentissage de représentations latentes. 124 Les objets manipulés doivent être persistant, ainsi, on peut distinguer deux bases de données~: 125 \begin{itemize} 126 \item Une base contenant les données d'apprentissage. 127 \item Une base contenant les modèles appris. 128 \end{itemize} 129 130 Les modèles sont appris sous l'égide d'un superviseur, se sont des MLP et il sont décomposables en trois catégories~: 131 \begin{itemize} 132 \item Les encodeurs qui permettent de projeter un vecteur observé dans l'espace latent. 133 \item Les décodeurs qui permettent de projeter un vecteur concept de l'espace latent dans un espace d'observation. 134 \item Les métriques qui permettent d'établir des relations entre les concepts de l'espace latent. 135 \end{itemize} 136 137 \subsection{Contraintes techniques} 138 \nmlp{} est une bibliothèque permettant l'apprentissage de MLP. 139 Les MLP sont traités comme des ensembles de modules, qui sont appris sous la gouvernance d'un critère. 140 La plateforme développée utilisera \nmlp{} pour la représentation et l'apprentissage des modèles. 141 142 Le développement se fera en C++03 (ISO/IEC 14882:2003). 143 De plus, le livrable devra se limiter autant que possible aux dépendances de \nmlp{}, c'est à dire les bibliothèques Boost et CUDA. 144 Par ailleurs, le code devra fonctionner sous Windows et sous les divers *nix, n'ayant à disposition que des environnements FreeBSD et OpenBSD avec GCC et Clang, l'encadrant devra se charger de vérifier le fonctionnement du code sous Windows. 145 Le livrable devra être compilable avec le moteur de production CMake utilisé par \nmlp{}. 146 147 Pour s'assurer d'un suivi en temps réel du travail effectué, l'ensemble du livrable sera maintenue par un logiciel de gestion de versions, en l'occurrence un dépôt Mercurial sur Bitbucket~:\\ 148 \indent\indent\url{https://bitbucket.org/ejls/mi024} 149 150 \section{Description de la solution demandée} 151 \begin{figure}[h] 152 \centering 153 \begin{tikzpicture} 154 [action/.style={->,ultra thick,postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={|\sffamily|#1}}}}] 155 \node [draw, cylinder, shape border rotate=90, minimum height=4cm, minimum width=3.5cm, aspect=2.5, label={[above]Bases de données}] (database) {}; 156 \path (database.center)+(0,0.75) node [draw] (model) {Modèles}; 157 \path (database.center)+(0,-0.75) node [draw,align=center] (data) {Données \\ d'apprentissage}; 158 \path (database.west)+(-3,0) node [draw, rectangle, rounded corners] (supervisor) {Superviseur}; 159 \draw [<->, ultra thick] (model) to (supervisor); 160 \draw [->, ultra thick] (data) to (supervisor); 161 \umlactor[x=-5,y=-1.5]{Utilisateur} 162 \umlactor[x=-8,y=1.8]{Administrateur} 163 \draw [action=remplit] (Utilisateur) to (data); 164 \draw [action=initialise] (Administrateur) to (model); 165 \draw [action=configure] (Administrateur) to (supervisor); 166 \end{tikzpicture} 167 \caption{Diagramme (informel) présentant l'architecture de la solution logicielle.} 168 \label{fig:architecture} 169 \end{figure} 170 La figure~\ref{fig:architecture} présente les principaux composant de l'architecture logicielle. 171 La majeure partie du travail s'effectuera sur le superviseur. 172 À noté, qu'une fonctionnalité intéressante qui pourra être ajouté est le lancement en parallèle de plusieurs superviseurs (chacun sur un modèle différent), il pourra alors être intéressant de construire un composant pour gérer un ensemble de superviseur (qui enverrait les mêmes données à des superviseurs paramétrés différemment par exemple.) 173 174 Une description plus détaillée avec une liste des activités et un calendrier sont présents dans le plan de développement. 175 176 \section{Composition du livrable} 177 \begin{itemize} 178 \item Un script de compilation CMake 179 \item Des binaires superviseurs 180 \item Une interface d'ajout de données d'apprentissage 181 \item Un contrôleur (serveur) gérant un ensemble de superviseur 182 \item La documentation du projet 183 \begin{itemize} 184 \item Le cahier des charges 185 \item Le plan de développement 186 \item Le dossier d'analyse et de conception 187 \item La documentation développeur 188 \item Le rapport des tests 189 \item Les manpages relatives aux différents binaires 190 \item Les README et INSTALL usuels 191 \item Le rapport final 192 \end{itemize} 193 \end{itemize} 194 \end{document}