Le machine learning est le sous-domaine de l’intelligence artificielle qui se préoccupe de la conception et du développement d’algorithmes permettant aux ordinateurs d’améliorer leurs performances au fil du temps en se basant sur des données, telles que des données de capteurs ou des bases de données. Wikipedia

Il y a dix ans, les entreprises de machine learning étaient pratiquement inexistantes, ou disons marginales au mieux. La principale raison de cette situation était simplement qu’il n’y avait pas beaucoup d’algorithmes qui fonctionnaient réellement et qui apportaient une valeur commerciale à l’époque. La traduction automatique, par exemple, fonctionne encore à peine et est très loin d’être utilisable dans la plupart des entreprises.

Lokad s’inscrit dans le vaste domaine du machine learning, avec un intérêt particulier pour l’apprentissage statistique. Personnellement, je travaille dans le domaine du machine learning depuis près d’une décennie maintenant, et il est toujours surprenant de voir à quel point les choses sont profondément différentes dans ce domaine par rapport au monde typique des logiciels prêts à l’emploi. Le machine learning est un monde logiciel à part entière.

Les progrès scientifiques dans des domaines qui ressemblaient à de l’intelligence artificielle ont été lents, très lents par rapport à la plupart des autres domaines logiciels. Mais un fait peu connu est également que les progrès scientifiques ont été constants ; et, à l’heure actuelle, il existe plusieurs entreprises de machine learning qui ont réussi :

  • Filtre anti-spam intelligent : bon sang, Akismet a attrapé plus de 71 000 commentaires de spam sur mon blog, avec pratiquement aucun faux positif à ma connaissance.
  • Reconnaissance vocale : Dragon Dictate fait maintenant un travail assez impressionnant après seulement quelques minutes de réglage par l’utilisateur.
  • Reconnaissance de l’écriture manuscrite et même reconnaissance d’équations sont intégrées à Windows 7.

Le machine learning est devenu courant.

1. Le produit change mais l’interface utilisateur reste la même

Pour la plupart des entreprises de logiciels, apporter quelque chose de nouveau aux yeux du client est LA façon d’obtenir des revenus récurrents. Le SaaS change lentement cet aspect financier, mais encore, pour la plupart des produits SaaS, l’évolution s’accompagne de changements très tangibles sur l’interface utilisateur.

Au contraire, en machine learning, le développement ne signifie généralement pas l’ajout de nouvelles fonctionnalités. La plupart de l’évolution se produit en profondeur avec très peu ou pas de changements apparents. La recherche Google - probablement le produit de machine learning le plus réussi de tous - est notoirement simple, et cela fait maintenant une décennie que cela dure. Récemment, une personnalisation du classement basée sur les préférences de l’utilisateur a été ajoutée, mais ce changement s’est produit presque 10 ans après le lancement et, je suppose, est encore passé inaperçu pour la plupart des utilisateurs.

Pourtant, cela ne signifie pas que les gens de Google sont restés inactifs ces 10 dernières années. Tout le contraire en fait, les équipes de Google ont amélioré frénétiquement leur technologie, remportant bataille après bataille contre les spammeurs du web qui utilisent maintenant des astuces très intelligentes.

2. Dix ordres de grandeur en termes de performances

En ce qui concerne les performances logicielles, les opérations habituelles des logiciels prêts à l’emploi se font en moins de 100 ms. Par exemple, je soupçonne que les temps de calcul habituels, côté serveur, nécessaires pour générer une application de page web varient de 5 ms pour les applications les plus optimisées à 500 ms pour les plus lentes. Soyez plus lent que cela, et vos utilisateurs renonceront à visiter votre site web. Bien que cela soit difficilement vérifiable, je soupçonne que cette plage de performances est vraie pour 99% des applications web.

Mais en ce qui concerne le machine learning, les coûts de calcul typiques varient de plus de 10 ordres de grandeur, de la milliseconde aux semaines.

De nos jours, le prix d’un mois de CPU à 2Ghz est passé à 10 $, et je m’attends à ce que ce prix passe en dessous de 1 $ dans les 5 prochaines années. De plus, un mois de CPU peut être compressé en quelques heures de temps réel grâce à la parallélisation à grande échelle. Pour la plupart des algorithmes de machine learning, la précision peut être améliorée en consacrant plus de CPU à la tâche en cours.

Ainsi, gagner 1% de précision avec un investissement de 1 mois de CPU (10 $) peut être extrêmement rentable, mais ce genre de raisonnement est tout simplement insensé pour la plupart, voire tous, les domaines logiciels en dehors du machine learning.

3. Des défis de scalabilité complexes

Mettre à l’échelle un Web2.0 comme Twitter est un défi en effet, mais, en fin de compte, 90% de la solution réside dans une seule technique : la mise en cache en mémoire des éléments les plus fréquemment consultés.

Au contraire, mettre à l’échelle les algorithmes de machine learning est généralement une tâche terrifiante. Il a fallu plusieurs années à Google pour réussir à effectuer une diagonalisation de matrice creuse à grande échelle (PageRank) ; et l’algèbre linéaire n’est clairement pas le domaine le plus difficile des mathématiques en ce qui concerne les problèmes de machine learning.

