Smashing Podcast Episodio 33 con Charlie Gerard: ¿Qué es el aprendizaje automático?

Publicado: 2022-03-10
Resumen rápido ↬ En este episodio, estamos hablando de Machine Learning. ¿A qué tipo de tareas podemos ponerlo dentro de un contexto de desarrollo web? Drew McLellan habla con el experto Charlie Gerard para averiguarlo.

En este episodio, estamos hablando de Machine Learning. ¿A qué tipo de tareas podemos ponerlo dentro de un contexto de desarrollo web? Hablé con el experto Charlie Gerard para averiguarlo.

Mostrar notas

  • Aprendizaje automático práctico en JavaScript: TensorFlow.js para desarrolladores web
  • Charly en Twitter
  • sitio personal de charlie

Actualización semanal

  • Una introducción práctica a la inyección de dependencia
    escrito por jamie corkhill
  • Hacia una Web sin publicidad: diversificando la economía en línea
    escrito por Frederick O'Brien
  • ¿Debería la web exponer las capacidades del hardware?
    escrito por Noam Rosenthal
  • Cómo ganar más dinero vendiendo aplicaciones de Shopify en 2021
    escrito por Suzanne Scacca
  • Primeros pasos con el paquete GetX en aplicaciones Flutter
    escrito por Kelvin Omereshone

Transcripción

Foto de Charlie Gerard Drew McLellan: es desarrolladora front-end sénior en Netlify, desarrolladora de Google experta en tecnologías web y oradora tecnológica de Mozilla. En su tiempo libre, explora el campo de la interacción humano-computadora y construye prototipos interactivos utilizando hardware, aprendizaje automático y codificación creativa. Ella habla regularmente en conferencias y escribe publicaciones de blog para compartir las cosas que aprende. Y, más recientemente, es el autor del libro Aprendizaje automático práctico en JavaScript para Apress.

Drew: Entonces sabemos que es una experta en front-end, pero una vez escapó de la cárcel usando una lima de metal que había tejido en sueños. Mis grandes amigos, por favor denle la bienvenida a Charlie Gerard. hola charlie ¿Cómo estás?

Charlie Gerard: Estoy genial.

Drew: Quería hablarles hoy sobre el aprendizaje automático, que puede parecer un tema un poco extraño para un podcast que se enfoca principalmente en el tipo de navegador final del desarrollo web. Tiendo a pensar en el aprendizaje automático como algo que sucede en centros de datos gigantes o laboratorios con personas con batas blancas. Definitivamente es una especie de palabra de moda en estos días. ¿A qué diablos nos referimos realmente cuando decimos aprendizaje automático?

Charlie: Entonces, en general, la definición estándar sería dar a las computadoras la capacidad de generar predicciones sin que se les diga qué hacer. Con suerte, esto tendrá sentido cuando sigamos hablando de ello, pero ese es el tipo de definición de conversación genérica. Realmente no le dices a los algoritmos o modelos que vayan y busquen ciertas cosas. Aprenden a través de los datos que les das y luego pueden generar predicciones.

Drew: Entonces, en lugar de tener que codificar específicamente para ciertas circunstancias, ¿creas un caso genérico en el que el software puede aprender cómo hacer eso por sí mismo?

Charly: Sí, exactamente.

Drew: Eso suena casi un poco espeluznante. Está un poco al borde del lado de la inteligencia artificial. ¿Necesitas ser un empollón de las matemáticas o un científico de datos para hacer esto? ¿O hay cosas por ahí como algoritmos establecidos y cosas a las que puede llamar para comenzar?

Charly: si. Así que afortunadamente no necesitas ser un empollón de las matemáticas o un científico de datos. De lo contrario, definitivamente no estaría hablando de esto. Pero hay algoritmos que ya se han descubierto y herramientas ya disponibles que le permiten usar estos algoritmos sin tener que escribir todo desde cero. Entonces, si usamos el ecosistema front-end como comparación, puede usar las API web, como el navegador, para obtener los medios del usuario cuando desee tener acceso a la cámara web o al micrófono.

