diff --git a/figures/lbm.tex b/figures/lbm.tex index 7e2a8a9..629b79c 100644 --- a/figures/lbm.tex +++ b/figures/lbm.tex @@ -26,19 +26,19 @@ transform shape] \node[state, draw=black!50] (R31) at (10,5) {\textbf{R31}}; \tikzstyle{every node}=[fill=burntorange, shape=rectangle] -\node[edge_proba] (pi3) at (0.5,-0.7) +\node[edge_proba] (rho1) at (0.5,-0.9) {\textbf{$\rho_{{\color{burntorange}\bullet}}$}}; \tikzstyle{every state}=[draw=none,text=black,scale=0.75, transform shape, shape=rectangle] \node[state, draw=black!50] (C11) at (0,0) {\textbf{C11}}; \node[state, draw=black!50] (C12) at (1,0) {\textbf{C12}}; \tikzstyle{every node}=[fill=goldenyellow, shape=rectangle] -\node[edge_proba] (pi3) at (4,-0.7) +\node[edge_proba] (rho2) at (4,-0.9) {\textbf{$\rho_{{\color{goldenyellow}\bullet}}$}}; \node[state, draw=black!50] (C21) at (3.5,0) {\textbf{C21}}; \node[state, draw=black!50] (C22) at (4.5,0) {\textbf{C22}}; \tikzstyle{every node}=[fill=peach, shape=rectangle] -\node[edge_proba] (pi3) at (10,-0.7) +\node[edge_proba] (rho3) at (10,-0.9) {\textbf{$\rho_{{\color{peach}\bullet}}$}}; \node[state, draw=black!50] (C31) at (10,0) {\textbf{C31}}; diff --git a/figures/plantpollinatornetwork.tex b/figures/plantpollinatornetwork.tex new file mode 100644 index 0000000..b67fb9f --- /dev/null +++ b/figures/plantpollinatornetwork.tex @@ -0,0 +1,38 @@ +\tikzstyle{every edge}=[-,>=stealth',shorten >=1pt,auto,thin,draw] +\tikzstyle{every state}=[draw, text=white,scale=0.70, font=\scriptsize, transform shape] + +% Upper level +\tikzstyle{every state}=[draw=none,text=white,scale=0.55, font=\scriptsize, transform shape] +% premier cluster +\tikzstyle{every node}=[fill=green!50!blue!20!white] +\node[state] (N1) at (1.1,3) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; +\node[state, right = of N1] (N2) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (.75,3) +\node[state, right = of N2] (N3) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (1.5,3) +\node[state, right = of N3] (N4) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (2.25,3) +% \node[state] (N5) at (3,3) {\includegraphics[width=.1\textwidth]{img/pollen.png}}; +% \node[state] (N6) at (3.75,3) {\includegraphics[width=.1\textwidth]{img/pollen.png}}; + +\tikzstyle{every node}=[shape=rectangle,fill=red!50!blue!20!white] +% \node[state, fill = white] (P) at (-1.5, 0) {\includegraphics[width=.08\textwidth]{img/bee.png}}; +\node[state, tokens=0] (P1) at (-1, 0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; +\node[state, tokens=0, right = of P1] (P2) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (-.25, 0) +\node[state, tokens=0, right = of P2] (P3) {\includegraphics[width=.1\textwidth]{img/bee.png}}; %at (.5, 0) +\node[state, tokens=0, right = of P3] (P4) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (1.25, 0) +\node[state, tokens=0, right = of P4] (P5) {\includegraphics[width=.1\textwidth]{img/bee.png}};% at (2,0) +\node[state, tokens=0, right = of P5] (P6) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (2.75,0) +% \node[state, tokens=0] (P7) at (3.5,0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; +% \node[state, tokens=0] (P8) at (4.25,0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; + +\tikzstyle{every edge}=[>=stealth,shorten >=1pt,auto,thin,draw] +\path (P1) edge (N1); +\path (P2) edge (N1); +\path (P3) edge (N1); +\path (P4) edge (N2); +\path (P4) edge (N1); +\path (P6) edge (N2); +\path (P1) edge (N3); +%\path (P7) edge (N4); +%\path (P8) edge (N5); +%\path (P4) edge (N6); +\path (P5) edge (N3); +\path (P5) edge (N4); \ No newline at end of file diff --git a/presentation.pdf b/presentation.pdf index e346943..5483c90 100644 Binary files a/presentation.pdf and b/presentation.pdf differ diff --git a/principal.tex b/principal.tex index b9a480f..ed1e317 100644 --- a/principal.tex +++ b/principal.tex @@ -21,7 +21,7 @@ \begin{itemize} \item 2022 Mai--Déc., Stage assistant ingénieur en Qualité chez - Eurofins Food France + Eurofins Food France. \item 2023 Janv.--Juillet, Détection de structures dans des collections de réseaux bipartites et écriture du package implémentant la méthode. @@ -43,79 +43,35 @@ \begin{itemize} \item Nombreux réseaux disponibles \parencite{WebLifeEcological} pour interactions similaires. Par exemple, interactions proies-prédateurs, plantes-pollinisateurs \dots - \item Suivi biodiversité, analyse de robustesse et risque d'effondrement - % Ces réseaux permettent un suivi de la biodiversité, de détecter - % et d'analyser la robustesse et les changements subies par ces - % écosystèmes et notamment les risques d'effondrement de la - % biodiversité. + \item Suivi biodiversité, analyse de robustesse et risque d'effondrement. \begin{columns} - \begin{column}{0.6\textwidth} - \begin{figure}[ht] - \centering - \begin{tikzpicture}[scale=.65] - \tikzstyle{every edge}=[-,>=stealth',shorten >=1pt,auto,thin,draw] - \tikzstyle{every state}=[draw, text=white,scale=0.70, font=\scriptsize, transform shape] + \begin{column}{0.6\textwidth} + \begin{figure}[ht] + \centering + \begin{tikzpicture}[scale=.65] + \input{figures/plantpollinatornetwork.tex} + \end{tikzpicture} + \caption{Exemple d'un réseau plantes-pollinisateurs} + \label{fig:plantes-pollin} - % Upper level - \tikzstyle{every state}=[draw=none,text=white,scale=0.55, font=\scriptsize, transform shape] - % premier cluster - \tikzstyle{every node}=[fill=green!50!blue!20!white] - \node[state] (N1) at (1.1,3) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; - \node[state, right = of N1] (N2) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (.75,3) - \node[state, right = of N2] (N3) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (1.5,3) - \node[state, right = of N3] (N4) {\includegraphics[width=.15\textwidth]{img/pollen.png}}; % at (2.25,3) - % \node[state] (N5) at (3,3) {\includegraphics[width=.1\textwidth]{img/pollen.png}}; - % \node[state] (N6) at (3.75,3) {\includegraphics[width=.1\textwidth]{img/pollen.png}}; - - \tikzstyle{every node}=[shape=rectangle,fill=red!50!blue!20!white] - % \node[state, fill = white] (P) at (-1.5, 0) {\includegraphics[width=.08\textwidth]{img/bee.png}}; - \node[state, tokens=0] (P1) at (-1, 0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; - \node[state, tokens=0, right = of P1] (P2) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (-.25, 0) - \node[state, tokens=0, right = of P2] (P3) {\includegraphics[width=.1\textwidth]{img/bee.png}}; %at (.5, 0) - \node[state, tokens=0, right = of P3] (P4) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (1.25, 0) - \node[state, tokens=0, right = of P4] (P5) {\includegraphics[width=.1\textwidth]{img/bee.png}};% at (2,0) - \node[state, tokens=0, right = of P5] (P6) {\includegraphics[width=.1\textwidth]{img/bee.png}}; % at (2.75,0) - % \node[state, tokens=0] (P7) at (3.5,0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; - % \node[state, tokens=0] (P8) at (4.25,0) {\includegraphics[width=.1\textwidth]{img/bee.png}}; - - \tikzstyle{every edge}=[>=stealth,shorten >=1pt,auto,thin,draw] - \path (P1) edge (N1); - \path (P2) edge (N1); - \path (P3) edge (N1); - \path (P4) edge (N2); - \path (P4) edge (N1); - \path (P6) edge (N2); - \path (P1) edge (N3); - %\path (P7) edge (N4); - %\path (P8) edge (N5); - %\path (P4) edge (N6); - \path (P5) edge (N3); - \path (P5) edge (N4); - \end{tikzpicture} - \caption{Exemple d'un réseau plantes-pollinisateurs} - \label{fig:plantes-pollin} - - \end{figure} - \end{column} - \begin{column}{0.39\textwidth} - \centering - \begin{align*} - X = \begin{pmatrix} - 1 & 1 & 1 & 1 & 0 & 0\\ - 0 & 0 & 0 & 1 & 0 & 1 \\ - 1 & 0 & 0 & 0 & 1 & 0 \\ - 0 & 0 & 0 & 0 & 1 & 0 - \end{pmatrix} - \end{align*} - \footnotesize - Matrice d'adjacence associée - \end{column} - \end{columns} + \end{figure} + \end{column} + \begin{column}{0.39\textwidth} + \centering + \begin{align*} + X = \begin{pmatrix} + 1 & 1 & 1 & 1 & 0 & 0 \\ + 0 & 0 & 0 & 1 & 0 & 1 \\ + 1 & 0 & 0 & 0 & 1 & 0 \\ + 0 & 0 & 0 & 0 & 1 & 0 + \end{pmatrix} + \end{align*} + \footnotesize + Matrice d'adjacence associée + \end{column} + \end{columns} \item En écologie microbienne réseaux permettent le suivi de la qualité des sols. - % En écologie microbienne, les réseaux sont construits sur la base - % de co-occurences et reconstruits par inférence des liens mais - % rarement par observation directe. \end{itemize} \end{frame} @@ -123,18 +79,18 @@ \begin{frame}{Contexte mathématique} - Détection de structure\footnote{L'organisation du réseau.} pour un unique + Détection de structure\footnote{L'organisation du réseau.} pour un unique réseau bien connu avec par exemple : \begin{itemize} - \item Modèles de \emph{clustering} à variables latentes - \item \emph{Embedding} par apprentissage profond\\ - \item Et bien d'autres méthodes - \note[item]{Par exemple la détection de communauté, les calculs de métriques comme la centralité} + \item Modèles de \emph{clustering} à variables latentes. + \item \emph{Embedding} par apprentissage profond. + \item Et bien d'autres méthodes. + \note[item]{Par exemple la détection de communauté, les calculs de métriques comme la centralité} \end{itemize} Mais des motivations pour considérer des collections : \begin{itemize} - \item Espèces différentes, rôles analogues + \item Espèces différentes, rôles analogues. % Des espèces différentes dans plusieurs réseaux pourrait % remplir des rôles similaires \item Transfert d'informations grands vers petits réseaux. @@ -145,7 +101,7 @@ % d'autre une prise en compte en collection de réseaux pourrait % aider à transférer de l'information \item Regrouper les réseaux selon leur similarité (\emph{clustering} - de réseaux) + de réseaux). \end{itemize} \end{frame} @@ -210,29 +166,10 @@ $$\forall m \in [\![ 1, M ]\!], Y^m \sim LBM_{n^m_1, n^m_2} (\pi^{\color{red}m}, \rho^{\color{red}m}, \alpha)$$ \end{block} } - % Pour - % \begin{itemize} - % \item $Q_1 = - % |\{{\color{blueind}\bullet},{\color{cyanind}\bullet},{\color{electricblue}\bullet}\}|$ - % blocs fixés en ligne - % \item $Q_2 = - % |\{{\color{burntorange}\bullet},{\color{goldenyellow}\bullet},{\color{peach}\bullet}\}|$ - % blocs fixés en colonne - % \end{itemize} - % \begin{block}{Paramètres} - % \begin{itemize} - % \item $\pi_{\bullet} = \mathbb{P}(Z_i =\bullet)$ en ligne et - % $\rho_{\bullet} = \mathbb{P}(W_j = \bullet)$ en colonne - % \item - % $\alpha_{{\color{blueind}\bullet}{\color{burntorange}\bullet}} = - % \mathbb{P}(X_{ij} = 1 | Z_i = {\color{blueind}\bullet}, W_j = - % {\color{burntorange}\bullet})$ - % \end{itemize} - % \end{block} \end{frame} \begin{frame}{Apport déjà réalisé} \begin{itemize} - \item Écriture du modèle colBiSBM + \item Écriture du modèle colBiSBM. \item Dérivation des formules d'inférence et d'un critère de sélection de modèle par vraisemblance pénalisée (choix du nombre de blocs). \item Implémentation des formules et du critère et développement @@ -298,7 +235,7 @@ \parencite{chabert-liddellLearningCommonStructures2024, celisseConsistencyMaximumlikelihoodVariational2012, keribinEstimationSelectionLatent2015, - braultCoclusteringLatentBloc2015} + braultCoclusteringLatentBloc2015}. \note[item]{Car les blocs vides du modèles $\pi\rho$ posent soucis.} @@ -309,26 +246,6 @@ \subsection[Axe 2]{Axe 2 : Embedding de n\oe uds par apprentissage profond pour comparaison des topologies de réseaux} \label{sec:axe-2} - -% % \begin{tikzpicture}[ -% % vertex/.style = {circle, draw, inner sep=0.5pt, fill=white}, -% % vertex1/.style = {vertex, fill=red!30!white}, -% % vertex2/.style = {vertex, fill=orange!30!white}, -% % vertex3/.style = {vertex, fill=blue!30!white}, -% % vertex4/.style = {vertex, fill=teal!30!white}, -% % scale = 0.5 -% % ] -% % \begin{scope} -% % \draw[thick] -% % (-0.5,0) node[vertex1] (n1^4) {$n_1$} -% % -- (0.25,2.2) node[vertex2] (n2^4) {$n_2$} -% % -- (2,1.6) node[vertex3] (n3^4) {$n_3$} -% % -- (-0.7,1.4) node[vertex4] (n4^4) {$n_4$} -- cycle; -% % \node[left = 0.15cm of n4^4, fill = white] {$Y^m$}; -% % \end{scope} -% % \end{tikzpicture} - - \begin{frame}{\emph{Graph Neural Networks} et \emph{Variational AutoEncoder}} \begin{figure} @@ -367,35 +284,42 @@ % \draw[arrow] (decoder.east) -- (output.west); % \end{tikzpicture} - \includegraphics[scale=0.20]{img/vae.png} + \includegraphics[scale=0.17]{img/vae.png} \caption{Schéma d'\cite{AutoencodeurVariationnel2024}} \label{fig:schema-vgae} \end{figure} + \footnotesize - Problème des graphes pour les réseaux de neurones : \textbf{prise en compte - des invariances}. + \only<1>{ + \begin{block}{\small Problème des graphes pour les réseaux de neurones : + \textbf{prise en compte des invariances}} + \begin{itemize} + \item Utilisation des \emph{Graph Convolutional Networks} de + \cite{kipfSemiSupervisedClassificationGraph2017} résout ce problème. + \item Utiliser des \emph{Variational AutoEncoder} de + \cite{kingmaAutoEncodingVariationalBayes2022c} et de + \cite{kipfVariationalGraphAutoEncoders2016} pour projection des + n\oe uds dans un espace latent. + \item Explorer le \emph{Deep Latent Space Model} + de~\cite{yangDeepLatentSpace2024} + \end{itemize} + \end{block} + } + \only<2>{ + \begin{block}{Idées à explorer pour la comparaison de réseaux} + \begin{itemize} + \item \emph{Embedding} commun des n\oe uds des réseaux à comparer sur un même espace + latent. Puis comparaison des distributions ainsi obtenues. + \item Encodeurs différents mais un décodeur commun pour comparer les + représentations obtenues + \end{itemize} + \end{block} + } - \begin{itemize} - \item Utilisation des \emph{Graph Convolutional Networks} de - \cite{kipfSemiSupervisedClassificationGraph2017} résout ce problème. - \item Utiliser des \emph{Variational AutoEncoder} de - \cite{kingmaAutoEncodingVariationalBayes2022c} et de - \cite{kipfVariationalGraphAutoEncoders2016} pour projection des - n\oe uds dans un espace latent. - \item Explorer le \emph{Deep Latent Space Model} - de~\cite{yangDeepLatentSpace2024} - \end{itemize} \end{frame} -\begin{frame}{Idées à explorer pour la comparaison de réseaux} - \begin{itemize} - \item \emph{Embedding} commun des n\oe uds des réseaux à comparer sur un même espace - latent. Puis comparaison des distributions ainsi obtenues. - \item Encodeurs différents mais un décodeur commun pour comparer les - représentations obtenues - \end{itemize} -\end{frame} + % \begin{frame}[allowframebreaks]{\emph{Graph Neural Networks}} % \begin{figure} @@ -437,11 +361,11 @@ \centering \begin{tabular}{cccc} \hline - & $OTU_1$ & \dots & $OTU_p$ \\ + & $OTU_1$ & \dots & $OTU_p$ \\ \hline - Éch. 1 & $X_{1,1}$ & \dots & $X_{1,p} = 500$ \\ - \vdots& \vdots & & \vdots \\ - Éch. n& $X_{n,1} = 10$ & \dots & $X_{n,p}$ \\ + Éch. 1 & $X_{1,1}$ & \dots & $X_{1,p} = 500$ \\ + \vdots & \vdots & & \vdots \\ + Éch. n & $X_{n,1} = 10$ & \dots & $X_{n,p}$ \\ \hline \end{tabular} \caption{Table d'OTU synthétique} @@ -461,30 +385,30 @@ \end{columns}. \begin{itemize} - \item Avènement des techniques de séquençage et donc disponibilité des - OTU\footnote{Unité Taxonomique Opérationnelle} - \item Incertitude d'inférence disponible mais négligée par la suite, - important pour les réseaux microbiens seulement inférés - \item Autre limites et détails - dans~\cite{matchadoNetworkAnalysisMethods2021} + \item Avènement des techniques de séquençage et donc disponibilité des + OTU\footnote{Unité Taxonomique Opérationnelle} + \item Incertitude d'inférence disponible mais négligée par la suite, + important pour les réseaux microbiens seulement inférés + \item Autre limites et détails + dans~\cite{matchadoNetworkAnalysisMethods2021} \end{itemize} - + \end{frame} \begin{frame}{Idées à explorer pour l'inférence jointe de réseaux} \begin{itemize} \item Avec $M$ tableaux d'OTU, on peut supposer : - \begin{block}{Modèle hiérarchique} - \begin{align*} - \forall m \in [\![1,M]\!],~& X_1^m, \dots, X_p^m \rightsquigarrow \mathcal{M}(Y^m)& \\ - & Y^m \rightsquigarrow LBM(\pi, \rho, \alpha) \text{ ou } Y^m \rightsquigarrow DLSM(f_D, f_E) & - \end{align*} - \end{block} + \begin{block}{Modèle hiérarchique} + \begin{align*} + \forall m \in [\![1,M]\!],~ & X_1^m, \dots, X_p^m \rightsquigarrow \mathcal{M}(Y^m) & \\ + & Y^m \rightsquigarrow LBM(\pi, \rho, \alpha) \text{ ou } Y^m \rightsquigarrow DLSM(f_D, f_E) & + \end{align*} + \end{block} \item Réussir à mettre en évidence des bactéries aux rôles fonctionnels - proches selon des conditions d'expériences différentes en tenant - compte de l'incertitude d'inférence + proches selon des conditions d'expériences différentes en tenant + compte de l'incertitude d'inférence \item Formaliser une méthode pour déterminer si le changement d'unité - taxonomique change la structure + taxonomique change la structure \end{itemize} \end{frame} \section{Organisation de la thèse}