Lecturas y videos para el fin de año: Aprendizaje automático

tpu

Uno de los desarrollos más relevantes de este convulso 2016 ha sido la difusión de las ideas del aprendizaje automático entre el gran público. Sin ir más lejos, hace unos días, este extenso pero maravilloso artículo de Gideon Lewis-Kraus en el Magazine del New York Times nos explicaba como el nuevo traductor de Google Brain -basado en aprendizaje automático y que acaba de ponerse en circulación- incrementaba de manera sorprendente la calidad de las traducciones con respecto a las que teníamos hace solo unos meses atrás. Lewis-Kraus, además, nos resumía la fascinante historia intelectual detrás de esta mejora e incluía enlaces a algunos de los artículos más relevantes de la literatura.

En NeG nos hemos seguido estos desarrollos con interés. En marzo hablé, en una serie de dos entradas (primera y segunda), sobre el concepto de aprendizaje automático, sobre una versión del mismo particularmente potente (el aprendizaje profundo; el video justo debajo es otra introducción) y sobre como un programa basado en este enfoque había derrotado al mejor jugador de go del mundo. En septiembre, en una entrada muy leída, comenté como los economistas empezaban a emplear estas técnicas y del interés de la industria en contratar a estudiantes con conocimientos de las mismas.

En esa entrada critiqué, además, los planes de estudio actuales de muchas (¿la mayoría?) de las facultades de economía en España. Mientras estos planes están cargados de asignaturas que llamé, a falta de mejor nombre, “institucionales”, las horas lectivas dedicadas a los métodos cuantitativos son claramente insuficientes. Por ejemplo, este plan de estudios de la Universidad Complutense de Madrid, la que ofrece más plazas de toda España, está mal diseñado: no ofrece a los estudiantes los conocimientos adecuados para el mundo actual y, en cambio, hace perder el tiempo con asignaturas de dudoso valor añadido.

Este es el motivo por el cual, para concluir un año en el que hemos ofrecido a nuestros fieles lectores muchas recomendaciones de videos y lecturas (desde algunas más de economía a otras menos relacionadas con la misma), merece la pena escribir una breve guía sobre el aprendizaje automático.

Cuento para ello con dos ventajas con respecto a las entradas anteriores de este año. La primera ventaja es la experiencia de haber enseñado, de manera experimental, estas ideas en clase. Este año he incluido en mi curso de métodos computacionales un módulo sobre aprendizaje automático y sus aplicaciones en economía. Creo que el módulo ha sido recibido con mucho interés: un estudiante ya ha decido escribir su tesis sobre el tema y otros estudiantes presentaron propuestas muy creativas de cómo aplicar estas ideas en un amplio abanico de problemas. Dar clase siempre le aclara a uno lo que hay que enfatizar y lo que puede ser saltado sin mayor coste. La segunda ventaja es el interés propio en continuar refinando los contenidos a cubrir en una versión más extensa de dicho modulo que probablemente enseñaré en mayo en Oxford (Nuffield College y el departamento de economía me han invitado generosamente a pasar varias semanas con ellos y dar un par de clases).

elements

La primera lección que he extraído es la importancia de no emplear mucho tiempo hablando de las potencialidades del aprendizaje automático en otras áreas del conocimiento o de la industria. Recientemente estuve en un seminario en el que los autores malgastaron 45 minutos describiendo como estas técnicas servían para reconocimiento facial o de voz. Algo que está bien saber, pero que ralentizó de manera excesiva la entrada en los detalles concretos de lo que el trabajo intentaba alcanzar (especificar una red neuronal profunda para la predicción del PIB y la inflación). Además, muchos de los algoritmos de aprendizaje automático tienen claros paralelos con estimadores tradicionales en econometría y uno puede entrar en el análisis de los mismos partiendo de estos conocimientos previos. Por ejemplo, un estimador lasso, que tan útil resulta para seleccionar un subconjunto de regresores en situaciones donde existen decenas de posibles variables, no es nada más que la moda de una distribución a posteriori de una regresión lineal cuando las distribuciones a priori de los coeficientes son una laplace. Una referencia a algún libro popular, como este de Pedro Domingos, puede sustituir fácilmente una introducción más general o reducirla de manera notable. Para aquellos que quieran ver cómo encaja el aprendizaje automático dentro del campo general de la inteligencia artificial, esta clase de MIT (a pesar de tener ya unos años) puede ser un buen lugar para aprender, en especial al estar los videos de la misma en youtube:

Un libro general sobre inteligencia artificial es Artificial Intelligence: A Modern Approach (3rd Edition) de Stuart Russell y Peter Norvig.

