Diseño de sistemas de Machine Learning - Chip Huyen - E-Book

Diseño de sistemas de Machine Learning E-Book

Chip Huyen

0,0
39,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Los sistemas de aprendizaje automático, en inglés Machine Learning, implican el uso de métodos, algoritmos y procesos complejos que constan de muchos componentes diferentes; además, dependen de datos que varían considerablemente de un caso a otro. Con este libro aprenderá un método integral para diseñar sistemas de aprendizaje automático fiables, escalables, fáciles de mantener y adaptables a los entornos dinámicos y a los requisitos empresariales. La autora Chip Huyen, cofundadora de Claypot AI, considera cada decisión de diseño en su contexto para determinar la manera como este puede ayudar a su sistema. Analiza desde cómo procesar y crear datos de formación, hasta qué atributos utilizar, con qué frecuencia volver a formar los modelos y qué elementos supervisar. En el marco iterativo de este libro se utilizan estudios de casos reales respaldados por referencias amplias que le ayudarán a alcanzar sus objetivos. Así pues, gracias a esta lectura conocerá: "La ingeniería de datos y la elección de las métricas adecuadas para resolver un problema empresarial. "La automatización del proceso de desarrollo, evaluación, instalación y actualización de los modelos. "El desarrollo de un sistema de supervisión para detectar y resolver rápidamente los problemas que pueda encontrarse con sus modelos en funcionamiento. "La arquitectura de una plataforma de aprendizaje automático que sirva para todos los casos. "El desarrollo de sistemas de aprendizaje automático responsables. Chip Huyen es cofundadora de Claypot AI, una plataforma de aprendizaje automático en tiempo real. A través de su trabajo en NVIDIA, Netflix y Snorkel AI, ha ayudado a algunas de las organizaciones más grandes del mundo a desarrollar e implementar sus sistemas de aprendizaje automático. Chip basó este libro en sus apuntes para CS 329S: Diseño de Sistemas de Aprendizaje Automático, un curso que imparte en la Universidad de Stanford. "Este es, sencillamente, el mejor libro que se puede leer sobre cómo construir, implementar y extender los modelos de aprendizaje automático en una empresa para lograr un impacto máximo". -Josh Wills Ingeniero de software en WeaveGrid y exdirector de ingeniería de datos, Slack "En un ecosistema floreciente pero caótico, esta visión de principios sobre el aprendizaje automático de principio a fin es tanto su mapa como su brújula: una lectura obligada para los profesionales dentro y fuera de los gigantes tecnológicos". -Jacopo Tagliabue Director de IA, Coveo

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 724

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



 

 

Primera edición original publicada en inglés por O’Reilly con el título Designing Machine Learning Systems, ISBN 978-1-098-10796-3 ©2022 Huyen Thi Khanh Nguyen. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

 

Título de la edición en español: Diseño de sistemas de Machine Learning

Primera edición en español, 2023

© 2023 MARCOMBO, S.L.

www.marcombo.com

Diseño de portada: Karen Montgomery

Ilustración: Kate Dullea

Traducción: Miguel Ángel Torres

Corrección: Anna Alberola

Directora de producción: M.a Rosa Castillo

Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. La presente publicación contiene la opinión del autor y tiene el objetivo de informar de manera precisa y concisa. La elaboración del contenido, aunque se ha trabajado de modo escrupuloso, no puede comportar una responsabilidad específica para el autor ni el editor de los posibles errores o imprecisiones que pudiera contener la presente obra.

ISBN del libro en papel: 978-84-267-3695-6

ISBN del libro electrónico: 978-84-267-3709-0

Producción del ePub: booqlab

Tabla de contenido

Prefacio

1. Panorama de los sistemas de aprendizaje automático

Cuándo utilizar el aprendizaje automático

Casos de uso del aprendizaje automático

Cómo entender los sistemas de aprendizaje automático

El aprendizaje automático en la investigación y en la práctica

Los sistemas de aprendizaje automático y el software tradicional

Resumen

2. Introducción al diseño de sistemas de aprendizaje automático

Objetivos empresariales y de AA

Requisitos para los sistemas de AA

Confiabilidad

Escalabilidad

Capacidad de mantenimiento

Adaptabilidad

Proceso iterativo

Planteamiento de problemas de AA

Tipos de tareas del AA

Funciones objetivo

El intelecto frente a los datos

Resumen

3. Fundamentos de la ingeniería de datos

Las fuentes de datos

Formatos de datos

JSON

Los formatos de orden por filas frente a los de orden por columnas

Texto frente a formato binario

Modelos de datos

Modelo relacional

NoSQL

Datos estructurados frente a datos no estructurados

Motores de almacenamiento de datos y procesamiento

Procesamiento transaccional y analítico

ETL: Extraer, transformar y leer

Modos de flujo de datos

Datos que pasan por bases de datos

Datos que pasan a través de los servicios

Transferencia de datos a través del transporte de datos al instante

El procesamiento por lotes frente al procesamiento continuo

Resumen

4. Datos de formación

Muestreo

Muestreo no probabilístico

Muestreo aleatorio simple

Muestreo estratificado

Muestreo ponderado

Muestreo de depósito

Muestreo de importancia

Etiquetado

Etiquetas manuales

Etiquetas naturales

Cómo afrontar la falta de etiquetas

Desequilibrio de clases

Desafíos del desequilibrio de clases

Cómo afrontar el desequilibrio de clases

Aumento de datos

Transformaciones simples que conservan la etiqueta

Perturbación

Síntesis de datos

Resumen

5. Creación de atributos

Los atributos aprendidos frente a los diseñados

Operaciones comunes de creación de atributos

Manejo de valores faltantes

Escalado

Discretización

Codificación de atributos categóricos

Cruce de atributos

Incrustaciones posicionales discretas y continuas

Fuga de datos

Causas comunes de la fuga de datos

Detección de la fuga de datos

Creación de atributos buenos

Importancia de los atributos

Generalización de los atributos

Resumen

6. Desarrollo de modelos y evaluación fuera de línea

Desarrollo de modelos y formación

Evaluación de modelos de AA

Ensambles

Rastreo de experimentos y control de versiones

Formación distribuida

AutoML

Evaluación del modelo fuera de línea

Referencias

Métodos de evaluación

Resumen

7. Servicio de predicción y puesta en marcha de modelos

Mitos sobre la instalación del aprendizaje automático

Mito 1: solo se instalan uno o dos modelos de AA a la vez

Mito 2: si no hacemos algo, el rendimiento del modelo seguirá igual

Mito 3: no necesitará actualizar mucho los modelos

Mito 4: la mayoría de los ingenieros de AA no necesitan preocuparse por la escala

La predicción por lotes frente a la predicción en línea

De la predicción por lotes a la predicción en línea

Unificación de la canalización por lotes y la canalización de flujo

Compresión del modelo

Factorización de bajo rango

Destilación del conocimiento

Poda

Cuantificación

AA en la nube y en el perímetro

Compilación y optimización de modelos para dispositivos periféricos

El AA en los navegadores

Resumen

8. Cambios y monitoreo de la distribución de los datos

Causas de los fallos en los sistemas de AA

Fallos del sistema informático

Fallos específicos del AA

Cambios en la distribución de los datos

Tipos de cambios en la distribución de los datos

Cambios generales en la distribución de los datos

Detección de cambios en la distribución de los datos

Cómo afrontar los cambios en la distribución de los datos

Monitoreo y observabilidad

Métricas específicas del AA

Herramientas de monitoreo

Observabilidad

Resumen

9. Aprendizaje continuo y pruebas en producción

Aprendizaje continuo

Reformación sin estado frente a formación con estado

El porqué del aprendizaje continuo

Desafíos del aprendizaje continuo

Las cuatro etapas del aprendizaje continuo

Frecuencia de actualización de los modelos

Pruebas en producción

Implementación en paralelo

Pruebas A/B

