Machine learning es la subrama de la inteligencia artificial que se ocupa del diseño y desarrollo de algoritmos que permiten a las computadoras mejorar su rendimiento con el tiempo basándose en datos, como por ejemplo datos de sensores o bases de datos. Wikipedia

Hace diez años, las empresas de machine learning eran prácticamente inexistentes, o, digamos, marginales en el mejor de los casos. La razón principal de esa situación era simplemente que en ese entonces no había tantos algoritmos funcionando realmente y aportando valor empresarial. La traducción automática, por ejemplo, todavía funciona a duras penas y está muy lejos de ser utilizable en la mayoría de los negocios.

Lokad encaja en el amplio campo de machine learning, con un interés específico en el aprendizaje estadístico. Personalmente, he trabajado en el campo de machine learning durante casi una década, y sigue siendo sorprendente ver lo profundamente diferente que es este campo en comparación con el típico mundo del software empaquetado. Machine learning es un mundo de software propio.

El progreso científico en áreas que parecían de inteligencia artificial ha sido lento, muy lento en comparación con la mayoría de las otras áreas del software. Pero otro hecho poco conocido es que el progreso científico ha sido constante; y, en la actualidad, hay bastantes empresas de machine learning exitosas alrededor:

  • Filtro inteligente de spam: caray, akismet atrapó más de 71 000 comentarios spam en mi blog, con prácticamente cero falsos positivos, hasta donde puedo saber.
  • Reconocimiento de voz: Dragon Dictate ahora hace un trabajo bastante impresionante tras apenas unos minutos de ajuste por parte del usuario.
  • El reconocimiento de escritura a mano e incluso el reconocimiento de ecuaciones están integrados en Windows 7.

Machine learning se ha vuelto convencional.

  1. El producto cambia, pero la interfaz de usuario se mantiene

Para la mayoría de las empresas de software, presentar algo nuevo a los ojos del cliente es LA forma de obtener ingresos recurrentes. El SaaS está cambiando lentamente este aspecto financiero, pero aún así, para la mayoría de los productos SaaS, la evolución viene con cambios muy tangibles en la interfaz de usuario.

Por el contrario, en machine learning, el desarrollo generalmente no implica añadir ninguna nueva función. La mayor parte de la evolución ocurre en las profundidades con muy pocos o ningún cambio visible. Google Search - probablemente el producto de machine learning más exitoso de todos - es notoriamente simple, y ha sido así durante ya una década. Últimamente, se ha añadido la personalización de rankings basada en las preferencias del usuario, pero este cambio ocurrió casi 10 años después del lanzamiento y, supongo, aún pasa desapercibido para la mayoría de los usuarios.

Sin embargo, esto no significa que la gente de Google haya estado de brazos cruzados durante los últimos 10 años. Al contrario, los equipos de Google han estado mejorando furiosamente su tecnología, ganando batalla tras batalla contra spammers de la web que ahora emplean trucos muy ingeniosos.

  1. Diez órdenes de magnitud en rendimiento

Cuando se trata de rendimiento de software, las operaciones habituales de software empaquetado suceden en menos de 100ms. Por ejemplo, sospecho que los tiempos habituales de cómputo, del lado del servidor, necesarios para generar una aplicación web oscilan entre 5ms para las aplicaciones más optimizadas y 500ms para las más lentas. Si son más lentos que eso, tus usuarios dejarán de visitar tu sitio web. Aunque es difícil de verificar, sospecho que este rango de rendimiento es válido para el 99% de las aplicaciones web.

Pero en lo que respecta a machine learning, los costos computacionales típicos varían en más de 10 órdenes de magnitud, desde milisegundos hasta semanas.

Actualmente, el precio de 1 mes de CPU a 2Ghz ha bajado a $10, y espero que este precio baje a menos de $1 en los próximos 5 años. Además, un mes de CPU puede comprimirse en unas pocas horas de tiempo real gracias a la paralelización a gran escala. Para la mayoría de los algoritmos de machine learning, accuracy se puede mejorar dedicando más CPU a la tarea en cuestión.

Así, ganar un 1% en accuracy con una inversión de 1 mes de CPU ($10) puede ser enormemente rentable, pero ese tipo de razonamiento es una total locura para la mayoría, si no todas, de las áreas del software fuera de machine learning.

  1. Desafíos extremos de escalabilidad

Escalar una Web2.0 como, por ejemplo, Twitter, es ciertamente un desafío, pero, al final, el 90% de la solución reside en una única técnica: la caché en memoria de los elementos más vistos.

Por el contrario, escalar algoritmos de machine learning suele ser una tarea terriblemente complicada. A Google le tomó varios años lograr realizar la diagonalización de matrices dispersas a gran escala (PageRank); y el álgebra lineal, claramente, no es el área de las matemáticas más desafiante cuando se trata de problemas de machine learning.

