- Nada es Gratis - https://nadaesgratis.es -

Aprendizaje profundo I

Go El martes pasado concluía en Seúl la quinta y final partida de go (wéiqí en Chino) entre Lee Sedol, quizás el jugador actual más competitivo, y AlphaGo, un programa desarrollado por Google DeepMind, una subsidiaria de Google especializada en inteligencia artificial. El resultado final, 4-1, fue una victoria rotunda de la maquina sobre el ser humano.

Aunque mis habilidades con go, habiendo llegado al juego ya muy mayor, son prácticamente inexistentes, en mi familia hay varios jugadores apasionados del mismo que han dedicado, siguiendo una tradición milenaria en China, muchos años (algunos incluso décadas) al estudio de este arte (algo ahora facilitado por las muchas apps existentes para el iPad). Es natural, pues, que siguiésemos las cinco partidas con interés inusitado (incluyendo el parar en medio de Hyde Park en Londres para comprobar en el iPhone los últimos movimientos de cada jugador).

En comparación con el ajedrez o las damas, y a pesar de tener unas reglas a primera vista muy sencillas, go es un juego que genera muchas más combinaciones posibles de movimientos. El numero total de partidas legales de go se calcula en torno a mientras que el numero de partidas legales en ajedrez es “solo” de y en damas de un casi trivial . Esta diferencia de 50/150 órdenes de magnitud implica que el enfoque de “fuerza bruta” (literalmente, comprobar muchísimas jugadas posibles y seleccionar aquellas que maximicen el valor de la posición de las piezas en el tablero después de varias rondas de movimientos) que está en el centro del los programas tradicionales de ajedrez o de damas resulte de menos utilidad en el juego asiático. Como consecuencia principal, un programa competitivo de go al mayor nivel tiene que diseñarse con un enfoque alternativo basado en inteligencia artificial; es decir, ha de ser un programa que de alguna manera “entienda” cómo está jugando más que simplemente comprobar todas (o casi todas) las posibilidades existentes gracias a su potencia computacional y seleccionar la mejor entre ellas.[1] Incluso entre los seres humanos, la intuición, el estilo personal y la imitación de los grandes maestros del pasado tiene mucho más importancia en go que en ajedrez; lo cual también explica porque el pico de calidad de los jugadores profesionales en go a menudo llega muy pronto en su carrera y que se puedan escribir novelas como El Maestro de Go, de Yasunari Kawabata.

Y aunque muchos observadores conjeturaban que tal programa de go llegaría tarde o temprano, ha causado cierta sorpresa que haya sido en 2016. Elon Musk (el CEO de Tesla y un buen conocedor el mundo de la alta tecnología) ha citado un adelanto de diez años sobre las predicciones existentes. Tan recientemente como 2015, los mejores programas de go solo alcanzaban al nivel de un amateur sofisticado pero no podían competir con jugadores profesionales. AlphaGo, aplicando técnicas de aprendizaje profundo (en inglés, deep learning) se ha saltado esos 10 años y nos ha dejado a todos un pelín descolocados (aunque también ha habido voces escépticas sobre la generalidad de la contribución, como en este artículo de Gary Marcus).

En mi caso personal, el interés por el encuentro entre Lee Sedol y AlphaGo se reforzaba por la observación de que llevo un año trabajando en la aplicación en economía de algoritmos de aprendizaje automático (en inglés, machine learning), que incluyen los algoritmos de aprendizaje profundo como un subconjunto importante de los mismos. Y dado que este miércoles tengo que hablar sobre aprendizaje automático en economía (lo siento, no es una charla pública y no tengo transparencias que pueda circular), escribir una serie de dos entradas en NeG sobre los mismos me sirve para pulir la introducción a la misma. Dada la extensión del material a cubrir, hoy hablaré sobre el aprendizaje automático más en general y la semana que viene sobre el aprendizaje profundo que esta detrás de AlphaGo.

El aprendizaje automático es un conjunto de algoritmos diseñados para permitir que un código de ordenador aprenda sobre patrones en los datos. En vez de especificar una larga lista de atributos de los objetos a estudiar (como hacían los sistemas expertos antiguos), los algoritmos de aprendizaje automático comienzan con un simple modelo del mundo para clasificar observaciones y una serie de reglas para modificar tal modelo según el éxito del mismo. Dado que la mayoría de los ejemplos en los libros y en internet no son de economía y que los lectores de este blog podrán, llegados a este momento, estar preguntándose qué tiene todo esto que ver con nuestro campo de investigación, déjenme que les de un ejemplo. De hecho este ejemplo es el que empleo en mi propio trabajo.

