Abril de 2019

Volumen 34, número 4

[Aprendizaje automático]

Inteligencia de bucle cerrado: Un patrón de diseño para el aprendizaje automático

Por Geoff Hulten | Abril de 2019

Hay muchos artículos excelentes sobre el uso del aprendizaje automático para crear modelos e implementarlos. Estos artículos son similares a los que enseñan técnicas de programación, ya que también ofrecen valiosos conocimientos básicos con gran detalle. Pero, para ir más allá de crear ejemplos ficticios, se necesita otro conjunto de aptitudes. En los sistemas tradicionales, estas aptitudes se traducen en enfoques basados en la ingeniería de software, la arquitectura de software o los modelos de diseño para organizar grandes sistemas de software, y los equipos de personas que los crean para conseguir el impacto deseado.

En este artículo se presentan algunos aspectos en los que tendrá que pensar a la hora de agregar un proceso de aprendizaje automático al proceso de ingeniería de software tradicional, como:

Conexión del aprendizaje automático con los usuarios: qué significa cerrar el bucle entre los usuarios y el aprendizaje automático.

Selección del objetivo adecuado: saber qué parte del sistema se puede mejorar con el aprendizaje automático y cómo facilitar su evolución con el tiempo.

Implementación con aprendizaje automático: los sistemas que necesitará compilar para admitir una solución basada en aprendizaje automático que perdure y que no necesitaría crear para un sistema tradicional.

Sistemas de aprendizaje automático operativos: qué esperar cuando se ejecuta un sistema basado en aprendizaje automático a lo largo del tiempo.

Por supuesto, la primera pregunta es determinar cuándo necesita usar el aprendizaje automático. Un factor clave en la decisión es con qué frecuencia cree que tendrá que actualizar una aplicación hasta que esté bien. Si el número es pequeño (por ejemplo, 5 o 10 veces), probablemente, el aprendizaje automático no es la mejor opción. Sin embargo, si el número es grande (por ejemplo, cada hora mientras exista el sistema), puede que necesite aprendizaje automático.

Hay cuatro situaciones que, claramente, requieren varias actualizaciones a modo de solución:

  • Grandes problemas: algunos problemas son grandes. Tienen tantas variables y condiciones a abordar que no se pueden resolver de una vez.
  • Problemas con un final abierto: muchos problemas carecen de una única solución fija y requieren servicios que perduren y crezcan durante largos periodos de tiempo.
  • Problemas que cambian con el tiempo: si el dominio cambia de forma impredecible, drástica o frecuente, puede que sea recomendable considerar el aprendizaje automático.
  • Problemas intrínsecamente difíciles: los problemas complejos, como el reconocimiento de voz, y la predicción y simulación del tiempo, se pueden beneficiar del aprendizaje automático, pero, a menudo, solo después de años de esfuerzo invertido en recopilar datos de entrenamiento, entender los problemas y desarrollar inteligencia.

Si su problema tiene una de estas propiedades, puede que el aprendizaje automático sea una buena solución. Si no, quizás sea recomendable empezar con un enfoque más tradicional. Si puede lograr su objetivo con un enfoque tradicional, a menudo será más barato y sencillo.

Conexión del aprendizaje automático con los usuarios

Cerrar el bucle consiste en crear un ciclo virtuoso entre la inteligencia de un sistema y su uso. A medida que la inteligencia mejora, los usuarios pueden aprovechar mejor el sistema (y, presumiblemente, usarlo más). Y, a medida que más usuarios usan el sistema, generan más datos que permiten mejorar la inteligencia.

Usemos un motor de búsqueda como ejemplo. Una usuaria escribe una consulta y obtiene algunas respuestas. Si alguna le resulta útil, hace clic y está satisfecha. Pero el motor de búsqueda también obtiene valor de esta interacción. Cuando los usuarios hacen clic en respuestas, el motor de búsqueda puede ver en qué páginas se ha hecho clic y en respuesta a qué consultas, y puede usar esta información para adaptarse y mejorar. Cuantos más usuarios usen el sistema, más oportunidades de mejora se crearán.

