Ted Dunning, Chief Application Architect chez MapR Technologies.
En 1956, l’écrivain américain Robert Heinlein a publié un roman intitulé « A Door into Summer »[1] dans lequel un ingénieur mécanicien connecte des tubes Thorsen munis d’une mémoire et des fusibles condensateurs afin de les pourvoir d’un jugement, créant ainsi une industrie entière de robots intelligents pouvant exécuter des tâches domestiques comme laver la vaisselle. Pour la rendre plus plausible, Robert Heinlein a situé son histoire en 1970.
Inutile de vous dire que les choses ne se sont pas tout à fait passées comme prévu. En 1969, il était clair que ce qui avait pu sembler possible en 1956 ne se réaliserait pas en 1970. Un peu plus tard, il apparut clairement que ce ne serait pas non plus le cas en 1980, ni en 1990, ni même en 2000. Tous les 10 ans, la capacité d’un ingénieur lambda à construire une machine artificiellement intelligente semblait reculer aussi rapidement que le temps s’écoulait. Tandis que la technologie progressait, l’énormité de la tâche devenait évidente à mesure qu’apparaissaient de nouvelles difficultés.
Le problème ne résidait pas dans le fait que l’apprentissage automatique ne résolvait pas des problèmes importants, au contraire. D’ailleurs, dès le milieu des années 90, la quasi-totalité des transactions par carte de crédit étaient scannées à l’aide de réseaux neuronaux afin de détecter d’éventuelles fraudes. Vers la fin de la décennie, Google analysait le Web pour identifier des signaux avancés en vue de faciliter les recherches. Mais notre ingénieur logiciel lambda n’était pas en mesure de construire un tel système, à moins de retourner sur les bancs de la fac pour passer un doctorat. L’apprentissage automatique était une discipline compliquée, et chaque nouveau domaine exigeait une capacité d’innovation considérable. Même les chercheurs les plus réputés se trouvaient dans l’incapacité de résoudre des problèmes aussi complexes que la reconnaissance d’images dans le monde réel.
Cette situation a considérablement évolué. Aujourd’hui, un ingénieur logiciel peut réaliser des systèmes capables d’accomplir des tâches vraiment étonnantes. Le plus surprenant n’est pas qu’un ordinateur soit capable de faire ces choses (il était évident depuis 1956 que ces prévisions se concrétiseraient un jour ou l’autre), mais bien le chemin parcouru au cours de la dernière décennie.
L’apprentissage automatique devient plus facile — ou du moins plus accessible
Ian Downard, ingénieur logiciel, a par exemple mis au point dans le cadre d’un projet domestique ludique un système baptisé « TensorChicken ». Sa problématique initiale était la suivante : des geais bleus pénétraient dans son poulailler et s’attaquaient aux œufs. Ian a décidé de construire un système de vision par ordinateur capable de reconnaître les geais bleus, de sorte que des mesures adaptées puissent être prises pour les empêcher d’accomplir leurs méfaits. Il s’est pour cela formé, via TensorFlow, au repérage des geais bleus à l’aide de quelques milliers de nouvelles images prises par une webcam dans son poulailler.
Comme Ian, de nombreuses personnes, la plupart sans la moindre formation de data scientist, construisent des robots pour exécuter toutes sortes d’opérations. Par ailleurs, un nombre croissant de développeurs se penchent de plus en plus sérieusement sur différents projets de machine learning, convaincus que le machine learning et le deep learning sont aujourd’hui plus facilement accessibles. Les développeurs commencent à occuper des postes d’ingénieurs de données dans une approche de type « dataops », où les compétences centrées sur les données (ingénierie des données, architectes de données, data scientists) sont associées à une approche « devops » pour créer des systèmes d’apprentissage automatique.
Il est impressionnant de constater qu’un ordinateur peut être « formé » assez facilement à la détection de geais bleus au moyen d’un modèle de reconnaissance d’images. Nous avons seulement besoin de quelques conseils sur les techniques à utiliser et d’une petite réinitialisation de notre état d’esprit, surtout si nous avons l’habitude de faire du développement logiciel.
La création de modèles diffère de la création de logiciels ordinaires en ce sens où les modèles sont basés sur des données, et non sur la conception. Vous devez appréhender le système d’un point de vue empirique et faire davantage confiance à des preuves de fonctionnement expérimentales qu’à la mise en œuvre minutieuse d’un bon design accompagné de tests unitaires et d’intégration. Dans certains domaines, l’apprentissage automatique peut s’avérer incroyablement facile à mettre en œuvre. Parallèlement, certains problèmes continuent de présenter de réelles difficultés et exigent des compétences plus poussées en sciences des données, notamment dans le domaine des mathématiques.
Si j’avais un conseil à donner : n’hésitez pas à réaliser un prototype de votre solution, et à le tester, encore et encore. Ne pariez pas votre chemise tant que vous n’avez pas la certitude que votre problème entre dans la catégorie « facile », ou du moins « pas trop compliqué ». Ne pariez pas non plus votre chemise lorsque tout semble fonctionner correctement pour la première fois. Comme tout bon data scientist, méfiez-vous des bons résultats…
Actuellement, de nombreux outils et de nouvelles techniques permettent à n’importe quel ingénieur logiciel (ou presque) de créer des systèmes utilisant l’apprentissage automatique pour exécuter des tâches étonnantes. Les compétences de base en ingénierie logicielle sont très précieuses dans la construction de ces systèmes, mais il est nécessaire de les enrichir en misant un peu sur les données. La meilleure façon d’acquérir ces nouvelles compétences est de vous lancer dès aujourd’hui dans un projet original et ludique. A vous de jouer !
[1] Publié en France en 1958 sous le titre « Une porte sur l’été » (traduction de Régine Vivier). Disponible en Livre de Poche.
Inutile de vous dire que les choses ne se sont pas tout à fait passées comme prévu. En 1969, il était clair que ce qui avait pu sembler possible en 1956 ne se réaliserait pas en 1970. Un peu plus tard, il apparut clairement que ce ne serait pas non plus le cas en 1980, ni en 1990, ni même en 2000. Tous les 10 ans, la capacité d’un ingénieur lambda à construire une machine artificiellement intelligente semblait reculer aussi rapidement que le temps s’écoulait. Tandis que la technologie progressait, l’énormité de la tâche devenait évidente à mesure qu’apparaissaient de nouvelles difficultés.
Le problème ne résidait pas dans le fait que l’apprentissage automatique ne résolvait pas des problèmes importants, au contraire. D’ailleurs, dès le milieu des années 90, la quasi-totalité des transactions par carte de crédit étaient scannées à l’aide de réseaux neuronaux afin de détecter d’éventuelles fraudes. Vers la fin de la décennie, Google analysait le Web pour identifier des signaux avancés en vue de faciliter les recherches. Mais notre ingénieur logiciel lambda n’était pas en mesure de construire un tel système, à moins de retourner sur les bancs de la fac pour passer un doctorat. L’apprentissage automatique était une discipline compliquée, et chaque nouveau domaine exigeait une capacité d’innovation considérable. Même les chercheurs les plus réputés se trouvaient dans l’incapacité de résoudre des problèmes aussi complexes que la reconnaissance d’images dans le monde réel.
Cette situation a considérablement évolué. Aujourd’hui, un ingénieur logiciel peut réaliser des systèmes capables d’accomplir des tâches vraiment étonnantes. Le plus surprenant n’est pas qu’un ordinateur soit capable de faire ces choses (il était évident depuis 1956 que ces prévisions se concrétiseraient un jour ou l’autre), mais bien le chemin parcouru au cours de la dernière décennie.
L’apprentissage automatique devient plus facile — ou du moins plus accessible
Ian Downard, ingénieur logiciel, a par exemple mis au point dans le cadre d’un projet domestique ludique un système baptisé « TensorChicken ». Sa problématique initiale était la suivante : des geais bleus pénétraient dans son poulailler et s’attaquaient aux œufs. Ian a décidé de construire un système de vision par ordinateur capable de reconnaître les geais bleus, de sorte que des mesures adaptées puissent être prises pour les empêcher d’accomplir leurs méfaits. Il s’est pour cela formé, via TensorFlow, au repérage des geais bleus à l’aide de quelques milliers de nouvelles images prises par une webcam dans son poulailler.
Comme Ian, de nombreuses personnes, la plupart sans la moindre formation de data scientist, construisent des robots pour exécuter toutes sortes d’opérations. Par ailleurs, un nombre croissant de développeurs se penchent de plus en plus sérieusement sur différents projets de machine learning, convaincus que le machine learning et le deep learning sont aujourd’hui plus facilement accessibles. Les développeurs commencent à occuper des postes d’ingénieurs de données dans une approche de type « dataops », où les compétences centrées sur les données (ingénierie des données, architectes de données, data scientists) sont associées à une approche « devops » pour créer des systèmes d’apprentissage automatique.
Il est impressionnant de constater qu’un ordinateur peut être « formé » assez facilement à la détection de geais bleus au moyen d’un modèle de reconnaissance d’images. Nous avons seulement besoin de quelques conseils sur les techniques à utiliser et d’une petite réinitialisation de notre état d’esprit, surtout si nous avons l’habitude de faire du développement logiciel.
La création de modèles diffère de la création de logiciels ordinaires en ce sens où les modèles sont basés sur des données, et non sur la conception. Vous devez appréhender le système d’un point de vue empirique et faire davantage confiance à des preuves de fonctionnement expérimentales qu’à la mise en œuvre minutieuse d’un bon design accompagné de tests unitaires et d’intégration. Dans certains domaines, l’apprentissage automatique peut s’avérer incroyablement facile à mettre en œuvre. Parallèlement, certains problèmes continuent de présenter de réelles difficultés et exigent des compétences plus poussées en sciences des données, notamment dans le domaine des mathématiques.
Si j’avais un conseil à donner : n’hésitez pas à réaliser un prototype de votre solution, et à le tester, encore et encore. Ne pariez pas votre chemise tant que vous n’avez pas la certitude que votre problème entre dans la catégorie « facile », ou du moins « pas trop compliqué ». Ne pariez pas non plus votre chemise lorsque tout semble fonctionner correctement pour la première fois. Comme tout bon data scientist, méfiez-vous des bons résultats…
Actuellement, de nombreux outils et de nouvelles techniques permettent à n’importe quel ingénieur logiciel (ou presque) de créer des systèmes utilisant l’apprentissage automatique pour exécuter des tâches étonnantes. Les compétences de base en ingénierie logicielle sont très précieuses dans la construction de ces systèmes, mais il est nécessaire de les enrichir en misant un peu sur les données. La meilleure façon d’acquérir ces nouvelles compétences est de vous lancer dès aujourd’hui dans un projet original et ludique. A vous de jouer !
[1] Publié en France en 1958 sous le titre « Une porte sur l’été » (traduction de Régine Vivier). Disponible en Livre de Poche.