Versión canario

Experimentos intercalados

Bandidos

Resumen

10.Infraestructura y herramientas para MLOps

El almacenamiento y los cálculos

Nube pública frente a centros de datos privados

Entorno de desarrollo

Configuración del entorno de desarrollo

Estandarización de los entornos de desarrollo

Del desarrollo a la producción: contenedores

Gestión de recursos

Cron, planificadores y orquestadores

Gestión del flujo de trabajo de la ciencia de datos

La plataforma del AA

Puesta en marcha de los modelos

Almacén de modelos

Almacén de atributos

Crear frente a comprar

Resumen

11.El lado humano del aprendizaje automático

Experiencia del usuario

Garantizar la coherencia de la experiencia del usuario

Cómo evitar las predicciones «casi correctas»

Fallo suave

Estructura de equipo

Colaboración en equipos multifuncionales

Científicos de datos de principio a fin

IA responsable

IA irresponsable: caso de estudio

Un entorno para la IA responsable

Resumen

12.Epílogo

Prefacio

Desde el primer curso de aprendizaje automático que impartí en Stanford en 2017, muchas personas me han pedido consejo sobre cómo implementar modelos de AA (de su sigla en inglés Machine Learning) en sus organizaciones. Estas preguntas pueden ser genéricas, como «¿Qué modelo debo utilizar?», «¿Con qué frecuencia debo reformar mi modelo?», «¿Cómo puedo detectar cambios en la distribución de los datos?» o «¿Cómo me aseguro de que los atributos utilizados durante la formación sean coherentes con los utilizados durante la inferencia?».

Estas preguntas también pueden ser específicas, como «Estoy convencida de que pasar de la predicción por lotes a la predicción en línea dará a nuestro modelo un aumento de rendimiento, pero ¿cómo convenzo a mi jefe para que me deje hacerlo?» o «Soy la científica de datos más veterana de mi empresa y recientemente me han encargado la creación de nuestra primera plataforma de aprendizaje automático; ¿por dónde empiezo?».

Mi respuesta corta a todas estas preguntas siempre es: «Depende». Mis respuestas largas a menudo implican horas de discusión para entender en qué situación se encuentra la persona que hace la pregunta, lo que realmente está tratando de lograr y los pros y contras de los diferentes enfoques para su caso de uso específico.

Los sistemas de AA son complejos y peculiares. Son complejos porque constan de muchos componentes diferentes (algoritmos de AA, datos, lógica empresarial, métricas de evaluación, infraestructura subyacente, etc.) e involucran a muchas partes interesadas diferentes (científicos de datos, ingenieros de AA, líderes empresariales, usuarios, incluso la sociedad en general). Son peculiares porque dependen de los datos, que varían considerablemente de un caso de uso al siguiente.

Por ejemplo, dos empresas pueden estar en el mismo campo (comercio electrónico) y tener el mismo problema que quieren resolver con AA (sistema de recomendación), pero sus sistemas de AA resultantes pueden tener arquitecturas de modelos diferentes, utilizar conjuntos de atributos distintos, ser evaluados según métricas diferentes y aportar rendimientos de inversión también diferentes.

Muchas entradas de blogs y tutoriales sobre la producción de AA se centran en responder a una pregunta específica. Aunque el enfoque ayuda a entender el mensaje, pueden crear la impresión de que es posible considerar cada una de estas cuestiones de forma aislada. En realidad, los cambios en un componente probablemente afectarán a otros componentes. Por lo tanto, es necesario considerar el sistema en su conjunto al intentar tomar cualquier decisión de diseño.

En este libro se sigue un modelo integral para los sistemas de AA. Tiene en cuenta los diferentes componentes del sistema y los objetivos de las distintas partes interesadas. El contenido de este libro se ilustra con estudios de casos reales, en muchos de los cuales he trabajado personalmente, respaldados por referencias abundantes y revisados por profesionales del AA tanto en el ámbito académico como en el industrial. Las secciones que requieren un conocimiento profundo de un determinado tema —por ejemplo, el procesamiento por lotes frente al procesamiento continuo, la infraestructura para el almacenamiento y la informática y la IA responsable— son revisadas, además, por expertos cuyo trabajo se centra en esos temas. En otras palabras, este libro es un intento de dar respuestas matizadas a las preguntas mencionadas, y a muchas más.

Cuando escribí por primera vez los apuntes de clase que sentaron las bases de este libro, pensé que los había escrito para que mis alumnos se prepararan para las exigencias de sus futuros trabajos como científicos de datos e ingenieros de AA. Sin embargo, pronto me di cuenta de que también estaba aprendiendo enormemente durante el proceso. Los borradores iniciales que compartí con los primeros lectores suscitaron muchas conversaciones que pusieron a prueba mis suposiciones, me obligaron a considerar perspectivas diferentes y me presentaron problemas y enfoques nuevos.

Espero que este proceso de aprendizaje continúe para mí ahora que el libro está en sus manos, ya que usted tiene experiencias y perspectivas que son únicas para usted. No dude, por favor, en compartir conmigo cualquier comentario que tenga sobre este libro, a través del servidor MLOps Discord que dirijo (donde también puede encontrar a otros lectores de este libro), Twitter, LinkedIn u otros canales que puede encontrar en mi página web.

A quiénes va dirigido este libro

Este libro va dirigido a todos aquellos que quieran utilizar el AA para resolver problemas de la vida real. En este libro, AA se refiere tanto al aprendizaje profundo (Deep Learning) como a los algoritmos clásicos, con una inclinación hacia los sistemas de AA a escala, como los que se ven en las empresas medianas y grandes y en las empresas emergentes de crecimiento rápido. Los sistemas a menor escala tienden a ser menos complejos y pueden beneficiarse menos del enfoque global que se expone en este libro.

Como mi experiencia es en ingeniería, el lenguaje de este libro está dirigido a ingenieros, incluyendo ingenieros de AA, científicos de datos, ingenieros de datos, ingenieros de plataformas de AA y directores de ingeniería. Es posible que se sienta identificado con uno de los siguientes escenarios:

•   Le han dado un problema empresarial y un montón de datos sin procesar. Lo que se quiere es gestionar estos datos y elegir las métricas adecuadas para resolver este problema.

•   Sus modelos iniciales funcionan bien en los experimentos fuera de línea y desea implementarlos.

•   Tiene poca información sobre el desempeño de sus modelos después de implementarlos y quiere encontrar una manera de detectar, depurar y resolver rápidamente cualquier problema que puedan tener en producción.

•   El proceso de desarrollo, evaluación, implementación y actualización de modelos para su equipo ha sido en su mayoría manual, lento y propenso a errores. Quiere automatizar y mejorar este proceso.

•   Cada caso de uso de AA en su organización se ha implementado utilizando su propio flujo de trabajo y usted quiere sentar las bases (por ejemplo, el almacén de modelos, el almacén de atributos, las herramientas de supervisión) que pueden ser compartidas y reutilizadas en todos los casos de uso.

•   Le preocupa que pueda haber sesgos en sus sistemas de AA y ¡quiere que sus sistemas sean responsables!

También puede beneficiarse del libro si pertenece a uno de los siguientes grupos:

•   Desarrolladores de herramientas que quieran identificar áreas desatendidas en la producción de AA y averiguar cómo posicionar sus herramientas en el ecosistema.

•   Personas que busquen roles relacionados con el AA en la industria.

•   Líderes técnicos y empresariales que estén considerando adoptar soluciones de AA para mejorar sus productos y/o procesos de negocio. Los lectores que no tengan una sólida formación técnica podrán beneficiarse al máximo de los capítulos 1, 2 y 11.

Lo que este libro no es

Este libro no es una introducción al AA. Hay muchos libros, cursos y recursos disponibles para las teorías de AA y, por lo tanto, en este libro me alejo de estos conceptos para centrarme en los aspectos prácticos de AA. En concreto, en el libro se da por sentado que los lectores tienen un conocimiento básico de los siguientes temas:

