redaction sur les VDM
This commit is contained in:
parent
181a446f87
commit
ebad378dc9
BIN
assets/vdm-architecture.png
(Stored with Git LFS)
BIN
assets/vdm-architecture.png
(Stored with Git LFS)
Binary file not shown.
|
@ -116,6 +116,7 @@
|
||||||
\newacronym{mmd}{MMD}{Minimum Matching Distance}
|
\newacronym{mmd}{MMD}{Minimum Matching Distance}
|
||||||
\newacronym{1-nna}{1-NNA}{1-Nearest Neighbor Accuracy}
|
\newacronym{1-nna}{1-NNA}{1-Nearest Neighbor Accuracy}
|
||||||
|
|
||||||
|
\newacronym{elbo}{ELBO}{Evidence Lower Bound}
|
||||||
\newacronym{vdm}{VDM}{Variational Diffusion Model}
|
\newacronym{vdm}{VDM}{Variational Diffusion Model}
|
||||||
\newacronym{ldm}{LDM}{Latent Diffusion Model}
|
\newacronym{ldm}{LDM}{Latent Diffusion Model}
|
||||||
\newacronym{cfg}{CFG}{Classifier-Free Guidance}
|
\newacronym{cfg}{CFG}{Classifier-Free Guidance}
|
||||||
|
@ -268,22 +269,22 @@ Les graphes offrent une représentation intuitive de diverses structures telles
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les \gls{gnn} sont une famille de modèles qui permettent de traiter ce type de structures de données. Ces modèles sont majoritairement basés sur des opérations de convolution et d'agrégation, similairement aux opérations de convolution et de pooling utilisées dans les réseaux de neurones pour les modalités plus classique comme les images.
|
Les \gls{gnn} sont une famille de modèles qui permettent de traiter ce type de structures de données. Ces modèles sont majoritairement basés sur des opérations de convolution et d'agrégation, similairement aux opérations de convolution et de pooling utilisées dans les réseaux de neurones pour les modalités plus classique comme les images.
|
||||||
On retrouve de même dans les \gls{gnn} des architectures avancées, inspirées des réseaux de neurones classiques, comme les réseaux résiduels\cite{gao_graph_2019}, les réseaux récurrents\cite{li_gated_2017} ou l'attention\cite{velickovic_graph_2018,brody_how_2022}.
|
On retrouve de même dans les \gls{gnn} des architectures avancées, inspirées des réseaux de neurones classiques, comme les réseaux résiduels~\cite{gao_graph_2019}, les réseaux récurrents~\cite{li_gated_2017} ou l'attention~\cite{velickovic_graph_2018,brody_how_2022}.
|
||||||
|
|
||||||
% Mais on retrouve aussi des architectures spécifiques aux \gls{gnn} comme PointNet\cite{qi_pointnet_2017,qi_pointnet_2017-1} ou GraphSAGE\cite{hamilton_inductive_2017}, qui ne permettent de traiter uniquement que des données non structurées
|
% Mais on retrouve aussi des architectures spécifiques aux \gls{gnn} comme PointNet~\cite{qi_pointnet_2017,qi_pointnet_2017-1} ou GraphSAGE~\cite{hamilton_inductive_2017}, qui ne permettent de traiter uniquement que des données non structurées
|
||||||
|
|
||||||
Les applications les plus courantes de ces réseaux incluent la classification\cite{kipf_semi-supervised_2017} de documents, la détection de fraudes\cite{ma_comprehensive_2021} et les systèmes de recommandation\cite{gao_survey_2023}. En revanche, la génération de graphes est moins répandue et se limite souvent dans la littérature à la génération de petites molécules\cite{kipf_graph_2020,simonovsky_graphvae_2018}.
|
Les applications les plus courantes de ces réseaux incluent la classification~\cite{kipf_semi-supervised_2017} de documents, la détection de fraudes~\cite{ma_comprehensive_2021} et les systèmes de recommandation~\cite{gao_survey_2023}. En revanche, la génération de graphes est moins répandue et se limite souvent dans la littérature à la génération de petites molécules~\cite{kipf_graph_2020,simonovsky_graphvae_2018}.
|
||||||
|
|
||||||
% \cite{thomas_kpconv_2019}
|
% ~\cite{thomas_kpconv_2019}
|
||||||
% \cite{tang_searching_2020}
|
% ~\cite{tang_searching_2020}
|
||||||
% \cite{liu_point-voxel_2019}
|
% ~\cite{liu_point-voxel_2019}
|
||||||
|
|
||||||
\FloatBarrier
|
\FloatBarrier
|
||||||
\section{Modèles génératifs}
|
\section{Modèles génératifs}
|
||||||
|
|
||||||
Les modèles génératifs sont une famille de modèles qui permettent de générer de nouvelles données d'une distribution de données au préalablement apprise. Ces modèles sont très utilisés dans le domaine de l'apprentissage automatique pour générer des images, du texte ou encore de la musique. Ces modèles sont encore relativement peu utilisés dans le domaine de l'ingénierie pour générer des pièces industrielles.
|
Les modèles génératifs sont une famille de modèles qui permettent de générer de nouvelles données d'une distribution de données au préalablement apprise. Ces modèles sont très utilisés dans le domaine de l'apprentissage automatique pour générer des images, du texte ou encore de la musique. Ces modèles sont encore relativement peu utilisés dans le domaine de l'ingénierie pour générer des pièces industrielles.
|
||||||
|
|
||||||
Il existe plusieurs sous familles de modèles génératifs, chacune basées sur des principes différents, possédant ainsi des avantages et des inconvénients. Il est donc important de bien comprendre les différences entre ces modèles pour pouvoir choisir le modèle le plus adapté à la problématique. Plusieurs études ont déjà été réalisées pour comparer ces modèles, nous nous baserons donc partiellement sur ces études\cite{faez_deep_2020,guo_systematic_2022,zhu_survey_2022} pour présenter les modèles les plus pertinents pour notre problématique.
|
Il existe plusieurs sous familles de modèles génératifs, chacune basées sur des principes différents, possédant ainsi des avantages et des inconvénients. Il est donc important de bien comprendre les différences entre ces modèles pour pouvoir choisir le modèle le plus adapté à la problématique. Plusieurs études ont déjà été réalisées pour comparer ces modèles, nous nous baserons donc partiellement sur ces études~\cite{faez_deep_2020,guo_systematic_2022,zhu_survey_2022} pour présenter les modèles les plus pertinents pour notre problématique.
|
||||||
|
|
||||||
\begin{figure}[h!]
|
\begin{figure}[h!]
|
||||||
\centering
|
\centering
|
||||||
|
@ -307,11 +308,11 @@ Il existe plusieurs sous familles de modèles génératifs, chacune basées sur
|
||||||
\label{fig:gan-architecture}
|
\label{fig:gan-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les \gls{gan} sont la famille de modèles génératifs la plus renommée et également la plus ancienne\cite{goodfellow_generative_2014}. Ces modèles reposent sur un principe compétitif impliquant deux réseaux de neurones. Le premier réseau, connu sous le nom de générateur, a pour objectif de produire de nouvelles données. Le deuxième réseau, appelé discriminateur, est chargé de distinguer les données générées par le générateur des données réelles. Le générateur est entraîné à tromper le discriminateur tandis que le discriminateur est entraîné à identifier les données générées par rapport aux données réelles. Cette compétition entre les deux réseaux permet de former le générateur à générer des données de plus en plus réalistes. Ce type d'apprentissage est auto-supervisé, car il ne nécessite pas l'utilisation d'annotations sur les données pour entraîner le modèle.
|
Les \gls{gan} sont la famille de modèles génératifs la plus renommée et également la plus ancienne~\cite{goodfellow_generative_2014}. Ces modèles reposent sur un principe compétitif impliquant deux réseaux de neurones. Le premier réseau, connu sous le nom de générateur, a pour objectif de produire de nouvelles données. Le deuxième réseau, appelé discriminateur, est chargé de distinguer les données générées par le générateur des données réelles. Le générateur est entraîné à tromper le discriminateur tandis que le discriminateur est entraîné à identifier les données générées par rapport aux données réelles. Cette compétition entre les deux réseaux permet de former le générateur à générer des données de plus en plus réalistes. Ce type d'apprentissage est auto-supervisé, car il ne nécessite pas l'utilisation d'annotations sur les données pour entraîner le modèle.
|
||||||
|
|
||||||
Les \gls{gan} ont su démontrer leur efficacité pour générer des images réalistes. Cependant, ces modèles sont très difficiles à entraîner\cite{arjovsky_towards_2017}. Les \gls{gan} sont par exemple suceptibles à de nombreux problème\cite{zhao_bias_2018}, tel que le problème de \textit{mode collapse}, où le générateur génère toujours la même image, mais aussi le problème de \textit{non convergence}, où le générateur et/ou le discriminateur ont une fonction de cout instable et ne convergent ainsi pas vers un équilibre de Nash, ou encore au problème de \textit{vanishing gradient}, où le discriminateur devient trop efficace et empêche le générateur d'apprendre.
|
Les \gls{gan} ont su démontrer leur efficacité pour générer des images réalistes. Cependant, ces modèles sont très difficiles à entraîner~\cite{arjovsky_towards_2017}. Les \gls{gan} sont par exemple suceptibles à de nombreux problème~\cite{zhao_bias_2018}, tel que le problème de \textit{mode collapse}, où le générateur génère toujours la même image, mais aussi le problème de \textit{non convergence}, où le générateur et/ou le discriminateur ont une fonction de cout instable et ne convergent ainsi pas vers un équilibre de Nash, ou encore au problème de \textit{vanishing gradient}, où le discriminateur devient trop efficace et empêche le générateur d'apprendre.
|
||||||
|
|
||||||
Au fil des années, de nombreuses améliorations\cite{salimans_improved_2016}, variations (WGAN\cite{arjovsky_wasserstein_2017}, etc.) et cas d'applications (CycleGAN\cite{zhu_unpaired_2020}, SGAN\cite{odena_semi-supervised_2016}, SRGAN\cite{ledig_photo-realistic_2017}, DragGAN\cite{pan_drag_2023}, etc.) ont été proposées, mais ces modèles restent complexes à entraîner et à évaluer. De plus, ces modèles sont très sensibles aux hyperparamètres et nécessitent une grande quantité de données pour être efficaces.
|
Au fil des années, de nombreuses améliorations~\cite{salimans_improved_2016}, variations (WGAN~\cite{arjovsky_wasserstein_2017}, etc.) et cas d'applications (CycleGAN~\cite{zhu_unpaired_2020}, SGAN~\cite{odena_semi-supervised_2016}, SRGAN~\cite{ledig_photo-realistic_2017}, DragGAN~\cite{pan_drag_2023}, etc.) ont été proposées, mais ces modèles restent complexes à entraîner et à évaluer. De plus, ces modèles sont très sensibles aux hyperparamètres et nécessitent une grande quantité de données pour être efficaces.
|
||||||
|
|
||||||
Face à ces inconvénients, et puisque nous ne possédons pas de grandes quantités de données, nous avons choisi de ne pas utiliser cette famille de modèles.
|
Face à ces inconvénients, et puisque nous ne possédons pas de grandes quantités de données, nous avons choisi de ne pas utiliser cette famille de modèles.
|
||||||
|
|
||||||
|
@ -328,15 +329,15 @@ Face à ces inconvénients, et puisque nous ne possédons pas de grandes quantit
|
||||||
\label{fig:vae-architecture}
|
\label{fig:vae-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les \gls{vae} constituent une autre famille de modèles génératifs, également bien connue comme les \gls{gan} et relativement tout aussi anciens\cite{kingma_auto-encoding_2022,kipf_variational_2016,doersch_tutorial_2021}. Ces modèles reposent sur l'entraînement simultané de deux réseaux de neurones: un encodeur et un décodeur. L'objectif de l'encodeur est de transformer les données d'entrée en une distribution de probabilité, tandis que le décodeur génère de nouvelles données à partir de cette distribution. Comme pour les \gls{gan}, ces modèles visent à estimer une distribution de données qui se rapproche le plus possible de la distribution des données d'entraînement, c'est-à-dire qu'ils apprennent à reproduire fidèlement les données d'origine.
|
Les \gls{vae} constituent une autre famille de modèles génératifs, également bien connue comme les \gls{gan} et relativement tout aussi anciens~\cite{kingma_auto-encoding_2022,kipf_variational_2016,doersch_tutorial_2021}. Ces modèles reposent sur l'entraînement simultané de deux réseaux de neurones: un encodeur et un décodeur. L'objectif de l'encodeur est de transformer les données d'entrée en une distribution de probabilité, tandis que le décodeur génère de nouvelles données à partir de cette distribution. Comme pour les \gls{gan}, ces modèles visent à estimer une distribution de données qui se rapproche le plus possible de la distribution des données d'entraînement, c'est-à-dire qu'ils apprennent à reproduire fidèlement les données d'origine.
|
||||||
|
|
||||||
La particularité inhérente aux \gls{vae} réside dans l'espace latent intermédiaire situé entre l'encodeur et le décodeur.
|
La particularité inhérente aux \gls{vae} réside dans l'espace latent intermédiaire situé entre l'encodeur et le décodeur.
|
||||||
La recherche sur l'interprétabilité des réseaux de neurones et leur visualisations\cite{olah2017feature} établissent que les espaces latents permettent d'extraire les informations sous-jacentes (non directement perceptibles) des données d'entrée. Travailler sur ces informations s'avère avantageux car elles décrivent plus simplement et précisement les données d'entrée.
|
La recherche sur l'interprétabilité des réseaux de neurones et leur visualisations~\cite{olah2017feature} établissent que les espaces latents permettent d'extraire les informations sous-jacentes (non directement perceptibles) des données d'entrée. Travailler sur ces informations s'avère avantageux car elles décrivent plus simplement et précisement les données d'entrée.
|
||||||
De même, la dimension de cette espace latent est configurée par l'architecture du réseau et peut être réduite à volonté. L'encodeur et le décodeur peuvent ainsi être conceptualisés comme des opérateurs de compression et de décompression.
|
De même, la dimension de cette espace latent est configurée par l'architecture du réseau et peut être réduite à volonté. L'encodeur et le décodeur peuvent ainsi être conceptualisés comme des opérateurs de compression et de décompression.
|
||||||
|
|
||||||
L'intéret de cet espace latent, lorsqu'il est accompagné de sont decodeur, est qu'il permet de générer de nouvelles données, par example en échantillonant $z = \mu + \sigma \odot \epsilon$, ou bien en interpolant entre deux points latents, ou encore en modifiant légèrement un point spécifique de cet espace. Avoir la possibilité de générer de nouvelles données semblables aux données d'origine se révèle extrêmement utile dans le domaine de l'ingénierie, offrant ainsi des possibilités de création et de conception de nouvelles données basées sur des modèles existants.
|
L'intéret de cet espace latent, lorsqu'il est accompagné de sont decodeur, est qu'il permet de générer de nouvelles données, par example en échantillonant $z = \mu + \sigma \odot \epsilon$, ou bien en interpolant entre deux points latents, ou encore en modifiant légèrement un point spécifique de cet espace. Avoir la possibilité de générer de nouvelles données semblables aux données d'origine se révèle extrêmement utile dans le domaine de l'ingénierie, offrant ainsi des possibilités de création et de conception de nouvelles données basées sur des modèles existants.
|
||||||
|
|
||||||
Tout comme les \gls{gan}, de nombreuses améliorations (β-VAE\cite{burgess_understanding_2018,higgins_beta-vae_2022,alemi_deep_2019}, f-VAE\cite{su_f-vaes_2018}) et variations (SetVAE\cite{kim_setvae_2021}, AutoDecoder\cite{shah_auto-decoding_2020}, GraphVAE\cite{simonovsky_graphvae_2018}) ont été proposées pour les \gls{vae}. Ces modèles sont plus faciles à entraîner que les \gls{gan} et présentent une plus grande stabilité. Cependant, les \gls{vae} ont tendance à générer des données floues et peu réalistes\cite{yacoby_failure_2021}, et en général produisent des résultats de moins bonne qualité que les \gls{gan}, en particulier pour des résolutions élevées.
|
Tout comme les \gls{gan}, de nombreuses améliorations (β-VAE~\cite{burgess_understanding_2018,higgins_beta-vae_2022,alemi_deep_2019}, f-VAE~\cite{su_f-vaes_2018}) et variations (SetVAE~\cite{kim_setvae_2021}, AutoDecoder~\cite{shah_auto-decoding_2020}, GraphVAE~\cite{simonovsky_graphvae_2018}) ont été proposées pour les \gls{vae}. Ces modèles sont plus faciles à entraîner que les \gls{gan} et présentent une plus grande stabilité. Cependant, les \gls{vae} ont tendance à générer des données floues et peu réalistes~\cite{yacoby_failure_2021}, et en général produisent des résultats de moins bonne qualité que les \gls{gan}, en particulier pour des résolutions élevées.
|
||||||
|
|
||||||
% parler de l'opti du log likely hood, de l'elbo, placer ce qu'on optimise quoi
|
% parler de l'opti du log likely hood, de l'elbo, placer ce qu'on optimise quoi
|
||||||
|
|
||||||
|
@ -357,10 +358,10 @@ nous avons choisi d'explorer ces modèles dans un premier temps lors de nos expe
|
||||||
|
|
||||||
% on est capable de calculer exactement le log likelyhood, et donc de train direct dessus, contrairement aux VAE où on train sur l'ELBO ou les GANS où y'a pas du tout de log likelyhood, jsute un minmnax game
|
% on est capable de calculer exactement le log likelyhood, et donc de train direct dessus, contrairement aux VAE où on train sur l'ELBO ou les GANS où y'a pas du tout de log likelyhood, jsute un minmnax game
|
||||||
|
|
||||||
Les \gls{nf} sont une autre classe de modèles génératifs qui ont gagné en popularité ces dernières années\cite{kobyzev_normalizing_2021}, puisque ces méthodes proposent de travailler directement sur les densités de probabilité, contrairement aux \gls{vae} et \gls{gan}. Ces modèles se basent des transformations inversibles (bijectives), continues et différentiables. Ces transformations sont appliquées à une distribution de base, généralement une distribution simple comme une gaussienne isotropique, pour obtenir une distribution plus complexe et plus proche de la distribution des données réelles.
|
Les \gls{nf} sont une autre classe de modèles génératifs qui ont gagné en popularité ces dernières années~\cite{kobyzev_normalizing_2021}, puisque ces méthodes proposent de travailler directement sur les densités de probabilité, contrairement aux \gls{vae} et \gls{gan}. Ces modèles se basent des transformations inversibles (bijectives), continues et différentiables. Ces transformations sont appliquées à une distribution de base, généralement une distribution simple comme une gaussienne isotropique, pour obtenir une distribution plus complexe et plus proche de la distribution des données réelles.
|
||||||
Les transformations inversibles utilisées dans les \gls{nf} sont souvent paramétrisées par des réseaux de neurones, ce qui permet d'apprendre des fonctions non linéaires complexes. En utilisant plusieurs transformations en séquence, on peut construire des modèles génératifs flexibles capables de capturer des distributions complexes.
|
Les transformations inversibles utilisées dans les \gls{nf} sont souvent paramétrisées par des réseaux de neurones, ce qui permet d'apprendre des fonctions non linéaires complexes. En utilisant plusieurs transformations en séquence, on peut construire des modèles génératifs flexibles capables de capturer des distributions complexes.
|
||||||
|
|
||||||
Dans la littérature, ces réseaux sont assez peu appliqués aux types de données qui nous intéressent, à l'exception notable de PointFlow\cite{yang_pointflow_2019} qui aura posé certaines bases pour évaluer les réseaux génératifs de nuages de points. Comme par exemple la démocratisation des distances et métriques suivantes:
|
Dans la littérature, ces réseaux sont assez peu appliqués aux types de données qui nous intéressent, à l'exception notable de PointFlow~\cite{yang_pointflow_2019} qui aura posé certaines bases pour évaluer les réseaux génératifs de nuages de points. Comme par exemple la démocratisation des distances et métriques suivantes:
|
||||||
|
|
||||||
\subsubsection{\gls{kld}}
|
\subsubsection{\gls{kld}}
|
||||||
|
|
||||||
|
@ -441,34 +442,41 @@ En supposant que $S_g$ et $S_r$ soient échantillonnés à partir de la même di
|
||||||
\includegraphics[width=14cm]{vdm-architecture.png}
|
\includegraphics[width=14cm]{vdm-architecture.png}
|
||||||
\caption{Architecture d'un \gls{vdm}}
|
\caption{Architecture d'un \gls{vdm}}
|
||||||
\vspace*{-11pt}
|
\vspace*{-11pt}
|
||||||
\caption*{Source: \href{https://lilianweng.github.io/posts/2021-07-11-diffusion-models/}{Lilian Weng, 2021}}
|
\caption*{Source: Calvin Luo~\cite{luo_understanding_2022}}
|
||||||
\label{fig:vdm-architecture}
|
\label{fig:vdm-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les \gls{vdm} sont la famille de réseaux générateurs la plus récente et aussi la plus performante\cite{dhariwal_diffusion_2021}. La manière la plus simple de décrire ces modèles est de les considérer comme une mélange des \gls{vae} et des \gls{nf}. En effet, le principe des \gls{vdm} est de trouver un processus réversible entre notre distribution de données et distribution totalement différente, mais que l'on connait de préférence parfaitement mathématiquement, comme une gaussienne isotropique par exemple. Dans leur architecture, les \gls{vdm} peuvent être vus comme des \gls{vae} hiérarchiques où la taille de la dimension latente est égale à celle des données d'entrée, et où les encodeurs ne sont pas appris, mais sont déterminés par le processus de diffusion. De même, contrairement aux \gls{nf}, les \gls{vdm} ne sont pas basés sur des transformations déterministes et continues, mais sur des transformations stochastiques et discrètes.
|
Les \gls{vdm}s sont la famille de réseaux générateurs la plus récente et aussi la plus performante~\cite{dhariwal_diffusion_2021}. La manière la plus simple de décrire ces modèles est de les considérer comme une mélange des \gls{vae}s et des \gls{nf}s. En effet, le principe des \gls{vdm}s est de trouver un processus basé sur des transformation stochastiques, discrètes et réversible entre notre distribution de données et distribution totalement différente, mais que l'on connait de préférence parfaitement mathématiquement.
|
||||||
|
|
||||||
On note p les "encodeurs" et q les "décodeurs" de la chaine de markov. On note $x_0$ un échantillon de notre distribution de données, $x_T$ un échantillon d'une normale isotropique, et $x_t$ tout échantillon intermédiaire. On note $t$ le temps de diffusion, $T$ le temps final de diffusion.
|
Plusieurs catégories de modèles sont disponibles pour aborder le problème de la diffusion, parmi lesquelles émerge la plus reconnue, à savoir les \gls{ddpm}~\cite{ho_denoising_2020}. Cette approche vise à identifier une correspondance entre les données observées et une distribution gaussienne standard. Ce processus est appris au moyen d'un modèle paramétrique (i.e. un réseau de neurones).
|
||||||
|
|
||||||
$$ q(x_t | x_{t-1}) = \mathcal{N} ( x_t; \sqrt{\alpha_t} x_0, (1 - \alpha_t) I ) $$
|
Dans leur architecture, les \gls{vdm}s peuvent être vus comme une chaine de Markov de \gls{vae}s hiérarchiques avec trois restrictions notable:
|
||||||
|
\begin{itemize}
|
||||||
|
\item La dimension latente est exactement égale à la dimension des données d'entrée.
|
||||||
|
\item La structure de l'encodeur est fixe et pré-définie. Il s'agit d'un encodeur linéaire gaussien, c'est-à-dire une distribution gaussienne centrée autour de la sortie de l'étape précédente.
|
||||||
|
\item Les paramètres de l'encodeur varient au cours du temps de sorte que la distribution latente à l'étape finale $T$ soit une gaussienne standard.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
comme somme de gaussienne on peut montrer que :
|
On note $q$ les "encodeurs" et $p$ les "décodeurs" des \gls{vae}s de la chaine de Markov, $x_0 \sim \boldsymbol{x}_0$ un échantillon de notre distribution de données, $x_T \sim \boldsymbol{x}_T$ un échantillon d'une normale isotropique, et $x_t \sim \boldsymbol{x}_t$ tout échantillon intermédiaire, avec $t$ le temps de diffusion, $T$ le temps final de diffusion.
|
||||||
|
|
||||||
$$ q(x_t | x_0) = \mathcal{N} ( x_t; \sqrt{\overline\alpha_t} x_0, (1 - \overline\alpha_t) I ) $$
|
D'après les contraintes précédentes, on peut écrire pour le forward process:
|
||||||
|
$$ q(\boldsymbol{x}_t | \boldsymbol{x}_{t-1}) = \mathcal{N} ( \boldsymbol{x}_t; \sqrt{\alpha_t} \boldsymbol{x}_0, (1 - \alpha_t) \mathbf{I} ) $$
|
||||||
|
avec $\alpha_t \in [0, 1]$ qui évolue en $t$ selon une suite fixée ou apprenable (i.e. via un réseau de neurones).
|
||||||
|
|
||||||
où $\overline\alpha_t = \prod_{t=1}^t \alpha_t$.
|
Cependant puisque toutes ces opérations sont linéaires et gaussiennes, si l'on souhaite obtenir $x_t$ à partir de $x_0$, au lieu d'appliquer $t$ fois cette relation, on peut simplifier comme suit:
|
||||||
|
$$ q(\boldsymbol{x}_t | \boldsymbol{x}_0) = \mathcal{N} ( \boldsymbol{x}_t; \sqrt{\overline\alpha_t} \boldsymbol{x}_0, (1 - \overline\alpha_t) \mathbf{I} ), \quad \overline\alpha_t = \prod_{t=1}^t \alpha_t$$
|
||||||
|
L'objectif de la diffusion est de trouver une approximation du processus inverse $p_\theta (\boldsymbol{x}_{t-1} | \boldsymbol{x}_t) \approx p(\boldsymbol{x}_{t-1} | \boldsymbol{x}_t)$.
|
||||||
|
Cependant via une dérivation de l'\gls{elbo} et un conditionnement additionnel, on peut montrer que cela revient à minimiser la \gls{kld} entre $q(\boldsymbol{x}_{t-1} | \boldsymbol{x}_t, \boldsymbol{x_0})$ et $p_\theta (\boldsymbol{x}_{t-1} | \boldsymbol{x}_t)$. Ensuite, via une application de la formule de Bayes, on obtient:
|
||||||
|
$$ q(\boldsymbol{x}_{t-1} | \boldsymbol{x}_t, \boldsymbol{x_0}) \propto \mathcal{N} ( \boldsymbol{x}_{t-1}; \mu_q (\boldsymbol{x}_t, \boldsymbol{x}_0), \Sigma_q (\boldsymbol{x}_t) ) $$
|
||||||
|
avec:
|
||||||
|
$$ \mu_q (\boldsymbol{x}_t, \boldsymbol{x}_0) = \frac{ \sqrt{\alpha_t} (1 - \overline{\alpha}_{t-1}) \boldsymbol{x}_t + \sqrt{\overline{\alpha}_{t-1}} (1 - \alpha_t) \boldsymbol{x}_0 } { 1 - \overline{\alpha}_t }, \quad \Sigma_q (\boldsymbol{x}_t) = \frac{ (1 - \alpha_t)(1 - \overline{\alpha}_{t-1}) } { 1 - \overline{\alpha}_t } $$
|
||||||
|
On peut finalement simplifier cette expression via une reparamétrisation:
|
||||||
|
$$ \boldsymbol{x}_0 = \frac{ \boldsymbol{x}_T - \sqrt{1 - \overline{\alpha}_t} \epsilon_0 } { \sqrt{\overline{\alpha}_t} } \implies \mu_q (\boldsymbol{x}_t, \boldsymbol{x}_0) = \frac{ 1 } { \sqrt{\alpha} } \boldsymbol{x}_t - \frac{ 1 - \alpha_t } { \sqrt{ 1 - \overline{\alpha}_t } \sqrt{\alpha_t} } \epsilon_0 $$
|
||||||
|
Si l'on réeffectue une dérivation de l'\gls{elbo} avec ces nouvelles expressions, on en conclut qu'il suffit de trouver une approximation $\epsilon_\theta (\boldsymbol{x}_t, t) \approx \epsilon_0$. En pratique on utilise un réseau de neurones que l'on entraine à minimiser $|\| \epsilon_0 - \epsilon_\theta (\boldsymbol{x}_t, t) \|_2^2$. Une fois cette approximation trouvée, on peut facilement remonter à $p_\theta (\boldsymbol{x}_{t-1} | \boldsymbol{x}_t)$.
|
||||||
|
|
||||||
% remplacer par les trois petits points
|
Il est possible de démontrer théoriquement~\cite{luo_understanding_2022} l'équivalence entre les \gls{vdm}s et les méthodes de score matching~\cite{song_generative_2020} lorsque $T$ tend vers l'infini. Les méthodes de score matching, constituent une famille de techniques permettant l'estimation de la densité de probabilité associée à un ensemble de données. Elles se basent exclusivement sur le calcul du gradient de cette densité de probabilité, éliminant ainsi la nécessité du calcul laborieux d'une constante de normalisation. Une fois le gradient estimé, la densité de probabilité peut être retrouvée au moyen de méthodes d'échantillonnage telles que la méthode de recuit de Langevin~\cite{song_generative_2020}.
|
||||||
donc $ x_t = \sqrt{\overline\alpha_t} x_0 + \sqrt{1 - \overline\alpha_t} \epsilon $
|
|
||||||
|
|
||||||
où $\epsilon \sim \mathcal{N}(0, I)$
|
Après avoir achevé l'entraînement adéquat de notre modèle, nous acquérons ainsi la capacité de débruiter nos données altérées par un bruit gaussien. Néanmoins, l'intérêt majeur réside dans le fait de solliciter notre réseau pour débruiter du bruit blanc (i.e. $\mathcal{N}(0, \sigma^2), \text{SNR}=0$). De ce fait, le réseau commence à halluciner reconstructions qui présentent une forte ressemblance avec nos données d'entraînement, il génère donc de nouvelles données.
|
||||||
|
|
||||||
% insérer ici image chaine markov
|
|
||||||
|
|
||||||
Il est possible de démontrer théoriquement~\cite{luo_understanding_2022} l'équivalence entre les \gls{vdm} et les méthodes de score matching lorsque le nombre de nœuds dans la chaîne de Markov, noté par $T$, tend vers l'infini. Les méthodes de score matching~\cite{song_generative_2020}, constituent une famille de techniques permettant l'estimation de la densité de probabilité associée à un ensemble de données. Elles se basent exclusivement sur le calcul du gradient de cette densité de probabilité, éliminant ainsi la nécessité du calcul laborieux de la constante de normalisation. Une fois le gradient estimé, la densité de probabilité peut être retrouvée au moyen de méthodes d'échantillonnage telles que la méthode de recuit de Langevin~\cite{song_generative_2020}.
|
|
||||||
|
|
||||||
Plusieurs catégories de modèles sont disponibles pour aborder le problème de la diffusion, parmi lesquelles émerge la plus reconnue, à savoir les \gls{ddpm} \cite{ho_denoising_2020}. Cette approche vise à identifier une correspondance réversible et discrète entre les données observées et une distribution gaussienne isotropique. Ce processus de mise en correspondance est appris au moyen d'un modèle paramétrique (i.e. un réseau de neurones). À cette fin, des données altérées par une certaine quantité de bruit sont fournies en entrée, et le réseau est sollicité pour prédire la composante de bruit ajoutée. En utilisant cette prédiction, il devient possible de calculer l'erreur, de propager cette dernière en sens inverse et, par conséquent, d'optimiser le réseau.
|
|
||||||
|
|
||||||
Après avoir achevé l'entraînement adéquat de notre modèle, nous acquérons ainsi la capacité de débruiter nos données altérées par un bruit gaussien. Néanmoins, l'intérêt majeur réside dans le fait de solliciter notre réseau pour débruiter du bruit pure (i.e. $SNR=0$). À ce stade, le réseau commence à générer des reconstructions qui présentent une forte ressemblance avec nos données d'entraînement, entraînant ainsi des phénomènes d'hallucination.
|
|
||||||
|
|
||||||
\FloatBarrier
|
\FloatBarrier
|
||||||
\glsreset{ldm}
|
\glsreset{ldm}
|
||||||
|
@ -479,11 +487,11 @@ Après avoir achevé l'entraînement adéquat de notre modèle, nous acquérons
|
||||||
\includegraphics[width=6cm]{ldm-compression.jpg}\hspace*{5mm}\includegraphics[width=10cm]{ldm-architecture.png}
|
\includegraphics[width=6cm]{ldm-compression.jpg}\hspace*{5mm}\includegraphics[width=10cm]{ldm-architecture.png}
|
||||||
\caption{Architecture d'un \gls{ldm}}
|
\caption{Architecture d'un \gls{ldm}}
|
||||||
\vspace*{-11pt}
|
\vspace*{-11pt}
|
||||||
\caption*{Source: Rombach \& Blattmann, et al.\cite{rombach_high-resolution_2022}}
|
\caption*{Source: Rombach \& Blattmann, et al.~\cite{rombach_high-resolution_2022}}
|
||||||
\label{fig:ldm-architecture}
|
\label{fig:ldm-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Une amélioration significative des \gls{vdm} réside dans la mise en œuvre intelligente des espaces latents. Cette méthode, dénommée \gls{ldm}~\cite{rombach_high-resolution_2022}, repose sur l'observation selon laquelle l'exploitation des informations latentes, souvent de dimension nettement réduite, confère des avantages substantiels en termes de représentativité des données. La transition des \gls{vdm} vers les \gls{ldm} consiste en l'introduction préalable d'un second modèle, qu'il soit paramétrique ou non, destiné à obtenir une représentation latente. L'autoencodeur est fréquemment employé pour reconstruire fidèlement les données d'entrée, tandis que les représentations latentes alimentent le réseau de propagation subséquent. Cette approche induit une réduction de la complexité du réseau, entraînant ainsi une diminution du temps nécessaire à l'entraînement, tout en exerçant une influence forte sur la qualité des résultats obtenus.
|
Une amélioration significative des \gls{vdm}s réside dans la mise en œuvre intelligente des espaces latents. Cette méthode, dénommée \gls{ldm}~\cite{rombach_high-resolution_2022}, repose sur l'observation selon laquelle l'exploitation des informations latentes, souvent de dimension nettement réduite, confère des avantages substantiels en termes de représentativité des données. La transition des \gls{vdm} vers les \gls{ldm} consiste en l'introduction préalable d'un second modèle, qu'il soit paramétrique ou non, destiné à obtenir une représentation latente de nos données. L'autoencodeur est fréquemment employé pour reconstruire fidèlement les données d'entrée, tandis que les représentations latentes alimentent le réseau de propagation subséquent. Cette approche induit une réduction de la complexité du réseau, entraînant ainsi une diminution du temps nécessaire à l'entraînement, tout en exerçant une influence forte sur la qualité des résultats obtenus.
|
||||||
|
|
||||||
\FloatBarrier
|
\FloatBarrier
|
||||||
\subsubsection{Conditionnemnt \& Guidance}
|
\subsubsection{Conditionnemnt \& Guidance}
|
||||||
|
@ -518,7 +526,7 @@ Dans notre cas d'application, nous pouvons conditionner sur les scalaires repres
|
||||||
% https://liorsinai.github.io/coding/2023/01/04/denoising-diffusion-3-guidance.html#guided-diffusion
|
% https://liorsinai.github.io/coding/2023/01/04/denoising-diffusion-3-guidance.html#guided-diffusion
|
||||||
|
|
||||||
|
|
||||||
Plusieurs sous-familles de modèles existent pour faire de la diffusion, la plus connue d'entre elles étant les \gls{ddpm}\cite{ho_denoising_2020}. Cette méthode consiste à trouver un mapping réversible entre nos données et une gaussienne isotropique.
|
Plusieurs sous-familles de modèles existent pour faire de la diffusion, la plus connue d'entre elles étant les \gls{ddpm}~\cite{ho_denoising_2020}. Cette méthode consiste à trouver un mapping réversible entre nos données et une gaussienne isotropique.
|
||||||
|
|
||||||
L'étape d'entraînement du réseau repose sur une méthodologie relativement simple. Tout d'abord, nous sélectionnons un échantillon du jeu de données. Pour générer un échantillon bruité, nous l'altérons en ajoutant un bruit gaussien, dont l'intensité est ajustée selon un programme prédéfini. Ensuite, cet échantillon bruité est introduit dans le réseau, qui effectue une prédiction du bruit ajouté. Pour évaluer la précision de cette prédiction, nous comparons les résultats avec le bruit réel, ce qui nous permet de calculer un coût en utilisant la métrique \gls{mse}. En procédant à la rétropropagation de ce coût, nous mettons à jour les poids du réseau grâce à un algorithme d'optimisation approprié. Ce processus est répété pour chaque échantillon du jeu de données, en variant les intensités du bruit utilisé, jusqu'à atteindre la convergence, c'est-à-dire lorsque le modèle atteint un état stable et performant.
|
L'étape d'entraînement du réseau repose sur une méthodologie relativement simple. Tout d'abord, nous sélectionnons un échantillon du jeu de données. Pour générer un échantillon bruité, nous l'altérons en ajoutant un bruit gaussien, dont l'intensité est ajustée selon un programme prédéfini. Ensuite, cet échantillon bruité est introduit dans le réseau, qui effectue une prédiction du bruit ajouté. Pour évaluer la précision de cette prédiction, nous comparons les résultats avec le bruit réel, ce qui nous permet de calculer un coût en utilisant la métrique \gls{mse}. En procédant à la rétropropagation de ce coût, nous mettons à jour les poids du réseau grâce à un algorithme d'optimisation approprié. Ce processus est répété pour chaque échantillon du jeu de données, en variant les intensités du bruit utilisé, jusqu'à atteindre la convergence, c'est-à-dire lorsque le modèle atteint un état stable et performant.
|
||||||
|
|
||||||
|
@ -544,7 +552,7 @@ Une fois notre modèle correctement entraîné, nous sommes donc en mesure de d
|
||||||
\label{fig:arm-architecture}
|
\label{fig:arm-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les modèles auto-régressifs sont des méthodes de génération de séquences qui utilisent les éléments précédents pour prédire chaque élément suivant. Ces modèles sont largement utilisés dans le domaine du traitement du langage naturel, où ils ont montré d'excellentes performances. Cependant, l'application de ces modèles à la génération de graphes présente des défis particuliers en raison de la structure complexe des graphes. En effet, les graphes sont des structures de données non régulières et non séquentielles, ce qui rend difficile l'utilisation des modèles auto-régressifs. Malgré cela, plusieurs approches\cite{nash_polygen_2020,liao_efficient_2020} ont été proposées pour adapter ces modèles à la génération de graphes. Cependant, il est important de noter que ces modèles deviennent de moins en moins précis de manière exponentielle à mesure que la taille de la séquence à générer augmente. De ce fait nous n'avons pas encore utilisé ces modèles dans nos travaux.
|
Les modèles auto-régressifs sont des méthodes de génération de séquences qui utilisent les éléments précédents pour prédire chaque élément suivant. Ces modèles sont largement utilisés dans le domaine du traitement du langage naturel, où ils ont montré d'excellentes performances. Cependant, l'application de ces modèles à la génération de graphes présente des défis particuliers en raison de la structure complexe des graphes. En effet, les graphes sont des structures de données non régulières et non séquentielles, ce qui rend difficile l'utilisation des modèles auto-régressifs. Malgré cela, plusieurs approches~\cite{nash_polygen_2020,liao_efficient_2020} ont été proposées pour adapter ces modèles à la génération de graphes. Cependant, il est important de noter que ces modèles deviennent de moins en moins précis de manière exponentielle à mesure que la taille de la séquence à générer augmente. De ce fait nous n'avons pas encore utilisé ces modèles dans nos travaux.
|
||||||
|
|
||||||
\FloatBarrier
|
\FloatBarrier
|
||||||
\glsreset{nerf}
|
\glsreset{nerf}
|
||||||
|
@ -559,13 +567,13 @@ Les modèles auto-régressifs sont des méthodes de génération de séquences q
|
||||||
\label{fig:nerf-architecture}
|
\label{fig:nerf-architecture}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Les \gls{nerf} représentent une autre famille de modèles génératifs qui ont gagné en popularité récemment\cite{mildenhall_nerf_2020}. Ces modèles ont la capacité de générer des rendus 3D hautement réalistes à partir de données d'entraînement en utilisant des réseaux de neurones. Contrairement aux approches traditionnelles de rendu 3D basées sur des maillages, les \gls{nerf} exploitent des représentations continues et implicites des scènes en décrivant les propriétés radiométriques et géométriques en chaque point de l'espace 3D.
|
Les \gls{nerf} représentent une autre famille de modèles génératifs qui ont gagné en popularité récemment~\cite{mildenhall_nerf_2020}. Ces modèles ont la capacité de générer des rendus 3D hautement réalistes à partir de données d'entraînement en utilisant des réseaux de neurones. Contrairement aux approches traditionnelles de rendu 3D basées sur des maillages, les \gls{nerf} exploitent des représentations continues et implicites des scènes en décrivant les propriétés radiométriques et géométriques en chaque point de l'espace 3D.
|
||||||
|
|
||||||
Le principe des \gls{nerf} est de modéliser une fonction de densité de rayon (ou "ray density function") qui caractérise l'interaction de la lumière avec les objets de la scène. Cette fonction est ensuite utilisée pour estimer la couleur et la profondeur des rayons traversant la scène, permettant ainsi de générer des images photoréalistes.
|
Le principe des \gls{nerf} est de modéliser une fonction de densité de rayon (ou "ray density function") qui caractérise l'interaction de la lumière avec les objets de la scène. Cette fonction est ensuite utilisée pour estimer la couleur et la profondeur des rayons traversant la scène, permettant ainsi de générer des images photoréalistes.
|
||||||
|
|
||||||
L'un des aspects fascinants des \gls{nerf} réside dans leur capacité à apprendre des scènes complexes et à générer des rendus à partir d'un nombre limité de vues ou de données d'entraînement. Grâce à leur architecture neuronale et à leur capacité à modéliser la distribution des couleurs et des formes, les \gls{nerf} sont en mesure de synthétiser des scènes réalistes même à partir de quelques images.
|
L'un des aspects fascinants des \gls{nerf} réside dans leur capacité à apprendre des scènes complexes et à générer des rendus à partir d'un nombre limité de vues ou de données d'entraînement. Grâce à leur architecture neuronale et à leur capacité à modéliser la distribution des couleurs et des formes, les \gls{nerf} sont en mesure de synthétiser des scènes réalistes même à partir de quelques images.
|
||||||
|
|
||||||
Les \gls{nerf} sont donc une alternative aux méthodes traditionnelles de reconstructions de scènes par résolution du problème inverse 3D. Cependant ces modèles peuvent aussi être utilisé conjointement avec d'autres réseau pour permettre d'obtenir des réseaux génératifs\cite{nichol_point-e_2022,takikawa_neural_2021,nam_3d-ldm_2022}.
|
Les \gls{nerf} sont donc une alternative aux méthodes traditionnelles de reconstructions de scènes par résolution du problème inverse 3D. Cependant ces modèles peuvent aussi être utilisé conjointement avec d'autres réseau pour permettre d'obtenir des réseaux génératifs~\cite{nichol_point-e_2022,takikawa_neural_2021,nam_3d-ldm_2022}.
|
||||||
|
|
||||||
Dans notre cas, étant donné que notre jeu de données n'est pas adapté à l'application des \gls{nerf}, car cela nécessiterait un processus de prétraitement complexe (comprenant la conversion de nos maillages/scènes en images via un moteur de rendu) ainsi qu'un post-traitement conséquent (utilisation du "marching cube") de notre ensemble de données. Par conséquent, nous ne choisirons pas d'adopter cette approche. De plus, dans le contexte industriel, les outils destinés à la manipulation d'objets implicites ne sont pas encore suffisamment avancés pour être déployés en production.
|
Dans notre cas, étant donné que notre jeu de données n'est pas adapté à l'application des \gls{nerf}, car cela nécessiterait un processus de prétraitement complexe (comprenant la conversion de nos maillages/scènes en images via un moteur de rendu) ainsi qu'un post-traitement conséquent (utilisation du "marching cube") de notre ensemble de données. Par conséquent, nous ne choisirons pas d'adopter cette approche. De plus, dans le contexte industriel, les outils destinés à la manipulation d'objets implicites ne sont pas encore suffisamment avancés pour être déployés en production.
|
||||||
|
|
||||||
|
@ -589,7 +597,7 @@ Au cours de cette période, j'ai également eu des discussions régulières avec
|
||||||
\FloatBarrier
|
\FloatBarrier
|
||||||
\section{Prise en main des données}
|
\section{Prise en main des données}
|
||||||
|
|
||||||
En parallèle de ma lecture de la littérature, j'ai entamé l'exploration des données fournies par Safran. J'ai acquis une compréhension des différents formats de données spécifiques utilisés par l'entreprise pour stocker les résultats des simulations numériques de mécaniques des fluides. De plus, j'ai appris à manipuler ces données en utilisant des outils tels que Paraview\cite{ParaView}.
|
En parallèle de ma lecture de la littérature, j'ai entamé l'exploration des données fournies par Safran. J'ai acquis une compréhension des différents formats de données spécifiques utilisés par l'entreprise pour stocker les résultats des simulations numériques de mécaniques des fluides. De plus, j'ai appris à manipuler ces données en utilisant des outils tels que Paraview~\cite{ParaView}.
|
||||||
|
|
||||||
Le principal ensemble de données sur lequel j'ai travaillé pendant mon stage s'appelle Rotor37\_1200. Il s'agit d'un ensemble de données de simulation \gls{cfd} d'une des 37 pales d'une turbine d'un moteur d'avion. Cet ensemble de données contient 1200 échantillons, qui ont été créé via un processus d'optimisation consistant en l'exploration de paramètres en quête de la maximisation d'un critère de performance.
|
Le principal ensemble de données sur lequel j'ai travaillé pendant mon stage s'appelle Rotor37\_1200. Il s'agit d'un ensemble de données de simulation \gls{cfd} d'une des 37 pales d'une turbine d'un moteur d'avion. Cet ensemble de données contient 1200 échantillons, qui ont été créé via un processus d'optimisation consistant en l'exploration de paramètres en quête de la maximisation d'un critère de performance.
|
||||||
|
|
||||||
|
@ -641,7 +649,7 @@ Pour donner un ordre de grandeur, si l'on utilisai un espace latent de taille 8,
|
||||||
|
|
||||||
Une seconde solution consitait à utiliser une architecture plus intelligente, telle que Graph U-Net. Cette approche permettait d'éviter l'utilisation de couches denses dans le décodeur grâce aux connexions résiduelles (skip connections). Cependant, ce faisant l'information ne passait pas entièrement par l'espace latent entre le décodeur et l'encodeur. Par conséquent, il était impossible de créer un modèle génératif complet avec cette architecture, puisqu'une partie de l'information pour générer des échantillons était compris dans les skip connections.
|
Une seconde solution consitait à utiliser une architecture plus intelligente, telle que Graph U-Net. Cette approche permettait d'éviter l'utilisation de couches denses dans le décodeur grâce aux connexions résiduelles (skip connections). Cependant, ce faisant l'information ne passait pas entièrement par l'espace latent entre le décodeur et l'encodeur. Par conséquent, il était impossible de créer un modèle génératif complet avec cette architecture, puisqu'une partie de l'information pour générer des échantillons était compris dans les skip connections.
|
||||||
|
|
||||||
Face aux difficultés rencontrées avec les réseaux basés sur les VAE et les limitations de l'architecture Graph U-Net, nous avons pris la décision de mettre de côté ces approches. Et plus largement puisque la connectivité de nos graphes est "locale" (les noeuds sont connectés à leurs voisins proches dans l'espace), nous avons décidé de nous orienter vers des approches basées uniquement sur les positions des noeuds. En effet, la connectivité d'un nuage de points peut facilement être retrouvé via diverses techniques\cite{peng_shape_2021,sulzer_deep_2022}
|
Face aux difficultés rencontrées avec les réseaux basés sur les VAE et les limitations de l'architecture Graph U-Net, nous avons pris la décision de mettre de côté ces approches. Et plus largement puisque la connectivité de nos graphes est "locale" (les noeuds sont connectés à leurs voisins proches dans l'espace), nous avons décidé de nous orienter vers des approches basées uniquement sur les positions des noeuds. En effet, la connectivité d'un nuage de points peut facilement être retrouvé via diverses techniques~\cite{peng_shape_2021,sulzer_deep_2022}
|
||||||
|
|
||||||
\subsection{Approche par \gls{nf}}
|
\subsection{Approche par \gls{nf}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue