Mettre l’Intelligence Artificielle et le Big Data au service du client

Maxence Terpan
Esker-Labs
Published in
8 min readJan 30, 2020

Article écrit par Stéphane Lichtenberger en collaboration avec l’équipe IA d’Esker

L’automatisation des processus métiers

Je travaille dans une entreprise nommée Esker, spécialiste de l’automatisation des cycles « Order to Cash » et « Procure to Pay » (cycles clients et fournisseurs).

Mettre la technologie au service des hommes a toujours été un défi. Lorsque j’ai débuté ma carrière d’informaticien, je me suis aperçu que la plupart des problèmes des entreprises plutôt qu’être technique étaient la plupart du temps humains et organisationnels.

Esker a pour objectif l’automatisation du traitement des documents comptables (bons de commandes et factures) de ses clients. Voici un exemple des flux de documents que nous traitons.

Prenons l’exemple de l’automatisation du processus de commande chez un fournisseur. Une entreprise A envoie un bon de commande à une entreprise B pour lui commander un produit. Chaque entreprise ayant son propre système d’information (ERP), l’entreprise B (celle qui reçoit le bon de commande), doit saisir (manuellement) tous les champs dans son propre système (numéro de client, numéro du bon de commande, adresse de livraison, articles commandés etc.).

Exemple de bon de commande et des champs à extraire

Cette tâche est non seulement fastidieuse et sujette aux erreurs mais elle est également inefficace. Les employés des Services Client et de l’Administration des Ventes (ADV) préfèrent se concentrer sur des tâches plus intéressantes permettant de rendre vraiment service au client : offres promotionnelles, fidélisation, suivi des réclamations… C’est pourquoi Esker a confié à mon équipe le développement d’un produit qui permet la reconnaissance et la saisie automatique des bons de commandes.

Pour cela, nous nous basons, entre autres technologies, sur la création de « modèles » permettant d’extraire les champs à des endroits précis d’un bon de commande. Par exemple, pour un bon de commande « Computer Club Market » (ci-dessus), le numéro du bon de commande se trouve toujours en haut à droite après du libellé « PO Number : ».

Appliquer cette règle suppose d’avoir, au préalable, reconnu le bon « modèle » de ce bon de commandes (celui utilisé par le client « Computer Club Market »).

Bon de commande utilisant le même modèle que le précédent (en provenance du même client), mais contenant des données différentes
Bon de commande utilisant un modèle différent du précédent (en provenance du client « Metal Picardie »)

Big Data : un problème ou une solution ?

Il existe dans le monde des millions de clients et donc, comme les entreprises sont très créatives, des milliards de « modèles » de bon de commandes.

Comme notre solution en mode SaaS est utilisée par des milliers de clients qui ont eux-mêmes des dizaines de milliers de clients, notre base de modèles contient des dizaines de millions de modèles de bons de commandes.

Or, comparer un bon de commande à des millions de modèles de bons de commandes est une tâche très longue, même si elle est automatisée.

Nos clients ont souvent un engagement de service (SLA) très élevé : beaucoup s’engagent à livrer leurs propres clients le même jour que la réception d’un bon de commande.

Pour trouver le bon modèle parmi des millions, il fallait trouver un moyen de comparer une nouvelle commande à des millions d’autres en moins d’une seconde. Même en supposant que l’opération de comparaison soit rapide et puisse se faire en une milliseconde, cette opération multipliée par des dizaines de millions serait très longue. En lançant un calcul parallèle sur 10 processeurs, chaque processeur mettrait 1000 secondes, soit environ 17 minutes, ce qui est trop long pour nos clients.

Une analogie avec la reconnaissance des visages (et des chatons)

J’ai assisté récemment à un sommet sur l’Intelligence Artificielle à Lyon où l’intervenant, Luc Julia (inventeur de Siri), faisait remarquer à l’auditoire que les réseaux sociaux étaient remplis de photos de chatons.

L’ampleur d’Internet couplé à l’engouement pour ces petits animaux a très vite généré un volume de données important, ce qui est une condition préalable pour l’entrainement de réseaux de neurones par renforcement. Facebook utilise des programmes de ce type pour identifier les visages de vos amis.

Pour entraîner un réseau de neurones, il faut donc beaucoup de données. Plusieurs centaines de milliers. Grâce à notre logiciel en mode SaaS, nous avions, certes, un problème (beaucoup de données !) mais aussi une solution (beaucoup de données !).

Nous sommes donc partis d’une analogie : si un réseau de neurones est capable de mesurer la similarité des visages, peut-être pourrions-nous lui apprendre à reconnaître si deux bons de commande ont le même « visage », c’est-à-dire s’ils se ressemblent. Si c’est le cas, nous pourrions leur appliquer le même modèle de reconnaissance pour extraire les champs aux mêmes positions (Adresse du client, adresse de livraison, numéro du bon de commande, etc…).

Conception du réseau de neurones