•   Modelos de AA, como la agrupación, la regresión logística, los árboles de decisión, el filtrado colaborativo y varias arquitecturas de redes neuronales, como las de avance, las recurrentes, las convolucionales y las transformadoras.

•   Técnicas de AA, como la supervisión y la no supervisión, el descenso de gradiente, la función de pérdida objetivo, la regularización, la generalización y el ajuste de hiperparámetros.

•   Métricas, como la exactitud, la F1, la precisión, la recuperación, la ROC, el error medio cuadrático y la probabilidad logarítmica.

•   Conceptos estadísticos, como la varianza, la probabilidad y la distribución normal/de cola larga.

•   Tareas comunes de AA, como el modelado del lenguaje, la detección de anomalías, la clasificación de objetos y la traducción automática.

No es necesario que conozca estos temas al dedillo (para los conceptos cuyas definiciones exactas pueden requerir un cierto esfuerzo para recordar —por ejemplo, la puntuación de la F1—, se incluyen notas breves como referencia), pero, para empezar, debería tener una idea aproximada de lo que significan.

Si bien este libro menciona herramientas actuales para ilustrar ciertos conceptos y soluciones, no es un libro tutorial. La tecnología evoluciona con el tiempo. Las herramientas entran y salen de las modas rápidamente, pero los enfoques fundamentales para la resolución de problemas deben durar un poco más. En este libro se proporciona un marco para que evalúe la herramienta que mejor se adapte a sus casos de uso. Cuando hay una herramienta que se quiere utilizar, suele ser sencillo encontrar tutoriales sobre ella en Internet. Como resultado, este libro tiene pocos fragmentos de código y, en su lugar, se centra en discutir ampliamente en torno a las alternativas, los pros y los contras y los ejemplos concretos.

Cómo está organizado este libro

Los capítulos de este libro están organizados para reflejar los problemas que los científicos de datos pueden encontrar a medida que avanzan en el ciclo de vida de un proyecto de AA. Los dos primeros capítulos sientan las bases para que un proyecto de AA tenga éxito, empezando por la pregunta más básica: ¿Necesita su proyecto AA? También tratan de la elección de los objetivos de su proyecto y de cómo enmarcar su problema de manera que se puedan encontrar soluciones más sencillas. Si ya conoce estas consideraciones y está impaciente por llegar a las soluciones técnicas, no dude en saltarse los dos primeros capítulos.

Los capítulos del 4 al 6 cubren la fase de preinstalación de un proyecto de AA: desde la creación de los datos de formación y los atributos de ingeniería hasta el desarrollo y la evaluación de sus modelos en un entorno de desarrollo. Esta es la fase en la que se necesita especialmente la experiencia, tanto en el ámbito del AA como en el del problema.

Los capítulos del 7 al 9 cubren las fases de instalación y postinstalación de un proyecto de AA. Aprenderemos, a través de un caso con el que muchos lectores se sentirán identificados, que instalar un modelo no es el final del proceso de instalación. El modelo instalado deberá ser supervisado y actualizado continuamente en función de la evolución de los entornos y los requisitos empresariales.

Los capítulos 3 y 10 se centran en la infraestructura necesaria para que los individuos de diferentes ámbitos interesados trabajen juntos para ofrecer sistemas de AA exitosos. El capítulo 3 se centra en los sistemas de datos, mientras que el capítulo 10 se centra en la infraestructura informática y las plataformas de AA. He pensado durante mucho tiempo en cuánto profundizar en los sistemas de datos y dónde presentarlos en el libro. Los sistemas de datos, incluyendo las bases de datos, el formato de los datos, los movimientos de datos y los motores de procesamiento de datos, tienden a ser escasamente cubiertos en los cursos de AA y, por lo tanto, muchos científicos de datos podrían pensar en ellos como de bajo nivel o irrelevantes. Después de consultar con muchos de mis colegas, decidí que, dado que los sistemas de AA dependen de los datos, cubrir los fundamentos de los sistemas de datos desde el principio nos ayudará a ponernos de acuerdo para discutir asuntos de datos en el resto del libro.

Aunque en este libro cubrimos muchos aspectos técnicos de un sistema de AA, los sistemas de AA están construidos por personas y para personas, y pueden tener un impacto enorme en la vida de muchos. Sería negligente escribir un libro sobre la producción de AA sin un capítulo sobre el lado humano de la misma; en eso se centra el último capítulo, el capítulo 11.

Hay que tener en cuenta que el papel del «científico de datos» ha evolucionado mucho en los últimos años y se han producido muchos debates para determinar lo que debería implicar este rol (entraremos en algunas de estas discusiones en el capítulo 10). En este libro utilizamos el término «científico de datos» como un término general para incluir a cualquier persona que trabaje desarrollando e implementando modelos de AA, incluyendo a personas cuyos títulos de trabajo podrían ser ingenieros de AA, ingenieros de datos, analistas de datos, etc.

Repositorio y comunidad GitHub

Este libro va acompañado de un repositorio GitHub que contiene:

•   Un repaso a los conceptos básicos del AA.

•   Una lista de referencias utilizadas en este libro y otros recursos

•   avanzados y actualizados.

•   Los fragmentos de código utilizados en este libro.

•   Una lista de herramientas que puede utilizar para ciertos problemas que podría encontrar en sus rutinas de trabajo.

Para acceder a él, entre en www.marcombo.info con el código AA23.

También dirijo un servidor Discord en MLOps donde se promueve la discusión y se le insta a preguntar sobre el libro: https://discord.com/invite/Mw77HPrgjF

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica términos nuevos, direcciones web o de correo electrónico, nombres de archivos y extensiones de archivos.

Ancho constante

Se utiliza para listas de programas, así como en párrafos, para hacer referencia a elementos de programas como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

 

Este elemento significa una nota general.

 

Este elemento indica una advertencia o precaución.

Uso de ejemplos de código

Como se ha mencionado, el material complementario (ejemplos de código, ejercicios, etc.) está disponible para su descarga en www.marcombo.info con el código AA23.

Este libro está pensado para ayudarle a hacer su trabajo. En general, si el código de ejemplo se ofrece con este libro, puede utilizarlo en sus programas y documentación. No es necesario que se ponga en contacto con nosotros para pedirnos permiso, a menos que reproduzca una parte significativa del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. La venta o distribución de ejemplos de los libros de O'Reilly y Marcombo requiere autorización. Responder a una pregunta citando este libro y citando un código de ejemplo no requiere permiso. La incorporación de una cantidad significativa de código de ejemplo de este libro en la documentación de su producto requiere autorización. Si cree que el uso de los ejemplos de código no se ajusta al uso legítimo o a los permisos mencionados, no dude en ponerse en contacto con nosotros escribiendo a [email protected].

Agradecimientos

Escribir este libro me llevó dos años, y muchos más años prepararlo. Estoy igualmente sorprendida y agradecida por la enorme ayuda que recibí al escribirlo. He hecho lo posible por incluir los nombres de todos los que han colaborado pero, debido al fallo inherente a la memoria humana, sin duda me he olvidado de mencionar a muchos. Si me he olvidado de incluir su nombre, sepa que no ha sido porque no aprecie su contribución y, por favor, recuérdemelo, ¡para poder rectificarlo lo antes posible!

En primer lugar, me gustaría dar las gracias al personal que me ayudó a desarrollar el curso y los materiales en los que se basa este libro: Michael Cooper, Xi Yin, Chloe He, Kinbert Chou, Megan Leszczynski, Karan Goel y Michele Catasta. Me gustaría agradecer a mis profesores, Christopher Ré y Mehran Sahami, sin los cuales el curso no existiría.