Pero un bucle cerrado correctamente no sucede por accidente. Para que funcione, debe diseñar una experiencia de usuario que dé forma a las interacciones entre los usuarios y la inteligencia, de modo que se produzcan datos de aprendizaje útiles. Las buenas interacciones tienen las siguientes propiedades:

Los componentes de la interacción están claros y son fáciles de conectar. Las buenas interacciones permiten capturar el contexto en que estaban el usuario y la aplicación en el momento de la interacción, la acción que realizó el usuario y el resultado de la interacción. Por ejemplo, un recomendador de libros debe saber qué libros tiene el usuario y cuánto le gustan (contexto), qué libros se recomendaron al usuario y si compró alguno de ellos (acción), y si el usuario acabó satisfecho con la compra o no (resultado).

El resultado debe ser directo e implícito. Una buena experiencia permite interpretar el resultado de las interacciones implícitamente al observar al usuario usar el sistema de forma natural (en lugar de requerir que proporcione calificaciones o comentarios). Además, no habrá demasiado tiempo ni demasiadas interacciones no pertinentes entre el usuario que realiza la acción y obtiene el resultado.

No tienen sesgos (o tienen pocos). Una buena experiencia será consciente de cómo los usuarios experimentan los posibles distintos resultados y no conducirá a los usuarios sistemáticamente o inconscientemente a notificar más o menos categorías de resultados de las reales. Por ejemplo, todos los usuarios consultan su bandeja de entrada en un programa de correo electrónico, pero muchos nunca consultan su carpeta de correo no deseado. Así pues, el mal resultado de tener un mensaje de correo no deseado en la bandeja de entrada se notificará con mucha más frecuencia que el mal resultado de tener un mensaje legítimo en la carpeta de correo no deseado.

No contienen bucles de comentarios. Un bucle cerrado puede sufrir comentarios que componen errores. Por ejemplo, si el modelo comete un error que suprime una acción popular, los usuarios dejarán de seleccionar la acción (porque está suprimida) y el modelo podría aprender que la supresión de la acción fue correcta (porque la gente dejó de usarla). Para abordar los bucles de comentarios, una experiencia debe proporcionar maneras alternativas de acceder a acciones suprimidas y considerar cierta aleatoriedad a la hora de modelar los resultados.

Estos son algunos de los aspectos básicos de la conexión del aprendizaje automático con los usuarios. El aprendizaje automático casi siempre será más eficaz cuando la experiencia del usuario y el aprendizaje automático estén diseñados para admitirse entre sí. Hacer esto bien puede habilitar todo tipo de sistemas que resultarían increíblemente caros de implementar de otro modo.

Selección del objetivo adecuado

Una propiedad interesante de los sistemas con aprendizaje automático incorporado es que funcionan peor el día en que se envían. Una vez que cierre el bucle entre los usuarios y los modelos, el sistema no dejará de mejorar con el tiempo. Esto significa que puede comenzar con un objetivo fácil y reorientarse hacia objetivos más difíciles a medida que mejora el sistema.

Imagine que diseña un automóvil autónomo. Podría trabajar en él hasta que estuviera totalmente perfecto y, a continuación, enviarlo. O bien podría empezar con un subproblema más sencillo, como la evitación de colisiones frontales. De hecho, podría crear exactamente el mismo coche para evitar colisiones frontales que crearía para la conducción totalmente autónoma: todos los controles, todos los sensores, etc. Pero, en lugar de establecer un objetivo de automatización completa, que es muy difícil, define el objetivo de reducir las colisiones, que es más fácil de administrar.

