\chapter{Architecture Globale du Système AI-VT}

\section{Introduction}

Il est important de définir et décrire l'architecture logicielle d'un système complexe afin de mieux comprendre son fonctionnement. L'architecture montre les composants, les couches, les fonctionnalités et les interactions. Ce chapitre présente l'architecture modulaire proposée pour le système AI-VT. Les modules intègrent des outils issus de différents paradigmes, des modèles et des algorithmes d'intelligence artificielle permettant au système d'être plus performant. Les objectifs de l'architecture proposée sont de rendre le logiciel AI-VT (Artificial Intelligence - Virtual Trainer) stable, évolutif, performant et facile à entretenir. L'architecture proposée se compose de quatre couches indépendantes, chacune dédiée à une fonctionnalité spécifique : correction automatique, identification, révision et test. Le contenu de ce chapitre a été publié dans \textit{et al.} \cite{10.1007/978-3-031-63646-2_13}.

Il est possible de classer les architectures selon deux catégories : les architectures monolithiques et les architectures modulaires. Dans une architecture monolithique, le système logiciel est considéré comme une entité unique et unitaire avec une seule source de code, une seule base de données et un seul déploiement pour l'ensemble du système. Ce type de système est simple à développer et à tester mais il est peu adapté à la mise à jour et à l'évolution en raison de sa rigidité. Une architecture modulaire divise le système en modules indépendants qui peuvent communiquer entre eux, chaque module contenant alors tout ce qui est nécessaire pour fonctionner. De nombreux systèmes logiciels ont été conçus avec une architecture modulaire en raison des multiples avantages qu'elle présente \cite{Auer} \cite{jmse10040464}.

L'EIAH AI-VT a ainsi évolué vers une architecture modulaire que nous présentons dans ce chapitre. Après avoir rappelé le fonctionnement et les différents composants initiaux du système AI-VT, ce chapitre présente l'architecture modulaire implémentée lors de cette thèse et permettant à AI-VT d'intégrer de nouvelles fonctionnalités. La section 5.2 décrit le système AI-VT qui a été développé et qui existait avant le début de cette thèse.

%\textcolor{red}{penser à bien expliciter ce qui existait avant, et ce que tu as développé et ce qui est en cours}

%----------------------------------------------------------------------------------------
%	SECTION 2
%----------------------------------------------------------------------------------------

\section{Description du système AI-VT}\label{sec:descAIVT}

Pour rappel, le système AI-VT est un outil pédagogique générique qui vise à accompagner les apprenants dans leur apprentissage en leur proposant des fiches d'exercices appelées sessions. Durant chaque session, les capacités attendues sont divisées en compétences, elles-mêmes divisées en sous-compétences. L'apprenant choisit une compétence à travailler et le système génère une session composée d'exercices associés à plusieurs sous-compétences de la compétence choisie. Le système propose une liste d'exercices au début d'une session en utilisant le paradigme du raisonnement à partir de cas avec une base de données de questions.

Le système AI-VT est un EIAH générique dont la structure globale est présentée sur la figure \figref{figSys1}. Il intègre une base de données de questions. Chacune des questions est associée à un contexte, au texte de la question considérée et à un niveau de complexité. Les questions sont liées à des sous-compétences, elles-mêmes liées à des compétences. Les principaux acteurs du système sont l'enseignant et l'apprenant. L'enseignant a la capacité de configurer l'ensemble du système, le nombre de compétences, les sous-compétences d'une compétence, le nombre de questions, la complexité de chacune d'entre elles, le niveau de complexité et le temps par session. L'apprenant quant à lui, peut commencer l'entraînement d'une compétence spécifique, accéder à des ressources de soutien complémentaires et répondre aux questions de test dans les sessions proposées par le système. Le tableau \ref{tabDesc} montre les caractéristiques du système AI-VT selon les 20 descripteurs permettant de caractériser le profil de l'apprenant décrits dans \cite{Daubias2011}.

\mfigure[!ht]{width=\textwidth}{./Figures/AIVT.png}{Structure du système AI-VT}{figSys1}