Me gustaría agradecer a una lista larga de revisores que no solo me dieron ánimos, sino que mejoraron el libro en muchos sentidos: Eugene Yan, Josh Wills, Han-chung Lee, Thomas Dietterich, Irene Tematelewo, Goku Mohandas, Jacopo Tagliabue, Andrey Kurenkov, Zach Nussbaum, Jay Chia, Laurens Geffert, Brian Spiering, Erin Ledell, Rosanne Liu, Chin Ling, Shreya Shankar y Sara Hooker.

Me gustaría dar las gracias a todos los lectores que leyeron la primera versión del libro y me dieron ideas para mejorarlo, como Charles Frye, Xintong Yu, Jordan Zhang, Jonathon Belotti y Cynthia Yu.

Por supuesto, el libro no habría sido posible sin el equipo de O'Reilly, especialmente mi editora de desarrollo, Jill Leonard, y mis editores de producción, Kristen Brown, Sharon Tripp y Gregory Hyman. Me gustaría dar las gracias a Laurence Moroney, Hannes Hapke y Rebecca Novack, que me ayudaron a que este libro pasara de ser un concepto a ser una publicación.

Después de todo, este libro es una acumulación de lecciones inestimables que he aprendido a lo largo de mi carrera hasta la fecha. Estas lecciones se las debo a mis extremadamente competentes y pacientes compañeros de trabajo y antiguos compañeros de Claypot AI, Primer AI, Netflix, NVIDIA y Snorkel AI. Cada persona con la que he trabajado me ha enseñado algo nuevo sobre cómo traer AA al mundo.

Un agradecimiento especial a mi cofundador Zhenzhong Xu por apagar los incendios de nuestra nueva empresa y por permitirme dedicar tiempo a este libro. Gracias, Luke, por apoyarme siempre en todo lo que quiero hacer, por muy ambicioso que sea.

CAPÍTULO 1

Panorama de los sistemas de aprendizaje automático

En noviembre de 2016, Google anunció que había incorporado su sistema de traducción automática neuronal multilingüe a Google Translate, lo que supuso uno de los primeros triunfos de las redes neuronales artificiales profundas en producción a escala1. Según Google, con esta actualización, la calidad de la traducción mejoró más en un solo salto que en lo que habían visto en los 10 años anteriores juntos.

Este éxito del aprendizaje profundo renovó el interés por el aprendizaje automático (AA) en general. Desde entonces, cada vez más empresas han recurrido al AA para encontrar soluciones a sus problemas más complejos. En solo cinco años, el AA se ha abierto camino en casi todos los aspectos de nuestras vidas: cómo accedemos a la información, cómo nos comunicamos y trabajamos o cómo encontramos el amor. La difusión del AA ha sido tan rápida que ya es difícil imaginar la vida sin él. Sin embargo, todavía hay muchos más casos de uso para el AA que esperan ser explorados, en campos como la asistencia sanitaria, el transporte, la agricultura, e incluso para ayudarnos a entender el universo2.

Mucha gente, cuando oye hablar de «sistema de aprendizaje automático», piensa solo en los algoritmos de AA que se utilizan, como la regresión logística o los distintos tipos de redes neuronales. Sin embargo, el algoritmo es solo una parte pequeña de un sistema de AA en la práctica. El sistema también incluye los requisitos empresariales que en primer lugar dieron origen al proyecto de AA, la interfaz con la que los usuarios y desarrolladores interactúan con su sistema, la pila de datos y la lógica para desarrollar, supervisar y actualizar sus modelos, así como la infraestructura que permite la provisión de esa lógica. En la Figura 1-1 se muestran los diferentes componentes de un sistema de AA y en qué capítulos de este libro se tratarán.

La relación entre los MLOps y el diseño de sistemas de AA

Ops en MLOps viene de DevOps, abreviatura de Desarrollos y Operaciones. Poner en funcionamiento algo significa ponerlo en producción, lo que incluye su instalación, supervisión y mantenimiento. MLOps es un conjunto de herramientas y prácticas recomendadas para llevar el AA a la producción.El diseño de sistemas de AA adopta un método sistemático de MLOps, lo que significa que contempla un sistema de AA de forma integral para garantizar que todos los componentes y los participantes puedan trabajar juntos para satisfacer los objetivos y requisitos especificados.

Figura1 1-1.Los diferentes componentes de un sistema de AA (algoritmos de AA) es en lo que la gente suele pensar cuando dice «aprendizaje automático», pero eso es solo una pequeña parte de todo el sistema.

Hay muchos libros excelentes sobre diversos algoritmos de AA. Este libro no cubre ningún algoritmo específico en detalle, sino que ayuda a los lectores a entender todo el sistema de AA en su conjunto. En otras palabras, el objetivo de este libro es proporcionarle un esquema de trabajo para desarrollar la solución que mejor se adapte a su problema, independientemente del algoritmo que acabe utilizando. Los algoritmos pueden volverse obsoletos rápidamente, ya que constantemente se desarrollan nuevos algoritmos, pero el esquema propuesto en este libro debe seguir funcionando con los algoritmos nuevos.

El primer capítulo del libro busca dar una visión general de lo que se necesita para llevar un modelo de AA a la práctica. Antes de hablar de cómo desarrollar un sistema de AA, es importante plantearse la cuestión fundamental de cuándo utilizar el AA y cuándo no. Para ilustrar este aspecto, cubriremos algunos de los casos de uso más populares del AA.

Después de los casos de uso, pasaremos a los retos de la instalación de sistemas de AA y lo haremos comparando el AA en producción con el AA en investigación, así como con el software tradicional. Si ha trabajado en el campo del desarrollo de sistemas de AA aplicados, es posible que ya esté familiarizado con lo que se ha escrito en este capítulo. Sin embargo, si solo ha tenido experiencia con AA en un entorno académico, este capítulo le dará una perspectiva honesta del AA en el mundo real y preparará su primera aplicación para tener éxito.

Cuándo utilizar el aprendizaje automático

A medida que su adopción en la industria crece rápidamente, el AA ha demostrado ser una herramienta poderosa para una gama amplia de problemas. A pesar de la increíble cantidad de entusiasmo y el bombo generado por personas tanto dentro como fuera del campo, el AA no es una herramienta mágica que pueda resolver todos los problemas. Incluso para los problemas que el AA puede resolver, las soluciones del AA podrían no ser las soluciones óptimas. Antes de iniciar un proyecto de AA, es conveniente preguntarse si el AA es necesario o rentable3.

Para entender lo que el AA puede hacer, examinemos lo que generalmente hacen las soluciones de AA:

El aprendizaje automático es un método para (1) aprender (2) patrones complejos a partir de (3) datos existentes y utilizar estos patrones para hacer (4) predicciones sobre (5) datos ocultos.

Analizaremos cada una de las expresiones clave en cursiva del esquema anterior para comprender sus implicaciones en los problemas que el AA puede resolver:

1.   Aprender: el sistema tiene la capacidad de aprenderUna base de datos relacional no es un sistema de AA porque no tiene capacidad de aprendizaje. Se puede indicar explícitamente la relación entre dos columnas en una base de datos relacional, pero es poco probable que tenga la capacidad de averiguar la relación entre estas dos columnas por sí misma.

Para que un sistema de AA aprenda, debe haber algo que le permita aprender. En la mayoría de los casos, los sistemas de AA aprenden de los datos. En el aprendizaje supervisado, basado en pares referentes de entrada y resultado, los sistemas de AA aprenden a generar resultados para entradas arbitrarias. Por ejemplo, si quiere construir un sistema de AA para aprender a predecir el precio de alquiler en los anuncios de Airbnb, necesita proporcionar un conjunto de datos en el que cada entrada sea un anuncio con características relevantes (metros cuadrados, número de habitaciones, vecindario, servicios, calificación del anuncio, etc.) y el resultado relacionado sea el precio de alquiler de ese anuncio. Una vez aprendido, este sistema de AA debe ser capaz de predecir el precio de un nuevo anuncio dadas sus características.