Charlie: Y no tienes que saber cómo se implementó realmente esa API bajo el capó. Lo que importa es que sepas para qué sirve esta API y cómo usarla, si quieres. Luego, más adelante, puede ir y buscar en el código fuente de su navegador favorito para saber cómo funciona realmente, pero en realidad no es útil en primer lugar. Y puede ser útil si desea escribir su propio algoritmo más adelante. Pero para ser realmente honesto, es muy poco probable que quieras hacer esto.

Drew: Está bien. Es un poco como la forma en que puedes escribir CSS para colocar un elemento en una página. No le importa cómo el navegador realmente está haciendo eso. Simplemente escribe algo de CSS y el navegador se encarga de eso.

Charly: si. Cuando empiezas, es sobre todo algo así.

Drew: Eso es bueno. Eso es más parecido a mi nivel de ciencia de datos.

Charly: Yo también.

Drew: Entonces, ¿cuáles son los tipos de problemas a los que puede aplicar el aprendizaje automático? ¿Para qué tipo de cosas es bueno?

Charlie: Depende de lo que quieras hacer en primer lugar, porque cuando quieras construir algo determinado, te aconsejo que primero pienses en el tipo de problema que quieres aprender que luego te ayudará a elegir un algoritmo que puede usar para arreglar o encontrar una solución a su problema. Entonces, en general, comenzaría pensando en el tipo de problema que estoy tratando de resolver, y hay tres principales. Creo que probablemente hay un poco más, pero en general, por lo que he sido entrenado para hacer y lo que he leído, hay tres principales que se mencionan.

Charlie: Si quieres que entre en esto, hay aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por refuerzo. También tienes muchos supervisados, pero para ser honesto, realmente no sé mucho al respecto porque he podido construir mis proyectos con los tres primeros.

Drew: Supervisado, sin supervisión y refuerzo, ¿dijiste?

Charlie: Sí, aprendizaje por refuerzo.

Drew: Está bien. Entonces, ¿qué es el aprendizaje supervisado? ¿Puede darnos un ejemplo de lo que eso significa?

Charlie: Aprendizaje supervisado, es cuando tu conjunto de datos está hecho de características y etiquetas y lo alimentas a un algoritmo. Entonces, si tomamos un ejemplo con el que esperamos que la mayoría de la gente pueda relacionarse, es, si tiene una casa y quiere venderla, y quiere saber a qué precio va a vender su casa o su coche, en realidad, por cierto, sería lo mismo. Y usaría un conjunto de datos de casas en el mismo entorno o el mismo tipo de casas y sabiendo su precio en el mercado, podría usar las características de su propia casa; Entonces, ¿cuántas habitaciones tiene jardín y en qué barrio está? Y cosas asi.

Charlie: Estas son las características y la etiqueta sería el precio, y al usar todos estos conjuntos de datos de casas que ya te rodean, puedes usar un algoritmo de aprendizaje automático que aprenderá la correlación entre las características de tu casa. y los precios en el mercado, para luego obtener las características de tu casa y poder generar un precio a partir de eso. Entonces, lo más importante es el aprendizaje supervisado, tiene un montón de características y una etiqueta también, por lo que puede establecer una correlación entre los dos.

Drew: Lo haría, alimentaría el modelo con un amplio conjunto de datos sobre casas en este ejemplo, donde conoce su precio y luego conoce todas estas características sobre ellas. Diga dormitorios y lo que tenga, como pies cuadrados, y supongo que la ubicación sería otro tipo de cosas que podrían tenerse en cuenta.

Charly: si. Ese es uno de los problemas con el aprendizaje automático, es que puedes tener muchas funciones y algunas de ellas no serán tan eficientes como otras. Entonces, podría tener, por ejemplo, el color de su casa, en realidad podría no tener correlación con el precio, pero puede proporcionar un montón de características y el modelo encontrará una correlación entre los dos. Luego puede modificar su conjunto de datos, si lo desea, y eliminar el color, o se da cuenta de que el tamaño del jardín no importa o cosas por el estilo.

Charlie: Entonces, en general, incluso si alimenta su conjunto de datos a un modelo, no tendrá una predicción perfecta la primera vez. Por lo general, ajustas algunas cosas diferentes y ves. Lo modificas hasta que llega a una predicción que crees que es bastante precisa.