%\begin{figure}[!ht]
%\centering
%\includegraphics[width=\textwidth]{./Figures/AIVT.png} 
%\caption{Structure du système AI-VT}
%\label{figSys1}
%\end{figure}

En s'appuyant sur la philosophie du RàPC, le système global AI-TV part du principe que la création d'une session pour un apprenant peut être réalisé par analogie avec celles proposées à des apprenants ayant des acquis, besoins et capacités similaires. AI-VT propose une liste d'exercices en fonction de la compétence ou de la sous-compétence sélectionnée par similitude avec celles proposées auparavant à d'autres apprenants.

L'algorithme d'AI-VT tente de tenir compte de l'équilibre entre répétitivité et variété. De plus, le nombre d'exercices par session change en fonction du domaine, de la compétence choisie et du niveau de l'apprenant. La liste d'exercices est générée au début de chaque séance et elle n'est pas modifiée au cours de la séance en fonction des réponses fournies par l'apprenant : les listes d'exercices sont statiques pendant la séance \cite{10.1007/978-3-030-01081-2_9}.

\begin{table}[!ht]
\centering
\begin{tabular}{p{1in}p{2.5in}p{1.5in}}
Type&Definition&Système AI-VT\\
\hline
Sujet&Acteur humain concerné par le profil&Apprentissage seul et en groupe\\
Collaboration&Le rôle de la collaboration dans les activités du profil&Individuel, Collaboratif\\
Distance&Le rôle de la distance dans les activités du profil&Présentiel, Distanciel\\
Discipline&Discipline des informations contenues dans le
profil&Générique\\
Niveau&Le niveau scolaire de la matière concernée par le profil &Générique\\
Initiateur&L'acteur humain à l'origine de la décision de créer le profil de création&Professeur, Administrateur\\
Créateur&L'acteur humain ou logiciel qui compose le profil&Professeur, Administrateur\\
Destinataire&Acteur humain ou logiciel exploitant le profil&Apprenant\\
Temps&Période du profil&Asynchrone\\
Évolution&L'évolutivité du profil &Profil évolutif\\
Type&Le type d'informations contenues dans le profil &Profil de l'apprenant\\
Nature&La nature des informations contenues dans le
profil&Connaissances et compétences\\
Évaluation&La forme sous laquelle l'information est
évaluée&Rating, Taux de maîtrise\\
Représentation interne&Représentation interne utilisée par le système informatique pour manipuler les profils&Tables\\
Représentation externe&Représentation utilisée pour stocker le profil &Liste de valeurs\\
Visualisation&Représentation utilisée pour présenter le profil à ses destinataires&Représentation textuel et graphique standard\\
Norme&Norme ou standard éducatif & - \\
Format&Format de stockage du profil &Base de données relationnelle\\
Plate-forme&plate-forme informatique compatible&Web\\
Dispositifs&le type de dispositif d'affichage du profil &Ordinateur ou appareils connectés\\
\end{tabular}
\caption{Un tableau décrivant les caractéristiques du système AI-VT}
\label{tabDesc}
\end{table}

\section{Modèle d'architecture proposé}

Cette section explicite l'architecture proposée à partir du système AI-VT initial.
 
%\textcolor{red}{pour tous les modules dire précisément ce qui est développé ou en cours}

La nouvelle architecture proposée a pour objectif d'intégrer de nouvelles fonctionnalités complémentaires au système initial sans en modifier les fonctionnalités. L'idée consiste donc à pouvoir activer simplement le module correspondant en envoyant et en recevant les informations nécessaires à son fonctionnement. Une évolution vers une architecture plus modulaire permet ainsi d'ajouter de nouvelles fonctionnalités au système d'origine en intégrant de nouveaux modules ou en faisant évoluer les modules existants. La conception modulaire facilite également la maintenance du code, le développement et l'intégration de nouvelles extensions. De plus, le système peut être configuré et adapté module par module, réduisant ainsi les risques de pannes et les coûts de maintenance et d'évolution. La modularité permet également d'exécuter les algorithmes de chaque module de manière asynchrone, en parallèle ou en mode distribué si nécessaire.%\textcolor{red}{idem préciser ce qui était avant, le travail de floran et ton travail}

L'architecture se compose de deux éléments principaux représentés sur la figure \figref{sa1} : le système central AI-VT, tel qu'il est décrit dans la section \ref{sec:descAIVT}, et les modules fonctionnels proposées pour compléter et améliorer certaines fonctionnalités. Le système central gère l'ensemble du processus d'apprentissage ; il génère %\textcolor{red}{démarre?}
les séances ; il stocke les données relatives aux compétences, aux questions, aux ressources, aux apprenants, aux enseignants et aux réponses ; il contient les commandes et l'interface générale ; il gère le flux d'informations et active les modules nécessaires. Les modules sont un ensemble de fonctionnalités indépendantes mises en œuvre avec des algorithmes d'intelligence artificielle qui reçoivent et envoient des données depuis le composant central. Chaque module fonctionne selon des critères spécifiques liés à son propre objectif. Les modules sont regroupés en couches selon leur fonctionnalité : correction automatique, identification, adaptation, révision et test. L'enseignant et l'apprenant n'utilisent pas les modules directement ; ceux-ci sont appelés par le système pour compléter certaines fonctionnalités.

\mfigure[!ht]{width=\textwidth}{./Figures/Architecture AI-VT2.png}{Schème de l'architecture proposée}{sa1}

%\begin{figure}[!ht]
%\centering
%\includegraphics[width=\textwidth]{./Figures/Architecture AI-VT2.png}
%\caption{Schème de l'architecture proposée}
%\label{sa1}
%\end{figure}

La couche de correction automatique (LC) contient les modules chargés de recevoir les réponses des apprenants et, conformément aux algorithmes et critères définis, d'établir une note cohérente avec une réponse de référence à une question spécifique. Dans cette couche, le module routeur (LC0) est chargé d'identifier le type de correction nécessaire et d'instancier le module approprié pour l'exécution de la tâche spécifique.

La couche d'identification (LD) contient les modules qui identifient les faiblesses ou les variables externes des apprenants lors de l'exécution des exercices proposés par le système ou après l'analyse des résultats. Ces modules aident à personnaliser le processus d'apprentissage en fonction de l'analyse des résultats obtenus par les apprenants.

La couche de révision (LR) comprend les modules qui prennent les données des résultats obtenus dans la couche LC et les résultats de l'analyse de la couche LD pour modifier le parcours de l'apprenant en essayant de renforcer l'apprentissage dans les faiblesses détectées. Elle comprend également les modules qui obtiennent des informations de la part des apprenants et tentent de prédire leurs résultats en fonction des différentes compétences et des différents niveaux de complexité.

Pour évaluer les modules dans différents scénarios, il est nécessaire de produire des données selon différents critères et complexités. C'est la raison pour laquelle la couche de test (LT) a été définie.  Les modules qui permettent de générer des données synthétiques selon des critères variables font partie de cette couche. Les modules de cette couche permettent d'obtenir des résultats numériques des modules, d'appliquer des métriques, et ainsi d'évaluer les modules selon différents critères et complexités.

Le schéma complet de l'architecture est représenté sur la figure \figref{sa1}. Sur cette figure, les lignes pleines représentent un flux d'informations bidirectionnel, les lignes pleines terminées par une flèche représentent le flux unidirectionnel et les lignes en pointillé représentent la dépendance de l'information entre les modules. 
Les dispositifs externes qui peuvent être utilisés par les modules pour exécuter leurs fonctionnalités et les étiquettes indiquant le type d'information transmis au système central par le module sont également représentés. Certains des algorithmes d'intelligence artificielle mis en œuvre dans chaque module et le stade de développement dans lequel chacun d'eux se trouve y figurent également. Comme le montre cette figure, certains dispositifs ont besoin de données provenant de sources externes telles que le robot NAO, des capteurs, caméra vidéo ou microphone.

\subsection{Correction automatique}

L'une des couches importantes et la couche de correction automatique. Dans cette couche, les modules ont la capacité de recevoir et d'évaluer différents types de réponses données par les apprenants en fonction du contexte et de la question que le système a proposée. Les modules représentés ont la capacité d'évaluer une réponse donnée par l'apprenant. Des études et certains programmes ont déjà été réalisés dans l'analyse de vidéo, de texte audio (langage naturel) et de code source (Java, Python). D'autres modules permettent également d'analyser des images, des expressions mathématiques, des valeurs générées par des capteurs physiques et des variables définies pour des activités sportives spécifiques.

Le module routeur (LC0) a pour fonction d'identifier le type de réponse donnée par l'apprenant, c'est-à-dire reconnaître si la réponse donnée par l'apprenant est vidéo, audio, texte, image, etc. et de la rediriger vers le module d'analyse correspondant ; une fois que le module spécifique obtient les résultats de l'analyse de la réponse donnée, le routeur les redirige vers le système AI-VT principal.

Le module vidéo (LC1) permet de capturer un flux d'images à partir d'un dispositif externe (caméra vidéo ou robot NAO) et de les analyser pour déterminer si une réponse donnée est correcte, actuellement le module est utilisé pour évaluer la réponse à la question : montrer \textit{n} nombre de doigts. L'algorithme implémenté détecte les doigts qui apparaissent sur la caméra, les compte et détermine s'il s'agit de la bonne réponse à la question donnée.

Le module audio (LC2) analyse une piste audio et convertit son contenu en texte. Une fois le texte généré, il peut être comparé à une réponse attendue à la question posée à l'aide de techniques NLP. Un score d'approximation estimé peut alors être calculé. Pour la comparaison, le module de texte (LC4) est utilisé , il permet d'établir le score de similarité entre le texte envoyé comme réponse de l'apprenant ou converti depuis une réponse audio et un texte de référence.

Le module d'analyse du code (LC3) génère un score après l'exécution de plusieurs étapes. En premier lieu, il détermine l'existence ou non de faiblesses dans certaines compétences prédéfinies. Il transforme ensuite la représentation du code en un vecteur numérique à comparer avec une réponse de référence : le résultat de la pondération entre les faiblesses détectées et le pourcentage de comparaison donne un score. 

Le module d'analyse de texte (LC5) transforme le texte envoyé par l'apprenant en un vecteur numérique qui peut être comparé au vecteur numérique d'une réponse attendue. Dans ce cas, la réponse donnée ne doit pas nécessairement être exactement la même que la réponse attendue. La représentation vectorielle permet d'établir des similitudes dans l'espace, même si les termes utilisés et la longueur du texte diffèrent.

Les modules LC6, LC7, LC8 et LC9 sont capables d'analyser différents types de réponses potentielles qui peuvent éventuellement être gérées par le système AI-VT.

Les modules LC1, LC2, LC3 ont été partiellement développés et n'ont pas été suffisamment testés pour les intégrer dans le système de façon fonctionnelle, les autres modules pour le moment sont théoriques.

\subsection{Identification}

Les modules de la couche d'identification visent à extraire des informations complémentaires à la note de l'apprenant pour chacune des réponses envoyées au système et ainsi affiner encore plus les recommandations générées. Ces informations complémentaires permettent d'obtenir principalement des informations sur les émotions (bonheur, dégoût, surprise, colère, peur, neutre et triste) grâce à la détection des expressions faciales et aussi les lacunes de connaissance de l'apprenant %\textcolor{red}{expression et faiblesse de quoi, comment?}
qui peuvent se manifester dans chaque sous-compétence et niveau de complexité. Ces modules d'AI-VT sont capables d'obtenir une meilleure estimation de l'état de l'apprentissage afin de mieux adapter le parcours de l'apprenant.

Les modules d'identification LD1, LD2 et LD4 tentent de détecter les comportements, les émotions et les sentiments à l'aide de dispositifs externes tels que la caméra vidéo et le microphone. Dans le cas de l'analyse vidéo, des réseaux neuronaux d'apprentissage profond sont utilisés pour capturer et analyser les images statiques obtenues à partir du flux de la caméra vidéo. Le modèle d'IA a été entraîné à détecter des émotions prédéfinies. Le module audio vise à détecter le même type d'émotions, mais à partir de l'analyse des signaux obtenus à partir d'un microphone. Il utilise également l'apprentissage profond entrainé avec des signaux qui présentent différentes émotions prédéfinies. Le module capteur est plus générique, mais il peut être subdivisé en modules spécifiques en fonction du type de capteur et du signal à analyser. Toutefois, l'idée de la détection est la même : détecter des émotions prédéfinies.

Le module Analyse des données (LD3) est différent car, en plus d'être générique, il tente d'identifier les faiblesses dans des compétences spécifiques en fonction du type d'évaluation. Ce module peut contenir différents modèles entraînés pour chaque type de cas. Pour les exercices linguistiques, les faiblesses identifiables peuvent être la conjugaison des verbes, l'utilisation des temps, le vocabulaire, la correspondance des genres de mots, etc. Si l'exercice est de type programmation le module est capable d'identifier des faiblesses liées à la syntaxe, la déclaration de variables, l'appel de fonctions, la construction de structures, etc. Ce module fonctionne sur la base d'implémentation de modèles d'apprentissage profond et de modèles collaboratifs tels que le raisonnement à partir de cas.

Les modules LD1 et LD3 ont été partiellement développés et n'ont pas été suffisamment testés pour les intégrer dans le système de façon fonctionnelle, les autres modules pour le moment sont théoriques.

\subsection{Révision}

Les modules qui se trouvent dans cette section sont les modules principaux de ce travail. Dans la couche de révision, les modules utilisent les informations générées par les modules des couches de correction automatique et d'identification ainsi que les informations complémentaires de l'apprenant stockées dans la base de données du système. Ces modules valident le fait que la recommandation générée est optimale pour l'apprenant. Toutes les informations récoltées permettent d'établir la meilleure façon de guider l'apprenant vers une meilleure compréhension en surmontant les faiblesses et les lacunes qui ont été identifiées.

Les ressources recommandées par le module LR1 proviennent d'une base de données déjà établie que le module consulte et suggère à l'apprenant en fonction du résultat de la comparaison de l'état d'apprentissage, du niveau et des caractéristiques et spécifications de chacune des ressources.

Le module LR2 a deux variantes fondées sur les valeurs générées par l'apprenant lorsque la séance d'entraînement est en cours : l'une déterministe et l'autre stochastique. Le modèle déterministe utilise un tableau prédéterminé de rangs sur lequel l'apprenant est positionné pour générer la suggestion d'adaptation. Le modèle stochastique utilise des distributions de probabilités dynamiques qui changent en fonction des résultats de l'apprenant à chaque niveau de complexité de la même sous-compétence.

D'autres modules proposant une prédiction avec les mêmes données que celles qui ont été utilisées pour la génération de l'adaptation sont aujourd'hui implémentés dans AI-VT. Ils permettent d'estimer plus précisément la performance de l'apprenant et si effectivement l'adaptation proposée lui permet d'acquérir les compétences nécessaires et d'améliorer les notes obtenues.

Le module LR3 obtient dynamiquement des structures variables à partir des informations extraites du système AI-VT central. Ce module peut également effectuer des transformations dans la structure, le contenu et la représentation des données des apprenants.

Le module LR4 utilise les informations produites par l'apprenant et les informations collaboratives pour tenter de prédire les performances futures de l'apprenant. En particulier avec la recommandation générée par les modules de la couche adaptative, la prédiction est utilisée pour valider l'adaptation recommandée et l'ajuster si nécessaire.

Le module LR1 est fonctionnel dans le système AI-VT, mais encore il est nécessaire ajouter plus de ressources en fonction des questions configurées. L'algorithme proposé pour le module LR2 est décrit dans le chapitre \ref{chap:RecommandationAIVT}, l'algorithme proposé pour les modules LR3, et LR4 apparait dans le chapitre \ref{ChapESCBR}.

\subsection{Test}

La couche de test fonctionne en amont et en aval de la génération des séances d’entraînement. Elle permet d'évaluer chacun des modules indépendamment et de générer des données spécifiques pour divers scénarios de test qui peuvent être pris en compte lors de la validation d'un module.

Les outils des différentes couches de l'architecture peuvent communiquer entre eux, car, pour que certains de leurs modules internes fonctionnent, ils ont besoin des informations générées par les modules des autres couches. La figure \figref{figLayers} montre les interactions qui peuvent se produire lorsque le système génère une séance ou l'adapte ou encore lorsqu'un module expérimental doit être évalué. La couche de test (LT) a besoin des informations générées par les modules de toutes les autres couches pour évaluer leurs performances individuelles. La couche d'identification (LD) doit obtenir les données relatives au profil des apprenants. Ces informations sont générées par le module de profil qui se trouve dans la couche de révision (LR). Pour certains modules qui ont la capacité de modifier une solution, cette couche doit connaître les résultats obtenus par l'apprenant dans chacun des tests ou exercices proposés par le système. Ces résultats sont attribués par la couche de correction automatique (LC). De plus, il est possible d'obtenir une estimation du résultat de la révision proposée avant qu'elle ne soit envoyée à l'apprenant, pour cela il faut invoquer les modules spécifiques de prédiction qui appartiennent à la couche de révision (LR).

L'algorithme spécifique pour le module LT1 et les caractéristiques de la base de données générée sont détaillées dans le chapitre \ref{chap:RecommandationAIVT}.

\mfigure[!ht]{scale=0.8}{./Figures/Layers.png}{Relation entre les couches définies de l'architecture.}{figLayers}

%\begin{figure}[!ht]
%\centering
%\includegraphics[scale=0.60]{./Figures/Layers.png}
%\caption{Relation entre les couches définies de l'architecture.}
%\label{figLayers}
%\end{figure}

Le flux complet d'informations est représenté sur la figure \figref{figFlow}. La première étape consiste à envoyer le test généré par le système AI-VT à l'apprenant. Lors de cette étape, le module d'identification correspondant à l'analyse à effectuer est également lancé. Lorsque l'apprenant envoie la réponse à une question, le module d'identification envoie à l'apprenant l'analyse effectuée sur cette même réponse. Grâce à ces informations, le système active les modules de correction automatique pour attribuer une note à la réponse envoyée, en tenant compte également des résultats du module d'identification. À l'étape 6, la note générée est envoyée au système, puis pour effectuer l'adaptation, le système obtient les informations spécifiques de l'apprenant et lance les modules d'adaptation, en envoyant les informations obtenues dans les étapes précédentes. Les algorithmes d'adaptation évaluent les variables et déterminent le parcours optimal pour l'apprenant, mais avant de le renvoyer au système principal, l'étape 9 évalue sa pertinence à l'aide du module de prédiction. Si le résultat de la prédiction détermine que le chemin suggéré est acceptable, il est envoyé au système principal qui décide, à l'étape 11, de le présenter à l'apprenant comme une alternative au chemin sélectionné à l'origine.

\mfigure[!ht]{width=\textwidth}{./Figures/flow.png}{Étapes du flux de l'information pour la fonctionnalité de recommandation globale.}{figFlow}

%\begin{figure}[!ht]
%\centering
%\includegraphics[width=\textwidth]{./Figures/flow.png} 
%\caption{Étapes du flux de l'information pour la fonctionnalité de recommandation globale}
%\label{figFlow}
%\end{figure}

\section{Conclusion}

L'architecture modulaire proposée est fondée sur des concepts et des modèles couramment utilisés pour concevoir des systèmes complexes. Ils utilisent des algorithmes et des outils d'intelligence artificielle. Ce type de conception permet la mise en œuvre d'un système fonctionnel doté d'une capacité d'adaptation, nécessaire à l'exécution de l'une des principales exigences des systèmes d'apprentissage intelligents. En outre, comme l'indiquent les travaux cités en référence, l'architecture modulaire 
%\textcolor{red}{remonter le terme modulaire en parler en début de conclusion}
permet une mise en œuvre plus souple et donne au système la possibilité d'évoluer rapidement et même d'ajouter des fonctionnalités complémentaires sans affecter le système et les données qui y sont stockées.
%\textcolor{red}{peut être reciter les modules principaux ou ceux utilisés par la suite}
Les modules principaux qui vont être développés dans cette thèse et explicités dans les chapitres suivants sont : Optimisation du processus d'apprentissage (LR2), Profil de l'apprenant (LR3), Prédiction de la performance (LR4), Analyse de données (LD3) et Simulation (LT1).