2.   Patrones complejos: hay patrones por aprender y son complejosLas soluciones de AA solo son útiles cuando hay patrones por aprender. La gente sensata no invierte dinero en construir un sistema de AA para predecir el próximo resultado de un dado justo porque no hay ningún patrón en cómo se generan estos resultados4. Sin embargo, hay patrones en la forma en que se cotizan las acciones y, por lo tanto, hay empresas que han invertido miles de millones de dólares en la construcción de sistemas de AA para aprender esos patrones.

La existencia de un patrón puede no ser obvia o, si existen patrones, su conjunto de datos o sus algoritmos de AA pueden no ser suficientes para capturarlos. Por ejemplo, podría haber un patrón en la forma en que los tuits de Elon Musk afectan los precios de las criptomonedas. Sin embargo, no lo sabrá hasta que haya formado y evaluado rigurosamente sus modelos AA con sus tuits. También es importante tener en cuenta que el hecho de que ninguno de sus modelos logre hacer predicciones razonables de los precios de las criptomonedas no significa que no haya un patrón.

Piense en un sitio web como Airbnb con muchos anuncios de casas; cada anuncio viene con un código postal. Si quiere clasificar los anuncios según los estados en los que se encuentran, no necesita un sistema de AA. Dado que el patrón es sencillo —cada código postal corresponde a un estado conocido—, basta con utilizar una tabla de búsqueda.

La relación entre el precio del alquiler y todas sus características sigue un patrón mucho más complejo, que sería muy difícil de especificar manualmente. El AA sería una buena solución para esto. En lugar de decirle a su sistema cómo calcular el precio a partir de una lista de características, puede proporcionar los precios y las características y dejar que su sistema de AA descubra el patrón. La diferencia entre las soluciones de AA y la solución de la tabla de búsqueda, así como las soluciones generales de software tradicionales, se muestra en la Figura 1-2. Por esta razón, el AA también se llama Software 2.05.

El AA ha tenido mucho éxito en tareas con patrones complejos, como la detección de objetos y el reconocimiento del habla. Lo que es complejo para las máquinas es diferente de lo que es complejo para los seres humanos. Muchas tareas que son difíciles de realizar para los seres humanos son fáciles para las máquinas: por ejemplo, elevar un número a la potencia de 10. Por otro lado, muchas tareas que son fáciles para los seres humanos pueden ser difíciles para las máquinas; por ejemplo, decidir si hay un gato en una foto.

Figura1 1-2.En lugar de requerir patrones especificados manualmente para calcular los resultados, las soluciones de AA aprenden patrones a partir de las entradas y resultados.

3.   Datos existentes: los datos están disponibles o es posible recopilarlosDado que el AA aprende de los datos, debe haber datos de los que pueda aprender. Es divertido pensar en construir un modelo para predecir cuántos impuestos debe pagar una persona al año, pero no es posible a menos que se tenga acceso a los datos fiscales y de ingresos de una gran población.

En el contexto del aprendizaje cero (a veces conocido como aprendizaje de tiro cero), es posible que un sistema de AA haga buenas predicciones para una tarea sin haber sido formado con datos para esa tarea. Sin embargo, este sistema AA fue formado previamente con datos de otras tareas, a menudo relacionadas con la tarea en cuestión. Por tanto, aunque el sistema no necesite datos para aprender de la tarea en cuestión, sigue necesitando datos para aprender.

También es posible ejecutar un sistema de AA sin datos. Por ejemplo, en el contexto del aprendizaje continuo, los modelos de AA pueden instalarse sin haber sido formados con ningún dato, pero aprenderán de los datos entrantes en producción6. Sin embargo, proporcionar a los usuarios modelos insuficientemente formados conlleva ciertos riesgos, como una mala experiencia del cliente.

Sin datos y sin aprendizaje continuo, muchas empresas siguen un método de «fingir hasta lograrlo»: lanzar un producto que ofrezca predicciones hechas por seres humanos, en lugar de modelos de AA, con la esperanza de utilizar los datos generados para formar modelos de AA más adelante.

4.   Predicciones: es un problema de predicciónLos modelos de AA hacen predicciones, por lo que solo pueden resolver problemas que requieran respuestas predictivas. El AA puede ser especialmente atractivo cuando puede beneficiarse de una gran cantidad de predicciones baratas, pero aproximadas. En castellano, «predecir» significa «anunciar algo futuro a partir de indicios.» Por ejemplo, ¿qué tiempo hará mañana? ¿Quién ganará la supercopa este año? ¿Qué película querrá ver un usuario a continuación?

A medida que los modelos predictivos (por ejemplo, los modelos AA) se hacen más eficaces, hay cada vez más problemas que se replantean como problemas predictivos. Cualquiera que sea la pregunta que tenga, siempre puede plantearla como: «¿Cuál sería la respuesta a esta pregunta?», independientemente de que esta se refiera a algo del futuro, del presente o incluso del pasado.

Los problemas de cálculo intensivo son una clase de problemas que se han replanteado con mucho éxito como predictivos. En lugar de calcular el resultado exacto de un proceso, lo que en términos informáticos podría ser incluso más costoso y lento que el AA, se puede plantear el problema como: «¿Cómo sería el resultado de este proceso?» y aproximarlo utilizando un modelo de AA. El resultado será una aproximación al resultado exacto, pero a menudo es suficiente. Se puede ver a menudo en los cálculos gráficos, como en la eliminación del ruido de la imagen y el sombreado en la pantalla7.

5.   Datos ocultos: los datos ocultos comparten patrones con los datos de formaciónLos patrones que su modelo aprende de los datos existentes solo son útiles si los datos ocultos también comparten estos patrones. Un modelo para predecir si una aplicación se descargará en la Navidad de 2020 no funcionará muy bien si se forma con datos de 2008, cuando la aplicación más popular de App Store era Koi Pond. ¿Qué es Koi Pond? Exactamente.

En términos técnicos, significa que los datos ocultos y los datos de formación deben proceder de distribuciones similares. Se preguntará: «Si los datos están ocultos, ¿cómo sabemos de qué distribución proceden?». No lo sabemos, pero podemos hacer suposiciones (por ejemplo, que el comportamiento de los usuarios mañana no será muy diferente del de hoy) y esperar a que se cumplan. Si no lo hacen, tendremos un modelo que funciona mal, lo que podremos averiguar con el monitoreo, tratado en el capítulo 8, y las pruebas en producción, tratadas en el capítulo 9.

Debido a la forma en que la mayoría de algoritmos de AA aprenden hoy en día, las soluciones de AA sobresaldrán particularmente si su problema presenta las siguientes características adicionales:

6.   Es repetitivoA los seres humanos se nos da muy bien aprender con pocos ejemplos: podemos enseñar a los niños unas cuantas fotos de gatos y la mayoría reconocerá un gato la próxima vez que lo vea. A pesar de los interesantes avances en la investigación del aprendizaje con pocos ejemplos, la mayoría de los algoritmos de AA siguen necesitando muchos ejemplos para aprender un patrón. Cuando una tarea es repetitiva, cada patrón se repite múltiples veces, lo que facilita su aprendizaje por parte de las máquinas.

7.   El coste de las predicciones erróneas es bajoA menos que el rendimiento de su modelo AA sea del 100 % todo el tiempo, lo cual es muy poco probable para cualquier tarea significativa, su modelo va a cometer errores. El AA es especialmente adecuado cuando el coste de una predicción errónea es bajo. Por ejemplo, uno de los mayores casos de uso del AA hoy en día son los sistemas de recomendación porque, en estos sistemas, una mala recomendación suele ser indulgente: el usuario simplemente no pulsará sobre la recomendación.