Drew: Y luego, una vez que se crea ese modelo, o digamos que lo creaste usando datos de una ciudad, ¿podrías tomar eso y alimentarlo? ¿Necesitarías alimentarlo con datos de otra ciudad? ¿Sería capaz de recogerlo y usarlo en otro lugar una vez que se haya realizado la capacitación o es específico para ese conjunto de datos o cómo funcionaría?

Charlie: Creo que sería específico para el conjunto de datos. Entonces significa que puede crear otro conjunto de datos con el mismo formato, digamos. Si tiene una hoja de cálculo de Excel con diferentes columnas, podría mantener la misma etiqueta y características, pero tendría que reemplazarla con los valores de esa ciudad. Pero, en general, significa que recopilar el conjunto de datos también puede llevar mucho tiempo, pero si ya sabe lo que hizo para la ciudad de París, por ejemplo, y que la estructura de su conjunto de datos es la misma, pero reemplaza los valores, es un poco más rápido y puede regenerar el modelo.

Charlie: No deberías reutilizar el mismo modelo, si tus datos son diferentes porque los precios de las casas en París son diferentes a los de una ciudad pequeña en Australia, por ejemplo. Por lo tanto, no querría tener datos incorrectos porque el núcleo de su conjunto de datos al principio no era exactamente el mismo.

Drew: Hablamos mucho sobre tipos de modelos con aprendizaje automático. Entonces, el modelo es como el resultado final de todo el análisis del conjunto de datos. Y luego se usa para hacer predicciones posteriores. Ese es el modelo, ¿sí?

Charlie: Sí, es exactamente eso. Es un modelo, por lo que es un poco como una función a la que vas a alimentar nuevas entradas que nunca antes había visto, pero basadas en lo que aprendió en el paso de entrenamiento. sería capaz de generar una predicción.

Drew: Aprendizaje supervisado, luego crea este modelo predictivo a partir de etiquetas en características. ¿Qué es el aprendizaje no supervisado?

Charlie: Así que sin supervisión es un poco el mismo concepto, pero eliminas las etiquetas. Entonces, en este caso, puede pensar que nuestro problema de vender una casa no sería realmente un problema de aprendizaje no supervisado, porque si solo conoce las características de las casas que lo rodean, pero no tiene un precio como etiqueta, usted Realmente no puedo predecir un precio. Ni siquiera sabrá cuál es el precio.

Charlie: Así que no supervisado es más cuando tienes un conjunto de datos y solo tienes funciones al respecto. Puede generar más tendencias o grupos de cosas juntas. No usaría el aprendizaje no supervisado si desea un resultado en particular, si tiene una pregunta determinada, como "¿Cuál es el precio de esto?" Ese no es un buen uso de no supervisado, pero es más, si desea agrupar entidades, podrían ser personas o cosas así.

Charlie: Por lo general, un caso de uso para eso son recomendaciones como las recomendaciones de Amazon o las recomendaciones de Spotify, como, "La gente como tú también escucha esto", y se trata más de que las características en este caso serían... bueno, tienen datos sobre ti, para que sepan lo que escuchas, en qué país sueles estar o cuántas veces al día escuchas algo? Entonces, al usar estas características sobre las personas, pueden colocarlo en el mismo grupo o en el mismo tipo de oyentes, o en el mismo tipo de personas que compran ciertas cosas en Amazon. Y utilizando ese tipo de aprendizaje no supervisado, pueden saber qué anunciarte o qué recomendarte que deberías escuchar en función de personas como tú. Así que es más ese tipo de problemas.

Drew: De acuerdo, todo esto tiene mucho más sentido para mí ahora como desarrollador web, porque este tipo de usos de los que hemos hablado, precios de casas y recomendaciones y publicación de anuncios y cosas, al final del día, estos son todo tipo de cosas con las que tenemos que lidiar y características que podríamos querer poner en un sitio o un producto, o lo que sea. Así que tenemos los diferentes tipos de aprendizaje basados ​​en el tema que buscamos predecir. ¿Hay otros tipos de aplicaciones con las que podamos poner esto también? ¿Hay algún tipo de buenos ejemplos que esa gente haya creado que puedan usar esto?