Dado que evitar las colisiones es una característica valiosa de por sí, algunas personas comprarán su coche y lo usarán, lo que proporcionará datos que podrá utilizar con aprendizaje automático para crear modelos cada vez mejores. Cuando esté listo, puede establecer un objetivo un poco más difícil, como, por ejemplo, seguimiento de carriles, que proporciona aún más valor a los usuarios y establece un ciclo virtuoso mientras trabaja en última instancia hacia un vehículo autónomo.

Este proceso puede llevar meses. Puede llevar años. Pero, seguramente, será más barato que intentar crear un automóvil autónomo sin un bucle cerrado entre usuarios y el aprendizaje automático.

Normalmente, puede encontrar formas de escalar sus objetivos a medida que los modelos mejoran. Por ejemplo, un filtro de correo no deseado que, inicialmente, mueve estos mensajes a una carpeta de correo no deseado, podría mejorar más adelante para eliminar los mensajes de correo no deseado directamente. Y un sistema de detección de defectos de fábrica podría marcar los objetos para inspeccionarlos más como primer objetivo y, más tarde, descartar automáticamente los objetos defectuosos a medida que los modelos mejoren.

Es importante establecer un objetivo que se pueda lograr con los modelos que puede crear hoy en día, y es genial cuando consigue que crezca el proceso de aprendizaje automático para completar más y más objetivos interesantes con el tiempo.

Implementación con aprendizaje automático

Los sistemas creados para resolver problemas grandes, de final abierto, que evolucionan con el tiempo o son intrínsecamente difíciles requieren muchas actualizaciones a lo largo de su vigencia. La implementación del sistema puede hacer que estas actualizaciones sean económicas y seguras, o que resulten caras y arriesgadas. Existen muchas opciones para hacer que un sistema basado en el aprendizaje automático sea más flexible y eficiente con el tiempo. Estas son algunas inversiones habituales:

Entorno de ejecución de inteligencia. Para usar el aprendizaje automático, debe seguir unos pasos básicos, como implementar un entorno de ejecución que cargue y ejecute modelos, incluya el contexto de la aplicación y ofrezca a los usuarios las experiencias adecuadas en función de lo que digan los modelos. Un entorno de ejecución puede ser sencillo; por ejemplo, vincular una biblioteca con el cliente. Pero también se puede usar uno complejo que admita cosas como:

  • Cambios en los tipos de modelos que se usan con el tiempo; por ejemplo, cambiar de reglas sencillas a enfoques de aprendizaje automático más complejos a medida que comprende mejor el problema.
  • Combinar modelos que se ejecutan en el cliente, en el servicio y en el back-end, y permitir a los modelos migrar entre ubicaciones con el tiempo según las necesidades de costo y rendimiento.
  • Compatibilidad con la reversión cuando las implementaciones tienen algún problema, y formas de reemplazar rápidamente los costosos errores específicos que, con toda probabilidad, generará el aprendizaje automático.

Administración de inteligencia. A medida que aparecen nuevos modelos disponibles, se deben ingerir y entregar donde se necesitan. Por ejemplo, los modelos se pueden crear en un laboratorio en la sede central corporativa, pero se deben ejecutar en los clientes de todo el mundo. O, quizás, los modelos se ejecuten parcialmente en un back-end y parcialmente en un servicio. Puede confiar en las personas que generan los modelos para realizar todas las implementaciones, la verificación y la sincronización, o puede crear sistemas que lo hagan.

Telemetría de inteligencia. Un sistema de telemetría eficaz para el aprendizaje automático recopila datos para crear modelos cada vez mejores. La implementación de inteligencia debe decidir qué se observa, de qué se hacen muestras, y cómo se asimila y resume la información para permitir la creación de inteligencia, así como la forma de proteger la privacidad del usuario durante el proceso. La telemetría puede resultar muy cara y las necesidades de telemetría cambiarán durante la vigencia de un sistema basado en aprendizaje automático, por lo que, a menudo, tiene sentido implementar herramientas para permitir la adaptabilidad y controlar costos.

