ALGORITHME : MAIS EN FAIT, QU’EST-CE QUE C’EST ET A QUOI ÇA SERT?
A l’ère du Big Data, du Machine Learning et de l’intelligence artificielle, les algorithmes sont devenus omniprésents dans nos vies. Mais en fait, qu’est-ce qu’un algorithme?
Découvrez la définition du terme, ses cas d’usage et quelques exemples des algo les plus célèbres et massivement utilisés.

Le terme algorithme fut inventé par le mathématicien Mohammed Ibn Musa-Al Khwarizmi, dans le courant du neuvième siècle avant Jésus Christ.
Avec l’essor de l’intelligence artificielle, ce terme est de plus en plus utilisé et a rejoint la catégorie des » buzzwords «. Aujourd’hui, on utilise des algorithmes pour trouver l’amour, pour investir dans les meilleures actions, pour prédire le crime, pour organiser les résultats de recherche sur le web et pour des millions d’autres applications.
Les algorithmes sont omniprésents et dirigent notre économie, notre société et peut-être même la façon dont nous pensons. Mais en fait, QU’EST-CE QU’UN ALGORITHME ?
Qu’est-ce qu’un algorithme ?
Dans le domaine des mathématiques, dont le terme est originaire, un algorithme peut être considéré comme un ensemble d’opérations ordonné et fini devant être suivi dans l’ordre pour résoudre un problème.
En guise d’exemple très simple, prenons une recette de cuisine. Dans chaque recette, une procédure spécifique doit être suivie dans l’ordre. Les différentes étapes de la recette représentent les opérations qui constituent l’algorithme.
Là où les choses se compliquent un peu, c’est qu’un algorithme a pour but de résoudre un problème et donc de produire un résultat.
Si l’on souhaite créer un algorithme pouvant fonctionner dans le monde réel, il est donc nécessaire d’inclure des instructions lui permettant de s’adapter aux différentes situations auxquelles il pourra être confronté.
C’est pourquoi les algorithmes s’apparentent à de gigantesques » arbres » d’instructions.
L’histoire des algorithmes
Au fait, pourquoi les algorithmes sont-ils appelés » algorithmes »? L’histoire débute au IXème siècle, avec l’astronome et mathématicien Muhammad ibn Mūsa al-Khwarizmī.
Ce savant perse a réalisé de grandes découvertes en science, en mathématiques, et pour le système de numération que nous utilisons encore aujourd’hui. Son nom est le mot perse désignant sa région de naissance : Khwãrezm.
Au fil des siècles, sa renommée s’est accrue dans le monde entier. En dehors du Moyen-Orient, son nom a été déformé pour devenir « Algoritmi ». Cette version de son nom sera plus tard adaptée comme un terme anglais pour désigner les recettes par étapes que nous désignons comme « algorithmes ».

Qu’est-ce qu’un algorithme informatique ?
Pour effectuer une tâche, quelle qu’elle soit, un ordinateur a besoin d’un programme informatique. Or, pour fonctionner, un programme informatique doit indiquer à l’ordinateur ce qu’il doit faire avec précision, étape par étape.
L’ordinateur » exécute » ensuite le programme, en suivant chaque étape de façon mécanique pour atteindre l’objectif.
Or, il faut aussi dire à l’ordinateur » comment » faire ce qu’il doit faire. C’est le rôle de l’algorithme informatique.
Les algorithmes informatiques fonctionnent par le biais d’entrées (input) et de sortie (output). Ils reçoivent l’input, et appliquent chaque étape de l’algorithme à cette information pour générer un output.
Par exemple, un moteur de recherche est un algorithme recevant une requête de recherche en guise d’input. Il mène une recherche dans sa base de données pour des éléments correspondant aux mots de la requête, et produit ensuite les résultats.
Les ordinateurs ne comprennent pas le langage humain, et un algorithme informatique doit donc être traduit en code écrit dans un langage de programmation. Il existe de nombreux langages tels que Logo, Scrach, Python, R… chacun présente des spécificités et convient davantage à un cas d’usage spécifique.
A quoi servent les algorithmes ?
d’innombrables cas d’usage. Dans le domaine de la technologie et de l’informatique, lorsqu’un développeur crée un programme, il crée en fait un ensemble d’algorithmes.
En effet, un programme informatique est un ensemble de commandes données à la machine, écrites dans un langage spécifique, afin d’effectuer une série d’opérations spécifiques pour obtenir un résultat.
Sachant qu’un ordinateur est (encore) incapable de comprendre le langage humain, le programmeur utilise un langage de programmation.
Ce langage sert de passerelle entre le langage humain et le langage que la machine peut comprendre.
Grâce à cet outil, le programmeur peut créer une série d’instructions que l’ordinateur peut « comprendre ».
Algorithme : quelques exemples bien connus

