Smashing Podcast Épisode 33 Avec Charlie Gerard : Qu'est-ce que l'apprentissage automatique ?
Publié: 2022-03-10Dans cet épisode, nous parlons de Machine Learning. À quel type de tâches pouvons-nous le confier dans un contexte de développement Web ? J'ai parlé avec l'expert Charlie Gerard pour le savoir.
Afficher les remarques
- Apprentissage automatique pratique en JavaScript : TensorFlow.js pour les développeurs Web
- Charlie sur Twitter
- Le site personnel de Charlie
Mise à jour hebdomadaire
- Une introduction pratique à l'injection de dépendance
écrit par Jamie Corkhill - Vers un Web sans publicité : diversifier l'économie en ligne
écrit par Frederick O'Brien - Le Web devrait-il exposer les capacités matérielles ?
écrit parNoam Rosenthal - Comment gagner plus d'argent en vendant des applications Shopify en 2021
écrit par Suzanne Scacca - Premiers pas avec le package GetX dans les applications Flutter
écrit par Kelvin Omereshone
Transcription
Drew McLellan : elle est développeur front-end senior chez Netlify, développeur Google expert en technologies Web et conférencier technique Mozilla. Dans ses temps libres, elle explore le domaine de l'interaction homme-machine et construit des prototypes interactifs à l'aide de matériel, d'apprentissage automatique et de codage créatif. Elle prend régulièrement la parole lors de conférences et écrit des articles de blog pour partager ce qu'elle apprend. Et plus récemment, est l'auteur du livre, Practical Machine Learning in JavaScript for Apress.
Drew : Nous savons donc qu'elle est une experte du front-end, mais s'est-elle une fois échappée de prison en utilisant une lime en métal qu'elle avait crochetée dans ses rêves. Mes amis fracassants, veuillez accueillir, Charlie Gerard. Salut Charly. Comment vas-tu?
Charlie Gerard : Je suis fracassant.
Drew : Je voulais vous parler aujourd'hui de l'apprentissage automatique, ce qui peut sembler un sujet un peu étrange pour un podcast qui se concentre principalement sur le type de développement Web à la fin du navigateur. J'ai tendance à penser à l'apprentissage automatique comme à quelque chose qui se passe dans des centres de données géants ou des laboratoires avec des gens en blouse blanche. C'est certainement un peu une sorte de mot à la mode ces jours-ci. Que diable entendons-nous réellement lorsque nous parlons d'apprentissage automatique ?
Charlie : Donc, en général, la définition standard serait de donner la possibilité aux ordinateurs de générer des prédictions sans qu'on leur dise quoi faire. Espérons que cela aura un sens lorsque nous continuerons à en parler, mais c'est le genre de définition de conversation générique. Vous ne dites pas vraiment aux algorithmes ou aux modèles d'aller chercher certaines choses. Ils apprennent grâce aux données que vous leur donnez et cela peut alors générer des prédictions.
Drew : Donc, plutôt que d'avoir à coder spécifiquement pour certaines circonstances, vous créez en quelque sorte un cas générique où le logiciel peut apprendre à faire ce genre de choses lui-même ?
Charlie : Ouais, exactement.
Drew : Cela semble presque un peu effrayant. C'est un peu à la limite de ce côté de l'intelligence artificielle. Avez-vous besoin d'être un passionné de mathématiques ou un spécialiste des données pour faire cela ? Ou y a-t-il des choses comme des algorithmes établis et des choses auxquelles vous pouvez faire appel pour commencer ?
Charlie : Ouais. Heureusement, vous n'avez pas besoin d'être un passionné de mathématiques ou un spécialiste des données. Sinon, je n'en parlerais certainement pas. Mais il existe des algorithmes déjà trouvés et des outils déjà disponibles qui vous permettent d'utiliser ces algorithmes sans avoir à tout écrire vous-même. Donc, si nous utilisons l'écosystème frontal comme comparaison, vous pouvez utiliser des API Web, comme le navigateur pour obtenir des médias utilisateur lorsque vous souhaitez avoir accès à la webcam ou au microphone.
Charlie : Et vous n'avez pas besoin de savoir comment cette API a été implémentée sous le capot. Ce qui compte, c'est que vous sachiez à quoi sert cette API et comment l'utiliser, si vous le souhaitez. Ensuite, plus tard, vous pourrez aller regarder dans le code source de votre navigateur préféré pour savoir comment cela fonctionne vraiment, mais ce n'est vraiment pas utile en premier lieu. Et cela peut être utile si vous souhaitez écrire votre propre algorithme plus tard. Mais pour être vraiment honnête, il est très peu probable que vous souhaitiez le faire.
Drew : D'accord. C'est donc un peu comme la façon dont vous pouvez écrire du CSS pour positionner un élément sur une page. Vous ne vous souciez pas de la façon dont le navigateur fait cela. Vous écrivez juste quelques CSS et le navigateur s'en charge.
Charlie : Ouais. Quand vous commencez, c'est surtout quelque chose comme ça.
Drew : C'est bien. C'est plus en quelque sorte mon niveau de science des données.
Charlie : Moi aussi.
Drew : Alors, quels sont les types de problèmes auxquels vous pouvez appliquer l'apprentissage automatique ? À quel genre de choses est-il bon ?
Charlie : Cela dépend de ce que vous voulez faire en premier lieu, parce que lorsque vous voulez construire une certaine chose, je vous conseillerais de penser d'abord au type de problème que vous voulez apprendre qui vous aidera ensuite à choisir un algorithme que vous pouvez utiliser pour résoudre ou trouver une solution à votre problème. Donc, en général, je commencerais par réfléchir au type de problème que j'essaie de résoudre, et il y en a trois principaux. Je pense qu'il y en a probablement un peu plus, mais en général, pour ce que j'ai été formé à faire et ce que j'ai lu, il y en a trois principaux qui sont mentionnés.
Charlie : Si vous voulez que j'entre dans les détails, il y a l'apprentissage supervisé, l'apprentissage non supervisé et l'apprentissage par renforcement. Vous avez aussi beaucoup de supervisés, mais pour être honnête, je n'y connais pas grand chose car j'ai pu construire mes projets avec les trois premiers.
Drew : Supervisé, non supervisé et renfort, vous avez dit ?
Charlie : Oui, l'apprentissage par renforcement.
Drew : D'accord. Alors, qu'est-ce que l'apprentissage supervisé? Pouvez-vous nous donner un exemple de ce que cela signifie?
Charlie : L'apprentissage supervisé, c'est lorsque votre ensemble de données est composé d'entités et d'étiquettes et que vous alimentez cela avec un algorithme. Donc, si nous prenons un exemple auquel, espérons-le, la plupart des gens pourront s'identifier, c'est si vous avez une maison et que vous voulez la vendre, et que vous voulez savoir à quel prix vous allez vendre votre maison ou votre voiture, en fait, soit dit en passant, ce serait la même chose. Et vous utiliseriez un ensemble de données de maisons dans le même environnement ou le même type de maisons et connaissant leur prix sur le marché, vous seriez en mesure d'utiliser les caractéristiques de votre propre maison ; Alors combien de chambres et a-t-il un jardin et dans quel quartier se trouve-t-il ? Et des choses dans le genre.
Charlie : Ce sont les caractéristiques et l'étiquette serait le prix, et en utilisant tous ces ensembles de données de maisons déjà autour de vous, vous pouvez utiliser un algorithme d'apprentissage automatique qui va en quelque sorte apprendre la corrélation entre les caractéristiques de votre maison et les prix sur le marché, pour ensuite obtenir les caractéristiques de votre maison et pouvoir générer un prix à partir de cela. Donc, la chose la plus importante est dans l'apprentissage supervisé, vous avez également un tas de fonctionnalités et une étiquette, vous êtes donc en mesure d'établir une corrélation entre les deux.
Drew : Vous, vous alimenteriez le modèle avec un vaste ensemble de données sur les maisons dans cet exemple, où vous connaissez leur prix et ensuite vous connaissez toutes ces caractéristiques à leur sujet. Dites chambres et qu'avez-vous, comme la superficie en pieds carrés, et je suppose que l'emplacement serait une autre sorte de chose qui pourrait être prise en compte ?
Charlie : Ouais. C'est donc l'un des problèmes avec l'apprentissage automatique, c'est que vous pouvez avoir beaucoup de fonctionnalités et que certaines ne seront pas aussi efficaces que d'autres. Ainsi, vous pourriez avoir, par exemple, la couleur de votre maison, peut-être n'avoir aucune corrélation avec le prix, mais vous pouvez donner un tas de fonctionnalités et le modèle trouvera lui-même une corrélation entre les deux. Vous pouvez ensuite modifier votre ensemble de données, si vous le souhaitez, et supprimer la couleur, ou vous vous rendez compte que la taille du jardin n'a pas d'importance ou des choses comme ça.
Charlie : Donc, en général, même si vous fournissez votre ensemble de données à un modèle, vous n'aurez pas une prédiction parfaite la première fois. Habituellement, vous modifiez quelques choses différentes et vous voyez. Vous le modifiez en quelque sorte jusqu'à ce qu'il atteigne une prédiction que vous pensez être assez précise.
Drew : Et puis une fois que ce modèle est créé, ou disons que vous l'avez créé en utilisant les données d'une ville, pourriez-vous alors prendre cela et l'alimenter… auriez-vous besoin de l'alimenter en données d'une autre ville ? Seriez-vous en mesure de le récupérer et de l'utiliser ailleurs une fois cette formation terminée ou est-ce alors spécifique à cet ensemble de données ou comment cela fonctionnerait-il ?
Charlie : Je pense que ce serait spécifique à l'ensemble de données. Cela signifie donc que vous pouvez créer un autre ensemble de données avec le même format, disons. Si vous avez une feuille de calcul Excel avec différentes colonnes, vous pourrez conserver la même étiquette et les mêmes fonctionnalités, mais vous devrez la remplacer par les valeurs de cette ville. Mais en général, cela signifie que la collecte de l'ensemble de données peut également prendre beaucoup de temps, mais si vous savez déjà ce que vous avez fait pour la ville de Paris, par exemple, et que la structure de votre ensemble de données est la même, mais vous remplacez les valeurs, c'est un peu plus rapide et vous pouvez régénérer le modèle.
Charlie : Vous ne devriez pas réutiliser le même modèle, si vos données sont différentes parce que les prix des maisons à Paris sont différents de ceux d'une petite ville en Australie, par exemple. Vous ne voudriez donc pas avoir de mauvaises données car le cœur de votre ensemble de données au début n'était pas exactement le même.
Drew : Nous parlons beaucoup de types de modèles avec apprentissage automatique. Ainsi, le modèle est un peu comme le résultat final de toute l'analyse de l'ensemble de données. Et il est ensuite utilisé pour faire des prédictions ultérieures. C'est ça le modèle, hein ?
Charlie : Oui, c'est exactement ça. C'est un modèle donc c'est un peu comme une fonction à laquelle vous allez alimenter de nouvelles entrées qu'elle n'a jamais vues auparavant, mais en fonction de ce qu'elle a appris lors de l'étape d'apprentissage. il serait capable de produire une prédiction.
Drew : Donc, l'apprentissage supervisé, puis il crée ce modèle prédictif à partir d'étiquettes sur les fonctionnalités. Qu'est-ce que l'apprentissage non supervisé ?
Charlie : Donc, non supervisé, c'est un peu le même concept, mais vous enlevez les étiquettes. Donc dans ce cas, vous pouvez penser que notre problème de vente d'une maison, ne serait pas vraiment un problème d'apprentissage non supervisé, car si vous ne connaissez que les caractéristiques des maisons autour de vous, mais que vous n'avez pas de prix comme étiquette, vous ne peut pas vraiment prédire un prix. Il ne saura même pas quel est le prix.
Charlie : Donc, non supervisé, c'est plus quand vous avez un ensemble de données et que vous n'avez que des fonctionnalités à leur sujet. Vous pouvez générer plus de tendances ou de groupes de choses ensemble. Vous n'utiliseriez pas l'apprentissage non supervisé si vous voulez un résultat particulier, si vous avez une certaine question, comme « Quel est le prix ? » Ce n'est pas une très bonne utilisation de non supervisé, mais c'est plus, si vous voulez regrouper des entités, cela pourrait être des personnes ou des choses comme ça.
Charlie: Donc, généralement, un cas d'utilisation pour cela est des recommandations comme les recommandations d'Amazon ou les recommandations de Spotify, comme, "Les gens comme vous écoutent aussi ça", et c'est plus autour de là où se trouvent les fonctionnalités dans ce cas serait… eh bien, ils ont des données sur vous, afin qu'ils sachent ce que vous écoutez, dans quel pays vous êtes habituellement ou combien de fois par jour écoutez-vous quelque chose ? Ainsi, en utilisant ces fonctionnalités sur les personnes, elles peuvent ensuite vous placer dans le même groupe ou le même type d'auditeurs, ou le même type de personnes qui achètent certaines choses sur Amazon. Et en utilisant ce type d'apprentissage non supervisé, ils peuvent savoir quoi vous faire de la publicité ou quoi vous recommander d'écouter en fonction de personnes comme vous. C'est donc plus ce genre de problèmes.
Drew : D'accord, tout cela a beaucoup plus de sens pour moi maintenant en tant que développeur Web, car ces types d'utilisations dont nous avons parlé, les prix des maisons et les recommandations et la diffusion d'annonces et d'autres choses, en fin de compte, ce sont toutes sortes de choses que nous devons gérer et des fonctionnalités que nous pourrions vouloir mettre dans un site ou un produit, ou quoi que ce soit d'autre. Nous avons donc les différents types d'apprentissage basés sur la matière que nous cherchons à prédire. Existe-t-il d'autres types d'applications avec lesquelles nous pouvons également mettre cela? Y a-t-il des sortes de bons exemples que les gens ont créés qui pourraient utiliser cela?
Charlie : Ouais. Il y a tellement d'exemples. C'est pourquoi, quand je parle de prédire le prix d'une maison, ce n'est peut-être pas quelque chose qui vous concerne. Ce n'est peut-être pas vraiment excitant, mais il y a en fait tellement plus que vous pouvez faire. Il y a vraiment de bons exemples autour. Je pense que le premier que j'ai vu était autour d'un texte d'art généré dynamiquement pour les images. Donc, bien sûr, c'est quelque chose que vous pouvez faire vous-même lorsque vous ajoutez une image à un site.
Charlie : Mais que se passe-t-il si vous avez un site qui contient vraiment des tonnes d'images, et au lieu de le faire manuellement, vous pouvez alimenter chaque image à un algorithme d'apprentissage automatique, et cela générerait un texte d'art sur le sujet de cette image, et peut-être que la seule étape humaine serait de vérifier que c'est correct, mais cela vous permettrait vraiment de vous concentrer sur la construction de l'application.
Charlie : Et vous rendriez toujours votre site Web accessible en ayant du texte artistique pour les images, mais il serait en quelque sorte généré par une machine. C'est donc l'un des exemples que j'ai vus lorsque j'ai commencé, mais vous avez également un prototype de filtrage non sûr pour le contenu professionnel. Et je pensais que ce serait en fait assez bon dans une extension Chrome, vous pourriez avoir une extension Chrome qui chaque fois que vous ouvrez une page Web, vous vérifieriez simplement que ce qui se trouve sur la page est une sorte de contenu sûr.
Charlie : Par exemple, si vous avez des enfants qui utilisent votre ordinateur portable ou des choses comme ça, vous pouvez alors simplement masquer les images ou remplacer ces images par des pandas, si vous le souhaitez ou quelque chose comme ça. Mais c'est ce genre d'application où vous pouvez utiliser l'apprentissage automatique pour faire des choses automatiquement pour vous afin que vous n'ayez pas à vous soucier de certaines tâches, ou vous pouvez simplement utiliser votre cerveau pour faire d'autres choses.
Charlie : Mais là, c'est encore plus avancé avec un exemple de reconnaissance gestuelle, en utilisant la webcam qui communiquait alors avec Amazon Alexa et la reconnaissance vocale et tout ça. Ainsi, vous pouvez vraiment fusionner de nombreuses technologies différentes avec la voix, la webcam et l'apprentissage automatique pour simplement la reconnaissance et pouvoir interagir avec différentes technologies, mais d'une nouvelle manière. Donc ça peut vraiment devenir très amusant.
Drew : C'est assez fascinant, car nous avons examiné une sorte d'analyse des modèles de données en tant que tels, et maintenant nous pensons à examiner le contenu des images et à analyser le contenu des images à l'aide de l'apprentissage automatique, ce qui est assez intéressant. Je suppose que c'est le genre de fonctionnalité que Facebook a, si quelqu'un publie une photo qu'il pense être sanglante ou montrer une blessure ou quelque chose, et qu'elle est floue, et alors vous n'avez qu'à cliquer pour la révéler. Ce genre de chose, évidemment, Facebook ne peut pas avoir des équipes de modérateurs qui regardent chaque image qui est téléchargée.
Charlie : J'espère que non.
Drew : Ce serait une tâche sans fin.
Charlie : Ce n'est pas un super boulot non plus.
Drew : J'avais l'habitude de travailler sur un site Web d'annonces gratuites où les gens pouvaient publier des annonces. Et il y avait beaucoup de modération impliquée là-dedans, dans laquelle même moi, en tant que développeur Web, j'ai dû m'impliquer, en parcourant simplement, en regardant toutes ces images en disant: "Oui, non, oui, non."
Charlie : J'ai fait ça un peu aussi. J'aurais aimé qu'à l'époque il y ait eu l'apprentissage automatique, juste un petit outil utilitaire juste pour faire ça pour moi, et maintenant il est là. Donc c'est plutôt cool.
Drew : Ouais, c'est vraiment génial. Et c'est assez excitant de penser à l'entrée en direct d'une webcam et de pouvoir en quelque sorte analyser cela en temps réel, afin que vous puissiez faire des interactions basées sur les gestes. Est-ce…
Charlie : Ouais, donc au fond, il utilise en fait plus de classification d'image, parce que votre webcam, une image est un ensemble de pixels, mais alors que vous faites certains gestes, vous pouvez entraîner un modèle à reconnaître que votre main droite est levée et peut-être que vous contrôlerait la souris comme ceci, ou il regarderait les coordonnées de votre main et de l'écran, et vous suivriez la souris. Tu peux vraiment faire ce que tu veux. Vous pourriez peut-être avoir une reconnaissance des couleurs.
Charlie : Vous pouvez faire des choses vraiment amusantes. Un prototype que j'ai construit, que j'ai en quelque sorte abandonné à un moment donné, mais j'ai construit un peu… Je voulais que ce soit une extension Chrome, mais cela n'a pas fonctionné. J'ai créé une petite application de bureau avec Electron. Aussi en JavaScript où je pouvais parcourir une page Web simplement en inclinant la tête. Ainsi, il reconnaîtrait que lorsque j'incline la tête vers le bas, il défile vers le bas et lorsque je monte, il monte. C'était juste ce genre de petites expériences où je pensais: "Eh bien, si je peux ensuite le transformer en une extension Chrome, cela pourrait être utile pour certaines personnes."
Charlie : Même si vous ne faites que manger devant votre ordinateur et que vous lisez les nouvelles et que je ne veux pas que mon clavier soit sale, alors je peux simplement incliner la tête, mais j'espère aussi que, pour l'accessibilité, je pourrais aide réellement les gens à naviguer sur certaines pages Web ou des choses comme ça. Il existe de nombreux outils disponibles et il s'agit de l'idée que vous pouvez trouver en observant la situation autour de vous, et comment pourriez-vous résoudre certains de ces problèmes en utilisant l'apprentissage automatique ?
Drew : Pour l'apprentissage automatique, nous pensons souvent aux langages, Python. Je pense que c'est là qu'une grande partie du genre de développement semble se produire en premier. Mais en tant que développeurs Web, nous sommes évidemment plus à l'aise avec JavaScript en général. L'apprentissage automatique est-il quelque chose que nous pouvons raisonnablement nous attendre à faire ? Je veux dire que les petits exemples amusants sont une chose, mais est-ce vraiment utile pour un vrai travail en JavaScript ?
Charlie : Eh bien, je veux dire, je pense que oui, mais je sais que la plupart des choses que je fais sont des prototypes, mais je pense que cela dépend de la situation dans laquelle vous vous trouvez au travail. Il existe des moyens de mettre en œuvre l'apprentissage automatique en tant que développeur dans votre travail quotidien. Mais ce que j'aime vraiment avec JavaScript, c'est le fait que si vous êtes déjà un développeur front-end, vous n'avez pas besoin d'aller apprendre un nouvel écosystème ou un nouvel ensemble d'outils ou une nouvelle syntaxe, un nouveau langage. Vous êtes déjà dans votre environnement dans lequel vous travaillez tous les jours.
Charlie : Habituellement, quand vous apprenez ce genre de choses, vous devez en quelque sorte commencer sur votre propre temps, si ce n'est pas votre travail quotidien et que le temps de tout le monde est précieux et que vous n'en avez pas beaucoup. Donc, si vous pouvez supprimer certaines barrières et rester dans le même écosystème que vous connaissez, alors je pense que c'est plutôt bien, mais vous pouvez aussi commencer… le pouvoir de JavaScript pour moi est que vous pouvez commencer par construire un petit prototype pour convaincre les gens que peut-être y a-t-il une idée qui doit être étudiée, et en étant capable de faire tourner quelque chose rapidement en JavaScript, vous pouvez valider que votre idée est bonne.
Charlie : Ensuite, soit vous pouvez obtenir l'adhésion de la direction pour passer plus de temps ou plus d'argent, soit vous pouvez ensuite donner cela aux développeurs Python, si vous voulez le construire en Python. Mais pour moi, cette capacité à valider rapidement une idée est super importante. Surtout, peut-être que si vous travaillez pour une startup et que tout va vite et que vous êtes capable de montrer que quelque chose vaut la peine d'être examiné, je pense que c'est assez important.
Charlie : Et aussi le fait qu'il y a vraiment un gros écosystème d'outils et qu'il y a de plus en plus de frameworks et d'applications de machine learning. En JavaScript, il n'y a pas que sur une page web que l'on peut ajouter du machine learning. Comme je le disais précédemment, vous pouvez créer des extensions Chrome et des applications de bureau avec Electron, et des applications mobiles avec React Native, et du matériel et de l'IoT avec des frameworks comme Johnny-Five.
Charlie : Donc, avec le langage que vous connaissez déjà, vous avez en fait accès à un vaste écosystème de plates-formes différentes sur lesquelles vous pouvez exécuter la même expérience. Et je pense que, pour moi, c'est assez incroyable. Et c'est là que je vois le véritable pouvoir de l'apprentissage automatique en JavaScript. Et au fur et à mesure qu'il s'améliorera, vous pourrez peut-être vraiment l'intégrer dans les applications que nous construisons tous les jours.
Drew : JavaScript est partout, n'est-ce pas ?
Charlie : Oui.
Drew : Pour le meilleur ou pour le pire, c'est partout. Qui aurait cru? Cela sonne bien, mais cela ressemble aussi à beaucoup de travail. Et je pense aux ensembles de données et autres, comment diable pouvez-vous commencer à faire ce genre de tâches ?
Charlie : Il y a pour le moment, du moins avec TensorFlow.JS, trois choses que vous pouvez faire avec le framework. Et disons que la plus simple consiste à importer un modèle pré-formé existant. Donc, il y en a quelques-uns, il y a différents modèles qui ont été formés avec différents ensembles de données, et je recommanderais de commencer par cela parce que vous, vous pouvez apprendre les bases sur la façon d'utiliser le framework lui-même, et ce que vous pouvez faire avec ces modèles.
Charlie : Vous avez donc certains modèles de reconnaissance d'images qui ont été entraînés avec différentes images. Certains d'entre eux sont meilleurs pour la reconnaissance d'objets. Certains d'entre eux sont meilleurs pour la reconnaissance des personnes, et en comprenant quels modèles utiliser, nous pouvons alors être libres de construire ce que vous voulez dans la contrainte de ce modèle.