Si un error de predicción puede tener consecuencias catastróficas, el AA podría seguir siendo una solución adecuada si, por término medio, los beneficios de las predicciones correctas superan el coste de las predicciones erróneas. Desarrollar coches autoconducidos es todo un reto porque un error de un algoritmo puede provocar una muerte. Sin embargo, muchas empresas siguen queriendo desarrollar coches autoconducidos porque tienen el potencial de salvar muchas vidas una vez que sean estadísticamente más seguros que los conductores humanos.

8.   Está a escalaLas soluciones de AA suelen requerir una inversión inicial no trivial en datos, informática, infraestructura y talento, con lo cual tendría sentido que pudiéramos utilizar bastante estas soluciones.

«A escala» tiene significados diferentes para tareas distintas, pero, en general, significa hacer muchas predicciones. Entre los ejemplos se incluyen la clasificación de millones de correos electrónicos al año o la predicción de los departamentos a los que se deben dirigir miles de solicitudes de asistencia al día.

Un problema puede parecer una predicción singular pero, en realidad, ser una serie de predicciones. Por ejemplo, un modelo que prediga quién ganará unas elecciones presidenciales en EE. UU. parecerá que solo hace una predicción cada cuatro años, pero en realidad podría estar haciendo una predicción cada hora o incluso con más frecuencia porque esa predicción tiene que actualizarse continuamente para incorporar información nueva.

Tener un problema a escala también significa que hay muchos datos para recopilar, lo que resulta útil para formar modelos de AA.

9.   Los patrones cambian constantementeLas culturas cambian. Los gustos cambian. Las tecnologías cambian. Lo que está de moda hoy puede ser anticuado mañana. Consideremos la tarea de clasificación del correo basura. Un indicio de correo basura hoy puede ser un príncipe nigeriano, pero mañana puede ser un angustiado escritor vietnamita.

Si su problema implica uno o varios patrones que cambian constantemente, las soluciones codificadas, como las reglas escritas a mano, pueden quedar obsoletas rápidamente. Averiguar cómo ha cambiado el problema para poder actualizar las normas escritas a mano puede resultar demasiado costoso o imposible. Dado que el AA aprende de los datos, puede actualizar su modelo de AA con datos nuevos sin tener que averiguar cómo han cambiado. También se puede configurar el sistema para que se adapte a los cambios en la distribución de los datos, un método que analizaremos en la sección «Aprendizaje continuo».

La lista de casos de uso puede ser interminable y crecerá aún más a medida que madure la adopción del AA en la industria. Aunque el AA puede resolver muy bien un subconjunto de problemas, no puede resolver y/o no debería utilizarse para muchos problemas. La mayoría de los algoritmos de AA actuales no deberían utilizarse en ninguna de las siguientes condiciones:

Si no es ético. Repasaremos un caso de estudio en el que se puede argumentar que el uso de algoritmos de AA no es ético en la sección «Caso de estudio I: sesgos del calificador automatizado».

Si soluciones más sencillas funcionan. En el capítulo 6 cubriremos las cuatro fases del desarrollo de modelos de AA; la primera fase debe consistir en soluciones que no sean de AA.

No es rentable.

Sin embargo, incluso si el AA no puede resolver su problema, podría ser posible dividirlo en componentes más pequeños y utilizar el AA para resolver alguno de ellos. Por ejemplo, si no puede desarrollar un asistente virtual para que responda a todas las consultas de sus clientes, podría desarrollar un modelo de AA para predecir si una consulta coincide con una de las preguntas más frecuentes. En caso afirmativo, dirija al cliente a la respuesta. Si no, diríjalo al servicio de atención al cliente.

También me gustaría advertir de que no hay que descartar una nueva tecnología porque no sea tan rentable como las tecnologías existentes en el momento. La mayoría de los avances tecnológicos son graduales. Un tipo de tecnología puede no ser eficiente ahora, pero serlo con el tiempo y con más inversión. Si espera a que la tecnología demuestre su valía para el resto de la industria antes de incorporarla, puede acabar años o décadas detrás de sus competidores.

Casos de uso del aprendizaje automático

El AA se utiliza cada vez más en aplicaciones empresariales y de consumo. Desde mediados de la década de 2010 se ha producido una explosión de aplicaciones que aprovechan el AA para ofrecer a los consumidores servicios superiores o antes imposibles.

Con la explosión de información y servicios, nos habría resultado muy difícil encontrar lo que queremos sin la ayuda del AA, manifiesta en un motor de búsqueda o en un sistema de recomendación. Cuando visita un sitio web como Amazon o Netflix, se le recomiendan los artículos que, según las predicciones, mejor se ajustan a sus gustos. Si no le gusta ninguna de las recomendaciones, es posible que desee buscar artículos específicos y es probable que los resultados de su búsqueda se basen en AA.

Si tiene un teléfono inteligente, es probable que AA ya le ayude en muchas de sus actividades diarias. Escribir en el teléfono es más fácil con la escritura predictiva, un sistema de AA que le sugiere lo que quiere decir a continuación. Un sistema de AA puede funcionar en su aplicación de edición de fotos para sugerirle la forma óptima de mejorar sus fotos. Puede autenticarse con el teléfono utilizando su huella dactilar o su rostro, lo que requiere un sistema de AA para predecir si una huella dactilar o un rostro coinciden con los suyos.

El caso de uso del AA que me atrajo a este campo fue la traducción automática, traducir automáticamente de un idioma a otro. Tiene el potencial de permitir que personas de diferentes culturas se comuniquen entre sí, eliminando la barrera del idioma. Mis padres no hablan inglés, pero gracias a Google Translate ahora pueden leer lo que escribo y hablar con mis amigos que no hablan vietnamita.

El AA está cada vez más presente en nuestros hogares con asistentes personales inteligentes como Alexa y Google Assistant. Las cámaras de seguridad inteligentes pueden avisarle cuando sus mascotas salen de casa o si tiene un invitado no deseado. A un amigo mío le preocupaba que su madre anciana viviera sola —si se cae, no hay nadie para ayudarla a levantarse—, así que confió en un sistema de monitoreo médico en el hogar que predice si alguien se ha caído en la casa.

Aunque el mercado de las aplicaciones de AA para los consumidores está en auge, la mayoría de los casos de uso del AA siguen estando en el mundo empresarial. Las aplicaciones empresariales de AA suelen tener requisitos y consideraciones muy diferentes de las aplicaciones de consumo. Hay muchas excepciones pero, en la mayoría de los casos, las aplicaciones empresariales pueden tener exigencias de exactitud más estrictas, pero ser más indulgentes con los requisitos de latencia. Por ejemplo, mejorar la exactitud de un sistema de reconocimiento de voz del 95 % al 95.5 % puede no ser perceptible para la mayoría de los consumidores, pero mejorar la eficiencia de un sistema de asignación de recursos en tan solo un 0.1 % puede ayudar a una corporación como Google o General Motors a ahorrar millones de dólares. Al mismo tiempo, una latencia de un segundo podría hacer que un consumidor se distrajera y abriera otra cosa, pero los usuarios de empresa podrían ser más tolerantes con una latencia elevada. Para las personas interesadas en crear empresas a partir de aplicaciones de AA, las aplicaciones de consumo pueden ser más fáciles de distribuir, pero mucho más difíciles de monetizar. Sin embargo, la mayoría de los casos de uso empresarial no son obvios, a menos que uno mismo se los haya encontrado.

Según la encuesta de Algorithmia sobre el estado del aprendizaje automático en las empresas en 2020, las aplicaciones de AA son diversas y sirven tanto para casos de uso interno (reducción de costes, generación de información e inteligencia sobre los clientes, automatización de procesos internos) como para casos de uso externo (mejora de la experiencia del cliente, retención de clientes, interacción con ellos), como se muestra en la Figura 1-38.

Figura1 1-3.Estado del aprendizaje automático empresarial en 2020. Fuente: adaptado de una imagen de Algorithmia.

