Mathématiques traditionnelles
Les algorithmes utilisant les mathématiques traditionnelles sont ceux que l’on utilise avec un enchaînement logique pour obtenir un résultat utile. Le fondateur d’Innovation Codotek inc. possède un PhD en Physiques. Durant son Doctorat, il utilisait une décomposition en harmoniques sphériques vectorielles pour étudier le comportement de la lumière sur des nano-particules biréfringentes et non linéaire. Ces mathématiques étaient simplement adaptées au problème. Ici, la clef est de toujours utiliser le meilleur outil mathématique qui est adapté au problème. L’expérience et une bonne méthode de travail permettent d’éviter le marteau de Maslow : « quand le seul outil que vous avez est un marteau, il est tentant de traiter toutes les choses comme un clou ».
Exemple de l’analyse des signaux
Par exemple, pour l’analyse des signaux. Un capteur quelconque rapporte des informations brutes sur une situation ou un événement. Le milieu ainsi étudié peut-être ou non stimulé. On peut utiliser un amplificateur à lock-in pour filtrer le bruit d’un faible signal d’acquisition stimulé. Ainsi, on peut travailler sur la partie basse fréquence qui nous intéresse.
On peut faire subir une transformée de Fourier à un signal pour le décomposer en ses fréquences propres. On peut aussi (ou ensuite) utiliser un modèle PCA (Principal Component Analysis) pour essayer de regrouper les caractéristiques communes à certains groupes de signaux ensemble. Similairement, on peut utiliser un PLS (Partial Least Square) pour utiliser les composantes principales d’un signaux pour en calculer un résultat final utile.
Bref, pour le seul champ du traitement de signal il existe un large éventail d’outils mathématiques qui s’applique à certaines situations. Ce ne sont pas tous les outils qui peuvent être appliqués à toutes les situations. Chez Innovation Codotek, nous faisons de l’ingénierie système avant de commencer à coder. Ainsi, avant de coder un algorithme, nous nous assurons d’avoir un bon plan et de savoir ce que l’on veut faire.
Quelle méthode de travail utiliser?
D’abord, de l’ingénierie système est utilisée pour s’assurer de bien comprendre le problème ainsi que sa portée. Dans les cas les plus simples, cela peut suffire. Cependant, la nature complexe de la plupart des algorithmes fait en sorte que ce soit rarement possible. L’ingénierie système permet de bien comprendre le problème, mais il est souvent difficile d’aller plus en profondeur avec cette technique sans prendre (perdre ?) beaucoup de temps.
L’idéal est de séparer en différentes parties l’algorithme et de faire des preuves de concepts (POC) sur chacune d’entre elles. Pour ce faire, on écrit alors du code que l’on peut jeter rapidement. Attention ! Il y a ici deux attrapes. Premièrement, il faut que le code soit écrit rapidement. On ne perd donc pas trop de temps avec la structure du code. Deuxièmement, il faut ré-écrire ce code proprement lorsqu’il est jugé bon. Une bonne technique est d’utiliser un logiciel différent ou démarrer un projet différent pour chaque POC.
Intelligence Artificielle
Les algorithmes utilisant l’IA et, plus particulièrement les réseaux de neurones profonds, sont à la mode ces dernières années, mais ils existent depuis les années 50. Les mathématiques de l’IA ont évolués depuis ce temps, mais c’est surtout l’augmentation de la puissance de calcul des ordinateurs qui les as fait progresser.
Lorsque nous travaillons sur des algorithmes traditionnelles, nous utilisons des outils mathématiques adaptés. Pour l’AI, les outils vont prendre la forme de structures neuronales différentes et adaptées au problème à l’étude. Voir la figure suivante qui montre différentes architectures de base des réseaux de neurones. Il est déjà reconnu que les réseaux de types CNN sont adaptés pour l’analyse de signaux ou encore que les types RNN sont adaptés pour la reconnaisse vocale.
Le travail est loin de se limiter à identifier quel type de réseau de base il est nécessaire d’utiliser. Dans les algorithmes traditionnels, le développeur connait ses outils et il connait souvent d’avance l’effet qu’un outil mathématique aura sur les données. Ici, on peut avoir le même instinct sur un certain projet. Cependant, il est souvent plus difficile de le faire puisque les réseaux neuronaux comporte énormément de variables. Il est alors difficile de comprendre le fonctionnement réel du réseau. Par extension, il est encore plus difficile de prévoir l’effet sur un projet différent. Au fur et à mesure que le travail avance et que le réseau se raffine, on parle plus d’une meta-analyse des architectures de réseau neuronaux.
Importance des données
Tout le pouvoir de l’AI réside dans les données. Si on veut travailler avec un réseau neuronal, on doit pouvoir colliger des tonnes de données sur le système à l’étude. La quantité totale de données nécessaire dépend généralement de la complexité du problème et de la solution utilisée. Il est, a priori, difficile de le déterminer. En fait, on peut de se baser sur les autres projets réalisés. Il est aussi possible de trouver des projets similaires sur le web. Dans tous les cas, il faut évaluer le nombre de classes, le nombre de paramètres, le nombre de caractéristiques d’entrées et le nombre de variantes du problème.
Le nombre de variantes du problème peut être intéressant parce qu’il peut permettre de faire des POC pour des sous-problèmes. Il peut aussi permettre, dans le cas ou le problème global semble trop complexe ou nécessite trop de données, de développer des modèles pour chacune des variantes. Par exemple, au lieu de développer un AI qui sait détecter le cancer, on peut en développer un AI pour le cancer du poumon, un autre pour le sang, etc.
Dans tous les cas, une acquisition de donnée rigoureuse doit permettre une traçabilité totale. Le bon résultat final doit accompagner les données brutes. De plus, on doit s’assurer de sauvegarder le contexte dans lequel ces données ont été capturées. A priori le contexte peut sembler superflu, mais à mesure que le projet se raffine, le contexte devient la plupart du temps très important. Innovation Codotek peut développer votre système d’acquisition de données sur mesure pour répondre aux besoins de l’AI.
Pas assez de données?
Capturer un large éventail de données avec toutes les solutions, dans tous les contextes et toutes les variantes coûte souvent très cher. Pour cette raison, il existe différentes méthodes d’augmentation de données. Il est aussi possible de générer des données artificielles à partir des mathématiques traditionnelles ou même à partir d’autres réseaux neuronaux existants.
Vous avez un projet, contactez-nous et nous verrons comment nous pouvons vous aider.