Entorno de creación de inteligencia. Para que los sistemas basados en aprendizaje automático funcionen correctamente, debe haber una gran coordinación entre el tiempo de ejecución, la entrega, la supervisión y la creación de los modelos. Por ejemplo, para generar modelos precisos, el creador del modelo debe poder recrear exactamente lo que sucede en tiempo de ejecución, aunque los datos del creador del modelo procedan de la telemetría y se ejecuten en un laboratorio, mientras que los datos del entorno de ejecución proceden de la aplicación y se ejecutan en el contexto de la aplicación.

Las discrepancias entre la creación del modelo y el entorno de ejecución son una fuente común de errores, y los profesionales del aprendizaje automático no suelen ser las personas más adecuadas para localizar errores. Por este motivo, una implementación puede hacer que los profesionales del aprendizaje automático sean mucho más productivos, ya que puede proporcionar una experiencia de creación de inteligencia coherente.

Para todos estos componentes (el entorno de ejecución, la administración de inteligencia, la telemetría de inteligencia y la creación de inteligencia), podría implementar una solución sencilla que realizara acciones básicas y dependiera de continuas inversiones en ingeniería para adaptarse con el tiempo. O bien podría crear algo flexible con herramientas profesionales para usuarios que no sean ingenieros para que pudieran reorientarse hacia nuevos objetivos de un modo económico, rápido y con la confianza de no arruinar nada.

Orquestación de inteligencia

La orquestación de inteligencia es, de alguna forma, como un coche de carreras. Todo un equipo de personas fabrica un coche con la tecnología más reciente y ajusta cada alero aerodinámico, resistencia, motorreductor y válvula de entrada a la perfección. Crean una máquina increíble que puede hacer cosas que no puede hacer ninguna otra máquina.

Y, luego, alguien debe ponerse detrás del volante, llevarlo a la pista y ganar.

Los orquestadores de inteligencia son esos conductores. Controlan el sistema inteligente y hacen lo necesario para que logre sus objetivos. Usan los sistemas de administración y creación de inteligencia para producir la inteligencia adecuada en el momento adecuado y combinarla de la forma más útil. Controlan el sistema de telemetría y recopilan los datos necesarios para mejorar sus modelos. También se ocupan de todos los errores y problemas, y lo equilibran todo para que la aplicación produzca el máximo valor posible para los usuarios y la empresa.

Puede que ahora mismo esté diciendo: "Un momento, pensaba que el aprendizaje automático ajustaba el sistema a lo largo de su ciclo de vida. ¿Qué es esto? ¿Es una broma?" Lamentablemente, no. La inteligencia artificial y el aprendizaje automático llegan hasta donde llegan. La orquestación consiste en tomar esas herramientas y colocarlas en las mejores situaciones para que puedan generar valor (resaltar sus puntos fuertes y compensar sus puntos débiles) y, al mismo tiempo, reaccionar a medida que las cosas cambian con el tiempo. La orquestación podría ser necesaria porque:

El objetivo cambia: cuando se trabaja en algo, se llega a entender mejor. Es posible que haya definido un objetivo incorrecto y quiera adaptarlo. O, por qué no, puede que el bucle cerrado entre los usuarios y los modelos tenga tanto éxito que quiera apuntar más alto.

Los usuarios cambian: vendrán nuevos usuarios (y se alegrará) y se irán antiguos usuarios (y puede que llore), pero todos los usuarios le aportan nuevos contextos, nuevos comportamientos y nuevas oportunidades de adaptar sus modelos.

El problema cambia: los enfoques y las decisiones que tomó en el pasado podrían no ser adecuadas en el futuro. A veces, un problema puede ser fácil (como cuando todos los spammers están de vacaciones). Otras veces, puede ser muy difícil (como cerca de vacaciones). A medida que el problema cambia, casi siempre surge una oportunidad para adaptarse y conseguir resultados mejores mediante la orquestación.

