Fermer

janvier 12, 2021

Qu'estce que l'apprentissage automatique?


Dans cet épisode, nous parlons de Machine Learning. À quel type de tâches pouvons-nous le mettre dans un contexte de développement Web? Drew McLellan s'entretient avec l'expert Charlie Gerard pour le savoir.

Dans cet épisode, nous parlons de l'apprentissage automatique. À quel type de tâches pouvons-nous le mettre dans un contexte de développement Web? J'ai parlé avec l'expert Charlie Gerard pour le savoir.

Afficher les notes

Mise à jour hebdomadaire

Transcription

 Photo de Charlie Gerard Drew McLellan: Elle est développeur front-end senior chez Netlify, un développeur Google expert en technologies Web et un conférencier en technologie 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 rédige 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 en front-end, mais a-t-elle une fois pour échapper à la prison en utilisant un fichier métallique. J'avais crocheté en rêve. Mes amis fracassants, soyez les bienvenus, Charlie Gerard. Salut Charlie. Comment allez-vous?

Charlie Gerard: Je fracasse.

Drew: Je voulais vous parler aujourd'hui de l'apprentissage automatique, ce qui peut sembler un peu étrange pour un podcast qui se concentre principalement sur le type de navigateur à la fin du développement Web. J'ai tendance à penser à l'apprentissage automatique comme à quelque chose qui se produit dans des centres de données géants ou des laboratoires avec des personnes en blouse blanche. C’est définitivement une sorte de mot à la mode de nos jours. Qu'est-ce que nous voulons dire par apprentissage automatique?

Charlie: Donc, en général, la définition standard serait de donner aux ordinateurs la possibilité de générer des prédictions sans qu'on leur dise quoi faire. J'espère que cela aura du sens lorsque nous continuerons d'en parler, mais c'est le genre de définition générique de conversation. 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 peuvent ensuite générer des prédictions.

Drew: Ainsi, 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 comment faire

Charlie: Ouais, exactement.

Drew: Cela semble presque un peu effrayant. C'est en quelque sorte à la limite de ce côté de l'intelligence artificielle. Avez-vous besoin d'être un passionné de mathématiques ou un data scientist pour ce faire? Ou y a-t-il des trucs comme des algorithmes établis et des choses sur lesquelles vous pouvez faire appel pour commencer?

Charlie: Ouais. Heureusement, vous n’avez pas besoin d’être un passionné de mathématiques ou un data scientist. Sinon, je ne parlerais certainement pas de cela. Mais il existe des algorithmes déjà élaboré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 ne le faites pas. Je n'ai pas besoin de savoir comment cette API a été mise en œuvre 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 consulter le code source de votre navigateur préféré pour savoir comment il 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 faire cela.

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 simplement du CSS et le navigateur s'en occupe.

Charlie: Ouais. Lorsque vous commencez, c’est surtout quelque chose comme ça.

Drew: C’est bien. C'est plutôt mon niveau de science des données.

Charlie: Moi aussi.

Drew: Alors, quels sont les types de problèmes auxquels vous pouvez confronter l'apprentissage automatique? Pour quel genre de choses est-ce bon?

Charlie: Cela dépend de ce que vous voulez faire en premier lieu, car lorsque vous voulez construire une certaine chose, je vous conseille de penser d'abord au type de problème que vous souhaitez apprendre et qui vous aidera ensuite à choisir un algorithme que vous pourrez utiliser pour résoudre ou trouver une solution à votre problème. Donc en général, je commencerais par penser 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'y aille en cela, il y a l'apprentissage supervisé, l'apprentissage non supervisé et l'apprentissage par renforcement. Vous en avez aussi beaucoup supervisé, mais pour être honnête, je n'en sais pas grand-chose car j'ai pu construire mes projets avec les trois premiers.

Drew: Supervisé, non supervisé et le renforcement, avez-vous 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 jeu de données est constitué d'entités et d'étiquettes et que vous le transmettez à 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, au fait, 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 pièces et y a-t-il un jardin et dans quel quartier se trouve-t-il? Et des choses comme ça.