Charly: si. Hay tantos ejemplos. Por eso, cuando hablo de predecir el precio de una casa, quizás no sea algo que te relacione. Tal vez no sea realmente tan emocionante, pero en realidad hay mucho más que puedes hacer. Hay muy buenos ejemplos alrededor. Creo que el primero que vi fue sobre textos de arte generados dinámicamente para imágenes. Entonces, por supuesto, es algo que puede hacer usted mismo cuando agrega una imagen a un sitio.

Charlie: Pero, ¿qué sucede si tiene un sitio que realmente tiene toneladas de imágenes y, en lugar de hacerlo manualmente, puede enviar cada imagen a un algoritmo de aprendizaje automático, y generaría un texto de arte de lo que trata esa imagen, y tal vez el único paso humano sería verificar que esto sea correcto, pero realmente le permitiría enfocar su tiempo en construir la aplicación.

Charlie: Y todavía haría que su sitio web fuera accesible al tener texto de arte para las imágenes, pero sería generado por una máquina. Ese es uno de los ejemplos que vi cuando comencé con esto, pero también tienes un prototipo de filtrado de contenido no seguro para el trabajo. Y estaba pensando que en realidad sería bastante bueno en una extensión de Chrome, podrías tener una extensión de Chrome que cada vez que abras una página web, simplemente verifiques que lo que hay en la página sea contenido seguro.

Charlie: Por ejemplo, si tienes niños que usan tu computadora portátil o cosas por el estilo, puedes ocultar las imágenes o reemplazarlas con pandas, si quieres o algo así. Pero es ese tipo de aplicación en la que puede usar el aprendizaje automático para hacer cosas automáticamente por usted para que no tenga que preocuparse por ciertas tareas, o simplemente puede usar su poder mental para hacer otras cosas.

Charlie: Pero luego hay algo aún más avanzado con un ejemplo de reconocimiento de gestos, usando la cámara web que entonces se comunicaba con Amazon Alexa y reconocimiento de voz y todo eso. Entonces, realmente puede fusionar muchas tecnologías diferentes con voz y cámara web y aprendizaje automático solo para reconocimiento y poder interactuar con diferentes tecnologías, pero de una manera nueva. Así que realmente puede ser bastante divertido.

Drew: Eso es bastante fascinante, porque hemos analizado una especie de análisis de modelos de datos como tales, y ahora estamos pensando en observar el contenido de la imagen y analizar el contenido de las imágenes mediante el aprendizaje automático, lo cual es bastante interesante. Supongo que ese es el tipo de función que tiene Facebook, si alguien publica una imagen que cree que podría ser sangrienta o mostrar una lesión o algo así, y se difumina, y luego solo tienes que hacer clic para revelarla. Ese tipo de cosas, obviamente, Facebook no puede tener equipos de moderadores mirando cada imagen que se sube.

Charlie: Espero que no.

Drew: Eso sería una tarea interminable.

Charlie: Ese tampoco es un gran trabajo.

Drew: Solía ​​trabajar en un sitio web de anuncios gratuitos donde la gente podía publicar anuncios. Y hubo mucha moderación involucrada en eso, en la que incluso yo, como desarrollador web, tuve que involucrarme, simplemente revisando, mirando todas estas imágenes y diciendo: "Sí, no, sí, no".

Charlie: Yo también hice eso un poco. Desearía que en ese momento hubiera habido aprendizaje automático, solo una pequeña herramienta de utilidad para hacer eso por mí, y ahora está ahí. Así que eso es genial.

Drew: Sí, eso es realmente genial. Y es bastante emocionante pensar en la entrada en vivo desde una cámara web y poder analizar eso en tiempo real, para que pueda hacer interacciones basadas en gestos. Es eso…

Charlie: Sí, en realidad usa más clasificación de imágenes, porque su cámara web, una imagen es un conjunto de píxeles, pero luego, a medida que realiza ciertos gestos, puede entrenar a un modelo para que reconozca que su mano derecha está hacia arriba y tal vez usted controlaría el mouse de esta manera, o miraría la coordenada de su mano y la pantalla, y usted seguiría al mouse. Realmente podrías hacer lo que quieras. Tal vez podría tener reconocimiento de color.