La calidad de los modelos cambia: los datos desbloquean las posibilidades. Algunas de las técnicas de aprendizaje automático no son efectivas con "pequeños" datos, pero se hacen viables cuando los usuarios acceden a su sistema y obtiene montones de datos. Estos tipos de cambios pueden desbloquear todo tipo de potencial para probar experiencias nuevas u orientarse a objetivos más agresivos.

El costo de ejecutar el sistema cambia: los grandes sistemas necesitan equilibrar el costo y el valor continuamente. Puede que sea capaz de cambiar su experiencia o modelos de forma que pueda ahorrar un montón de dinero con una mínima reducción de valor para los usuarios o la empresa.

Alguien intenta hacer un mal uso del sistema: por desgracia, Internet está lleno de trols. Alguien podría querer hacer un mal uso del sistema porque le parezca divertido. La mayoría querrá hacer un mal uso del servicio (y los usuarios) para hacer dinero o para que le resulte más difícil hacer dinero. Si no se soluciona, un mal uso puede arruinar el sistema y convertirlo en una cloaca de correo no deseado y riesgo de que los usuarios lo abandonen.

Con toda probabilidad, tendrá que enfrentarse a uno o más problemas similares durante el ciclo de vida del sistema basado en el aprendizaje automático. Al aprender a identificarlos y adaptarse, puede convertir estos problemas potenciales en oportunidades.

La implementación de sistemas basados en el aprendizaje automático y su orquestación son actividades muy distintas. Requieren mentalidades muy distintas. Y ambas son absolutamente fundamentales para tener éxito. Los buenos orquestadores:

  • Son expertos de dominio en el negocio del sistema y comprenden los objetivos de los usuarios de forma instintiva.
  • Comprenden la experiencia y tienen la capacidad de observar las interacciones y realizar adaptaciones efectivas en la forma de presentar resultados de modelo a los usuarios.
  • Comprenden la implementación, de modo que saben cómo hacer un seguimiento de los problemas y tienen cierta capacidad para realizar pequeñas mejoras.
  • Son capaces de formular preguntas de datos, y comprender y comunicar los resultados.
  • Conocen el aprendizaje automático aplicado y pueden controlar los procesos de creación de modelos, así como inyectar modelos nuevos en el sistema.
  • Se sienten satisfechos al hacer que un sistema se ejecute de forma efectiva todos los días.

Resumen

El aprendizaje automático es una herramienta fantástica. Pero aprovechar al máximo el aprendizaje automático requiere mucho más que generar un modelo y hacer algunas predicciones. Requiere agregar las aptitudes de aprendizaje automático al resto de técnicas que usa para organizar grandes sistemas de software y los equipos de personas que los forman.

Este artículo ofrece una muy breve introducción de un modelo de diseño para usar el aprendizaje automático a escala: el patrón del sistema de inteligencia de bucle cerrado. Esto incluye saber cuándo necesita el aprendizaje automático, qué significa cerrar el bucle entre usuarios y aprendizaje automático, cómo volver a equilibrar el sistema para lograr objetivos más significativos a lo largo del tiempo, qué implementaciones pueden hacerlo más eficiente y más seguro a la hora de adaptarlo, y algunas cosas que podrían pasar al ejecutar el sistema a lo largo del tiempo.

La inteligencia artificial y el aprendizaje automático están cambiando el mundo y es un momento emocionante para implicarse en ellos.


Geoff Hulten es el autor de “Building Intelligent Systems” (Creación de sistemas inteligentes, intelligentsystem.io/book/). Ha administrado proyectos de aprendizaje automático aplicado durante más de una década e impartido un curso de aprendizaje automático de nivel de máster en la Universidad de Washington. Su investigación ha aparecido en importantes conferencias internacionales, se ha citado miles de veces y ha ganado el premio SIGKDD Test of Time por sus influyentes contribuciones a la comunidad de investigación de minería de datos que han resistido la prueba del tiempo.

Gracias al siguiente experto técnico de Microsoft por revisar este artículo: Puede James McCaffrey