Automatización de procesos: “Automatizando automatismos”

Cada vez es mayor la necesidad de automatizar procesos que durante años se han hecho manualmente. Actualmente ya realizamos multitud de tareas mediante procesos automáticos (o automatización de procesos) que hacen todo o parte del trabajo sin interacción ninguna por nuestra parte. Podemos encontrar en nuestra vida cotidiana numerosos ejemplos de procesos que han pasado por una automatización y que hoy en día apenas apreciamos: arrancar el motor de un coche, enviar un email, instalar un dispositivo o lavar nuestra ropa.

Tareas como éstas, que podemos lanzar con solo pulsar un botón, no siempre fueron tan fáciles como ahora. En otros tiempos requerían de varias subtareas en las cuales la interacción humana era imprescindible. Estos automatismos nos hacen ganar un tiempo que podemos aprovechar para otras tareas no tan automatizables, y con ello, encaminarnos hacia una sociedad más avanzada.

La automatización de procesos ha vivido un crecimiento exponencial en la última década, potenciado, principalmente, por unas tecnologías de inteligencia artificial cada día más manejables. Actualmente usamos automatismos que ya no vemos para nada extraños ni sorprendentes. Ejemplos: Google adivinando la siguiente palabra en nuestras búsquedas, llamar a un teléfono y que nos atienda un robot, Spotify sugiriendo música o Youtube vídeos, el procesador de texto corrigiendo nuestros textos, etc. Todos ellos están ya presentes en nuestra vida y cada cierto tiempo un nuevo automatismo es añadido a esta lista.  

No es de extrañar que, dado el auge de los automatismos, haya expertos que empiecen a preguntarse si se puede ir más allá. Las empresas ya conocen en menor o mayor medida como automatizar procesos complejos. Esto les hace conscientes de un hecho bastante importante: entre diferentes procesos de automatización de tareas existe siempre cierta intersección en sus operaciones. Esto nos lleva al concepto base de discusión en este artículo: la automatización de automatismos.  

Imitando al humano

Una de las aproximaciones de automatización de automatismos más aceptadas es la de aprendizaje por imitación. El enfoque se define como la habilidad de una herramienta para asistir a un usuario en una tarea, derivando su automatización de la observación del desempeño de esa misma tarea.

Un ejemplo de este enfoque es el que da Peter Sikking en su blog: “La UI de edición no destructiva de GIMP”. En este sistema, las acciones del usuario actualizan un grafo que describe la relación entre las imágenes de entrada y las operaciones que, al combinarlas, crean la de salida. En vez de hacer una actualización destructiva del mapa de bits, el usuario está interactivamente creando un programa que genera la salida esperada. Es decir, se crea un automatismo sin necesidad de ningún conocimiento especial por parte del usuario.

Análogamente, en la edición de texto no es solo guardar el buffer, sino el historial entero de acciones de edición que han llevado del documento vacío original al estado actual. De esta manera, no se captura sólo el resultado del esfuerzo del usuario (olvidando el esfuerzo en sí), sino todo el trabajo llevado a cabo. Esto tiene numerosas ventajas inmediatas, como undo ilimitado y no linear, comparación de versiones, eliminación de fichero/guardar, etc. Aparte, el historial de acciones contiene una información que puede ser muy útil en futuras ediciones.

Automatizar la detección y recomendación

En este punto entra en juego el segundo paso de la automatización de automatismos: automatizar la detección y recomendación de lo que puede ser automatizado. Cuando se edita un texto, por ejemplo, un HTML, una de las acciones comunes es añadir la etiqueta <p> y tras el contenido en cuestión la etiqueta de cierre </p>. Después de hacerlo un par de veces, un editor de texto suficientemente inteligente puede reconocer este patrón y ofrecer añadir las etiquetas en los siguientes párrafos del texto automáticamente. Para ello, el editor debe inferir el patrón, extrapolar y sugerir una continuación razonable.

Esto, por supuesto, no se reduce solo a HTML. La idea es que creemos lo que necesitamos (desde HTML a un texto como éste) y dejemos al editor derivar transformaciones. Por ejemplo, el corrector ortográfico puede aprender de nuestros errores, y ya no sólo identificarlos, sino que además puede sugerir correcciones basándose en ediciones anteriores.

