El aprendizaje automático es el subcampo 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 datos de sensores o bases de datos. Wikipedia

Hace diez años, las compañías de aprendizaje automático prácticamente no existían, o podríamos decir que eran marginales en su mayoría. La razón principal de esa situación era simplemente que no había tantos algoritmos que realmente funcionaran y proporcionaran valor empresarial en ese momento. La traducción automática, por ejemplo, todavía apenas funciona y está muy lejos de ser utilizable en la mayoría de las empresas.

Lokad se inserta en el amplio campo del aprendizaje automático, con un interés específico en el aprendizaje estadístico. Personalmente, he estado trabajando en el campo del aprendizaje automático durante casi una década, y todavía es sorprendente ver cómo las cosas son profundamente diferentes en este campo en comparación con el típico mundo del software empaquetado. El aprendizaje automático es un mundo de software propio.

El progreso científico en áreas que parecían inteligencia artificial ha sido lento, muy lento en comparación con la mayoría de las otras áreas de software. Pero un hecho que se conoce muy poco es que el progreso científico también ha sido constante; y, en la actualidad, hay bastantes compañías exitosas de aprendizaje automático:

  • Filtro de spam inteligente: maldición, akismet atrapó más de 71,000 comentarios de spam en mi blog, con prácticamente cero falsos positivos según puedo decir.
  • Reconocimiento de voz: Dragon Dictate ahora está haciendo un trabajo bastante impresionante después de solo unos minutos de ajuste por parte del usuario.
  • Reconocimiento de escritura a mano e incluso reconocimiento de ecuaciones están incorporados en Windows 7.

El aprendizaje automático se ha vuelto convencional.

1. El producto cambia pero la interfaz de usuario permanece

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 el aprendizaje automático, el desarrollo generalmente no implica agregar ninguna nueva función. La mayor parte de la evolución ocurre en lo más profundo con cambios muy pequeños o nulos en la superficie. La Búsqueda de Google, probablemente el producto de aprendizaje automático más exitoso de todos, es notoriamente simple, y ha sido así durante una década. Últimamente, se ha agregado la personalización de clasificación 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 inactiva durante los últimos 10 años. Todo lo contrario, los equipos de Google han estado mejorando furiosamente su tecnología ganando batalla tras batalla contra los spammers web que ahora están utilizando trucos muy inteligentes.

2. Diez órdenes de magnitud en rendimiento

Cuando se trata del rendimiento del software, las operaciones habituales de software empaquetado se realizan en 100 ms. Por ejemplo, sospecho que los tiempos de cálculo habituales, en el lado del servidor, necesarios para generar una aplicación de página web oscilan entre 5 ms para las aplicaciones más optimizadas y 500 ms para las más lentas. Si es más lento que eso, los usuarios abandonarán la visita a su 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 cuando se trata del aprendizaje automático, los costos computacionales típicos varían en más de 10 órdenes de magnitud, desde milisegundos hasta semanas.

En la actualidad, 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 se puede comprimir en unas pocas horas de tiempo de pared a través de la paralelización a gran escala. Para la mayoría de los algoritmos de aprendizaje automático, la precisión se puede mejorar al dedicar más CPU a la tarea en cuestión.

Así que ganar un 1% de precisión con una inversión de 1 mes de CPU ($10) puede ser enormemente rentable, pero ese tipo de razonamiento es simplemente una locura para la mayoría, si no todos, las áreas de software fuera del aprendizaje automático.

3. Desafíos de escalabilidad extrema

Escalar un Web2.0 como Twitter es un desafío, pero, al final, el 90% de la solución se encuentra en una sola técnica: la caché en memoria de los elementos más vistos con mayor frecuencia.

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

El problema central del aprendizaje automático es que la forma más eficiente de mejorar la precisión consiste en agregar más datos de entrada. Por ejemplo, si quieres mejorar la precisión de tu filtro de spam, puedes intentar mejorar tu algoritmo, pero también puedes usar una base de datos de entrada más grande donde los correos electrónicos ya estén etiquetados como spam o no spam. De hecho, siempre que tengas suficiente capacidad de procesamiento, a menudo es mucho más fácil mejorar la precisión a través de datos de entrada más grandes que a través de algoritmos más inteligentes.

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

4. La retroalimentación del usuario suele estar completamente equivocada

Las personas inteligentes aconsejan realizar pruebas de usabilidad en el pasillo (hallway usability testing). Esto también se aplica a cualquier interfaz de usuario que coloques en tu producto de aprendizaje automático, pero cuando se trata de mejorar el núcleo de tu tecnología, la retroalimentación del usuario es prácticamente inútil e incluso perjudicial si se implementa realmente.

El problema principal es que, en el aprendizaje automático, 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 pronósticos planos que se perciben como incorrectos. Sin embargo, esos pronósticos planos son simplemente lo mejor para esos clientes, porque resultan ser más precisos.

Aunque tengo conocimientos sobre la filtración de spam, estoy bastante seguro de que el 99% de las sugerencias que se me ocurren y envío a la gente de Akismet serían simplemente basura para ellos, simplemente porque el desafío en la filtración de spam no es “cómo filtro el spam”, sino “cómo filtro el spam sin filtrar correos electrónicos legítimos”. Y sí, la gente de Pfizer tiene derecho a discutir por correo electrónico sobre compuestos de citrato de Sildenafil sin que todos sus correos electrónicos sean filtrados.

5. Pero los datos de los usuarios contienen la verdad

Los datos simulados y los escenarios en su mayoría no tienen sentido en el aprendizaje automático. Los datos reales suelen ser sorprendentes de muchas formas inesperadas. Trabajando en este campo durante 10 años, cada nuevo conjunto de datos que he investigado ha sido sorprendente de muchas maneras. Es completamente inútil trabajar con tus propios datos inventados. Sin datos reales de clientes disponibles, no puedes hacer nada en el aprendizaje automático.

Este aspecto en particular conduce frecuentemente al problema del huevo y la gallina en el aprendizaje automático: si quieres comenzar a optimizar la visualización de anuncios contextuales, necesitas una gran cantidad de anunciantes y editores. Sin embargo, sin una gran cantidad de anunciantes y editores, no puedes mejorar tu tecnología y, en consecuencia, no puedes convencer a una gran cantidad de anunciantes y editores a unirse.

6. 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 el aprendizaje automático, reescribir desde cero es frecuentemente la única forma de salvar tu empresa.

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

Ajustar y mejorar incrementalmente es el corazón de la ingeniería de software clásica, y también es válido para el aprendizaje automático - la mayoría de las veces. Ganar el siguiente porcentaje de precisión se logra con frecuencia ajustando y refinando un algoritmo existente, diseñando toneladas de mecanismos de informes ad hoc en el proceso para obtener una comprensión más profunda del comportamiento del algoritmo.

Sin embargo, cada nuevo porcentaje de precisión 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 está simplemente estancada en un callejón sin salida.

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

Al final, progresar en el aprendizaje automático significa con frecuencia probar enfoques que están condenados a fracasar con una alta probabilidad. Pero de vez en cuando, algo realmente funciona y la tecnología da un salto adelante.