El problema central del machine learning es que la forma más eficiente de mejorar tu accuracy consiste en añadir más datos de entrada. Por ejemplo, si deseas mejorar la accuracy de tu filtro de spam, puedes intentar perfeccionar tu algoritmo, pero también puedes utilizar una base de datos de entrada más grande donde los correos ya estén marcados como spam o no spam. De hecho, siempre que dispongas de suficiente poder de procesamiento, con frecuencia es mucho más fácil mejorar tu accuracy mediante un mayor volumen de datos de entrada que a través de algoritmos más inteligentes.

Sin embargo, manejar grandes cantidades de datos en machine learning es un problema complicado porque no puedes particionar tus datos de forma ingenua. Una partición ingenua equivale a descartar datos de entrada y a realizar cálculos locales que no aprovechan todos los datos disponibles. En resumen: machine learning necesita formas muy inteligentes de distribuir sus algoritmos.

  1. El feedback de los usuarios suele ser completamente erróneo

Las personas inteligentes aconsejan realizar pruebas de usabilidad en pasillos. Esto también se aplica a cualquier interfaz de usuario que implementes en tu producto de machine learning, pero cuando se trata de mejorar el núcleo de tu tecnología, el feedback de los usuarios es prácticamente inútil, e incluso puede resultar perjudicial si se implementa.

El principal problema es que, en machine learning, la mayoría de los comportamientos buenos / correctos / esperados son, desafortunadamente, contraintuitivos. Por ejemplo, en Lokad, una queja frecuente de los clientes es que entregamos flat forecasts que se perciben como incorrectos. Sin embargo, esos flat forecasts son en realidad lo mejor para esos clientes, porque resultan ser más precisos.

Aunque teniendo conocimientos sobre el filtrado de spam, estoy bastante seguro de que el 99% de las sugerencias que se me ocurren y envío al equipo de akismet les parecerían simplemente basura, porque el reto en el filtrado de spam no es cómo filtrar spam, sino cómo filtrar spam sin bloquear correos legítimos. Y sí, la gente de Pfizer tiene derecho a discutir por email sobre compuestos de Sildenafil citrate sin que todos sus correos sean filtrados.

  1. Pero los datos de los usuarios guardan la verdad

Los datos simulados y los scenarios en su mayoría no tienen sentido en machine learning. Los datos reales resultan sorprendentes de muchas maneras inesperadas. Tras 10 años trabajando en este campo, cada nuevo conjunto de datos que he investigado ha resultado sorprendente en muchos aspectos. Es completamente inútil trabajar con tus propios datos caseros. Sin datos reales de clientes, no se puede hacer nada en machine learning.

Este aspecto en particular conduce frecuentemente a un problema del huevo y la gallina en machine learning: si quieres comenzar a optimizar la exhibición de anuncios contextuales, necesitas una gran cantidad de anunciantes y editores. Sin embargo, sin una gran cantidad de anunciantes y editores, no puedes perfeccionar tu tecnología y, en consecuencia, no puedes convencer a muchos anunciantes y editores de unirse.

  1. Ajuste vs. Matemáticas, Evolución vs. Revolución

Las personas inteligentes aconsejan que reescribir desde cero es el tipo de error estratégico que frecuentemente mata a las empresas de software. Sin embargo, en machine learning, reescribir desde cero es frecuentemente la única manera de salvar tu empresa.

A finales de los años noventa, Altavista, el motor de búsqueda líder, no se tomó el tiempo de reescribir su tecnología de ranking basada en las locas ideas matemáticas fundamentadas en la diagonalización a gran escala. Como resultado, fueron superados por una pequeña empresa (Google) dirigida por un grupo de personas inexpertas.

El ajuste y la mejora incremental son el corazón de la ingeniería de software clásica, y también se aplican en machine learning - la mayor parte del tiempo. Lograr el siguiente porcentaje de accuracy se consigue frecuentemente afinando y perfeccionando un algoritmo existente, diseñando montones de mecanismos de reporte ad-hoc en el proceso para obtener una comprensión más profunda del comportamiento del algoritmo.

Sin embargo, cada nuevo porcentaje de accuracy de esa manera te cuesta diez veces más esfuerzo que el anterior; y después de un par de meses o años, tu tecnología queda simplemente estancada en un callejón sin salida.

Ahí es donde entran en juego las matemáticas fundamentales. Las matemáticas son críticas para dar el salto a la siguiente etapa de rendimiento, ese tipo de salto en el que logras una mejora del 10% que parecía ni siquiera posible con el enfoque anterior. Luego, probar nuevas teorías es como jugar a la ruleta: la mayor parte del tiempo, pierdes, y la nueva teoría no aporta mejoras adicionales.

Al final, avanzar en machine learning significa, con mucha frecuencia, intentar enfoques que están condenados al fracaso con una alta probabilidad. Pero de vez en cuando, algo realmente funciona y la tecnología da un gran salto hacia adelante.