Charlie: Ce sont les fonctionnalités 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 apprenez en quelque sorte la corrélation entre les caractéristiques de votre maison et les prix du marché, pour ensuite obtenir les caractéristiques de votre maison et être en mesure de générer un prix à partir de cela. Donc, la chose la plus importante est dans l'apprentissage supervisé, vous avez un tas de fonctionnalités et une étiquette aussi, donc vous êtes en mesure d'établir une corrélation entre les deux.

Drew: Vous le feriez, vous nourririez 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 les chambres et ce que vous avez, 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 de l’apprentissage automatique, c’est que vous pouvez avoir de nombreuses 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 en fait aucune corrélation avec le prix, mais vous pouvez donner un tas de fonctionnalités et le modèle lui-même trouvera une corrélation entre les deux. Vous pouvez ensuite modifier votre jeu 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 alimentez votre ensemble de données à un modèle, vous n'aurez pas une prédiction parfaite la première fois. Habituellement, vous modifiez plusieurs choses différentes et vous voyez. Vous le modifiez en quelque sorte jusqu'à ce qu'il aboutisse à une prédiction que vous pensez assez précise.

Drew: Et une fois que ce modèle est créé, ou dites que vous l'avez créé en utilisant les données d'une ville, pourriez-vous le prendre et le nourrir… auriez-vous besoin de lui fournir des données d'une autre ville? Seriez-vous en mesure de le récupérer et de l'utiliser ailleurs une fois la formation terminée ou est-ce 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 des colonnes différentes, 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 car les prix des maisons à Paris sont différents d'un petite ville d'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. Le modèle est donc 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, oui?

Charlie: Oui, c'est exactement ça. C’est un modèle, donc un peu comme une fonction à laquelle vous allez alimenter de nouvelles entrées que vous n’avez jamais vues auparavant, mais en fonction de ce qu’il a appris lors de l’étape de formation. il serait capable de produire une prédiction.

Drew: Donc, l'apprentissage supervisé, puis il fait ce modèle prédictif à partir d'étiquettes sur des entités. Qu'est-ce que l'apprentissage non supervisé?

Charlie: Donc, non supervisé, c'est un peu le même concept, mais vous supprimez 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 qui vous entourent, 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 ce qu’est un prix.

Charlie: Donc, sans supervision, c’est plus quand vous avez un ensemble de données et que vous n’avez que des fonctionnalités à ce sujet. Vous pouvez générer plus de tendances ou de groupes de choses ensemble. Vous n’utiliserez pas l’apprentissage non supervisé si vous voulez un résultat particulier, si vous avez une certaine question, comme "Quel est le prix de ceci?" Ce n'est pas une très bonne utilisation de non supervisé, mais c'est plus, si vous voulez regrouper des entités, cela peut être des personnes ou des choses comme ça.

Charlie: Donc, généralement, un cas d'utilisation pour cela est des recommandations comme Amazon des recommandations ou des recommandations Spotify, comme «Les gens comme vous écoutent aussi ça», et c'est plutôt là où se trouvent les fonctionnalités dans ce cas… eh bien, ils ont des données sur vous, donc ils savent ce que vous écoutez, quel pays vous êtes habituellement, ou combien de fois par jour écoutez-vous quelque chose? Ainsi, en utilisant ces fonctionnalités sur les personnes, ils peuvent ensuite vous mettre dans le même cluster 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 annoncer ou quoi recommander que vous devriez écouter en fonction de personnes comme vous. Donc, c'est plus ce genre de problèmes.

Drew: D'accord, donc tout cela a beaucoup plus de sens pour moi maintenant en tant que développeur Web, parce que ces types d'utilisations dont nous avons parlé, la tarification interne et recommandations et diffusion d'annonces et autres, en fin de compte, ce sont toutes sortes de choses que nous devons traiter et de fonctionnalités que nous pourrions vouloir intégrer dans un site ou un produit, ou autre. Nous avons donc les différents types d’apprentissage basés sur le sujet que nous cherchons à prévoir. Y a-t-il d'autres types d'applications avec lesquelles nous pouvons aussi mettre cela? Y a-t-il une sorte de bons exemples que les gens ont créés et qui pourraient utiliser cela?