Charlie: Puedes hacer cosas muy divertidas. Uno, un prototipo que construí, que en algún momento me di por vencido, pero construí un poco... Quería que fuera una extensión de Chrome, pero no funcionó. Creé una pequeña aplicación de escritorio con Electron. También en JavaScript, donde podía navegar por una página web con solo inclinar la cabeza. Entonces reconocería que cuando inclino mi cabeza hacia abajo, luego se desplaza hacia abajo, y cuando subo, sube. Era solo este tipo de pequeños experimentos en los que pensaba: "Bueno, si luego puedo convertirlo en una extensión de Chrome, podría ser útil para algunas personas".

Charlie: Incluso si solo estás comiendo frente a tu computadora y estás leyendo las noticias y no quiero que mi teclado esté sucio, entonces puedo simplemente inclinar la cabeza, pero también con suerte, por accesibilidad, podría en realidad ayuda a las personas a navegar por ciertas páginas web o cosas por el estilo. Hay muchas herramientas disponibles y se trata de la idea de que se te ocurra observar la situación que te rodea, y ¿cómo podrías resolver algunos de estos problemas usando el aprendizaje automático?

Drew: Para el aprendizaje automático, a menudo pensamos en lenguajes, Python. Creo que ahí es donde parece ocurrir mucho del tipo de desarrollo primero. Pero como desarrolladores web, obviamente nos sentimos más cómodos con JavaScript en general. ¿Es el aprendizaje automático algo que podemos esperar hacer de manera realista? Me refiero a que los pequeños ejemplos divertidos son una cosa, pero ¿es realmente útil para el trabajo real en JavaScript?

Charlie: Bueno, quiero decir, creo que sí, pero sé que la mayoría de las cosas que hago son prototipos, pero creo que entonces depende de la situación en la que te encuentres en el trabajo. Hay formas de implementar el aprendizaje automático como desarrollador en su trabajo diario. Pero lo que realmente me gusta de JavaScript es el hecho de que si ya eres un desarrollador front-end, no tienes que ir y aprender un nuevo ecosistema o un nuevo conjunto de herramientas o una nueva sintaxis, un nuevo idioma. Ya estás en tu entorno en el que trabajas todos los días.

Charlie: Por lo general, cuando aprendes ese tipo de cosas, tienes que empezar con tu propio tiempo, si no es tu trabajo diario y el tiempo de todos es valioso y no tienes mucho. Entonces, si puede eliminar algunas barreras y permanecer en el mismo ecosistema que conoce, entonces creo que es bastante bueno, pero también puede comenzar... el poder para mí de JavaScript es que puede comenzar construyendo un pequeño prototipo para convencer a las personas de que tal vez haya una idea que deba investigarse y, al poder hacer girar algo rápidamente en JavaScript, puede validar que su idea es correcta.

Charlie: Entonces, puede obtener la aceptación del liderazgo para gastar más tiempo o más dinero, o puede dárselo a los desarrolladores de Python, si desea construirlo en Python. Pero para mí, esta capacidad de validar rápidamente una idea es muy importante. Especialmente, tal vez si trabajas para una startup y todo va rápido y eres capaz de demostrar que vale la pena investigar, creo que eso es bastante importante.

Charlie: Y también el hecho de que realmente hay un gran ecosistema de herramientas y cada vez hay más marcos y aplicaciones de aprendizaje automático. En JavaScript, no solo en una página web podemos agregar aprendizaje automático. Como decía antes, puede crear extensiones de Chrome y aplicaciones de escritorio con Electron, y aplicaciones móviles con React Native, y hardware e IoT con marcos como Johnny-Five.

Charlie: Entonces, con el lenguaje que ya conoce, en realidad tiene acceso a un enorme ecosistema de diferentes plataformas en las que puede ejecutar el mismo experimento. Y creo que, para mí, eso es bastante sorprendente. Y ahí es donde veo el verdadero poder de hacer aprendizaje automático en JavaScript. Y a medida que mejora, tal vez realmente pueda integrarlo en las aplicaciones que creamos todos los días.

Drew: JavaScript está en todas partes, ¿no?

charly: si

Drew: Para bien o para mal, está en todas partes. ¿Quién lo hubiera pensado? Esto suena genial, pero también suena como un montón de trabajo. Y pienso en los conjuntos de datos y esas cosas, ¿cómo diablos empiezas a hacer este tipo de tareas?