La detección del fraude es una de las aplicaciones más antiguas del AA en el mundo empresarial. Si su producto o servicio implica transacciones de algún valor, será susceptible de fraude. Al aprovechar las soluciones del AA para la detección de anomalías, puede disponer de sistemas que aprendan de las transacciones fraudulentas anteriores y predigan si una transacción futura será fraudulenta.

Decidir cuánto cobrar por su producto o servicio es probablemente una de las decisiones empresariales más difíciles; ¿por qué no dejar que el AA lo haga por usted? La optimización de precios es el proceso de estimar un precio en un periodo de tiempo determinado para maximizar una función objetivo definida, como el margen, los ingresos o la tasa de crecimiento de la empresa. La optimización de precios basada en el AA es más adecuada para casos con un gran número de transacciones, en los que la demanda fluctúa y los consumidores están dispuestos a pagar un precio dinámico (por ejemplo, anuncios en Internet, billetes de avión, reservas de alojamiento, viajes compartidos y eventos).

Para dirigir una empresa, es importante poder prever la demanda de los clientes para elaborar un presupuesto, almacenar existencias, asignar recursos y actualizar la estrategia de precios. Por ejemplo, si tiene una tienda de comestibles, debe tener existencias suficientes para que los clientes encuentren lo que buscan, pero no debe excederse porque, si lo hace, los comestibles pueden estropearse y usted puede perder dinero.

Adquirir un usuario nuevo es costoso. A partir de 2019, el coste medio para que una aplicación adquiera un usuario que hará una compra dentro de la aplicación es de 86.61 $9. El coste de adquisición de Lyft se estima en 158 $/viajero10. Este coste es mucho mayor para los clientes empresariales. Los inversionistas consideran que el coste de adquisición de clientes acaba con las empresas emergentes11. Reducir los costes de captación de clientes en una cantidad pequeña puede suponer un gran aumento de las ganancias. Esto puede hacerse identificando mejor a los clientes potenciales, mostrando anuncios mejor orientados, ofreciendo descuentos en el momento adecuado, etc. (todas ellas tareas adecuadas para el AA).

Después de haber gastado tanto dinero en captar a un cliente, sería una pena que se fuera. Se calcula que el coste de adquisición de un usuario nuevo es entre 5 y 25 veces más alto que el de retener a uno existente12. La predicción de bajas consiste en prever cuándo un cliente concreto está a punto de dejar de utilizar sus productos o servicios para poder tomar las medidas adecuadas para recuperarlo. La predicción de la pérdida de clientes puede utilizarse no solo para los clientes, sino también para los empleados.

Para evitar que los clientes se marchen, es importante mantenerlos contentos atendiendo a sus preocupaciones en cuanto surjan. La clasificación automatizada de los mensajes de asistencia puede ayudarle. Antes, cuando un cliente abría una solicitud de asistencia o enviaba un correo electrónico, primero debía procesarse y, luego, pasar por distintos departamentos hasta llegar a la bandeja de entrada de alguien que pudiera atenderlo. Un sistema de AA puede analizar el contenido del mensaje y predecir a dónde debe ir, lo que puede acortar el tiempo de respuesta y mejorar la satisfacción del cliente. También puede utilizarse para clasificar los mensajes informáticos internos.

Otro caso popular de uso del AA en la empresa es la supervisión de marcas. La imagen es un activo valioso para una empresa13. Es importante monitorear cómo perciben su imagen el público y sus clientes. Puede que quiera saber cuándo, dónde y cómo se menciona, tanto explícitamente (por ejemplo, cuando alguien menciona «Google») como implícitamente (por ejemplo, cuando alguien dice «el gigante de las búsquedas»), así como el estado de ánimo asociado a ello. Si de repente se produce un aumento del estado de ánimo negativo en las menciones de su marca, es posible que desee abordarlo lo antes posible. El análisis del estado de ánimo es una tarea típica del AA.

Un conjunto de casos de uso del AA que ha generado mucho entusiasmo recientemente es el de la atención sanitaria. Hay sistemas de AA que pueden detectar el cáncer de piel y diagnosticar la diabetes. Aunque muchas aplicaciones sanitarias están orientadas a los consumidores, debido a sus estrictos requisitos de exactitud y privacidad, suelen ofrecerse a través de un proveedor de atención sanitaria, como un hospital, o utilizarse para ayudar a los médicos a proporcionar diagnósticos.

Cómo entender los sistemas de aprendizaje automático

Comprender los sistemas de AA será útil para diseñarlos y desarrollarlos. En esta sección, repasaremos en qué se diferencian los sistemas de AA, tanto del AA de investigación (como se suele enseñar en la escuela) como del software tradicional.

El aprendizaje automático en la investigación y en la práctica

Como el uso del AA en la industria es todavía bastante nuevo, la mayoría de personas con experiencia en el AA la han adquirido a través de la academia: asistiendo a cursos, haciendo investigación o leyendo artículos académicos. Si esa es su experiencia, es posible que le resulte difícil comprender los retos que plantea la instalación de sistemas de AA en la vida real y navegar por un conjunto abrumador de soluciones para estos desafíos. El AA en la producción es muy diferente del AA en la investigación. En la Tabla 1-1 se muestran cinco diferencias principales.

Tabla 1-1.Diferencias clave entre el AA en la investigación y el AA en la producción.

 

Investigación

Producción

Requisitos

Rendimiento de los modelos más avanzados en conjuntos de datos de referencia

Las partes interesadas tienen necesidades diferentes

Prioridad informática

Formación rápida, rendimiento alto

Inferencia rápida, tardanza baja

Datos

Estáticosa

Cambios constantes

Equidad

A menudo no es un foco de atención

Debe considerarse

Interpretabilidad

A menudo no es un foco de atención

Debe considerarse

a Un subcampo de la investigación se centra en el aprendizaje continuo: desarrollar modelos que funcionen con distribuciones de datos cambiantes. Repasaremos el aprendizaje en línea en el capítulo 9.

Las distintas partes interesadas y los requisitos

Las personas que participan en un proyecto de investigación y liderazgo suelen alinearse en torno a un único objetivo. El objetivo más común es el rendimiento del modelo: desarrollar un modelo que obtenga los mejores resultados en conjuntos de datos de referencia. Para obtener una mejora pequeña en el rendimiento, los investigadores a menudo recurren a técnicas que hacen que los modelos sean demasiado complejos para ser útiles.

Son muchas las piezas que intervienen en la puesta en producción de un sistema de AA. Cada parte interesada tiene sus propios requisitos. Tener requisitos diferentes, a menudo conflictivos, puede dificultar el diseño, desarrollo y selección de un modelo de AA que satisfaga todos los requisitos.

Piense en una aplicación móvil que recomiende restaurantes a los usuarios. La aplicación gana dinero al cobrar a los restaurantes una tarifa de servicio del 10 % en cada pedido. Esto significa que los pedidos costosos le dan a la aplicación más dinero que los pedidos económicos. En el proyecto participan ingenieros de AA, vendedores, jefes de producto, ingenieros de infraestructura y un gerente.

Ingenieros de AA

Quieren un modelo que recomiende los restaurantes en los que es más probable que los usuarios pidan y creen que pueden hacerlo utilizando un modelo más complejo con más datos.

Equipo de ventas

Quiere un modelo que recomiende los restaurantes más caros, ya que estos restaurantes aportan más comisiones de servicio.

Equipo del producto

Observa que cada aumento en la latencia provoca un descenso en los pedidos a través del servicio, por lo que quiere un modelo que pueda ofrecer los restaurantes recomendados en menos de 100 milisegundos.

Equipo de la plataforma AA

A medida que crece el tráfico, este equipo ha tenido que despertarse en medio de la noche debido a problemas con el escalamiento de su sistema actual, por lo que quiere aplazar las actualizaciones del modelo para dar prioridad a la mejora de la plataforma del AA.

Gerente

Quiere maximizar el margen y una forma de lograrlo podría ser prescindir del equipo de AA14.