Charlie: Ouais. Il y a tellement d'exemples. C’est pourquoi, lorsque 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 si excitant, mais vous pouvez en fait faire beaucoup plus. Il y a de très bons exemples. Je pense que le premier que j'ai vu concernait des textes d'art générés dynamiquement pour les images. Alors 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 réellement des tonnes d'images, et au lieu de le faire manuellement, vous pouvez nourrir chaque image vers un algorithme d'apprentissage automatique, et cela générerait un texte d'art qui correspondrait à l'objet 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 votre temps. construction de l'application.

Charlie: Et vous rendriez toujours votre site Web accessible en ayant du texte d'art 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 vu lorsque j’ai commencé dans ce domaine, mais vous avez également un prototype de filtrage non sécuritaire pour le contenu professionnel. Et je pensais que ce serait plutôt bien 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 simplement cacher les images ou remplacer ces images par des pandas, si vous voulez ou quelque chose comme ça. Mais c'est ce genre d'application où vous pouvez utiliser l'apprentissage automatique pour faire des choses automatiquement à votre place afin que vous n'ayez pas à vous soucier de certaines tâches, ou vous pouvez simplement utiliser la puissance de votre cerveau pour faire d'autres choses.

Charlie : Mais il y a 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 une simple reconnaissance et pouvoir interagir avec différentes technologies, mais d'une nouvelle manière. Cela peut donc être 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 à regarder le contenu de l'image et à analyser le contenu de images utilisant l'apprentissage automatique, ce qui est assez intéressant. Je suppose que c'est le genre de fonctionnalité de Facebook, si quelqu'un publie une photo qui, à son avis, pourrait être sanglante ou montrer une blessure ou quelque chose du genre, et que cela la brouille, puis il vous suffit de 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 un tâche sans fin.

Charlie: Ce n'est pas non plus un excellent travail.

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 dans cela, que même moi, en tant que développeur Web, devions m'impliquer, juste en regardant toutes ces images en disant: «Oui, non, oui, non.»

Charlie: Je l'ai fait un peu aussi. J'aurais aimé qu'à cette époque il y ait eu l'apprentissage automatique, juste un petit outil utilitaire juste pour le faire pour moi, et maintenant il est là. Alors c’est plutôt cool.

Drew: Ouais, c’est vraiment super. 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 que…

Charlie: Oui, 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 que vous contrôleriez peut-être la souris comme ceci, ou que vous regarderiez les coordonnées de votre main et de l'écran, et que vous suivriez la souris. Vous pouvez vraiment faire ce que vous voulez. Vous pourriez peut-être avoir la 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. Donc, il reconnaîtrait que lorsque j'incline la tête vers le bas, alors ça défile vers le bas, et quand je monte, ça 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 êtes juste manger devant votre ordinateur et vous lisez les actualités et je ne veux pas que mon clavier soit sale, alors je peux simplement incliner la tête, mais j'espère aussi, pour l'accessibilité, pourrait aider les gens à naviguer sur certaines pages Web ou des choses comme ça. Il y a beaucoup d'outils disponibles et il s'agit de l'idée que vous pouvez arriver à observer la situation autour de vous, et comment pourriez-vous résoudre certains de ces problèmes liés à l'utilisation de l'apprentissage automatique?

Drew: Pour l'apprentissage automatique, nous pense souvent aux langages, Python. Je pense que c’est là qu’une grande partie du 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 espérer faire? Je veux dire, 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 prototypes, mais je pense que cela dépend de la situation dans laquelle vous vous trouvez au travail. Il existe des moyens d'implémenter l'apprentissage automatique en tant que développeur dans votre travail quotidien. Mais ce que j'aime vraiment à propos de JavaScript, c'est le fait que si vous êtes déjà un développeur front-end, vous n'avez pas à 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, lorsque vous apprenez ce genre de choses, vous devez en quelque sorte commencer à votre rythme, si ce n'est pas votre quotidien le travail et le temps de chacun sont précieux et 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, c'est que vous pouvez commencer par construire un petit prototype pour convaincre les gens que il y a peut-être une idée qui doit être étudiée, et en étant capable de lancer quelque chose rapidement en JavaScript, vous pouvez valider que votre idée est juste.