Charlie: En este momento, al menos con TensorFlow.JS, hay tres cosas que puedes hacer con el marco. Y digamos que el más simple es importar un modelo pre-entrenado existente. Entonces, hay algunos de ellos, hay diferentes modelos que han sido entrenados con diferentes conjuntos de datos, y recomendaría comenzar con esto porque usted puede aprender los conceptos básicos de cómo usar el marco en sí mismo, y lo que puede hacer con estos modelos.

Charlie: Así que tienes ciertos modelos de reconocimiento de imágenes que han sido entrenados con diferentes imágenes. Algunos de ellos son mejores para el reconocimiento de objetos. Algunos de ellos son mejores para el reconocimiento de personas, y al comprender qué modelos usar, podemos tener la libertad de construir lo que quieras en la restricción de ese modelo.

Charlie: Pero creo que para mí, esa es una buena manera de empezar. Todavía uso modelos preentrenados para muchos de mis experimentos porque también, ¿por qué reinventarías la rueda si ya está ahí? Usemos las herramientas que se nos dieron. Luego, cuando quiera ir, tal vez un paso más allá, puede hacer lo que se llama transferencia de aprendizaje, cuando vuelve a capacitar a un modelo importante. Por lo tanto, todavía usa uno de los modelos preentrenados, pero luego tiene la oportunidad de volver a entrenarlo en vivo con sus propias muestras.

Charlie: Por ejemplo, si quisieras usar una clasificación de imágenes donde tienes diferentes personas, entonces quizás quieras hacer una clasificación de gestos. Si tu modelo, por ejemplo, está entrenado con personas que siempre tienen, no sé, la mano derecha hacia arriba o algo así, pero para tu aplicación quieres la mano izquierda, podrías volver a entrenar ese modelo con tus muestras de la izquierda. mano, y luego tendría un modelo que ya está bastante entrenado para reconocer la mano derecha, pero luego agregaría su propia muestra y puede volver a entrenarla bastante rápido en el navegador, dependiendo de la cantidad de nuevos datos de entrada que le proporcione , toma un poco de tiempo, pero en unos segundos tienes un modelo reentrenado que es muy bueno para reconocer estos dos gestos que luego puedes usar en tu aplicación.

Charlie: Entonces ese suele ser el segundo paso. Y luego, un tercer paso que es un poco más complejo es cuando haces todo en el navegador. Así que escribes tu propio modelo desde cero y lo entrenas en el navegador y realmente entrenas, ejecutas y generas el modelo, todo en el navegador. Pero, en general, la única aplicación que he visto para esto es la creación de visualizaciones. Cuando desea visualizar el proceso de entrenamiento de un modelo y la cantidad de pasos que está tomando, cuánto tiempo está tomando, y puede ver que la precisión aumenta o disminuye, según las características que elija y los parámetros que modifique. .

Charlie: Realmente no he jugado con eso porque no he encontrado una aplicación para mí con la que quisiera construir, pero los dos primeros pasos de usar solo el modelo pre-entrenado o volver a entrenarlo con mis propias muestras es donde personalmente he visto. Me he divertido con eso.

Drew: Por lo general, va a ser un caso de crear el modelo de antemano, algo fuera de línea, por así decirlo, y luego el navegador usa ese modelo entrenado, o tal vez le agrega un poco, hace un poco de reentrenamiento, pero en general, ese modelo se va a establecer antes de que se ponga en uso en el navegador del usuario?

Charly: En general, sí. Entonces definitivamente puedes crear tu propio modelo. Si lo hace, no recomendaría entrenarlo en el navegador, pero también puede hacerlo en NodeJS. Si sabes, un poco de NodeJS. Definitivamente he creado mis propios modelos, pero generalmente los ejecuto en NodeJS porque es un poco más eficiente. Y luego uso el modelo generado que creé en el navegador.

Drew: ¿Qué herramientas hay disponibles para hacer esto con JavaScript? Mencionaste TensorFlow JS, pero ¿qué es eso, dónde está eso? ¿Eso es de Google?