La segunda lección es que, al menos a mi entender y como consecuencia de la primera lección, es mejor centrarse en enfoques más formales que en los intuitivos o los que descansen en exceso en la acumulación de técnicas concretas dictadas por el software preferido por el autor. Empecé a preparar mis clases con el libro de Kevin Murphy, Machine Learning: A Probabilistic Perspective (que había recomendado en marzo), pero a la mitad cambié a The Elements of Statistical Learning: Data Mining, Inference, and Prediction (second edition), de Trevor Hastie, Robert Tibshirani y Jerome Friedman. Este segundo libro es mucho más homogéneo en su presentación del material y los argumentos, al ser más rigurosos técnicamente, terminan siendo mucho más transparentes. Mientras que leer a Murphy sigue siendo una excelente idea (y cualquier estudiante serio de este campo debe adquirir una copia del mismo), en mayo recomendaré como libro principal The Elements of Statistical Learning... Otros libros de complemento que he empleado son Deep Learning de Ian Goodfellow, Yoshua Bengio y Aaron Courville y una versión en borrador de Deep Learning: A Practitioner's Approach de Josh Patterson y Adam Gibson. Una visión más global sobre los nuevos métodos en estadística aparece en la excelente monografía Computer Age Statistical Inference: Algorithms, Evidence, and Data Science de Bradley Efron (el inventor del bootstrap) y Trevor Hastie y sobre lasso, Statistical Learning with Sparsity: The Lasso and Generalizations, de Trevor Hastie, Robert Tibshirani y Martin Wainwright (sí, los autores se repiten en un libro detrás de otro).

lasso

La tercera lección es el uso adecuado de los recursos existentes en internet. El NBER tiene unas clases dadas por Guido Imbens y Susan Athey. Las clases y las transparencias de Imbens me gustaron bastante. Las de Athey me parecieron menos eficaces en transmitir el conjunto de información que me hubiese apetecido encontrar. Andrew Ng tiene dos clases, una en coursera y otra en Stanford. La clase de coursera es demasiado ligera para servir de mucho. La clase de Stanford merece la pena, pero a veces las explicaciones son un tanto enrevesadas. Finalmente la clase de Pedro Domingos es clarita y sencilla. Un buen complemento para el material expuesto en el módulo principal. Más avanzada es esta clase de aprendizaje profundo y este es un enlace a las unidades de procesamiento tensorial que se están desarrollando para computar estos problemas y una foto de las cuales encabeza esta entrada (otra explicación de estas unidades aquí y un reciente taller en Barcelona sobre estas técnicas).

r-packages

La cuarta lección es la alta calidad de los paquetes existentes en R para implementar la mayoría de los algoritmos. Aquí hay una lista de los mismos. Una combinación de R, Rcpp, RStudio (más los paquetes standard de ggplot2, knitr, dplyr o markdown) con los paquetes anteriormente enlazados me parece una elección muy sensata de medio ambiente de trabajo para aprendizaje automático y profundo. Un ejemplo sobre bosques aleatorios en este video:

Concluyo aquí enlazando un video de John Searle sobre el concepto de conciencia en inteligencia artificial. Dado su famoso experimento mental de la habitación china parece una buena idea. No es esta una entrada extensa pero sí densa. Las lecturas y videos enlazados le permitirán a uno estar ocupado por varias semanas, sobre todo en estas fechas de vacaciones en los que alguno podrá tener más tiempo libre. Yo, tristemente, tengo que volver ahora a preparar clases y terminar proyectos. Nos vemos en el 2017, que esperemos sea mejor que el 2016 (el listón no está muy alto).

