Libro de notas

Edición LdN
Computacion creativa y otros sueños por Francisco Serradilla

Francisco Serradilla es poeta y doctor en Informática. Su línea principal de investigación se refiere al desarrollo de Softbots (Robots Software) y Agentes Inteligentes en Internet. Ha colaborado abundamentemente con Almacén como articulista. Computación creativa y otros sueños se publicará los 25 de cada mes.

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.

Francisco Serradilla | 25 de noviembre de 2012

Comentarios

  1. gsc
    2012-11-25 11:03

    Creo que ya hemos hablado de esto en alguna ocasión y coincido en el fondo, con algún matiz. Sobre todo que la enseñanza de las matemáticas se explica desconectada de su aplicación1. ¿Puede que tenga algo que ver que los generalistas que las enseñan no hayan desarrollado ninguna inquietud en computación? ¿Que desconozcan la conexión, incluso? Es llamativo incluso en el caso de Matemática discreta, que es prácticamente una clase de algorítmica2.

    Sin embargo…

    “Las matemáticas necesarias vienen en libros, y hasta en la wikipedia, mientras que el conocimiento informático en muchos casos no”.

    Puedes reescribir esta frase poniendo la mayor parte del “conocimiento informático” (sobre todo programación e ingeniería del software, las partes más “prácticas”, que son las que se aprenden a base de horas) en el lugar de las matemáticas, y seguro que no te chirría la frase…

    Es verdad, las demostraciones de teoremas están en los libros y cuando las aprendes en la carrera para aprobar el exámen de cálculo de turno, hacen el viaje de vuelta del cerebro al libro de texto a los pocos minutos de aprobar el exámen. Sin embargo, la combinatoria es el pan nuestro de cada día (para minucias, como mínimo, pero cantidad de ellas y grano a grano se hace montaña), sin nociones de lógica y probabilidad es bastante difícil entender todo lo que lleve un “bayes” en su nombre; e incluso cosas que, a un nivel básico son sencillas como los modelos de Markov – autómatas, al fin y al cabo -, se vuelven muy cuesta arriba sin una base matemática básica (sin eso, no se “aprenden en ese instante”). Sí, es verdad, las redes neuronales son informática, pero el modelo funcional es relativamente sencillo, casi es más difícil la geometría que llevan aparejada…

    Dejo para el final la estadística: porque es la menos intuitiva para un programador al ser la más alejada de un pensamiento “mecanicista” y porque se suponía que en informática era útil “para investigación”. Cansado estoy de leer sobre tests A/B, sospechosamente parecidos a, por ejemplo, la t de Student y que usa mucha gente – Google,Amazon,eBay… esa clase de gente, deben de ser todos matemáticos – hasta para hacer diseño de interfaces de usuario!! También es paradigmático el caso de “Big Data”, el “palabro” de moda del último año en los blogs de “tecnología” y que al final, en casi todos loscasos, es una forma marketiniana de decir “minería de datos”. Que no es más que una mezcla de estadística con “machine learning”. Pero claro, es más entretenido hablar de lo que se puede hacer con mogollón de datos y de empoderar al usuario que de análisis estadístico…

    “Si tuviéramos que estudiar de antemano todo lo que puede ser necesario para cualquier proyecto informático jamás empezaríamos nada.”

    Y eso es aplicable a las matemáticas y a los algoritmos y los patrones de diseño ;-). Sí, estoy de acuerdo, hay un problema enseñando matemáticas a informáticos… pero, los ejemplos que he dado pretendían ser muestras de casos claros en los que las matemáticas no se “aprenden de un libro”, sino que es mejor que vengan “incorporadas” en el informático, porque son tan básicos e instrumentales como la informática “hard”.
    _______

    1. Curiosamente, en los últimos dos años he trabajado en varias ocasiones con estudiantes de economía y ¡sorpresa! no tenían ese problema y tenían soltura y fluidez para aplicar sus conocimientos de estadística al estudio de problemas prácticos. También, al igual que los profesores de matemáticas, parece que les costaba más de lo esperado tirar líneas de código.</p>

    2. Tenía esa sensación cuando la estudié… que no iba tan desencaminada, cuando resulta que se puede impartir como tal .

  2. Paco
    2012-11-25 20:07

    Gracias por tus comentarios, gsc. No he pretendido decir (aunque a veces extremo el mensaje para que llegue mejor) que un informático no necesite matemáticas (otra cosa pienso de la física, disciplina que, por otra parte, personalmente me encanta), sino que con una base suficiente (entender su lenguaje y ser capaz de utilizarlo y entenderlo, no de descubrir nuevos teoremas) lo que se necesite se puede aprender en ese momento.

    Por otro lado, estás pensando en proyectos específicos de computer science, ¿cuántos informáticos trabajan en ese tipo de cosas? ¿Un 1%? Yo diría que menos.

  3. gsc
    2012-11-26 11:56

    Bueno, precisamente he intentado dar algunos ejemplos no muy “de CS”, en previsión del argumento de “las matemáticas en informática son cosa de CScientists”. Muchos trabajos de “ingeniero” (no de “picateclas”), con cierta complejidad que no sea de CS, al final, requieren de una forma u otra, unas herramientas matemáticas. El caso paradigmático es el que mencionaba antes: el diseño de interfaces es lo más alejado a un problema de CS que se me ocurre y, la gente que lo hace bien, usa herramientas estadísticas para medir y tomar decisiones.

    Eso es para hacerlo bien. Para hacer webs del Senado y “encarguillos”, por supuesto, es más importante aprender lenguajes de programación, ingeniería de software e, incluso, gestión de proyectos.

  4. Rafa Font
    2012-11-26 11:59

    Es muy interesante oir estas ideas desde la parte del profesorado.

    Mi experiencia es similar, aborrezco las matemáticas teóricas y me interesaría mucho usarlas como herramienta. En la facultad peleé contra la existencia de una asignatura de Complementos de Matemáticas en el último curso de una Ingeniería Técnica. En el trabajo, aprendí a utilizar ecuaciones diferenciales en derivadas parciales gracias a las estupendas librerías de Python.

    Una diferencia más es que las matemáticas que se enseñan en general son “continuas”, mientras que muchas de las que se necesitan en informática son “discretas”. Pero nos pasamos gran parte de la carrera sin saber qué coño eran las matemáticas discretas.

  5. Alberto
    2012-11-27 01:51

    Como ingeniero no puedo estar más de acuerdo . Como estudiante: tampoco. Sí, la física se me aprobó nada más aprobarla, igual que la estadística. En mi caso, creo que porque el enfoque era realmente lejano a su posible utilización en la práctica. La pena es la cantidad de horas invertidas en memorizar la mecánica de cómo resolver los problemas de examen, en lugar de asimilar esos conceptos mediante casos prácticos aplicados a nuestro campo: la informática.

    Tal vez las asignaturas no son el problema, sino el enfoque al impartirlas. ¿Por qué no programar estadística?

  6. La Pequeña Febe
    2012-11-28 10:59

    Estimado terrícola.

    Me ha gustado especialmente este artículo, sobre todo la parte en que hablas de que el funcionamiento de la mecánica universal no viene dada por fórmulas ni teoremas.

    Estas son consecuencias realmente de las líneas de código cósmico que rige todo lo demás, escritas por el Demiurgo Computacional, en el centro del Multiverso.

    Te lo dice una niña marciana que ha viajado muchos parsecs para comprobarlo… y lo ha visto.


Librería LdN


LdN en Twiter

Publicidad

Publicidad

Libro de Notas no se responsabiliza de las opiniones vertidas por sus colaboradores.
Esta obra está bajo una licencia de Creative Commons
Desarrollado con TextPattern | Suscripción XML: RSS - Atom | ISSN: 1699-8766
Diseño: Óscar Villán || Programación: Juanjo Navarro
Otros proyectos de LdN: Pequeño LdN || Artes poéticas || Retórica || Librería
Aviso legal