Le problème central du machine learning est que la manière la plus efficace d’améliorer votre précision consiste à ajouter plus de données d’entrée. Par exemple, si vous voulez améliorer la précision de votre filtre anti-spam, vous pouvez essayer d’améliorer votre algorithme, mais vous pouvez aussi utiliser une base de données d’entrée plus grande où les e-mails sont déjà marqués comme spam ou non spam. En fait, tant que vous disposez de suffisamment de puissance de traitement, il est souvent beaucoup plus facile d’améliorer votre précision grâce à des données d’entrée plus importantes que grâce à des algorithmes plus intelligents.

Cependant, traiter de grandes quantités de données en machine learning est un problème complexe car vous ne pouvez pas partitionner vos données de manière naïve. La partition naïve équivaut à ignorer les données d’entrée et à effectuer des calculs “locaux” qui n’exploitent pas toutes les données disponibles. En fin de compte, le machine learning a besoin de moyens très astucieux pour distribuer ses algorithmes.

4. Les retours des utilisateurs sont généralement totalement erronés

Les personnes intelligentes conseillent de faire des tests d’utilisabilité en face à face. Cela s’applique également à l’interface utilisateur que vous mettez sur votre produit de machine learning, mais en ce qui concerne l’amélioration du cœur de votre technologie, les retours des utilisateurs sont pratiquement inutiles voire nuisibles s’ils sont réellement mis en œuvre.

Le principal problème est que, en machine learning, la plupart des comportements bons / corrects / attendus sont malheureusement contre-intuitifs. Par exemple, chez Lokad, une plainte fréquente des clients est que nous fournissons des prévisions plates qui sont perçues comme incorrectes. Pourtant, ces prévisions plates sont simplement dans l’intérêt de ces clients, car elles se révèlent plus précises.

Bien que je sois compétent en matière de filtrage des spams, je suis presque certain que 99% des suggestions que je propose et envoie aux personnes d’Akismet seraient simplement des déchets pour eux, simplement parce que le défi du filtrage des spams n’est pas comment filtrer les spams, mais comment filtrer les spams sans filtrer les courriels légitimes. Et oui, les personnes chez Pfizer ont le droit de discuter par courrier électronique des composés de citrate de sildénafil sans que tous leurs courriels soient filtrés.

5. Mais les données des utilisateurs détiennent la vérité

Les données fictives et les scénarios n’ont généralement aucun sens en machine learning. Les données réelles se révèlent souvent surprenantes de bien des façons inattendues. Travaillant dans ce domaine depuis 10 ans maintenant, chaque nouvel ensemble de données que j’ai jamais étudié a été surprenant à bien des égards. Il est complètement inutile de travailler sur vos propres données inventées. Sans données clients réelles à disposition, vous ne pouvez rien faire en machine learning.

Cet aspect particulier conduit fréquemment à un problème de l’œuf et de la poule en machine learning : si vous voulez commencer à optimiser l’affichage des publicités contextuelles, vous avez besoin de nombreux annonceurs et éditeurs. Pourtant, sans de nombreux annonceurs et éditeurs, vous ne pouvez pas affiner votre technologie et, par conséquent, vous ne pouvez pas convaincre de nombreux annonceurs et éditeurs de se joindre à vous.

6. Réglage vs. Mathématiques, Évolution vs. Révolution

Les personnes intelligentes conseillent que réécrire à partir de zéro est le type d’erreur stratégique qui tue fréquemment les entreprises de logiciels. Pourtant, en machine learning, réécrire à partir de zéro est souvent le seul moyen de sauver votre entreprise.

Quelque part à la fin des années 90, Altavista, le moteur de recherche leader, n’a pas pris le temps de réécrire sa technologie de classement basée sur des idées mathématiques folles basées sur la diagonalisation à grande échelle. En conséquence, ils ont été dépassés par une petite entreprise (Google) dirigée par un groupe de personnes inexpérimentées.

Le réglage et l’amélioration incrémentielle sont le cœur de l’ingénierie logicielle classique, et cela est également vrai pour le machine learning - la plupart du temps. Gagner le pourcentage suivant de précision est souvent obtenu en ajustant et en affinant finement un algorithme existant, en concevant des mécanismes de reporting ad hoc pour obtenir une meilleure compréhension du comportement de l’algorithme.

Pourtant, chaque nouveau pourcentage de précision de cette manière vous coûte dix fois plus d’efforts que le précédent ; et après quelques mois ou années, votre technologie est simplement bloquée dans une impasse.

C’est là que les mathématiques hardcore entrent en jeu. Les mathématiques sont essentielles pour passer à la prochaine étape de performance, le genre de saut où vous réalisez une amélioration de 10 % qui semblait même impossible avec l’approche précédente. Ensuite, essayer de nouvelles théories, c’est comme jouer à la roulette : la plupart du temps, vous perdez et la nouvelle théorie n’apporte aucune amélioration supplémentaire.

En fin de compte, progresser en machine learning signifie très souvent essayer des approches qui sont condamnées à échouer avec une forte probabilité. Mais de temps en temps, quelque chose se met réellement à fonctionner et la technologie fait un bond en avant.