Entendiendo el Software 2.0

“El Software (1.0) se está comiendo el mundo, y ahora la IA (Software 2.0) se esta comiendo el Software.” Andrej kaparthy

Figura 1. Pacman representando al software 2.0 comiendose al software 1.0

En 2017, el ex director de Inteligencia Artificial de Tesla, escribió una publicación que hablaba de un nuevo paradigma: el Software 2.0. Según Andrej Karpathy, las redes neuronales han dado lugar a una nueva forma de desarrollar software.

Tomemos un ejemplo concreto: enseñar a un programa a reconocer dígitos escritos a mano. Con el desarrollo de software tradicional, tendríamos que codificar manualmente numerosas y complejas reglas para identificar e interpretar correctamente los dígitos numéricos y sus diversas variaciones debido a los estilos de escritura, indudablemente un proceso complicado y propenso a errores.

Figura 2. Números MNIST

En cambio, con una red neuronal convolucional, que es un red neuronal especializada en el procesamiento de imágenes, entrenaríamos al modelo con miles de ejemplos de imágenes de dígitos etiquetados. De esta manera, la red neuronal aprenderá por sí misma las características que definen cada número sin necesidad de que un desarrollador de software codifique esas reglas manualmente.

Video 1. Demo de una Red Convolucional por Yan Le Cunn en el año 1989

Hasta ahora, el software tradicional se ha desarrollado con programadores que escriben código, línea por línea, definiendo exhaustivamente la lógica de los programas. Luego, este código se compila para crear la aplicación final.

El nuevo paradigma del Software 2.0 funciona de forma diferente. Los principales protagonistas aquí son los datos y la arquitectura de red neuronal. Esta última proporciona una estructura básica para el código, pero con multiples detalles o parámetros, como los pesos, que deben determinarse o ajustarse durante el entrenamiento. Además, otros parámetros, como el sesgo, el número de capas y la función de activación, son cruciales en el desempeño de la red neuronal.

Luego, mediante entrenamiento y optimización de la red neuronal, ésta es capaz de aprender patrones y comportamientos definidos en los datos. Es como si los datos se compilaran dentro del modelo, creando un programa (modelo) entrenado para realizar esa tarea específica.

Tal como menciona Andrej, estamos presenciando una transición masiva en la industria tecnológica, donde una gran parte del código 1.0 se está migrando a código 2.0. A continuación, examinaremos algunos ejemplos específicos de áreas donde se han visto grandes avances en los últimos años gracias a la adopción de este nuevo paradigma.

  • El Reconocimiento Visual pasó de utilizar ingeniería de caracteristicas, con un poco de machine learning, a emplear redes neuronales convolucionales entrenadas en grandes conjuntos de datos, como ImageNet.

Figura 3. Validación de una Clasificación de Imágenes

El Reconocimiento de Voz antes se basaba en modelos probabilísticos como los gaussianos y los modelos ocultos de Markov. Sin embargo, hoy en día consiste casi totalmente en redes neuronales.

Figura 4. Arquitectura Deep Voice 3.

La Síntesis de Voz históricamente usaba técnicas de empalme, es decir, la unión o concatenación de pequeños fragmentos de audio grabado previamente para formar el habla sintética. Pero los modelos actuales de punta, como WaveNet, son redes neuronales convolucionales que generan señales de audio directamente.

Figura 5. Gráfico que muestra la comparación de WaveNet con otras voces sintéticas y la voz humana.

La Traducción Automática se abordaba con técnicas estadísticas basadas en frases, es decir, separando el texto en segmentos más pequeños que se traducían por separado. Pero las redes neuronales se están volviendo dominantes, especialmente en entornos multilingües.

Figura 6. Aprendizaje secuencia a secuencia con un codificador RNN y un decodificador RNN.

En Juegos como Go, los programas solían estar completamente codificados de forma manual, pero ahora modelos como AlphaGo Zero basados en redes neuronales superan ampliamente a los humanos.

Fgura 6. Evolución de AlphaGo Zero de 0 a 40 días hasta convertirse en el mejor jugador de Go en el mundo.

  • En Bases de Datos y otros sistemas tradicionales, se comienzan a ver mejoras al reemplazar componentes centrales, como los índices de búsqueda, con redes neuronales entrenadas. Estas pueden optimizar consultas y el uso de memoria de manera más efectiva que las estructuras tradicionales codificadas manualmente.

En el post original, Andrej comparte muchos links a papers de investigación que corresponden a Google. Y que según él esto se debe a que Google se encuentra a la vanguardia reescribiendo grandes partes de su código a Software 2.0. De hecho, investigadores de Google anticiparon esta tendencia en el artículo del 2017 titulado: “One Model to Learn Them All”, donde proponen la visión de desarrollar modelos de IA únicos y muy grandes, entrenados con grandes cantidades de datos multimodales (texto, audio, imágenes, etc.), que puedan aprender múltiples tareas de forma unificada en lugar de crear sistemas de IA especializados en tareas individuales.

Recuerda, el post original fue escrito en el 2017 y muchas cosas locas e increíbles han pasado en el campo de la IA desde entonces. Desde modelos de lenguaje revolucionaros como GPT-3, GPT-4, Bard hasta Claude 2.

Leave a Comment