From bc17dc70bdcf583620a11a240b3b5f3ff53950bb Mon Sep 17 00:00:00 2001 From: NotXia <35894453+NotXia@users.noreply.github.com> Date: Sat, 19 Oct 2024 17:25:01 +0200 Subject: [PATCH] Add A3I RUL regression and classification --- .../img/_rul_classification_predictions.pdf | Bin 0 -> 18392 bytes .../img/_rul_classification_rounding.pdf | Bin 0 -> 10589 bytes .../img/_rul_regression_predictions.pdf | Bin 0 -> 23019 bytes .../sections/_anomaly_detection_high_dim.tex | 2 +- .../sections/_remaining_useful_life.tex | 167 +++++++++++++++++- 5 files changed, 166 insertions(+), 3 deletions(-) create mode 100644 src/year2/artificial-intelligence-in-industry/img/_rul_classification_predictions.pdf create mode 100644 src/year2/artificial-intelligence-in-industry/img/_rul_classification_rounding.pdf create mode 100644 src/year2/artificial-intelligence-in-industry/img/_rul_regression_predictions.pdf diff --git a/src/year2/artificial-intelligence-in-industry/img/_rul_classification_predictions.pdf b/src/year2/artificial-intelligence-in-industry/img/_rul_classification_predictions.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0f6c6d355bb28b9e9209d95b08f903811bad238c GIT binary patch literal 18392 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 P7IsDiQc_`A5rqE_G;YY+ literal 0 HcmV?d00001 diff --git a/src/year2/artificial-intelligence-in-industry/img/_rul_classification_rounding.pdf b/src/year2/artificial-intelligence-in-industry/img/_rul_classification_rounding.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7190bbce8f24b46b6f8860fdee26c0856dcac112 GIT binary patch literal 10589 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 literal 0 HcmV?d00001 diff --git a/src/year2/artificial-intelligence-in-industry/sections/_anomaly_detection_high_dim.tex b/src/year2/artificial-intelligence-in-industry/sections/_anomaly_detection_high_dim.tex index 11ff5f1..2081116 100644 --- a/src/year2/artificial-intelligence-in-industry/sections/_anomaly_detection_high_dim.tex +++ b/src/year2/artificial-intelligence-in-industry/sections/_anomaly_detection_high_dim.tex @@ -161,7 +161,7 @@ The KDE model, bandwidth, and threshold are fitted as in \Cref{ch:ad_low}. \begin{description} \item[Number of components estimation] - The number of Gaussians to use in GMM can be determined through grid search and cross-validation. + The number of Gaussians to use in GMM can be determined through grid-search and cross-validation. \begin{remark} Other method such as the elbow method can also be applied. Some variants of GMM are able to infer the number of components. diff --git a/src/year2/artificial-intelligence-in-industry/sections/_remaining_useful_life.tex b/src/year2/artificial-intelligence-in-industry/sections/_remaining_useful_life.tex index 572c7ad..95045e1 100644 --- a/src/year2/artificial-intelligence-in-industry/sections/_remaining_useful_life.tex +++ b/src/year2/artificial-intelligence-in-industry/sections/_remaining_useful_life.tex @@ -55,7 +55,170 @@ As the dataset is composed of experiments, standard random sampling will mix exp \section{Approaches} -\subsection{Regressor} +\subsection{Regressor} \label{sec:rul_regressor} Predict RUL with a regressor $f$ and set a threshold to trigger maintenance: -\[ f(x, \theta) \leq \varepsilon \] \ No newline at end of file +\[ f(x, \theta) \leq \varepsilon \] + + +\begin{description} + \item[Linear regression] + A linear regressor can be used as a simple baseline for further experiments. + + \begin{remark} + For convenience, a neural network without hidden layers can be used as the regressor. + \end{remark} + + \begin{remark} + Training linear models with gradient descent tend to be slower to converge. + \end{remark} + + \item[Multi-layer perceptron] + Use a neural network to solve the regression problem. + + \begin{remark} + A more complex model causes more training instability as it is more prone to overfitting (i.e., more variance). + \end{remark} + + \begin{remark} + Being more expressive, deeper models tend to converge faster. + \end{remark} + + \begin{remark}[Self-similarity curves] + Exponential curves (e.g., the loss decrease plot) are self-similar. By considering a portion of the full plot, the subplot will look like the whole original plot. + \end{remark} + + \begin{remark}[Common batch size reason] + A batch size of $32$ follows the empirical statistical rule of $30$ samples. This allows to obtain more stable gradients as irrelevant noise is reduced. + \end{remark} + + \item[Convolutional neural network] + Instead of feeding the network a single state, a sequence can be packed as the input using a sliding window as in \Cref{sec:ad_taxi_kde_multi}. 1D convolutions can then be used to process the input so that time proximity can be exploited. + + \begin{remark} + Using sequence inputs might expose the model to more noise. + \end{remark} + + \begin{remark} + Even if the dataset is a time series, it is not always the case (as in this problem) that a sequence input is useful. + \end{remark} +\end{description} + +\begin{remark} + The accuracy of the trained regressors are particularly poor at the beginning of the experiments due to the fact that faulty effects are noticeable only after a while. However, we are interested in predicting when a component is reaching its end-of-life. Therefore, wrong predictions when the RUL is high are acceptable. + \begin{figure}[H] + \centering + \includegraphics[width=0.7\linewidth]{./img/_rul_regression_predictions.pdf} + \caption{Predictions on a portion of the test set} + \end{figure} +\end{remark} + +\begin{description} + \item[Cost model] + Intuitively, a cost model can be defined as follows: + \begin{itemize} + \item The steps of the experiments are considered as the atomic value units. + \item The cost for a failure (i.e., untriggered maintenance) is high. + \item Triggering a maintenance too early also has a cost. + \end{itemize} + + \item[Threshold estimation] + To determine the threshold $\varepsilon$ that determines when to trigger a maintenance, a grid-search to minimize the cost model can be performed. + + Formally, given a set of training experiments $K$, the overall problem to solve is the following: + \[ + \begin{split} + \arg\min_{\varepsilon} &\sum_{k=1}^{|K|} \texttt{cost}(f(\vec{x}_k, \vec{\theta}^*), \varepsilon) \\ + &\text{ subject to } \vec{\theta}^* = \arg\min_\vec{\theta} \mathcal{L}(f(\vec{x}_k, \vec{\theta}), y_k) + \end{split} + \] + Note that $\varepsilon$ do not appear in the regression problem. Therefore, this problem can be solved as two sequential subproblems (i.e., regression and then threshold optimization). +\end{description} + + +\subsection{Classifier} + +Predict RUL with a classifier $f_\varepsilon$ (for a chosen $\varepsilon$) that determines whether a failure will occur in $\varepsilon$ steps: +\[ f_\varepsilon(x, \theta) = \begin{cases} + 1 & \text{failure in $\varepsilon$ steps} \\ + 0 & \text{otherwise} \\ +\end{cases} \] + +\begin{remark} + Training a classifier might be easier than a regressor. +\end{remark} + +\begin{description} + \item[Logistic regression] + A logistic regressor can be uses as baseline. + + \begin{remark} + For convenience, a neural network without hidden layers can be used as the classifier. + \end{remark} + + \item[Multi-layer perceptron] + Use a neural network to solve the classification problem. +\end{description} + +\begin{remark} + As classifiers output a probability, they can be interpreted as the probability of not failing. + \begin{figure}[H] + \centering + \includegraphics[width=0.7\linewidth]{./img/_rul_classification_predictions.pdf} + \caption{Output probabilities of a classifier} + \end{figure} + By rounding, it is easier to visualize a threshold: + \begin{figure}[H] + \centering + \includegraphics[width=0.7\linewidth]{./img/_rul_classification_rounding.pdf} + \end{figure} +\end{remark} + +\begin{description} + \item[Cost model] As defined in \Cref{sec:rul_regressor}. + + \item[Threshold estimation] + \phantom{} + \begin{remark} + The possibility of using a user-defined threshold $\varepsilon$ allows choosing how close to a failure maintenance has to be done. However, early signs of a failure might not be evident at some thresholds so automatically optimizing it might be better. + \end{remark} + + Formally, given a set of training experiments $K$, the overall problem to solve is the following: + \[ + \begin{split} + \arg\min_{\varepsilon} &\sum_{k=1}^{|K|} \texttt{cost}\left(f(\vec{x}_k, \vec{\theta}^*), \frac{1}{2}\right) \\ + &\text{ subject to } \vec{\theta}^* = \arg\min_\vec{\theta} \mathcal{L}(f(\vec{x}_k, \vec{\theta}), \mathbbm{1}_{y_k \geq \varepsilon}) + \end{split} + \] + Differently from regression, the threshold $\varepsilon$ appears in both the classification and threshold optimization problems, so they cannot be decomposed. + + \begin{description} + \item[Black-box optimization] \marginnote{Black-box optimization} + Optimization approach based on brute-force. + + For this problem, black-box optimization can be done as follows: + \begin{enumerate} + \item Over the possible values of $\varepsilon$: + \begin{enumerate} + \item Determine the ground truth based on $\varepsilon$. + \item Train the classifier. + \item Compute the cost. + \end{enumerate} + \end{enumerate} + + \begin{remark} + Black-box optimization with grid-search is very costly. + \end{remark} + + \item[Bayesian surrogate-based optimization] \marginnote{Bayesian surrogate-based optimization} + Method to optimize a black-box function $f$. It is assumed that $f$ is expensive to evaluate and a surrogate model (i.e., a proxy function) is instead used to optimize it. + + Formally, Bayesian optimization solves problems in the form: + \[ \min_{x \in B} f(x) \] + where $B$ is a box (i.e., hypercube). $f$ is optimized through a surrogate model $g$ and each time $f$ is actually used to evaluate the model, $g$ is improved. + + \begin{remark} + Under the correct assumptions, the result is optimal. + \end{remark} + \end{description} +\end{description} \ No newline at end of file