L'entreprise de machine learning, qu'est-ce qui est si spécial?
Machine learning est le sous-domaine de l’intelligence artificielle qui concerne la conception et le développement d’algorithmes permettant aux ordinateurs d’améliorer leurs performances avec le temps sur la base de données, telles que celles obtenues à partir de données de capteurs ou de bases de données. Wikipedia
Il y a dix ans, les entreprises de machine learning étaient pratiquement inexistantes, ou disons, marginales au mieux. La raison principale de cette situation était tout simplement qu’il n’existait pas tant d’algorithmes réellement opérationnels et apportant une valeur commerciale à l’époque. La traduction automatique, par exemple, fonctionne toujours à 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 presque une décennie, et il est toujours surprenant de voir à quel point les choses diffèrent profondément dans ce domaine comparé au typique monde des logiciels emballés. Le machine learning est un univers logiciel à part entière.
Les progrès scientifiques dans des domaines qui ressemblaient à l’intelligence artificielle ont été lents, très lents comparés à la plupart des autres domaines du logiciel. Mais un fait trop peu connu est aussi que les progrès scientifiques ont été constants; et, à l’heure actuelle, il existe pas mal d’entreprises de machine learning qui réussissent :
- Filtre anti-spam intelligent : bon sang, akismet a détecté plus de 71 000 commentaires spam sur mon blog, avec pratiquement zéro faux positif d’après ce que je peux dire.
- Reconnaissance vocale : Dragon Dictate fait maintenant un travail assez impressionnant juste après quelques minutes d’ajustement par l’utilisateur.
- La reconnaissance de l’écriture manuscrite et même la reconnaissance d’équations sont intégrées dans Windows 7.
Le machine learning est devenu grand public.
1. Les produits changent mais l’interface utilisateur reste
Pour la plupart des entreprises de logiciels, apporter quelque chose de nouveau aux yeux du client est LA manière d’obtenir des revenus récurrents. Le SaaS change lentement cet aspect financier, mais 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 bien au fond avec très peu ou pas de changements apparents. Google Search - probablement le produit de machine learning le plus réussi de tous - est notoirement simple, et cela fait une décennie. Récemment, une personnalisation du classement basée sur les préférences des utilisateurs a été ajoutée, mais ce changement est survenu presque 10 ans après le lancement, et je suppose qu’il est encore inaperçu par la plupart des utilisateurs.
Pourtant, cela ne signifie pas que les équipes de Google sont restées inactives pendant les 10 dernières années. Bien au contraire, les équipes de Google ont furieusement amélioré leur technologie en remportant bataille après bataille contre des spammeurs web qui utilisent désormais des astuces très ingénieuses.
2. Dix ordres de grandeur en performance
Quand il s’agit de performance logicielle, les opérations habituelles sur logiciels emballés se font en moins de 100ms. Par exemple, je soupçonne que les temps de calcul habituels, côté serveur, nécessaires pour générer une application web varient de 5ms pour les applications les plus optimisées à 500ms pour les plus lentes. Être plus lent que cela, et vos utilisateurs renonceront à visiter votre site web. Bien que cela soit difficilement vérifiable, je suspecte que cette plage de performance est valable pour 99% des applications web.
Mais lorsqu’il s’agit de machine learning, les coûts de calcul typiques varient sur plus de 10 ordres de grandeur, de quelques millisecondes à plusieurs semaines.
À l’heure actuelle, le prix d'1 mois de CPU à 2Ghz est tombé à 10$, et j’attends que ce prix chute sous 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, précision peut être améliorée en dédiant plus de CPU à la tâche.
Ainsi, gagner 1% en précision avec un investissement d'1 mois de CPU (10$) peut s’avérer massivement profitable, mais ce type de raisonnement est tout simplement de la folie pour la plupart, sinon pour tous, les autres domaines logiciels hors machine learning.
3. Les défis corsés de la scalabilité
Faire monter en charge un service Web2.0 tel que Twitter est un véritable défi, mais, en fin de compte, 90% de la solution repose sur une technique unique : la mise en cache en mémoire des éléments les plus consultés.
Au contraire, faire monter en charge les algorithmes de machine learning est généralement une tâche terriblement compliquée. Il a fallu plusieurs années à Google pour réussir à effectuer la diagonalisation de matrices creuses à grande échelle (PageRank) ; et l’algèbre linéaire n’est clairement pas le domaine des mathématiques le plus complexe lorsqu’il s’agit de 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 davantage de données en entrée. Par exemple, si vous souhaitez améliorer la précision de votre filtre anti-spam, vous pouvez essayer d’améliorer votre algorithme, mais vous pouvez également utiliser une base de données plus grande où les emails sont déjà étiquetés comme spam ou non spam. En réalité, tant que vous disposez d’une puissance de traitement suffisante, il est souvent bien plus facile d’améliorer votre précision en augmentant la quantité de données d’entrée que par des algorithmes plus intelligents.
Pourtant, traiter une grande quantité de données en machine learning est un problème compliqué car vous ne pouvez pas partitionner naïvement vos données. Un partitionnement naïf équivaut à jeter des données d’entrée et à réaliser des calculs localisés qui ne tirent pas profit de l’ensemble des données disponibles. En fin de compte : le machine learning nécessite des méthodes très ingénieuses pour distribuer ses algorithmes.
4. Le retour des utilisateurs est généralement complètement erroné
Des personnes intelligentes conseillent de réaliser des tests d’utilisabilité dans les couloirs. Cela s’applique également à toute interface utilisateur que vous intégrez à votre produit de machine learning, mais quand il s’agit d’améliorer le cœur de votre technologie, le retour des utilisateurs est pratiquement inutile, voire carrément nuisible s’il est 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, la plainte fréquente d’un client est que nous fournissons des prévisions plates qui sont perçues comme incorrectes. Pourtant, ces prévisions plates sont en réalité dans le meilleur intérêt de ces clients, car elles se révèlent plus précises.
Bien que connaissant bien le filtrage anti-spam, je suis presque certain que 99% des suggestions que je propose et envoie aux équipes d’akismet seraient pour elles du simple spam, car le défi en filtrage anti-spam n’est pas comment filtrer le spam, mais comment filtrer le spam, sans filtrer les emails légitimes. Et oui, les équipes de Pfizer ont le droit de discuter par email des composés de citrate de Sildenafil sans que tous leurs emails soient filtrés.
5. Mais les données utilisateur détiennent la vérité
Les données fictives et les scénarios n’ont guère de sens en machine learning. Les données réelles se révèlent surprenantes de bien des manières inattendues. Travaillant dans ce domaine depuis 10 ans, chaque nouveau jeu de données que j’ai étudié m’a surpris à bien des égards. Il est totalement inutile de travailler sur vos propres données inventées. Sans données réelles de clients à disposition, vous ne pouvez rien faire en machine learning.
Cet aspect particulier conduit fréquemment à un problème de type l’œuf et la poule en machine learning : si vous souhaitez commencer à optimiser l’affichage d’annonces contextuelles, vous avez besoin d’une multitude d’annonceurs et d’éditeurs. Pourtant, sans une multitude d’annonceurs et d’éditeurs, vous ne pouvez pas affiner votre technologie et, par conséquent, vous ne pouvez pas convaincre une multitude d’annonceurs et d’éditeurs de vous rejoindre.
6. Réglages vs. Mathématiques, Évolution vs. Révolution
Des personnes intelligentes conseillent que réécrire de zéro est le type d’erreur stratégique qui tue fréquemment les entreprises de logiciels. Pourtant, en machine learning, réécrire de zéro est fréquemment la seule manière de sauver votre entreprise.
Vers 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 les idées mathématiques folles de la diagonalisation à grande échelle. En conséquence, ils se sont fait submerger par une petite entreprise (Google) menée par une bande de personnes inexpérimentées.
Le réglage et l’amélioration incrémentale sont au cœur de l’ingénierie logicielle classique, et cela reste vrai en machine learning - la plupart du temps. Obtenir le prochain pourcentage de précision est souvent réalisé en réglant finement et en affinant un algorithme existant, en concevant des tonnes de mécanismes de reporting ad hoc dans le processus pour obtenir des insights plus profonds sur le 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 se retrouve coincée dans une impasse.
C’est là que les mathématiques à la base entrent en jeu. Les mathématiques sont essentielles pour passer au niveau de performance suivant, ce type 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 revient à jouer à la roulette : la plupart du temps, on perd, et la nouvelle théorie n’apporte aucune amélioration supplémentaire.
Au final, progresser en machine learning signifie très souvent essayer des approches vouées à l’échec avec une forte probabilité. Mais de temps en temps, quelque chose fonctionne réellement et la technologie fait un bond en avant.