Charlie : Mais je pense que c'est une bonne façon de commencer. J'utilise encore des modèles pré-entraînés pour beaucoup de mes expériences parce que c'est aussi, pourquoi réinventer la roue si elle est déjà là ? Utilisons simplement les outils qui ont été donnés. Ensuite, lorsque vous voulez aller, peut-être un peu plus loin, vous pouvez faire ce qu'on appelle l'apprentissage par transfert, lorsque vous recyclez un modèle important. Vous utilisez donc toujours l'un des modèles pré-formés, mais vous avez ensuite la possibilité de le recycler en direct avec vos propres échantillons.
Charlie : Par exemple, si vous vouliez utiliser une classification d'images où vous avez différentes personnes, alors vous voudriez faire une classification des gestes, peut-être. Si votre modèle, par exemple, est formé avec des personnes qui ont toujours, je ne sais pas, leur main droite ou quelque chose comme ça, mais pour votre application, vous voulez la main gauche, vous pouvez recycler ce modèle avec vos échantillons de la gauche main, et vous auriez alors un modèle qui est déjà assez formé pour reconnaître la main droite, mais vous ajouteriez ensuite votre propre échantillon et vous pouvez le recycler assez rapidement dans le navigateur, en fonction de la quantité de nouvelles données d'entrée que vous lui donnez , cela prend un peu de temps, mais en quelques secondes vous avez un modèle ré-entraîné qui sait très bien reconnaître ces deux gestes que vous pouvez ensuite utiliser dans, dans votre application.
Charlie : Donc, c'est généralement la deuxième étape. Et puis une troisième étape un peu plus complexe, c'est quand on fait tout dans le navigateur. Donc, vous écrivez votre propre modèle à partir de zéro et vous l'entraînez dans le navigateur et vous entraînez vraiment, exécutez et générez le modèle, tout dans le navigateur. Mais en général, la seule application que j'ai vue pour cela est la création de visualisations. Lorsque vous souhaitez visualiser le processus de formation d'un modèle et le nombre d'étapes qu'il prend, combien de temps cela prend, et vous pouvez voir la précision augmenter ou diminuer, en fonction des fonctionnalités que vous choisissez et des paramètres que vous ajustez .
Charlie : Donc je n'ai pas vraiment joué avec celui-là parce que je n'ai pas trouvé d'application pour moi avec laquelle je voulais construire, mais les deux premières étapes consistant à n'utiliser que le modèle pré-entraîné ou à le recycler avec mes propres échantillons sont où personnellement j'ai vu. Je me suis amusé avec ça.
Drew : Donc, il s'agira généralement de créer le modèle à l'avance, en quelque sorte hors ligne, puis le navigateur utilise ensuite ce modèle formé, ou ajoute peut-être un peu, il fait un peu de recyclage, mais généralement, ce modèle sera-t-il établi avant d'être mis en service dans le navigateur de l'utilisateur ?
Charlie : En général, oui. Ensuite, vous pouvez certainement créer votre propre modèle. Si vous le faites, je ne recommanderais pas de le former dans le navigateur, mais vous pouvez également le faire dans NodeJS. Si vous savez, un peu de NodeJS. J'ai certainement créé mes propres modèles, mais je les exécute généralement dans NodeJS car c'est un peu plus performant. Et puis j'utilise le modèle généré que j'ai créé ensuite dans le navigateur.
Drew : Quels sont les outils disponibles pour faire cela avec JavaScript ? Vous avez mentionné TensorFlow JS mais qu'est-ce que c'est, où est-ce ? Cela vient-il de Google ?
Charlie : Oui. Au début, Google avait l'outil TensorFlow en Python et maintenant, au cours des dernières années, peut-être quelques années, peut-être un peu plus, ils ont créé la version JavaScript, donc cela a tendance à fonctionner avec JS. Mais il y a aussi ML5 JS qui est un peu une abstraction en plus. Donc, si vous êtes un peu confus ou si TensorFlow JS semble un peu effrayant avec une partie du vocabulaire qu'ils utilisent dans leur documentation, vous pouvez utiliser ML5 JS qui a la plupart des mêmes fonctionnalités, mais disons que l'API ou la syntaxe est un peu plus convivial pour les débutants.
Charlie : Vous pouvez commencer par ML5, voir si vous aimez l'apprentissage automatique ou si vous pensez à une application intéressante, puis si vous avez peut-être des bloqueurs dans ML5 ou si le framework n'a pas certaines choses que vous voulez faire, vous pouvez ensuite passer à TensorFlow JS si vous le souhaitez. Et si vous n'êtes vraiment pas intéressé par l'écriture de votre propre code mais que vous voulez simplement utiliser des outils qui existent déjà, il existe des API d'Amazon, Google et Microsoft pour faire également de la reconnaissance d'image ou de la reconnaissance vocale. Donc, si vous êtes plus intéressé à voir ce qu'il peut faire, mais que vous ne voulez pas passer trop de temps à écrire le code, vous pouvez envoyer un ping à certaines API et essayer également certains de leurs outils.
Drew : C'est assez intéressant. Donc, vous pourriez peut-être utiliser le navigateur pour capter les entrées d'une webcam ou d'un microphone ou autre, puis envoyer cela à Amazon, Microsoft ou qui que ce soit, puis les laisser faire le travail acharné ?
Charlie : Ouais.
Drew : Et puis, vous ne faites que profiter des résultats.
Charlie : Exactement.
Drew : Cela semble être une façon agréable et tentante de commencer avec les idées. Cela sonne bien, mais à quels problèmes pouvons-nous appliquer cela dans le front-end ? Nous avons parlé de quelques petites choses, mais y a-t-il d'autres façons d'utiliser cela ?
Charlie : Il y a plusieurs façons. Si je commence par la classification des images, oui vous pourriez. Vous pouvez utiliser des images du Web ou de la webcam de votre téléphone. Si vous utilisez simplement votre site Web sur votre téléphone et que vous pouvez prendre des photos et reconnaître des objets, et que ce soit le cas… Une petite chose que j'ai construite concernait le recyclage, où si je ne sais pas vraiment où mettre certains objets dans quelle poubelle, nous avoir la poubelle jaune, la verte, ça dépend des pays. Ils ont des couleurs différentes, mais parfois je ne suis pas vraiment doué pour savoir où jeter les choses afin que vous puissiez construire de petits outils comme celui-ci qui, en direct, peuvent reconnaître deux objets devant vous, puis les classer et vous pouvez construire certaines choses comme ce.
Charlie : Sinon, vous avez une classification de texte où plus tôt cette année, j'ai utilisé l'un des modèles TensorFlow GS pour examiner les commentaires écrits, les problèmes GitHub et les relations publiques GitHub pour ensuite classer et dire : "Hé, si c'est un commentaire toxique, alors vous avez un petit bot qui dit : « Hey, peut-être que tu n'aurais pas dû écrire ça » ou « Attention, c'est un peu toxique. Nous voulons que cet espace soit sûr. » » Vous pouvez donc utiliser une classification de texte comme celle-là.
Charlie : Il y a une classification sonore si vous voulez, où quand Apple a sorti sa nouvelle montre, OS, ils avaient quelque chose pour reconnaître le bruit de l'eau courante, pour dire aux gens, de se laver les mains pendant 20 secondes avec la pandémie COVID, mais vous pouvez le faire cela aussi en JavaScript. Et que la chose qui était vraiment intéressante, je regardais certaines des vidéos et je me disais: "Oh, je sais comment faire ça en JavaScript."
Charlie : Et j'ai construit un petit prototype. Je ne sais pas s'il fonctionne sur la montre Apple. Peut-être. Je n'en ai pas, mais je sais qu'il fonctionne sur mon téléphone et mon ordinateur portable. Et puis cela peut aussi donner des idées à d'autres personnes, comme un de mes amis, Ramon Huidobro, @hola_soy_milk sur Twitter. Il a participé à de nombreuses conférences en ligne cette année. Et l'un de ses problèmes est que lorsqu'il applaudit pour applaudir quelqu'un, il n'a pas non plus le temps d'ajouter l'emoji clap sur le chat. Et ce qu'il voulait faire, c'est écouter le son de ses applaudissements et cela enverrait automatiquement des émojis d'applaudissements dans le chat.
Charlie : Et ce sont des petites choses comme celle-ci qui, si vous voulez peut-être une application vraiment plus utile dans votre travail quotidien, concernent la prélecture prédictive. Cela utilise également l'apprentissage automatique dans le front-end où l'on regarde les analyses de votre site Web. Donc, quelles pages sont généralement consultées après quoi, et des choses comme ça. Vous pouvez préextraire les ressources à l'avance en fonction de la page la plus susceptible d'être visitée par la suite. C'est quelque chose que j'ai voulu approfondir toute cette année, mais je n'avais pas le temps, mais cela permet de vraiment améliorer les performances et l'UX de votre page. Et vous ne demandez pas de ressources dont vous n'aurez pas besoin, donc cela peut vraiment s'améliorer, et c'est aussi une application de l'apprentissage automatique.
Charlie : Vous pouvez donc faire des choses amusantes, ou vous pouvez faire des choses plus utiles, mais il n'y a pas de mauvaise application, il peut y avoir de mauvaises applications. Je le reprends, mais je dis simplement que si vous vous lancez vraiment, il n'y a rien de mal à commencer par quelque chose d'amusant, puis je peux proposer quelques idées de quelque chose que vous pouvez faire au travail comme bien.
Drew : Je suppose que la chose vraiment utile ici est de savoir que ces choses sont possibles. Et en fait, juste des façons créatives de résoudre des problèmes que nous pouvons faire par nous-mêmes. Traditionnellement, nous construisions des choses en modérant le contenu soumis par les utilisateurs, et c'était assez primitif et nous devions essentiellement faire en sorte que des êtres humains examinent des choses et prennent des décisions à ce sujet. Mais avec l'accès à l'apprentissage automatique, dans cet exemple, nous pourrions en transmettre davantage, puis demander aux humains d'examiner les cas extrêmes, par exemple, les choses qui n'avaient pas de correspondance convaincante.
Drew : Bien sûr, cela prendra un peu de temps avant de développer cette chose et de la mettre en place, mais vous pensez ensuite aux économies réalisées en n'ayant pas d'êtres humains qui vérifient manuellement les choses. Pour quelles choses pouvez-vous voir cela être utilisé à l'avenir à mesure que la technologie s'améliore ?
Charlie : Pour moi, peut-être à l'avenir, je pense qu'à mesure que les modèles deviennent plus petits à charger et qu'ils deviennent plus performants, nous améliorons probablement les ensembles de données avec lesquels ils sont entraînés. J'espère pouvoir voir des outils plus utiles. Je veux dire, personnellement, je suis intéressé par ces minuscules modèles d'apprentissage automatique qui peuvent fonctionner sur des microcontrôleurs pour créer des choses. Mais si nous restons plus dans le monde frontal, j'espère peut-être une meilleure reconnaissance vocale car j'ai l'impression que nous sommes habitués à naviguer sur le Web avec un pavé tactile ou un clavier, mais pour le moment, il y a encore une reconnaissance vocale, mais ce n'est pas toujours super précis, ou ce n'est pas précis avec les accents, par exemple. Et j'espère qu'au fur et à mesure que nous développons de meilleurs modèles, les petites personnes n'auront pas si peur de l'ajouter à leur site Web, car cela n'aura pas un impact si négatif sur les performances.
Charlie : Je suis intéressé par l'utilisation de l'apprentissage automatique dans des choses comme la prélecture prédictive afin que nous puissions créer des sites Web plus intelligents qui améliorent l'expérience sur un spectre, car pour les utilisateurs, c'est mieux parce que la page va se charger plus rapidement, donc les performances en général de votre site, c'est mieux. Mais disons aussi que si nous pensons à la durabilité, ne pas demander de ressources inutiles contribue également à l'empreinte carbone de votre site Web. Mais il y a aussi l'empreinte carbone des modèles d'apprentissage automatique. Ce n'est pas très bon. Alors peut-être n'en parlons pas. Je pense que pour l'avenir, j'espère juste avoir des modèles qui sont peut-être plus performants ou plus petits afin que les gens soient plus susceptibles de l'essayer, car disons qu'il y aura moins de blocages pour que les gens entrent dans ce , mais voyons.
Drew : Existe-t-il des limites et des contraintes connues dont nous devrions être conscients avant de nous lancer dans un projet d'apprentissage automatique ?
Charlie : Ouais. Il y a. Je pense que peu importe si vous le faites en JavaScript ou en Python, il y a des limites. Je pense que si vous voulez construire quelque chose, qui est très personnalisé, pour lequel il n'y a pas de modèle pré-formé, l'une des limites est que vous pourriez avoir besoin de beaucoup de données et que tout le monde n'en a pas. So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.
Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.
Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.
Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.
Drew : Oui. I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?
Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.
Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.
Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.
Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.
Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?
Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.
Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.
Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.
Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.
Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?
Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.
Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.
Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.
Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?
Charlie : N'oubliez pas de vous amuser. Nous avons beaucoup parlé aujourd'hui de choses amusantes, puis de choses pratiques, mais si vous êtes prêt à vous pencher là-dessus, n'oubliez pas de vous amuser, peu importe ce que vous décidez de construire.