charly: si Al principio, Google tenía la herramienta TensorFlow en Python y ahora, en el pasado, tal vez un par de años, tal vez un poco más, hicieron la versión de JavaScript, por lo que tiende a fluir con JS. Pero también está ML5 JS que es un poco una abstracción en la parte superior. Entonces, si está un poco confundido o si TensorFlow JS da un poco de miedo con parte del vocabulario que usan en su documentación, puede usar ML5 JS que tiene la mayoría de las mismas características, pero digamos que la API o la sintaxis es un poco más amigable para principiantes.

Charlie: Puede comenzar con ML5, ver si le gusta el aprendizaje automático o si piensa en una aplicación genial, y luego, si tal vez tiene algunos bloqueadores en ML5 o el marco no tiene ciertas cosas que desea hacer, usted luego puede pasar a TensorFlow JS si lo desea. Y si realmente no está interesado en escribir su propio código pero solo quiere usar herramientas que ya existen, hay algunas API de Amazon, Google y Microsoft para hacer reconocimiento de imágenes o reconocimiento de voz también. Entonces, si está más interesado en ver lo que puede hacer, pero no quiere perder demasiado tiempo escribiendo el código, puede hacer ping a algunas API y probar algunas de sus herramientas también.

Drew: Eso es bastante interesante. Entonces, ¿tal vez podría usar el navegador para capturar la entrada de una cámara web o un micrófono o lo que sea, y luego enviar eso a Amazon, Microsoft o quien sea y luego dejar que ellos hagan el trabajo duro?

Charly: si.

Drew: Y luego te beneficias de los resultados.

Charly: Exacto.

Drew: Eso suena como una buena y tentadora forma de comenzar con las ideas. Suena genial, pero ¿a qué problemas podemos aplicar esto en la parte delantera? Hemos hablado de algunas cosas pequeñas, pero ¿hay otras formas en que podamos usar esto?

Charlie: Hay muchas maneras. Si empiezo con la clasificación de imágenes, sí podrías. Puede usar imágenes de la web o de la cámara web de su teléfono. Si solo usa su sitio web en su teléfono y puede tomar fotos y reconocer objetos, y lo hace... Una pequeña cosa que construí fue en torno al reciclaje, donde si realmente no sé dónde poner ciertos objetos en qué contenedor, nosotros tienen el contenedor amarillo, el verde, depende de los países. Tienen diferentes colores, pero a veces no soy muy bueno para saber dónde tirar las cosas, así que podrías construir pequeñas herramientas como esta que, en vivo, puede reconocer dos objetos frente a ti y luego clasificarlos y puedes construir ciertas cosas como esta.

Charlie: De lo contrario, tiene una clasificación de texto donde, a principios de este año, usé uno de los modelos TensorFlow GS para ver los comentarios escritos, los problemas de GitHub y las relaciones públicas de GitHub para luego clasificar y decir: "Oye, si es un comentario tóxico, entonces tienes un pequeño bot que dice: "Oye, tal vez no deberías haber escrito esto" o "Cuidado, es un poco tóxico". Queremos que este sea un espacio seguro”. Así que puedes usar una clasificación de texto como esa.

Charlie: Si quieres, hay una clasificación de sonido, donde cuando Apple lanzó su nuevo reloj, OS, tenían algo para reconocer el sonido del agua corriente, decirle a la gente, lavarse las manos durante 20 segundos con la pandemia de COVID, pero puedes hacerlo. eso en JavaScript también. Y lo que fue realmente interesante, estaba viendo algunos de los videos y dije: "Oh, sé cómo hacer eso en JavaScript".

Charlie: Y construí un pequeño prototipo. No sé si se ejecuta en el reloj de Apple. Quizás. No tengo uno, pero sé que funciona en mi teléfono y mi computadora portátil. Y luego eso puede generar algunas ideas para otras personas también, donde un amigo mío, Ramón Huidobro, @hola_soy_milk en Twitter. Ha estado en muchas conferencias en línea este año. Y uno de sus problemas es que cuando aplaude para aplaudir a alguien, no tiene tiempo para agregar el emoji de aplauso en el chat también. Y lo que quería hacer era escuchar el sonido de sus aplausos y eso enviaría automáticamente emojis de aplausos en el chat.