«Recomendar los restaurantes en los que es más probable que los usuarios pinchen» y «recomendar los restaurantes que aportarán más dinero a la aplicación» son dos objetivos diferentes, y en la sección «Separación de objetivos» hablaremos de cómo desarrollar un sistema de AA que satisfaga objetivos diferentes. Nota: Desarrollaremos un modelo para cada objetivo y combinaremos sus predicciones.

Imaginemos por ahora que tenemos dos modelos diferentes. El modelo A es en el que se recomiendan los restaurantes en los que es más probable que los usuarios hagan clic, y el modelo B es en el que se recomiendan los restaurantes que más dinero reportarán a la aplicación. A y B pueden ser modelos muy diferentes. ¿Qué modelo debe implementarse para los usuarios? Para dificultar la decisión, ni A ni B satisfacen el requisito establecido por el equipo de producto: no pueden ofrecer la recomendación de un restaurante en menos de 100 milisegundos.

Al desarrollar un proyecto de AA, es importante que los ingenieros comprendan los requerimientos de todas las partes implicadas y lo estrictos que son. Por ejemplo, si la capacidad de ofrecer recomendaciones en 100 milisegundos es un requisito imprescindible —la empresa ha descubierto que, si el modelo tarda más de 100 milisegundos en recomendar restaurantes, el 10 % de los usuarios perderá la paciencia y cerrará la aplicación—, ni el modelo A ni el modelo B funcionarán. Sin embargo, si se trata solo de un requisito deseable, puede que aún desee considerar el modelo A o el modelo B.

Una de las razones por las que los proyectos de investigación exitosos no siempre se utilizan en la producción es que los requisitos de esta son diferentes de los de la investigación. Por ejemplo, el ensamble es una técnica popular entre los ganadores de muchos concursos de AA —incluido el famoso premio de Netflix de un millón de dólares— y, sin embargo, no se utiliza ampliamente en la producción. El ensamble combina «múltiples algoritmos de aprendizaje para obtener un mejor rendimiento predictivo que el que se podría obtener de cualquiera de los algoritmos de aprendizaje involucrados por sí mismo»15. Si bien puede dar a su sistema de AA una pequeña mejora de rendimiento, el ensamble tiende a hacer que un sistema sea demasiado complejo para ser útil en la producción; por ejemplo, es más lento para hacer predicciones o los resultados son más difíciles de interpretar.

Para muchas tareas, una mejora pequeña en el rendimiento puede resultar en un gran aumento en los ingresos o en ahorro en el coste. Por ejemplo, una mejora del 0.2 % en la tasa de clics para un sistema de recomendación de productos puede resultar en millones de dólares en ingresos adicionales para un sitio de comercio electrónico. Sin embargo, para muchas tareas, una pequeña mejora puede no ser perceptible para los usuarios. Para el segundo tipo de tarea, si un modelo simple puede hacer un trabajo razonable, los modelos complejos deben funcionar significativamente mejor para justificar la complejidad.

Críticas a las tablas de clasificación del AA

En los últimos años, ha habido muchos críticos de las tablas de clasificación de AA, tanto en competiciones como Kaggle y tablas de clasificación de investigación como en ImageNET o GLUE.

Un argumento obvio es que en estas competiciones muchos de los pasos difíciles necesarios para construir sistemas de AA ya están hechos para uno16.

Un argumento menos obvio es que, debido al escenario de pruebas de hipótesis múltiples que ocurre cuando hay varios equipos realizando pruebas clasificatorias en el mismo conjunto de pruebas, un modelo puede hacerlo mejor que el resto solo por casualidad17.

El desajuste de intereses entre investigación y producción ha sido constatado por los investigadores. En un artículo de la EMNLP en 2020, Ethayarajh y Jurafsky argumentaron que los indicadores han ayudado a impulsar los avances en el procesamiento del lenguaje natural (PLN) al incentivar la creación de modelos más exactos a expensas de otras cualidades valoradas por los profesionales, como la compacidad, la equidad y la eficiencia energética18.

Prioridades informáticas

Al diseñar un sistema de AA, quienes no han instalado uno antes, a menudo cometen el error de centrarse demasiado en la parte de desarrollo del modelo y no lo suficiente en la parte de instalación y mantenimiento.

Durante el proceso de desarrollo, puede formar muchos modelos diferentes y cada modelo realiza bastantes pasadas sobre los datos de formación. A continuación, cada modelo formado genera predicciones sobre los datos de validación una vez para informar sobre los resultados. Los datos de validación suelen ser mucho más pequeños que los de formación. Durante el desarrollo del modelo, la formación es el cuello de botella. Sin embargo, una vez que el modelo ha sido instalado, su trabajo es predecir, por lo que la inferencia es el cuello de botella. La investigación suele priorizar la formación rápida, mientras que la producción suele priorizar la inferencia rápida.

Un corolario de esto es que la investigación prioriza un rendimiento alto, mientras que la producción prioriza una latencia baja. En caso de que necesite una actualización, la latencia se refiere al tiempo que transcurre desde que se recibe una consulta hasta que se devuelve el resultado. El rendimiento se refiere al número de consultas que se procesan en un periodo de tiempo específico.

Conflicto de terminología

Algunos libros hacen la distinción entre latencia y tiempo de respuesta. Según Martin Kleppmann en su libro Designing Data-Intensive Applications, «el tiempo de respuesta es lo que ve el cliente, además del tiempo real para procesar la solicitud (el tiempo de servicio), e incluye retrasos en la red y en la cola. La latencia es el tiempo que una solicitud espera para ser procesada, durante el cual está latente, esperando servicio»19.En este libro, para simplificar la discusión y ser coherentes con la terminología utilizada en la comunidad del AA, utilizamos la latencia para referirnos al tiempo de respuesta, por lo que la latencia de una solicitud mide el tiempo desde que se envía la solicitud hasta el momento en que se recibe una respuesta.

Por ejemplo, la latencia media de Google Translate es el tiempo medio que tarda desde que un usuario pincha en traducir hasta que se muestra la traducción, y el rendimiento es el número de consultas que procesa y atiende en un segundo.

Si el sistema procesa una consulta a la vez siempre, una latencia más alta significa un menor rendimiento. Si la latencia media es de 10 ms, lo que significa que se necesitan 10 ms para procesar una consulta, el rendimiento es de 100 consultas/segundo. Si la latencia media es de 100 ms, el rendimiento es de 10 consultas/segundo.

Sin embargo, debido a que la mayoría de sistemas distribuidos modernos realizan consultas por lotes para procesarlas en conjunto, a menudo de forma simultánea, una latencia mayor también podría significar un mayor rendimiento. Si procesa 10 consultas a la vez y tarda 10 ms en ejecutar un lote, la latencia media sigue siendo de 10 ms, pero el rendimiento es ahora 10 veces mayor: 1000 consultas/segundo. Si procesa 50 consultas a la vez y tarda 20 ms en ejecutar un lote, la latencia media ahora es de 20 ms y el rendimiento es de 2500 consultas/segundo. Tanto la latencia como el rendimiento han aumentado. La diferencia entre la latencia y el rendimiento para procesar consultas de una en una y procesar consultas en lotes se ilustra en la Figura 1-4.

Figura1 1-4.Cuando se procesan las consultas de una en una, una latencia mayor significa un rendimiento menor. Sin embargo, al procesar consultas en lotes, una latencia más alta también puede significar un rendimiento mayor.

Esto es aún más complicado si desea realizar consultas en línea por lotes. El procesamiento por lotes requiere que el sistema espere a que lleguen suficientes consultas en un lote antes de procesarlas, lo que aumenta aún más la latencia.

En la investigación, es más importante el número de muestras que se puedan procesar en un segundo (rendimiento) y menos importante el tiempo que se tarde en procesar cada muestra (latencia). Por ejemplo, puede aumentar la latencia para aumentar el rendimiento con un procesamiento por lotes agresivo.