Imaginémonos que disponemos de una base de datos muy amplia de la estructura financiera de empresas, como Compustat. Esta base de datos nos suministra información sobre el capital, deuda, bonos, ventas, crecimiento, etc. de un amplio abanico de empresas a lo largo de varias décadas. La cantidad de información en la misma es tremenda. El procedimiento tradicional de los economistas para analizar empíricamente tal información se ha basado en dos líneas de ataque.

Una primera línea de ataque

La primera línea de ataque, a veces llamada de forma reducida, busca especificar regresiones entre distintas variables observadas basándose en una mezcla de intuición y ligera teoría. Por ejemplo, el investigador regresa el apalancamiento de la empresa contra su tasa de crecimiento o la industria en la que opera. La idea es que, por ejemplo, si una empresa crece deprisa es probable que quiera apalancarse para aprovechar las oportunidades y financiar tal crecimiento. Este bien citado trabajo de Murray Frank y Vidhan Goyal es un ejemplo representativo de esta estrategia empírica.

Las desventajas de esta estrategia empírica son obvias. Solo por citar un problema entre muchos otros, uno nunca sabe hasta que punto los patrones documentados en los datos son espurios, producto quizás del azar, del prolongado esfuerzo del investigador de corroborar sus preconcepciones o del sesgo de publicación (es mucho más fácil publicar resultados positivos que negativos). Buena parte del esfuerzo de la econometría actual es buscar criterios de credibilidad basados en un análisis explícito de las fuentes de la identificación que permitan solventar estas dudas con un grado razonable de confianza.

Pero incluso olvidándonos de estos problemas, nos queda siempre la inquietud de que, con bases de datos amplias, incluso el investigador más perspicaz puede perderse y no descubrir patrones empíricos interesantes. Cualquiera que haya corrido regresiones complejas y presentado las mismas en público ha sufrido la experiencia de ver como un miembro de la audiencia levanta la mano y le pregunta “¿has probado x?” y pensar para uno mismo: “¿cómo no se me ha ocurrido a mi tan obvia pregunta?” Con la llegada de bases de datos masivas (en inglés, big data) este problema de mero manejo de los datos se hace cada vez más agudo, en especial en aplicaciones industriales, donde se necesitan calcular millones de regresiones con miles de potenciales regresores de manera cotidiana.

Un algoritmo de aprendizaje automático intenta explorar esta base de datos y buscar patrones empíricos robustos. En vez, por ejemplo, de probar todas y cada una de las especificaciones de regresión posibles (un problema de complejidad exponencial), podemos construir sencillos programas que encuentren relaciones en los datos y emplear las mismas para entender nuestra base de datos y predecir comportamientos futuros.

En una entrada de este blog, no puedo más que arañar la superficie de estos algoritmos, pero el libro de texto más popular sobre el tema es este de Kevin P. Murphy. Es un manual amplio, detallado y fácil de seguir. De todas maneras, y solo por ser un poco más concreto, voy a explicar la idea básica detrás de una búsqueda voraz (greedy search en inglés), un algoritmo de aprendizaje automático muy extendido y sencillo de programar.

Imaginemos que comenzamos construyendo una regresión -regularizada del apalancamiento de una empresa contra un conjunto de variables observadas como su tasa de crecimiento, el sector en el que opera o las características de su gobernanza corporativa. La regularización nos permite penalizar aquellas especificaciones que sobre-ajustan los datos. Las variables observadas pueden ser seleccionadas aleatoriamente (si que queremos un algoritmo totalmente automático) o con unas suposiciones rápidas previas (en inglés, an educated guess). De hecho, podemos comenzar incluso con un conjunto vacío de regresores, lo que facilita la generalización del algoritmo a problemas donde tiene que ser implementado miles de veces.

Una vez estimada la primera regresión -regularizada (o si estamos empleando un conjunto vacío, después de inicializar el programa), seleccionamos aleatoriamente una variable de las no incluidas entre los regresores para ser incluida en la segunda regresión y seleccionamos, de nuevo de manera aleatoria, una variable incluida en la primera regresión (excepto cuando comenzamos con el conjunto vacío) para ser eliminada. La selección aleatoria puede realizarse con una probabilidad positiva de no movimiento (es decir de no eliminar una variable ya existente o de no incluir una nueva variable), para que el número total de regresores sea, en si mismo, una variable aleatoria. Una vez realizado este remplazo, estimamos la nueva regresión y comprobamos una medida de ajuste a los datos. Medidas populares incluyen el nivel de la verosimilitud marginal o, en el caso de que tal verosimilitud marginal sea costosa de computar, la moda de la distribución a posteriori del modelo (este tipo de algoritmos se suelen anidar en algún tipo de Monte Carlo por Cadenas de Markov). El algoritmo puede continuar iterando en las regresiones regularizadas hasta que no se aprecien mejoras en el ajuste del modelo a los datos.