Nous avons donc classé les bons de commandes par modèle, puis nous avons conçu un réseau de neurones profond (c’est-à-dire plusieurs couches de réseaux de neurones) de manière à lui apprendre à identifier très vite un modèle parmi des millions.

Le premier problème à résoudre pour créer un réseau de neurones est de lui fournir en entrée des données normalisées. Pour cela, nous lui avons donné des suites de chiffres représentant les pixels d’une image « normalisée », c’est-à-dire réduite à des dimensions standards pour que la comparaison soit efficace.

En sortie, nous avons choisi une réprésentation des résultats par un vecteur à X dimensions (appelé « embeddings » dans le jargon de l’IA).

Les templates seront représentés par les embeddings : vecteurs de n dimensions
Schéma de la transformation d’une image en vecteur à X dimensions

Lors de la phase d’apprentissage, de nombreux bons de commande sont soumis au réseau de neurones. L’idée générale est d’apprendre au réseau de neurones à générer des vecteurs colinéaires lorsque les bons de commande se ressemblent, et à générer des vecteurs orthogonaux lorsqu’ils ne se ressemblent pas. Cette différence mathématique permettra de faciliter et d’accélérer la comparaison de deux bons de commande.

Pour comparer deux bons de commande, il suffit de calculer la distance entre chaque vecteur. Une faible distance représente le fait que deux bons de commande se ressemblent fortement. On recherche donc la plus faible distance pour trouver le bon de commande le plus ressemblant au bon de commande à traiter.

Processus d’apprentissage

Au début de l’apprentissage, le réseau de neurones produit un vecteur (embedding) aléatoire pour chaque bon de commande.

Ensuite, on lui apprend peu à peu à minimiser la distance lorsque les bons de commande proviennent du même modèle, et à maximiser la distance lorsqu’ils proviennent de modèles différents.

Vérification, ajustements et résultats

Une fois le réseau de neurones entraîné, nous avons défini un seuil « S » à partir duquel on considère que 2 modèles de bons de commande sont similaires. Si la distance est inférieure à ce seuil alors on dit qu’ils sont similaires.

Nous avons également testé le cas où on trouve plusieurs candidats similaires.

Au départ, à l’intérieur d’un cercle dont le rayon est « S » et dont le centre est la commande en entrée, on choisissait le candidat le plus proche (comme à la pétanque).

Nous avons encore pu gagner quelques points de précision en identifiant la « classe majoritaire» (ci-dessous le rouge est majoritaire).

Les points jaunes sont les templates que l’on cherche à reconnaître, de classe rouge

Faux positifs

La créativité étant sans limite, bien que nous ayons beaucoup d’exemples de bons de commande dans notre « Cloud », il est toujours possible de rencontrer un modèle de commande encore inconnu.

Si un inconnu se présente, le réseau de neurone va toujours trouver un modèle « proche », qui lui ressemble, ce qui pourrait conduire à des résultats étranges.

Nous avons donc calculé le seuil optimal pour avoir une précision optimale (la probabilité de trouver le bon modèle parmi des millions) tout en minimisant le taux de « faux positifs » (la probabilité de trouver un bon de commande « similaire » qui, en réalité, n’est pas le bon parce qu’il n’y a pas de modèle correspondant dans notre base de données).

En théorie, notre modèle pourrait atteindre 96,46% de précision, mais dans tout projet informatique, la psychologie des utilisateurs est très importante pour l’acceptation d’un système. Effectivement, nous avions déjà constaté par le passé que des résultats « étonnants » pouvaient conduire au rejet d’un système pourtant statistiquement très précis. Une erreur de prise de commande peut avoir des conséquences importantes comme la livraison de prothèses au mauvais hôpital, ou la livraison de 12 tonnes de bétons à l’autre bout de la France.

Nous avons donc décidé de prendre également en considération les faux positifs. Pour le dire en langage naturel: mieux vaut trouver un peu moins souvent le « bon modèle » que de trouver toujours quelque chose même dans les cas où l’image en entrée n’a rien à voir.

Dans le graphe ci-dessous, nous pouvons voir que la valeur optimale permettant de minimiser le taux de faux positifs tout en maximisant la précision est d’environ 93% (la reconnaissance un peu moins efficace lorsque le modèle existe, mais mieux à même de détecter lorsque le modèle n’existe pas).

Conclusion

Suite aux bons résultats de reconnaissance du réseau de neurones, celui-ci a été intégré dans notre produit. Cela nous a permis de nettement améliorer la reconnaissance des bons de commande entrants au sein de notre plateforme. Et d’automatiser encore un peu plus la gestion des documents de nos clients ! Cette expérience nous a aussi permis d’acquérir des compétences dans le domaine de l’intelligence artificielle, et nous ne manquerons pas de les réutiliser dans d’autres parties de notre produit.

Références académiques

Schroff, F., Kalenichenko, D., & Philbin, J. (2015). Facenet: A unified embedding for face recognition and clustering. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 815–823).

--

--