Charlie: Y son pequeñas cosas como esta que si desea una aplicación realmente más útil en su trabajo diario es la captación previa predictiva. Eso también es usar el aprendizaje automático en la interfaz cuando se miran los análisis de su sitio web. Entonces, qué páginas se miran generalmente después de cuál, y cosas como esta. Puede obtener recursos por adelantado en función de la página que es más probable que se visite después. Eso es algo que he querido investigar todo este año, pero no tuve tiempo, pero eso te permite mejorar realmente el rendimiento y la UX de tu página. Y no solicita recursos que no va a necesitar, por lo que realmente puede mejorar, y esa también es una aplicación de aprendizaje automático.

Charlie: Entonces puedes hacer cosas divertidas, o puedes hacer cosas más útiles, pero no hay una aplicación incorrecta, puede haber aplicaciones incorrectas. Me retracto, pero solo digo que si realmente estás comenzando, no hay nada de malo en comenzar con algo divertido, y luego puedo generar algunas ideas de algo que puedes hacer en el trabajo como bien.

Drew: Supongo que lo realmente útil aquí es saber que estas cosas son posibles. Y en realidad solo formas creativas de resolver problemas que podemos hacer por nuestra cuenta. Tradicionalmente construimos cosas por moderación del contenido enviado por los usuarios, y ha sido bastante primitivo y básicamente hemos tenido que hacer que los seres humanos observen las cosas y tomen decisiones al respecto. Pero con acceso al aprendizaje automático, en ese ejemplo, podríamos entregar más de eso y luego hacer que los humanos observen los casos extremos, por ejemplo, cosas que no tenían una coincidencia convincente.

Drew: Por supuesto que va a ser así, lleva un poco de tiempo desarrollar eso y ponerlo en su lugar, pero luego piensas en los ahorros de no tener seres humanos revisando cosas manualmente. ¿Para qué cosas puede ver que esto se usará en el futuro a medida que la tecnología mejore?

Charlie: Para mí, tal vez en el futuro, creo que a medida que los modelos se vuelven más pequeños para cargar y tienen más rendimiento, probablemente mejoremos los conjuntos de datos con los que están entrenados. Espero poder ver herramientas que sean más útiles. Quiero decir, personalmente, estoy interesado en esos pequeños modelos de aprendizaje automático que pueden ejecutarse en microcontroladores para construir cosas. Pero si nos quedamos más en el mundo front-end, espero quizás un mejor reconocimiento de voz porque siento que estamos acostumbrados a navegar por la web con un panel táctil o un teclado, pero por el momento, todavía hay un reconocimiento de voz, pero no siempre es muy preciso, o no es preciso con los acentos, por ejemplo. Y espero que a medida que desarrollemos mejores modelos, las personas más pequeñas no tendrán tanto miedo de agregarlo a su sitio web porque no afectará tanto el rendimiento.

Charlie: Estoy interesado en usar el aprendizaje automático en cosas como la captación previa predictiva para que podamos crear sitios web más inteligentes que mejoren la experiencia en un espectro, porque para los usuarios es mejor porque la página se cargará más rápido y, por lo tanto, el rendimiento en general. de su sitio, es mejor. Pero también digamos que si pensamos en la sustentabilidad, no solicitar recursos inútiles está ayudando también, a la huella de carbono de tu sitio web. Pero también está la huella de carbono de los modelos de aprendizaje automático. Eso no es muy bueno. Así que tal vez no hablemos de esto. Pensaría que para el futuro, solo espero tener modelos que sean quizás de mayor rendimiento o más pequeños para que sea más probable que las personas lo prueben, porque digamos que habrá menos obstáculos para que las personas entren en esto. , pero vamos a ver.

Drew: ¿Existen limitaciones y restricciones conocidas que debamos tener en cuenta antes de embarcarnos en un proyecto de aprendizaje automático?

Charly: si. Hay. Creo que no importa si lo haces en JavaScript o Python, hay límites. Creo que si quieres construir algo, que sea muy personalizado, para el que no haya un modelo entrenado previamente, uno de los límites es que podrías necesitar una gran cantidad de datos y no todos los tienen. 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: Sí. 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: Recuerda divertirte. Hablamos mucho hoy sobre cosas divertidas y luego cosas prácticas, pero si estás dispuesto a investigar esto, recuerda divertirte un poco, sin importar lo que decidas construir.