Charlie: Ensuite, soit vous pouvez obtenir l'adhésion de la direction à passer plus de temps ou plus d'argent, ou vous pouvez ensuite le donner aux développeurs Python, si vous souhaitez 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 il existe de plus en plus de cadres et d'applications d'apprentissage automatique. En JavaScript, ce n'est pas seulement sur une page Web que nous pouvons ajouter du machine learning. Comme je le disais auparavant, 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 avez déjà sachez que vous avez en fait accès à un énorme é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 la réelle puissance de l'apprentissage automatique en JavaScript. Et à mesure que cela s'améliore, 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. [19659008] 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 aux choses, comment diable pouvez-vous commencer à faire ce genre de tâches?

Charlie: Il y a pour le moment, au moins avec TensorFlow.JS, il y a trois choses que vous pouvez faire avec le cadre. Et disons que le plus simple consiste à importer un modèle pré-entraîné 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 de 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'image qui ont été formé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 gens, 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 pour moi, c'est un bonne façon de commencer. J'utilise toujours des modèles pré-entraînés pour beaucoup de mes expériences, car c'est aussi, pourquoi réinventeriez-vous la roue si elle est déjà là? Utilisons simplement les outils fournis. Ensuite, lorsque vous voulez aller plus loin, peut-être un peu plus loin, vous pouvez faire ce qu'on appelle l'apprentissage par transfert, lorsque vous reconvertissez un modèle important. Vous utilisez donc toujours l'un des modèles pré-entraîné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'image où vous avez des personnes différentes, alors vous voulez peut-être faire une classification gestuelle. Si votre modèle, par exemple, est formé avec des personnes qui ont toujours, je ne sais pas, leur main droite ou quelque chose du genre, 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 entraîné pour reconnaître la main droite, mais ensuite vous ajouteriez votre propre échantillon et vous pourrez 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 recyclé qui est très bon pour reconnaître ces deux gestes que vous pouvez ensuite utiliser dans, dans votre application.

Charlie: C'est comme d'habitude la deuxième étape. Et puis, une troisième étape un peu plus complexe consiste à tout faire dans le navigateur. Donc, vous écrivez votre propre modèle à partir de zéro et vous l'entraînez dans le navigateur et vous vraiment entraînez et 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 d'un modèle en cours d'entraînement 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 modifiez .

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 est l'endroit où personnellement j'ai vu. Je me suis amusé avec ça.

Drew: 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 entraîné, ou peut-être ajoute un petit peu, il fait un peu de recyclage, mais en général, ce modèle va être établi avant qu'il ne soit 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 l'entraîner 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 il 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 outils sont disponibles pour faire cela avec JavaScript? Vous avez mentionné TensorFlow JS mais qu'est-ce que c'est, où est-ce? Est-ce que ça vient de Google?

Charlie: Oui. Au début, Google avait l'outil TensorFlow en Python et maintenant, depuis quelques années peut-être, peut-être un peu plus, ils ont créé la version JavaScript, donc cela a tendance à suivre 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 avec ML5, voir si vous aimez l'apprentissage automatique, ou si vous pensez à une application sympa, et ensuite si vous avez peut-être des bloqueurs dans ML5 ou dans le framework n'a pas certaines choses à faire, vous pouvez ensuite passer à TensorFlow JS si vous le souhaitez. Et si vous n'êtes vraiment pas intéressé à écrire votre propre code mais que vous souhaitez simplement utiliser des outils qui sont déjà là, il existe des API d'Amazon, Google et Microsoft pour faire 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 certains de leurs outils également.

Drew: C'est assez intéressant. Vous pourriez peut-être utiliser le navigateur pour capturer 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?

Charlie: Ouais.

Drew: Et puis vous bénéficiez simplement des résultats.

Charlie: Exactement.

Drew: Cela semble être une manière 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 de les utiliser?

Charlie: Il existe de nombreuses façons. Si je commence par la classification des images, oui, vous pourriez. Vous pouvez utiliser des images du Web ou de la webcam sur 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 soit faire… Une petite chose que j'ai construite était autour du recyclage, où si je ne sais pas vraiment où mettre certains objets dans quelle poubelle, nous ayez le bac jaune, le vert, cela 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, vivre peut reconnaître deux objets devant vous, puis les classer et vous pouvez construire certaines choses comme

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 sur, les problèmes GitHub et les PR GitHub pour ensuite les classer et dire: «Hé, si c'est un commentaire toxique, alors vous avez un petit robot qui dit: «Hé, peut-être que vous n'auriez pas dû écrire ceci» ou «Attention, c'est un peu toxique. Nous voulons que ce soit un espace sûr. "" Vous pouvez donc utiliser la classification de texte comme ça.

Charlie: Il y a une classification sonore si vous voulez, où quand Apple a sorti sa nouvelle montre, OS, ils avaient quelque chose à 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 aussi le faire en JavaScript. Et ce truc qui était vraiment intéressant, je regardais quelques-unes des vidéos et je me suis dit: "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 également lancer des idées pour d'autres personnes, où un de mes amis, Ramón 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 le temps d'ajouter également les emoji clap sur le chat. Et ce qu'il voulait faire, c'est écouter le son de ses applaudissements et cela enverrait automatiquement des emojis applaudissements dans le chat.

Charlie: Et ce sont de petites choses comme ça si vous voulez peut-être une application vraiment plus utile dans votre travail quotidien consiste en la prélecture prédictive. Cela utilise également l'apprentissage automatique dans le front-end pour analyser les analyses de votre site Web. Alors, 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 après. C’est quelque chose sur lequel j’avais envie de me pencher toute l’année, mais je n’ai pas eu le temps, mais cela vous permet d’améliorer réellement les performances et l’exploitation 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: Donc, vous pouvez 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 juste que si vous vous lancez vraiment dans le jeu, il n'y a rien de mal à commencer par quelque chose d'amusant, et ensuite je peux donner quelques idées de quelque chose que vous pouvez faire au travail en tant que

Drew: Je suppose que la chose vraiment utile ici est de savoir que ces choses sont possibles. Et en fait, des moyens créatifs de résoudre les problèmes que nous pouvons résoudre seuls. Traditionnellement, nous construisions des choses en modérant le contenu soumis par les utilisateurs, et c'était assez primitif et nous avons essentiellement dû demander aux êtres humains de regarder les choses et de prendre des décisions à leur sujet. Mais avec l'accès à l'apprentissage automatique, dans cet exemple, nous pourrions en remettre davantage et demander aux humains de regarder les cas extrêmes, par exemple, des choses qui n'avaient pas de correspondance convaincante.

Drew: Bien sûr, cela va être alors, c'est un peu de temps à l'avance pour développer cette chose et la mettre en place, mais ensuite vous pensez aux économies de ne pas avoir des êtres humains qui vérifient manuellement les choses. What things can you see this being put to use for in the future as the technology improves?

Charlie: To me, maybe in the future, I think as models get smaller to load and they get more performant and we probably improve the datasets that they’re trained with. I’m hoping to be able to see tools that are more helpful. I mean, personally, I’m interested in that tiny machine learning models that can run on microcontrollers to build stuff. But if we stay in more of the front-end world, I’m hoping about maybe better voice recognition because I feel like we’re used to navigating the web with a track pad or a keyboard, but at the moment, there is still a voice recognition, but it’s not always super accurate, or it’s not accurate with accents, for example. And I’m hoping that as we develop better models that smaller people won’t be so scared to add it to their website because it won’t impact the performance that badly.

Charlie: I’m interested in using machine learning in stuff like predictive prefetching so that we can build smarter websites that improve the experience on a spectrum, because for the users, it’s better because the page is going to load faster, therefore performance in general of your site, it’s better. But also let’s say if we think about sustainability, not requesting useless resources is helping as well, the carbon footprint of your website. But then there’s also the carbon footprint of machine learning models. That’s not very good. So maybe let’s not talk about this. I would think for the future, I’m just hoping to have models that are maybe more performant or smaller so that people will be more likely to give it a try, because let’s say there’ll be less blockers for people to go into this, but let’s see.

Drew: Are there known limitations and constraints that we should be aware of before embarking on a machine learning project?

Charlie: Yeah. There are. I think, no matter if you’re doing it in JavaScript or Python, there are limits. I think if you do want to build something, that’s very customed, that there is no pre-trained model for, one of the limits is that you might need quite a lot of data and not everybody has that. 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: Yes. 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: Remember to have some fun. We talked a lot today about fun stuff, and then practical stuff, but if you’re willing to look into this, remember to have some fun, no matter what you decide to build.

Smashing Editorial(il)




Source link