Pour mieux bien comprendre ce qu’est un algorithme, jetons un coup d’œil à quelques exemples très célèbres qui sont couramment utilisés par une bonne partie de l’humanité. Tout d’abord, évoquons le « PageRank » de Google.
Il s’agit d’un ensemble d’algorithmes utilisés par Google pour déterminer l’importance des documents indexés par son moteur de recherche web.
Ainsi, lorsqu’un internaute effectue une recherche sur Google, il constitue l’un des éléments qui déterminent l’ordre d’affichage des résultats.
Le PageRank constitue sans aucun doute l’algorithme le plus utilisé dans le monde.
Un autre exemple concerne la Timeline de Facebook. En effet, le contenu que Facebook affiche sur le fil d’actualité des utilisateurs est choisi par un ensemble d’algorithmes. Ces algorithmes décident du contenu à afficher en fonction de divers paramètres. Par exemple, les goûts personnels de l’utilisateur, ses réactions à des contenus précédemment publiés et bien d’autres encore.
Les algorithmes de négociation à haute fréquence constituent également un autre exemple.
Ceux-ci sont utilisés par les plus grandes institutions financières du monde pour leur permettre de placer des ordres sur le marché. Ils se basent sur le profit qu’ils espèrent réaliser et sur les conditions du marché à un moment donné.
Ces algorithmes ont désormais plus d’influence sur l’économie mondiale que les traders humains.
En outre, ils sont responsables du mouvement de milliards de dollars chaque jour.
Le dernier exemple concerne l’algorithme Round Robin.
Il s’agit d’un algorithme très utilisé dans le domaine de l’informatique. En effet, il permet aux ordinateurs de déterminer les tâches qu’ils doivent effectuer en premier.
En règle générale, cet algorithme détermine le temps que le processeur va consacrer à chaque tâche en cours.
Algorithmes et Machine Learning
Les algorithmes de Machine Learning constituent une catégorie spécifique d’algorithmes. Plutôt que de recevoir des instructions spécifiques sur la tâche à effectuer, ils sont capables » d’apprendre » à partir de données.

