From e02c1cedb3f6c323962b5673fabfc4333d48b7c4 Mon Sep 17 00:00:00 2001 From: Jan Kowalczyk Date: Wed, 12 Mar 2025 15:41:20 +0100 Subject: [PATCH] deepsad added figure, started with algo details --- thesis/Main.tex | 20 +- thesis/figures/deep_svdd_transformation.pdf | Bin 0 -> 95426 bytes thesis/figures/deep_svdd_transformation.svg | 2909 +++++++++++++++++++ 3 files changed, 2922 insertions(+), 7 deletions(-) create mode 100644 thesis/figures/deep_svdd_transformation.pdf create mode 100644 thesis/figures/deep_svdd_transformation.svg diff --git a/thesis/Main.tex b/thesis/Main.tex index 674928f..854f8a0 100755 --- a/thesis/Main.tex +++ b/thesis/Main.tex @@ -253,7 +253,7 @@ %In this chapter we explore the method \emph{Deep Semi-Supervised Anomaly Detection}~\cite{deepsad} which we employed during our experiments to quanitfy the degradation of lidar scans caused by artifically introduced water vapor from a theater smoke machine. The same approach of modeling a degradation quantification problem as an anomaly detection task was succesfully used in \cite{degradation_quantification_rain} to quantify the degradation caused to lidar scans by bad weather conditions such as rain, fog and snow for autonomous driving tasks. Deep SAD is characterized by it being a deep-learning approach to anomaly detection which enables it to learn more complex anomalous data patterns than more classic statistical approaches and its capability of employing hand-labeled data samples-both normal and anomalous-during its training step to better teach the model to differentiate between know anomalies and normal data than if only an unsupervised approach was used which basically just learns the most common patterns in the implicitely more common normal data and to differentiate anything from that. -In this chapter, we explore the method \emph{Deep Semi-Supervised Anomaly Detection} (Deep SAD)~\cite{deepsad}, which we employed to quantify the degradation of LiDAR scans caused by artificially introduced water vapor from a theater smoke machine. A similar approach—modeling degradation quantification as an anomaly detection task—was successfully applied in \cite{degradation_quantification_rain} to assess the impact of adverse weather conditions on LiDAR data for autonomous driving applications. Deep SAD leverages deep learning to capture complex anomalous patterns that classical statistical methods might miss. Furthermore, by incorporating a limited amount of hand-labeled data (both normal and anomalous), it can more effectively differentiate between known anomalies and normal data compared to purely unsupervised methods, which typically learn only the most prevalent patterns in the dataset~\cite{deepsad}. +In this chapter, we explore the method \emph{Deep Semi-Supervised Anomaly Detection} (Deep SAD)~\cite{deepsad}, which we employ to quantify the degradation of LiDAR scans caused by airborne particles in the form of artificially introduced water vapor from a theater smoke machine. A similar approach—modeling degradation quantification as an anomaly detection task—was successfully applied in \cite{degradation_quantification_rain} to assess the impact of adverse weather conditions on LiDAR data for autonomous driving applications. Deep SAD leverages deep learning to capture complex anomalous patterns that classical statistical methods might miss. Furthermore, by incorporating a limited amount of hand-labeled data (both normal and anomalous), it can more effectively differentiate between known anomalies and normal data compared to purely unsupervised methods, which typically learn only the most prevalent patterns in the dataset~\cite{deepsad}. %Deep Semi-Supervised Anomaly Detection~\cite{deepsad} is a deep-learning based anomaly detection method whose performance in regards to sensor degradation quantification we explore in this thesis. It is a semi-supervised method which allows the introduction of manually labeled samples in addition to the unlabeled training data to improve the algorithm's performance over its unsupervised predecessor Deep One-Class Classification~\cite{deepsvdd}. The working principle of the method is to encode the input data onto a latent space and train the network to cluster normal data close together while anomalies get mapped further away in that latent space. @@ -263,24 +263,30 @@ In this chapter, we explore the method \emph{Deep Semi-Supervised Anomaly Detect %Deep SAD is a typical clustering based anomaly detection technique which is described in \cite{anomaly_detection_survey} to generally have a two step approach to anomaly detection. First a clustering algorithm is used to cluster data closely together around a centroid and secondly the distances from data to that centroid is calculated and interpreted as an anomaly score. This general idea can also be found in the definition of the Deep SAD algorithm, which uses the encoder part of an autoencoder architecture which is trained to cluster data around a centroid in the latent space of its output. The datas geometric distance to that centroid in the latent space is defined as an anomaly score. Deep SAD is a semi-supervised training based method which can work completely unsupervised (no labeled data available) in which case it falls back to its predecessor method Deep SVDD but additionally allows the introduction of labeleld data samples during training to more accurately map known normal samples near the centroid and known anomalous samples further away from it. - Deep SAD is an anomaly detection method that belongs to the category of clustering-based methods, which according to~\cite{anomaly_detection_survey} typically follow a two-step approach. First, a clustering algorithm groups data points around a centroid; then, the distances of individual data points from this centroid are calculated and used as an anomaly score. In Deep SAD, this concept is implemented by employing the encoder part of an autoencoder architecture, which is jointly trained to map data into a latent space and to minimize the volume of an data-encompassing hypersphere whose center is the aforementioned centroid. The geometric distance in the latent space to the hypersphere center is used as the anomaly score, where a higher score corresponds to a higher probability of a sample being anomalous according to the method. + Deep SAD is an anomaly detection algorithm that belongs to the category of clustering-based methods, which according to~\cite{anomaly_detection_survey} typically follow a two-step approach. First, a clustering algorithm groups data points around a centroid; then, the distances of individual data points from this centroid are calculated and used as an anomaly score. In Deep SAD, this concept is implemented by employing the encoder part of an autoencoder architecture, which is jointly trained to map data into a latent space and to minimize the volume of an data-encompassing hypersphere whose center is the aforementioned centroid. The geometric distance in the latent space to the hypersphere center is used as the anomaly score, where a higher score corresponds to a higher probability of a sample being anomalous according to the method, due to normal samples clustering more closely around the hypersphere center than anomalies. This general working principle is depicted in figure~\ref{fig:deep_svdd_transformation}. + + \fig{deep_svdd_transformation}{figures/deep_svdd_transformation}{DeepSAD teaches a neural network to transform data into a latent space and minimize the volume of an data-encompassing hypersphere centered around a predetermined centroid $\textbf{c}$. \\Reproduced from~\cite{deepsvdd}.} -Deep SAD is semi-supervised, though it can operate in a fully unsupervised mode—effectively reverting to its predecessor, Deep SVDD~\cite{deepsvdd}—when no labeled data are available. However, it also allows for the incorporation of labeled samples during training. This additional supervision helps the model better position known normal samples near the centroid and push known anomalies farther away, thereby enhancing its ability to differentiate between normal and anomalous data. %As a pre-training step an autoencoder architecture is trained and its weights are used to initialize its encoder part before training of the method itself begins. \citeauthor{deepsad} argue in~\cite{deepsad} that this pre-training step which was already present in~\cite{deepsvdd}, allows them to not only interpret the method in geometric terms as minimum volume estimation but also in probalistic terms as entropy minimization over the latent distribution, since the autoencoding objective implicitely maximizes the mutual information between the data and its latent space represenation. This insight-that the method follows the Infomax principle with the additional objective of the latent distribution having mininmal entropy-allowed \citeauthor{deepsad} to introduce an additional term in Deep SAD's - over Deep SVDD's objective, which encorporates labeled data to better model the nature of normal and anomalous data. They show that Deep SAD's objective can be interpreted as normal data's distribution in the latent space being modeled to have low entropy and anomalous data's distribution in that latent space being modeled as having high entropy, which they argue captures the nature of the difference between normal and anomalous data by interpreting anomalies ``as being generated from an infinite mixture of distributions that are different from normal data distribution''~\cite{deepsad}. -As a pre-training step, an autoencoder is trained and its encoder weights are used to initialize the model before beginning the main training phase. \citeauthor{deepsad} argue in \cite{deepsad} that this pre-training step—originally introduced in \cite{deepsvdd}—not only provides a geometric interpretation of the method as minimum volume estimation but also a probabilistic one as entropy minimization over the latent distribution. The autoencoding objective implicitly maximizes the mutual information between the data and its latent representation, aligning the approach with the Infomax principle while encouraging a latent space with minimal entropy. This insight enabled \citeauthor{deepsad} to introduce an additional term in DeepSAD’s objective, beyond that of Deep SVDD, which incorporates labeled data to better capture the characteristics of normal and anomalous data. They demonstrate that DeepSAD’s objective effectively models the latent distribution of normal data as having low entropy, while that of anomalous data is characterized by higher entropy. In this framework, anomalies are interpreted as being generated from an infinite mixture of distributions that differ from the normal data distribution. +As a pre-training step, an autoencoder is trained and its encoder weights are used to initialize the model before beginning the main training phase. \citeauthor{deepsad} argue in \cite{deepsad} that this pre-training step—originally introduced in \cite{deepsvdd}—not only allows a geometric interpretation of the method as minimum volume estimation but also a probabilistic one as entropy minimization over the latent distribution. The autoencoding objective implicitly maximizes the mutual information between the data and its latent representation, aligning the approach with the Infomax principle while encouraging a latent space with minimal entropy. This insight enabled \citeauthor{deepsad} to introduce an additional term in DeepSAD’s objective, beyond that of its predecessor Deep SVDD~\cite{deepsvdd}, which incorporates labeled data to better capture the characteristics of normal and anomalous data. They demonstrate that DeepSAD’s objective effectively models the latent distribution of normal data as having low entropy, while that of anomalous data is characterized by higher entropy. In this framework, anomalies are interpreted as being generated from an infinite mixture of distributions that differ from the normal data distribution. + +The introduction of the aforementioned term in Deep SAD's objective allows it to learn in a semi-supervised way, though it can operate in a fully unsupervised mode—effectively reverting to its predecessor, Deep SVDD~\cite{deepsvdd}—when no labeled data are available. However, it also allows for the incorporation of labeled samples during training. This additional supervision helps the model better position known normal samples near the hypersphere center and push known anomalies farther away, thereby enhancing its ability to differentiate between normal and anomalous data. + + \newsection{algorithm_details}{Algorithm Details and Hyperparameters} + \todo[inline]{backpropagation optimization formula, hyperaparameters explanation} + + The neural network architecture of DeepSAD is not fixed but rather dependent on the datatype the algorithm is supposed to operate on. This is due to the way it employs an autoencoder for pre-training and the encoder part of the network for its main training step. This makes the adaption of an autoencoder architecture suitable to the specific application necessary but also allows for flexibility in choosing a fitting architecture depending on the application's requirements. For this reason the specific architecture employed, may be considered an hyperparameter of the Deep SAD algorithm. During the pre-training step-as is typical for autoencoders-no labels are necessary since the optimization objective of autoencoders is generally to reproduce the input, as is indicated by the architecture's name. + \todo[inline, color=green!40]{Core idea of the algorithm is to learn a transformation to map input data into a latent space where normal data clusters close together and anomalous data gets mapped further away. to achieve this the methods first includes a pretraining step of an auto-encoder to extract the most relevant information, second it fixes a hypersphere center in the auto-encoders latent space as a target point for normal data and third it traings the network to map normal data closer to that hypersphere center. Fourth The resulting network can map new data into this latent space and interpret its distance from the hypersphere center as an anomaly score which is larger the more anomalous the datapoint is} \todo[inline, color=green!40]{explanation pre-training step: architecture of the autoencoder is dependent on the input data shape, but any data shape is generally permissible. for the autoencoder we do not need any labels since the optimization target is always the input itself. the latent space dimensionality can be chosen based on the input datas complexity (search citations). generally a higher dimensional latent space has more learning capacity but tends to overfit more easily (find cite). the pre-training step is used to find weights for the encoder which genereally extract robust and critical data from the input because TODO read deepsad paper (cite deepsad). as training data typically all data (normal and anomalous) is used during this step.} \todo[inline, color=green!40]{explanation hypersphere center step: an additional positive ramification of the pretraining is that the mean of all pre-training's latent spaces can be used as the hypersphere target around which normal data is supposed to cluster. this is advantageous because it allows the main training to converge faster than choosing a random point in the latent space as hypersphere center. from this point onward the center C is fixed for the main training and inference and does not change anymore.} \todo[inline, color=green!40]{explanation training step: during the main training step the method starts with the pre-trained weights of the encoder but removes the decoder from the architecture since it optimizes the output in the latent space and does not need to reproduce the input data format. it does so by minimizing the geometric distance of each input data's latent space represenation to the previously defined hypersphere center c. Due to normal data being more common in the inputs this results in normal data clustering closely to C and anormal data being pushed away from it. additionally during this step the labeled data is used to more correctly map normal and anormal data} \todo[inline, color=green!40]{explanation inference step: with the trained network we can transform new input data into the latent space and calculate its distance from the hypersphere center which will be smaller the more confident the network is in the data being normal and larger the more likely the data is anomalous. This output score is an analog value dependent on multiple factors like the latent space dimensionality, encoder architecture and ??? and has to be interpreted further to be used (for example thresholding)} - \newsection{algorithm_details}{Algorithm Details and Hyperparameters} - \todo[inline]{backpropagation optimization formula, hyperaparameters explanation} - \todo[inline, color=green!40]{in formula X we see the optimization target of the algorithm. explain in one paragraph the variables in the optimization formula} \todo[inline, color=green!40]{explain the three terms (unlabeled, labeled, regularization)} \begin{equation} diff --git a/thesis/figures/deep_svdd_transformation.pdf b/thesis/figures/deep_svdd_transformation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8d06e806ddff783bdd3dd5f8c4c26bdd1d7894f4 GIT binary patch literal 95426 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�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 literal 0 HcmV?d00001 diff --git a/thesis/figures/deep_svdd_transformation.svg b/thesis/figures/deep_svdd_transformation.svg new file mode 100644 index 0000000..bd00062 --- /dev/null +++ b/thesis/figures/deep_svdd_transformation.svg @@ -0,0 +1,2909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +