FR 2791446 A1 20000929 FR 9903830 A 19990326 PROCEDE D'INITIALISATION D'UN RESEAU DE NEURONES L'invention concerne un procédé d'initialisation d'un réseau de neurones, plus particulièrement appelé perceptron. Un tel réseau de neurones permet de réaliser de nombreuses tâches, comme l'identification, le contrôle, la classification ou le filtrage. Leur utilisation suppose certains réglages, concernant d'une part la structure du réseau, soit son type et le nombre de neurones cachés, et d'autre part la méthode d'apprentissage du réseau constituée d'une part des valeurs initiales de ses paramètres et d'autre part de la mise à jour de ses paramètres. Actuellement, la réalisation d'un réseau de neurones se fait par essais successifs et correction des erreurs correspondantes entre deux bornes très larges, et son initialisation est aléatoire de sorte qu'il est nécessaire d'effectuer plusieurs initialisations pour obtenir un résultat concluant. Le but de l'invention est donc de construire un réseau de neurones qui émule une fonction non linéaire connue seulement par certains de ses points de fonctionnement, puis d'initialiser ce réseau de neurones. Pour cela l'objet de l'invention est un procédé d'initialisation d'un réseau de neurones destiné à émuler une fonction non linéaire, caractérisé en ce qu'il est réalisé par une boîte d'initialisation recevant en entrée les données disponibles sur la fonction, soit un échantillon d'entrées et un échantillon de sorties, et effectuant les étapes suivantes: - la sélection automatique du nombre de zones linéaires nécessaires, compte-tenu des informations disponibles sur la fonction non-linéaire, pour approximer linéairement ladite fonction; - le calcul automatique des caractéristiques des formes linéaires sur chaque zone de la fonction, soit leur pente; o10 - la conception automatisée du réseau de neurones qui associe à chaque zone de la fonction la forme linéaire correspondante; le calcul des valeurs initiales des paramètres du réseau neuronal, soit les poids et les biais de la couche de neurones cachés et de la couche de neurones de sortie. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description d'un réseau de neurones et de son initialisation, illustrée par les figures suivantes qui sont: - la figure 1: un schéma fonctionnel d'un réseau de neurones; les figures 2a et 2b: deux exemples de fonctions d'activation d'un réseau de neurones; - la figure 3: une représentation symbolique de la fonction de transfert d'un réseau de neurones; - la figure 4: un schéma fonctionnel d'un réseau de neurones initialisé selon le procédé de l'invention; - la figure 5: la boite d'initialisation d'un réseau de neurones selon l'invention; - la figure 6: un exemple de fonction non linéaire à émuler et d'une initialisation linéaire par morceaux correspondante; - la figure 7: les caractéristiques d'une bande d'espace associée à une zone linéaire d'une fonction non linéaire; - les figures 8a et 8b: le mode apprentissage et le mode utilisation d'un réseau de neurones. Un réseau de neurones 1 peut être représenté par un schéma fonctionnel comme celui de la figure 1, qui comprend un module 2 constituant la fonction de o10 transfert du réseau neuronal. Pour une entrée E donnée et un jeu de paramètres 0 fixé dans un module 3, elle produit une sortie S donnée. En notant x = (xi)i le vecteur d'entrée à d entrées et z (zi)i le vecteur de 1 2 2 sortie à a sorties, avec 0 = (W1, b, W2, b) les paramètres tels que: W1 = [W1]ij: d x c paramètres réels, b1 = [bl]j: c paramètres réels, w2 = [W2]jk: c x a paramètres réels, b2 = [b2]k: a paramètres réels, avec c: nombre de neurones cachés du réseau. Le sous-module 4 du module 2 de la fonction de transfert produit le vecteur de sortie z dont l'expression (E1) à partir de la fonction d'activation D du réseau est la suivante: (El1) z = q[W2*cD(Wl*x + b1) + b2]. Cette fonction d'activation À peut prendre plusieurs formes, dont deux exemples sont représentés sur les figures 2a et 2b- La figure 3 est une représentation symbolique du sous- module 4 constituant la fonction de transfert du réseau de neurones, avec: y = (W1*x + b1) le vecteur de la couche cachée à c neurones, y' = W2* I(y) + b2 et z = I(y) Le schéma fonctionnel du réseau de neurones comprend aussi un module 5 destiné à l'apprentissage du réseau et qui reçoit en entrée: - une erreur E commise par le réseau et fournie par l'utilisateur, entrant dans un sous-module 6; - une copie de l'état du réseau représenté par les vecteurs y et y', entrant dans un sous-module 7; - les paramètres 0 du réseau dans le sous-module 6; - les paramètres d'apprentissage Pa entrant dans un troisième sous-module 8. En sortie, le module d'apprentissage 5 délivre une correction C à apporter aux paramètres O du réseau. Le sous-module 6 contient la fonction de transfert qui correspond aux équations suivantes (E2): (E2) 3W1 = RWlr (0, y, y',) bl = Rblr(, Y, y, E) W2 = RW2r(0, y, y', E) 3b2 =Rblr(0, y, y,) o chaque fonction R est une méthode de mise à jour, 0 sont les paramètres du réseau définis précédemment, y et y' l'état du réseau, e l'erreur commise par le réseau et F les paramètres de la méthode d'apprentissage. L'erreur s commise par le réseau est traitée selon les paramètres r. Le calcul des dérivées partielles de l'erreur en fonction des poids W2 et des biais b2 est effectué, et une correction 5W2 et 6b2 est appliquée en fonction des dérivées et des paramètres F. Ensuite, la même opération est effectuée pour les poids W1 et les biais b1. Ainsi, les anciens paramètres sont remis à jour pour donner: - nouveau w2 = ancien w2 - ôW2 - nouveau w2 = ancien w2 - Èb2 - nouveau W1 = ancien W1 - ôW1 - nouveau b1 = ancien b1 - 6bl. L'invention consiste à déterminer la taille de la couche cachée du réseau neuronal et les valeurs initiales des paramètres du réseau. Ces deux objectifs sont réalisés par une boîte I d'initialisation (figure 4) constituée de plusieurs modules Il à I5, dont les entrées E' se composent d'un échantillon d'entrées E, un échantillon de sorties S et d'une liste de plages d'entrées Z selon une variante. Cette boite I est destinée à délivrer la taille c de la couche cachée de neurones et les paramètres initiaux 0% du réseau de neurones, habituellement choisis au hasard par l'utilisateur. Comme le montre la figure 5, elle comprend: - un module Il d'implémentation de méthodes statistiques permettant d'estimer la non linéarité d'une base de données, par exemple par régressions linéaires par morceaux, recevant en entrée les échantillons d'entrées E et de sorties S; - un module 12 de détermination du nombre d'unités cachées par l'exploitation de résultats théoriques nouveaux permettant de relier le nombre c d'unités cachées à sa non linéarité; - un module 13 de calcul du nombre minimum d'unités cachées nécessaire à l'émulation, par le réseau neuronal, des zones Z fournies en option; - un module 14 de calcul des paramètres du réseau de neurones à partir de méthodes statistiques de o régressions linéaires, en prenant en compte les zones Z fournies par l'utilisateur ou en les construisant statistiquement; - un module I5 de calcul des paramètres initiaux (c,00) optimaux du réseau neuronal, émulé par exemple par un logiciel et embarqué avec le réseau de neurones, ou bien exécuté hors ligne et utilisé avec un réseau qui accepte des paramètres quelconques en entrée. Le but de l'invention étant de construire un réseau de neurones qui émule une fonction non linéaire, connue par quelques uns de ses points de fonctionnement, et dont un exemple f1 est représenté sur la figure 6, on procède par approximations linéaires par morceaux de sorte que la forme initiale du réseau de neurones est caractérisé par un ensemble de pentes et de zones correspondantes comme le montre la courbe f2 de la figure 6. Le procédé selon l'invention repose sur les trois points suivants: - le choix automatique du nombre de zones nécessaires compte-tenu des informations disponibles sur la fonction non-linéaire; - le calcul automatique des caractéristiques des formes linéaires sur chaque zone de la fonction, soit leur pente; - la conception automatisée du réseau de neurones qui associe à chaque zone de la fonction la forme linéaire correspondante. Le choix automatique du nombre de zones Zi nécessaire pour approximer linéairement la fonction non linéaire à o émuler est réalisé par les deux modules Il et I2, le premier Il, recevant en entrée les données disponibles sur la fonction à émuler, soit un échantillon d'entrées E et un échantillon de sorties S. Ce module Il opère des tests statistiques permettant de choisir les zones nécessaires, c'est-à-dire qu'il réalise; une sélection aléatoire de zones Zi; - une opération de régressions statistiques sur chacune de ces zones sélectionnées pour obtenir un jeu de paramètres Pi par zone Zi; - des tests de significativité des différences entre lesdits jeux de paramètres Pi pour réaliser, en cas de différence non significative entre au moins deux zones, la fusion desdites zones correspondantes. Il reste, après ces tests, un certain nombre de zones dont chacune est caractérisée par une intersection de bandes de l'espace de départ. Comme le représente la figure 7, chaque bande Bai est caractérisée par un vecteur normé ni qui lui est orthogonal, une largeur li et un point d'appui Xi qui permet de placer la droite de direction orthogonale au vecteur ni dans le plan affine. Sur l'exemple de la figure 7, une première bande représente le régime N d'un moteur du véhicule entre 600 et 1200 tours/minute en fonction d'une autre bande représentant un couple rapide CMI+ entre 20 et 140. Le module 12 est destiné à relier la non linéarité de la fonction à émuler au nombre c d'unités cachées du réseau de neurones à construire. Le module 13 tient compte de zones Z de la fonction qui sont déjà connues de l'utilisateur qui les fournit en option, pour délivrer le nombre minimum d'unités cachées nécessaires au réseau de neurones. Ce nombre est nul quand il n'y a pas de zone préalablement connue. Un élément 9 calcule le maximum entre le nombre d'unités cachées délivré par le module 12 et celui délivré par le module I3, et l'envoie sur le module I4, destiné à effectuer deux opérations. La première opération est le calcul automatique des caractéristiques des formes linéaires sur chaque zone Zi définie auparavant sur la fonction non linéaire à émuler, obtenu par calcul de régressions statistiques par la méthode des moindres carrés. La seconde opération est la conception automatisée du réseau de neurones correspondant à la fonction non linéaire à émuler. Un réseau neuronal est entièrement caractérisé par les valeurs de quatre jeux de paramètres qui sont d'une part les poids W1 et les biais b1 de sa couche cachée de neurones, et d'autre part les poids W2 et les biais b2 de sa couche de neurones de sortie. Etant donné que chaque zone précédemment définie est caractérisée par un ensemble de bandes de l'espace, le procédé selon l'invention calcule les paramètres de la couche cachée en associant un neurone caché à chaque bande de l'ensemble constitué par la mise en commun des bandes qui caractérisent toutes les zones, de telle sorte que, à ce neurone caché, correspond une ligne w de poids W1 et un élément d de biais b1, qui sont automatiquement fixés à partir de la largeur li, du vecteur ni et du point d'appui Xi définissant la bande d'espace associée, suivant les équations (E3) suivantes: w = (2/li)*ni f= - 1 - , avec le produit scalaire de la ligne w par le point Xi. Lorsque toutes les lignes de poids W1 et tous les éléments de biais b1 de la couche de neurones cachés ont été ainsi fixés, le procédé détermine les poids W2, soit W2i, et les biais b2, soit b2i, de la couche de neurones de sortie, à partir des lignes Wli de poids W1, des éléments bli de biais b! et de la forme linéaire y = Ai*x + Bi, rattachés à chaque zone Zi, par les équations (E4) suivantes: (E4) Ai = W2i * Wl Bi = b2i + W2i * b1i La matrice w2 et le vecteur b2 sont ensuite obtenus par empilage des différentes valeurs W2i et b2i calculées. Ainsi, le module 14 de la boite I d'initialisation a calculé les poids et biais caractérisant complètement la structure et le nombre d'unités cachées du réseau de neurones correspondant à la fonction non linéaire. Ce réseau est défini par ses trois vecteurs x, y et z: x = (xi)i y= (W1*x + b1) z = [W2 * +(y) + b2] = 4[W2 * 4(W1*x + b1) + b2 Le procédé selon l'invention consiste ensuite à déterminer les valeurs initiales des paramètres 0 du réseau de neurone, alors qu'ils sont habituellement choisis aléatoirement par l'utilisateur. Ce calcul est effectué par le module I5, qui peut être émulé par logiciel par exemple et embarqué avec le réseau de neurones dans le véhicule, ou bien qui peut être exécuté hors ligne et utilisé avec un réseau neuronal qui accepte des paramètres quelconques en entrée. Ces paramètres initiaux sont d'une part la taille c de la couche cachée de neurones et les valeurs initiales des paramètres: -0 = [W0lo, b0lo, W20, b20].- L'utilisation d'un tel réseau de neurones ainsi conçu se fait selon deux modes, un premier mode dit d'apprentissage et un second dit d'utilisation comme cela est schématisé sur les figures 8a et 8b respectivement. Le réseau neuronal 10 dispose d'un ensemble de données composé d'entrées IN et de sorties désirées OUT*. A chaque entrée IN correspond une sortie OUT*. Le réseau est initialisé à partir des valeurs initiales [c, 00] définies selon l'invention et il délivre des sorties OUT à partir des entrées IN. L'utilisateur calcule une erreur E représentative de l'écart 11 entre les valeurs de sorties OUT du réseau et celles des sorties OUT* attendues, et l'envoie sur une entrée du réseau de neurones, ainsi que les paramètres F d'apprentissage. Les valeurs des paramètres du réseau sont alors automatiquement mises à jour afin de minimiser l'erreur s. En mode "utilisation" (figure 8b), des entrées IN sont fournies au réseau 10 qui délivre en sortie une valeur OUT en utilisant les valeurs de ses paramètres. R E V E ND I C A T IONS 1. Dispositif d'initialisation d'un réseau de neurones destiné à émuler une fonction non linéaire, caractérisé en ce qu'il comprend: - un module (Il) d'estimation de la non linéarité de la fonction à émuler par implémentation de méthodes statistiques, recevant en entrée les échantillons d'entrées (E) et de sorties (S); - un module (I2) de détermination du nombre (C) d'unités cachées du réseau de neurone à partir de l'estimation de la non linéarité de la fonction à émuler; - un module (I4) d'une part de calcul automatique des paramètres caractérisant complètement la structure et le nombre d'unités cachées du réseau de neurones à partir de méthodes statistiques de régressions linéaires, et d'autre part de conception automatisée du réseau de neurones correspondant à la fonction non linéaire à émuler; - un module (I5) de calcul des paramètres initiaux (c,00) optimaux du réseau neuronal, émulé par exemple par un logiciel et embarqué avec le réseau de neurones, ou bien exécuté hors ligne et utilisé avec un réseau qui accepte des paramètres quelconques en entrée. 2. Dispositif d'initialisation d'un réseau de neurones selon la revendication 1, caractérisé en ce que le module (Il) d'estimation de la non linéarité de la fonction à émuler réalise les étapes suivantes: - une sélection aléatoire de zones (Zi) pour approximer linéairement ladite fonction; - une opération de régressions statistiques sur chacune de ces zones sélectionnées pour obtenir un jeu de paramètres (Pi) par zone (Zi); - des tests de significativité des différences entre lesdits jeux de paramètres (Pi) pour réaliser, en cas de différence non significative entre au moins deux zones, la fusion desdites zones correspondantes. 3. Dispositif d'initialisation d'un réseau de neurones selon la revendication 1, caractérisé en ce que le module (I4) de calcul des paramètres du réseau neuronal associe tout d'abord, pour le calcul du nombre (c) de neurones de la couche cachée, un neurone caché à chaque bande de l'ensemble constitué par la mise en commun des bandes qui caractérisent toutes les zones, de telle façon qu'à ce neurone caché correspond une ligne (w) de poids (W1) et un élément (f) de biais (b1), qui sont automatiquement fixés à partir de la largeur (li), du vecteur (ni) et du point d'appui (Xi) définissant ladite bande selon les équations (E3) suivantes: w= (2/li)*ni 3= -1- avec le produit scalaire de la ligne (w) par le point (Xi), et lorsque toutes les lignes de poids (W1) et tous les éléments de biais (b1) de la couche cachée ont été fixés, détermine ensuite pour la couche de neurones de sortie, les poids (W2i) et les biais(b2i) de cette couche de sortie à partir des lignes (Wli) de poids (W1), des éléments (bli) de biais (b1) et de la forme linéaire Yi = Ai*x + Bi rattachés à chaque zone (Zi), par les équations (E4): (E4) Ai = W2i * l Bi = b2i + W2i * bli la matrice (W2) et le vecteur (b2) étant ensuite obtenus par empilage des différentes valeurs (W2i) et (b2i) calculées. 4. Dispositif d'initialisation d'un réseau de neurones selon l'une des revendications 1 à 3, caractérisé en ce qu'il comprend de plus un module (I3) de calcul du nombre minimum d'unités cachées nécessaire à l'émulation, par le réseau neuronal, des zones (Z) fournies en option, et un élément (9) qui calcule le maximum entre le nombre d'unités cachées délivré par le module (I2) et celui délivré par le module (I3), et l'envoie sur le module (I4) de calcul des paramètres du réseau de neurones, qui prend alors en compte les zones (Z) fournies par l'utilisateur ou en les construisant statistiquement. 5. Procédé d'initialisation d'un réseau de neurones selon la revendication 1, caractérisé en ce que le module (Il) de la boîte (1) d'initialisation estime la non linéarité de la fonction par régressions linéaires par morceaux. 6. Procédé d'initialisation d'un réseau de neurones destiné à émuler une fonction non linéaire, réalisé par un dispositif d'initialisation selon l'une des revendications 1 à 5, recevant en entrée les données disponibles sur la fonction, soit un échantillon d'entrées et un échantillon de sorties, caractérisé en ce qu'il effectue les étapes suivantes: - la sélection automatique du nombre de zones linéaires nécessaires, compte-tenu des informations disponibles sur la fonction non-linéaire, pour approximer linéairement ladite fonction par le module (I1) d'estimation et le module (I2) de détermination; - le calcul automatique des caractéristiques des formes linéaires sur chaque zone de la fonction, soit leur pente, et la conception automatisée du réseau de neurones qui associe à chaque zone de la fonction la forme linéaire correspondante par le module (I4) de conception; - le calcul des valeurs initiales des paramètres du réseau neuronal, soit les poids et les biais de la couche de neurones cachés et de la couche de neurones de sortie par le module (I5) de calcul.