From 4b2ab03dabadb08f07ac640a0d3c171d78bb9e3f Mon Sep 17 00:00:00 2001 From: Louis Gallet Date: Thu, 31 Oct 2024 16:45:15 +0100 Subject: [PATCH] feat: :sparkles: Finish IA part --- main.pdf | 4 ++-- main.tex | 1 + sections/partie-technique/IA/IA.tex | 21 ++++++++++++++++++ .../IA/entrainement/entrainement.tex | 11 +++++++++ .../IA/entrainement/ia-train-demo.png | Bin 0 -> 86414 bytes .../feedfoward-backpropagation.tex | 18 +++++++++++++++ .../fonction-activation.tex | 15 +++++++++++++ .../IA/initialisation/initialisation.tex | 6 +++++ .../structure-neuronne/structure-neuronne.tex | 1 + .../partie-technique/partie-technique.tex | 2 +- 10 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 sections/partie-technique/IA/entrainement/entrainement.tex create mode 100644 sections/partie-technique/IA/entrainement/ia-train-demo.png create mode 100644 sections/partie-technique/IA/feedforward-backpropagation/feedfoward-backpropagation.tex create mode 100644 sections/partie-technique/IA/fonction-activation/fonction-activation.tex create mode 100644 sections/partie-technique/IA/initialisation/initialisation.tex create mode 100644 sections/partie-technique/IA/structure-neuronne/structure-neuronne.tex diff --git a/main.pdf b/main.pdf index f524983..f9a69c3 100644 --- a/main.pdf +++ b/main.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c91e75fe3e64df1791590c85ff2b86be6c4d243b5d585812139e281256a66fb0 -size 169083 +oid sha256:eb04400082bb7bbbe8ccd7954160ef474549a3ce667023747548d9fb184fd603 +size 291930 diff --git a/main.tex b/main.tex index 06b6527..81f4261 100644 --- a/main.tex +++ b/main.tex @@ -6,6 +6,7 @@ \usepackage{fancyhdr} \usepackage[table,xcdraw]{xcolor} \usepackage{float} +\usepackage{fancyvrb} diff --git a/sections/partie-technique/IA/IA.tex b/sections/partie-technique/IA/IA.tex index e69de29..7a2a993 100644 --- a/sections/partie-technique/IA/IA.tex +++ b/sections/partie-technique/IA/IA.tex @@ -0,0 +1,21 @@ +This section covers our research on artificial intelligence to develop an AI component for the project, particularly for the OCR. + +Our first draft of the AI has not been integrated into the main project\footnote{You can find the project here: https://gitea.louisgallet.fr/lgallet/XOR-NeuralNetwork-C} because it is focused on our research on AI rather than the project itself. + +Below, you will find the research we conducted for the AI. + + +\subsubsection{Structure of a neuron} +\input{sections/partie-technique/IA/structure-neuronne/structure-neuronne} + +\subsubsection{Activation functions} +\input{sections/partie-technique/IA/fonction-activation/fonction-activation} + +\subsubsection{Weight initialization} +\input{sections/partie-technique/IA/initialisation/initialisation} + +\subsubsection{Feedforward and Backpropagation} +\input{sections/partie-technique/IA/feedforward-backpropagation/feedfoward-backpropagation} + +\subsubsection{Training} +\input{sections/partie-technique/IA/entrainement/entrainement} diff --git a/sections/partie-technique/IA/entrainement/entrainement.tex b/sections/partie-technique/IA/entrainement/entrainement.tex new file mode 100644 index 0000000..4663401 --- /dev/null +++ b/sections/partie-technique/IA/entrainement/entrainement.tex @@ -0,0 +1,11 @@ +The network training uses a learning loop that iterates through the defined epochs (for example, \texttt{numEpochs = 1000000}). Each epoch begins by randomly shuffling the order of the training sets using the \texttt{shuffle} function: +\begin{verbatim} +shuffle(trainingSetOrder, NUM_TRAINING_SETS); +\end{verbatim} +For each training example, the network performs a forward pass, then applies backpropagation to adjust weights and biases based on the error. Once training is complete, the final weights can be saved to a file using the \texttt{backup\_weights} function. + +The output results are displayed at each training step, allowing visualization of the final values of weights and biases. +\begin{figure}[H] + \caption{Example output of the training of the XOR neural network.} + \includegraphics[scale=0.5]{sections/partie-technique/IA/entrainement/ia-train-demo.png} +\end{figure} diff --git a/sections/partie-technique/IA/entrainement/ia-train-demo.png b/sections/partie-technique/IA/entrainement/ia-train-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..a82f1e8c673da8ac3eecc3bff09f7aeb163da558 GIT binary patch literal 86414 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%0D;n>vz}yTT}_ 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 QDEOtKq^?*XZ{qiV0OA^ej{pDw literal 0 HcmV?d00001 diff --git a/sections/partie-technique/IA/feedforward-backpropagation/feedfoward-backpropagation.tex b/sections/partie-technique/IA/feedforward-backpropagation/feedfoward-backpropagation.tex new file mode 100644 index 0000000..f6575af --- /dev/null +++ b/sections/partie-technique/IA/feedforward-backpropagation/feedfoward-backpropagation.tex @@ -0,0 +1,18 @@ +The network uses a \textit{feedforward} process to compute the activations of the hidden and output layers. Each neuron in the hidden layer applies the sigmoid activation function to the weighted sum of the inputs: +\begin{verbatim} +for (int j = 0; j < NUM_HIDDEN; j++) { + double activation = hiddenLayerBias[j]; + for (int k = 0; k < NUM_INPUTS; k++) { + activation += trainingInputs[i][k] * hiddenWeights[k][j]; + } + hiddenLayer[j] = sigmoid(activation); +} +\end{verbatim} +The same logic is applied in the output layer, using the activations of the hidden layer as inputs. + +Backpropagation adjusts the weights based on the calculated errors. First, the output error is calculated relative to the expected output and the derivative of the sigmoid function: +\begin{verbatim} + double error = (trainingOutputs[i][j] - outputLayer[j]); + deltaOutput[j] = error * sigmoid_derivative(outputLayer[j]); +\end{verbatim} +The error for each hidden neuron is then calculated based on the errors of the connected output neurons. The weights and biases are adjusted proportionally to the error and the learning rate \texttt{lr}. diff --git a/sections/partie-technique/IA/fonction-activation/fonction-activation.tex b/sections/partie-technique/IA/fonction-activation/fonction-activation.tex new file mode 100644 index 0000000..94b3a28 --- /dev/null +++ b/sections/partie-technique/IA/fonction-activation/fonction-activation.tex @@ -0,0 +1,15 @@ +The activation function used for each neuron in the hidden and output layers is the \textit{sigmoid}, defined by the \texttt{sigmoid} function: +\begin{verbatim} +double sigmoid(double x) { + if (x > 20) return 1.0; + if (x < -20) return 0.0; + double z = exp(-x); + return 1.0 / (1.0 + z); +} +\end{verbatim} +This function is bounded between 0 and 1, allowing for normalization of the activation values for each neuron. The derivative of the sigmoid, \texttt{sigmoid\_derivative}, is used in backpropagation to compute gradients: +\begin{verbatim} +double sigmoid_derivative(double x) { + return x * (1.0 - x); +} +\end{verbatim} diff --git a/sections/partie-technique/IA/initialisation/initialisation.tex b/sections/partie-technique/IA/initialisation/initialisation.tex new file mode 100644 index 0000000..9e14e29 --- /dev/null +++ b/sections/partie-technique/IA/initialisation/initialisation.tex @@ -0,0 +1,6 @@ +The network's weights and biases are initialized randomly using the \texttt{init\_weights} function, which returns a value between 0 and 1. This process is applied to all weights in \texttt{hiddenWeights} and \texttt{outputWeights}, as well as to the biases \texttt{hiddenLayerBias} and \texttt{outputLayerBias}: +\begin{verbatim} +double init_weights() { + return ((double) rand()) / ((double) RAND_MAX); +} +\end{verbatim} diff --git a/sections/partie-technique/IA/structure-neuronne/structure-neuronne.tex b/sections/partie-technique/IA/structure-neuronne/structure-neuronne.tex new file mode 100644 index 0000000..6a68657 --- /dev/null +++ b/sections/partie-technique/IA/structure-neuronne/structure-neuronne.tex @@ -0,0 +1 @@ +The structure of this neural network consists of an input layer, a hidden layer, and an output layer. The network is configured to solve the XOR problem, with binary input values and a binary output. The hidden layer, represented by the array \texttt{hiddenLayer}, is connected to the inputs through weights \texttt{hiddenWeights}, while the output layer, \texttt{outputLayer}, is connected to the hidden layer via the weights \texttt{outputWeights}. The biases for each layer are initialized in \texttt{hiddenLayerBias} and \texttt{outputLayerBias}. diff --git a/sections/partie-technique/partie-technique.tex b/sections/partie-technique/partie-technique.tex index 3fa054f..b69dda5 100644 --- a/sections/partie-technique/partie-technique.tex +++ b/sections/partie-technique/partie-technique.tex @@ -5,7 +5,7 @@ This section aims to explain each part of the project from a technical perspecti \subsection{OCR} \input{sections/partie-technique/OCR/ocr.tex} - +\newpage \subsection{Artificial Intelligence} \input{sections/partie-technique/IA/IA.tex}