Podemos trazar una línea desde lo no automático a la total automatización de automatismos, donde el sistema se convierte en un asistente, recomendando acciones que le permiten hacer parte del trabajo de manera autónoma. Los sistemas actuales tienen automatismos, pero raramente son construidos o extendidos por los usuarios finales del sistema. Construyendo herramientas que permiten automatizar los automatismos, aquéllos que hacen las tareas tienen también el poder de automatizarlas.

¿Dónde están los límites?

Los sistemas actuales que implementan el enfoque de imantación, llamado técnicamente learning apprentice (o human in the loop), suelen estar basados en Machine Learning (ML). Para producir una tarea de aprendizaje bien definida, a la cual podamos aplicar un algoritmo de ML, se deben de especificar las tareas, las métricas de rendimiento, y una experiencia de entrenamiento. En la mayoría de las aplicaciones prácticas, la tarea que va a ser aprendida corresponde a una función objetivo.

Por ejemplo, una función que dada una entrada de historiales médicos de un paciente obtenga como salida un diagnóstico del paciente, o también una función que dadas unas entradas de los sensores de un coche de conducción autónoma obtenga el siguiente comando de dirección.

Erik Brynjolfsson (MIT y NBER) y Tom Mitchell (Carnegie Mellon University) en su artículo de la revista Science  identifican ocho criterios a tener en cuenta para identificar tareas donde ML puede brillar al automatizar automatismos. Estos criterios, a su vez, ayudan también a ahuyentar a quien vea ML como candidato para resolver un problema no apropiado para esta tecnología.

Lista de criterios:

  1. Aprender una función que asigna entradas bien definidas a salidas bien definidas.
  2. Existen o pueden ser creados grandes conjuntos de pares entrada-salida.
  3. La tarea proporciona feedback claro con metas y métricas claramente definibles.
  4. No hay largas cadenas de lógica o de razonamiento que dependen de un background diverso o del sentido común.
  5. No hay necesidad de tener una explicación detallada de cómo se ha tomado una decisión.
  6. Tener tolerancia a errores y no necesitar soluciones probablemente correctas u óptimas.
  7. El fenómeno o función que se está aprendiendo no debe cambiar rápidamente con el tiempo.
  8. No se requiere una destreza especializada, habilidades físicas o movilidad.

Hasta el infinito y más allá

Acabamos repasando la situación actual, lo cual nos ayudará a entrever el futuro que viene. Actualmente, ya encontramos tecnologías muy potentes que aplican la idea de automatizar automatismos. Uno de los ejemplos más recientes lo encontramos en el sistema Commit Assistant de la compañía francesa de desarrollo de videojuegos Ubisoft (Assassin’s Creed, Far Cry, etc…). Su objetivo principal es anticiparse a los errores de los programadores. Así, cuando un programador de la compañía introduce un bug en su código, el sistema es capaz de identificarlo e incluso sugerir una corrección.

Para la compañía ha requerido lo que podríamos decir un esfuerzo menor, ya que la herramienta se basa en los millones de commits internos realizados durante los últimos 10-15 años, información que, por descontado, es a coste cero para la empresa. Sin embargo, el impacto económico esperado puede ser absolutamente satisfactorio, sobre todo si se tiene en cuenta que la corrección de errores es uno de los grandes sangrantes económicos de los proyectos.

Encontramos también propuestas para la automatización de micro servicios REST. La idea es evitar errores mediante el uso de automatización de ciertas tareas que se repiten constantemente y que, por tanto, están haciendo aquello de reinventar la rueda. Siguiendo una política similar nos encontramos frameworks de automatización, que conciben la automatización como algo automatizable proporcionando APIs, servicios web, plantillas para acceso sencillo e incluso tiendas donde comprar automatizaciones iguales o similares a la objetivo.

Todos estos ejemplos, y los nuevos que van saliendo cada día, desvelan un futuro donde los automatismos cada vez van a tener más protagonismo. Por tanto, incorporar estas tecnologías es clave para las empresas, no solo por el mero hecho de no quedar desfasadas, sino también porque les puede reportar grandes ganancias desde el momento cero de su puesta en marcha.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *