sábado, 28 de septiembre de 2013

Aprendizaje deductivo e inductivo

El otro día se debatía sesudamente en una mesa redonda sobre si los títulos de informática debían ser especialistas o generalistas. No sólo no había acuerdo en la mesa, sino que en ella se manifestó que la polémica venía de lejos y que aparentemente no tenia solución.
Percibí en el ambiente que los profesores con formación y dedicación a las matemáticas defendían con gran aplomo la formación generalista, mientras que los ingenieros no lo tenían tan claro.
Ustedes pensarán malévolamente que los matemáticos defendían el enfoque que les da de comer, es decir, muchas matemáticas y física en los primeros cursos que ya aprenderán luego otras cosas, y si no da tiempo se las enseñará la vida, pero llevarán la mente repleta de conceptos matemáticos y científicos que les enseñarán a pensar y les servirán de herramienta universal para progresar en el ámbito profesional.
Llevo oyendo esta misma historia, con escasas variaciones, hace muchos años, pero también llevo observando que mis estudiantes más brillantes no suelen ser especialmente buenos en matemáticas, y la física de primero ha sido borrada de sus cabezas como si hubiera sido un mal sueño. También observo que el profesor medio de matemáticas y física no ha desarrollado en casi ningún caso ninguna inquietud ni habilidad especial en computación durante los muchos años que llevan en el centro, cosa que sin embargo debería haberles resultado sencilla, dada la gran formación que tienen en disciplinas básicas generalistas.
Esto me ha dado motivo para reflexionar: debía haber algo más que se nos estaba escapando.
Entonces he recordado dos de las aproximaciones fundamentales al razonamiento y aprendizaje en máquinas: el enfoque deductivo y el inductivo, y he pensado que quizá la falta de acuerdo tuviera que ver con esto.
Equivocado o no, siempre he pensado que para aprender programación no hacía falta nada de física, y casi nada de matemáticas. Que programar es como pilotar un avión: lo que cuenta son las horas de vuelo. Se aprende de manera inductiva, como a montar en bicicleta. Claro que hay conceptos abstractos involucrados, y que por ejemplo la idea de “patrones de software” es uno de los mayores hallazgos en la historia de la evolución del desarrollo informático. Pero estos conceptos abstractos pueden aprenderse, y de hecho se aprenden mejor, cuando uno ya conoce los rudimentos de la programación de ordenadores.
En lugar de dar la teoría antes para aprender informática después, es mejor dar informática antes y, cuando surja el problema, mostrar la teoría que formaliza el problema y mejora el enfoque. Y por supuesto es mejor abordar problemas cotidianos del desarrollo de sistemas, no problemas matemáticos desconectados de la realidad.
Creo que es mucho más práctico explicar cómo funciona el PageRank de Google y de ahí llegar al cálculo de los autovectores de una matriz estocástica en lugar de dar los autovalores, las matrices estocásticas, diez teoremas y quedarse ahí. En este último caso, el alumno se queda pensando ¿para qué se puede usar esto?
Creo que es mejor explicar los métodos de monte carlo para estimación de probabilidades y de ahí explicar conceptos de probabilidad, en lugar de explicar quince distribuciones estadísticas y la deducción de sus medias, varianzas y los teoremas correspondientes. Un informático debe saber programar las fórmulas que necesita, pero no necesita demostrar la corrección de esas formulas, igual que no necesita saber diseñar aviones para programar el sistema empotrado del aparato. Las matemáticas necesarias vienen en libros, y hasta en la wikipedia, mientras que el conocimiento informático en muchos casos no, especialmente si uno trabaja en los sectores más innovadores.
Un informático es alguien que se asocia con los profesionales del proyecto en el que trabaja en cada momento, y debe estar cualificado para aprender en ese instante lo que necesite para su ámbito de actuación. Si tuviéramos que estudiar de antemano todo lo que puede ser necesario para cualquier proyecto informático jamás empezaríamos nada.
Este discurso lo entienden muy bien casi todos los ingenieros informáticos, pero por suerte o por desgracia en las titulaciones de informática los profesores con este perfil aún somos minoría. Así que, de momento, enfoque generalista. Es lo que hay.
Publicado originariamente en Computación creativa y otros sueños (Libro de Notas) el 25/11/2012.