Hay 26 comentarios
  • Estoy totalmente de acuerdo con lo que has dicho, en valencia he tenido 3 asignaturas de politica economica, 2 asignaturas de empresa(con exactamente el mismo temario),¡¡¡una de tecnicas de aprendizaje y estudios!!! Con un examen sobre la composicion de los distintos campus univeristarios, y algunas asignaturas que daban muy poco temario para ser 4trimestrales, luego llegas a un master de eco y tanto en mates como en tecnicas cuantitativas y a los profesores les toca perder tiempo con estas cosas... Es un una verguenza que 30 creditos de una carrera de eci se dediquen a cosas como estas....

    • Efectivamente, tienes toda la razon. Las asignaturas de politica economica tendrian que ser eliminadas. La parte de politicas micro se tiene que dar en economia publica y la parte de politicas macro en macro. Si queda algo sobre como se implementan las politicas en la practica (como los efectos de los grupos de presion) puede ir a una optativa de political economics (lo escribo en ingles para que no haya confusion con "economia politica", expresion que cada uno entiede como quiere).

      Como comente en la entrada en septiembre, en agosto compre varios de los manuales de economia española, economia mundial y politica economica mas comunes en las facultades españolas hoy en dia. El nivel era infimo y el numero de errores tremendo. En particular, en uno de economia española, habia una unos errores sobre politica fiscal garrafales.

      Lo de las tecnicas de aprendizaje y estudios tambien me parece para ponerse a temblar, pero como yo no las sufri (si que sufri, en comparacion, politica economica) me da mas apuro criticarlas.

      • ¿Por qué crees que sucede eso? (la mala calidad de los manuales en la universidad española, me refiero)

        • Dos motivos:

          1) La historica dificultad de leer en ingles, que limitaba el uso de manuales extranjeros. Estando yo en el ultimo año de la carrera de E-3, un profesor nos dio un sumplemento de The Economist sobre la economia mundial y mis compañeros de clase quisieron dividirlo en partes para traducirlo y asi "estudiarlo" mejor. Yo me negue a traducir mi parte (me iba a Minnesota en unos meses a estudiar el doctorado! ya tenia la admision) y se enfadaron conmigo. Si en 1996 no conseguias convencer a estudiantes en E-3 (que se suponia daban 5 años de ingles en la carrera) a leer unos pocos articulos en The Economist en ingles, imaginate. Espero que quizas ahora las cosas hayan cambiado en terminos de ingles pero la penetracion de mercado de un producto como los manuales puede llevar mucho tiempo en evolucionar.

          2) El poder de mercado de los profesores, que asignan sus propios manuales para completar sus magros sueldos. En la UNED es particularmente sangrante (porque esta la UNED siempre en cabeza de estos problemas?) Recientemente comparaba uno de los manuales de derecho de la UE mas populares en España con uno de los mas populares (en ingles) en el resto de Europa. Era como comparar un Fiat Panda (el manual español) con un Mercedes S600. Pero los catedraticos españoles me imagino que ganaban dinero del primero pero no del segundo. De hecho, los manuales de economia mundial o española que criticaba antes tienen decenas de autores (son esos manuales infumables de capitulos cada uno de un autor) de distintas universidades. Me imagino que de tal manera logran mas penetracion de mercado. Los manuales eran tan malos que me hicieron añorar las "Estructuras..." de Tamames (que nunca me gustaron), lo cual ya lo dice todo.

          • Jesús: "2) El poder de mercado de los profesores, que asignan sus propios manuales para completar sus magros sueldos."

            No conozco el caso de la UNED, pero en universidades presenciales no creo que ése sea un motivo de peso. Sé, por ejemplo, de un manual que figura en numerosas guías docentes de una asignatura troncal impartida en Facultades de Economía de toda España y que, en sus 15 años en el mercado (va por la tercera edición), lleva vendidos en total unos 7.000 ejemplares. Con un precio de venta de unos 30 euros, las ventas totales suponen unos 210.000 euros, de los cuales corresponden a los autores un 10%, o sea, 21.000 euros, que dividido entre cuatro autores y 15 años, representa unos 350 euros anuales por autor, a los cuales se les ha de aplicar el tipo marginal del IRPF. De este ejemplo no parece, pues, deducirse que este tipo de manuales se escriba para completar los magros sueldos de sus autores.
            Si, por otra parte, considerásemos manuales que no se utilizan en asignaturas obligatorias o troncales, sino en asignaturas optativas con muchos menos alumnos potenciales (y hay manuales de este tipo en el mercado), los ingresos anuales netos de impuestos de los autores son prácticamente nulos. O sea, da la impresión de que, al menos fuera de la UNED, el argumento crematístico es infundado.

            • Existen cuatro motivos (no excluyentes entre si) para escribir un libro de texto:

              1) Influir intelectualmente.

              2) Ganar dinero.

              3) Meter lineas en el C.V.

              4) La vanidad de ver tu nombre en un trozo de papel.

              El motivo 1) es la razon por la que Tom Sargent, Olivier Blanchard o Daron Acemoglu escriben sus libros de doctorado. En los libros de texto que estamos hablando, este motivo no juega papel alguno. Como va a pensar nadie que escriba un manual de esos infumables que se ven en Marcial Pons que los mismos van a tener impacto intelectual alguno? En el 99% de los casos ya existen otros manuales mucho mejores de economistas de prestigio internacional.

              Que el motivo 2) juega a menudo un papel importante es algo de lo que se ha hablado en otras ocasiones. Mauro Hernández ha escrito sobre el tema los libros de texto en la UNED y el dinero que hacen "compañeros" suyos. A el me remito.

              El motivo 3), que es equivalente al motivo 2 (ganancia directa vs. indirecta), puede tambien ser importante. Hemos visto estas semanas ultimas como se "construyen" CVs academicos en España y "presumir" de tener un libro de texto lo mismo hasta cuela en algun tribunal de oposicion.

              Por tanto, nos queda 4), la vanidad, que es el mas reprobable de los motivos. Si acepto la premisa del comentario de que muchos de los libros de texto venden poco y asumo que el motivo 3) no es operativo, entonces la situacion es aun mas preocupante. Tu comentario agrava mi acusacion, no la aligera.

              Finalmente, y solo a fortiori, el argumento de la venta de 7000 volumenes para ese libro concreto no me convence. El mercado de los libros de texto tiene un componente de "winner takes all". El que 4 personas hayan preparado un manual que no ha sido muy popular ex post no quiere decir que ex ante no fuera una buena idea para ganar dinero directamente con los derechos de autor o indirectamente metiendo lineas en el CV.

      • Pues a mí lo que más me preocupa es la pasividad de los estudiantes. Si hay clases, manuales y profesores que sobran o son inútiles, siempre puedes aprender por tu cuenta; pero yo veo a mis compañeros de grado y me dan una mezcla de rabia y pena.

        Al fin y al cabo los métodos de enseñanza puedes cambiarlos (de manera lenta y pesada), ¿pero qué hacer para que cambien los jóvenes? Me refiero a esa gente que estudia lo justo para aprobar: apenas saben derivar o integrar, no saben lo que significa un modelo IS-LM y el día de mañana tendrán el mismo título que usted, que yo o que cualquier otro economista.

        • Hay algo de revolucionario en la idea de los alumnos eligiendo a los profesores con los que quieren formarse ... al menos en España, en USA parece claro que las universidades relevantes (y sus profesores) compiten en un mercando (inter)nacional.

          http://nber.org/feldstein_lecture_2016/feldsteinlecture_2016.html

          Quizás esa sea la "razón última" por la que al final un catedrático se permite el lujo de "venir a hablar de su (pésimo) libro": la falta de relación entre la calidad de su clase y el número de sus alumnos

  • Fantástico post Jesús, como ya nos sueles tener acostumbrado. Por aquí hay un estudiante de finanzas de último curso en la Carlos III y en mi opinión padece errores comunes a los descritos en el programa de la Complutense. Yo ya había pensado estudiar matemáticas por la UNED aunque suelen decir que los libros son bastante deficientes para instruir al alumno. Alguna recomendación para undergraduate de instruirse de manera autodidacta en métodos cuantitativos?
    un saludo

      • Como alumno de la UNED puedo decir que no es solo que los libros de política económica sean pésimos, sino que los profesores y sus exámenes también lo son. Estos últimos consisten en 3 preguntas de 3.33 puntos en las que algunas es imposible entender lo que se está preguntando a menos que recuerdes el epígrafe concreto.
        Por ejemplo: "Problemas del aparato burocrático desde una óptica funcional".
        Después se limitan a decir: "Esto estaba en las páginas 117 y 118, había que mencionar esos 4 apartados".
        Pero más aún, el año pasado había que hacer un trabajo sobre motivos árabes en la publicidad en el franquismo. Algo similar a esto:
        https://s-media-cache-ak0.pinimg.com/236x/b1/1c/05/b11c0551d98253d75febac7e8dc0ca64.jpg
        Supongo que porque al viejecito amable que los enseñaba le gustaba el tema y quería compartirlo con su audiencia cautiva. Saqué muy buena nota. Lo que no sé es qué aprendí sobre política económica (?).
        No es que todas las asignaturas sean así de horribles, creo que he aprendido bastante en micro, macro y econometría, pero me parece que al margen de eso la única utilidad de esta universidad es señalarte al mercado como alguien trabajador y paciente (muy paciente).
        Por favor, incluye si puedes en esa entrada referencias para complementar la formación de quienes han terminado la carrera. (Yo acabo este curso).
        PD: Sé programar en python y c++, R me parece un poco confuso pero sé que eso es lo que pasa al principio. Aun así, ¿vale la pena una vez se sabe python?

        • Si ya sabes C++ y Python, quizas no merezca mucho la pena perder el tiempo con R al menos que lo vayas a necesitar explicitamente para un proyecto concreto.

          Siempre he tenido la vision que si uno ya sabe un lenguaje, hay que tener una razon poderosa para aprender otro mas lejos de que alguien te lo recomiende (aunque sea yo mismo 😉

          • Pues sí, yo creo que se pierde demasiado tiempo aprendiendo uno nuevo y que seguramente es mejor hacerse más productivo en los que ya se conocen.
            Gracias por la respuesta Jesús.

  • Hola,

    comparto el interés por estos métodos, su utilidad y la necesidad de integrarlos en la docencia en los planes de estudio. Nosotros en el grado de Organización Industrial hemos incluido un módulo sobre aprendizaje supervisado en el que basamos una parte en el enfoque de Ng en Coursera. ¿en qué nivel impartes el curso? En doctorado imagino. El libro de Elements es lo mejor que he leído del tema, pero me parece de muchísimo nivel para un grado, la verdad. Partes del libro más práctico y sencillo que tienen http://www-bcf.usc.edu/~gareth/ISL/ están bien, pero en las escuelas de ingeniería yo creo que tiene más sentido enseñar sobre Matlab que sobre R, porque si no, al final se pierde más tiempo enseñando los detalles del lenguaje que los métodos.

    Felices fiestas

    • Primero, muchas gracias por el enlace. Se me ha pasado el libro de James et al. y es una introduccion muy sencillita y disponible en internet.

      El curso es de segundo de doctorado. Los estudiantes saben bastantes mates, probabilidad y mucha econometria (con lo cual elements no se les hace dificil), pero estaban poco familiarizados con aprendizaje,

      Lenguajes: tienes toda la razon. Si los estudiantes ya saben Matlab, lo mas sensato es emplear Matlab. Mis estudiantes aprenden R en primer año (econometria) con lo cual la transicion a emplear los paquetes de aprendizaje automatico en R para ellos es muy sencilla.

      Otra alternativa es, claro, Julia (con modulos de Python si son necesarios), que es el lenguaje que yo empleo por ejemplo en el modulo de programacion en paralelo, en el de elementos finitos, etc. Pero me imagino que en la industria Julia no ha penetrado mucho y para un grado de ingenieria Matlab sigue siendo la opcion dominante.

    • En ingeniería, yo consideraría la posibilidad de usar python (con scipy/numpy). Es algo más farragoso que Matlab, pero tiene la ventaja de ser un lenguaje de propósito general, y es cada vez más utilizado en la industria. Y se pueden utilizar herramientas muy potentes de forma "continua": comenzar con numpy para ver los algoritmos y pasar luego a TensorFlow, por ejemplo.

      Por lo demás, agradecer a Jesús la entrada. A mí me ha resultado de utilidad este curso de Caltech como introducción a machine learning: https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs1156x No llega a cubrir las particularidades del aprendizaje profundo (de hecho, el material es de 2012 o así), pero me pareció un buen cimiento sobre el que construir con facilidad después.

        • La ventaja de python frente a R o Matlab en ingeniería es que se trata de un lenguaje de propósito general, con una comunidad de desarrollo inmensa, así que creo que tiene más valor por sí mismo para un ingeniero. No conozco demasiado R, así que no puedo comparar. Sí conozco bien Matlab, y sé que scipy está bastante cerca en cuanto a inmediatez y facilidad de uso.

          En cuanto a la velocidad, se supone que en numpy todas las operaciones se implementan en bibliotecas que corren en nativo, así que realmente los cálculos deberían ser rápidos, si uno es cuidadoso con la gestión de la memoria. Los paquetes de más alto nivel, como OpenCV para visión artificial o TensorFlow para aprendizaje automático, ofrecen un interfaz de programación en python, pero usan código compilado por debajo (y optimizado para correr en GPUs), así que no hay pérdida significativa de rendimiento. ¡Y uno siempre puede utilizar directamente las interfaces C++ de los mismos paquetes después!

          Seguramente sea algo más farragoso que usar directamente R o algo así, pero se supone que un estudiante de ingeniería debería ser capaz de abordarlo.

    • Gracias por los enlaces!

      Tienes razon que esta es una buena tecnica pero no el final de todos nuestros problemas. De hecho la ventaja de pasar directamente a cosas formales en clase es que puedo ahorrarme el "hype".

  • Gracias por compartir esta bibliografía y videos sobre el tema. Me ha ahorrado bastantes horas de trabajo dedicado a la búsqueda de materiales. Me parece esencial que los economistas comencemos a manejar con cierta soltura estas técnicas

  • Gracias por el artículo. Estoy fascinado por los avances en este campo que creo representan toda una revolución en inteligencia artificial. Los ordenadores empiezan a realizar muchas acciones hasta ahora privativas del ser humano.
    Sólo una pequeña corrección: Lee Sedol, el jugador de go, no era el más fuerte del mundo. Lo fue seguramente entre 2007 y 2011, pero hoy ocupa el nº 8 en el "ranking".
    Saludos.

Los comentarios están cerrados.