On les utilise aujourd’hui massivement pour créer des moteurs de recommandations, effectuer des prédictions ou analyser des données. En se basant sur les données qui lui sont fournies en exemple, l’algorithme de Machine Learning peut prendre de meilleures décisions. Ces algorithmes sont aujourd’hui omniprésents sur internet. Ce sont eux qui déterminent ce que vous voyez sur votre fil d’actualité Facebook, les publicités qui apparaissent sur votre boîte Gmail, ou les films et séries que Netflix vous recommande.
Il existe une large variété d’algorithmes utilisés pour le Machine Learning. On peut les regrouper en plusieurs catégories distinctes.
Dans le cas des algorithmes d’apprentissage supervisé, les données d’input sont appelées données d’entraînement et sont étiquetées au préalable par des humains pour indiquer à la machine à quoi elles correspondent.
Le modèle est entraîné à partir de ces données, et doit parvenir à réaliser des prédictions exactes.
Le processus d’entraînement continue jusqu’à ce que le niveau de précision désiré soit atteint. En guise d’exemples, on peut citer les algorithmes de régression logistique et le réseau de neurones à rétropropagation.
Enfin, dans le cas de l’apprentissage semi-supervisé, les données input sont un mélange d’exemples étiquetés et non étiquetés.
Le problème à résoudre est indiqué, mais le modèle doit organiser lui-même les données pour réaliser des prédictions. Ce type d’apprentissage est utilisé pour la classification et la régression.
On peut aussi regrouper les algorithmes par similarité dans leur fonctionnement. Parmi les grandes catégories, on peut citer les algorithmes de régression, de régularisation, les arbres de décision, les algorithmes bayésiens ou encore les algorithmes de clustering.
Il existe aussi des algorithmes d’apprentissage de règle d’association, des algorithmes de réseaux de neurones artificiels, de Deep Learning (apprentissage profond), et de réduction dimensionnelle.
Ces familles d’algorithmes comptent parmi les plus utilisées pour le Machine Learning. Il en existe toutefois beaucoup d’autres, et certains algorithmes appartiennent à plusieurs catégories à la fois.
Quelle est la différence entre algorithme et programme ?
En général, les médias ne parlent que d’algorithmes et de données. Or, les calculs sont effectués par des programmes qui fonctionnent sur des ordinateurs, et non des algorithmes.
En fait, un algorithme constitue un élément abstrait permettant de définir un calcul. Il s’exprime dans un langage mathématique et peut donc être analysé comme tel. Au contraire, un programme informatique constitue un élément concret, de taille souvent importante.
Il s’écrit dans un langage de programmation qui cherche à humaniser les langages cryptés des machines. Il reste à un stade de précision beaucoup plus élevé que les algorithmes.
En outre, un programme traduit rarement un algorithme unique. La plupart des programmes en utilisent plusieurs.
Comme le microprocesseur obéit parfaitement aux ordres qui lui sont donnés, les erreurs de programmation ne constituent jamais des défaillances, mais seulement des anomalies liées à la programmation humaine.
Il est très difficile de repérer et de résoudre ces bugs en pratique. En fait, les analyses ne permettent que de les trouver, mais pas de prouver leur absence.
De plus, les failles de sécurité informatique proviennent fréquemment de micro-bugs qui ne sont pas fonctionnels et qui ne peuvent être trouvés par les contrôles habituels. Il devient donc indispensable de montrer qu’il n’y a pas de bogues dès qu’un programme accomplit des tâches importantes.
Cependant, il est plus compliqué de prouver l’exactitude des algorithmes sur le plan théorique.
Les algorithmes de chiffrement de données
Les algorithmes sont utilisés pour le chiffrement des données ou des lignes de communication. Ceci permet de protéger les données en cas de vol ou d’intrusion sur le système sur lequel elles sont stockées.
Pour y parvenir, on utilise des algorithmes mathématiques. L’algorithme reçoit les données en guise d’input, et les convertit dans un autre format en guise d’output.
Une fois chiffrées, les données peuvent ressembler à un texte composé de symboles aléatoires ou même à une image sans rapport avec le contenu d’origine.
Les algorithmes et l’automatisation
Un autre cas d’usage des algorithmes est celui des logiciels d’automatisation. En effet, ces logiciels fonctionnent en suivant des règles pour compléter des tâches. Ils sont sont donc composés de multiples algorithmes.
Par exemple, un tel logiciel peut se charger d’extraire toutes les informations de facturation reçue via un email et de les transférer vers une feuille de tableur.
Pour accomplir cette tâche, il est nécessaire de mettre en place une série de règles et de conditions à suivre : un algorithme.
Dans cet exemple, chaque email reçu fait office d’input. Les emails sont ensuite traités selon un processus par étapes afin de compléter la tâche. Le processus peut consister par exemple à scanner chaque email pour trouver des termes clés.
Les messages contenant ces termes passent ensuite à l’étape suivante, et ainsi de suite afin d’identifier et d’extraire les données les plus pertinentes. L’output est l’information placée dans une feuille de tableur à la fin du parcours.
Autre exemple : de nombreux parieurs sportifs créent des algorithmes d’automatisation.
Voici un exemple avec la chaîne YouTube TipStreet, qui explique même comment créer votre propre algo.
Limites et dangers des algorithmes
Les algorithmes offrent de nombreuses possibilités, mais restent de simples ensembles d’instructions. Ils sont créés par des humains, et peuvent donc présenter des failles. Les programmeurs informatiques passent d’ailleurs beaucoup de temps à corriger des erreurs dans les algorithmes. À cause d’une simple faute, un algorithme peut produire des résultats inexacts. Malheureusement, ces erreurs ne sont pas toujours identifiées à temps.
Au-delà des erreurs, les algorithmes peuvent être biaisés par la perception ou même par la volonté des humains qui le créent.
Prenons l’exemple d’un algorithme conçu pour le recrutement. Si la personne qui le crée considère (à tort) qu’un homme blanc est systématiquement un meilleur candidat qu’une femme de couleur, l’algorithme sera basé sur cette perception et donc biaisé.
Ce problème de biais est encore plus dangereux pour les algorithmes d’intelligence artificielle. Ces algorithmes se nourrissent des données qu’on leur fournit, et peuvent donc perpétuer les erreurs de perception et les biais du passé.
Par exemple, sachant que la plupart des entreprises de haute technologie manquent de diversité ethnique, un algorithme de Machine Learning pourra déduire à partir des données passées que les candidats issus de la diversité sont des profils à éviter. C’est un véritable problème à l’heure actuelle, car les algorithmes biaisés perpétuent les discriminations.
Les systèmes de reconnaissance faciale associent les personnes de couleur à des criminels, et les chatbots deviennent rapidement racistes. Plusieurs entreprises cherchent donc des solutions pour supprimer les biais des algorithmes d’IA…
Comment concevoir des algorithmes éthiques ?
Afin d’éviter les dérives liées aux algorithmes et à l’IA, il est important d’adopter les bonnes pratiques éthiques dès la conception. Pour y parvenir, il convient de se concentrer sur plusieurs points d’importance majeure.
Tout d’abord, il convient de se demander à quoi servira l’algorithme. Cette application elle-même doit être éthique. Il arrive que des algorithmes et systèmes IA soient utilisés de façon détournée par des tiers. Les scientifiques et développeurs en Machine Learning sont aujourd’hui nombreux à protester en cas d’utilisation immorale de leurs algorithmes. Par exemple, les employés de Microsoft ont protesté contre l’utilisation des casques de réalité augmentée HoloLens par l’armée américaine, tandis que les équipes de Google ont levé la voix contre le développement d’armes automatisées. Il est aussi très important de s’assurer que les données d’entraînement de l’algorithme ne soient pas biaisées. Les données elles-mêmes doivent être éthiques, pour que l’algorithme le soit.
De nombreux algorithmes de Machine Learning utilisés aujourd’hui dans des produits commerciaux sont lourdement biaisés à cause des données exploitées pour leur entraînement. Par exemple, Amazon a décidé d’arrêter de se baser sur l’IA pour ses recrutements, son système était hautement discriminatoire.
Alors que la firme avait essayé de supprimer les indicateurs de genre du système pour éviter les biais, l’algorithme était tout de même capable de les détecter. Ainsi, les données et le Machine Learning reflètent et magnifient bien souvent nos propres biais inconscients. Il est indispensable d’en tenir compte.
Outre les données, les » poids » assignés aux différents fonctions de l’algorithme doit aussi être pris en compte. Pendant l’optimisation des » weightings «, il est important de prendre en considération l’éthique.
Enfin, les caractéristiques et features de données analysées par l’IA doivent permettre un résultat éthique. Elles doivent offrir une représentation exacte, afin d’éviter les mauvaises surprises par la suite. De manière générale, un point essentiel pour l’éthique est la diversité au sein des équipes de développeurs.
Le manque de diversité contribue fortement au biais des jeux de données, tout comme il a pu donner lieu à des campagnes de publicité maladroites dans le domaine du marketing.
Quel futur pour les algorithmes ?

Il est difficile de prédire le futur des algorithmes. En revanche, il semble certain que le futur appartient aux algorithmes.
En effet, l’algorithme est au cœur de technologies émergentes révolutionnaires comme l’intelligence artificielle, le Machine Learning, les véhicules autonomes ou les assistants virtuels. Dans les années à venir, on peut s’attendre à ce que de nouvelles technologies reposant sur les algorithmes voient le jour…