\chapter{Contexte}\label{chap:contexte}

Dans ce chapitre sont décrits plus en détails le contexte applicatif et le contexte technique de ces travaux de recherche. Il présente les concepts et algorithmes utilisés dans le développement des modules. Ces modules font partie des contributions de cette thèse à l'environnement informatique pour l'apprentissage humain (EIAH) appelé AI-VT (\textit{Artificial Intelligence - Virtual Trainer}).

\textcolor{red}{Ce chapitre commence par une présentation des EIAH ayant des objectifs proches, suivie par une présentation sommaire du fonctionnement d'AI-VT}. AI-VT étant un système de raisonnement à partir de cas (RàPC) modélisé sous la forme d'un système multi-agents (SMA), cette présentation des EIAH est suivie d'une présentation du RàPC, puis des SMA. Ce chapitre se termine par une présentation de différents algorithmes et notions implémentés dans AI-VT pour la personnalisation et l'adaptation des séances d'entraînement proposées par l'EIAH. 

\section{Les stratégies d'apprentissage humain et les environnements informatiques pour l'apprentissage humain (EIAH)}
%\markboth{Stratégies d'apprentissage et les EIAH}{}
\sectionmark{Stratégies d'apprentissage et les EIAH}

\subsection{Les stratégies d'apprentissage}

Dans \citep{LALITHA2020583}, l'apprentissage est défini comme une fonction du cerveau humain acquise grâce au changement permanent dans l'obtention de connaissances et de compétences par le biais d'un processus de transformation du comportement lié à l'expérience ou à la pratique. L'apprentissage implique réflexion, compréhension, raisonnement et mise en œuvre. Un individu peut utiliser différentes stratégies pour acquérir la connaissance. Comme le montre la figure \figref{figStra}, les stratégies peuvent être classées entre mode traditionnel et mode en-ligne.

\mfigure[!ht]{width=1\textwidth}{./Figures/TLearning.png}{Stratégies d'apprentissage (Traduit de \cite{LALITHA2020583}).}{figStra}

%\begin{figure}[!ht]
%\centering
%\includegraphics[width=1\textwidth]{./Figures/TLearning.png} 
%\caption{Stratégies d'apprentissage (\cite{LALITHA2020583})}
%\label{figStra}
%\end{figure}

L'apprentissage traditionnel se réfère à l'apprentissage-type tel qu'il est fait dans une classe. Il est centré sur l'enseignant où la présence physique est l'élément fondamental dans la mesure où elle implique une unité de temps et de lieu. Ici, l'enseignant interagit directement avec l'élève, et les ressources sont généralement des documents imprimés. L'apprentissage et la participation doivent y être actifs, la rétroaction y est instantanée et il existe des interactions sociales. En revanche, les créneaux horaires, les lieux et les contenus sont rigides (décidés par l'enseignant et la structure dans laquelle les enseignements sont dispensés).

L'autre stratégie globale est l'apprentissage en-ligne, qui s'appuie sur les ressources et l'information disponible sur le web. Cette stratégie incite les apprenants à être actifs pour acquérir de nouvelles connaissances de manière autonome grâce aux nombreuses ressources disponibles. Les points positifs de cette stratégie sont par exemple la rentabilité, la mise à niveau continue des compétences et des connaissances ou une plus grande opportunité d'accéder au contenu du monde entier. Pour l'apprenant, l'auto-motivation et l'interaction peuvent être des défis à surmonter. Pour l'enseignant, il est parfois difficile d'évaluer l'évolution du processus d'apprentissage de l'individu. L'apprentissage en-ligne fait aussi référence à l'utilisation de dispositifs électroniques pour apprendre (\textit{e-learning}) où les apprenants peuvent être guidés par l'enseignant à travers des liens, du matériel spécifique d'apprentissage, des activités ou exercices.

Il existe également des stratégies hybrides combinant des caractéristiques des deux stratégies fondamentales, comme un cours en-ligne mais avec quelques séances en présentiel pour des activités spécifiques ou des cours traditionnels avec du matériel d'apprentissage complémentaire en-ligne.

\subsection{Théories d'apprentissage}

Historiquement, le processus d'apprentissage a été analysé et plusieurs théories ont été proposées pour expliquer la manière dont les individus acquièrent la connaissance et développent des compétences. Les théories les plus couramment utilisées sont : le béhaviorisme, le cognitivisme, le constructivisme, le socio-constructivisme et le connectivisme \citep{schunk2020}, \citep{Zhou2015}.\\

Le béhaviorisme s'intéresse à l'étude des comportements observables, sans analyser les mécanismes internes du cerveau qui ne sont pas directement observables. Cette théorie considère que l'évolution de la connaissance fonctionne par des renforcements positifs des réponses et des comportements attendus. Le cognitivisme décrit l'apprenant comme un système actif qui perçoit, reconnait et stocke l'information en mémoire. Pour le constructivisme, l'acquisition de la connaissance est une réorganisation de concepts fondés sur les expériences passées à travers un processus de reconstruction en réintégrant et en assimilant des éléments nouveaux. Les principes du constructivisme sont repris par le socio-constructivisme en ajoutant l'aspect social grâce auquel les connaissances sont acquises, notamment via les échanges et les interactions entre les individus. En introduisant l'usage des nouvelles technologies la théorie du connectivisme est apparue. Celle-ci enrichit le socio-constructivisme avec les interactions entre les individus et les sources technologiques d'information \citep{schunk2020}.

\subsection{Les EIAH}

\mfigure[!h]{width=\textwidth}{./Figures/EIAH.png}{L'architecture générale des EIAH, les composantes et leurs interactions (Traduit de \cite{Nkambou}).}{figEIAH}

Les EIAH sont des outils pour aider les apprenants dans le processus d'apprentissage et l'acquisition de la connaissance. Ces outils sont conçus pour fonctionner avec des stratégies d'apprentissage en ligne et mixtes. Généralement, l'architecture de ces systèmes est divisée en quatre composants comme le montre la figure \figref{figEIAH}. Ces composants sont :
\begin{itemize}
\item Le \textit{modèle du domaine}, qui contient les concepts, les règles et les stratégies pour résoudre des problèmes dans un domaine spécifique. Ce composant peut détecter et corriger les erreurs des apprenants. En général, l'information est divisée en séquences pédagogiques.
\item Le \textit{modèle de l'apprenant}, qui est le noyau du système car il contient toute l'information utile à l'EIAH concernant l'apprenant (\textit{Utilisateur-Apprenant} sur la figure \figref{figEIAH}). Ce composant contient également les informations sur l'évolution de l'acquisition des compétences de l'apprenant. Ce module doit avoir les informations implicites et explicites pour pouvoir créer une représentation des connaissances acquises, non et partiellement acquises et l'évolution de l'apprentissage de l'apprenant. Ces informations doivent permettre de générer un diagnostic de l'état de la connaissance de l'apprenant, à partir duquel le système peut prédire les résultats dans certains domaines et choisir la stratégie optimale pour présenter les nouveaux contenus.
\item \textit{Le modèle de tutorat} est également modélisé sous la forme d'un composant. Il reçoit l'information des modules précédents, information grâce à laquelle il peut prendre des décisions sur le changement de parcours ou sur la stratégie d'apprentissage. Il peut également interagir avec l'apprenant.
\item L'\textit{interface} est le module chargé de la gestion des configurations de l'EIAH et des interactions entre ses composants.
\end{itemize}

Le développement et la configuration de ce type de systèmes relèvent de multiples disciplines et impliquent plusieurs domaines de recherche parmi lesquels figurent la pédagogie, l'éducation, la psychologie, les sciences cognitives et l'intelligence artificielle.

%\subsection{Traitement du langage naturel (NLP)}
%
%Le traitement du langage naturel est un domaine de recherche interdisciplinaire qui essaie à travers de multiples méthodes analyser et faire comprendre aux machines le langage et la communication humaine. Ce domaine est catégorisé comme une branche de l'intelligence artificielle \cite{kedia2020hands}.\\
%
%Comme on peut lire dans \cite{ghosh2019natural}, le NLP est constitué de plusieurs tâches standardisées, entre elles, la tokenisation qui est la procédure qui consiste à diviser une phrase en ses mots constitutifs, par exemple le résultat de tokeniser la phrase "Je lis un livre", est "Je", "lis", "un", "livre"; avec cet exemple on a tokenisée la phrase en utilisant uni-grams, c'est-à-dire des tokens de taille un, mais on peut extraire des ensembles de tokens, si on divise la phrase en paires de tokens alors on parle de bi-grams: "Je lis", "un livre"; en général on parle de n-grams où "n" est le nombre de tokens.\\
%
%Une autre tâche fondamentale du NLP est le "PoS Tagging" qui ajoute des identificateurs à chacun des tokens d'une phrase avec le propos de faciliter l'analyse et le filtrage du contenu des phrases. Ainsi "Le ciel est bleu", est [("Le", "AR"), ("ciel", "NN"), ("est", "VBZ"), ("bleu", "JJ")], où AR: article, NN: nom, VBZ: verbe troisième personne, JJ: adjectif. Ainsi, il est possible de connaître et de filtrer les phrases par la catégorisation de leur contenu.\\
%
%La tokenisation et le "PoS Tagging" fonctionnent avec les caractères qui font partie de l'alphabet, mais les phrases communément écrites contient aussi des caractères symboliques qui représentent des aspects complémentaires du langage et qui ne sont pas considérés dans les analyses, car ils n'apportent pas d'information significative. La tâche d'effacer les symboles jugés inutiles s'appelle "cleaning text", usuellement ces symboles sont les signes de ponctuation et parfois les articles définis / indéfinis et les mots qui servent de lien comme par exemple en français: "le", "la", "les", "est", "et", etc. Il y a d'autres tâches qui sont utilisées aussi dans NLP, mais elles sont plus spécifiques comme: normalisation, correction, "stemming", "lemmatization", "NER", etc. Elles peuvent être consultées plus en détail et avec exemples de code dans \cite{ghosh2019natural}.\\
%
%L'exécution des tâches précitées est appelée prétraitement du texte, l'idée est de donner au texte un format pour l'envoyer comme donnée d'entré à un modèle chargé de l'analyser selon un certain objectif prédétermine. Les modèles de NLP se basent en algorithmes d'apprentissage automatique qui fonctionnent avec données numériques, alors les modèles doivent convertir le texte vers une représentation numérique, cette transformation s'appelle "vectorization" ou "vector embeddings". L'une des méthodes les plus simples et les plus élémentaires est le "BoW (Bag of Words) Model" qui génère un vecteur avec les fréquences de chaque mot d'un alphabet dans une phrase, comme le montre la figure \figref{figBOW}, les limitations principales du "BoW Model" sont d'abord que les vecteurs de représentation générés sont creuses, et aussi il n'y a pas de préservation de l'ordre des mots, alors on perdre contexte et signification des phrases et du texte. Une autre modèle est TF-IDF qui normalise les fréquences d'apparition et essaie d'associer une importance aux mots, ce qui évite d'analyser la pertinence de chaque mot seulement par sa fréquence d'apparition dans le texte. Autres modèles de vectorisation plus sophistiqués comme les réseaux de neurones (Word2vec, Doc2Vec, fastText) peuvent être consultés dans \cite{kedia2020hands}.\\
%
%\mfigure[!ht]{scale=0.7}{./Figures/BoW.png}{Bag of words pour une phrase}{figBOW}
%
%%\begin{figure}
%%\centering
%%\includegraphics[scale=0.7]{./Figures/BoW.png} 
%%\caption{Bag of words pour une phrase.}
%%\label{figBOW}
%%\end{figure}

\subsection{L'exerciseur initial AI-VT}

Le DISC travaille depuis plusieurs années sur l'utilisation potentielle de l'intelligence artificielle dans le cadre d'un exerciseur couvrant plusieurs domaines d'apprentissage. Cet exerciseur, appelé AI-VT(Artificial Intelligence Virtual Trainer) est fondé sur différents concepts d'intelligence artificielle et ses domaines d'application sont l'apprentissage de l'aïkido, des bases de l'algorithmique et de l'anglais. Un premier réseau de convolution détermine les lacunes de l'apprenant en analysant les résultats de quelques exercices préliminaires. Puis un système de raisonnement à partir de cas distribué prend le relais et détermine une liste d'exercices à proposer en regard de ses lacunes et en tenant compte des séances qui ont déjà été proposées par le système à cet apprenant. 

Dans le système AI-VT, une séance d'entraînement est proposée dans le cadre d'un cycle d'entraînement. Ainsi, un exercice proposé en première séance du cycle peut être reproposé ensuite dans une autre séance, afin de consolider les acquis et de remettre en mémoire certaines connaissances à l'apprenant. Une séance est entièrement consacrée à une seule et même compétence, déclinée en plusieurs sous-compétences. Des exercices dans différentes sous-compétences sont proposées à chaque séance. Les exercices d'une même sous-compétence sont regroupés. Un même exercice pouvant permettre de travailler deux sous-compétences différentes, un mécanisme de règlement des conflits a été implémenté dans AI-VT afin qu'un même exercice ne puisse être proposé plus d'une seule fois dans une même séance d'entraînement. Dans AI-VT, l'énoncé d'un exercice est constitué de deux parties : le contexte et la question. Cette structure modulaire permet d'associer plusieurs questions à un même contexte et inversement. \textcolor{red}{Les réponses apportées par les apprenants à chaque exercice sont notées par l'enseignant sur 10 points et le temps mis pour répondre à chaque question est comptabilisé de façon automatique par le système}. L'apprenant dispose d'une interface présentant un tableau de bord des exercices, sous-compétences et compétences qu'il ou elle a travaillé.

Pour l'apprentissage de l'anglais, un robot est chargé d'énoncer les exercices de la séance. Au démarrage de cette thèse, les apprenants ont une liste personnalisée d'exercices proposée par le système AI-VT, mais c'est à l'enseignant de vérifier la validité des algorithmes/solutions proposés par les apprenants et d'identifier leurs difficultés. L'amélioration du système et de la personnalisation du parcours de l'apprenant implique une correction automatique des exercices et cela sans utiliser un entraînement spécifique à chaque exercice, mais cet objectif ne fait pas partie de cette thèse. La définition de profils d'apprenants par le recueil de traces reste également à travailler pour optimiser les aides et séances d'exercices.

Le système AI-VT a été implémenté en se fondant sur deux paradigmes de l'IA : la séance d'entraînement est construite par différents modules suivant la philosophie du raisonnement à partir de cas, et l'architecture logicielle a été modélisée selon un système multi-agents. Une présentation sommaire de ces deux paradigmes de l'IA sont présentés dans cette section, et celles-ci sont suivies de la présentation de différents algorithmes et fonctions implémentés dans l'EIAH AI-VT. Des états de l'art plus complets sur les EIAH et le RàPC sont présentés dans le chapitre suivant. Le système AI-VT, son architecture et les évolutions qui ont été réalisées sur celle-ci sont détaillés dans le chapitre 4.

\section{Le contexte technique}

\subsection{Le raisonnement à partir de cas (RàPC)}

Le raisonnement à partir de cas est un modèle de raisonnement fondé sur l'hypothèse que les problèmes similaires ont des solutions similaires. Ainsi, les systèmes de RàPC infèrent une solution à un problème posé à partir des solutions mises en œuvre auparavant pour résoudre d'autres problèmes similaires \citep{ROLDANREYES20151}.

Un cas est défini comme étant la représentation d'un problème et la description de sa solution. Les cas résolus sont stockés et permettent au système de RàPC de construire de nouveaux cas à partir de ceux-ci. Formellement, si $P$ est l'espace des problèmes et $S$ l'espace des solutions, alors un problème $x$ et sa solution $y$ appartiennent à ces espaces : $x \in P$ et $y \in S$. Si $y$ est solution de $x$ alors, un cas est représenté par le couple $(x,y) \in P \times S$. Le RàPC a besoin d'une base de $N$ problèmes et de leurs solutions associées. Cette base est appelée base de cas. Ainsi tout cas d'indice $n \in [1,N]$ de cette base de cas est formalisé de la manière suivante : $(x^n, y^n)$. L'objectif du RàPC est, étant donné un nouveau problème $x^z$, de trouver sa solution $y^z$ en utilisant les cas stockés dans la base de cas \citep{10.1007/978-3-030-58342-2_20}.

\mfigure[!ht]{width=\textwidth}{./Figures/cycle.png}{Cycle fondamental du raisonnement à partir de cas (Adapté et traduit de \cite{min8100434}).}{figCycle}

%\begin{figure}
%\centering
%\includegraphics[scale=30]{./Figures/cycle.png}
%\caption{Cycle fondamental du raisonnement à partir de cas %(\cite{min8100434})} 
%\label{figCycle}
%\end{figure}

Le processus du RàPC est divisé en quatre étapes formant un cycle comme l'ont proposé \citep{doi10.3233/AIC-1994-7104}. La figure \figref{figCycle} montre le cycle, le flux d'informations ainsi que les relations entre chacune des étapes \citep{min8100434}: retrouver (rechercher), réutiliser (adapter), réviser et retenir (stocker). Chacune des étapes est décrite dans \cite{Richter2013} de la manière suivante.

\subsubsection{Retrouver (Rechercher)}
L'objectif de cette étape est de rechercher dans la base de cas, les cas similaires à un nouveau cas donné. Cette similarité n'est pas un concept général, mais dépend du contexte, de l'objectif et du type de données. La question fondamentale qui se pose dans cette étape est: quel est le cas le plus approprié dans la base de cas qui permet de réutiliser sa solution pour résoudre le nouveau problème donné ?

Le nouveau cas est comparé à chaque cas de la base afin d'en évaluer la similitude. La comparaison entre les cas est différente selon la structure de la base et la manière dont les problèmes sont décrits dans celle-ci. Généralement, un problème est représenté par un ensemble d'attributs aux valeurs spécifiques. Cette représentation est connue comme la représentation attribut-valeur. La similitude entre deux cas de ce type est calculée suivant l'équation \ref{eqSim}. La similitude entre deux cas attribut-valeur $c_1={a_{1,1}, a_{1,1}, ..., a_{1,n}}$ et $c_2={a_{2,1}, a_{2,1}, ..., a_{2,n}}$ est la somme pondérée des similitudes entre les attributs considérés individuellement. La pondération détermine l'importance de chaque attribut \citep{Richter2013}.

\begin{equation}
\sum_{i=1}^n \omega_i \; sim(a_{1,i}, a_{2,i})
\label{eqSim}
\end{equation}

Dans cette étape, il est possible de sélectionner $k$ différents cas similaires au nouveau cas donné.

\subsubsection{Réutiliser (Adapter)}
L'idée du RàPC est d'utiliser l'expérience pour essayer de résoudre de nouveaux cas (problèmes). La figure \figref{figReut} montre le principe de réutilisation d'un cas (problème) résolu auparavant (appelé \textit{cas source})  pour le proposer en solution d'un nouveau cas (dénommé \textit{cas cible}) après adaptation.

Si certains cas cibles sont très similaires au cas source le plus proche, il est cependant souvent nécessaire d'adapter la solution du cas source le plus similaire afin d'arriver à une solution satisfaisante pour le cas cible. De la même manière que pour la phase de recherche du cas le plus similaire, il existe de nombreuses stratégies d'adaptation. Celles-ci dépendent de la représentation des cas, du contexte dans lequel le RàPC est mis en œuvre et des algorithmes utilisés pour l'adaptation. L'une des stratégies les plus utilisées est la définition d'un ensemble de règles transformant la
 ou les solutions des cas sources les plus similaires au cas cible. L'objectif ici est d'inférer une nouvelle solution $y^z$ du cas $x^z$ à partir des $k$ cas sources retrouvés dans la première étape.

\mfigure[!ht]{width=0.7\textwidth}{./Figures/Reuse.png}{Principe de réutilisation dans le RàPC (traduit de \cite{Richter2013}).}{figReut}

%\begin{figure}
%\centering
%\includegraphics[scale=20]{./Figures/Reuse.png} 
%\caption{Principe de réutilisation dans le RàPC (\cite{Richter2013})}
%\label{figReut}
%\end{figure}

\subsubsection{Réviser (Réparer)}

La solution adaptée proposée doit ensuite être évaluée et révisée afin de satisfaire certains critères de validation. L'étape de révision est chargée d'évaluer l'applicabilité de la solution cible obtenue suite à l'étape "adaptation". Cette évaluation peut être réalisée dans le monde réel ou dans une simulation.

L'objectif de cette phase de révision est la validation du couple $(x^z, y^z)$. Autrement dit, le but est ici de vérifier si la solution trouvée $y^z$ résout le problème $x^z$ et satisfait les règles de validité et d'applicabilité. Si la solution n'est pas correcte, l'expert mettant en œuvre la solution doit ajuster ou modifier la solution cible proposée.

Le processus d'évaluation, de révision et de réparation peut être mis en œuvre via un processus d'apprentissage permettant d'améliorer la détection et la correction des failles des futures solutions générées. Dans les travaux de cette thèse, nous avons envisagé la possibilité d'utiliser différents outils d'apprentissage pour évaluer et réviser les solutions cibles dans certains cas particuliers.

L'évaluation peut être faite :
\begin{itemize}
    \item par un expert humain capable d'évaluer la solution et sa pertinence dans le contexte applicatif,
    \item par un système fonctionnant en production et renvoyant le résultat de l'application de la solution,
    \item par un modèle statistique ou un système de test.
\end{itemize} 

La correction des solutions peut être automatique, mais elle dépend du domaine et de l'information disponible. Un ensemble de règles peut aider à identifier les solutions non valides.

\subsubsection{Retenir (Stocker)}

Si le cas cible résolu est jugé pertinent, alors celui-ci peut être stocké dans la base de cas pour aider ensuite à la résolution de futurs cas cibles. 
La décision de stocker ou non un nouveau cas dans la base de cas doit tenir compte de la capacité de cette nouvelle base de cas à proposer de futures solutions pertinentes, évaluer et corriger les solutions cibles générées d'une part, et maintenir une base de cas d'une taille ne gaspillant pas inutilement des ressources de stockage et de calculs du système de RàPC d'autre part.

\subsubsection{Conteneurs de connaissance}

Le cycle complet du RàPC est organisé autour de quatre sources d'information différentes. Ces sources sont appelées les conteneurs de connaissances par \cite{RICHTER20093}. Cet article définit les conteneurs suivants dans les systèmes de RàPC : le conteneur de cas, le conteneur d'adaptation, le conteneur du vocabulaire et le conteneur de similarité :

\begin{itemize}
\item Le conteneur de cas contient les expériences passées que le système peut utiliser pour résoudre les nouveaux problèmes. L'information est structurée sous la forme d'un couple $(p, s)$, où $p$ est la description d'un problème et $s$ est la description de sa solution.
\item Le conteneur d'adaptation stocke la ou les stratégies d'adaptation ainsi que les règles et paramètres nécessaires pour les exécuter.
\item Le conteneur du vocabulaire contient l'information, sa signification et sa terminologie. Les éléments comme les entités, les attributs, les fonctions ou les relations entre les entités peuvent y être décrits.
\item Le conteneur de similarité contient l'ensemble des connaissances liées et nécessaires au calcul de la similarité entre deux cas : les fonctions de calcul de similarité et les paramètres de mesure de similarité $sim(p_1, p_2)$ entre les cas $p_1$ et $p_2$.
\end{itemize}

La figure \figref{figCycleCBR} présente les flux d'informations entre les étapes du RàPC et les conteneurs. Les flèches continues de la figure \figref{figCycleCBR} décrivent l'ordre dans lequel les phases du cycle du RàPC sont exécutées. Les flèches avec des lignes discontinues matérialisent les flux d'information, c'est-à-dire les liens entre les étapes du cycle et les conteneurs de connaissance.

\mfigure[!ht]{width=\textwidth}{./Figures/CycleCBR.png}{Cycle du RàPC, les étapes, les conteneurs et leurs flux de données.}{figCycleCBR}

%\begin{figure}
%\centering
%\includegraphics[scale=2.5]{./Figures/CycleCBR.png}
%\caption{Cycle du RàPC, les étapes, les conteneurs et leurs liens}
%\label{figCycle}
%\end{figure}

\subsection{Les systèmes multi-agents}

Les systèmes multi-agents sont des systèmes conçus pour résoudre des problèmes en combinant l'intelligence artificielle et le calcul distribué. Ces systèmes sont composés de multiples entités autonomes appelées agents, qui ont la capacité de communiquer entre elles et également de coordonner leurs comportements \citep{hajduk2019cognitive}.

Les agents ont les propriétés suivantes :
\begin{itemize}
\item Autonomie: les agents fonctionnent sans intervention externe des êtres humains ou d'autres entités, ils ont un mécanisme interne qui leur permet de contrôler leurs états.
\item Réactivité: les agents ont la capacité de percevoir l'environnement dans lequel ils sont et peuvent réagir aux changements qui se produisent.
\item Pro-activité: les agents peuvent effectuer des changements, réagir à différents stimuli provenant de leur environnement et s'engager dans un processus cognitif interne. 
\item Coopération : les agents peuvent communiquer les uns avec les autres, échanger des informations afin de se coordonner et résoudre un même problème.
\item Apprentissage: il est nécessaire qu'un agent soit capable de réagir dans un environnement dynamique et inconnu, il doit donc avoir la capacité d'apprendre de ses interactions et ainsi améliorer la qualité de ses réactions et comportements.
\end{itemize}

Il existe quatre types d'agent en fonction des capacités et des approches:
\begin{itemize}
\item Réactif: c'est l'agent qui perçoit constamment l'environnement et agit en fonction de ses objectifs.
\item Fondé sur les réflexes: c'est l'agent qui considère les options pour atteindre ses objectifs et développe un plan à suivre.
\item Hybride : il combine les deux modèles antérieurs en utilisant chacun d'eux en fonction de la situation et de l'objectif. 
\item Fondé sur le comportement: l'agent a à sa disposition un ensemble de modèles de comportement pour réaliser certaines tâches spécifiques. Chaque comportement se déclenche selon des règles prédéfinies ou des conditions d'activation. Le comportement de l'agent peut être modélisé avec différentes stratégies cognitives de pensée ou de raisonnement.\\
\end{itemize}

\subsection{Différents algorithmes et fonctions implémentés dans AI-VT pour la personnalisation et l'adaptation des séances d'entraînement proposées}

\subsubsection{Pensée Bayesienne}

D'après les travaux de certains mathématiciens et neuroscientifiques, toute forme de cognition peut être modélisée dans le cadre de la formule de Bayes (équation \ref{eqBayes}), car elle permet de tester différentes hypothèses et de donner plus de crédibilité à celle qui est confirmée par les observations. Ce type de modèle cognitif permet l'apprentissage optimal, la prédiction sur les événements passés, l'échantillonnage représentatif et l'inférence d'information manquante; il est appliqué dans quelques algorithmes d'apprentissage machine (\textit{machine learning}) et d'intelligence artificielle \citep{Hoang}.

\begin{equation}
P(A|B)=\frac{P(B|A)P(A)}{P(B)}
\label{eqBayes}
\end{equation}

La formule de Bayes calcule la probabilité \textit{a posteriori} $P(A|B)$ de la plausibilité de la théorie $A$ compte tenu des données $B$, et requiert trois termes: (1) une probabilité \textit{a priori} $P(A)$ de la plausibilité de l'hypothèse $A$, (2) le terme $P(B|A)$ qui mesure la capacité de l'hypothèse $A$ à expliquer les données observées $B$ et (3) la fonction de partition $P(B)$ qui met en compétition toutes les hypothèses qui ont pu générer les données observées $B$. À chaque nouvelle évaluation de la formule, la valeur du terme \textit{a priori} $P(A)$ est actualisée par la valeur du terme \textit{a posteriori} $P(A|B)$. Ainsi, à chaque évaluation, le degré de plausibilité de chaque hypothèse est ajusté \citep{Hoang}.

Par la suite, nous explicitons quelques algorithmes, intégrés généralement dans l'étape "Rechercher" du RàPC,  pour la recherche des cas les plus proches d'un nouveau cas.

\subsubsection{Méthode des k plus proches voisins (K-Nearest Neighborhood - KNN)}

Dans toute cette section nous considérons la méthode KNN définie dans \cite{10.1145/3459665}. Il s'agit d'une méthode permettant de classifier des données. Pour faire cela, il est nécessaire de disposer d'une base de données avec des exemples déjà identifiés. Pour classer de nouveaux exemples, la méthode attribue la même classe que celle de leurs voisins les plus proches. Généralement, l'algorithme compare les caractéristiques d'une entité avec plusieurs possibles voisins pour essayer d'obtenir des résultats plus précis. 'k' représente le nombre de voisins, sachant que l'algorithme peut être exécuté à chaque fois avec un nombre différent de voisins.

Avec un jeu de données $D$ constitué de $(x_i)_{i \in [1,n]}$ données (où $n = |D|$), où chacune est décrite par $F$ caractéristiques qui sont des valeurs numériques normalisées dans $[0,1]$, et par une classe de labellisation $y_j \in Y$. Le but est de classifier une donnée inconnue $q$. Pour chaque $x_i \in D$, il est possible de calculer la distance entre $q$ et $x_i$ selon l'équation \ref{eqDist}.

\begin{equation}
d(q,x_i)=\sum_{f \in F} w_f \delta(q_f, x_{if})
\label{eqDist}
\end{equation}

La distance entre $q$ et $x_i$ est la somme pondérée de toutes les distances élémentaires $\delta$ calculées pour chaque $f$ caractéristique. La fonction de distance $\delta$ peut être une métrique générique. Pour des ensembles discrets il est possible d'utiliser la définition \ref{eqMet1},

\begin{equation}
\delta(q_f, x_{if})=
\begin{cases}
0&q_f=x_{if}\\
1&q_f \neq x_{if}
\end{cases}
\label{eqMet1}
\end{equation}

et si l'ensemble est continu l'équation \ref{eqMet2}.

\begin{equation}
\delta(q_f, x_{if})= \lvert q_f-x_{if} \rvert
\label{eqMet2}
\end{equation}

Un score plus important est généralement attribué aux voisins les plus proches. Le vote pondéré en fonction de la distance est une technique couramment utilisée (équation \ref{eqV1}).

\begin{equation}
N(a,b)= \begin{cases} 1 & a=b \\ 0 & a \neq b \end{cases}
\label{eqV1}
\end{equation}

Le vote est couramment calculé selon l'équation \ref{eqV2}. \textcolor{red}{Dans cette équation, $p$ determine l'influence des vosins. Sa valeur est généralement fixée à 1, mais des valeurs supérieures à 1 peuvent être utilisées pour réduire davantage l'influence des voisins plus éloignés.}

\begin{equation}
vote(y_i)=\sum_{c=1}^{k} \frac{1}{d(q, x_c)^p}N(y_j, y_c)
\label{eqV2}
\end{equation}

Une autre alternative est fondée sur le travail de Shepard, équation \ref{eqV3}.

\begin{equation}
vote(y_i)=\sum_{c=1}^{k} e^{d(q, x_c)}N(y_j, y_c)
\label{eqV3}
\end{equation}

La fonction de distance peut être n'importe quelle mesure d'affinité entre deux objets, mais cette fonction doit répondre à quatre critères (équations \ref{eqCond}).

\begin{equation}
\begin{array}{l}
  d(x,y) \ge 0\\
  d(x,y) = 0, \; seulement \; si \; x=y\\
  d(x,y)=d(y,x)\\
  d(x,z) \ge d(x,y) + d(y,z)\\
\end{array}
\label{eqCond}
\end{equation}

\subsubsection{K-Moyennes}

Selon \cite{9072123}, K-Moyennes est un algorithme d'apprentissage utilisé pour partitionner et grouper des données.  Considérons $X = \{x_1, . . . , x_n\}$ un ensemble de vecteurs dans un espace Euclidien $\mathbb{R}^d$, et $A = \{a_1, . . . , a_c\}$ où $c$ est le nombre de groupes. Considérons également $z = [z_{ik} ]_{n \times c}$, où $z_{ik}$ est une variable binaire (i.e. $z_{ik} \in \{0, 1\}$) qui indique si une donnée $x_i$ appartient au k-ème groupe, $k = 1, ... , c$. La fonction objectif k-moyenne est définie selon l'équation \ref{eqKM}.

\begin{equation}
J (z, A, X) = \sum_{i=1}^n \sum_{k=1}^c z_{ik} \parallel x_i - a_k \parallel ^2
\label{eqKM}
\end{equation}

Cet algorithme minimise la fonction objectif des k moyennes $J (z, A, X)$ : à chaque itération, les termes $a_k$ et $z_{ik}$ sont calculés selon les équations \ref{eqCentres} et \ref{eqApp}. 

\begin{equation}
a_k=\frac{\sum_{i=1}^n z_{ik}x_{ij}}{\sum_{i=1}^n z_{ik}}
\label{eqCentres}
\end{equation}

\begin{equation}
z_{ik}=\begin{cases}1 & si \;  \parallel x_i - a_k \parallel ^2=min_{1 \le k \le c} \parallel x_i - a_k \parallel ^2\\ 0,&sinon\end{cases}
\label{eqApp}
\end{equation}

\subsubsection{Modèle de mélange Gaussien GMM (\textit{Gaussian Mixture Model})}

Le modèle de mélange gaussien (GMM) est un modèle probabiliste composé de plusieurs modèles gaussiens simples. Ce modèle est décrit dans \cite{WANG2021331}. En considérant une variable d'entrée multidimensionnelle $x=\{x_1, x_2, ..., x_d\}$, GMM multivarié est défini selon l'équation \ref{eqGMM}.

\begin{equation}
p(x \lvert \theta)=\sum_{k=1}^K \alpha_k g(x \lvert \theta_k)
\label{eqGMM}
\end{equation}

Dans cette équation, $K$ est le nombre de modèles gaussiens uniques dans GMM, également appelés composants; $\alpha_k$ est la probabilité de mélange de la k-ème composante respectant la condition $\sum_{k=1}^K \alpha_k=1$.

$\theta_k$ représente la valeur moyenne et la matrice de covariance de chaque $k$ modèle gaussien unique: $\theta_k=\lbrace \mu_k, \Sigma_k \rbrace$. Pour un seul modèle gaussien multivarié à $n$ dimensions ($\mu_k$ est la moyenne de chaque $k$ modèle gaussien, $\Sigma_k$ est la matrice de covariance de chaque $k$ modèle gaussien), nous avons la fonction de densité de probabilité $g(x)$ (équation \ref{eqdProb}).

\begin{equation}
g(x | \mu, \Sigma)=\frac{1}{(2\pi)^{n/2} \lvert \Sigma \rvert ^{1/2}} exp \left( - \frac{1}{2} (x-\mu)^T \Sigma ^{-1} (x-\mu) \right )
\label{eqdProb}
\end{equation}

La tâche principale est d'obtenir les paramètres $\alpha_k, \theta_k$ pour tout $k$ défini dans GMM en utilisant un ensemble de données avec $N$ échantillons d'entraînement. Une solution classique pour l'estimation des paramètres requis utilise l'algorithme de maximisation des attentes (\textit{Expectation-Maximization} - EM), qui vise à maximiser la vraisemblance de l'ensemble de données. Il s'agit d'un algorithme itératif durant lequel les paramètres sont continuellement mis à jour jusqu'à ce que la valeur delta log-vraisemblance entre deux itérations soit inférieure à un seuil donné.

\subsubsection{Fuzzy-C}
Fuzzy C-Means Clustering (FCM) est un algorithme de clustering flou non supervisé largement utilisé \citep{9627973}. Le FCM utilise comme mesure de distance la mesure euclidienne. Supposons d'abord que l'ensemble de $n$ échantillons à regrouper est $X=\{x_1,x_2,...,x_n\}$, où $x_j \in \mathbb{R}^d(1 \le j \le n)$ dans un espace euclidien à $d$ dimensions, et $c$ le nombre de clusters. L'équation \ref{eqFuzzy} montre la fonction objectif de FCM.

\begin{equation}
J(U,V)=\sum_{i=1}^c \sum_{j=1}^n u_{ij}^m (x_j - v_i)^T A(x_j-v_i)
\label{eqFuzzy}
\end{equation}

où $A$ est la matrice métrique, $(x_j-v_i)^T$ est la transposée de vecteur résultant $x_j-v_i$, $m$ est un nombre quelconque ($m > 1$) qui dénote le degré de flou, $u_{ij}$ est le degré d'appartenance du j-ème échantillon $x_j$ qui appartient au i-ème cluster, dont le centre est $v_i$. $U=(u_{ij})$, $V=[v_1,v_2,...,v_c], 1 \le i \le c, 1 \le j \le n, 2 \le c < n$ satisfaisant les conditions de l'équation \ref{eqFCond}.

\begin{equation}
\sum_{i=1}^c u_{ij} = 1, u_{ij} \ge 0
\label{eqFCond}
\end{equation}

Pour compléter le modèle, les équations de mise à jour pour le centre du cluster $v_i$ (équation \ref{eqFV}) et des degrés d'appartenance $u_{ij}$ (équation \ref{eqFU}) sont définies.

\begin{equation}
v_i=\frac{\sum_{j=1}^n u_{ij}^m x_j}{\sum_{j=1}^n u_{ij}^m}
\label{eqFV}
\end{equation}

\begin{equation}
u_{ij}=\frac{((x_j-v_i)^TA(x_j-v_i))^{\frac{2}{m-1}}}{\left( \sum_{h=1}^c (x_j-v_h)^TA(x_j-v_h)  \right)^{\frac{2}{m-1}}}
\label{eqFU}
\end{equation}

Les algorithmes qui se trouvent dans la suite de cette section sont des algorithmes qui font partie de l'intelligence artificielle et sont utilisés dans certains EIAH pour améliorer les recommandations, et essayer de détecter et de corriger les faiblesses des apprenants de façon automatique.

\subsubsection{Bandit Manchot MAB (\textit{Multi-Armed Bandits})}

Dans \cite{9434422} MAB est décrit comme un problème qui appartient au domaine de l'apprentissage par renforcement. Celui-ci représente un processus de prise de décision séquentielle à des instants $t$ de temps, où un utilisateur doit sélectionner une action $k_t \in K$ à réaliser dans un ensemble $K$ fini d'actions possibles et donnant une récompense inconnue de l'utilisateur. L'objectif est de maximiser la récompense cumulée globale dans le temps. La clé pour trouver une solution au problème est de trouver l'équilibre optimal entre l'exploration (exécuter des actions inconnues pour collecter de l'information complémentaire) et l'exploitation (continuer à exécuter les actions déjà connues pour cumuler plus de gains). L'un des algorithmes utilisés pour résoudre ce problème est l'échantillonnage de Thompson.

\subsubsection{Échantillonnage de Thompson TS (\textit{Thompson Sampling})}

Comme indiqué dans \cite{9870279}, l'algorithme d'échantillonnage de Thompson est un algorithme de type probabiliste utilisé généralement pour résoudre le problème MAB. Il s'appuie sur un modèle bayésien dans lequel une distribution de probabilités \textit{Beta} est initialisée. Cette distribution de probabilités est ensuite affinée de manière à optimiser la valeur résultat à estimer. Les valeurs initiales des probabilités de Beta sont définies sur l'intervalle $[0, 1]$. Elle est définie à l'aide de deux paramètres $\alpha$ et $\beta$.

L'échantillonnage de Thompson peut être appliqué à la résolution du problème du Bandit Manchot (MAB). Dans ce cas, les actions définies dans le MAB ont chacune une incidence sur la distribution de probabilités Beta de l'échantillonnage de Thompson. Pour chaque action de MAB, les paramètres de Beta sont initialisés à 1. Ces valeurs changent et sont calculées à partir de récompenses obtenues : si au moment d'exécuter une action spécifique le résultat est un succès, alors la valeur du paramètre $\alpha$ de sa distribution Beta augmente mais si le résultat est un échec alors c'est la valeur du paramètre $\beta$ de sa distribution Beta qui augmente. De cette façon, la distribution pour chacune des actions possibles est ajustée en privilégiant les actions qui génèrent le plus de récompenses.

L'échantillonnage de Thompson est un cas particulier de la loi de Dirichlet comme le présente la figure \figref{figBeta}. L'équation \ref{eqBeta0} décrit formellement la famille des courbes générées par la distribution Beta. \textcolor{red}{Dans cette équation, $\Theta$ est la variable du domaine et les variables $\alpha$ et $\beta$ permettent de changer la forme de la distribution ainsi que la moyenne et la variance. L'équation \ref{eqGamma1_0} présente la fonction $\Gamma$ figurant dans l'équation \ref{eqBeta0}.} 

\mfigure[!ht]{width=\textwidth}{./Figures/beta-distribution.png}{Comportement de la distribution Beta avec différentes valeurs de paramètres $alpha$ et $beta$.}{figBeta}

%\begin{figure}
%\centering
%\includegraphics[scale=0.5]{./Figures/beta-distribution.png}
%\caption{Comportement de la distribution Beta avec différentes valeurs dans ses paramètres}
%\label{figBeta}
%\end{figure}

\begin{equation}
    Beta(\theta | \alpha, \beta) = \frac{\Gamma(\alpha + \beta)}{\Gamma(\alpha) \Gamma(\beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1}
    \label{eqBeta0}
\end{equation}

\begin{equation}
    \Gamma(z)=\int_0^\infty e^{-x} x^{z-1} dx
    \label{eqGamma1_0}
\end{equation}

%\begin{equation}
%B(x, \alpha, \beta) =
%\begin{cases}
%\frac{x^{\alpha-1}(1-x)^{\beta - 1}}{\int_0^1 u^{\alpha - 1}(1-u)^{\beta - 1}du} & si \; x \in [0, 1] \\
%0&sinon
%\end{cases}
%\label{eqBeta}
%\end{equation}

La section suivante présente un état de l'art plus détaillé des EIAH et des systèmes de RàPC dédiés aux EIAH.