La experiencia de correr esta clase de algoritmos nos suele demostrar dos lecciones. Primero, que el ajuste va a “saltos”. En muchas iteraciones apenas avanzamos: el algoritmo parece estancado. Y, de repente, un pequeño cambio en el conjunto de regresores, trae consigo una mejora sustancial que es seguida en las siguientes iteraciones por otras mejoras importantes, antes de volverse de nuevo a estabilizar. Aquellos lectores con conocimientos de evolución reconocerán en este patrón un caso de equilibrios puntuados como los propuestos por Niles Eldredge y Stephen Jay Gould (no voy a discutir, pues no es mi campo si tales equilibrios puntuados existen o no en biología evolutiva; solo resalto que en optimización aleatoria tales equilibrios puntuados se ven todo el rato).

Segundo, que el resultado final a veces es increíblemente contra-intuitivo: los regresores que importan para ajustar los datos no son los que uno hubiese pensado. No voy a entrar en la interpretación de si estos regresores tienen o no sentido económico o de si esto ayuda a “entender” el mundo. Lo que si que conozco con 100% certeza (y aquí estoy sujeto a “non-disclosure agreements” con fuerza legal, así que he de ser deliberadamente ambiguo) es que muchas empresas han descubierto que tales regresiones aleatorias les sirven para predecir francamente bien la cantidad de unidades de un bien que necesitan almacenar en sus diferentes centros de distribución incluso cuando la regresión parece no “tener sentido” alguno. Y muchos jugadores de go pensaron que algunos de los movimientos de AlphaGo eran totalmente contra-intuitivos en tiempo real y, sin embargo, al final del día tenían mucho sentido. En otras palabras, la búsqueda aleatorizada nos hace descubrir regiones de configuraciones de la regresión o de comportamiento que no habríamos explorado de otra manera.

Una segunda línea de ataque

Mencionaba anteriormente que frente a la técnica de formas reducidas, existía una segunda línea de ataque de los economistas a los problemas empíricos (y una línea en la que yo he trabajado mucho más): el enfoque estructural. Este enfoque plantea un modelo económico explícito y, en vez de estimar regresiones, estima los parámetros que indician tal modelo (por ejemplo, los parámetros estructurales de la función de utilidad, funciones de producción o conjuntos de información). No es este el momento de repasar los argumentos a favor o en contra de este segundo enfoque. Solo apuntar rápido que los algoritmos de aprendizaje automático también tienen un papel que jugar en esta clase de enfoques, en particular en la solución de problemas de optimización de alta dimensionalidad en el corazón de los mismos (esto es, en concreto, el problema en el que estoy trabajando ahora mismo; bueno, en cuanto acabe de colgar esta entrada).

A modo de conclusión rápida

No soy, ni muchísimo menos, el primer economista en trabajar en estos temas. Susan Athey lleva años trabajando en cosas similares (aunque desde un enfoque distinto del mío). Aquí, por ejemplo, Athey discute varias de las ideas del campo y aquí, con Guido Imbens, dando unas clases magistrales sobre el tema.

En el otoño tengo programadas unas clases sobre aprendizaje automático. Si tengo tiempo de preparar unas transparencias con las que esté contento y AlphaGo Skynet no nos ha convertido en sus esclavos, las colgaré en internet y las anunciaré aquí en NeG. Mientras tanto y en espera de la segunda entrada de esta serie el martes que viene, como dice una máquina de aprendizaje automático: “hasta la vista, baby!”

1. Los programas de ajedrez o de damas no son particularmente intrigantes desde el punto de vista de inteligencia artificial: aunque incorporan ideas interesantes de como evaluar posiciones en el tablero o de como simplificar la búsqueda de movimientos eliminando ramas del árbol de decisión de manera temprana, como reitero en el texto principal, al final del día se centran en la aplicación de fuerza bruta computacional. La victoria de DeepBlue sobre Kasparov en 1997, mientras que prueba significativa del avance en la velocidad de procesamiento, no era un cambio cualitativa en la capacidad de los ordenadores de descubrir estrategias de comportamiento óptimo. De igual manera que un ordenador puede calcular muchísimo más rápido que cualquier humano, un ordenador moderno puede evaluar muchos más movimientos de ajedrez, pero en cierto sentido no hay “mayor secreto” en ello.