From efdc33035bf96c0ede0e3e0711164481a0541593 Mon Sep 17 00:00:00 2001 From: Jan Kowalczyk Date: Sun, 19 Oct 2025 16:27:22 +0200 Subject: [PATCH] grammarly part 1 done --- thesis/Main.pdf | Bin 7022811 -> 7022815 bytes thesis/Main.tex | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/thesis/Main.pdf b/thesis/Main.pdf index 9c271adf0293f72893e4e3883a1f6efe4595b4a6..f021c4784d6ea402dce361e30a0cd6cb168d2195 100644 GIT binary patch delta 32366 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 diff --git a/thesis/Main.tex b/thesis/Main.tex index 385df09..866b6cd 100755 --- a/thesis/Main.tex +++ b/thesis/Main.tex @@ -250,25 +250,25 @@ Because anomalies are, by nature, often unpredictable in form and structure, uns Anomaly detection refers to the process of detecting unexpected patterns of data, outliers that deviate significantly from the majority of data, which is implicitly defined as normal by its prevalence. In classic statistical analysis, these techniques have been studied as early as the 19th century~\cite{anomaly_detection_history}. Since then, a multitude of methods and use cases for them have been proposed and studied. Examples of applications include healthcare, where computer vision algorithms are used to detect anomalies in medical images for diagnostics and early detection of diseases~\cite{anomaly_detection_medical}, detection of fraud in decentralized financial systems based on blockchain technology~\cite{anomaly_detection_defi}, as well as fault detection in industrial machinery using acoustic sound data~\cite{anomaly_detection_manufacturing}. -Figure~\ref{fig:anomaly_detection_overview} depicts a simple but illustrative example of data that can be classified as either normal or anomalous and shows the problem anomaly detection methods try to generally solve. A successful anomaly detection method would somehow learn to differentiate normal from anomalous data, for example, by learning the boundaries around the available normal data and classifying it as either normal or anomalous based on its location inside or outside of those boundaries. Another possible approach could calculate an analog value that correlates with the likelihood of a sample being anomalous, for example, by using the sample's distance from the closest normal data cluster's center. +Figure~\ref{fig:anomaly_detection_overview} depicts a simple but illustrative example of data that can be classified as either normal or anomalous and shows the problem that anomaly detection methods try to generally solve. A successful anomaly detection method would somehow learn to differentiate normal from anomalous data, for example, by learning the boundaries around the available normal data and classifying it as either normal or anomalous based on its location inside or outside of those boundaries. Another possible approach could calculate an analog value that correlates with the likelihood of a sample being anomalous, for example, by using the sample's distance from the closest normal data cluster's center. -\figc{anomaly_detection_overview}{figures/anomaly_detection_overview}{An illustrative example of anomalous and normal data containing 2-dimensional data with clusters of normal data $N_1$ and $N_2$ as well as two single anomalies $o_1$ and $o_2$ and a cluster of anomalies $O_3$. Reproduced from~\cite{anomaly_detection_survey}\rev{.}}{width=0.5\textwidth} +\figc{anomaly_detection_overview}{figures/anomaly_detection_overview}{An illustrative example of anomalous and normal data containing 2-dimensional data with clusters of normal data $N_1$ and $N_2$, as well as two single anomalies $o_1$ and $o_2$ and a cluster of anomalies $O_3$. Reproduced from~\cite{anomaly_detection_survey}\rev{.}}{width=0.5\textwidth} By their very nature, anomalies are rare occurrences and oftentimes unpredictable in nature, which makes it hard to define all possible anomalies in any system. It also makes it very challenging to create an algorithm that is capable of detecting anomalies that may have never occurred before and may not have been known to exist during the creation of the detection algorithm. There are many possible approaches to this problem, though they can be roughly grouped into six distinct categories based on the techniques used~\cite{anomaly_detection_survey}: \begin{enumerate} - \item \textbf{Classification Based} \\ A classification technique, such as \rev{Support Vector Machine (SVM)~\cite{bg_svm}}, is used to classify samples as either normal or anomalous based on labeled training data. Alternatively, if not enough labeled training data is available, a one-class classification algorithm can be employed. In that case, the algorithm assumes all training samples to be normal and then learns a boundary around the normal samples to differentiate them from anomalous samples. - \item \textbf{Clustering Based} \\ Clustering techniques such as \rev{K-Means~\cite{bg_kmeans}} or DBSCAN\rev{~\cite{bg_dbscan}} aim to group similar \rev{data into} clusters, differentiating it from dissimilar data, which may belong to another cluster or no cluster at all. Anomaly detection methods from this category employ such a technique, with the assumption that normal data will assemble into one or more clusters due to their similar properties, while anomalies may create their own smaller clusters, not \rev{belonging} to any cluster at all, or at least be \rev{at} an appreciable distance from the closest normal cluster's center. - \item \textbf{Nearest Neighbor Based} \\ Similar to the clustering based category, these techniques assume normal data is more closely clustered than anomalies and therefore utilize either a sample's distance to its $k^{th}$ nearest neighbor or the density of its local neighborhood to judge whether a sample is anomalous. + \item \textbf{Classification-Based} \\ A classification technique, such as \rev{Support Vector Machine (SVM)~\cite{bg_svm}}, is used to classify samples as either normal or anomalous based on labeled training data. Alternatively, if not enough labeled training data is available, a one-class classification algorithm can be employed. In that case, the algorithm assumes all training samples to be normal and then learns a boundary around the normal samples to differentiate them from anomalous samples. + \item \textbf{Clustering-Based} \\ Clustering techniques such as \rev{K-Means~\cite{bg_kmeans}} or DBSCAN\rev{~\cite{bg_dbscan}} aim to group similar \rev{data into} clusters, differentiating it from dissimilar data, which may belong to another cluster or no cluster at all. Anomaly detection methods from this category employ such a technique, with the assumption that normal data will assemble into one or more clusters due to their similar properties, while anomalies may create their own smaller clusters, not \rev{belonging} to any cluster at all, or at least be \rev{at} an appreciable distance from the closest normal cluster's center. + \item \textbf{Nearest Neighbor Based} \\ Similar to the clustering-based category, these techniques assume normal data is more closely clustered than anomalies and therefore utilize either a sample's distance to its $k^{th}$ nearest neighbor or the density of its local neighborhood to judge whether a sample is anomalous. \item \textbf{Statistical} \\ These methods try to fit a statistical model of the normal behavior to the data. After the distribution from which normal data originates is defined, samples can be found to be normal or anomalous based on their likelihood \rev{of arising from that} distribution. - \item \textbf{Information Theoretic} \\ The main assumption for information theoretic anomaly detection methods is that anomalies differ somehow in their information content from anomalous data. An information theoretic measure is therefore used to determine \rev{irregularities} in the data's information content, enabling the detection of anomalous samples. + \item \textbf{Information-Theoretic} \\ The main assumption for information-theoretic anomaly detection methods is that anomalies differ somehow in their information content from anomalous data. An information-theoretic measure is therefore used to determine \rev{irregularities} in the data's information content, enabling the detection of anomalous samples. \item \textbf{Spectral} \\ Spectral approaches assume the possibility of mapping data into a lower-dimensional space, where normal data appears significantly different from anomalous data. To this end, a dimensionality reduction technique such as Principal Component Analysis (PCA)\rev{~\cite{bg_pca}} is used to embed the data into a lower-dimensional \rev{subspace. Spectral} methods are often used as a pre-processing step followed by another anomaly detection method operating on the data's subspace. \end{enumerate} In this thesis, we used an anomaly detection method, namely \citetitle{deepsad}\rev{~(DeepSAD)~\cite{deepsad}}, to model our problem\rev{—}how to quantify the degradation of \rev{LiDAR} sensor data\rev{—}as an anomaly detection problem. We do this by classifying good-quality data as normal and degraded data as anomalous, and rely on a method that can express each sample's likelihood of being anomalous as an analog anomaly score, which enables us to interpret it as the \rev{data} degradation quantification value. -Chapter~\ref{chp:deepsad} describes DeepSAD in more detail, which shows that it is a clustering based approach with a spectral pre-processing component, in that it uses a neural network to reduce the input's dimensionality while simultaneously clustering normal data closely around a given centroid. It then produces an anomaly score by calculating the geometric distance between a data sample and the aforementioned cluster centroid, assuming the distance is shorter for normal than for anomalous data. Since our data is high-dimensional, it makes sense to use a spectral method to reduce \rev{its} dimensionality. \rev{Moreover} reporting an analog value rather than a binary classification is useful for our use case since we want to quantify not only classify the data degradation. +Chapter~\ref{chp:deepsad} describes DeepSAD in more detail, which shows that it is a clustering-based approach with a spectral pre-processing component, in that it uses a neural network to reduce the input's dimensionality while simultaneously clustering normal data closely around a given centroid. It then produces an anomaly score by calculating the geometric distance between a data sample and the aforementioned cluster centroid, assuming the distance is shorter for normal than for anomalous data. Since our data is high-dimensional, it makes sense to use a spectral method to reduce \rev{its} dimensionality. \rev{Moreover}, reporting an analog value rather than a binary classification is useful for our use case since we want to quantify not only classify the data degradation. There is a wide \rev{set} of problems in domains similar to the one we research in this \rev{thesis}, for which modeling them as anomaly detection problems has been proven successful. The degradation of point clouds, produced by an industrial 3D sensor, has been modeled as an anomaly detection task in \rev{\cite{bg_ad_pointclouds_scans}}. \citeauthor{bg_ad_pointclouds_scans} propose a student-teacher model capable of inferring a pointwise anomaly score for degradation in point clouds. The teacher network is trained on an anomaly-free dataset to extract dense features of the point clouds' local geometries, after which an identical student network is trained to emulate the teacher network's outputs. For degraded point clouds, the regression between the teacher's and student's outputs is calculated and interpreted as the anomaly score, with the rationalization that the student network has not observed features produced by anomalous geometries during training, leaving it incapable of producing a similar output as the teacher for those regions. Another example would be \rev{\cite{bg_ad_pointclouds_poles}}, which proposes a method to detect and classify pole-like objects in urban point cloud data, to differentiate between natural and man-made objects such as street signs, for autonomous driving purposes. An anomaly detection method was used to identify the vertical pole-like objects in the point clouds, and then the preprocessed objects were grouped by similarity using a clustering algorithm to classify them as either trees or man-made poles. @@ -304,12 +304,12 @@ In reinforcement learning, an agent learns by trial and error while interacting Semi-supervised learning algorithms are an \rev{in-between} category of supervised and unsupervised algorithms, in that they use a mixture of labeled and unlabeled data. Typically, vastly more unlabeled data is used during training of such algorithms than labeled data, due to the effort and expertise required to label large quantities of data correctly. Semi-supervised methods are often an effort to improve a machine learning algorithm belonging to either the supervised or unsupervised category. Supervised methods, such as classification tasks, are enhanced by using large amounts of unlabeled data to augment the supervised training without the need for additional labeling work. Alternatively, unsupervised methods like clustering algorithms may not only use unlabeled data but also improve their performance by considering some hand-labeled data during training. -Machine learning based anomaly detection methods can utilize techniques from all of the aforementioned categories, although their suitability varies. While supervised anomaly detection methods exist, their usability not only depends on the availability of labeled training data but also on a reasonable proportionality between normal and anomalous data. Both requirements can be challenging due to labeling often being labor-intensive and anomalies' intrinsic property to occur rarely when compared to normal data, making the capture of enough anomalous behavior a hard problem. Semi-supervised anomaly detection methods are of special interest in that they may overcome these difficulties inherently present in many anomaly detection tasks~\cite{semi_ad_survey}. These methods typically have the same goal as unsupervised anomaly detection methods which is to model the normal class behavior and delimitate it from anomalies, but they can incorporate some hand-labeled examples of normal and/or anomalous behavior to improve their performance over fully unsupervised methods. DeepSAD is a semi-supervised method that extends its unsupervised predecessor Deep SVDD~\cite{deep_svdd} by including some labeled samples during training. Both DeepSAD and Deep SVDD also utilize an autoencoder in a pretraining step, a machine learning architecture\rev{, which we will look at next}. +Machine learning based anomaly detection methods can utilize techniques from all of the aforementioned categories, although their suitability varies. While supervised anomaly detection methods exist, their usability not only depends on the availability of labeled training data but also on a reasonable proportionality between normal and anomalous data. Both requirements can be challenging due to labeling often being labor-intensive and anomalies' intrinsic property to occur rarely when compared to normal data, making the capture of enough anomalous behavior a hard problem. Semi-supervised anomaly detection methods are of special interest in that they may overcome these difficulties inherently present in many anomaly detection tasks~\cite{semi_ad_survey}. These methods typically have the same goal as unsupervised anomaly detection methods, which is to model the normal class behavior and delimitate it from anomalies, but they can incorporate some hand-labeled examples of normal and/or anomalous behavior to improve their performance over fully unsupervised methods. DeepSAD is a semi-supervised method that extends its unsupervised predecessor Deep SVDD~\cite{deep_svdd} by including some labeled samples during training. Both DeepSAD and Deep SVDD also utilize an autoencoder in a pretraining step, a machine learning architecture\rev{, which we will look at next}. \newsection{autoencoder}{Autoencoder} -Autoencoders are a type of neural network architecture whose main goal is learning to encode input data into a representative state, from which the same input can be reconstructed, hence the name. They typically consist of two functions, an encoder and a decoder with a latent space \rev{in between} them as depicted in the toy example in \rev{Figure}~\ref{fig:autoencoder_general}. The encoder learns to extract the most significant features from the input and to convert them into the input's latent space representation. The reconstruction goal ensures that the most prominent features of the input are retained during the encoding phase, due to the inherent inability to reconstruct the input if too much relevant information is missing. The decoder simultaneously learns to reconstruct the original input from its encoded latent space representation by minimizing the error between the input sample and the autoencoder's output. This optimization goal complicates the categorization of autoencoders as unsupervised methods. Although they do not require labeled data, they still compute an error against a known target—the input itself. For this reason, some authors describe them as a form of self-supervised learning, where the data provides its own supervisory signal without requiring expert labeling. +Autoencoders are a type of neural network architecture whose main goal is learning to encode input data into a representative state, from which the same input can be reconstructed, hence the name. They typically consist of two functions, an encoder and a decoder with a latent space \rev{in between} them, as depicted in the toy example in \rev{Figure}~\ref{fig:autoencoder_general}. The encoder learns to extract the most significant features from the input and to convert them into the input's latent space representation. The reconstruction goal ensures that the most prominent features of the input are retained during the encoding phase, due to the inherent inability to reconstruct the input if too much relevant information is missing. The decoder simultaneously learns to reconstruct the original input from its encoded latent space representation by minimizing the error between the input sample and the autoencoder's output. This optimization goal complicates the categorization of autoencoders as unsupervised methods. Although they do not require labeled data, they still compute an error against a known target—the input itself. For this reason, some authors describe them as a form of self-supervised learning, where the data provides its own supervisory signal without requiring expert labeling. \fig{autoencoder_general}{figures/autoencoder_principle.png}{Illustration of an autoencoder’s working principle. The encoder $\mathbf{g_\phi}$ compresses the input into a lower-dimensional bottleneck representation $\mathbf{z}$, which is then reconstructed by the decoder $\mathbf{f_\theta}$. During training, the difference between input and output serves as the loss signal to optimize both the encoder’s feature extraction and the decoder’s reconstruction. Reproduced from~\cite{ml_autoencoder_figure_source}. } @@ -367,7 +367,7 @@ DeepSAD's full training and inference procedure is visualized in \rev{Figure}~\r \newsection{algorithm_details}{Algorithm Details and Hyperparameters} -Since DeepSAD is heavily based on its predecessor \rev{Deep SVDD}~\cite{deep_svdd} it is helpful to first understand Deep SVDD's optimization objective, so we start with explaining it here. For input space $\mathcal{X} \subseteq \mathbb{R}^D$, output space $\mathcal{Z} \subseteq \mathbb{R}^d$, and a neural network $\phi(\wc; \mathcal{W}) : \mathcal{X} \to \mathcal{Z}$, where $\mathcal{W}$ depicts the neural network's weights with $L$ layers $\{\mathbf{W}_1, \dots, \mathbf{W}_L\}$, $n$ the number of unlabeled training samples $\{\mathbf{x}_1, \dots, \mathbf{x}_n\}$, $\mathbf{c}$ the center of the hypersphere in the latent space, Deep SVDD teaches the neural network to cluster normal data closely together in the latent space by defining its optimization objective as \rev{follows.} +Since DeepSAD is heavily based on its predecessor \rev{Deep SVDD}~\cite{deep_svdd}, it is helpful to first understand Deep SVDD's optimization objective, so we start by explaining it here. For input space $\mathcal{X} \subseteq \mathbb{R}^D$, output space $\mathcal{Z} \subseteq \mathbb{R}^d$, and a neural network $\phi(\wc; \mathcal{W}) : \mathcal{X} \to \mathcal{Z}$, where $\mathcal{W}$ depicts the neural network's weights with $L$ layers $\{\mathbf{W}_1, \dots, \mathbf{W}_L\}$, $n$ the number of unlabeled training samples $\{\mathbf{x}_1, \dots, \mathbf{x}_n\}$, $\mathbf{c}$ the center of the hypersphere in the latent space, Deep SVDD teaches the neural network to cluster normal data closely together in the latent space by defining its optimization objective as \rev{follows.} \begin{equation} \label{eq:deepsvdd_optimization_objective}